botrun-horse 2.29.2 โ 2.30.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/botrun-c/.claude/skills/DOCX/351/226/261/350/256/200/346/212/200/350/203/275/SKILL.md +103 -0
- package/botrun-c/.claude/skills/DOCX/351/226/261/350/256/200/346/212/200/350/203/275/scripts/docx-to-markdown.mjs +206 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/SKILL.md +1093 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branch.mjs +73 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-branches.mjs +77 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-checkout.mjs +72 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-clone.mjs +72 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-commit.mjs +75 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-branch.mjs +75 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-delete-file.mjs +72 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-diff.mjs +80 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list-tree.mjs +336 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-list.mjs +199 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-merge.mjs +86 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-move.mjs +75 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-create.mjs +81 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-list.mjs +74 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-merge.mjs +83 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-pr-view.mjs +71 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-push.mjs +71 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-read.mjs +277 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-search.mjs +370 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-stash.mjs +116 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-sync.mjs +71 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/github-write.mjs +74 -0
- package/botrun-c/.claude/skills/GitHub/346/212/200/350/203/275/scripts/lib/path-validator.mjs +167 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/SKILL.md +605 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-create.mjs +127 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-delete.mjs +77 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-diff.mjs +87 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-history.mjs +99 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-list.mjs +174 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-read.mjs +214 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-restore.mjs +75 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-search.mjs +270 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-sync-back.mjs +155 -0
- package/botrun-c/.claude/skills/GoogleDrive/346/212/200/350/203/275/scripts/gdrive-update.mjs +100 -0
- package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/SKILL.md +414 -0
- package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/create-project.mjs +91 -0
- package/botrun-c/.claude/skills/HTML/347/224/237/346/210/220/346/212/200/350/203/275/scripts/finalize-project.mjs +162 -0
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/SKILL.md +206 -0
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/package.json +19 -0
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-analyze.mjs +309 -0
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-compress.mjs +315 -0
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-split.mjs +275 -0
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/pdf-to-text.mjs +336 -0
- package/botrun-c/.claude/skills/PDF/346/212/200/350/203/275/scripts/test-pdf-scripts.mjs +491 -0
- package/botrun-c/.claude/skills/docx-to-markdown/SKILL.md +76 -0
- package/botrun-c/.claude/skills/docx-to-markdown/scripts/convert_docx.py +183 -0
- package/botrun-c/.claude/skills/gcp-coord-ml-ocr/SKILL.md +133 -0
- package/botrun-c/.claude/skills/gcp-coord-ml-ocr/scripts/ocr_processor.py +381 -0
- package/botrun-c/.claude/skills/gemini-transcribe/SKILL.md +115 -0
- package/botrun-c/.claude/skills/gemini-transcribe/scripts/transcribe.py +499 -0
- package/botrun-c/.claude/skills/nchc-transcribe/SKILL.md +131 -0
- package/botrun-c/.claude/skills/nchc-transcribe/scripts/transcribe.py +522 -0
- package/botrun-c/.claude/skills/p320-moj-review/SKILL.md +200 -0
- package/botrun-c/.claude/skills/p320-moj-review/references/guideline.md +118 -0
- package/botrun-c/.claude/skills/pdf-multimodal-processor/SKILL.md +186 -0
- package/botrun-c/.claude/skills/pdf-multimodal-processor/scripts/process_pdf.py +515 -0
- package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/SKILL.md +81 -0
- package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/package.json +13 -0
- package/botrun-c/.claude/skills/ripgrep/346/220/234/345/260/213/346/212/200/350/203/275/scripts/secure-search.mjs +232 -0
- 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 +518 -0
- package/botrun-c/.claude/skills//345/216/273/350/255/230/345/210/245/346/212/200/350/203/275/SKILL.md +125 -0
- package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/SKILL.md +123 -0
- package/botrun-c/.claude/skills//345/233/236/346/206/266/346/212/200/350/203/275/scripts/recall.mjs +339 -0
- 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 +156 -0
- 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 +139 -0
- 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 +40 -0
- 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 +195 -0
- 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 +307 -0
- 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 +103 -0
- 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 +219 -0
- 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 +209 -0
- 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 +20 -0
- 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 +115 -0
- 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 +86 -0
- 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 +304 -0
- 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 +17 -0
- package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/SKILL.md +131 -0
- package/botrun-c/.claude/skills//345/255/265/345/214/226/346/212/200/350/203/275/scripts/skill-manager.mjs +542 -0
- 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 +127 -0
- 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 +53 -0
- 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 +13 -0
- 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 +149 -0
- 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 +82 -0
- 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 +16 -0
- 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 +260 -0
- 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 +156 -0
- 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 +16 -0
- 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 +139 -0
- 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 +272 -0
- 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 +166 -0
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/SKILL.md +114 -0
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/remember.mjs +159 -0
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test-advanced.mjs +342 -0
- package/botrun-c/.claude/skills//350/250/230/346/206/266/346/212/200/350/203/275/scripts/test.mjs +430 -0
- 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 +30 -0
- 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 +13 -0
- 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 +294 -0
- 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 +338 -0
- package/botrun-c/.dockerignore +131 -0
- package/botrun-c/.dockeroptimize +13 -0
- package/botrun-c/.firebase/hosting.b3V0.cache +30 -0
- package/botrun-c/.firebaserc +5 -0
- package/botrun-c/.gcloudignore +56 -0
- package/botrun-c/.ruby-version +1 -0
- package/botrun-c/CHANGELOG.md +224 -0
- package/botrun-c/Dockerfile.gcp +365 -0
- package/botrun-c/Dockerfile.slim +195 -0
- package/botrun-c/Gemfile +8 -0
- package/botrun-c/Gemfile.lock +233 -0
- package/botrun-c/LOCAL-DEVELOPMENT-GUIDE.md +393 -0
- package/botrun-c/PLAN.md +131 -0
- package/botrun-c/README.md +129 -0
- package/botrun-c/TODO-CAPACITOR-INTEGRATION.md +482 -0
- package/botrun-c/VERIFICATION.md +121 -0
- package/botrun-c/admin/RATE_LIMIT_MANAGEMENT.md +312 -0
- package/botrun-c/admin/README.md +338 -0
- package/botrun-c/admin/botrun-billing-report-1765235244038.csv +22 -0
- package/botrun-c/admin/botrun-billing-report-1765235323089.csv +22 -0
- package/botrun-c/admin/botrun-dashboard-1765235244039.html +278 -0
- package/botrun-c/admin/botrun-dashboard-1765235323089.html +278 -0
- package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235244039.html +161 -0
- package/botrun-c/admin/botrun-timeseries-074xGzIKWyfKTBt1NMIj9lxi5mO2-1765235323090.html +161 -0
- package/botrun-c/admin/check-billing.ts +48 -0
- package/botrun-c/admin/count-all-users.ts +65 -0
- package/botrun-c/admin/generate-analytics-report.ts +188 -0
- package/botrun-c/admin/jest.config.ts +43 -0
- package/botrun-c/admin/lib/__tests__/formatters.test.ts +264 -0
- package/botrun-c/admin/lib/__tests__/mocks/firebase.mock.ts +112 -0
- package/botrun-c/admin/lib/__tests__/services/UserService.test.ts +83 -0
- package/botrun-c/admin/lib/__tests__/user-resolver.test.ts +439 -0
- package/botrun-c/admin/lib/analyzers/BillingAnalyticsService.ts +242 -0
- package/botrun-c/admin/lib/analyzers/CsvExporter.ts +263 -0
- package/botrun-c/admin/lib/analyzers/HtmlChartGenerator.ts +530 -0
- package/botrun-c/admin/lib/analyzers/SpikeAnalyzer.ts +608 -0
- package/botrun-c/admin/lib/analyzers/TimeSeriesAnalyzer.ts +344 -0
- package/botrun-c/admin/lib/cli/CLIBootstrapper.ts +40 -0
- package/botrun-c/admin/lib/commands/AbstractCommand.ts +69 -0
- package/botrun-c/admin/lib/commands/AnalyticsCommand.ts +215 -0
- package/botrun-c/admin/lib/commands/ListCommand.ts +85 -0
- package/botrun-c/admin/lib/commands/QueryCommand.ts +81 -0
- package/botrun-c/admin/lib/commands/SpikeCommand.ts +83 -0
- package/botrun-c/admin/lib/domain/User.ts +38 -0
- package/botrun-c/admin/lib/firebase.ts +92 -0
- package/botrun-c/admin/lib/firestore-safe.ts +105 -0
- package/botrun-c/admin/lib/formatters.ts +154 -0
- package/botrun-c/admin/lib/rate-limit-detailed.ts +355 -0
- package/botrun-c/admin/lib/rate-limit.ts +286 -0
- package/botrun-c/admin/lib/repositories/UserRepository.ts +104 -0
- package/botrun-c/admin/lib/services/UserService.ts +108 -0
- package/botrun-c/admin/lib/types.ts +56 -0
- package/botrun-c/admin/lib/user-resolver.ts +275 -0
- package/botrun-c/admin/manage-auth-domains.js +178 -0
- package/botrun-c/admin/migrate-plan-free.sh +64 -0
- package/botrun-c/admin/package-lock.json +5656 -0
- package/botrun-c/admin/package.json +28 -0
- package/botrun-c/admin/rate-limit.sh +55 -0
- package/botrun-c/admin/remove-custom-limits.ts +75 -0
- package/botrun-c/admin/reset-rate.sh +70 -0
- package/botrun-c/admin/reset-trial.sh +68 -0
- package/botrun-c/admin/seed-trial-data.sh +38 -0
- package/botrun-c/admin/trial.sh +55 -0
- package/botrun-c/admin/tsconfig.json +20 -0
- package/botrun-c/admin/users-cli.py +298 -0
- package/botrun-c/admin/users.sh +12 -0
- package/botrun-c/admin/users.ts +1321 -0
- package/botrun-c/api/admin-tools/check-whitelist.mjs.migration-bak +74 -0
- package/botrun-c/api/admin-tools/create-user.mjs +92 -0
- package/botrun-c/api/admin-tools/create-user.mjs.migration-bak +92 -0
- package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py +287 -0
- package/botrun-c/api/admin-tools/firebase-auth-domains-v2.py.migration-bak +287 -0
- package/botrun-c/api/admin-tools/init-firestore.mjs +75 -0
- package/botrun-c/api/admin-tools/init-firestore.mjs.migration-bak +101 -0
- package/botrun-c/api/admin-tools/list-users.mjs +43 -0
- package/botrun-c/api/admin-tools/list-users.mjs.migration-bak +43 -0
- package/botrun-c/api/admin-tools/manage-authorized-domains.ts +255 -0
- package/botrun-c/api/admin-tools/manage-authorized-domains.ts.migration-bak +255 -0
- package/botrun-c/api/admin-tools/setup-custom-claims.ts.migration-bak +155 -0
- package/botrun-c/api/admin-tools/test-claims.mjs +69 -0
- package/botrun-c/api/admin-tools/test-claims.mjs.migration-bak +69 -0
- package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs +72 -0
- package/botrun-c/api/admin-tools/update-service-urls-gcloud.mjs.migration-bak +72 -0
- package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs +159 -0
- package/botrun-c/api/admin-tools/update-service-urls-to-lb.mjs.migration-bak +159 -0
- package/botrun-c/api/admin-tools/update-service-urls.mjs +82 -0
- package/botrun-c/api/admin-tools/update-service-urls.mjs.migration-bak +82 -0
- package/botrun-c/api/package-lock.json +5031 -0
- package/botrun-c/api/package.json +63 -0
- package/botrun-c/api/pnpm-lock.yaml +4157 -0
- package/botrun-c/api/rate-limit-export-1763620678737.csv +79 -0
- package/botrun-c/api/scripts/README-migrate-plan-free.md +197 -0
- package/botrun-c/api/scripts/check-users.ts +45 -0
- package/botrun-c/api/scripts/delete-firestore-docs.js +43 -0
- package/botrun-c/api/scripts/dump-subscriptions.ts +395 -0
- package/botrun-c/api/scripts/list-all-users.ts +65 -0
- package/botrun-c/api/scripts/migrate-plan-free-rpd-16to32.ts +262 -0
- package/botrun-c/api/scripts/migrate-plan-names-to-lite-max.ts +269 -0
- package/botrun-c/api/scripts/query-user-info.ts +304 -0
- package/botrun-c/api/scripts/reset-rate-limit.ts +206 -0
- package/botrun-c/api/scripts/reset-trial-subscription.ts +166 -0
- package/botrun-c/api/scripts/rollback-plan-names-from-lite-max.ts +139 -0
- package/botrun-c/api/scripts/seed-rate-limit-test-data.ts +114 -0
- package/botrun-c/api/scripts/seed-subscription-test-data.ts +173 -0
- package/botrun-c/api/scripts/test-rate-limit-message.ts +108 -0
- package/botrun-c/api/test-billing-write.ts +103 -0
- package/botrun-c/api/test-billing.ts +81 -0
- package/botrun-c/api/test-chat-upload.sh +162 -0
- package/botrun-c/api/test-nchc-whisper.ts +87 -0
- package/botrun-c/api/test-skills-loading.js +77 -0
- package/botrun-c/api/test-skills-symlink.js +118 -0
- package/botrun-c/api/test-upload-multimodal.sh +167 -0
- package/botrun-c/api/tsconfig.json +27 -0
- package/botrun-c/api/verify-form-2-1.mjs +229 -0
- package/botrun-c/api/vitest.config.ts +9 -0
- package/botrun-c/appium-capabilities.json +20 -0
- package/botrun-c/cors.json +26 -0
- package/botrun-c/delete-old.sh +44 -0
- package/botrun-c/design/google-drive/01-architecture.md +186 -0
- package/botrun-c/design/google-drive/02-api-design.md +314 -0
- package/botrun-c/design/google-drive/03-frontend-design.md +278 -0
- package/botrun-c/design/google-drive/04-skill-design.md +384 -0
- package/botrun-c/design/google-drive/05-test-plan.md +507 -0
- package/botrun-c/design/google-drive/README.md +32 -0
- package/botrun-c/dev/mcp-token-calculator/README.md +92 -0
- package/botrun-c/dev/mcp-token-calculator/RESULTS.md +188 -0
- package/botrun-c/dev/mcp-token-calculator/calculate-current-tokens.ts +369 -0
- package/botrun-c/dev/mcp-token-calculator/calculate-mcp-tokens.ts +464 -0
- package/botrun-c/dev/mcp-token-calculator/optimization-proposals.ts +316 -0
- package/botrun-c/dev/mcp-token-calculator/package-lock.json +599 -0
- package/botrun-c/dev/mcp-token-calculator/package.json +22 -0
- package/botrun-c/dev/mcp-token-calculator/test-all-schemas.ts +314 -0
- package/botrun-c/dev/mcp-token-calculator/test-schema-correctness.ts +221 -0
- package/botrun-c/dev/mcp-token-calculator/verify-optimization.ts +159 -0
- package/botrun-c/fastlane/ANDROID-DEPLOYMENT-SETUP.md +825 -0
- package/botrun-c/fastlane/IOS-DEPLOYMENT-SETUP.md +431 -0
- package/botrun-c/fastlane/Pluginfile +5 -0
- package/botrun-c/fastlane/QUICK-START.md +133 -0
- package/botrun-c/fastlane/README.md +424 -0
- package/botrun-c/fastlane/RUBY-SETUP.md +449 -0
- package/botrun-c/fastlane/android/Appfile +11 -0
- package/botrun-c/fastlane/android/Fastfile +240 -0
- package/botrun-c/firebase.json +46 -0
- package/botrun-c/firestore-init-data.json +40 -0
- package/botrun-c/firestore.indexes.json +55 -0
- package/botrun-c/firestore.rules +53 -0
- package/botrun-c/fix-codex-permissions.sh +56 -0
- package/botrun-c/gcs-lifecycle-30day-retention.json +12 -0
- package/botrun-c/html-architecture/architecture/deployment.html +664 -0
- package/botrun-c/html-architecture/architecture/index.html +309 -0
- package/botrun-c/html-architecture/architecture/styles.css +500 -0
- package/botrun-c/html-architecture/architecture/system-components.html +538 -0
- package/botrun-c/html-architecture/architecture/user-flow.html +370 -0
- package/botrun-c/mobile-android/FIREBASE-AUTH-SETUP.md +302 -0
- package/botrun-c/mobile-android/WSL-ANDROID-SETUP.md +252 -0
- package/botrun-c/mobile-android/android/app/build.gradle +75 -0
- package/botrun-c/mobile-android/android/app/capacitor.build.gradle +31 -0
- package/botrun-c/mobile-android/android/app/proguard-rules.pro +21 -0
- package/botrun-c/mobile-android/android/build.gradle +29 -0
- package/botrun-c/mobile-android/android/capacitor.settings.gradle +42 -0
- package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/botrun-c/mobile-android/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/botrun-c/mobile-android/android/gradle.properties +22 -0
- package/botrun-c/mobile-android/android/gradlew +252 -0
- package/botrun-c/mobile-android/android/gradlew.bat +94 -0
- package/botrun-c/mobile-android/android/settings.gradle +5 -0
- package/botrun-c/mobile-android/android/variables.gradle +16 -0
- package/botrun-c/mobile-android/capacitor.config.ts +44 -0
- package/botrun-c/mobile-android/fastlane/Appfile +11 -0
- package/botrun-c/mobile-android/fastlane/Fastfile +202 -0
- package/botrun-c/mobile-android/fastlane/README.md +96 -0
- package/botrun-c/mobile-android/google-services.json.template +39 -0
- package/botrun-c/mobile-android/package.json +32 -0
- package/botrun-c/mobile-android/resources/icon.png +0 -0
- package/botrun-c/mobile-android/tsconfig.json +15 -0
- package/botrun-c/mobile-ios/.ruby-version +1 -0
- package/botrun-c/mobile-ios/BUILD-LOG.md +82 -0
- package/botrun-c/mobile-ios/Gemfile +4 -0
- package/botrun-c/mobile-ios/Gemfile.lock +299 -0
- package/botrun-c/mobile-ios/GoogleService-Info.plist.template +34 -0
- package/botrun-c/mobile-ios/IOS-PERMISSIONS.md +80 -0
- package/botrun-c/mobile-ios/QUICK-START.md +189 -0
- package/botrun-c/mobile-ios/README.md +231 -0
- package/botrun-c/mobile-ios/capacitor.config.ts +46 -0
- package/botrun-c/mobile-ios/fastlane/Fastfile +326 -0
- package/botrun-c/mobile-ios/fastlane/README.md +88 -0
- package/botrun-c/mobile-ios/ios/App/App/App.entitlements +10 -0
- package/botrun-c/mobile-ios/ios/App/App/AppDelegate.swift +49 -0
- 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 +14 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Contents.json +6 -0
- package/botrun-c/mobile-ios/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +56 -0
- 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 +32 -0
- package/botrun-c/mobile-ios/ios/App/App/Base.lproj/Main.storyboard +19 -0
- package/botrun-c/mobile-ios/ios/App/App/Info.plist +72 -0
- package/botrun-c/mobile-ios/ios/App/App.xcodeproj/project.pbxproj +446 -0
- package/botrun-c/mobile-ios/ios/App/App.xcodeproj/xcshareddata/xcschemes/App.xcscheme +78 -0
- package/botrun-c/mobile-ios/ios/App/App.xcworkspace/contents.xcworkspacedata +10 -0
- package/botrun-c/mobile-ios/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/botrun-c/mobile-ios/ios/App/Podfile +52 -0
- package/botrun-c/mobile-ios/ios/App/Podfile.lock +205 -0
- package/botrun-c/mobile-ios/ios/App/add_plist.rb +30 -0
- package/botrun-c/mobile-ios/ios/App/fix_plist_path.rb +22 -0
- package/botrun-c/mobile-ios/package.json +29 -0
- package/botrun-c/mobile-ios/resources/icon.png +0 -0
- package/botrun-c/mobile-ios/run-simulator.sh +34 -0
- 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 +106 -0
- package/botrun-c/mobile-ios/tsconfig.json +16 -0
- package/botrun-c/org-policy-allow-all-users.yaml +3 -0
- package/botrun-c/package.json +68 -0
- package/botrun-c/pnpm-lock.yaml +10198 -0
- package/botrun-c/pnpm-workspace.yaml +6 -0
- package/botrun-c/prompts/BOTRUN-1.md +13 -0
- package/botrun-c/prompts/BOTRUN-2.md +70 -0
- package/botrun-c/prompts/BOTRUN-3.md +139 -0
- package/botrun-c/prototypes/firestore-gax-debug/package-lock.json +1204 -0
- package/botrun-c/prototypes/firestore-gax-debug/package.json +12 -0
- package/botrun-c/prototypes/firestore-gax-debug/pnpm-workspace.yaml +2 -0
- package/botrun-c/prototypes/firestore-gax-debug/test.js +98 -0
- package/botrun-c/prototypes/taiwan-haiku/README.md +93 -0
- package/botrun-c/prototypes/taiwan-haiku/index.ts +139 -0
- package/botrun-c/prototypes/taiwan-haiku/package.json +23 -0
- package/botrun-c/prototypes/taiwan-haiku/pnpm-lock.yaml +730 -0
- package/botrun-c/prototypes/taiwan-haiku/test-vertex-direct.ts +83 -0
- package/botrun-c/prototypes/taiwan-haiku/tsconfig.json +18 -0
- package/botrun-c/prototypes/web-search/FINDINGS-STAGE-1.md +48 -0
- package/botrun-c/prototypes/web-search/README.md +46 -0
- package/botrun-c/prototypes/web-search/VERIFICATION-REPORT.md +310 -0
- package/botrun-c/prototypes/web-search/package-lock.json +595 -0
- package/botrun-c/prototypes/web-search/package.json +18 -0
- package/botrun-c/prototypes/web-search/stage-1.1-basic-connection.js +123 -0
- package/botrun-c/prototypes/web-search/stage-1.2-with-websearch.js +154 -0
- package/botrun-c/prototypes/web-search/stage-1.3-search-query.js +192 -0
- package/botrun-c/prototypes/web-search/stage-2-agent-sdk-websearch.js +265 -0
- package/botrun-c/runtime-scripts/env-detect.sh +64 -0
- package/botrun-c/scripts/github-collaborator-manager.sh +297 -0
- package/botrun-c/scripts/github-collaborator-manager.ts +325 -0
- package/botrun-c/scripts/manage-collaborators.sh +91 -0
- package/botrun-c/scripts/setup-secrets.sh +202 -0
- package/botrun-c/scripts/stress-test-17-users.sh +113 -0
- package/botrun-c/scripts/stress-test-api.sh +119 -0
- package/botrun-c/scripts/stress-test-full-report.sh +385 -0
- package/botrun-c/specs/infra-vm/design.md +0 -0
- package/botrun-c/specs/share-skill/design.md +1146 -0
- package/botrun-c/specs/share-skill/tasks.md +444 -0
- package/botrun-c/stress-test-results/20260121-162630/config.json +7 -0
- package/botrun-c/stress-test-results/20260121-162630/user-1-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162630/user-1-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162630/user-1.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/config.json +7 -0
- package/botrun-c/stress-test-results/20260121-162646/user-1-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-1-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-1.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-10-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-10-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-10.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-11-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-11-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-11.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-12-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-12-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-12.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-13-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-13-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-13.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-14-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-14-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-14.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-15-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-15-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-15.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-16-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-16-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-16.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-17-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-17-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-17.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-2-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-2-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-2.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-3-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-3-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-3.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-4-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-4-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-4.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-5-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-5-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-5.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-6-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-6-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-6.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-7-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-7-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-7.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-8-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-8-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-8.json +2 -0
- package/botrun-c/stress-test-results/20260121-162646/user-9-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-9-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-162646/user-9.json +2 -0
- package/botrun-c/stress-test-results/20260121-163148/REPORT.html +344 -0
- package/botrun-c/stress-test-results/20260121-163148/REPORT.md +93 -0
- package/botrun-c/stress-test-results/20260121-163148/REPORT.pdf +0 -0
- package/botrun-c/stress-test-results/20260121-163148/config.json +7 -0
- package/botrun-c/stress-test-results/20260121-163148/summary.json +26 -0
- package/botrun-c/stress-test-results/20260121-163148/user-1-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-1-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-1.json +206 -0
- package/botrun-c/stress-test-results/20260121-163148/user-10-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-10-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-10.json +110 -0
- package/botrun-c/stress-test-results/20260121-163148/user-11-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-11-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-11.json +104 -0
- package/botrun-c/stress-test-results/20260121-163148/user-12-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-12-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-12.json +98 -0
- package/botrun-c/stress-test-results/20260121-163148/user-13-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-13-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-13.json +68 -0
- package/botrun-c/stress-test-results/20260121-163148/user-14-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-14-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-14.json +116 -0
- package/botrun-c/stress-test-results/20260121-163148/user-15-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-15-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-15.json +131 -0
- package/botrun-c/stress-test-results/20260121-163148/user-16-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-16-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-16.json +110 -0
- package/botrun-c/stress-test-results/20260121-163148/user-17-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-17-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-17.json +116 -0
- package/botrun-c/stress-test-results/20260121-163148/user-2-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-2-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-2.json +98 -0
- package/botrun-c/stress-test-results/20260121-163148/user-3-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-3-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-3.json +62 -0
- package/botrun-c/stress-test-results/20260121-163148/user-4-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-4-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-4.json +113 -0
- package/botrun-c/stress-test-results/20260121-163148/user-5-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-5-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-5.json +83 -0
- package/botrun-c/stress-test-results/20260121-163148/user-6-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-6-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-6.json +125 -0
- package/botrun-c/stress-test-results/20260121-163148/user-7-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-7-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-7.json +62 -0
- package/botrun-c/stress-test-results/20260121-163148/user-8-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-8-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-8.json +41 -0
- package/botrun-c/stress-test-results/20260121-163148/user-9-status.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-9-timing.txt +1 -0
- package/botrun-c/stress-test-results/20260121-163148/user-9.json +53 -0
- package/botrun-c/test-merge.md +1 -0
- package/botrun-c/version.txt +1 -0
- package/botrun-c/web/.version +1 -0
- package/botrun-c/web/ALLOW-PUBLIC-ACCESS.md +57 -0
- package/botrun-c/web/FINAL-SETUP-STEPS.md +71 -0
- package/botrun-c/web/FIREBASE-MANUAL-STEPS.md +41 -0
- package/botrun-c/web/QUICK-SETUP-HELPER.md +79 -0
- package/botrun-c/web/README.md +162 -0
- package/botrun-c/web/__tests__/image-extractor.test.ts +147 -0
- package/botrun-c/web/__tests__/useGitHub.test.ts +245 -0
- package/botrun-c/web/app/favicon.ico +0 -0
- package/botrun-c/web/app/globals.css +215 -0
- package/botrun-c/web/app/image-preview/page.tsx +213 -0
- package/botrun-c/web/app/layout.tsx +46 -0
- package/botrun-c/web/app/page.tsx +45 -0
- package/botrun-c/web/components/CapacitorProvider.tsx +43 -0
- package/botrun-c/web/components/ChatPage.tsx +1736 -0
- package/botrun-c/web/components/ConversationList.tsx +237 -0
- package/botrun-c/web/components/ConversationListItem.tsx +121 -0
- package/botrun-c/web/components/LoginPage.tsx +212 -0
- package/botrun-c/web/components/Providers.tsx +12 -0
- package/botrun-c/web/components/StatusBarProvider.tsx +16 -0
- package/botrun-c/web/components/attachment-preview.tsx +193 -0
- package/botrun-c/web/components/botrun-incubator/BotrunIncubator.tsx +266 -0
- package/botrun-c/web/components/botrun-incubator/index.ts +1 -0
- package/botrun-c/web/components/chat-input.tsx +1251 -0
- package/botrun-c/web/components/chat-message.tsx +598 -0
- package/botrun-c/web/components/drop-zone.tsx +143 -0
- package/botrun-c/web/components/gdrive/gdrive-add-dialog.tsx +254 -0
- package/botrun-c/web/components/gdrive/gdrive-drawer.tsx +236 -0
- package/botrun-c/web/components/gdrive/gdrive-selector.tsx +226 -0
- package/botrun-c/web/components/gdrive/index.ts +7 -0
- package/botrun-c/web/components/generated-image-card.tsx +363 -0
- package/botrun-c/web/components/github/GitHubConnect.tsx +366 -0
- package/botrun-c/web/components/github/index.ts +2 -0
- package/botrun-c/web/components/import-skill-dialog.tsx +208 -0
- package/botrun-c/web/components/scroll-to-bottom-button.tsx +90 -0
- package/botrun-c/web/components/share-skill-dialog.tsx +175 -0
- package/botrun-c/web/components/skills-editor.tsx +443 -0
- package/botrun-c/web/components/skills-manager-drawer.tsx +586 -0
- package/botrun-c/web/components/smart-button-group.tsx +132 -0
- package/botrun-c/web/config/smart-buttons.ts +295 -0
- package/botrun-c/web/config/welcome-messages.ts +29 -0
- package/botrun-c/web/contexts/AuthContext.tsx +220 -0
- package/botrun-c/web/hooks/use-toast.ts +187 -0
- package/botrun-c/web/hooks/useAppStoreUpdate.ts +356 -0
- package/botrun-c/web/hooks/useAppVersion.ts +113 -0
- package/botrun-c/web/hooks/useAttachments.ts +269 -0
- package/botrun-c/web/hooks/useAuthToken.ts +59 -0
- package/botrun-c/web/hooks/useAutoWelcome.ts +89 -0
- package/botrun-c/web/hooks/useCapacitorPlatform.ts +113 -0
- package/botrun-c/web/hooks/useCapawesomeLiveUpdate.ts +149 -0
- package/botrun-c/web/hooks/useClaudeModel.ts +118 -0
- package/botrun-c/web/hooks/useConversation.ts +115 -0
- package/botrun-c/web/hooks/useConversations.ts +235 -0
- package/botrun-c/web/hooks/useGdriveFolders.ts +199 -0
- package/botrun-c/web/hooks/useGdriveSync.ts +107 -0
- package/botrun-c/web/hooks/useGitHub.ts +409 -0
- package/botrun-c/web/hooks/useScrollToBottom.ts +150 -0
- package/botrun-c/web/hooks/useStatusBar.ts +42 -0
- package/botrun-c/web/hooks/useUserPlan.ts +153 -0
- package/botrun-c/web/lib/api-config.ts +162 -0
- package/botrun-c/web/lib/api-url.ts +62 -0
- package/botrun-c/web/lib/api.ts +105 -0
- package/botrun-c/web/lib/attachment-utils.ts +168 -0
- package/botrun-c/web/lib/build-version.ts +11 -0
- package/botrun-c/web/lib/clipboard-utils.ts +199 -0
- package/botrun-c/web/lib/constants.ts +62 -0
- package/botrun-c/web/lib/conversation-storage.ts +324 -0
- package/botrun-c/web/lib/firebase-capacitor.ts +135 -0
- package/botrun-c/web/lib/firebase.ts +137 -0
- package/botrun-c/web/lib/firestore-auth.ts +61 -0
- package/botrun-c/web/lib/firestore-auth.ts.migration-bak +319 -0
- package/botrun-c/web/lib/image-extractor.ts +156 -0
- package/botrun-c/web/lib/path-utils.ts +48 -0
- package/botrun-c/web/lib/rehype-del-to-mark.ts +19 -0
- package/botrun-c/web/lib/upload-service.ts +326 -0
- package/botrun-c/web/lib/utils.ts +6 -0
- package/botrun-c/web/next.config.js +49 -0
- package/botrun-c/web/package-lock.json +6711 -0
- package/botrun-c/web/package.json +63 -0
- package/botrun-c/web/postcss.config.js +6 -0
- 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 +36 -0
- package/botrun-c/web/scripts/update-build-version.js +41 -0
- package/botrun-c/web/tailwind.config.ts +80 -0
- package/botrun-c/web/test-welcome-message.mjs +115 -0
- package/botrun-c/web/tsconfig.json +42 -0
- package/botrun-c/web/types/agent.ts +6 -0
- package/botrun-c/web/types/attachment.ts +39 -0
- package/botrun-c/web/types/conversation.ts +68 -0
- package/botrun-c/web/types/flutter.d.ts +6 -0
- package/botrun-c/web/types/project.ts +41 -0
- package/botrun-c/web/types/skills.ts +13 -0
- 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 +83 -0
- package/lib/prompt/prompts/zero-framework/fullstack.md +17 -0
- package/lib/prompt/prompts/zero-framework/segment.md +13 -0
- package/package.json +1 -1
|
@@ -0,0 +1,365 @@
|
|
|
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"]
|
|
@@ -0,0 +1,195 @@
|
|
|
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
ADDED