@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
package/README.md CHANGED
@@ -21,6 +21,8 @@ Two layers share this package for now.
21
21
 
22
22
  A future app, a story world or a research-notes base, reuses the kernel and swaps the preset for its own ontology and adapters. When that second worldview arrives, the coding preset extracts into its own package, `@braidhq/preset-code`, and this package drops its plugin dependencies. Until a second worldview exists that pressure is speculative, so both layers stay here at no cost. The seam is `composeApp`: whatever the kernel reaches without a concrete plugin already belongs to it.
23
23
 
24
+ Such an app does not have to reimplement the runtime to get there. `composeFsAppWithRegistry(buildRegistry, options)` runs the same filesystem assembly as `composeFsApp`, the subprocess skill runner, the fs unit lister, and every fs repository, over a registry the caller builds. `composeFsApp` is that call with the preset's bundle. A deployment that only adds a loader to the preset passes it to `startServer`, which takes the same `extraXxxPlugins` options and keeps the shutdown that closes the graph store.
25
+
24
26
  ## Structure
25
27
 
26
28
  The package layers outward from core. Infrastructure implements core's ports, routes expose them, and composition binds the two.
@@ -49,7 +51,7 @@ src/
49
51
  └── _shared/ cross-cutting fs plumbing, paths, json store, frontmatter
50
52
  ```
51
53
 
52
- - **composeApp / composeFsApp**: The kernel root and the coding preset. `composeApp` takes a deps object, registers no plugin, and defaults every unset port to an in-memory adapter. `composeFsApp` builds the filesystem, git, and vendor adapters, registers the default plugin bundle, then hands the result to `composeApp`. Production runs the latter. See Positioning above.
54
+ - **composeApp / composeFsApp**: The kernel root and the coding preset. `composeApp` takes a deps object, registers no plugin, and defaults every unset port to an in-memory adapter. `composeFsAppWithRegistry` builds the filesystem, git, and vendor adapters over a caller-supplied registry, then hands the result to `composeApp`. `composeFsApp` is that call with the default bundle, and production runs it. See Positioning above.
53
55
  - **startup**: The two boot passes, `startupBeforeServe` and `startupAfterServe`. See Startup below for the full order.
54
56
  - **infrastructure**: The real adapters behind core's ports, grouped by domain concern to mirror `core/domain`, never by storage technology. Each folder owns one aggregate's adapter, so a future SQLite or Postgres store lands beside the filesystem one instead of in a separate `sql/` tree. `hitl/` persists proposals and clarifications, `workspace/` the graph and workspace files, `history/` records every change as a git commit, `skill/` runs a skill as a subprocess and streams its events back. `_shared/` holds the cross-cutting fs plumbing, its underscore marking it as the one folder that is not a domain concern, matching `routes/_shared.ts`. `users/ auth/ secrets/ oauth/` are host services with no core port.
55
57
  - **routes**: One `createXxxRouter(deps)` per resource, each taking only the services it needs. Bodies validate through zod, path ids parse through their branded schema.
@@ -67,7 +69,7 @@ Reconcile workspaces, register then boot each:
67
69
 
68
70
  2. `discoverCanonicalWorkspaces` registers workspaces present on disk but absent from the registry.
69
71
  3. `ensureWorkspaceOwners` gives any ownerless workspace the auth mode's default principal, or throws under authenticated mode where every workspace must have an explicit owner.
70
- 4. `startupBeforeServe` runs the per-workspace pass. Per workspace it provisions the git repo and store, recovers a batch left running by a killed process, subscribes the reactor when the workspace opts in, and fires a catch-up sync for each loader-backed source.
72
+ 4. `startupBeforeServe` runs the per-workspace pass. Per workspace it provisions the git repo and store, recovers a batch left running by a killed process, subscribes the reactor when the workspace opts in, starts the source poller unless the workspace turned polling off, and fires a catch-up sync for each loader-backed source.
71
73
 
72
74
  After `serve()`, the background phase runs cosmetic recovery that need not finish first, via `startupAfterServe`:
73
75
 
@@ -75,6 +77,49 @@ After `serve()`, the background phase runs cosmetic recovery that need not finis
75
77
 
76
78
  Both passes live in `startup.ts`, `startupBeforeServe` before `serve()` and `startupAfterServe` after. A new blocking per-workspace step is added to `startupBeforeServe`, a new background step to `startupAfterServe`. Provisioning tied to one adapter stays next to that adapter's construction. Source loaders take part without a bespoke step, the sync in step 4 fires for any registered loader.
77
79
 
80
+ ## Source Freshness
81
+
82
+ Every sync trigger goes through `SourceSyncService`, which collapses concurrent triggers for one source into a single pass and records the outcome under `artifacts/source-sync-state/`. Calling `SourceLoaderRunner` directly still syncs, but takes no lock and records nothing.
83
+
84
+ A source opts in with `sync: { maxStalenessMs }` in `PRODUCT.md`. Two mechanisms act on that budget, and only the first is load-bearing.
85
+
86
+ - **The guarantee**: `ensureWorkspaceFresh` refreshes stale sources before a skill run reads them. Best effort and time-bounded, so an unreachable remote leaves the run on the previous mirror instead of failing it.
87
+ - **The optimisation**: `SourcePollingService` warms sources between reads, with per-source spread and exponential backoff. Stopping it costs latency, never staleness.
88
+
89
+ `polling: { enabled: false }` kills the poller for a workspace. The guarantee has no switch, since it can never block work.
90
+
91
+ ## Serving Studio
92
+
93
+ Point `BRAID_STUDIO_ROOT` at Studio's built files and this server serves them too. `@braidhq/studio` ships them, and its `assets` entry reports the path. One origin for the UI and the API keeps a deployment out of CORS on the path that matters. Unset changes nothing, which is what a dev install wants.
94
+
95
+ The static handler sits ahead of the auth gate, because the app shell is what a signed-out visitor loads in order to sign in. The API behind it stays gated.
96
+
97
+ ## Deployment
98
+
99
+ `Dockerfile` and `compose.yaml` at the repo root run the server with Studio on one origin. The image installs `git`, `uvx`, and `claude`, all three of which the server shells out to.
100
+
101
+ **Persist `BRAID_HOME`.** It holds the mirrors, the graph, the artifacts, and each workspace's git history. Without a volume every redeploy re-clones and loses the rest.
102
+
103
+ | Variable | Why |
104
+ |---|---|
105
+ | `BRAID_LOCAL_TRUST=false` | Requires a real login. Left true, every caller is trusted |
106
+ | `BRAID_STUDIO_URL` | Where users reach Studio, and the browser origin trusted by default |
107
+ | `BRAID_API_URL` | Where callers reach this API. Unset, it is loopback, and every OAuth redirect points at the deployment's own machine |
108
+ | `BRAID_STUDIO_ROOT` | Serve the UI from this process |
109
+ | `BRAID_GOOGLE_CLIENT_ID` / `_SECRET` | Google sign-in |
110
+ | `BRAID_ALLOWED_DOMAINS` | Restricts sign-in to your domains |
111
+ | `BRAID_ADMIN_EMAILS` | Who may create workspaces and manage the roster |
112
+ | `CLAUDE_CODE_OAUTH_TOKEN` | The agent's credential, from `claude setup-token` |
113
+ | `BRAID_CORS_ORIGINS` | Extra browser origins, only for a Studio served elsewhere |
114
+
115
+ Naming a real `BRAID_STUDIO_URL` stops localhost being trusted, so a dev origin has to be listed in `BRAID_CORS_ORIGINS` to keep working against that server.
116
+
117
+ `BRAID_API_URL` is the address the outside world uses. Both Google redirects derive from it, `/auth/google/callback` for signing in and `/oauth/google/callback` for connecting a Drive source, and each has to be registered in the Google console exactly as derived. Agents and the MCP gateway ignore it and call back on loopback, so a proxy, a split-horizon DNS, or a private certificate never breaks a skill run.
118
+
119
+ `CLAUDE_CODE_OAUTH_TOKEN` is one person's subscription, so every user's runs draw on that seat's limits. A Console API key bills more honestly for a shared server. Do not set `ANTHROPIC_API_KEY` alongside it, the key wins and the subscription goes unused.
120
+
121
+ For the desktop client, `pnpm bundle:remote` builds a shell without the embedded server, which is what someone connecting to a deployed server wants.
122
+
78
123
  ## Auth Mode
79
124
 
80
125
  One axis separates a trusted local install from an authenticated remote server, who the implicit user is. Rather than scatter that decision, an `AuthMode` strategy carries it, and the auth and ownership code reads the strategy, never a hardcoded `local-user`.
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AA+B/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,GAAE,UAAe,GAAG,WAAW,CAsMtF"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAgC/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,GAAE,UAAe,GAAG,WAAW,CA0OtF"}
package/dist/app.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { serveStatic } from '@hono/node-server/serve-static';
1
2
  import { OpenAPIHono } from '@hono/zod-openapi';
2
3
  import { authMiddleware } from './middleware/auth.js';
3
4
  import { corsMiddleware } from './middleware/cors.js';
@@ -13,7 +14,7 @@ import { healthRouter } from './routes/health.js';
13
14
  import { createHistoryRouter } from './routes/history.js';
14
15
  import { createModelRouter } from './routes/model.js';
15
16
  import { createNodesRouter } from './routes/nodes.js';
16
- import { createOAuthRouter } from './routes/oauth.js';
17
+ import { createOAuthCallbackRouter, createOAuthStartRouter, OAuthFlowStore } from './routes/oauth.js';
17
18
  import { createOntologiesRouter } from './routes/ontologies.js';
18
19
  import { createOntologyRouter } from './routes/ontology.js';
19
20
  import { createProposalsRouter } from './routes/proposals.js';
@@ -21,6 +22,7 @@ import { createReactorCyclesRouter } from './routes/reactorCycles.js';
21
22
  import { createRunsRouter } from './routes/runs.js';
22
23
  import { createSkillInputOptionsRouter } from './routes/skillInputOptions.js';
23
24
  import { createSkillsRouter } from './routes/skills.js';
25
+ import { createSourceConnectionRouter } from './routes/sourceConnection.js';
24
26
  import { createSourceLoadersRouter } from './routes/sourceLoaders.js';
25
27
  import { createSourceUnitObservationsRouter } from './routes/sourceUnitObservations.js';
26
28
  import { createGithubWebhookReceiver, createSourceWebhooksAdminRouter } from './routes/sourceWebhooks.js';
@@ -31,9 +33,18 @@ import { createWorkspacesRouter } from './routes/workspaces.js';
31
33
  export function createApp(deps, options = {}) {
32
34
  const app = new OpenAPIHono();
33
35
  // Global middleware, every request passes these in order.
34
- app.use('*', options.corsOrigins
35
- ? corsMiddleware({ allowedOrigins: options.corsOrigins })
36
- : corsMiddleware());
36
+ const corsOrigins = deps.corsOrigins ?? options.corsOrigins;
37
+ app.use('*', corsOrigins ? corsMiddleware({ allowedOrigins: corsOrigins }) : corsMiddleware());
38
+ // The app shell is what a signed-out visitor loads in order to sign in,
39
+ // so it mounts before the auth gate.
40
+ // Gating it would leave nobody able to reach the login screen,
41
+ // while the API behind it stays gated. Vite emits `index.html` and `assets/`,
42
+ // neither of which can collide with an API prefix,
43
+ // and a miss falls through to the routes below.
44
+ if (deps.studioRoot) {
45
+ const root = deps.studioRoot;
46
+ app.use('/*', serveStatic({ root, index: 'index.html' }));
47
+ }
37
48
  // Identity and auth gate. Resolves the caller's `userId` from a Bearer session
38
49
  // when auth is enforced, else the `X-Braid-User` header or the default principal.
39
50
  // Non-public routes that lack a required Bearer token are rejected.
@@ -72,8 +83,12 @@ export function createApp(deps, options = {}) {
72
83
  app.route('/workspaces', createWorkspacesRouter({
73
84
  workspaceService: deps.workspaceService,
74
85
  sourceLoaderRunner: deps.sourceLoaderRunner,
86
+ sourceSyncService: deps.sourceSyncService,
87
+ sourcePollingService: deps.sourcePollingService,
88
+ syncStateRepository: deps.syncStateRepository,
75
89
  workspacesRoot: deps.workspacesRoot,
76
90
  pluginRegistry: deps.pluginRegistry,
91
+ ...(deps.defaultOntologyId ? { defaultOntologyId: deps.defaultOntologyId } : {}),
77
92
  ...(deps.bootstrap ? { bootstrap: deps.bootstrap } : {}),
78
93
  ...(deps.workspaceRegistry ? { workspaceRegistry: deps.workspaceRegistry } : {}),
79
94
  ...(deps.userRegistry ? { userRegistry: deps.userRegistry } : {}),
@@ -93,11 +108,15 @@ export function createApp(deps, options = {}) {
93
108
  if (deps.secretStore) {
94
109
  app.route('/webhooks', createGithubWebhookReceiver({
95
110
  workspaceService: deps.workspaceService,
96
- sourceLoaderRunner: deps.sourceLoaderRunner,
111
+ sourceSyncService: deps.sourceSyncService,
112
+ ...(deps.isWorkspaceBusy ? { isWorkspaceBusy: deps.isWorkspaceBusy } : {}),
97
113
  secretStore: deps.secretStore,
98
114
  pluginRegistry: deps.pluginRegistry,
99
115
  }));
100
116
  }
117
+ // Shared by the OAuth start and callback routers,
118
+ // so a flow opened by start is resolved by callback.
119
+ const oauthFlowStore = new OAuthFlowStore();
101
120
  // Workspace-scoped sub-app, mounted under `/workspaces/:workspaceId` below.
102
121
  const workspaceScoped = new OpenAPIHono();
103
122
  workspaceScoped.use('*', workspaceIdMiddleware);
@@ -148,6 +167,7 @@ export function createApp(deps, options = {}) {
148
167
  skillRunner: deps.skillRunner,
149
168
  workspaceRepository: deps.workspaceRepository,
150
169
  sourceUnitObservationService: deps.sourceUnitObservationService,
170
+ sourceSyncService: deps.sourceSyncService,
151
171
  runRepository: deps.runRepository,
152
172
  pluginRegistry: deps.pluginRegistry,
153
173
  }));
@@ -173,6 +193,7 @@ export function createApp(deps, options = {}) {
173
193
  pluginRegistry: deps.pluginRegistry,
174
194
  ...(options.apiUrl ? { apiUrl: options.apiUrl } : {}),
175
195
  }));
196
+ workspaceScoped.route('/source-connections', createSourceConnectionRouter({ secretStore: deps.secretStore, workspaceService: deps.workspaceService }));
176
197
  }
177
198
  workspaceScoped.route('/skill-input-options', createSkillInputOptionsRouter({
178
199
  modelRepository: deps.modelRepository,
@@ -194,9 +215,23 @@ export function createApp(deps, options = {}) {
194
215
  }
195
216
  app.route('/workspaces/:workspaceId', workspaceScoped);
196
217
  if (deps.secretStore) {
197
- app.route('/oauth', createOAuthRouter({
218
+ // Start is owner-gated in-handler,
219
+ // so an existing workspace needs `workspace.write`,
220
+ // while the Wizard can connect before scaffold.
221
+ app.route('/oauth', createOAuthStartRouter({
222
+ secretStore: deps.secretStore,
223
+ flowStore: oauthFlowStore,
224
+ ...(deps.googleOAuth ? { google: deps.googleOAuth } : {}),
225
+ ...(deps.githubOAuth ? { github: deps.githubOAuth } : {}),
226
+ ...(deps.userRegistry ? { userRegistry: deps.userRegistry } : {}),
227
+ workspaceService: deps.workspaceService,
228
+ ...(deps.workspaceRegistry ? { workspaceRegistry: deps.workspaceRegistry } : {}),
229
+ }));
230
+ app.route('/oauth', createOAuthCallbackRouter({
198
231
  secretStore: deps.secretStore,
232
+ flowStore: oauthFlowStore,
199
233
  ...(deps.googleOAuth ? { google: deps.googleOAuth } : {}),
234
+ ...(deps.githubOAuth ? { github: deps.githubOAuth } : {}),
200
235
  }));
201
236
  }
202
237
  // OpenAPI 3 spec, consumed by openapi-mcp-gateway, to surface REST operations as MCP tools.
@@ -204,8 +239,12 @@ export function createApp(deps, options = {}) {
204
239
  // they mount plain Hono sub-routers, so they never register with the doc.
205
240
  // The `servers[]` block lets the gateway resolve the upstream base URL,
206
241
  // without an explicit --base-url flag.
207
- app.doc('/openapi.json', {
208
- openapi: '3.0.0',
242
+ // 3.1 so schemas are JSON Schema 2020-12,
243
+ // the dialect a tool `input_schema` is validated against.
244
+ // A 3.0 doc emits `nullable` and boolean `exclusiveMinimum`,
245
+ // which the model API rejects once the gateway forwards them as MCP tool schemas.
246
+ app.doc31('/openapi.json', {
247
+ openapi: '3.1.0',
209
248
  info: {
210
249
  title: 'Braid REST API',
211
250
  version: '0.0.1',
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
- import type { BatchPlanRepository, ClarificationRepository, Clock, ModelRepository, ModelSerializer, ProposalRepository, ReactorCycleRepository, RunRepository, SkillRegistry, SkillRunner, SourceUnitDigest, SourceUnitObservationRepository, UnitLister, UserDirectory, WorkspaceBootstrapService, WorkspaceEventBus, WorkspaceHistory, WorkspaceRepository } from '@braidhq/core';
2
- import type { AbsolutePath } from '@braidhq/schema';
1
+ import type { BatchPlanRepository, ClarificationRepository, Clock, ModelRepository, ModelSerializer, ProposalRepository, ReactorCycleRepository, RunRepository, SkillRegistry, SkillRunner, SourceSyncStateRepository, SourceUnitDigest, SourceUnitObservationRepository, UnitLister, UserDirectory, WorkspaceBootstrapService, WorkspaceEventBus, WorkspaceHistory, WorkspaceRepository } from '@braidhq/core';
2
+ import type { AbsolutePath, OntologyId, WorkspaceId } from '@braidhq/schema';
3
3
  import type { AuthMode } from './authMode.js';
4
4
  import type { AccessPolicy } from './infrastructure/auth/AccessPolicy.js';
5
5
  import type { SessionStore } from './infrastructure/auth/SessionStore.js';
6
+ import type { GitHubOAuth } from './infrastructure/oauth/GitHubOAuth.js';
6
7
  import type { GoogleOAuth } from './infrastructure/oauth/GoogleOAuth.js';
7
8
  import type { SecretStore } from './infrastructure/secrets/SecretStore.js';
8
9
  import type { UserRegistryFile } from './infrastructure/users/UserRegistryFile.js';
9
10
  import type { WorkspaceRegistryFile } from './infrastructure/workspace/WorkspaceRegistryFile.js';
10
- import { BatchService, HistoryService, HITLService, ModelService, ModelValidationService, PluginRegistry, ReactorService, SourceLoaderRunner, SourceUnitObservationService, WorkspaceService } from '@braidhq/core';
11
+ import { BatchService, HistoryService, HITLService, ModelService, ModelValidationService, PluginRegistry, ReactorService, SourceLoaderRunner, SourcePollingService, SourceSyncService, SourceUnitObservationService, WorkspaceService } from '@braidhq/core';
11
12
  /**
12
13
  * The assembled application, what routes and middleware consume.
13
14
  * A required field is always present.
@@ -20,6 +21,10 @@ export interface AppDependencies {
20
21
  modelService: ModelService;
21
22
  modelValidationService: ModelValidationService;
22
23
  sourceLoaderRunner: SourceLoaderRunner;
24
+ sourceSyncService: SourceSyncService;
25
+ sourcePollingService: SourcePollingService;
26
+ syncStateRepository: SourceSyncStateRepository;
27
+ isWorkspaceBusy?: (workspaceId: WorkspaceId) => boolean;
23
28
  sourceUnitObservationService: SourceUnitObservationService;
24
29
  historyService?: HistoryService;
25
30
  batchService?: BatchService;
@@ -38,6 +43,7 @@ export interface AppDependencies {
38
43
  pluginRegistry: PluginRegistry;
39
44
  clock: Clock;
40
45
  workspacesRoot: AbsolutePath;
46
+ defaultOntologyId?: OntologyId;
41
47
  bootstrap?: WorkspaceBootstrapService;
42
48
  authMode: AuthMode;
43
49
  userRegistry?: UserRegistryFile;
@@ -46,7 +52,10 @@ export interface AppDependencies {
46
52
  accessPolicy?: AccessPolicy;
47
53
  secretStore?: SecretStore;
48
54
  googleOAuth?: GoogleOAuth;
55
+ githubOAuth?: GitHubOAuth;
49
56
  studioUrl?: string;
57
+ studioRoot?: string;
58
+ corsOrigins?: readonly string[];
50
59
  }
51
60
  /**
52
61
  * Every field is optional, an unset one falls to an in-memory default.
@@ -63,7 +72,9 @@ export interface ComposeOptions {
63
72
  runRepository?: RunRepository;
64
73
  reactorCycleRepository?: ReactorCycleRepository;
65
74
  sourceUnitObservationRepository?: SourceUnitObservationRepository;
75
+ sourceSyncStateRepository?: SourceSyncStateRepository;
66
76
  batchPlanRepository?: BatchPlanRepository;
77
+ isWorkspaceBusy?: (workspaceId: WorkspaceId) => boolean;
67
78
  unitLister?: UnitLister;
68
79
  sourceUnitDigest?: SourceUnitDigest;
69
80
  reactorToken?: () => Promise<string | undefined>;
@@ -75,6 +86,7 @@ export interface ComposeOptions {
75
86
  userDirectory?: UserDirectory;
76
87
  authMode?: AuthMode;
77
88
  workspacesRoot?: AbsolutePath;
89
+ defaultOntologyId?: OntologyId;
78
90
  }
79
91
  export declare function composeApp(options?: ComposeOptions): AppDependencies;
80
92
  //# sourceMappingURL=composeApp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composeApp.d.ts","sourceRoot":"","sources":["../src/composeApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composeApp.d.ts","sourceRoot":"","sources":["../src/composeApp.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { tmpdir } from 'node:os';
2
2
  import { join } from 'node:path';
3
- import { BatchService, createLogger, HistoryService, HITLService, ModelService, ModelValidationService, PluginRegistry, ReactorService, SourceLoaderRunner, SourceUnitObservationService, SystemClock, SystemScheduler, WorkspaceLock, WorkspaceService, } from '@braidhq/core';
4
- import { InMemoryClarificationRepository, InMemoryModelRepository, InMemoryProposalRepository, InMemoryReactorCycleRepository, InMemorySourceUnitObservationRepository, InMemoryWorkspaceEventBus, InMemoryWorkspaceRepository, NoopRunRepository, } from '@braidhq/core/in-memory';
3
+ import { BatchService, createLogger, HistoryService, HITLService, ModelService, ModelValidationService, PluginRegistry, ReactorService, SourceLoaderRunner, SourcePollingService, SourceSyncService, SourceUnitObservationService, SystemClock, SystemScheduler, TaskCoalescer, WorkspaceLock, WorkspaceService, } from '@braidhq/core';
4
+ import { InMemoryClarificationRepository, InMemoryModelRepository, InMemoryProposalRepository, InMemoryReactorCycleRepository, InMemorySourceSyncStateRepository, InMemorySourceUnitObservationRepository, InMemoryWorkspaceEventBus, InMemoryWorkspaceRepository, NoopRunRepository, } from '@braidhq/core/in-memory';
5
5
  import { localTrust } from './authMode.js';
6
6
  export function composeApp(options = {}) {
7
7
  const clock = options.clock ?? new SystemClock();
@@ -10,11 +10,32 @@ export function composeApp(options = {}) {
10
10
  const modelRepository = options.modelRepository ?? new InMemoryModelRepository();
11
11
  const workspaceRepository = options.workspaceRepository ?? new InMemoryWorkspaceRepository();
12
12
  const pluginRegistry = options.pluginRegistry ?? new PluginRegistry();
13
+ // A build registering exactly one ontology has no ambiguity to resolve,
14
+ // so a scaffold that names none gets that one rather than a hardwired id.
15
+ const ontologies = pluginRegistry.ontologies();
16
+ const defaultOntologyId = options.defaultOntologyId
17
+ ?? (ontologies.length === 1 ? ontologies[0]?.ontologyId : undefined);
13
18
  const eventBus = options.eventBus ?? new InMemoryWorkspaceEventBus();
14
19
  const workspaceService = new WorkspaceService({ workspaceRepository, pluginRegistry });
15
20
  const modelService = new ModelService({ modelRepository });
16
21
  const modelValidationService = new ModelValidationService({ pluginRegistry });
17
22
  const sourceLoaderRunner = new SourceLoaderRunner({ pluginRegistry, clock, eventBus });
23
+ const syncStateRepository = options.sourceSyncStateRepository ?? new InMemorySourceSyncStateRepository();
24
+ const sourceSyncService = new SourceSyncService({
25
+ sourceLoaderRunner,
26
+ syncStateRepository,
27
+ coalescer: new TaskCoalescer(),
28
+ clock,
29
+ logger: createLogger('source-sync'),
30
+ });
31
+ const sourcePollingService = new SourcePollingService({
32
+ sourceSyncService,
33
+ workspaceService,
34
+ scheduler: new SystemScheduler(),
35
+ clock,
36
+ logger: createLogger('source-polling'),
37
+ ...(options.isWorkspaceBusy ? { isWorkspaceBusy: options.isWorkspaceBusy } : {}),
38
+ });
18
39
  // Shared lock domain so HITL mutations and history restore exclude each other.
19
40
  const workspaceLock = new WorkspaceLock();
20
41
  const hitlService = new HITLService({
@@ -108,6 +129,10 @@ export function composeApp(options = {}) {
108
129
  modelService,
109
130
  modelValidationService,
110
131
  sourceLoaderRunner,
132
+ sourceSyncService,
133
+ sourcePollingService,
134
+ syncStateRepository,
135
+ ...(options.isWorkspaceBusy ? { isWorkspaceBusy: options.isWorkspaceBusy } : {}),
111
136
  eventBus,
112
137
  pluginRegistry,
113
138
  proposalRepository,
@@ -118,6 +143,7 @@ export function composeApp(options = {}) {
118
143
  skillRunner: options.skillRunner,
119
144
  runRepository: options.runRepository ?? new NoopRunRepository(),
120
145
  workspacesRoot: options.workspacesRoot ?? join(tmpdir(), 'braid-workspaces'),
146
+ ...(defaultOntologyId ? { defaultOntologyId } : {}),
121
147
  // `composeApp` is the test and in-memory composition entry.
122
148
  // It defaults to local trust, the local-user fallback,
123
149
  // so a test that wires a sessionStore still resolves a caller.
@@ -1 +1 @@
1
- {"version":3,"file":"composeApp.js","sourceRoot":"","sources":["../src/composeApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composeApp.js","sourceRoot":"","sources":["../src/composeApp.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,57 @@
1
1
  import type { AgentPlugin, OntologyPlugin, SourceLoaderPlugin, StoragePlugin } from '@braidhq/core';
2
- import type { AgentEffort, StorageKind } from '@braidhq/schema';
2
+ import type { AgentEffort, OntologyId, StorageKind } from '@braidhq/schema';
3
3
  import type { AppDependencies } from './composeApp.js';
4
+ import { PluginRegistry } from '@braidhq/core';
4
5
  import { AgentKind } from '@braidhq/schema';
5
- export interface ComposeFsOptions {
6
+ import { GitHubOAuth } from './infrastructure/oauth/GitHubOAuth.js';
7
+ import { GoogleOAuth } from './infrastructure/oauth/GoogleOAuth.js';
8
+ import { type SecretStore } from './infrastructure/secrets/SecretStore.js';
9
+ export interface ComposeFsRuntimeOptions {
6
10
  readonly braidHome?: string;
7
11
  readonly apiUrl?: string;
12
+ readonly loopbackApiUrl?: string;
8
13
  readonly storageKind?: StorageKind;
9
14
  readonly agentKind?: AgentKind;
10
15
  readonly agentModel?: string;
11
16
  readonly agentEffort?: AgentEffort;
17
+ readonly defaultOntologyId?: OntologyId;
18
+ }
19
+ export interface ExtraPluginOptions {
12
20
  readonly extraStoragePlugins?: readonly StoragePlugin[];
13
21
  readonly extraOntologyPlugins?: readonly OntologyPlugin[];
14
22
  readonly extraSourceLoaderPlugins?: readonly SourceLoaderPlugin[];
15
23
  readonly extraAgentPlugins?: readonly AgentPlugin[];
16
24
  }
25
+ export type ComposeFsOptions = ComposeFsRuntimeOptions & ExtraPluginOptions;
26
+ /**
27
+ * What the fs runtime has already built by the time it asks for a registry.
28
+ * The OAuth-backed loaders need the secret store and the provider clients,
29
+ * both derived from `braidHome` and `apiUrl`, so a caller-supplied plugin
30
+ * reads them from here rather than rebuilding them.
31
+ * `googleOAuth` and `githubOAuth` are absent when their env is unset.
32
+ */
33
+ export interface FsRuntimeContext {
34
+ readonly braidHome: string;
35
+ readonly apiUrl: string;
36
+ readonly secretStore: SecretStore;
37
+ readonly googleOAuth?: GoogleOAuth;
38
+ readonly githubOAuth?: GitHubOAuth;
39
+ }
40
+ /** Yields the registry the fs runtime resolves storage, agent, and ontology from. */
41
+ export type PluginRegistryFactory = (context: FsRuntimeContext) => PluginRegistry | Promise<PluginRegistry>;
42
+ /**
43
+ * The source loaders a default Braid build ships with.
44
+ * Exported so a third-party composition can take the git, github, and drive
45
+ * loaders without inheriting the rest of the coding preset.
46
+ */
47
+ export declare function defaultSourceLoaderPlugins(context: FsRuntimeContext): readonly SourceLoaderPlugin[];
48
+ /**
49
+ * The registry `composeFsApp` runs on, the coding preset's whole bundle.
50
+ * Defaults register first, then the caller's extras,
51
+ * so `extraOntologyPlugins: [c4]` yields both ddd and c4.
52
+ * The active one is chosen per-workspace via PRODUCT.md.ontologyId.
53
+ */
54
+ export declare function defaultPluginRegistry(context: FsRuntimeContext, options?: ExtraPluginOptions): PluginRegistry;
17
55
  /**
18
56
  * Opinionated production composition, the coding preset.
19
57
  * Filesystem-persists workspaces, proposals, and clarifications,
@@ -21,7 +59,18 @@ export interface ComposeFsOptions {
21
59
  * loaders, and the claude-code agent.
22
60
  *
23
61
  * To run a different plugin set, either pass `extraXxxPlugins` and flip
24
- * `storageKind` or `agentKind`, or call `composeApp` with your own registry.
62
+ * `storageKind` or `agentKind`, or hand `composeFsAppWithRegistry` a registry
63
+ * holding only the plugins you want.
25
64
  */
26
65
  export declare function composeFsApp(options?: ComposeFsOptions): Promise<AppDependencies>;
66
+ /**
67
+ * The same filesystem runtime as `composeFsApp`, over a registry you build.
68
+ * Storage and agent resolve from whatever `buildRegistry` registered, under
69
+ * `storageKind` and `agentKind`, so a composition that omits the coding
70
+ * preset's ontology and loaders still gets the subprocess skill runner, the
71
+ * fs unit lister, and every fs repository, and so a batch runs unchanged.
72
+ */
73
+ export declare function composeFsAppWithRegistry(buildRegistry: PluginRegistryFactory, options?: ComposeFsRuntimeOptions): Promise<AppDependencies>;
74
+ /** A base URL a path can be appended to, whatever the operator typed. */
75
+ export declare function withoutTrailingSlash(url: string): string;
27
76
  //# sourceMappingURL=composeFsApp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composeFsApp.d.ts","sourceRoot":"","sources":["../src/composeFsApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACnG,OAAO,KAAK,EAAwC,WAAW,EAAE,WAAW,EAAe,MAAM,iBAAiB,CAAA;AAClH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAgBtD,OAAO,EAAW,SAAS,EAAoC,MAAM,iBAAiB,CAAA;AAyCtF,MAAM,WAAW,gBAAgB;IAI/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAIxB,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAKlC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACvD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IACzD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;CACpD;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqR3F"}
1
+ {"version":3,"file":"composeFsApp.d.ts","sourceRoot":"","sources":["../src/composeFsApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACnG,OAAO,KAAK,EAAwC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,iBAAiB,CAAA;AAC9H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAOtD,OAAO,EAGL,cAAc,EAGf,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAW,SAAS,EAAoC,MAAM,iBAAiB,CAAA;AAiBtF,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,yCAAyC,CAAA;AA0BzF,MAAM,WAAW,uBAAuB;IAStC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAIhC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAKlC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAA;CACxC;AAED,MAAM,WAAW,kBAAkB;IAIjC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACvD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IACzD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;CACpD;AAED,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,kBAAkB,CAAA;AAE3E;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC;AAED,qFAAqF;AACrF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAE3G;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,kBAAkB,EAAE,CA2CnG;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,GAAE,kBAAuB,GAAG,cAAc,CAqBjH;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAE3F;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,qBAAqB,EACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,eAAe,CAAC,CAuQ1B;AAqED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD"}