@bevel-software/platform-core-backend 0.28.1 → 0.29.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/agent-guide/access-control.md +15 -0
- package/agent-guide/skills.md +8 -0
- package/dist/core/catalog-revision.d.ts.map +1 -1
- package/dist/core/catalog-revision.js +4 -2
- package/dist/core/catalog-revision.js.map +1 -1
- package/dist/core/compose-embed.d.ts +35 -0
- package/dist/core/compose-embed.d.ts.map +1 -0
- package/dist/core/compose-embed.js +14 -0
- package/dist/core/compose-embed.js.map +1 -0
- package/dist/core/core-ports.d.ts +10 -0
- package/dist/core/core-ports.d.ts.map +1 -1
- package/dist/core/core-ports.js.map +1 -1
- package/dist/core/create-core-server.d.ts.map +1 -1
- package/dist/core/create-core-server.js +7 -1
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +1 -1
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +25 -14
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +11 -6
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +13 -6
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +36 -14
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +145 -43
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/auth/index.d.ts +15 -0
- package/dist/modules/auth/index.d.ts.map +1 -0
- package/dist/modules/auth/index.js +20 -0
- package/dist/modules/auth/index.js.map +1 -0
- package/dist/modules/embed/embed.interface.d.ts +22 -0
- package/dist/modules/embed/embed.interface.d.ts.map +1 -1
- package/dist/modules/embed/embed.service.d.ts +28 -14
- package/dist/modules/embed/embed.service.d.ts.map +1 -1
- package/dist/modules/embed/embed.service.js +38 -17
- package/dist/modules/embed/embed.service.js.map +1 -1
- package/dist/modules/embed/embed.tools.d.ts.map +1 -1
- package/dist/modules/embed/embed.tools.js +10 -2
- package/dist/modules/embed/embed.tools.js.map +1 -1
- package/dist/modules/kb-fs/index.d.ts +7 -0
- package/dist/modules/kb-fs/index.d.ts.map +1 -0
- package/dist/modules/kb-fs/index.js +2 -0
- package/dist/modules/kb-fs/index.js.map +1 -0
- package/dist/modules/plugins/join-request-jobs.service.d.ts.map +1 -1
- package/dist/modules/plugins/join-request-jobs.service.js +43 -8
- package/dist/modules/plugins/join-request-jobs.service.js.map +1 -1
- package/dist/modules/skills/skills.contract.d.ts.map +1 -1
- package/dist/modules/skills/skills.tools.d.ts +8 -1
- package/dist/modules/skills/skills.tools.d.ts.map +1 -1
- package/dist/modules/skills/skills.tools.js +115 -11
- package/dist/modules/skills/skills.tools.js.map +1 -1
- package/dist/modules/tool-helpers/default-branch-write.d.ts +69 -0
- package/dist/modules/tool-helpers/default-branch-write.d.ts.map +1 -0
- package/dist/modules/tool-helpers/default-branch-write.js +63 -0
- package/dist/modules/tool-helpers/default-branch-write.js.map +1 -0
- package/dist/modules/tool-helpers/index.d.ts +1 -0
- package/dist/modules/tool-helpers/index.d.ts.map +1 -1
- package/dist/modules/tool-helpers/index.js +1 -0
- package/dist/modules/tool-helpers/index.js.map +1 -1
- package/dist/modules/workflow/file-lock.service.d.ts +27 -5
- package/dist/modules/workflow/file-lock.service.d.ts.map +1 -1
- package/dist/modules/workflow/file-lock.service.js +70 -18
- package/dist/modules/workflow/file-lock.service.js.map +1 -1
- package/dist/modules/workflow/git/git.service.d.ts +13 -0
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +24 -0
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/index.d.ts +8 -0
- package/dist/modules/workflow/index.d.ts.map +1 -0
- package/dist/modules/workflow/index.js +8 -0
- package/dist/modules/workflow/index.js.map +1 -0
- package/dist/modules/workflow/pending-commits.service.d.ts +2 -17
- package/dist/modules/workflow/pending-commits.service.d.ts.map +1 -1
- package/dist/modules/workflow/pending-commits.service.js +4 -24
- package/dist/modules/workflow/pending-commits.service.js.map +1 -1
- package/dist/modules/workflow/workflow.routes.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.routes.js +20 -1
- package/dist/modules/workflow/workflow.routes.js.map +1 -1
- package/dist/modules/workflow/workflow.service.d.ts.map +1 -1
- package/dist/modules/workflow/workflow.service.js +5 -3
- package/dist/modules/workflow/workflow.service.js.map +1 -1
- package/dist/modules/workspace/index.d.ts +10 -0
- package/dist/modules/workspace/index.d.ts.map +1 -0
- package/dist/modules/workspace/index.js +10 -0
- package/dist/modules/workspace/index.js.map +1 -0
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +106 -20
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/shared/workspace-id.d.ts +17 -0
- package/dist/shared/workspace-id.d.ts.map +1 -1
- package/dist/shared/workspace-id.js +24 -0
- package/dist/shared/workspace-id.js.map +1 -1
- package/mcp-app/page.html +142 -8
- package/package.json +3 -3
- package/src/core/__tests__/compose-embed.test.ts +65 -0
- package/src/core/__tests__/lifecycle.test.ts +29 -26
- package/src/core/catalog-revision.ts +4 -2
- package/src/core/compose-embed.ts +50 -0
- package/src/core/core-ports.ts +10 -0
- package/src/core/create-core-server.ts +7 -1
- package/src/core/create-core-services.ts +27 -21
- package/src/core/lifecycle.ts +24 -12
- package/src/modules/access/__tests__/access-control.atref-cache.test.ts +303 -25
- package/src/modules/access/access-control.service.ts +162 -46
- package/src/modules/auth/index.ts +29 -0
- package/src/modules/embed/__tests__/embed.service.test.ts +76 -3
- package/src/modules/embed/__tests__/embed.tools.test.ts +29 -0
- package/src/modules/embed/embed.interface.ts +24 -0
- package/src/modules/embed/embed.service.ts +44 -19
- package/src/modules/embed/embed.tools.ts +10 -2
- package/src/modules/kb-fs/index.ts +6 -0
- package/src/modules/plugins/__tests__/join-request-jobs.service.test.ts +73 -6
- package/src/modules/plugins/join-request-jobs.service.ts +45 -8
- package/src/modules/skills/__tests__/branch-skills.tools.test.ts +1 -1
- package/src/modules/skills/skills.contract.ts +4 -0
- package/src/modules/skills/skills.tools.ts +120 -10
- package/src/modules/tool-helpers/__tests__/can-write.tools.test.ts +581 -0
- package/src/modules/tool-helpers/default-branch-write.ts +90 -0
- package/src/modules/tool-helpers/index.ts +5 -0
- package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +36 -2
- package/src/modules/workflow/__tests__/fake-file-lock-db.ts +13 -2
- package/src/modules/workflow/__tests__/workflow.routes.lock-path.test.ts +168 -1
- package/src/modules/workflow/__tests__/workflow.service.delete-branch.test.ts +102 -6
- package/src/modules/workflow/file-lock.service.ts +79 -18
- package/src/modules/workflow/git/__tests__/git.service.readFileAtRef.test.ts +42 -0
- package/src/modules/workflow/git/git.service.ts +23 -0
- package/src/modules/workflow/index.ts +7 -0
- package/src/modules/workflow/pending-commits.service.ts +4 -23
- package/src/modules/workflow/workflow.routes.ts +24 -1
- package/src/modules/workflow/workflow.service.ts +3 -2
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +21 -11
- package/src/modules/workspace/index.ts +14 -0
- package/src/modules/workspace/workspace.tools.ts +120 -20
- package/src/shared/workspace-id.ts +24 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAGzG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAO7F;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,gBAAqB,GAC1B,eAAe,CA8EjB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACzB,GAAG,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAqD,GAC9E,YAAY,CAgBd;AAED,uFAAuF;AACvF,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD;;;;;OAKG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAwC7D;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,sBAAsB,CAAC,CAAC;IAC1E,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,wCAAwC,GAAG,gBAAgB,CAAC,CAAC;IACpG,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;IACpE;;;;OAIG;IACH,YAAY,EAAE;QAAE,IAAI,IAAI,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,YAAY,EACpD,IAAI,EAAE,CAAC,EACP,GAAG,GAAE;IAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAAO,GACnD,OAAO,CAAC,IAAI,CAAC,CAmGf;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,wHAAwH;IACxH,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/core/lifecycle.js
CHANGED
|
@@ -379,7 +379,7 @@ async function releaseCore(deps, remaining, log) {
|
|
|
379
379
|
// server is closed (or the tenant is no longer routed to), so this is the
|
|
380
380
|
// earliest point the interval is dead weight. Synchronous and unfailing
|
|
381
381
|
// — it just clears an interval — so it needs no budget of its own.
|
|
382
|
-
deps.
|
|
382
|
+
deps.pluginJoinRequestJobs?.stopSweeping();
|
|
383
383
|
// And the upload store's sweep, for the same reason and in the same breath:
|
|
384
384
|
// synchronous, and it only clears an interval and tells a sweep already
|
|
385
385
|
// running to stop deleting.
|
|
@@ -395,11 +395,18 @@ async function releaseCore(deps, remaining, log) {
|
|
|
395
395
|
// Clearing the interval stops future ticks; it does nothing to a job a
|
|
396
396
|
// tick already started, which holds a claim it heartbeats through the
|
|
397
397
|
// pool and is mid-clone or mid-push. Awaited here, in the budget: a job
|
|
398
|
-
// that finishes releases or marks its row
|
|
399
|
-
//
|
|
400
|
-
//
|
|
401
|
-
|
|
402
|
-
|
|
398
|
+
// that finishes releases or marks its row. One that cannot in time is
|
|
399
|
+
// NOT cancelled — the bounded wait only stops waiting — and what becomes
|
|
400
|
+
// of it depends on who is stopping: a process shutting down takes it
|
|
401
|
+
// along; a tenant host evicting one graph ends the pool under it, which
|
|
402
|
+
// cancels nothing already running — a clone or push in flight finishes
|
|
403
|
+
// on its own — but its next heartbeat or database write fails, so from
|
|
404
|
+
// there the job records nothing and stops. Either way its claim goes
|
|
405
|
+
// stale and the next sweep — the next boot's, or a live graph's — picks
|
|
406
|
+
// the row up and does the whole thing again, which is the recovery every
|
|
407
|
+
// crash already gets (and why each step is written to be redone).
|
|
408
|
+
if (deps.pluginJoinRequestJobs) {
|
|
409
|
+
await bounded(deps.pluginJoinRequestJobs.drain(), remaining(), 'finishing the join-request jobs', log);
|
|
403
410
|
}
|
|
404
411
|
// The sweep in flight when the interval was cleared: awaited so the next
|
|
405
412
|
// graph for this tenant cannot start staging bytes while a store it has
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,20 +102,29 @@ export declare class AccessControlService implements IAccessControl {
|
|
|
102
102
|
*
|
|
103
103
|
* This is what makes the change-request gates affordable. One detail read
|
|
104
104
|
* plus one approval click runs six at-ref gates, and before this cache
|
|
105
|
-
* every one of them rebuilt the model from git
|
|
106
|
-
* `
|
|
107
|
-
*
|
|
105
|
+
* every one of them rebuilt the model from git. A build is two git calls
|
|
106
|
+
* (`buildModelAtCommit`: one `ls-tree`, one `cat-file --batch` for every
|
|
107
|
+
* file the model reads), and each call forks the server process, which
|
|
108
|
+
* costs tens of milliseconds on a server holding a large heap.
|
|
108
109
|
*
|
|
109
|
-
* Bounded FIFO
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
110
|
+
* Bounded FIFO. The bound is sized for a listing that resolves access at
|
|
111
|
+
* every open change request's two refs: one commit per open request plus
|
|
112
|
+
* the targets, and a knowledge base with a hundred open requests was
|
|
113
|
+
* evicting in a cycle under the old bound of 64, rebuilding every model on
|
|
114
|
+
* every listing — thousands of forks, minutes of the main thread, and
|
|
115
|
+
* every other request waiting behind them. A commit's tree never changes,
|
|
116
|
+
* so a model is good for as long as it is held; the bound only caps memory.
|
|
117
|
+
*
|
|
118
|
+
* A commit with no roles.yaml is remembered too (`atRefNoRoles`): the batch
|
|
119
|
+
* read answers "missing" for it from git itself, which is as final as the
|
|
120
|
+
* commit. What is never cached is a build that saw a git read FAIL: it
|
|
121
|
+
* throws AccessUnreadableError and the gate fails closed for that call, and
|
|
122
|
+
* pinning that to a commit would turn one hiccup into a wrong verdict until
|
|
123
|
+
* the branch moved. Concurrent misses on the same commit share one build
|
|
124
|
+
* via `atRefInFlight`.
|
|
117
125
|
*/
|
|
118
126
|
private readonly atRefCache;
|
|
127
|
+
private readonly atRefNoRoles;
|
|
119
128
|
private readonly atRefInFlight;
|
|
120
129
|
private static readonly AT_REF_CACHE_MAX;
|
|
121
130
|
/**
|
|
@@ -428,9 +437,12 @@ export declare class AccessControlService implements IAccessControl {
|
|
|
428
437
|
/**
|
|
429
438
|
* List every `access.md` path that exists at any depth as of `ref`.
|
|
430
439
|
* The access tree is structure-agnostic: any `access.md` participates
|
|
431
|
-
* regardless of where it sits. Uses `git ls-tree -r --name-only
|
|
432
|
-
*
|
|
433
|
-
*
|
|
440
|
+
* regardless of where it sits. Uses `git ls-tree -r -z --name-only`: `-z`
|
|
441
|
+
* puts a NUL between paths and prints them as they are, where the default
|
|
442
|
+
* output C-quotes a path with a non-ASCII or special character, which would
|
|
443
|
+
* then name nothing when read back. `'error'` when git failed: a model
|
|
444
|
+
* built without its access files is not the model, and the caller must not
|
|
445
|
+
* cache it as one.
|
|
434
446
|
*/
|
|
435
447
|
private listAccessFilesAtRef;
|
|
436
448
|
/**
|
|
@@ -459,6 +471,7 @@ export declare class AccessControlService implements IAccessControl {
|
|
|
459
471
|
/** The commit `ref` points at in this clone, or null when it doesn't resolve. */
|
|
460
472
|
private revParseCommit;
|
|
461
473
|
private rememberAtRef;
|
|
474
|
+
private rememberNoRolesAtRef;
|
|
462
475
|
/**
|
|
463
476
|
* The uncached build behind `loadModelAtRef`: the whole access tree read
|
|
464
477
|
* at `commit`. `label` is the candidate ref the commit came from, kept for
|
|
@@ -466,6 +479,15 @@ export declare class AccessControlService implements IAccessControl {
|
|
|
466
479
|
* means the commit carries no roles.yaml (the caller tries its next
|
|
467
480
|
* candidate); `'malformed'` means it does but it doesn't parse (the caller
|
|
468
481
|
* answers null, as it always has).
|
|
482
|
+
*
|
|
483
|
+
* TWO git calls, whatever the tree holds: one `ls-tree` to learn which
|
|
484
|
+
* files the model is made of, then one `cat-file --batch` that reads all of
|
|
485
|
+
* them — roles.yaml, the groups sources, every access.md and every plugin
|
|
486
|
+
* manifest. It used to be one `git show` per file, and each git call forks
|
|
487
|
+
* the server process, which on a server holding a large heap costs tens of
|
|
488
|
+
* milliseconds of the main thread per call: a knowledge base with a few
|
|
489
|
+
* dozen access files paid a second or more per commit, times every ref a
|
|
490
|
+
* listing resolves.
|
|
469
491
|
*/
|
|
470
492
|
private buildModelAtCommit;
|
|
471
493
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-control.service.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access-control.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAEd,gBAAgB,EAChB,aAAa,EACb,cAAc,EAEd,YAAY,EAEZ,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAQvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAoBL,KAAK,IAAI,EACV,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"access-control.service.d.ts","sourceRoot":"","sources":["../../../src/modules/access/access-control.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,12 +15,11 @@ import { DIRECTORY_SYNC_BOT_EMAIL, DIRECTORY_SYNC_BOT_NAME, } from './directory-
|
|
|
15
15
|
/**
|
|
16
16
|
* Read many objects from a git repo in ONE `git cat-file --batch` process.
|
|
17
17
|
* `specs` are `<ref>:<path>` lines; the result array is index-aligned with
|
|
18
|
-
* them
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* (the spec may itself contain spaces, hence the endsWith checks).
|
|
18
|
+
* them. Output protocol per request: `<oid> <type> <size>\n<size bytes>\n`,
|
|
19
|
+
* or `<spec> missing\n` (the spec may itself contain spaces, hence the
|
|
20
|
+
* endsWith checks).
|
|
22
21
|
*/
|
|
23
|
-
async function
|
|
22
|
+
async function catFileBatchOutcomes(runner, repoDir, specs) {
|
|
24
23
|
// Bytes, not text: every `<size>` in the header counts bytes, and the walk
|
|
25
24
|
// below has to step by that count through content that is not all ASCII.
|
|
26
25
|
// One spec per LINE is the protocol, and this walk depends on getting back
|
|
@@ -42,7 +41,7 @@ async function catFileBatch(runner, repoDir, specs) {
|
|
|
42
41
|
const header = out.subarray(off, nl).toString('utf-8');
|
|
43
42
|
off = nl + 1;
|
|
44
43
|
if (header.endsWith(' missing') || header.endsWith(' ambiguous')) {
|
|
45
|
-
results.push(
|
|
44
|
+
results.push({ kind: 'missing' });
|
|
46
45
|
continue;
|
|
47
46
|
}
|
|
48
47
|
const parts = header.split(' ');
|
|
@@ -50,13 +49,25 @@ async function catFileBatch(runner, repoDir, specs) {
|
|
|
50
49
|
if (parts.length !== 3 || !Number.isInteger(size) || size < 0) {
|
|
51
50
|
throw new Error(`unexpected git cat-file header: ${header}`);
|
|
52
51
|
}
|
|
53
|
-
//
|
|
54
|
-
// payload still has to be skipped to stay aligned.
|
|
55
|
-
results.push(parts[1] === 'blob'
|
|
52
|
+
// A non-blob (a directory path resolves to a tree) is reported as such,
|
|
53
|
+
// and its payload still has to be skipped to stay aligned.
|
|
54
|
+
results.push(parts[1] === 'blob'
|
|
55
|
+
? { kind: 'blob', text: out.subarray(off, off + size).toString('utf-8') }
|
|
56
|
+
: { kind: 'non-blob', type: parts[1] });
|
|
56
57
|
off += size + 1; // payload + trailing LF
|
|
57
58
|
}
|
|
58
59
|
return results;
|
|
59
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* {@link catFileBatchOutcomes} for callers that want text or nothing: the
|
|
63
|
+
* blob's text, or null when the spec is missing at the ref or resolves to a
|
|
64
|
+
* non-blob — the own-entries reads, where a directory where a file was
|
|
65
|
+
* named simply carries no entries.
|
|
66
|
+
*/
|
|
67
|
+
async function catFileBatch(runner, repoDir, specs) {
|
|
68
|
+
const outcomes = await catFileBatchOutcomes(runner, repoDir, specs);
|
|
69
|
+
return outcomes.map((o) => (o.kind === 'blob' ? o.text : null));
|
|
70
|
+
}
|
|
60
71
|
function isBuiltInRole(canonicalRole) {
|
|
61
72
|
return canonicalRole === EVERYONE_CANONICAL;
|
|
62
73
|
}
|
|
@@ -1107,22 +1118,31 @@ export class AccessControlService {
|
|
|
1107
1118
|
*
|
|
1108
1119
|
* This is what makes the change-request gates affordable. One detail read
|
|
1109
1120
|
* plus one approval click runs six at-ref gates, and before this cache
|
|
1110
|
-
* every one of them rebuilt the model from git
|
|
1111
|
-
* `
|
|
1112
|
-
*
|
|
1121
|
+
* every one of them rebuilt the model from git. A build is two git calls
|
|
1122
|
+
* (`buildModelAtCommit`: one `ls-tree`, one `cat-file --batch` for every
|
|
1123
|
+
* file the model reads), and each call forks the server process, which
|
|
1124
|
+
* costs tens of milliseconds on a server holding a large heap.
|
|
1125
|
+
*
|
|
1126
|
+
* Bounded FIFO. The bound is sized for a listing that resolves access at
|
|
1127
|
+
* every open change request's two refs: one commit per open request plus
|
|
1128
|
+
* the targets, and a knowledge base with a hundred open requests was
|
|
1129
|
+
* evicting in a cycle under the old bound of 64, rebuilding every model on
|
|
1130
|
+
* every listing — thousands of forks, minutes of the main thread, and
|
|
1131
|
+
* every other request waiting behind them. A commit's tree never changes,
|
|
1132
|
+
* so a model is good for as long as it is held; the bound only caps memory.
|
|
1113
1133
|
*
|
|
1114
|
-
*
|
|
1115
|
-
*
|
|
1116
|
-
*
|
|
1117
|
-
*
|
|
1118
|
-
*
|
|
1119
|
-
*
|
|
1120
|
-
*
|
|
1121
|
-
* misses on the same commit share one build via `atRefInFlight`.
|
|
1134
|
+
* A commit with no roles.yaml is remembered too (`atRefNoRoles`): the batch
|
|
1135
|
+
* read answers "missing" for it from git itself, which is as final as the
|
|
1136
|
+
* commit. What is never cached is a build that saw a git read FAIL: it
|
|
1137
|
+
* throws AccessUnreadableError and the gate fails closed for that call, and
|
|
1138
|
+
* pinning that to a commit would turn one hiccup into a wrong verdict until
|
|
1139
|
+
* the branch moved. Concurrent misses on the same commit share one build
|
|
1140
|
+
* via `atRefInFlight`.
|
|
1122
1141
|
*/
|
|
1123
1142
|
atRefCache = new Map();
|
|
1143
|
+
atRefNoRoles = new Set();
|
|
1124
1144
|
atRefInFlight = new Map();
|
|
1125
|
-
static AT_REF_CACHE_MAX =
|
|
1145
|
+
static AT_REF_CACHE_MAX = 512;
|
|
1126
1146
|
/**
|
|
1127
1147
|
* Canonicalised deployment-owner emails (see `AccessModel.deploymentOwners`).
|
|
1128
1148
|
* Held on the service rather than read per-model because it comes from the
|
|
@@ -2083,27 +2103,35 @@ export class AccessControlService {
|
|
|
2083
2103
|
/**
|
|
2084
2104
|
* List every `access.md` path that exists at any depth as of `ref`.
|
|
2085
2105
|
* The access tree is structure-agnostic: any `access.md` participates
|
|
2086
|
-
* regardless of where it sits. Uses `git ls-tree -r --name-only
|
|
2087
|
-
*
|
|
2088
|
-
*
|
|
2106
|
+
* regardless of where it sits. Uses `git ls-tree -r -z --name-only`: `-z`
|
|
2107
|
+
* puts a NUL between paths and prints them as they are, where the default
|
|
2108
|
+
* output C-quotes a path with a non-ASCII or special character, which would
|
|
2109
|
+
* then name nothing when read back. `'error'` when git failed: a model
|
|
2110
|
+
* built without its access files is not the model, and the caller must not
|
|
2111
|
+
* cache it as one.
|
|
2089
2112
|
*/
|
|
2090
2113
|
async listAccessFilesAtRef(repoDir, ref) {
|
|
2091
2114
|
try {
|
|
2092
|
-
const { stdout } = await this.gitRunner.run(repoDir, ['ls-tree', '-r', '--name-only', ref]);
|
|
2115
|
+
const { stdout } = await this.gitRunner.run(repoDir, ['ls-tree', '-r', '-z', '--name-only', ref]);
|
|
2093
2116
|
const out = [];
|
|
2094
2117
|
const pluginDirs = [];
|
|
2118
|
+
// The fixed-name sources the tree carries (roles.yaml, the groups
|
|
2119
|
+
// files): a read of one of these that comes back empty is "absent"
|
|
2120
|
+
// only when the tree does not name it.
|
|
2121
|
+
const named = new Set();
|
|
2095
2122
|
const { pluginsDir } = this.kb.layout;
|
|
2096
|
-
for (const
|
|
2097
|
-
const p = line.trim();
|
|
2123
|
+
for (const p of stdout.split('\0')) {
|
|
2098
2124
|
if (!p)
|
|
2099
2125
|
continue;
|
|
2100
2126
|
if (p === 'access.md' || p.endsWith('/access.md'))
|
|
2101
2127
|
out.push(p);
|
|
2128
|
+
else if (p === 'roles.yaml' || p === SYNCED_GROUPS_YAML || p === GROUPS_YAML)
|
|
2129
|
+
named.add(p);
|
|
2102
2130
|
else if (p.startsWith(`${pluginsDir}/`) && p.endsWith(`/${PLUGIN_MANIFEST_FILE}`)) {
|
|
2103
2131
|
pluginDirs.push(p.slice(0, -(PLUGIN_MANIFEST_FILE.length + 1)));
|
|
2104
2132
|
}
|
|
2105
2133
|
}
|
|
2106
|
-
return { accessFiles: out, pluginDirs };
|
|
2134
|
+
return { accessFiles: out, pluginDirs, named };
|
|
2107
2135
|
}
|
|
2108
2136
|
catch {
|
|
2109
2137
|
return 'error';
|
|
@@ -2148,6 +2176,10 @@ export class AccessControlService {
|
|
|
2148
2176
|
const hit = this.atRefCache.get(key);
|
|
2149
2177
|
if (hit)
|
|
2150
2178
|
return hit;
|
|
2179
|
+
// A commit known to carry no roles.yaml: the next candidate, without a
|
|
2180
|
+
// build (see `atRefNoRoles`).
|
|
2181
|
+
if (this.atRefNoRoles.has(key))
|
|
2182
|
+
continue;
|
|
2151
2183
|
// Registered BEFORE the first await on the build path, so concurrent
|
|
2152
2184
|
// misses on one commit share a single build instead of all racing past
|
|
2153
2185
|
// an empty in-flight check together.
|
|
@@ -2157,6 +2189,8 @@ export class AccessControlService {
|
|
|
2157
2189
|
.then((built) => {
|
|
2158
2190
|
if (typeof built !== 'string')
|
|
2159
2191
|
this.rememberAtRef(key, built);
|
|
2192
|
+
else if (built === 'no-roles')
|
|
2193
|
+
this.rememberNoRolesAtRef(key);
|
|
2160
2194
|
return built;
|
|
2161
2195
|
})
|
|
2162
2196
|
.finally(() => {
|
|
@@ -2205,6 +2239,14 @@ export class AccessControlService {
|
|
|
2205
2239
|
this.atRefCache.delete(oldest);
|
|
2206
2240
|
}
|
|
2207
2241
|
}
|
|
2242
|
+
rememberNoRolesAtRef(key) {
|
|
2243
|
+
this.atRefNoRoles.add(key);
|
|
2244
|
+
if (this.atRefNoRoles.size > AccessControlService.AT_REF_CACHE_MAX) {
|
|
2245
|
+
const oldest = this.atRefNoRoles.values().next().value;
|
|
2246
|
+
if (oldest !== undefined)
|
|
2247
|
+
this.atRefNoRoles.delete(oldest);
|
|
2248
|
+
}
|
|
2249
|
+
}
|
|
2208
2250
|
/**
|
|
2209
2251
|
* The uncached build behind `loadModelAtRef`: the whole access tree read
|
|
2210
2252
|
* at `commit`. `label` is the candidate ref the commit came from, kept for
|
|
@@ -2212,6 +2254,15 @@ export class AccessControlService {
|
|
|
2212
2254
|
* means the commit carries no roles.yaml (the caller tries its next
|
|
2213
2255
|
* candidate); `'malformed'` means it does but it doesn't parse (the caller
|
|
2214
2256
|
* answers null, as it always has).
|
|
2257
|
+
*
|
|
2258
|
+
* TWO git calls, whatever the tree holds: one `ls-tree` to learn which
|
|
2259
|
+
* files the model is made of, then one `cat-file --batch` that reads all of
|
|
2260
|
+
* them — roles.yaml, the groups sources, every access.md and every plugin
|
|
2261
|
+
* manifest. It used to be one `git show` per file, and each git call forks
|
|
2262
|
+
* the server process, which on a server holding a large heap costs tens of
|
|
2263
|
+
* milliseconds of the main thread per call: a knowledge base with a few
|
|
2264
|
+
* dozen access files paid a second or more per commit, times every ref a
|
|
2265
|
+
* listing resolves.
|
|
2215
2266
|
*/
|
|
2216
2267
|
async buildModelAtCommit(repoDir, commit, label) {
|
|
2217
2268
|
// Every read below tells "absent" apart from "git failed". A failure
|
|
@@ -2220,20 +2271,76 @@ export class AccessControlService {
|
|
|
2220
2271
|
// and the caller fails closed (AccessUnreadableError, a 503) until a
|
|
2221
2272
|
// retry reads the tree in full.
|
|
2222
2273
|
const tag = `${label}@${commit.slice(0, 7)}`;
|
|
2274
|
+
const listed = await this.listAccessFilesAtRef(repoDir, commit);
|
|
2275
|
+
if (listed === 'error') {
|
|
2276
|
+
logger(`access@${tag}`).warn('listing access.md files failed; refusing to decide from a partial tree');
|
|
2277
|
+
throw new AccessUnreadableError(label, 'access.md (ls-tree)');
|
|
2278
|
+
}
|
|
2279
|
+
const wanted = [
|
|
2280
|
+
'roles.yaml',
|
|
2281
|
+
SYNCED_GROUPS_YAML,
|
|
2282
|
+
GROUPS_YAML,
|
|
2283
|
+
...listed.accessFiles,
|
|
2284
|
+
...listed.pluginDirs.map((dir) => `${dir}/${PLUGIN_MANIFEST_FILE}`),
|
|
2285
|
+
];
|
|
2286
|
+
let outcomes;
|
|
2287
|
+
try {
|
|
2288
|
+
outcomes = await catFileBatchOutcomes(this.gitRunner, repoDir, wanted.map((p) => `${commit}:${p}`));
|
|
2289
|
+
}
|
|
2290
|
+
catch (err) {
|
|
2291
|
+
// The operational signal: one line per failed build, naming the commit,
|
|
2292
|
+
// so a run of these is visible in the logs.
|
|
2293
|
+
logger(`access@${tag}`).warn(`git read of the access tree failed; refusing to decide from a partial tree: ${err instanceof Error ? err.message : String(err)}`);
|
|
2294
|
+
throw new AccessUnreadableError(label, 'access tree (cat-file)');
|
|
2295
|
+
}
|
|
2296
|
+
const fetched = new Map();
|
|
2297
|
+
wanted.forEach((p, i) => fetched.set(p, outcomes[i] ?? { kind: 'missing' }));
|
|
2298
|
+
const refuse = (relativePath, why) => {
|
|
2299
|
+
logger(`access@${tag}`).warn(`${relativePath} ${why}; refusing to decide from a partial tree`);
|
|
2300
|
+
throw new AccessUnreadableError(label, relativePath);
|
|
2301
|
+
};
|
|
2302
|
+
// What the build reads. "Missing" from the batch is "absent" only for a
|
|
2303
|
+
// groups source the tree does not name. A path the tree names — an
|
|
2304
|
+
// access.md, a plugin manifest, or a groups file the listing carried —
|
|
2305
|
+
// that comes back missing has a blob git could not read (a lost object),
|
|
2306
|
+
// and one that is not a file is a tree the model cannot be read from:
|
|
2307
|
+
// either way the build fails closed rather than drop what that file
|
|
2308
|
+
// would deny. A path the build did not prefetch (none today) is read on
|
|
2309
|
+
// its own, told apart from a git failure as before.
|
|
2310
|
+
const inTree = (relativePath) => listed.named.has(relativePath) || !(relativePath === SYNCED_GROUPS_YAML || relativePath === GROUPS_YAML);
|
|
2223
2311
|
const read = async (relativePath) => {
|
|
2224
|
-
const
|
|
2225
|
-
if (
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2312
|
+
const got = fetched.get(relativePath);
|
|
2313
|
+
if (got === undefined) {
|
|
2314
|
+
const outcome = await this.showAtRefOutcome(repoDir, commit, relativePath);
|
|
2315
|
+
if (outcome.kind === 'error')
|
|
2316
|
+
refuse(relativePath, 'could not be read');
|
|
2317
|
+
return outcome.kind === 'text' ? outcome.text : null;
|
|
2230
2318
|
}
|
|
2231
|
-
|
|
2319
|
+
if (got.kind === 'blob')
|
|
2320
|
+
return got.text;
|
|
2321
|
+
if (got.kind === 'non-blob')
|
|
2322
|
+
return refuse(relativePath, `is a ${got.type}, not a file`);
|
|
2323
|
+
if (!inTree(relativePath))
|
|
2324
|
+
return null;
|
|
2325
|
+
return refuse(relativePath, 'is in the tree but its blob could not be read');
|
|
2232
2326
|
};
|
|
2233
|
-
|
|
2234
|
-
|
|
2327
|
+
// roles.yaml decides the build's outcome, so its states are read
|
|
2328
|
+
// directly. Absent from the tree is "no roles here" (the caller tries
|
|
2329
|
+
// its next candidate ref). In the tree but unreadable refuses the build:
|
|
2330
|
+
// answering "no roles" for it would be remembered for the commit and
|
|
2331
|
+
// would send a short ref through to origin, which may grant. A directory
|
|
2332
|
+
// of that name is as malformed as a file that does not parse (the caller
|
|
2333
|
+
// answers null, and never falls through to a ref that might grant what
|
|
2334
|
+
// this one does not).
|
|
2335
|
+
const roles = fetched.get('roles.yaml') ?? { kind: 'missing' };
|
|
2336
|
+
if (roles.kind === 'missing') {
|
|
2337
|
+
if (listed.named.has('roles.yaml'))
|
|
2338
|
+
refuse('roles.yaml', 'is in the tree but its blob could not be read');
|
|
2235
2339
|
return 'no-roles';
|
|
2236
|
-
|
|
2340
|
+
}
|
|
2341
|
+
if (roles.kind === 'non-blob')
|
|
2342
|
+
return 'malformed';
|
|
2343
|
+
const rolesParsed = parseRolesYaml(roles.text);
|
|
2237
2344
|
if (!rolesParsed.ok)
|
|
2238
2345
|
return 'malformed';
|
|
2239
2346
|
// Same group loading as the working-tree model, read AT THE COMMIT — the
|
|
@@ -2253,11 +2360,6 @@ export class AccessControlService {
|
|
|
2253
2360
|
for (const w of mergeWarnings)
|
|
2254
2361
|
logger(`access@${tag}`).warn(w);
|
|
2255
2362
|
const accessFiles = new Map();
|
|
2256
|
-
const listed = await this.listAccessFilesAtRef(repoDir, commit);
|
|
2257
|
-
if (listed === 'error') {
|
|
2258
|
-
logger(`access@${tag}`).warn('listing access.md files failed; refusing to decide from a partial tree');
|
|
2259
|
-
throw new AccessUnreadableError(label, 'access.md (ls-tree)');
|
|
2260
|
-
}
|
|
2261
2363
|
for (const p of listed.accessFiles) {
|
|
2262
2364
|
const text = await read(p);
|
|
2263
2365
|
if (text === null)
|