@jlongo78/agent-spaces 0.9.6 → 0.9.8
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/.claude/settings.local.json +68 -0
- package/.next/standalone/.claude/spaces-env.json +1 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +19 -19
- package/.next/standalone/.next/routes-manifest.json +6 -0
- 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.js.nft.json +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.js.nft.json +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/analytics/overview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/analytics/overview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/benchmark/lobes/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/bulk/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/files/route.js +1 -1
- package/.next/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/folders/route.js +1 -1
- package/.next/standalone/.next/server/app/api/folders/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/handshake/route.js +1 -1
- package/.next/standalone/.next/server/app/api/network/handshake/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/panes/[id]/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/network/projects/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/search/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/network/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/workspaces/[id]/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/panes/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +2 -2
- package/.next/standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[id]/chat/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +2 -2
- package/.next/standalone/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sync/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sync/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tags/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tags/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tier/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tier/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/whisper/config/route.js +1 -1
- 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.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wizard/chart/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/wizard/chart/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/wizard/chart/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/wizard/chart/route.js +7 -0
- package/.next/standalone/.next/server/app/api/wizard/chart/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/wizard/chart/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/wizard/chart/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/wizard/chat/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/[id]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/workspaces/route.js +2 -2
- 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 +3 -3
- package/.next/standalone/.next/server/app/cortex.segments/!KGRlc2t0b3Ap/cortex/__PAGE__.segment.rsc +2 -2
- 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 +3 -3
- 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/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.js.nft.json +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 +3 -3
- package/.next/standalone/.next/server/app/m/terminal.segments/_full.segment.rsc +3 -3
- 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 +2 -2
- 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/react-loadable-manifest.json +1 -1
- 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 +3 -3
- package/.next/standalone/.next/server/app/vr.segments/_full.segment.rsc +3 -3
- 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 +2 -2
- 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/app-paths-manifest.json +1 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00e90fc6._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01ab8675._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03974f05._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__bb331da9._.js → [root-of-the-server]__046c9b91._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04ae6bf0._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__056fa416._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ac4ea3f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b8e64cb._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__d95165f0._.js → [root-of-the-server]__0facd39e._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10bc76a3._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__9d68157b._.js → [root-of-the-server]__115f3934._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11f155f1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__160e7c73._.js +22 -33
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__91e23c96._.js → [root-of-the-server]__17a3b966._.js} +3 -3
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__277d9445._.js → [root-of-the-server]__17d3a2b2._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a86c055._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__20b5e9c4._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__28d6fbd8._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__04f04898._.js → [root-of-the-server]__2a3f866b._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__a95bb38b._.js → [root-of-the-server]__316617e7._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__32ad8f71._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__6fe5e6c8._.js → [root-of-the-server]__35457394._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1f054c65._.js → [root-of-the-server]__35de78e6._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3685ffcb._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__614458b7._.js → [root-of-the-server]__38954988._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__426ad936._.js +106 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4985c034._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5c6ce9ed._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5cebe58a._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d5e4789._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__65676930._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__67cab326._.js +58 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__698c6f01._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6c64af29._.js +131 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__73aed9f5._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__ac84b704._.js → [root-of-the-server]__79b6a9bb._.js} +3 -3
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__e56abacf._.js → [root-of-the-server]__7db704c6._.js} +4 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__812ca02b._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__821f50fa._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8716b86e._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__884ef754._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__88cdbd68._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__89d9aba9._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8d536cb5._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8df8c5d1._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__2d7a454e._.js → [root-of-the-server]__8f2ccc41._.js} +3 -3
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__2a2c5fc5._.js → [root-of-the-server]__95c9d682._.js} +4 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9e5d7774._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__cc6e2885._.js → [root-of-the-server]__9edcff87._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a049dfc2._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a5b4bb9a._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__929ea03a._.js → [root-of-the-server]__a83262a1._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9cd1240._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9d7f822._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad08c221._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad585f2f._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__afcb8f7d._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bc250d43._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bce2a6e7._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c011bf91._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c0ac2895._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c130a00c._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c37d6380._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cae392eb._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cc2616bb._.js +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d501fa9b._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d59c6c15._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d5c1db32._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d5d92527._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__dba60c86._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__2384f98e._.js → [root-of-the-server]__de14b9ae._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e10643d1._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__00fdfbda._.js → [root-of-the-server]__e2a996e5._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__4d903941._.js → [root-of-the-server]__e3477417._.js} +3 -3
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__32dc5513._.js → [root-of-the-server]__e4db362e._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__49e42a3a._.js → [root-of-the-server]__e4e70b86._.js} +3 -3
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__ac39ecc7._.js → [root-of-the-server]__e54925af._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e8edc5b0._.js +98 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__eafd040b._.js → [root-of-the-server]__eab4d83b._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ead29015._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__194955d4._.js → [root-of-the-server]__f056fd83._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f0e99572._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fe1e16d0._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ff9cd277._.js +98 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ffaea2ce._.js +98 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_wizard_chart_route_actions_888e2ec1.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__2cffc362._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__f1050870._.js → [root-of-the-server]__47c97637._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__66aca5d4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_17b946fd._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_2a1d79e7._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_5c3c4cfa._.js +7 -5
- package/.next/standalone/.next/server/chunks/ssr/_ba432382._.js +7 -5
- package/.next/standalone/.next/server/chunks/ssr/src_app_(desktop)_cortex_page_tsx_0f33d8b3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_(desktop)_terminal_page_tsx_de5e8d85._.js +4 -4
- package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__90eeddae._.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/0852575eb90c1e8d.js +85 -0
- package/.next/standalone/.next/static/chunks/{74d0ac0b1d0a1b79.js → 10b00b4f66102dcf.js} +1 -1
- package/.next/standalone/.next/static/chunks/{16eb77953dee9ea3.js → 19c71a8376c23c58.js} +1 -1
- package/.next/standalone/.next/static/chunks/2b769d1597e4fc1c.css +3 -0
- package/.next/standalone/.next/static/chunks/{3e91fc608659c524.js → 350271fe79509caf.js} +1 -1
- package/.next/standalone/.next/static/chunks/{70423c7afd8abf5f.js → 597847c22200c212.js} +1 -1
- package/.next/standalone/.next/static/chunks/{fb0abd1933b2b2e1.js → 7f6a14f1849fa94d.js} +1 -1
- package/.next/standalone/.next/static/chunks/{7ecd9bbb0ce4d68a.js → b7c8fe9b7275a84f.js} +1 -1
- package/.next/standalone/.next/static/chunks/{6245135a7afb8c7b.js → c9b10fc55516d142.js} +8 -6
- package/.next/standalone/.next/static/chunks/d0065f48eab94944.js +1 -0
- package/.next/standalone/.next/static/chunks/{180c1b9ff31b979f.js → f7b34c807badf95d.js} +8 -6
- package/.next/standalone/.spaces/cortex-context.md +50 -144
- package/.next/standalone/LICENSE +661 -661
- package/.next/standalone/NOTICE +5 -5
- package/.next/standalone/README.md +131 -131
- package/.next/standalone/bin/cortex-hook.js +79 -79
- package/.next/standalone/bin/cortex-hook.sh +62 -62
- package/.next/standalone/bin/cortex-learn-hook.js +138 -138
- package/.next/standalone/bin/cortex-mcp.js +60 -60
- package/.next/standalone/bin/cortex-pi-extension.ts +170 -170
- package/.next/standalone/bin/fix-standalone-externals.js +79 -79
- package/.next/standalone/bin/lib/auto-setup.js +110 -110
- package/.next/standalone/bin/mdns-service.js +171 -171
- package/.next/standalone/bin/postinstall.js +35 -35
- package/.next/standalone/bin/setup-admin.js +195 -195
- package/.next/standalone/bin/spaces-dev.js +247 -247
- package/.next/standalone/bin/spaces-install.js +660 -660
- package/.next/standalone/bin/spaces-postinstall.js +50 -50
- package/.next/standalone/bin/spaces-reset-totp.js +50 -50
- package/.next/standalone/bin/spaces-service.js +1046 -1046
- package/.next/standalone/bin/spaces-setup.js +253 -253
- package/.next/standalone/bin/spaces.js +808 -805
- package/.next/standalone/bin/ssh-auth-keys.sh +68 -68
- package/.next/standalone/bin/terminal-server.js +2819 -2781
- package/.next/standalone/cortex-hook-debug.log +57 -23
- package/.next/standalone/docker-compose.yml +28 -28
- package/.next/standalone/docs/architecture.md +387 -387
- package/.next/standalone/docs/cortex-integration-reference.md +268 -268
- package/.next/standalone/docs/cortex.md +293 -293
- package/.next/standalone/docs/getting-started.md +96 -96
- package/.next/standalone/docs/plans/2026-02-24-multi-agent-sessions-design.md +133 -133
- package/.next/standalone/docs/plans/2026-02-24-multi-agent-sessions-plan.md +959 -959
- package/.next/standalone/docs/plans/2026-03-02-security-audit.md +229 -229
- package/.next/standalone/docs/plans/2026-03-07-service-command-design.md +146 -146
- package/.next/standalone/docs/plans/2026-03-07-service-command-plan.md +254 -254
- package/.next/standalone/docs/server-install.md +564 -564
- package/.next/standalone/docs/social-card.html +150 -150
- package/.next/standalone/docs/superpowers/plans/2026-03-12-spaces-cortex.md +5270 -5270
- package/.next/standalone/docs/superpowers/plans/2026-03-13-cortex-wiring.md +1387 -1387
- package/.next/standalone/docs/superpowers/plans/2026-03-14-cortex-v2-entity-graph.md +1923 -1923
- package/.next/standalone/docs/superpowers/plans/2026-03-14-cortex-v2-knowledge-evolution.md +1113 -1113
- package/.next/standalone/docs/superpowers/plans/2026-03-15-cortex-v2-boundary-engine.md +853 -853
- package/.next/standalone/docs/superpowers/plans/2026-03-15-cortex-v2-context-engine.md +1274 -1274
- package/.next/standalone/docs/superpowers/plans/2026-03-15-cortex-v2-signal-ingestion.md +933 -933
- package/.next/standalone/docs/superpowers/plans/2026-03-16-cortex-lobes.md +1080 -1080
- package/.next/standalone/docs/superpowers/plans/2026-03-16-cortex-v2-gravity-system.md +768 -768
- package/.next/standalone/docs/superpowers/plans/2026-03-16-cortex-v2-ui.md +1108 -1108
- package/.next/standalone/docs/superpowers/plans/2026-03-18-cortex-ui-integration.md +1846 -1846
- package/.next/standalone/docs/superpowers/plans/2026-03-19-vr-phase1-shell.md +1639 -1639
- package/.next/standalone/docs/superpowers/plans/2026-03-27-dockview-pane-layout.md +98 -98
- package/.next/standalone/docs/superpowers/specs/2026-03-11-universe-view-design.md +320 -320
- package/.next/standalone/docs/superpowers/specs/2026-03-12-spaces-brain-design.md +720 -720
- package/.next/standalone/docs/superpowers/specs/2026-03-13-cortex-wiring-design.md +268 -268
- package/.next/standalone/docs/superpowers/specs/2026-03-14-cortex-v2-design.md +623 -623
- package/.next/standalone/docs/superpowers/specs/2026-03-16-cortex-lobes-design.md +263 -263
- package/.next/standalone/docs/superpowers/specs/2026-03-16-cortex-v2-ui-design.md +240 -240
- package/.next/standalone/docs/superpowers/specs/2026-03-16-pane-ux-design.md +77 -77
- package/.next/standalone/docs/superpowers/specs/2026-03-18-cortex-ui-integration-design.md +341 -341
- package/.next/standalone/docs/superpowers/specs/2026-03-19-vr-phase1-shell-design.md +288 -288
- package/.next/standalone/docs/superpowers/specs/2026-03-27-pane-diff-review-and-project-wizard-design.md +322 -322
- package/.next/standalone/docs/tiers.md +104 -104
- package/.next/standalone/eslint.config.mjs +18 -18
- package/.next/standalone/next.config.ts +20 -20
- package/.next/standalone/nginx.conf +53 -53
- package/.next/standalone/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64.node +0 -0
- package/.next/standalone/node_modules/@img/{sharp-linux-x64 → sharp-win32-x64}/package.json +39 -46
- package/.next/standalone/package-lock.json +14985 -14986
- package/.next/standalone/package.json +111 -111
- package/.next/standalone/postcss.config.mjs +7 -7
- package/.next/standalone/scripts/rebuild.cmd +65 -65
- package/.next/standalone/scripts/rebuild.sh +59 -59
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/app/(desktop)/admin/analytics/page.tsx +266 -266
- package/.next/standalone/src/app/(desktop)/admin/users/page.tsx +399 -399
- package/.next/standalone/src/app/(desktop)/analytics/page.tsx +166 -166
- package/.next/standalone/src/app/(desktop)/cortex/page.tsx +81 -81
- package/.next/standalone/src/app/(desktop)/dashboard-client.tsx +56 -56
- package/.next/standalone/src/app/(desktop)/layout.tsx +18 -18
- package/.next/standalone/src/app/(desktop)/network/page.tsx +137 -137
- package/.next/standalone/src/app/(desktop)/page.tsx +17 -17
- package/.next/standalone/src/app/(desktop)/projects/page.tsx +68 -68
- package/.next/standalone/src/app/(desktop)/sessions/[id]/page.tsx +519 -519
- package/.next/standalone/src/app/(desktop)/sessions/page.tsx +145 -145
- package/.next/standalone/src/app/(desktop)/settings/page.tsx +446 -446
- package/.next/standalone/src/app/(desktop)/terminal/layout.tsx +7 -7
- package/.next/standalone/src/app/(desktop)/terminal/page.tsx +1330 -1291
- package/.next/standalone/src/app/(desktop)/terminal/pane/[id]/page.tsx +211 -211
- package/.next/standalone/src/app/(desktop)/terminal/remote/[nodeId]/[workspaceId]/page.tsx +252 -252
- package/.next/standalone/src/app/(desktop)/workspaces/page.tsx +12 -12
- package/.next/standalone/src/app/api/admin/analytics/route.ts +10 -10
- package/.next/standalone/src/app/api/admin/users/[id]/route.ts +20 -20
- package/.next/standalone/src/app/api/admin/users/route.ts +15 -15
- package/.next/standalone/src/app/api/analytics/overview/route.ts +80 -80
- package/.next/standalone/src/app/api/auth/login/route.ts +10 -10
- package/.next/standalone/src/app/api/auth/logout/route.ts +9 -9
- package/.next/standalone/src/app/api/auth/me/route.ts +22 -22
- package/.next/standalone/src/app/api/auth/totp/setup/route.ts +10 -10
- package/.next/standalone/src/app/api/auth/totp/status/route.ts +10 -10
- package/.next/standalone/src/app/api/auth/totp/verify/route.ts +10 -10
- package/.next/standalone/src/app/api/benchmark/lobes/route.ts +16 -16
- package/.next/standalone/src/app/api/benchmark/run/route.ts +113 -92
- package/.next/standalone/src/app/api/benchmark/runs/[id]/route.ts +26 -26
- package/.next/standalone/src/app/api/benchmark/runs/route.ts +16 -16
- package/.next/standalone/src/app/api/benchmark/status/route.ts +35 -35
- package/.next/standalone/src/app/api/bulk/route.ts +34 -34
- package/.next/standalone/src/app/api/chat/route.ts +85 -85
- package/.next/standalone/src/app/api/config/route.ts +30 -30
- package/.next/standalone/src/app/api/cortex/context/route.ts +78 -78
- package/.next/standalone/src/app/api/cortex/curation/assess/route.ts +27 -27
- package/.next/standalone/src/app/api/cortex/curation/publish/route.ts +23 -23
- package/.next/standalone/src/app/api/cortex/curation/refine/route.ts +23 -23
- package/.next/standalone/src/app/api/cortex/curation/review/route.ts +29 -29
- package/.next/standalone/src/app/api/cortex/curation/seed/route.ts +23 -23
- package/.next/standalone/src/app/api/cortex/export/route.ts +40 -40
- package/.next/standalone/src/app/api/cortex/federation/pending/route.ts +20 -20
- package/.next/standalone/src/app/api/cortex/federation/resolve/route.ts +43 -43
- package/.next/standalone/src/app/api/cortex/federation/search/route.ts +35 -35
- package/.next/standalone/src/app/api/cortex/federation/teach/route.ts +76 -76
- package/.next/standalone/src/app/api/cortex/graph/edges/route.ts +112 -112
- package/.next/standalone/src/app/api/cortex/graph/entities/[id]/route.ts +73 -73
- package/.next/standalone/src/app/api/cortex/graph/entities/route.ts +75 -75
- package/.next/standalone/src/app/api/cortex/graph/populate/route.ts +203 -203
- package/.next/standalone/src/app/api/cortex/import/route.ts +75 -75
- package/.next/standalone/src/app/api/cortex/import/status/route.ts +15 -15
- package/.next/standalone/src/app/api/cortex/ingest/bootstrap/route.ts +39 -39
- package/.next/standalone/src/app/api/cortex/ingest/status/route.ts +15 -15
- package/.next/standalone/src/app/api/cortex/knowledge/[id]/route.ts +91 -91
- package/.next/standalone/src/app/api/cortex/knowledge/route.ts +97 -97
- package/.next/standalone/src/app/api/cortex/lobes/[id]/route.ts +67 -67
- package/.next/standalone/src/app/api/cortex/lobes/route.ts +22 -22
- package/.next/standalone/src/app/api/cortex/lobes/share/route.ts +80 -80
- package/.next/standalone/src/app/api/cortex/marketplace/browse/route.ts +43 -43
- package/.next/standalone/src/app/api/cortex/marketplace/preview/route.ts +46 -46
- package/.next/standalone/src/app/api/cortex/mcp/call/route.ts +11 -11
- package/.next/standalone/src/app/api/cortex/mcp/tools/route.ts +8 -8
- package/.next/standalone/src/app/api/cortex/search/route.ts +57 -45
- package/.next/standalone/src/app/api/cortex/settings/route.ts +35 -35
- package/.next/standalone/src/app/api/cortex/status/route.ts +169 -169
- package/.next/standalone/src/app/api/cortex/timeline/route.ts +42 -42
- package/.next/standalone/src/app/api/cortex/usage/route.ts +31 -31
- package/.next/standalone/src/app/api/cortex/workspace/[id]/context/route.ts +41 -41
- package/.next/standalone/src/app/api/events/route.ts +40 -40
- package/.next/standalone/src/app/api/files/route.ts +187 -187
- package/.next/standalone/src/app/api/folders/route.ts +107 -97
- package/.next/standalone/src/app/api/network/connect-callback/route.ts +11 -11
- package/.next/standalone/src/app/api/network/connect-request/[id]/route.ts +11 -11
- package/.next/standalone/src/app/api/network/connect-request/route.ts +17 -17
- package/.next/standalone/src/app/api/network/discovered/route.ts +9 -9
- package/.next/standalone/src/app/api/network/handshake/route.ts +25 -25
- package/.next/standalone/src/app/api/network/health/route.ts +10 -10
- package/.next/standalone/src/app/api/network/identity/route.ts +15 -15
- package/.next/standalone/src/app/api/network/keys/[id]/route.ts +10 -10
- package/.next/standalone/src/app/api/network/keys/route.ts +15 -15
- package/.next/standalone/src/app/api/network/nodes/[id]/route.ts +15 -15
- package/.next/standalone/src/app/api/network/nodes/check/route.ts +9 -9
- package/.next/standalone/src/app/api/network/nodes/route.ts +15 -15
- package/.next/standalone/src/app/api/network/panes/[id]/route.ts +78 -62
- package/.next/standalone/src/app/api/network/panes/route.ts +61 -50
- package/.next/standalone/src/app/api/network/projects/route.ts +32 -25
- package/.next/standalone/src/app/api/network/proxy/[nodeId]/[...path]/route.ts +25 -25
- package/.next/standalone/src/app/api/network/search/route.ts +45 -38
- package/.next/standalone/src/app/api/network/sessions/[id]/messages/route.ts +43 -36
- package/.next/standalone/src/app/api/network/sessions/[id]/route.ts +41 -34
- package/.next/standalone/src/app/api/network/sessions/route.ts +50 -43
- package/.next/standalone/src/app/api/network/terminal/token/route.ts +10 -10
- package/.next/standalone/src/app/api/network/workspaces/[id]/route.ts +80 -71
- package/.next/standalone/src/app/api/network/workspaces/route.ts +87 -85
- package/.next/standalone/src/app/api/panes/[id]/diff/route.ts +121 -121
- package/.next/standalone/src/app/api/panes/[id]/route.ts +60 -60
- package/.next/standalone/src/app/api/panes/route.ts +39 -39
- package/.next/standalone/src/app/api/projects/route.ts +13 -13
- package/.next/standalone/src/app/api/proxy/models/[modelId]/[...path]/route.ts +80 -80
- package/.next/standalone/src/app/api/proxy/models/[modelId]/status/route.ts +33 -33
- package/.next/standalone/src/app/api/search/route.ts +47 -47
- package/.next/standalone/src/app/api/sessions/[id]/chat/route.ts +120 -120
- package/.next/standalone/src/app/api/sessions/[id]/messages/route.ts +34 -34
- package/.next/standalone/src/app/api/sessions/[id]/route.ts +73 -73
- package/.next/standalone/src/app/api/sessions/route.ts +64 -64
- package/.next/standalone/src/app/api/sync/route.ts +24 -24
- package/.next/standalone/src/app/api/tags/route.ts +35 -35
- package/.next/standalone/src/app/api/tier/route.ts +16 -16
- package/.next/standalone/src/app/api/updates/route.ts +65 -65
- package/.next/standalone/src/app/api/whisper/config/route.ts +50 -42
- package/.next/standalone/src/app/api/whisper/route.ts +91 -91
- package/.next/standalone/src/app/api/wizard/chart/route.ts +129 -0
- package/.next/standalone/src/app/api/wizard/chat/route.ts +113 -113
- package/.next/standalone/src/app/api/workspaces/[id]/context/[key]/route.ts +39 -39
- package/.next/standalone/src/app/api/workspaces/[id]/context/route.ts +28 -28
- package/.next/standalone/src/app/api/workspaces/[id]/messages/[msgId]/route.ts +17 -17
- package/.next/standalone/src/app/api/workspaces/[id]/messages/route.ts +39 -39
- package/.next/standalone/src/app/api/workspaces/[id]/route.ts +47 -47
- package/.next/standalone/src/app/api/workspaces/[id]/sessions/route.ts +62 -62
- package/.next/standalone/src/app/api/workspaces/route.ts +79 -79
- package/.next/standalone/src/app/globals.css +88 -88
- package/.next/standalone/src/app/layout.tsx +33 -33
- package/.next/standalone/src/app/login/layout.tsx +7 -7
- package/.next/standalone/src/app/login/page.tsx +315 -315
- package/.next/standalone/src/app/m/layout.tsx +16 -16
- package/.next/standalone/src/app/m/page.tsx +118 -118
- package/.next/standalone/src/app/m/projects/page.tsx +64 -64
- package/.next/standalone/src/app/m/sessions/[id]/page.tsx +168 -168
- package/.next/standalone/src/app/m/sessions/page.tsx +177 -177
- package/.next/standalone/src/app/m/settings/page.tsx +230 -230
- package/.next/standalone/src/app/m/terminal/page.tsx +413 -413
- package/.next/standalone/src/app/vr/page.tsx +21 -21
- package/.next/standalone/src/app/vr/vr-app.tsx +163 -163
- package/.next/standalone/src/app/vr/vr-controls.tsx +139 -139
- package/.next/standalone/src/app/vr/vr-door.tsx +82 -82
- package/.next/standalone/src/app/vr/vr-environment.tsx +71 -71
- package/.next/standalone/src/app/vr/vr-gaze.tsx +89 -89
- package/.next/standalone/src/app/vr/vr-layout.ts +49 -49
- package/.next/standalone/src/app/vr/vr-lobby.tsx +97 -97
- package/.next/standalone/src/app/vr/vr-pane.tsx +195 -195
- package/.next/standalone/src/app/vr/vr-room.tsx +79 -79
- package/.next/standalone/src/app/vr/vr-terminal.tsx +303 -303
- package/.next/standalone/src/components/auth/totp-gate.tsx +183 -183
- package/.next/standalone/src/components/bus/activity-panel.tsx +261 -261
- package/.next/standalone/src/components/common/color-picker.tsx +35 -35
- package/.next/standalone/src/components/common/dev-directory-picker.tsx +339 -339
- package/.next/standalone/src/components/common/folder-picker.tsx +200 -200
- package/.next/standalone/src/components/common/tag-picker.tsx +190 -190
- package/.next/standalone/src/components/common/workspace-picker.tsx +113 -113
- package/.next/standalone/src/components/cortex/benchmark-tab.tsx +894 -880
- package/.next/standalone/src/components/cortex/constants.ts +29 -29
- package/.next/standalone/src/components/cortex/cortex-dashboard.tsx +304 -304
- package/.next/standalone/src/components/cortex/cortex-indicator.tsx +44 -44
- package/.next/standalone/src/components/cortex/cortex-panel.tsx +140 -140
- package/.next/standalone/src/components/cortex/cortex-settings.tsx +280 -280
- package/.next/standalone/src/components/cortex/curation-tab.tsx +810 -810
- package/.next/standalone/src/components/cortex/entity-detail.tsx +101 -101
- package/.next/standalone/src/components/cortex/entity-graph.tsx +382 -382
- package/.next/standalone/src/components/cortex/import-dialog.tsx +212 -212
- package/.next/standalone/src/components/cortex/injection-badge.tsx +72 -72
- package/.next/standalone/src/components/cortex/knowledge-card.tsx +109 -109
- package/.next/standalone/src/components/cortex/knowledge-tab.tsx +158 -158
- package/.next/standalone/src/components/cortex/lobe-settings.tsx +215 -215
- package/.next/standalone/src/components/cortex/marketplace-card.tsx +126 -126
- package/.next/standalone/src/components/cortex/marketplace-tab.tsx +113 -113
- package/.next/standalone/src/components/dashboard/activity-chart.tsx +41 -41
- package/.next/standalone/src/components/dashboard/model-usage-chart.tsx +61 -61
- package/.next/standalone/src/components/dashboard/recent-sessions.tsx +68 -68
- package/.next/standalone/src/components/dashboard/stats-cards.tsx +36 -36
- package/.next/standalone/src/components/files/file-explorer.tsx +703 -703
- package/.next/standalone/src/components/layout/providers.tsx +38 -38
- package/.next/standalone/src/components/layout/sidebar.tsx +170 -170
- package/.next/standalone/src/components/layout/tier-provider.tsx +53 -53
- package/.next/standalone/src/components/layout/update-banner.tsx +92 -92
- package/.next/standalone/src/components/mobile/bottom-nav.tsx +46 -46
- package/.next/standalone/src/components/mobile/immersive-voice-button.tsx +123 -123
- package/.next/standalone/src/components/mobile/mobile-chat-input.tsx +244 -244
- package/.next/standalone/src/components/mobile/mobile-header.tsx +44 -44
- package/.next/standalone/src/components/mobile/mobile-session-card.tsx +56 -56
- package/.next/standalone/src/components/mobile/mobile-terminal-input.tsx +74 -74
- package/.next/standalone/src/components/mobile/mobile-terminal-pane.tsx +302 -302
- package/.next/standalone/src/components/mobile/mobile-terminal-toolbar.tsx +76 -76
- package/.next/standalone/src/components/mobile/pull-to-refresh.tsx +82 -82
- package/.next/standalone/src/components/mobile/voice-input.tsx +53 -53
- package/.next/standalone/src/components/network/api-key-list.tsx +190 -190
- package/.next/standalone/src/components/network/connection-requests.tsx +94 -94
- package/.next/standalone/src/components/network/node-add-dialog.tsx +131 -131
- package/.next/standalone/src/components/network/node-badge.tsx +26 -26
- package/.next/standalone/src/components/network/node-list.tsx +207 -207
- package/.next/standalone/src/components/network/node-selector.tsx +49 -49
- package/.next/standalone/src/components/sessions/session-filters.tsx +116 -116
- package/.next/standalone/src/components/sessions/session-list.tsx +485 -485
- package/.next/standalone/src/components/terminal/pane-diff-panel.tsx +179 -179
- package/.next/standalone/src/components/terminal/terminal-pane.tsx +1530 -1464
- package/.next/standalone/src/components/viewer/chat-input.tsx +275 -275
- package/.next/standalone/src/components/viewer/message-renderer.tsx +551 -551
- package/.next/standalone/src/components/wizard/chart-wizard.tsx +405 -0
- package/.next/standalone/src/components/wizard/project-wizard.tsx +153 -153
- package/.next/standalone/src/components/wizard/wizard-chat.tsx +99 -99
- package/.next/standalone/src/components/wizard/wizard-plan-summary.tsx +103 -103
- package/.next/standalone/src/components/wizard/wizard-review.tsx +225 -225
- package/.next/standalone/src/components/workspace/universe-cluster.tsx +131 -131
- package/.next/standalone/src/components/workspace/universe-orb.tsx +128 -128
- package/.next/standalone/src/components/workspace/universe-types.ts +22 -22
- package/.next/standalone/src/components/workspace/universe-utils.ts +11 -11
- package/.next/standalone/src/components/workspace/universe-view.tsx +397 -397
- package/.next/standalone/src/components/workspace/workspace-chooser.tsx +634 -634
- package/.next/standalone/src/hooks/use-benchmark.ts +72 -71
- package/.next/standalone/src/hooks/use-bus.ts +147 -147
- package/.next/standalone/src/hooks/use-idle-detection.ts +79 -79
- package/.next/standalone/src/hooks/use-network.ts +229 -229
- package/.next/standalone/src/hooks/use-sessions.ts +437 -437
- package/.next/standalone/src/hooks/use-speech-recognition.ts +114 -113
- package/.next/standalone/src/hooks/use-sse.ts +35 -35
- package/.next/standalone/src/hooks/use-tier.ts +39 -39
- package/.next/standalone/src/lib/agents.ts +97 -97
- package/.next/standalone/src/lib/aider/parser.ts +111 -111
- package/.next/standalone/src/lib/api.ts +19 -19
- package/.next/standalone/src/lib/auth.ts +47 -47
- package/.next/standalone/src/lib/claude/parser.ts +212 -212
- package/.next/standalone/src/lib/claude/stats.ts +204 -204
- package/.next/standalone/src/lib/codex/parser.test.ts +111 -111
- package/.next/standalone/src/lib/codex/parser.ts +287 -287
- package/.next/standalone/src/lib/config.ts +132 -132
- package/.next/standalone/src/lib/cortex/benchmark.ts +83 -67
- package/.next/standalone/src/lib/cortex/config.ts +42 -42
- package/.next/standalone/src/lib/cortex/debug.ts +10 -10
- package/.next/standalone/src/lib/cortex/distillation/usage-store.ts +18 -18
- package/.next/standalone/src/lib/cortex/graph/resolver.ts +10 -10
- package/.next/standalone/src/lib/cortex/graph/types.ts +22 -22
- package/.next/standalone/src/lib/cortex/index.ts +109 -56
- package/.next/standalone/src/lib/cortex/ingestion/bootstrap.ts +14 -14
- package/.next/standalone/src/lib/cortex/knowledge/compat.ts +14 -14
- package/.next/standalone/src/lib/cortex/knowledge/contradiction.ts +10 -10
- package/.next/standalone/src/lib/cortex/knowledge/types.ts +67 -67
- package/.next/standalone/src/lib/cortex/lobes/config.ts +16 -16
- package/.next/standalone/src/lib/cortex/lobes/resolver.ts +8 -8
- package/.next/standalone/src/lib/cortex/lobes/shares.ts +14 -14
- package/.next/standalone/src/lib/cortex/mcp/server.ts +12 -12
- package/.next/standalone/src/lib/cortex/portability/exporter.ts +6 -6
- package/.next/standalone/src/lib/cortex/portability/importer.ts +10 -10
- package/.next/standalone/src/lib/cortex/retrieval/context-engine.ts +10 -10
- package/.next/standalone/src/lib/cortex/types.ts +39 -39
- package/.next/standalone/src/lib/cost-calculator.ts +48 -48
- package/.next/standalone/src/lib/db/init.ts +71 -71
- package/.next/standalone/src/lib/db/queries.ts +740 -827
- package/.next/standalone/src/lib/db/schema.ts +206 -206
- package/.next/standalone/src/lib/events/sse.ts +36 -36
- package/.next/standalone/src/lib/forge/parser.ts +52 -52
- package/.next/standalone/src/lib/gemini/parser.ts +258 -258
- package/.next/standalone/src/lib/license.ts +56 -56
- package/.next/standalone/src/lib/pro.ts +31 -31
- package/.next/standalone/src/lib/shell-user.ts +101 -0
- package/.next/standalone/src/lib/sync/indexer.ts +504 -504
- package/.next/standalone/src/lib/sync/watcher.ts +64 -64
- package/.next/standalone/src/lib/teams.ts +31 -31
- package/.next/standalone/src/lib/telemetry.ts +75 -75
- package/.next/standalone/src/lib/terminal/server.ts +188 -188
- package/.next/standalone/src/lib/tier.ts +38 -38
- package/.next/standalone/src/lib/utils.ts +72 -72
- package/.next/standalone/src/lib/vms/manager.ts +121 -121
- package/.next/standalone/src/middleware.ts +133 -133
- package/.next/standalone/src/types/claude.ts +208 -208
- package/.next/standalone/src/types/network.ts +61 -61
- package/.next/standalone/tests/setup.ts +8 -8
- package/.next/standalone/tsconfig.json +34 -34
- package/.next/standalone/vitest.config.ts +24 -24
- package/LICENSE +661 -661
- package/README.md +131 -131
- package/bin/cortex-hook.js +79 -79
- package/bin/cortex-hook.sh +62 -62
- package/bin/cortex-learn-hook.js +138 -138
- package/bin/cortex-mcp.js +60 -60
- package/bin/cortex-pi-extension.ts +170 -170
- package/bin/fix-standalone-externals.js +79 -79
- package/bin/lib/auto-setup.js +110 -110
- package/bin/mdns-service.js +171 -171
- package/bin/postinstall.js +35 -35
- package/bin/setup-admin.js +195 -195
- package/bin/spaces-dev.js +247 -247
- package/bin/spaces-install.js +660 -660
- package/bin/spaces-postinstall.js +50 -50
- package/bin/spaces-reset-totp.js +50 -50
- package/bin/spaces-service.js +1046 -1046
- package/bin/spaces-setup.js +253 -253
- package/bin/spaces.js +808 -805
- package/bin/ssh-auth-keys.sh +68 -68
- package/bin/terminal-server.js +2819 -2781
- package/package.json +111 -111
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0903a426._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09e8ccc9._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11c684b1._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1572d4ef._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__186cd0bb._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__212760e6._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__228595ec._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__283c890f._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2f300a68._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2f452778._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__35f8e77e._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__379fc2e9._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3b40d79f._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3d3dca2b._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4d5b78d2._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__54163e52._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__563c0817._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5812f90a._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5c5e87f5._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__60d15b16._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__69d315e5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__71f29038._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__74084e07._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7921aa80._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7e077dd8._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7ebc4280._.js +0 -131
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__857c60bb._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__874fe565._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8e2171f7._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__95659b2d._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9679b91e._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a90729a1._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad4346fa._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b0862d69._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b43306ee._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b689ff5e._.js +0 -106
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba87daaa._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c0461005._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c1deb5f3._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c8a62f42._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cabaac2b._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cb027619._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cf608218._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cfc1290d._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d0109b9b._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d0125483._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d048ee6b._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d12644e7._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e3cc946c._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e6fd27f8._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__efb8251e._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f44c6882._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f85283de._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__feceb3e4._.js +0 -98
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__843070a6._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_e84a0c06._.js +0 -3
- package/.next/standalone/.next/static/chunks/470cade58d4eceeb.css +0 -3
- package/.next/standalone/.next/static/chunks/9d4164833c2c1fd6.js +0 -85
- package/.next/standalone/.next/static/chunks/f091f4bf8d80fd07.js +0 -1
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +0 -46
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +0 -221
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +0 -1
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +0 -42
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
- package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
- /package/.next/standalone/.next/static/{5S4TviTCiNiTjf6KjXjBo → u1pHON3drz1mBi7owkbBP}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{5S4TviTCiNiTjf6KjXjBo → u1pHON3drz1mBi7owkbBP}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{5S4TviTCiNiTjf6KjXjBo → u1pHON3drz1mBi7owkbBP}/_ssgManifest.js +0 -0
- /package/.next/standalone/node_modules/@img/{sharp-libvips-linux-x64 → sharp-win32-x64}/versions.json +0 -0
|
@@ -1,564 +1,564 @@
|
|
|
1
|
-
# Spaces Installation Guide
|
|
2
|
-
|
|
3
|
-
## Tier Overview
|
|
4
|
-
|
|
5
|
-
| Tier | Packages | Features |
|
|
6
|
-
|------|----------|----------|
|
|
7
|
-
| `community` | `@jlongo78/agent-spaces` | Single user, no auth, local terminals |
|
|
8
|
-
| `team` | + `@spaces/teams` | Auth, multi-user, admin panel, collaboration (message bus, hooks, MCP tools, ActivityPanel) |
|
|
9
|
-
| `federation` | + `@spaces/pro` | All team features + mDNS network discovery, remote nodes |
|
|
10
|
-
|
|
11
|
-
Each tier builds on the previous. Federation requires both `@spaces/teams` and `@spaces/pro`.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Prerequisites
|
|
16
|
-
|
|
17
|
-
- Node.js 20+ and npm
|
|
18
|
-
- Git (to clone private repos)
|
|
19
|
-
- GitHub access to `jlongo78` repos (for teams and pro packages)
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Uninstall (clean slate)
|
|
24
|
-
|
|
25
|
-
If Spaces is already installed and you want to start fresh:
|
|
26
|
-
|
|
27
|
-
**1. Stop the server** — press `Ctrl+C` in the terminal where Spaces is running. If you can't find it:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# Linux/macOS
|
|
31
|
-
lsof -t -i:3457 | xargs kill
|
|
32
|
-
|
|
33
|
-
# Windows
|
|
34
|
-
netstat -ano | findstr :3457
|
|
35
|
-
taskkill /F /PID <pid>
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
**2. Uninstall packages:**
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npm uninstall -g @jlongo78/agent-spaces @spaces/teams @spaces/pro
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Windows: if you get `EBUSY`, make sure the server is fully stopped first. Kill all `node.exe` processes if needed.
|
|
45
|
-
|
|
46
|
-
**3. Remove config and data:**
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# Linux/macOS
|
|
50
|
-
rm -rf ~/.spaces/
|
|
51
|
-
|
|
52
|
-
# Windows
|
|
53
|
-
rmdir /S /Q "%USERPROFILE%\.spaces"
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**4. Verify clean:**
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
which spaces # Should return nothing
|
|
60
|
-
npm ls -g --depth=0 # Should not list any spaces packages
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 1. Community Edition
|
|
66
|
-
|
|
67
|
-
### Install
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
npm install -g @jlongo78/agent-spaces
|
|
71
|
-
spaces
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Opens `http://localhost:3457`. No login, no setup required.
|
|
75
|
-
|
|
76
|
-
### Verify
|
|
77
|
-
|
|
78
|
-
- Terminal page loads, you can create panes and workspaces
|
|
79
|
-
- No "Collab" button in workspace header
|
|
80
|
-
- No login screen
|
|
81
|
-
- Tier check:
|
|
82
|
-
```bash
|
|
83
|
-
curl -s http://localhost:3457/api/tier/
|
|
84
|
-
# {"tier":"community","hasAuth":false,"hasCollaboration":false,"hasNetwork":false,...}
|
|
85
|
-
```
|
|
86
|
-
- Collaboration APIs are stubbed:
|
|
87
|
-
```bash
|
|
88
|
-
curl -s http://localhost:3457/api/workspaces/1/messages/
|
|
89
|
-
# {"error":"Requires @spaces/teams"}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## 2. Team Edition
|
|
95
|
-
|
|
96
|
-
Stop the running server (`Ctrl+C`) before installing.
|
|
97
|
-
|
|
98
|
-
### Install @spaces/teams
|
|
99
|
-
|
|
100
|
-
`@spaces/teams` is a private package — it's not on the public npm registry. Install from GitHub:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
npm install -g github:jlongo78/spaces-teams
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
This is plain JavaScript — no build step needed.
|
|
107
|
-
|
|
108
|
-
### Verify package is discoverable
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
node -e "console.log(require.resolve('@spaces/teams'))"
|
|
112
|
-
# Should print the path to @spaces/teams/index.js
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Start
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
spaces
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
On first run, auto-setup creates:
|
|
122
|
-
- `~/.spaces/session_secret` — session signing key
|
|
123
|
-
- `~/.spaces/admin.db` — user database with admin credentials
|
|
124
|
-
- Prints the generated username and password — **save these**
|
|
125
|
-
|
|
126
|
-
### Verify
|
|
127
|
-
|
|
128
|
-
1. **Tier:**
|
|
129
|
-
```bash
|
|
130
|
-
curl -s http://localhost:3457/api/tier/
|
|
131
|
-
# {"tier":"team","hasAuth":true,"hasCollaboration":true,"hasNetwork":false,...}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
2. **Login screen appears** — use the credentials from setup
|
|
135
|
-
|
|
136
|
-
3. **Collab button visible** in workspace header
|
|
137
|
-
|
|
138
|
-
4. **Messages API works** (requires auth cookie — test in browser devtools or with session cookie):
|
|
139
|
-
```bash
|
|
140
|
-
curl -s http://localhost:3457/api/workspaces/1/messages/
|
|
141
|
-
# Returns array (not "Requires @spaces/teams" error)
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
5. **ActivityPanel** renders when collaboration is enabled on a workspace
|
|
145
|
-
|
|
146
|
-
6. **Database tables created:**
|
|
147
|
-
```bash
|
|
148
|
-
sqlite3 ~/.spaces/spaces.db ".tables"
|
|
149
|
-
# Should include workspace_messages and workspace_context
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## 3. Federation Edition
|
|
155
|
-
|
|
156
|
-
Stop the running server (`Ctrl+C`) before installing.
|
|
157
|
-
|
|
158
|
-
### Install @spaces/pro
|
|
159
|
-
|
|
160
|
-
`@spaces/pro` is also private. Install from GitHub:
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
npm install -g github:jlongo78/spaces-pro
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
Note: `@spaces/pro` is TypeScript and ships pre-built. If installing from source instead, you must `npm run build` first.
|
|
167
|
-
|
|
168
|
-
### Verify both packages
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
node -e "console.log(require.resolve('@spaces/teams'))"
|
|
172
|
-
node -e "console.log(require.resolve('@spaces/pro'))"
|
|
173
|
-
# Both should print paths
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### Start
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
spaces
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### Verify
|
|
183
|
-
|
|
184
|
-
1. **Tier:**
|
|
185
|
-
```bash
|
|
186
|
-
curl -s http://localhost:3457/api/tier/
|
|
187
|
-
# {"tier":"federation","hasAuth":true,"hasCollaboration":true,"hasNetwork":true,...}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
2. **All team features still work**
|
|
191
|
-
|
|
192
|
-
3. **mDNS discovery** — server log shows `[mDNS] Advertising as "..." on port 3458`
|
|
193
|
-
|
|
194
|
-
4. **Network features** — remote nodes appear in sidebar/settings when other federation instances are on the network
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Reverse Proxy Setup
|
|
199
|
-
|
|
200
|
-
When serving behind a reverse proxy (e.g., Traefik, nginx) at a subpath like `/spaces/`:
|
|
201
|
-
|
|
202
|
-
### Configure base path
|
|
203
|
-
|
|
204
|
-
```bash
|
|
205
|
-
spaces --base-path /spaces
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
Or set in `~/.spaces/server.json`:
|
|
209
|
-
```json
|
|
210
|
-
{"basePath": "/spaces", "port": 3457}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### Configure allowed origins
|
|
214
|
-
|
|
215
|
-
For non-community tiers, WebSocket connections from external origins are blocked by default. You must whitelist your domain:
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
SPACES_ALLOWED_ORIGINS=yourdomain.com spaces
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
Multiple origins:
|
|
222
|
-
```bash
|
|
223
|
-
SPACES_ALLOWED_ORIGINS=yourdomain.com,other.example.com spaces
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
**Without this, terminals will not connect** when accessed through the reverse proxy. Localhost connections always work.
|
|
227
|
-
|
|
228
|
-
### Traefik example
|
|
229
|
-
|
|
230
|
-
```yaml
|
|
231
|
-
http:
|
|
232
|
-
routers:
|
|
233
|
-
spaces:
|
|
234
|
-
rule: "PathPrefix(`/spaces`)"
|
|
235
|
-
service: spaces
|
|
236
|
-
entryPoints: [websecure]
|
|
237
|
-
tls: {}
|
|
238
|
-
|
|
239
|
-
services:
|
|
240
|
-
spaces:
|
|
241
|
-
loadBalancer:
|
|
242
|
-
servers:
|
|
243
|
-
- url: "http://localhost:3457"
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
No path stripping needed — Spaces handles the base path internally.
|
|
247
|
-
|
|
248
|
-
---
|
|
249
|
-
|
|
250
|
-
## Tier Detection Logic
|
|
251
|
-
|
|
252
|
-
The launcher resolves the tier at startup:
|
|
253
|
-
|
|
254
|
-
1. `--tier` CLI flag (highest priority)
|
|
255
|
-
2. `SPACES_TIER` environment variable
|
|
256
|
-
3. `~/.spaces/server.json` → `tier` field
|
|
257
|
-
4. **Auto-detect** (lowest priority):
|
|
258
|
-
- `@spaces/pro` found → `federation`
|
|
259
|
-
- `@spaces/teams` found (no pro) → `team`
|
|
260
|
-
- Neither found → `community`
|
|
261
|
-
|
|
262
|
-
One build, any tier — features activate at runtime based on which packages are installed.
|
|
263
|
-
|
|
264
|
-
---
|
|
265
|
-
|
|
266
|
-
## Configuration
|
|
267
|
-
|
|
268
|
-
All config lives under `~/.spaces/`:
|
|
269
|
-
|
|
270
|
-
| File | Purpose | Created by |
|
|
271
|
-
|------|---------|------------|
|
|
272
|
-
| `server.json` | tier, port, basePath | `spaces --setup` or auto-setup |
|
|
273
|
-
| `session_secret` | HMAC secret for session tokens | auto-setup (first non-community run) |
|
|
274
|
-
| `admin.db` | User database (SQLite) | auto-setup |
|
|
275
|
-
| `spaces.db` | Application data (per-user workspaces, panes) | first request |
|
|
276
|
-
| `service_key` / `service_key.pub` | SSH keypair for system service multi-user terminals | system service first start |
|
|
277
|
-
| `known_hosts` | SSH known hosts for localhost connections | first SSH terminal spawn |
|
|
278
|
-
| `service-level` | Tracks whether service is user or system level | `spaces service install` |
|
|
279
|
-
| `spaces-service.cmd` | Windows service wrapper script | `spaces service install` (Windows) |
|
|
280
|
-
| `logs/spaces.out.log` | Service stdout/stderr log | service start (macOS/Windows) |
|
|
281
|
-
|
|
282
|
-
### Reset auth but keep data
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
rm ~/.spaces/server.json ~/.spaces/session_secret ~/.spaces/admin.db
|
|
286
|
-
spaces # Re-runs auto-setup, generates new credentials
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
## CLI Reference
|
|
292
|
-
|
|
293
|
-
```
|
|
294
|
-
spaces Start the server (auto-detects tier)
|
|
295
|
-
spaces --setup Interactive first-time setup wizard
|
|
296
|
-
spaces --port 3457 Override port
|
|
297
|
-
spaces --tier team Override tier (community|team|federation)
|
|
298
|
-
spaces --base-path /spaces Set base path for reverse proxy
|
|
299
|
-
spaces --help Show help
|
|
300
|
-
spaces service <action> Manage OS service (install|uninstall|start|stop|status|logs)
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
## Environment Variables
|
|
304
|
-
|
|
305
|
-
| Variable | Description | Default |
|
|
306
|
-
|----------|-------------|---------|
|
|
307
|
-
| `SPACES_TIER` | Override tier detection | auto-detect |
|
|
308
|
-
| `SPACES_PORT` | Server port | `3457` |
|
|
309
|
-
| `SPACES_BASE_PATH` | Base path for subpath deployments | (none) |
|
|
310
|
-
| `SPACES_SESSION_SECRET` | Session signing secret | from `~/.spaces/session_secret` |
|
|
311
|
-
| `SPACES_ALLOWED_ORIGINS` | Comma-separated hostnames for WebSocket origin check | localhost only |
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## Running as a Service
|
|
316
|
-
|
|
317
|
-
Install Spaces as a persistent OS service that starts automatically:
|
|
318
|
-
|
|
319
|
-
```bash
|
|
320
|
-
spaces service install
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
You'll be prompted to choose system-level (starts on boot) or user-level (starts on login).
|
|
324
|
-
|
|
325
|
-
The installer captures your current config from `~/.spaces/server.json` and bakes it into the service definition. If you change config later, re-run `spaces service install` to update.
|
|
326
|
-
|
|
327
|
-
### Service commands
|
|
328
|
-
|
|
329
|
-
| Command | Description |
|
|
330
|
-
|---------|-------------|
|
|
331
|
-
| `spaces service install` | Install and start the service |
|
|
332
|
-
| `spaces service uninstall` | Stop and remove the service |
|
|
333
|
-
| `spaces service start` | Start the service |
|
|
334
|
-
| `spaces service stop` | Stop the service |
|
|
335
|
-
| `spaces service status` | Show service status |
|
|
336
|
-
| `spaces service logs` | Tail service logs |
|
|
337
|
-
|
|
338
|
-
### System vs. User service
|
|
339
|
-
|
|
340
|
-
| Level | When it runs | Process identity | Best for |
|
|
341
|
-
|-------|-------------|-----------------|----------|
|
|
342
|
-
| **User** | On login | Your user account | Personal machines, single user |
|
|
343
|
-
| **System** | On boot | SYSTEM (Windows) / root (Linux) | Shared machines, always-on servers |
|
|
344
|
-
|
|
345
|
-
**User-level** is simpler — processes run as you, no permission issues.
|
|
346
|
-
|
|
347
|
-
**System-level** runs as a different OS account. On Windows this means the SYSTEM account, which requires special handling for file access, home directories, and terminal spawning (see below).
|
|
348
|
-
|
|
349
|
-
### Platform details
|
|
350
|
-
|
|
351
|
-
| Platform | User-level location | System-level location |
|
|
352
|
-
|----------|--------------------|-----------------------|
|
|
353
|
-
| Linux | `~/.config/systemd/user/spaces.service` | `/etc/systemd/system/spaces.service` (sudo) |
|
|
354
|
-
| macOS | `~/Library/LaunchAgents/com.agentspaces.spaces.plist` | `/Library/LaunchDaemons/com.agentspaces.spaces.plist` (sudo) |
|
|
355
|
-
| Windows | Scheduled Task (ONLOGON) | Scheduled Task (ONSTART, SYSTEM) |
|
|
356
|
-
|
|
357
|
-
### Logs
|
|
358
|
-
|
|
359
|
-
- **Linux:** `spaces service logs` uses journalctl (integrated with systemd)
|
|
360
|
-
- **macOS / Windows:** Log files at `~/.spaces/logs/spaces.out.log`, view with `spaces service logs`
|
|
361
|
-
|
|
362
|
-
---
|
|
363
|
-
|
|
364
|
-
## Windows System Service (Detailed)
|
|
365
|
-
|
|
366
|
-
Running Spaces as a Windows system service has additional complexity because the service runs under the `NT AUTHORITY\SYSTEM` account, which has no user profile, no home directory, and can't directly interact with user sessions.
|
|
367
|
-
|
|
368
|
-
### Prerequisites
|
|
369
|
-
|
|
370
|
-
- **Administrator access** — service install/uninstall/start/stop require an elevated terminal
|
|
371
|
-
- **Node.js 20+** installed and on PATH
|
|
372
|
-
- **OpenSSH Server** — installed automatically during system service setup, or manually:
|
|
373
|
-
```powershell
|
|
374
|
-
# In an elevated PowerShell:
|
|
375
|
-
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
|
|
376
|
-
Start-Service sshd
|
|
377
|
-
Set-Service -Name sshd -StartupType Automatic
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
### Install
|
|
381
|
-
|
|
382
|
-
From an **Administrator** terminal:
|
|
383
|
-
|
|
384
|
-
```bash
|
|
385
|
-
spaces service install
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
Choose **1** for system service. The installer will:
|
|
389
|
-
|
|
390
|
-
1. **Detect target user** — scans `C:\Users\*` for profiles with Claude Code data (`.claude/` directory). If multiple users are found, you'll be asked which one to target.
|
|
391
|
-
2. **Create wrapper script** — `~/.spaces/spaces-service.cmd` with environment overrides:
|
|
392
|
-
- `USERPROFILE`, `HOMEDRIVE`, `HOMEPATH` — set to the target user's home so `os.homedir()` resolves correctly under SYSTEM
|
|
393
|
-
- `SPACES_SERVICE=1` — prevents browser auto-open and enables service mode behaviors
|
|
394
|
-
3. **Create scheduled task** — `Spaces` task under Task Scheduler, runs as SYSTEM on boot
|
|
395
|
-
4. **Ensure OpenSSH Server** — installs and starts sshd if not present
|
|
396
|
-
5. **Start the service** — launches the task immediately
|
|
397
|
-
|
|
398
|
-
On first start, the SYSTEM process will:
|
|
399
|
-
- Run auto-setup if needed (creates admin DB with the target user's username as shell_user)
|
|
400
|
-
- Generate an SSH service key owned by SYSTEM at `~/.spaces/service_key`
|
|
401
|
-
- Authorize the key in `C:\ProgramData\ssh\administrators_authorized_keys` (for admin users) and in each user's `~/.ssh/authorized_keys` (for non-admin users)
|
|
402
|
-
|
|
403
|
-
### How terminals work under SYSTEM
|
|
404
|
-
|
|
405
|
-
Since the service runs as SYSTEM but terminals need to run as the actual user:
|
|
406
|
-
|
|
407
|
-
1. **Auth resolution** — When a terminal request arrives, the service maps SYSTEM → the first admin DB user
|
|
408
|
-
2. **Shell user lookup** — The app username is mapped to an OS shell user via the admin database
|
|
409
|
-
3. **SSH to localhost** — The service spawns `ssh -4 -i ~/.spaces/service_key <user>@localhost` to get a shell as the correct user
|
|
410
|
-
4. **Directory change** — After SSH connects, the service sends `cd /d "C:\path\to\project"` to navigate to the workspace directory
|
|
411
|
-
|
|
412
|
-
This requires OpenSSH Server running and the service key authorized for the target user.
|
|
413
|
-
|
|
414
|
-
### Upgrading tiers with a system service
|
|
415
|
-
|
|
416
|
-
If you install `@spaces/pro` or `@spaces/teams` after the service is already running:
|
|
417
|
-
|
|
418
|
-
```bash
|
|
419
|
-
spaces service stop
|
|
420
|
-
spaces install pro # or: npm install -g @spaces/pro
|
|
421
|
-
spaces service start
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
The tier is auto-detected from installed packages at startup — no service reinstall needed.
|
|
425
|
-
|
|
426
|
-
### Task Scheduler notes
|
|
427
|
-
|
|
428
|
-
- The scheduled task is named **Spaces** and runs under `NT AUTHORITY\SYSTEM`
|
|
429
|
-
- **Battery mode** — Task Scheduler may stop the task on battery power. To prevent this:
|
|
430
|
-
```powershell
|
|
431
|
-
# In elevated PowerShell:
|
|
432
|
-
$task = Get-ScheduledTask -TaskName "Spaces"
|
|
433
|
-
$task.Settings.DisallowStartIfOnBatteries = $false
|
|
434
|
-
$task.Settings.StopIfGoingOnBatteries = $false
|
|
435
|
-
Set-ScheduledTask $task
|
|
436
|
-
```
|
|
437
|
-
- The wrapper script redirects all output to `~/.spaces/logs/spaces.out.log`
|
|
438
|
-
|
|
439
|
-
### Verifying the system service
|
|
440
|
-
|
|
441
|
-
```bash
|
|
442
|
-
# Check service status
|
|
443
|
-
spaces service status
|
|
444
|
-
|
|
445
|
-
# Check logs
|
|
446
|
-
spaces service logs
|
|
447
|
-
|
|
448
|
-
# Verify SSH key setup
|
|
449
|
-
dir "%USERPROFILE%\.spaces\service_key"
|
|
450
|
-
dir "%USERPROFILE%\.spaces\service_key.pub"
|
|
451
|
-
|
|
452
|
-
# Test SSH (from the target user's terminal)
|
|
453
|
-
ssh -i "%USERPROFILE%\.spaces\service_key" -o BatchMode=yes localhost "echo works"
|
|
454
|
-
|
|
455
|
-
# Check what's listening
|
|
456
|
-
netstat -ano | findstr :3457
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
---
|
|
460
|
-
|
|
461
|
-
## Troubleshooting
|
|
462
|
-
|
|
463
|
-
### Terminals don't connect (WebSocket fails silently)
|
|
464
|
-
|
|
465
|
-
Most common cause: **missing `SPACES_ALLOWED_ORIGINS`**. When running behind a reverse proxy on a non-community tier, the server rejects WebSocket upgrades from non-localhost origins. Set:
|
|
466
|
-
|
|
467
|
-
```bash
|
|
468
|
-
SPACES_ALLOWED_ORIGINS=yourdomain.com spaces
|
|
469
|
-
```
|
|
470
|
-
|
|
471
|
-
### Tier shows "community" despite packages installed
|
|
472
|
-
|
|
473
|
-
The launcher detects packages at startup. If you installed packages while the server was running, **restart the server**.
|
|
474
|
-
|
|
475
|
-
Verify packages are globally resolvable:
|
|
476
|
-
```bash
|
|
477
|
-
node -e "console.log(require.resolve('@spaces/teams'))"
|
|
478
|
-
node -e "console.log(require.resolve('@spaces/pro'))"
|
|
479
|
-
```
|
|
480
|
-
|
|
481
|
-
If these fail:
|
|
482
|
-
- Check `npm prefix -g` points to the right place
|
|
483
|
-
- nvm users: make sure you're using the same Node version you installed with
|
|
484
|
-
|
|
485
|
-
### Windows: EBUSY on uninstall
|
|
486
|
-
|
|
487
|
-
Something is holding a lock on the files — usually a running Spaces server. Stop it first:
|
|
488
|
-
```cmd
|
|
489
|
-
taskkill /F /IM node.exe
|
|
490
|
-
npm uninstall -g @jlongo78/agent-spaces @spaces/teams @spaces/pro
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
### npm install from GitHub fails with native module errors
|
|
494
|
-
|
|
495
|
-
`@jlongo78/agent-spaces` (the main package) has native dependencies (better-sqlite3, node-pty) that need to be compiled. Install from npm (not GitHub) for the pre-built version:
|
|
496
|
-
```bash
|
|
497
|
-
npm install -g @jlongo78/agent-spaces # pre-built, works everywhere
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
The add-on packages (`@spaces/teams`, `@spaces/pro`) are pure JS/pre-built and install from GitHub fine.
|
|
501
|
-
|
|
502
|
-
### Windows: Service freezes or can't connect
|
|
503
|
-
|
|
504
|
-
The server process is blocked. Common causes:
|
|
505
|
-
- **Browser auto-open in Session 0** — should not happen with `SPACES_SERVICE=1` but verify the wrapper script contains `set SPACES_SERVICE=1`
|
|
506
|
-
- **Port conflict** — check if another process is on port 3457: `netstat -ano | findstr :3457`
|
|
507
|
-
- **Battery mode** — Task Scheduler stops tasks on battery by default (see Task Scheduler notes above)
|
|
508
|
-
|
|
509
|
-
### Windows: Terminals show SYSTEM prompt or "claude not found"
|
|
510
|
-
|
|
511
|
-
The SSH setup didn't complete. Check:
|
|
512
|
-
|
|
513
|
-
1. **OpenSSH Server running:** `Get-Service sshd` should show Running
|
|
514
|
-
2. **Service key exists:** `dir %USERPROFILE%\.spaces\service_key`
|
|
515
|
-
3. **Key is authorized:**
|
|
516
|
-
```powershell
|
|
517
|
-
# For admin users:
|
|
518
|
-
type C:\ProgramData\ssh\administrators_authorized_keys
|
|
519
|
-
# Should contain the public key from service_key.pub
|
|
520
|
-
```
|
|
521
|
-
4. **Key permissions:** The private key must only be readable by SYSTEM and the file owner. If you see "UNPROTECTED PRIVATE KEY FILE" errors in the log, fix with:
|
|
522
|
-
```powershell
|
|
523
|
-
# In elevated PowerShell:
|
|
524
|
-
icacls "$env:USERPROFILE\.spaces\service_key" /inheritance:r /remove "BUILTIN\Administrators" /remove "BUILTIN\Users" /remove "Everyone" /grant:r "NT AUTHORITY\SYSTEM:(F)"
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
### Windows: SSH "Connection reset by ::1 port 22"
|
|
528
|
-
|
|
529
|
-
The SSH client is connecting via IPv6 but sshd may not accept it. The service uses `-4` to force IPv4. If you see this error, ensure you're running the latest version of `terminal-server.js`.
|
|
530
|
-
|
|
531
|
-
### Windows: "spaces service stop" doesn't actually stop the server
|
|
532
|
-
|
|
533
|
-
The stop command needs admin privileges to kill SYSTEM processes. Run from an elevated terminal:
|
|
534
|
-
```bash
|
|
535
|
-
spaces service stop
|
|
536
|
-
```
|
|
537
|
-
|
|
538
|
-
If that still doesn't work:
|
|
539
|
-
```powershell
|
|
540
|
-
# In elevated PowerShell:
|
|
541
|
-
schtasks /End /TN Spaces
|
|
542
|
-
taskkill /F /IM node.exe # Caution: kills ALL node processes
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
### Windows: Dashboard shows blank data / 0 projects
|
|
546
|
-
|
|
547
|
-
The SYSTEM account can't find the user's home directory. Verify the wrapper script at `~/.spaces/spaces-service.cmd` contains:
|
|
548
|
-
```
|
|
549
|
-
set USERPROFILE=C:\Users\YourUsername
|
|
550
|
-
set HOMEDRIVE=C:
|
|
551
|
-
set HOMEPATH=\Users\YourUsername
|
|
552
|
-
```
|
|
553
|
-
|
|
554
|
-
If not, reinstall the service: `spaces service uninstall && spaces service install`
|
|
555
|
-
|
|
556
|
-
### Agent panes don't get MCP server / hooks
|
|
557
|
-
|
|
558
|
-
- Ensure collaboration is enabled on the workspace (click "Collab" button)
|
|
559
|
-
- New agent panes auto-opt-in when workspace has collaboration on
|
|
560
|
-
- Check the pane's working directory for `.mcp.json` and `.claude/settings.local.json`
|
|
561
|
-
|
|
562
|
-
### "Requires @spaces/teams" on API calls
|
|
563
|
-
|
|
564
|
-
Expected on community tier. Install `@spaces/teams` and restart to enable collaboration APIs.
|
|
1
|
+
# Spaces Installation Guide
|
|
2
|
+
|
|
3
|
+
## Tier Overview
|
|
4
|
+
|
|
5
|
+
| Tier | Packages | Features |
|
|
6
|
+
|------|----------|----------|
|
|
7
|
+
| `community` | `@jlongo78/agent-spaces` | Single user, no auth, local terminals |
|
|
8
|
+
| `team` | + `@spaces/teams` | Auth, multi-user, admin panel, collaboration (message bus, hooks, MCP tools, ActivityPanel) |
|
|
9
|
+
| `federation` | + `@spaces/pro` | All team features + mDNS network discovery, remote nodes |
|
|
10
|
+
|
|
11
|
+
Each tier builds on the previous. Federation requires both `@spaces/teams` and `@spaces/pro`.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- Node.js 20+ and npm
|
|
18
|
+
- Git (to clone private repos)
|
|
19
|
+
- GitHub access to `jlongo78` repos (for teams and pro packages)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Uninstall (clean slate)
|
|
24
|
+
|
|
25
|
+
If Spaces is already installed and you want to start fresh:
|
|
26
|
+
|
|
27
|
+
**1. Stop the server** — press `Ctrl+C` in the terminal where Spaces is running. If you can't find it:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Linux/macOS
|
|
31
|
+
lsof -t -i:3457 | xargs kill
|
|
32
|
+
|
|
33
|
+
# Windows
|
|
34
|
+
netstat -ano | findstr :3457
|
|
35
|
+
taskkill /F /PID <pid>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**2. Uninstall packages:**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm uninstall -g @jlongo78/agent-spaces @spaces/teams @spaces/pro
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Windows: if you get `EBUSY`, make sure the server is fully stopped first. Kill all `node.exe` processes if needed.
|
|
45
|
+
|
|
46
|
+
**3. Remove config and data:**
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Linux/macOS
|
|
50
|
+
rm -rf ~/.spaces/
|
|
51
|
+
|
|
52
|
+
# Windows
|
|
53
|
+
rmdir /S /Q "%USERPROFILE%\.spaces"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**4. Verify clean:**
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
which spaces # Should return nothing
|
|
60
|
+
npm ls -g --depth=0 # Should not list any spaces packages
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 1. Community Edition
|
|
66
|
+
|
|
67
|
+
### Install
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm install -g @jlongo78/agent-spaces
|
|
71
|
+
spaces
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Opens `http://localhost:3457`. No login, no setup required.
|
|
75
|
+
|
|
76
|
+
### Verify
|
|
77
|
+
|
|
78
|
+
- Terminal page loads, you can create panes and workspaces
|
|
79
|
+
- No "Collab" button in workspace header
|
|
80
|
+
- No login screen
|
|
81
|
+
- Tier check:
|
|
82
|
+
```bash
|
|
83
|
+
curl -s http://localhost:3457/api/tier/
|
|
84
|
+
# {"tier":"community","hasAuth":false,"hasCollaboration":false,"hasNetwork":false,...}
|
|
85
|
+
```
|
|
86
|
+
- Collaboration APIs are stubbed:
|
|
87
|
+
```bash
|
|
88
|
+
curl -s http://localhost:3457/api/workspaces/1/messages/
|
|
89
|
+
# {"error":"Requires @spaces/teams"}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 2. Team Edition
|
|
95
|
+
|
|
96
|
+
Stop the running server (`Ctrl+C`) before installing.
|
|
97
|
+
|
|
98
|
+
### Install @spaces/teams
|
|
99
|
+
|
|
100
|
+
`@spaces/teams` is a private package — it's not on the public npm registry. Install from GitHub:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm install -g github:jlongo78/spaces-teams
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
This is plain JavaScript — no build step needed.
|
|
107
|
+
|
|
108
|
+
### Verify package is discoverable
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
node -e "console.log(require.resolve('@spaces/teams'))"
|
|
112
|
+
# Should print the path to @spaces/teams/index.js
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Start
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
spaces
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
On first run, auto-setup creates:
|
|
122
|
+
- `~/.spaces/session_secret` — session signing key
|
|
123
|
+
- `~/.spaces/admin.db` — user database with admin credentials
|
|
124
|
+
- Prints the generated username and password — **save these**
|
|
125
|
+
|
|
126
|
+
### Verify
|
|
127
|
+
|
|
128
|
+
1. **Tier:**
|
|
129
|
+
```bash
|
|
130
|
+
curl -s http://localhost:3457/api/tier/
|
|
131
|
+
# {"tier":"team","hasAuth":true,"hasCollaboration":true,"hasNetwork":false,...}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
2. **Login screen appears** — use the credentials from setup
|
|
135
|
+
|
|
136
|
+
3. **Collab button visible** in workspace header
|
|
137
|
+
|
|
138
|
+
4. **Messages API works** (requires auth cookie — test in browser devtools or with session cookie):
|
|
139
|
+
```bash
|
|
140
|
+
curl -s http://localhost:3457/api/workspaces/1/messages/
|
|
141
|
+
# Returns array (not "Requires @spaces/teams" error)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
5. **ActivityPanel** renders when collaboration is enabled on a workspace
|
|
145
|
+
|
|
146
|
+
6. **Database tables created:**
|
|
147
|
+
```bash
|
|
148
|
+
sqlite3 ~/.spaces/spaces.db ".tables"
|
|
149
|
+
# Should include workspace_messages and workspace_context
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 3. Federation Edition
|
|
155
|
+
|
|
156
|
+
Stop the running server (`Ctrl+C`) before installing.
|
|
157
|
+
|
|
158
|
+
### Install @spaces/pro
|
|
159
|
+
|
|
160
|
+
`@spaces/pro` is also private. Install from GitHub:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
npm install -g github:jlongo78/spaces-pro
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Note: `@spaces/pro` is TypeScript and ships pre-built. If installing from source instead, you must `npm run build` first.
|
|
167
|
+
|
|
168
|
+
### Verify both packages
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
node -e "console.log(require.resolve('@spaces/teams'))"
|
|
172
|
+
node -e "console.log(require.resolve('@spaces/pro'))"
|
|
173
|
+
# Both should print paths
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Start
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
spaces
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Verify
|
|
183
|
+
|
|
184
|
+
1. **Tier:**
|
|
185
|
+
```bash
|
|
186
|
+
curl -s http://localhost:3457/api/tier/
|
|
187
|
+
# {"tier":"federation","hasAuth":true,"hasCollaboration":true,"hasNetwork":true,...}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
2. **All team features still work**
|
|
191
|
+
|
|
192
|
+
3. **mDNS discovery** — server log shows `[mDNS] Advertising as "..." on port 3458`
|
|
193
|
+
|
|
194
|
+
4. **Network features** — remote nodes appear in sidebar/settings when other federation instances are on the network
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Reverse Proxy Setup
|
|
199
|
+
|
|
200
|
+
When serving behind a reverse proxy (e.g., Traefik, nginx) at a subpath like `/spaces/`:
|
|
201
|
+
|
|
202
|
+
### Configure base path
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
spaces --base-path /spaces
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Or set in `~/.spaces/server.json`:
|
|
209
|
+
```json
|
|
210
|
+
{"basePath": "/spaces", "port": 3457}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Configure allowed origins
|
|
214
|
+
|
|
215
|
+
For non-community tiers, WebSocket connections from external origins are blocked by default. You must whitelist your domain:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
SPACES_ALLOWED_ORIGINS=yourdomain.com spaces
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Multiple origins:
|
|
222
|
+
```bash
|
|
223
|
+
SPACES_ALLOWED_ORIGINS=yourdomain.com,other.example.com spaces
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Without this, terminals will not connect** when accessed through the reverse proxy. Localhost connections always work.
|
|
227
|
+
|
|
228
|
+
### Traefik example
|
|
229
|
+
|
|
230
|
+
```yaml
|
|
231
|
+
http:
|
|
232
|
+
routers:
|
|
233
|
+
spaces:
|
|
234
|
+
rule: "PathPrefix(`/spaces`)"
|
|
235
|
+
service: spaces
|
|
236
|
+
entryPoints: [websecure]
|
|
237
|
+
tls: {}
|
|
238
|
+
|
|
239
|
+
services:
|
|
240
|
+
spaces:
|
|
241
|
+
loadBalancer:
|
|
242
|
+
servers:
|
|
243
|
+
- url: "http://localhost:3457"
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
No path stripping needed — Spaces handles the base path internally.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Tier Detection Logic
|
|
251
|
+
|
|
252
|
+
The launcher resolves the tier at startup:
|
|
253
|
+
|
|
254
|
+
1. `--tier` CLI flag (highest priority)
|
|
255
|
+
2. `SPACES_TIER` environment variable
|
|
256
|
+
3. `~/.spaces/server.json` → `tier` field
|
|
257
|
+
4. **Auto-detect** (lowest priority):
|
|
258
|
+
- `@spaces/pro` found → `federation`
|
|
259
|
+
- `@spaces/teams` found (no pro) → `team`
|
|
260
|
+
- Neither found → `community`
|
|
261
|
+
|
|
262
|
+
One build, any tier — features activate at runtime based on which packages are installed.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Configuration
|
|
267
|
+
|
|
268
|
+
All config lives under `~/.spaces/`:
|
|
269
|
+
|
|
270
|
+
| File | Purpose | Created by |
|
|
271
|
+
|------|---------|------------|
|
|
272
|
+
| `server.json` | tier, port, basePath | `spaces --setup` or auto-setup |
|
|
273
|
+
| `session_secret` | HMAC secret for session tokens | auto-setup (first non-community run) |
|
|
274
|
+
| `admin.db` | User database (SQLite) | auto-setup |
|
|
275
|
+
| `spaces.db` | Application data (per-user workspaces, panes) | first request |
|
|
276
|
+
| `service_key` / `service_key.pub` | SSH keypair for system service multi-user terminals | system service first start |
|
|
277
|
+
| `known_hosts` | SSH known hosts for localhost connections | first SSH terminal spawn |
|
|
278
|
+
| `service-level` | Tracks whether service is user or system level | `spaces service install` |
|
|
279
|
+
| `spaces-service.cmd` | Windows service wrapper script | `spaces service install` (Windows) |
|
|
280
|
+
| `logs/spaces.out.log` | Service stdout/stderr log | service start (macOS/Windows) |
|
|
281
|
+
|
|
282
|
+
### Reset auth but keep data
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
rm ~/.spaces/server.json ~/.spaces/session_secret ~/.spaces/admin.db
|
|
286
|
+
spaces # Re-runs auto-setup, generates new credentials
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## CLI Reference
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
spaces Start the server (auto-detects tier)
|
|
295
|
+
spaces --setup Interactive first-time setup wizard
|
|
296
|
+
spaces --port 3457 Override port
|
|
297
|
+
spaces --tier team Override tier (community|team|federation)
|
|
298
|
+
spaces --base-path /spaces Set base path for reverse proxy
|
|
299
|
+
spaces --help Show help
|
|
300
|
+
spaces service <action> Manage OS service (install|uninstall|start|stop|status|logs)
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Environment Variables
|
|
304
|
+
|
|
305
|
+
| Variable | Description | Default |
|
|
306
|
+
|----------|-------------|---------|
|
|
307
|
+
| `SPACES_TIER` | Override tier detection | auto-detect |
|
|
308
|
+
| `SPACES_PORT` | Server port | `3457` |
|
|
309
|
+
| `SPACES_BASE_PATH` | Base path for subpath deployments | (none) |
|
|
310
|
+
| `SPACES_SESSION_SECRET` | Session signing secret | from `~/.spaces/session_secret` |
|
|
311
|
+
| `SPACES_ALLOWED_ORIGINS` | Comma-separated hostnames for WebSocket origin check | localhost only |
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Running as a Service
|
|
316
|
+
|
|
317
|
+
Install Spaces as a persistent OS service that starts automatically:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
spaces service install
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
You'll be prompted to choose system-level (starts on boot) or user-level (starts on login).
|
|
324
|
+
|
|
325
|
+
The installer captures your current config from `~/.spaces/server.json` and bakes it into the service definition. If you change config later, re-run `spaces service install` to update.
|
|
326
|
+
|
|
327
|
+
### Service commands
|
|
328
|
+
|
|
329
|
+
| Command | Description |
|
|
330
|
+
|---------|-------------|
|
|
331
|
+
| `spaces service install` | Install and start the service |
|
|
332
|
+
| `spaces service uninstall` | Stop and remove the service |
|
|
333
|
+
| `spaces service start` | Start the service |
|
|
334
|
+
| `spaces service stop` | Stop the service |
|
|
335
|
+
| `spaces service status` | Show service status |
|
|
336
|
+
| `spaces service logs` | Tail service logs |
|
|
337
|
+
|
|
338
|
+
### System vs. User service
|
|
339
|
+
|
|
340
|
+
| Level | When it runs | Process identity | Best for |
|
|
341
|
+
|-------|-------------|-----------------|----------|
|
|
342
|
+
| **User** | On login | Your user account | Personal machines, single user |
|
|
343
|
+
| **System** | On boot | SYSTEM (Windows) / root (Linux) | Shared machines, always-on servers |
|
|
344
|
+
|
|
345
|
+
**User-level** is simpler — processes run as you, no permission issues.
|
|
346
|
+
|
|
347
|
+
**System-level** runs as a different OS account. On Windows this means the SYSTEM account, which requires special handling for file access, home directories, and terminal spawning (see below).
|
|
348
|
+
|
|
349
|
+
### Platform details
|
|
350
|
+
|
|
351
|
+
| Platform | User-level location | System-level location |
|
|
352
|
+
|----------|--------------------|-----------------------|
|
|
353
|
+
| Linux | `~/.config/systemd/user/spaces.service` | `/etc/systemd/system/spaces.service` (sudo) |
|
|
354
|
+
| macOS | `~/Library/LaunchAgents/com.agentspaces.spaces.plist` | `/Library/LaunchDaemons/com.agentspaces.spaces.plist` (sudo) |
|
|
355
|
+
| Windows | Scheduled Task (ONLOGON) | Scheduled Task (ONSTART, SYSTEM) |
|
|
356
|
+
|
|
357
|
+
### Logs
|
|
358
|
+
|
|
359
|
+
- **Linux:** `spaces service logs` uses journalctl (integrated with systemd)
|
|
360
|
+
- **macOS / Windows:** Log files at `~/.spaces/logs/spaces.out.log`, view with `spaces service logs`
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Windows System Service (Detailed)
|
|
365
|
+
|
|
366
|
+
Running Spaces as a Windows system service has additional complexity because the service runs under the `NT AUTHORITY\SYSTEM` account, which has no user profile, no home directory, and can't directly interact with user sessions.
|
|
367
|
+
|
|
368
|
+
### Prerequisites
|
|
369
|
+
|
|
370
|
+
- **Administrator access** — service install/uninstall/start/stop require an elevated terminal
|
|
371
|
+
- **Node.js 20+** installed and on PATH
|
|
372
|
+
- **OpenSSH Server** — installed automatically during system service setup, or manually:
|
|
373
|
+
```powershell
|
|
374
|
+
# In an elevated PowerShell:
|
|
375
|
+
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
|
|
376
|
+
Start-Service sshd
|
|
377
|
+
Set-Service -Name sshd -StartupType Automatic
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### Install
|
|
381
|
+
|
|
382
|
+
From an **Administrator** terminal:
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
spaces service install
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
Choose **1** for system service. The installer will:
|
|
389
|
+
|
|
390
|
+
1. **Detect target user** — scans `C:\Users\*` for profiles with Claude Code data (`.claude/` directory). If multiple users are found, you'll be asked which one to target.
|
|
391
|
+
2. **Create wrapper script** — `~/.spaces/spaces-service.cmd` with environment overrides:
|
|
392
|
+
- `USERPROFILE`, `HOMEDRIVE`, `HOMEPATH` — set to the target user's home so `os.homedir()` resolves correctly under SYSTEM
|
|
393
|
+
- `SPACES_SERVICE=1` — prevents browser auto-open and enables service mode behaviors
|
|
394
|
+
3. **Create scheduled task** — `Spaces` task under Task Scheduler, runs as SYSTEM on boot
|
|
395
|
+
4. **Ensure OpenSSH Server** — installs and starts sshd if not present
|
|
396
|
+
5. **Start the service** — launches the task immediately
|
|
397
|
+
|
|
398
|
+
On first start, the SYSTEM process will:
|
|
399
|
+
- Run auto-setup if needed (creates admin DB with the target user's username as shell_user)
|
|
400
|
+
- Generate an SSH service key owned by SYSTEM at `~/.spaces/service_key`
|
|
401
|
+
- Authorize the key in `C:\ProgramData\ssh\administrators_authorized_keys` (for admin users) and in each user's `~/.ssh/authorized_keys` (for non-admin users)
|
|
402
|
+
|
|
403
|
+
### How terminals work under SYSTEM
|
|
404
|
+
|
|
405
|
+
Since the service runs as SYSTEM but terminals need to run as the actual user:
|
|
406
|
+
|
|
407
|
+
1. **Auth resolution** — When a terminal request arrives, the service maps SYSTEM → the first admin DB user
|
|
408
|
+
2. **Shell user lookup** — The app username is mapped to an OS shell user via the admin database
|
|
409
|
+
3. **SSH to localhost** — The service spawns `ssh -4 -i ~/.spaces/service_key <user>@localhost` to get a shell as the correct user
|
|
410
|
+
4. **Directory change** — After SSH connects, the service sends `cd /d "C:\path\to\project"` to navigate to the workspace directory
|
|
411
|
+
|
|
412
|
+
This requires OpenSSH Server running and the service key authorized for the target user.
|
|
413
|
+
|
|
414
|
+
### Upgrading tiers with a system service
|
|
415
|
+
|
|
416
|
+
If you install `@spaces/pro` or `@spaces/teams` after the service is already running:
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
spaces service stop
|
|
420
|
+
spaces install pro # or: npm install -g @spaces/pro
|
|
421
|
+
spaces service start
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
The tier is auto-detected from installed packages at startup — no service reinstall needed.
|
|
425
|
+
|
|
426
|
+
### Task Scheduler notes
|
|
427
|
+
|
|
428
|
+
- The scheduled task is named **Spaces** and runs under `NT AUTHORITY\SYSTEM`
|
|
429
|
+
- **Battery mode** — Task Scheduler may stop the task on battery power. To prevent this:
|
|
430
|
+
```powershell
|
|
431
|
+
# In elevated PowerShell:
|
|
432
|
+
$task = Get-ScheduledTask -TaskName "Spaces"
|
|
433
|
+
$task.Settings.DisallowStartIfOnBatteries = $false
|
|
434
|
+
$task.Settings.StopIfGoingOnBatteries = $false
|
|
435
|
+
Set-ScheduledTask $task
|
|
436
|
+
```
|
|
437
|
+
- The wrapper script redirects all output to `~/.spaces/logs/spaces.out.log`
|
|
438
|
+
|
|
439
|
+
### Verifying the system service
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
# Check service status
|
|
443
|
+
spaces service status
|
|
444
|
+
|
|
445
|
+
# Check logs
|
|
446
|
+
spaces service logs
|
|
447
|
+
|
|
448
|
+
# Verify SSH key setup
|
|
449
|
+
dir "%USERPROFILE%\.spaces\service_key"
|
|
450
|
+
dir "%USERPROFILE%\.spaces\service_key.pub"
|
|
451
|
+
|
|
452
|
+
# Test SSH (from the target user's terminal)
|
|
453
|
+
ssh -i "%USERPROFILE%\.spaces\service_key" -o BatchMode=yes localhost "echo works"
|
|
454
|
+
|
|
455
|
+
# Check what's listening
|
|
456
|
+
netstat -ano | findstr :3457
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## Troubleshooting
|
|
462
|
+
|
|
463
|
+
### Terminals don't connect (WebSocket fails silently)
|
|
464
|
+
|
|
465
|
+
Most common cause: **missing `SPACES_ALLOWED_ORIGINS`**. When running behind a reverse proxy on a non-community tier, the server rejects WebSocket upgrades from non-localhost origins. Set:
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
SPACES_ALLOWED_ORIGINS=yourdomain.com spaces
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
### Tier shows "community" despite packages installed
|
|
472
|
+
|
|
473
|
+
The launcher detects packages at startup. If you installed packages while the server was running, **restart the server**.
|
|
474
|
+
|
|
475
|
+
Verify packages are globally resolvable:
|
|
476
|
+
```bash
|
|
477
|
+
node -e "console.log(require.resolve('@spaces/teams'))"
|
|
478
|
+
node -e "console.log(require.resolve('@spaces/pro'))"
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
If these fail:
|
|
482
|
+
- Check `npm prefix -g` points to the right place
|
|
483
|
+
- nvm users: make sure you're using the same Node version you installed with
|
|
484
|
+
|
|
485
|
+
### Windows: EBUSY on uninstall
|
|
486
|
+
|
|
487
|
+
Something is holding a lock on the files — usually a running Spaces server. Stop it first:
|
|
488
|
+
```cmd
|
|
489
|
+
taskkill /F /IM node.exe
|
|
490
|
+
npm uninstall -g @jlongo78/agent-spaces @spaces/teams @spaces/pro
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
### npm install from GitHub fails with native module errors
|
|
494
|
+
|
|
495
|
+
`@jlongo78/agent-spaces` (the main package) has native dependencies (better-sqlite3, node-pty) that need to be compiled. Install from npm (not GitHub) for the pre-built version:
|
|
496
|
+
```bash
|
|
497
|
+
npm install -g @jlongo78/agent-spaces # pre-built, works everywhere
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
The add-on packages (`@spaces/teams`, `@spaces/pro`) are pure JS/pre-built and install from GitHub fine.
|
|
501
|
+
|
|
502
|
+
### Windows: Service freezes or can't connect
|
|
503
|
+
|
|
504
|
+
The server process is blocked. Common causes:
|
|
505
|
+
- **Browser auto-open in Session 0** — should not happen with `SPACES_SERVICE=1` but verify the wrapper script contains `set SPACES_SERVICE=1`
|
|
506
|
+
- **Port conflict** — check if another process is on port 3457: `netstat -ano | findstr :3457`
|
|
507
|
+
- **Battery mode** — Task Scheduler stops tasks on battery by default (see Task Scheduler notes above)
|
|
508
|
+
|
|
509
|
+
### Windows: Terminals show SYSTEM prompt or "claude not found"
|
|
510
|
+
|
|
511
|
+
The SSH setup didn't complete. Check:
|
|
512
|
+
|
|
513
|
+
1. **OpenSSH Server running:** `Get-Service sshd` should show Running
|
|
514
|
+
2. **Service key exists:** `dir %USERPROFILE%\.spaces\service_key`
|
|
515
|
+
3. **Key is authorized:**
|
|
516
|
+
```powershell
|
|
517
|
+
# For admin users:
|
|
518
|
+
type C:\ProgramData\ssh\administrators_authorized_keys
|
|
519
|
+
# Should contain the public key from service_key.pub
|
|
520
|
+
```
|
|
521
|
+
4. **Key permissions:** The private key must only be readable by SYSTEM and the file owner. If you see "UNPROTECTED PRIVATE KEY FILE" errors in the log, fix with:
|
|
522
|
+
```powershell
|
|
523
|
+
# In elevated PowerShell:
|
|
524
|
+
icacls "$env:USERPROFILE\.spaces\service_key" /inheritance:r /remove "BUILTIN\Administrators" /remove "BUILTIN\Users" /remove "Everyone" /grant:r "NT AUTHORITY\SYSTEM:(F)"
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
### Windows: SSH "Connection reset by ::1 port 22"
|
|
528
|
+
|
|
529
|
+
The SSH client is connecting via IPv6 but sshd may not accept it. The service uses `-4` to force IPv4. If you see this error, ensure you're running the latest version of `terminal-server.js`.
|
|
530
|
+
|
|
531
|
+
### Windows: "spaces service stop" doesn't actually stop the server
|
|
532
|
+
|
|
533
|
+
The stop command needs admin privileges to kill SYSTEM processes. Run from an elevated terminal:
|
|
534
|
+
```bash
|
|
535
|
+
spaces service stop
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
If that still doesn't work:
|
|
539
|
+
```powershell
|
|
540
|
+
# In elevated PowerShell:
|
|
541
|
+
schtasks /End /TN Spaces
|
|
542
|
+
taskkill /F /IM node.exe # Caution: kills ALL node processes
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
### Windows: Dashboard shows blank data / 0 projects
|
|
546
|
+
|
|
547
|
+
The SYSTEM account can't find the user's home directory. Verify the wrapper script at `~/.spaces/spaces-service.cmd` contains:
|
|
548
|
+
```
|
|
549
|
+
set USERPROFILE=C:\Users\YourUsername
|
|
550
|
+
set HOMEDRIVE=C:
|
|
551
|
+
set HOMEPATH=\Users\YourUsername
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
If not, reinstall the service: `spaces service uninstall && spaces service install`
|
|
555
|
+
|
|
556
|
+
### Agent panes don't get MCP server / hooks
|
|
557
|
+
|
|
558
|
+
- Ensure collaboration is enabled on the workspace (click "Collab" button)
|
|
559
|
+
- New agent panes auto-opt-in when workspace has collaboration on
|
|
560
|
+
- Check the pane's working directory for `.mcp.json` and `.claude/settings.local.json`
|
|
561
|
+
|
|
562
|
+
### "Requires @spaces/teams" on API calls
|
|
563
|
+
|
|
564
|
+
Expected on community tier. Install `@spaces/teams` and restart to enable collaboration APIs.
|