Reuse the canonical language bridge in deep Agent tmux fixtures (#503)
This commit is contained in:
parent
4a87fc2c7d
commit
df9f50ea31
@@ -0,0 +1,44 @@
|
||||
// Language bridge to the shared socket policy; identities contain no credentials.
|
||||
import {
|
||||
checkedSocketPath,
|
||||
prepareSocketDirectory,
|
||||
removeEmptySocketDirectory,
|
||||
socketAddress,
|
||||
} from "./socket-address.mjs";
|
||||
|
||||
const [operation, role = "bootstrap"] = process.argv.slice(2);
|
||||
if (
|
||||
!["check-path", "prepare", "prepare-directory", "address", "cleanup"].includes(operation) ||
|
||||
process.argv.length > 4 ||
|
||||
(process.argv.length === 4 && !["prepare", "address"].includes(operation))
|
||||
)
|
||||
throw Error("Select a socket operation and an optional address role");
|
||||
const chunks = [];
|
||||
let length = 0;
|
||||
for await (const chunk of process.stdin) {
|
||||
length += chunk.length;
|
||||
if (length > 1024 * 1024) throw Error("Socket command input exceeds its bound");
|
||||
chunks.push(chunk);
|
||||
}
|
||||
const identity = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(Buffer.concat(chunks)));
|
||||
switch (operation) {
|
||||
case "check-path":
|
||||
console.log(checkedSocketPath(identity));
|
||||
break;
|
||||
case "prepare": {
|
||||
// Validate the role before creating any directories.
|
||||
const address = socketAddress(identity, role);
|
||||
await prepareSocketDirectory(identity);
|
||||
console.log(address);
|
||||
break;
|
||||
}
|
||||
case "prepare-directory":
|
||||
console.log(await prepareSocketDirectory(identity));
|
||||
break;
|
||||
case "address":
|
||||
console.log(socketAddress(identity, role));
|
||||
break;
|
||||
case "cleanup":
|
||||
await removeEmptySocketDirectory(identity);
|
||||
break;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{ pkgs }:
|
||||
let
|
||||
code = pkgs.runCommand "quixos-socket-address-code" { } ''
|
||||
mkdir "$out"
|
||||
cp ${./socket-address-cli.mjs} "$out/socket-address-cli.mjs"
|
||||
cp ${./socket-address.mjs} "$out/socket-address.mjs"
|
||||
'';
|
||||
in
|
||||
pkgs.writeShellApplication {
|
||||
name = "quixos-socket-address";
|
||||
text = ''
|
||||
exec ${pkgs.nodejs_24}/bin/node --max-old-space-size=64 ${code}/socket-address-cli.mjs "$@"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user