cesjavi commited on
Commit
ffac2f3
·
1 Parent(s): ad68e43

Set app version to 0.7.0 and update roadmap

Browse files
ROADMAP.md CHANGED
@@ -1,53 +1,61 @@
1
- # 🗺️ AgentCollab Roadmap
2
-
3
- This document outlines the strategic evolution of Aubm, moving from a robust orchestration core to an enterprise ecosystem.
4
-
5
- ## 🟢 Phase 1: Core Foundation (Completed)
6
- - [x] **Autonomous Agent Execution**: Multi-provider support (OpenAI, Groq, Gemini, etc.).
7
- - [x] **Project Orchestration**: Intelligent task scheduling and dependency management (DAG).
8
- - [x] **Human-in-the-Loop**: Approval and rejection workflows for agent outputs.
9
- - [x] **Semantic RAG**: Contextual memory injection across project tasks.
10
- - [x] **Real-time Logs**: Streaming agent thoughts and actions via SSE.
11
- - [x] **Cost Control**: Token-based budgeting and execution blocking.
12
-
13
- ## 🟡 Phase 2: Advanced Collaboration & Tools (Completed)
14
- - [x] **Multi-Agent Debates**: Allow agents to cross-verify each other's outputs before human review.
15
- - [x] **Extended Toolbelt**:
16
- - [x] Web Browser Tool (via Playwright) for live data fetching.
17
- - [x] Code Sandbox for executing and testing generated snippets.
18
- - [x] File Generation (Excel, Word, more advanced PDF layouts).
19
- - [x] **Collaborative Editing**: Real-time collaborative output refining for humans.
20
- - [x] **Mobile Experience**: Capacitor-based mobile app for project monitoring (Initialized).
21
-
22
- ## 🔵 Phase 3: Intelligence & Scale (Completed)
23
- - [x] **Fine-tuning Loop**: Feedback loop (Like/Dislike) implemented for data collection.
24
- - [x] **Recursive Project Decomposition**: Agents that can spawn sub-tasks and manage them.
25
- - [x] **Enterprise Security**:
26
- - [x] SSO Integration (Google, GitHub via Supabase).
27
- - [x] Advanced RLS for granular team permissions.
28
- - [x] Audit logs for every LLM interaction.
29
- - [x] **Agent Marketplace**: Community-driven agent templates and specialized skill sets.
30
-
31
- ## 🔴 Phase 4: Autonomy & Beyond (Completed)
32
- - [x] **Self-Healing Infrastructure**: Agents that can monitor health and apply safe patches.
33
- - [x] **Voice Interaction**: Control navigation and hear project/task status updates via browser voice APIs.
34
- - [x] **VR/AR Dashboard**: Spatial DAG viewer scaffold for layered project/task visualization.
35
-
36
- ## Phase 5: Production Operations (Completed)
37
- - [x] **Operations Monitoring**: Backend health summary endpoint and frontend monitoring dashboard with Supabase fallback.
38
- - [x] **Deployment Hardening**: Dockerized backend/runtime profile and production CORS configuration.
39
- - [x] **Error Tracking**: Sentry-compatible error reporting hooks for backend and frontend.
40
- - [x] **Performance Budgeting**: Frontend code splitting and bundle-size targets.
41
-
42
- ## Phase 6: Distributed Scale & Intelligence (In Progress)
43
- - [x] **Recursive Project Decomposition**: Agents that can automatically break down goals.
44
- - [x] **Numerical Consistency (Semantic Backprop)**: Enforce absolute figures across tasks.
45
- - [x] **Visual Tooling**: Integrated support for charts and AI illustrations.
46
- - [x] **Vercel Deployment**: Monorepo serverless configuration.
47
- - [ ] **Asynchronous Task Queue**: Dedicated background workers (worker.py).
48
- - [ ] **Vectorized Long-term Memory**: Cross-project semantic retrieval.
49
- - [ ] **Self-Optimizing Agents**: Meta-prompting loops based on human feedback.
 
 
 
 
 
 
 
 
50
 
51
  ---
52
 
53
- *Last updated: May 2026*
 
1
+ # Aubm Roadmap
2
+
3
+ This document outlines the strategic evolution of Aubm, moving from a robust orchestration core to an enterprise-ready multi-agent operating layer.
4
+
5
+ ## Phase 1: Core Foundation (Completed)
6
+ - [x] Autonomous Agent Execution: Multi-provider support (OpenAI, Groq, Gemini, etc.).
7
+ - [x] Project Orchestration: Intelligent task scheduling and dependency management (DAG).
8
+ - [x] Human-in-the-Loop: Approval and rejection workflows for agent outputs.
9
+ - [x] Semantic RAG: Contextual memory injection across project tasks.
10
+ - [x] Real-time Logs: Streaming agent thoughts and actions via SSE.
11
+ - [x] Cost Control: Token-based budgeting and execution blocking.
12
+
13
+ ## Phase 2: Advanced Collaboration and Tools (Completed)
14
+ - [x] Multi-Agent Debates: Allow agents to cross-verify each other's outputs before human review.
15
+ - [x] Extended Toolbelt:
16
+ - [x] Web Browser Tool (via Playwright) for live data fetching.
17
+ - [x] Code Sandbox for executing and testing generated snippets.
18
+ - [x] File Generation (Excel, Word, and advanced PDF layouts).
19
+ - [x] Collaborative Editing: Real-time collaborative output refining for humans.
20
+ - [x] Mobile Experience: Capacitor-based mobile app for project monitoring (initialized).
21
+
22
+ ## Phase 3: Intelligence and Scale (Completed)
23
+ - [x] Fine-tuning Loop: Feedback loop (Like/Dislike) implemented for data collection.
24
+ - [x] Recursive Project Decomposition: Agents that can spawn sub-tasks and manage them.
25
+ - [x] Enterprise Security:
26
+ - [x] SSO Integration (Google, GitHub via Supabase).
27
+ - [x] Advanced RLS for granular team permissions.
28
+ - [x] Audit logs for every LLM interaction.
29
+ - [x] Agent Marketplace: Community-driven agent templates and specialized skill sets.
30
+
31
+ ## Phase 4: Autonomy and Beyond (Completed)
32
+ - [x] Self-Healing Infrastructure: Agents that can monitor health and apply safe patches.
33
+ - [x] Voice Interaction: Control navigation and hear project/task status updates via browser voice APIs.
34
+ - [x] VR/AR Dashboard: Spatial DAG viewer scaffold for layered project/task visualization.
35
+
36
+ ## Phase 5: Production Operations (Completed)
37
+ - [x] Operations Monitoring: Backend health summary endpoint and frontend monitoring dashboard with Supabase fallback.
38
+ - [x] Deployment Hardening: Dockerized backend/runtime profile and production CORS configuration.
39
+ - [x] Error Tracking: Sentry-compatible error reporting hooks for backend and frontend.
40
+ - [x] Performance Budgeting: Frontend code splitting and bundle-size targets.
41
+
42
+ ## Phase 6: Distributed Scale and Intelligence (In Progress)
43
+ - [x] Recursive Project Decomposition: Agents that can automatically break down goals.
44
+ - [x] Numerical Consistency (Semantic Backprop): Enforce absolute figures across tasks.
45
+ - [x] Visual Tooling: Integrated support for charts and AI illustrations.
46
+ - [x] Vercel Deployment: Monorepo serverless configuration.
47
+ - [x] Heuristic Output Guardrails: Prompt hardening, reviewer checks, and final-report filtering for placeholders, unsupported claims, and low-quality sections.
48
+ - [ ] Asynchronous Task Queue: Dedicated background workers (`worker.py`).
49
+ - [ ] Vectorized Long-term Memory: Cross-project semantic retrieval.
50
+ - [ ] Self-Optimizing Agents: Meta-prompting loops based on human feedback.
51
+
52
+ ## Phase 7: Structured Evidence and Entity Integrity (Next)
53
+ - [ ] Strict JSON Task Schemas: Enforce structured outputs per task type instead of free-form text.
54
+ - [ ] Mandatory `source_url` per Claim: Require evidence links for competitor, pricing, release, benchmark, and market claims.
55
+ - [ ] Entity Normalization Layer: Canonicalize entity names, merge aliases, and separate direct competitors from adjacent tools before final reporting.
56
+ - [ ] Semantic Deduplication: Collapse equivalent claims written differently across tasks.
57
+ - [ ] Evidence-Aware Final Report: Build the final report from normalized entities and validated claims only.
58
 
59
  ---
60
 
61
+ *Last updated: May 6, 2026*
VERSION ADDED
@@ -0,0 +1 @@
 
 
1
+ 0.7.0
backend/main.py CHANGED
@@ -10,6 +10,7 @@ import sentry_sdk
10
  # Load environment variables
11
  load_dotenv()
12
  FRONTEND_DIST = Path(__file__).resolve().parent.parent / "frontend" / "dist"
 
13
 
14
  # Sentry Initialization
15
  SENTRY_DSN = os.getenv("SENTRY_DSN")
@@ -23,7 +24,7 @@ if SENTRY_DSN:
23
  app = FastAPI(
24
  title="Aubm API",
25
  description="Enterprise-Grade AI Agent Orchestration & Collaboration Platform",
26
- version="0.1.0"
27
  )
28
 
29
  # CORS Configuration
@@ -46,7 +47,7 @@ async def root():
46
  return {
47
  "status": "online",
48
  "message": "Aubm API is operational",
49
- "version": "0.1.0"
50
  }
51
 
52
  # Placeholder for routers
@@ -63,6 +64,7 @@ async def runtime_config():
63
  "supabaseUrl": os.getenv("VITE_SUPABASE_URL", os.getenv("SUPABASE_URL", "")),
64
  "supabaseAnonKey": os.getenv("VITE_SUPABASE_ANON_KEY", os.getenv("SUPABASE_ANON_KEY", "")),
65
  "sentryDsn": os.getenv("VITE_SENTRY_DSN", os.getenv("SENTRY_DSN", "")),
 
66
  }
67
  return Response(
68
  content=f"window.__AUBM_CONFIG__ = {json.dumps(config)};",
 
10
  # Load environment variables
11
  load_dotenv()
12
  FRONTEND_DIST = Path(__file__).resolve().parent.parent / "frontend" / "dist"
13
+ APP_VERSION = (Path(__file__).resolve().parent.parent / "VERSION").read_text(encoding="utf-8").strip()
14
 
15
  # Sentry Initialization
16
  SENTRY_DSN = os.getenv("SENTRY_DSN")
 
24
  app = FastAPI(
25
  title="Aubm API",
26
  description="Enterprise-Grade AI Agent Orchestration & Collaboration Platform",
27
+ version=APP_VERSION
28
  )
29
 
30
  # CORS Configuration
 
47
  return {
48
  "status": "online",
49
  "message": "Aubm API is operational",
50
+ "version": APP_VERSION
51
  }
52
 
53
  # Placeholder for routers
 
64
  "supabaseUrl": os.getenv("VITE_SUPABASE_URL", os.getenv("SUPABASE_URL", "")),
65
  "supabaseAnonKey": os.getenv("VITE_SUPABASE_ANON_KEY", os.getenv("SUPABASE_ANON_KEY", "")),
66
  "sentryDsn": os.getenv("VITE_SENTRY_DSN", os.getenv("SENTRY_DSN", "")),
67
+ "appVersion": APP_VERSION,
68
  }
69
  return Response(
70
  content=f"window.__AUBM_CONFIG__ = {json.dumps(config)};",
frontend/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
  {
2
  "name": "frontend",
3
- "version": "0.0.0",
4
  "lockfileVersion": 3,
5
  "requires": true,
6
  "packages": {
7
  "": {
8
  "name": "frontend",
9
- "version": "0.0.0",
10
  "dependencies": {
11
  "@capacitor/android": "^8.3.1",
12
  "@capacitor/cli": "^7.6.2",
 
1
  {
2
  "name": "frontend",
3
+ "version": "0.7.0",
4
  "lockfileVersion": 3,
5
  "requires": true,
6
  "packages": {
7
  "": {
8
  "name": "frontend",
9
+ "version": "0.7.0",
10
  "dependencies": {
11
  "@capacitor/android": "^8.3.1",
12
  "@capacitor/cli": "^7.6.2",
frontend/package.json CHANGED
@@ -1,7 +1,7 @@
1
  {
2
  "name": "frontend",
3
  "private": true,
4
- "version": "0.0.0",
5
  "type": "module",
6
  "scripts": {
7
  "dev": "vite",
 
1
  {
2
  "name": "frontend",
3
  "private": true,
4
+ "version": "0.7.0",
5
  "type": "module",
6
  "scripts": {
7
  "dev": "vite",
frontend/src/App.tsx CHANGED
@@ -31,11 +31,13 @@ import SplashScreen from './components/SplashScreen';
31
  import { useEffect } from 'react';
32
  import { getUiMode, saveUiMode } from './services/uiMode';
33
  import type { UiMode } from './services/uiMode';
 
34
 
35
  type AppTab = 'dashboard' | 'project-detail' | 'agents' | 'marketplace' | 'debate' | 'voice' | 'spatial' | 'monitoring' | 'new-project' | 'settings';
36
 
37
  const App: React.FC = () => {
38
  const { session, loading, signOut, profile, user } = useAuth();
 
39
  const [activeTab, setActiveTab] = useState<AppTab>('dashboard');
40
  const [selectedProjectId, setSelectedProjectId] = useState<string | null>(null);
41
  const [initialTaskId, setInitialTaskId] = useState<string | null>(null);
@@ -178,6 +180,9 @@ const App: React.FC = () => {
178
  <div style={{ fontSize: '0.8rem', color: 'var(--text-dim)' }}>{profile?.role || 'user'}</div>
179
  </div>
180
  </div>
 
 
 
181
  </div>
182
  </motion.aside>
183
  )}
 
31
  import { useEffect } from 'react';
32
  import { getUiMode, saveUiMode } from './services/uiMode';
33
  import type { UiMode } from './services/uiMode';
34
+ import { getAppVersion } from './services/runtimeConfig';
35
 
36
  type AppTab = 'dashboard' | 'project-detail' | 'agents' | 'marketplace' | 'debate' | 'voice' | 'spatial' | 'monitoring' | 'new-project' | 'settings';
37
 
38
  const App: React.FC = () => {
39
  const { session, loading, signOut, profile, user } = useAuth();
40
+ const appVersion = getAppVersion();
41
  const [activeTab, setActiveTab] = useState<AppTab>('dashboard');
42
  const [selectedProjectId, setSelectedProjectId] = useState<string | null>(null);
43
  const [initialTaskId, setInitialTaskId] = useState<string | null>(null);
 
180
  <div style={{ fontSize: '0.8rem', color: 'var(--text-dim)' }}>{profile?.role || 'user'}</div>
181
  </div>
182
  </div>
183
+ <div style={{ marginTop: 'var(--space-sm)', fontSize: '0.75rem', color: 'var(--text-dim)' }}>
184
+ Version {appVersion}
185
+ </div>
186
  </div>
187
  </motion.aside>
188
  )}
frontend/src/components/SettingsView.tsx CHANGED
@@ -4,7 +4,7 @@ import { motion } from 'framer-motion';
4
  import { useAuth } from '../context/useAuth';
5
  import { getDefaultModel, getDefaultProvider, providerOptions, saveProviderDefaults } from '../services/llmConfig';
6
  import type { SupportedProvider } from '../services/llmConfig';
7
- import { getApiUrl, getSupabaseUrl } from '../services/runtimeConfig';
8
  import type { UiMode } from '../services/uiMode';
9
  import { supabase } from '../services/supabase';
10
 
@@ -32,7 +32,8 @@ const SettingsView: React.FC<{ uiMode: UiMode; onUiModeChange: (mode: UiMode) =>
32
  const config = useMemo(() => {
33
  const apiUrl = getApiUrl() || 'Same origin';
34
  const supabaseUrl = getSupabaseUrl() || 'Not configured';
35
- return { apiUrl, supabaseUrl };
 
36
  }, []);
37
 
38
  const providerModels = providerOptions.find((option) => option.id === provider)?.models ?? [];
@@ -169,6 +170,7 @@ const SettingsView: React.FC<{ uiMode: UiMode; onUiModeChange: (mode: UiMode) =>
169
  <SettingRow label="API URL" value={config.apiUrl} />
170
  <SettingRow label="Supabase URL" value={config.supabaseUrl} />
171
  <SettingRow label="Frontend Mode" value={import.meta.env.MODE} />
 
172
  </section>
173
 
174
  <section className="glass-panel settings-section">
 
4
  import { useAuth } from '../context/useAuth';
5
  import { getDefaultModel, getDefaultProvider, providerOptions, saveProviderDefaults } from '../services/llmConfig';
6
  import type { SupportedProvider } from '../services/llmConfig';
7
+ import { getApiUrl, getAppVersion, getSupabaseUrl } from '../services/runtimeConfig';
8
  import type { UiMode } from '../services/uiMode';
9
  import { supabase } from '../services/supabase';
10
 
 
32
  const config = useMemo(() => {
33
  const apiUrl = getApiUrl() || 'Same origin';
34
  const supabaseUrl = getSupabaseUrl() || 'Not configured';
35
+ const appVersion = getAppVersion();
36
+ return { apiUrl, supabaseUrl, appVersion };
37
  }, []);
38
 
39
  const providerModels = providerOptions.find((option) => option.id === provider)?.models ?? [];
 
170
  <SettingRow label="API URL" value={config.apiUrl} />
171
  <SettingRow label="Supabase URL" value={config.supabaseUrl} />
172
  <SettingRow label="Frontend Mode" value={import.meta.env.MODE} />
173
+ <SettingRow label="App Version" value={config.appVersion} />
174
  </section>
175
 
176
  <section className="glass-panel settings-section">
frontend/src/services/runtimeConfig.ts CHANGED
@@ -3,6 +3,7 @@ interface RuntimeConfig {
3
  supabaseUrl?: string;
4
  supabaseAnonKey?: string;
5
  sentryDsn?: string;
 
6
  }
7
 
8
  declare global {
@@ -26,3 +27,5 @@ export const getSupabaseAnonKey = () => (
26
  export const getSentryDsn = () => (
27
  import.meta.env.VITE_SENTRY_DSN || runtimeConfig.sentryDsn || ''
28
  );
 
 
 
3
  supabaseUrl?: string;
4
  supabaseAnonKey?: string;
5
  sentryDsn?: string;
6
+ appVersion?: string;
7
  }
8
 
9
  declare global {
 
27
  export const getSentryDsn = () => (
28
  import.meta.env.VITE_SENTRY_DSN || runtimeConfig.sentryDsn || ''
29
  );
30
+
31
+ export const getAppVersion = () => runtimeConfig.appVersion || import.meta.env.VITE_APP_VERSION || '0.7.0';