studiograph 1.3.2 → 1.3.3-next.10

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.
Files changed (118) hide show
  1. package/dist/agent/orchestrator.d.ts +8 -0
  2. package/dist/agent/orchestrator.js +13 -2
  3. package/dist/agent/orchestrator.js.map +1 -1
  4. package/dist/agent/tools/graph-tools.d.ts +5 -1
  5. package/dist/agent/tools/graph-tools.js +161 -9
  6. package/dist/agent/tools/graph-tools.js.map +1 -1
  7. package/dist/agent/tools/permission-tools.d.ts +15 -14
  8. package/dist/agent/tools/permission-tools.js +65 -128
  9. package/dist/agent/tools/permission-tools.js.map +1 -1
  10. package/dist/cli/commands/join.d.ts +3 -2
  11. package/dist/cli/commands/join.js +93 -98
  12. package/dist/cli/commands/join.js.map +1 -1
  13. package/dist/cli/commands/redeploy.js +14 -22
  14. package/dist/cli/commands/redeploy.js.map +1 -1
  15. package/dist/cli/commands/serve.js +3 -3
  16. package/dist/cli/commands/serve.js.map +1 -1
  17. package/dist/cli/commands/sync.d.ts +4 -2
  18. package/dist/cli/commands/sync.js +21 -22
  19. package/dist/cli/commands/sync.js.map +1 -1
  20. package/dist/cli/commands/user.d.ts +7 -0
  21. package/dist/cli/commands/user.js +153 -0
  22. package/dist/cli/commands/user.js.map +1 -0
  23. package/dist/cli/index.js +3 -0
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/core/graph.d.ts +8 -2
  26. package/dist/core/graph.js +11 -7
  27. package/dist/core/graph.js.map +1 -1
  28. package/dist/core/types.d.ts +9 -0
  29. package/dist/core/types.js +1 -0
  30. package/dist/core/types.js.map +1 -1
  31. package/dist/core/workspace-manager.js +1 -5
  32. package/dist/core/workspace-manager.js.map +1 -1
  33. package/dist/core/workspace.js +1 -1
  34. package/dist/core/workspace.js.map +1 -1
  35. package/dist/server/chrome/chrome.js +12 -212
  36. package/dist/server/commit-scheduler.d.ts +39 -0
  37. package/dist/server/commit-scheduler.js +99 -0
  38. package/dist/server/commit-scheduler.js.map +1 -0
  39. package/dist/server/index.js +86 -46
  40. package/dist/server/index.js.map +1 -1
  41. package/dist/server/routes/auth-api.d.ts +8 -0
  42. package/dist/server/routes/auth-api.js +163 -0
  43. package/dist/server/routes/auth-api.js.map +1 -0
  44. package/dist/server/routes/chat.js +4 -0
  45. package/dist/server/routes/chat.js.map +1 -1
  46. package/dist/server/routes/git-http.d.ts +23 -0
  47. package/dist/server/routes/git-http.js +213 -0
  48. package/dist/server/routes/git-http.js.map +1 -0
  49. package/dist/server/routes/graph-api.d.ts +6 -2
  50. package/dist/server/routes/graph-api.js +230 -50
  51. package/dist/server/routes/graph-api.js.map +1 -1
  52. package/dist/server/routes/permissions-api.d.ts +5 -4
  53. package/dist/server/routes/permissions-api.js +39 -167
  54. package/dist/server/routes/permissions-api.js.map +1 -1
  55. package/dist/server/routes/ws.d.ts +7 -0
  56. package/dist/server/routes/ws.js +35 -0
  57. package/dist/server/routes/ws.js.map +1 -0
  58. package/dist/server/ws-hub.d.ts +36 -0
  59. package/dist/server/ws-hub.js +63 -0
  60. package/dist/server/ws-hub.js.map +1 -0
  61. package/dist/services/auth-service.d.ts +77 -0
  62. package/dist/services/auth-service.js +302 -0
  63. package/dist/services/auth-service.js.map +1 -0
  64. package/dist/utils/git.d.ts +21 -1
  65. package/dist/utils/git.js +69 -3
  66. package/dist/utils/git.js.map +1 -1
  67. package/dist/web/_app/immutable/assets/{0.CDbX4Cwz.css → 0.CL-hNrKE.css} +1 -1
  68. package/dist/web/_app/immutable/assets/7.Cn2DG-J6.css +1 -0
  69. package/dist/web/_app/immutable/assets/8.Sm6jB3a0.css +1 -0
  70. package/dist/web/_app/immutable/assets/AppShell.RYbgfVr0.css +1 -0
  71. package/dist/web/_app/immutable/chunks/-lhxaNNQ.js +1 -0
  72. package/dist/web/_app/immutable/chunks/BFD-PG4k.js +2 -0
  73. package/dist/web/_app/immutable/chunks/BKhAbhZ4.js +1 -0
  74. package/dist/web/_app/immutable/chunks/BUuoVpOJ.js +1 -0
  75. package/dist/web/_app/immutable/chunks/BuHHk4nP.js +1 -0
  76. package/dist/web/_app/immutable/chunks/Bv8xNJQh.js +1 -0
  77. package/dist/web/_app/immutable/chunks/C0iyiXwO.js +1 -0
  78. package/dist/web/_app/immutable/chunks/CH-raHh7.js +1 -0
  79. package/dist/web/_app/immutable/chunks/{DTUXhwEY.js → CQo_whF8.js} +1 -1
  80. package/dist/web/_app/immutable/chunks/CiIF45lL.js +1 -0
  81. package/dist/web/_app/immutable/chunks/{DEJSHbC3.js → Cs6vwwZC.js} +1 -1
  82. package/dist/web/_app/immutable/chunks/{C1SF7XfX.js → DJO0wVMY.js} +4 -4
  83. package/dist/web/_app/immutable/chunks/DeY0oOW3.js +2 -0
  84. package/dist/web/_app/immutable/chunks/{BHedmkKI.js → Dj2efhG6.js} +18 -18
  85. package/dist/web/_app/immutable/chunks/ew-IdGn0.js +1 -0
  86. package/dist/web/_app/immutable/chunks/yEjjrv_c.js +23 -0
  87. package/dist/web/_app/immutable/entry/app.BNN66g6y.js +2 -0
  88. package/dist/web/_app/immutable/entry/start.CbKqTiwM.js +1 -0
  89. package/dist/web/_app/immutable/nodes/0.DthLeuCh.js +2 -0
  90. package/dist/web/_app/immutable/nodes/1.ZBkeuxO_.js +1 -0
  91. package/dist/web/_app/immutable/nodes/2.CioLRnGy.js +1 -0
  92. package/dist/web/_app/immutable/nodes/3.Df3ut4ji.js +1 -0
  93. package/dist/web/_app/immutable/nodes/4.HFzA-u2O.js +16 -0
  94. package/dist/web/_app/immutable/nodes/5.h31NMedP.js +4 -0
  95. package/dist/web/_app/immutable/nodes/6.MktCIoXa.js +2 -0
  96. package/dist/web/_app/immutable/nodes/7.CZ7lC_rb.js +1 -0
  97. package/dist/web/_app/immutable/nodes/8.CRf2WFmY.js +1 -0
  98. package/dist/web/_app/version.json +1 -1
  99. package/dist/web/index.html +12 -12
  100. package/package.json +11 -2
  101. package/dist/web/_app/immutable/assets/AppShell.D0rmbdqF.css +0 -1
  102. package/dist/web/_app/immutable/chunks/Bopa-Ask.js +0 -1
  103. package/dist/web/_app/immutable/chunks/CEkx7wvp.js +0 -1
  104. package/dist/web/_app/immutable/chunks/COwytaCP.js +0 -1
  105. package/dist/web/_app/immutable/chunks/Dml-u95b.js +0 -2
  106. package/dist/web/_app/immutable/chunks/DvKVaE7M.js +0 -1
  107. package/dist/web/_app/immutable/chunks/J4wxg_sP.js +0 -23
  108. package/dist/web/_app/immutable/chunks/MbiSz-iW.js +0 -2
  109. package/dist/web/_app/immutable/chunks/bSAC733J.js +0 -1
  110. package/dist/web/_app/immutable/entry/app.B0KkA_jR.js +0 -2
  111. package/dist/web/_app/immutable/entry/start.DFSNI2p-.js +0 -1
  112. package/dist/web/_app/immutable/nodes/0.DfbCOBhn.js +0 -2
  113. package/dist/web/_app/immutable/nodes/1.DMtWWiM4.js +0 -1
  114. package/dist/web/_app/immutable/nodes/2.CgKSJOen.js +0 -1
  115. package/dist/web/_app/immutable/nodes/3.CVYHBZE3.js +0 -1
  116. package/dist/web/_app/immutable/nodes/4.CHN1uWec.js +0 -16
  117. package/dist/web/_app/immutable/nodes/5.B4_87Wva.js +0 -4
  118. package/dist/web/_app/immutable/nodes/6.CGZ970f8.js +0 -2
@@ -10,7 +10,7 @@
10
10
  import Fastify from 'fastify';
11
11
  import cookie from '@fastify/cookie';
12
12
  import cors from '@fastify/cors';
13
- import { randomBytes } from 'crypto';
13
+ import websocket from '@fastify/websocket';
14
14
  import { existsSync, readFileSync, createReadStream, statSync } from 'fs';
15
15
  import { join, extname } from 'path';
16
16
  import { AgentOrchestrator } from '../agent/orchestrator.js';
@@ -20,24 +20,69 @@ import { registerChatRoutes } from './routes/chat.js';
20
20
  import { registerWebhookRoutes } from './routes/webhook.js';
21
21
  import { registerWorkspaceApiRoutes } from './routes/workspace-api.js';
22
22
  import { registerPermissionsApiRoutes } from './routes/permissions-api.js';
23
+ import { registerAuthApiRoutes } from './routes/auth-api.js';
24
+ import { registerGitHttpRoutes } from './routes/git-http.js';
25
+ import { AuthService } from '../services/auth-service.js';
23
26
  import { MemoryService } from '../services/memory-service.js';
27
+ import { WsHub } from './ws-hub.js';
28
+ import { registerWsRoute } from './routes/ws.js';
29
+ import { CommitScheduler } from './commit-scheduler.js';
24
30
  /**
25
- * Auth middleware — validates Authorization: Bearer <key> header or web session cookie.
26
- * Applied to all write-adjacent or sensitive routes.
31
+ * Auth middleware — validates JWT cookie or Authorization: Bearer <key> header.
32
+ * When users exist in the auth database, all routes require authentication
33
+ * (except auth endpoints and static assets). When no users exist, everything
34
+ * is open (backward compatible).
27
35
  */
28
- function requireApiKey(apiKeys, webSessionToken) {
36
+ function createAuthHook(apiKeys, authService) {
29
37
  return async (req, reply) => {
30
- if (apiKeys.length === 0)
31
- return; // no keys configured — open (dev mode)
32
- // Accept web session cookie from the built-in SPA
33
- const sessionCookie = req.cookies?.['__sg_session'];
34
- if (sessionCookie === webSessionToken)
38
+ // Always allow auth endpoints
39
+ if (req.url.startsWith('/api/auth/'))
35
40
  return;
36
- const auth = req.headers['authorization'];
37
- const token = auth?.startsWith('Bearer ') ? auth.slice(7) : undefined;
38
- if (!token || !apiKeys.includes(token)) {
39
- return reply.status(401).send({ error: 'Unauthorized' });
41
+ // Webhooks have their own HMAC auth
42
+ if (req.url.startsWith('/webhooks/'))
43
+ return;
44
+ // Git HTTP routes have their own Basic Auth
45
+ if (req.url.startsWith('/git/'))
46
+ return;
47
+ // WebSocket route handles its own auth
48
+ if (req.url.startsWith('/ws'))
49
+ return;
50
+ // Allow static assets (JS, CSS, fonts, images) — needed for login page
51
+ if (req.url.startsWith('/_app/') || req.url.startsWith('/api/chrome/'))
52
+ return;
53
+ // Allow HTML page requests (SPA routing) — the app handles auth client-side
54
+ if (req.method === 'GET' && req.headers.accept?.includes('text/html'))
55
+ return;
56
+ // If no users configured, allow everything (open mode)
57
+ if (!authService.hasUsers()) {
58
+ // Still check API keys for programmatic routes if configured
59
+ if (apiKeys.length > 0) {
60
+ const authHeader = req.headers['authorization'];
61
+ const bearer = authHeader?.startsWith('Bearer ') ? authHeader.slice(7) : undefined;
62
+ if (bearer && apiKeys.includes(bearer))
63
+ return;
64
+ // For non-API routes (i.e. browser requests), allow without auth
65
+ if (!req.url.startsWith('/api/') || req.url.startsWith('/api/auth/'))
66
+ return;
67
+ // For API routes without a bearer token, allow if no users exist
68
+ }
69
+ return;
70
+ }
71
+ // Check JWT cookie (web UI sessions)
72
+ const jwtToken = req.cookies?.['__sg_token'];
73
+ if (jwtToken) {
74
+ const user = authService.verifyToken(jwtToken);
75
+ if (user) {
76
+ req.user = user;
77
+ return;
78
+ }
40
79
  }
80
+ // Check Bearer token (API clients, MCP)
81
+ const authHeader = req.headers['authorization'];
82
+ const bearer = authHeader?.startsWith('Bearer ') ? authHeader.slice(7) : undefined;
83
+ if (bearer && apiKeys.includes(bearer))
84
+ return;
85
+ return reply.status(401).send({ error: 'Unauthorized' });
41
86
  };
42
87
  }
43
88
  export async function createServer(config) {
@@ -54,8 +99,8 @@ export async function createServer(config) {
54
99
  });
55
100
  // Cookie support for web UI session auth
56
101
  await fastify.register(cookie);
57
- // Generate a per-process session token for the built-in web UI
58
- const webSessionToken = randomBytes(32).toString('hex');
102
+ // WebSocket support for real-time notifications
103
+ await fastify.register(websocket);
59
104
  // Parse raw body for webhook HMAC validation
60
105
  fastify.addContentTypeParser('application/json', { parseAs: 'buffer' }, (req, body, done) => {
61
106
  try {
@@ -66,24 +111,34 @@ export async function createServer(config) {
66
111
  done(err, undefined);
67
112
  }
68
113
  });
69
- // Auth hookprotect chat and webhook routes
70
- const authHook = requireApiKey(config.apiKeys, webSessionToken);
71
- fastify.addHook('preHandler', async (req, reply) => {
72
- const protectedPaths = ['/api/chat', '/webhooks/', '/api/permissions'];
73
- const protectedPostPaths = ['/api/commit', '/api/push', '/api/pull', '/api/revert'];
74
- const isWriteRoute = req.method === 'PUT' && req.url.startsWith('/api/repos/');
75
- const isRepoPost = req.method === 'POST' && req.url.match(/^\/api\/repos\/[^/]+\/(publish|revert)/);
76
- const isProtectedPost = req.method === 'POST' && protectedPostPaths.some(p => req.url.startsWith(p));
77
- if (isWriteRoute || isProtectedPost || isRepoPost || protectedPaths.some(p => req.url.startsWith(p))) {
78
- await authHook(req, reply);
79
- }
80
- });
81
- // Register graph API routes (unauthenticated read-only)
82
- await registerGraphApiRoutes(fastify, config.workspaceManager);
114
+ // Git Smart HTTP binary content types pass raw stream through (no parsing)
115
+ for (const gitType of [
116
+ 'application/x-git-upload-pack-request',
117
+ 'application/x-git-receive-pack-request',
118
+ ]) {
119
+ fastify.addContentTypeParser(gitType, (_req, _payload, done) => {
120
+ done(null); // Don't consume the body the route handler pipes req.raw directly
121
+ });
122
+ }
123
+ // Initialize auth service, WebSocket hub, and commit scheduler
124
+ const authService = new AuthService(config.workspacePath);
125
+ const wsHub = new WsHub();
126
+ const commitScheduler = new CommitScheduler(config.workspaceManager);
127
+ // Register auth API routes (before the auth hook so they are always accessible)
128
+ await registerAuthApiRoutes(fastify, authService);
129
+ // Auth hook — applied to all routes
130
+ const authHook = createAuthHook(config.apiKeys, authService);
131
+ fastify.addHook('preHandler', authHook);
132
+ // Register WebSocket route (real-time change notifications)
133
+ await registerWsRoute(fastify, wsHub, authService);
134
+ // Register graph API routes (with per-collection access filtering)
135
+ await registerGraphApiRoutes(fastify, config.workspaceManager, authService, wsHub, commitScheduler);
83
136
  // Register workspace API routes (git operations)
84
137
  await registerWorkspaceApiRoutes(fastify, config.workspaceManager, config.gitUser);
85
- // Register permissions API routes (GitHub org/team/repo access)
86
- await registerPermissionsApiRoutes(fastify, config.workspaceConfig);
138
+ // Register permissions API routes (self-hosted collection access)
139
+ await registerPermissionsApiRoutes(fastify, authService, config.workspaceManager);
140
+ // Register git Smart HTTP routes (clone/fetch/push with Basic Auth)
141
+ await registerGitHttpRoutes(fastify, config.workspaceManager, authService, config.workspacePath, wsHub);
87
142
  // Serve chrome assets (shared header/footer for app editors)
88
143
  const chromeDir = join(import.meta.dirname, 'chrome');
89
144
  if (existsSync(chromeDir)) {
@@ -193,21 +248,6 @@ export async function createServer(config) {
193
248
  // catches it but fails because the params don't match its expectations.
194
249
  // Read fresh from disk each time so rebuilds take effect without server restart.
195
250
  const readIndexHtml = () => readFileSync(indexPath);
196
- // Set session cookie on HTML responses so the web UI can call protected routes
197
- fastify.addHook('onSend', async (request, reply, payload) => {
198
- if (reply.sent)
199
- return payload;
200
- const ct = reply.getHeader('content-type');
201
- if (typeof ct === 'string' && ct.includes('text/html') && !request.cookies?.['__sg_session']) {
202
- reply.setCookie('__sg_session', webSessionToken, {
203
- path: '/',
204
- httpOnly: true,
205
- sameSite: 'strict',
206
- secure: request.headers['x-forwarded-proto'] === 'https',
207
- });
208
- }
209
- return payload;
210
- });
211
251
  fastify.addHook('onSend', async (request, reply, payload) => {
212
252
  if (reply.sent)
213
253
  return payload;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Auth API routes
3
+ *
4
+ * Login, logout, session verification, and auth status endpoints.
5
+ */
6
+ import type { FastifyInstance } from 'fastify';
7
+ import type { AuthService } from '../../services/auth-service.js';
8
+ export declare function registerAuthApiRoutes(fastify: FastifyInstance, authService: AuthService): Promise<void>;
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Auth API routes
3
+ *
4
+ * Login, logout, session verification, and auth status endpoints.
5
+ */
6
+ function requireAdmin(req, authService) {
7
+ const token = req.cookies?.['__sg_token'];
8
+ if (!token)
9
+ return null;
10
+ const user = authService.verifyToken(token);
11
+ if (!user || user.role !== 'admin')
12
+ return null;
13
+ return user;
14
+ }
15
+ export async function registerAuthApiRoutes(fastify, authService) {
16
+ // ── Admin user management ──
17
+ // GET /api/auth/users — list all users (admin only)
18
+ fastify.get('/api/auth/users', async (req, reply) => {
19
+ const admin = requireAdmin(req, authService);
20
+ if (!admin)
21
+ return reply.status(403).send({ error: 'Admin access required' });
22
+ return reply.send({ users: authService.listUsers() });
23
+ });
24
+ // POST /api/auth/users — create a new user (admin only)
25
+ fastify.post('/api/auth/users', async (req, reply) => {
26
+ const admin = requireAdmin(req, authService);
27
+ if (!admin)
28
+ return reply.status(403).send({ error: 'Admin access required' });
29
+ const { email, password, displayName, role } = req.body;
30
+ if (!email || !password) {
31
+ return reply.status(400).send({ error: 'Email and password are required' });
32
+ }
33
+ try {
34
+ const user = authService.createUser(email, password, displayName || email.split('@')[0], role || 'member');
35
+ return reply.send({ user });
36
+ }
37
+ catch (err) {
38
+ return reply.status(400).send({ error: err.message });
39
+ }
40
+ });
41
+ // DELETE /api/auth/users/:id — delete a user (admin only, cannot delete self or last admin)
42
+ fastify.delete('/api/auth/users/:id', async (req, reply) => {
43
+ const admin = requireAdmin(req, authService);
44
+ if (!admin)
45
+ return reply.status(403).send({ error: 'Admin access required' });
46
+ const userId = parseInt(req.params.id, 10);
47
+ if (isNaN(userId))
48
+ return reply.status(400).send({ error: 'Invalid user ID' });
49
+ if (admin.id === userId)
50
+ return reply.status(400).send({ error: 'Cannot delete yourself' });
51
+ const users = authService.listUsers();
52
+ const target = users.find(u => u.id === userId);
53
+ if (!target)
54
+ return reply.status(404).send({ error: 'User not found' });
55
+ if (target.role === 'admin' && users.filter(u => u.role === 'admin').length <= 1) {
56
+ return reply.status(400).send({ error: 'Cannot delete the last admin' });
57
+ }
58
+ authService.deleteUser(target.email);
59
+ return reply.send({ ok: true });
60
+ });
61
+ // PATCH /api/auth/users/:id/password — reset a user's password (admin only)
62
+ fastify.patch('/api/auth/users/:id/password', async (req, reply) => {
63
+ const admin = requireAdmin(req, authService);
64
+ if (!admin)
65
+ return reply.status(403).send({ error: 'Admin access required' });
66
+ const userId = parseInt(req.params.id, 10);
67
+ if (isNaN(userId))
68
+ return reply.status(400).send({ error: 'Invalid user ID' });
69
+ const { password } = req.body;
70
+ if (!password)
71
+ return reply.status(400).send({ error: 'Password is required' });
72
+ const users = authService.listUsers();
73
+ const target = users.find(u => u.id === userId);
74
+ if (!target)
75
+ return reply.status(404).send({ error: 'User not found' });
76
+ try {
77
+ authService.updatePassword(target.email, password);
78
+ return reply.send({ ok: true });
79
+ }
80
+ catch (err) {
81
+ return reply.status(400).send({ error: err.message });
82
+ }
83
+ });
84
+ // POST /api/auth/login — authenticate and set session cookie
85
+ fastify.post('/api/auth/login', async (req, reply) => {
86
+ const { email, password } = req.body;
87
+ if (!email || !password) {
88
+ return reply.status(400).send({ error: 'Email and password are required' });
89
+ }
90
+ const result = authService.authenticate(email, password);
91
+ if (!result) {
92
+ return reply.status(401).send({ error: 'Invalid credentials' });
93
+ }
94
+ const secure = req.headers['x-forwarded-proto'] === 'https';
95
+ reply.setCookie('__sg_token', result.token, {
96
+ path: '/',
97
+ httpOnly: true,
98
+ sameSite: 'strict',
99
+ secure,
100
+ maxAge: 7 * 24 * 60 * 60, // 7 days
101
+ });
102
+ return reply.send({ user: result.user });
103
+ });
104
+ // POST /api/auth/logout — clear session cookie
105
+ fastify.post('/api/auth/logout', async (_req, reply) => {
106
+ reply.setCookie('__sg_token', '', {
107
+ path: '/',
108
+ httpOnly: true,
109
+ sameSite: 'strict',
110
+ maxAge: 0,
111
+ });
112
+ return reply.send({ ok: true });
113
+ });
114
+ // GET /api/auth/me — verify current session
115
+ fastify.get('/api/auth/me', async (req, reply) => {
116
+ const token = req.cookies?.['__sg_token'];
117
+ if (!token) {
118
+ return reply.status(401).send({ error: 'Not authenticated' });
119
+ }
120
+ const user = authService.verifyToken(token);
121
+ if (!user) {
122
+ return reply.status(401).send({ error: 'Not authenticated' });
123
+ }
124
+ return reply.send({ user });
125
+ });
126
+ // GET /api/auth/status — public endpoint for login page
127
+ fastify.get('/api/auth/status', async (_req, reply) => {
128
+ return reply.send({
129
+ authEnabled: authService.hasUsers(),
130
+ userCount: authService.getUserCount(),
131
+ });
132
+ });
133
+ // POST /api/auth/setup — create the first admin account (only works when no users exist)
134
+ fastify.post('/api/auth/setup', async (req, reply) => {
135
+ if (authService.hasUsers()) {
136
+ return reply.status(403).send({ error: 'Setup already completed' });
137
+ }
138
+ const { email, password, displayName } = req.body;
139
+ if (!email || !password) {
140
+ return reply.status(400).send({ error: 'Email and password are required' });
141
+ }
142
+ try {
143
+ const user = authService.createUser(email, password, displayName || email.split('@')[0], 'admin');
144
+ const result = authService.authenticate(email, password);
145
+ if (!result) {
146
+ return reply.status(500).send({ error: 'Failed to authenticate after setup' });
147
+ }
148
+ const secure = req.headers['x-forwarded-proto'] === 'https';
149
+ reply.setCookie('__sg_token', result.token, {
150
+ path: '/',
151
+ httpOnly: true,
152
+ sameSite: 'strict',
153
+ secure,
154
+ maxAge: 7 * 24 * 60 * 60,
155
+ });
156
+ return reply.send({ user });
157
+ }
158
+ catch (err) {
159
+ return reply.status(400).send({ error: err.message });
160
+ }
161
+ });
162
+ }
163
+ //# sourceMappingURL=auth-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-api.js","sourceRoot":"","sources":["../../../src/server/routes/auth-api.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export async function registerChatRoutes(fastify, agent, memoryService) {
14
14
  return reply.status(400).send({ error: 'message is required' });
15
15
  }
16
16
  try {
17
+ // Set user context for per-collection access filtering
18
+ agent.setCurrentUser(req.user ?? null);
17
19
  const response = await agent.chat(message);
18
20
  return reply.send(response);
19
21
  }
@@ -28,6 +30,8 @@ export async function registerChatRoutes(fastify, agent, memoryService) {
28
30
  if (!message || typeof message !== 'string' || !message.trim()) {
29
31
  return reply.status(400).send({ error: 'message is required' });
30
32
  }
33
+ // Set user context for per-collection access filtering
34
+ agent.setCurrentUser(req.user ?? null);
31
35
  // Switch agent to the requested session (restores prior conversation)
32
36
  if (sessionId) {
33
37
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/server/routes/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/server/routes/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Embedded Git Smart HTTP Server
3
+ *
4
+ * Enables authenticated git clone, fetch, and push over HTTP.
5
+ * Uses Basic Auth against AuthService for credentials.
6
+ *
7
+ * Endpoints:
8
+ * GET /git/:repo/info/refs?service=git-upload-pack — advertise refs (clone/fetch)
9
+ * GET /git/:repo/info/refs?service=git-receive-pack — advertise refs (push)
10
+ * POST /git/:repo/git-upload-pack — clone/fetch data
11
+ * POST /git/:repo/git-receive-pack — push data
12
+ *
13
+ * Access rules:
14
+ * - No users configured (open mode) → full access
15
+ * - Admin → all collections
16
+ * - Member → only granted collections
17
+ * - Private repos → excluded entirely
18
+ */
19
+ import type { FastifyInstance } from 'fastify';
20
+ import type { WsHub } from '../ws-hub.js';
21
+ import type { WorkspaceManager } from '../../core/workspace-manager.js';
22
+ import type { AuthService } from '../../services/auth-service.js';
23
+ export declare function registerGitHttpRoutes(fastify: FastifyInstance, workspaceManager: WorkspaceManager, authService: AuthService, workspacePath: string, wsHub?: WsHub): Promise<void>;