@braidhq/server 0.2.1 → 0.4.0

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 (84) hide show
  1. package/README.md +47 -2
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +47 -8
  4. package/dist/app.js.map +1 -1
  5. package/dist/composeApp.d.ts +15 -3
  6. package/dist/composeApp.d.ts.map +1 -1
  7. package/dist/composeApp.js +28 -2
  8. package/dist/composeApp.js.map +1 -1
  9. package/dist/composeFsApp.d.ts +52 -3
  10. package/dist/composeFsApp.d.ts.map +1 -1
  11. package/dist/composeFsApp.js +237 -64
  12. package/dist/composeFsApp.js.map +1 -1
  13. package/dist/defaultOntologyPlugins.d.ts +9 -0
  14. package/dist/defaultOntologyPlugins.d.ts.map +1 -0
  15. package/dist/defaultOntologyPlugins.js +11 -0
  16. package/dist/defaultOntologyPlugins.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/infrastructure/_shared/paths.d.ts +2 -0
  22. package/dist/infrastructure/_shared/paths.d.ts.map +1 -1
  23. package/dist/infrastructure/_shared/paths.js +6 -0
  24. package/dist/infrastructure/_shared/paths.js.map +1 -1
  25. package/dist/infrastructure/oauth/GitHubOAuth.d.ts +45 -0
  26. package/dist/infrastructure/oauth/GitHubOAuth.d.ts.map +1 -0
  27. package/dist/infrastructure/oauth/GitHubOAuth.js +85 -0
  28. package/dist/infrastructure/oauth/GitHubOAuth.js.map +1 -0
  29. package/dist/infrastructure/oauth/providers.d.ts +19 -0
  30. package/dist/infrastructure/oauth/providers.d.ts.map +1 -0
  31. package/dist/infrastructure/oauth/providers.js +22 -0
  32. package/dist/infrastructure/oauth/providers.js.map +1 -0
  33. package/dist/infrastructure/skill/FsSkillRegistry.d.ts +6 -0
  34. package/dist/infrastructure/skill/FsSkillRegistry.d.ts.map +1 -1
  35. package/dist/infrastructure/skill/FsSkillRegistry.js +7 -1
  36. package/dist/infrastructure/skill/FsSkillRegistry.js.map +1 -1
  37. package/dist/infrastructure/skill/SubprocessSkillRunner.d.ts +28 -5
  38. package/dist/infrastructure/skill/SubprocessSkillRunner.d.ts.map +1 -1
  39. package/dist/infrastructure/skill/SubprocessSkillRunner.js +133 -13
  40. package/dist/infrastructure/skill/SubprocessSkillRunner.js.map +1 -1
  41. package/dist/infrastructure/source/FsSourceSyncStateRepository.d.ts +24 -0
  42. package/dist/infrastructure/source/FsSourceSyncStateRepository.d.ts.map +1 -0
  43. package/dist/infrastructure/source/FsSourceSyncStateRepository.js +71 -0
  44. package/dist/infrastructure/source/FsSourceSyncStateRepository.js.map +1 -0
  45. package/dist/infrastructure/source/unitScan.d.ts.map +1 -1
  46. package/dist/infrastructure/source/unitScan.js +51 -3
  47. package/dist/infrastructure/source/unitScan.js.map +1 -1
  48. package/dist/infrastructure/workspace/productManifestWriter.d.ts +5 -1
  49. package/dist/infrastructure/workspace/productManifestWriter.d.ts.map +1 -1
  50. package/dist/infrastructure/workspace/productManifestWriter.js +5 -2
  51. package/dist/infrastructure/workspace/productManifestWriter.js.map +1 -1
  52. package/dist/middleware/auth.d.ts.map +1 -1
  53. package/dist/middleware/auth.js +8 -1
  54. package/dist/middleware/auth.js.map +1 -1
  55. package/dist/routes/oauth.d.ts +51 -10
  56. package/dist/routes/oauth.d.ts.map +1 -1
  57. package/dist/routes/oauth.js +174 -62
  58. package/dist/routes/oauth.js.map +1 -1
  59. package/dist/routes/skillInputOptions.js +4 -1
  60. package/dist/routes/skillInputOptions.js.map +1 -1
  61. package/dist/routes/skills.d.ts +7 -1
  62. package/dist/routes/skills.d.ts.map +1 -1
  63. package/dist/routes/skills.js +10 -0
  64. package/dist/routes/skills.js.map +1 -1
  65. package/dist/routes/sourceConnection.d.ts +30 -0
  66. package/dist/routes/sourceConnection.d.ts.map +1 -0
  67. package/dist/routes/sourceConnection.js +51 -0
  68. package/dist/routes/sourceConnection.js.map +1 -0
  69. package/dist/routes/sourceWebhooks.d.ts +10 -2
  70. package/dist/routes/sourceWebhooks.d.ts.map +1 -1
  71. package/dist/routes/sourceWebhooks.js +23 -11
  72. package/dist/routes/sourceWebhooks.js.map +1 -1
  73. package/dist/routes/workspaces.d.ts +10 -1
  74. package/dist/routes/workspaces.d.ts.map +1 -1
  75. package/dist/routes/workspaces.js +50 -7
  76. package/dist/routes/workspaces.js.map +1 -1
  77. package/dist/startServer.d.ts +7 -1
  78. package/dist/startServer.d.ts.map +1 -1
  79. package/dist/startServer.js +18 -3
  80. package/dist/startServer.js.map +1 -1
  81. package/dist/startup.d.ts.map +1 -1
  82. package/dist/startup.js +7 -1
  83. package/dist/startup.js.map +1 -1
  84. package/package.json +17 -15
@@ -1,86 +1,198 @@
1
+ import { ForbiddenError, NotFoundError } from '@braidhq/core';
2
+ import { WorkspaceId } from '@braidhq/schema';
1
3
  import { zValidator } from '@hono/zod-validator';
2
4
  import { Hono } from 'hono';
3
5
  import { z } from 'zod';
4
6
  import { createOAuthState, createPkceVerifier } from '../infrastructure/oauth/GoogleOAuth.js';
7
+ import { oauthProvider } from '../infrastructure/oauth/providers.js';
8
+ import { getUserId } from '../middleware/auth.js';
9
+ import { defaultPermissionRegistry, resolveViewer } from '../policy/index.js';
5
10
  const DRIVE_READONLY_SCOPE = 'https://www.googleapis.com/auth/drive.readonly';
6
11
  const StartBodySchema = z.object({
7
12
  workspaceId: z.string().min(1),
8
13
  sourceId: z.string().min(1),
9
14
  });
10
15
  /**
11
- * OAuth routes for source-loader providers that need user consent.
12
- * `POST /oauth/google/start` returns an authorizationUrl.
13
- * `GET /oauth/google/callback` returns an HTML page that closes the popup.
14
- *
15
- * Pending state is kept in process memory. The flow is short-lived,
16
- * a single browser round-trip, and a server restart cancels it,
17
- * acceptable for a local desktop or single-user install.
18
- * SaaS deployments should swap `pending` for a shared store.
16
+ * In-process store of pending OAuth flows, keyed by the state token.
17
+ * The start and callback routers mount at different prefixes,
18
+ * so they share one instance,
19
+ * and a flow opened by `start` is resolved by `callback`.
20
+ * A flow is short-lived, one browser round-trip, and a restart cancels it.
21
+ * SaaS deployments should swap this for a shared store.
19
22
  */
20
- export function createOAuthRouter(deps) {
21
- const router = new Hono();
22
- const pending = new Map();
23
- router.post('/google/start', zValidator('json', StartBodySchema), async (context) => {
24
- if (!deps.google) {
25
- return context.json({
26
- error: 'Google OAuth is not configured on this server. Set BRAID_GOOGLE_CLIENT_ID + BRAID_GOOGLE_CLIENT_SECRET (and BRAID_GOOGLE_REDIRECT_URI if not the default) and restart.',
27
- }, 503);
23
+ export class OAuthFlowStore {
24
+ pending = new Map();
25
+ put(state, flow) {
26
+ this.pending.set(state, flow);
27
+ this.sweep();
28
+ }
29
+ take(state) {
30
+ const flow = this.pending.get(state);
31
+ this.pending.delete(state);
32
+ return flow;
33
+ }
34
+ sweep() {
35
+ const cutoff = Date.now() - 10 * 60 * 1000;
36
+ for (const [state, flow] of this.pending) {
37
+ if (flow.createdAt < cutoff)
38
+ this.pending.delete(state);
28
39
  }
29
- const { workspaceId, sourceId } = context.req.valid('json');
30
- const state = createOAuthState();
31
- const codeVerifier = createPkceVerifier();
32
- pending.set(state, { workspaceId, sourceId, codeVerifier, createdAt: Date.now() });
33
- sweepStale(pending);
34
- const authorizationUrl = deps.google.buildAuthorizationUrl({
35
- scopes: [DRIVE_READONLY_SCOPE],
36
- state,
37
- codeVerifier,
40
+ }
41
+ }
42
+ function providersOf(deps) {
43
+ const google = oauthProvider('google');
44
+ const github = oauthProvider('github');
45
+ return [
46
+ {
47
+ id: google.id,
48
+ label: google.label,
49
+ namespace: google.namespace,
50
+ notConfigured: 'Google OAuth is not configured on this server. Set BRAID_GOOGLE_CLIENT_ID + BRAID_GOOGLE_CLIENT_SECRET (and BRAID_GOOGLE_REDIRECT_URI if not the default) and restart.',
51
+ ...(deps.google
52
+ ? {
53
+ begin: (state) => {
54
+ const codeVerifier = createPkceVerifier();
55
+ return { authorizationUrl: deps.google.buildAuthorizationUrl({ scopes: [DRIVE_READONLY_SCOPE], state, codeVerifier }), codeVerifier };
56
+ },
57
+ complete: (flow, code) => {
58
+ if (!flow.codeVerifier)
59
+ throw new Error('Google flow is missing its PKCE verifier.');
60
+ return deps.google.exchangeCode({ code, codeVerifier: flow.codeVerifier });
61
+ },
62
+ }
63
+ : {}),
64
+ },
65
+ {
66
+ id: github.id,
67
+ label: github.label,
68
+ namespace: github.namespace,
69
+ notConfigured: 'GitHub OAuth is not configured on this server. Set BRAID_GITHUB_CLIENT_ID + BRAID_GITHUB_CLIENT_SECRET (and BRAID_GITHUB_REDIRECT_URI if not the default) and restart.',
70
+ ...(deps.github
71
+ ? {
72
+ begin: (state) => ({ authorizationUrl: deps.github.buildAuthorizationUrl({ state }) }),
73
+ complete: (_flow, code) => deps.github.exchangeCode({ code }),
74
+ }
75
+ : {}),
76
+ },
77
+ ];
78
+ }
79
+ /**
80
+ * Source-connection start routes. `workspace.write` is owner-only,
81
+ * so only an owner connects or reconnects a source on an existing workspace,
82
+ * and the authorising member is recorded as `connectedBy`.
83
+ * A not-yet-scaffolded workspace is allowed,
84
+ * since the Wizard connects a source before it creates the workspace,
85
+ * and the caller becomes its owner.
86
+ */
87
+ export function createOAuthStartRouter(deps) {
88
+ const router = new Hono();
89
+ for (const provider of providersOf(deps)) {
90
+ router.post(`/${provider.id}/start`, zValidator('json', StartBodySchema), async (context) => {
91
+ if (!provider.begin)
92
+ return context.json({ error: provider.notConfigured }, 503);
93
+ const { workspaceId, sourceId } = context.req.valid('json');
94
+ const connectedBy = await authoriseConnect(deps, workspaceId, getUserId(context));
95
+ const state = createOAuthState();
96
+ const started = provider.begin(state);
97
+ deps.flowStore.put(state, pendingFlow(workspaceId, sourceId, connectedBy, started.codeVerifier));
98
+ return context.json({ authorizationUrl: started.authorizationUrl });
38
99
  });
39
- return context.json({ authorizationUrl });
40
- });
41
- router.get('/google/callback', async (context) => {
42
- const state = context.req.query('state');
43
- const code = context.req.query('code');
44
- const error = context.req.query('error');
45
- if (error)
46
- return context.html(renderCallbackPage({ ok: false, message: `Google returned: ${error}` }), 400);
47
- if (!state || !code)
48
- return context.html(renderCallbackPage({ ok: false, message: 'Missing state or code query parameter.' }), 400);
49
- if (!deps.google)
50
- return context.html(renderCallbackPage({ ok: false, message: 'OAuth not configured.' }), 503);
51
- const flow = pending.get(state);
52
- pending.delete(state);
53
- if (!flow)
54
- return context.html(renderCallbackPage({ ok: false, message: 'State token not recognised (probably expired or already used).' }), 400);
55
- try {
56
- const tokens = await deps.google.exchangeCode({ code, codeVerifier: flow.codeVerifier });
57
- await persistTokens(deps.secretStore, flow.workspaceId, flow.sourceId, tokens);
58
- return context.html(renderCallbackPage({ ok: true, message: 'Connected. You can close this window.' }));
59
- }
60
- catch (err) {
61
- return context.html(renderCallbackPage({
62
- ok: false,
63
- message: err instanceof Error ? err.message : String(err),
64
- }), 500);
65
- }
66
- });
100
+ }
67
101
  return router;
68
102
  }
69
- async function persistTokens(store, workspaceId, sourceId, tokens) {
70
- await store.write('oauth-google', `${workspaceId}--${sourceId}`, tokens);
103
+ /**
104
+ * Gate a connect on `workspace.write` when the workspace exists,
105
+ * allow it before scaffold, and return who is connecting.
106
+ * Returns undefined in the in-memory composition,
107
+ * which wires no user or workspace registry and stays open,
108
+ * matching how the other workspace routes behave there.
109
+ */
110
+ async function authoriseConnect(deps, workspaceId, userId) {
111
+ if (!deps.userRegistry || !deps.workspaceService || !deps.workspaceRegistry)
112
+ return undefined;
113
+ const user = await deps.userRegistry.get(userId);
114
+ if (!user)
115
+ throw new ForbiddenError(`Unknown user "${userId}".`);
116
+ const workspace = await findWorkspaceOrUndefined(deps.workspaceService, workspaceId);
117
+ if (workspace) {
118
+ const member = await deps.workspaceRegistry.getMember(workspace.rootPath, userId);
119
+ if (!defaultPermissionRegistry.can('workspace.write', resolveViewer(user, member)))
120
+ throw new ForbiddenError(`Only an owner can connect a source on workspace "${workspaceId}".`);
121
+ }
122
+ return { userId: user.id, displayName: user.displayName };
71
123
  }
72
- function sweepStale(pending) {
73
- const cutoff = Date.now() - 10 * 60 * 1000;
74
- for (const [state, flow] of pending) {
75
- if (flow.createdAt < cutoff)
76
- pending.delete(state);
124
+ async function findWorkspaceOrUndefined(service, workspaceId) {
125
+ try {
126
+ return await service.findById(WorkspaceId.parse(workspaceId));
127
+ }
128
+ catch (error) {
129
+ if (error instanceof NotFoundError)
130
+ return undefined;
131
+ throw error;
132
+ }
133
+ }
134
+ /**
135
+ * OAuth callback routes, mounted at `/oauth`,
136
+ * so the redirect URI stays one fixed path per provider,
137
+ * which is what the OAuth app registers.
138
+ * The state token carries the flow back to its workspace and source.
139
+ */
140
+ export function createOAuthCallbackRouter(deps) {
141
+ const router = new Hono();
142
+ for (const provider of providersOf(deps)) {
143
+ router.get(`/${provider.id}/callback`, async (context) => {
144
+ const parsed = parseCallback(context, provider);
145
+ if (!parsed.ok)
146
+ return parsed.response;
147
+ if (!provider.complete)
148
+ return context.html(renderCallbackPage({ ok: false, provider, message: 'OAuth not configured.' }), 503);
149
+ const flow = deps.flowStore.take(parsed.state);
150
+ if (!flow)
151
+ return context.html(renderCallbackPage({ ok: false, provider, message: 'State token not recognised (probably expired or already used).' }), 400);
152
+ try {
153
+ const tokens = await provider.complete(flow, parsed.code);
154
+ await persistTokens(deps.secretStore, provider, flow, tokens);
155
+ return context.html(renderCallbackPage({ ok: true, provider, message: 'Connected. You can close this window.' }));
156
+ }
157
+ catch (err) {
158
+ return context.html(renderCallbackPage({ ok: false, provider, message: err instanceof Error ? err.message : String(err) }), 500);
159
+ }
160
+ });
77
161
  }
162
+ return router;
163
+ }
164
+ function pendingFlow(workspaceId, sourceId, connectedBy, codeVerifier) {
165
+ return {
166
+ workspaceId,
167
+ sourceId,
168
+ createdAt: Date.now(),
169
+ ...(connectedBy ? { connectedBy } : {}),
170
+ ...(codeVerifier ? { codeVerifier } : {}),
171
+ };
172
+ }
173
+ function parseCallback(context, provider) {
174
+ const error = context.req.query('error');
175
+ if (error)
176
+ return { ok: false, response: context.html(renderCallbackPage({ ok: false, provider, message: `${provider.label} returned: ${error}` }), 400) };
177
+ const state = context.req.query('state');
178
+ const code = context.req.query('code');
179
+ if (!state || !code)
180
+ return { ok: false, response: context.html(renderCallbackPage({ ok: false, provider, message: 'Missing state or code query parameter.' }), 400) };
181
+ return { ok: true, state, code };
182
+ }
183
+ async function persistTokens(store, provider, flow, tokens) {
184
+ await store.write(provider.namespace, `${flow.workspaceId}--${flow.sourceId}`, {
185
+ ...tokens,
186
+ connectedAt: new Date().toISOString(),
187
+ ...(flow.connectedBy ? { connectedBy: flow.connectedBy } : {}),
188
+ });
78
189
  }
79
190
  function renderCallbackPage(input) {
80
191
  // Tiny self-contained HTML. Tells the popup opener and closes itself.
81
192
  // Inline style so the page works without any asset pipeline.
82
193
  const colour = input.ok ? '#16a34a' : '#dc2626';
83
194
  const status = input.ok ? 'success' : 'error';
195
+ const heading = input.ok ? `Connected to ${input.provider.label}` : 'Authorization failed';
84
196
  return `<!doctype html>
85
197
  <html><head><meta charset="utf-8"><title>Braid OAuth</title>
86
198
  <style>
@@ -91,11 +203,11 @@ function renderCallbackPage(input) {
91
203
  </style>
92
204
  </head><body>
93
205
  <div class="card">
94
- <h1>${status === 'success' ? 'Connected to Google' : 'Authorization failed'}</h1>
206
+ <h1>${heading}</h1>
95
207
  <p>${escapeHtml(input.message)}</p>
96
208
  </div>
97
209
  <script>
98
- try { window.opener?.postMessage({ source: 'braid-oauth', provider: 'google', status: ${JSON.stringify(status)} }, '*'); } catch (_e) {}
210
+ try { window.opener?.postMessage({ source: 'braid-oauth', provider: ${JSON.stringify(input.provider.id)}, status: ${JSON.stringify(status)} }, '*'); } catch (_e) {}
99
211
  setTimeout(() => { try { window.close(); } catch (_e) {} }, 1500);
100
212
  </script>
101
213
  </body></html>`;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/routes/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/routes/oauth.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC7F,OAAO,EAAE,aAAa,EAA0B,MAAM,sCAAsC,CAAA;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE7E,MAAM,oBAAoB,GAAG,gDAAgD,CAAA;AAE7E,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAA;AAkCF;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IACR,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAA;IAEzD,GAAG,CAAC,KAAa,EAAE,IAAiB;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QAC1C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM;gBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;CACF;AAcD,SAAS,WAAW,CAAC,IAAqB;IACxC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,OAAO;QACL;YACE,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,wKAAwK;YACvL,GAAG,CAAC,IAAI,CAAC,MAAM;gBACb,CAAC,CAAC;oBACE,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE;wBACvB,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;wBACzC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAO,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAA;oBACxI,CAAC;oBACD,QAAQ,EAAE,CAAC,IAAiB,EAAE,IAAY,EAAE,EAAE;wBAC5C,IAAI,CAAC,IAAI,CAAC,YAAY;4BACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;wBAC9D,OAAO,IAAI,CAAC,MAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;oBAC7E,CAAC;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD;YACE,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,wKAAwK;YACvL,GAAG,CAAC,IAAI,CAAC,MAAM;gBACb,CAAC,CAAC;oBACE,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAO,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBAC/F,QAAQ,EAAE,CAAC,KAAkB,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;iBACpF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAqB;IAC1D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAA;IACzB,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC1F,IAAI,CAAC,QAAQ,CAAC,KAAK;gBACjB,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAA;YAC7D,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC3D,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAA;YAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;YAChG,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAqB,EAAE,WAAmB,EAAE,MAAc;IACxF,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB;QACzE,OAAO,SAAS,CAAA;IAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAChD,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,cAAc,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;IACpF,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACjF,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAChF,MAAM,IAAI,cAAc,CAAC,oDAAoD,WAAW,IAAI,CAAC,CAAA;IACjG,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAA;AAC3D,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAAyB,EAAE,WAAmB;IACpF,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,aAAa;YAChC,OAAO,SAAS,CAAA;QAClB,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAqB;IAC7D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAA;IACzB,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACvD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;gBACZ,OAAO,MAAM,CAAC,QAAQ,CAAA;YACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBACpB,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;YACzG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9C,IAAI,CAAC,IAAI;gBACP,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,gEAAgE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;YAClJ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;gBACzD,MAAM,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;gBAC7D,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC,CAAC,CAAA;YACnH,CAAC;YACD,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;YAClI,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB,EAAE,QAAgB,EAAE,WAAoC,EAAE,YAAgC;IAChI,OAAO;QACL,WAAW;QACX,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAA;AACH,CAAC;AAMD,SAAS,aAAa,CAAC,OAAgB,EAAE,QAAuB;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,KAAK;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,cAAc,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IACjJ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACtC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IACnJ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AAClC,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAkB,EAAE,QAAuB,EAAE,IAAiB,EAAE,MAAc;IACzG,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE;QAC7E,GAAG,MAAM;QACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgE;IAC1F,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAA;IAC1F,OAAO;;;;;qDAK4C,MAAM;;;;;QAKnD,OAAO;OACR,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;;;wEAGwC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;;eAG7H,CAAA;AACf,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAE,CAAC,CAAA;AACrH,CAAC"}
@@ -121,7 +121,10 @@ async function resolveSource(filter, workspace, deps) {
121
121
  return {
122
122
  value: item.value,
123
123
  label: item.label,
124
- description: item.sourceName,
124
+ // The source name repeats on every row and so tells a reader nothing,
125
+ // while a mirrored unit's filename is an upstream id.
126
+ // Its title is the only thing on the row that says what it is.
127
+ description: item.title ?? item.sourceName,
125
128
  ...(parsed.success ? { sourceId: parsed.data } : {}),
126
129
  };
127
130
  });
@@ -1 +1 @@
1
- {"version":3,"file":"skillInputOptions.js","sourceRoot":"","sources":["../../src/routes/skillInputOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillInputOptions.js","sourceRoot":"","sources":["../../src/routes/skillInputOptions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PluginRegistry, RunRepository, SkillRegistry, SkillRunner, SourceUnitObservationService, WorkspaceRepository } from '@braidhq/core';
1
+ import type { PluginRegistry, RunRepository, SkillRegistry, SkillRunner, SourceSyncService, SourceUnitObservationService, WorkspaceRepository } from '@braidhq/core';
2
2
  import { OpenAPIHono } from '@hono/zod-openapi';
3
3
  export interface SkillsRouterDeps {
4
4
  readonly skillRegistry: SkillRegistry;
@@ -22,6 +22,12 @@ export interface SkillsRouterDeps {
22
22
  * instead of hard-coding the extract skill.
23
23
  */
24
24
  readonly pluginRegistry: PluginRegistry;
25
+ /**
26
+ * Brings managed sources inside their budget before the agent reads them.
27
+ * Best effort by contract, so an unreachable remote delays the run briefly,
28
+ * and leaves the previous mirror in place rather than failing it.
29
+ */
30
+ readonly sourceSyncService: SourceSyncService;
25
31
  }
26
32
  export declare function createSkillsRouter(deps: SkillsRouterDeps): OpenAPIHono;
27
33
  //# sourceMappingURL=skills.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/routes/skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,4BAA4B,EAE5B,mBAAmB,EACpB,MAAM,eAAe,CAAA;AAItB,OAAO,EAAe,WAAW,EAAK,MAAM,mBAAmB,CAAA;AAmC/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAA;IACjD;;;OAGG;IACH,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAA;IACnE;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CACxC;AAyDD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAmFtE"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/routes/skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,4BAA4B,EAE5B,mBAAmB,EACpB,MAAM,eAAe,CAAA;AAItB,OAAO,EAAe,WAAW,EAAK,MAAM,mBAAmB,CAAA;AAuC/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAA;IACjD;;;OAGG;IACH,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAA;IACnE;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;CAC9C;AAyDD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CA2FtE"}
@@ -6,6 +6,9 @@ import { requirePermission } from '../middleware/workspaceAccess.js';
6
6
  import { getWorkspaceId } from '../middleware/workspaceId.js';
7
7
  import { NotFoundResponse, WorkspaceIdParam } from './_shared.js';
8
8
  import { loadWorkspaceById } from './helpers.js';
9
+ // Long enough for a cold shallow fetch across a handful of repos,
10
+ // short enough that an unresponsive remote does not look like a hung submit.
11
+ const PRE_RUN_REFRESH_DEADLINE_MS = 20_000;
9
12
  const SourceUnitRef = z.object({
10
13
  sourceId: SourceId,
11
14
  path: z.string().min(1),
@@ -135,6 +138,13 @@ export function createSkillsRouter(deps) {
135
138
  if (!known)
136
139
  throw new ValidationError(`Source-unit id "${sourceUnit.sourceId}" does not name a unit-bearing source in workspace "${workspace.id}"`);
137
140
  }
141
+ // Before the agent opens a single file, not after.
142
+ // A refresh landing mid-run swaps content the agent already reasoned about.
143
+ // Bounded,
144
+ // because this call holds the request open and git has no timeout of its own.
145
+ // Past the bound the run starts against the existing mirror,
146
+ // which is what the best-effort contract promises anyway.
147
+ await deps.sourceSyncService.ensureWorkspaceFresh(workspace, { deadlineMs: PRE_RUN_REFRESH_DEADLINE_MS });
138
148
  const runId = await deps.skillRunner.start(workspace, skillId, args, options);
139
149
  // The observation hook runs in the background,
140
150
  // so the route still returns 202 promptly.
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/routes/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/routes/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { WorkspaceService } from '@braidhq/core';
2
+ import type { Hono as HonoType } from 'hono';
3
+ import type { SecretStore } from '../infrastructure/secrets/SecretStore.js';
4
+ export interface SourceConnectionStatus {
5
+ readonly connected: boolean;
6
+ readonly needsAuth: boolean;
7
+ readonly connectedBy?: {
8
+ userId: string;
9
+ displayName: string;
10
+ };
11
+ readonly connectedAt?: string;
12
+ }
13
+ export type SourceConnectionSummary = SourceConnectionStatus & {
14
+ readonly sourceId: string;
15
+ readonly name: string;
16
+ readonly kind: string;
17
+ };
18
+ export interface SourceConnectionRouterDeps {
19
+ readonly secretStore: SecretStore;
20
+ readonly workspaceService: WorkspaceService;
21
+ }
22
+ /**
23
+ * Reports whether a source has a live OAuth connection, who linked it,
24
+ * and whether its token has gone stale.
25
+ * Read-only, so any workspace member can see the status,
26
+ * the reconnect action stays owner-gated on the start route.
27
+ * The collection route lets a banner flag a stale source without opening it.
28
+ */
29
+ export declare function createSourceConnectionRouter(deps: SourceConnectionRouterDeps): HonoType;
30
+ //# sourceMappingURL=sourceConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceConnection.d.ts","sourceRoot":"","sources":["../../src/routes/sourceConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AAmB3E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAI3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1I,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,0BAA0B,GAAG,QAAQ,CAoBvF"}
@@ -0,0 +1,51 @@
1
+ import { SourceId, WorkspaceId } from '@braidhq/schema';
2
+ import { Hono } from 'hono';
3
+ import { OAUTH_PROVIDERS } from '../infrastructure/oauth/providers.js';
4
+ import { requirePermission } from '../middleware/workspaceAccess.js';
5
+ import { getWorkspaceId } from '../middleware/workspaceId.js';
6
+ // OAuth namespaces a source credential can live under,
7
+ // keyed by `${workspaceId}--${sourceId}`. A source uses at most one.
8
+ const OAUTH_NAMESPACES = OAUTH_PROVIDERS.map(provider => provider.namespace);
9
+ // Loader kinds whose sources authenticate over OAuth.
10
+ const OAUTH_LOADER_KINDS = new Set(OAUTH_PROVIDERS.map(provider => provider.loaderKind));
11
+ /**
12
+ * Reports whether a source has a live OAuth connection, who linked it,
13
+ * and whether its token has gone stale.
14
+ * Read-only, so any workspace member can see the status,
15
+ * the reconnect action stays owner-gated on the start route.
16
+ * The collection route lets a banner flag a stale source without opening it.
17
+ */
18
+ export function createSourceConnectionRouter(deps) {
19
+ const router = new Hono();
20
+ router.get('/', requirePermission('workspace.read'), async (context) => {
21
+ const workspaceId = getWorkspaceId(context);
22
+ const workspace = await deps.workspaceService.findById(WorkspaceId.parse(workspaceId));
23
+ const connections = [];
24
+ for (const source of workspace.productManifest.sources) {
25
+ if (source.kind !== 'filesystem' || !source.loader || !OAUTH_LOADER_KINDS.has(source.loader.kind))
26
+ continue;
27
+ connections.push({ sourceId: source.id, name: source.name, kind: source.loader.kind, ...await readStatus(deps.secretStore, workspaceId, source.id) });
28
+ }
29
+ return context.json({ connections });
30
+ });
31
+ router.get('/:sourceId', requirePermission('workspace.read'), async (context) => {
32
+ return context.json(await readStatus(deps.secretStore, getWorkspaceId(context), SourceId.parse(context.req.param('sourceId'))));
33
+ });
34
+ return router;
35
+ }
36
+ async function readStatus(secretStore, workspaceId, sourceId) {
37
+ const key = `${workspaceId}--${sourceId}`;
38
+ for (const namespace of OAUTH_NAMESPACES) {
39
+ const stored = await secretStore.read(namespace, key);
40
+ if (stored) {
41
+ return {
42
+ connected: true,
43
+ needsAuth: stored.needsAuth === true,
44
+ ...(stored.connectedBy ? { connectedBy: stored.connectedBy } : {}),
45
+ ...(stored.connectedAt ? { connectedAt: stored.connectedAt } : {}),
46
+ };
47
+ }
48
+ }
49
+ return { connected: false, needsAuth: false };
50
+ }
51
+ //# sourceMappingURL=sourceConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceConnection.js","sourceRoot":"","sources":["../../src/routes/sourceConnection.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,20 @@
1
- import type { PluginRegistry, SourceLoaderRunner, WorkspaceService } from '@braidhq/core';
1
+ import type { PluginRegistry, SourceSyncService, WorkspaceService } from '@braidhq/core';
2
2
  import type { SecretStore } from '../infrastructure/secrets/SecretStore.js';
3
+ import { WorkspaceId } from '@braidhq/schema';
3
4
  import { OpenAPIHono } from '@hono/zod-openapi';
4
5
  import { Hono } from 'hono';
5
6
  export interface GithubWebhookReceiverDeps {
6
7
  readonly workspaceService: WorkspaceService;
7
- readonly sourceLoaderRunner: SourceLoaderRunner;
8
+ readonly sourceSyncService: SourceSyncService;
8
9
  readonly secretStore: SecretStore;
9
10
  readonly pluginRegistry: PluginRegistry;
11
+ /**
12
+ * Whether a skill run currently holds the workspace's sources.
13
+ * Deliveries are dropped while one does, matching the poller.
14
+ * A manual sync stays unconditional,
15
+ * since a person asked for it and can see the result.
16
+ */
17
+ readonly isWorkspaceBusy?: (workspaceId: WorkspaceId) => boolean;
10
18
  }
11
19
  export declare function createGithubWebhookReceiver(deps: GithubWebhookReceiverDeps): Hono;
12
20
  export interface SourceWebhooksAdminDeps {
@@ -1 +1 @@
1
- {"version":3,"file":"sourceWebhooks.d.ts","sourceRoot":"","sources":["../../src/routes/sourceWebhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAElB,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AAK3E,OAAO,EAAe,WAAW,EAAK,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AA0C3B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CACxC;AA6FD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,CAgFjF;AAYD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AA2DD,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,uBAAuB,GAAG,WAAW,CAoC1F"}
1
+ {"version":3,"file":"sourceWebhooks.d.ts","sourceRoot":"","sources":["../../src/routes/sourceWebhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AAI3E,OAAO,EAAmC,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAe,WAAW,EAAK,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AA8C3B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAA;CACjE;AA6FD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,CAyFjF;AAYD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AA2DD,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,uBAAuB,GAAG,WAAW,CAoC1F"}