glimmervoid 0.34.0 → 0.34.1
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/bin/glimmervoid.js +3 -3
- package/dist/chunks/{adapters-_HwpLy0R.js → adapters-CgbcceU3.js} +1 -1
- package/dist/chunks/{adapters-BY8slY95.js → adapters-D-cRFZ_Q.js} +1 -1
- package/dist/chunks/{config-store-CggAQLUB.js → config-store-D0lRWsAM.js} +1 -1
- package/dist/chunks/config-store-DwTxLe8Y.js +2 -0
- package/dist/chunks/{contracts-D1wLN5iO.js → contracts-DZV9H8px.js} +24 -0
- package/dist/chunks/{main-Dh4udE7P.js → main-VMWdsGC6.js} +178 -119
- package/dist/chunks/{pair-cli-Nnrd0il_.js → pair-cli-CI848omy.js} +2 -2
- package/dist/chunks/{remote-config-DKMQEIZh.js → remote-config-Y6YtqoiO.js} +1 -1
- package/dist/client/assets/index-b9goyXSa.js +254 -0
- package/dist/client/index.html +1 -1
- package/dist/server/index.js +1 -1
- package/dist/session/sandbox-open-launcher.js +22 -8
- package/package.json +1 -1
- package/dist/chunks/config-store-BmdXeUz1.js +0 -2
- package/dist/client/assets/index-BiTwrj1H.js +0 -254
package/dist/client/index.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<link rel="icon" type="image/svg+xml" href="/assets/favicon-CKygeLwW.svg">
|
|
8
8
|
<title>Glimmervoid</title>
|
|
9
9
|
<style>html,body{background:var(--bg,#0a0810);height:100%;color:var(--text,#c8c0e0);font-family:var(--font-mono,"CommitMono", "Cascadia Code", "Fira Code", "Consolas", "Menlo", monospace);margin:0;padding:0}.app-shell{display:none}html:not([data-layout=phone]) .app-ready .app-shell{display:contents}.loading-screen{z-index:9999;background:#0a0810;flex-direction:column;justify-content:center;align-items:center;gap:20px;transition:opacity .3s;display:flex;position:fixed;inset:0}.loading-screen.fade-out{opacity:0;pointer-events:none}.loading-title{letter-spacing:.1em;color:#e8e0ff;text-transform:uppercase;font-family:CommitMono,Cascadia Code,Fira Code,Consolas,Menlo,monospace;font-size:20px;font-weight:700}.loading-title:before{content:"▸";color:#c084fc}.loading-status{color:#8276b0;letter-spacing:.04em;font-family:CommitMono,Cascadia Code,Fira Code,Consolas,Menlo,monospace;font-size:12px}.loading-spinner{border:2px solid #2a2440;border-top-color:#c084fc;border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.shutdown-screen{z-index:9999;-webkit-backdrop-filter:blur();backdrop-filter:blur();pointer-events:none;opacity:0;background:#0a081000;flex-direction:column;justify-content:center;align-items:center;gap:20px;transition:background .4s,-webkit-backdrop-filter .4s,backdrop-filter .4s,opacity .3s;display:flex;position:fixed;inset:0}.shutdown-screen.active{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto;opacity:1;background:#0a0810eb}.shutdown-status{color:#8276b0;letter-spacing:.04em;font-family:CommitMono,Cascadia Code,Fira Code,Consolas,Menlo,monospace;font-size:12px;transition:color .3s}.shutdown-screen.done .loading-spinner{opacity:.3;border-color:#2a2440;animation:none}.shutdown-screen.done .shutdown-status{color:#4a4268}</style>
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-b9goyXSa.js"></script>
|
|
11
11
|
<link rel="stylesheet" crossorigin href="/assets/index-BxU3Ww0L.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
package/dist/server/index.js
CHANGED
|
@@ -31,7 +31,7 @@ var FORWARDED_SIGNALS = [
|
|
|
31
31
|
"SIGTERM",
|
|
32
32
|
"SIGHUP"
|
|
33
33
|
];
|
|
34
|
-
var
|
|
34
|
+
var ANY_TERMINAL_SCOPE = "any";
|
|
35
35
|
var DEVICE_FOLDER = "/dev";
|
|
36
36
|
var PSEUDO_TERMINAL_PREFIX = "ttys";
|
|
37
37
|
function fieldOf(record, field) {
|
|
@@ -41,14 +41,28 @@ function fieldOf(record, field) {
|
|
|
41
41
|
function shellQuote(word) {
|
|
42
42
|
return `'${word.replace(/'/g, `'\\''`)}'`;
|
|
43
43
|
}
|
|
44
|
+
function openNetworkOf(policy) {
|
|
45
|
+
const network = fieldOf(policy, "network");
|
|
46
|
+
const machServices = fieldOf(network, "allowMachLookup");
|
|
47
|
+
const allowMachLookup = Array.isArray(machServices) ? machServices.filter((service) => typeof service === "string") : [];
|
|
48
|
+
return {
|
|
49
|
+
allowAllUnixSockets: fieldOf(network, "allowAllUnixSockets") === true,
|
|
50
|
+
...allowMachLookup.length === 0 ? {} : { allowMachLookup }
|
|
51
|
+
};
|
|
52
|
+
}
|
|
44
53
|
function readOpenPolicy(policyPath) {
|
|
45
54
|
const policy = JSON.parse(fs.readFileSync(policyPath, "utf8"));
|
|
46
55
|
if (fieldOf(fieldOf(policy, "network"), "allowedDomains") !== void 0) throw new Error("a policy with a domain list must run through the sandbox runtime CLI");
|
|
56
|
+
const filesystem = FilesystemConfigSchema.parse(fieldOf(policy, "filesystem"));
|
|
47
57
|
return {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
runtimeConfig: {
|
|
59
|
+
network: openNetworkOf(policy),
|
|
60
|
+
filesystem,
|
|
61
|
+
allowPty: fieldOf(policy, "allowPty") === true,
|
|
62
|
+
enableWeakerNetworkIsolation: true,
|
|
63
|
+
allowAppleEvents: fieldOf(policy, "allowAppleEvents") === true
|
|
64
|
+
},
|
|
65
|
+
isAnyTerminalAllowed: fieldOf(policy, "terminalScope") === ANY_TERMINAL_SCOPE
|
|
52
66
|
};
|
|
53
67
|
}
|
|
54
68
|
function ownTerminalPath() {
|
|
@@ -58,8 +72,8 @@ function ownTerminalPath() {
|
|
|
58
72
|
if (ownName === void 0) throw new Error("the launcher terminal is not a pseudo-terminal under /dev");
|
|
59
73
|
return path.join(DEVICE_FOLDER, ownName);
|
|
60
74
|
}
|
|
61
|
-
function sandboxArgv(argv,
|
|
62
|
-
if (
|
|
75
|
+
function sandboxArgv(argv, { runtimeConfig, isAnyTerminalAllowed }) {
|
|
76
|
+
if (runtimeConfig.allowPty !== true || isAnyTerminalAllowed || process.platform !== "darwin") return argv;
|
|
63
77
|
const confinement = confineToOwnTerminal(argv, ownTerminalPath());
|
|
64
78
|
if (!confinement.ok) throw new Error(confinement.reason);
|
|
65
79
|
return confinement.argv;
|
|
@@ -89,7 +103,7 @@ async function launchInOpenNetworkSandbox() {
|
|
|
89
103
|
const exitWhenInterrupted = () => {
|
|
90
104
|
if (beforeSpawn.interruptedBy !== null) process.exit(exitCodeFor(null, beforeSpawn.interruptedBy));
|
|
91
105
|
};
|
|
92
|
-
await SandboxManager.initialize(openPolicy);
|
|
106
|
+
await SandboxManager.initialize(openPolicy.runtimeConfig);
|
|
93
107
|
const commandLine = command.map(shellQuote).join(" ");
|
|
94
108
|
const wrapped = await SandboxManager.wrapWithSandboxArgv(commandLine, void 0, void 0, interrupted.signal).catch((wrapFailure) => {
|
|
95
109
|
exitWhenInterrupted();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glimmervoid",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.1",
|
|
4
4
|
"description": "Mission control for coding agents: run and supervise Claude Code, Codex and Grok sessions in parallel git worktrees from one local browser dashboard",
|
|
5
5
|
"main": "dist/server/index.js",
|
|
6
6
|
"type": "module",
|