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.
- package/bin/bh.mjs +37 -170
- package/bin/commands/help.mjs +30 -30
- package/{lib/flows → modules/_core}/draft-writing.mjs +1 -1
- package/{lib/flows → modules/_core}/gemini-ask.mjs +1 -1
- package/{lib/flows → modules/_core}/legal-ask.mjs +4 -4
- package/{lib/flows → modules/_core}/openai-agent.mjs +2 -2
- package/{lib/flows → modules/_core}/openrouter-ask.mjs +1 -1
- package/{bin/commands/dag-cmd.mjs → modules/dag/command.mjs} +2 -2
- package/modules/dag/index.mjs +30 -0
- package/{bin/commands/db-cmd.mjs → modules/db/command.mjs} +3 -3
- package/modules/db/index.mjs +26 -0
- package/modules/discover.mjs +43 -0
- package/{bin/commands/doc.mjs → modules/doc/command.mjs} +5 -5
- package/modules/doc/index.mjs +55 -0
- package/{lib/doc/index.mjs → modules/doc/ingest.mjs} +1 -1
- package/{lib → modules}/doc/office2text.mjs +1 -1
- package/{lib → modules}/doc/pdf2text.mjs +1 -1
- package/{lib → modules}/doc/split.mjs +1 -1
- package/{bin/commands/gemini.mjs → modules/gemini/command.mjs} +3 -3
- package/modules/gemini/index.mjs +41 -0
- package/modules/imagen/command.mjs +117 -0
- package/modules/imagen/imagen-client.mjs +239 -0
- package/modules/imagen/index.mjs +60 -0
- package/modules/imagen/server.mjs +133 -0
- package/{bin/commands/legal.mjs → modules/legal/command.mjs} +5 -5
- package/modules/legal/index.mjs +56 -0
- package/{bin/commands/nchc.mjs → modules/nchc/command.mjs} +4 -4
- package/modules/nchc/index.mjs +48 -0
- package/modules/ocr/index.mjs +17 -0
- package/{bin/commands/openrouter.mjs → modules/openrouter/command.mjs} +5 -5
- package/modules/openrouter/index.mjs +49 -0
- package/modules/portal/index.mjs +17 -0
- package/{bin/commands/search.mjs → modules/search/command.mjs} +3 -3
- package/modules/search/index.mjs +23 -0
- package/{lib/search/index.mjs → modules/search/search-lib.mjs} +1 -1
- package/{bin/commands/skill.mjs → modules/skill/command.mjs} +46 -9
- package/modules/skill/index.mjs +35 -0
- package/{lib/prompt → modules/skill}/prompt-search.mjs +1 -1
- package/{lib/prompt → modules/skill}/prompt-store.mjs +28 -11
- package/modules/skill/prompts/zero-framework/address-matching.md +22 -0
- package/modules/skill/prompts/zero-framework/data-integrity.md +15 -0
- package/modules/skill/prompts/zero-framework/data-reasonability.md +17 -0
- package/modules/skill/prompts/zero-framework/gemini-image-gen.md +20 -0
- package/modules/skill/prompts/zero-framework/gemini-search-cli.md +10 -0
- package/modules/skill/prompts/zero-framework/html-report.md +15 -0
- package/modules/skill/prompts/zero-framework/smart-cache.md +10 -0
- package/modules/skill/prompts/zero-framework/trigram-search.md +12 -0
- package/modules/skill/prompts/zero-framework/tts-format.md +6 -0
- package/modules/skill/prompts/zero-framework/watermelon-sqlite.md +8 -0
- package/{bin/commands/writing.mjs → modules/writing/command.mjs} +3 -3
- package/{lib → modules}/writing/generate.mjs +2 -2
- package/modules/writing/index.mjs +38 -0
- package/package.json +3 -1
- package/parallel-dag-todo-list/imagen-module.md +51 -0
- package/bin/commands/schema.mjs +0 -254
- package/botrun-c/.claude/skills/DOCX/351/226/261/350/256/200/346/212/200/350/203/275/SKILL.md +0 -103
- 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
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/SKILL.md +0 -1093
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branch.mjs +0 -73
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branches.mjs +0 -77
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-checkout.mjs +0 -72
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-clone.mjs +0 -72
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-commit.mjs +0 -75
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-branch.mjs +0 -75
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-file.mjs +0 -72
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-diff.mjs +0 -80
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list-tree.mjs +0 -336
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list.mjs +0 -199
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-merge.mjs +0 -86
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-move.mjs +0 -75
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-create.mjs +0 -81
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-list.mjs +0 -74
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-merge.mjs +0 -83
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-view.mjs +0 -71
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-push.mjs +0 -71
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-read.mjs +0 -277
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-search.mjs +0 -370
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-stash.mjs +0 -116
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-sync.mjs +0 -71
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-write.mjs +0 -74
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/lib/path-validator.mjs +0 -167
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/SKILL.md +0 -605
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-create.mjs +0 -127
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-delete.mjs +0 -77
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-diff.mjs +0 -87
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-history.mjs +0 -99
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-list.mjs +0 -174
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-read.mjs +0 -214
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-restore.mjs +0 -75
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-search.mjs +0 -270
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-sync-back.mjs +0 -155
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-update.mjs +0 -100
- package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/SKILL.md +0 -414
- package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/create-project.mjs +0 -91
- package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/finalize-project.mjs +0 -162
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/SKILL.md +0 -206
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/package.json +0 -19
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-analyze.mjs +0 -309
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-compress.mjs +0 -315
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-split.mjs +0 -275
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-to-text.mjs +0 -336
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/test-pdf-scripts.mjs +0 -491
- package/botrun-c/.claude/skills/docx-to-markdown/SKILL.md +0 -76
- package/botrun-c/.claude/skills/docx-to-markdown/scripts/convert_docx.py +0 -183
- package/botrun-c/.claude/skills/gcp-coord-ml-ocr/SKILL.md +0 -133
- package/botrun-c/.claude/skills/gcp-coord-ml-ocr/scripts/ocr_processor.py +0 -381
- package/botrun-c/.claude/skills/gemini-transcribe/SKILL.md +0 -115
- package/botrun-c/.claude/skills/gemini-transcribe/scripts/transcribe.py +0 -499
- package/botrun-c/.claude/skills/nchc-transcribe/SKILL.md +0 -131
- package/botrun-c/.claude/skills/nchc-transcribe/scripts/transcribe.py +0 -522
- package/botrun-c/.claude/skills/p320-moj-review/SKILL.md +0 -200
- package/botrun-c/.claude/skills/p320-moj-review/references/guideline.md +0 -118
- package/botrun-c/.claude/skills/pdf-multimodal-processor/SKILL.md +0 -186
- package/botrun-c/.claude/skills/pdf-multimodal-processor/scripts/process_pdf.py +0 -515
- package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/SKILL.md +0 -81
- package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/package.json +0 -13
- package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/secure-search.mjs +0 -232
- 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
- package/botrun-c/.claude/skills//345/216/273/350/255/230/345/210/245/346/212/200/350/203/275/SKILL.md +0 -125
- package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/SKILL.md +0 -123
- package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/scripts/recall.mjs +0 -339
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/SKILL.md +0 -131
- package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/scripts/skill-manager.mjs +0 -542
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/SKILL.md +0 -114
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/remember.mjs +0 -159
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test-advanced.mjs +0 -342
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test.mjs +0 -430
- 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
- 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
- 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
- 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
- package/botrun-c/.dockerignore +0 -131
- package/botrun-c/.dockeroptimize +0 -13
- package/botrun-c/.firebase/hosting.b3V0.cache +0 -30
- package/botrun-c/.firebaserc +0 -5
- package/botrun-c/.gcloudignore +0 -56
- package/botrun-c/.ruby-version +0 -1
- package/botrun-c/CHANGELOG.md +0 -224
- package/botrun-c/Dockerfile.gcp +0 -365
- package/botrun-c/Dockerfile.slim +0 -195
- package/botrun-c/Gemfile +0 -8
- package/botrun-c/Gemfile.lock +0 -233
- package/botrun-c/LOCAL-DEVELOPMENT-GUIDE.md +0 -393
- package/botrun-c/PLAN.md +0 -131
- package/botrun-c/README.md +0 -129
- package/botrun-c/TODO-CAPACITOR-INTEGRATION.md +0 -482
- package/botrun-c/VERIFICATION.md +0 -121
- package/botrun-c/admin/RATE_LIMIT_MANAGEMENT.md +0 -312
- package/botrun-c/admin/README.md +0 -338
- package/botrun-c/admin/botrun-billing-report-1765235244038.csv +0 -22
- package/botrun-c/admin/botrun-billing-report-1765235323089.csv +0 -22
- package/botrun-c/admin/botrun-dashboard-1765235244039.html +0 -278
- package/botrun-c/admin/botrun-dashboard-1765235323089.html +0 -278
- package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235244039.html +0 -161
- package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235323090.html +0 -161
- package/botrun-c/admin/check-billing.ts +0 -48
- package/botrun-c/admin/count-all-users.ts +0 -65
- package/botrun-c/admin/generate-analytics-report.ts +0 -188
- package/botrun-c/admin/jest.config.ts +0 -43
- package/botrun-c/admin/lib/__tests__/formatters.test.ts +0 -264
- package/botrun-c/admin/lib/__tests__/mocks/firebase.mock.ts +0 -112
- package/botrun-c/admin/lib/__tests__/services/UserService.test.ts +0 -83
- package/botrun-c/admin/lib/__tests__/user-resolver.test.ts +0 -439
- package/botrun-c/admin/lib/analyzers/BillingAnalyticsService.ts +0 -242
- package/botrun-c/admin/lib/analyzers/CsvExporter.ts +0 -263
- package/botrun-c/admin/lib/analyzers/HtmlChartGenerator.ts +0 -530
- package/botrun-c/admin/lib/analyzers/SpikeAnalyzer.ts +0 -608
- package/botrun-c/admin/lib/analyzers/TimeSeriesAnalyzer.ts +0 -344
- package/botrun-c/admin/lib/cli/CLIBootstrapper.ts +0 -40
- package/botrun-c/admin/lib/commands/AbstractCommand.ts +0 -69
- package/botrun-c/admin/lib/commands/AnalyticsCommand.ts +0 -215
- package/botrun-c/admin/lib/commands/ListCommand.ts +0 -85
- package/botrun-c/admin/lib/commands/QueryCommand.ts +0 -81
- package/botrun-c/admin/lib/commands/SpikeCommand.ts +0 -83
- package/botrun-c/admin/lib/domain/User.ts +0 -38
- package/botrun-c/admin/lib/firebase.ts +0 -92
- package/botrun-c/admin/lib/firestore-safe.ts +0 -105
- package/botrun-c/admin/lib/formatters.ts +0 -154
- package/botrun-c/admin/lib/rate-limit-detailed.ts +0 -355
- package/botrun-c/admin/lib/rate-limit.ts +0 -286
- package/botrun-c/admin/lib/repositories/UserRepository.ts +0 -104
- package/botrun-c/admin/lib/services/UserService.ts +0 -108
- package/botrun-c/admin/lib/types.ts +0 -56
- package/botrun-c/admin/lib/user-resolver.ts +0 -275
- package/botrun-c/admin/manage-auth-domains.js +0 -178
- package/botrun-c/admin/migrate-plan-free.sh +0 -64
- package/botrun-c/admin/package-lock.json +0 -5656
- package/botrun-c/admin/package.json +0 -28
- package/botrun-c/admin/rate-limit.sh +0 -55
- package/botrun-c/admin/remove-custom-limits.ts +0 -75
- package/botrun-c/admin/reset-rate.sh +0 -70
- package/botrun-c/admin/reset-trial.sh +0 -68
- package/botrun-c/admin/seed-trial-data.sh +0 -38
- package/botrun-c/admin/trial.sh +0 -55
- package/botrun-c/admin/tsconfig.json +0 -20
- package/botrun-c/admin/users-cli.py +0 -298
- package/botrun-c/admin/users.sh +0 -12
- package/botrun-c/admin/users.ts +0 -1321
- package/botrun-c/api/admin-tools/check-whitelist.mjs.migration-bak +0 -74
- package/botrun-c/api/admin-tools/create-user.mjs +0 -92
- package/botrun-c/api/admin-tools/create-user.mjs.migration-bak +0 -92
- package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py +0 -287
- package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py.migration-bak +0 -287
- package/botrun-c/api/admin-tools/init-firestore.mjs +0 -75
- package/botrun-c/api/admin-tools/init-firestore.mjs.migration-bak +0 -101
- package/botrun-c/api/admin-tools/list-users.mjs +0 -43
- package/botrun-c/api/admin-tools/list-users.mjs.migration-bak +0 -43
- package/botrun-c/api/admin-tools/manage-authorized-domains.ts +0 -255
- package/botrun-c/api/admin-tools/manage-authorized-domains.ts.migration-bak +0 -255
- package/botrun-c/api/admin-tools/setup-custom-claims.ts.migration-bak +0 -155
- package/botrun-c/api/admin-tools/test-claims.mjs +0 -69
- package/botrun-c/api/admin-tools/test-claims.mjs.migration-bak +0 -69
- package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs +0 -72
- package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs.migration-bak +0 -72
- package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs +0 -159
- package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs.migration-bak +0 -159
- package/botrun-c/api/admin-tools/update-service-urls.mjs +0 -82
- package/botrun-c/api/admin-tools/update-service-urls.mjs.migration-bak +0 -82
- package/botrun-c/api/package-lock.json +0 -5031
- package/botrun-c/api/package.json +0 -63
- package/botrun-c/api/pnpm-lock.yaml +0 -4157
- package/botrun-c/api/rate-limit-export-1763620678737.csv +0 -79
- package/botrun-c/api/scripts/README-migrate-plan-free.md +0 -197
- package/botrun-c/api/scripts/check-users.ts +0 -45
- package/botrun-c/api/scripts/delete-firestore-docs.js +0 -43
- package/botrun-c/api/scripts/dump-subscriptions.ts +0 -395
- package/botrun-c/api/scripts/list-all-users.ts +0 -65
- package/botrun-c/api/scripts/migrate-plan-free-rpd-16to32.ts +0 -262
- package/botrun-c/api/scripts/migrate-plan-names-to-lite-max.ts +0 -269
- package/botrun-c/api/scripts/query-user-info.ts +0 -304
- package/botrun-c/api/scripts/reset-rate-limit.ts +0 -206
- package/botrun-c/api/scripts/reset-trial-subscription.ts +0 -166
- package/botrun-c/api/scripts/rollback-plan-names-from-lite-max.ts +0 -139
- package/botrun-c/api/scripts/seed-rate-limit-test-data.ts +0 -114
- package/botrun-c/api/scripts/seed-subscription-test-data.ts +0 -173
- package/botrun-c/api/scripts/test-rate-limit-message.ts +0 -108
- package/botrun-c/api/test-billing-write.ts +0 -103
- package/botrun-c/api/test-billing.ts +0 -81
- package/botrun-c/api/test-chat-upload.sh +0 -162
- package/botrun-c/api/test-nchc-whisper.ts +0 -87
- package/botrun-c/api/test-skills-loading.js +0 -77
- package/botrun-c/api/test-skills-symlink.js +0 -118
- package/botrun-c/api/test-upload-multimodal.sh +0 -167
- package/botrun-c/api/tsconfig.json +0 -27
- package/botrun-c/api/verify-form-2-1.mjs +0 -229
- package/botrun-c/api/vitest.config.ts +0 -9
- package/botrun-c/appium-capabilities.json +0 -20
- package/botrun-c/cors.json +0 -26
- package/botrun-c/delete-old.sh +0 -44
- package/botrun-c/design/google-drive/01-architecture.md +0 -186
- package/botrun-c/design/google-drive/02-api-design.md +0 -314
- package/botrun-c/design/google-drive/03-frontend-design.md +0 -278
- package/botrun-c/design/google-drive/04-skill-design.md +0 -384
- package/botrun-c/design/google-drive/05-test-plan.md +0 -507
- package/botrun-c/design/google-drive/README.md +0 -32
- package/botrun-c/dev/mcp-token-calculator/README.md +0 -92
- package/botrun-c/dev/mcp-token-calculator/RESULTS.md +0 -188
- package/botrun-c/dev/mcp-token-calculator/calculate-current-tokens.ts +0 -369
- package/botrun-c/dev/mcp-token-calculator/calculate-mcp-tokens.ts +0 -464
- package/botrun-c/dev/mcp-token-calculator/optimization-proposals.ts +0 -316
- package/botrun-c/dev/mcp-token-calculator/package-lock.json +0 -599
- package/botrun-c/dev/mcp-token-calculator/package.json +0 -22
- package/botrun-c/dev/mcp-token-calculator/test-all-schemas.ts +0 -314
- package/botrun-c/dev/mcp-token-calculator/test-schema-correctness.ts +0 -221
- package/botrun-c/dev/mcp-token-calculator/verify-optimization.ts +0 -159
- package/botrun-c/fastlane/ANDROID-DEPLOYMENT-SETUP.md +0 -825
- package/botrun-c/fastlane/IOS-DEPLOYMENT-SETUP.md +0 -431
- package/botrun-c/fastlane/Pluginfile +0 -5
- package/botrun-c/fastlane/QUICK-START.md +0 -133
- package/botrun-c/fastlane/README.md +0 -424
- package/botrun-c/fastlane/RUBY-SETUP.md +0 -449
- package/botrun-c/fastlane/android/Appfile +0 -11
- package/botrun-c/fastlane/android/Fastfile +0 -240
- package/botrun-c/firebase.json +0 -46
- package/botrun-c/firestore-init-data.json +0 -40
- package/botrun-c/firestore.indexes.json +0 -55
- package/botrun-c/firestore.rules +0 -53
- package/botrun-c/fix-codex-permissions.sh +0 -56
- package/botrun-c/gcs-lifecycle-30day-retention.json +0 -12
- package/botrun-c/html-architecture/architecture/deployment.html +0 -664
- package/botrun-c/html-architecture/architecture/index.html +0 -309
- package/botrun-c/html-architecture/architecture/styles.css +0 -500
- package/botrun-c/html-architecture/architecture/system-components.html +0 -538
- package/botrun-c/html-architecture/architecture/user-flow.html +0 -370
- package/botrun-c/mobile-android/FIREBASE-AUTH-SETUP.md +0 -302
- package/botrun-c/mobile-android/WSL-ANDROID-SETUP.md +0 -252
- package/botrun-c/mobile-android/android/app/build.gradle +0 -75
- package/botrun-c/mobile-android/android/app/capacitor.build.gradle +0 -31
- package/botrun-c/mobile-android/android/app/proguard-rules.pro +0 -21
- package/botrun-c/mobile-android/android/build.gradle +0 -29
- package/botrun-c/mobile-android/android/capacitor.settings.gradle +0 -42
- package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.properties +0 -7
- package/botrun-c/mobile-android/android/gradle.properties +0 -22
- package/botrun-c/mobile-android/android/gradlew +0 -252
- package/botrun-c/mobile-android/android/gradlew.bat +0 -94
- package/botrun-c/mobile-android/android/settings.gradle +0 -5
- package/botrun-c/mobile-android/android/variables.gradle +0 -16
- package/botrun-c/mobile-android/capacitor.config.ts +0 -44
- package/botrun-c/mobile-android/fastlane/Appfile +0 -11
- package/botrun-c/mobile-android/fastlane/Fastfile +0 -202
- package/botrun-c/mobile-android/fastlane/README.md +0 -96
- package/botrun-c/mobile-android/google-services.json.template +0 -39
- package/botrun-c/mobile-android/package.json +0 -32
- package/botrun-c/mobile-android/resources/icon.png +0 -0
- package/botrun-c/mobile-android/tsconfig.json +0 -15
- package/botrun-c/mobile-ios/.ruby-version +0 -1
- package/botrun-c/mobile-ios/BUILD-LOG.md +0 -82
- package/botrun-c/mobile-ios/Gemfile +0 -4
- package/botrun-c/mobile-ios/Gemfile.lock +0 -299
- package/botrun-c/mobile-ios/GoogleService-Info.plist.template +0 -34
- package/botrun-c/mobile-ios/IOS-PERMISSIONS.md +0 -80
- package/botrun-c/mobile-ios/QUICK-START.md +0 -189
- package/botrun-c/mobile-ios/README.md +0 -231
- package/botrun-c/mobile-ios/capacitor.config.ts +0 -46
- package/botrun-c/mobile-ios/fastlane/Fastfile +0 -326
- package/botrun-c/mobile-ios/fastlane/README.md +0 -88
- package/botrun-c/mobile-ios/ios/App/App/App.entitlements +0 -10
- package/botrun-c/mobile-ios/ios/App/App/AppDelegate.swift +0 -49
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Contents.json +0 -6
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +0 -56
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
- package/botrun-c/mobile-ios/ios/App/App/Base.lproj/LaunchScreen.storyboard +0 -32
- package/botrun-c/mobile-ios/ios/App/App/Base.lproj/Main.storyboard +0 -19
- package/botrun-c/mobile-ios/ios/App/App/Info.plist +0 -72
- package/botrun-c/mobile-ios/ios/App/App.xcodeproj/project.pbxproj +0 -446
- package/botrun-c/mobile-ios/ios/App/App.xcodeproj/xcshareddata/xcschemes/App.xcscheme +0 -78
- package/botrun-c/mobile-ios/ios/App/App.xcworkspace/contents.xcworkspacedata +0 -10
- package/botrun-c/mobile-ios/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/botrun-c/mobile-ios/ios/App/Podfile +0 -52
- package/botrun-c/mobile-ios/ios/App/Podfile.lock +0 -205
- package/botrun-c/mobile-ios/ios/App/add_plist.rb +0 -30
- package/botrun-c/mobile-ios/ios/App/fix_plist_path.rb +0 -22
- package/botrun-c/mobile-ios/package.json +0 -29
- package/botrun-c/mobile-ios/resources/icon.png +0 -0
- package/botrun-c/mobile-ios/run-simulator.sh +0 -34
- package/botrun-c/mobile-ios/screenshot-after-clean-rebuild.png +0 -0
- package/botrun-c/mobile-ios/screenshot-final-version.png +0 -0
- package/botrun-c/mobile-ios/screenshot-simulator.png +0 -0
- package/botrun-c/mobile-ios/screenshot-version-1009.png +0 -0
- package/botrun-c/mobile-ios/screenshot-with-version.png +0 -0
- package/botrun-c/mobile-ios/screenshot-working.png +0 -0
- package/botrun-c/mobile-ios/setup-ios.sh +0 -106
- package/botrun-c/mobile-ios/tsconfig.json +0 -16
- package/botrun-c/org-policy-allow-all-users.yaml +0 -3
- package/botrun-c/package.json +0 -68
- package/botrun-c/pnpm-lock.yaml +0 -10198
- package/botrun-c/pnpm-workspace.yaml +0 -6
- package/botrun-c/prompts/BOTRUN-1.md +0 -13
- package/botrun-c/prompts/BOTRUN-2.md +0 -70
- package/botrun-c/prompts/BOTRUN-3.md +0 -139
- package/botrun-c/prototypes/firestore-gax-debug/package-lock.json +0 -1204
- package/botrun-c/prototypes/firestore-gax-debug/package.json +0 -12
- package/botrun-c/prototypes/firestore-gax-debug/pnpm-workspace.yaml +0 -2
- package/botrun-c/prototypes/firestore-gax-debug/test.js +0 -98
- package/botrun-c/prototypes/taiwan-haiku/README.md +0 -93
- package/botrun-c/prototypes/taiwan-haiku/index.ts +0 -139
- package/botrun-c/prototypes/taiwan-haiku/package.json +0 -23
- package/botrun-c/prototypes/taiwan-haiku/pnpm-lock.yaml +0 -730
- package/botrun-c/prototypes/taiwan-haiku/test-vertex-direct.ts +0 -83
- package/botrun-c/prototypes/taiwan-haiku/tsconfig.json +0 -18
- package/botrun-c/prototypes/web-search/FINDINGS-STAGE-1.md +0 -48
- package/botrun-c/prototypes/web-search/README.md +0 -46
- package/botrun-c/prototypes/web-search/VERIFICATION-REPORT.md +0 -310
- package/botrun-c/prototypes/web-search/package-lock.json +0 -595
- package/botrun-c/prototypes/web-search/package.json +0 -18
- package/botrun-c/prototypes/web-search/stage-1.1-basic-connection.js +0 -123
- package/botrun-c/prototypes/web-search/stage-1.2-with-websearch.js +0 -154
- package/botrun-c/prototypes/web-search/stage-1.3-search-query.js +0 -192
- package/botrun-c/prototypes/web-search/stage-2-agent-sdk-websearch.js +0 -265
- package/botrun-c/runtime-scripts/env-detect.sh +0 -64
- package/botrun-c/scripts/github-collaborator-manager.sh +0 -297
- package/botrun-c/scripts/github-collaborator-manager.ts +0 -325
- package/botrun-c/scripts/manage-collaborators.sh +0 -91
- package/botrun-c/scripts/setup-secrets.sh +0 -202
- package/botrun-c/scripts/stress-test-17-users.sh +0 -113
- package/botrun-c/scripts/stress-test-api.sh +0 -119
- package/botrun-c/scripts/stress-test-full-report.sh +0 -385
- package/botrun-c/specs/infra-vm/design.md +0 -0
- package/botrun-c/specs/share-skill/design.md +0 -1146
- package/botrun-c/specs/share-skill/tasks.md +0 -444
- package/botrun-c/stress-test-results/20260121-162630/config.json +0 -7
- package/botrun-c/stress-test-results/20260121-162630/user-1-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162630/user-1-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162630/user-1.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/config.json +0 -7
- package/botrun-c/stress-test-results/20260121-162646/user-1-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-1-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-1.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-10-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-10-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-10.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-11-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-11-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-11.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-12-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-12-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-12.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-13-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-13-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-13.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-14-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-14-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-14.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-15-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-15-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-15.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-16-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-16-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-16.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-17-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-17-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-17.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-2-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-2-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-2.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-3-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-3-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-3.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-4-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-4-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-4.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-5-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-5-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-5.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-6-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-6-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-6.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-7-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-7-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-7.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-8-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-8-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-8.json +0 -2
- package/botrun-c/stress-test-results/20260121-162646/user-9-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-9-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-162646/user-9.json +0 -2
- package/botrun-c/stress-test-results/20260121-163148/REPORT.html +0 -344
- package/botrun-c/stress-test-results/20260121-163148/REPORT.md +0 -93
- package/botrun-c/stress-test-results/20260121-163148/REPORT.pdf +0 -0
- package/botrun-c/stress-test-results/20260121-163148/config.json +0 -7
- package/botrun-c/stress-test-results/20260121-163148/summary.json +0 -26
- package/botrun-c/stress-test-results/20260121-163148/user-1-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-1-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-1.json +0 -206
- package/botrun-c/stress-test-results/20260121-163148/user-10-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-10-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-10.json +0 -110
- package/botrun-c/stress-test-results/20260121-163148/user-11-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-11-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-11.json +0 -104
- package/botrun-c/stress-test-results/20260121-163148/user-12-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-12-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-12.json +0 -98
- package/botrun-c/stress-test-results/20260121-163148/user-13-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-13-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-13.json +0 -68
- package/botrun-c/stress-test-results/20260121-163148/user-14-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-14-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-14.json +0 -116
- package/botrun-c/stress-test-results/20260121-163148/user-15-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-15-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-15.json +0 -131
- package/botrun-c/stress-test-results/20260121-163148/user-16-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-16-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-16.json +0 -110
- package/botrun-c/stress-test-results/20260121-163148/user-17-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-17-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-17.json +0 -116
- package/botrun-c/stress-test-results/20260121-163148/user-2-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-2-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-2.json +0 -98
- package/botrun-c/stress-test-results/20260121-163148/user-3-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-3-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-3.json +0 -62
- package/botrun-c/stress-test-results/20260121-163148/user-4-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-4-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-4.json +0 -113
- package/botrun-c/stress-test-results/20260121-163148/user-5-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-5-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-5.json +0 -83
- package/botrun-c/stress-test-results/20260121-163148/user-6-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-6-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-6.json +0 -125
- package/botrun-c/stress-test-results/20260121-163148/user-7-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-7-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-7.json +0 -62
- package/botrun-c/stress-test-results/20260121-163148/user-8-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-8-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-8.json +0 -41
- package/botrun-c/stress-test-results/20260121-163148/user-9-status.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-9-timing.txt +0 -1
- package/botrun-c/stress-test-results/20260121-163148/user-9.json +0 -53
- package/botrun-c/test-merge.md +0 -1
- package/botrun-c/version.txt +0 -1
- package/botrun-c/web/.version +0 -1
- package/botrun-c/web/ALLOW-PUBLIC-ACCESS.md +0 -57
- package/botrun-c/web/FINAL-SETUP-STEPS.md +0 -71
- package/botrun-c/web/FIREBASE-MANUAL-STEPS.md +0 -41
- package/botrun-c/web/QUICK-SETUP-HELPER.md +0 -79
- package/botrun-c/web/README.md +0 -162
- package/botrun-c/web/__tests__/image-extractor.test.ts +0 -147
- package/botrun-c/web/__tests__/useGitHub.test.ts +0 -245
- package/botrun-c/web/app/favicon.ico +0 -0
- package/botrun-c/web/app/globals.css +0 -215
- package/botrun-c/web/app/image-preview/page.tsx +0 -213
- package/botrun-c/web/app/layout.tsx +0 -46
- package/botrun-c/web/app/page.tsx +0 -45
- package/botrun-c/web/components/CapacitorProvider.tsx +0 -43
- package/botrun-c/web/components/ChatPage.tsx +0 -1736
- package/botrun-c/web/components/ConversationList.tsx +0 -237
- package/botrun-c/web/components/ConversationListItem.tsx +0 -121
- package/botrun-c/web/components/LoginPage.tsx +0 -212
- package/botrun-c/web/components/Providers.tsx +0 -12
- package/botrun-c/web/components/StatusBarProvider.tsx +0 -16
- package/botrun-c/web/components/attachment-preview.tsx +0 -193
- package/botrun-c/web/components/botrun-incubator/BotrunIncubator.tsx +0 -266
- package/botrun-c/web/components/botrun-incubator/index.ts +0 -1
- package/botrun-c/web/components/chat-input.tsx +0 -1251
- package/botrun-c/web/components/chat-message.tsx +0 -598
- package/botrun-c/web/components/drop-zone.tsx +0 -143
- package/botrun-c/web/components/gdrive/gdrive-add-dialog.tsx +0 -254
- package/botrun-c/web/components/gdrive/gdrive-drawer.tsx +0 -236
- package/botrun-c/web/components/gdrive/gdrive-selector.tsx +0 -226
- package/botrun-c/web/components/gdrive/index.ts +0 -7
- package/botrun-c/web/components/generated-image-card.tsx +0 -363
- package/botrun-c/web/components/github/GitHubConnect.tsx +0 -366
- package/botrun-c/web/components/github/index.ts +0 -2
- package/botrun-c/web/components/import-skill-dialog.tsx +0 -208
- package/botrun-c/web/components/scroll-to-bottom-button.tsx +0 -90
- package/botrun-c/web/components/share-skill-dialog.tsx +0 -175
- package/botrun-c/web/components/skills-editor.tsx +0 -443
- package/botrun-c/web/components/skills-manager-drawer.tsx +0 -586
- package/botrun-c/web/components/smart-button-group.tsx +0 -132
- package/botrun-c/web/config/smart-buttons.ts +0 -295
- package/botrun-c/web/config/welcome-messages.ts +0 -29
- package/botrun-c/web/contexts/AuthContext.tsx +0 -220
- package/botrun-c/web/hooks/use-toast.ts +0 -187
- package/botrun-c/web/hooks/useAppStoreUpdate.ts +0 -356
- package/botrun-c/web/hooks/useAppVersion.ts +0 -113
- package/botrun-c/web/hooks/useAttachments.ts +0 -269
- package/botrun-c/web/hooks/useAuthToken.ts +0 -59
- package/botrun-c/web/hooks/useAutoWelcome.ts +0 -89
- package/botrun-c/web/hooks/useCapacitorPlatform.ts +0 -113
- package/botrun-c/web/hooks/useCapawesomeLiveUpdate.ts +0 -149
- package/botrun-c/web/hooks/useClaudeModel.ts +0 -118
- package/botrun-c/web/hooks/useConversation.ts +0 -115
- package/botrun-c/web/hooks/useConversations.ts +0 -235
- package/botrun-c/web/hooks/useGdriveFolders.ts +0 -199
- package/botrun-c/web/hooks/useGdriveSync.ts +0 -107
- package/botrun-c/web/hooks/useGitHub.ts +0 -409
- package/botrun-c/web/hooks/useScrollToBottom.ts +0 -150
- package/botrun-c/web/hooks/useStatusBar.ts +0 -42
- package/botrun-c/web/hooks/useUserPlan.ts +0 -153
- package/botrun-c/web/lib/api-config.ts +0 -162
- package/botrun-c/web/lib/api-url.ts +0 -62
- package/botrun-c/web/lib/api.ts +0 -105
- package/botrun-c/web/lib/attachment-utils.ts +0 -168
- package/botrun-c/web/lib/build-version.ts +0 -11
- package/botrun-c/web/lib/clipboard-utils.ts +0 -199
- package/botrun-c/web/lib/constants.ts +0 -62
- package/botrun-c/web/lib/conversation-storage.ts +0 -324
- package/botrun-c/web/lib/firebase-capacitor.ts +0 -135
- package/botrun-c/web/lib/firebase.ts +0 -137
- package/botrun-c/web/lib/firestore-auth.ts +0 -61
- package/botrun-c/web/lib/firestore-auth.ts.migration-bak +0 -319
- package/botrun-c/web/lib/image-extractor.ts +0 -156
- package/botrun-c/web/lib/path-utils.ts +0 -48
- package/botrun-c/web/lib/rehype-del-to-mark.ts +0 -19
- package/botrun-c/web/lib/upload-service.ts +0 -326
- package/botrun-c/web/lib/utils.ts +0 -6
- package/botrun-c/web/next.config.js +0 -49
- package/botrun-c/web/package-lock.json +0 -6711
- package/botrun-c/web/package.json +0 -63
- package/botrun-c/web/postcss.config.js +0 -6
- package/botrun-c/web/public/apple_icon.png +0 -0
- package/botrun-c/web/public/google_icon.png +0 -0
- package/botrun-c/web/public/logo-48-small.png +0 -0
- package/botrun-c/web/public/logo-48.png +0 -0
- package/botrun-c/web/scripts/generate-version.js +0 -36
- package/botrun-c/web/scripts/update-build-version.js +0 -41
- package/botrun-c/web/tailwind.config.ts +0 -80
- package/botrun-c/web/test-welcome-message.mjs +0 -115
- package/botrun-c/web/tsconfig.json +0 -42
- package/botrun-c/web/types/agent.ts +0 -6
- package/botrun-c/web/types/attachment.ts +0 -39
- package/botrun-c/web/types/conversation.ts +0 -68
- package/botrun-c/web/types/flutter.d.ts +0 -6
- package/botrun-c/web/types/project.ts +0 -41
- package/botrun-c/web/types/skills.ts +0 -13
- 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
- package/lib/writing/index.mjs +0 -5
- /package/{lib/core → modules/_core}/adapters/base.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/claude.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/gemini-api.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/gemini-shared.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/gemini-vertex.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/local.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/nchc.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/openai-shared.mjs +0 -0
- /package/{lib/core → modules/_core}/adapters/openrouter.mjs +0 -0
- /package/{lib/core → modules/_core}/ai-cache.mjs +0 -0
- /package/{lib/core → modules/_core}/ai-router.mjs +0 -0
- /package/{lib/core → modules/_core}/cli-utils.mjs +0 -0
- /package/{lib/core → modules/_core}/dag.mjs +0 -0
- /package/{lib/core → modules/_core}/db.mjs +0 -0
- /package/{lib/core → modules/_core}/env.mjs +0 -0
- /package/{lib/flows → modules/_core}/hatch-portal.mjs +0 -0
- /package/{lib/core → modules/_core}/llm.mjs +0 -0
- /package/{lib/flows → modules/_core}/opencode-agent.mjs +0 -0
- /package/{lib/core → modules/_core}/paths.mjs +0 -0
- /package/{lib/core → modules/_core}/proxy.mjs +0 -0
- /package/{lib/flows → modules/_core}/review-doc.mjs +0 -0
- /package/{lib → modules/_core}/tools/fs-tools.mjs +0 -0
- /package/{lib → modules/_core}/tools/index.mjs +0 -0
- /package/{lib/core → modules/_core}/watermelon.mjs +0 -0
- /package/{lib/ocr/index.mjs → modules/ocr/ocr-lib.mjs} +0 -0
- /package/{lib → modules}/portal/hatch.mjs +0 -0
- /package/{lib/portal/index.mjs → modules/portal/portal-lib.mjs} +0 -0
- /package/{lib → modules}/search/crawler.mjs +0 -0
- /package/{lib/prompt → modules/skill}/prompts/zero-framework/coding.md +0 -0
- /package/{lib/prompt → modules/skill}/prompts/zero-framework/fullstack.md +0 -0
- /package/{lib/prompt → modules/skill}/prompts/zero-framework/search.md +0 -0
- /package/{lib/prompt → modules/skill}/prompts/zero-framework/segment.md +0 -0
- /package/{lib/prompt → modules/skill}/prompts/zero-framework/slice.md +0 -0
- /package/{lib → modules}/writing/generators/nstc-generators.mjs +0 -0
- /package/{lib → modules}/writing/generators/nstc-top5.mjs +0 -0
- /package/{lib → modules}/writing/layouts/nstc-layout.mjs +0 -0
- /package/{lib → modules}/writing/renderer.mjs +0 -0
package/botrun-c/Dockerfile.gcp
DELETED
|
@@ -1,365 +0,0 @@
|
|
|
1
|
-
# ================================
|
|
2
|
-
# Unified Dockerfile for GCP Cloud Run with pnpm Workspace (Optimized)
|
|
3
|
-
# Next.js Static Export + Hono API backend + Skills (v5.1201)
|
|
4
|
-
#
|
|
5
|
-
# 🎯 v5.1201 重大變更:MCP Servers 全面改用 Skills
|
|
6
|
-
# - 所有 MCP Servers 已轉換為 Skills(位於 .claude/skills/)
|
|
7
|
-
# - Skills 透過 Bash 執行 Node.js 腳本
|
|
8
|
-
# - 啟動速度大幅提升(無需啟動 MCP Server 進程)
|
|
9
|
-
#
|
|
10
|
-
# 🎯 pnpm Workspace 最佳實踐:
|
|
11
|
-
# ✅ 在同一個 stage 使用依賴(不跨 stage COPY)
|
|
12
|
-
# - frontend-builder, api-builder 都從 deps 繼承
|
|
13
|
-
# - 保留完整的 .pnpm store 和 symlinks
|
|
14
|
-
# ✅ 使用 pnpm deploy 部署 production
|
|
15
|
-
# - 智慧解析完整的 workspace 依賴圖
|
|
16
|
-
# - 自動去重,只複製需要的包(無重複)
|
|
17
|
-
# - --no-optional: 排除 sharp 圖片處理 (~60MB)
|
|
18
|
-
# - 體積比手動 COPY 小 60-70%
|
|
19
|
-
#
|
|
20
|
-
# 🚀 優化成果:
|
|
21
|
-
# - MCP Servers 已全面改用 Skills(v5.1201)
|
|
22
|
-
# - Skills symlink 優化:節省 ~71MB(避免重複複製到 /home/nodejs/.claude/skills)
|
|
23
|
-
# - Skip optional dependencies: 節省 60MB (sharp)
|
|
24
|
-
# - Multi-stage build + cache mount: 建置速度提升 5-10 倍
|
|
25
|
-
# - Layer caching optimization: 按變動頻率排序
|
|
26
|
-
#
|
|
27
|
-
# 📊 Expected Final Size: ~150MB(Skills symlink 優化後)
|
|
28
|
-
# ================================
|
|
29
|
-
|
|
30
|
-
# ============================================================================
|
|
31
|
-
# Stage 0: pnpm Setup (共用 stage)
|
|
32
|
-
# ============================================================================
|
|
33
|
-
FROM node:22-alpine AS base
|
|
34
|
-
ENV PNPM_HOME="/pnpm"
|
|
35
|
-
ENV PATH="$PNPM_HOME:$PATH"
|
|
36
|
-
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
|
|
37
|
-
|
|
38
|
-
# ============================================================================
|
|
39
|
-
# Stage 1: Install ALL Dependencies (保留完整的 pnpm 結構)
|
|
40
|
-
# 🚀 方案 3:Layer 優化策略
|
|
41
|
-
# - 依變動頻率排序:lockfile > workspace config > package.json
|
|
42
|
-
# - lockfile 改變時才重新安裝所有依賴
|
|
43
|
-
# - package.json 改變時可以復用 lockfile layer(快取命中率更高)
|
|
44
|
-
# ============================================================================
|
|
45
|
-
FROM base AS deps
|
|
46
|
-
WORKDIR /app
|
|
47
|
-
|
|
48
|
-
# 複製 .npmrc(包含 Capawesome Registry 認證)
|
|
49
|
-
COPY .npmrc ./
|
|
50
|
-
|
|
51
|
-
# 🎯 Layer 1: Lockfile(最少改變,最大快取命中率)
|
|
52
|
-
# pnpm-lock.yaml 只有在依賴版本變更時才改變
|
|
53
|
-
# 這一層快取命中率最高(~90%)
|
|
54
|
-
COPY pnpm-lock.yaml ./
|
|
55
|
-
|
|
56
|
-
# 🎯 Layer 2: Workspace 配置(偶爾改變)
|
|
57
|
-
# pnpm-workspace.yaml 和 root package.json 很少改變
|
|
58
|
-
COPY pnpm-workspace.yaml package.json ./
|
|
59
|
-
|
|
60
|
-
# 🎯 Layer 3: 所有子專案 package.json(經常改變)
|
|
61
|
-
# 按字母順序排列,便於維護
|
|
62
|
-
# API(經常改變)
|
|
63
|
-
COPY api/package.json ./api/
|
|
64
|
-
|
|
65
|
-
# MCP Servers(v5.1201 已全面改用 Skills,以下 COPY 保留供回退使用但已註解)
|
|
66
|
-
# COPY botrun-mcp-servers/audio-transcribe/package.json ./botrun-mcp-servers/audio-transcribe/
|
|
67
|
-
# COPY botrun-mcp-servers/botrun-bash/package.json ./botrun-mcp-servers/botrun-bash/ # 已移至 bak/
|
|
68
|
-
# COPY botrun-mcp-servers/botrun-image-generator/package.json ./botrun-mcp-servers/botrun-image-generator/
|
|
69
|
-
# COPY botrun-mcp-servers/botrun-web-search/package.json ./botrun-mcp-servers/botrun-web-search/
|
|
70
|
-
# COPY botrun-mcp-servers/multimodal-reader/package.json ./botrun-mcp-servers/multimodal-reader/
|
|
71
|
-
# COPY botrun-mcp-servers/pdf-split/package.json ./botrun-mcp-servers/pdf-split/ # 已移至 bak/
|
|
72
|
-
# COPY botrun-mcp-servers/pdf-to-text/package.json ./botrun-mcp-servers/pdf-to-text/ # 已移至 bak/
|
|
73
|
-
# COPY botrun-mcp-servers/secure-rg/package.json ./botrun-mcp-servers/secure-rg/
|
|
74
|
-
# COPY botrun-mcp-servers/secure-read/package.json ./botrun-mcp-servers/secure-read/
|
|
75
|
-
# COPY botrun-mcp-servers/tree-view/package.json ./botrun-mcp-servers/tree-view/
|
|
76
|
-
|
|
77
|
-
# Web(經常改變)
|
|
78
|
-
COPY web/package.json ./web/
|
|
79
|
-
|
|
80
|
-
# 🎯 Layer 4: 安裝所有依賴(包含完整的 .pnpm store)
|
|
81
|
-
# 使用 pnpm cache mount 加速(與遠端快取互補)
|
|
82
|
-
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
|
83
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
84
|
-
echo "📦 [pnpm install] Installing all dependencies..." && \
|
|
85
|
-
echo " Strategy: Frozen lockfile + layer optimization" && \
|
|
86
|
-
echo " Cache: Local mount + Remote registry (dual-layer)" && \
|
|
87
|
-
echo " pnpm.overrides: Forcing version unification" && \
|
|
88
|
-
echo " Fetch timeout: 300000ms (5 minutes)" && \
|
|
89
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
90
|
-
pnpm install --frozen-lockfile --fetch-timeout 300000 && \
|
|
91
|
-
echo "" && \
|
|
92
|
-
echo "📊 [Analysis] node_modules structure:" && \
|
|
93
|
-
du -sh node_modules .pnpm 2>/dev/null || true && \
|
|
94
|
-
echo "✅ Dependencies installed (optimized for cache reuse)"
|
|
95
|
-
|
|
96
|
-
# ============================================================================
|
|
97
|
-
# Stage 2: Build Next.js Frontend (在同一個 stage 內使用 deps)
|
|
98
|
-
# ============================================================================
|
|
99
|
-
FROM deps AS frontend-builder
|
|
100
|
-
|
|
101
|
-
# 🔢 Accept version build argument
|
|
102
|
-
ARG APP_VERSION=unknown
|
|
103
|
-
ARG NEXT_PUBLIC_DEV_MODE
|
|
104
|
-
ARG NEXT_PUBLIC_FIREBASE_API_KEY
|
|
105
|
-
ARG NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
|
|
106
|
-
ARG NEXT_PUBLIC_FIREBASE_PROJECT_ID
|
|
107
|
-
ARG NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET
|
|
108
|
-
ARG NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
|
|
109
|
-
ARG NEXT_PUBLIC_FIREBASE_APP_ID
|
|
110
|
-
ARG NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID
|
|
111
|
-
|
|
112
|
-
# Set environment variables for build
|
|
113
|
-
ENV APP_VERSION=$APP_VERSION
|
|
114
|
-
ENV NEXT_PUBLIC_DEV_MODE=$NEXT_PUBLIC_DEV_MODE
|
|
115
|
-
ENV NEXT_PUBLIC_FIREBASE_API_KEY=$NEXT_PUBLIC_FIREBASE_API_KEY
|
|
116
|
-
ENV NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=$NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
|
|
117
|
-
ENV NEXT_PUBLIC_FIREBASE_PROJECT_ID=$NEXT_PUBLIC_FIREBASE_PROJECT_ID
|
|
118
|
-
ENV NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=$NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET
|
|
119
|
-
ENV NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=$NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
|
|
120
|
-
ENV NEXT_PUBLIC_FIREBASE_APP_ID=$NEXT_PUBLIC_FIREBASE_APP_ID
|
|
121
|
-
ENV NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=$NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID
|
|
122
|
-
|
|
123
|
-
# 複製源碼
|
|
124
|
-
COPY web ./web
|
|
125
|
-
|
|
126
|
-
# Build Next.js
|
|
127
|
-
WORKDIR /app/web
|
|
128
|
-
RUN --mount=type=cache,target=/app/web/.next/cache \
|
|
129
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
130
|
-
echo "🔍 [Frontend Build]" && \
|
|
131
|
-
echo " APP_VERSION: ${APP_VERSION}" && \
|
|
132
|
-
echo " Using pnpm workspace (symlinks preserved)" && \
|
|
133
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
134
|
-
NEXT_TELEMETRY_DISABLED=1 pnpm run build && \
|
|
135
|
-
echo "✅ Frontend build completed"
|
|
136
|
-
|
|
137
|
-
# ============================================================================
|
|
138
|
-
# Stage 3: Build Skills Dependencies (v5.1201 新增)
|
|
139
|
-
# ============================================================================
|
|
140
|
-
# Skills 透過 Bash 執行 Node.js 腳本,需要安裝各自的 npm 依賴
|
|
141
|
-
# 有依賴的 Skills:
|
|
142
|
-
# - 圖片生成技能: @google-cloud/storage, @google/genai
|
|
143
|
-
# - 多模態閱讀技能: @anthropic-ai/vertex-sdk, glob
|
|
144
|
-
# - 安全讀取技能: glob
|
|
145
|
-
# - 網路搜尋技能: @anthropic-ai/vertex-sdk
|
|
146
|
-
FROM base AS skills-deps
|
|
147
|
-
WORKDIR /app
|
|
148
|
-
|
|
149
|
-
# 複製 Skills 目錄
|
|
150
|
-
COPY .claude/skills ./.claude/skills
|
|
151
|
-
|
|
152
|
-
# 安裝各 Skill 的依賴(只安裝有 package.json 且有 dependencies 的)
|
|
153
|
-
RUN echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
154
|
-
echo "📦 [Skills] Installing Skills dependencies..." && \
|
|
155
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
156
|
-
for skill_dir in .claude/skills/*/scripts; do \
|
|
157
|
-
if [ -f "$skill_dir/package.json" ]; then \
|
|
158
|
-
echo "📦 Installing: $skill_dir"; \
|
|
159
|
-
cd "/app/$skill_dir" && npm install --omit=dev 2>/dev/null || true; \
|
|
160
|
-
cd /app; \
|
|
161
|
-
fi; \
|
|
162
|
-
done && \
|
|
163
|
-
echo "" && \
|
|
164
|
-
echo "📊 [Verification] Skills with node_modules:" && \
|
|
165
|
-
find .claude/skills -name "node_modules" -type d 2>/dev/null && \
|
|
166
|
-
echo "" && \
|
|
167
|
-
echo "✅ Skills dependencies installed"
|
|
168
|
-
|
|
169
|
-
# ============================================================================
|
|
170
|
-
# Stage 4: Build API (在同一個 stage 內使用 deps)
|
|
171
|
-
# ============================================================================
|
|
172
|
-
FROM deps AS api-builder
|
|
173
|
-
|
|
174
|
-
# 複製 API 源碼
|
|
175
|
-
COPY api ./api
|
|
176
|
-
COPY .claude ./.claude
|
|
177
|
-
|
|
178
|
-
# 🔧 修復 node_modules symlinks(COPY 會覆蓋 deps 中建立的 symlinks)
|
|
179
|
-
RUN pnpm install --offline --frozen-lockfile
|
|
180
|
-
|
|
181
|
-
# Build API (從根目錄執行,使用 pnpm workspace)
|
|
182
|
-
RUN echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
183
|
-
echo "📦 [API] Building API server..." && \
|
|
184
|
-
echo " Strategy: pnpm workspace + shared node_modules" && \
|
|
185
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
186
|
-
pnpm --filter botrun-c-api run build && \
|
|
187
|
-
echo "📊 [Verification] Build result:" && \
|
|
188
|
-
ls -lh api/dist/ && \
|
|
189
|
-
echo "✅ API compiled successfully"
|
|
190
|
-
|
|
191
|
-
# ============================================================================
|
|
192
|
-
# Stage 5: Prepare Production Dependencies - 最小化策略
|
|
193
|
-
# ============================================================================
|
|
194
|
-
# 🎯 最小化策略(取代 pnpm deploy):
|
|
195
|
-
# - 使用 workspace 結構但只安裝 API 的 production dependencies
|
|
196
|
-
# - 避免安裝 Next.js, React, Capacitor 等前端/Mobile 依賴
|
|
197
|
-
# - 目標:< 120MB(相比 pnpm deploy 的 988MB)
|
|
198
|
-
|
|
199
|
-
# ============================================================================
|
|
200
|
-
# Stage 5a: Prepare Production Dependencies - API only (使用 pnpm deploy)
|
|
201
|
-
# ============================================================================
|
|
202
|
-
FROM base AS prod-deps
|
|
203
|
-
WORKDIR /app
|
|
204
|
-
|
|
205
|
-
# 複製 .npmrc(包含 Capawesome Registry 認證)
|
|
206
|
-
COPY .npmrc ./
|
|
207
|
-
|
|
208
|
-
# 🔍 複製完整的 workspace 結構(pnpm deploy 需要)
|
|
209
|
-
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
|
|
210
|
-
COPY api/package.json ./api/
|
|
211
|
-
|
|
212
|
-
# 🚀 使用 pnpm deploy:智慧複製 API 的 production dependencies
|
|
213
|
-
# 優勢:
|
|
214
|
-
# 1. 正確解析所有依賴(不會遺漏 hono 等套件)
|
|
215
|
-
# 2. 自動去重(感謝 pnpm.overrides)
|
|
216
|
-
# 3. 只複製 API 需要的依賴(排除 web、MCP Servers)
|
|
217
|
-
# 4. --prod: 跳過 devDependencies
|
|
218
|
-
RUN --mount=type=cache,id=pnpm-prod,target=/pnpm/store \
|
|
219
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
220
|
-
echo "📦 [pnpm deploy] Deploying API production dependencies..." && \
|
|
221
|
-
echo " Filter: botrun-c-api" && \
|
|
222
|
-
echo " Mode: --prod (no devDependencies)" && \
|
|
223
|
-
echo " Target: /tmp/api-deploy" && \
|
|
224
|
-
echo " Fetch timeout: 300000ms (5 minutes)" && \
|
|
225
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
226
|
-
pnpm --filter botrun-c-api deploy --prod --config.fetch-timeout=300000 /tmp/api-deploy && \
|
|
227
|
-
echo "" && \
|
|
228
|
-
echo "📊 [Size] Production dependencies:" && \
|
|
229
|
-
du -sh /tmp/api-deploy/node_modules && \
|
|
230
|
-
echo "" && \
|
|
231
|
-
echo "🔍 [Verification] Checking key packages:" && \
|
|
232
|
-
echo -n " hono: " && \
|
|
233
|
-
if [ -d "/tmp/api-deploy/node_modules/hono" ]; then echo "✅ Installed"; else echo "❌ NOT FOUND"; fi && \
|
|
234
|
-
echo -n " @hono/node-server: " && \
|
|
235
|
-
if [ -d "/tmp/api-deploy/node_modules/@hono" ]; then echo "✅ Installed"; else echo "❌ NOT FOUND"; fi && \
|
|
236
|
-
echo "" && \
|
|
237
|
-
echo "✅ API production dependencies deployed"
|
|
238
|
-
|
|
239
|
-
# ============================================================================
|
|
240
|
-
# Stage 5b: MCP Servers 專屬依賴 - DISABLED (v5.1201 已全面改用 Skills)
|
|
241
|
-
# ============================================================================
|
|
242
|
-
# MCP Servers 已全面轉換為 Skills(v5.1201)
|
|
243
|
-
# Skills 位於 .claude/skills/ 目錄,透過 Bash 執行 Node.js 腳本
|
|
244
|
-
# 以下 stage 保留供參考,但已停用
|
|
245
|
-
#
|
|
246
|
-
# FROM base AS mcp-deps
|
|
247
|
-
# WORKDIR /app
|
|
248
|
-
# COPY .npmrc ./
|
|
249
|
-
# COPY pnpm-lock.yaml ./
|
|
250
|
-
# COPY botrun-mcp-servers/*/package.json ./botrun-mcp-servers/
|
|
251
|
-
# RUN printf 'packages:\n - "botrun-mcp-servers/*"\n' > pnpm-workspace.yaml
|
|
252
|
-
# RUN pnpm install --prod
|
|
253
|
-
|
|
254
|
-
# ============================================================================
|
|
255
|
-
# Stage 6: Final Runtime Image
|
|
256
|
-
# ============================================================================
|
|
257
|
-
FROM node:22-alpine AS runner
|
|
258
|
-
WORKDIR /app
|
|
259
|
-
|
|
260
|
-
# 安裝系統工具
|
|
261
|
-
RUN apk add --no-cache \
|
|
262
|
-
dumb-init \
|
|
263
|
-
bash \
|
|
264
|
-
qpdf \
|
|
265
|
-
ghostscript \
|
|
266
|
-
poppler-utils \
|
|
267
|
-
ripgrep \
|
|
268
|
-
ffmpeg \
|
|
269
|
-
unzip \
|
|
270
|
-
git \
|
|
271
|
-
python3 \
|
|
272
|
-
py3-pip
|
|
273
|
-
|
|
274
|
-
# 安裝 uv(Python 套件管理器,用於 Skills 執行 Python 腳本)
|
|
275
|
-
RUN pip3 install --break-system-packages uv && \
|
|
276
|
-
uv --version && \
|
|
277
|
-
echo "✅ uv installed successfully"
|
|
278
|
-
|
|
279
|
-
# Create non-root user
|
|
280
|
-
RUN addgroup -g 1001 -S nodejs && \
|
|
281
|
-
adduser -S nodejs -u 1001 && \
|
|
282
|
-
mkdir -p /home/nodejs/.claude && \
|
|
283
|
-
chown -R nodejs:nodejs /home/nodejs/.claude
|
|
284
|
-
|
|
285
|
-
# ═══════════════════════════════════════════════════════════
|
|
286
|
-
# 📦 Layer Caching Optimization (按變動頻率排序)
|
|
287
|
-
# ═══════════════════════════════════════════════════════════
|
|
288
|
-
# 策略:變動頻率越低的越早複製,最大化 Docker layer cache 利用率
|
|
289
|
-
#
|
|
290
|
-
# pnpm deploy 優勢:
|
|
291
|
-
# ✅ 智慧去重:只複製實際需要的包(無重複)
|
|
292
|
-
# ✅ 正確 symlinks:保留 pnpm 的依賴結構
|
|
293
|
-
# ✅ 體積最小:比手動 COPY node_modules 小 30-40%
|
|
294
|
-
# ═══════════════════════════════════════════════════════════
|
|
295
|
-
|
|
296
|
-
# Layer 1: API Production node_modules(只需要 API 的依賴,pnpm deploy)
|
|
297
|
-
# 🎯 從 pnpm deploy 結果複製(正確包含所有依賴,如 hono)
|
|
298
|
-
# 🔥 關鍵優化:只複製 API 的 node_modules(< 120MB)
|
|
299
|
-
# 不會有 Next.js, React, Capacitor 等前端依賴(省略 868MB)
|
|
300
|
-
COPY --from=prod-deps --chown=nodejs:nodejs /tmp/api-deploy/node_modules ./node_modules
|
|
301
|
-
COPY --from=prod-deps --chown=nodejs:nodejs /tmp/api-deploy/package.json ./package.json
|
|
302
|
-
|
|
303
|
-
# Layer 2: Static configuration
|
|
304
|
-
COPY --chown=nodejs:nodejs keys ./keys
|
|
305
|
-
|
|
306
|
-
# Layer 2b: Skills(包含已安裝的 npm 依賴)
|
|
307
|
-
# 從 skills-deps stage 複製(已執行 npm install)
|
|
308
|
-
# 🎯 v5.1201 優化:使用 symlink 避免重複複製(節省 ~71MB)
|
|
309
|
-
# - /app/.claude/skills - 實際目錄(Skills Route + SKILLS_DIR 環境變數)
|
|
310
|
-
# - /home/nodejs/.claude/skills - symlink → /app/.claude/skills
|
|
311
|
-
# (Claude Agent SDK settingSources: ['user'] 需要此路徑)
|
|
312
|
-
COPY --from=skills-deps --chown=nodejs:nodejs /app/.claude/skills ./.claude/skills
|
|
313
|
-
RUN ln -s /app/.claude/skills /home/nodejs/.claude/skills
|
|
314
|
-
|
|
315
|
-
# Layer 3: MCP Servers - DISABLED (v5.1201 已全面改用 Skills)
|
|
316
|
-
# MCP Servers 已全面轉換為 Skills(v5.1201)
|
|
317
|
-
# Skills 位於 .claude/skills/ 目錄,透過 Bash 執行 Node.js 腳本
|
|
318
|
-
# 以下 COPY 保留供參考,但已停用
|
|
319
|
-
#
|
|
320
|
-
# COPY --from=mcp-deps --chown=nodejs:nodejs /app/node_modules/.pnpm ./node_modules/.pnpm
|
|
321
|
-
# COPY --from=mcp-builder --chown=nodejs:nodejs /app/botrun-mcp-servers/secure-rg/dist ./botrun-mcp-servers/secure-rg/dist
|
|
322
|
-
# COPY --from=mcp-builder --chown=nodejs:nodejs /app/botrun-mcp-servers/secure-read/dist ./botrun-mcp-servers/secure-read/dist
|
|
323
|
-
# COPY --from=mcp-builder --chown=nodejs:nodejs /app/botrun-mcp-servers/tree-view/dist ./botrun-mcp-servers/tree-view/dist
|
|
324
|
-
# COPY --from=mcp-builder --chown=nodejs:nodejs /app/botrun-mcp-servers/audio-transcribe/dist ./botrun-mcp-servers/audio-transcribe/dist
|
|
325
|
-
# COPY --from=mcp-builder --chown=nodejs:nodejs /app/botrun-mcp-servers/multimodal-reader/dist ./botrun-mcp-servers/multimodal-reader/dist
|
|
326
|
-
# COPY --from=mcp-builder --chown=nodejs:nodejs /app/botrun-mcp-servers/botrun-web-search/dist ./botrun-mcp-servers/botrun-web-search/dist
|
|
327
|
-
# COPY --from=mcp-builder --chown=nodejs:nodejs /app/botrun-mcp-servers/botrun-image-generator/dist ./botrun-mcp-servers/botrun-image-generator/dist
|
|
328
|
-
|
|
329
|
-
# Layer 4: Runtime scripts(變動頻率:低)
|
|
330
|
-
COPY --chown=nodejs:nodejs runtime-scripts ./runtime-scripts
|
|
331
|
-
|
|
332
|
-
# Layer 5: Frontend build(變動頻率:高)
|
|
333
|
-
COPY --from=frontend-builder --chown=nodejs:nodejs /app/web/out ./web/public
|
|
334
|
-
|
|
335
|
-
# Layer 6: API compiled code(變動頻率:高)
|
|
336
|
-
COPY --from=api-builder --chown=nodejs:nodejs /app/api/dist ./dist
|
|
337
|
-
COPY --chown=nodejs:nodejs api/src/init-data.sh ./dist/init-data.sh
|
|
338
|
-
|
|
339
|
-
# Layer 7: Version file(變動頻率:每次部署都變)
|
|
340
|
-
# 🎯 優化:放在最後,避免視覺上看起來會影響其他 layers
|
|
341
|
-
# 實際上不影響 COPY --from= 的 layers,但邏輯更清晰
|
|
342
|
-
COPY --chown=nodejs:nodejs version.txt ./version.txt
|
|
343
|
-
|
|
344
|
-
# Make init-data.sh executable
|
|
345
|
-
USER root
|
|
346
|
-
RUN chmod +x /app/dist/init-data.sh
|
|
347
|
-
USER nodejs
|
|
348
|
-
|
|
349
|
-
# Version
|
|
350
|
-
ARG APP_VERSION=unknown
|
|
351
|
-
ENV APP_VERSION=$APP_VERSION
|
|
352
|
-
|
|
353
|
-
# Environment
|
|
354
|
-
EXPOSE 8080
|
|
355
|
-
ENV NODE_ENV=production
|
|
356
|
-
ENV PORT=8080
|
|
357
|
-
ENV NEXT_TELEMETRY_DISABLED=1
|
|
358
|
-
# 🔧 Skills 環境變數(新方案 A 簡化版)
|
|
359
|
-
ENV OFFICIAL_SKILLS_DIR=/app/.claude/skills
|
|
360
|
-
ENV DATA_ROOT=/mnt/data
|
|
361
|
-
|
|
362
|
-
# Use dumb-init
|
|
363
|
-
ENTRYPOINT ["dumb-init", "--"]
|
|
364
|
-
|
|
365
|
-
CMD ["sh", "-c", "/app/dist/init-data.sh && echo '🚀 [Startup] Starting production server...' && echo '📦 [Startup] Node version:' $(node --version) && echo '⏱️ [Startup] Timestamp:' $(date -u +%Y-%m-%dT%H:%M:%SZ) && echo '🔧 [Startup] Working directory:' $(pwd) && echo '🎯 [Startup] Executing: node dist/index.js' && node dist/index.js"]
|
package/botrun-c/Dockerfile.slim
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
# ================================
|
|
2
|
-
# Slim Dockerfile - 移除所有 MCP Server 依賴
|
|
3
|
-
# Next.js Static Export + Hono API backend ONLY
|
|
4
|
-
#
|
|
5
|
-
# 🎯 目的:比較 image 大小差異
|
|
6
|
-
# - 完全移除 8 個 MCP Servers
|
|
7
|
-
# - 只保留 API 和 Frontend
|
|
8
|
-
# - 不安裝任何 MCP 依賴(@modelcontextprotocol、@anthropic-ai/sdk 等)
|
|
9
|
-
#
|
|
10
|
-
# 📊 預期效果:
|
|
11
|
-
# - Image size 大幅縮小(預期 < 150MB)
|
|
12
|
-
# - 只保留核心 API 功能
|
|
13
|
-
# - 可用於分析 MCP dependencies 的實際體積
|
|
14
|
-
# ================================
|
|
15
|
-
|
|
16
|
-
# ============================================================================
|
|
17
|
-
# Stage 0: pnpm Setup (共用 stage)
|
|
18
|
-
# ============================================================================
|
|
19
|
-
FROM node:22-alpine AS base
|
|
20
|
-
ENV PNPM_HOME="/pnpm"
|
|
21
|
-
ENV PATH="$PNPM_HOME:$PATH"
|
|
22
|
-
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
|
|
23
|
-
|
|
24
|
-
# ============================================================================
|
|
25
|
-
# Stage 1: Install Dependencies (排除 MCP Servers)
|
|
26
|
-
# ============================================================================
|
|
27
|
-
FROM base AS deps
|
|
28
|
-
WORKDIR /app
|
|
29
|
-
|
|
30
|
-
# 複製 .npmrc(包含 Capawesome Registry 認證)
|
|
31
|
-
COPY .npmrc ./
|
|
32
|
-
|
|
33
|
-
# 🔥 只複製 web 和 api 的 package.json(排除 MCP Servers)
|
|
34
|
-
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
|
|
35
|
-
COPY web/package.json ./web/
|
|
36
|
-
COPY api/package.json ./api/
|
|
37
|
-
|
|
38
|
-
# 建立精簡的 pnpm-workspace.yaml(只包含 web 和 api)
|
|
39
|
-
RUN printf 'packages:\n - "web"\n - "api"\n' > pnpm-workspace.yaml
|
|
40
|
-
|
|
41
|
-
# 安裝依賴(不包含 MCP Servers)
|
|
42
|
-
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
|
43
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
44
|
-
echo "📦 [Slim Build] Installing dependencies (web + api ONLY)..." && \
|
|
45
|
-
echo " Strategy: Exclude all MCP Servers" && \
|
|
46
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
47
|
-
pnpm install --frozen-lockfile && \
|
|
48
|
-
echo "" && \
|
|
49
|
-
echo "🔄 [pnpm dedupe] Removing duplicate packages..." && \
|
|
50
|
-
pnpm dedupe && \
|
|
51
|
-
echo "" && \
|
|
52
|
-
echo "📊 [Analysis] node_modules structure:" && \
|
|
53
|
-
du -sh node_modules .pnpm 2>/dev/null || true && \
|
|
54
|
-
echo "✅ Dependencies installed (slim mode)"
|
|
55
|
-
|
|
56
|
-
# ============================================================================
|
|
57
|
-
# Stage 2: Build Next.js Frontend
|
|
58
|
-
# ============================================================================
|
|
59
|
-
FROM deps AS frontend-builder
|
|
60
|
-
|
|
61
|
-
# 🔢 Accept version build argument
|
|
62
|
-
ARG APP_VERSION=unknown
|
|
63
|
-
ARG NEXT_PUBLIC_DEV_MODE
|
|
64
|
-
ARG NEXT_PUBLIC_FIREBASE_API_KEY
|
|
65
|
-
ARG NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
|
|
66
|
-
ARG NEXT_PUBLIC_FIREBASE_PROJECT_ID
|
|
67
|
-
ARG NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET
|
|
68
|
-
ARG NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
|
|
69
|
-
ARG NEXT_PUBLIC_FIREBASE_APP_ID
|
|
70
|
-
ARG NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID
|
|
71
|
-
|
|
72
|
-
# Set environment variables for build
|
|
73
|
-
ENV APP_VERSION=$APP_VERSION
|
|
74
|
-
ENV NEXT_PUBLIC_DEV_MODE=$NEXT_PUBLIC_DEV_MODE
|
|
75
|
-
ENV NEXT_PUBLIC_FIREBASE_API_KEY=$NEXT_PUBLIC_FIREBASE_API_KEY
|
|
76
|
-
ENV NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=$NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
|
|
77
|
-
ENV NEXT_PUBLIC_FIREBASE_PROJECT_ID=$NEXT_PUBLIC_FIREBASE_PROJECT_ID
|
|
78
|
-
ENV NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=$NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET
|
|
79
|
-
ENV NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=$NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
|
|
80
|
-
ENV NEXT_PUBLIC_FIREBASE_APP_ID=$NEXT_PUBLIC_FIREBASE_APP_ID
|
|
81
|
-
ENV NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=$NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID
|
|
82
|
-
|
|
83
|
-
# 複製源碼
|
|
84
|
-
COPY web ./web
|
|
85
|
-
|
|
86
|
-
# Build Next.js
|
|
87
|
-
WORKDIR /app/web
|
|
88
|
-
RUN --mount=type=cache,target=/app/web/.next/cache \
|
|
89
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
90
|
-
echo "🔍 [Frontend Build]" && \
|
|
91
|
-
echo " APP_VERSION: ${APP_VERSION}" && \
|
|
92
|
-
echo " Mode: Slim (no MCP Servers)" && \
|
|
93
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
94
|
-
NEXT_TELEMETRY_DISABLED=1 pnpm run build && \
|
|
95
|
-
echo "✅ Frontend build completed"
|
|
96
|
-
|
|
97
|
-
# ============================================================================
|
|
98
|
-
# Stage 3: Build API
|
|
99
|
-
# ============================================================================
|
|
100
|
-
FROM deps AS api-builder
|
|
101
|
-
|
|
102
|
-
# 複製 API 源碼
|
|
103
|
-
COPY api ./api
|
|
104
|
-
COPY .claude ./.claude
|
|
105
|
-
|
|
106
|
-
# Build API
|
|
107
|
-
WORKDIR /app/api
|
|
108
|
-
RUN pnpm run build && \
|
|
109
|
-
ls -lh dist/
|
|
110
|
-
|
|
111
|
-
# ============================================================================
|
|
112
|
-
# Stage 4: Prepare Production Dependencies - API only
|
|
113
|
-
# ============================================================================
|
|
114
|
-
FROM base AS prod-deps
|
|
115
|
-
WORKDIR /app
|
|
116
|
-
|
|
117
|
-
# 複製 .npmrc
|
|
118
|
-
COPY .npmrc ./
|
|
119
|
-
|
|
120
|
-
# 🔍 只複製 API workspace 結構
|
|
121
|
-
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
|
|
122
|
-
COPY api/package.json ./api/
|
|
123
|
-
|
|
124
|
-
# 🚀 使用 pnpm deploy:只複製 API 的 production dependencies
|
|
125
|
-
RUN --mount=type=cache,id=pnpm-prod,target=/pnpm/store \
|
|
126
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
127
|
-
echo "📦 [Slim Build] Deploying API production dependencies..." && \
|
|
128
|
-
echo " Filter: botrun-c-api" && \
|
|
129
|
-
echo " Mode: --prod (no devDependencies, no MCP Servers)" && \
|
|
130
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" && \
|
|
131
|
-
pnpm --filter botrun-c-api --prod deploy /tmp/api-deploy && \
|
|
132
|
-
echo "" && \
|
|
133
|
-
echo "📊 [Size] Production dependencies:" && \
|
|
134
|
-
du -sh /tmp/api-deploy/node_modules && \
|
|
135
|
-
echo "" && \
|
|
136
|
-
echo "✅ API production dependencies deployed (slim mode)"
|
|
137
|
-
|
|
138
|
-
# ============================================================================
|
|
139
|
-
# Stage 5: Final Runtime Image
|
|
140
|
-
# ============================================================================
|
|
141
|
-
FROM node:22-alpine AS runner
|
|
142
|
-
WORKDIR /app
|
|
143
|
-
|
|
144
|
-
# 🔥 Slim 版本:只安裝最基本的系統工具(不安裝 MCP 相關工具)
|
|
145
|
-
RUN apk add --no-cache \
|
|
146
|
-
dumb-init \
|
|
147
|
-
bash
|
|
148
|
-
|
|
149
|
-
# Create non-root user
|
|
150
|
-
RUN addgroup -g 1001 -S nodejs && \
|
|
151
|
-
adduser -S nodejs -u 1001 && \
|
|
152
|
-
mkdir -p /home/nodejs/.claude && \
|
|
153
|
-
chown -R nodejs:nodejs /home/nodejs/.claude
|
|
154
|
-
|
|
155
|
-
# Layer 1: API Production node_modules(pnpm deploy)
|
|
156
|
-
COPY --from=prod-deps --chown=nodejs:nodejs /tmp/api-deploy/node_modules ./node_modules
|
|
157
|
-
COPY --from=prod-deps --chown=nodejs:nodejs /tmp/api-deploy/package.json ./package.json
|
|
158
|
-
|
|
159
|
-
# Layer 2: Static configuration
|
|
160
|
-
COPY --chown=nodejs:nodejs keys ./keys
|
|
161
|
-
COPY --chown=nodejs:nodejs .claude/skills ./.claude/skills
|
|
162
|
-
COPY --chown=nodejs:nodejs .claude/skills /home/nodejs/.claude/skills
|
|
163
|
-
|
|
164
|
-
# 🔥 Layer 3: 移除所有 MCP Servers(slim 版本不包含)
|
|
165
|
-
|
|
166
|
-
# Layer 4: Runtime scripts
|
|
167
|
-
COPY --chown=nodejs:nodejs runtime-scripts ./runtime-scripts
|
|
168
|
-
COPY --chown=nodejs:nodejs version.txt ./version.txt
|
|
169
|
-
|
|
170
|
-
# Layer 5: Frontend build
|
|
171
|
-
COPY --from=frontend-builder --chown=nodejs:nodejs /app/web/out ./web/public
|
|
172
|
-
|
|
173
|
-
# Layer 6: API compiled code
|
|
174
|
-
COPY --from=api-builder --chown=nodejs:nodejs /app/api/dist ./dist
|
|
175
|
-
COPY --chown=nodejs:nodejs api/src/init-data.sh ./dist/init-data.sh
|
|
176
|
-
|
|
177
|
-
# Make init-data.sh executable
|
|
178
|
-
USER root
|
|
179
|
-
RUN chmod +x /app/dist/init-data.sh
|
|
180
|
-
USER nodejs
|
|
181
|
-
|
|
182
|
-
# Version
|
|
183
|
-
ARG APP_VERSION=unknown
|
|
184
|
-
ENV APP_VERSION=$APP_VERSION
|
|
185
|
-
|
|
186
|
-
# Environment
|
|
187
|
-
EXPOSE 8080
|
|
188
|
-
ENV NODE_ENV=production
|
|
189
|
-
ENV PORT=8080
|
|
190
|
-
ENV NEXT_TELEMETRY_DISABLED=1
|
|
191
|
-
|
|
192
|
-
# Use dumb-init
|
|
193
|
-
ENTRYPOINT ["dumb-init", "--"]
|
|
194
|
-
|
|
195
|
-
CMD ["sh", "-c", "/app/dist/init-data.sh && echo '🚀 [Startup] Starting production server (SLIM MODE - NO MCP SERVERS)...' && echo '📦 [Startup] Node version:' $(node --version) && echo '⏱️ [Startup] Timestamp:' $(date -u +%Y-%m-%dT%H:%M:%SZ) && node dist/index.js"]
|
package/botrun-c/Gemfile
DELETED