@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,263 +0,0 @@
|
|
|
1
|
-
# Cortex Lobes: Knowledge Compartments and Sharing
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-03-16
|
|
4
|
-
**Status:** Design approved, pending implementation plan
|
|
5
|
-
**Scope:** Add knowledge compartmentalization ("lobes") to Cortex with workspace-level access control, privacy, exclusions, and cross-user sharing
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
Every workspace in Spaces has a **lobe** — its compartment of learned knowledge within Cortex. By default, your workspaces can pull knowledge from each other's lobes. Workspaces can be marked private, excluded from specific other workspaces, or shared with other users. Other users' lobes are closed by default and require explicit sharing + acceptance.
|
|
10
|
-
|
|
11
|
-
### Terminology
|
|
12
|
-
|
|
13
|
-
- **Lobe** — a compartment of knowledge associated with a workspace, team, department, or organization. Named after the lobes of the cerebral cortex. Each lobe specializes in the knowledge accumulated from its context.
|
|
14
|
-
- **Subscription** — when a workspace pulls knowledge from a lobe
|
|
15
|
-
- **Sharing** — when a user makes their lobe available to other users
|
|
16
|
-
|
|
17
|
-
## Access Rules
|
|
18
|
-
|
|
19
|
-
### Same User (default behavior)
|
|
20
|
-
|
|
21
|
-
| Scenario | Access |
|
|
22
|
-
|----------|--------|
|
|
23
|
-
| Workspace A queries Workspace B's lobe | **Allowed** (default) |
|
|
24
|
-
| Workspace A queries a private workspace's lobe | **Denied** |
|
|
25
|
-
| Workspace A has Workspace B excluded | **Denied** |
|
|
26
|
-
| Workspace A queries personal lobe | **Allowed** (always) |
|
|
27
|
-
| Workspace A queries team/dept/org lobes | **Allowed** (via entity graph inheritance) |
|
|
28
|
-
|
|
29
|
-
**Default:** All your workspaces can see all your other workspaces' lobes. Open by default, restrict when needed.
|
|
30
|
-
|
|
31
|
-
### Cross-User
|
|
32
|
-
|
|
33
|
-
| Scenario | Access |
|
|
34
|
-
|----------|--------|
|
|
35
|
-
| User A queries User B's lobe | **Denied** (default) |
|
|
36
|
-
| User B shares a lobe with User A, User A accepts | **Allowed** |
|
|
37
|
-
| User B revokes sharing | **Denied** again |
|
|
38
|
-
| Team lobe (shared by team membership) | **Allowed** for team members |
|
|
39
|
-
| Org lobe (trickled-down decisions) | **Allowed** for org members |
|
|
40
|
-
|
|
41
|
-
**Default:** Other users' workspace lobes are invisible. Team/dept/org lobes are accessible through the entity graph hierarchy (already implemented in the Boundary Engine).
|
|
42
|
-
|
|
43
|
-
## Data Model
|
|
44
|
-
|
|
45
|
-
### Workspace Lobe Configuration
|
|
46
|
-
|
|
47
|
-
Each workspace gets a lobe configuration stored as JSON in the workspaces table:
|
|
48
|
-
|
|
49
|
-
```typescript
|
|
50
|
-
interface LobeConfig {
|
|
51
|
-
// Privacy
|
|
52
|
-
isPrivate: boolean; // If true, no other workspace can pull from this lobe
|
|
53
|
-
|
|
54
|
-
// Exclusions — workspaces that CANNOT pull from this lobe
|
|
55
|
-
excludedFrom: number[]; // workspace IDs that are blocked
|
|
56
|
-
|
|
57
|
-
// Inclusions — additional lobes this workspace subscribes to
|
|
58
|
-
subscriptions: LobeSubscription[];
|
|
59
|
-
|
|
60
|
-
// Tags on this workspace's lobe (for tag-based subscription)
|
|
61
|
-
tags: string[];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
interface LobeSubscription {
|
|
65
|
-
type: 'workspace' | 'user' | 'tag' | 'team' | 'department' | 'organization';
|
|
66
|
-
id: string; // workspace ID, user entity ID, tag name, etc.
|
|
67
|
-
label: string; // display name
|
|
68
|
-
accepted: boolean; // for cross-user: has the subscriber accepted?
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Cross-User Sharing
|
|
73
|
-
|
|
74
|
-
Sharing is a two-step handshake:
|
|
75
|
-
|
|
76
|
-
1. **Owner shares:** User B marks their lobe as shared with User A (creates a share record)
|
|
77
|
-
2. **Recipient accepts:** User A sees the shared lobe offer and accepts it (adds subscription)
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
interface LobeShare {
|
|
81
|
-
id: string;
|
|
82
|
-
ownerUserId: string; // who is sharing
|
|
83
|
-
ownerWorkspaceId: number; // which workspace's lobe
|
|
84
|
-
ownerLobeName: string; // display name
|
|
85
|
-
sharedWithUserId: string; // who it's shared with
|
|
86
|
-
accepted: boolean; // has recipient accepted?
|
|
87
|
-
created: string;
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Storage: `lobe_shares` table in the entity graph SQLite database.
|
|
92
|
-
|
|
93
|
-
### Defaults
|
|
94
|
-
|
|
95
|
-
New workspace lobe config:
|
|
96
|
-
```json
|
|
97
|
-
{
|
|
98
|
-
"isPrivate": false,
|
|
99
|
-
"excludedFrom": [],
|
|
100
|
-
"subscriptions": [],
|
|
101
|
-
"tags": []
|
|
102
|
-
}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
This means: open to all your workspaces, no exclusions, no extra subscriptions, no tags. The workspace automatically inherits from personal + team + dept + org lobes through the entity graph.
|
|
106
|
-
|
|
107
|
-
## How It Integrates with Context Assembly
|
|
108
|
-
|
|
109
|
-
### Current Flow (Pillar 3)
|
|
110
|
-
|
|
111
|
-
The Context Assembly Engine's `computeSourceWeights()` currently searches three hardcoded layers: personal, workspace, team.
|
|
112
|
-
|
|
113
|
-
### New Flow
|
|
114
|
-
|
|
115
|
-
Replace the hardcoded layer list with a dynamic scope list built from the workspace's lobe configuration:
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
1. Start with workspace's own lobe (always included)
|
|
119
|
-
2. Add personal lobe (always included)
|
|
120
|
-
3. Add inherited lobes from entity graph (team → dept → org)
|
|
121
|
-
4. Add explicit subscriptions from LobeConfig
|
|
122
|
-
5. Remove any that are private or excluded
|
|
123
|
-
6. Remove any cross-user lobes that aren't shared+accepted
|
|
124
|
-
7. Pass remaining scopes to the Context Assembly Engine
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
The weight computation stays the same — graph proximity determines weight. Subscribed lobes that aren't in the natural graph path get a base weight of 0.4 (lower than inherited but still present).
|
|
128
|
-
|
|
129
|
-
### Storage Mapping
|
|
130
|
-
|
|
131
|
-
Each workspace's lobe corresponds to a LanceDB storage path:
|
|
132
|
-
- Workspace 42's lobe → `workspace/42` (already exists)
|
|
133
|
-
- Personal lobe → `personal` (already exists)
|
|
134
|
-
- Team lobe → `team` (already exists)
|
|
135
|
-
|
|
136
|
-
No new storage structures needed. Lobes are a **view layer** on top of existing knowledge storage, controlling which storage paths are searched.
|
|
137
|
-
|
|
138
|
-
## API Changes
|
|
139
|
-
|
|
140
|
-
### New Endpoints
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
GET /api/cortex/lobes — list all accessible lobes for current user
|
|
144
|
-
GET /api/cortex/lobes/:workspaceId — get lobe config for a workspace
|
|
145
|
-
PUT /api/cortex/lobes/:workspaceId — update lobe config (privacy, exclusions, tags)
|
|
146
|
-
POST /api/cortex/lobes/:workspaceId/subscribe — add a subscription
|
|
147
|
-
DELETE /api/cortex/lobes/:workspaceId/subscribe/:id — remove a subscription
|
|
148
|
-
POST /api/cortex/lobes/share — share a lobe with another user
|
|
149
|
-
POST /api/cortex/lobes/share/:id/accept — accept a shared lobe
|
|
150
|
-
DELETE /api/cortex/lobes/share/:id — revoke or decline a share
|
|
151
|
-
GET /api/cortex/lobes/shares — list incoming/outgoing shares
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Modified Endpoints
|
|
155
|
-
|
|
156
|
-
```
|
|
157
|
-
GET /api/cortex/context — now accepts optional workspace_id to resolve lobe config
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## UI
|
|
161
|
-
|
|
162
|
-
### Workspace Settings → "Knowledge Lobes" Section
|
|
163
|
-
|
|
164
|
-
Simple settings panel within existing workspace settings:
|
|
165
|
-
|
|
166
|
-
**Status line:** "This workspace draws from 4 lobes" (count of active sources)
|
|
167
|
-
|
|
168
|
-
**Privacy toggle:** "Private lobe — other workspaces can't access this knowledge"
|
|
169
|
-
|
|
170
|
-
**Tags input:** chip-style tag input for labeling this workspace's lobe
|
|
171
|
-
|
|
172
|
-
**Active sources list:** shows all lobes this workspace pulls from:
|
|
173
|
-
- Own workspace (always, can't remove)
|
|
174
|
-
- Personal (always, can't remove)
|
|
175
|
-
- Team: Platform (inherited, can mute)
|
|
176
|
-
- Org: Acme Corp (inherited, can mute)
|
|
177
|
-
- Workspace: Auth Service (subscribed, can remove)
|
|
178
|
-
- Tag: infrastructure (subscribed, can remove)
|
|
179
|
-
- Shared: Bob's Security workspace (cross-user, can remove)
|
|
180
|
-
|
|
181
|
-
**"Add source" button:** dropdown/search to subscribe to:
|
|
182
|
-
- Another workspace (by name)
|
|
183
|
-
- A tag
|
|
184
|
-
- A team/department
|
|
185
|
-
- A shared lobe from another user
|
|
186
|
-
|
|
187
|
-
**Exclusions section** (collapsed by default): "Exclude specific workspaces from accessing this lobe" — multi-select of workspace names.
|
|
188
|
-
|
|
189
|
-
### Shared Lobes Section (in main Cortex page or settings)
|
|
190
|
-
|
|
191
|
-
**Incoming shares:** "Bob shared 'Security Workspace' with you" — Accept / Decline buttons
|
|
192
|
-
**Outgoing shares:** "You shared 'Platform' with Alice" — Revoke button
|
|
193
|
-
|
|
194
|
-
## Implementation Notes
|
|
195
|
-
|
|
196
|
-
### Where Lobe Config Lives
|
|
197
|
-
|
|
198
|
-
Option A: JSON column on workspaces table (`lobe_config TEXT DEFAULT '{}'`)
|
|
199
|
-
Option B: Separate `workspace_lobe_config` table
|
|
200
|
-
|
|
201
|
-
**Recommendation: Option A** — it's simpler, the config is small, and it's always loaded with the workspace. Add a migration to add the column.
|
|
202
|
-
|
|
203
|
-
### Integration with Boundary Engine
|
|
204
|
-
|
|
205
|
-
The lobe system sits ABOVE the boundary engine. Lobes determine which scopes are searched. The boundary engine then filters individual results by sensitivity/policy/creator-override within those scopes. They compose naturally:
|
|
206
|
-
|
|
207
|
-
```
|
|
208
|
-
Lobe Config → determines searchable scopes
|
|
209
|
-
↓
|
|
210
|
-
Context Assembly Engine → searches those scopes
|
|
211
|
-
↓
|
|
212
|
-
Boundary Engine → filters results by access control
|
|
213
|
-
↓
|
|
214
|
-
User sees results
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### Cross-User Sharing Security
|
|
218
|
-
|
|
219
|
-
When User A searches a lobe shared by User B:
|
|
220
|
-
- The search runs against User B's workspace storage
|
|
221
|
-
- The Boundary Engine still applies — confidential/restricted knowledge is filtered
|
|
222
|
-
- The sensitivity auto-classifier already marks sensitive content appropriately
|
|
223
|
-
- Audit trail logs cross-user access for compliance
|
|
224
|
-
|
|
225
|
-
### Consulting Firm Scenario
|
|
226
|
-
|
|
227
|
-
Setup for a consulting firm with clients Initech and Globex:
|
|
228
|
-
|
|
229
|
-
1. Create workspaces: "Initech Project", "Globex Project", "Internal"
|
|
230
|
-
2. Mark "Initech Project" with tag `initech`, mark private
|
|
231
|
-
3. Mark "Globex Project" with tag `globex`, mark private
|
|
232
|
-
4. "Internal" workspace: default (pulls from everything non-private)
|
|
233
|
-
5. "Initech Project": remove "Globex Project" from accessible lobes (it's already excluded by privacy, belt + suspenders)
|
|
234
|
-
6. Result: Initech workspace sees only its own knowledge + personal + team + org. Never sees Globex. Globex never sees Initech. Internal sees both (org-level patterns only, not private workspace knowledge).
|
|
235
|
-
|
|
236
|
-
## File Structure
|
|
237
|
-
|
|
238
|
-
```
|
|
239
|
-
New files:
|
|
240
|
-
├── src/lib/cortex/lobes/config.ts — LobeConfig types and defaults
|
|
241
|
-
├── src/lib/cortex/lobes/resolver.ts — Resolve accessible lobes for a workspace
|
|
242
|
-
├── src/lib/cortex/lobes/shares.ts — Cross-user sharing logic
|
|
243
|
-
├── src/lib/cortex/lobes/index.ts — Barrel export
|
|
244
|
-
├── src/app/api/cortex/lobes/route.ts — List/get lobes
|
|
245
|
-
├── src/app/api/cortex/lobes/[id]/route.ts — Update lobe config
|
|
246
|
-
├── src/app/api/cortex/lobes/share/route.ts — Share management
|
|
247
|
-
├── src/components/cortex/lobe-settings.tsx — UI component
|
|
248
|
-
|
|
249
|
-
Modified files:
|
|
250
|
-
├── src/lib/cortex/retrieval/context-engine.ts — Use lobe resolver for search scopes
|
|
251
|
-
├── src/lib/db/queries.ts — Add lobe_config column to workspaces
|
|
252
|
-
├── src/app/(desktop)/cortex/page.tsx — Add Lobes tab or integrate into Settings
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
## Success Criteria
|
|
256
|
-
|
|
257
|
-
- New workspaces see knowledge from all non-private sibling workspaces by default
|
|
258
|
-
- Marking a workspace private immediately hides its knowledge from other workspaces
|
|
259
|
-
- Excluding a workspace prevents bidirectional knowledge access
|
|
260
|
-
- Cross-user sharing requires explicit share + accept handshake
|
|
261
|
-
- Consulting scenario works: private client workspaces with no cross-contamination
|
|
262
|
-
- Context Assembly Engine respects lobe config within <150ms (no performance regression)
|
|
263
|
-
- All access decisions logged in audit trail
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
# Cortex v2 UI Components
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-03-16
|
|
4
|
-
**Status:** Design approved, pending implementation plan
|
|
5
|
-
**Scope:** Three UI additions for Cortex v2: entity graph visualization, enhanced knowledge cards, and context assembly dashboard
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
Add a dedicated `/cortex` page to Spaces with four tabs (Graph, Knowledge, Context, Settings) plus enhancements to the existing right-side panel. The graph uses a canvas-based force layout for interactive exploration. Knowledge cards gain v2 field display (scope, sensitivity, evidence, origin). A context assembly tab lets users inspect how the retrieval engine works.
|
|
10
|
-
|
|
11
|
-
### Design Principles
|
|
12
|
-
|
|
13
|
-
- Follow existing dark theme and Tailwind patterns (no component library)
|
|
14
|
-
- Minimal backend changes — 3 small modifications to existing endpoints (documented below)
|
|
15
|
-
- One new npm dependency: `force-graph` for canvas rendering
|
|
16
|
-
- Progressive enhancement — v1 data renders fine, v2 fields show when present
|
|
17
|
-
- Custom `nodeCanvasObject` callback for entity-type shapes (force-graph renders circles by default; diamonds/rectangles need manual Canvas 2D drawing)
|
|
18
|
-
|
|
19
|
-
## Component 1: Entity Graph Page
|
|
20
|
-
|
|
21
|
-
### Route: `/app/(desktop)/cortex/page.tsx`
|
|
22
|
-
|
|
23
|
-
Full-page layout with tab navigation. The "Cortex" icon (Brain from Lucide) is added to the sidebar below existing nav items, gated by `useTier().hasCortex`.
|
|
24
|
-
|
|
25
|
-
### Tab Bar
|
|
26
|
-
|
|
27
|
-
Four tabs across the top: **Graph** | **Knowledge** | **Context** | **Settings**
|
|
28
|
-
|
|
29
|
-
Right-aligned stats in the tab bar: entity count, edge count, knowledge unit count (from `/api/cortex/status` + `/api/cortex/graph/entities`).
|
|
30
|
-
|
|
31
|
-
### Graph Tab (default)
|
|
32
|
-
|
|
33
|
-
Two-column layout:
|
|
34
|
-
|
|
35
|
-
**Left: Force Graph Canvas (~70% width)**
|
|
36
|
-
- Renders via `force-graph` npm package (canvas-based, handles 1000+ nodes)
|
|
37
|
-
- Nodes colored and shaped by entity type:
|
|
38
|
-
- Person: circle, purple (#7c3aed)
|
|
39
|
-
- Team/Project: rounded rectangle, green (#10b981)
|
|
40
|
-
- System: diamond, amber (#f59e0b)
|
|
41
|
-
- Topic: small circle, cyan (#06b6d4)
|
|
42
|
-
- Department/Organization: larger rounded rect, blue (#3b82f1)
|
|
43
|
-
- Edges rendered as lines, opacity based on weight
|
|
44
|
-
- Interactions: drag nodes, zoom (scroll), pan (drag background), click to select
|
|
45
|
-
- Overlay controls: zoom +/-, recenter button (bottom-left)
|
|
46
|
-
- Legend overlay (top-right): shows shape/color mapping
|
|
47
|
-
|
|
48
|
-
**Right: Detail Panel (~30% width, 260px min)**
|
|
49
|
-
|
|
50
|
-
When no node selected: shows graph stats summary (entity counts by type, edge counts by relation).
|
|
51
|
-
|
|
52
|
-
When a node is selected:
|
|
53
|
-
- Entity header: icon + name + type + metadata (role, email, etc.)
|
|
54
|
-
- Relationships section: list of edges from/to this entity, each showing relation type, target name, weight
|
|
55
|
-
- Related Knowledge section: knowledge units linked to this entity (via entity_links or scope), shown as mini knowledge cards
|
|
56
|
-
- Actions: "Add Edge" button (opens simple form), "Delete Entity" with confirmation
|
|
57
|
-
|
|
58
|
-
### Data Fetching
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
GET /api/cortex/graph/entities → all nodes
|
|
62
|
-
GET /api/cortex/graph/edges?from={id} → edges for selected node
|
|
63
|
-
GET /api/cortex/graph/edges?to={id} → edges to selected node
|
|
64
|
-
GET /api/cortex/search?q=&layer=personal&limit=5 → related knowledge (when node selected)
|
|
65
|
-
GET /api/cortex/status → stats for tab bar
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
For the graph canvas, fetch ALL entities and ALL edges on mount (the graph is small — hundreds of nodes, not millions). Build the node/link arrays for force-graph from the API response.
|
|
69
|
-
|
|
70
|
-
To get all edges, add a new lightweight endpoint or use a query parameter:
|
|
71
|
-
```
|
|
72
|
-
GET /api/cortex/graph/edges?all=true → all edges (for graph rendering)
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Component 2: Enhanced Knowledge Cards
|
|
76
|
-
|
|
77
|
-
### Modify: `src/components/cortex/knowledge-card.tsx`
|
|
78
|
-
|
|
79
|
-
The existing card shows: type badge, age, text, confidence bar, delete button.
|
|
80
|
-
|
|
81
|
-
Add v2 fields (displayed only when present — backward compatible with v1 data):
|
|
82
|
-
|
|
83
|
-
**Badge row (top):**
|
|
84
|
-
- Existing type badge (decision, error_fix, etc.)
|
|
85
|
-
- NEW: Sensitivity badge — color-coded:
|
|
86
|
-
- public: green (#10b981)
|
|
87
|
-
- internal: blue (#6366f1)
|
|
88
|
-
- restricted: amber (#f59e0b)
|
|
89
|
-
- confidential: red (#ef4444)
|
|
90
|
-
- NEW: Scope badge — shows scope level (personal, team, department, organization) in muted purple
|
|
91
|
-
|
|
92
|
-
**Attribution row (below text):**
|
|
93
|
-
- Creator: `by {origin.creator_entity_id}` (strip "person-" prefix for display)
|
|
94
|
-
- Source: `via {origin.source_type}` (conversation, git_commit, document, etc.)
|
|
95
|
-
- Corroborations: `{corroborations} corroborations` in green if > 0
|
|
96
|
-
- Contradictions: `{contradiction_refs.length} contested` in amber if > 0
|
|
97
|
-
|
|
98
|
-
**Evidence bar (replaces confidence bar):**
|
|
99
|
-
- If `evidence_score` is present, show it instead of `confidence`
|
|
100
|
-
- Label: "0.72 evidence" instead of "85% confidence"
|
|
101
|
-
- Same visual style (horizontal bar with fill)
|
|
102
|
-
|
|
103
|
-
**Conflict indicator:**
|
|
104
|
-
- If `contradiction_refs.length > 0`, show an amber warning icon and "Contested" text
|
|
105
|
-
|
|
106
|
-
All new fields use optional chaining — if undefined, the row/badge simply doesn't render.
|
|
107
|
-
|
|
108
|
-
## Component 3: Context Assembly Tab
|
|
109
|
-
|
|
110
|
-
### Tab content within `/cortex` page
|
|
111
|
-
|
|
112
|
-
A query input at the top. User types a question and clicks "Analyze" (or presses Enter). The tab calls `GET /api/cortex/context/?q={query}&limit=5` and displays the full pipeline breakdown.
|
|
113
|
-
|
|
114
|
-
**Layout (top to bottom):**
|
|
115
|
-
|
|
116
|
-
1. **Query input** — text field + Analyze button
|
|
117
|
-
|
|
118
|
-
2. **Pipeline summary cards** (3 columns):
|
|
119
|
-
- Intent card: detected intent name (color-coded), confidence score
|
|
120
|
-
- Entities card: list of resolved entities with type badges
|
|
121
|
-
- Timing card: total ms (large number), breakdown (intent, entity, search)
|
|
122
|
-
|
|
123
|
-
3. **Source weights** — horizontal bars showing each source's computed weight. Three bars: Personal, Team, Org. Bar fill proportional to weight, numeric label.
|
|
124
|
-
|
|
125
|
-
4. **Results list** — ranked knowledge units with:
|
|
126
|
-
- Type badge
|
|
127
|
-
- Text snippet
|
|
128
|
-
- Relevance score (right-aligned)
|
|
129
|
-
- Source attribution
|
|
130
|
-
|
|
131
|
-
5. **Conflict callout** (if any) — amber box showing conflicting pairs
|
|
132
|
-
|
|
133
|
-
6. **Raw context preview** — collapsible section showing the `<cortex-context>` XML that would be injected into a Claude prompt
|
|
134
|
-
|
|
135
|
-
### Data Fetching
|
|
136
|
-
|
|
137
|
-
Single API call: `GET /api/cortex/context/?q={query}&limit=5`
|
|
138
|
-
|
|
139
|
-
Response shape (requires backend modifications — see Backend Changes section):
|
|
140
|
-
```typescript
|
|
141
|
-
{
|
|
142
|
-
results: ScoredKnowledge[]
|
|
143
|
-
context: string // pre-formatted XML
|
|
144
|
-
intent: { intent, confidence, biases }
|
|
145
|
-
entities: ResolvedEntity[] // NEW: resolved entity references
|
|
146
|
-
conflicts: ConflictPair[] // CHANGED: full pairs, not just count
|
|
147
|
-
sourceWeights: Array<{ layerKey: string; scopeLevel: string; weight: number }> // NEW
|
|
148
|
-
timing: { intentMs, entityMs, searchMs, totalMs }
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Component 4: Existing Panel Enhancement
|
|
153
|
-
|
|
154
|
-
### Modify: `src/components/cortex/cortex-panel.tsx`
|
|
155
|
-
|
|
156
|
-
Minimal changes to the existing right-side panel:
|
|
157
|
-
|
|
158
|
-
1. Add "Open full view" link at the top → navigates to `/cortex` using Next.js router
|
|
159
|
-
2. Replace `KnowledgeCard` import to use the enhanced version (same component, just has new optional fields)
|
|
160
|
-
3. No layout changes — panel stays at 384px width with existing tabs
|
|
161
|
-
|
|
162
|
-
## Component 5: Sidebar Navigation
|
|
163
|
-
|
|
164
|
-
### Modify: `src/components/layout/sidebar.tsx`
|
|
165
|
-
|
|
166
|
-
Add a "Cortex" nav item to the sidebar:
|
|
167
|
-
- Icon: Brain from lucide-react (already used by CortexIndicator)
|
|
168
|
-
- Position: after existing nav items (Terminal, Sessions, etc.)
|
|
169
|
-
- Route: `/cortex`
|
|
170
|
-
- Gated by `useTier().hasCortex`
|
|
171
|
-
- Active state: indigo background (`bg-indigo-950 text-indigo-300`) consistent with other sidebar items
|
|
172
|
-
|
|
173
|
-
The existing CortexIndicator (bottom of sidebar) remains — it shows the knowledge count badge and toggles the right panel.
|
|
174
|
-
|
|
175
|
-
## Backend Changes (3 modifications)
|
|
176
|
-
|
|
177
|
-
### 1. `EntityGraph.listAllEdges()` + edges route `all=true`
|
|
178
|
-
|
|
179
|
-
Add a `listAllEdges(): Edge[]` method to `EntityGraph` class:
|
|
180
|
-
```typescript
|
|
181
|
-
listAllEdges(): Edge[] {
|
|
182
|
-
return (this.db.prepare('SELECT * FROM edges').all() as any[]).map(r => this.rowToEdge(r));
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Modify `src/app/api/cortex/graph/edges/route.ts` GET handler: if `all=true` query param is present, call `cortex.graph.listAllEdges()` and return all edges (bypassing the `from`/`to` requirement). No pagination needed — graph is small.
|
|
187
|
-
|
|
188
|
-
### 2. Context API response expansion
|
|
189
|
-
|
|
190
|
-
Modify `src/app/api/cortex/context/route.ts` to include three additional fields from `AssemblyResult`:
|
|
191
|
-
- `entities: result.entities` — resolved entity references (currently dropped)
|
|
192
|
-
- `conflicts: result.conflicts` — full `ConflictPair[]` array (currently flattened to count)
|
|
193
|
-
- `sourceWeights` — requires exposing the computed source weights from `ContextEngine`
|
|
194
|
-
|
|
195
|
-
To expose source weights, add a `sourceWeights` field to `AssemblyResult` in `context-engine.ts` and populate it from the `computeSourceWeights()` output (currently private, just return the array of `{ layerKey, scopeLevel, weight }` objects).
|
|
196
|
-
|
|
197
|
-
### 3. Sidebar active state
|
|
198
|
-
|
|
199
|
-
Use the existing indigo active state pattern (`bg-indigo-950 text-indigo-300`) for the Cortex nav item, consistent with other sidebar items. The purple (#7c3aed) is used inside the Cortex page for graph elements, not for sidebar navigation.
|
|
200
|
-
|
|
201
|
-
### Settings tab
|
|
202
|
-
|
|
203
|
-
The Settings tab renders the existing `<CortexSettings />` component (`src/components/cortex/cortex-settings.tsx`). No new settings content needed.
|
|
204
|
-
|
|
205
|
-
## File Structure
|
|
206
|
-
|
|
207
|
-
```
|
|
208
|
-
New files:
|
|
209
|
-
├── src/app/(desktop)/cortex/page.tsx — Main /cortex page with tabs
|
|
210
|
-
├── src/components/cortex/entity-graph.tsx — Force graph canvas component
|
|
211
|
-
├── src/components/cortex/entity-detail.tsx — Right-side entity detail panel
|
|
212
|
-
├── src/components/cortex/context-tab.tsx — Context assembly tab content
|
|
213
|
-
├── src/components/cortex/knowledge-tab.tsx — Knowledge list tab (reuses enhanced cards)
|
|
214
|
-
|
|
215
|
-
Modified files:
|
|
216
|
-
├── src/components/cortex/knowledge-card.tsx — Add v2 field display
|
|
217
|
-
├── src/components/cortex/cortex-panel.tsx — Add "Open full view" link
|
|
218
|
-
├── src/components/layout/sidebar.tsx — Add Cortex nav item
|
|
219
|
-
├── src/app/api/cortex/graph/edges/route.ts — Support all=true parameter + listAllEdges()
|
|
220
|
-
├── src/lib/cortex/graph/entity-graph.ts — Add listAllEdges() method
|
|
221
|
-
├── src/app/api/cortex/context/route.ts — Expand response (entities, conflicts, sourceWeights)
|
|
222
|
-
├── src/lib/cortex/retrieval/context-engine.ts — Expose sourceWeights in AssemblyResult
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## npm Dependency
|
|
226
|
-
|
|
227
|
-
```
|
|
228
|
-
force-graph: ^1.44.0
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
Canvas-based force-directed graph renderer. ~30KB gzipped. Wraps d3-force with a Canvas/WebGL renderer. Supports zoom, drag, click, hover out of the box. The `entity-graph.tsx` component (not the backend `entity-graph.ts`) is the dynamic import target: `const ForceGraph = dynamic(() => import('./entity-graph'), { ssr: false })`. The parent page handles the loading state.
|
|
232
|
-
|
|
233
|
-
## Success Criteria
|
|
234
|
-
|
|
235
|
-
- Entity graph renders all entities and edges with correct colors/shapes
|
|
236
|
-
- Clicking a node shows its relationships and related knowledge
|
|
237
|
-
- Knowledge cards show v2 fields when present, degrade gracefully for v1 data
|
|
238
|
-
- Context tab shows full pipeline breakdown (intent, entities, weights, timing, results)
|
|
239
|
-
- All within existing dark theme, no visual inconsistencies
|
|
240
|
-
- Page loads in <1s, graph interaction is smooth (60fps)
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Pane UX Improvements: Agent Ordering + New Folder
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-03-16
|
|
4
|
-
**Status:** Design approved, pending implementation plan
|
|
5
|
-
**Scope:** Two small UX improvements: reorder agent types with Claude Code as default, add "New Folder" button to directory picker
|
|
6
|
-
|
|
7
|
-
## Change 1: Agent Type Ordering
|
|
8
|
-
|
|
9
|
-
### File: `src/lib/agents.ts`
|
|
10
|
-
|
|
11
|
-
Reorder `AGENT_TYPES` record so Claude Code is first:
|
|
12
|
-
|
|
13
|
-
1. claude (default)
|
|
14
|
-
2. codex
|
|
15
|
-
3. gemini
|
|
16
|
-
4. aider
|
|
17
|
-
5. shell
|
|
18
|
-
6. custom
|
|
19
|
-
|
|
20
|
-
### File: `src/app/(desktop)/terminal/page.tsx`
|
|
21
|
-
|
|
22
|
-
Change the default agent type state from `'shell'` to `'claude'`:
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
// From:
|
|
26
|
-
const [newAgentType, setNewAgentType] = useState('shell');
|
|
27
|
-
// To:
|
|
28
|
-
const [newAgentType, setNewAgentType] = useState('claude');
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Change 2: New Folder in Directory Picker
|
|
32
|
-
|
|
33
|
-
### File: `src/components/common/dev-directory-picker.tsx`
|
|
34
|
-
|
|
35
|
-
Add a "New Folder" button in the browse view (between the "Select this folder" button and the subfolder list). When clicked:
|
|
36
|
-
|
|
37
|
-
1. Shows an inline text input with a "Create" button
|
|
38
|
-
2. On submit, calls `POST /api/folders` with `{ parent: data.current, name: inputValue }`
|
|
39
|
-
3. On success, navigates into the new folder and selects it
|
|
40
|
-
4. On error, shows inline error message
|
|
41
|
-
|
|
42
|
-
The button only appears in browse mode (not in the dev directory list view).
|
|
43
|
-
|
|
44
|
-
### File: `src/app/api/folders/route.ts`
|
|
45
|
-
|
|
46
|
-
Add a POST handler alongside the existing GET:
|
|
47
|
-
|
|
48
|
-
```typescript
|
|
49
|
-
export async function POST(request: NextRequest) {
|
|
50
|
-
const user = getAuthUser(request);
|
|
51
|
-
const config = readConfig(user);
|
|
52
|
-
const body = await request.json();
|
|
53
|
-
const { parent, name } = body;
|
|
54
|
-
|
|
55
|
-
// Validate parent is within allowed dev directories
|
|
56
|
-
// Validate name (no path separators, no dots-only, reasonable length)
|
|
57
|
-
// Create directory with fs.mkdirSync
|
|
58
|
-
// Return { path: newPath }
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Validation rules:
|
|
63
|
-
- `parent` must be within an allowed dev directory (same check as GET)
|
|
64
|
-
- `name` must not contain path separators (`/`, `\`)
|
|
65
|
-
- `name` must not be `.` or `..`
|
|
66
|
-
- `name` must be 1-255 characters
|
|
67
|
-
- Directory must not already exist (return 409)
|
|
68
|
-
|
|
69
|
-
## Files Changed
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
Modified:
|
|
73
|
-
├── src/lib/agents.ts — Reorder agents
|
|
74
|
-
├── src/app/(desktop)/terminal/page.tsx — Default to 'claude'
|
|
75
|
-
├── src/components/common/dev-directory-picker.tsx — Add New Folder button + UI
|
|
76
|
-
├── src/app/api/folders/route.ts — Add POST handler
|
|
77
|
-
```
|