@jlongo78/agent-spaces 0.9.7 → 0.9.9
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 +17 -4
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +29 -0
- package/.next/standalone/.next/server/app/(desktop)/admin/analytics/page.js.nft.json +1 -1
- 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 +3 -3
- package/.next/standalone/.next/server/app/admin/analytics.segments/!KGRlc2t0b3Ap/admin/analytics/__PAGE__.segment.rsc +2 -2
- 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 +3 -3
- 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/claude/usage/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/claude/usage/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/claude/usage/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/claude/usage/route.js +8 -0
- package/.next/standalone/.next/server/app/api/claude/usage/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/claude/usage/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/claude/usage/route_client-reference-manifest.js +2 -0
- 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/[id]/todos/[todoId]/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js +8 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/[todoId]/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js +8 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/workspaces/[id]/todos/route_client-reference-manifest.js +2 -0
- 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 +3 -3
- package/.next/standalone/.next/server/app/settings.segments/!KGRlc2t0b3Ap/settings/__PAGE__.segment.rsc +2 -2
- 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 +3 -3
- 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 +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00e90fc6._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01ab8675._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03974f05._.js +111 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__bb331da9._.js → [root-of-the-server]__046c9b91._.js} +16 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04ae6bf0._.js +111 -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 +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0facd39e._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10bc76a3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__115f3934._.js +111 -0
- 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 +50 -33
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__17a3b966._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__17d3a2b2._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a86c055._.js +111 -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 +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2a3f866b._.js +119 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__a95bb38b._.js → [root-of-the-server]__316617e7._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__32ad8f71._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__35457394._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__35de78e6._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3685ffcb._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__38954988._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3a32b624._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__426ad936._.js +119 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4985c034._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5c6ce9ed._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5cebe58a._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d5e4789._.js +111 -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 +111 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__7ebc4280._.js → [root-of-the-server]__6c64af29._.js} +22 -9
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__73aed9f5._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__79b6a9bb._.js +111 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__e56abacf._.js → [root-of-the-server]__7db704c6._.js} +18 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__812ca02b._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__821f50fa._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8716b86e._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__884ef754._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__88cdbd68._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__89d9aba9._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8c2e1260._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8d536cb5._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8df8c5d1._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8f2ccc41._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__95c9d682._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9e5d7774._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9edcff87._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a049dfc2._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a5b4bb9a._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a83262a1._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9cd1240._.js +111 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__efb8251e._.js → [root-of-the-server]__a9d7f822._.js} +16 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad08c221._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ad585f2f._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__afcb8f7d._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bc250d43._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bce2a6e7._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c011bf91._.js +111 -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]__c37d6380._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cae392eb._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cc2616bb._.js +16 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d501fa9b._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d59c6c15._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d5c1db32._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__dba60c86._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__de14b9ae._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e10643d1._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2a996e5._.js +127 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e3477417._.js +111 -0
- 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]__e4e70b86._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e54925af._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e8cbeaca._.js +111 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__cabaac2b._.js → [root-of-the-server]__e8edc5b0._.js} +16 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__eab4d83b._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ead29015._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f056fd83._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f0e99572._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fe1e16d0._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ff9cd277._.js +111 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ffaea2ce._.js +111 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_claude_usage_route_actions_fe002ec1.js +3 -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/_next-internal_server_app_api_workspaces_[id]_todos_route_actions_0d4ffac5.js +3 -0
- package/.next/standalone/.next/server/chunks/ce889_server_app_api_workspaces_[id]_todos_[todoId]_route_actions_754fe6b9.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/_20c2cf3a._.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/_5f55bf8f._.js +3 -0
- 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)_settings_page_tsx_f74824b3._.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/{74d0ac0b1d0a1b79.js → 10b00b4f66102dcf.js} +1 -1
- package/.next/standalone/.next/static/chunks/14216197f9dcbe5b.css +3 -0
- package/.next/standalone/.next/static/chunks/{16eb77953dee9ea3.js → 19c71a8376c23c58.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3e91fc608659c524.js → 350271fe79509caf.js} +1 -1
- package/.next/standalone/.next/static/chunks/4c9fb0a38f041a3d.js +85 -0
- package/.next/standalone/.next/static/chunks/{70423c7afd8abf5f.js → 597847c22200c212.js} +1 -1
- package/.next/standalone/.next/static/chunks/8f6f93ab45a5ff5b.js +1 -0
- 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/{e62bb488d02db247.js → d2566c2dcf53fef3.js} +1 -1
- package/.next/standalone/.next/static/chunks/{180c1b9ff31b979f.js → f7b34c807badf95d.js} +8 -6
- package/.next/standalone/.next/static/chunks/{fb0abd1933b2b2e1.js → ff7d85dade44d1f3.js} +1 -1
- package/.next/standalone/.spaces/cortex-context.md +35 -129
- package/.next/standalone/bin/spaces.js +7 -4
- package/.next/standalone/bin/terminal-server.js +48 -10
- package/.next/standalone/cortex-hook-debug.log +118 -23
- package/.next/standalone/docs/features/claude-usage.md +105 -0
- package/.next/standalone/docs/features/workspace-todos.md +127 -0
- package/.next/standalone/docs/superpowers/plans/2026-04-21-workspace-todos.md +1097 -0
- package/.next/standalone/docs/superpowers/plans/2026-04-22-claude-usage-display.md +749 -0
- package/.next/standalone/docs/superpowers/specs/2026-04-21-workspace-todos-design.md +180 -0
- package/.next/standalone/docs/superpowers/specs/2026-04-22-claude-usage-display-design.md +183 -0
- package/.next/standalone/package-lock.json +2 -2
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/src/app/(desktop)/settings/page.tsx +40 -1
- package/.next/standalone/src/app/(desktop)/terminal/page.tsx +98 -7
- package/.next/standalone/src/app/api/benchmark/run/route.ts +24 -3
- package/.next/standalone/src/app/api/claude/usage/route.ts +33 -0
- package/.next/standalone/src/app/api/config/route.ts +3 -0
- package/.next/standalone/src/app/api/cortex/context/route.ts +1 -1
- package/.next/standalone/src/app/api/cortex/knowledge/route.ts +1 -1
- package/.next/standalone/src/app/api/cortex/search/route.ts +14 -2
- package/.next/standalone/src/app/api/folders/route.ts +16 -6
- package/.next/standalone/src/app/api/network/panes/[id]/route.ts +27 -11
- package/.next/standalone/src/app/api/network/panes/route.ts +25 -14
- package/.next/standalone/src/app/api/network/projects/route.ts +11 -4
- package/.next/standalone/src/app/api/network/search/route.ts +21 -14
- package/.next/standalone/src/app/api/network/sessions/[id]/messages/route.ts +18 -11
- package/.next/standalone/src/app/api/network/sessions/[id]/route.ts +16 -9
- package/.next/standalone/src/app/api/network/sessions/route.ts +25 -18
- package/.next/standalone/src/app/api/network/workspaces/[id]/route.ts +21 -12
- package/.next/standalone/src/app/api/network/workspaces/route.ts +16 -14
- package/.next/standalone/src/app/api/whisper/config/route.ts +16 -8
- package/.next/standalone/src/app/api/wizard/chart/route.ts +129 -0
- package/.next/standalone/src/app/api/workspaces/[id]/todos/[todoId]/route.ts +55 -0
- package/.next/standalone/src/app/api/workspaces/[id]/todos/route.ts +43 -0
- package/.next/standalone/src/components/claude/claude-usage-strip.tsx +175 -0
- package/.next/standalone/src/components/cortex/benchmark-tab.tsx +14 -0
- package/.next/standalone/src/components/terminal/terminal-pane.tsx +78 -12
- package/.next/standalone/src/components/wizard/chart-wizard.tsx +405 -0
- package/.next/standalone/src/components/workspace/workspace-todos.tsx +265 -0
- package/.next/standalone/src/hooks/use-benchmark.ts +1 -0
- package/.next/standalone/src/hooks/use-claude-usage.ts +66 -0
- package/.next/standalone/src/hooks/use-speech-recognition.ts +2 -1
- package/.next/standalone/src/lib/claude/credentials.ts +36 -0
- package/.next/standalone/src/lib/claude/usage.ts +69 -0
- package/.next/standalone/src/lib/config.ts +3 -0
- package/.next/standalone/src/lib/cortex/benchmark.ts +17 -1
- package/.next/standalone/src/lib/cortex/index.ts +54 -1
- package/.next/standalone/src/lib/db/queries.ts +105 -90
- package/.next/standalone/src/lib/db/schema.ts +18 -0
- package/.next/standalone/src/lib/shell-user.ts +101 -0
- package/.next/standalone/src/types/claude.ts +39 -0
- package/.next/standalone/tests/db/workspace-todos.test.ts +156 -0
- package/bin/spaces.js +7 -4
- package/bin/terminal-server.js +48 -10
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00fdfbda._.js +0 -114
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04f04898._.js +0 -106
- 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]__194955d4._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1f054c65._.js +0 -98
- 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]__2384f98e._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__277d9445._.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]__2a2c5fc5._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2d7a454e._.js +0 -98
- 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]__49e42a3a._.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]__4d903941._.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]__614458b7._.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]__6fe5e6c8._.js +0 -98
- 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]__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]__91e23c96._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__929ea03a._.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]__9d68157b._.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]__ac39ecc7._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac84b704._.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]__cb027619._.js +0 -98
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cc6e2885._.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]__d95165f0._.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]__eafd040b._.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/_3ba93bdd._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_e84a0c06._.js +0 -3
- package/.next/standalone/.next/static/chunks/074df89a63b6a854.js +0 -1
- package/.next/standalone/.next/static/chunks/9d4164833c2c1fd6.js +0 -85
- package/.next/standalone/.next/static/chunks/bffaf378f7745d59.css +0 -3
- package/.next/standalone/.next/static/chunks/f091f4bf8d80fd07.js +0 -1
- /package/.next/standalone/.next/static/{0KefPNmR9NsrZHWWt9Xr7 → bAQs2gDlFrq3e8w9ni9tr}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{0KefPNmR9NsrZHWWt9Xr7 → bAQs2gDlFrq3e8w9ni9tr}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{0KefPNmR9NsrZHWWt9Xr7 → bAQs2gDlFrq3e8w9ni9tr}/_ssgManifest.js +0 -0
|
@@ -3,6 +3,7 @@ import { getPro } from '@/lib/pro';
|
|
|
3
3
|
import { ensureInitialized } from '@/lib/db/init';
|
|
4
4
|
import { getSessionById } from '@/lib/db/queries';
|
|
5
5
|
import { readMessages } from '@/lib/claude/parser';
|
|
6
|
+
import { withUser } from '@/lib/auth';
|
|
6
7
|
|
|
7
8
|
const notAvailable = () =>
|
|
8
9
|
Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
|
|
@@ -11,8 +12,9 @@ export async function GET(req: NextRequest, { params }: { params: Promise<{ id:
|
|
|
11
12
|
const pro = getPro();
|
|
12
13
|
if (!pro) return notAvailable();
|
|
13
14
|
|
|
15
|
+
let keyRecord;
|
|
14
16
|
try {
|
|
15
|
-
pro.network.requireNetworkAuth(req);
|
|
17
|
+
keyRecord = pro.network.requireNetworkAuth(req);
|
|
16
18
|
} catch (e: any) {
|
|
17
19
|
if (e.name === 'NetworkAuthError') {
|
|
18
20
|
return Response.json({ error: e.message }, { status: 401 });
|
|
@@ -20,17 +22,22 @@ export async function GET(req: NextRequest, { params }: { params: Promise<{ id:
|
|
|
20
22
|
throw e;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
const keyUser = keyRecord?.username;
|
|
26
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
27
|
+
|
|
24
28
|
const { id } = await params;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
return withUser(keyUser, async () => {
|
|
30
|
+
await ensureInitialized();
|
|
31
|
+
const { searchParams } = req.nextUrl;
|
|
32
|
+
const offset = parseInt(searchParams.get('offset') || '0', 10);
|
|
33
|
+
const limit = parseInt(searchParams.get('limit') || '50', 10);
|
|
28
34
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
const session = getSessionById(id);
|
|
36
|
+
if (!session) {
|
|
37
|
+
return Response.json({ error: 'Session not found' }, { status: 404 });
|
|
38
|
+
}
|
|
33
39
|
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
const result = await readMessages(session.fullPath, offset, limit);
|
|
41
|
+
return Response.json(result);
|
|
42
|
+
});
|
|
36
43
|
}
|
|
@@ -2,6 +2,7 @@ import { NextRequest } from 'next/server';
|
|
|
2
2
|
import { getPro } from '@/lib/pro';
|
|
3
3
|
import { ensureInitialized } from '@/lib/db/init';
|
|
4
4
|
import { getSessionById, getSessionTags, getSessionWorkspaces } from '@/lib/db/queries';
|
|
5
|
+
import { withUser } from '@/lib/auth';
|
|
5
6
|
|
|
6
7
|
const notAvailable = () =>
|
|
7
8
|
Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
|
|
@@ -10,8 +11,9 @@ export async function GET(req: NextRequest, { params }: { params: Promise<{ id:
|
|
|
10
11
|
const pro = getPro();
|
|
11
12
|
if (!pro) return notAvailable();
|
|
12
13
|
|
|
14
|
+
let keyRecord;
|
|
13
15
|
try {
|
|
14
|
-
pro.network.requireNetworkAuth(req);
|
|
16
|
+
keyRecord = pro.network.requireNetworkAuth(req);
|
|
15
17
|
} catch (e: any) {
|
|
16
18
|
if (e.name === 'NetworkAuthError') {
|
|
17
19
|
return Response.json({ error: e.message }, { status: 401 });
|
|
@@ -19,16 +21,21 @@ export async function GET(req: NextRequest, { params }: { params: Promise<{ id:
|
|
|
19
21
|
throw e;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
const keyUser = keyRecord?.username;
|
|
25
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
26
|
+
|
|
23
27
|
const { id } = await params;
|
|
24
|
-
|
|
28
|
+
return withUser(keyUser, async () => {
|
|
29
|
+
await ensureInitialized();
|
|
30
|
+
const session = getSessionById(id);
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
if (!session) {
|
|
33
|
+
return Response.json({ error: 'Session not found' }, { status: 404 });
|
|
34
|
+
}
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
const tags = getSessionTags(session.id);
|
|
37
|
+
const workspaces = getSessionWorkspaces(session.id);
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
return Response.json({ ...session, tagObjects: tags, workspaces });
|
|
40
|
+
});
|
|
34
41
|
}
|
|
@@ -2,6 +2,7 @@ import { NextRequest } from 'next/server';
|
|
|
2
2
|
import { getPro } from '@/lib/pro';
|
|
3
3
|
import { ensureInitialized } from '@/lib/db/init';
|
|
4
4
|
import { getSessions, getWorkspacesForSession } from '@/lib/db/queries';
|
|
5
|
+
import { withUser } from '@/lib/auth';
|
|
5
6
|
|
|
6
7
|
const notAvailable = () =>
|
|
7
8
|
Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
|
|
@@ -10,8 +11,9 @@ export async function GET(req: NextRequest) {
|
|
|
10
11
|
const pro = getPro();
|
|
11
12
|
if (!pro) return notAvailable();
|
|
12
13
|
|
|
14
|
+
let keyRecord;
|
|
13
15
|
try {
|
|
14
|
-
pro.network.requireNetworkAuth(req);
|
|
16
|
+
keyRecord = pro.network.requireNetworkAuth(req);
|
|
15
17
|
} catch (e: any) {
|
|
16
18
|
if (e.name === 'NetworkAuthError') {
|
|
17
19
|
return Response.json({ error: e.message }, { status: 401 });
|
|
@@ -19,25 +21,30 @@ export async function GET(req: NextRequest) {
|
|
|
19
21
|
throw e;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
const keyUser = keyRecord?.username;
|
|
25
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
projectId: searchParams.get('projectId') || undefined,
|
|
27
|
-
projectPath: searchParams.get('projectPath') || undefined,
|
|
28
|
-
search: searchParams.get('search') || undefined,
|
|
29
|
-
sortBy: searchParams.get('sortBy') || 'modified',
|
|
30
|
-
sortDir: searchParams.get('sortDir') || 'DESC',
|
|
31
|
-
offset: parseInt(searchParams.get('offset') || '0', 10),
|
|
32
|
-
limit: parseInt(searchParams.get('limit') || '50', 10),
|
|
33
|
-
};
|
|
27
|
+
return withUser(keyUser, async () => {
|
|
28
|
+
await ensureInitialized();
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
const { searchParams } = req.nextUrl;
|
|
31
|
+
const params = {
|
|
32
|
+
projectId: searchParams.get('projectId') || undefined,
|
|
33
|
+
projectPath: searchParams.get('projectPath') || undefined,
|
|
34
|
+
search: searchParams.get('search') || undefined,
|
|
35
|
+
sortBy: searchParams.get('sortBy') || 'modified',
|
|
36
|
+
sortDir: searchParams.get('sortDir') || 'DESC',
|
|
37
|
+
offset: parseInt(searchParams.get('offset') || '0', 10),
|
|
38
|
+
limit: parseInt(searchParams.get('limit') || '50', 10),
|
|
39
|
+
};
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
...s,
|
|
39
|
-
workspaces: getWorkspacesForSession(s.id),
|
|
40
|
-
}));
|
|
41
|
+
const result = getSessions(params);
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
const sessions = result.sessions.map(s => ({
|
|
44
|
+
...s,
|
|
45
|
+
workspaces: getWorkspacesForSession(s.id),
|
|
46
|
+
}));
|
|
47
|
+
|
|
48
|
+
return Response.json({ sessions, total: result.total });
|
|
49
|
+
});
|
|
43
50
|
}
|
|
@@ -21,16 +21,15 @@ export async function GET(req: NextRequest, { params }: { params: Promise<{ id:
|
|
|
21
21
|
throw e;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
const { id } = await params;
|
|
25
24
|
const keyUser = keyRecord?.username;
|
|
25
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
26
26
|
|
|
27
|
-
const
|
|
27
|
+
const { id } = await params;
|
|
28
|
+
return withUser(keyUser, async () => {
|
|
28
29
|
await ensureInitialized();
|
|
29
30
|
const panes = getPanesByWorkspace(parseInt(id, 10));
|
|
30
31
|
return Response.json({ panes });
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
return keyUser ? withUser(keyUser, handler) : handler();
|
|
32
|
+
});
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
export async function PUT(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
|
@@ -45,11 +44,16 @@ export async function PUT(req: NextRequest, { params }: { params: Promise<{ id:
|
|
|
45
44
|
}
|
|
46
45
|
if (keyRecord?.permissions !== 'admin') return Response.json({ error: 'Admin permission required' }, { status: 403 });
|
|
47
46
|
|
|
47
|
+
const keyUser = keyRecord?.username;
|
|
48
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
49
|
+
|
|
48
50
|
const { id } = await params;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
return withUser(keyUser, async () => {
|
|
52
|
+
await ensureInitialized();
|
|
53
|
+
const body = await req.json();
|
|
54
|
+
updateWorkspace(parseInt(id, 10), body);
|
|
55
|
+
return Response.json({ success: true });
|
|
56
|
+
});
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
export async function DELETE(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
|
@@ -64,8 +68,13 @@ export async function DELETE(req: NextRequest, { params }: { params: Promise<{ i
|
|
|
64
68
|
}
|
|
65
69
|
if (keyRecord?.permissions !== 'admin') return Response.json({ error: 'Admin permission required' }, { status: 403 });
|
|
66
70
|
|
|
71
|
+
const keyUser = keyRecord?.username;
|
|
72
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
73
|
+
|
|
67
74
|
const { id } = await params;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
75
|
+
return withUser(keyUser, async () => {
|
|
76
|
+
await ensureInitialized();
|
|
77
|
+
deleteWorkspaceFull(parseInt(id, 10));
|
|
78
|
+
return Response.json({ success: true });
|
|
79
|
+
});
|
|
71
80
|
}
|
|
@@ -3,6 +3,7 @@ import { getPro } from '@/lib/pro';
|
|
|
3
3
|
import { ensureInitialized } from '@/lib/db/init';
|
|
4
4
|
import { getDb } from '@/lib/db/schema';
|
|
5
5
|
import { createWorkspace } from '@/lib/db/queries';
|
|
6
|
+
import { withUser } from '@/lib/auth';
|
|
6
7
|
|
|
7
8
|
const notAvailable = () =>
|
|
8
9
|
Response.json({ error: 'Requires @spaces/pro' }, { status: 404 });
|
|
@@ -23,16 +24,12 @@ export async function GET(req: NextRequest) {
|
|
|
23
24
|
|
|
24
25
|
// Scope to the API key's user so remote access sees their workspaces, not the server admin's
|
|
25
26
|
const keyUser = keyRecord?.username;
|
|
26
|
-
if (keyUser) {
|
|
27
|
-
const { withUser } = await import('@/lib/auth');
|
|
28
|
-
return withUser(keyUser, async () => {
|
|
29
|
-
await ensureInitialized();
|
|
30
|
-
return buildWorkspaceResponse();
|
|
31
|
-
});
|
|
32
|
-
}
|
|
27
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
return withUser(keyUser, async () => {
|
|
30
|
+
await ensureInitialized();
|
|
31
|
+
return buildWorkspaceResponse();
|
|
32
|
+
});
|
|
36
33
|
}
|
|
37
34
|
|
|
38
35
|
export async function POST(req: NextRequest) {
|
|
@@ -50,12 +47,17 @@ export async function POST(req: NextRequest) {
|
|
|
50
47
|
return Response.json({ error: 'Admin permission required' }, { status: 403 });
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
const keyUser = keyRecord?.username;
|
|
51
|
+
if (!keyUser) return Response.json({ error: 'API key missing user binding' }, { status: 401 });
|
|
52
|
+
|
|
53
|
+
return withUser(keyUser, async () => {
|
|
54
|
+
await ensureInitialized();
|
|
55
|
+
const body = await req.json();
|
|
56
|
+
if (!body.name) return Response.json({ error: 'name is required' }, { status: 400 });
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
const workspace = createWorkspace(body.name, body.description, body.color);
|
|
59
|
+
return Response.json(workspace);
|
|
60
|
+
});
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
function buildWorkspaceResponse() {
|
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
import { NextResponse } from 'next/server';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import os from 'os';
|
|
4
5
|
|
|
5
6
|
export const dynamic = 'force-dynamic';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* GET /api/whisper/config — returns Groq/OpenAI key + endpoint for direct browser calls.
|
|
9
|
-
*
|
|
10
|
+
* Reads config.json directly (bypasses cortex addon to avoid stale require cache).
|
|
11
|
+
* Falls back to env vars.
|
|
10
12
|
*/
|
|
11
13
|
export async function GET() {
|
|
12
|
-
// Try cortex config first (user-configured keys in settings)
|
|
13
14
|
let configGroq = '';
|
|
14
15
|
let configOpenai = '';
|
|
16
|
+
|
|
17
|
+
// Read config.json directly instead of going through cortex addon
|
|
15
18
|
try {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
const configPath = path.join(os.homedir(), '.spaces', 'config.json');
|
|
20
|
+
if (fs.existsSync(configPath)) {
|
|
21
|
+
const raw = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
22
|
+
const cortex = raw.cortex || {};
|
|
23
|
+
configGroq = cortex.groq_api_key || '';
|
|
24
|
+
configOpenai = cortex.openai_api_key || '';
|
|
25
|
+
}
|
|
20
26
|
} catch {}
|
|
21
27
|
|
|
22
28
|
const groqKey = configGroq || process.env.GROQ_API_KEY;
|
|
23
29
|
const openaiKey = configOpenai || process.env.OPENAI_API_KEY;
|
|
24
30
|
|
|
31
|
+
console.log(`[Whisper Config] configGroq=${configGroq ? configGroq.slice(0, 8) + '...' : 'EMPTY'} configOpenai=${configOpenai ? configOpenai.slice(0, 8) + '...' : 'EMPTY'} envGroq=${process.env.GROQ_API_KEY ? 'SET' : 'UNSET'} envOpenai=${process.env.OPENAI_API_KEY ? 'SET' : 'UNSET'} → returning ${groqKey ? 'GROQ' : openaiKey ? 'OPENAI' : 'NONE'}`);
|
|
32
|
+
|
|
25
33
|
if (groqKey) {
|
|
26
34
|
return NextResponse.json({
|
|
27
35
|
apiKey: groqKey,
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import { getAuthUser, withUser } from '@/lib/auth';
|
|
3
|
+
import { getUserPaths } from '@/lib/config';
|
|
4
|
+
|
|
5
|
+
export const dynamic = 'force-dynamic';
|
|
6
|
+
|
|
7
|
+
const SYSTEM_PROMPT = `You are a data visualization assistant. Your job: help the user design a chart from their data through conversation. Ask 1-2 questions at a time. Converge toward a concrete chart spec.
|
|
8
|
+
|
|
9
|
+
Supported chart types:
|
|
10
|
+
- bar: Vertical or horizontal bar chart
|
|
11
|
+
- line: Line chart with optional area fill
|
|
12
|
+
- pie: Pie or donut chart
|
|
13
|
+
- scatter: Scatter plot with optional trend line
|
|
14
|
+
- heatmap: Color-coded grid/matrix
|
|
15
|
+
- table: Formatted data table with highlights
|
|
16
|
+
|
|
17
|
+
After each exchange, output an updated chart spec as a JSON block.
|
|
18
|
+
|
|
19
|
+
For SINGLE-SERIES data (bar, pie, scatter, simple line), use this format:
|
|
20
|
+
|
|
21
|
+
\`\`\`json
|
|
22
|
+
{
|
|
23
|
+
"chart": { "title": "...", "type": "bar", "xAxis": "...", "yAxis": "...", "color": "#6366f1" },
|
|
24
|
+
"data": [
|
|
25
|
+
{ "label": "Q1", "value": 100 },
|
|
26
|
+
{ "label": "Q2", "value": 150 }
|
|
27
|
+
],
|
|
28
|
+
"options": { "showLegend": true, "stacked": false, "fillArea": false },
|
|
29
|
+
"summary": "One-line description"
|
|
30
|
+
}
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
For MULTI-SERIES data (multiple lines, grouped comparison), use this format:
|
|
34
|
+
|
|
35
|
+
\`\`\`json
|
|
36
|
+
{
|
|
37
|
+
"chart": { "title": "...", "type": "line", "xAxis": "...", "yAxis": "...", "color": "#6366f1" },
|
|
38
|
+
"data": [],
|
|
39
|
+
"labels": ["Jan", "Feb", "Mar"],
|
|
40
|
+
"series": [
|
|
41
|
+
{ "name": "East", "color": "#6366f1", "values": [100, 120, 140] },
|
|
42
|
+
{ "name": "West", "color": "#22c55e", "values": [80, 95, 110] }
|
|
43
|
+
],
|
|
44
|
+
"options": { "showLegend": true, "stacked": false, "fillArea": false },
|
|
45
|
+
"summary": "One-line description"
|
|
46
|
+
}
|
|
47
|
+
\`\`\`
|
|
48
|
+
|
|
49
|
+
Available series colors: #6366f1, #22c55e, #f59e0b, #ef4444, #3b82f6, #ec4899, #14b8a6, #a855f7, #f97316
|
|
50
|
+
|
|
51
|
+
Guidelines:
|
|
52
|
+
- Ask about: what data they have, what story they want to tell, audience, preferred chart type
|
|
53
|
+
- Suggest chart types based on the data shape (categorical → bar/pie, time series → line, correlation → scatter)
|
|
54
|
+
- Use multi-series format when the user asks for multiple lines, regions, categories, or comparisons
|
|
55
|
+
- Generate sample data if the user describes their data verbally
|
|
56
|
+
- Keep it simple — one chart at a time
|
|
57
|
+
- When the spec looks solid, suggest the user review it`;
|
|
58
|
+
|
|
59
|
+
export async function POST(request: NextRequest) {
|
|
60
|
+
const user = getAuthUser(request);
|
|
61
|
+
return withUser(user, async () => {
|
|
62
|
+
const { configPath } = getUserPaths(user);
|
|
63
|
+
let config: any = {};
|
|
64
|
+
try {
|
|
65
|
+
const { readCortexConfig } = await import('@/lib/cortex/config');
|
|
66
|
+
config = readCortexConfig(configPath);
|
|
67
|
+
} catch {}
|
|
68
|
+
|
|
69
|
+
const anthropicKey = config.anthropic_api_key || process.env.ANTHROPIC_API_KEY;
|
|
70
|
+
if (!anthropicKey) {
|
|
71
|
+
return NextResponse.json(
|
|
72
|
+
{ error: 'No API key configured. Add your Anthropic key in Settings > Cortex.' },
|
|
73
|
+
{ status: 400 }
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const body = await request.json();
|
|
78
|
+
const { messages, currentSpec } = body;
|
|
79
|
+
|
|
80
|
+
const apiMessages = messages.map((m: any) => ({
|
|
81
|
+
role: m.role,
|
|
82
|
+
content: m.content,
|
|
83
|
+
}));
|
|
84
|
+
|
|
85
|
+
let systemPrompt = SYSTEM_PROMPT;
|
|
86
|
+
if (currentSpec) {
|
|
87
|
+
systemPrompt += `\n\nCurrent chart spec:\n\`\`\`json\n${JSON.stringify(currentSpec, null, 2)}\n\`\`\``;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
const res = await fetch('https://api.anthropic.com/v1/messages', {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
headers: {
|
|
94
|
+
'Content-Type': 'application/json',
|
|
95
|
+
'x-api-key': anthropicKey,
|
|
96
|
+
'anthropic-version': '2023-06-01',
|
|
97
|
+
},
|
|
98
|
+
body: JSON.stringify({
|
|
99
|
+
model: 'claude-haiku-4-5-20251001',
|
|
100
|
+
max_tokens: 2048,
|
|
101
|
+
system: systemPrompt,
|
|
102
|
+
messages: apiMessages,
|
|
103
|
+
}),
|
|
104
|
+
signal: AbortSignal.timeout(30000),
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
if (!res.ok) {
|
|
108
|
+
return NextResponse.json({ error: `API error: ${res.status}` }, { status: 502 });
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const data = await res.json();
|
|
112
|
+
const reply = data.content?.[0]?.text || '';
|
|
113
|
+
|
|
114
|
+
// Extract JSON spec from reply
|
|
115
|
+
let spec = currentSpec;
|
|
116
|
+
const jsonMatch = reply.match(/```json\s*([\s\S]*?)```/);
|
|
117
|
+
if (jsonMatch) {
|
|
118
|
+
try {
|
|
119
|
+
spec = JSON.parse(jsonMatch[1]);
|
|
120
|
+
} catch { /* keep current spec */ }
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const cleanReply = reply.replace(/```json[\s\S]*?```/g, '').trim();
|
|
124
|
+
return NextResponse.json({ reply: cleanReply, spec });
|
|
125
|
+
} catch (e: any) {
|
|
126
|
+
return NextResponse.json({ error: e.message }, { status: 500 });
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import { getAuthUser, withUser } from '@/lib/auth';
|
|
3
|
+
import { ensureInitialized } from '@/lib/db/init';
|
|
4
|
+
import { updateWorkspaceTodo, deleteWorkspaceTodo } from '@/lib/db/queries';
|
|
5
|
+
|
|
6
|
+
export async function PATCH(
|
|
7
|
+
request: NextRequest,
|
|
8
|
+
{ params }: { params: Promise<{ id: string; todoId: string }> }
|
|
9
|
+
) {
|
|
10
|
+
const user = getAuthUser(request);
|
|
11
|
+
return withUser(user, async () => {
|
|
12
|
+
await ensureInitialized();
|
|
13
|
+
const { id, todoId } = await params;
|
|
14
|
+
const wsId = parseInt(id, 10);
|
|
15
|
+
const tid = parseInt(todoId, 10);
|
|
16
|
+
if (!Number.isFinite(wsId) || !Number.isFinite(tid)) {
|
|
17
|
+
return NextResponse.json({ error: 'invalid workspace or todo id' }, { status: 400 });
|
|
18
|
+
}
|
|
19
|
+
const body = await request.json().catch(() => null);
|
|
20
|
+
if (!body || (body.text === undefined && body.completed === undefined)) {
|
|
21
|
+
return NextResponse.json({ error: 'text or completed required' }, { status: 400 });
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const updated = updateWorkspaceTodo(wsId, tid, {
|
|
25
|
+
text: typeof body.text === 'string' ? body.text : undefined,
|
|
26
|
+
completed: typeof body.completed === 'boolean' ? body.completed : undefined,
|
|
27
|
+
});
|
|
28
|
+
if (!updated) {
|
|
29
|
+
return NextResponse.json({ error: 'not found' }, { status: 404 });
|
|
30
|
+
}
|
|
31
|
+
return NextResponse.json(updated);
|
|
32
|
+
} catch (err) {
|
|
33
|
+
const message = err instanceof Error ? err.message : 'update failed';
|
|
34
|
+
return NextResponse.json({ error: message }, { status: 400 });
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export async function DELETE(
|
|
40
|
+
request: NextRequest,
|
|
41
|
+
{ params }: { params: Promise<{ id: string; todoId: string }> }
|
|
42
|
+
) {
|
|
43
|
+
const user = getAuthUser(request);
|
|
44
|
+
return withUser(user, async () => {
|
|
45
|
+
await ensureInitialized();
|
|
46
|
+
const { id, todoId } = await params;
|
|
47
|
+
const wsId = parseInt(id, 10);
|
|
48
|
+
const tid = parseInt(todoId, 10);
|
|
49
|
+
if (!Number.isFinite(wsId) || !Number.isFinite(tid)) {
|
|
50
|
+
return NextResponse.json({ error: 'invalid workspace or todo id' }, { status: 400 });
|
|
51
|
+
}
|
|
52
|
+
deleteWorkspaceTodo(wsId, tid);
|
|
53
|
+
return NextResponse.json({ ok: true });
|
|
54
|
+
});
|
|
55
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import { getAuthUser, withUser } from '@/lib/auth';
|
|
3
|
+
import { ensureInitialized } from '@/lib/db/init';
|
|
4
|
+
import { getWorkspaceTodos, addWorkspaceTodo } from '@/lib/db/queries';
|
|
5
|
+
|
|
6
|
+
export async function GET(
|
|
7
|
+
request: NextRequest,
|
|
8
|
+
{ params }: { params: Promise<{ id: string }> }
|
|
9
|
+
) {
|
|
10
|
+
const user = getAuthUser(request);
|
|
11
|
+
return withUser(user, async () => {
|
|
12
|
+
await ensureInitialized();
|
|
13
|
+
const { id } = await params;
|
|
14
|
+
const wsId = parseInt(id, 10);
|
|
15
|
+
if (!Number.isFinite(wsId)) {
|
|
16
|
+
return NextResponse.json({ error: 'invalid workspace id' }, { status: 400 });
|
|
17
|
+
}
|
|
18
|
+
const todos = getWorkspaceTodos(wsId);
|
|
19
|
+
return NextResponse.json(todos);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export async function POST(
|
|
24
|
+
request: NextRequest,
|
|
25
|
+
{ params }: { params: Promise<{ id: string }> }
|
|
26
|
+
) {
|
|
27
|
+
const user = getAuthUser(request);
|
|
28
|
+
return withUser(user, async () => {
|
|
29
|
+
await ensureInitialized();
|
|
30
|
+
const { id } = await params;
|
|
31
|
+
const wsId = parseInt(id, 10);
|
|
32
|
+
if (!Number.isFinite(wsId)) {
|
|
33
|
+
return NextResponse.json({ error: 'invalid workspace id' }, { status: 400 });
|
|
34
|
+
}
|
|
35
|
+
const body = await request.json().catch(() => null);
|
|
36
|
+
const text = typeof body?.text === 'string' ? body.text : '';
|
|
37
|
+
if (!text.trim()) {
|
|
38
|
+
return NextResponse.json({ error: 'text is required' }, { status: 400 });
|
|
39
|
+
}
|
|
40
|
+
const todo = addWorkspaceTodo(wsId, text);
|
|
41
|
+
return NextResponse.json(todo, { status: 201 });
|
|
42
|
+
});
|
|
43
|
+
}
|