@bevel-software/platform-core-backend 0.21.0 → 0.22.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.
- package/dist/core/create-core-server.d.ts.map +1 -1
- package/dist/core/create-core-server.js +32 -2
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +13 -1
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +51 -5
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/modules/access/access-requests.contract.d.ts +75 -0
- package/dist/modules/access/access-requests.contract.d.ts.map +1 -0
- package/dist/modules/access/access-requests.contract.js +20 -0
- package/dist/modules/access/access-requests.contract.js.map +1 -0
- package/dist/modules/access/access-requests.routes.d.ts +35 -0
- package/dist/modules/access/access-requests.routes.d.ts.map +1 -0
- package/dist/modules/access/access-requests.routes.js +237 -0
- package/dist/modules/access/access-requests.routes.js.map +1 -0
- package/dist/modules/access/access-requests.service.d.ts +123 -0
- package/dist/modules/access/access-requests.service.d.ts.map +1 -0
- package/dist/modules/access/access-requests.service.js +337 -0
- package/dist/modules/access/access-requests.service.js.map +1 -0
- package/dist/modules/access-model/access-grammar.d.ts +12 -0
- package/dist/modules/access-model/access-grammar.d.ts.map +1 -1
- package/dist/modules/access-model/access-grammar.js +24 -0
- package/dist/modules/access-model/access-grammar.js.map +1 -1
- package/dist/modules/auth/auth.service.d.ts +26 -1
- package/dist/modules/auth/auth.service.d.ts.map +1 -1
- package/dist/modules/auth/auth.service.js +11 -2
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/github-app/github-app.client.d.ts +101 -0
- package/dist/modules/github-app/github-app.client.d.ts.map +1 -0
- package/dist/modules/github-app/github-app.client.js +222 -0
- package/dist/modules/github-app/github-app.client.js.map +1 -0
- package/dist/modules/github-app/github-app.connection.d.ts +102 -0
- package/dist/modules/github-app/github-app.connection.d.ts.map +1 -0
- package/dist/modules/github-app/github-app.connection.js +185 -0
- package/dist/modules/github-app/github-app.connection.js.map +1 -0
- package/dist/modules/github-app/github-app.routes.d.ts +59 -0
- package/dist/modules/github-app/github-app.routes.d.ts.map +1 -0
- package/dist/modules/github-app/github-app.routes.js +323 -0
- package/dist/modules/github-app/github-app.routes.js.map +1 -0
- package/dist/modules/github-app/index.d.ts +4 -0
- package/dist/modules/github-app/index.d.ts.map +1 -0
- package/dist/modules/github-app/index.js +4 -0
- package/dist/modules/github-app/index.js.map +1 -0
- package/dist/modules/kb-fs/remote-url.d.ts +22 -0
- package/dist/modules/kb-fs/remote-url.d.ts.map +1 -0
- package/dist/modules/kb-fs/remote-url.js +35 -0
- package/dist/modules/kb-fs/remote-url.js.map +1 -0
- package/dist/modules/plugins/join-proposals.d.ts +17 -5
- package/dist/modules/plugins/join-proposals.d.ts.map +1 -1
- package/dist/modules/plugins/join-proposals.js +76 -22
- package/dist/modules/plugins/join-proposals.js.map +1 -1
- package/dist/modules/plugins/join-requests.service.d.ts +111 -18
- package/dist/modules/plugins/join-requests.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-requests.service.js +173 -29
- package/dist/modules/plugins/join-requests.service.js.map +1 -1
- package/dist/modules/plugins/plugins.routes.d.ts.map +1 -1
- package/dist/modules/plugins/plugins.routes.js +3 -2
- package/dist/modules/plugins/plugins.routes.js.map +1 -1
- package/dist/modules/settings/deployment-settings.service.d.ts +22 -1
- package/dist/modules/settings/deployment-settings.service.d.ts.map +1 -1
- package/dist/modules/settings/deployment-settings.service.js +93 -4
- package/dist/modules/settings/deployment-settings.service.js.map +1 -1
- package/dist/modules/settings/managed-repository.d.ts +43 -0
- package/dist/modules/settings/managed-repository.d.ts.map +1 -0
- package/dist/modules/settings/managed-repository.js +60 -0
- package/dist/modules/settings/managed-repository.js.map +1 -0
- package/dist/modules/settings/repository-source.d.ts +128 -0
- package/dist/modules/settings/repository-source.d.ts.map +1 -0
- package/dist/modules/settings/repository-source.js +150 -0
- package/dist/modules/settings/repository-source.js.map +1 -0
- package/dist/modules/settings/setup.routes.d.ts +27 -4
- package/dist/modules/settings/setup.routes.d.ts.map +1 -1
- package/dist/modules/settings/setup.routes.js +187 -13
- package/dist/modules/settings/setup.routes.js.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.d.ts +6 -8
- package/dist/modules/skills/skill-access-requests.routes.d.ts.map +1 -1
- package/dist/modules/skills/skill-access-requests.routes.js +24 -63
- package/dist/modules/skills/skill-access-requests.routes.js.map +1 -1
- package/dist/modules/tool-helpers/tool-context.d.ts.map +1 -1
- package/dist/modules/tool-helpers/tool-context.js +15 -0
- package/dist/modules/tool-helpers/tool-context.js.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.d.ts.map +1 -1
- package/dist/modules/workflow/agent-tools/workflow.tools.js +38 -2
- package/dist/modules/workflow/agent-tools/workflow.tools.js.map +1 -1
- package/dist/modules/workflow/git/git.service.d.ts +3 -1
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +17 -4
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.d.ts.map +1 -1
- package/dist/modules/workflow/git/node-git-runner.js +5 -0
- package/dist/modules/workflow/git/node-git-runner.js.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.d.ts +45 -0
- package/dist/modules/workflow/git/pull-request.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/pull-request.service.js +99 -0
- package/dist/modules/workflow/git/pull-request.service.js.map +1 -1
- package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.routes.js +3 -1
- package/dist/modules/workflow/workflow.routes.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts +34 -7
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +148 -48
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts +66 -0
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.js +148 -0
- package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +17 -1
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +28 -2
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/shared/domain-errors.d.ts +39 -0
- package/dist/shared/domain-errors.d.ts.map +1 -1
- package/dist/shared/domain-errors.js +55 -0
- package/dist/shared/domain-errors.js.map +1 -1
- package/dist/shared/git.contract.d.ts +10 -0
- package/dist/shared/git.contract.d.ts.map +1 -1
- package/dist/shared/git.contract.js.map +1 -1
- package/package.json +3 -3
- package/src/core/create-core-server.ts +37 -1
- package/src/core/create-core-services.ts +65 -8
- package/src/modules/access/__tests__/access-requests.recut.test.ts +134 -0
- package/src/modules/access/__tests__/access-requests.routes.test.ts +610 -0
- package/src/modules/access/access-requests.contract.ts +93 -0
- package/src/modules/access/access-requests.routes.ts +286 -0
- package/src/modules/access/access-requests.service.ts +420 -0
- package/src/modules/access-model/access-grammar.ts +22 -0
- package/src/modules/auth/__tests__/auth.service.test.ts +38 -0
- package/src/modules/auth/auth.service.ts +28 -1
- package/src/modules/github-app/__tests__/github-app.test.ts +848 -0
- package/src/modules/github-app/github-app.client.ts +268 -0
- package/src/modules/github-app/github-app.connection.ts +204 -0
- package/src/modules/github-app/github-app.routes.ts +359 -0
- package/src/modules/github-app/index.ts +19 -0
- package/src/modules/kb-fs/__tests__/remote-url.test.ts +38 -0
- package/src/modules/kb-fs/remote-url.ts +35 -0
- package/src/modules/plugins/__tests__/join-proposals.test.ts +100 -19
- package/src/modules/plugins/__tests__/join-requests.service.test.ts +27 -11
- package/src/modules/plugins/__tests__/join-requests.settlement.test.ts +371 -0
- package/src/modules/plugins/__tests__/plugins.routes.test.ts +1 -1
- package/src/modules/plugins/join-proposals.ts +87 -19
- package/src/modules/plugins/join-requests.service.ts +199 -39
- package/src/modules/plugins/plugins.routes.ts +3 -2
- package/src/modules/settings/__tests__/repository-source.test.ts +191 -0
- package/src/modules/settings/__tests__/setup.routes.git-mode.test.ts +353 -0
- package/src/modules/settings/__tests__/setup.routes.github-app.test.ts +282 -0
- package/src/modules/settings/__tests__/setup.routes.managed-phase.test.ts +233 -0
- package/src/modules/settings/deployment-settings.service.ts +109 -3
- package/src/modules/settings/managed-repository.ts +68 -0
- package/src/modules/settings/repository-source.ts +197 -0
- package/src/modules/settings/setup.routes.ts +214 -10
- package/src/modules/skills/__tests__/skill-access-requests.routes.test.ts +5 -1
- package/src/modules/skills/skill-access-requests.routes.ts +25 -75
- package/src/modules/tool-helpers/tool-context.ts +15 -0
- package/src/modules/workflow/__tests__/apply-failure.test.ts +9 -1
- package/src/modules/workflow/__tests__/workflow.service.facade.test.ts +159 -8
- package/src/modules/workflow/__tests__/workflow.service.update-from-target.test.ts +146 -40
- package/src/modules/workflow/agent-tools/__tests__/workflow.tools.test.ts +141 -1
- package/src/modules/workflow/agent-tools/workflow.tools.ts +49 -3
- package/src/modules/workflow/git/__tests__/git.service.pull.test.ts +121 -0
- package/src/modules/workflow/git/__tests__/pull-request.service.getPrDetail.test.ts +145 -2
- package/src/modules/workflow/git/__tests__/pull-request.service.viewer-can-delete.test.ts +166 -0
- package/src/modules/workflow/git/git.service.ts +25 -4
- package/src/modules/workflow/git/node-git-runner.ts +6 -0
- package/src/modules/workflow/git/pull-request.service.ts +119 -0
- package/src/modules/workflow/workflow.routes.ts +3 -1
- package/src/modules/workflow/workflow.service.ts +170 -52
- package/src/modules/workspace/__tests__/workspace.service.unknown-branch.test.ts +43 -0
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +233 -7
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +35 -3
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +211 -0
- package/src/modules/workspace/startup/kb-startup-runner.ts +159 -0
- package/src/modules/workspace/workspace.service.ts +17 -1
- package/src/modules/workspace/workspace.tools.ts +35 -0
- package/src/shared/domain-errors.ts +58 -0
- package/src/shared/git.contract.ts +10 -0
|
@@ -8,6 +8,8 @@ import { isDefaultKbLayout, validateBranchModel, validateKbLayout, } from '@beve
|
|
|
8
8
|
import { failureOf } from '../../shared/git-failure.js';
|
|
9
9
|
import { redactSecret, urlQuerySecrets } from '../../shared/redact-secret.js';
|
|
10
10
|
import { listRootFolders, pickListingBranch } from './git-root-folders.js';
|
|
11
|
+
import { MANAGED_DEFAULT_BRANCH } from './managed-repository.js';
|
|
12
|
+
import { GIT_MODES } from './repository-source.js';
|
|
11
13
|
import '../auth/auth.middleware.js'; // Express Request augmentation
|
|
12
14
|
/** Which name a host expects beside the token when none is configured. */
|
|
13
15
|
const DEFAULT_GIT_USERNAME = 'x-access-token';
|
|
@@ -79,8 +81,14 @@ oidcRedirectUri = '',
|
|
|
79
81
|
/** The single sign-on check. Injected so route tests can answer for the provider. */
|
|
80
82
|
checkOidc = checkOidcConfiguration,
|
|
81
83
|
/** The issuer-only half, for a test with no application id or secret yet. */
|
|
82
|
-
checkIssuer = (url) => checkOidcIssuer(url)
|
|
84
|
+
checkIssuer = (url) => checkOidcIssuer(url),
|
|
85
|
+
/**
|
|
86
|
+
* The ways a deployment can be given its repository. Absent, there is the
|
|
87
|
+
* one there always was: an address and a token, read from the settings.
|
|
88
|
+
*/
|
|
89
|
+
repository) {
|
|
83
90
|
const router = express.Router();
|
|
91
|
+
const source = repository?.source;
|
|
84
92
|
/**
|
|
85
93
|
* Why the last setup-time run of the KB startup phase FAILED, or null. While
|
|
86
94
|
* set the deployment stays GATED: the settings are saved but the KB was
|
|
@@ -124,7 +132,28 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
124
132
|
return kbStartupRunner.lastFailureKind?.() ?? failureOf(message);
|
|
125
133
|
};
|
|
126
134
|
/** The app-gate answer: settings complete AND the KB phase settled clean, whoever ran it. */
|
|
127
|
-
const kbReady = () => isComplete(settings, kb) && kbInit === null && kbInitInFlight === null && bootFailure() === null;
|
|
135
|
+
const kbReady = () => isComplete(settings, kb, source) && kbInit === null && kbInitInFlight === null && bootFailure() === null;
|
|
136
|
+
/**
|
|
137
|
+
* Which ways of having a repository this deployment offers and which one
|
|
138
|
+
* it is on, for the setup screen. `mode` is the one IN EFFECT, inferred
|
|
139
|
+
* for a deployment that never chose; `chosen` is the one the settings
|
|
140
|
+
* say, which differs from it between a move and the restart the move
|
|
141
|
+
* owes. The screen opens on what was chosen, says a restart is pending
|
|
142
|
+
* when the two differ, and offers the first of `modes` to a deployment
|
|
143
|
+
* that has none. `pinned` names the variable that chose for the
|
|
144
|
+
* deployment, when one did. Nothing at all from a mount without the
|
|
145
|
+
* choice, which the screen reads as the one way there was.
|
|
146
|
+
*/
|
|
147
|
+
const repositoryStatus = () => source
|
|
148
|
+
? {
|
|
149
|
+
repository: {
|
|
150
|
+
mode: source.mode(),
|
|
151
|
+
chosen: source.chosen(),
|
|
152
|
+
...(settings.sourceOf('gitMode') === 'env' ? { pinned: 'GIT_MODE' } : {}),
|
|
153
|
+
modes: GIT_MODES.filter((mode) => mode !== 'github-app' || repository?.githubApp !== undefined),
|
|
154
|
+
},
|
|
155
|
+
}
|
|
156
|
+
: {};
|
|
128
157
|
const requireAdmin = async (req, res, next) => {
|
|
129
158
|
if (!(await adminAccess.isAdmin(req.userEmail))) {
|
|
130
159
|
res.status(403).json({ error: 'Admins only' });
|
|
@@ -157,9 +186,10 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
157
186
|
}
|
|
158
187
|
res.json({
|
|
159
188
|
complete: kbReady(),
|
|
160
|
-
awaitingRestart: awaitingRestart(settings, kb),
|
|
189
|
+
awaitingRestart: awaitingRestart(settings, kb, source),
|
|
161
190
|
isAdmin: true,
|
|
162
191
|
settings: settings.describe(),
|
|
192
|
+
...repositoryStatus(),
|
|
163
193
|
oidcVerification: await settings.oidcVerification(),
|
|
164
194
|
...(kbInit ? { kbInit } : bootFailure() !== null ? { kbInit: bootFailureKind() } : {}),
|
|
165
195
|
...(sync ? { sync: { url: sync.url, last: sync.lastSync() } } : {}),
|
|
@@ -200,7 +230,13 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
200
230
|
// save that flips it false→true — whichever field arrives last — is the
|
|
201
231
|
// one that must run the KB startup phase, regardless of which save
|
|
202
232
|
// configured the branch model.
|
|
203
|
-
const wasComplete = isComplete(settings, kb);
|
|
233
|
+
const wasComplete = isComplete(settings, kb, source);
|
|
234
|
+
// A different question, asked of the GATE: whether anyone is being
|
|
235
|
+
// served. Settings that are answered are not a deployment that works
|
|
236
|
+
// — one whose first clone failed has answered everything and serves
|
|
237
|
+
// nobody.
|
|
238
|
+
const wasServing = kbReady();
|
|
239
|
+
nameBranchesOfManagedRepository(entries);
|
|
204
240
|
if (!(await connectionHoldsFor(entries, wasComplete, res)))
|
|
205
241
|
return;
|
|
206
242
|
const oidc = await signInHoldsFor(entries, res);
|
|
@@ -214,7 +250,36 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
214
250
|
if (oidc.record) {
|
|
215
251
|
await settings.recordOidcVerification(oidc.record.state, oidc.record.credentials);
|
|
216
252
|
}
|
|
217
|
-
const
|
|
253
|
+
const saved = await settings.save(entries, req.userId ?? null);
|
|
254
|
+
/**
|
|
255
|
+
* A deployment that was not serving has nothing on the mode it had:
|
|
256
|
+
* the mode chosen takes effect now, and the startup phase below is
|
|
257
|
+
* what a restart would have run. One that WAS serving stays on the
|
|
258
|
+
* mode it is on, working copies and credential alike, until it is
|
|
259
|
+
* started again.
|
|
260
|
+
*
|
|
261
|
+
* SERVING, not answered. The pin protects what is running on the
|
|
262
|
+
* mode in effect, and behind a shut gate nothing is: a first run
|
|
263
|
+
* whose initialisation failed, a boot that found its repository
|
|
264
|
+
* unreachable. Pinned there, the way out of a repository that does
|
|
265
|
+
* not work would be closed — the admin chooses another, the retry
|
|
266
|
+
* below runs against the one that just failed, and the screen asks
|
|
267
|
+
* for a restart that changes nothing.
|
|
268
|
+
*/
|
|
269
|
+
if (source && !wasServing)
|
|
270
|
+
source.takeEffect();
|
|
271
|
+
/**
|
|
272
|
+
* The restart the mode owes is read off the two modes themselves, not
|
|
273
|
+
* off what this save wrote: it is owed for as long as the mode chosen
|
|
274
|
+
* is not the one in effect, whichever save chose it, and no longer
|
|
275
|
+
* once a save chooses the mode in effect back.
|
|
276
|
+
*/
|
|
277
|
+
const modePending = source !== undefined && source.chosen() !== source.mode();
|
|
278
|
+
const restartKeys = [
|
|
279
|
+
...saved.restartKeys.filter((key) => key !== 'gitMode'),
|
|
280
|
+
...(modePending ? ['gitMode'] : []),
|
|
281
|
+
];
|
|
282
|
+
const restartRequired = restartKeys.length > 0;
|
|
218
283
|
/** Whether this save put the stored folder names into the running process. */
|
|
219
284
|
let layoutApplied = false;
|
|
220
285
|
/** Whether this save put the stored branch model into the running process. */
|
|
@@ -257,7 +322,7 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
257
322
|
* on a re-save of a complete, healthy setup: with the gate open,
|
|
258
323
|
* sessions may be live and that is no longer a quiet moment.
|
|
259
324
|
*/
|
|
260
|
-
if ((!wasComplete || kbInit !== null || bootFailure() !== null) && isComplete(settings, kb)) {
|
|
325
|
+
if ((!wasComplete || kbInit !== null || bootFailure() !== null) && isComplete(settings, kb, source)) {
|
|
261
326
|
/**
|
|
262
327
|
* The folder names, applied BEFORE the phase for the same reason as
|
|
263
328
|
* the branch model above: they are otherwise applied once at boot, so
|
|
@@ -298,6 +363,7 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
298
363
|
const raw = initErr instanceof Error ? initErr.message : String(initErr);
|
|
299
364
|
const msg = redactSecret(raw, [
|
|
300
365
|
settings.resolve('gitToken'),
|
|
366
|
+
source?.credentials.token() ?? '',
|
|
301
367
|
...urlQuerySecrets(settings.resolve('kbRepoUrl')),
|
|
302
368
|
]);
|
|
303
369
|
log.error(`KB initialization failed after setup completed: ${msg}`);
|
|
@@ -321,8 +387,9 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
321
387
|
!(branchModelApplied && BRANCH_KEYS.includes(key)))
|
|
322
388
|
: restartRequired,
|
|
323
389
|
complete: kbReady(),
|
|
324
|
-
awaitingRestart: awaitingRestart(settings, kb),
|
|
390
|
+
awaitingRestart: awaitingRestart(settings, kb, source),
|
|
325
391
|
settings: settings.describe(),
|
|
392
|
+
...repositoryStatus(),
|
|
326
393
|
oidcVerification: await settings.oidcVerification(),
|
|
327
394
|
});
|
|
328
395
|
}
|
|
@@ -337,6 +404,92 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
337
404
|
res.status(500).json({ error: 'Could not save these settings.' });
|
|
338
405
|
}
|
|
339
406
|
}
|
|
407
|
+
/**
|
|
408
|
+
* A repository the deployment keeps for itself is new, and empty, and has
|
|
409
|
+
* no branches for anyone to look up: the branch model is ours to name. It
|
|
410
|
+
* is named only when nobody has — an admin's own answer, or one the
|
|
411
|
+
* environment supplies, stands. Every other mode has a repository that
|
|
412
|
+
* already exists, whose branches are asked for, never guessed.
|
|
413
|
+
*/
|
|
414
|
+
function nameBranchesOfManagedRepository(entries) {
|
|
415
|
+
if (!source)
|
|
416
|
+
return;
|
|
417
|
+
const after = settings.resolveAfter(entries);
|
|
418
|
+
if (source.mode(after) !== 'managed')
|
|
419
|
+
return;
|
|
420
|
+
if (after('defaultBranch') || after('protectedBranches'))
|
|
421
|
+
return;
|
|
422
|
+
entries.defaultBranch = MANAGED_DEFAULT_BRANCH;
|
|
423
|
+
entries.protectedBranches = MANAGED_DEFAULT_BRANCH;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* The same rule for a repository reached through a GitHub App: a saved
|
|
427
|
+
* connection is one GitHub has accepted for reading and writing, asked
|
|
428
|
+
* with the token git will present, which is the installation's.
|
|
429
|
+
*
|
|
430
|
+
* That token is also what keeps the repository's NAME honest. It is the
|
|
431
|
+
* one part of this connection an admin types, and a name the installation
|
|
432
|
+
* does not reach is refused here by GitHub, not by a list of ours.
|
|
433
|
+
*
|
|
434
|
+
* The repository has just said what it calls its trunk, so a deployment
|
|
435
|
+
* with no branch model is given that one: the same answer the setup
|
|
436
|
+
* screen fills in for a repository reached by its address.
|
|
437
|
+
*/
|
|
438
|
+
async function githubConnectionHoldsFor(setup, entries, after, wasComplete, res) {
|
|
439
|
+
const refuse = (problem, field = 'githubRepository') => {
|
|
440
|
+
res.status(400).json({ error: problem, problems: { [field]: problem } });
|
|
441
|
+
return false;
|
|
442
|
+
};
|
|
443
|
+
const app = setup.githubApp;
|
|
444
|
+
if (!app)
|
|
445
|
+
return refuse('This deployment cannot connect to GitHub through a GitHub App.', 'gitMode');
|
|
446
|
+
if (!app.answered(after)) {
|
|
447
|
+
return refuse(after('githubRepository')
|
|
448
|
+
? 'Connect GitHub before choosing a repository.'
|
|
449
|
+
: 'Choose the repository the knowledge base lives in.');
|
|
450
|
+
}
|
|
451
|
+
const url = app.url(after);
|
|
452
|
+
const unanswered = validateBranchModel({ defaultBranch: after('defaultBranch'), protectedBranches: after('protectedBranches') }) !== null;
|
|
453
|
+
// Against what is CHOSEN now, not what is in effect: a repository that
|
|
454
|
+
// was proven by the save that chose it is not proven again by the next.
|
|
455
|
+
const stored = (key) => settings.resolve(key);
|
|
456
|
+
const changes = setup.source.chosen() !== 'github-app' || url !== setup.source.url(stored);
|
|
457
|
+
if (!changes && (wasComplete || unanswered))
|
|
458
|
+
return true;
|
|
459
|
+
// BEFORE GitHub is asked anything with the installation token: that
|
|
460
|
+
// token reaches every repository the installation covers, and would
|
|
461
|
+
// answer for one the person connecting it could never have written to.
|
|
462
|
+
if (!app.permits(after('githubRepository'), after)) {
|
|
463
|
+
log.warn('a repository was named that the person who connected GitHub could not push to');
|
|
464
|
+
return refuse('Choose a repository your own GitHub account can write to. If this one should be, press “Refresh the list” so it is brought up to date.');
|
|
465
|
+
}
|
|
466
|
+
try {
|
|
467
|
+
await app.prepare({ asked: true });
|
|
468
|
+
}
|
|
469
|
+
catch (err) {
|
|
470
|
+
log.error('GitHub gave no token for the installation:', { detail: err instanceof Error ? err.message : String(err) });
|
|
471
|
+
}
|
|
472
|
+
const token = app.token();
|
|
473
|
+
if (!token) {
|
|
474
|
+
return refuse('GitHub gave this deployment no access. The app may have been uninstalled: connect it again.', 'gitMode');
|
|
475
|
+
}
|
|
476
|
+
const check = await checkConnection({ url, token, username: DEFAULT_GIT_USERNAME });
|
|
477
|
+
if (check.outcome !== 'connected') {
|
|
478
|
+
return refuse(check.outcome === 'read-only'
|
|
479
|
+
? 'The GitHub App can read that repository but not write to it. Grant it write access to the repository’s contents.'
|
|
480
|
+
: check.reason === 'unreachable'
|
|
481
|
+
? 'GitHub could not be reached. Try again shortly.'
|
|
482
|
+
: 'The GitHub App cannot reach that repository. Add the repository to the app’s installation on GitHub.');
|
|
483
|
+
}
|
|
484
|
+
if (!after('defaultBranch') && !after('protectedBranches')) {
|
|
485
|
+
const trunk = check.defaultBranch || check.branches[0] || (check.empty ? MANAGED_DEFAULT_BRANCH : '');
|
|
486
|
+
if (trunk) {
|
|
487
|
+
entries.defaultBranch = trunk;
|
|
488
|
+
entries.protectedBranches = trunk;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
return true;
|
|
492
|
+
}
|
|
340
493
|
/**
|
|
341
494
|
* A SAVED CONNECTION IS ONE THE HOST HAS ACCEPTED FOR READING AND WRITING.
|
|
342
495
|
*
|
|
@@ -358,6 +511,25 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
358
511
|
*/
|
|
359
512
|
async function connectionHoldsFor(entries, wasComplete, res) {
|
|
360
513
|
const after = settings.resolveAfter(entries);
|
|
514
|
+
if (repository && repository.source.mode(after) === 'managed') {
|
|
515
|
+
// Nothing to prove to a host: the repository is the deployment's own.
|
|
516
|
+
// What has to hold is that it EXISTS before the save that points
|
|
517
|
+
// everything at it, so a disk that cannot take it refuses the choice
|
|
518
|
+
// instead of failing the first clone.
|
|
519
|
+
try {
|
|
520
|
+
await repository.ensureManaged(after('defaultBranch') || MANAGED_DEFAULT_BRANCH);
|
|
521
|
+
return true;
|
|
522
|
+
}
|
|
523
|
+
catch (err) {
|
|
524
|
+
log.error('the managed repository could not be created:', { err });
|
|
525
|
+
const problem = 'The repository could not be created on this deployment’s storage. Check that its backups folder is writable, or connect a repository of your own.';
|
|
526
|
+
res.status(400).json({ error: problem, problems: { gitMode: problem } });
|
|
527
|
+
return false;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
if (repository && repository.source.mode(after) === 'github-app') {
|
|
531
|
+
return githubConnectionHoldsFor(repository, entries, after, wasComplete, res);
|
|
532
|
+
}
|
|
361
533
|
const now = {
|
|
362
534
|
url: settings.resolve('kbRepoUrl'),
|
|
363
535
|
token: settings.resolve('gitToken'),
|
|
@@ -670,8 +842,10 @@ checkIssuer = (url) => checkOidcIssuer(url)) {
|
|
|
670
842
|
* deployment signs in perfectly well without it, and gating on it would lock
|
|
671
843
|
* an admin out of the screen where they would set it up.
|
|
672
844
|
*/
|
|
673
|
-
export function settingsAnswered(settings
|
|
674
|
-
|
|
845
|
+
export function settingsAnswered(settings,
|
|
846
|
+
/** What answers for the repository. Absent: an address and a token, the one way there was. */
|
|
847
|
+
source) {
|
|
848
|
+
const kb = source ? source.answered() : Boolean(settings.resolve('kbRepoUrl') && settings.resolve('gitToken'));
|
|
675
849
|
const branches = validateBranchModel({
|
|
676
850
|
defaultBranch: settings.resolve('defaultBranch'),
|
|
677
851
|
protectedBranches: settings.resolve('protectedBranches'),
|
|
@@ -693,11 +867,11 @@ export function settingsAnswered(settings) {
|
|
|
693
867
|
* that puts it there. {@link awaitingRestart} is what tells the screen to ask
|
|
694
868
|
* for one rather than claim a field is missing.
|
|
695
869
|
*/
|
|
696
|
-
export function isComplete(settings, kb) {
|
|
697
|
-
return settingsAnswered(settings) && kb.isBranchModelConfigured();
|
|
870
|
+
export function isComplete(settings, kb, source) {
|
|
871
|
+
return settingsAnswered(settings, source) && kb.isBranchModelConfigured();
|
|
698
872
|
}
|
|
699
873
|
/** Answered, but not yet in effect: everything is stored, the process is stale. */
|
|
700
|
-
export function awaitingRestart(settings, kb) {
|
|
701
|
-
return settingsAnswered(settings) && !kb.isBranchModelConfigured();
|
|
874
|
+
export function awaitingRestart(settings, kb, source) {
|
|
875
|
+
return settingsAnswered(settings, source) && !kb.isBranchModelConfigured();
|
|
702
876
|
}
|
|
703
877
|
//# sourceMappingURL=setup.routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.routes.js","sourceRoot":"","sources":["../../../src/modules/settings/setup.routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.routes.js","sourceRoot":"","sources":["../../../src/modules/settings/setup.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import '../auth/auth.middleware.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { AuthUser, IWorkflowService } from '@bevel-software/platform-shared';
|
|
4
4
|
import type { IAccessControl } from '../access/access-control.interface.js';
|
|
5
5
|
import type { KbContext } from '../../shared/kb-context.js';
|
|
6
6
|
import type { WorkspaceService } from '../workspace/workspace.service.js';
|
|
@@ -16,13 +16,11 @@ import type { ISkillService } from './skills.contract.js';
|
|
|
16
16
|
*
|
|
17
17
|
* Why it exists: linking a skill into a plugin needs write on the skill's
|
|
18
18
|
* rules (the link grants the plugin's principal there), and a plugin manager
|
|
19
|
-
* often has no say over a skill some other scope owns. The request is
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* path rather than a plugin name — the branch-name convention takes any
|
|
25
|
-
* exact string).
|
|
19
|
+
* often has no say over a skill some other scope owns. The request is opened
|
|
20
|
+
* by the shared `AccessRequestsService` — the same one the Manage access
|
|
21
|
+
* dialog's Request access uses — keyed on the skill FOLDER path, so this
|
|
22
|
+
* button and a Can edit request on that same folder are ONE request, shown in
|
|
23
|
+
* the skill page's banner and in the folder's dialog alike.
|
|
26
24
|
*
|
|
27
25
|
* Fail-closed like the skill catalog: a skill the caller cannot read answers
|
|
28
26
|
* as unknown, and the editors' listing answers `[]` to anyone else.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-access-requests.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/skill-access-requests.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,4BAA4B,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"skill-access-requests.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/skill-access-requests.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAK5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,YAAY,EAAE,aAAa,CAAC;IAC5B,aAAa,EAAE,cAAc,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,EAAE,mBAAmB,CAAC;IAClC,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;CACjE,GAAG,OAAO,CAAC,MAAM,CA6GjB"}
|
|
@@ -2,11 +2,10 @@ import express from 'express';
|
|
|
2
2
|
import { logger } from '../../shared/logging.js';
|
|
3
3
|
const log = logger('skills');
|
|
4
4
|
import '../auth/auth.middleware.js'; // Express Request.userId / userEmail augmentation
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { folderTarget } from '../access/access-requests.contract.js';
|
|
6
|
+
import { AccessRequestsService } from '../access/access-requests.service.js';
|
|
7
7
|
import { WorkflowDomainError } from '../../shared/domain-errors.js';
|
|
8
8
|
import { domainErrorBody } from '../../shared/http-errors.js';
|
|
9
|
-
import { isAbsence } from '../../shared/fs.contract.js';
|
|
10
9
|
/**
|
|
11
10
|
* Asking for WRITE on a shared skill — the same machinery as asking to join a
|
|
12
11
|
* plugin, pointed at a skill folder instead of a plugin folder.
|
|
@@ -17,23 +16,29 @@ import { isAbsence } from '../../shared/fs.contract.js';
|
|
|
17
16
|
*
|
|
18
17
|
* Why it exists: linking a skill into a plugin needs write on the skill's
|
|
19
18
|
* rules (the link grants the plugin's principal there), and a plugin manager
|
|
20
|
-
* often has no say over a skill some other scope owns. The request is
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* path rather than a plugin name — the branch-name convention takes any
|
|
26
|
-
* exact string).
|
|
19
|
+
* often has no say over a skill some other scope owns. The request is opened
|
|
20
|
+
* by the shared `AccessRequestsService` — the same one the Manage access
|
|
21
|
+
* dialog's Request access uses — keyed on the skill FOLDER path, so this
|
|
22
|
+
* button and a Can edit request on that same folder are ONE request, shown in
|
|
23
|
+
* the skill page's banner and in the folder's dialog alike.
|
|
27
24
|
*
|
|
28
25
|
* Fail-closed like the skill catalog: a skill the caller cannot read answers
|
|
29
26
|
* as unknown, and the editors' listing answers `[]` to anyone else.
|
|
30
27
|
*/
|
|
31
28
|
export function createSkillAccessRequestRoutes(deps) {
|
|
32
29
|
const { skillService, accessControl, workflow, workspaceService, joinRequests, kb, resolveUser } = deps;
|
|
33
|
-
const { kbDirName } = kb;
|
|
34
30
|
const router = express.Router();
|
|
35
31
|
const wsId = () => kb.defaultWorkspaceId();
|
|
36
32
|
const rulesOf = (folder) => `${folder}/access.md`;
|
|
33
|
+
// The same opener the Manage access dialog uses, pointed at a skill's
|
|
34
|
+
// folder. Keyed on that folder's PATH, which is what makes this button and
|
|
35
|
+
// a Can edit request on the same folder one request rather than two.
|
|
36
|
+
const requests = new AccessRequestsService({
|
|
37
|
+
workflow,
|
|
38
|
+
workspaceService,
|
|
39
|
+
lifecycle: joinRequests,
|
|
40
|
+
kb,
|
|
41
|
+
});
|
|
37
42
|
/** The skill the caller may read, by name — or null after answering 404. */
|
|
38
43
|
async function readableSkill(req, res) {
|
|
39
44
|
const user = await resolveUser(req);
|
|
@@ -59,57 +64,13 @@ export function createSkillAccessRequestRoutes(deps) {
|
|
|
59
64
|
res.status(409).json({ error: 'You can already edit this skill', kind: 'already-writable' });
|
|
60
65
|
return;
|
|
61
66
|
}
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (existing) {
|
|
68
|
-
res.json({ ok: true, number: existing.number });
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
// The branch may already exist (a request listed as closed, a retry
|
|
72
|
-
// after a failed open). Existence is PROBED, before and — if creation
|
|
73
|
-
// fails — after: the race shows up as "already exists" locally or as a
|
|
74
|
-
// rejected push when origin got there first, and a message is not a
|
|
75
|
-
// contract. A branch that is there is proceeded against; anything else
|
|
76
|
-
// is a real failure, and a proposal on a branch that was not made would
|
|
77
|
-
// be worse than the error. STRICT: the list proves absence, and a
|
|
78
|
-
// listing that could not fetch proves nothing — it throws instead of
|
|
79
|
-
// serving refs from before the branch was made (or deleted).
|
|
80
|
-
const branchExists = async () => (await workflow.listBranches(wsId(), { freshFetch: true, strictFetch: true })).some((b) => b.name === branch);
|
|
81
|
-
if (!(await branchExists())) {
|
|
82
|
-
try {
|
|
83
|
-
await workflow.createBranch(wsId(), branch, kb.defaultBranch);
|
|
84
|
-
}
|
|
85
|
-
catch (err) {
|
|
86
|
-
if (!(await branchExists()))
|
|
87
|
-
throw err;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
const ws = await workspaceService.getOrCreateForBranch(branch);
|
|
91
|
-
const accessPath = `${kbDirName}/${rulesOf(folder)}`;
|
|
92
|
-
// Only a PROVEN absence reads as "no rules yet": any other failure must
|
|
93
|
-
// not be turned into an empty file that a splice then overwrites.
|
|
94
|
-
const current = await workspaceService.readFile(ws.id, accessPath).catch((err) => {
|
|
95
|
-
if (!isAbsence(err))
|
|
96
|
-
throw err;
|
|
97
|
-
return '';
|
|
98
|
-
});
|
|
99
|
-
const spliced = spliceGrant(current, 'write', { kind: 'user', email: user.email, displayName: user.name }, { target: 'folder' });
|
|
100
|
-
if (spliced.changed) {
|
|
101
|
-
await workspaceService.writeFile(ws.id, accessPath, spliced.text);
|
|
102
|
-
await workflow.commitChanges(ws.id, user, `Request write access to ${name}`);
|
|
103
|
-
}
|
|
104
|
-
const detail = await workflow.openChangeRequest(ws.id, user, {
|
|
105
|
-
sourceBranch: branch,
|
|
106
|
-
targetBranch: kb.defaultBranch,
|
|
107
|
-
title: `Access request: ${name}`,
|
|
108
|
-
description: `${user.name} asked to edit the skill ${name}. An editor of the skill accepts by ` +
|
|
109
|
-
`granting the access this branch proposes; the request closes itself once ` +
|
|
110
|
-
`every proposal has landed.`,
|
|
67
|
+
const { number } = await requests.open({
|
|
68
|
+
user,
|
|
69
|
+
target: folderTarget(folder),
|
|
70
|
+
itemName: name,
|
|
71
|
+
level: 'write',
|
|
111
72
|
});
|
|
112
|
-
res.json({ ok: true, number
|
|
73
|
+
res.json({ ok: true, number });
|
|
113
74
|
}
|
|
114
75
|
catch (err) {
|
|
115
76
|
if (err instanceof WorkflowDomainError) {
|
|
@@ -137,7 +98,7 @@ export function createSkillAccessRequestRoutes(deps) {
|
|
|
137
98
|
if (!ctx)
|
|
138
99
|
return;
|
|
139
100
|
const crs = await workflow.listChangeRequests();
|
|
140
|
-
res.json({ requests: await joinRequests.list(ctx.folder, ctx.folder, crs, ctx.user) });
|
|
101
|
+
res.json({ requests: await joinRequests.list(ctx.folder, folderTarget(ctx.folder), crs, ctx.user) });
|
|
141
102
|
}
|
|
142
103
|
catch (err) {
|
|
143
104
|
log.error('failed to list access requests:', { err });
|
|
@@ -159,7 +120,7 @@ export function createSkillAccessRequestRoutes(deps) {
|
|
|
159
120
|
res.status(404).json({ error: 'Not found' });
|
|
160
121
|
return;
|
|
161
122
|
}
|
|
162
|
-
res.json({ closed: await joinRequests.reconcile(ctx.folder, ctx.folder, cr, ctx.user) });
|
|
123
|
+
res.json({ closed: await joinRequests.reconcile(ctx.folder, folderTarget(ctx.folder), cr, ctx.user) });
|
|
163
124
|
}
|
|
164
125
|
catch (err) {
|
|
165
126
|
log.error('failed to reconcile an access request:', { err });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-access-requests.routes.js","sourceRoot":"","sources":["../../../src/modules/skills/skill-access-requests.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,OAAO,4BAA4B,CAAC,CAAC,kDAAkD;
|
|
1
|
+
{"version":3,"file":"skill-access-requests.routes.js","sourceRoot":"","sources":["../../../src/modules/skills/skill-access-requests.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-helpers/tool-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../../../src/modules/tool-helpers/tool-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAI1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,eAAe,EAAE,gBAAgB,CAAC;IAClC,MAAM,EAAE,gBAAgB,CAAC;IACzB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,EAAE,cAAc,CAAC;IAC9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CACjB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAC/C,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACpF;AAYD,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CAuFnF"}
|
|
@@ -4,6 +4,7 @@ import { LockingFilesystem } from '../kb-fs/locking-filesystem.js';
|
|
|
4
4
|
import { ReadOnlyFilesystem } from '../kb-fs/read-only-filesystem.js';
|
|
5
5
|
import { makeAgentRolesYamlWriteValidator, ROLES_YAML_BASENAME, } from '../access-model/roles-yaml-guard.js';
|
|
6
6
|
import { isAbsence } from '../../shared/fs.contract.js';
|
|
7
|
+
import { assertBranchProvided } from '../../shared/domain-errors.js';
|
|
7
8
|
import { branchForWorkspaceId } from '../../shared/workspace-id.js';
|
|
8
9
|
import { ToolError } from './tool.contract.js';
|
|
9
10
|
/** A file's text, or null when it does not exist. Any other failure throws. */
|
|
@@ -36,6 +37,20 @@ export function createToolContextResolver(deps) {
|
|
|
36
37
|
const { loadActiveGroups } = deps;
|
|
37
38
|
const fsCache = new Map();
|
|
38
39
|
const getFilesystem = async (branch) => {
|
|
40
|
+
// THE choke point: every knowledge-base tool resolves its workspace
|
|
41
|
+
// through here, and a `call_tool_chain` call reaches the very same route
|
|
42
|
+
// over loopback — so refusing a branch-less call here refuses it on both
|
|
43
|
+
// paths at once, with no per-tool guard to keep in step.
|
|
44
|
+
//
|
|
45
|
+
// Before ANY workspace work, because both things downstream do with this
|
|
46
|
+
// value are wrong when it is absent: `getOrCreateForUser` defaults a
|
|
47
|
+
// missing branch to the deployment's default (protected) branch, so an
|
|
48
|
+
// omitted argument would silently act on `main`; and a present-but-absent
|
|
49
|
+
// value like the string "undefined" goes to `workspaceIdForBranch`, which
|
|
50
|
+
// makes it a workspace directory of that name and then tries to clone a
|
|
51
|
+
// branch nobody ever pushed. Failing closed here means no workspace is
|
|
52
|
+
// created and no clone is attempted.
|
|
53
|
+
assertBranchProvided(branch);
|
|
39
54
|
const cached = fsCache.get(branch);
|
|
40
55
|
if (cached)
|
|
41
56
|
return cached;
|