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,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