agent-relay 12.1.0 → 12.2.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/README.md +137 -8
- package/dist/cli/commands/fleet.d.ts +10 -1
- package/dist/cli/commands/fleet.d.ts.map +1 -1
- package/dist/cli/commands/fleet.js +258 -38
- package/dist/cli/commands/fleet.js.map +1 -1
- package/dist/cli/commands/local-agent.d.ts +3 -1
- package/dist/cli/commands/local-agent.d.ts.map +1 -1
- package/dist/cli/commands/local-agent.js +63 -5
- package/dist/cli/commands/local-agent.js.map +1 -1
- package/dist/cli/lib/fleet-attach-target.d.ts +18 -0
- package/dist/cli/lib/fleet-attach-target.d.ts.map +1 -0
- package/dist/cli/lib/fleet-attach-target.js +57 -0
- package/dist/cli/lib/fleet-attach-target.js.map +1 -0
- package/dist/cli/lib/sandbox-repo.d.ts +23 -0
- package/dist/cli/lib/sandbox-repo.d.ts.map +1 -0
- package/dist/cli/lib/sandbox-repo.js +234 -0
- package/dist/cli/lib/sandbox-repo.js.map +1 -0
- package/dist/cli/lib/sdk-client.d.ts +2 -0
- package/dist/cli/lib/sdk-client.d.ts.map +1 -1
- package/dist/cli/lib/sdk-client.js +13 -2
- package/dist/cli/lib/sdk-client.js.map +1 -1
- package/dist/cli/lib/workspace-session.d.ts.map +1 -1
- package/dist/cli/lib/workspace-session.js +4 -2
- package/dist/cli/lib/workspace-session.js.map +1 -1
- package/dist/index.cjs +174 -181
- package/package.json +9 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-repo.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/sandbox-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvC,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,GAAE,6BAAkC,GACvC,0BAA0B,GAAG,SAAS,CAmLxC"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { realpathSync } from 'node:fs';
|
|
4
|
+
const REVISION_PATTERN = /^[0-9a-f]{40}$/;
|
|
5
|
+
const REPOSITORY_PART_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_.-]*$/;
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the public repository identity and exact HEAD for a sandbox launch.
|
|
8
|
+
* Only a GitHub-style owner/name and a 40-character commit are returned; local
|
|
9
|
+
* paths never cross the Cloud request boundary.
|
|
10
|
+
*/
|
|
11
|
+
export function resolveSandboxRepository(projectRoot, requestedCwd, deps = {}) {
|
|
12
|
+
const run = deps.execFileSync ?? execFileSync;
|
|
13
|
+
const resolveRealpath = deps.realpathSync ?? realpathSync;
|
|
14
|
+
const callerCwd = deps.cwd?.() ?? process.cwd();
|
|
15
|
+
const remoteCwd = requestedCwd && /^\/(?:srv\/agent-workforce|workspace)(?:\/|$)/.test(requestedCwd)
|
|
16
|
+
? path.posix.normalize(requestedCwd)
|
|
17
|
+
: undefined;
|
|
18
|
+
if (remoteCwd && !/^\/(?:srv\/agent-workforce|workspace)(?:\/|$)/.test(remoteCwd)) {
|
|
19
|
+
throw new Error('--cwd escapes the remote sandbox checkout roots.');
|
|
20
|
+
}
|
|
21
|
+
const invocationCwd = path.resolve(callerCwd, remoteCwd ? '.' : (requestedCwd ?? '.'));
|
|
22
|
+
let gitRoot;
|
|
23
|
+
try {
|
|
24
|
+
gitRoot = run('git', ['-C', invocationCwd, 'rev-parse', '--show-toplevel'], {
|
|
25
|
+
encoding: 'utf8',
|
|
26
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
27
|
+
env: { ...process.env, LC_ALL: 'C' },
|
|
28
|
+
timeout: 10_000,
|
|
29
|
+
})
|
|
30
|
+
.trim()
|
|
31
|
+
.replace(/[\\/]$/, '');
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const failure = error;
|
|
35
|
+
if (failure.status === 128 && failure.stderr?.toString().includes('not a git repository')) {
|
|
36
|
+
// An explicitly selected Relay project can be outside the shell cwd.
|
|
37
|
+
// Prefer the actual invocation repository, then honor that project root
|
|
38
|
+
// only when Git confirms that the invocation itself is outside a repo.
|
|
39
|
+
if (!requestedCwd && path.resolve(projectRoot) !== invocationCwd) {
|
|
40
|
+
return resolveSandboxRepository(projectRoot, undefined, { ...deps, cwd: () => projectRoot });
|
|
41
|
+
}
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
throw new Error('Cannot inspect the local Git checkout. Verify Git is installed and this repository is accessible, then retry.');
|
|
45
|
+
}
|
|
46
|
+
if (!gitRoot)
|
|
47
|
+
throw new Error('Git did not report a repository root; repair the checkout before retrying.');
|
|
48
|
+
const root = path.resolve(gitRoot);
|
|
49
|
+
// `git -C` follows symlinks while path.relative does not. Canonicalizing
|
|
50
|
+
// both ends prevents a symlinked package invocation from becoming an
|
|
51
|
+
// apparently outside checkout path (or from producing the wrong worker
|
|
52
|
+
// subdirectory). Tests with synthetic paths retain the lexical fallback.
|
|
53
|
+
const canonicalRoot = (() => {
|
|
54
|
+
try {
|
|
55
|
+
return resolveRealpath(root);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return root;
|
|
59
|
+
}
|
|
60
|
+
})();
|
|
61
|
+
const localCwd = (() => {
|
|
62
|
+
const lexical = invocationCwd;
|
|
63
|
+
try {
|
|
64
|
+
return resolveRealpath(lexical);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return lexical;
|
|
68
|
+
}
|
|
69
|
+
})();
|
|
70
|
+
let remote;
|
|
71
|
+
let revision;
|
|
72
|
+
try {
|
|
73
|
+
remote = run('git', ['-C', root, 'remote', 'get-url', 'origin'], {
|
|
74
|
+
encoding: 'utf8',
|
|
75
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
76
|
+
timeout: 10_000,
|
|
77
|
+
}).trim();
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
throw new Error('Sandbox checkout has no usable origin remote; configure origin before retrying.');
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
revision = run('git', ['-C', root, 'rev-parse', 'HEAD'], {
|
|
84
|
+
encoding: 'utf8',
|
|
85
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
86
|
+
timeout: 10_000,
|
|
87
|
+
})
|
|
88
|
+
.trim()
|
|
89
|
+
.toLowerCase();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
throw new Error('Sandbox checkout has no committed HEAD; create or check out a commit before retrying.');
|
|
93
|
+
}
|
|
94
|
+
const repository = parseRepository(remote);
|
|
95
|
+
if (!repository) {
|
|
96
|
+
throw new Error('Sandbox checkout origin must be a GitHub owner/name repository.');
|
|
97
|
+
}
|
|
98
|
+
if (!REVISION_PATTERN.test(revision)) {
|
|
99
|
+
throw new Error('Sandbox checkout HEAD is not a complete commit SHA; check out a committed revision first.');
|
|
100
|
+
}
|
|
101
|
+
let status;
|
|
102
|
+
try {
|
|
103
|
+
status = run('git', ['-C', root, 'status', '--porcelain=v1', '-z', '--untracked-files=all'], {
|
|
104
|
+
encoding: 'utf8',
|
|
105
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
106
|
+
timeout: 10_000,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
throw new Error('Cannot verify that the Git checkout is clean. Repair the checkout and retry.');
|
|
111
|
+
}
|
|
112
|
+
const disallowed = status
|
|
113
|
+
.split('\0')
|
|
114
|
+
.filter(Boolean)
|
|
115
|
+
.filter((entry) => {
|
|
116
|
+
const code = entry.slice(0, 2);
|
|
117
|
+
const file = entry.slice(3);
|
|
118
|
+
return code !== '??' || !isGeneratedRelayMetadata(file);
|
|
119
|
+
});
|
|
120
|
+
if (disallowed.length > 0) {
|
|
121
|
+
throw new Error(`Sandbox requires a clean checkout. Commit or stash local changes before retrying; changed path: ${JSON.stringify(disallowed[0].slice(3))}`);
|
|
122
|
+
}
|
|
123
|
+
let upstream;
|
|
124
|
+
try {
|
|
125
|
+
upstream = run('git', ['-C', root, 'rev-parse', '--abbrev-ref', '--symbolic-full-name', '@{u}'], {
|
|
126
|
+
encoding: 'utf8',
|
|
127
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
128
|
+
timeout: 10_000,
|
|
129
|
+
}).trim();
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
upstream = undefined;
|
|
133
|
+
}
|
|
134
|
+
if (upstream?.startsWith('origin/')) {
|
|
135
|
+
try {
|
|
136
|
+
run('git', ['-C', root, 'merge-base', '--is-ancestor', 'HEAD', upstream], {
|
|
137
|
+
encoding: 'utf8',
|
|
138
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
139
|
+
timeout: 10_000,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
throw new Error(`Sandbox commit ${revision} is not pushed to ${upstream}. Push the exact commit before retrying.`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
let containingRemoteBranches;
|
|
148
|
+
try {
|
|
149
|
+
containingRemoteBranches = run('git', ['-C', root, 'branch', '--remotes', '--contains', 'HEAD', '--format=%(refname:short)'], {
|
|
150
|
+
encoding: 'utf8',
|
|
151
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
152
|
+
timeout: 10_000,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
throw new Error(`Cannot verify that sandbox commit ${revision} is pushed to origin. Fetch or push the exact commit before retrying.`);
|
|
157
|
+
}
|
|
158
|
+
if (!containingRemoteBranches.split(/\r?\n/).some((branch) => branch.trim().startsWith('origin/'))) {
|
|
159
|
+
throw new Error(`Sandbox commit ${revision} is not present in an origin remote-tracking branch. Push the exact commit before retrying.`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const relative = path.relative(canonicalRoot, localCwd);
|
|
163
|
+
if (relative === '..' || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
|
|
164
|
+
throw new Error('--cwd is outside the checked-out repository; use a repository-relative cwd or an explicit remote sandbox path.');
|
|
165
|
+
}
|
|
166
|
+
const repositoryName = repository.slice(repository.indexOf('/') + 1);
|
|
167
|
+
const remoteRoot = `/srv/agent-workforce/${repositoryName}`;
|
|
168
|
+
const relativePosix = relative.split(path.sep).filter(Boolean).join('/');
|
|
169
|
+
return {
|
|
170
|
+
repository,
|
|
171
|
+
repositoryName,
|
|
172
|
+
revision,
|
|
173
|
+
projectRoot: canonicalRoot,
|
|
174
|
+
repositoryRelativeCwd: relativePosix,
|
|
175
|
+
workerCwd: remoteCwd ?? (relativePosix ? `${remoteRoot}/${relativePosix}` : remoteRoot),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function isGeneratedRelayMetadata(entry) {
|
|
179
|
+
const normalized = entry.replaceAll('\\', '/');
|
|
180
|
+
const marker = '.agentworkforce/relay/';
|
|
181
|
+
const markerIndex = normalized.lastIndexOf(marker);
|
|
182
|
+
if (markerIndex !== 0 && (markerIndex < 1 || normalized[markerIndex - 1] !== '/'))
|
|
183
|
+
return false;
|
|
184
|
+
const relative = normalized.slice(markerIndex + marker.length);
|
|
185
|
+
return (relative === 'workspace-key.json' ||
|
|
186
|
+
relative === 'connection.json' ||
|
|
187
|
+
relative === 'runtime.json' ||
|
|
188
|
+
/^broker-[^/]+\.lock$/.test(relative));
|
|
189
|
+
}
|
|
190
|
+
function parseRepository(remote) {
|
|
191
|
+
const value = remote.trim();
|
|
192
|
+
let owner;
|
|
193
|
+
let name;
|
|
194
|
+
const scp = value.match(/^([^@/]+)@([^:]+):([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
195
|
+
if (scp) {
|
|
196
|
+
// SCP-style GitHub remotes have no URL parser boundary, so reject any
|
|
197
|
+
// username other than GitHub's literal SSH user. A token or other secret
|
|
198
|
+
// must never be accepted as part of the local remote identity.
|
|
199
|
+
if (scp[1] !== 'git' || scp[2].toLowerCase() !== 'github.com')
|
|
200
|
+
return undefined;
|
|
201
|
+
owner = scp[3];
|
|
202
|
+
name = scp[4];
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
try {
|
|
206
|
+
const parsed = new URL(value);
|
|
207
|
+
if (!['https:', 'ssh:'].includes(parsed.protocol))
|
|
208
|
+
return undefined;
|
|
209
|
+
if (parsed.hostname.toLowerCase() !== 'github.com')
|
|
210
|
+
return undefined;
|
|
211
|
+
if (parsed.password || (parsed.username && !(parsed.protocol === 'ssh:' && parsed.username === 'git')))
|
|
212
|
+
return undefined;
|
|
213
|
+
if (parsed.search || parsed.hash || parsed.port)
|
|
214
|
+
return undefined;
|
|
215
|
+
const parts = parsed.pathname.replace(/^\/+|\/+$/g, '').split('/');
|
|
216
|
+
if (parts.length !== 2)
|
|
217
|
+
return undefined;
|
|
218
|
+
owner = parts[0];
|
|
219
|
+
name = parts[1].replace(/\.git$/, '');
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return undefined;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (!owner ||
|
|
226
|
+
!name ||
|
|
227
|
+
!REPOSITORY_PART_PATTERN.test(owner) ||
|
|
228
|
+
!REPOSITORY_PART_PATTERN.test(name) ||
|
|
229
|
+
owner.includes('..') ||
|
|
230
|
+
name.includes('..'))
|
|
231
|
+
return undefined;
|
|
232
|
+
return `${owner}/${name}`;
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=sandbox-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-repo.js","sourceRoot":"","sources":["../../../src/cli/lib/sandbox-repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ export interface SdkClientOptions {
|
|
|
6
6
|
token?: string;
|
|
7
7
|
baseUrl?: string;
|
|
8
8
|
env?: NodeJS.ProcessEnv;
|
|
9
|
+
/** Explicit project root for nested invocations such as packages/web. */
|
|
10
|
+
projectRoot?: string;
|
|
9
11
|
/** Use the canonical gateway instead of a persisted server-selected route. */
|
|
10
12
|
ignorePersistedRelaycastTarget?: boolean;
|
|
11
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/sdk-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,kCAAkC,CAAC;AAE1C,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8EAA8E;IAC9E,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAWD,qEAAqE;AACrE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,gBAAqB,GAAG,kBAAkB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/sdk-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,kCAAkC,CAAC;AAE1C,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAWD,qEAAqE;AACrE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,gBAAqB,GAAG,kBAAkB,GAAG,SAAS,CAQxG;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,gBAAqB,GAAG;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAGA;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAE1E;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,GAAG,SAAS,CAGjF;AAiDD,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,gBAAqB,GAAG,kBAAkB,CAuB5F;AAsCD,mGAAmG;AACnG,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,kBAAkB,GAAG,SAAS,EACzC,MAAM,EAAE;IACN,KAAK,EAAE,WAAW,GAAG,kBAAkB,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB,GACA,OAAO,CAaT;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,GAAG,SAAS,CAEpF;AAED,gDAAgD;AAChD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAG/E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CA6BhF"}
|
|
@@ -11,9 +11,12 @@ function trimOrUndefined(value) {
|
|
|
11
11
|
}
|
|
12
12
|
/** Resolve the selected key and any previously persisted Relay workspace identity. */
|
|
13
13
|
export function resolveWorkspaceSelection(options = {}) {
|
|
14
|
+
const explicitProject = trimOrUndefined(env(options).AGENT_RELAY_PROJECT);
|
|
15
|
+
const projectRoot = explicitProject ? path.resolve(explicitProject) : options.projectRoot;
|
|
14
16
|
return resolveCloudWorkspaceSelection({
|
|
15
17
|
workspaceKey: options.workspaceKey,
|
|
16
18
|
env: env(options),
|
|
19
|
+
...(projectRoot ? { projectRoot } : {}),
|
|
17
20
|
});
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
@@ -38,7 +41,7 @@ function selectionForTransport(options) {
|
|
|
38
41
|
const selection = resolveWorkspaceSelection(options);
|
|
39
42
|
if (!selection || !options.ignorePersistedRelaycastTarget)
|
|
40
43
|
return selection;
|
|
41
|
-
const { relaycastRoute: _relaycastRoute, relaycastBaseUrl: _relaycastBaseUrl, relaycastApiKey: _relaycastApiKey, ...canonicalSelection } = selection;
|
|
44
|
+
const { relaycastRoute: _relaycastRoute, relaycastBaseUrl: _relaycastBaseUrl, relaycastApiKey: _relaycastApiKey, relaycastApiKeyRef: _relaycastApiKeyRef, ...canonicalSelection } = selection;
|
|
42
45
|
return canonicalSelection;
|
|
43
46
|
}
|
|
44
47
|
function resolveBaseUrlForSelection(selection, options) {
|
|
@@ -77,8 +80,16 @@ export function resolveWorkspaceTransport(options = {}) {
|
|
|
77
80
|
throw new Error('No workspace key found. Pass --workspace-key, set RELAY_WORKSPACE_KEY, or run `relay workspace set_key <name> <key>`.');
|
|
78
81
|
}
|
|
79
82
|
const baseUrl = resolveBaseUrlForSelection(selection, options);
|
|
83
|
+
// Project-session loading already validates the reference against the
|
|
84
|
+
// project/workspace/route/base tuple. Never re-read a ref here: doing so
|
|
85
|
+
// would let a tampered ref bypass that binding and pair an unrelated key
|
|
86
|
+
// with this route.
|
|
87
|
+
const routeCredential = trimOrUndefined(selection.relaycastApiKey);
|
|
88
|
+
if (selection.relaycastRoute === 'agent37-isolated' && !routeCredential) {
|
|
89
|
+
throw new Error('The persisted isolated Relaycast credential is unavailable or mismatched; rerun the sandbox command to mint a fresh route.');
|
|
90
|
+
}
|
|
80
91
|
return {
|
|
81
|
-
workspaceKey:
|
|
92
|
+
workspaceKey: routeCredential ?? selection.key,
|
|
82
93
|
...(baseUrl ? { baseUrl } : {}),
|
|
83
94
|
source: selection.source,
|
|
84
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../../../src/cli/lib/sdk-client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EACL,yBAAyB,IAAI,8BAA8B,EAC3D,6CAA6C,GAG9C,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../../../src/cli/lib/sdk-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-session.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/workspace-session.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,WAAW,GAAG,kBAAkB,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iCAAkC,SAAQ,uBAAuB;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qFAAqF;AACrF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,uBAA4B,GAAG,MAAM,GAAG,SAAS,CAEpG;AAED,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,6BAA6B,GAAG,MAAM,GAAG,SAAS,CASnG;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,6BAA6B,
|
|
1
|
+
{"version":3,"file":"workspace-session.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/workspace-session.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,WAAW,GAAG,kBAAkB,CAAC;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iCAAkC,SAAQ,uBAAuB;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qFAAqF;AACrF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,uBAA4B,GAAG,MAAM,GAAG,SAAS,CAEpG;AAED,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,6BAA6B,GAAG,MAAM,GAAG,SAAS,CASnG;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,6BAA6B,CAsD/B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iCAAiC,GAAG,IAAI,CAO3F"}
|
|
@@ -44,7 +44,7 @@ export function persistWorkspaceSession(options) {
|
|
|
44
44
|
}
|
|
45
45
|
const name = options.name === undefined ? undefined : validateWorkspaceSessionName(options.name);
|
|
46
46
|
const projectDataDir = options.projectDataDir ?? getProjectPaths(options.projectRoot).dataDir;
|
|
47
|
-
const existing = readProjectWorkspaceSession(projectDataDir);
|
|
47
|
+
const existing = readProjectWorkspaceSession(projectDataDir, undefined, options.env);
|
|
48
48
|
// Re-selecting the same workspace must keep the enrolled node: dropping it
|
|
49
49
|
// there manufactured the pin `node up` now warns about, where the next start
|
|
50
50
|
// ignores the enrollment store entirely.
|
|
@@ -69,6 +69,7 @@ export function persistWorkspaceSession(options) {
|
|
|
69
69
|
...(options.relaycastRoute ? { relaycastRoute: options.relaycastRoute } : {}),
|
|
70
70
|
...(options.relaycastBaseUrl ? { relaycastBaseUrl: options.relaycastBaseUrl } : {}),
|
|
71
71
|
...(options.relaycastApiKey ? { relaycastApiKey: options.relaycastApiKey } : {}),
|
|
72
|
+
env: options.env,
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
75
|
else {
|
|
@@ -77,6 +78,7 @@ export function persistWorkspaceSession(options) {
|
|
|
77
78
|
...(options.relaycastRoute ? { relaycastRoute: options.relaycastRoute } : {}),
|
|
78
79
|
...(options.relaycastBaseUrl ? { relaycastBaseUrl: options.relaycastBaseUrl } : {}),
|
|
79
80
|
...(options.relaycastApiKey ? { relaycastApiKey: options.relaycastApiKey } : {}),
|
|
81
|
+
env: options.env,
|
|
80
82
|
});
|
|
81
83
|
}
|
|
82
84
|
if (name) {
|
|
@@ -98,6 +100,6 @@ export function pinProjectWorkspaceSession(options) {
|
|
|
98
100
|
throw new Error('Workspace key is required.');
|
|
99
101
|
}
|
|
100
102
|
const projectDataDir = options.projectDataDir ?? getProjectPaths(options.projectRoot).dataDir;
|
|
101
|
-
writeProjectWorkspaceKey(projectDataDir, workspaceKey);
|
|
103
|
+
writeProjectWorkspaceKey(projectDataDir, workspaceKey, { env: options.env });
|
|
102
104
|
}
|
|
103
105
|
//# sourceMappingURL=workspace-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-session.js","sourceRoot":"","sources":["../../../src/cli/lib/workspace-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEjF,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,yCAAyC,GAC1C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAwB/F,qFAAqF;AACrF,MAAM,UAAU,4BAA4B,CAAC,IAAY;IACvD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAmC,EAAE;IAC9E,OAAO,6BAA6B,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;AACrD,CAAC;AAUD;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAqC;IAC7E,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CACL,+CAA+C,MAAM,CAAC,qBAAqB,uBAAuB;QAClG,mGAAmG;QACnG,gBAAgB,CACjB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAuC;IAEvC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjG,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;IAC9F,MAAM,QAAQ,GAAG,2BAA2B,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-session.js","sourceRoot":"","sources":["../../../src/cli/lib/workspace-session.ts"],"names":[],"mappings":"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"}
|