@agent-relay/config 15.0.0-next.1 → 15.0.0-next.10
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.
|
@@ -6,6 +6,63 @@
|
|
|
6
6
|
* This allows multiple projects to use agent-relay simultaneously
|
|
7
7
|
* without conflicts, and keeps data with the project.
|
|
8
8
|
*/
|
|
9
|
+
/**
|
|
10
|
+
* The CLI's own machine-wide data folder: `AGENT_RELAY_HOME`, default
|
|
11
|
+
* `~/.agentworkforce/relay`. It holds `workspaces.json`, `cloud-auth.json`,
|
|
12
|
+
* fleet-node files and binaries, so it is never a project's data folder.
|
|
13
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
14
|
+
* @returns The relay home, resolved but not canonicalized
|
|
15
|
+
*/
|
|
16
|
+
export declare function relayHomeDir(env?: NodeJS.ProcessEnv): string;
|
|
17
|
+
/**
|
|
18
|
+
* Whether `dataDir` is a relay home rather than a project's data folder:
|
|
19
|
+
* - this process's relay home (`AGENT_RELAY_HOME`), or the default
|
|
20
|
+
* `~/.agentworkforce/relay` even while `AGENT_RELAY_HOME` points elsewhere,
|
|
21
|
+
* compared as canonical paths (symlinks resolved; the same file system
|
|
22
|
+
* object when both exist, which also covers a case-insensitive volume);
|
|
23
|
+
* - any folder holding a machine-wide workspace store (`workspaces.json`),
|
|
24
|
+
* which no project folder does, such as the real home's relay folder while
|
|
25
|
+
* `HOME` itself points elsewhere.
|
|
26
|
+
* @param dataDir - A project's `.agentworkforce/relay` folder
|
|
27
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
28
|
+
*/
|
|
29
|
+
export declare function isRelayHomeDir(dataDir: string, env?: NodeJS.ProcessEnv): boolean;
|
|
30
|
+
/** A project pin, or another project-scoped file, was about to be written outside any project. */
|
|
31
|
+
export declare class RelayHomeProjectError extends Error {
|
|
32
|
+
readonly dataDir: string;
|
|
33
|
+
readonly projectRoot?: string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* @param dataDir - The Relay folder that would have held the pin
|
|
36
|
+
* @param projectRoot - The project root, when the home folder itself was taken for one
|
|
37
|
+
*/
|
|
38
|
+
constructor(dataDir: string, projectRoot?: string | undefined);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Refuse to treat the relay home as a project's data folder. Every writer of
|
|
42
|
+
* a project pin (`workspace-key.json`) calls this first.
|
|
43
|
+
* @param dataDir - The project's `.agentworkforce/relay` folder
|
|
44
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
45
|
+
* @throws RelayHomeProjectError when `dataDir` is the relay home
|
|
46
|
+
*/
|
|
47
|
+
export declare function assertNotRelayHome(dataDir: string, env?: NodeJS.ProcessEnv): void;
|
|
48
|
+
/**
|
|
49
|
+
* Whether `projectRoot` is no project at all: the home folder itself, or a
|
|
50
|
+
* folder whose `.agentworkforce/relay` is a relay home ({@link isRelayHomeDir}).
|
|
51
|
+
* A project root found by walking up from an unmarked folder under `~` (a
|
|
52
|
+
* dotfiles `~/.git`, a stray `~/package.json`) lands here too.
|
|
53
|
+
* @param projectRoot - A detected or configured project root
|
|
54
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
55
|
+
*/
|
|
56
|
+
export declare function isHomeProjectRoot(projectRoot: string, env?: NodeJS.ProcessEnv): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Refuse a project root that is the home folder (or holds the relay home),
|
|
59
|
+
* before any project-scoped file (the workspace pin, `.mcp.json`,
|
|
60
|
+
* `opencode.json`, `.devin/mcp_config.json`, ...) is written there.
|
|
61
|
+
* @param projectRoot - The project root about to receive project-scoped files
|
|
62
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
63
|
+
* @throws RelayHomeProjectError when `projectRoot` is no project
|
|
64
|
+
*/
|
|
65
|
+
export declare function assertProjectRoot(projectRoot: string, env?: NodeJS.ProcessEnv): void;
|
|
9
66
|
/**
|
|
10
67
|
* Get the project root by looking for common markers
|
|
11
68
|
*
|
|
@@ -13,6 +70,9 @@
|
|
|
13
70
|
* 1. AGENT_RELAY_PROJECT environment variable (for worktrees/subprojects)
|
|
14
71
|
* 2. An explicitly pinned nested project, or the enclosing Git checkout
|
|
15
72
|
* 3. The nearest package marker when outside Git
|
|
73
|
+
*
|
|
74
|
+
* The relay home (`~/.agentworkforce/relay` by default) is never a marker: a
|
|
75
|
+
* folder under the home directory is not part of a "project" rooted at `~`.
|
|
16
76
|
*/
|
|
17
77
|
export declare function findProjectRoot(startDir?: string): string;
|
|
18
78
|
/**
|
|
@@ -33,6 +93,22 @@ export interface ProjectPaths {
|
|
|
33
93
|
projectId: string;
|
|
34
94
|
}
|
|
35
95
|
export declare function getProjectPaths(projectRoot?: string): ProjectPaths;
|
|
96
|
+
/**
|
|
97
|
+
* Keep the project's `.agentworkforce/relay/` directory (workspace key,
|
|
98
|
+
* sockets, local state) out of `git status` by adding it to the repository's
|
|
99
|
+
* `info/exclude`, the per-clone ignore file that is never committed. The
|
|
100
|
+
* project's own `.gitignore` is never modified.
|
|
101
|
+
*
|
|
102
|
+
* Linked worktrees and submodules are handled (the exclude file lives in the
|
|
103
|
+
* repository's common git directory). Outside a git work tree, or on any
|
|
104
|
+
* error, nothing is changed.
|
|
105
|
+
*
|
|
106
|
+
* @param dataDir - The project data directory, `<project>/.agentworkforce/relay`.
|
|
107
|
+
* @returns Whether the exclude file was changed.
|
|
108
|
+
*/
|
|
109
|
+
export declare function ensureGitExclude(dataDir: string): {
|
|
110
|
+
modified: boolean;
|
|
111
|
+
};
|
|
36
112
|
/**
|
|
37
113
|
* Ensure the project data directory exists
|
|
38
114
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-namespace.d.ts","sourceRoot":"","sources":["../src/project-namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"project-namespace.d.ts","sourceRoot":"","sources":["../src/project-namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGzE;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAI7F;AAyBD,kGAAkG;AAClG,qBAAa,qBAAsB,SAAQ,KAAK;aAM5B,OAAO,EAAE,MAAM;aACf,WAAW,CAAC,EAAE,MAAM;IANtC;;;OAGG;gBAEe,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,YAAA;CAYvC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAE9F;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEpG;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAIjG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAkDxE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,CAclE;AAgED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAgCvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,CAmCnE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+C3D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB5D;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAUnF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAcjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAO7D"}
|
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
* without conflicts, and keeps data with the project.
|
|
8
8
|
*/
|
|
9
9
|
import crypto from 'node:crypto';
|
|
10
|
+
import os from 'node:os';
|
|
10
11
|
import path from 'node:path';
|
|
11
12
|
import fs from 'node:fs';
|
|
12
13
|
/** Directory name within project root */
|
|
13
14
|
const PROJECT_DATA_DIR = '.agentworkforce/relay';
|
|
15
|
+
/** The machine-wide workspace store every relay home keeps. */
|
|
16
|
+
const WORKSPACE_STORE_FILE = 'workspaces.json';
|
|
14
17
|
/**
|
|
15
18
|
* Generate a short hash of a path for namespacing
|
|
16
19
|
*/
|
|
@@ -19,6 +22,148 @@ function hashPath(projectPath) {
|
|
|
19
22
|
const hash = crypto.createHash('sha256').update(normalized).digest('hex');
|
|
20
23
|
return hash.substring(0, 12); // First 12 chars is enough
|
|
21
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* The CLI's own machine-wide data folder: `AGENT_RELAY_HOME`, default
|
|
27
|
+
* `~/.agentworkforce/relay`. It holds `workspaces.json`, `cloud-auth.json`,
|
|
28
|
+
* fleet-node files and binaries, so it is never a project's data folder.
|
|
29
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
30
|
+
* @returns The relay home, resolved but not canonicalized
|
|
31
|
+
*/
|
|
32
|
+
export function relayHomeDir(env = process.env) {
|
|
33
|
+
const configured = env.AGENT_RELAY_HOME?.trim();
|
|
34
|
+
return path.resolve(configured || path.join(os.homedir(), PROJECT_DATA_DIR));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* `target` with symlinks resolved as far as it exists: the nearest existing
|
|
38
|
+
* ancestor is canonicalized and the missing rest appended, so a folder that
|
|
39
|
+
* does not exist yet still compares equal to the one it will be created as.
|
|
40
|
+
*/
|
|
41
|
+
function canonicalPath(target) {
|
|
42
|
+
const resolved = path.resolve(target);
|
|
43
|
+
const known = canonicalPaths.get(resolved);
|
|
44
|
+
if (known !== undefined)
|
|
45
|
+
return known;
|
|
46
|
+
const canonical = canonicalize(resolved);
|
|
47
|
+
// Creating the missing folders later does not change where they resolve,
|
|
48
|
+
// so a result is kept: each probe of a missing folder can be slow on an
|
|
49
|
+
// automounted volume (macOS /home).
|
|
50
|
+
if (canonicalPaths.size > 256)
|
|
51
|
+
canonicalPaths.clear();
|
|
52
|
+
canonicalPaths.set(resolved, canonical);
|
|
53
|
+
return canonical;
|
|
54
|
+
}
|
|
55
|
+
const canonicalPaths = new Map();
|
|
56
|
+
function canonicalize(resolved) {
|
|
57
|
+
const missing = [];
|
|
58
|
+
let current = resolved;
|
|
59
|
+
for (;;) {
|
|
60
|
+
try {
|
|
61
|
+
return path.join(fs.realpathSync.native(current), ...missing.reverse());
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
const parent = path.dirname(current);
|
|
65
|
+
if (parent === current)
|
|
66
|
+
return path.join(current, ...missing.reverse());
|
|
67
|
+
missing.push(path.basename(current));
|
|
68
|
+
current = parent;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Whether `dataDir` is a relay home rather than a project's data folder:
|
|
74
|
+
* - this process's relay home (`AGENT_RELAY_HOME`), or the default
|
|
75
|
+
* `~/.agentworkforce/relay` even while `AGENT_RELAY_HOME` points elsewhere,
|
|
76
|
+
* compared as canonical paths (symlinks resolved; the same file system
|
|
77
|
+
* object when both exist, which also covers a case-insensitive volume);
|
|
78
|
+
* - any folder holding a machine-wide workspace store (`workspaces.json`),
|
|
79
|
+
* which no project folder does, such as the real home's relay folder while
|
|
80
|
+
* `HOME` itself points elsewhere.
|
|
81
|
+
* @param dataDir - A project's `.agentworkforce/relay` folder
|
|
82
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
83
|
+
*/
|
|
84
|
+
export function isRelayHomeDir(dataDir, env = process.env) {
|
|
85
|
+
if (fs.existsSync(path.join(dataDir, WORKSPACE_STORE_FILE)))
|
|
86
|
+
return true;
|
|
87
|
+
const defaultHome = path.join(os.homedir(), PROJECT_DATA_DIR);
|
|
88
|
+
return [relayHomeDir(env), defaultHome].some((home) => samePath(dataDir, home));
|
|
89
|
+
}
|
|
90
|
+
function samePath(a, b) {
|
|
91
|
+
const left = statOrUndefined(a);
|
|
92
|
+
const right = statOrUndefined(b);
|
|
93
|
+
// Both exist: the same file system object (symlinks followed, any case).
|
|
94
|
+
if (left && right)
|
|
95
|
+
return left.dev === right.dev && left.ino === right.ino;
|
|
96
|
+
// Only one exists: not the same folder.
|
|
97
|
+
if (left || right)
|
|
98
|
+
return false;
|
|
99
|
+
// Neither exists yet: compare where they would be.
|
|
100
|
+
return path.resolve(a) === path.resolve(b) || canonicalPath(a) === canonicalPath(b);
|
|
101
|
+
}
|
|
102
|
+
function statOrUndefined(target) {
|
|
103
|
+
try {
|
|
104
|
+
return fs.statSync(target);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const INSIDE_A_PROJECT = 'Run this inside a project folder (cd into the project first), or set AGENT_RELAY_PROJECT ' +
|
|
111
|
+
'to the project folder.';
|
|
112
|
+
/** A project pin, or another project-scoped file, was about to be written outside any project. */
|
|
113
|
+
export class RelayHomeProjectError extends Error {
|
|
114
|
+
dataDir;
|
|
115
|
+
projectRoot;
|
|
116
|
+
/**
|
|
117
|
+
* @param dataDir - The Relay folder that would have held the pin
|
|
118
|
+
* @param projectRoot - The project root, when the home folder itself was taken for one
|
|
119
|
+
*/
|
|
120
|
+
constructor(dataDir, projectRoot) {
|
|
121
|
+
super(projectRoot
|
|
122
|
+
? `Refusing to set up ${projectRoot} as a project: it is your home folder (or holds the Relay ` +
|
|
123
|
+
`home), and project files written there would land among your own settings. ${INSIDE_A_PROJECT}`
|
|
124
|
+
: `Refusing to use ${dataDir} as this project's Relay folder: it is the Relay home ` +
|
|
125
|
+
'(AGENT_RELAY_HOME), where Relay keeps its machine-wide workspaces, sign-in and binaries. ' +
|
|
126
|
+
INSIDE_A_PROJECT);
|
|
127
|
+
this.dataDir = dataDir;
|
|
128
|
+
this.projectRoot = projectRoot;
|
|
129
|
+
this.name = 'RelayHomeProjectError';
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Refuse to treat the relay home as a project's data folder. Every writer of
|
|
134
|
+
* a project pin (`workspace-key.json`) calls this first.
|
|
135
|
+
* @param dataDir - The project's `.agentworkforce/relay` folder
|
|
136
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
137
|
+
* @throws RelayHomeProjectError when `dataDir` is the relay home
|
|
138
|
+
*/
|
|
139
|
+
export function assertNotRelayHome(dataDir, env = process.env) {
|
|
140
|
+
if (isRelayHomeDir(dataDir, env))
|
|
141
|
+
throw new RelayHomeProjectError(dataDir);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Whether `projectRoot` is no project at all: the home folder itself, or a
|
|
145
|
+
* folder whose `.agentworkforce/relay` is a relay home ({@link isRelayHomeDir}).
|
|
146
|
+
* A project root found by walking up from an unmarked folder under `~` (a
|
|
147
|
+
* dotfiles `~/.git`, a stray `~/package.json`) lands here too.
|
|
148
|
+
* @param projectRoot - A detected or configured project root
|
|
149
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
150
|
+
*/
|
|
151
|
+
export function isHomeProjectRoot(projectRoot, env = process.env) {
|
|
152
|
+
return samePath(projectRoot, os.homedir()) || isRelayHomeDir(path.join(projectRoot, PROJECT_DATA_DIR), env);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Refuse a project root that is the home folder (or holds the relay home),
|
|
156
|
+
* before any project-scoped file (the workspace pin, `.mcp.json`,
|
|
157
|
+
* `opencode.json`, `.devin/mcp_config.json`, ...) is written there.
|
|
158
|
+
* @param projectRoot - The project root about to receive project-scoped files
|
|
159
|
+
* @param env - Environment to read `AGENT_RELAY_HOME` from
|
|
160
|
+
* @throws RelayHomeProjectError when `projectRoot` is no project
|
|
161
|
+
*/
|
|
162
|
+
export function assertProjectRoot(projectRoot, env = process.env) {
|
|
163
|
+
if (isHomeProjectRoot(projectRoot, env)) {
|
|
164
|
+
throw new RelayHomeProjectError(path.join(projectRoot, PROJECT_DATA_DIR), projectRoot);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
22
167
|
/**
|
|
23
168
|
* Get the project root by looking for common markers
|
|
24
169
|
*
|
|
@@ -26,6 +171,9 @@ function hashPath(projectPath) {
|
|
|
26
171
|
* 1. AGENT_RELAY_PROJECT environment variable (for worktrees/subprojects)
|
|
27
172
|
* 2. An explicitly pinned nested project, or the enclosing Git checkout
|
|
28
173
|
* 3. The nearest package marker when outside Git
|
|
174
|
+
*
|
|
175
|
+
* The relay home (`~/.agentworkforce/relay` by default) is never a marker: a
|
|
176
|
+
* folder under the home directory is not part of a "project" rooted at `~`.
|
|
29
177
|
*/
|
|
30
178
|
export function findProjectRoot(startDir = process.cwd()) {
|
|
31
179
|
// Allow explicit override for worktrees and subprojects
|
|
@@ -34,12 +182,14 @@ export function findProjectRoot(startDir = process.cwd()) {
|
|
|
34
182
|
}
|
|
35
183
|
let current = path.resolve(startDir);
|
|
36
184
|
const root = path.parse(current).root;
|
|
37
|
-
const markers = ['package.json', 'Cargo.toml', 'go.mod', 'pyproject.toml',
|
|
185
|
+
const markers = ['package.json', 'Cargo.toml', 'go.mod', 'pyproject.toml', PROJECT_DATA_DIR];
|
|
38
186
|
let nearestPackage;
|
|
39
187
|
while (true) {
|
|
188
|
+
const dataDir = path.join(current, PROJECT_DATA_DIR);
|
|
189
|
+
const relayHomeHere = fs.existsSync(dataDir) && isRelayHomeDir(dataDir);
|
|
40
190
|
// Existing subproject pins remain intentional namespaces. A package.json
|
|
41
191
|
// alone must not split spawn, rebind, node up and attach across projects.
|
|
42
|
-
if (fs.existsSync(path.join(current, PROJECT_DATA_DIR, 'workspace-key.json')))
|
|
192
|
+
if (!relayHomeHere && fs.existsSync(path.join(current, PROJECT_DATA_DIR, 'workspace-key.json')))
|
|
43
193
|
return current;
|
|
44
194
|
const gitMarkerPath = path.join(current, '.git');
|
|
45
195
|
let marker;
|
|
@@ -68,6 +218,8 @@ export function findProjectRoot(startDir = process.cwd()) {
|
|
|
68
218
|
throw new Error('Cannot resolve the repository workspace; check access to its Git project marker.');
|
|
69
219
|
}
|
|
70
220
|
for (const marker of markers) {
|
|
221
|
+
if (marker === PROJECT_DATA_DIR && relayHomeHere)
|
|
222
|
+
continue;
|
|
71
223
|
if (!nearestPackage && fs.existsSync(path.join(current, marker)))
|
|
72
224
|
nearestPackage = current;
|
|
73
225
|
}
|
|
@@ -92,55 +244,124 @@ export function getProjectPaths(projectRoot) {
|
|
|
92
244
|
projectId,
|
|
93
245
|
};
|
|
94
246
|
}
|
|
247
|
+
/** The `.git` directory or `gitdir:` file nearest `dir`, walking up. */
|
|
248
|
+
function findDotGit(dir) {
|
|
249
|
+
let current = path.resolve(dir);
|
|
250
|
+
for (;;) {
|
|
251
|
+
const candidate = path.join(current, '.git');
|
|
252
|
+
if (fs.existsSync(candidate))
|
|
253
|
+
return candidate;
|
|
254
|
+
const parent = path.dirname(current);
|
|
255
|
+
if (parent === current)
|
|
256
|
+
return undefined;
|
|
257
|
+
current = parent;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* The `info/exclude` git reads for the work tree whose `.git` is `dotGit`.
|
|
262
|
+
* A linked worktree or submodule has a `.git` file pointing at its git
|
|
263
|
+
* directory; a worktree shares `info/exclude` with the main repository
|
|
264
|
+
* through `commondir`, as `git rev-parse --git-path info/exclude` reports.
|
|
265
|
+
*/
|
|
266
|
+
function gitExcludePath(dotGit) {
|
|
267
|
+
let gitDir = dotGit;
|
|
268
|
+
// Check and read through one descriptor, so the answer cannot change
|
|
269
|
+
// between them. Some platforms refuse to open a directory (EISDIR); others
|
|
270
|
+
// open it, and FreeBSD would even "read" it, hence fstat.
|
|
271
|
+
let pointerFile;
|
|
272
|
+
let fd;
|
|
273
|
+
try {
|
|
274
|
+
fd = fs.openSync(dotGit, 'r');
|
|
275
|
+
if (!fs.fstatSync(fd).isDirectory())
|
|
276
|
+
pointerFile = fs.readFileSync(fd, 'utf-8');
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
if (error.code !== 'EISDIR')
|
|
280
|
+
return undefined;
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
if (fd !== undefined)
|
|
284
|
+
fs.closeSync(fd);
|
|
285
|
+
}
|
|
286
|
+
if (pointerFile !== undefined) {
|
|
287
|
+
const match = /^gitdir:\s*(.+?)\s*$/m.exec(pointerFile);
|
|
288
|
+
if (!match)
|
|
289
|
+
return undefined;
|
|
290
|
+
gitDir = path.resolve(path.dirname(dotGit), match[1]);
|
|
291
|
+
// A stale pointer (moved or pruned worktree) is not a repository to write into.
|
|
292
|
+
try {
|
|
293
|
+
if (!fs.statSync(gitDir).isDirectory())
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return undefined;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
let commonDir = gitDir;
|
|
301
|
+
try {
|
|
302
|
+
const pointer = fs.readFileSync(path.join(gitDir, 'commondir'), 'utf-8').trim();
|
|
303
|
+
if (pointer)
|
|
304
|
+
commonDir = path.resolve(gitDir, pointer);
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
// Not a linked worktree.
|
|
308
|
+
}
|
|
309
|
+
return path.join(commonDir, 'info', 'exclude');
|
|
310
|
+
}
|
|
311
|
+
/** Escape a work-tree-relative path into an anchored gitignore pattern. */
|
|
312
|
+
function anchoredPattern(relative) {
|
|
313
|
+
return `/${relative
|
|
314
|
+
.split(path.sep)
|
|
315
|
+
.join('/')
|
|
316
|
+
.replace(/[\\*?[\]!#]/g, '\\$&')}/`;
|
|
317
|
+
}
|
|
95
318
|
/**
|
|
96
|
-
*
|
|
319
|
+
* Keep the project's `.agentworkforce/relay/` directory (workspace key,
|
|
320
|
+
* sockets, local state) out of `git status` by adding it to the repository's
|
|
321
|
+
* `info/exclude`, the per-clone ignore file that is never committed. The
|
|
322
|
+
* project's own `.gitignore` is never modified.
|
|
97
323
|
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* - Standard git feature with no permission issues
|
|
102
|
-
* - No branch/merge complications
|
|
324
|
+
* Linked worktrees and submodules are handled (the exclude file lives in the
|
|
325
|
+
* repository's common git directory). Outside a git work tree, or on any
|
|
326
|
+
* error, nothing is changed.
|
|
103
327
|
*
|
|
104
|
-
*
|
|
328
|
+
* @param dataDir - The project data directory, `<project>/.agentworkforce/relay`.
|
|
329
|
+
* @returns Whether the exclude file was changed.
|
|
105
330
|
*/
|
|
106
|
-
function ensureGitExclude(
|
|
107
|
-
// Find the .git directory (could be in projectRoot or a parent for worktrees)
|
|
108
|
-
const gitDir = path.join(projectRoot, '.git');
|
|
109
|
-
const excludePath = path.join(gitDir, 'info', 'exclude');
|
|
331
|
+
export function ensureGitExclude(dataDir) {
|
|
110
332
|
try {
|
|
111
|
-
|
|
112
|
-
|
|
333
|
+
const resolved = path.resolve(dataDir);
|
|
334
|
+
const dotGit = findDotGit(resolved);
|
|
335
|
+
if (!dotGit)
|
|
113
336
|
return { modified: false };
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
337
|
+
const relative = path.relative(path.dirname(dotGit), resolved);
|
|
338
|
+
if (!relative || relative.startsWith('..') || path.isAbsolute(relative))
|
|
339
|
+
return { modified: false };
|
|
340
|
+
const excludePath = gitExcludePath(dotGit);
|
|
341
|
+
if (!excludePath)
|
|
342
|
+
return { modified: false };
|
|
343
|
+
const pattern = anchoredPattern(relative);
|
|
344
|
+
const bare = pattern.slice(1, -1);
|
|
120
345
|
let content = '';
|
|
121
|
-
|
|
346
|
+
try {
|
|
122
347
|
content = fs.readFileSync(excludePath, 'utf-8');
|
|
123
|
-
// Check if .agentworkforce/relay is already in exclude
|
|
124
|
-
const lines = content.split('\n');
|
|
125
|
-
const hasEntry = lines.some((line) => {
|
|
126
|
-
const trimmed = line.trim();
|
|
127
|
-
return (trimmed === '.agentworkforce/relay' ||
|
|
128
|
-
trimmed === '.agentworkforce/relay/' ||
|
|
129
|
-
trimmed === '/.agentworkforce/relay' ||
|
|
130
|
-
trimmed === '/.agentworkforce/relay/');
|
|
131
|
-
});
|
|
132
|
-
if (hasEntry) {
|
|
133
|
-
return { modified: false }; // Already present
|
|
134
|
-
}
|
|
135
348
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
349
|
+
catch {
|
|
350
|
+
// No exclude file yet.
|
|
351
|
+
}
|
|
352
|
+
const present = content
|
|
353
|
+
.split('\n')
|
|
354
|
+
.map((line) => line.trim())
|
|
355
|
+
.some((line) => [bare, `${bare}/`, `/${bare}`, pattern].includes(line));
|
|
356
|
+
if (present)
|
|
357
|
+
return { modified: false };
|
|
358
|
+
fs.mkdirSync(path.dirname(excludePath), { recursive: true });
|
|
359
|
+
const separator = content === '' || content.endsWith('\n') ? '' : '\n';
|
|
360
|
+
fs.appendFileSync(excludePath, `${separator}${pattern}\n`, 'utf-8');
|
|
140
361
|
return { modified: true };
|
|
141
362
|
}
|
|
142
363
|
catch {
|
|
143
|
-
//
|
|
364
|
+
// Not a git repository we can write to; never block the caller.
|
|
144
365
|
return { modified: false };
|
|
145
366
|
}
|
|
146
367
|
}
|
|
@@ -154,7 +375,7 @@ export function ensureProjectDir(projectRoot) {
|
|
|
154
375
|
if (isFirstCreation) {
|
|
155
376
|
fs.mkdirSync(paths.dataDir, { recursive: true });
|
|
156
377
|
// Add to .git/info/exclude (local per-repo gitignore, not committed)
|
|
157
|
-
const excludeResult = ensureGitExclude(paths.
|
|
378
|
+
const excludeResult = ensureGitExclude(paths.dataDir);
|
|
158
379
|
if (excludeResult.modified) {
|
|
159
380
|
console.log('[agent-relay] Added .agentworkforce/relay/ to .git/info/exclude');
|
|
160
381
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-namespace.js","sourceRoot":"","sources":["../src/project-namespace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-namespace.js","sourceRoot":"","sources":["../src/project-namespace.ts"],"names":[],"mappings":"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"}
|