@jlongo78/agent-spaces 0.10.0-beta.2 → 0.10.0-beta.4
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/(desktop)/admin/analytics/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/admin/users/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/analytics/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/cortex/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/network/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/sessions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/terminal/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/terminal/pane/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/terminal/remote/[nodeId]/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(desktop)/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/analytics.html +1 -1
- package/.next/standalone/.next/server/app/admin/analytics.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap/admin/analytics/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap/admin/analytics.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap/admin.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/analytics.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/analytics.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/analytics.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/analytics.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/users.html +1 -1
- package/.next/standalone/.next/server/app/admin/users.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap/admin/users/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap/admin/users.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap/admin.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/users.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/users.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/users.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/admin/users.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/users.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/analytics.html +1 -1
- package/.next/standalone/.next/server/app/analytics.rsc +2 -2
- package/.next/standalone/.next/server/app/analytics.segments/!KGRlc2t0b3Ap/analytics/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/analytics.segments/!KGRlc2t0b3Ap/analytics.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/analytics.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/analytics.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/analytics.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/analytics.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/analytics.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin/analytics/route.js +4 -2
- package/.next/standalone/.next/server/app/api/admin/analytics/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/admin/users/[id]/route.js +4 -2
- package/.next/standalone/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/admin/users/route.js +4 -2
- package/.next/standalone/.next/server/app/api/admin/users/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/analytics/overview/route.js +5 -4
- package/.next/standalone/.next/server/app/api/analytics/overview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login/route.js +3 -2
- package/.next/standalone/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route.js +3 -2
- package/.next/standalone/.next/server/app/api/auth/me/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/totp/setup/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/totp/setup/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/totp/status/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/totp/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/totp/verify/route.js +3 -2
- package/.next/standalone/.next/server/app/api/auth/totp/verify/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/benchmark/lobes/route.js +4 -3
- package/.next/standalone/.next/server/app/api/benchmark/lobes/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/benchmark/run/route.js +4 -3
- package/.next/standalone/.next/server/app/api/benchmark/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/benchmark/runs/[id]/route.js +4 -3
- package/.next/standalone/.next/server/app/api/benchmark/runs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/benchmark/runs/route.js +4 -3
- package/.next/standalone/.next/server/app/api/benchmark/runs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/benchmark/status/route.js +4 -3
- package/.next/standalone/.next/server/app/api/benchmark/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/bulk/route.js +5 -4
- package/.next/standalone/.next/server/app/api/bulk/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/chat/route.js +4 -2
- package/.next/standalone/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/claude/usage/route.js +5 -4
- package/.next/standalone/.next/server/app/api/claude/usage/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js +3 -3
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/context/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/context/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/curation/assess/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/curation/assess/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/curation/publish/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/curation/publish/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/curation/refine/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/curation/refine/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/curation/review/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/curation/review/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/curation/seed/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/curation/seed/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/export/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/export/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/federation/pending/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/federation/pending/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/federation/resolve/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/federation/resolve/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/federation/search/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/federation/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/federation/teach/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/federation/teach/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/graph/edges/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/graph/edges/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/graph/entities/[id]/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/graph/entities/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/graph/entities/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/graph/entities/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/graph/populate/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/graph/populate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/import/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/import/status/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/import/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/ingest/bootstrap/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/ingest/bootstrap/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/ingest/status/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/ingest/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/knowledge/[id]/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/knowledge/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/knowledge/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/knowledge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/lobes/[id]/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/lobes/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/lobes/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/lobes/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/lobes/share/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/lobes/share/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/marketplace/browse/route.js +3 -3
- package/.next/standalone/.next/server/app/api/cortex/marketplace/browse/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/marketplace/preview/route.js +3 -3
- package/.next/standalone/.next/server/app/api/cortex/marketplace/preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/mcp/call/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/mcp/call/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/mcp/tools/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/mcp/tools/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/search/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/settings/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/status/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/timeline/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/timeline/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/usage/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/usage/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/cortex/workspace/[id]/context/route.js +4 -3
- package/.next/standalone/.next/server/app/api/cortex/workspace/[id]/context/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js +5 -3
- package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/files/route.js +3 -2
- package/.next/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/folders/route.js +3 -3
- package/.next/standalone/.next/server/app/api/folders/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/connect-callback/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/connect-callback/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/connect-request/[id]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/connect-request/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/connect-request/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/connect-request/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/discovered/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/discovered/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/handshake/route.js +4 -3
- package/.next/standalone/.next/server/app/api/network/handshake/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/health/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/health/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/identity/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/identity/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/keys/[id]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/keys/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/keys/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/keys/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/nodes/[id]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/nodes/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/nodes/check/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/nodes/check/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/nodes/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/nodes/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/panes/[id]/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/panes/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/panes/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/panes/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/projects/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/projects/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/proxy/[nodeId]/[...path]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/proxy/[nodeId]/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/search/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/sessions/[id]/messages/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/sessions/[id]/messages/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/sessions/[id]/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/sessions/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/sessions/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/terminal/token/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/terminal/token/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/workspaces/[id]/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/workspaces/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/workspaces/route.js +6 -5
- package/.next/standalone/.next/server/app/api/network/workspaces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/panes/[id]/diff/route.js +5 -4
- package/.next/standalone/.next/server/app/api/panes/[id]/diff/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/panes/[id]/route.js +5 -4
- package/.next/standalone/.next/server/app/api/panes/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/panes/route.js +5 -4
- package/.next/standalone/.next/server/app/api/panes/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js +5 -4
- package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/[...path]/route.js +3 -3
- package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/status/route.js +3 -3
- package/.next/standalone/.next/server/app/api/proxy/models/[modelId]/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/search/route.js +6 -5
- package/.next/standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/server-config/route.js +2 -2
- package/.next/standalone/.next/server/app/api/server-config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[id]/chat/route.js +5 -3
- package/.next/standalone/.next/server/app/api/sessions/[id]/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[id]/messages/route.js +5 -4
- package/.next/standalone/.next/server/app/api/sessions/[id]/messages/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[id]/route.js +5 -4
- package/.next/standalone/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/route.js +6 -5
- package/.next/standalone/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sync/route.js +4 -3
- package/.next/standalone/.next/server/app/api/sync/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tags/route.js +5 -4
- package/.next/standalone/.next/server/app/api/tags/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tier/route.js +4 -3
- package/.next/standalone/.next/server/app/api/tier/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/updates/route.js +2 -2
- package/.next/standalone/.next/server/app/api/updates/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/whisper/config/route.js +2 -2
- package/.next/standalone/.next/server/app/api/whisper/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/whisper/route.js +2 -2
- package/.next/standalone/.next/server/app/api/whisper/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wizard/chat/route.js +3 -3
- package/.next/standalone/.next/server/app/api/wizard/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/context/[key]/route.js +5 -3
- package/.next/standalone/.next/server/app/api/workspaces/[id]/context/[key]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/context/route.js +5 -3
- package/.next/standalone/.next/server/app/api/workspaces/[id]/context/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/[msgId]/route.js +5 -3
- package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/[msgId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/route.js +5 -3
- package/.next/standalone/.next/server/app/api/workspaces/[id]/messages/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/route.js +5 -4
- package/.next/standalone/.next/server/app/api/workspaces/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/sessions/route.js +5 -4
- package/.next/standalone/.next/server/app/api/workspaces/[id]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js +5 -4
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js +5 -4
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/route.js +6 -5
- package/.next/standalone/.next/server/app/api/workspaces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/cortex.html +1 -1
- package/.next/standalone/.next/server/app/cortex.rsc +2 -2
- package/.next/standalone/.next/server/app/cortex.segments/!KGRlc2t0b3Ap/cortex/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/cortex.segments/!KGRlc2t0b3Ap/cortex.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/cortex.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/cortex.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/cortex.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/cortex.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/cortex.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/icon.png/route.js +2 -2
- package/.next/standalone/.next/server/app/icon.png/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/m/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/m/projects.html +1 -1
- package/.next/standalone/.next/server/app/m/projects.rsc +2 -2
- package/.next/standalone/.next/server/app/m/projects.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/projects.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/projects.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/projects.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/projects.segments/m/projects/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/projects.segments/m/projects.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/projects.segments/m.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/m/sessions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/m/sessions.html +1 -1
- package/.next/standalone/.next/server/app/m/sessions.rsc +2 -2
- package/.next/standalone/.next/server/app/m/sessions.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/sessions.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/sessions.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/sessions.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/sessions.segments/m/sessions/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/sessions.segments/m/sessions.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/sessions.segments/m.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/m/settings.html +1 -1
- package/.next/standalone/.next/server/app/m/settings.rsc +2 -2
- package/.next/standalone/.next/server/app/m/settings.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/settings.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/settings.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/settings.segments/m/settings/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/settings.segments/m/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/settings.segments/m.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/terminal/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/m/terminal.html +1 -1
- package/.next/standalone/.next/server/app/m/terminal.rsc +2 -2
- package/.next/standalone/.next/server/app/m/terminal.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/terminal.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/terminal.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/terminal.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m/terminal.segments/m/terminal/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/terminal.segments/m/terminal.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m/terminal.segments/m.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m.html +1 -1
- package/.next/standalone/.next/server/app/m.rsc +2 -2
- package/.next/standalone/.next/server/app/m.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/m.segments/m/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/m.segments/m.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/network.html +1 -1
- package/.next/standalone/.next/server/app/network.rsc +2 -2
- package/.next/standalone/.next/server/app/network.segments/!KGRlc2t0b3Ap/network/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/network.segments/!KGRlc2t0b3Ap/network.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/network.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/network.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/network.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/network.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/network.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/projects.html +1 -1
- package/.next/standalone/.next/server/app/projects.rsc +2 -2
- package/.next/standalone/.next/server/app/projects.segments/!KGRlc2t0b3Ap/projects/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/projects.segments/!KGRlc2t0b3Ap/projects.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/projects.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/projects.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/sessions.html +1 -1
- package/.next/standalone/.next/server/app/sessions.rsc +2 -2
- package/.next/standalone/.next/server/app/sessions.segments/!KGRlc2t0b3Ap/sessions/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/sessions.segments/!KGRlc2t0b3Ap/sessions.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/sessions.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/sessions.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/sessions.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/sessions.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/sessions.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/!KGRlc2t0b3Ap/settings/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/!KGRlc2t0b3Ap/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/terminal.html +1 -1
- package/.next/standalone/.next/server/app/terminal.rsc +3 -3
- package/.next/standalone/.next/server/app/terminal.segments/!KGRlc2t0b3Ap/terminal/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/terminal.segments/!KGRlc2t0b3Ap/terminal.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/terminal.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/terminal.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/terminal.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/terminal.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/terminal.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/vr/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/vr.html +1 -1
- package/.next/standalone/.next/server/app/vr.rsc +2 -2
- package/.next/standalone/.next/server/app/vr.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/vr.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/vr.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/vr.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/vr.segments/vr/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/vr.segments/vr.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspaces.html +1 -1
- package/.next/standalone/.next/server/app/workspaces.rsc +2 -2
- package/.next/standalone/.next/server/app/workspaces.segments/!KGRlc2t0b3Ap/workspaces/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspaces.segments/!KGRlc2t0b3Ap/workspaces.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspaces.segments/!KGRlc2t0b3Ap.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspaces.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/workspaces.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/workspaces.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/workspaces.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cf5ebdb._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0f15af1e._.js +78 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__107eab8a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1094360c._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__118ea5e0._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__160e7c73._.js +5 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__16d4da21._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c542684._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1f23bae4._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1faefa3e._.js +19 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2145098e._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2748c76c._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2c08d908._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2e29b4bd._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__e3ecfd17._.js → [root-of-the-server]__34fd47d2._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__366b6cec._.js +78 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4d51508f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5663673e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__57e0cc31._.js +133 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__57ebbe63._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d3345e4._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5ee7aa9d._.js +11 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__60caf825._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__65c9857f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__678f6823._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__685c95d8._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__41d4d426._.js → [root-of-the-server]__69568dc2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6a0bc4ae._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6b876561._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6e89713c._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6f713737._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__725f10f4._.js +78 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__785b0597._.js +38 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7c728bed._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7da958b5._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7daed406._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7f140e4b._.js +78 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__80d826f7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__83a3c97b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__84c15a0e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__85c33341._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__88f3d920._.js +78 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8c916e85._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8deb2ae3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8df5a740._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8f238bd9._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__955ab668._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9a061e91._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a04a87d5._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a803051f._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac0a9b09._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac3e37b6._.js +13 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__96685488._.js → [root-of-the-server]__add9e50d._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b57f4274._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b84b3426._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba8224a1._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd1c1d0d._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c1442c38._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c18bdab2._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c1efc6a8._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c697b87e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c6dc43c6._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ccce7f4f._.js +78 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d92f347c._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__dac9e21e._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e3f9ddbc._.js +78 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e66fc05f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e7add82c._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fa9a5ec0._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ff9f6af0._.js +42 -0
- package/.next/standalone/.next/server/chunks/_0142f96b._.js +3 -0
- package/.next/standalone/.next/server/chunks/_0ebd30d3._.js +3 -0
- package/.next/standalone/.next/server/chunks/_19a59078._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1bc02021._.js +11 -0
- package/.next/standalone/.next/server/chunks/_1e381a28._.js +3 -0
- package/.next/standalone/.next/server/chunks/_2699eda7._.js +3 -0
- package/.next/standalone/.next/server/chunks/_2fd02f70._.js +3 -0
- package/.next/standalone/.next/server/chunks/_373d522f._.js +3 -0
- package/.next/standalone/.next/server/chunks/_43fc1196._.js +3 -0
- package/.next/standalone/.next/server/chunks/_48ec4374._.js +3 -0
- package/.next/standalone/.next/server/chunks/_563d9ecc._.js +3 -0
- package/.next/standalone/.next/server/chunks/_583f9ae2._.js +3 -0
- package/.next/standalone/.next/server/chunks/_5a167705._.js +3 -0
- package/.next/standalone/.next/server/chunks/_5a8cc3a5._.js +3 -0
- package/.next/standalone/.next/server/chunks/_5d894fb4._.js +3 -0
- package/.next/standalone/.next/server/chunks/_6bbf8264._.js +3 -0
- package/.next/standalone/.next/server/chunks/_6c4bcec1._.js +3 -0
- package/.next/standalone/.next/server/chunks/_7a29d111._.js +3 -0
- package/.next/standalone/.next/server/chunks/_7d3bab25._.js +3 -0
- package/.next/standalone/.next/server/chunks/_7ed4d1a4._.js +3 -0
- package/.next/standalone/.next/server/chunks/_8072d20c._.js +3 -0
- package/.next/standalone/.next/server/chunks/_81b87c01._.js +3 -0
- package/.next/standalone/.next/server/chunks/_881b7b28._.js +3 -0
- package/.next/standalone/.next/server/chunks/_902a1d56._.js +3 -0
- package/.next/standalone/.next/server/chunks/_96258f1c._.js +3 -0
- package/.next/standalone/.next/server/chunks/_96f79f8f._.js +3 -0
- package/.next/standalone/.next/server/chunks/_a0379bc2._.js +3 -0
- package/.next/standalone/.next/server/chunks/_a0f604e8._.js +3 -0
- package/.next/standalone/.next/server/chunks/_a959b121._.js +3 -0
- package/.next/standalone/.next/server/chunks/_a975011f._.js +3 -0
- package/.next/standalone/.next/server/chunks/_aa956b66._.js +3 -0
- package/.next/standalone/.next/server/chunks/_ad7e7d57._.js +3 -0
- package/.next/standalone/.next/server/chunks/_aebf2285._.js +3 -0
- package/.next/standalone/.next/server/chunks/_b259dda0._.js +36 -0
- package/.next/standalone/.next/server/chunks/_b7c60fdc._.js +3 -0
- package/.next/standalone/.next/server/chunks/_bd23ddeb._.js +3 -0
- package/.next/standalone/.next/server/chunks/_cd02dfbe._.js +3 -0
- package/.next/standalone/.next/server/chunks/_d3ecca80._.js +3 -0
- package/.next/standalone/.next/server/chunks/_d48dfa43._.js +11 -0
- package/.next/standalone/.next/server/chunks/_dba648d6._.js +3 -0
- package/.next/standalone/.next/server/chunks/_df42ac6e._.js +3 -0
- package/.next/standalone/.next/server/chunks/_dfe0e460._.js +42 -0
- package/.next/standalone/.next/server/chunks/_ead2734e._.js +3 -0
- package/.next/standalone/.next/server/chunks/_eb4efd0a._.js +3 -0
- package/.next/standalone/.next/server/chunks/_eb66a871._.js +3 -0
- package/.next/standalone/.next/server/chunks/_ef715efd._.js +3 -0
- package/.next/standalone/.next/server/chunks/_f361a656._.js +3 -0
- package/.next/standalone/.next/server/chunks/_f54ddbf4._.js +3 -0
- package/.next/standalone/.next/server/chunks/_fe2866f2._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_4c408326.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_5603adbc.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7180f8ad.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_b6be66d9.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f7054fd7.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__66aca5d4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_(desktop)_terminal_page_tsx_de5e8d85._.js +1 -1
- package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__90eeddae._.js +1 -1
- package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__ca3f649e._.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/static/chunks/{732b7502f82e7c37.css → 044decb96250e420.css} +1 -1
- package/.next/standalone/.next/static/chunks/{23a9627a951672ed.js → 8b53c673e79b82f1.js} +3 -3
- package/.next/standalone/bin/scrub-standalone.js +5 -0
- package/.next/standalone/bin/spaces-dev.js +13 -3
- package/.next/standalone/bin/spaces.js +25 -4
- package/.next/standalone/package-lock.json +2 -2
- package/.next/standalone/package.json +3 -2
- package/.next/standalone/src/app/(desktop)/terminal/page.tsx +22 -1
- package/.next/standalone/src/app/api/network/discovered/route.ts +2 -2
- package/.next/standalone/src/app/api/network/nodes/check/route.ts +2 -2
- package/.next/standalone/src/app/api/network/nodes/route.ts +2 -2
- package/.next/standalone/src/app/api/server-config/route.ts +9 -18
- package/.next/standalone/src/lib/admin/api/analytics.ts +1 -8
- package/.next/standalone/src/lib/admin/api/users.ts +1 -8
- package/.next/standalone/src/lib/admin/api/usersById.ts +1 -8
- package/.next/standalone/src/lib/auth/guard.ts +46 -0
- package/.next/standalone/src/lib/auth/index.ts +1 -0
- package/.next/standalone/src/lib/db/queries.ts +11 -1
- package/.next/standalone/src/lib/network/api/discovered.ts +4 -1
- package/.next/standalone/src/lib/network/api/identity.ts +6 -0
- package/.next/standalone/src/lib/network/api/keys.ts +6 -0
- package/.next/standalone/src/lib/network/api/keysById.ts +3 -0
- package/.next/standalone/src/lib/network/api/nodes.ts +49 -3
- package/.next/standalone/src/lib/network/api/nodesById.ts +5 -0
- package/.next/standalone/src/lib/network/api/nodesCheck.ts +4 -1
- package/.next/standalone/src/lib/network/api/proxy.ts +5 -0
- package/.next/standalone/src/middleware.ts +24 -10
- package/.next/standalone/tsconfig.tsbuildinfo +1 -1
- package/bin/scrub-standalone.js +5 -0
- package/bin/spaces-dev.js +13 -3
- package/bin/spaces.js +25 -4
- package/package.json +3 -2
- package/.next/standalone/.next/server/chunks/[externals]_next_dist_b89b5a39._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0153ac12._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01a4559c._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__029ab763._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__037992dc._.js +0 -141
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06bb204a._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fd17dcf._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__107439ea._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12dff461._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13eb511a._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__141c8d34._.js +0 -172
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__151efd48._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__16c141c2._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__17fee60c._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a525be8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1aea45f5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1cb4ee6b._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1e25d3db._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1f7566a3._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__20382bee._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2082a624._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2091a7ed._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__24525ae7._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__284b02fc._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2a1a1d0f._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2cf17888._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__323ae5c9._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__34db98f7._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__39efba69._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3aeedc57._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3bbe9d04._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3c2324ba._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__40df3f5d._.js +0 -172
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__42a3fe3c._.js +0 -141
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__42d5d5be._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__49821b61._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__49f58cee._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4b9c38dc._.js +0 -141
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4c0ee9c7._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__530862c6._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__55504160._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__599f26fe._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5efa69f5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__60483ece._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__61135659._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__66331034._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6887294d._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6b9396b4._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6cfd7062._.js +0 -166
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6e8d89e2._.js +0 -149
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6f5b3cfe._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__71d5b087._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__76434a8e._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__798bafa7._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7b873fdb._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7d73f791._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7dc76d0e._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__80a85d1f._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__81f2a9b7._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__82f11618._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__834efefe._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__853663ea._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__861f2472._.js +0 -172
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__882d0924._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__88959e7f._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8b6c05dc._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__912a22a4._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__93d21ad1._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__94532b09._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__97e87518._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9c13c8d0._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9cb13212._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d315363._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9ec369db._.js +0 -13
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9f09ade5._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9f986ad2._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a35913cf._.js +0 -172
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a3641117._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a76c75a0._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a934c48d._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9431ac6._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa3381a4._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ab1cc16c._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ab22ca4f._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac20d518._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aee3bf91._.js +0 -172
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b1114936._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b15ade1f._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b2bc7a81._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b51446e5._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba344563._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c3b2e20c._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ca93ae79._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cf4a76c0._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d20bed9e._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d2d59054._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d4f1c0c0._.js +0 -38
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d6de7a45._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__da33b519._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__dc820e44._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e1058e69._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e1dfb4d4._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e3606cd1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e55b6fc5._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e6555dc3._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e65c3971._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ea9e2d75._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ec37cbee._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f3c19e4b._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f445bd01._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f7b0b4da._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fb4c016b._.js +0 -133
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fd86530e._.js +0 -78
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fef9b1ec._.js +0 -133
- package/.next/standalone/docs/plans/2026-02-24-multi-agent-sessions-design.md +0 -133
- package/.next/standalone/docs/plans/2026-02-24-multi-agent-sessions-plan.md +0 -959
- package/.next/standalone/docs/plans/2026-03-07-service-command-design.md +0 -146
- package/.next/standalone/docs/plans/2026-03-07-service-command-plan.md +0 -254
- package/.next/standalone/docs/plans/2026-04-23-consolidate-addons-design.md +0 -212
- package/.next/standalone/docs/plans/2026-04-23-consolidate-addons-plan.md +0 -1509
- package/.next/standalone/docs/superpowers/plans/2026-03-12-spaces-cortex.md +0 -5270
- package/.next/standalone/docs/superpowers/plans/2026-03-13-cortex-wiring.md +0 -1387
- package/.next/standalone/docs/superpowers/plans/2026-03-14-cortex-v2-entity-graph.md +0 -1923
- package/.next/standalone/docs/superpowers/plans/2026-03-14-cortex-v2-knowledge-evolution.md +0 -1113
- package/.next/standalone/docs/superpowers/plans/2026-03-15-cortex-v2-boundary-engine.md +0 -853
- package/.next/standalone/docs/superpowers/plans/2026-03-15-cortex-v2-context-engine.md +0 -1274
- package/.next/standalone/docs/superpowers/plans/2026-03-15-cortex-v2-signal-ingestion.md +0 -933
- package/.next/standalone/docs/superpowers/plans/2026-03-16-cortex-lobes.md +0 -1080
- package/.next/standalone/docs/superpowers/plans/2026-03-16-cortex-v2-gravity-system.md +0 -768
- package/.next/standalone/docs/superpowers/plans/2026-03-16-cortex-v2-ui.md +0 -1108
- package/.next/standalone/docs/superpowers/plans/2026-03-18-cortex-ui-integration.md +0 -1846
- package/.next/standalone/docs/superpowers/plans/2026-03-19-vr-phase1-shell.md +0 -1639
- package/.next/standalone/docs/superpowers/plans/2026-03-27-dockview-pane-layout.md +0 -98
- package/.next/standalone/docs/superpowers/plans/2026-04-21-workspace-todos.md +0 -1097
- package/.next/standalone/docs/superpowers/plans/2026-04-22-claude-usage-display.md +0 -749
- package/.next/standalone/docs/superpowers/specs/2026-03-11-universe-view-design.md +0 -320
- package/.next/standalone/docs/superpowers/specs/2026-03-12-spaces-brain-design.md +0 -720
- package/.next/standalone/docs/superpowers/specs/2026-03-13-cortex-wiring-design.md +0 -268
- package/.next/standalone/docs/superpowers/specs/2026-03-14-cortex-v2-design.md +0 -623
- package/.next/standalone/docs/superpowers/specs/2026-03-16-cortex-lobes-design.md +0 -263
- package/.next/standalone/docs/superpowers/specs/2026-03-16-cortex-v2-ui-design.md +0 -240
- package/.next/standalone/docs/superpowers/specs/2026-03-16-pane-ux-design.md +0 -77
- package/.next/standalone/docs/superpowers/specs/2026-03-18-cortex-ui-integration-design.md +0 -341
- package/.next/standalone/docs/superpowers/specs/2026-03-19-vr-phase1-shell-design.md +0 -288
- package/.next/standalone/docs/superpowers/specs/2026-03-27-pane-diff-review-and-project-wizard-design.md +0 -322
- package/.next/standalone/docs/superpowers/specs/2026-04-21-workspace-todos-design.md +0 -180
- package/.next/standalone/docs/superpowers/specs/2026-04-22-claude-usage-display-design.md +0 -183
- /package/.next/standalone/.next/static/{Y9EeSGuSi-8qpkLvIBy0a → mimGB6C_ZmJMiVnOe9tqZ}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{Y9EeSGuSi-8qpkLvIBy0a → mimGB6C_ZmJMiVnOe9tqZ}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{Y9EeSGuSi-8qpkLvIBy0a → mimGB6C_ZmJMiVnOe9tqZ}/_ssgManifest.js +0 -0
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
# Cortex UI Integration — Design Spec
|
|
2
|
-
|
|
3
|
-
> Integrate new `@spaces/cortex` engine features into the Spaces UI.
|
|
4
|
-
> Covers: curation workflow, marketplace, quality dashboard, domain context, sensitivity display.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Decisions
|
|
9
|
-
|
|
10
|
-
- **Tab structure**: 6 tabs — Dashboard (enhanced), Graph (unchanged), Knowledge (merged with Context), Curation (new), Marketplace (new), Settings (enhanced)
|
|
11
|
-
- **Curation UX**: Horizontal pipeline bar (Seed → Assess → Review → Refine → Publish) with focused content area below
|
|
12
|
-
- **Marketplace UX**: Browse-first card grid scanning `~/.spaces/cortex/marketplace/` for `.cortexpack` files
|
|
13
|
-
- **Workspace scoping**: Curation tab has a workspace selector dropdown at the top (no "current workspace" dependency)
|
|
14
|
-
- **Marketplace source**: Directory scan for now; structure supports future remote registry
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 1. Tab Reorganization
|
|
19
|
-
|
|
20
|
-
### Current (5 tabs)
|
|
21
|
-
Dashboard | Graph | Knowledge | Context | Settings
|
|
22
|
-
|
|
23
|
-
### New (6 tabs)
|
|
24
|
-
Dashboard | Graph | Knowledge | Curation | Marketplace | Settings
|
|
25
|
-
|
|
26
|
-
**Knowledge tab** absorbs the old Context tab's query analyzer as a section below the knowledge browser. The standalone Context tab is removed.
|
|
27
|
-
|
|
28
|
-
### File: `src/app/(desktop)/cortex/page.tsx`
|
|
29
|
-
|
|
30
|
-
- Remove `ContextTab` import and tab entry
|
|
31
|
-
- Add `CurationTab` and `MarketplaceTab` imports
|
|
32
|
-
- Merge context functionality into `KnowledgeTab` (add a "Query Analyzer" collapsible section at the bottom)
|
|
33
|
-
- Update `Tab` type to `'dashboard' | 'graph' | 'knowledge' | 'curation' | 'marketplace' | 'settings'`
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 2. Dashboard Enhancements
|
|
38
|
-
|
|
39
|
-
### File: `src/components/cortex/cortex-dashboard.tsx`
|
|
40
|
-
|
|
41
|
-
Add two new sections between the existing stat cards and lobe breakdown:
|
|
42
|
-
|
|
43
|
-
**Coverage Score stat card** (replaces Graph stat card in top row — graph stats move to Graph tab):
|
|
44
|
-
- Calls `GET /api/cortex/status` which already returns lobe data
|
|
45
|
-
- New API: workspace-scoped assess endpoint (or aggregate from status)
|
|
46
|
-
- Shows coverage score (0–1) with color coding: <0.3 red, 0.3–0.7 amber, >0.7 green
|
|
47
|
-
- Sub-label: "X% distilled"
|
|
48
|
-
- Top row stays 4 cards: Knowledge Units | Coverage Score | Distillation | Storage
|
|
49
|
-
|
|
50
|
-
**Prerequisite**: Extract `TYPE_COLORS` and `SENSITIVITY_COLORS` from `knowledge-card.tsx` into a shared `src/components/cortex/constants.ts` file. Both `knowledge-card.tsx` and `context-tab.tsx` currently define their own copies. The dashboard and curation tab will also need them.
|
|
51
|
-
|
|
52
|
-
**Type Distribution chart** (new panel, left side of 2-col grid):
|
|
53
|
-
- Bar chart using existing `BarChart` component
|
|
54
|
-
- Shows count per knowledge type: decision, pattern, preference, error_fix, conversation, etc.
|
|
55
|
-
- Color-coded per type (import `TYPE_COLORS` from `constants.ts`)
|
|
56
|
-
|
|
57
|
-
**Lobe Health panel** (new panel, right side of 2-col grid):
|
|
58
|
-
- Stale count (units with stale_score > 0.5)
|
|
59
|
-
- Average confidence
|
|
60
|
-
- Top accessed unit (text preview)
|
|
61
|
-
- Sensitivity breakdown: counts per level (public/internal/restricted/confidential) as inline badges
|
|
62
|
-
|
|
63
|
-
### API changes needed
|
|
64
|
-
|
|
65
|
-
`GET /api/cortex/status` — extend response to include:
|
|
66
|
-
```typescript
|
|
67
|
-
{
|
|
68
|
-
// existing fields...
|
|
69
|
-
quality?: {
|
|
70
|
-
coverage_score: number;
|
|
71
|
-
type_distribution: Record<string, number>;
|
|
72
|
-
avg_confidence: number;
|
|
73
|
-
stale_count: number;
|
|
74
|
-
sensitivity_counts: Record<string, number>;
|
|
75
|
-
top_accessed: Array<{ text: string; type: string; access_count: number }>;
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
This calls `assessLobe()` from the addon for the aggregate view. The status route already gathers lobe stats — extend it to run the assess pass when the addon supports it.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 3. Knowledge Tab (Merged)
|
|
85
|
-
|
|
86
|
-
### File: `src/components/cortex/knowledge-tab.tsx`
|
|
87
|
-
|
|
88
|
-
Add a collapsible "Query Analyzer" section at the bottom of the existing knowledge browser. This section contains the content that was previously in `context-tab.tsx`:
|
|
89
|
-
|
|
90
|
-
- Text input for query
|
|
91
|
-
- Results display showing matched knowledge with relevance scores
|
|
92
|
-
- Intent detection display (if context engine is available)
|
|
93
|
-
- Entity extraction display
|
|
94
|
-
|
|
95
|
-
The existing knowledge browser (search, filter by type/layer, delete) remains the primary content.
|
|
96
|
-
|
|
97
|
-
### File changes
|
|
98
|
-
- `context-tab.tsx` — delete after merging its query analyzer content into `knowledge-tab.tsx`. No reason to keep an orphaned file.
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## 4. Curation Tab (New)
|
|
103
|
-
|
|
104
|
-
### File: `src/components/cortex/curation-tab.tsx`
|
|
105
|
-
|
|
106
|
-
**Layout:**
|
|
107
|
-
- Top: Workspace selector dropdown (fetches workspace list from `GET /api/workspaces` — returns flat array of `{ id, name, color, ... }`)
|
|
108
|
-
- Below: Horizontal pipeline step bar
|
|
109
|
-
- Below: Content area for active step
|
|
110
|
-
|
|
111
|
-
**Loading/error states**: Each step shows a spinner overlay while its API call is in progress. Errors display in a red banner below the step content with the error message. The Refine step specifically checks for LLM API key availability before enabling the button (shows a warning with link to Settings if missing). The Seed and Refine steps can be long-running — the button disables and shows "Processing..." until the POST returns.
|
|
112
|
-
|
|
113
|
-
**Pipeline steps:**
|
|
114
|
-
|
|
115
|
-
#### Step 1: Seed
|
|
116
|
-
- Textarea for pasting document content (or file upload area)
|
|
117
|
-
- Format selector: markdown / plaintext / csv / auto
|
|
118
|
-
- Source reference input (filename/URL for provenance)
|
|
119
|
-
- "Distill after seeding" checkbox (default: true)
|
|
120
|
-
- "Seed" button → calls `POST /api/cortex/curation/seed`
|
|
121
|
-
- Result display: chunks created, chunks skipped, errors
|
|
122
|
-
|
|
123
|
-
#### Step 2: Assess
|
|
124
|
-
- "Run Assessment" button → calls `GET /api/cortex/curation/assess?workspace_id=X`
|
|
125
|
-
- Results display:
|
|
126
|
-
- Coverage score with color-coded gauge
|
|
127
|
-
- Type distribution bar chart
|
|
128
|
-
- Stale count
|
|
129
|
-
- Average confidence
|
|
130
|
-
- Top accessed units list
|
|
131
|
-
|
|
132
|
-
#### Step 3: Review
|
|
133
|
-
- Topic input field + "Review" button
|
|
134
|
-
- Results grouped by knowledge type (accordion sections)
|
|
135
|
-
- Each result shows: text, confidence, similarity score
|
|
136
|
-
- Limit selector (10/25/50)
|
|
137
|
-
- Calls `GET /api/cortex/curation/review?workspace_id=X&topic=Y`
|
|
138
|
-
|
|
139
|
-
#### Step 4: Refine
|
|
140
|
-
- Domain context textarea (pre-populated from workspace's LobeConfig if available)
|
|
141
|
-
- Checkboxes for which distillation passes to run (decisions/patterns/preferences/error_fixes)
|
|
142
|
-
- "Refine" button → calls `POST /api/cortex/curation/refine`
|
|
143
|
-
- Result display: source units found, old distilled purged, new units created, errors
|
|
144
|
-
- Warning if no LLM API key configured
|
|
145
|
-
|
|
146
|
-
#### Step 5: Publish
|
|
147
|
-
- Form fields: name, author, description, tags (chip input), version (semver), license selector
|
|
148
|
-
- Preview count slider (1–10, default 3)
|
|
149
|
-
- "Publish" button → calls `POST /api/cortex/curation/publish`
|
|
150
|
-
- Result display:
|
|
151
|
-
- Output file path
|
|
152
|
-
- Units before/after PII scrubbing
|
|
153
|
-
- Quality assessment summary
|
|
154
|
-
- Warning banner if coverage_score < 0.3
|
|
155
|
-
|
|
156
|
-
### New API routes needed
|
|
157
|
-
|
|
158
|
-
These proxy to the addon's MCP tool handlers:
|
|
159
|
-
|
|
160
|
-
| Route | Method | Maps to |
|
|
161
|
-
|-------|--------|---------|
|
|
162
|
-
| `/api/cortex/curation/seed` | POST | `cortex_seed` |
|
|
163
|
-
| `/api/cortex/curation/assess` | GET | `cortex_assess` |
|
|
164
|
-
| `/api/cortex/curation/review` | GET | `cortex_review` |
|
|
165
|
-
| `/api/cortex/curation/refine` | POST | `cortex_refine` |
|
|
166
|
-
| `/api/cortex/curation/publish` | POST | `cortex_publish` |
|
|
167
|
-
|
|
168
|
-
Each route follows the existing pattern: auth check → get cortex instance → call handler → return JSON.
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## 5. Marketplace Tab (New)
|
|
173
|
-
|
|
174
|
-
### File: `src/components/cortex/marketplace-tab.tsx`
|
|
175
|
-
|
|
176
|
-
**Layout:**
|
|
177
|
-
- Top: "Import .cortexpack" button (file picker) + directory path display
|
|
178
|
-
- Below: Card grid of available packs
|
|
179
|
-
|
|
180
|
-
**Pack card:**
|
|
181
|
-
- Name (large), author, version
|
|
182
|
-
- Description (2-line clamp)
|
|
183
|
-
- Tags as chips
|
|
184
|
-
- Quality score badge (coverage_score with color)
|
|
185
|
-
- Unit count
|
|
186
|
-
- Preview samples (expandable — show 2-3 sample knowledge units)
|
|
187
|
-
- "Import" button → opens import dialog
|
|
188
|
-
|
|
189
|
-
**Import dialog (modal):**
|
|
190
|
-
- Target layer selector (personal/workspace/team)
|
|
191
|
-
- If workspace: workspace selector dropdown
|
|
192
|
-
- Merge strategy: append / merge / replace (radio buttons)
|
|
193
|
-
- Re-embed checkbox (default: false, with note about cost)
|
|
194
|
-
- If pack has `domain_context`: checkbox "Apply domain context to target workspace"
|
|
195
|
-
- Import button → calls `POST /api/cortex/import`
|
|
196
|
-
- Progress display during import
|
|
197
|
-
|
|
198
|
-
**Pack source:**
|
|
199
|
-
- Scan `~/.spaces/cortex/marketplace/` directory
|
|
200
|
-
- Read each `.cortexpack` file's manifest (tar header extraction without full unpack)
|
|
201
|
-
- Cache manifests for display
|
|
202
|
-
|
|
203
|
-
### New API routes needed
|
|
204
|
-
|
|
205
|
-
| Route | Method | Description |
|
|
206
|
-
|-------|--------|-------------|
|
|
207
|
-
| `/api/cortex/marketplace/browse` | GET | Scan marketplace dir, return manifests |
|
|
208
|
-
| `/api/cortex/marketplace/preview?file=NAME` | GET | Extract preview samples from a named pack |
|
|
209
|
-
|
|
210
|
-
**Browse response contract:**
|
|
211
|
-
```typescript
|
|
212
|
-
interface BrowseResponse {
|
|
213
|
-
packs: Array<{
|
|
214
|
-
filename: string; // e.g. "cfb-power-plants-v1.0.0.cortexpack"
|
|
215
|
-
manifest: {
|
|
216
|
-
version: string;
|
|
217
|
-
exportDate: string;
|
|
218
|
-
unitCount: number;
|
|
219
|
-
marketplace?: {
|
|
220
|
-
name: string;
|
|
221
|
-
author: string;
|
|
222
|
-
description: string;
|
|
223
|
-
tags: string[];
|
|
224
|
-
packageVersion: string;
|
|
225
|
-
license: string;
|
|
226
|
-
domain_context?: string;
|
|
227
|
-
quality: {
|
|
228
|
-
coverage_score: number;
|
|
229
|
-
avg_confidence: number;
|
|
230
|
-
type_distribution: Record<string, number>;
|
|
231
|
-
total_units: number;
|
|
232
|
-
};
|
|
233
|
-
preview: Array<{ text: string; type: string }>;
|
|
234
|
-
};
|
|
235
|
-
};
|
|
236
|
-
}>;
|
|
237
|
-
directory: string; // the scanned path
|
|
238
|
-
}
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
If `~/.spaces/cortex/marketplace/` does not exist, the browse API creates it and returns `{ packs: [], directory }`. Packs without marketplace metadata (legacy v1 format) are still listed but show filename, unit count, and export date only.
|
|
242
|
-
|
|
243
|
-
**Import route changes**: The existing `POST /api/cortex/import` needs updating to accept `workspace_id` and `re_embed` as form fields (currently hardcodes `reEmbed: true`).
|
|
244
|
-
|
|
245
|
-
**Publish output**: `cortex_publish` writes the `.cortexpack` to `~/.spaces/cortex/marketplace/` so it appears immediately in the browse tab.
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## 6. Settings Enhancements
|
|
250
|
-
|
|
251
|
-
### File: `src/components/cortex/lobe-settings.tsx`
|
|
252
|
-
|
|
253
|
-
Add a "Domain Context" textarea below the tags section:
|
|
254
|
-
|
|
255
|
-
```
|
|
256
|
-
Domain Context
|
|
257
|
-
[textarea — 4 rows, placeholder: "Describe the domain expertise this lobe should focus on..."]
|
|
258
|
-
(hint text: "Injected into distillation prompts for better extraction. E.g. 'This workspace covers CFB power plant engineering.'")
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
Save via the existing `PUT /api/cortex/lobes/{workspaceId}` endpoint, adding `domain_context` to the `LobeConfig` payload.
|
|
262
|
-
|
|
263
|
-
**Type change required**: Add `domain_context?: string` to the `LobeConfig` interface in `src/lib/cortex/types.ts`. The addon already supports this field — the host-side type just needs to match. The `serializeLobeConfig` function uses spread, so the new field passes through without logic changes. No database migration needed — lobe config is stored as JSON in the workspaces table's `lobe_config` column.
|
|
264
|
-
|
|
265
|
-
### File: `src/components/cortex/cortex-settings.tsx`
|
|
266
|
-
|
|
267
|
-
No structural changes. The existing settings (enable/disable, API keys, embedding, injection budget, distillation, federation, bootstrap) remain as-is.
|
|
268
|
-
|
|
269
|
-
---
|
|
270
|
-
|
|
271
|
-
## 7. Component Summary
|
|
272
|
-
|
|
273
|
-
### New files
|
|
274
|
-
| File | Type | Description |
|
|
275
|
-
|------|------|-------------|
|
|
276
|
-
| `src/components/cortex/curation-tab.tsx` | Component | Curation pipeline with 5 steps |
|
|
277
|
-
| `src/components/cortex/marketplace-tab.tsx` | Component | Browse/import cortexpack cards |
|
|
278
|
-
| `src/components/cortex/marketplace-card.tsx` | Component | Individual pack card display |
|
|
279
|
-
| `src/components/cortex/import-dialog.tsx` | Component | Import options modal |
|
|
280
|
-
| `src/app/api/cortex/curation/seed/route.ts` | API | Proxy to cortex_seed |
|
|
281
|
-
| `src/app/api/cortex/curation/assess/route.ts` | API | Proxy to cortex_assess |
|
|
282
|
-
| `src/app/api/cortex/curation/review/route.ts` | API | Proxy to cortex_review |
|
|
283
|
-
| `src/app/api/cortex/curation/refine/route.ts` | API | Proxy to cortex_refine |
|
|
284
|
-
| `src/app/api/cortex/curation/publish/route.ts` | API | Proxy to cortex_publish |
|
|
285
|
-
| `src/app/api/cortex/marketplace/browse/route.ts` | API | Scan marketplace dir |
|
|
286
|
-
| `src/app/api/cortex/marketplace/preview/route.ts` | API | Extract pack preview |
|
|
287
|
-
|
|
288
|
-
### New shared files
|
|
289
|
-
| File | Type | Description |
|
|
290
|
-
|------|------|-------------|
|
|
291
|
-
| `src/components/cortex/constants.ts` | Constants | Shared `TYPE_COLORS`, `SENSITIVITY_COLORS` extracted from knowledge-card |
|
|
292
|
-
|
|
293
|
-
### Modified files
|
|
294
|
-
| File | Change |
|
|
295
|
-
|------|--------|
|
|
296
|
-
| `src/app/(desktop)/cortex/page.tsx` | 6-tab layout, remove Context tab, add Curation + Marketplace |
|
|
297
|
-
| `src/components/cortex/cortex-dashboard.tsx` | Add coverage score, type distribution, lobe health panels |
|
|
298
|
-
| `src/components/cortex/knowledge-tab.tsx` | Add query analyzer section (from context-tab) |
|
|
299
|
-
| `src/components/cortex/knowledge-card.tsx` | Import `TYPE_COLORS` from constants.ts instead of local definition |
|
|
300
|
-
| `src/components/cortex/lobe-settings.tsx` | Add domain_context textarea |
|
|
301
|
-
| `src/lib/cortex/types.ts` | Add `domain_context?: string` to `LobeConfig` interface |
|
|
302
|
-
| `src/app/api/cortex/status/route.ts` | Extend response with quality assessment data |
|
|
303
|
-
| `src/app/api/cortex/import/route.ts` | Accept `workspace_id` and `re_embed` form fields |
|
|
304
|
-
|
|
305
|
-
### Deleted files
|
|
306
|
-
| File | Reason |
|
|
307
|
-
|------|--------|
|
|
308
|
-
| `src/components/cortex/context-tab.tsx` | Merged into knowledge-tab.tsx |
|
|
309
|
-
|
|
310
|
-
### Unchanged files
|
|
311
|
-
| File | Reason |
|
|
312
|
-
|------|--------|
|
|
313
|
-
| `cortex-indicator.tsx` | Already shows status badge — no changes needed |
|
|
314
|
-
| `cortex-settings.tsx` | Existing settings cover all config — no changes needed |
|
|
315
|
-
| `injection-badge.tsx` | Already shows injection count — no changes needed |
|
|
316
|
-
| `knowledge-card.tsx` | Already has sensitivity, evidence, contradiction badges — no changes needed |
|
|
317
|
-
| `cortex-panel.tsx` | Sidebar search panel — no changes needed |
|
|
318
|
-
| `entity-graph.tsx` | Graph visualization — no changes needed |
|
|
319
|
-
|
|
320
|
-
---
|
|
321
|
-
|
|
322
|
-
## 8. Design Patterns
|
|
323
|
-
|
|
324
|
-
All new components follow existing patterns:
|
|
325
|
-
- `'use client'` directive
|
|
326
|
-
- `api()` helper for URL construction
|
|
327
|
-
- `fetch()` for API calls (no axios/swr)
|
|
328
|
-
- Tailwind classes matching existing dark theme (bg-white/[0.02], border-white/[0.06], text-gray-400, etc.)
|
|
329
|
-
- `lucide-react` for icons
|
|
330
|
-
- No external UI libraries
|
|
331
|
-
- Optimistic updates where appropriate
|
|
332
|
-
- Loading/error states with consistent styling
|
|
333
|
-
|
|
334
|
-
---
|
|
335
|
-
|
|
336
|
-
## 9. Future Considerations (Not in Scope)
|
|
337
|
-
|
|
338
|
-
- **Remote marketplace registry** — cloud-hosted pack discovery/download. Current design scans local directory; the card grid + manifest structure supports swapping in a remote source later.
|
|
339
|
-
- **Pack ratings/reviews** — would require a central registry.
|
|
340
|
-
- **Automatic curation suggestions** — "your coverage is low, try seeding X" — could be added to the assess step later.
|
|
341
|
-
- **Real-time distillation progress** — WebSocket/SSE for long-running refine operations. Current design polls or waits.
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
# Spaces VR — Phase 1: VR Shell + Static Rooms
|
|
2
|
-
|
|
3
|
-
> Phase 1 of 5. Builds the spatial environment on Quest 3 using Unity + Meta XR SDK. Fetches workspace data from the Spaces server to populate the lobby. No live terminal data yet — that's Phase 2+3.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Decisions
|
|
8
|
-
|
|
9
|
-
- **Platform**: Meta Quest 3, native Unity app (not WebXR)
|
|
10
|
-
- **Engine**: Unity 2022 LTS + Meta XR SDK (v68+) + Meta Interaction SDK
|
|
11
|
-
- **Interaction**: Eye tracking (gaze focus) + hand tracking (grab/move/resize). No controllers.
|
|
12
|
-
- **Server communication**: HTTP REST calls to existing Spaces API (WebSocket comes in Phase 2)
|
|
13
|
-
- **Scope**: Lobby + workspace rooms + pane placeholders. No live data, no voice.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 1. Unity Project Structure
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
spaces-vr/
|
|
21
|
-
├── Assets/
|
|
22
|
-
│ ├── Scenes/
|
|
23
|
-
│ │ ├── Lobby.unity # Central hub with workspace doors
|
|
24
|
-
│ │ └── WorkspaceRoom.unity # Template room, instantiated per workspace
|
|
25
|
-
│ ├── Scripts/
|
|
26
|
-
│ │ ├── Core/
|
|
27
|
-
│ │ │ ├── SpacesConnection.cs # HTTP client to Spaces API
|
|
28
|
-
│ │ │ ├── SessionManager.cs # Auth token management
|
|
29
|
-
│ │ │ └── WorkspaceData.cs # Data models (workspace, pane metadata)
|
|
30
|
-
│ │ ├── Lobby/
|
|
31
|
-
│ │ │ ├── LobbyManager.cs # Spawn doors from workspace list
|
|
32
|
-
│ │ │ ├── WorkspaceDoor.cs # Individual door behavior + preview
|
|
33
|
-
│ │ │ └── DoorInteraction.cs # Gaze-select + confirm to enter
|
|
34
|
-
│ │ ├── Room/
|
|
35
|
-
│ │ │ ├── RoomManager.cs # Arrange panes in semicircle, scale room
|
|
36
|
-
│ │ │ ├── PaneSurface.cs # Pane placeholder (floating surface)
|
|
37
|
-
│ │ │ ├── PaneLayout.cs # Semicircle positioning math
|
|
38
|
-
│ │ │ └── PaneInteraction.cs # Grab, move, resize via hand tracking
|
|
39
|
-
│ │ ├── Interaction/
|
|
40
|
-
│ │ │ ├── GazeManager.cs # Eye tracking → focused object
|
|
41
|
-
│ │ │ ├── GazeFocusHighlight.cs # Visual feedback on gazed pane
|
|
42
|
-
│ │ │ ├── HandGrabHandler.cs # Pinch-grab for pane manipulation
|
|
43
|
-
│ │ │ └── PalmMenu.cs # Look-at-palm → home button
|
|
44
|
-
│ │ └── UI/
|
|
45
|
-
│ │ ├── PaneHeader.cs # Agent name/type label on pane
|
|
46
|
-
│ │ └── StatusIndicator.cs # Glow/color for pane state
|
|
47
|
-
│ ├── Prefabs/
|
|
48
|
-
│ │ ├── WorkspaceDoor.prefab
|
|
49
|
-
│ │ ├── PaneSurface.prefab
|
|
50
|
-
│ │ └── PalmMenu.prefab
|
|
51
|
-
│ ├── Materials/
|
|
52
|
-
│ │ ├── PaneSurface.mat # Dark terminal-style surface
|
|
53
|
-
│ │ ├── PaneHighlight.mat # Gaze-focus highlight shader
|
|
54
|
-
│ │ └── DoorFrame.mat # Workspace door styling
|
|
55
|
-
│ └── Shaders/
|
|
56
|
-
│ └── TerminalSurface.shader # SDF text rendering on pane surfaces
|
|
57
|
-
├── Packages/
|
|
58
|
-
│ └── manifest.json # Meta XR SDK, Interaction SDK, TextMeshPro
|
|
59
|
-
├── ProjectSettings/
|
|
60
|
-
│ └── ... # Quest 3 build settings, eye/hand tracking permissions
|
|
61
|
-
└── README.md
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 2. Lobby
|
|
67
|
-
|
|
68
|
-
### Layout
|
|
69
|
-
A central circular or octagonal room. The user spawns at the center. Workspace doors are arranged around the perimeter, evenly spaced.
|
|
70
|
-
|
|
71
|
-
### Door Rendering
|
|
72
|
-
Each door is a prefab containing:
|
|
73
|
-
- **Frame** — archway or panel frame, tinted with the workspace's color (from Spaces API)
|
|
74
|
-
- **Label** — workspace name as TextMeshPro above the door
|
|
75
|
-
- **Preview panel** — small info card showing: pane count, active agent count, status color (green/amber/red)
|
|
76
|
-
- **Glow** — subtle ambient glow in the workspace color
|
|
77
|
-
|
|
78
|
-
### Data Fetching
|
|
79
|
-
On lobby load:
|
|
80
|
-
```
|
|
81
|
-
GET /api/workspaces → [{ id, name, color, paneCount, ... }]
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
`paneCount` is already returned by the workspaces endpoint (computed via JOIN). No need for a separate pane list call for lobby previews.
|
|
85
|
-
|
|
86
|
-
When entering a room:
|
|
87
|
-
```
|
|
88
|
-
GET /api/panes?workspace_id=N → [{ id, agent_type, title, ... }]
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
**Note:** The `GET /api/panes` route currently ignores query params and returns all active panes. Phase 1 requires adding `workspace_id` filter support to this route (small server-side change).
|
|
92
|
-
|
|
93
|
-
### Auth
|
|
94
|
-
Session cookie from `POST /api/auth/login` (when `@spaces/teams` is installed). Unity's `UnityWebRequest` supports cookies. If auth is not configured (Community tier, no login), the API is unauthenticated — `SpacesConnection.cs` should detect this and skip login.
|
|
95
|
-
|
|
96
|
-
### Server Unreachable State
|
|
97
|
-
If the server is unreachable on launch or during polling, the lobby shows a single "Offline" panel at center with the server URL and a "Retry" gaze-button. No doors rendered until connection succeeds.
|
|
98
|
-
|
|
99
|
-
### Entering a Room
|
|
100
|
-
- Gaze at a door for 1.5 seconds → confirmation ring fills around crosshair
|
|
101
|
-
- On confirm → fade to black (0.5s) → load workspace room → fade in (0.5s)
|
|
102
|
-
- Alternative: walk physically toward the door (proximity trigger at 1m)
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## 3. Workspace Room
|
|
107
|
-
|
|
108
|
-
### Pane Arrangement
|
|
109
|
-
Panes are arranged in a semicircle at 2m radius from room center, at standing eye height (~1.6m). Arrangement adapts to pane count:
|
|
110
|
-
|
|
111
|
-
| Panes | Arc | Spacing |
|
|
112
|
-
|-------|-----|---------|
|
|
113
|
-
| 1 | Directly ahead | — |
|
|
114
|
-
| 2 | ±20° from center | 40° apart |
|
|
115
|
-
| 3-4 | ±40° arc | Even spacing |
|
|
116
|
-
| 5-6 | ±60° arc | Even spacing |
|
|
117
|
-
| 7-8 | ±80° arc | Even spacing |
|
|
118
|
-
|
|
119
|
-
Panes angle inward to face the user (billboarded on the Y axis only — they tilt toward center, not toward the user's head).
|
|
120
|
-
|
|
121
|
-
### Room Scaling
|
|
122
|
-
The room environment subtly scales with pane count:
|
|
123
|
-
- 1-2 panes: small office feel, warm lighting
|
|
124
|
-
- 3-5 panes: standard room
|
|
125
|
-
- 6-8 panes: larger space, cooler lighting, slight command-center vibe
|
|
126
|
-
|
|
127
|
-
### Pane Placeholder Surface
|
|
128
|
-
Each pane is a floating quad (default 1.2m wide × 0.8m tall, ~16:10 ratio). In Phase 1, it shows:
|
|
129
|
-
- Dark background (matching Spaces terminal theme: `#0a0a0f`)
|
|
130
|
-
- Pane header bar: agent name, agent type icon, workspace color accent
|
|
131
|
-
- Placeholder text: "Connecting..." or agent type name
|
|
132
|
-
- Status indicator: colored dot (green=active, gray=idle, amber=waiting, red=error)
|
|
133
|
-
|
|
134
|
-
### Returning to Lobby
|
|
135
|
-
- Look at open palm → palm menu appears (small floating UI near hand)
|
|
136
|
-
- Gaze at "Home" icon for 1s → fade transition back to lobby
|
|
137
|
-
- Voice shortcut: say "go home" (Phase 4 — do not wire in Phase 1)
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## 4. Eye Tracking (Gaze)
|
|
142
|
-
|
|
143
|
-
### Setup
|
|
144
|
-
- Enable `Eye Tracking` in OVRManager
|
|
145
|
-
- Request runtime eye tracking permission (Quest 3 requires user consent)
|
|
146
|
-
- Use `OVREyeGaze` component to get gaze ray
|
|
147
|
-
- Raycast from gaze origin in gaze direction each frame
|
|
148
|
-
- **Fallback**: if user denies eye tracking permission, fall back to head-gaze (raycast from `OVRCameraRig.centerEyeAnchor.forward`). All interaction works the same, just less precise.
|
|
149
|
-
|
|
150
|
-
### Focus System
|
|
151
|
-
- When gaze ray hits a `PaneSurface` collider, that pane becomes "focused"
|
|
152
|
-
- Focus requires 300ms of sustained gaze (prevents flicker from glancing)
|
|
153
|
-
- On focus: pane border brightens, slight scale-up (1.02x), subtle audio tick
|
|
154
|
-
- On unfocus: reverse the highlight over 200ms
|
|
155
|
-
- Only one pane can be focused at a time
|
|
156
|
-
- When no pane is focused after 2s, a subtle "resting" state — all panes equally dim
|
|
157
|
-
|
|
158
|
-
### Gaze Cursor
|
|
159
|
-
- No visible crosshair/reticle in normal use (breaks immersion)
|
|
160
|
-
- During door selection or palm menu: a thin ring appears as the confirmation timer
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## 5. Hand Tracking
|
|
165
|
-
|
|
166
|
-
### Grab to Move
|
|
167
|
-
- Pinch (thumb + index) while hand overlaps pane collider → grab
|
|
168
|
-
- While grabbed: pane follows hand position (with smoothing, 10ms lerp)
|
|
169
|
-
- Release pinch → pane stays at new position
|
|
170
|
-
- Constraint: panes stay between 1m and 4m from room center, and between 0.5m and 3m height
|
|
171
|
-
|
|
172
|
-
### Pinch to Resize
|
|
173
|
-
- Two-hand pinch: grab corners/edges with both hands
|
|
174
|
-
- Pull apart → scale up, push together → scale down
|
|
175
|
-
- Minimum size: 0.6m × 0.4m, Maximum: 2.4m × 1.6m
|
|
176
|
-
- Aspect ratio preserved during resize
|
|
177
|
-
|
|
178
|
-
### Scroll (Optional stretch — needed in Phase 3)
|
|
179
|
-
- Pinch and drag vertically near a pane surface (not grabbing the pane itself) → scroll
|
|
180
|
-
- If time permits, wire the gesture handler with a no-op callback. Otherwise defer entirely.
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## 6. Server Communication (Phase 1 Scope)
|
|
185
|
-
|
|
186
|
-
Phase 1 uses **HTTP only** — just enough to populate the lobby and rooms.
|
|
187
|
-
|
|
188
|
-
### SpacesConnection.cs
|
|
189
|
-
```csharp
|
|
190
|
-
// Configurable server URL (default: http://localhost:3457)
|
|
191
|
-
// Auth: POST /api/auth/login → session token stored in SessionManager
|
|
192
|
-
// Workspace list: GET /api/workspaces → WorkspaceData[]
|
|
193
|
-
// Pane list: GET /api/panes?workspace_id=N → PaneData[]
|
|
194
|
-
// Polling: refresh workspace list every 30s while in lobby
|
|
195
|
-
// refresh pane list every 10s while in a room
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### Data Models
|
|
199
|
-
```csharp
|
|
200
|
-
[Serializable]
|
|
201
|
-
public class WorkspaceData {
|
|
202
|
-
public int id;
|
|
203
|
-
public string name;
|
|
204
|
-
public string color;
|
|
205
|
-
public int paneCount; // from GET /api/workspaces (already computed server-side)
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
[Serializable]
|
|
209
|
-
public class PaneData {
|
|
210
|
-
public string id;
|
|
211
|
-
public string agentType; // "claude", "codex", "shell", etc.
|
|
212
|
-
public string title;
|
|
213
|
-
}
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**Note on pane status:** The DB has no `status` column. For Phase 1, all pane placeholders show as "idle" (gray dot). Phase 2's WebSocket connection will provide real-time status updates. The `StatusIndicator` component should accept a status enum but default to idle for now.
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## 7. Performance Budget
|
|
221
|
-
|
|
222
|
-
Target: 90fps (11.1ms frame time), 5ms GPU budget on Quest 3 (Adreno 740).
|
|
223
|
-
|
|
224
|
-
| Scene | Triangle Budget | Draw Calls | Texture Memory |
|
|
225
|
-
|-------|----------------|------------|----------------|
|
|
226
|
-
| Lobby (8 doors) | 50K | 20 | 64MB |
|
|
227
|
-
| Room (8 panes) | 100K | 30 | 128MB |
|
|
228
|
-
|
|
229
|
-
- Pane surfaces: simple quads with SDF text shader. No post-processing.
|
|
230
|
-
- Fixed foveated rendering: High (reduces peripheral pixel count by ~50%)
|
|
231
|
-
- Room geometry: low-poly, baked lighting, no real-time shadows
|
|
232
|
-
- TextMeshPro: SDF font atlas, single material per font size
|
|
233
|
-
|
|
234
|
-
### HTTP Polling & Error Handling
|
|
235
|
-
- Lobby polls workspace list every 30s. Room polls pane list every 10s.
|
|
236
|
-
- Timeout: 5s per request. On timeout: skip this poll cycle, retry next interval.
|
|
237
|
-
- 3 consecutive failures: show "Connection Lost" overlay, switch to 60s retry interval.
|
|
238
|
-
- On reconnect: refresh all data immediately, resume normal polling.
|
|
239
|
-
- Auth token expiry: re-attempt login once, show "Session Expired" if login fails.
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## 8. Build & Test
|
|
244
|
-
|
|
245
|
-
### Development Without Headset
|
|
246
|
-
- **Meta XR Simulator** in Unity Editor: simulates eye tracking, hand tracking, room-scale movement
|
|
247
|
-
- Keyboard shortcuts: WASD move, mouse look, click to simulate gaze confirm
|
|
248
|
-
- All pane interaction testable in editor play mode
|
|
249
|
-
|
|
250
|
-
### Quest 3 Build Settings
|
|
251
|
-
- Target: Android (ARM64)
|
|
252
|
-
- Graphics API: Vulkan
|
|
253
|
-
- Min SDK: Android 12 (API 32)
|
|
254
|
-
- Enable: Eye Tracking, Hand Tracking, Passthrough (for Phase 5)
|
|
255
|
-
- Refresh rate: 90Hz target, 72Hz fallback
|
|
256
|
-
- Fixed foveated rendering: High (performance optimization)
|
|
257
|
-
|
|
258
|
-
### Testing with Headset
|
|
259
|
-
- Quest Link for live iteration (USB-C or Air Link over WiFi)
|
|
260
|
-
- SideQuest for standalone APK deployment
|
|
261
|
-
- Server must be reachable from Quest (same network, or port forwarded)
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
## 9. Out of Scope (Later Phases)
|
|
266
|
-
|
|
267
|
-
- Live terminal output rendering (Phase 3)
|
|
268
|
-
- WebSocket streaming (Phase 2)
|
|
269
|
-
- Voice input/output (Phase 4)
|
|
270
|
-
- Spatial audio (Phase 4)
|
|
271
|
-
- Pane position persistence (Phase 5)
|
|
272
|
-
- Passthrough/MR mode (Phase 5)
|
|
273
|
-
- Attention signals (chime/glow) for panes needing input (Phase 4)
|
|
274
|
-
- Room ambiance, lighting, polish (Phase 5)
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## 10. Success Criteria
|
|
279
|
-
|
|
280
|
-
Phase 1 is done when:
|
|
281
|
-
1. You put on the Quest 3 (or run in Meta XR Simulator) and see a lobby with doors for your actual workspaces
|
|
282
|
-
2. You look at a door and the confirmation ring fills — you enter the room
|
|
283
|
-
3. Inside, pane placeholders are arranged in a semicircle with correct agent names/types
|
|
284
|
-
4. You can grab a pane with your hand and move it to a new position
|
|
285
|
-
5. You can resize a pane with two-hand pinch
|
|
286
|
-
6. Looking at a pane highlights it (eye tracking focus)
|
|
287
|
-
7. Palm menu returns you to the lobby
|
|
288
|
-
8. It runs at 90fps on Quest 3
|