@cachly-dev/mcp-server 0.10.49 → 0.10.56
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/.github/workflows/publish.yml +2 -2
- package/README.md +33 -5
- package/dist/__tests__/auth.test.js.map +1 -0
- package/dist/{src/__tests__ → __tests__}/brain-flow.test.js +0 -141
- package/dist/__tests__/brain-flow.test.js.map +1 -0
- package/dist/__tests__/brain-predict-failures.test.d.ts +17 -0
- package/dist/__tests__/brain-predict-failures.test.js +339 -0
- package/dist/__tests__/brain-predict-failures.test.js.map +1 -0
- package/dist/__tests__/confidence.test.js.map +1 -0
- package/dist/__tests__/e2e/api-auth.test.js.map +1 -0
- package/dist/__tests__/e2e/api-health.test.js.map +1 -0
- package/dist/__tests__/e2e/cli.test.js.map +1 -0
- package/dist/__tests__/e2e/config.js.map +1 -0
- package/dist/__tests__/e2e/funnel.test.js.map +1 -0
- package/dist/__tests__/e2e/mcp-tools.test.js.map +1 -0
- package/dist/__tests__/e2e/provisioning.test.js.map +1 -0
- package/dist/{src/__tests__ → __tests__}/handlers-unit.test.js +2 -0
- package/dist/__tests__/handlers-unit.test.js.map +1 -0
- package/dist/__tests__/namespace.test.js.map +1 -0
- package/dist/auth.js.map +1 -0
- package/dist/ckg.js.map +1 -0
- package/dist/confidence.js.map +1 -0
- package/dist/embeddings.js.map +1 -0
- package/dist/handlers/advanced.js.map +1 -0
- package/dist/{src/handlers → handlers}/brain.js +141 -135
- package/dist/handlers/brain.js.map +1 -0
- package/dist/handlers/cache.js.map +1 -0
- package/dist/{src/handlers → handlers}/context.js +4 -9
- package/dist/handlers/context.js.map +1 -0
- package/dist/{src/handlers → handlers}/fedbrain.d.ts +0 -6
- package/dist/{src/handlers → handlers}/fedbrain.js +7 -19
- package/dist/handlers/fedbrain.js.map +1 -0
- package/dist/handlers/instances.js.map +1 -0
- package/dist/{src/handlers → handlers}/roadmap.js +3 -7
- package/dist/handlers/roadmap.js.map +1 -0
- package/dist/handlers/syndicate.js.map +1 -0
- package/dist/{src/handlers → handlers}/team.js +3 -1
- package/dist/handlers/team.js.map +1 -0
- package/dist/{src/index.js → index.js} +428 -206
- package/dist/index.js.map +1 -0
- package/dist/namespace.js.map +1 -0
- package/dist/search.js.map +1 -0
- package/dist/search.test.js.map +1 -0
- package/dist/{src/tools.d.ts → tools.d.ts} +0 -196
- package/dist/{src/tools.js → tools.js} +0 -178
- package/dist/tools.js.map +1 -0
- package/dist/utils.js.map +1 -0
- package/package.json +3 -3
- package/smithery.yaml +16 -27
- package/src/__tests__/brain-flow.test.ts +0 -174
- package/src/__tests__/brain-predict-failures.test.ts +430 -0
- package/src/__tests__/handlers-unit.test.ts +2 -1
- package/src/handlers/brain.ts +142 -142
- package/src/handlers/context.ts +4 -9
- package/src/handlers/fedbrain.ts +7 -21
- package/src/handlers/roadmap.ts +3 -7
- package/src/handlers/team.ts +3 -1
- package/src/index.ts +415 -221
- package/src/tools.ts +0 -191
- package/tsconfig.json +3 -2
- package/.github/workflows/eas-build-android.yml +0 -58
- package/.github/workflows/eas-update.yml +0 -55
- package/STRATEGY.md +0 -209
- package/apps/travel-chaos-organizer/.env.example +0 -49
- package/apps/travel-chaos-organizer/DEPLOY.md +0 -328
- package/apps/travel-chaos-organizer/Makefile +0 -57
- package/apps/travel-chaos-organizer/README.md +0 -159
- package/apps/travel-chaos-organizer/backend/.env.example +0 -10
- package/apps/travel-chaos-organizer/backend/Dockerfile +0 -25
- package/apps/travel-chaos-organizer/backend/alembic/env.py +0 -56
- package/apps/travel-chaos-organizer/backend/alembic/script.py.mako +0 -24
- package/apps/travel-chaos-organizer/backend/alembic/versions/.gitkeep +0 -0
- package/apps/travel-chaos-organizer/backend/alembic/versions/0001_stripe_customer_id.py +0 -24
- package/apps/travel-chaos-organizer/backend/alembic/versions/0002_telegram_chat_id.py +0 -24
- package/apps/travel-chaos-organizer/backend/alembic.ini +0 -39
- package/apps/travel-chaos-organizer/backend/app/__init__.py +0 -0
- package/apps/travel-chaos-organizer/backend/app/auth/__init__.py +0 -0
- package/apps/travel-chaos-organizer/backend/app/auth/keycloak.py +0 -81
- package/apps/travel-chaos-organizer/backend/app/config.py +0 -66
- package/apps/travel-chaos-organizer/backend/app/db/__init__.py +0 -0
- package/apps/travel-chaos-organizer/backend/app/db/database.py +0 -20
- package/apps/travel-chaos-organizer/backend/app/db/migrations/001_init.sql +0 -71
- package/apps/travel-chaos-organizer/backend/app/db/migrations/002_telemetry_freemium.sql +0 -31
- package/apps/travel-chaos-organizer/backend/app/db/migrations/003_telegram_chat_id.sql +0 -4
- package/apps/travel-chaos-organizer/backend/app/db/migrations/004_stripe_and_email.sql +0 -5
- package/apps/travel-chaos-organizer/backend/app/limiter.py +0 -4
- package/apps/travel-chaos-organizer/backend/app/logging_config.py +0 -25
- package/apps/travel-chaos-organizer/backend/app/main.py +0 -77
- package/apps/travel-chaos-organizer/backend/app/models/__init__.py +0 -0
- package/apps/travel-chaos-organizer/backend/app/models/schemas.py +0 -142
- package/apps/travel-chaos-organizer/backend/app/routers/__init__.py +0 -0
- package/apps/travel-chaos-organizer/backend/app/routers/admin.py +0 -237
- package/apps/travel-chaos-organizer/backend/app/routers/cache.py +0 -13
- package/apps/travel-chaos-organizer/backend/app/routers/events.py +0 -29
- package/apps/travel-chaos-organizer/backend/app/routers/export.py +0 -122
- package/apps/travel-chaos-organizer/backend/app/routers/inbox.py +0 -122
- package/apps/travel-chaos-organizer/backend/app/routers/items.py +0 -130
- package/apps/travel-chaos-organizer/backend/app/routers/mail.py +0 -108
- package/apps/travel-chaos-organizer/backend/app/routers/parse.py +0 -303
- package/apps/travel-chaos-organizer/backend/app/routers/payments.py +0 -179
- package/apps/travel-chaos-organizer/backend/app/routers/trips.py +0 -134
- package/apps/travel-chaos-organizer/backend/app/routers/users.py +0 -169
- package/apps/travel-chaos-organizer/backend/app/routers/waitlist.py +0 -37
- package/apps/travel-chaos-organizer/backend/app/services/__init__.py +0 -0
- package/apps/travel-chaos-organizer/backend/app/services/cache.py +0 -131
- package/apps/travel-chaos-organizer/backend/app/services/drip.py +0 -128
- package/apps/travel-chaos-organizer/backend/app/services/email.py +0 -61
- package/apps/travel-chaos-organizer/backend/app/services/errors.py +0 -44
- package/apps/travel-chaos-organizer/backend/app/services/notifier.py +0 -10
- package/apps/travel-chaos-organizer/backend/app/services/ollama.py +0 -101
- package/apps/travel-chaos-organizer/backend/app/services/parser.py +0 -22
- package/apps/travel-chaos-organizer/backend/app/services/quota.py +0 -85
- package/apps/travel-chaos-organizer/backend/app/services/sentry.py +0 -11
- package/apps/travel-chaos-organizer/backend/app/services/telemetry.py +0 -35
- package/apps/travel-chaos-organizer/backend/pytest.ini +0 -4
- package/apps/travel-chaos-organizer/backend/requirements-dev.txt +0 -6
- package/apps/travel-chaos-organizer/backend/requirements.txt +0 -25
- package/apps/travel-chaos-organizer/backend/tests/__init__.py +0 -0
- package/apps/travel-chaos-organizer/backend/tests/conftest.py +0 -223
- package/apps/travel-chaos-organizer/backend/tests/test_admin.py +0 -99
- package/apps/travel-chaos-organizer/backend/tests/test_cache.py +0 -142
- package/apps/travel-chaos-organizer/backend/tests/test_drip.py +0 -32
- package/apps/travel-chaos-organizer/backend/tests/test_e2e_chain.py +0 -121
- package/apps/travel-chaos-organizer/backend/tests/test_export.py +0 -48
- package/apps/travel-chaos-organizer/backend/tests/test_inbox.py +0 -107
- package/apps/travel-chaos-organizer/backend/tests/test_items.py +0 -138
- package/apps/travel-chaos-organizer/backend/tests/test_mail.py +0 -113
- package/apps/travel-chaos-organizer/backend/tests/test_ollama.py +0 -145
- package/apps/travel-chaos-organizer/backend/tests/test_parse_url.py +0 -98
- package/apps/travel-chaos-organizer/backend/tests/test_parser.py +0 -72
- package/apps/travel-chaos-organizer/backend/tests/test_payments.py +0 -163
- package/apps/travel-chaos-organizer/backend/tests/test_quota.py +0 -46
- package/apps/travel-chaos-organizer/backend/tests/test_search.py +0 -67
- package/apps/travel-chaos-organizer/backend/tests/test_trips.py +0 -123
- package/apps/travel-chaos-organizer/backend/tests/test_users.py +0 -52
- package/apps/travel-chaos-organizer/backups/.gitkeep +0 -0
- package/apps/travel-chaos-organizer/caddy/Caddyfile +0 -27
- package/apps/travel-chaos-organizer/docker-compose.node1.yml +0 -31
- package/apps/travel-chaos-organizer/docker-compose.override.yml +0 -14
- package/apps/travel-chaos-organizer/docker-compose.yml +0 -128
- package/apps/travel-chaos-organizer/frontend/.env.example +0 -13
- package/apps/travel-chaos-organizer/frontend/app/(app)/_layout.tsx +0 -80
- package/apps/travel-chaos-organizer/frontend/app/(app)/inbox.tsx +0 -166
- package/apps/travel-chaos-organizer/frontend/app/(app)/search.tsx +0 -130
- package/apps/travel-chaos-organizer/frontend/app/(app)/settings.tsx +0 -381
- package/apps/travel-chaos-organizer/frontend/app/(app)/trips/[id].tsx +0 -346
- package/apps/travel-chaos-organizer/frontend/app/(app)/trips.tsx +0 -363
- package/apps/travel-chaos-organizer/frontend/app/(app)/upgrade/cancel.tsx +0 -34
- package/apps/travel-chaos-organizer/frontend/app/(app)/upgrade/success.tsx +0 -35
- package/apps/travel-chaos-organizer/frontend/app/(auth)/login.tsx +0 -91
- package/apps/travel-chaos-organizer/frontend/app/_layout.tsx +0 -71
- package/apps/travel-chaos-organizer/frontend/app/auth.tsx +0 -29
- package/apps/travel-chaos-organizer/frontend/app/index.tsx +0 -16
- package/apps/travel-chaos-organizer/frontend/app/onboarding.tsx +0 -119
- package/apps/travel-chaos-organizer/frontend/app.config.ts +0 -54
- package/apps/travel-chaos-organizer/frontend/assets/adaptive-icon.svg +0 -66
- package/apps/travel-chaos-organizer/frontend/assets/icon.svg +0 -79
- package/apps/travel-chaos-organizer/frontend/assets/splash.svg +0 -15
- package/apps/travel-chaos-organizer/frontend/components/BottomSheet.tsx +0 -102
- package/apps/travel-chaos-organizer/frontend/components/ConfettiCannon.tsx +0 -107
- package/apps/travel-chaos-organizer/frontend/components/ConfirmDialog.tsx +0 -109
- package/apps/travel-chaos-organizer/frontend/components/ErrorBoundary.tsx +0 -45
- package/apps/travel-chaos-organizer/frontend/components/FileUploadButton.tsx +0 -19
- package/apps/travel-chaos-organizer/frontend/components/ImportSheet.tsx +0 -155
- package/apps/travel-chaos-organizer/frontend/components/OfflineBadge.tsx +0 -55
- package/apps/travel-chaos-organizer/frontend/components/QRCodeViewer.tsx +0 -80
- package/apps/travel-chaos-organizer/frontend/components/ScoreRing.tsx +0 -39
- package/apps/travel-chaos-organizer/frontend/components/Screen.tsx +0 -39
- package/apps/travel-chaos-organizer/frontend/components/Skeleton.tsx +0 -70
- package/apps/travel-chaos-organizer/frontend/components/SwipeableInboxItem.tsx +0 -121
- package/apps/travel-chaos-organizer/frontend/components/SwipeableTimelineItem.tsx +0 -70
- package/apps/travel-chaos-organizer/frontend/components/TimelineItem.tsx +0 -73
- package/apps/travel-chaos-organizer/frontend/components/TimelineItemDetail.tsx +0 -130
- package/apps/travel-chaos-organizer/frontend/components/Toast.tsx +0 -60
- package/apps/travel-chaos-organizer/frontend/components/ToastContext.tsx +0 -42
- package/apps/travel-chaos-organizer/frontend/components/TripCard.tsx +0 -146
- package/apps/travel-chaos-organizer/frontend/components/TripQRModal.tsx +0 -70
- package/apps/travel-chaos-organizer/frontend/components/UpgradeBanner.tsx +0 -44
- package/apps/travel-chaos-organizer/frontend/eas.json +0 -22
- package/apps/travel-chaos-organizer/frontend/hooks/useInbox.ts +0 -24
- package/apps/travel-chaos-organizer/frontend/hooks/useNetworkSync.ts +0 -60
- package/apps/travel-chaos-organizer/frontend/hooks/useTrips.ts +0 -112
- package/apps/travel-chaos-organizer/frontend/lib/api.ts +0 -223
- package/apps/travel-chaos-organizer/frontend/lib/auth.ts +0 -93
- package/apps/travel-chaos-organizer/frontend/lib/db.ts +0 -86
- package/apps/travel-chaos-organizer/frontend/lib/fileCache.ts +0 -54
- package/apps/travel-chaos-organizer/frontend/lib/haptics.ts +0 -13
- package/apps/travel-chaos-organizer/frontend/lib/notifications.ts +0 -112
- package/apps/travel-chaos-organizer/frontend/lib/offlineQueue.ts +0 -145
- package/apps/travel-chaos-organizer/frontend/lib/quota.tsx +0 -43
- package/apps/travel-chaos-organizer/frontend/lib/sentry.ts +0 -28
- package/apps/travel-chaos-organizer/frontend/lib/shareIntent.ts +0 -44
- package/apps/travel-chaos-organizer/frontend/package-lock.json +0 -13037
- package/apps/travel-chaos-organizer/frontend/package.json +0 -44
- package/apps/travel-chaos-organizer/frontend/tsconfig.json +0 -23
- package/apps/travel-chaos-organizer/keycloak/realm-export.json +0 -59
- package/apps/travel-chaos-organizer/landing/index.html +0 -773
- package/apps/travel-chaos-organizer/scripts/backup.sh +0 -14
- package/apps/travel-chaos-organizer/scripts/configure-env.sh +0 -82
- package/apps/travel-chaos-organizer/scripts/deploy.sh +0 -54
- package/apps/travel-chaos-organizer/scripts/health-check.sh +0 -36
- package/apps/travel-chaos-organizer/scripts/migrate.sh +0 -7
- package/apps/travel-chaos-organizer/scripts/server-setup.sh +0 -85
- package/apps/travel-chaos-organizer/scripts/smoke-test.sh +0 -29
- package/apps/travel-chaos-organizer/scripts/verify-tracking.sh +0 -71
- package/apps/travel-chaos-organizer/telegram-bot/.env.example +0 -3
- package/apps/travel-chaos-organizer/telegram-bot/Dockerfile +0 -6
- package/apps/travel-chaos-organizer/telegram-bot/bot.py +0 -504
- package/apps/travel-chaos-organizer/telegram-bot/requirements.txt +0 -3
- package/dist/packages/telegram-notify/client.d.ts +0 -19
- package/dist/packages/telegram-notify/client.js +0 -75
- package/dist/packages/telegram-notify/client.js.map +0 -1
- package/dist/src/__tests__/auth.test.js.map +0 -1
- package/dist/src/__tests__/brain-flow.test.js.map +0 -1
- package/dist/src/__tests__/confidence.test.js.map +0 -1
- package/dist/src/__tests__/e2e/api-auth.test.js.map +0 -1
- package/dist/src/__tests__/e2e/api-health.test.js.map +0 -1
- package/dist/src/__tests__/e2e/cli.test.js.map +0 -1
- package/dist/src/__tests__/e2e/config.js.map +0 -1
- package/dist/src/__tests__/e2e/funnel.test.js.map +0 -1
- package/dist/src/__tests__/e2e/mcp-tools.test.js.map +0 -1
- package/dist/src/__tests__/e2e/provisioning.test.js.map +0 -1
- package/dist/src/__tests__/handlers-unit.test.js.map +0 -1
- package/dist/src/__tests__/namespace.test.js.map +0 -1
- package/dist/src/auth.js.map +0 -1
- package/dist/src/ckg.js.map +0 -1
- package/dist/src/confidence.js.map +0 -1
- package/dist/src/embeddings.js.map +0 -1
- package/dist/src/handlers/advanced.js.map +0 -1
- package/dist/src/handlers/brain.js.map +0 -1
- package/dist/src/handlers/cache.js.map +0 -1
- package/dist/src/handlers/context.js.map +0 -1
- package/dist/src/handlers/fedbrain.js.map +0 -1
- package/dist/src/handlers/instances.js.map +0 -1
- package/dist/src/handlers/roadmap.js.map +0 -1
- package/dist/src/handlers/syndicate.js.map +0 -1
- package/dist/src/handlers/tco.d.ts +0 -16
- package/dist/src/handlers/tco.js +0 -303
- package/dist/src/handlers/tco.js.map +0 -1
- package/dist/src/handlers/team.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/namespace.js.map +0 -1
- package/dist/src/notifier.d.ts +0 -5
- package/dist/src/notifier.js +0 -6
- package/dist/src/notifier.js.map +0 -1
- package/dist/src/search.js.map +0 -1
- package/dist/src/search.test.js.map +0 -1
- package/dist/src/tools.js.map +0 -1
- package/dist/src/utils.js.map +0 -1
- package/packages/telegram-notify/SPLIT_PLAN.md +0 -106
- package/packages/telegram-notify/client.ts +0 -88
- package/packages/telegram-notify/emojis.json +0 -22
- package/packages/telegram-notify/pyproject.toml +0 -17
- package/packages/telegram-notify/telegram_notify/__init__.py +0 -3
- package/packages/telegram-notify/telegram_notify/client.py +0 -87
- package/packages/telegram-notify/telegram_notify/emojis.json +0 -22
- package/scripts/generate-icons.js +0 -28
- package/src/handlers/tco.ts +0 -347
- package/src/notifier.ts +0 -5
- /package/dist/{src/__tests__ → __tests__}/auth.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/auth.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/brain-flow.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/confidence.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/confidence.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/api-auth.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/api-auth.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/api-health.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/api-health.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/cli.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/cli.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/config.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/config.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/funnel.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/funnel.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/mcp-tools.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/mcp-tools.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/provisioning.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/e2e/provisioning.test.js +0 -0
- /package/dist/{src/__tests__ → __tests__}/handlers-unit.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/namespace.test.d.ts +0 -0
- /package/dist/{src/__tests__ → __tests__}/namespace.test.js +0 -0
- /package/dist/{src/auth.d.ts → auth.d.ts} +0 -0
- /package/dist/{src/auth.js → auth.js} +0 -0
- /package/dist/{src/ckg.d.ts → ckg.d.ts} +0 -0
- /package/dist/{src/ckg.js → ckg.js} +0 -0
- /package/dist/{src/confidence.d.ts → confidence.d.ts} +0 -0
- /package/dist/{src/confidence.js → confidence.js} +0 -0
- /package/dist/{src/embeddings.d.ts → embeddings.d.ts} +0 -0
- /package/dist/{src/embeddings.js → embeddings.js} +0 -0
- /package/dist/{src/handlers → handlers}/advanced.d.ts +0 -0
- /package/dist/{src/handlers → handlers}/advanced.js +0 -0
- /package/dist/{src/handlers → handlers}/brain.d.ts +0 -0
- /package/dist/{src/handlers → handlers}/cache.d.ts +0 -0
- /package/dist/{src/handlers → handlers}/cache.js +0 -0
- /package/dist/{src/handlers → handlers}/context.d.ts +0 -0
- /package/dist/{src/handlers → handlers}/instances.d.ts +0 -0
- /package/dist/{src/handlers → handlers}/instances.js +0 -0
- /package/dist/{src/handlers → handlers}/roadmap.d.ts +0 -0
- /package/dist/{src/handlers → handlers}/syndicate.d.ts +0 -0
- /package/dist/{src/handlers → handlers}/syndicate.js +0 -0
- /package/dist/{src/handlers → handlers}/team.d.ts +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/namespace.d.ts → namespace.d.ts} +0 -0
- /package/dist/{src/namespace.js → namespace.js} +0 -0
- /package/dist/{src/search.d.ts → search.d.ts} +0 -0
- /package/dist/{src/search.js → search.js} +0 -0
- /package/dist/{src/search.test.d.ts → search.test.d.ts} +0 -0
- /package/dist/{src/search.test.js → search.test.js} +0 -0
- /package/dist/{src/utils.d.ts → utils.d.ts} +0 -0
- /package/dist/{src/utils.js → utils.js} +0 -0
package/src/tools.ts
CHANGED
|
@@ -1729,197 +1729,6 @@ const TOOLS = [
|
|
|
1729
1729
|
required: ['instance_id', 'context'],
|
|
1730
1730
|
},
|
|
1731
1731
|
},
|
|
1732
|
-
|
|
1733
|
-
// ── Travel Chaos Organizer (TCO) ─────────────────────────────────────────
|
|
1734
|
-
// Requires TCO_API_URL env var pointing to the TCO FastAPI backend.
|
|
1735
|
-
// Auth is shared with Cachly via the same Keycloak realm (CACHLY_JWT forwarded).
|
|
1736
|
-
{
|
|
1737
|
-
name: 'tco_list_trips',
|
|
1738
|
-
description:
|
|
1739
|
-
'List all travel trips in Travel Chaos Organizer. ' +
|
|
1740
|
-
'Returns trip name, id, and date range. Use tco_get_timeline to see items for a specific trip. ' +
|
|
1741
|
-
'Requires TCO_API_URL to be configured.',
|
|
1742
|
-
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
1743
|
-
},
|
|
1744
|
-
{
|
|
1745
|
-
name: 'tco_create_trip',
|
|
1746
|
-
description:
|
|
1747
|
-
'Create a new trip in Travel Chaos Organizer. ' +
|
|
1748
|
-
'Dates are optional ISO strings (YYYY-MM-DD). ' +
|
|
1749
|
-
'Returns the new trip id.',
|
|
1750
|
-
inputSchema: {
|
|
1751
|
-
type: 'object',
|
|
1752
|
-
properties: {
|
|
1753
|
-
name: { type: 'string', description: 'Trip name, e.g. "Barcelona Sommer 2025"' },
|
|
1754
|
-
description: { type: 'string', description: 'Optional trip description' },
|
|
1755
|
-
start_date: { type: 'string', description: 'Start date (YYYY-MM-DD), optional' },
|
|
1756
|
-
end_date: { type: 'string', description: 'End date (YYYY-MM-DD), optional' },
|
|
1757
|
-
},
|
|
1758
|
-
required: ['name'],
|
|
1759
|
-
},
|
|
1760
|
-
},
|
|
1761
|
-
{
|
|
1762
|
-
name: 'tco_get_timeline',
|
|
1763
|
-
description:
|
|
1764
|
-
'Get the full timeline (flights, hotels, trains, activities …) for a trip. ' +
|
|
1765
|
-
'Use tco_list_trips first to get the trip_id. ' +
|
|
1766
|
-
'Returns items sorted by event_at with type icon, time, provider, and booking reference.',
|
|
1767
|
-
inputSchema: {
|
|
1768
|
-
type: 'object',
|
|
1769
|
-
properties: {
|
|
1770
|
-
trip_id: { type: 'string', description: 'UUID of the trip (from tco_list_trips)' },
|
|
1771
|
-
},
|
|
1772
|
-
required: ['trip_id'],
|
|
1773
|
-
},
|
|
1774
|
-
},
|
|
1775
|
-
{
|
|
1776
|
-
name: 'tco_delete_trip',
|
|
1777
|
-
description: 'Permanently delete a trip and all its timeline items. This is irreversible.',
|
|
1778
|
-
inputSchema: {
|
|
1779
|
-
type: 'object',
|
|
1780
|
-
properties: {
|
|
1781
|
-
trip_id: { type: 'string', description: 'UUID of the trip to delete' },
|
|
1782
|
-
},
|
|
1783
|
-
required: ['trip_id'],
|
|
1784
|
-
},
|
|
1785
|
-
},
|
|
1786
|
-
{
|
|
1787
|
-
name: 'tco_inbox_list',
|
|
1788
|
-
description:
|
|
1789
|
-
'List items in the Travel Chaos Organizer Chaos Inbox — unassigned documents, ' +
|
|
1790
|
-
'emails, and PDFs that Ollama has parsed but not yet assigned to a trip. ' +
|
|
1791
|
-
'Use tco_inbox_assign to move them to a trip or tco_inbox_reject to discard.',
|
|
1792
|
-
inputSchema: {
|
|
1793
|
-
type: 'object',
|
|
1794
|
-
properties: {
|
|
1795
|
-
status: {
|
|
1796
|
-
type: 'string',
|
|
1797
|
-
enum: ['pending', 'assigned', 'rejected'],
|
|
1798
|
-
description: 'Filter by status (default: pending)',
|
|
1799
|
-
},
|
|
1800
|
-
},
|
|
1801
|
-
required: [],
|
|
1802
|
-
},
|
|
1803
|
-
},
|
|
1804
|
-
{
|
|
1805
|
-
name: 'tco_inbox_assign',
|
|
1806
|
-
description:
|
|
1807
|
-
'Assign a Chaos Inbox item to an existing trip, creating a timeline entry. ' +
|
|
1808
|
-
'Use tco_inbox_list to discover inbox_id values and tco_list_trips for trip_ids.',
|
|
1809
|
-
inputSchema: {
|
|
1810
|
-
type: 'object',
|
|
1811
|
-
properties: {
|
|
1812
|
-
inbox_id: { type: 'string', description: 'UUID of the inbox item' },
|
|
1813
|
-
trip_id: { type: 'string', description: 'UUID of the target trip' },
|
|
1814
|
-
type: {
|
|
1815
|
-
type: 'string',
|
|
1816
|
-
enum: ['flight', 'train', 'bus', 'hotel', 'rental_car', 'activity', 'transfer', 'document', 'other'],
|
|
1817
|
-
description: 'Item type (default: other)',
|
|
1818
|
-
},
|
|
1819
|
-
},
|
|
1820
|
-
required: ['inbox_id', 'trip_id'],
|
|
1821
|
-
},
|
|
1822
|
-
},
|
|
1823
|
-
{
|
|
1824
|
-
name: 'tco_inbox_reject',
|
|
1825
|
-
description: 'Remove an item from the Chaos Inbox without assigning it to any trip.',
|
|
1826
|
-
inputSchema: {
|
|
1827
|
-
type: 'object',
|
|
1828
|
-
properties: {
|
|
1829
|
-
inbox_id: { type: 'string', description: 'UUID of the inbox item to reject' },
|
|
1830
|
-
},
|
|
1831
|
-
required: ['inbox_id'],
|
|
1832
|
-
},
|
|
1833
|
-
},
|
|
1834
|
-
{
|
|
1835
|
-
name: 'tco_parse_url',
|
|
1836
|
-
description:
|
|
1837
|
-
'Fetch a public URL (booking confirmation page, airline URL) and parse it with Ollama AI, ' +
|
|
1838
|
-
'saving the result directly to a trip timeline or the Chaos Inbox. ' +
|
|
1839
|
-
'Useful for quickly importing online booking confirmations without uploading a file.',
|
|
1840
|
-
inputSchema: {
|
|
1841
|
-
type: 'object',
|
|
1842
|
-
properties: {
|
|
1843
|
-
url: { type: 'string', description: 'Public URL to fetch and parse' },
|
|
1844
|
-
trip_id: { type: 'string', description: 'Trip UUID to assign to directly (omit to send to Chaos Inbox)' },
|
|
1845
|
-
},
|
|
1846
|
-
required: ['url'],
|
|
1847
|
-
},
|
|
1848
|
-
},
|
|
1849
|
-
{
|
|
1850
|
-
name: 'tco_import_email',
|
|
1851
|
-
description:
|
|
1852
|
-
'Import a raw email (paste the full email text including headers) into Travel Chaos Organizer. ' +
|
|
1853
|
-
'Ollama strips headers, parses travel data (flights, hotels, bookings), and saves to inbox or trip. ' +
|
|
1854
|
-
'Ideal for forwarding booking confirmation emails directly through Claude.',
|
|
1855
|
-
inputSchema: {
|
|
1856
|
-
type: 'object',
|
|
1857
|
-
properties: {
|
|
1858
|
-
raw_email: { type: 'string', description: 'Full email text including headers' },
|
|
1859
|
-
trip_id: { type: 'string', description: 'Trip UUID to assign directly (omit to send to Chaos Inbox)' },
|
|
1860
|
-
},
|
|
1861
|
-
required: ['raw_email'],
|
|
1862
|
-
},
|
|
1863
|
-
},
|
|
1864
|
-
{
|
|
1865
|
-
name: 'tco_parse_text',
|
|
1866
|
-
description:
|
|
1867
|
-
'Parse raw text (booking confirmation, itinerary, travel note) with Ollama AI in Travel Chaos Organizer. ' +
|
|
1868
|
-
'Extracts flight, hotel, train, activity and other travel data. ' +
|
|
1869
|
-
'Results are cached in Cachly Redis — identical text returns instantly without a second AI call. ' +
|
|
1870
|
-
'Saves to a specific trip timeline or to the Chaos Inbox if no trip_id is given.',
|
|
1871
|
-
inputSchema: {
|
|
1872
|
-
type: 'object',
|
|
1873
|
-
properties: {
|
|
1874
|
-
text: { type: 'string', description: 'Raw text to parse (booking confirmation, itinerary, etc.)' },
|
|
1875
|
-
trip_id: { type: 'string', description: 'Trip UUID to assign directly (omit to send to Chaos Inbox)' },
|
|
1876
|
-
},
|
|
1877
|
-
required: ['text'],
|
|
1878
|
-
},
|
|
1879
|
-
},
|
|
1880
|
-
{
|
|
1881
|
-
name: 'tco_cache_stats',
|
|
1882
|
-
description:
|
|
1883
|
-
'Get Cachly Redis cache statistics for the TCO backend. ' +
|
|
1884
|
-
'Shows how many AI parse results are cached, the cache hit rate, and whether Cachly is connected. ' +
|
|
1885
|
-
'Use this to verify the TCO ↔ Cachly integration is working or to report savings to the user.',
|
|
1886
|
-
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
1887
|
-
},
|
|
1888
|
-
{
|
|
1889
|
-
name: 'tco_provision_cache',
|
|
1890
|
-
description:
|
|
1891
|
-
'Provision a free Cachly Redis instance for Travel Chaos Organizer and return the connection string. ' +
|
|
1892
|
-
'Creates a "tco-cache" instance on cachly.dev (free tier, 25 MB — enough for thousands of parse results). ' +
|
|
1893
|
-
'After provisioning, instruct the user to set CACHLY_REDIS_URL=<returned URL> in their TCO .env and redeploy. ' +
|
|
1894
|
-
'This wires TCO to Cachly so every Ollama parse result is deduplicated automatically.',
|
|
1895
|
-
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
1896
|
-
},
|
|
1897
|
-
{
|
|
1898
|
-
name: 'tco_telegram_status',
|
|
1899
|
-
description:
|
|
1900
|
-
'Check if the current user has linked their Telegram account in Travel Chaos Organizer. ' +
|
|
1901
|
-
'Returns linked status, plan, and guidance to link if not yet connected. ' +
|
|
1902
|
-
'Use before tco_telegram_send to confirm the user will actually receive the message.',
|
|
1903
|
-
inputSchema: { type: 'object', properties: {}, required: [] },
|
|
1904
|
-
},
|
|
1905
|
-
{
|
|
1906
|
-
name: 'tco_telegram_send',
|
|
1907
|
-
description:
|
|
1908
|
-
'Send a Telegram message directly to the current TCO user\'s linked Telegram chat. ' +
|
|
1909
|
-
'Supports Markdown formatting. Use for: summaries, reminders, trip updates, parse results. ' +
|
|
1910
|
-
'Requires the user to have linked Telegram (check with tco_telegram_status first). ' +
|
|
1911
|
-
'Ideal for pushing trip information to the user outside the app.',
|
|
1912
|
-
inputSchema: {
|
|
1913
|
-
type: 'object',
|
|
1914
|
-
properties: {
|
|
1915
|
-
message: {
|
|
1916
|
-
type: 'string',
|
|
1917
|
-
description: 'Message text to send. Markdown supported (bold **text**, code `value`).',
|
|
1918
|
-
},
|
|
1919
|
-
},
|
|
1920
|
-
required: ['message'],
|
|
1921
|
-
},
|
|
1922
|
-
},
|
|
1923
1732
|
] as const;
|
|
1924
1733
|
|
|
1925
1734
|
|
package/tsconfig.json
CHANGED
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
"module": "Node16",
|
|
5
5
|
"moduleResolution": "Node16",
|
|
6
6
|
"outDir": "./dist",
|
|
7
|
-
"rootDir": "
|
|
7
|
+
"rootDir": "./src",
|
|
8
8
|
"strict": true,
|
|
9
9
|
"esModuleInterop": true,
|
|
10
10
|
"skipLibCheck": true,
|
|
11
11
|
"declaration": true,
|
|
12
12
|
"sourceMap": true
|
|
13
13
|
},
|
|
14
|
-
"include": ["src/**/*"
|
|
14
|
+
"include": ["src/**/*"],
|
|
15
15
|
"exclude": ["node_modules", "dist"]
|
|
16
16
|
}
|
|
17
|
+
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
name: EAS Build — TCO Android Preview
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
inputs:
|
|
6
|
-
message:
|
|
7
|
-
description: 'Build reason'
|
|
8
|
-
default: 'manual build'
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
build:
|
|
12
|
-
name: Build Android preview APK
|
|
13
|
-
runs-on: ubuntu-latest
|
|
14
|
-
defaults:
|
|
15
|
-
run:
|
|
16
|
-
working-directory: apps/travel-chaos-organizer/frontend
|
|
17
|
-
|
|
18
|
-
steps:
|
|
19
|
-
- uses: actions/checkout@v4
|
|
20
|
-
|
|
21
|
-
- uses: actions/setup-node@v4
|
|
22
|
-
with:
|
|
23
|
-
node-version: '20'
|
|
24
|
-
|
|
25
|
-
- name: Install dependencies
|
|
26
|
-
run: npm install
|
|
27
|
-
|
|
28
|
-
- name: Convert SVG icons to PNG (EAS Build requires PNG)
|
|
29
|
-
run: |
|
|
30
|
-
sudo apt-get install -y --no-install-recommends librsvg2-bin
|
|
31
|
-
rsvg-convert -w 1024 -h 1024 assets/icon.svg -o assets/icon.png
|
|
32
|
-
rsvg-convert -w 1024 -h 1024 assets/adaptive-icon.svg -o assets/adaptive-icon.png
|
|
33
|
-
rsvg-convert -w 2048 -h 2048 assets/splash.svg -o assets/splash.png
|
|
34
|
-
echo "Icons converted:"
|
|
35
|
-
ls -lh assets/*.png
|
|
36
|
-
|
|
37
|
-
- name: Setup EAS
|
|
38
|
-
uses: expo/expo-github-action@v8
|
|
39
|
-
with:
|
|
40
|
-
eas-version: latest
|
|
41
|
-
token: ${{ secrets.EXPO_TOKEN }}
|
|
42
|
-
|
|
43
|
-
- name: Create .env with production variables
|
|
44
|
-
run: |
|
|
45
|
-
echo "EXPO_PUBLIC_API_URL=${{ secrets.EXPO_PUBLIC_API_URL }}" >> .env
|
|
46
|
-
echo "EXPO_PUBLIC_KEYCLOAK_URL=${{ secrets.EXPO_PUBLIC_KEYCLOAK_URL }}" >> .env
|
|
47
|
-
echo "EXPO_PUBLIC_KEYCLOAK_REALM=${{ secrets.EXPO_PUBLIC_KEYCLOAK_REALM || 'travel-chaos' }}" >> .env
|
|
48
|
-
echo "EXPO_PUBLIC_KEYCLOAK_CLIENT_ID=${{ secrets.EXPO_PUBLIC_KEYCLOAK_CLIENT_ID || 'tco-mobile' }}" >> .env
|
|
49
|
-
|
|
50
|
-
- name: Build Android (preview — internal distribution)
|
|
51
|
-
run: |
|
|
52
|
-
eas build \
|
|
53
|
-
--profile preview \
|
|
54
|
-
--platform android \
|
|
55
|
-
--non-interactive \
|
|
56
|
-
--no-wait
|
|
57
|
-
# --no-wait: EAS build runs in the cloud asynchronously.
|
|
58
|
-
# Download the APK from expo.dev → your project → Builds when done (~10-15 min).
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
name: EAS Update — TCO Production
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
paths:
|
|
7
|
-
- 'apps/travel-chaos-organizer/frontend/**'
|
|
8
|
-
workflow_dispatch:
|
|
9
|
-
inputs:
|
|
10
|
-
message:
|
|
11
|
-
description: 'Update message'
|
|
12
|
-
default: 'OTA update'
|
|
13
|
-
|
|
14
|
-
jobs:
|
|
15
|
-
update:
|
|
16
|
-
name: Publish EAS Update to production
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
defaults:
|
|
19
|
-
run:
|
|
20
|
-
working-directory: apps/travel-chaos-organizer/frontend
|
|
21
|
-
steps:
|
|
22
|
-
- uses: actions/checkout@v4
|
|
23
|
-
|
|
24
|
-
- uses: actions/setup-node@v4
|
|
25
|
-
with:
|
|
26
|
-
node-version: '20'
|
|
27
|
-
|
|
28
|
-
- name: Install dependencies
|
|
29
|
-
run: npm ci
|
|
30
|
-
|
|
31
|
-
- name: TypeScript typecheck
|
|
32
|
-
run: npx tsc --noEmit
|
|
33
|
-
|
|
34
|
-
- name: Create .env with production variables
|
|
35
|
-
run: |
|
|
36
|
-
echo "EXPO_PUBLIC_API_URL=${{ secrets.EXPO_PUBLIC_API_URL }}" >> .env
|
|
37
|
-
echo "EXPO_PUBLIC_KEYCLOAK_URL=${{ secrets.EXPO_PUBLIC_KEYCLOAK_URL }}" >> .env
|
|
38
|
-
echo "EXPO_PUBLIC_KEYCLOAK_REALM=${{ secrets.EXPO_PUBLIC_KEYCLOAK_REALM || 'travel-chaos' }}" >> .env
|
|
39
|
-
echo "EXPO_PUBLIC_KEYCLOAK_CLIENT_ID=${{ secrets.EXPO_PUBLIC_KEYCLOAK_CLIENT_ID || 'tco-mobile' }}" >> .env
|
|
40
|
-
|
|
41
|
-
- name: Publish EAS Update
|
|
42
|
-
env:
|
|
43
|
-
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
|
|
44
|
-
run: |
|
|
45
|
-
MESSAGE="${{ github.event.inputs.message || github.event.head_commit.message }}"
|
|
46
|
-
MESSAGE="${MESSAGE:0:100}"
|
|
47
|
-
# Publish to both channels so preview and production builds both get the update
|
|
48
|
-
npx eas-cli update \
|
|
49
|
-
--branch production \
|
|
50
|
-
--message "$MESSAGE" \
|
|
51
|
-
--non-interactive
|
|
52
|
-
npx eas-cli update \
|
|
53
|
-
--branch preview \
|
|
54
|
-
--message "$MESSAGE" \
|
|
55
|
-
--non-interactive
|
package/STRATEGY.md
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
# Cachly vs. Anthropic Memory — Ehrliche Standortbestimmung & 10x/100x-Roadmap
|
|
2
|
-
|
|
3
|
-
> Stand: 29. Mai 2026 · Verfasst als interne, schonungslose Bestandsaufnahme.
|
|
4
|
-
> Ziel: Wo stehen wir wirklich, was ist der Graben den Anthropic uns gräbt, und
|
|
5
|
-
> was braucht es konkret, damit Cachly für die nächsten Jahre 10–100x besser,
|
|
6
|
-
> stabiler, intelligenter und nutzerfreundlicher dasteht.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 0. TL;DR (für die Eiligen)
|
|
11
|
-
|
|
12
|
-
- **Die Lücke, die wir füllen wollten, schließt Anthropic gerade selbst** — aber
|
|
13
|
-
nur für den Solo-Claude-Nutzer. Das Memory Tool, Managed-Agents-Memory,
|
|
14
|
-
Chat-Memory und "Dreaming" decken den **Single-User-, Single-Vendor-Fall**
|
|
15
|
-
zunehmend gut ab.
|
|
16
|
-
- **Unser echter, verteidigbarer Graben liegt woanders**: *team-/org-weites,
|
|
17
|
-
strukturiertes, vendor- und tool-unabhängiges Wissen mit Governance.* Genau das
|
|
18
|
-
kann Anthropic strukturell **nicht** liefern, ohne ihr eigenes Lock-in-Modell zu
|
|
19
|
-
untergraben.
|
|
20
|
-
- **Brutale Wahrheit**: Heute gewinnen wir diesen Graben *nicht* überzeugend.
|
|
21
|
-
Onboarding hat zu viel Reibung, die Recall-Qualität ist nicht nachweisbar besser
|
|
22
|
-
als "Claude liest seine eigenen Files", und wir hatten zuletzt zu viele Bugs für
|
|
23
|
-
ein Produkt, das gegen ein First-Party-Feature antritt.
|
|
24
|
-
- **Der Weg zu 10x/100x** ist kein Feature-Wettrennen mit Anthropic. Es ist:
|
|
25
|
-
(1) **Recall-Qualität messbar überlegen machen**, (2) **Onboarding auf
|
|
26
|
-
Null-Reibung** bringen, (3) **Team-Wissensgraph zum Moat ausbauen**,
|
|
27
|
-
(4) **vendor-/tool-agnostisch** bleiben, (5) **Stabilität auf First-Party-Niveau**.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 1. Was Anthropic heute hat (der ehrliche Blick auf den Gegner)
|
|
32
|
-
|
|
33
|
-
| Feature | Was es ist | Reichweite | Schwäche für uns nutzbar? |
|
|
34
|
-
|---|---|---|---|
|
|
35
|
-
| **Memory Tool** (`memory_20250818`) | Client-seitige Datei-Ops im `/memories`-Verzeichnis, 6 Commands (view/create/str_replace/insert/delete/rename) | Nur Anthropic-API, nur Claude-Modelle | **Ja** — unstrukturiert (flache Files), kein semantisches Retrieval, per-Agent |
|
|
36
|
-
| **Managed Agents Memory** (Public Beta, Apr 2026) | Anthropic-gehostete Files, via API/Console exportierbar | Anthropic-Plattform | **Ja** — kein Team-Sharing-Modell, kein Wissensgraph |
|
|
37
|
-
| **Chat Memory** (März 2026) | Auto-Destillation von Chats ~alle 24h in ein Memory-Profil | Consumer (Free/Pro/Max) | **Ja** — Consumer-only, nicht für Dev-Workflows/CI/Teams |
|
|
38
|
-
| **Dreaming** (Research Preview) | Background-Prozess: Muster aus Sessions extrahieren, Memory kuratieren | Claude-intern | ⚠️ **Gefährlich** — das ist konzeptionell *unser* Crystallize/Belief-Update |
|
|
39
|
-
| **Opus 4.8 Context** | 1M Token default, "infinite conversations" via Summarization, Suche über alte Chats | Claude | ⚠️ Reduziert den *Bedarf* an externem Memory für Solo-User |
|
|
40
|
-
|
|
41
|
-
### Die unbequeme Erkenntnis
|
|
42
|
-
Anthropics Memory ist **gratis, null Setup, first-party, und wird monatlich besser.**
|
|
43
|
-
Für einen einzelnen Entwickler, der ausschließlich Claude nutzt, ist die Frage
|
|
44
|
-
"Warum Cachly statt dem eingebauten Memory?" heute **nicht trivial zu beantworten.**
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## 2. Wo Cachly strukturell gewinnen kann (der echte Graben)
|
|
49
|
-
|
|
50
|
-
Diese vier Punkte kann Anthropic nicht ohne Selbst-Sabotage angreifen:
|
|
51
|
-
|
|
52
|
-
### 2.1 Vendor- & Tool-Unabhängigkeit
|
|
53
|
-
- Anthropic-Memory lebt **in Anthropics Filesystem, gebunden an Claude über die
|
|
54
|
-
Anthropic-API.** Wechselst du zu GPT, Gemini, einem lokalen Modell oder nutzt
|
|
55
|
-
Cursor/Windsurf/Zed parallel — **dein Memory ist weg oder fragmentiert.**
|
|
56
|
-
- Cachly spricht **MCP** → funktioniert mit *jedem* MCP-Client und ist
|
|
57
|
-
modell-agnostisch. **Dein Org-Wissen überlebt jeden Modellwechsel.**
|
|
58
|
-
- *Das ist die Positionierung, die nie veraltet:* "Switzerland für AI-Memory."
|
|
59
|
-
|
|
60
|
-
### 2.2 Team-/Org-weites Wissen
|
|
61
|
-
- Anthropic-Memory ist **per-User / per-Agent.** Es gibt kein "Kollege A lernt
|
|
62
|
-
etwas, Kollege B profitiert beim nächsten `session_start`."
|
|
63
|
-
- `team_learn` + geteilte Brain-Instanz ist **genau das** — und es ist der
|
|
64
|
-
Use-Case mit dem höchsten ökonomischen Wert (verhindert, dass 10 Entwickler
|
|
65
|
-
denselben Fehler 10x machen).
|
|
66
|
-
|
|
67
|
-
### 2.3 Strukturiertes, kuratiertes Wissen statt flacher Files
|
|
68
|
-
- Anthropic = Claude liest linear Textdateien.
|
|
69
|
-
- Cachly = strukturierte Lessons (`topic`, `outcome`, `severity`, `tags`,
|
|
70
|
-
`depends_on`), Contradiction-Detection, Causal Knowledge Graph (CKG),
|
|
71
|
-
Belief-Update-Engine (BUE). **ABER:** dieser Vorteil ist heute *behauptet, nicht
|
|
72
|
-
bewiesen.* Siehe §3.
|
|
73
|
-
|
|
74
|
-
### 2.4 Governance, Compliance, Self-Hosting
|
|
75
|
-
- Self-hosted Valkey, BYOK, Audit-Trails, DSGVO-Löschung, SOC-2-Pfad.
|
|
76
|
-
- Enterprises **dürfen** ihr Wissen oft nicht in Anthropics Managed Memory legen.
|
|
77
|
-
Das ist ein Verkaufsargument, das mit der Zeit *stärker* wird, nicht schwächer.
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## 3. Wo wir heute ehrlich schwach sind
|
|
82
|
-
|
|
83
|
-
Kein Schönreden:
|
|
84
|
-
|
|
85
|
-
1. **Recall-Qualität ist nicht gemessen.** Wir behaupten "strukturiert > flache
|
|
86
|
-
Files", haben aber **kein Benchmark**, das zeigt: Cachly-Recall führt zu
|
|
87
|
-
weniger Wiederholungsfehlern / besseren Antworten als das eingebaute Memory.
|
|
88
|
-
*Ohne diesen Beweis ist unser Hauptargument Marketing.*
|
|
89
|
-
2. **Onboarding-Reibung.** Anthropic: 0 Setup. Cachly: Instanz provisionieren,
|
|
90
|
-
Device-Flow, MCP-Config, JWT-Persistenz, Instance-ID. Jede dieser Stufen ist
|
|
91
|
-
ein Drop-off-Punkt — und mehrere waren zuletzt **kaputt** (JWT nur im RAM,
|
|
92
|
-
Redis NOAUTH, Provisioning-Timeouts).
|
|
93
|
-
3. **Stabilität.** Wir haben in den letzten Tagen viele kritische Bugs gefunden und
|
|
94
|
-
gefixt (Telemetrie-Zähler bei 0, NOAUTH, PKCE komplett kaputt, doppelte Drip-
|
|
95
|
-
Mails, Admin-Bypass). Ein Produkt, das gegen ein First-Party-Feature antritt,
|
|
96
|
-
**darf solche Bugs nicht haben.** Vertrauen ist hier asymmetrisch.
|
|
97
|
-
4. **Wertnachweis fehlt dem User.** Der Nutzer sieht nicht, *dass* Cachly ihm
|
|
98
|
-
gerade einen Fehler erspart hat. Anthropics Memory ist unsichtbar-bequem;
|
|
99
|
-
unseres ist sichtbar-umständlich. Das muss sich umkehren.
|
|
100
|
-
5. **"Dreaming" ist eine direkte Bedrohung** für unser Crystallize/BUE-
|
|
101
|
-
Alleinstellungsmerkmal. Wenn das Modell selbst Muster extrahiert, müssen wir
|
|
102
|
-
beim *Team-übergreifenden* und *strukturierten* Teil uneinholbar sein.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## 4. Die 10x/100x-Roadmap (konkret, priorisiert)
|
|
107
|
-
|
|
108
|
-
> Leitsatz: **Wir gewinnen nicht, indem wir Anthropics Memory kopieren. Wir
|
|
109
|
-
> gewinnen, indem wir das werden, was Anthropic strukturell nicht sein darf:
|
|
110
|
-
> der neutrale, team-weite, beweisbar-bessere Wissens-Layer über allen Modellen.**
|
|
111
|
-
|
|
112
|
-
### Phase 1 — Stabilität & Null-Reibung (die Eintrittskarte) · *0–3 Monate*
|
|
113
|
-
Ohne das ist alles andere wertlos.
|
|
114
|
-
|
|
115
|
-
- **[10x Stabilität]** Vollständige Test-Suite für die Brain-Tools (Recall, Learn,
|
|
116
|
-
Dedup, Contradiction). Heute faktisch ungetestet. Ziel: jede Tool-Antwort hat
|
|
117
|
-
einen Vertragstest.
|
|
118
|
-
- **[10x Onboarding]** "Ein-Befehl-Setup": `npx @cachly-dev/init` → Auto-Provision,
|
|
119
|
-
Device-Flow, MCP-Config-Write, erster `brain_from_git`-Seed, alles in <60s,
|
|
120
|
-
idempotent, mit klarem Fortschritt. Jeder bisherige Drop-off-Punkt eliminiert.
|
|
121
|
-
- **[Reibung]** Graceful Degradation: Wenn Redis/Netz weg ist, darf das Tool
|
|
122
|
-
**nie** den ganzen Agent-Call blockieren. Timeouts + Circuit-Breaker überall.
|
|
123
|
-
- **[Vertrauen]** Self-Healing-Auth: JWT/Instance-ID persistent, automatische
|
|
124
|
-
Re-Provisionierung bei verlorenem State, kein "0 Recalls weil RAM-only" mehr.
|
|
125
|
-
|
|
126
|
-
### Phase 2 — Beweisbar bessere Recall-Qualität (der Moat-Beweis) · *3–9 Monate*
|
|
127
|
-
Das ist der Punkt, an dem wir *verdienen*, gegen First-Party anzutreten.
|
|
128
|
-
|
|
129
|
-
- **[100x Intelligenz]** Echtes hybrides Retrieval: semantische Embeddings +
|
|
130
|
-
Reranking + CKG-Traversierung, nicht Keyword-Match. Messbar gegen das
|
|
131
|
-
eingebaute Memory.
|
|
132
|
-
- **[Beweis]** **Cachly-Bench**: ein offener Benchmark, der zeigt, dass ein Agent
|
|
133
|
-
*mit* Cachly weniger Wiederholungsfehler macht / schneller zur Lösung kommt als
|
|
134
|
-
mit Claude-Memory allein. Das ist unsere wichtigste Marketing- *und* Produkt-
|
|
135
|
-
Investition. Ohne Zahl keine Story.
|
|
136
|
-
- **[Intelligenz]** Contradiction-Resolution, die *wirklich* funktioniert: wenn
|
|
137
|
-
zwei Lessons sich widersprechen, automatisch via MADC/Voting auflösen und das
|
|
138
|
-
Ergebnis persistent machen (heute teilweise berechnet, aber nicht gespeichert).
|
|
139
|
-
- **[Wertsichtbarkeit]** "Brain saved you here"-Signal: wenn ein Recall einen
|
|
140
|
-
bekannten Fehler verhindert, sichtbar machen (im Tool-Output + Dashboard-Metrik).
|
|
141
|
-
|
|
142
|
-
### Phase 3 — Team-Wissensgraph als uneinholbarer Moat · *9–18 Monate*
|
|
143
|
-
Hier ist Anthropic strukturell raus.
|
|
144
|
-
|
|
145
|
-
- **[100x Team]** Org-weiter Wissensgraph: Lessons, Personen, Dateien, Services als
|
|
146
|
-
Knoten; Recall berücksichtigt *wer* was gelernt hat und *wo* es relevant ist.
|
|
147
|
-
- **[Virality]** Jeder gelöste Fehler eines Entwicklers wird automatisch zur
|
|
148
|
-
Org-Lesson — mit Attribution. `team_learn` als Default, nicht als Opt-in.
|
|
149
|
-
- **[Governance]** Rollen, Sichtbarkeits-Scopes, Audit-Trails, "Wissens-Reviews"
|
|
150
|
-
(ein Senior bestätigt eine Lesson → höheres Vertrauen im Recall-Ranking).
|
|
151
|
-
- **[Enterprise]** Self-Hosted-Tier mit SOC-2/ISO, BYOK by default, Daten bleiben
|
|
152
|
-
im Kunden-VPC. Das ist der Umsatz, den Anthropic-Memory nicht abgreifen kann.
|
|
153
|
-
|
|
154
|
-
### Phase 4 — Der neutrale Layer über allen Modellen · *18+ Monate*
|
|
155
|
-
- **[100x Reichweite]** First-class-Support für jeden großen MCP-Client und jedes
|
|
156
|
-
Modell. Cachly = "bring your own model, keep your brain."
|
|
157
|
-
- **[Ökosystem]** Öffentliche/teilbare Brains (kuratierte Domänen-Wissensbasen:
|
|
158
|
-
"React-Best-Practices-Brain", "Kubernetes-Incident-Brain"), als Marktplatz.
|
|
159
|
-
- **[Moat-Vertiefung]** Je mehr Org-Wissen akkumuliert, desto höher die
|
|
160
|
-
Wechselkosten *weg* von Cachly — aber **null** Lock-in beim *Modell*. Das ist
|
|
161
|
-
die einzige gesunde Form von Lock-in.
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## 5. Was wir explizit NICHT tun sollten
|
|
166
|
-
|
|
167
|
-
- **Nicht** versuchen, Anthropics Single-User-Memory zu schlagen. Das verlieren wir.
|
|
168
|
-
Unser Nutzer ist das **Team** und die **Org**, nicht der Solo-Hobbyist.
|
|
169
|
-
- **Nicht** Feature-für-Feature mit "Dreaming" konkurrieren. Stattdessen den
|
|
170
|
-
*strukturierten, geteilten, beweisbar-besseren* Teil besitzen.
|
|
171
|
-
- **Nicht** weiter Features stapeln (wir haben ~89 Tools), solange Recall-Qualität
|
|
172
|
-
und Stabilität nicht bewiesen sind. **Tiefe vor Breite.**
|
|
173
|
-
- **Nicht** vendor-Lock-in beim Modell aufbauen — das ist unser einziger
|
|
174
|
-
glaubwürdiger Vorteil gegenüber First-Party.
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## 6. Die drei Metriken, die alles entscheiden
|
|
179
|
-
|
|
180
|
-
Wenn wir nur drei Zahlen tracken dürften:
|
|
181
|
-
|
|
182
|
-
1. **Time-to-first-recall** (Onboarding-Reibung): vom `npx`-Befehl bis zum ersten
|
|
183
|
-
erfolgreichen, wertvollen Recall. Ziel: <2 Minuten.
|
|
184
|
-
2. **Recall-Lift** (Moat-Beweis): % weniger Wiederholungsfehler / schnellere
|
|
185
|
-
Lösung *mit* Cachly vs. ohne, gemessen über Cachly-Bench. Ziel: messbar >0,
|
|
186
|
-
dann skalieren.
|
|
187
|
-
3. **Team-Knowledge-Reuse** (Virality/Moat): wie oft wird die Lesson eines
|
|
188
|
-
Entwicklers von *einem anderen* erfolgreich recallt. Das ist der Wert, den nur
|
|
189
|
-
wir liefern.
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## 7. Fazit (schonungslos)
|
|
194
|
-
|
|
195
|
-
Anthropic hat die **Single-User-Memory-Lücke** weitgehend geschlossen. Hätten wir
|
|
196
|
-
nur darauf gewettet, wären wir in Schwierigkeiten.
|
|
197
|
-
|
|
198
|
-
Aber die **eigentlich wertvolle Lücke** — *team-weites, strukturiertes,
|
|
199
|
-
vendor-neutrales, governance-fähiges Wissen mit beweisbarem Recall-Vorteil* — ist
|
|
200
|
-
**offen, und Anthropic kann sie aus strukturellen Gründen nicht schließen.**
|
|
201
|
-
|
|
202
|
-
Heute besetzen wir diese Lücke **noch nicht überzeugend**: zu viel Reibung, zu
|
|
203
|
-
wenig Beweis, zu viele Bugs. Der Weg zu 10x/100x ist deshalb unspektakulär und
|
|
204
|
-
unerbittlich:
|
|
205
|
-
|
|
206
|
-
> **Erst stabil & reibungslos. Dann beweisbar schlauer. Dann team-weit
|
|
207
|
-
> uneinholbar. Immer modell-neutral.**
|
|
208
|
-
|
|
209
|
-
In dieser Reihenfolge. Nicht andersrum.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Travel Chaos Organizer — Environment Variables
|
|
2
|
-
# Copy to .env and fill in your values
|
|
3
|
-
|
|
4
|
-
# App
|
|
5
|
-
DEBUG=false
|
|
6
|
-
UPLOAD_DIR=/data/uploads
|
|
7
|
-
|
|
8
|
-
# Database (overridden by docker-compose for containerized runs)
|
|
9
|
-
DATABASE_URL=postgresql+asyncpg://tco:tco@localhost:5432/tco
|
|
10
|
-
|
|
11
|
-
# Keycloak
|
|
12
|
-
KEYCLOAK_URL=http://localhost:8080
|
|
13
|
-
KEYCLOAK_REALM=travel-chaos
|
|
14
|
-
KEYCLOAK_CLIENT_ID=tco-backend
|
|
15
|
-
|
|
16
|
-
# Ollama — point to your self-hosted instance
|
|
17
|
-
OLLAMA_URL=http://your-server:11434
|
|
18
|
-
OLLAMA_MODEL=llama3.2-vision
|
|
19
|
-
OLLAMA_TIMEOUT=120
|
|
20
|
-
|
|
21
|
-
# Cachly Redis — caches Ollama parse results to avoid duplicate AI calls.
|
|
22
|
-
# docker-compose sets this automatically (local Redis).
|
|
23
|
-
# In production, replace with your Cachly instance URL:
|
|
24
|
-
# cachly.dev → Instances → Connection String
|
|
25
|
-
# Same document uploaded twice? Instant response from cache, no second AI call.
|
|
26
|
-
CACHLY_REDIS_URL=redis://localhost:6379/0
|
|
27
|
-
# CACHLY_REDIS_URL=redis://:<password>@<host>.cachly.dev:6380/0
|
|
28
|
-
|
|
29
|
-
# Telegram Notifier (optional) — get token from @BotFather
|
|
30
|
-
# TELEGRAM_BOT_TOKEN=...
|
|
31
|
-
# TCO_TELEGRAM_CHAT_ID=... # chat or channel ID for TCO events
|
|
32
|
-
|
|
33
|
-
# Email — Resend (optional, https://resend.com)
|
|
34
|
-
# RESEND_API_KEY=re_...
|
|
35
|
-
# RESEND_FROM=noreply@yourdomain.com
|
|
36
|
-
|
|
37
|
-
# Admin dashboard (change before going live!)
|
|
38
|
-
ADMIN_USER=admin
|
|
39
|
-
ADMIN_PASSWORD=changeme
|
|
40
|
-
|
|
41
|
-
# CORS — comma-separated origins, or * for all
|
|
42
|
-
CORS_ORIGINS=*
|
|
43
|
-
|
|
44
|
-
# Stripe
|
|
45
|
-
# STRIPE_SECRET_KEY=sk_live_...
|
|
46
|
-
# STRIPE_WEBHOOK_SECRET=whsec_...
|
|
47
|
-
# STRIPE_PRO_PRICE_ID=price_...
|
|
48
|
-
STRIPE_SUCCESS_URL=https://YOUR_DOMAIN/upgrade/success
|
|
49
|
-
STRIPE_CANCEL_URL=https://YOUR_DOMAIN/upgrade/cancel
|