@bevel-software/platform-core-backend 0.29.0 → 0.30.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/__tests__/test-repositories.d.ts +3 -0
- package/dist/__tests__/test-repositories.d.ts.map +1 -0
- package/dist/__tests__/test-repositories.js +18 -0
- package/dist/__tests__/test-repositories.js.map +1 -0
- package/dist/core/create-core-server.js +1 -1
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +3 -0
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +32 -4
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core/lifecycle.d.ts +8 -0
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +4 -0
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/modules/access/access-control.interface.d.ts +20 -0
- package/dist/modules/access/access-control.interface.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.d.ts +32 -1
- package/dist/modules/access/access-control.service.d.ts.map +1 -1
- package/dist/modules/access/access-control.service.js +138 -16
- package/dist/modules/access/access-control.service.js.map +1 -1
- package/dist/modules/access/access.routes.d.ts.map +1 -1
- package/dist/modules/access/access.routes.js +20 -6
- package/dist/modules/access/access.routes.js.map +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.d.ts +1 -1
- package/dist/modules/agent-instructions/shared-file-rules.js +1 -1
- package/dist/modules/diff/diff.service.d.ts.map +1 -1
- package/dist/modules/diff/diff.service.js +7 -1
- package/dist/modules/diff/diff.service.js.map +1 -1
- package/dist/modules/kb-fs/git-dir.d.ts +21 -0
- package/dist/modules/kb-fs/git-dir.d.ts.map +1 -0
- package/dist/modules/kb-fs/git-dir.js +58 -0
- package/dist/modules/kb-fs/git-dir.js.map +1 -0
- package/dist/modules/kb-fs/index.d.ts +2 -0
- package/dist/modules/kb-fs/index.d.ts.map +1 -1
- package/dist/modules/kb-fs/index.js +2 -1
- package/dist/modules/kb-fs/index.js.map +1 -1
- package/dist/modules/kb-fs/ref-files.d.ts +63 -0
- package/dist/modules/kb-fs/ref-files.d.ts.map +1 -0
- package/dist/modules/kb-fs/ref-files.js +249 -0
- package/dist/modules/kb-fs/ref-files.js.map +1 -0
- package/dist/modules/plugins/teams.routes.d.ts +4 -0
- package/dist/modules/plugins/teams.routes.d.ts.map +1 -1
- package/dist/modules/plugins/teams.routes.js +9 -1
- package/dist/modules/plugins/teams.routes.js.map +1 -1
- package/dist/modules/tool-auth/internal-token.service.d.ts +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts +1 -2
- package/dist/modules/tool-auth/tool-auth.middleware.d.ts.map +1 -1
- package/dist/modules/tool-auth/tool-auth.middleware.js +1 -2
- package/dist/modules/tool-auth/tool-auth.middleware.js.map +1 -1
- package/dist/modules/tool-helpers/tool-handler.d.ts +2 -2
- package/dist/modules/tool-helpers/tool.contract.d.ts +2 -2
- package/dist/modules/workflow/git/git.service.d.ts +29 -0
- package/dist/modules/workflow/git/git.service.d.ts.map +1 -1
- package/dist/modules/workflow/git/git.service.js +177 -24
- package/dist/modules/workflow/git/git.service.js.map +1 -1
- package/dist/modules/workflow/workflow-hooks.d.ts +1 -1
- package/dist/modules/workspace/agent-access.gate.d.ts +2 -2
- package/dist/modules/workspace/agent-access.gate.js +2 -2
- package/dist/modules/workspace/bounded-matcher.d.ts +79 -0
- package/dist/modules/workspace/bounded-matcher.d.ts.map +1 -0
- package/dist/modules/workspace/bounded-matcher.js +261 -0
- package/dist/modules/workspace/bounded-matcher.js.map +1 -0
- package/dist/modules/workspace/fetch-instant.d.ts +9 -0
- package/dist/modules/workspace/fetch-instant.d.ts.map +1 -0
- package/dist/modules/workspace/fetch-instant.js +13 -0
- package/dist/modules/workspace/fetch-instant.js.map +1 -0
- package/dist/modules/workspace/index.d.ts +7 -0
- package/dist/modules/workspace/index.d.ts.map +1 -1
- package/dist/modules/workspace/index.js +6 -0
- package/dist/modules/workspace/index.js.map +1 -1
- package/dist/modules/workspace/kb-repository.contract.d.ts +124 -0
- package/dist/modules/workspace/kb-repository.contract.d.ts.map +1 -0
- package/dist/modules/workspace/kb-repository.contract.js +19 -0
- package/dist/modules/workspace/kb-repository.contract.js.map +1 -0
- package/dist/modules/workspace/kb-repository.d.ts +236 -0
- package/dist/modules/workspace/kb-repository.d.ts.map +1 -0
- package/dist/modules/workspace/kb-repository.js +811 -0
- package/dist/modules/workspace/kb-repository.js.map +1 -0
- package/dist/modules/workspace/pattern-matcher.contract.d.ts +50 -0
- package/dist/modules/workspace/pattern-matcher.contract.d.ts.map +1 -0
- package/dist/modules/workspace/pattern-matcher.contract.js +27 -0
- package/dist/modules/workspace/pattern-matcher.contract.js.map +1 -0
- package/dist/modules/workspace/routine-write-policy.d.ts +0 -7
- package/dist/modules/workspace/routine-write-policy.d.ts.map +1 -1
- package/dist/modules/workspace/routine-write-policy.js +0 -5
- package/dist/modules/workspace/routine-write-policy.js.map +1 -1
- package/dist/modules/workspace/set-aside-clone.d.ts +40 -0
- package/dist/modules/workspace/set-aside-clone.d.ts.map +1 -1
- package/dist/modules/workspace/set-aside-clone.js +139 -0
- package/dist/modules/workspace/set-aside-clone.js.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts +99 -0
- package/dist/modules/workspace/startup/kb-startup-runner.d.ts.map +1 -1
- package/dist/modules/workspace/startup/kb-startup-runner.js +407 -29
- package/dist/modules/workspace/startup/kb-startup-runner.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +68 -32
- package/dist/modules/workspace/workspace.service.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.service.js +240 -161
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/modules/workspace/workspace.tools.d.ts +13 -4
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +162 -336
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/dist/test-setup.js +4 -0
- package/dist/test-setup.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/test-repositories.ts +22 -0
- package/src/__tests__/workspace-service.ts +69 -0
- package/src/core/__tests__/lifecycle.test.ts +16 -0
- package/src/core/create-core-server.ts +1 -1
- package/src/core/create-core-services.ts +36 -3
- package/src/core/lifecycle.ts +10 -0
- package/src/modules/access/__tests__/access-control.atref-cache.test.ts +144 -4
- package/src/modules/access/__tests__/access-control.group-read.test.ts +73 -0
- package/src/modules/access/__tests__/access.routes.group-grant.test.ts +66 -0
- package/src/modules/access/__tests__/access.routes.unknown-email.test.ts +2 -0
- package/src/modules/access/access-control.interface.ts +22 -0
- package/src/modules/access/access-control.service.ts +142 -14
- package/src/modules/access/access.routes.ts +22 -6
- package/src/modules/agent-instructions/shared-file-rules.ts +1 -1
- package/src/modules/diff/__tests__/diff.service.seed-atomicity.test.ts +2 -1
- package/src/modules/diff/__tests__/diff.service.test.ts +2 -1
- package/src/modules/diff/__tests__/diff.service.worktree.test.ts +76 -0
- package/src/modules/diff/diff.service.ts +6 -4
- package/src/modules/kb-fs/__tests__/git-dir.test.ts +77 -0
- package/src/modules/kb-fs/__tests__/ref-files.test.ts +338 -0
- package/src/modules/kb-fs/git-dir.ts +53 -0
- package/src/modules/kb-fs/index.ts +2 -0
- package/src/modules/kb-fs/ref-files.ts +279 -0
- package/src/modules/plugins/__tests__/teams.routes.test.ts +55 -0
- package/src/modules/plugins/teams.routes.ts +14 -1
- package/src/modules/settings/__tests__/setup.routes.layout-phase.test.ts +2 -2
- package/src/modules/settings/__tests__/setup.routes.managed-phase.test.ts +2 -2
- package/src/modules/tool-auth/internal-token.service.ts +1 -1
- package/src/modules/tool-auth/tool-auth.middleware.ts +1 -2
- package/src/modules/tool-helpers/__tests__/branch-declaration.test.ts +2 -2
- package/src/modules/tool-helpers/tool-handler.ts +2 -2
- package/src/modules/tool-helpers/tool.contract.ts +2 -2
- package/src/modules/tool-registry/__tests__/tool-description-length.test.ts +6 -1
- package/src/modules/workflow/git/__tests__/git.service.changedPathsMemo.test.ts +175 -0
- package/src/modules/workflow/git/__tests__/git.service.worktrees.test.ts +284 -0
- package/src/modules/workflow/git/git.service.ts +184 -22
- package/src/modules/workflow/workflow-hooks.ts +1 -1
- package/src/modules/workspace/__tests__/agent-downloads.test.ts +2 -2
- package/src/modules/workspace/__tests__/bounded-matcher.test.ts +213 -0
- package/src/modules/workspace/__tests__/git-internals.security.test.ts +22 -7
- package/src/modules/workspace/__tests__/kb-repository.test.ts +481 -0
- package/src/modules/workspace/__tests__/rest-tool-arguments.test.ts +14 -0
- package/src/modules/workspace/__tests__/routine-write-policy.test.ts +0 -11
- package/src/modules/workspace/__tests__/workspace-paths-inside-the-repo.test.ts +2 -2
- package/src/modules/workspace/__tests__/workspace.routes.folder-zip-access.test.ts +2 -2
- package/src/modules/workspace/__tests__/workspace.routes.folders.test.ts +4 -3
- package/src/modules/workspace/__tests__/workspace.service.any-workspace-credentials.test.ts +2 -2
- package/src/modules/workspace/__tests__/workspace.service.ensure-remotes-fetched.test.ts +2 -2
- package/src/modules/workspace/__tests__/workspace.service.forget-clone-races.test.ts +12 -5
- package/src/modules/workspace/__tests__/workspace.service.list-cloned.test.ts +6 -6
- package/src/modules/workspace/__tests__/workspace.service.move-never-overwrites.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.service.read-filter.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.service.replaced-repository.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.service.test.ts +24 -23
- package/src/modules/workspace/__tests__/workspace.service.unknown-branch.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.service.worktrees.test.ts +620 -0
- package/src/modules/workspace/__tests__/workspace.tools.agents-file.test.ts +15 -1
- package/src/modules/workspace/__tests__/workspace.tools.branch-errors.test.ts +71 -5
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +153 -298
- package/src/modules/workspace/agent-access.gate.ts +2 -2
- package/src/modules/workspace/bounded-matcher.ts +328 -0
- package/src/modules/workspace/fetch-instant.ts +13 -0
- package/src/modules/workspace/index.ts +12 -0
- package/src/modules/workspace/kb-repository.contract.ts +124 -0
- package/src/modules/workspace/kb-repository.ts +844 -0
- package/src/modules/workspace/pattern-matcher.contract.ts +69 -0
- package/src/modules/workspace/routine-write-policy.ts +0 -15
- package/src/modules/workspace/set-aside-clone.ts +140 -0
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.degraded.test.ts +3 -2
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.test.ts +12 -10
- package/src/modules/workspace/startup/__tests__/kb-startup-runner.worktrees.test.ts +613 -0
- package/src/modules/workspace/startup/kb-startup-runner.ts +422 -29
- package/src/modules/workspace/startup/steps/__tests__/steps.test.ts +4 -3
- package/src/modules/workspace/workspace.service.ts +247 -169
- package/src/modules/workspace/workspace.tools.ts +179 -365
- package/src/test-setup.ts +5 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* They used to be appended, in full, to every tool description that they
|
|
5
5
|
* covered: the content rule rode on all twelve file tools, the agent-guide
|
|
6
|
-
* reminder on all of them
|
|
6
|
+
* reminder on all of them, the write-mode and escape-sequence
|
|
7
7
|
* paragraphs on two or three apiece. A description then ran to two or three
|
|
8
8
|
* thousand characters, most of it text the agent had already read on the tool
|
|
9
9
|
* above — and clients cut long descriptions from the END, which is where the
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* They used to be appended, in full, to every tool description that they
|
|
5
5
|
* covered: the content rule rode on all twelve file tools, the agent-guide
|
|
6
|
-
* reminder on all of them
|
|
6
|
+
* reminder on all of them, the write-mode and escape-sequence
|
|
7
7
|
* paragraphs on two or three apiece. A description then ran to two or three
|
|
8
8
|
* thousand characters, most of it text the agent had already read on the tool
|
|
9
9
|
* above — and clients cut long descriptions from the END, which is where the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.service.d.ts","sourceRoot":"","sources":["../../../src/modules/diff/diff.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAiB,aAAa,EAAc,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"diff.service.d.ts","sourceRoot":"","sources":["../../../src/modules/diff/diff.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAiB,aAAa,EAAc,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAa,KAAK,WAAW,EAAwB,MAAM,6BAA6B,CAAC;AAMhG;;;;GAIG;AACH,qBAAa,WAAY,YAAW,YAAY;IAE5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBALJ,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW;IAK9B,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAIlE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoC7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtE,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAYnF,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAWnF,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/D,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;YA8BtF,eAAe;YAYf,mBAAmB;YAgBnB,oBAAoB;YA6CpB,cAAc;YAqCd,iBAAiB;YAoBjB,iBAAiB;YAqBjB,YAAY;YASZ,WAAW;IAuBzB,mHAAmH;YACrG,gBAAgB;IAc9B;;;;;OAKG;YACW,oBAAoB;CAcnC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
import { gitDirOf } from '../kb-fs/index.js';
|
|
3
4
|
import { isAbsence } from '../../shared/fs.contract.js';
|
|
4
5
|
import { isDiffable } from './diff.config.js';
|
|
5
6
|
import { assertWithinDirectory } from '../../shared/path-containment.js';
|
|
@@ -377,7 +378,12 @@ export class DiffService {
|
|
|
377
378
|
async tryReadCurrentBranch(workspaceId) {
|
|
378
379
|
const workspaceDir = await this.workspaceService.getWorkspacePath(workspaceId);
|
|
379
380
|
try {
|
|
380
|
-
|
|
381
|
+
// A worktree's `.git` is a FILE naming its folder in the repository,
|
|
382
|
+
// where its HEAD lives; a full clone's is the folder itself.
|
|
383
|
+
const gitDir = await gitDirOf(path.join(workspaceDir, this.kbDirName));
|
|
384
|
+
if (gitDir === null)
|
|
385
|
+
return '';
|
|
386
|
+
const head = await fs.readFile(path.join(gitDir, 'HEAD'), 'utf-8');
|
|
381
387
|
const m = head.match(/^ref:\s+refs\/heads\/(.+?)\s*$/);
|
|
382
388
|
return m ? m[1] : '';
|
|
383
389
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.service.js","sourceRoot":"","sources":["../../../src/modules/diff/diff.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.service.js","sourceRoot":"","sources":["../../../src/modules/diff/diff.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a checkout's git directory is, read from its `.git` without spawning
|
|
3
|
+
* git — the one resolver every reader of a worktree's own files uses.
|
|
4
|
+
*
|
|
5
|
+
* A full clone's `.git` is the git directory itself. A worktree's `.git` is a
|
|
6
|
+
* FILE (`gitdir: <path>`) naming its folder in the repository, resolved
|
|
7
|
+
* against the file's own folder as git does.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The folder a gitfile (`gitdir: <path>`) names; null when the file is absent,
|
|
11
|
+
* is a folder, or says nothing of the kind. Any other read error propagates:
|
|
12
|
+
* a `.git` that could not be read has not been shown to be anything.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readGitfile(gitfile: string): Promise<string | null>;
|
|
15
|
+
/**
|
|
16
|
+
* The git directory of the checkout at `checkoutDir`: its `.git` folder, or
|
|
17
|
+
* the folder its `.git` file names. Null when there is no `.git`, or a `.git`
|
|
18
|
+
* file that names no folder. Errors other than absence propagate.
|
|
19
|
+
*/
|
|
20
|
+
export declare function gitDirOf(checkoutDir: string): Promise<string | null>;
|
|
21
|
+
//# sourceMappingURL=git-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-dir.d.ts","sourceRoot":"","sources":["../../../src/modules/kb-fs/git-dir.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAezE;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY1E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { isAbsence } from '../../shared/fs.contract.js';
|
|
4
|
+
/**
|
|
5
|
+
* Where a checkout's git directory is, read from its `.git` without spawning
|
|
6
|
+
* git — the one resolver every reader of a worktree's own files uses.
|
|
7
|
+
*
|
|
8
|
+
* A full clone's `.git` is the git directory itself. A worktree's `.git` is a
|
|
9
|
+
* FILE (`gitdir: <path>`) naming its folder in the repository, resolved
|
|
10
|
+
* against the file's own folder as git does.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* The folder a gitfile (`gitdir: <path>`) names; null when the file is absent,
|
|
14
|
+
* is a folder, or says nothing of the kind. Any other read error propagates:
|
|
15
|
+
* a `.git` that could not be read has not been shown to be anything.
|
|
16
|
+
*/
|
|
17
|
+
export async function readGitfile(gitfile) {
|
|
18
|
+
let text;
|
|
19
|
+
try {
|
|
20
|
+
text = await fs.readFile(gitfile, 'utf-8');
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
if (isAbsence(err) || err.code === 'EISDIR')
|
|
24
|
+
return null;
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
// Exactly what git reads (setup.c, `read_gitfile_gently`): the whole file
|
|
28
|
+
// is `gitdir: ` and a path, with nothing after the path but line ends. A
|
|
29
|
+
// second line, other spacing before the path, or anything after it is no
|
|
30
|
+
// gitfile to git, so it names no folder here either.
|
|
31
|
+
const m = /^gitdir: ([^\r\n]+?)[\r\n]*$/.exec(text);
|
|
32
|
+
if (!m)
|
|
33
|
+
return null;
|
|
34
|
+
return path.resolve(path.dirname(gitfile), m[1]);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The git directory of the checkout at `checkoutDir`: its `.git` folder, or
|
|
38
|
+
* the folder its `.git` file names. Null when there is no `.git`, or a `.git`
|
|
39
|
+
* file that names no folder. Errors other than absence propagate.
|
|
40
|
+
*/
|
|
41
|
+
export async function gitDirOf(checkoutDir) {
|
|
42
|
+
const dotGit = path.join(checkoutDir, '.git');
|
|
43
|
+
let stat;
|
|
44
|
+
try {
|
|
45
|
+
stat = await fs.stat(dotGit);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
if (isAbsence(err))
|
|
49
|
+
return null;
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
if (stat.isDirectory())
|
|
53
|
+
return dotGit;
|
|
54
|
+
if (!stat.isFile())
|
|
55
|
+
return null;
|
|
56
|
+
return readGitfile(dotGit);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=git-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-dir.js","sourceRoot":"","sources":["../../../src/modules/kb-fs/git-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD;;;;;;;GAOG;AAEH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe;IAC/C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,SAAS,CAAC,GAAG,CAAC,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpF,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,qDAAqD;IACrD,MAAM,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,WAAmB;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,SAAS,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -4,4 +4,6 @@
|
|
|
4
4
|
* workspace needs only the shape of the gate every write passes first.
|
|
5
5
|
*/
|
|
6
6
|
export type { WriteValidator } from './locking-filesystem.js';
|
|
7
|
+
export { readRefSha, readRevSha, type RefFileAnswer } from './ref-files.js';
|
|
8
|
+
export { gitDirOf, readGitfile } from './git-dir.js';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/kb-fs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/kb-fs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/kb-fs/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/kb-fs/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAsB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a ref points, read from the repository's own files instead of a
|
|
3
|
+
* `git rev-parse` process.
|
|
4
|
+
*
|
|
5
|
+
* A branch tip is a small file git maintains: `refs/remotes/origin/<branch>`
|
|
6
|
+
* as a loose file, or one line of `packed-refs`. Reading it costs a file read
|
|
7
|
+
* and no fork, and it is exactly as current as the last fetch — the same
|
|
8
|
+
* freshness a `rev-parse` has. A change-request listing resolves two tips per
|
|
9
|
+
* open request and the access gates resolve every ref they decide at; with a
|
|
10
|
+
* hundred open requests that was hundreds of forks per listing, each costing
|
|
11
|
+
* tens of milliseconds of the main thread on a server holding a large heap.
|
|
12
|
+
*
|
|
13
|
+
* What is read, in git's own order: a loose file under the common directory
|
|
14
|
+
* (a worktree shares `refs/` with the repository it belongs to), then
|
|
15
|
+
* `packed-refs`. `HEAD` and the per-worktree namespaces (`refs/worktree/`,
|
|
16
|
+
* `refs/bisect/`, `refs/rewritten/`) are a worktree's own: read loose from
|
|
17
|
+
* its git directory, never from the common directory, and never packed. A
|
|
18
|
+
* symbolic ref (`ref: refs/heads/main`) is followed. A tag is never decided
|
|
19
|
+
* here: its file may hold a tag object, and what that peels to is git's to
|
|
20
|
+
* say.
|
|
21
|
+
*
|
|
22
|
+
* The answer is one of three things, and the caller treats them differently:
|
|
23
|
+
* `{ sha }` is what git would answer too; `'missing'` means every file git
|
|
24
|
+
* would consult says there is no such ref, which is as authoritative as
|
|
25
|
+
* `rev-parse` answering nothing; `'unreadable'` means this reader could not
|
|
26
|
+
* decide — a repository it does not understand (one whose refs live in a
|
|
27
|
+
* reftable, say), a tag, a corrupt file, a name it refuses — and the caller
|
|
28
|
+
* asks git, which is authoritative. Never a guess: a read error is
|
|
29
|
+
* `'unreadable'`, not `'missing'`, so a flaky disk sends the caller to git
|
|
30
|
+
* rather than making a branch disappear.
|
|
31
|
+
*
|
|
32
|
+
* What the files guarantee about the object: git itself refuses to write a
|
|
33
|
+
* non-commit under `refs/heads/`, and `refs/remotes/origin/` mirrors the
|
|
34
|
+
* remote's `refs/heads/`, so a branch tip read here is a commit as surely
|
|
35
|
+
* as `rev-parse <branch>^{commit}` would make it one. A caller that holds
|
|
36
|
+
* an object id rather than a name, or a `<rev>^{...}` form, asks git.
|
|
37
|
+
*/
|
|
38
|
+
export type RefFileAnswer = {
|
|
39
|
+
sha: string;
|
|
40
|
+
} | 'missing' | 'unreadable';
|
|
41
|
+
/**
|
|
42
|
+
* The commit a full ref name (`refs/...`) or `HEAD` points at in the
|
|
43
|
+
* repository behind `repoDir` (a clone, or a worktree of one). See the module
|
|
44
|
+
* doc for the three answers and what each means to the caller.
|
|
45
|
+
*
|
|
46
|
+
* "Missing" is what `rev-parse` answers nothing for, and `rev-parse` tries
|
|
47
|
+
* the same prefixes for a full name as for a short one (`refs/heads/x` is
|
|
48
|
+
* also looked for as `refs/heads/refs/heads/x`), so a name that is missing
|
|
49
|
+
* as itself but present under a prefix is git's to resolve.
|
|
50
|
+
*/
|
|
51
|
+
export declare function readRefSha(repoDir: string, ref: string): Promise<RefFileAnswer>;
|
|
52
|
+
/**
|
|
53
|
+
* {@link readRefSha} for a name as a caller holds it (`main`, `origin/main`,
|
|
54
|
+
* `HEAD`, `refs/heads/main`): the first of git's candidates that resolves,
|
|
55
|
+
* starting where git starts, at `$GIT_DIR/<name>` itself. Whatever is found
|
|
56
|
+
* there (`MERGE_HEAD`, `FETCH_HEAD`, `AUTO_MERGE`, which may name a tree) is
|
|
57
|
+
* git's to resolve; only its absence lets the `refs/` candidates be read.
|
|
58
|
+
* `'missing'` only when every candidate is missing; `'unreadable'` as soon
|
|
59
|
+
* as one cannot be decided, because the undecided one might be the one git
|
|
60
|
+
* would pick.
|
|
61
|
+
*/
|
|
62
|
+
export declare function readRevSha(repoDir: string, rev: string): Promise<RefFileAnswer>;
|
|
63
|
+
//# sourceMappingURL=ref-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref-files.d.ts","sourceRoot":"","sources":["../../../src/modules/kb-fs/ref-files.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAAG,YAAY,CAAC;AAqJvE;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CASrF;AA+BD;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAUrF"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { isAbsence } from '../../shared/fs.contract.js';
|
|
4
|
+
import { gitDirOf } from './git-dir.js';
|
|
5
|
+
const SHA = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/;
|
|
6
|
+
const MAX_SYMREF_DEPTH = 5;
|
|
7
|
+
const PER_WORKTREE = /^refs\/(?:worktree|bisect|rewritten)\//;
|
|
8
|
+
/** A ref name this reader is willing to turn into a path under `.git`. */
|
|
9
|
+
function isSafeRefName(ref) {
|
|
10
|
+
if (ref === 'HEAD')
|
|
11
|
+
return true;
|
|
12
|
+
if (!ref.startsWith('refs/'))
|
|
13
|
+
return false;
|
|
14
|
+
if (!/^[A-Za-z0-9._\-/@+]+$/.test(ref))
|
|
15
|
+
return false;
|
|
16
|
+
return !ref.split('/').some((segment) => segment === '' || segment === '.' || segment === '..');
|
|
17
|
+
}
|
|
18
|
+
async function gitDirsOf(repoDir) {
|
|
19
|
+
let gitDir;
|
|
20
|
+
try {
|
|
21
|
+
gitDir = await gitDirOf(repoDir);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
if (gitDir === null)
|
|
27
|
+
return null;
|
|
28
|
+
let commonDir = gitDir;
|
|
29
|
+
try {
|
|
30
|
+
const pointer = (await fs.readFile(path.join(gitDir, 'commondir'), 'utf-8')).trim();
|
|
31
|
+
if (pointer)
|
|
32
|
+
commonDir = path.resolve(gitDir, pointer);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
if (!isAbsence(err))
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
// A repository whose refs live in a reftable (`extensions.refStorage`)
|
|
39
|
+
// keeps nothing this reader understands under `refs/` or in `packed-refs`:
|
|
40
|
+
// every name would read as missing. Not a repository for this reader.
|
|
41
|
+
try {
|
|
42
|
+
await fs.stat(path.join(commonDir, 'reftable'));
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (!isAbsence(err))
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
if (/^\s*refstorage\s*=\s*reftable\s*$/im.test(await fs.readFile(path.join(commonDir, 'config'), 'utf-8'))) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
if (!isAbsence(err))
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return { gitDir, commonDir };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* `packed-refs`: `<sha> <name>` lines, `^<sha>` peel lines, `#` comments.
|
|
62
|
+
* Absent file → an empty table. A line that is none of those is a file this
|
|
63
|
+
* reader does not understand, and the whole table is null (unreadable): a
|
|
64
|
+
* record it skipped could be the one that was asked for.
|
|
65
|
+
*/
|
|
66
|
+
async function readPackedRefs(commonDir) {
|
|
67
|
+
let text;
|
|
68
|
+
try {
|
|
69
|
+
text = await fs.readFile(path.join(commonDir, 'packed-refs'), 'utf-8');
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return isAbsence(err) ? new Map() : null;
|
|
73
|
+
}
|
|
74
|
+
const table = new Map();
|
|
75
|
+
for (const raw of text.split('\n')) {
|
|
76
|
+
const line = raw.trim();
|
|
77
|
+
if (!line || line.startsWith('#'))
|
|
78
|
+
continue;
|
|
79
|
+
if (line.startsWith('^')) {
|
|
80
|
+
if (!SHA.test(line.slice(1)))
|
|
81
|
+
return null;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const space = line.indexOf(' ');
|
|
85
|
+
const sha = space < 0 ? '' : line.slice(0, space);
|
|
86
|
+
const name = space < 0 ? '' : line.slice(space + 1).trim();
|
|
87
|
+
if (!SHA.test(sha) || !name)
|
|
88
|
+
return null;
|
|
89
|
+
table.set(name, sha);
|
|
90
|
+
}
|
|
91
|
+
return table;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The file at `<dir>/<relative>`, read as git reads a loose ref: a symbolic
|
|
95
|
+
* ref is followed, an object id is the answer, anything else is not decided.
|
|
96
|
+
*/
|
|
97
|
+
async function readLooseRef(dirs, dir, relative, depth) {
|
|
98
|
+
let text;
|
|
99
|
+
try {
|
|
100
|
+
text = (await fs.readFile(path.join(dir, ...relative.split('/')), 'utf-8')).trim();
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
return isAbsence(err) ? 'missing' : 'unreadable';
|
|
104
|
+
}
|
|
105
|
+
if (text.startsWith('ref:')) {
|
|
106
|
+
const answer = await resolveIn(dirs, text.slice('ref:'.length).trim(), depth + 1);
|
|
107
|
+
// A symbolic ref whose target is gone is dangling, and git reports it
|
|
108
|
+
// as such; a packed entry under the symbolic ref's own name does not
|
|
109
|
+
// stand in for it. Git's to report, then.
|
|
110
|
+
return answer === 'missing' ? 'unreadable' : answer;
|
|
111
|
+
}
|
|
112
|
+
return SHA.test(text) ? { sha: text } : 'unreadable';
|
|
113
|
+
}
|
|
114
|
+
async function resolveIn(dirs, ref, depth) {
|
|
115
|
+
if (depth > MAX_SYMREF_DEPTH)
|
|
116
|
+
return 'unreadable';
|
|
117
|
+
if (!isSafeRefName(ref))
|
|
118
|
+
return 'unreadable';
|
|
119
|
+
// `HEAD` and the per-worktree namespaces (`refs/worktree/`, `refs/bisect/`,
|
|
120
|
+
// `refs/rewritten/`) are a worktree's own, kept loose in its git directory
|
|
121
|
+
// and never packed; everything else is the repository's.
|
|
122
|
+
const own = ref === 'HEAD' || PER_WORKTREE.test(ref);
|
|
123
|
+
const loose = await readLooseRef(dirs, own ? dirs.gitDir : dirs.commonDir, ref, depth);
|
|
124
|
+
if (loose !== 'missing')
|
|
125
|
+
return decidedHere(ref, loose);
|
|
126
|
+
if (own)
|
|
127
|
+
return 'missing';
|
|
128
|
+
const packed = await (dirs.packed ??= readPackedRefs(dirs.commonDir));
|
|
129
|
+
if (!packed)
|
|
130
|
+
return 'unreadable';
|
|
131
|
+
const sha = packed.get(ref);
|
|
132
|
+
return sha ? decidedHere(ref, { sha }) : 'missing';
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* The files decide only where git itself guarantees the object is a commit:
|
|
136
|
+
* `HEAD` and `refs/heads/*`, which git refuses to point at anything else,
|
|
137
|
+
* and `refs/remotes/*`, fetched from a remote's `refs/heads/*` under the
|
|
138
|
+
* same refusal. Anything else that exists — a tag, a ref directly under
|
|
139
|
+
* `refs/` — may name a tree or a blob, which only git's `^{commit}` refuses,
|
|
140
|
+
* so it is git's to resolve. Anything that does not exist is as missing as
|
|
141
|
+
* any other ref, so a short name can move on to the branch git would find
|
|
142
|
+
* next.
|
|
143
|
+
*/
|
|
144
|
+
function decidedHere(ref, answer) {
|
|
145
|
+
if (answer !== 'missing' && answer !== 'unreadable' && !commitGuaranteed(ref))
|
|
146
|
+
return 'unreadable';
|
|
147
|
+
return answer;
|
|
148
|
+
}
|
|
149
|
+
function commitGuaranteed(ref) {
|
|
150
|
+
return ref === 'HEAD' || ref.startsWith('refs/heads/') || ref.startsWith('refs/remotes/');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* The commit a full ref name (`refs/...`) or `HEAD` points at in the
|
|
154
|
+
* repository behind `repoDir` (a clone, or a worktree of one). See the module
|
|
155
|
+
* doc for the three answers and what each means to the caller.
|
|
156
|
+
*
|
|
157
|
+
* "Missing" is what `rev-parse` answers nothing for, and `rev-parse` tries
|
|
158
|
+
* the same prefixes for a full name as for a short one (`refs/heads/x` is
|
|
159
|
+
* also looked for as `refs/heads/refs/heads/x`), so a name that is missing
|
|
160
|
+
* as itself but present under a prefix is git's to resolve.
|
|
161
|
+
*/
|
|
162
|
+
export async function readRefSha(repoDir, ref) {
|
|
163
|
+
const dirs = await gitDirsOf(repoDir);
|
|
164
|
+
if (!dirs)
|
|
165
|
+
return 'unreadable';
|
|
166
|
+
const exact = await resolveIn(dirs, ref, 0);
|
|
167
|
+
if (exact !== 'missing')
|
|
168
|
+
return exact;
|
|
169
|
+
for (const name of prefixedCandidates(ref)) {
|
|
170
|
+
if ((await resolveIn(dirs, name, 0)) !== 'missing')
|
|
171
|
+
return 'unreadable';
|
|
172
|
+
}
|
|
173
|
+
return 'missing';
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* The names `git rev-parse` tries for `<name>` after `$GIT_DIR/<name>`
|
|
177
|
+
* itself, in git's order (gitrevisions(7)): `refs/<name>`,
|
|
178
|
+
* `refs/tags/<name>`, `refs/heads/<name>`, `refs/remotes/<name>`,
|
|
179
|
+
* `refs/remotes/<name>/HEAD`. The same for every spelling, a full `refs/...`
|
|
180
|
+
* name included.
|
|
181
|
+
*/
|
|
182
|
+
function prefixedCandidates(name) {
|
|
183
|
+
return [`refs/${name}`, `refs/tags/${name}`, `refs/heads/${name}`, `refs/remotes/${name}`, `refs/remotes/${name}/HEAD`];
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Every name `git rev-parse` tries for a spelling, in git's order: the
|
|
187
|
+
* spelling itself at `$GIT_DIR/<name>` (which for `HEAD` and a full
|
|
188
|
+
* `refs/...` name is the ref file), then the prefixed forms. Null for a
|
|
189
|
+
* spelling this reader does not resolve — an object id or its abbreviation,
|
|
190
|
+
* a `<rev>^{...}` or `@{...}` form, an empty or option-looking name — which
|
|
191
|
+
* the caller sends to git.
|
|
192
|
+
*/
|
|
193
|
+
function refNameCandidates(ref) {
|
|
194
|
+
if (!ref || ref.startsWith('-'))
|
|
195
|
+
return null;
|
|
196
|
+
if (/[\^~:@{}\\\s]/.test(ref))
|
|
197
|
+
return null;
|
|
198
|
+
if (/^[0-9a-f]{4,64}$/i.test(ref))
|
|
199
|
+
return null;
|
|
200
|
+
// `main-worktree/<ref>` and `worktrees/<name>/<ref>` reach another
|
|
201
|
+
// worktree's own refs (gitrevisions(7)): git's to resolve.
|
|
202
|
+
if (/^(?:main-worktree|worktrees)\//.test(ref))
|
|
203
|
+
return null;
|
|
204
|
+
return [ref, ...prefixedCandidates(ref)];
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* {@link readRefSha} for a name as a caller holds it (`main`, `origin/main`,
|
|
208
|
+
* `HEAD`, `refs/heads/main`): the first of git's candidates that resolves,
|
|
209
|
+
* starting where git starts, at `$GIT_DIR/<name>` itself. Whatever is found
|
|
210
|
+
* there (`MERGE_HEAD`, `FETCH_HEAD`, `AUTO_MERGE`, which may name a tree) is
|
|
211
|
+
* git's to resolve; only its absence lets the `refs/` candidates be read.
|
|
212
|
+
* `'missing'` only when every candidate is missing; `'unreadable'` as soon
|
|
213
|
+
* as one cannot be decided, because the undecided one might be the one git
|
|
214
|
+
* would pick.
|
|
215
|
+
*/
|
|
216
|
+
export async function readRevSha(repoDir, rev) {
|
|
217
|
+
const candidates = refNameCandidates(rev);
|
|
218
|
+
if (!candidates)
|
|
219
|
+
return 'unreadable';
|
|
220
|
+
const dirs = await gitDirsOf(repoDir);
|
|
221
|
+
if (!dirs)
|
|
222
|
+
return 'unreadable';
|
|
223
|
+
for (const name of candidates) {
|
|
224
|
+
const answer = name === rev ? await resolveAsItself(dirs, rev) : await resolveIn(dirs, name, 0);
|
|
225
|
+
if (answer !== 'missing')
|
|
226
|
+
return answer;
|
|
227
|
+
}
|
|
228
|
+
return 'missing';
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Git's first step for any spelling: `$GIT_DIR/<name>`. For `HEAD` and a
|
|
232
|
+
* full `refs/...` name that is the ref itself, read as such. For anything
|
|
233
|
+
* else it is a pseudoref (`MERGE_HEAD`, `AUTO_MERGE`, which may name a
|
|
234
|
+
* tree), and whatever exists there is git's to resolve.
|
|
235
|
+
*/
|
|
236
|
+
async function resolveAsItself(dirs, rev) {
|
|
237
|
+
if (rev === 'HEAD' || rev.startsWith('refs/'))
|
|
238
|
+
return resolveIn(dirs, rev, 0);
|
|
239
|
+
if (!isSafeRefName(`refs/${rev}`))
|
|
240
|
+
return 'unreadable';
|
|
241
|
+
try {
|
|
242
|
+
await fs.stat(path.join(dirs.gitDir, ...rev.split('/')));
|
|
243
|
+
return 'unreadable';
|
|
244
|
+
}
|
|
245
|
+
catch (err) {
|
|
246
|
+
return isAbsence(err) ? 'missing' : 'unreadable';
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=ref-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref-files.js","sourceRoot":"","sources":["../../../src/modules/kb-fs/ref-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,10 @@ import type { IPluginIndexService } from './plugins.contract.js';
|
|
|
27
27
|
* what `read: everyone` (or a public plugin) reaches. Same slice, same
|
|
28
28
|
* caller gate, asked of the resolver as `canReadAsEveryoneBatch`. The name
|
|
29
29
|
* cannot collide with a group's: `everyone` is reserved by the grammar.
|
|
30
|
+
*
|
|
31
|
+
* The groups listed after it are every group for an admin, and only the
|
|
32
|
+
* caller's own groups for anyone else (`groupsOfUser`), so the lens never
|
|
33
|
+
* names a group the caller has no part in.
|
|
30
34
|
*/
|
|
31
35
|
export interface TeamAccess {
|
|
32
36
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teams.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/plugins/teams.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAU9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,uBAAuB,CAAC;AAErF
|
|
1
|
+
{"version":3,"file":"teams.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/plugins/teams.routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAU9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,uBAAuB,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,+FAA+F;AAC/F,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,mBAAmB,EAChC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAC/C,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AACzD,0GAA0G;AAC1G,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,oBAAoB,GAAG,QAAQ,CAAC,GACnD,OAAO,CAAC,MAAM,CA6EhB"}
|
|
@@ -53,10 +53,18 @@ kb) {
|
|
|
53
53
|
tools: tools.filter((t) => reads(t.path) && callerReads(t.path)).map((t) => t.slug),
|
|
54
54
|
};
|
|
55
55
|
};
|
|
56
|
+
// Which groups to list: the resolver's one answer to who sees which
|
|
57
|
+
// group (every group for an admin, only their own for anyone else), the
|
|
58
|
+
// same the share dialog offers and a grant may name. A group's NAME is
|
|
59
|
+
// information too: a deployment that gives each client, author or
|
|
60
|
+
// customer a group of their own would otherwise show every member the
|
|
61
|
+
// whole roster, even though the slices of groups they are not in come
|
|
62
|
+
// back empty.
|
|
63
|
+
const listed = await accessControl.visibleGroups(wsId, email, groups);
|
|
56
64
|
const teams = [
|
|
57
65
|
slice(EVERYONE_TEAM, await accessControl.canReadAsEveryoneBatch(wsId, probes)),
|
|
58
66
|
];
|
|
59
|
-
for (const name of
|
|
67
|
+
for (const name of listed) {
|
|
60
68
|
const team = await accessControl.canReadAsGroupBatch(wsId, name, probes);
|
|
61
69
|
if (team === null)
|
|
62
70
|
continue; // gone between the two reads — nothing to say
|