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,370 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-TW">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>使用者流程圖 - 日本醫療表單系統</title>
7
- <link rel="stylesheet" href="styles.css">
8
- </head>
9
- <body>
10
- <!-- 導覽列 -->
11
- <nav class="nav">
12
- <div class="nav-container">
13
- <a href="index.html" class="nav-logo">
14
- 🏥 日本醫療表單系統
15
- </a>
16
- <ul class="nav-links">
17
- <li><a href="index.html" class="nav-link">總覽</a></li>
18
- <li><a href="user-flow.html" class="nav-link active">使用者流程</a></li>
19
- <li><a href="system-components.html" class="nav-link">系統元件</a></li>
20
- <li><a href="deployment.html" class="nav-link">部署架構</a></li>
21
- </ul>
22
- </div>
23
- </nav>
24
-
25
- <!-- 主內容 -->
26
- <div class="container">
27
- <!-- 頁面標題 -->
28
- <div class="section fade-in">
29
- <h1>👤 使用者流程圖</h1>
30
- <p class="text-center" style="font-size: 1.15rem; color: var(--text-secondary);">
31
- 這個頁面用簡單易懂的圖表,說明使用者從登入到下載表單的完整流程
32
- </p>
33
- </div>
34
-
35
- <!-- 完整流程圖 SVG -->
36
- <div class="diagram-container fade-in">
37
- <div class="diagram-title">📊 完整使用者流程 (6 個步驟)</div>
38
- <svg viewBox="0 0 800 1400" xmlns="http://www.w3.org/2000/svg">
39
- <!-- 定義箭頭 -->
40
- <defs>
41
- <marker id="arrowhead" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
42
- <polygon points="0 0, 10 3, 0 6" fill="#2196F3" />
43
- </marker>
44
- <marker id="arrowhead-error" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
45
- <polygon points="0 0, 10 3, 0 6" fill="#F44336" />
46
- </marker>
47
- </defs>
48
-
49
- <!-- 步驟 1: 使用者造訪網站 -->
50
- <g id="step1">
51
- <rect x="250" y="20" width="300" height="80" rx="10" fill="#2196F3" stroke="#1976D2" stroke-width="2"/>
52
- <text x="400" y="50" text-anchor="middle" fill="white" font-size="16" font-weight="bold">步驟 1</text>
53
- <text x="400" y="75" text-anchor="middle" fill="white" font-size="14">使用者造訪 j.cameo.tw</text>
54
- <text x="400" y="93" text-anchor="middle" fill="white" font-size="12">(統一入口網站)</text>
55
- </g>
56
-
57
- <!-- 箭頭 1 -->
58
- <line x1="400" y1="100" x2="400" y2="140" stroke="#2196F3" stroke-width="2" marker-end="url(#arrowhead)"/>
59
-
60
- <!-- 步驟 2: 點擊 Google 登入 -->
61
- <g id="step2">
62
- <rect x="250" y="140" width="300" height="80" rx="10" fill="#4CAF50" stroke="#388E3C" stroke-width="2"/>
63
- <text x="400" y="170" text-anchor="middle" fill="white" font-size="16" font-weight="bold">步驟 2</text>
64
- <text x="400" y="195" text-anchor="middle" fill="white" font-size="14">點擊「使用 Google 登入」</text>
65
- <text x="400" y="213" text-anchor="middle" fill="white" font-size="12">(Firebase Authentication)</text>
66
- </g>
67
-
68
- <!-- 箭頭 2 -->
69
- <line x1="400" y1="220" x2="400" y2="260" stroke="#2196F3" stroke-width="2" marker-end="url(#arrowhead)"/>
70
-
71
- <!-- 步驟 3: 權限檢查 (分支) -->
72
- <g id="step3">
73
- <rect x="250" y="260" width="300" height="100" rx="10" fill="#FF9800" stroke="#F57C00" stroke-width="2"/>
74
- <text x="400" y="290" text-anchor="middle" fill="white" font-size="16" font-weight="bold">步驟 3</text>
75
- <text x="400" y="315" text-anchor="middle" fill="white" font-size="14">系統檢查使用權限</text>
76
- <text x="400" y="335" text-anchor="middle" fill="white" font-size="12">檢查 Firestore 白名單</text>
77
- <text x="400" y="353" text-anchor="middle" fill="white" font-size="12">檢查 Custom Claims</text>
78
- </g>
79
-
80
- <!-- 分支:權限檢查失敗 -->
81
- <g id="step3-fail">
82
- <line x1="250" y1="310" x2="120" y2="310" stroke="#F44336" stroke-width="2" marker-end="url(#arrowhead-error)"/>
83
- <rect x="20" y="280" width="100" height="60" rx="8" fill="#FFEBEE" stroke="#F44336" stroke-width="2"/>
84
- <text x="70" y="305" text-anchor="middle" fill="#F44336" font-size="12" font-weight="bold">❌ 拒絕</text>
85
- <text x="70" y="323" text-anchor="middle" fill="#C62828" font-size="10">顯示錯誤</text>
86
- <text x="70" y="336" text-anchor="middle" fill="#C62828" font-size="10">訊息</text>
87
- </g>
88
-
89
- <!-- 分支:權限檢查成功 -->
90
- <line x1="400" y1="360" x2="400" y2="400" stroke="#4CAF50" stroke-width="3" marker-end="url(#arrowhead)"/>
91
- <text x="430" y="380" fill="#4CAF50" font-size="12" font-weight="bold">✓ 通過</text>
92
-
93
- <!-- 步驟 4: 重定向到個人後端 -->
94
- <g id="step4">
95
- <rect x="200" y="400" width="400" height="100" rx="10" fill="#2196F3" stroke="#1976D2" stroke-width="2"/>
96
- <text x="400" y="430" text-anchor="middle" fill="white" font-size="16" font-weight="bold">步驟 4</text>
97
- <text x="400" y="455" text-anchor="middle" fill="white" font-size="14">重定向到個人專屬後端</text>
98
- <text x="400" y="475" text-anchor="middle" fill="white" font-size="12">j.cameo.tw/u/53288a47/</text>
99
- <text x="400" y="493" text-anchor="middle" fill="white" font-size="11">(Load Balancer 自動路由)</text>
100
- </g>
101
-
102
- <!-- 箭頭 4 -->
103
- <line x1="400" y1="500" x2="400" y2="540" stroke="#2196F3" stroke-width="2" marker-end="url(#arrowhead)"/>
104
-
105
- <!-- 步驟 5: 填寫表單資料 -->
106
- <g id="step5">
107
- <rect x="200" y="540" width="400" height="120" rx="10" fill="#4CAF50" stroke="#388E3C" stroke-width="2"/>
108
- <text x="400" y="570" text-anchor="middle" fill="white" font-size="16" font-weight="bold">步驟 5</text>
109
- <text x="400" y="595" text-anchor="middle" fill="white" font-size="14">選擇表單並填寫患者資料</text>
110
- <text x="400" y="615" text-anchor="middle" fill="white" font-size="12">• 選擇表單類型 (Form 1/2-1/2-2)</text>
111
- <text x="400" y="633" text-anchor="middle" fill="white" font-size="12">• 輸入患者基本資料</text>
112
- <text x="400" y="651" text-anchor="middle" fill="white" font-size="12">• 輸入診斷與病歷資訊</text>
113
- </g>
114
-
115
- <!-- 箭頭 5 -->
116
- <line x1="400" y1="660" x2="400" y2="700" stroke="#2196F3" stroke-width="2" marker-end="url(#arrowhead)"/>
117
-
118
- <!-- 步驟 6: 生成並下載表單 -->
119
- <g id="step6">
120
- <rect x="200" y="700" width="400" height="120" rx="10" fill="#FF9800" stroke="#F57C00" stroke-width="2"/>
121
- <text x="400" y="730" text-anchor="middle" fill="white" font-size="16" font-weight="bold">步驟 6</text>
122
- <text x="400" y="755" text-anchor="middle" fill="white" font-size="14">系統生成表單並提供下載</text>
123
- <text x="400" y="775" text-anchor="middle" fill="white" font-size="12">• 使用 JSDOM 填入資料 (3-5 秒)</text>
124
- <text x="400" y="793" text-anchor="middle" fill="white" font-size="12">• 上傳至 GCS 暫存 (3 小時)</text>
125
- <text x="400" y="811" text-anchor="middle" fill="white" font-size="12">• 提供一次性下載連結</text>
126
- </g>
127
-
128
- <!-- 箭頭 6 -->
129
- <line x1="400" y1="820" x2="400" y2="860" stroke="#2196F3" stroke-width="2" marker-end="url(#arrowhead)"/>
130
-
131
- <!-- 結束:下載成功 -->
132
- <g id="end">
133
- <rect x="250" y="860" width="300" height="80" rx="40" fill="#4CAF50" stroke="#388E3C" stroke-width="3"/>
134
- <text x="400" y="890" text-anchor="middle" fill="white" font-size="16" font-weight="bold">✅ 完成</text>
135
- <text x="400" y="915" text-anchor="middle" fill="white" font-size="14">取得填好的日本醫療表單</text>
136
- <text x="400" y="933" text-anchor="middle" fill="white" font-size="12">(HTML 格式,可列印或轉 PDF)</text>
137
- </g>
138
-
139
- <!-- 時間軸標記 -->
140
- <g id="timeline">
141
- <text x="680" y="60" fill="#607D8B" font-size="11">⏱️ 登入階段</text>
142
- <text x="680" y="180" fill="#607D8B" font-size="11">⏱️ 約 3-5 秒</text>
143
- <text x="680" y="310" fill="#607D8B" font-size="11">⏱️ 約 1 秒</text>
144
- <text x="680" y="450" fill="#607D8B" font-size="11">⏱️ 約 1 秒</text>
145
- <text x="680" y="600" fill="#607D8B" font-size="11">⏱️ 約 2-3 分鐘</text>
146
- <text x="680" y="760" fill="#607D8B" font-size="11">⏱️ 約 3-5 秒</text>
147
- <text x="650" y="900" fill="#388E3C" font-size="12" font-weight="bold">✓ 總計: 3-5 分鐘</text>
148
- </g>
149
-
150
- <!-- 背景裝飾 -->
151
- <rect x="10" y="10" width="780" height="940" rx="15" fill="none" stroke="#E0E0E0" stroke-width="2" stroke-dasharray="10,5"/>
152
- </svg>
153
- </div>
154
-
155
- <!-- 流程說明 -->
156
- <div class="section fade-in">
157
- <h2>📝 流程詳細說明</h2>
158
-
159
- <div class="steps">
160
- <div class="step">
161
- <div class="step-number">1</div>
162
- <div class="step-content">
163
- <div class="step-title">造訪統一入口網站</div>
164
- <div class="step-description">
165
- 所有使用者都從同一個網址 <strong class="text-primary">j.cameo.tw</strong> 開始。
166
- 這是一個「統一前端」,負責處理登入和權限檢查,但不處理個人資料。
167
- <br><br>
168
- <span class="badge badge-outline">技術細節</span>
169
- 使用 Google Cloud Load Balancer 路由,統一域名設定在 Cloud DNS。
170
- </div>
171
- </div>
172
- </div>
173
-
174
- <div class="step">
175
- <div class="step-number">2</div>
176
- <div class="step-content">
177
- <div class="step-title">使用 Google 登入</div>
178
- <div class="step-description">
179
- 點擊「使用 Google 登入」按鈕後,系統會透過 <strong>Firebase Authentication</strong>
180
- 開啟 Google 登入視窗。你可以選擇任何一個 Gmail 帳號登入。
181
- <br><br>
182
- <span class="badge badge-primary">安全性</span>
183
- 系統不會儲存你的 Google 密碼,只會取得你的 email 和名稱資訊。
184
- </div>
185
- </div>
186
- </div>
187
-
188
- <div class="step">
189
- <div class="step-number">3</div>
190
- <div class="step-content">
191
- <div class="step-title">系統檢查使用權限</div>
192
- <div class="step-description">
193
- 登入成功後,系統會進行兩道權限檢查:
194
- <ul style="margin-top: 0.5rem; padding-left: 1.5rem;">
195
- <li><strong>Firestore 白名單檢查:</strong>確認你的 email 是否在 <code>system/allowedUsers</code> 集合中</li>
196
- <li><strong>Custom Claims 檢查:</strong>確認你的帳號是否有 <code>allowedService</code> 權限</li>
197
- </ul>
198
- <br>
199
- ❌ <strong>如果檢查失敗:</strong>系統會顯示錯誤訊息,請聯絡管理員申請開通。
200
- <br>
201
- ✅ <strong>如果檢查通過:</strong>系統會自動進入下一步。
202
- </div>
203
- </div>
204
- </div>
205
-
206
- <div class="step">
207
- <div class="step-number">4</div>
208
- <div class="step-content">
209
- <div class="step-title">重定向到個人專屬後端</div>
210
- <div class="step-description">
211
- 權限檢查通過後,系統會自動重定向到你的個人專屬後端網址,例如:
212
- <br>
213
- <code style="display: block; background: var(--bg-main); padding: 0.5rem; border-radius: 4px; margin: 0.5rem 0;">
214
- j.cameo.tw/u/53288a47/
215
- </code>
216
- <br>
217
- 其中 <code>53288a47</code> 是你的 email 經過 SHA256 雜湊後的前 8 碼,確保每位使用者都有獨立的後端服務。
218
- <br><br>
219
- <span class="badge badge-secondary">資料隔離</span>
220
- 每位使用者的資料完全獨立,不會互相影響。
221
- </div>
222
- </div>
223
- </div>
224
-
225
- <div class="step">
226
- <div class="step-number">5</div>
227
- <div class="step-content">
228
- <div class="step-title">填寫表單資料</div>
229
- <div class="step-description">
230
- 進入個人後端後,你可以:
231
- <ul style="margin-top: 0.5rem; padding-left: 1.5rem;">
232
- <li>選擇需要的表單類型(Form 1 / Form 2-1 / Form 2-2)</li>
233
- <li>填寫患者基本資料(姓名、生日、地址等)</li>
234
- <li>填寫診斷資料(疾病名稱、ICD-10 代碼等)</li>
235
- <li>填寫病歷資訊(發病時間、治療歷程等)</li>
236
- <li>勾選相關症狀(如有)</li>
237
- </ul>
238
- <br>
239
- 💡 <strong>提示:</strong>系統提供範例資料,如果不確定如何填寫,可以參考範例。
240
- </div>
241
- </div>
242
- </div>
243
-
244
- <div class="step">
245
- <div class="step-number">6</div>
246
- <div class="step-content">
247
- <div class="step-title">生成並下載表單</div>
248
- <div class="step-description">
249
- 點擊「生成表單」後,系統會:
250
- <ul style="margin-top: 0.5rem; padding-left: 1.5rem;">
251
- <li>使用 <strong>JSDOM</strong> 技術自動填入資料(3-5 秒)</li>
252
- <li>將填好的 HTML 表單上傳至 <strong>Google Cloud Storage</strong></li>
253
- <li>產生一個安全的下載連結(有效期 3 小時)</li>
254
- <li>提供下載按鈕讓你下載表單</li>
255
- </ul>
256
- <br>
257
- 下載後的表單是 HTML 格式,你可以:
258
- <ul style="margin-top: 0.5rem; padding-left: 1.5rem;">
259
- <li>用瀏覽器開啟檢查內容</li>
260
- <li>直接列印</li>
261
- <li>轉存為 PDF(使用瀏覽器的「列印 → 儲存為 PDF」)</li>
262
- </ul>
263
- </div>
264
- </div>
265
- </div>
266
- </div>
267
- </div>
268
-
269
- <!-- 常見情境 -->
270
- <div class="section fade-in">
271
- <h2>🔍 常見情境說明</h2>
272
-
273
- <div class="card mb-md">
274
- <h3 class="card-title">❓ 如果登入失敗怎麼辦?</h3>
275
- <p class="card-text">
276
- <strong>可能原因:</strong>
277
- </p>
278
- <ul style="padding-left: 1.5rem; color: var(--text-secondary);">
279
- <li>你的 email 尚未加入白名單 → 請聯絡管理員 (bohachu@gmail.com) 申請開通</li>
280
- <li>瀏覽器阻擋 popup 視窗 → 請允許彈出視窗,或系統會自動改用重定向登入</li>
281
- <li>網路連線問題 → 請檢查網路並重新整理頁面</li>
282
- </ul>
283
- </div>
284
-
285
- <div class="card mb-md">
286
- <h3 class="card-title">❓ 表單生成失敗怎麼辦?</h3>
287
- <p class="card-text">
288
- <strong>可能原因:</strong>
289
- </p>
290
- <ul style="padding-left: 1.5rem; color: var(--text-secondary);">
291
- <li>必填欄位未填寫 → 系統會標示哪些欄位缺少資料</li>
292
- <li>日期格式錯誤 → 請使用系統提供的日期選擇器</li>
293
- <li>網路連線中斷 → 請檢查網路並重試</li>
294
- <li>系統暫時故障 → 請稍後再試,或聯絡管理員</li>
295
- </ul>
296
- </div>
297
-
298
- <div class="card">
299
- <h3 class="card-title">❓ 下載連結過期怎麼辦?</h3>
300
- <p class="card-text">
301
- 下載連結有效期為 3 小時,過期後會自動刪除。
302
- <br><br>
303
- <strong>解決方法:</strong>重新生成表單即可(原本填寫的資料可能需要重新輸入,建議生成後立即下載)。
304
- </p>
305
- </div>
306
- </div>
307
-
308
- <!-- 安全性說明 -->
309
- <div class="highlight-box fade-in">
310
- <h2>🔒 安全性與隱私保護</h2>
311
- <div class="grid-2">
312
- <div>
313
- <h3 style="color: white; margin-bottom: 1rem;">資料隔離</h3>
314
- <p style="color: rgba(255, 255, 255, 0.95);">
315
- 每位使用者都有獨立的後端服務和資料庫,
316
- 其他使用者無法存取你的資料。
317
- </p>
318
- </div>
319
- <div>
320
- <h3 style="color: white; margin-bottom: 1rem;">自動刪除</h3>
321
- <p style="color: rgba(255, 255, 255, 0.95);">
322
- 生成的表單會在 3 小時後自動刪除,
323
- 減少資料外洩風險。
324
- </p>
325
- </div>
326
- <div>
327
- <h3 style="color: white; margin-bottom: 1rem;">加密傳輸</h3>
328
- <p style="color: rgba(255, 255, 255, 0.95);">
329
- 所有網路傳輸都使用 HTTPS 加密,
330
- 確保資料在傳輸過程中的安全。
331
- </p>
332
- </div>
333
- <div>
334
- <h3 style="color: white; margin-bottom: 1rem;">最小權限</h3>
335
- <p style="color: rgba(255, 255, 255, 0.95);">
336
- 系統僅取得必要的 Google 帳號資訊(email、名稱),
337
- 不會存取其他 Google 服務資料。
338
- </p>
339
- </div>
340
- </div>
341
- </div>
342
-
343
- <!-- 頁尾導覽 -->
344
- <div class="section text-center fade-in">
345
- <p style="font-size: 1.1rem; margin-bottom: var(--space-md);">
346
- 📚 想了解更多技術細節嗎?
347
- </p>
348
- <div style="display: flex; gap: var(--space-sm); justify-content: center; flex-wrap: wrap;">
349
- <a href="system-components.html" class="btn btn-primary">查看系統元件圖 →</a>
350
- <a href="deployment.html" class="btn btn-secondary">查看部署架構圖 →</a>
351
- <a href="index.html" class="btn btn-outline">返回總覽</a>
352
- </div>
353
- </div>
354
- </div>
355
-
356
- <script>
357
- // 頁面淡入效果
358
- document.addEventListener('DOMContentLoaded', () => {
359
- const fadeElements = document.querySelectorAll('.fade-in');
360
- fadeElements.forEach((el, index) => {
361
- el.style.opacity = '0';
362
- setTimeout(() => {
363
- el.style.transition = 'opacity 0.6s ease-out';
364
- el.style.opacity = '1';
365
- }, index * 100);
366
- });
367
- });
368
- </script>
369
- </body>
370
- </html>
@@ -1,302 +0,0 @@
1
- # 🔥 Firebase Authentication Native 設定指南
2
-
3
- ## 📋 問題診斷
4
-
5
- ### 錯誤訊息
6
- ```
7
- Authentication service unavailable.
8
- ```
9
-
10
- ### 根本原因
11
- 1. ❌ **缺少 `google-services.json`**:Android Firebase 必需檔案
12
- 2. ❌ **LoginPage 未支援 Native**:使用 `signInWithPopup()` 只適用於 Web
13
- 3. ⚠️ **需要整合 Capacitor Firebase plugin**:Native 環境需要特殊處理
14
-
15
- ---
16
-
17
- ## 🚀 解決步驟
18
-
19
- ### **步驟 1:下載 google-services.json**
20
-
21
- #### 1.1 前往 Firebase Console
22
- https://console.firebase.google.com/
23
-
24
- #### 1.2 選擇專案並新增 Android App
25
- 1. 點擊 **Project Settings** (齒輪圖示)
26
- 2. 選擇 **General** 標籤
27
- 3. 向下捲動到 **Your apps**
28
- 4. 點擊 **Add app** → 選擇 **Android**
29
-
30
- #### 1.3 填寫 Android 套件名稱
31
- ```
32
- Package name: com.botrun.c
33
- App nickname: Botrun Android (選填)
34
- ```
35
-
36
- **重要**:Package name 必須與 `capacitor.config.ts` 中的 `appId` 一致!
37
-
38
- #### 1.4 下載 google-services.json
39
- 1. 點擊 **Download google-services.json**
40
- 2. 儲存到電腦(例如:`~/Downloads/google-services.json`)
41
-
42
- #### 1.5 複製到 Android 專案
43
- ```bash
44
- # 從 Windows 下載資料夾複製到 WSL
45
- cp /mnt/c/Users/你的使用者名稱/Downloads/google-services.json \
46
- /home/bigcookie/github/botrun-c/mobile-android/android/app/
47
-
48
- # 驗證檔案存在
49
- ls -la /home/bigcookie/github/botrun-c/mobile-android/android/app/google-services.json
50
- ```
51
-
52
- ---
53
-
54
- ### **步驟 2:設定 SHA-1 憑證(Google 登入必需)**
55
-
56
- #### 2.1 產生 Debug SHA-1
57
- ```bash
58
- cd /home/bigcookie/github/botrun-c/mobile-android/android
59
-
60
- # 產生 debug keystore 的 SHA-1
61
- keytool -list -v -keystore ~/.android/debug.keystore \
62
- -alias androiddebugkey -storepass android -keypass android | grep SHA1
63
-
64
- # 複製輸出的 SHA1,例如:
65
- # SHA1: AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD
66
- ```
67
-
68
- #### 2.2 在 Firebase Console 新增 SHA-1
69
- 1. 回到 Firebase Console → **Project Settings**
70
- 2. 找到剛才新增的 Android App
71
- 3. 向下捲動到 **SHA certificate fingerprints**
72
- 4. 點擊 **Add fingerprint**
73
- 5. 貼上 SHA-1 並儲存
74
-
75
- #### 2.3 重新下載 google-services.json
76
- ⚠️ **重要**:新增 SHA-1 後,需要重新下載最新的 `google-services.json`!
77
-
78
- ```bash
79
- # 再次下載並覆蓋
80
- cp /mnt/c/Users/你的使用者名稱/Downloads/google-services.json \
81
- /home/bigcookie/github/botrun-c/mobile-android/android/app/google-services.json
82
- ```
83
-
84
- ---
85
-
86
- ### **步驟 3:修改 LoginPage 支援 Native**
87
-
88
- **目前程式碼問題**:
89
- ```typescript
90
- // ❌ 只適用於 Web
91
- const result = await signInWithPopup(auth, googleProvider);
92
- ```
93
-
94
- **需要改成**:
95
- ```typescript
96
- // ✅ 支援 Web + Native
97
- if (window.Capacitor) {
98
- // Native: 使用 Capacitor Firebase plugin
99
- const result = await FirebaseAuthentication.signInWithGoogle();
100
- } else {
101
- // Web: 使用 signInWithPopup
102
- const result = await signInWithPopup(auth, googleProvider);
103
- }
104
- ```
105
-
106
- #### 3.1 修改 LoginPage.tsx
107
-
108
- 建立新版本:`web/components/LoginPage-Native.tsx`
109
-
110
- ```typescript
111
- "use client";
112
-
113
- import { Button } from '@/components/ui/button';
114
- import { Bot, Mail } from 'lucide-react';
115
- import { useState } from 'react';
116
- import { signInWithPopup, signInWithCredential, GoogleAuthProvider } from 'firebase/auth';
117
- import { getClientAuth, googleProvider } from '@/lib/firebase';
118
- import { FirebaseAuthentication } from '@capacitor-firebase/authentication';
119
-
120
- export function LoginPage() {
121
- const [isSigningIn, setIsSigningIn] = useState(false);
122
- const [error, setError] = useState<string | null>(null);
123
-
124
- const handleGoogleSignIn = async () => {
125
- console.log('[LoginPage] Google sign-in button clicked');
126
- const auth = getClientAuth();
127
-
128
- if (!auth) {
129
- console.error('[LoginPage] Firebase Auth not initialized');
130
- setError('Authentication service unavailable. Please refresh the page.');
131
- return;
132
- }
133
-
134
- try {
135
- setIsSigningIn(true);
136
- setError(null);
137
-
138
- // 檢測是否在 Capacitor (Native) 環境
139
- const isNative = !!(window as any).Capacitor;
140
-
141
- if (isNative) {
142
- console.log('[LoginPage] Using Capacitor Firebase Authentication (Native)');
143
-
144
- // Native: 使用 Capacitor Firebase plugin
145
- const result = await FirebaseAuthentication.signInWithGoogle();
146
-
147
- // 將 Capacitor 的憑證轉換為 Firebase 憑證
148
- const credential = GoogleAuthProvider.credential(result.credential?.idToken);
149
-
150
- // 登入到 Firebase
151
- const userCredential = await signInWithCredential(auth, credential);
152
- console.log('[LoginPage] ✅ Native sign-in successful:', userCredential.user.email);
153
- } else {
154
- console.log('[LoginPage] Using signInWithPopup (Web)');
155
-
156
- // Web: 使用 signInWithPopup
157
- const result = await signInWithPopup(auth, googleProvider);
158
- console.log('[LoginPage] ✅ Web sign-in successful:', result.user.email);
159
- }
160
-
161
- // onAuthStateChanged will automatically trigger and update the UI
162
- } catch (error: any) {
163
- console.error('[LoginPage] ❌ Sign-in failed:', error);
164
- setError(error.message || 'Sign-in failed. Please try again.');
165
- } finally {
166
- setIsSigningIn(false);
167
- }
168
- };
169
-
170
- return (
171
- <div className="flex h-screen w-full items-center justify-center bg-background">
172
- <div className="w-full max-w-md space-y-8 px-4">
173
- <div className="text-center">
174
- <div className="mx-auto mb-6 flex h-20 w-20 items-center justify-center rounded-full bg-primary/10">
175
- <Bot className="h-10 w-10 text-primary" />
176
- </div>
177
- <h1 className="mb-2 text-2xl sm:text-3xl font-bold tracking-tight">
178
- Welcome to Botrun-C
179
- </h1>
180
- <p className="text-muted-foreground">
181
- Sign in to start chatting with your AI assistant
182
- </p>
183
- </div>
184
-
185
- <div className="space-y-4">
186
- <Button
187
- onClick={handleGoogleSignIn}
188
- className="w-full"
189
- size="lg"
190
- variant="outline"
191
- disabled={isSigningIn}
192
- >
193
- <Mail className="mr-2 h-5 w-5" />
194
- {isSigningIn ? 'Signing in...' : 'Sign in with Google'}
195
- </Button>
196
-
197
- {error && (
198
- <div className="rounded-md bg-destructive/10 p-4 text-sm text-destructive">
199
- <p className="font-semibold mb-1">Sign-in Error</p>
200
- <p>{error}</p>
201
- </div>
202
- )}
203
- </div>
204
-
205
- <p className="text-center text-xs text-muted-foreground">
206
- By signing in, you agree to our Terms of Service and Privacy Policy
207
- </p>
208
-
209
- <div className="text-center">
210
- <p className="text-xs text-muted-foreground/60 font-mono">
211
- v.{process.env.NEXT_PUBLIC_APP_VERSION || 'unknown'}
212
- </p>
213
- </div>
214
- </div>
215
- </div>
216
- );
217
- }
218
- ```
219
-
220
- ---
221
-
222
- ### **步驟 4:安裝 Capacitor Firebase Authentication**
223
-
224
- #### 4.1 在 web/ 安裝依賴
225
- ```bash
226
- cd /home/bigcookie/github/botrun-c/web
227
- npm install @capacitor-firebase/authentication
228
- ```
229
-
230
- #### 4.2 重新建置並同步
231
- ```bash
232
- # 建置 web
233
- npm run build
234
-
235
- # 同步到 Android
236
- cd ../mobile-android
237
- npx cap sync android
238
- ```
239
-
240
- ---
241
-
242
- ### **步驟 5:測試**
243
-
244
- #### 5.1 重新開啟 Android Studio
245
- ```bash
246
- cd /home/bigcookie/github/botrun-c/mobile-android
247
- npx cap open android
248
- ```
249
-
250
- #### 5.2 重新執行 App(點擊綠色 ▶️)
251
-
252
- #### 5.3 測試 Google 登入
253
- 1. 點擊 "Sign in with Google"
254
- 2. 應該會彈出 Google 帳號選擇畫面
255
- 3. 選擇帳號
256
- 4. 授權
257
- 5. 成功登入 ✅
258
-
259
- ---
260
-
261
- ## 🐛 常見問題
262
-
263
- ### ❌ 錯誤 1:`10: Developer Error`
264
- **原因**:SHA-1 未設定或 google-services.json 未更新
265
-
266
- **解決**:
267
- 1. 確認 SHA-1 已新增到 Firebase Console
268
- 2. 重新下載 google-services.json
269
- 3. 重新 build
270
-
271
- ### ❌ 錯誤 2:`MISSING_GOOGLE_SERVICES_FILE`
272
- **原因**:google-services.json 不存在
273
-
274
- **解決**:
275
- ```bash
276
- # 確認檔案存在
277
- ls /home/bigcookie/github/botrun-c/mobile-android/android/app/google-services.json
278
-
279
- # 如果不存在,重新複製
280
- ```
281
-
282
- ### ❌ 錯誤 3:`API not enabled`
283
- **原因**:Google Sign-In API 未啟用
284
-
285
- **解決**:
286
- 1. 前往 Firebase Console → **Authentication**
287
- 2. 點擊 **Sign-in method** 標籤
288
- 3. 啟用 **Google** provider
289
- 4. 儲存
290
-
291
- ---
292
-
293
- ## 📚 參考資料
294
-
295
- - [Capacitor Firebase Authentication](https://github.com/capawesome-team/capacitor-firebase/tree/main/packages/authentication)
296
- - [Firebase Android Setup](https://firebase.google.com/docs/android/setup)
297
- - [Google Sign-In SHA-1](https://developers.google.com/android/guides/client-auth)
298
-
299
- ---
300
-
301
- **建立時間**:2025-11-06
302
- **測試環境**:WSL + Android Studio + Firebase