@multiplayer-app/agent 0.1.11 → 0.1.13
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/runtime/config.d.ts +1 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +7 -6
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/lambda-microvm.js +73 -25
- package/dist/runtime/lambda-microvm.js.map +1 -1
- package/dist/runtime/microvm-bootstrap.d.ts +18 -0
- package/dist/runtime/microvm-bootstrap.d.ts.map +1 -0
- package/dist/runtime/microvm-bootstrap.js +77 -0
- package/dist/runtime/microvm-bootstrap.js.map +1 -0
- package/dist/runtime/microvm-bootstrap.test.d.ts +2 -0
- package/dist/runtime/microvm-bootstrap.test.d.ts.map +1 -0
- package/dist/runtime/microvm-bootstrap.test.js +50 -0
- package/dist/runtime/microvm-bootstrap.test.js.map +1 -0
- package/dist/transport/protocol.d.ts +6 -6
- package/dist/transport/protocol.d.ts.map +1 -1
- package/dist/transport/protocol.js +7 -9
- package/dist/transport/protocol.js.map +1 -1
- package/dist/transport/protocol.test.js +1 -1
- package/dist/transport/protocol.test.js.map +1 -1
- package/package.json +1 -1
package/dist/runtime/config.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export interface AgentRuntimeConfig {
|
|
|
52
52
|
mcpConnections: McpConnectionRecord[];
|
|
53
53
|
/** Gateway's agent-socket-server endpoint (ws(s)://.../agent-sessions/ws), not the api directly. */
|
|
54
54
|
socketUrl?: string;
|
|
55
|
+
/** The VM's API-issued ACCESS_TOKEN: the gateway accepts it for this session only. */
|
|
55
56
|
socketToken?: string;
|
|
56
57
|
provider: ModelProviderConfig;
|
|
57
58
|
filingRamp?: FilingRampConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAGhE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAC1C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;IACrB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAA;IACvB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,cAAc,CAAC,EAAE,oBAAoB,CAAA;CACtC;AA+DD,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAGhE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAC1C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;IACrB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAA;IACvB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,cAAc,CAAC,EAAE,oBAAoB,CAAA;CACtC;AA+DD,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,kBAAkB,CAqC1F"}
|
package/dist/runtime/config.js
CHANGED
|
@@ -52,11 +52,11 @@ function filingRampFromEnv(env) {
|
|
|
52
52
|
function gitFromEnv(env, sessionId, workspaceDir) {
|
|
53
53
|
const serverUrl = env[protocol_1.AGENT_ENV.GIT_SERVER_URL];
|
|
54
54
|
const repository = env[protocol_1.AGENT_ENV.GIT_REPOSITORY];
|
|
55
|
-
const token = env[protocol_1.AGENT_ENV.
|
|
55
|
+
const token = env[protocol_1.AGENT_ENV.ACCESS_TOKEN];
|
|
56
56
|
if (!repository)
|
|
57
57
|
return undefined;
|
|
58
58
|
if (!serverUrl || !token)
|
|
59
|
-
throw new Error('Git settings are incomplete (GIT_SERVER_URL /
|
|
59
|
+
throw new Error('Git settings are incomplete (GIT_SERVER_URL / ACCESS_TOKEN)');
|
|
60
60
|
return {
|
|
61
61
|
serverUrl: serverUrl.replace(/\/+$/, ''),
|
|
62
62
|
repository,
|
|
@@ -78,9 +78,10 @@ function loadConfigFromEnv(env = process.env) {
|
|
|
78
78
|
const workspaceDir = env[protocol_1.AGENT_ENV.AGENT_WORKSPACE_DIR] || DEFAULT_WORKSPACE_DIR;
|
|
79
79
|
const model = env[protocol_1.AGENT_ENV.AGENT_MODEL] || DEFAULT_MODEL;
|
|
80
80
|
const storageUrl = env[protocol_1.AGENT_ENV.SESSION_STORAGE_URL];
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
// The same ACCESS_TOKEN serves Git or storage, so only a storage URL without it is incomplete.
|
|
82
|
+
const storageToken = env[protocol_1.AGENT_ENV.ACCESS_TOKEN];
|
|
83
|
+
if (storageUrl && !storageToken)
|
|
84
|
+
throw new Error('Session storage settings are incomplete (ACCESS_TOKEN)');
|
|
84
85
|
return {
|
|
85
86
|
sessionId,
|
|
86
87
|
mode,
|
|
@@ -92,7 +93,7 @@ function loadConfigFromEnv(env = process.env) {
|
|
|
92
93
|
workspaceDir,
|
|
93
94
|
mcpConnections: decodeMcpConnections(env[protocol_1.AGENT_ENV.MCP_SERVERS_JSON]),
|
|
94
95
|
socketUrl: env[protocol_1.AGENT_ENV.AGENT_SOCKET_URL],
|
|
95
|
-
socketToken: env[protocol_1.AGENT_ENV.
|
|
96
|
+
socketToken: env[protocol_1.AGENT_ENV.ACCESS_TOKEN],
|
|
96
97
|
provider: {
|
|
97
98
|
openrouterApiKey: env[protocol_1.AGENT_ENV.OPENROUTER_API_KEY],
|
|
98
99
|
anthropicApiKey: env[protocol_1.AGENT_ENV.ANTHROPIC_API_KEY],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,28 +16,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
16
16
|
// Research VMs never need port 8080 for an app, so nothing competes for it. Engines without a
|
|
17
17
|
// hook caller (Docker, Fargate) set SESSION_ID in the real env at boot, which starts the agent
|
|
18
18
|
// directly.
|
|
19
|
+
const child_process_1 = require("child_process");
|
|
20
|
+
const fs_1 = __importDefault(require("fs"));
|
|
19
21
|
const http_1 = __importDefault(require("http"));
|
|
20
22
|
const index_1 = require("./index");
|
|
23
|
+
const microvm_bootstrap_1 = require("./microvm-bootstrap");
|
|
21
24
|
const HOOK_PREFIX = '/aws/lambda-microvms/runtime/v1/';
|
|
22
25
|
const PORT = 8080;
|
|
23
26
|
let running;
|
|
24
27
|
let starting;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
const bootstrap = new microvm_bootstrap_1.MicrovmBootstrap();
|
|
29
|
+
const DROPBEAR_HOST_KEY = '/etc/dropbear/dropbear_rsa_host_key';
|
|
30
|
+
/**
|
|
31
|
+
* entrypoint.sh starts dropbear only when the keys are in the boot env (Docker, Fargate). A
|
|
32
|
+
* Lambda MicroVM boots while its image is built, before any session exists, so its keys arrive
|
|
33
|
+
* with the run configuration: authorize them and start dropbear here, once.
|
|
34
|
+
*/
|
|
35
|
+
function startSsh() {
|
|
36
|
+
const keys = process.env.AGENT_SSH_PUBLIC_KEYS_B64;
|
|
37
|
+
if (!keys || !fs_1.default.existsSync(DROPBEAR_HOST_KEY))
|
|
28
38
|
return;
|
|
39
|
+
fs_1.default.mkdirSync('/root/.ssh', { recursive: true, mode: 0o700 });
|
|
40
|
+
fs_1.default.writeFileSync('/root/.ssh/authorized_keys', Buffer.from(keys, 'base64'), { mode: 0o600 });
|
|
41
|
+
const dropbear = (0, child_process_1.spawn)('dropbear', ['-p', '2222', '-r', DROPBEAR_HOST_KEY, '-F'], { stdio: 'inherit' });
|
|
42
|
+
dropbear.on('error', (error) => console.error('dropbear failed to start:', error.message));
|
|
43
|
+
console.log('==> starting dropbear (ssh) on 2222');
|
|
44
|
+
}
|
|
45
|
+
/** Runs once the whole run configuration is applied, inline or bootstrapped. */
|
|
46
|
+
function configured() {
|
|
29
47
|
try {
|
|
30
|
-
|
|
31
|
-
for (const [key, value] of Object.entries((_a = session.env) !== null && _a !== void 0 ? _a : {})) {
|
|
32
|
-
if (typeof value === 'string')
|
|
33
|
-
process.env[key] = value;
|
|
34
|
-
}
|
|
35
|
-
if (!process.env.SESSION_ID && typeof session.sessionId === 'string')
|
|
36
|
-
process.env.SESSION_ID = session.sessionId;
|
|
48
|
+
startSsh();
|
|
37
49
|
}
|
|
38
|
-
catch (
|
|
39
|
-
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error('ssh setup failed:', error instanceof Error ? error.message : error);
|
|
40
52
|
}
|
|
53
|
+
void start().catch(() => undefined);
|
|
41
54
|
}
|
|
42
55
|
function start() {
|
|
43
56
|
if (!starting) {
|
|
@@ -57,14 +70,17 @@ function start() {
|
|
|
57
70
|
async function onHook(hook, body) {
|
|
58
71
|
switch (hook) {
|
|
59
72
|
case 'run': {
|
|
73
|
+
let payload;
|
|
60
74
|
try {
|
|
61
75
|
const parsed = JSON.parse(body);
|
|
62
|
-
|
|
76
|
+
payload = parsed.runHookPayload;
|
|
63
77
|
}
|
|
64
78
|
catch (_a) {
|
|
65
|
-
|
|
79
|
+
throw new Error('Invalid MicroVM run hook');
|
|
66
80
|
}
|
|
67
|
-
|
|
81
|
+
// No payload: nothing to wait for (the env, if any, was already there), so start as before.
|
|
82
|
+
if (!payload || bootstrap.run(payload))
|
|
83
|
+
configured();
|
|
68
84
|
return;
|
|
69
85
|
}
|
|
70
86
|
case 'suspend':
|
|
@@ -80,6 +96,43 @@ async function onHook(hook, body) {
|
|
|
80
96
|
}
|
|
81
97
|
const server = http_1.default.createServer((req, res) => {
|
|
82
98
|
var _a, _b;
|
|
99
|
+
if (req.url === '/internal/bootstrap' && req.method === 'POST') {
|
|
100
|
+
if (!bootstrap.authorized(req.headers.authorization)) {
|
|
101
|
+
res.writeHead(401, { Connection: 'close' });
|
|
102
|
+
res.end();
|
|
103
|
+
req.destroy();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const chunks = [];
|
|
107
|
+
let bytes = 0;
|
|
108
|
+
req.on('data', (chunk) => {
|
|
109
|
+
bytes += chunk.length;
|
|
110
|
+
if (bytes > microvm_bootstrap_1.MAX_BOOTSTRAP_BYTES) {
|
|
111
|
+
res.writeHead(413);
|
|
112
|
+
res.end();
|
|
113
|
+
req.destroy();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
chunks.push(chunk);
|
|
117
|
+
});
|
|
118
|
+
req.on('end', () => {
|
|
119
|
+
if (res.writableEnded)
|
|
120
|
+
return;
|
|
121
|
+
try {
|
|
122
|
+
const shouldStart = bootstrap.accept(Buffer.concat(chunks));
|
|
123
|
+
const reply = JSON.stringify({ bootstrapped: true });
|
|
124
|
+
res.writeHead(200, { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(reply) });
|
|
125
|
+
res.end(reply);
|
|
126
|
+
if (shouldStart)
|
|
127
|
+
configured();
|
|
128
|
+
}
|
|
129
|
+
catch (_a) {
|
|
130
|
+
res.writeHead(400);
|
|
131
|
+
res.end('Invalid runtime bootstrap');
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
83
136
|
if (((_a = req.url) === null || _a === void 0 ? void 0 : _a.startsWith(HOOK_PREFIX)) && req.method === 'POST') {
|
|
84
137
|
const hook = req.url.slice(HOOK_PREFIX.length);
|
|
85
138
|
const chunks = [];
|
|
@@ -95,16 +148,11 @@ const server = http_1.default.createServer((req, res) => {
|
|
|
95
148
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
96
149
|
res.end('{}');
|
|
97
150
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
reply();
|
|
107
|
-
}
|
|
151
|
+
work.then(reply, (error) => {
|
|
152
|
+
console.error(`lifecycle hook failed (${hook}):`, error instanceof Error ? error.message : error);
|
|
153
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
154
|
+
res.end(JSON.stringify({ error: 'Lifecycle hook failed' }));
|
|
155
|
+
});
|
|
108
156
|
});
|
|
109
157
|
return;
|
|
110
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-microvm.js","sourceRoot":"","sources":["../../src/runtime/lambda-microvm.ts"],"names":[],"mappings":";;;;;;AACA,8EAA8E;AAC9E,8FAA8F;AAC9F,+FAA+F;AAC/F,4FAA4F;AAC5F,6FAA6F;AAC7F,gCAAgC;AAChC,EAAE;AACF,8FAA8F;AAC9F,6FAA6F;AAC7F,8FAA8F;AAC9F,+FAA+F;AAC/F,YAAY;AACZ,gDAAuB;AACvB,mCAA+E;
|
|
1
|
+
{"version":3,"file":"lambda-microvm.js","sourceRoot":"","sources":["../../src/runtime/lambda-microvm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const MAX_BOOTSTRAP_BYTES: number;
|
|
2
|
+
/** Accept one runtime configuration, inline or pinned by the initial Lambda run hook. */
|
|
3
|
+
export declare class MicrovmBootstrap {
|
|
4
|
+
private readonly env;
|
|
5
|
+
private expected?;
|
|
6
|
+
private configured;
|
|
7
|
+
constructor(env?: NodeJS.ProcessEnv);
|
|
8
|
+
run(payload: string | undefined): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Whether `authorization` is `Bearer <token>` for the token the run hook pinned (the VM's own
|
|
11
|
+
* API-issued access token) — checked before the body is read.
|
|
12
|
+
*/
|
|
13
|
+
authorized(authorization: string | undefined): boolean;
|
|
14
|
+
accept(body: Buffer): boolean;
|
|
15
|
+
private parse;
|
|
16
|
+
private materialize;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=microvm-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microvm-bootstrap.d.ts","sourceRoot":"","sources":["../../src/runtime/microvm-bootstrap.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,QAAc,CAAA;AAE9C,yFAAyF;AACzF,qBAAa,gBAAgB;IAIf,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,CAAwD;IACzE,OAAO,CAAC,UAAU,CAAQ;gBAEG,GAAG,GAAE,MAAM,CAAC,UAAwB;IAEjE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAkBzC;;;OAGG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAMtD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU7B,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,WAAW;CAUpB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MicrovmBootstrap = exports.MAX_BOOTSTRAP_BYTES = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
exports.MAX_BOOTSTRAP_BYTES = 1024 * 1024;
|
|
6
|
+
/** Accept one runtime configuration, inline or pinned by the initial Lambda run hook. */
|
|
7
|
+
class MicrovmBootstrap {
|
|
8
|
+
constructor(env = process.env) {
|
|
9
|
+
this.env = env;
|
|
10
|
+
this.configured = false;
|
|
11
|
+
}
|
|
12
|
+
run(payload) {
|
|
13
|
+
if (!payload || this.configured || this.expected)
|
|
14
|
+
return false;
|
|
15
|
+
const data = this.parse(payload);
|
|
16
|
+
if (data.bootstrap) {
|
|
17
|
+
if (typeof data.bootstrap !== 'object' || Array.isArray(data.bootstrap))
|
|
18
|
+
throw new Error('Invalid MicroVM bootstrap descriptor');
|
|
19
|
+
const descriptor = data.bootstrap;
|
|
20
|
+
if (descriptor.version !== 1 || typeof descriptor.sha256 !== 'string' || !/^[a-f0-9]{64}$/.test(descriptor.sha256)
|
|
21
|
+
|| typeof descriptor.bytes !== 'number' || !Number.isSafeInteger(descriptor.bytes) || descriptor.bytes <= 0 || descriptor.bytes > exports.MAX_BOOTSTRAP_BYTES
|
|
22
|
+
|| typeof descriptor.tokenSha256 !== 'string' || !/^[a-f0-9]{64}$/.test(descriptor.tokenSha256)) {
|
|
23
|
+
throw new Error('Invalid MicroVM bootstrap descriptor');
|
|
24
|
+
}
|
|
25
|
+
this.expected = { sha256: descriptor.sha256, bytes: descriptor.bytes, tokenSha256: descriptor.tokenSha256 };
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
this.materialize(data);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Whether `authorization` is `Bearer <token>` for the token the run hook pinned (the VM's own
|
|
33
|
+
* API-issued access token) — checked before the body is read.
|
|
34
|
+
*/
|
|
35
|
+
authorized(authorization) {
|
|
36
|
+
if (!this.expected || !(authorization === null || authorization === void 0 ? void 0 : authorization.startsWith('Bearer ')))
|
|
37
|
+
return false;
|
|
38
|
+
const actual = (0, node_crypto_1.createHash)('sha256').update(authorization.slice('Bearer '.length)).digest();
|
|
39
|
+
return (0, node_crypto_1.timingSafeEqual)(actual, Buffer.from(this.expected.tokenSha256, 'hex'));
|
|
40
|
+
}
|
|
41
|
+
accept(body) {
|
|
42
|
+
if (!this.expected || body.length !== this.expected.bytes
|
|
43
|
+
|| (0, node_crypto_1.createHash)('sha256').update(body).digest('hex') !== this.expected.sha256) {
|
|
44
|
+
throw new Error('MicroVM bootstrap configuration does not match the run hook');
|
|
45
|
+
}
|
|
46
|
+
if (this.configured)
|
|
47
|
+
return false; // A retry confirms the same config without restarting.
|
|
48
|
+
this.materialize(this.parse(body.toString()));
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
parse(raw) {
|
|
52
|
+
try {
|
|
53
|
+
const data = JSON.parse(raw);
|
|
54
|
+
if (!data || typeof data !== 'object' || Array.isArray(data))
|
|
55
|
+
throw new Error();
|
|
56
|
+
return data;
|
|
57
|
+
}
|
|
58
|
+
catch (_a) {
|
|
59
|
+
// JSON parse errors can quote the credential-containing input.
|
|
60
|
+
throw new Error('Invalid MicroVM runtime configuration');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
materialize(data) {
|
|
64
|
+
var _a;
|
|
65
|
+
const env = (_a = data.env) !== null && _a !== void 0 ? _a : {};
|
|
66
|
+
if (!env || typeof env !== 'object' || Array.isArray(env)
|
|
67
|
+
|| Object.entries(env).some(([key, value]) => !/^[A-Za-z_][A-Za-z0-9_]*$/.test(key) || typeof value !== 'string')) {
|
|
68
|
+
throw new Error('Invalid MicroVM environment');
|
|
69
|
+
}
|
|
70
|
+
Object.assign(this.env, env);
|
|
71
|
+
if (!this.env.SESSION_ID && typeof data.sessionId === 'string')
|
|
72
|
+
this.env.SESSION_ID = data.sessionId;
|
|
73
|
+
this.configured = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.MicrovmBootstrap = MicrovmBootstrap;
|
|
77
|
+
//# sourceMappingURL=microvm-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microvm-bootstrap.js","sourceRoot":"","sources":["../../src/runtime/microvm-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microvm-bootstrap.test.d.ts","sourceRoot":"","sources":["../../src/runtime/microvm-bootstrap.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const node_test_1 = require("node:test");
|
|
9
|
+
const microvm_bootstrap_1 = require("./microvm-bootstrap");
|
|
10
|
+
const body = Buffer.from(JSON.stringify({ sessionId: 'session', env: { TOKEN: 'private-token', MCP_SERVERS_JSON: 'x'.repeat(12000) } }));
|
|
11
|
+
const token = 'mp_tok_vm';
|
|
12
|
+
const descriptor = JSON.stringify({ bootstrap: {
|
|
13
|
+
version: 1, bytes: body.length, sha256: (0, node_crypto_1.createHash)('sha256').update(body).digest('hex'),
|
|
14
|
+
tokenSha256: (0, node_crypto_1.createHash)('sha256').update(token).digest('hex'),
|
|
15
|
+
} });
|
|
16
|
+
(0, node_test_1.it)('authorizes only the bearer whose digest the run hook pinned', () => {
|
|
17
|
+
const bootstrap = new microvm_bootstrap_1.MicrovmBootstrap({});
|
|
18
|
+
strict_1.default.equal(bootstrap.authorized(`Bearer ${token}`), false, 'nothing is authorized before /run');
|
|
19
|
+
bootstrap.run(descriptor);
|
|
20
|
+
strict_1.default.equal(bootstrap.authorized(`Bearer ${token}`), true);
|
|
21
|
+
for (const header of [undefined, '', token, 'Bearer mp_tok_other', `Basic ${token}`]) {
|
|
22
|
+
strict_1.default.equal(bootstrap.authorized(header), false);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
(0, node_test_1.it)('waits for the full verified environment and initializes exactly once', () => {
|
|
26
|
+
const env = {};
|
|
27
|
+
const bootstrap = new microvm_bootstrap_1.MicrovmBootstrap(env);
|
|
28
|
+
strict_1.default.equal(bootstrap.run(descriptor), false);
|
|
29
|
+
strict_1.default.deepEqual(env, {});
|
|
30
|
+
strict_1.default.throws(() => bootstrap.accept(Buffer.from('{}')), /does not match/);
|
|
31
|
+
strict_1.default.deepEqual(env, {});
|
|
32
|
+
strict_1.default.equal(bootstrap.accept(body), true);
|
|
33
|
+
strict_1.default.deepEqual(env, { ...JSON.parse(body.toString()).env, SESSION_ID: 'session' });
|
|
34
|
+
strict_1.default.equal(bootstrap.accept(body), false);
|
|
35
|
+
strict_1.default.equal(bootstrap.run(JSON.stringify({ env: { TOKEN: 'replacement' } })), false);
|
|
36
|
+
strict_1.default.equal(env.TOKEN, 'private-token');
|
|
37
|
+
});
|
|
38
|
+
(0, node_test_1.it)('accepts legacy inline payloads and rejects unsolicited bootstrap uploads', () => {
|
|
39
|
+
const bootstrap = new microvm_bootstrap_1.MicrovmBootstrap({});
|
|
40
|
+
strict_1.default.throws(() => bootstrap.accept(body), /does not match/);
|
|
41
|
+
strict_1.default.equal(bootstrap.run(body.toString()), true);
|
|
42
|
+
});
|
|
43
|
+
(0, node_test_1.it)('rejects invalid descriptors and malformed config without exposing secrets', () => {
|
|
44
|
+
const bootstrap = new microvm_bootstrap_1.MicrovmBootstrap({});
|
|
45
|
+
strict_1.default.throws(() => bootstrap.run('{"TOKEN":"private-token"'), { message: 'Invalid MicroVM runtime configuration' });
|
|
46
|
+
strict_1.default.throws(() => bootstrap.run(JSON.stringify({ bootstrap: { version: 1, bytes: 2 ** 30, sha256: 'a'.repeat(64), tokenSha256: 'a'.repeat(64) } })), /Invalid MicroVM bootstrap descriptor/);
|
|
47
|
+
strict_1.default.throws(() => bootstrap.run(JSON.stringify({ bootstrap: { version: 1, bytes: 10, sha256: 'a'.repeat(64) } })), /Invalid MicroVM bootstrap descriptor/, 'a descriptor without a token digest');
|
|
48
|
+
strict_1.default.throws(() => bootstrap.run(JSON.stringify({ env: { TOKEN: { value: 'private-token' } } })), { message: 'Invalid MicroVM environment' });
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=microvm-bootstrap.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microvm-bootstrap.test.js","sourceRoot":"","sources":["../../src/runtime/microvm-bootstrap.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,9 +162,8 @@ export declare const AGENT_ENV: {
|
|
|
162
162
|
/** Total tokens the session may spend before it pauses and asks whether to continue. */
|
|
163
163
|
readonly AGENT_TOKEN_BUDGET: "AGENT_TOKEN_BUDGET";
|
|
164
164
|
readonly AGENT_WORKSPACE_DIR: "AGENT_WORKSPACE_DIR";
|
|
165
|
+
/** The gateway's agent socket; the guest authenticates to it with ACCESS_TOKEN (session-scoped). */
|
|
165
166
|
readonly AGENT_SOCKET_URL: "AGENT_SOCKET_URL";
|
|
166
|
-
/** secret */
|
|
167
|
-
readonly AGENT_SOCKET_TOKEN: "AGENT_SOCKET_TOKEN";
|
|
168
167
|
/** secret: model provider keys (one of them) */
|
|
169
168
|
readonly OPENROUTER_API_KEY: "OPENROUTER_API_KEY";
|
|
170
169
|
readonly ANTHROPIC_API_KEY: "ANTHROPIC_API_KEY";
|
|
@@ -186,11 +185,12 @@ export declare const AGENT_ENV: {
|
|
|
186
185
|
readonly GIT_REPOSITORY_DIR: "GIT_REPOSITORY_DIR";
|
|
187
186
|
/** Branch the session's workspace is mirrored to (default session/<SESSION_ID>). */
|
|
188
187
|
readonly GIT_BRANCH: "GIT_BRANCH";
|
|
189
|
-
/** secret */
|
|
190
|
-
readonly GIT_ACCESS_TOKEN: "GIT_ACCESS_TOKEN";
|
|
191
188
|
readonly SESSION_STORAGE_URL: "SESSION_STORAGE_URL";
|
|
192
|
-
/**
|
|
193
|
-
|
|
189
|
+
/**
|
|
190
|
+
* secret: the VM's API-issued token (POST /tokens) — authenticates both the project's Git
|
|
191
|
+
* repository and the session's workspace snapshots, whichever this VM was scoped to.
|
|
192
|
+
*/
|
|
193
|
+
readonly ACCESS_TOKEN: "ACCESS_TOKEN";
|
|
194
194
|
};
|
|
195
195
|
export declare const AGENT_SECRET_ENV_KEYS: readonly string[];
|
|
196
196
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/transport/protocol.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,mBAAmB,EAAG,qBAA8B,CAAA;AACjE,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAA;AAErE,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAA;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,oGAAoG;AACpG,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,mBAAmB;AAC7B,0FAA0F;AACxF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAA;CAAE;AAC9F,wFAAwF;GACtF;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE;AACnB,qFAAqF;GACnF;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/F,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8FAA8F;IAC9F,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GACvC;AACE,4EAA4E;AAC1E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AACjF,mDAAmD;GACjD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACpG;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AACvG,8FAA8F;GAC5F;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAE;AAC1F;;;;GAIG;GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE;AACzD,gDAAgD;GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE;AAClE,mFAAmF;GACjF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACzG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAEtD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CACpC,CAAA;AAEH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;AAE7D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAGrE;AAED,eAAO,MAAM,yBAAyB,EAAE,SAAS,qBAAqB,EAgBrE,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAQ9E;AAOD,eAAO,MAAM,SAAS;;IAEpB,uFAAuF;;IAEvF,wCAAwC;;;;IAIxC,6DAA6D;;IAE7D,wFAAwF
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/transport/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,9 +66,8 @@ exports.AGENT_ENV = {
|
|
|
66
66
|
/** Total tokens the session may spend before it pauses and asks whether to continue. */
|
|
67
67
|
AGENT_TOKEN_BUDGET: 'AGENT_TOKEN_BUDGET',
|
|
68
68
|
AGENT_WORKSPACE_DIR: 'AGENT_WORKSPACE_DIR',
|
|
69
|
+
/** The gateway's agent socket; the guest authenticates to it with ACCESS_TOKEN (session-scoped). */
|
|
69
70
|
AGENT_SOCKET_URL: 'AGENT_SOCKET_URL',
|
|
70
|
-
/** secret */
|
|
71
|
-
AGENT_SOCKET_TOKEN: 'AGENT_SOCKET_TOKEN',
|
|
72
71
|
/** secret: model provider keys (one of them) */
|
|
73
72
|
OPENROUTER_API_KEY: 'OPENROUTER_API_KEY',
|
|
74
73
|
ANTHROPIC_API_KEY: 'ANTHROPIC_API_KEY',
|
|
@@ -90,20 +89,19 @@ exports.AGENT_ENV = {
|
|
|
90
89
|
GIT_REPOSITORY_DIR: 'GIT_REPOSITORY_DIR',
|
|
91
90
|
/** Branch the session's workspace is mirrored to (default session/<SESSION_ID>). */
|
|
92
91
|
GIT_BRANCH: 'GIT_BRANCH',
|
|
93
|
-
/** secret */
|
|
94
|
-
GIT_ACCESS_TOKEN: 'GIT_ACCESS_TOKEN',
|
|
95
92
|
SESSION_STORAGE_URL: 'SESSION_STORAGE_URL',
|
|
96
|
-
/**
|
|
97
|
-
|
|
93
|
+
/**
|
|
94
|
+
* secret: the VM's API-issued token (POST /tokens) — authenticates both the project's Git
|
|
95
|
+
* repository and the session's workspace snapshots, whichever this VM was scoped to.
|
|
96
|
+
*/
|
|
97
|
+
ACCESS_TOKEN: 'ACCESS_TOKEN',
|
|
98
98
|
};
|
|
99
99
|
exports.AGENT_SECRET_ENV_KEYS = [
|
|
100
|
-
exports.AGENT_ENV.AGENT_SOCKET_TOKEN,
|
|
101
100
|
exports.AGENT_ENV.OPENROUTER_API_KEY,
|
|
102
101
|
exports.AGENT_ENV.ANTHROPIC_API_KEY,
|
|
103
102
|
exports.AGENT_ENV.FILINGRAMP_AUTH_TOKEN,
|
|
104
103
|
exports.AGENT_ENV.FILINGRAMP_CLIENT_SECRET,
|
|
105
|
-
exports.AGENT_ENV.
|
|
106
|
-
exports.AGENT_ENV.SESSION_STORAGE_TOKEN,
|
|
104
|
+
exports.AGENT_ENV.ACCESS_TOKEN,
|
|
107
105
|
exports.AGENT_ENV.MCP_SERVERS_JSON,
|
|
108
106
|
];
|
|
109
107
|
//# sourceMappingURL=protocol.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/transport/protocol.ts"],"names":[],"mappings":";AAAA,yFAAyF;AACzF,6FAA6F;AAC7F,wFAAwF;AACxF,8FAA8F;AAC9F,wEAAwE;AACxE,EAAE;AACF,8CAA8C;AAC9C,kFAAkF;AAClF,6DAA6D;;;AAM7D,4CAEC;AAuFD,oDAGC;AAoBD,kDAQC;AA5HY,QAAA,mBAAmB,GAAG,qBAA8B,CAAA;AACpD,QAAA,qBAAqB,GAAG,uBAAgC,CAAA;AAErE,kGAAkG;AAClG,SAAgB,gBAAgB,CAAC,SAAiB;IAChD,OAAO,iBAAiB,SAAS,EAAE,CAAA;AACrC,CAAC;AAuFD,SAAgB,oBAAoB,CAAC,KAAwB;;IAC3D,mFAAmF;IACnF,OAAO,qBAAqB,KAAK,CAAC,SAAS,IAAI,MAAA,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,EAAE,CAAA;AACnG,CAAC;AAEY,QAAA,yBAAyB,GAAqC;IACzE,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,cAAc;IACd,MAAM;IACN,OAAO;IACP,WAAW;IACX,SAAS;CACV,CAAA;AAED,SAAgB,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,KAAK,GAAG,KAAmC,CAAA;IACjD,OAAO,CACL,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC7B,iCAA+C,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACtE,CAAA;AACH,CAAC;AAED,8FAA8F;AAC9F,8FAA8F;AAC9F,+FAA+F;AAC/F,iDAAiD;AAEpC,QAAA,SAAS,GAAG;IACvB,UAAU,EAAE,YAAY;IACxB,uFAAuF;IACvF,UAAU,EAAE,YAAY;IACxB,wCAAwC;IACxC,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,6DAA6D;IAC7D,sBAAsB,EAAE,wBAAwB;IAChD,wFAAwF;IACxF,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,gBAAgB,EAAE,kBAAkB;IACpC,
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/transport/protocol.ts"],"names":[],"mappings":";AAAA,yFAAyF;AACzF,6FAA6F;AAC7F,wFAAwF;AACxF,8FAA8F;AAC9F,wEAAwE;AACxE,EAAE;AACF,8CAA8C;AAC9C,kFAAkF;AAClF,6DAA6D;;;AAM7D,4CAEC;AAuFD,oDAGC;AAoBD,kDAQC;AA5HY,QAAA,mBAAmB,GAAG,qBAA8B,CAAA;AACpD,QAAA,qBAAqB,GAAG,uBAAgC,CAAA;AAErE,kGAAkG;AAClG,SAAgB,gBAAgB,CAAC,SAAiB;IAChD,OAAO,iBAAiB,SAAS,EAAE,CAAA;AACrC,CAAC;AAuFD,SAAgB,oBAAoB,CAAC,KAAwB;;IAC3D,mFAAmF;IACnF,OAAO,qBAAqB,KAAK,CAAC,SAAS,IAAI,MAAA,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,EAAE,CAAA;AACnG,CAAC;AAEY,QAAA,yBAAyB,GAAqC;IACzE,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,cAAc;IACd,MAAM;IACN,OAAO;IACP,WAAW;IACX,SAAS;CACV,CAAA;AAED,SAAgB,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,KAAK,GAAG,KAAmC,CAAA;IACjD,OAAO,CACL,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC7B,iCAA+C,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACtE,CAAA;AACH,CAAC;AAED,8FAA8F;AAC9F,8FAA8F;AAC9F,+FAA+F;AAC/F,iDAAiD;AAEpC,QAAA,SAAS,GAAG;IACvB,UAAU,EAAE,YAAY;IACxB,uFAAuF;IACvF,UAAU,EAAE,YAAY;IACxB,wCAAwC;IACxC,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,6DAA6D;IAC7D,sBAAsB,EAAE,wBAAwB;IAChD,wFAAwF;IACxF,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,oGAAoG;IACpG,gBAAgB,EAAE,kBAAkB;IACpC,gDAAgD;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,2CAA2C;IAC3C,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,wFAAwF;IACxF,qBAAqB,EAAE,uBAAuB;IAC9C,qFAAqF;IACrF,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa;IACb,wBAAwB,EAAE,0BAA0B;IACpD,mEAAmE;IACnE,wBAAwB,EAAE,0BAA0B;IACpD,uDAAuD;IACvD,8BAA8B,EAAE,gCAAgC;IAChE,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,oFAAoF;IACpF,UAAU,EAAE,YAAY;IACxB,mBAAmB,EAAE,qBAAqB;IAC1C;;;OAGG;IACH,YAAY,EAAE,cAAc;CACpB,CAAA;AAEG,QAAA,qBAAqB,GAAsB;IACtD,iBAAS,CAAC,kBAAkB;IAC5B,iBAAS,CAAC,iBAAiB;IAC3B,iBAAS,CAAC,qBAAqB;IAC/B,iBAAS,CAAC,wBAAwB;IAClC,iBAAS,CAAC,YAAY;IACtB,iBAAS,CAAC,gBAAgB;CAC3B,CAAA"}
|
|
@@ -23,7 +23,7 @@ const protocol_1 = require("./protocol");
|
|
|
23
23
|
strict_1.default.equal((0, protocol_1.agentSessionRoom)('abc'), 'agent-session:abc');
|
|
24
24
|
});
|
|
25
25
|
(0, node_test_1.it)('lists every secret env key the platform must keep off the VM record', () => {
|
|
26
|
-
for (const key of [protocol_1.AGENT_ENV.FILINGRAMP_CLIENT_SECRET, protocol_1.AGENT_ENV.
|
|
26
|
+
for (const key of [protocol_1.AGENT_ENV.FILINGRAMP_CLIENT_SECRET, protocol_1.AGENT_ENV.ACCESS_TOKEN, protocol_1.AGENT_ENV.OPENROUTER_API_KEY]) {
|
|
27
27
|
strict_1.default.ok(protocol_1.AGENT_SECRET_ENV_KEYS.includes(key), `${key} must be a secret`);
|
|
28
28
|
}
|
|
29
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.test.js","sourceRoot":"","sources":["../../src/transport/protocol.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AACvC,yCAAwC;AACxC,yCAAkJ;AAElJ,IAAA,oBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,cAAE,EAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,KAAK,GAAsB,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QAC9K,gBAAM,CAAC,KAAK,CAAC,IAAA,+BAAoB,EAAC,KAAK,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7E,gBAAM,CAAC,QAAQ,CAAC,IAAA,+BAAoB,EAAC,KAAK,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;QAC5G,gBAAM,CAAC,QAAQ,CAAC,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACxJ,CAAC,CAAC,CAAA;IACF,IAAA,cAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACnI,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC5E,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC1D,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,gBAAM,CAAC,KAAK,CAAC,IAAA,2BAAgB,EAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,KAAK,MAAM,GAAG,IAAI,CAAC,oBAAS,CAAC,wBAAwB,EAAE,oBAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"protocol.test.js","sourceRoot":"","sources":["../../src/transport/protocol.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AACvC,yCAAwC;AACxC,yCAAkJ;AAElJ,IAAA,oBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,cAAE,EAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,KAAK,GAAsB,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QAC9K,gBAAM,CAAC,KAAK,CAAC,IAAA,+BAAoB,EAAC,KAAK,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7E,gBAAM,CAAC,QAAQ,CAAC,IAAA,+BAAoB,EAAC,KAAK,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;QAC5G,gBAAM,CAAC,QAAQ,CAAC,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACxJ,CAAC,CAAC,CAAA;IACF,IAAA,cAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACnI,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC5E,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC1D,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,gBAAM,CAAC,KAAK,CAAC,IAAA,2BAAgB,EAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,IAAA,cAAE,EAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,KAAK,MAAM,GAAG,IAAI,CAAC,oBAAS,CAAC,wBAAwB,EAAE,oBAAS,CAAC,YAAY,EAAE,oBAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC7G,gBAAM,CAAC,EAAE,CAAC,gCAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,mBAAmB,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplayer-app/agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"description": "Agent that runs inside a session VM — one-shot coding tasks or long-lived research sessions driven over the gateway socket; local file/exec tools, FilingRamp research tools, MCP over env-var config",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|