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
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: botrun-horse-smart-cache
3
+ description: 零框架智慧快取 — System Prompt 快取清單注入、大模型語意比對取代完全命中、CSV 素材預快取轉換、民眾有感題目優先
4
+ ---
5
+
6
+ ./data 有一堆 CSV。然後我現在在 ./bb 底下有一個 gemini_search.mjs。它的快取是放在 ./ch 底下。現在快取的麻煩的點是這樣:它必須完全命中它才會拿快取,我不要完全命中才拿快取。我要你在 Gemini 搜尋的第一次的 prompt 裡面,就把 ./ch 的快取的所有檔案清單放到系統提示工程裡面,讓它知道我有哪些檔案在哪些路徑。然後如果它的輸出是說「我已經有快取」的時候,你就直接讀檔,讀那個檔案,然後直接回答就好了,就不要上網搜尋了。所以你這樣子就可以經過大模型比較聰明的,你就不用完全一樣的字你才有快取,而是在系統提示工程餵過去的時候...你要上網記得上網查一下 Gemini-3-Flash-Preview 的系統提示工程的格式,你不要亂弄。
7
+
8
+ 接下來你的快取,我想預先快取一堆的東西,就是 ./data 底下的 CSV 都是快取的素材來源。現在就麻煩大了,這些素材來源的欄位不統一,並不是檔名是相關性提問、內容是答案的格式。你幫我用一個 somehow 什麼方法,又快又準的把它轉換成我們的快取格式。我不知道你有什麼方法,反正你就把它搞定就對了。感謝。
9
+
10
+ 備註:請挑民眾有感的題目再做快取,新聞就放過它。
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: botrun-horse-trigram-search
3
+ description: 零框架 Trigram 全文檢索 CLI — MJS 自然語言拆解關鍵字、FTS5 Trigram 檢索 SQLite、Count 排序 XML 輸出、停用字過濾、給 Agentic AI 大模型調閱
4
+ ---
5
+
6
+ 我們現在要做的事情就是真的要去指導它怎麼 SELECT 出來。裡面分成幾個步驟,第一個步驟它必須去拆解你的自然語言,把它拆解成關鍵字。所以我會希望你去寫一個 MJS 的腳本,我們是 Trigram 的 T-R-I-G-R-A-M 的全文檢索或英文的全文檢索。反正你第一個腳本 MJS 你就幫我把它拆,拆成就無腦的拆,你不要用很聰明的方法,你就從第一個字、第二個字、第三個字就用 Trigram 這樣往下拆,英文也是一樣。我們就做成 SELECT 命令的拆解的程式碼了。這超級簡單的,你千萬不要把它想複雜。
7
+
8
+ 然後第二個是你就用 SELECT 命令去對它指定的 SQLite,你把整個 MJS 做成一個 CLI 可以給參數的。針對 SELECT 命令去 SELECT,SELECT 出來以後東西你就按照 Count 次數,就是把 Count 次數最小的放在最前面,零次就不用講了。關鍵字最少的那個資料你就把它放到最上面去,把它做一個 XML 的區隔的 Dump Print 出來。也就是說例如 Count 出現過一次的關鍵字擺第一個,它的資料到底是問是什麼、答是什麼,Data 是怎樣。然後 Count 5 的你就陸續擺,擺五個,它的問答是怎樣。
9
+
10
+ 超過某個 Count 次數的可能就太多了,就是那種關鍵字你就不要擺了,要不然你整個資料庫都進去了。你要注意停用字的問題,停用字要刪掉,「的」啊、「是」啊,這種停用字要刪掉。Count 超過某個 Threshold,這 Threshold 也是 CLI 參數可以指定就不要擺了。你 Dump 出來的就會是一個以 XML Tag 分開一個問答、一個問答的 Print 的資料格式。大模型拿到這個就超開心的了,因為大模型只要把自然語言丟給這個 CLI,它立刻就得到它應該從裡面找答案的內容了。
11
+
12
+ 你幫我做出來把它放在本案的適當目錄底下,要給 Agentic AI 大模型運用。
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: botrun-horse-tts-format
3
+ description: 零框架 TTS 適配 — 回答限制 500 字以內、禁止 Markdown、口語化語氣、適配語音合成 Avatar 播報
4
+ ---
5
+
6
+ 最後回答不要超過 500 字。不要 Markdown。是口語,口語聲音的回答方式。
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: botrun-horse-watermelon-sqlite
3
+ description: 零框架波西瓜 SQLite 孵化 — CSV 匯入 SQLite、_meta 詮釋資料、FTS5 Trigram 全文索引、繁中英文檢索、Agentic AI 知識庫
4
+ ---
5
+
6
+ 請你幫我們做一件事,第一個是請你把這些 CSV 都放到 ./db/ 的一個 SQLite 的 database 裡面,單一檔案就好。這是第一步驟。然後下一步驟請你製作一個 _meta,就是詮釋資料。這個裡面是未來小模型只要 SELECT * FROM _meta,它就要可以去相關的 schema 有哪些東西,要能夠一次性地讓模型理解要怎麼 SELECT 的技巧跟技術。好,然後再接下來,我們這個是一個 Agentic AI 的系統,所以你幫忙孵這個 SQLite,我們叫它波西瓜。孵化出來以後,未來我們還會增加一些網路上關於淨零的新聞,零碳排的那種淨零綠生活、淨零時代、綠色技能,這些新聞可能到時候部長問答的時候會用到,所以你也幫我做一個簡單的表,裡面先幫我上網抓一些 2026 年 2 月或 3 月的新聞,抓個 10 個好了,把它先當個 sample 放進去。
7
+
8
+ 未來用的時候,我們會希望用 Trigram,T-R-I-G-R-A-M,這個 Trigram 會建立一個 Index 是 FTS5 的 Index。建立好以後,就可以透過全文檢索把使用者自然語言提問在裡面檢索出相對應的內容給大模型回答了。英文要能夠檢索,所以你的 Index 要有英文的檢索能力。然後 Index 要有 Trigram 的檢索能力,因為是繁體中文。這些都建好以後你就會有一個 SQLite 了。你幫我先把這個 SQLite 建立起來以後,我們要準備用 Agentic AI 對它做掃描測試,謝謝。
@@ -1,5 +1,5 @@
1
1
  // bin/commands/writing.mjs — writing 指令群組(generate)
2
- import { timer, jsonOut, readStdin } from '../../lib/core/cli-utils.mjs';
2
+ import { timer, jsonOut, readStdin } from '../_core/cli-utils.mjs';
3
3
 
4
4
  export async function cmdWritingGenerate(flags) {
5
5
  const elapsed = timer();
@@ -7,7 +7,7 @@ export async function cmdWritingGenerate(flags) {
7
7
  const project = flags.project || 'nstc';
8
8
  const concurrency = parseInt(flags.concurrency) || 10;
9
9
 
10
- const { GENERATORS, TOP5_OVERRIDES } = await import('../../lib/writing/generators/nstc-generators.mjs');
10
+ const { GENERATORS, TOP5_OVERRIDES } = await import('./generators/nstc-generators.mjs');
11
11
 
12
12
  let ids = null;
13
13
  if (flags.ids === '-' || (flags.ids === true && !process.stdin.isTTY)) {
@@ -17,7 +17,7 @@ export async function cmdWritingGenerate(flags) {
17
17
  ids = flags.ids.split(',').map(Number).filter(Boolean);
18
18
  }
19
19
 
20
- const { generateAll } = await import('../../lib/writing/generate.mjs');
20
+ const { generateAll } = await import('./generate.mjs');
21
21
  const result = await generateAll({
22
22
  concurrency, ids, project,
23
23
  generators: GENERATORS,
@@ -7,8 +7,8 @@ import { renderPdf } from './renderer.mjs';
7
7
  import {
8
8
  loadDag, loadState, saveState, initState,
9
9
  markRunning, markDone, markFailed, getReady, formatStatus,
10
- } from '../core/dag.mjs';
11
- import * as paths from '../core/paths.mjs';
10
+ } from '../_core/dag.mjs';
11
+ import * as paths from '../_core/paths.mjs';
12
12
 
13
13
  /**
14
14
  * @param {object} opts
@@ -0,0 +1,38 @@
1
+ // modules/writing/index.mjs — 公文撰寫模組自動註冊介面
2
+ // Convention: 每個 modules/<name>/index.mjs 都 export { name, schema, handler }
3
+
4
+ export const name = 'writing';
5
+
6
+ export const schema = {
7
+ name: 'writing',
8
+ description: '公文撰寫(生成 PDF)',
9
+ requires_sqlite: false,
10
+ subcommands: {
11
+ generate: '平行生成 PDF 文件(DAG 依賴感知批次處理)',
12
+ },
13
+ options: {
14
+ '--project=<名稱>': { type: 'string', default: 'nstc', description: '專案名稱' },
15
+ '--concurrency=N': { type: 'integer', default: 10, description: '平行並發數' },
16
+ '--ids=1,2,3': { type: 'string', description: '指定文件 ID(逗號分隔)' },
17
+ '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
18
+ },
19
+ examples: [
20
+ 'bh writing generate --project=nstc',
21
+ 'bh writing generate --project=nstc --ids=1,2,3',
22
+ ],
23
+ };
24
+
25
+ export async function handler(subcommand, positionals, flags) {
26
+ const { cmdWritingGenerate } = await import('./command.mjs');
27
+ switch (subcommand) {
28
+ case 'generate': await cmdWritingGenerate(flags); break;
29
+ default:
30
+ if (!subcommand) {
31
+ const { showCommandHelp } = await import('../../bin/commands/help.mjs');
32
+ showCommandHelp('writing', { writing: schema });
33
+ } else {
34
+ process.stderr.write(`writing: 未知子指令 ${subcommand}\n`);
35
+ process.exit(1);
36
+ }
37
+ }
38
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botrun-horse",
3
- "version": "2.30.0",
3
+ "version": "2.34.0",
4
4
  "description": "多專案文件處理系統 CLI — AI 技能管理、文件擷取、公文撰寫",
5
5
  "type": "module",
6
6
  "bin": {
@@ -32,7 +32,9 @@
32
32
  "dependencies": {
33
33
  "@ai-sdk/openai-compatible": "^2.0.30",
34
34
  "@google/genai": "^1.43.0",
35
+ "@hono/node-server": "^1.19.11",
35
36
  "@opencode-ai/sdk": "^1.2.15",
37
+ "hono": "^4.12.5",
36
38
  "openai": "^6.25.0",
37
39
  "pdfkit": "^0.17.2",
38
40
  "undici": "^7.22.0"
@@ -0,0 +1,51 @@
1
+ # DAG Todo: modules/imagen — Gemini 繪圖模組
2
+
3
+ ## 依賴圖(→ 表示依賴)
4
+
5
+ ```
6
+ [T1] imagen-client.mjs ──→ (無依賴,核心 library)
7
+ [T2] test/imagen/*.test.mjs ──→ T1
8
+ [T3] command.mjs (CLI) ──→ T1
9
+ [T4] server.mjs (Hono API) ──→ T1
10
+ [T5] index.mjs (模組註冊) ──→ T3, T4
11
+ [T6] npm install hono ──→ (無依賴)
12
+ [T7] 整合測試 + CLI 驗證 ──→ T2, T3, T4, T5, T6
13
+ [T8] bump + commit ──→ T7
14
+ ```
15
+
16
+ ## 任務清單
17
+
18
+ | ID | 任務 | 狀態 | 依賴 |
19
+ |----|------|------|------|
20
+ | T1 | `modules/imagen/imagen-client.mjs` — 核心繪圖 library(生成/編輯/多輪 session) | **done** | — |
21
+ | T2 | `test/imagen/*.test.mjs` — BDD/TDD 測試(17 pass / 0 fail) | **done** | T1 |
22
+ | T3 | `modules/imagen/command.mjs` — CLI 指令(bh imagen generate/edit/serve) | **done** | T1 |
23
+ | T4 | `modules/imagen/server.mjs` — Hono API 伺服器 | **done** | T1 |
24
+ | T5 | `modules/imagen/index.mjs` — 模組自動註冊 | **done** | T3, T4 |
25
+ | T6 | `npm install hono @hono/node-server` | **done** | — |
26
+ | T7 | 整合測試 + CLI 驗證(17 test pass, help 正常) | **done** | T2-T6 |
27
+ | T8 | bump version + commit(v2.34.0, 839ffd5) | **done** | T7 |
28
+
29
+ ## 架構設計
30
+
31
+ ```
32
+ modules/imagen/
33
+ index.mjs ← { name, schema, handler } 自動註冊
34
+ command.mjs ← CLI: bh imagen generate|edit|serve
35
+ server.mjs ← Hono API: POST /api/imagen/generate, /api/imagen/edit
36
+ imagen-client.mjs ← 核心:generateImage(), editImage(), createSession()
37
+ ```
38
+
39
+ ## API 規格
40
+
41
+ ### CLI
42
+ - `bh imagen generate "一隻貓坐在月亮上"` → 輸出 PNG 檔案
43
+ - `bh imagen generate "prompt" --model=gemini-3-pro-image-preview --size=512px --aspect=16:9`
44
+ - `bh imagen edit input.png "把背景換成海灘"` → 輸出編輯後 PNG
45
+ - `bh imagen serve --port=3000` → 啟動 Hono API
46
+
47
+ ### Hono API
48
+ - `POST /api/imagen/generate` — `{ prompt, model?, size?, aspect? }` → PNG
49
+ - `POST /api/imagen/edit` — `{ prompt, image(base64), model? }` → PNG
50
+ - `POST /api/imagen/session` — `{ sessionId?, prompt, image?(base64) }` → `{ sessionId, image(base64) }`
51
+ - `GET /health` → `{ status: "ok" }`
@@ -1,254 +0,0 @@
1
- // bin/commands/schema.mjs — 所有指令的結構化 schema(AI/LLM 友善)
2
- // 集中管理:方便 AI agent 讀取完整指令清單
3
-
4
- export const COMMANDS = {
5
- doc: {
6
- name: 'doc',
7
- description: '文件處理(拆頁、轉文字、入庫)— 支援 PDF 與 Office 全系列',
8
- requires_sqlite: false,
9
- subcommands: {
10
- split: '通用 PDF 拆頁(每頁輸出為獨立 PDF)',
11
- text: 'PDF 轉純文字(保留頁碼與排版,不需先拆頁)',
12
- ingest: 'PDF/Office 入庫流水線(轉文字 → SQLite FTS5)[需 --experimental-sqlite]',
13
- },
14
- options: {
15
- '--project=<名稱>': { type: 'string', default: 'nstc', description: '專案名稱' },
16
- '--dir=<路徑>': { type: 'string', description: '掃描單一目錄內所有文件' },
17
- '--dirs=<路徑1,路徑2>': { type: 'string', description: '掃描多個目錄(逗號分隔)' },
18
- '--outdir=<路徑>': { type: 'string', description: '拆頁輸出目錄(split 指令用)' },
19
- '--split-pdf': { type: 'boolean', default: false, description: '[ingest] 同時拆頁成獨立 PDF' },
20
- '--recursive': { type: 'boolean', default: false, description: '遞迴掃描子目錄' },
21
- '--force': { type: 'boolean', default: false, description: '強制重新入庫(忽略斷點續作紀錄)' },
22
- '--concurrency=N': { type: 'integer', default: 5, description: '平行處理數' },
23
- '--quiet': { type: 'boolean', default: false, description: '靜默模式(不輸出進度到 stderr,GNU parallel 友善)' },
24
- '--print0': { type: 'boolean', default: false, description: 'NUL 分隔路徑輸出(與 xargs -0 相容)' },
25
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
26
- },
27
- examples: [
28
- 'bh doc split file1.pdf file2.pdf --project=nstc',
29
- 'bh doc text --dir=projects/nstc/output/pdfs',
30
- 'node --experimental-sqlite bin/bh.mjs doc ingest --dir=projects/nstc/pdfs --project=nstc',
31
- 'node --experimental-sqlite bin/bh.mjs doc ingest --dirs=pdfs/,docs/ --project=nstc --recursive',
32
- 'node --experimental-sqlite bin/bh.mjs doc ingest file.docx report.xlsx --project=nstc',
33
- 'node --experimental-sqlite bin/bh.mjs doc ingest --dir=pdfs/ --force --split-pdf --project=nstc',
34
- 'ls pdfs/*.pdf | node --experimental-sqlite bin/bh.mjs doc ingest --project=nstc',
35
- 'find . -name "*.pdf" -print0 | xargs -0 -P 4 node bin/bh.mjs doc text --quiet',
36
- ],
37
- },
38
- writing: {
39
- name: 'writing',
40
- description: '公文撰寫(生成 PDF)',
41
- requires_sqlite: false,
42
- subcommands: {
43
- generate: '平行生成 PDF 文件(DAG 依賴感知批次處理)',
44
- },
45
- options: {
46
- '--project=<名稱>': { type: 'string', default: 'nstc', description: '專案名稱' },
47
- '--concurrency=N': { type: 'integer', default: 10, description: '平行並發數' },
48
- '--ids=1,2,3': { type: 'string', description: '指定文件 ID(逗號分隔)' },
49
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
50
- },
51
- examples: [
52
- 'bh writing generate --project=nstc',
53
- 'bh writing generate --project=nstc --ids=1,2,3',
54
- ],
55
- },
56
- dag: {
57
- name: 'dag',
58
- description: 'DAG 依賴追蹤管理',
59
- requires_sqlite: false,
60
- subcommands: {
61
- init: '初始化 DAG 狀態',
62
- status: '顯示整體 DAG 進度摘要',
63
- ready: '列出目前可執行的任務',
64
- list: '列出所有任務及其狀態',
65
- },
66
- options: {
67
- '--project=<名稱>': { type: 'string', default: 'nstc', description: '專案名稱' },
68
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
69
- },
70
- examples: [
71
- 'bh dag init --project=nstc',
72
- 'bh dag status --project=nstc',
73
- 'bh dag ready --format=json --project=nstc',
74
- ],
75
- },
76
- search: {
77
- name: 'search',
78
- description: 'FTS5 trigram 全文檢索',
79
- requires_sqlite: true,
80
- subcommands: { query: '搜尋關鍵字' },
81
- options: {
82
- '--project=<名稱>': { type: 'string', default: 'nstc', description: '專案名稱' },
83
- '--db=<DB路徑>': { type: 'string', description: 'SQLite 資料庫路徑' },
84
- '--limit=N': { type: 'integer', description: '限制結果數量' },
85
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
86
- },
87
- examples: ['bh search query "研究計畫" --project=nstc'],
88
- },
89
- db: {
90
- name: 'db',
91
- description: 'SQLite 資料庫管理',
92
- requires_sqlite: true,
93
- subcommands: {
94
- stats: '顯示 DB 統計',
95
- docs: '列出所有文件 metadata',
96
- 'pages <doc_id>': '列出指定文件的所有頁面',
97
- },
98
- options: {
99
- '--project=<名稱>': { type: 'string', default: 'nstc', description: '專案名稱' },
100
- '--db=<DB路徑>': { type: 'string', description: 'SQLite 路徑' },
101
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
102
- },
103
- examples: ['bh db stats --project=nstc', 'bh db docs --format=json --project=nstc'],
104
- },
105
- gemini: {
106
- name: 'gemini',
107
- description: 'Gemini 3 Flash Preview AI 提問(thinking + grounding + url context)',
108
- requires_sqlite: false,
109
- subcommands: { ask: '向 Gemini 提問(預設啟用深度思考、搜尋接地、URL 擷取)' },
110
- options: {
111
- '--project=<名稱>': { type: 'string', default: 'nstc', description: '專案名稱' },
112
- '--provider=<名稱>': { type: 'string', default: 'auto', description: 'LLM provider (auto|gemini|gemini-api)' },
113
- '--thinking=<等級>': { type: 'string', default: 'MEDIUM', description: '思考等級 (NONE|MINIMAL|LOW|MEDIUM|HIGH)' },
114
- '--system-prompt=<文字>': { type: 'string', default: '', description: '系統提示詞' },
115
- '--no-grounding': { type: 'boolean', default: false, description: '停用 Google Search 接地' },
116
- '--no-url-context': { type: 'boolean', default: false, description: '停用 URL 內容擷取' },
117
- '--no-stream': { type: 'boolean', default: false, description: '停用串流(等待完整回應)' },
118
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
119
- },
120
- examples: [
121
- 'bh gemini ask "量子糾纏的原理是什麼?"',
122
- 'bh gemini ask "2026 台灣經濟預測" --format=json',
123
- 'echo "解釋 AI" | bh gemini ask',
124
- ],
125
- },
126
- nchc: {
127
- name: 'nchc',
128
- description: '國網 GenAI AI 提問(Mistral 系列,OpenAI 相容介面)',
129
- requires_sqlite: false,
130
- subcommands: {
131
- ask: '向國網 GenAI 提問(支援串流輸出)',
132
- agent: '啟動 Agentic AI 代理(工具呼叫、多輪對話)',
133
- code: '啟動 Agentic Coding 代理(@opencode-ai/sdk + 675B,需 opencode CLI)',
134
- models: '列出可用模型',
135
- },
136
- options: {
137
- '--model=<名稱>': { type: 'string', default: 'Mistral-Large-3-675B-Instruct-2512', description: '模型名稱' },
138
- '--system-prompt=<文字>': { type: 'string', default: '', description: '系統提示詞' },
139
- '--max-tokens=N': { type: 'integer', default: 8192, description: '最大輸出 tokens' },
140
- '--temperature=N': { type: 'number', default: 0.7, description: '溫度(0.0~1.0)' },
141
- '--no-stream': { type: 'boolean', default: false, description: '停用串流' },
142
- '--max-turns=N': { type: 'integer', default: 20, description: '[agent] 最大迴圈次數' },
143
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
144
- },
145
- examples: [
146
- 'bh nchc ask "台灣半導體產業分析"',
147
- 'bh nchc agent "列出 lib/ 目錄下所有 .mjs 檔案並說明架構"',
148
- 'bh nchc models',
149
- ],
150
- },
151
- openrouter: {
152
- name: 'openrouter',
153
- description: 'OpenRouter AI 提問(400+ 模型,支援網路搜尋)',
154
- requires_sqlite: false,
155
- subcommands: {
156
- ask: '向 OpenRouter 任意模型提問(支援串流 + 網路搜尋)',
157
- models: '列出常用模型(含網路搜尋支援說明)',
158
- },
159
- options: {
160
- '--model=<名稱>': { type: 'string', default: 'openai/gpt-4o-mini', description: '模型名稱(任意 OpenRouter 模型 ID,可加 :online 後綴)' },
161
- '--web-search': { type: 'boolean', default: false, description: '啟用網路搜尋(plugins: web,適用所有模型)' },
162
- '--max-results=N': { type: 'integer', default: 5, description: '搜尋最大結果數(--web-search 時有效)' },
163
- '--system-prompt=<文字>': { type: 'string', default: '', description: '系統提示詞' },
164
- '--max-tokens=N': { type: 'integer', default: 8192, description: '最大輸出 tokens' },
165
- '--temperature=N': { type: 'number', default: 0.7, description: '溫度(0.0~2.0)' },
166
- '--no-stream': { type: 'boolean', default: false, description: '停用串流(等待完整回應)' },
167
- '--quiet': { type: 'boolean', default: false, description: '靜默模式(不輸出進度到 stderr,GNU parallel 友善)' },
168
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式(json 含 sources、usage、perf,適合 Agentic AI)' },
169
- },
170
- examples: [
171
- 'bh openrouter ask "台灣今日重要新聞" --web-search',
172
- 'bh openrouter ask "分析 React vs Vue" --model=anthropic/claude-sonnet-4-6',
173
- 'bh openrouter ask "最新 AI 研究" --model=perplexity/sonar-pro --format=json',
174
- 'echo "解釋量子糾纏" | bh openrouter ask --model=openai/gpt-4o',
175
- 'bh openrouter ask "整理今天新聞" --web-search --quiet --format=json | jq .text',
176
- 'bh openrouter models',
177
- ],
178
- },
179
- legal: {
180
- name: 'legal',
181
- description: '法律查詢(AI Router + 兩步驟提示工程 + SQLite 快取)[需 --experimental-sqlite]',
182
- requires_sqlite: true,
183
- subcommands: {
184
- ask: '法律問題查詢(Mistral 14B 路由 → 快取命中或 Gemini Pro 搜尋法規 → 法律分析)',
185
- cache: '快取管理(list: 列出快取, stats: 統計)',
186
- },
187
- options: {
188
- '--project=<名稱>': { type: 'string', default: 'legal-cache', description: '專案名稱(決定 SQLite 路徑)' },
189
- '--skip-cache': { type: 'boolean', default: false, description: '強制跳過快取,直接呼叫大模型' },
190
- '--skip-save': { type: 'boolean', default: false, description: '不將結果存入快取' },
191
- '--limit=N': { type: 'integer', default: 20, description: '[cache list] 顯示筆數上限' },
192
- '--quiet': { type: 'boolean', default: false, description: '靜默模式(不輸出進度到 stderr)' },
193
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
194
- },
195
- examples: [
196
- 'node --experimental-sqlite bin/bh.mjs legal ask "房東可以隨意趕走我嗎?"',
197
- 'node --experimental-sqlite bin/bh.mjs legal ask "勞工被無故解雇有哪些保護?" --format=json',
198
- 'echo "我的房東說要漲租金,我有辦法拒絕嗎?" | node --experimental-sqlite bin/bh.mjs legal ask',
199
- 'node --experimental-sqlite bin/bh.mjs legal cache list --project=legal-cache',
200
- 'node --experimental-sqlite bin/bh.mjs legal cache stats',
201
- 'node --experimental-sqlite bin/bh.mjs legal ask "問題" --skip-cache --project=legal-cache',
202
- ],
203
- },
204
- skill: {
205
- name: 'skill',
206
- description: '技能管理(無參數=全列出,帶關鍵字=模糊搜尋)— 零框架技能系列',
207
- requires_sqlite: false,
208
- subcommands: {
209
- '(無)': '列出所有技能(依系列分組)',
210
- '<關鍵字>': '模糊搜尋技能(加權全文比對)',
211
- list: '列出所有技能(同無參數)',
212
- show: '顯示指定技能全文(支援智慧 fallback 搜尋)',
213
- search: '模糊搜尋技能(同 <關鍵字>)',
214
- },
215
- options: {
216
- '--format=json|text': { type: 'string', default: 'text', description: '輸出格式' },
217
- '--quiet': { type: 'boolean', default: false, description: '靜默模式' },
218
- },
219
- examples: [
220
- 'bh skill # 列出全部技能',
221
- 'bh skill 零幻覺 # 模糊搜尋「零幻覺」',
222
- 'bh skill show botrun-horse-coding',
223
- 'bh skill show botrun-horse-coding | pbcopy',
224
- 'bh skill show botrun-horse-coding --format=json',
225
- 'bh skill search 換位思考',
226
- 'bh skill show 切片 # 智慧 fallback:slug 不存在 → 自動搜尋',
227
- ],
228
- },
229
- portal: {
230
- name: 'portal',
231
- description: '智慧入口(預留)',
232
- requires_sqlite: false,
233
- subcommands: { status: '顯示入口狀態' },
234
- options: {},
235
- examples: ['bh portal status'],
236
- },
237
- ocr: {
238
- name: 'ocr',
239
- description: 'OCR 辨識(預留)',
240
- requires_sqlite: false,
241
- subcommands: { scan: '掃描文件' },
242
- options: {},
243
- examples: ['bh ocr scan file.pdf'],
244
- },
245
- commands: {
246
- name: 'commands',
247
- description: '列出所有指令的結構化 schema(AI/LLM 友善)',
248
- requires_sqlite: false,
249
- options: {
250
- '--format=json|text': { type: 'string', default: 'json', description: '輸出格式' },
251
- },
252
- examples: ['bh commands', "bh commands --format=json | jq 'keys'"],
253
- },
254
- };
@@ -1,103 +0,0 @@
1
- ---
2
- name: DOCX閱讀技能
3
- description: 將 DOCX 文件轉換為 Markdown 格式並閱讀內容。當使用者需要「讀取 DOCX」、「閱讀 Word 文件」、「轉換 DOCX」、「DOCX 內容」時使用。使用 mammoth.js 進行高品質轉換。(v1.0.0)
4
- allowed-tools: Bash,Read
5
- ---
6
-
7
- # DOCX 閱讀技能(v1.0.0)
8
-
9
- ## 功能說明
10
-
11
- 將 DOCX 文件轉換為 Markdown 格式,方便 AI 閱讀和分析:
12
-
13
- | 功能 | 說明 |
14
- |------|------|
15
- | **DOCX 轉 Markdown** | 使用 mammoth.js 高品質轉換 |
16
- | **保留格式** | 標題、段落、列表、表格 |
17
- | **批次處理** | 支援轉換多個檔案 |
18
-
19
- ## 觸發條件
20
-
21
- - 使用者需要閱讀 DOCX/Word 文件
22
- - 檔案副檔名為 `.docx`
23
- - Google Drive 同步的 DOCX 需要轉換
24
-
25
- ---
26
-
27
- ## 執行流程
28
-
29
- ### Step 1:轉換單一 DOCX 檔案
30
-
31
- ```bash
32
- node $OFFICIAL_SKILLS_DIR/DOCX閱讀技能/scripts/docx-to-markdown.mjs \
33
- --input "/path/to/file.docx" \
34
- --output "/path/to/output.md"
35
- ```
36
-
37
- **參數說明:**
38
- - `--input` - DOCX 檔案路徑(必填)
39
- - `--output` - 輸出 Markdown 路徑(選填,預設同目錄)
40
-
41
- ### Step 2:讀取轉換後的 Markdown
42
-
43
- 使用 Read 工具讀取轉換後的 `.md` 檔案。
44
-
45
- ---
46
-
47
- ## 腳本參考
48
-
49
- ### docx-to-markdown.mjs
50
-
51
- ```bash
52
- # 基本用法
53
- node $OFFICIAL_SKILLS_DIR/DOCX閱讀技能/scripts/docx-to-markdown.mjs \
54
- --input "/mnt/data/user/file.docx"
55
-
56
- # 指定輸出路徑
57
- node $OFFICIAL_SKILLS_DIR/DOCX閱讀技能/scripts/docx-to-markdown.mjs \
58
- --input "/mnt/data/user/file.docx" \
59
- --output "/mnt/data/user/file.md"
60
-
61
- # 直接輸出到 stdout(不存檔)
62
- node $OFFICIAL_SKILLS_DIR/DOCX閱讀技能/scripts/docx-to-markdown.mjs \
63
- --input "/mnt/data/user/file.docx" \
64
- --stdout
65
- ```
66
-
67
- **輸出格式:**
68
- ```json
69
- {
70
- "success": true,
71
- "input": "/path/to/input.docx",
72
- "output": "/path/to/output.md",
73
- "size": 1234,
74
- "preview": "前 500 字預覽..."
75
- }
76
- ```
77
-
78
- ---
79
-
80
- ## 範例對話
81
-
82
- **使用者:** 幫我讀取 gdrive 裡的 DOCX 檔案
83
-
84
- **AI:** 好的,讓我先將 DOCX 轉換為 Markdown 格式。
85
-
86
- ```bash
87
- node $OFFICIAL_SKILLS_DIR/DOCX閱讀技能/scripts/docx-to-markdown.mjs \
88
- --input "/tmp/$USER_ID/gdrive/folderId/original/file.docx" \
89
- --output "/tmp/$USER_ID/gdrive/folderId/converted/file.md"
90
- ```
91
-
92
- 轉換成功!讓我讀取內容:
93
-
94
- (使用 Read 工具讀取 .md 檔案)
95
-
96
- ---
97
-
98
- ## 技術細節
99
-
100
- - **轉換引擎**:mammoth.js(純 JavaScript)
101
- - **輸出格式**:Markdown(GitHub Flavored)
102
- - **支援元素**:標題、段落、粗體、斜體、列表、表格、超連結
103
- - **限制**:複雜圖表可能無法完美轉換