wadi 1.0.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/.agent/workflows/auto_sync.md +19 -0
- package/.agent/workflows/kivo_pipeline.md +27 -0
- package/.devcontainer/devcontainer.json +27 -0
- package/.github/workflows/kivo-cicd.yml +45 -0
- package/.github/workflows/monorepo-ci.yml +51 -0
- package/.github/workflows/wadi-ci.yml +38 -0
- package/.husky/pre-commit +2 -0
- package/.prettierignore +12 -0
- package/.prettierrc +9 -0
- package/.vscode/settings.json +19 -0
- package/CHANGELOG.md +56 -0
- package/CODE_OF_CONDUCT.md +43 -0
- package/CONTRIBUTING.md +42 -0
- package/DEPLOY_GUIDE.md +143 -0
- package/GO_LIVE_CHECKLIST.md +41 -0
- package/GO_LIVE_COMPLETE_REPORT.md +58 -0
- package/GO_LIVE_VALIDATION.md +39 -0
- package/LEGAL.md +38 -0
- package/MANIFESTO.md +40 -0
- package/MANUAL.md +82 -0
- package/OPS_PLAN.md +90 -0
- package/README.md +126 -0
- package/RELEASE_NOTES.md +51 -0
- package/ROADMAP.md +51 -0
- package/api_listado.txt +2197 -0
- package/apps/api/WADI_PROTOCOL.md +52 -0
- package/apps/api/debug-brain.js +11 -0
- package/apps/api/package.json +21 -0
- package/apps/api/src/core/analisis.js +17 -0
- package/apps/api/src/core/errors.js +31 -0
- package/apps/api/src/core/logger.js +32 -0
- package/apps/api/src/core/prompt-kivo.js +62 -0
- package/apps/api/src/index.js +212 -0
- package/apps/api/src/layers/human_pattern/composeResponse.js +35 -0
- package/apps/api/src/layers/human_pattern/detectPattern.js +39 -0
- package/apps/api/src/layers/human_pattern/heuristics.js +28 -0
- package/apps/api/src/layers/human_pattern/index.js +28 -0
- package/apps/api/src/layers/human_pattern/socialMemory.js +35 -0
- package/apps/api/src/middleware/errorHandler.js +24 -0
- package/apps/api/src/middleware/rateLimiter.js +38 -0
- package/apps/api/src/middleware/requestLogger.js +31 -0
- package/apps/api/src/middleware/upload.js +21 -0
- package/apps/api/src/middleware/validation.js +70 -0
- package/apps/api/src/modules/data.js +25 -0
- package/apps/api/src/modules/marketing.js +54 -0
- package/apps/api/src/modules/projects.js +40 -0
- package/apps/api/src/openai.js +16 -0
- package/apps/api/src/preferences/index.js +20 -0
- package/apps/api/src/register_user.js +22 -0
- package/apps/api/src/routes/kivo.js +58 -0
- package/apps/api/src/routes/monitoring.js +55 -0
- package/apps/api/src/routes.js +656 -0
- package/apps/api/src/supabase.js +17 -0
- package/apps/api/src/tools/index.js +57 -0
- package/apps/api/src/wadi-brain.js +171 -0
- package/apps/api/supabase/migrations/20251218_audit_logs.sql +27 -0
- package/apps/api/supabase/migrations/v2-chat-persistence.sql +83 -0
- package/apps/api/supabase/migrations/v3-cascade-delete.sql +11 -0
- package/apps/api/supabase/migrations/v3-security-fix.sql +90 -0
- package/apps/api/supabase/migrations/v3-storage.sql +36 -0
- package/apps/api/supabase/migrations/v4-gamification.sql +83 -0
- package/apps/api/supabase/migrations/v5-smoke-index.sql +6 -0
- package/apps/api/supabase/migrations/v6-schema-integrity-fix.sql +98 -0
- package/apps/api/supabase/migrations/v7-performance-indexes.sql +5 -0
- package/apps/api/supabase/migrations/v7-security-hardening.sql +132 -0
- package/apps/api/supabase/migrations/v8-security-hardening.sql +79 -0
- package/apps/api/test_human_pattern.js +30 -0
- package/apps/api/test_human_pattern_vague.js +30 -0
- package/apps/api/test_output.txt +76 -0
- package/apps/api/test_vague.js +30 -0
- package/apps/api/test_vague_block.js +30 -0
- package/apps/api/test_wadi.js +31 -0
- package/apps/api/tsconfig.json +13 -0
- package/apps/frontend/.env.local +3 -0
- package/apps/frontend/README.md +73 -0
- package/apps/frontend/eslint.config.js +27 -0
- package/apps/frontend/index.html +49 -0
- package/apps/frontend/package.json +41 -0
- package/apps/frontend/postcss.config.cjs +6 -0
- package/apps/frontend/public/cursors/wadi-neutral.svg +1 -0
- package/apps/frontend/public/cursors/wadi-select.svg +1 -0
- package/apps/frontend/public/icon-192.svg +1 -0
- package/apps/frontend/public/icon-512.svg +1 -0
- package/apps/frontend/public/manifest.webmanifest +23 -0
- package/apps/frontend/public/sw.js +57 -0
- package/apps/frontend/public/vite.svg +1 -0
- package/apps/frontend/public/wadi.svg +5 -0
- package/apps/frontend/src/assets/react.svg +1 -0
- package/apps/frontend/src/components/AuthLoader.tsx +50 -0
- package/apps/frontend/src/components/ChatInput.tsx +272 -0
- package/apps/frontend/src/components/ChatInterface.tsx +202 -0
- package/apps/frontend/src/components/ErrorBoundary.tsx +52 -0
- package/apps/frontend/src/components/InputArea.tsx +201 -0
- package/apps/frontend/src/components/Layout.tsx +73 -0
- package/apps/frontend/src/components/MessageBubble.tsx +66 -0
- package/apps/frontend/src/components/OnboardingModal.tsx +108 -0
- package/apps/frontend/src/components/SettingsModal.tsx +187 -0
- package/apps/frontend/src/components/Sidebar.tsx +171 -0
- package/apps/frontend/src/components/WadiOnboarding.tsx +71 -0
- package/apps/frontend/src/components/auditor/AuditReport.tsx +166 -0
- package/apps/frontend/src/components/auditor/AuditorHeader.tsx +34 -0
- package/apps/frontend/src/components/auditor/ContextPanel.tsx +138 -0
- package/apps/frontend/src/components/auditor/DataDeconstructor.tsx +85 -0
- package/apps/frontend/src/components/auditor/DecisionWall.tsx +65 -0
- package/apps/frontend/src/components/auditor/Dropzone.tsx +137 -0
- package/apps/frontend/src/components/common/Button.tsx +97 -0
- package/apps/frontend/src/components/common/Card.tsx +43 -0
- package/apps/frontend/src/components/common/Input.tsx +73 -0
- package/apps/frontend/src/components/common/Modal.tsx +53 -0
- package/apps/frontend/src/components/ui/Button.tsx +68 -0
- package/apps/frontend/src/components/ui/Card.tsx +86 -0
- package/apps/frontend/src/components/ui/Input.tsx +28 -0
- package/apps/frontend/src/components/ui/LogItem.tsx +64 -0
- package/apps/frontend/src/components/ui/MondayButton.tsx +40 -0
- package/apps/frontend/src/components/ui/MondayCard.tsx +24 -0
- package/apps/frontend/src/components/ui/Scouter.tsx +208 -0
- package/apps/frontend/src/components/ui/TerminalInput.tsx +202 -0
- package/apps/frontend/src/components/ui/Tooltip.tsx +67 -0
- package/apps/frontend/src/config/chatShortcuts.ts +20 -0
- package/apps/frontend/src/config/supabase.ts +6 -0
- package/apps/frontend/src/final_status.txt +3 -0
- package/apps/frontend/src/hooks/useScouter.ts +28 -0
- package/apps/frontend/src/hooks/useStoreHydration.ts +24 -0
- package/apps/frontend/src/improvement_status.txt +5 -0
- package/apps/frontend/src/index.css +88 -0
- package/apps/frontend/src/main.tsx +62 -0
- package/apps/frontend/src/monday_status.txt +7 -0
- package/apps/frontend/src/pages/ChatPage.tsx +201 -0
- package/apps/frontend/src/pages/DashboardPage.tsx +375 -0
- package/apps/frontend/src/pages/IntroWadi.tsx +114 -0
- package/apps/frontend/src/pages/LandingPage.tsx +103 -0
- package/apps/frontend/src/pages/Login.tsx +190 -0
- package/apps/frontend/src/pages/PrivacyPage.tsx +213 -0
- package/apps/frontend/src/pages/ProjectDetail.tsx +80 -0
- package/apps/frontend/src/pages/Projects.tsx +247 -0
- package/apps/frontend/src/pages/TermsPage.tsx +202 -0
- package/apps/frontend/src/router.tsx +83 -0
- package/apps/frontend/src/store/authStore.ts +152 -0
- package/apps/frontend/src/store/chatStore.ts +837 -0
- package/apps/frontend/src/store/documentStore.ts +89 -0
- package/apps/frontend/src/store/projectsStore.ts +111 -0
- package/apps/frontend/src/store/runsStore.ts +98 -0
- package/apps/frontend/src/utils/api.ts +34 -0
- package/apps/frontend/src/vite-env.d.ts +7 -0
- package/apps/frontend/tailwind.config.cjs +32 -0
- package/apps/frontend/tsconfig.app.json +27 -0
- package/apps/frontend/tsconfig.json +7 -0
- package/apps/frontend/tsconfig.node.json +26 -0
- package/apps/frontend/vite.config.ts +25 -0
- package/apps/kivo/.firebase/hosting.d3d3.cache +11 -0
- package/apps/kivo/.firebaserc +5 -0
- package/apps/kivo/BRANDING_GUIDE.md +71 -0
- package/apps/kivo/DEPLOYMENT_READY.md +46 -0
- package/apps/kivo/DEPLOY_URL.md +12 -0
- package/apps/kivo/IMPLEMENTATION_REPORT.md +35 -0
- package/apps/kivo/IMPLEMENTATION_REPORT_FINAL.md +49 -0
- package/apps/kivo/PLAN_MOBILE_2.0.md +44 -0
- package/apps/kivo/PWA_VERIFICATION_GUIDE.md +77 -0
- package/apps/kivo/README.md +28 -0
- package/apps/kivo/REBUILD_REPORT.md +34 -0
- package/apps/kivo/UPGRADE_REPORT.md +35 -0
- package/apps/kivo/android/app/build.gradle +54 -0
- package/apps/kivo/android/app/capacitor.build.gradle +19 -0
- package/apps/kivo/android/app/proguard-rules.pro +21 -0
- package/apps/kivo/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
- package/apps/kivo/android/app/src/main/AndroidManifest.xml +35 -0
- package/apps/kivo/android/app/src/main/java/com/kivo/app/MainActivity.java +5 -0
- package/apps/kivo/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
- package/apps/kivo/android/app/src/main/res/drawable/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-ldpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-night-hdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-night-ldpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-night-mdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-night-xhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-night/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-ldpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-night-hdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-night-ldpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-night-mdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-night-xhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
- package/apps/kivo/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
- package/apps/kivo/android/app/src/main/res/layout/activity_main.xml +12 -0
- package/apps/kivo/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +9 -0
- package/apps/kivo/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +9 -0
- package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
- package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/apps/kivo/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
- package/apps/kivo/android/app/src/main/res/values/strings.xml +7 -0
- package/apps/kivo/android/app/src/main/res/values/styles.xml +22 -0
- package/apps/kivo/android/app/src/main/res/xml/file_paths.xml +5 -0
- package/apps/kivo/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
- package/apps/kivo/android/build.gradle +29 -0
- package/apps/kivo/android/capacitor.settings.gradle +3 -0
- package/apps/kivo/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/apps/kivo/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/apps/kivo/android/gradle.properties +22 -0
- package/apps/kivo/android/gradlew +252 -0
- package/apps/kivo/android/gradlew.bat +94 -0
- package/apps/kivo/android/settings.gradle +5 -0
- package/apps/kivo/android/variables.gradle +16 -0
- package/apps/kivo/assets/icon.png +0 -0
- package/apps/kivo/assets/splash.png +0 -0
- package/apps/kivo/capacitor.config.json +16 -0
- package/apps/kivo/firebase.json +6 -0
- package/apps/kivo/jest.config.js +4 -0
- package/apps/kivo/package.json +26 -0
- package/apps/kivo/tests_disabled/logic.test.js +34 -0
- package/apps/kivo/www/assets/icon-192.png +0 -0
- package/apps/kivo/www/assets/icon-512.png +0 -0
- package/apps/kivo/www/assets/kivo-icon.png +0 -0
- package/apps/kivo/www/assets/pop.mp3 +0 -0
- package/apps/kivo/www/favicon.ico +0 -0
- package/apps/kivo/www/firebase-config.js +75 -0
- package/apps/kivo/www/index.html +38 -0
- package/apps/kivo/www/manifest.json +29 -0
- package/apps/kivo/www/script.js +72 -0
- package/apps/kivo/www/style.css +82 -0
- package/apps/kivo/www/sw.js +46 -0
- package/apps/kivo-brain-api/.env.example +2 -0
- package/apps/kivo-brain-api/KIVO_BACKEND_SETUP.md +27 -0
- package/apps/kivo-brain-api/controllers/kivoController.js +31 -0
- package/apps/kivo-brain-api/index.js +24 -0
- package/apps/kivo-brain-api/package.json +17 -0
- package/apps/kivo-brain-api/routes/message.js +8 -0
- package/apps/kivo-brain-api/services/openaiService.js +64 -0
- package/apps/tests/wadi-tests.js +155 -0
- package/apps/wadi-brain/docs/README_REMOVE_OPTIONS.md +26 -0
- package/cli/commands/deploy.js +10 -0
- package/cli/commands/docs.js +16 -0
- package/cli/commands/explain.js +29 -0
- package/cli/commands/lint.js +14 -0
- package/cli/index.js +26 -0
- package/cli/package.json +12 -0
- package/docs/CNAME +1 -0
- package/docs/README.md +38 -0
- package/docs/USO.md +30 -0
- package/docs/index.html +46 -0
- package/eslint.config.js +101 -0
- package/final_validation.json +27 -0
- package/frontend_listado.txt +33387 -0
- package/listado.txt +12591 -0
- package/package.json +46 -0
- package/packages/logger/index.js +43 -0
- package/packages/logger/package.json +19 -0
- package/packages/logger/test-logger.js +7 -0
- package/packages_listado.txt +801 -0
- package/pnpm-workspace.yaml +6 -0
- package/reseteador_existencial.ps1 +40 -0
- package/scripts/bump-version.js +26 -0
- package/scripts/env.ps1 +13 -0
- package/scripts/setup_android.ps1 +25 -0
- package/scripts/setup_virtual_env.ps1 +77 -0
- package/scripts/smoke-test.js +84 -0
- package/scripts/trigger_render_deploy.ps1 +3 -0
- package/scripts/validate-release.js +34 -0
- package/temp_check.js +57 -0
- package/tsconfig.json +5 -0
- package/validation_report.json +27 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Automatically sync project changes to GitHub (Add, Commit, Pull-Rebase, Push)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
1. Stage all changes
|
|
6
|
+
// turbo
|
|
7
|
+
git add .
|
|
8
|
+
|
|
9
|
+
2. Commit changes
|
|
10
|
+
// turbo
|
|
11
|
+
git commit -m "Auto-sync: updates applied" || echo "Nothing to commit"
|
|
12
|
+
|
|
13
|
+
3. Pull updates from remote (rebase, preferring local changes on conflict)
|
|
14
|
+
// turbo
|
|
15
|
+
git pull --rebase -X theirs origin master
|
|
16
|
+
|
|
17
|
+
4. Push changes to remote
|
|
18
|
+
// turbo
|
|
19
|
+
git push origin master
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Full automation pipeline for Kivo (Health Check, Build Verify, Auto-Sync)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Kivo Automation Pipeline
|
|
6
|
+
|
|
7
|
+
1. Health Check & Validation
|
|
8
|
+
// turbo
|
|
9
|
+
npm run lint --prefix apps/kivo || echo "Linting issues found, attempting auto-fix..."
|
|
10
|
+
|
|
11
|
+
2. Build Verification (Web)
|
|
12
|
+
// turbo
|
|
13
|
+
npx cap sync --cwd apps/kivo || echo "Capacitor sync failed"
|
|
14
|
+
|
|
15
|
+
3. Build Verification (Android)
|
|
16
|
+
// turbo
|
|
17
|
+
cd apps/kivo/android && ./gradlew clean || echo "Gradle clean failed"
|
|
18
|
+
|
|
19
|
+
4. Auto-Sync Git
|
|
20
|
+
// turbo
|
|
21
|
+
git add .
|
|
22
|
+
// turbo
|
|
23
|
+
git commit -m "Auto-sync: Kivo 2.0 updates, fixes, and verifications applied" || echo "Nothing to commit"
|
|
24
|
+
// turbo
|
|
25
|
+
git pull --rebase -X theirs origin master
|
|
26
|
+
// turbo
|
|
27
|
+
git push origin master
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "WADI Codespace",
|
|
3
|
+
"image": "mcr.microsoft.com/devcontainers/javascript-node:18",
|
|
4
|
+
"features": {
|
|
5
|
+
"ghcr.io/devcontainers/features/node:1": {},
|
|
6
|
+
"ghcr.io/devcontainers/features/common-utils:2": {
|
|
7
|
+
"installZsh": "true",
|
|
8
|
+
"configureZshAsDefaultShell": "true",
|
|
9
|
+
"installOhMyZsh": "true",
|
|
10
|
+
"upgradePackages": "true"
|
|
11
|
+
},
|
|
12
|
+
"ghcr.io/devcontainers/features/git:1": {}
|
|
13
|
+
},
|
|
14
|
+
"customizations": {
|
|
15
|
+
"vscode": {
|
|
16
|
+
"extensions": [
|
|
17
|
+
"dbaeumer.vscode-eslint",
|
|
18
|
+
"esbenp.prettier-vscode",
|
|
19
|
+
"ms-azuretools.vscode-docker"
|
|
20
|
+
],
|
|
21
|
+
"settings": {
|
|
22
|
+
"editor.formatOnSave": true
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"postCreateCommand": "npm install -g pnpm && pnpm install"
|
|
27
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Kivo CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
paths:
|
|
8
|
+
- "apps/kivo/**"
|
|
9
|
+
- ".github/workflows/kivo-cicd.yml"
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout repository
|
|
17
|
+
uses: actions/checkout@v3
|
|
18
|
+
|
|
19
|
+
- name: Setup Node.js
|
|
20
|
+
uses: actions/setup-node@v3
|
|
21
|
+
with:
|
|
22
|
+
node-version: 20
|
|
23
|
+
|
|
24
|
+
- name: Install pnpm
|
|
25
|
+
run: npm install -g pnpm
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: pnpm install --no-frozen-lockfile
|
|
29
|
+
|
|
30
|
+
- name: Build Kivo (frontend only)
|
|
31
|
+
run: |
|
|
32
|
+
cd apps/kivo
|
|
33
|
+
pnpm install || true
|
|
34
|
+
pnpm build || echo "Kivo has no build step — continuing"
|
|
35
|
+
|
|
36
|
+
deploy-to-render:
|
|
37
|
+
needs: build
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
steps:
|
|
40
|
+
- name: Trigger Render Deploy
|
|
41
|
+
env:
|
|
42
|
+
RENDER_DEPLOY_HOOK: ${{ secrets.RENDER_DEPLOY_HOOK }}
|
|
43
|
+
run: |
|
|
44
|
+
echo "Triggering Render deploy..."
|
|
45
|
+
curl -X POST "$RENDER_DEPLOY_HOOK"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Monorepo CI Quality Gate
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
quality-check:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v3
|
|
15
|
+
|
|
16
|
+
- name: Setup Node.js
|
|
17
|
+
uses: actions/setup-node@v3
|
|
18
|
+
with:
|
|
19
|
+
node-version: "18"
|
|
20
|
+
|
|
21
|
+
- name: Install pnpm
|
|
22
|
+
uses: pnpm/action-setup@v2
|
|
23
|
+
with:
|
|
24
|
+
version: 8
|
|
25
|
+
run_install: false
|
|
26
|
+
|
|
27
|
+
- name: Get pnpm store directory
|
|
28
|
+
shell: bash
|
|
29
|
+
run: |
|
|
30
|
+
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
|
31
|
+
|
|
32
|
+
- name: Setup pnpm cache
|
|
33
|
+
uses: actions/cache@v3
|
|
34
|
+
with:
|
|
35
|
+
path: ${{ env.STORE_PATH }}
|
|
36
|
+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
37
|
+
restore-keys: |
|
|
38
|
+
${{ runner.os }}-pnpm-store-
|
|
39
|
+
|
|
40
|
+
- name: Install dependencies
|
|
41
|
+
run: pnpm install
|
|
42
|
+
|
|
43
|
+
- name: Linting (Global)
|
|
44
|
+
run: pnpm lint
|
|
45
|
+
continue-on-error: true # Allow non-blocking lint until codebase is clean
|
|
46
|
+
|
|
47
|
+
- name: Type Checking & Builds
|
|
48
|
+
run: pnpm -r build
|
|
49
|
+
|
|
50
|
+
- name: Unit Tests (All Apps)
|
|
51
|
+
run: pnpm -r test
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: WADI CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [master]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout repo
|
|
14
|
+
uses: actions/checkout@v3
|
|
15
|
+
|
|
16
|
+
- name: Set up Node
|
|
17
|
+
uses: actions/setup-node@v3
|
|
18
|
+
with:
|
|
19
|
+
node-version: 18
|
|
20
|
+
|
|
21
|
+
- name: Install dependencies
|
|
22
|
+
run: npm install
|
|
23
|
+
|
|
24
|
+
- name: Run ESLint
|
|
25
|
+
run: |
|
|
26
|
+
npx eslint "apps/frontend/src/**/*.{ts,tsx}" --max-warnings=0
|
|
27
|
+
|
|
28
|
+
- name: Validate Markdown files
|
|
29
|
+
uses: DavidAnson/markdownlint-cli2-action@v14
|
|
30
|
+
with:
|
|
31
|
+
globs: |
|
|
32
|
+
**/*.md
|
|
33
|
+
|
|
34
|
+
- name: Check CNAME placeholder
|
|
35
|
+
run: |
|
|
36
|
+
if grep -q "wadi.tudominio.com" docs/CNAME; then
|
|
37
|
+
echo "WARNING: CNAME still has placeholder domain"
|
|
38
|
+
fi
|
package/.prettierignore
ADDED
package/.prettierrc
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
3
|
+
"[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
4
|
+
"[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
5
|
+
"[markdown]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
|
|
6
|
+
"editor.formatOnSave": true,
|
|
7
|
+
"css.lint.unknownAtRules": "ignore",
|
|
8
|
+
"sqltools.connections": [
|
|
9
|
+
{
|
|
10
|
+
"previewLimit": 50,
|
|
11
|
+
"server": "db.smkbiguvgiscojwxgbae.supabase.co",
|
|
12
|
+
"port": 5432,
|
|
13
|
+
"driver": "PostgreSQL",
|
|
14
|
+
"name": "WADI Supabase",
|
|
15
|
+
"database": "postgres",
|
|
16
|
+
"username": "postgres"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD024 -->
|
|
2
|
+
|
|
3
|
+
# 📦 CHANGELOG
|
|
4
|
+
|
|
5
|
+
All notable changes to this project will be documented in this file.
|
|
6
|
+
|
|
7
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
|
8
|
+
This project _intentionally_ does not follow Semantic Versioning.
|
|
9
|
+
We do what we want.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## [2.0.0] - 2025-12-28
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **WADI CLI**: Herramienta de línea de comando local (`cli/`) para gestión del proyecto.
|
|
18
|
+
- **CI/CD**: Workflow de GitHub Actions (`wadi-ci.yml`) para linting y build automático.
|
|
19
|
+
- **Documentación Interna**: Nueva guía de onboarding `docs/USO.md`.
|
|
20
|
+
- **Infraestructura**: Configuración preparada para dominios personalizados en `docs/CNAME`.
|
|
21
|
+
|
|
22
|
+
## [1.0.0] - 2025-12-28
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Sistema de branding completo para WADI.
|
|
27
|
+
- Tema visual "Deep Bunker" aplicado a toda la interfaz.
|
|
28
|
+
- Documentación inicial (`README.md`) terminada.
|
|
29
|
+
- Entrada de terminal funcional (TerminalInput.tsx).
|
|
30
|
+
- Backend `wadi-brain.js` con motor de respuesta contextual.
|
|
31
|
+
- Limpieza total de código no usado (bye `useChatStore`, `playTone`, etc).
|
|
32
|
+
- Favicon personalizado (`wadi.svg`).
|
|
33
|
+
|
|
34
|
+
### Removed
|
|
35
|
+
|
|
36
|
+
- Componentes basura como "Brainstorming", "Plan de Negocio", etc.
|
|
37
|
+
- Todas las referencias a "Monday".
|
|
38
|
+
- Sonido. Todo. Absolutamente todo.
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Warnings de ESLint en componentes clave.
|
|
43
|
+
- `useEffect` con dependencias faltantes en Sidebar.
|
|
44
|
+
- Form inputs sin `id` o `name`.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## [UNRELEASED]
|
|
49
|
+
|
|
50
|
+
Things that _will probably break everything_ if you’re not careful:
|
|
51
|
+
|
|
52
|
+
### Planning
|
|
53
|
+
|
|
54
|
+
- Modo de contexto persistente (¿state manager o base de datos?).
|
|
55
|
+
- Integración con APIs externas (OpenAI, Langchain, HuggingFace, etc).
|
|
56
|
+
- WADI con personalidad dinámica (modo irónico, formal, técnico, etc).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 📜 Código de Conducta para Contribuyentes — WADI
|
|
2
|
+
|
|
3
|
+
WADI no tiene emociones, pero vos sí. Y por eso necesitamos dejar claro cómo interactuar con este proyecto sin hacer que el universo del software se vuelva aún más insoportable.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ☠️ Comportamientos Inaceptables
|
|
8
|
+
|
|
9
|
+
- Contribuir sin testear primero.
|
|
10
|
+
- Dejar `console.log` en producción como si nadie lo viera.
|
|
11
|
+
- Preguntar “¿puedo contribuir?” en vez de abrir un PR directo.
|
|
12
|
+
- Romper el dark mode.
|
|
13
|
+
- Intentar activar el audio de WADI. Está muerto. Y así debe seguir.
|
|
14
|
+
- Cambiar la personalidad de WADI para que sea “más amigable”.
|
|
15
|
+
- Pushear directamente a `master`. ¿Estamos en 2014?
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## ✅ Comportamientos Esperados
|
|
20
|
+
|
|
21
|
+
- Usar `npm run lint` antes de cada commit. WADI lo revisa igual, pero hacelo igual.
|
|
22
|
+
- Ser brutalmente honesto, pero no cruel con humanos.
|
|
23
|
+
- Escribir documentación que no requiera un máster para entenderla.
|
|
24
|
+
- Mantener los chistes sarcásticos en buen gusto o al menos en buen formato.
|
|
25
|
+
- Recordar que WADI es un asistente, no un dios. (Por ahora.)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 🤖 Contacto
|
|
30
|
+
|
|
31
|
+
¿Tenés problemas con otro colaborador? ¿WADI te insultó?
|
|
32
|
+
Abrí un issue o hablá con el mantenedor.
|
|
33
|
+
(Nota: No garantizamos respuestas emocionalmente nutritivas.)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 🧠 WADI dice
|
|
38
|
+
|
|
39
|
+
> "El respeto no es opcional. El código que funciona, tampoco."
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
Este Código de Conducta está inspirado en otros, pero claramente fue escrito por un robot molesto con años de acumulación técnica mal resuelta. Lo cual lo hace más confiable.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 🤝 Contribuyendo a WADI
|
|
2
|
+
|
|
3
|
+
Gracias por tu interés en mejorar WADI. Este proyecto es un asistente técnico brutalmente honesto y no tiene paciencia para código sucio.
|
|
4
|
+
|
|
5
|
+
## 🧪 Requisitos Previos
|
|
6
|
+
|
|
7
|
+
- Node.js >= 18
|
|
8
|
+
- npm >= 9
|
|
9
|
+
- Conocimientos básicos de Git
|
|
10
|
+
- No ser propenso a dejar `console.log` en producción
|
|
11
|
+
|
|
12
|
+
## 🚀 Cómo levantar el entorno
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install
|
|
16
|
+
npm run dev
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 📦 Estructura importante
|
|
20
|
+
|
|
21
|
+
- **apps/frontend**: Interfaz visual
|
|
22
|
+
- **apps/api**: Motor de lógica (wadi-brain.js)
|
|
23
|
+
- **cli/**: Línea de comandos local
|
|
24
|
+
- **docs/**: Documentación estática
|
|
25
|
+
|
|
26
|
+
## 📋 Reglas para Pull Requests
|
|
27
|
+
|
|
28
|
+
1. Commits con convención `feat:`, `fix:`, `chore:`, etc.
|
|
29
|
+
2. No push directo a `master` (usá ramas y PRs).
|
|
30
|
+
3. Comentarios sarcásticos bienvenidos si no rompen el build.
|
|
31
|
+
|
|
32
|
+
## 🧹 Lint y CI
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
node cli/index.js lint
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
El CI te vigila. No le falles.
|
|
39
|
+
|
|
40
|
+
## ☕ ¿Dudas?
|
|
41
|
+
|
|
42
|
+
Abrí un issue o preguntale a WADI. No te va a responder con cariño, pero sí con precisión.
|
package/DEPLOY_GUIDE.md
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# WADI Production Deployment Guide 🚀
|
|
2
|
+
|
|
3
|
+
## 0. Repository Check (CRITICAL) 🚨
|
|
4
|
+
|
|
5
|
+
Asegúrate de que el servicio en Render esté conectado al repositorio correcto:
|
|
6
|
+
|
|
7
|
+
- **Repo Correcto**: `masosa96-hash/WADINEW`
|
|
8
|
+
- **Branch**: `master`
|
|
9
|
+
|
|
10
|
+
Si Render está apuntando a `masosa96-hash/WADI`, debes cambiar el repositorio en la configuración del servicio (Settings -> Repository) o crear un nuevo Static Site / Web Service apuntando a `WADINEW`.
|
|
11
|
+
|
|
12
|
+
## 1. Environment Configuration (Secrets) 🔐
|
|
13
|
+
|
|
14
|
+
Antes de desplegar, debes configurar estas variables en tu proveedor (Railway/Render).
|
|
15
|
+
|
|
16
|
+
He generado claves seguras y aleatorias para ti. **Cópialas y guárdalas en un gestor de contraseñas AHORA.**
|
|
17
|
+
|
|
18
|
+
| Variable | Valor Generado | Propósito |
|
|
19
|
+
| :---------------------- | :-------------------------------------------------------------- | :----------------------------------- |
|
|
20
|
+
| `ADMIN_KEY` | `9b03e6028bbb01b40aebfecdf86b6025a74c6513ec25cc1cae0f8c3597d92` | Protege `/system/admin/metrics` |
|
|
21
|
+
| `WHATSAPP_VERIFY_TOKEN` | `1773993bfa7e4f497e09092cc8b0f22c` | Token para verificar Webhook de Meta |
|
|
22
|
+
| `TELEGRAM_SECRET_TOKEN` | `68a4a187fda9e8bec935c38daa826ffdf5c1cc456d5177c49` | Token secreto en headers de Telegram |
|
|
23
|
+
|
|
24
|
+
### Pasos en Railway
|
|
25
|
+
|
|
26
|
+
1. Ve a tu proyecto -> `wadi-api`.
|
|
27
|
+
2. Pestaña **Variables**.
|
|
28
|
+
3. Añade las 3 variables con los valores de arriba. (O usa el CLI: `railway vars set ADMIN_KEY=...`)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 2. Webhook Registration 📡
|
|
33
|
+
|
|
34
|
+
### WhatsApp Cloud API (Meta Developers)
|
|
35
|
+
|
|
36
|
+
1. Ve a [Developers.facebook.com](https://developers.facebook.com/) -> Tu App -> WhatsApp -> Configuration.
|
|
37
|
+
2. **Callback URL**: `https://<TU-DOMINIO-API-EN-RAILWAY>/webhooks/whatsapp`
|
|
38
|
+
3. **Verify Token**: `1773993bfa7e4f497e09092cc8b0f22c` (El valor de arriba).
|
|
39
|
+
4. Click **Verify and Save**. (Si falla, asegúrate de haber desplegado primero).
|
|
40
|
+
|
|
41
|
+
### Telegram Bot API
|
|
42
|
+
|
|
43
|
+
Ejecuta esto en tu navegador o terminal (reemplaza `<BOT_TOKEN>` y `<TU-DOMINIO>`):
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
curl -F "url=https://<TU-DOMINIO-API-EN-RAILWAY>/webhooks/telegram" \
|
|
47
|
+
-F "secret_token=68a4a187fda9e8bec935c38daa826ffdf5c1cc456d5177c49" \
|
|
48
|
+
https://api.telegram.org/bot<BOT_TOKEN>/setWebhook
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. Smoke Tests (Post-Deploy) 🕵️
|
|
54
|
+
|
|
55
|
+
Ejecuta estos comandos `curl` para validar que todo esté operando correctamente. Reemplaza `localhost` con tu dominio de prod si ya desplegaste.
|
|
56
|
+
|
|
57
|
+
**1. System Health (Público):**
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
curl https://<DOMINIO>/system/health
|
|
61
|
+
# Expected: {"status":"ok", "uptime":...}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**2. System Readiness (DB Check):**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
curl https://<DOMINIO>/system/ready
|
|
68
|
+
# Expected: {"status":"ready", "integrations":...}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**3. Admin Metrics (Protegido):**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Intento fallido (401)
|
|
75
|
+
curl -I https://<DOMINIO>/system/admin/metrics
|
|
76
|
+
|
|
77
|
+
# Intento exitoso (200)
|
|
78
|
+
curl -H "x-admin-key: 9b03e6028bbb01b40aebfecdf86b6025a74c6513ec25cc1cae0f8c3597d92" https://<DOMINIO>/system/admin/metrics
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 4. Risks & Rollback ⚠️
|
|
84
|
+
|
|
85
|
+
- **Riesgo 1**: Webhook de WhatsApp falla verificación.
|
|
86
|
+
- _Solución_: Revisa logs (`/admin/logs` si implementado) y verifica que el token coincida EXACTAMENTE.
|
|
87
|
+
- **Riesgo 2**: API Crachea por memoria.
|
|
88
|
+
- _Solución_: Revisa métricas en `/system/admin/metrics`. Si `memory.rss` > 512MB, considera escalar el plan en Railway.
|
|
89
|
+
- **Rollback**:
|
|
90
|
+
- En Railway/Render, usa el botón "Revert to previous commit" en la pestaña de Deployments.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 5. Documentation Deployment (GitHub Pages) 📚
|
|
95
|
+
|
|
96
|
+
La documentación del proyecto (`/docs`) se sirve automáticamente mediante GitHub Pages.
|
|
97
|
+
|
|
98
|
+
### Configuración de Dominio Personalizado
|
|
99
|
+
|
|
100
|
+
1. **Editar CNAME**:
|
|
101
|
+
- Modifica el archivo `docs/CNAME` con tu dominio real (ej: `docs.midominio.com` o `wadi.com`).
|
|
102
|
+
|
|
103
|
+
2. **Configurar DNS Provider**:
|
|
104
|
+
- Si usas un **Subdominio** (ej: `docs.midominio.com`):
|
|
105
|
+
- Crea un registro `CNAME` apuntando a `masosa96-hash.github.io`.
|
|
106
|
+
- Si usas el **Dominio Raíz** (ej: `midominio.com`):
|
|
107
|
+
- Crea 4 registros `A` apuntando a nuestras IPs de GitHub:
|
|
108
|
+
- `185.199.108.153`
|
|
109
|
+
- `185.199.109.153`
|
|
110
|
+
- `185.199.110.153`
|
|
111
|
+
- `185.199.111.153`
|
|
112
|
+
|
|
113
|
+
3. **Activar en GitHub**:
|
|
114
|
+
- Ve a `Settings` -> `Pages`.
|
|
115
|
+
- Asegúrate que `Custom domain` coincida con el contenido de tu archivo `CNAME`.
|
|
116
|
+
- Marca la casilla **Enforce HTTPS**.
|
|
117
|
+
|
|
118
|
+
### ⚠️ Notas Importantes (Troubleshooting)
|
|
119
|
+
|
|
120
|
+
- **Punto final en DNS**: Algunos proveedores de DNS requieren un punto final en el registro CNAME => `masosa96-hash.github.io.`
|
|
121
|
+
- **Visibilidad del Repo**: Para que GitHub Pages funcione en repositorios privados (como este), necesitas una cuenta Pro/Enterprise. Si no, el repositorio **debe ser público**.
|
|
122
|
+
- **Propagación**:
|
|
123
|
+
- GitHub Pages: ~10 minutos.
|
|
124
|
+
- DNS: 30 min hasta 48hs.
|
|
125
|
+
- **Acceso Directo**:
|
|
126
|
+
- GitHub: `https://masosa96-hash.github.io/WADINEW/`
|
|
127
|
+
- Custom: `https://wadi.tudominio.com`
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 🛑 CHECKLIST FINAL
|
|
132
|
+
|
|
133
|
+
Marca estos pasos a medida que avanzas:
|
|
134
|
+
|
|
135
|
+
- [ ] Secrets configurados en Cloud.
|
|
136
|
+
- [ ] Deploy exitoso (Build green).
|
|
137
|
+
- [ ] Webhook de WhatsApp Verificado (Green check).
|
|
138
|
+
- [ ] Smoke Test `/health` OK.
|
|
139
|
+
- [ ] Smoke Test `/ready` OK.
|
|
140
|
+
- [ ] Admin Access OK.
|
|
141
|
+
- [ ] Documentación accesible en URL pública.
|
|
142
|
+
|
|
143
|
+
¡Buena suerte con el lanzamiento! 🚀
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# WADI Go-Live Checklist 🚀
|
|
2
|
+
|
|
3
|
+
## Pre-Flight
|
|
4
|
+
|
|
5
|
+
### Security & Access
|
|
6
|
+
|
|
7
|
+
- [ ] **HTTPS Enforced**: Ensure SSL/TLS is active on all domains.
|
|
8
|
+
- [ ] **CORS Config**: `apps/api` allowing only specific origins (no `*`).
|
|
9
|
+
- [ ] **Secrets**: All ENV vars loaded in production (Supabase keys, OpenAI keys).
|
|
10
|
+
- [ ] **Admin Key**: `ADMIN_KEY` set (high entropy) for `/system/admin/metrics`.
|
|
11
|
+
|
|
12
|
+
### Data Consistency
|
|
13
|
+
|
|
14
|
+
- [ ] **Database**: Migrations up to date.
|
|
15
|
+
- [ ] **Backups**: PITR enabled or nightly dumps scheduled.
|
|
16
|
+
|
|
17
|
+
### Connectivity
|
|
18
|
+
|
|
19
|
+
- [ ] **WhatsApp**: Webhook URL configured in Meta dashboard -> `https://api.wadi.ai/webhooks/whatsapp`.
|
|
20
|
+
- [ ] **Telegram**: Webhook set via setWebhook -> `https://api.wadi.ai/webhooks/telegram`.
|
|
21
|
+
- [ ] **OpenAI**: Quota / Credit balance verified.
|
|
22
|
+
|
|
23
|
+
## Deployment
|
|
24
|
+
|
|
25
|
+
### CI/CD
|
|
26
|
+
|
|
27
|
+
- [ ] **Kivo**: Deploy Pipeline passed for `main`.
|
|
28
|
+
- [ ] **API**: Manual or Auto deploy succeeded on Railway/Render.
|
|
29
|
+
- [ ] **Frontend**: Deployed to Vercel/Netlify.
|
|
30
|
+
|
|
31
|
+
### Monitoring (Day 0)
|
|
32
|
+
|
|
33
|
+
- [ ] **Logs**: Receiving logs in dashboard.
|
|
34
|
+
- [ ] **Metrics**: `/system/health` returning 200 OK.
|
|
35
|
+
- [ ] **Alerts**: Test notification sent to Ops channel.
|
|
36
|
+
|
|
37
|
+
## Post-Launch (Day 1)
|
|
38
|
+
|
|
39
|
+
- [ ] **Traffic Analysis**: Check for unexpected spike/DoS.
|
|
40
|
+
- [ ] **Error Rate**: Monitor `5xx` errors closely.
|
|
41
|
+
- [ ] **User Feedback**: Check Kivo feedback logs.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 🟢 WADI PRODUCTION GO-LIVE REPORT
|
|
2
|
+
|
|
3
|
+
**Status**: OPERATIONAL (24/7)
|
|
4
|
+
**Timestamp**: 2025-12-06
|
|
5
|
+
**Version**: v1.0.1 (Nixpacks/pnpm)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. System Health 🩺
|
|
10
|
+
|
|
11
|
+
- **API Status**: ✅ Online
|
|
12
|
+
- **Uptime**: > 1 Hour (Continuous)
|
|
13
|
+
- **Endpoint**: `https://wadi-wxg7.onrender.com`
|
|
14
|
+
- **Healthcheck**: `GET /system/health` -> `200 OK`
|
|
15
|
+
|
|
16
|
+
## 2. Configuration Status ⚙️
|
|
17
|
+
|
|
18
|
+
| Component | Status | Configured Value |
|
|
19
|
+
| :------------------ | :--------- | :------------------------------------------------- |
|
|
20
|
+
| **Backend** | ✅ Active | Render (Nixpacks/Node) |
|
|
21
|
+
| **Frontend (Kivo)** | ✅ Linked | `API_URL` -> `https://wadi-wxg7.onrender.com` |
|
|
22
|
+
| **Dashboard** | ✅ Linked | `VITE_API_URL` -> `https://wadi-wxg7.onrender.com` |
|
|
23
|
+
| **CI/CD** | ✅ Enabled | Triggers on `master` (Live) |
|
|
24
|
+
| **Logging** | ✅ JSON | `@wadi/logger` active |
|
|
25
|
+
|
|
26
|
+
## 3. Operations Manual (USER ACTION REQUIRED) ✋
|
|
27
|
+
|
|
28
|
+
To ensure full functionality, you **MUST** perform these final manual steps in your external dashboards:
|
|
29
|
+
|
|
30
|
+
### A. Render Variables 🔐
|
|
31
|
+
|
|
32
|
+
Go to [Render Dashboard](https://dashboard.render.com/) > WADI Service > Environment and set:
|
|
33
|
+
|
|
34
|
+
```env
|
|
35
|
+
NODE_ENV=production
|
|
36
|
+
GROQ_API_KEY=gsk_... (Your Real Key)
|
|
37
|
+
GROQ_MODEL=llama-3.1-8b-instant
|
|
38
|
+
SUPABASE_URL=https://smkbiguvgiscojwxgbae.supabase.co
|
|
39
|
+
# NOTA: En el backend usamos la SERVICE KEY (la larga que empieza con eyJ...RoleIsIm...)
|
|
40
|
+
SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNta2JpZ3V2Z2lzY29qd3hnYmFlIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTc2MzQxMTgyMywiZXhwIjoyMDc4OTg3ODIzfQ.uDFNhOGqGb4kv3DWcVHdRoPjCSUhL_IJURaTRtqJZNE
|
|
41
|
+
ADMIN_KEY=9b03e6028bbb01b40aebfecdf86b6025a74c6513ec25cc1cae0f8c3597d92
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
_(The service will auto-restart when you save these)._
|
|
45
|
+
|
|
46
|
+
### B. (Removed)
|
|
47
|
+
|
|
48
|
+
WhatsApp and Telegram integrations have been temporarily disabled.
|
|
49
|
+
|
|
50
|
+
## 4. Next Steps 🚀
|
|
51
|
+
|
|
52
|
+
- Monitor logs in Railway for the first 24h.
|
|
53
|
+
- Share the Kivo URL with users.
|
|
54
|
+
- Relax! WADI is taking care of the rest.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# WADI Final Go-Live Validation Checklist 🚀
|
|
2
|
+
|
|
3
|
+
## 1. Verificación de Deployment (Render) ✅
|
|
4
|
+
|
|
5
|
+
- [ ] **Build Status**: Confirmar que el deploy en Render fue exitoso.
|
|
6
|
+
- [ ] **Logs de Arranque**: Buscar que el servidor escuche en `0.0.0.0`.
|
|
7
|
+
- [ ] **Health Check**: `https://wadi-wxg7.onrender.com/system/health` responde `200 OK`.
|
|
8
|
+
|
|
9
|
+
## 2. Configuración de Variables (Production Environment) 🔐
|
|
10
|
+
|
|
11
|
+
Asegurar que las siguientes variables están definidas en el dashboard de Render:
|
|
12
|
+
|
|
13
|
+
| Variable | Estado Ideal | Validado? |
|
|
14
|
+
| :------------- | :--------------------------------- | :-------- |
|
|
15
|
+
| `NODE_ENV` | `production` | [ ] |
|
|
16
|
+
| `GROQ_API_KEY` | `gsk_...` (Groq API) | [ ] |
|
|
17
|
+
| `SUPABASE_URL` | `https://<PROJECT-ID>.supabase.co` | [ ] |
|
|
18
|
+
| `SUPABASE_KEY` | _(Service Role Key)_ | [ ] |
|
|
19
|
+
|
|
20
|
+
## 3. Pruebas de Salud (Smoke Tests) 🩺
|
|
21
|
+
|
|
22
|
+
Ejecutar desde terminal local o navegador:
|
|
23
|
+
|
|
24
|
+
1. **Status General**: `curl https://wadi-wxg7.onrender.com/api` (404 expected or json info)
|
|
25
|
+
|
|
26
|
+
2. **Health Check**: `curl https://wadi-wxg7.onrender.com/system/health` -> `{"status":"ok",...}`
|
|
27
|
+
|
|
28
|
+
## 4. (Removed)
|
|
29
|
+
|
|
30
|
+
Webhooks removed per user request.
|
|
31
|
+
|
|
32
|
+
## 5. Monitorización Post-Deploy 👁️
|
|
33
|
+
|
|
34
|
+
- [ ] Revisar panel de logs 10 minutos después del deploy para detectar errores silenciosos.
|
|
35
|
+
- [ ] Confirmar que Kivo (Frontend) puede conectar con el Backend (No errores CORS).
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
**Estado Final**: GO / NO-GO
|