carole.ai 0.1.0__tar.gz
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.
- carole_ai-0.1.0/MANIFEST.in +9 -0
- carole_ai-0.1.0/PKG-INFO +188 -0
- carole_ai-0.1.0/README.md +103 -0
- carole_ai-0.1.0/backend/carole.ai.egg-info/PKG-INFO +188 -0
- carole_ai-0.1.0/backend/carole.ai.egg-info/SOURCES.txt +325 -0
- carole_ai-0.1.0/backend/carole.ai.egg-info/dependency_links.txt +1 -0
- carole_ai-0.1.0/backend/carole.ai.egg-info/entry_points.txt +2 -0
- carole_ai-0.1.0/backend/carole.ai.egg-info/requires.txt +66 -0
- carole_ai-0.1.0/backend/carole.ai.egg-info/top_level.txt +4 -0
- carole_ai-0.1.0/backend/carole_ai/__init__.py +3 -0
- carole_ai-0.1.0/backend/carole_ai/cli.py +59 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/README +1 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/env.py +100 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/script.py.mako +28 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/87fc6871354e_add_notifications.py +47 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/a3f91d8e2b5c_file_backups_message_id_nullable.py +43 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/b4c6d8e0f2a1_memory_index_queue.py +23 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/c1371da95782_add_notifications_table.py +32 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/c1b78449f80c_initial_schema.py +244 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/c5d7e9f1a3b2_scoped_compaction_snapshots.py +23 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/ccbd2b0dedbd_add_scheduled_tasks_table.py +51 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/d6e8f0a2b4c6_kanban_production_features.py +152 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/e7f9a1b3c5d7_request_accounting.py +48 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/e9a3f2b7c841_merge_heads_add_compaction_events.py +50 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic/versions/f3b8c2d1e4a5_add_compaction_event_watermarks.py +32 -0
- carole_ai-0.1.0/backend/carole_ai/resources/alembic.ini +149 -0
- carole_ai-0.1.0/backend/carole_ai/web/404.html +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/__init__.py +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/__next.__PAGE__.txt +30 -0
- carole_ai-0.1.0/backend/carole_ai/web/__next._full.txt +26 -0
- carole_ai-0.1.0/backend/carole_ai/web/__next._tree.txt +9 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/Y60d1O157hD9-Dl6GNA11/_buildManifest.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/Y60d1O157hD9-Dl6GNA11/_ssgManifest.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/252-6d718dff1b4cf13c.js +38 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/350-d0d0e34c4999e9e1.js +9 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/4bd1b696-4803b72be6f350ab.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/547-c8915a89030c6d35.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/606.da79f3f7d7127949.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/794-01f513876bb79669.js +52 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/app/_global-error/page-f005ec62af4a6fe9.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/app/_not-found/page-85804c12c61f831f.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/app/dev/chat-preview/page-02affa45655af244.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/app/layout-d7240d68af5fd1ad.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/app/page-3bef9f2c6e8d015e.js +60 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/e868780c.9f684de549e33ce0.js +18 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/framework-e864f982f533525d.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/main-49cd3bf67f791819.js +5 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/main-app-1fb173deb2dd49ea.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/next/dist/client/components/builtin/app-error-f005ec62af4a6fe9.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-f005ec62af4a6fe9.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/next/dist/client/components/builtin/global-error-643763a753d351b2.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/next/dist/client/components/builtin/not-found-f005ec62af4a6fe9.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-f005ec62af4a6fe9.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/chunks/webpack-382426666a0235c1.js +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/css/019ac255fd2906a8.css +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/css/21d7e3df3e74b2c1.css +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/css/979f8c50f2cb5fc2.css +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/css/d09c476c58b04f6c.css +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/css/d2cdc0e45a1c1127.css +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/558ca1a6aa3cb55e-s.p.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/636a5ac981f94f8b-s.p.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/64d784ea54a4acde-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/6d831b18ae5b01dc-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/6fe53d21e6e7ebd8-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/8ebc6e9dde468c4a-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/93a6e477e1480c92-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/9d5a263311222317-s.p.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/9e7b0a821b9dfcb4-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/ac0e76ddaeeb7981-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/c7e0cf6c760983e7-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/edc640959b0c7826-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_next/static/media/ff71da380fbe67dd-s.woff2 +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/_not-found/__next._full.txt +21 -0
- carole_ai-0.1.0/backend/carole_ai/web/_not-found/__next._not-found.__PAGE__.txt +25 -0
- carole_ai-0.1.0/backend/carole_ai/web/_not-found/__next._tree.txt +6 -0
- carole_ai-0.1.0/backend/carole_ai/web/_not-found.html +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/_not-found.txt +21 -0
- carole_ai-0.1.0/backend/carole_ai/web/apple-touch-icon.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/agent-animated.gif +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/agent-animated.webp +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/agent-eyes-closed.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/agent-eyes-open.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/agent-head-animated.gif +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/agent-head-animated.webp +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full-animated.gif +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full-animated.webp +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full-closed.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full-dark-animated.gif +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full-dark-animated.webp +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full-dark-closed.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full-dark.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-full.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal-animated.gif +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal-animated.webp +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal-closed.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal-dark-animated.gif +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal-dark-animated.webp +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal-dark-closed.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal-dark.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-horizontal.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-mark-animated.gif +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-mark-animated.webp +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-mark-closed.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-mark.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-name-dark.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-name.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-original-closed.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-original.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-wordmark-dark.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/branding/logo-wordmark.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/dev/chat-preview/__next._full.txt +24 -0
- carole_ai-0.1.0/backend/carole_ai/web/dev/chat-preview/__next._tree.txt +8 -0
- carole_ai-0.1.0/backend/carole_ai/web/dev/chat-preview/__next.dev.chat-preview.__PAGE__.txt +30 -0
- carole_ai-0.1.0/backend/carole_ai/web/dev/chat-preview.html +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/dev/chat-preview.txt +24 -0
- carole_ai-0.1.0/backend/carole_ai/web/favicon.ico +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/file.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/globe.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/icon.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-browser.svg +28 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-context.svg +51 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-google.svg +27 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-history.svg +26 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-kanban.svg +42 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-memory.svg +44 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-plugin.svg +21 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-security.svg +41 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-subagents.svg +54 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/feature-tools.svg +42 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-mcp.jpg +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-mcp.svg +36 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-multimodal.jpg +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-multimodal.svg +36 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-opensource.jpg +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-opensource.svg +30 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-privacy.jpg +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/icons/pillar-privacy.svg +34 -0
- carole_ai-0.1.0/backend/carole_ai/web/index.html +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/index.txt +26 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/airtable.svg +5 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/anthropic.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/asana.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/aws.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/aws.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/brave-search.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/browserbase.svg +6 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/browseruse.svg +14 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/claude.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/clickup.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/confluence.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/database.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/datadog.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/deepseek.svg +5 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/discord.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/docker.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/fastapi.svg +4 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/figma.svg +7 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/flashrank.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/flashrank.svg +13 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/github.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/gitlab.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/google-drive.svg +5 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/google.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/googlegemini.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/groq.svg +5 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/hubspot.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/hubspot.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/intercom.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/jira.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/jira.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/jwt.svg +7 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/lancedb.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/lancedb.svg +14 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/linear.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/mcp.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/mistral.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/model2vec.svg +12 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/mongodb.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/mongodb.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/mysql.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/nextjs.svg +20 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/notion.svg +9 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/nvidia.svg +4 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/ollama.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/openai.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/openllmetry.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/openrouter.svg +4 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/perplexity.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/phoenix.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/phoenix.svg +12 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/playwright.svg +8 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/postgres.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/posthog.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/puppeteer.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/puppeteer.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/python.svg +3 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/react.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/redis.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/sentry.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/slack.svg +10 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/sqlite.svg +11 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/stripe.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/supabase.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/treesitter.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/treesitter.svg +7 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/trello.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/typescript.svg +3 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/websocket.svg +7 -0
- carole_ai-0.1.0/backend/carole_ai/web/logos/zendesk.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/next.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/test_image.png +0 -0
- carole_ai-0.1.0/backend/carole_ai/web/vercel.svg +1 -0
- carole_ai-0.1.0/backend/carole_ai/web/window.svg +1 -0
- carole_ai-0.1.0/backend/core/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/agent/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/agent/checkpoint_store.py +28 -0
- carole_ai-0.1.0/backend/core/agent/context_ast.py +230 -0
- carole_ai-0.1.0/backend/core/agent/context_compiler.py +166 -0
- carole_ai-0.1.0/backend/core/agent/context_condenser.py +588 -0
- carole_ai-0.1.0/backend/core/agent/coordinator.py +78 -0
- carole_ai-0.1.0/backend/core/agent/cron_worker.py +137 -0
- carole_ai-0.1.0/backend/core/agent/intent_engine.py +262 -0
- carole_ai-0.1.0/backend/core/agent/loop_policy.py +48 -0
- carole_ai-0.1.0/backend/core/agent/message_history.py +358 -0
- carole_ai-0.1.0/backend/core/agent/observation_cache.py +211 -0
- carole_ai-0.1.0/backend/core/agent/prompt_blocks.py +195 -0
- carole_ai-0.1.0/backend/core/agent/prompt_safety.py +46 -0
- carole_ai-0.1.0/backend/core/agent/react_agent.py +2965 -0
- carole_ai-0.1.0/backend/core/agent/role_templates.py +395 -0
- carole_ai-0.1.0/backend/core/agent/run_budget.py +53 -0
- carole_ai-0.1.0/backend/core/agent/semantic_router.py +189 -0
- carole_ai-0.1.0/backend/core/agent/token_budget.py +18 -0
- carole_ai-0.1.0/backend/core/agent/workflow_dag.py +421 -0
- carole_ai-0.1.0/backend/core/api/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/api/auth_routes.py +95 -0
- carole_ai-0.1.0/backend/core/api/browser_routes.py +408 -0
- carole_ai-0.1.0/backend/core/api/cost_routes.py +103 -0
- carole_ai-0.1.0/backend/core/api/cron_routes.py +119 -0
- carole_ai-0.1.0/backend/core/api/crud_routes.py +4156 -0
- carole_ai-0.1.0/backend/core/api/file_routes.py +960 -0
- carole_ai-0.1.0/backend/core/api/git_routes.py +469 -0
- carole_ai-0.1.0/backend/core/api/google_auth_routes.py +290 -0
- carole_ai-0.1.0/backend/core/api/model_routes.py +46 -0
- carole_ai-0.1.0/backend/core/api/notification_routes.py +127 -0
- carole_ai-0.1.0/backend/core/api/observability_routes.py +245 -0
- carole_ai-0.1.0/backend/core/api/plugin_routes.py +214 -0
- carole_ai-0.1.0/backend/core/api/scratchpad_routes.py +142 -0
- carole_ai-0.1.0/backend/core/api/search_routes.py +114 -0
- carole_ai-0.1.0/backend/core/api/skill_routes.py +377 -0
- carole_ai-0.1.0/backend/core/api/task_routes.py +77 -0
- carole_ai-0.1.0/backend/core/api/terminal_routes.py +60 -0
- carole_ai-0.1.0/backend/core/api/terminal_ws.py +467 -0
- carole_ai-0.1.0/backend/core/auth/__init__.py +3 -0
- carole_ai-0.1.0/backend/core/auth/auth_middleware.py +55 -0
- carole_ai-0.1.0/backend/core/auth/auth_service.py +326 -0
- carole_ai-0.1.0/backend/core/auth/instance_owner.py +60 -0
- carole_ai-0.1.0/backend/core/auth/rate_limiter.py +32 -0
- carole_ai-0.1.0/backend/core/chat/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/chat/attachments.py +36 -0
- carole_ai-0.1.0/backend/core/chat/event_bus.py +166 -0
- carole_ai-0.1.0/backend/core/chat/message_router.py +666 -0
- carole_ai-0.1.0/backend/core/config.py +265 -0
- carole_ai-0.1.0/backend/core/defaults/__init__.py +3 -0
- carole_ai-0.1.0/backend/core/defaults/prompts.json +36 -0
- carole_ai-0.1.0/backend/core/defaults/supported_models.json +102 -0
- carole_ai-0.1.0/backend/core/judge/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/judge/judge_evaluator.py +249 -0
- carole_ai-0.1.0/backend/core/knowledge/__init__.py +3 -0
- carole_ai-0.1.0/backend/core/knowledge/ast_parser.py +716 -0
- carole_ai-0.1.0/backend/core/knowledge/code_graph.py +718 -0
- carole_ai-0.1.0/backend/core/knowledge/hybrid_search.py +599 -0
- carole_ai-0.1.0/backend/core/knowledge/knowledge_ingestor.py +234 -0
- carole_ai-0.1.0/backend/core/llm/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/llm/config_manager.py +437 -0
- carole_ai-0.1.0/backend/core/llm/model_catalog.py +203 -0
- carole_ai-0.1.0/backend/core/llm/multi_model_router.py +2694 -0
- carole_ai-0.1.0/backend/core/llm/provider_sync.py +429 -0
- carole_ai-0.1.0/backend/core/llm/usage_accounting.py +56 -0
- carole_ai-0.1.0/backend/core/memory/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/memory/auto_dream.py +435 -0
- carole_ai-0.1.0/backend/core/memory/database.py +240 -0
- carole_ai-0.1.0/backend/core/memory/embedding.py +12 -0
- carole_ai-0.1.0/backend/core/memory/index_queue.py +61 -0
- carole_ai-0.1.0/backend/core/memory/lancedb_client.py +282 -0
- carole_ai-0.1.0/backend/core/memory/models.py +767 -0
- carole_ai-0.1.0/backend/core/memory/scratchpad.py +320 -0
- carole_ai-0.1.0/backend/core/notifications.py +58 -0
- carole_ai-0.1.0/backend/core/observability/openllmetry_tracer.py +188 -0
- carole_ai-0.1.0/backend/core/prompts.py +248 -0
- carole_ai-0.1.0/backend/core/skills/skill_manager.py +389 -0
- carole_ai-0.1.0/backend/core/skills/skill_parser.py +172 -0
- carole_ai-0.1.0/backend/core/tasks/__init__.py +2 -0
- carole_ai-0.1.0/backend/core/tasks/board_service.py +609 -0
- carole_ai-0.1.0/backend/core/tools/__init__.py +1 -0
- carole_ai-0.1.0/backend/core/tools/agent_tools.py +641 -0
- carole_ai-0.1.0/backend/core/tools/browser_agent.py +496 -0
- carole_ai-0.1.0/backend/core/tools/browser_pool.py +513 -0
- carole_ai-0.1.0/backend/core/tools/browser_tool.py +934 -0
- carole_ai-0.1.0/backend/core/tools/build_dom_tree.js +270 -0
- carole_ai-0.1.0/backend/core/tools/code_analysis_tools.py +464 -0
- carole_ai-0.1.0/backend/core/tools/context.py +56 -0
- carole_ai-0.1.0/backend/core/tools/cron_task_tools.py +181 -0
- carole_ai-0.1.0/backend/core/tools/file_tools.py +838 -0
- carole_ai-0.1.0/backend/core/tools/git_tools.py +266 -0
- carole_ai-0.1.0/backend/core/tools/google_meet_tool.py +113 -0
- carole_ai-0.1.0/backend/core/tools/google_workspace_tools.py +101 -0
- carole_ai-0.1.0/backend/core/tools/interaction_tools.py +192 -0
- carole_ai-0.1.0/backend/core/tools/mcp_client.py +494 -0
- carole_ai-0.1.0/backend/core/tools/meeting_tool.py +113 -0
- carole_ai-0.1.0/backend/core/tools/memory_tools.py +261 -0
- carole_ai-0.1.0/backend/core/tools/network_clients.py +436 -0
- carole_ai-0.1.0/backend/core/tools/plugin_decorator.py +45 -0
- carole_ai-0.1.0/backend/core/tools/process_runner.py +56 -0
- carole_ai-0.1.0/backend/core/tools/shell_tools.py +379 -0
- carole_ai-0.1.0/backend/core/tools/ssrf_guard.py +96 -0
- carole_ai-0.1.0/backend/core/tools/task_tools.py +718 -0
- carole_ai-0.1.0/backend/core/tools/tool_executor.py +3518 -0
- carole_ai-0.1.0/backend/core/tools/tool_registry.py +518 -0
- carole_ai-0.1.0/backend/core/tools/tool_retrieval.py +105 -0
- carole_ai-0.1.0/backend/core/tools/voice_stt_tts.py +200 -0
- carole_ai-0.1.0/backend/core/tools/web_tools.py +640 -0
- carole_ai-0.1.0/backend/main.py +922 -0
- carole_ai-0.1.0/backend/plugins/__init__.py +1 -0
- carole_ai-0.1.0/backend/plugins/_example_tool.py +21 -0
- carole_ai-0.1.0/pyproject.toml +118 -0
- carole_ai-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
include README.md
|
|
2
|
+
recursive-include backend/carole_ai/web *
|
|
3
|
+
recursive-include backend/carole_ai/resources *
|
|
4
|
+
recursive-include backend/core/defaults *.json
|
|
5
|
+
recursive-include backend/core/tools *.js
|
|
6
|
+
global-exclude *.pyc *.pyo
|
|
7
|
+
prune backend/carole_ai/web/__pycache__
|
|
8
|
+
prune backend/carole_ai/resources/alembic/__pycache__
|
|
9
|
+
prune backend/carole_ai/resources/alembic/versions/__pycache__
|
carole_ai-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: carole.ai
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A local AI agent workspace with a FastAPI backend and integrated web UI
|
|
5
|
+
Author: Carole.ai
|
|
6
|
+
Project-URL: Homepage, https://github.com/sshivasai/Carole.ai
|
|
7
|
+
Project-URL: Repository, https://github.com/sshivasai/Carole.ai
|
|
8
|
+
Project-URL: Issues, https://github.com/sshivasai/Carole.ai/issues
|
|
9
|
+
Keywords: ai,agents,assistant,mcp,fastapi
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Framework :: FastAPI
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
17
|
+
Requires-Python: <3.14,>=3.11
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
Requires-Dist: fastapi>=0.100.0
|
|
20
|
+
Requires-Dist: uvicorn>=0.23.0
|
|
21
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
22
|
+
Requires-Dist: sqlalchemy<2.1,>=2.0.0
|
|
23
|
+
Requires-Dist: aiosqlite>=0.19.0
|
|
24
|
+
Requires-Dist: alembic>=1.13.0
|
|
25
|
+
Requires-Dist: lancedb>=0.5.0
|
|
26
|
+
Requires-Dist: httpx>=0.25.0
|
|
27
|
+
Requires-Dist: pydantic>=2.0.0
|
|
28
|
+
Requires-Dist: jsonschema<5,>=4.23.0
|
|
29
|
+
Requires-Dist: referencing<1,>=0.35.0
|
|
30
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
31
|
+
Requires-Dist: python-multipart>=0.0.6
|
|
32
|
+
Requires-Dist: PyPDF2>=3.0.0
|
|
33
|
+
Requires-Dist: networkx>=3.0.0
|
|
34
|
+
Requires-Dist: google-api-python-client>=2.0.0
|
|
35
|
+
Requires-Dist: google-auth-httplib2>=0.2.0
|
|
36
|
+
Requires-Dist: google-auth-oauthlib>=1.2.0
|
|
37
|
+
Requires-Dist: mcp<3,>=1.0.0
|
|
38
|
+
Requires-Dist: websockets>=12.0
|
|
39
|
+
Requires-Dist: langchain-openai
|
|
40
|
+
Requires-Dist: langchain-anthropic
|
|
41
|
+
Requires-Dist: langchain-google-genai
|
|
42
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
43
|
+
Requires-Dist: slowapi>=0.1.9
|
|
44
|
+
Requires-Dist: playwright>=1.40.0
|
|
45
|
+
Requires-Dist: browser-use
|
|
46
|
+
Requires-Dist: python-docx>=1.0.0
|
|
47
|
+
Requires-Dist: markitdown>=0.1.7
|
|
48
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
49
|
+
Requires-Dist: markdownify>=0.14.0
|
|
50
|
+
Requires-Dist: aiofiles>=23.0.0
|
|
51
|
+
Requires-Dist: h2>=4.1.0
|
|
52
|
+
Requires-Dist: rank-bm25>=0.2.2
|
|
53
|
+
Requires-Dist: tree-sitter>=0.26.0
|
|
54
|
+
Requires-Dist: tree-sitter-python>=0.25.0
|
|
55
|
+
Requires-Dist: tree-sitter-javascript>=0.25.0
|
|
56
|
+
Requires-Dist: tree-sitter-typescript>=0.23.0
|
|
57
|
+
Requires-Dist: tree-sitter-rust>=0.24.0
|
|
58
|
+
Requires-Dist: tree-sitter-go>=0.25.0
|
|
59
|
+
Requires-Dist: tree-sitter-java>=0.23.0
|
|
60
|
+
Requires-Dist: tree-sitter-c>=0.24.0
|
|
61
|
+
Requires-Dist: tree-sitter-cpp>=0.23.0
|
|
62
|
+
Requires-Dist: tree-sitter-c-sharp>=0.23.0
|
|
63
|
+
Requires-Dist: tree-sitter-ruby>=0.23.0
|
|
64
|
+
Requires-Dist: tree-sitter-php>=0.24.0
|
|
65
|
+
Requires-Dist: tree-sitter-html>=0.23.0
|
|
66
|
+
Requires-Dist: tree-sitter-css>=0.25.0
|
|
67
|
+
Requires-Dist: tree-sitter-json>=0.24.0
|
|
68
|
+
Requires-Dist: tree-sitter-bash>=0.25.0
|
|
69
|
+
Requires-Dist: tree-sitter-yaml>=0.7.0
|
|
70
|
+
Requires-Dist: tree-sitter-toml>=0.7.0
|
|
71
|
+
Requires-Dist: tree-sitter-lua>=0.5.0
|
|
72
|
+
Requires-Dist: tree-sitter-markdown>=0.5.0
|
|
73
|
+
Requires-Dist: tree-sitter-scala>=0.26.0
|
|
74
|
+
Requires-Dist: tree-sitter-kotlin>=1.1.0
|
|
75
|
+
Requires-Dist: tree-sitter-swift>=0.7.0
|
|
76
|
+
Requires-Dist: tree-sitter-sql>=0.3.0
|
|
77
|
+
Requires-Dist: tree-sitter-elixir>=0.3.0
|
|
78
|
+
Requires-Dist: tree-sitter-zig>=1.1.0
|
|
79
|
+
Requires-Dist: tree-sitter-make>=1.1.0
|
|
80
|
+
Requires-Dist: tree-sitter-cmake>=0.7.0
|
|
81
|
+
Requires-Dist: model2vec>=0.9.0
|
|
82
|
+
Requires-Dist: flashrank>=0.2.10
|
|
83
|
+
Requires-Dist: traceloop-sdk>=0.62.0
|
|
84
|
+
Requires-Dist: croniter<7,>=6.0.0
|
|
85
|
+
|
|
86
|
+
<p align="center">
|
|
87
|
+
<img src="https://raw.githubusercontent.com/sshivasai/Carole.ai/master/frontend/public/branding/logo-full-dark-animated.gif" alt="Carole.ai Logo" width="280" />
|
|
88
|
+
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
# Carole.ai
|
|
92
|
+
|
|
93
|
+
**AI AGENTS. REAL WORK.**
|
|
94
|
+
|
|
95
|
+
Carole.ai is an advanced AI-powered assistant and development environment with a robust suite of features including Hybrid GraphRAG, zero-cost meeting integration, MCP (Model Context Protocol) expansion, and a native real-time Kanban board.
|
|
96
|
+
|
|
97
|
+
## Install
|
|
98
|
+
|
|
99
|
+
Carole.ai includes its production web interface in the Python package, so Node.js
|
|
100
|
+
is not required at runtime. Python 3.11 or 3.12 is supported.
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
pip install carole.ai
|
|
104
|
+
caroleai
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Carole.ai opens at [http://127.0.0.1:8000](http://127.0.0.1:8000) and stores
|
|
108
|
+
persistent application data in `~/.carole`. For an isolated application install,
|
|
109
|
+
you can use `pipx install carole.ai`. Browser automation additionally requires
|
|
110
|
+
the one-time command `playwright install chromium`.
|
|
111
|
+
|
|
112
|
+
## Features
|
|
113
|
+
|
|
114
|
+
- **Hybrid GraphRAG**: Combines Dense (LanceDB) and Sparse memory retrieval, mapped alongside a real-time `networkx` Code Graph for unparalleled context awareness.
|
|
115
|
+
- **Zero-Cost Meeting Integration**: Seamlessly integrates with Google Meet via Playwright DOM caption scraping and native chat injection.
|
|
116
|
+
- **MCP Expansion**: Features a universal Model Context Protocol firewall and dynamic ToolRegistry, expanding the ecosystem of available models and tools securely.
|
|
117
|
+
- **Native Real-Time Kanban**: EventBus-driven split-screen project management for dynamic task tracking and synchronization.
|
|
118
|
+
|
|
119
|
+
## Local Setup Instructions
|
|
120
|
+
|
|
121
|
+
Follow these steps to get Carole.ai running locally.
|
|
122
|
+
|
|
123
|
+
### 1. Prerequisites
|
|
124
|
+
- Docker and Docker Compose
|
|
125
|
+
- Node.js (v22 recommended)
|
|
126
|
+
- Python (v3.11 or later)
|
|
127
|
+
|
|
128
|
+
### 2. Environment Variables
|
|
129
|
+
Create a `.env` file in the root directory (or update the existing one) with the necessary variables. At a minimum, you'll need:
|
|
130
|
+
|
|
131
|
+
```env
|
|
132
|
+
OPENROUTER_API_KEY=your_openrouter_api_key_here
|
|
133
|
+
# Optional recovery override. Normally the first account is the local owner.
|
|
134
|
+
# CAROLE_OWNER_ID=your_account_uuid
|
|
135
|
+
# Add other required API keys or database URLs as needed
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 3. Start the Backend (FastAPI)
|
|
139
|
+
The backend requires Python and FastAPI. We recommend using a virtual environment.
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
cd backend
|
|
143
|
+
python -m venv venv
|
|
144
|
+
source venv/bin/activate # On Windows use: venv\Scripts\activate
|
|
145
|
+
pip install -r requirements.txt
|
|
146
|
+
uvicorn main:app --reload
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 4. Start the Frontend (Next.js)
|
|
150
|
+
The frontend is built with Next.js. Open a new terminal window to start it.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
cd frontend
|
|
154
|
+
npm install
|
|
155
|
+
npm run dev
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 5. Access the Application
|
|
159
|
+
- Frontend: [http://localhost:3000](http://localhost:3000)
|
|
160
|
+
- Backend API Docs: [http://localhost:8000/docs](http://localhost:8000/docs)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
## Instance owner and upgrade notes
|
|
164
|
+
|
|
165
|
+
The first account created is automatically the local instance owner. An operator
|
|
166
|
+
can optionally set `CAROLE_OWNER_ID` to an account UUID as a recovery override.
|
|
167
|
+
The instance owner controls host capabilities:
|
|
168
|
+
terminal/shell access, Git, browser automation, plugins, MCP servers, external
|
|
169
|
+
workspace paths, and instance settings/model/prompt administration. These
|
|
170
|
+
operations are unavailable until an owner is configured. Project ownership alone
|
|
171
|
+
does not grant access to the host machine. Host tools run with the backend OS
|
|
172
|
+
account's privileges; this is not an OS sandbox for untrusted tenants.
|
|
173
|
+
|
|
174
|
+
File, search, Git, and history APIs require an owned project UUID. Clients must
|
|
175
|
+
use the backend Git API; the former Next.js Git endpoint returns HTTP 410.
|
|
176
|
+
Attachments require authenticated downloads. Google accounts must reconnect
|
|
177
|
+
through Settings after upgrading: credentials are now stored separately per
|
|
178
|
+
account, and the old shared token is not reused. The OAuth start request must
|
|
179
|
+
include browser credentials so its callback can verify the initiating browser.
|
|
180
|
+
|
|
181
|
+
Docker stores application data in the `carole_data` volume at `/data/carole`.
|
|
182
|
+
Back up and copy any existing `.carole` data into that volume before switching an
|
|
183
|
+
existing deployment; creating the volume does not migrate old data. An explicit
|
|
184
|
+
`DATABASE_URL` or `CAROLE_HOME_DIR` override must point to persistent storage.
|
|
185
|
+
Playwright browsers are installed at a path available to the non-root app user.
|
|
186
|
+
|
|
187
|
+
See [runtime repair notes](docs/RUNTIME_REPAIRS.md) for the implementation changes
|
|
188
|
+
and verification boundaries.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/sshivasai/Carole.ai/master/frontend/public/branding/logo-full-dark-animated.gif" alt="Carole.ai Logo" width="280" />
|
|
3
|
+
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
# Carole.ai
|
|
7
|
+
|
|
8
|
+
**AI AGENTS. REAL WORK.**
|
|
9
|
+
|
|
10
|
+
Carole.ai is an advanced AI-powered assistant and development environment with a robust suite of features including Hybrid GraphRAG, zero-cost meeting integration, MCP (Model Context Protocol) expansion, and a native real-time Kanban board.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
Carole.ai includes its production web interface in the Python package, so Node.js
|
|
15
|
+
is not required at runtime. Python 3.11 or 3.12 is supported.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install carole.ai
|
|
19
|
+
caroleai
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Carole.ai opens at [http://127.0.0.1:8000](http://127.0.0.1:8000) and stores
|
|
23
|
+
persistent application data in `~/.carole`. For an isolated application install,
|
|
24
|
+
you can use `pipx install carole.ai`. Browser automation additionally requires
|
|
25
|
+
the one-time command `playwright install chromium`.
|
|
26
|
+
|
|
27
|
+
## Features
|
|
28
|
+
|
|
29
|
+
- **Hybrid GraphRAG**: Combines Dense (LanceDB) and Sparse memory retrieval, mapped alongside a real-time `networkx` Code Graph for unparalleled context awareness.
|
|
30
|
+
- **Zero-Cost Meeting Integration**: Seamlessly integrates with Google Meet via Playwright DOM caption scraping and native chat injection.
|
|
31
|
+
- **MCP Expansion**: Features a universal Model Context Protocol firewall and dynamic ToolRegistry, expanding the ecosystem of available models and tools securely.
|
|
32
|
+
- **Native Real-Time Kanban**: EventBus-driven split-screen project management for dynamic task tracking and synchronization.
|
|
33
|
+
|
|
34
|
+
## Local Setup Instructions
|
|
35
|
+
|
|
36
|
+
Follow these steps to get Carole.ai running locally.
|
|
37
|
+
|
|
38
|
+
### 1. Prerequisites
|
|
39
|
+
- Docker and Docker Compose
|
|
40
|
+
- Node.js (v22 recommended)
|
|
41
|
+
- Python (v3.11 or later)
|
|
42
|
+
|
|
43
|
+
### 2. Environment Variables
|
|
44
|
+
Create a `.env` file in the root directory (or update the existing one) with the necessary variables. At a minimum, you'll need:
|
|
45
|
+
|
|
46
|
+
```env
|
|
47
|
+
OPENROUTER_API_KEY=your_openrouter_api_key_here
|
|
48
|
+
# Optional recovery override. Normally the first account is the local owner.
|
|
49
|
+
# CAROLE_OWNER_ID=your_account_uuid
|
|
50
|
+
# Add other required API keys or database URLs as needed
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3. Start the Backend (FastAPI)
|
|
54
|
+
The backend requires Python and FastAPI. We recommend using a virtual environment.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
cd backend
|
|
58
|
+
python -m venv venv
|
|
59
|
+
source venv/bin/activate # On Windows use: venv\Scripts\activate
|
|
60
|
+
pip install -r requirements.txt
|
|
61
|
+
uvicorn main:app --reload
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 4. Start the Frontend (Next.js)
|
|
65
|
+
The frontend is built with Next.js. Open a new terminal window to start it.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cd frontend
|
|
69
|
+
npm install
|
|
70
|
+
npm run dev
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 5. Access the Application
|
|
74
|
+
- Frontend: [http://localhost:3000](http://localhost:3000)
|
|
75
|
+
- Backend API Docs: [http://localhost:8000/docs](http://localhost:8000/docs)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## Instance owner and upgrade notes
|
|
79
|
+
|
|
80
|
+
The first account created is automatically the local instance owner. An operator
|
|
81
|
+
can optionally set `CAROLE_OWNER_ID` to an account UUID as a recovery override.
|
|
82
|
+
The instance owner controls host capabilities:
|
|
83
|
+
terminal/shell access, Git, browser automation, plugins, MCP servers, external
|
|
84
|
+
workspace paths, and instance settings/model/prompt administration. These
|
|
85
|
+
operations are unavailable until an owner is configured. Project ownership alone
|
|
86
|
+
does not grant access to the host machine. Host tools run with the backend OS
|
|
87
|
+
account's privileges; this is not an OS sandbox for untrusted tenants.
|
|
88
|
+
|
|
89
|
+
File, search, Git, and history APIs require an owned project UUID. Clients must
|
|
90
|
+
use the backend Git API; the former Next.js Git endpoint returns HTTP 410.
|
|
91
|
+
Attachments require authenticated downloads. Google accounts must reconnect
|
|
92
|
+
through Settings after upgrading: credentials are now stored separately per
|
|
93
|
+
account, and the old shared token is not reused. The OAuth start request must
|
|
94
|
+
include browser credentials so its callback can verify the initiating browser.
|
|
95
|
+
|
|
96
|
+
Docker stores application data in the `carole_data` volume at `/data/carole`.
|
|
97
|
+
Back up and copy any existing `.carole` data into that volume before switching an
|
|
98
|
+
existing deployment; creating the volume does not migrate old data. An explicit
|
|
99
|
+
`DATABASE_URL` or `CAROLE_HOME_DIR` override must point to persistent storage.
|
|
100
|
+
Playwright browsers are installed at a path available to the non-root app user.
|
|
101
|
+
|
|
102
|
+
See [runtime repair notes](docs/RUNTIME_REPAIRS.md) for the implementation changes
|
|
103
|
+
and verification boundaries.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: carole.ai
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A local AI agent workspace with a FastAPI backend and integrated web UI
|
|
5
|
+
Author: Carole.ai
|
|
6
|
+
Project-URL: Homepage, https://github.com/sshivasai/Carole.ai
|
|
7
|
+
Project-URL: Repository, https://github.com/sshivasai/Carole.ai
|
|
8
|
+
Project-URL: Issues, https://github.com/sshivasai/Carole.ai/issues
|
|
9
|
+
Keywords: ai,agents,assistant,mcp,fastapi
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Framework :: FastAPI
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
17
|
+
Requires-Python: <3.14,>=3.11
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
Requires-Dist: fastapi>=0.100.0
|
|
20
|
+
Requires-Dist: uvicorn>=0.23.0
|
|
21
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
22
|
+
Requires-Dist: sqlalchemy<2.1,>=2.0.0
|
|
23
|
+
Requires-Dist: aiosqlite>=0.19.0
|
|
24
|
+
Requires-Dist: alembic>=1.13.0
|
|
25
|
+
Requires-Dist: lancedb>=0.5.0
|
|
26
|
+
Requires-Dist: httpx>=0.25.0
|
|
27
|
+
Requires-Dist: pydantic>=2.0.0
|
|
28
|
+
Requires-Dist: jsonschema<5,>=4.23.0
|
|
29
|
+
Requires-Dist: referencing<1,>=0.35.0
|
|
30
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
31
|
+
Requires-Dist: python-multipart>=0.0.6
|
|
32
|
+
Requires-Dist: PyPDF2>=3.0.0
|
|
33
|
+
Requires-Dist: networkx>=3.0.0
|
|
34
|
+
Requires-Dist: google-api-python-client>=2.0.0
|
|
35
|
+
Requires-Dist: google-auth-httplib2>=0.2.0
|
|
36
|
+
Requires-Dist: google-auth-oauthlib>=1.2.0
|
|
37
|
+
Requires-Dist: mcp<3,>=1.0.0
|
|
38
|
+
Requires-Dist: websockets>=12.0
|
|
39
|
+
Requires-Dist: langchain-openai
|
|
40
|
+
Requires-Dist: langchain-anthropic
|
|
41
|
+
Requires-Dist: langchain-google-genai
|
|
42
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
43
|
+
Requires-Dist: slowapi>=0.1.9
|
|
44
|
+
Requires-Dist: playwright>=1.40.0
|
|
45
|
+
Requires-Dist: browser-use
|
|
46
|
+
Requires-Dist: python-docx>=1.0.0
|
|
47
|
+
Requires-Dist: markitdown>=0.1.7
|
|
48
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
49
|
+
Requires-Dist: markdownify>=0.14.0
|
|
50
|
+
Requires-Dist: aiofiles>=23.0.0
|
|
51
|
+
Requires-Dist: h2>=4.1.0
|
|
52
|
+
Requires-Dist: rank-bm25>=0.2.2
|
|
53
|
+
Requires-Dist: tree-sitter>=0.26.0
|
|
54
|
+
Requires-Dist: tree-sitter-python>=0.25.0
|
|
55
|
+
Requires-Dist: tree-sitter-javascript>=0.25.0
|
|
56
|
+
Requires-Dist: tree-sitter-typescript>=0.23.0
|
|
57
|
+
Requires-Dist: tree-sitter-rust>=0.24.0
|
|
58
|
+
Requires-Dist: tree-sitter-go>=0.25.0
|
|
59
|
+
Requires-Dist: tree-sitter-java>=0.23.0
|
|
60
|
+
Requires-Dist: tree-sitter-c>=0.24.0
|
|
61
|
+
Requires-Dist: tree-sitter-cpp>=0.23.0
|
|
62
|
+
Requires-Dist: tree-sitter-c-sharp>=0.23.0
|
|
63
|
+
Requires-Dist: tree-sitter-ruby>=0.23.0
|
|
64
|
+
Requires-Dist: tree-sitter-php>=0.24.0
|
|
65
|
+
Requires-Dist: tree-sitter-html>=0.23.0
|
|
66
|
+
Requires-Dist: tree-sitter-css>=0.25.0
|
|
67
|
+
Requires-Dist: tree-sitter-json>=0.24.0
|
|
68
|
+
Requires-Dist: tree-sitter-bash>=0.25.0
|
|
69
|
+
Requires-Dist: tree-sitter-yaml>=0.7.0
|
|
70
|
+
Requires-Dist: tree-sitter-toml>=0.7.0
|
|
71
|
+
Requires-Dist: tree-sitter-lua>=0.5.0
|
|
72
|
+
Requires-Dist: tree-sitter-markdown>=0.5.0
|
|
73
|
+
Requires-Dist: tree-sitter-scala>=0.26.0
|
|
74
|
+
Requires-Dist: tree-sitter-kotlin>=1.1.0
|
|
75
|
+
Requires-Dist: tree-sitter-swift>=0.7.0
|
|
76
|
+
Requires-Dist: tree-sitter-sql>=0.3.0
|
|
77
|
+
Requires-Dist: tree-sitter-elixir>=0.3.0
|
|
78
|
+
Requires-Dist: tree-sitter-zig>=1.1.0
|
|
79
|
+
Requires-Dist: tree-sitter-make>=1.1.0
|
|
80
|
+
Requires-Dist: tree-sitter-cmake>=0.7.0
|
|
81
|
+
Requires-Dist: model2vec>=0.9.0
|
|
82
|
+
Requires-Dist: flashrank>=0.2.10
|
|
83
|
+
Requires-Dist: traceloop-sdk>=0.62.0
|
|
84
|
+
Requires-Dist: croniter<7,>=6.0.0
|
|
85
|
+
|
|
86
|
+
<p align="center">
|
|
87
|
+
<img src="https://raw.githubusercontent.com/sshivasai/Carole.ai/master/frontend/public/branding/logo-full-dark-animated.gif" alt="Carole.ai Logo" width="280" />
|
|
88
|
+
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
# Carole.ai
|
|
92
|
+
|
|
93
|
+
**AI AGENTS. REAL WORK.**
|
|
94
|
+
|
|
95
|
+
Carole.ai is an advanced AI-powered assistant and development environment with a robust suite of features including Hybrid GraphRAG, zero-cost meeting integration, MCP (Model Context Protocol) expansion, and a native real-time Kanban board.
|
|
96
|
+
|
|
97
|
+
## Install
|
|
98
|
+
|
|
99
|
+
Carole.ai includes its production web interface in the Python package, so Node.js
|
|
100
|
+
is not required at runtime. Python 3.11 or 3.12 is supported.
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
pip install carole.ai
|
|
104
|
+
caroleai
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Carole.ai opens at [http://127.0.0.1:8000](http://127.0.0.1:8000) and stores
|
|
108
|
+
persistent application data in `~/.carole`. For an isolated application install,
|
|
109
|
+
you can use `pipx install carole.ai`. Browser automation additionally requires
|
|
110
|
+
the one-time command `playwright install chromium`.
|
|
111
|
+
|
|
112
|
+
## Features
|
|
113
|
+
|
|
114
|
+
- **Hybrid GraphRAG**: Combines Dense (LanceDB) and Sparse memory retrieval, mapped alongside a real-time `networkx` Code Graph for unparalleled context awareness.
|
|
115
|
+
- **Zero-Cost Meeting Integration**: Seamlessly integrates with Google Meet via Playwright DOM caption scraping and native chat injection.
|
|
116
|
+
- **MCP Expansion**: Features a universal Model Context Protocol firewall and dynamic ToolRegistry, expanding the ecosystem of available models and tools securely.
|
|
117
|
+
- **Native Real-Time Kanban**: EventBus-driven split-screen project management for dynamic task tracking and synchronization.
|
|
118
|
+
|
|
119
|
+
## Local Setup Instructions
|
|
120
|
+
|
|
121
|
+
Follow these steps to get Carole.ai running locally.
|
|
122
|
+
|
|
123
|
+
### 1. Prerequisites
|
|
124
|
+
- Docker and Docker Compose
|
|
125
|
+
- Node.js (v22 recommended)
|
|
126
|
+
- Python (v3.11 or later)
|
|
127
|
+
|
|
128
|
+
### 2. Environment Variables
|
|
129
|
+
Create a `.env` file in the root directory (or update the existing one) with the necessary variables. At a minimum, you'll need:
|
|
130
|
+
|
|
131
|
+
```env
|
|
132
|
+
OPENROUTER_API_KEY=your_openrouter_api_key_here
|
|
133
|
+
# Optional recovery override. Normally the first account is the local owner.
|
|
134
|
+
# CAROLE_OWNER_ID=your_account_uuid
|
|
135
|
+
# Add other required API keys or database URLs as needed
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 3. Start the Backend (FastAPI)
|
|
139
|
+
The backend requires Python and FastAPI. We recommend using a virtual environment.
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
cd backend
|
|
143
|
+
python -m venv venv
|
|
144
|
+
source venv/bin/activate # On Windows use: venv\Scripts\activate
|
|
145
|
+
pip install -r requirements.txt
|
|
146
|
+
uvicorn main:app --reload
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 4. Start the Frontend (Next.js)
|
|
150
|
+
The frontend is built with Next.js. Open a new terminal window to start it.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
cd frontend
|
|
154
|
+
npm install
|
|
155
|
+
npm run dev
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 5. Access the Application
|
|
159
|
+
- Frontend: [http://localhost:3000](http://localhost:3000)
|
|
160
|
+
- Backend API Docs: [http://localhost:8000/docs](http://localhost:8000/docs)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
## Instance owner and upgrade notes
|
|
164
|
+
|
|
165
|
+
The first account created is automatically the local instance owner. An operator
|
|
166
|
+
can optionally set `CAROLE_OWNER_ID` to an account UUID as a recovery override.
|
|
167
|
+
The instance owner controls host capabilities:
|
|
168
|
+
terminal/shell access, Git, browser automation, plugins, MCP servers, external
|
|
169
|
+
workspace paths, and instance settings/model/prompt administration. These
|
|
170
|
+
operations are unavailable until an owner is configured. Project ownership alone
|
|
171
|
+
does not grant access to the host machine. Host tools run with the backend OS
|
|
172
|
+
account's privileges; this is not an OS sandbox for untrusted tenants.
|
|
173
|
+
|
|
174
|
+
File, search, Git, and history APIs require an owned project UUID. Clients must
|
|
175
|
+
use the backend Git API; the former Next.js Git endpoint returns HTTP 410.
|
|
176
|
+
Attachments require authenticated downloads. Google accounts must reconnect
|
|
177
|
+
through Settings after upgrading: credentials are now stored separately per
|
|
178
|
+
account, and the old shared token is not reused. The OAuth start request must
|
|
179
|
+
include browser credentials so its callback can verify the initiating browser.
|
|
180
|
+
|
|
181
|
+
Docker stores application data in the `carole_data` volume at `/data/carole`.
|
|
182
|
+
Back up and copy any existing `.carole` data into that volume before switching an
|
|
183
|
+
existing deployment; creating the volume does not migrate old data. An explicit
|
|
184
|
+
`DATABASE_URL` or `CAROLE_HOME_DIR` override must point to persistent storage.
|
|
185
|
+
Playwright browsers are installed at a path available to the non-root app user.
|
|
186
|
+
|
|
187
|
+
See [runtime repair notes](docs/RUNTIME_REPAIRS.md) for the implementation changes
|
|
188
|
+
and verification boundaries.
|