glimmervoid 0.32.1 → 0.34.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 +1 -1
- package/dist/bin/glimmervoid.js +15 -10
- package/dist/chunks/{adapters-BS_7o8fj.js → adapters-BY8slY95.js} +3 -3
- package/dist/chunks/{adapters-Bn-dQ02i.js → adapters-_HwpLy0R.js} +1 -1
- package/dist/chunks/agent-api-cli-CRJYxzVU.js +2 -0
- package/dist/chunks/{agent-api-cli-BR0GVDn6.js → agent-api-cli-DuT7437B.js} +3 -3
- package/dist/chunks/{agent-api-core-DUiWHSHg.js → agent-api-core-Ddg15j2j.js} +1 -1
- package/dist/chunks/{agent-setup-cli-BqYcwfOs.js → agent-setup-cli-CFielF2o.js} +1 -1
- package/dist/chunks/{config-B6BkTOcE.js → config-DTwMFUjx.js} +14 -20
- package/dist/chunks/config-store-BmdXeUz1.js +2 -0
- package/dist/chunks/{config-store-aZpWeX92.js → config-store-CggAQLUB.js} +17 -11
- package/dist/chunks/{contracts-DzDg-Z9I.js → contracts-D1wLN5iO.js} +3 -41
- package/dist/chunks/{grok-7Z5KcgcY.js → grok-BYKnBgdr.js} +2 -1
- package/dist/chunks/{knowledge-graph-cli-D5Gf87Y7.js → knowledge-graph-cli-BBE3R9DJ.js} +1 -1
- package/dist/chunks/{main-BG6iHwoY.js → main-Dh4udE7P.js} +1223 -1107
- package/dist/chunks/{pair-cli-DQkrt_-s.js → pair-cli-Nnrd0il_.js} +2 -2
- package/dist/chunks/{remote-config-Da4C7tMG.js → remote-config-DKMQEIZh.js} +1 -1
- package/dist/chunks/{sandbox-deps-DuaNFq7n.js → sandbox-deps-C63o3mZs.js} +4 -4
- package/dist/chunks/{session-Dtkp9o3r.js → session-C7rstCmA.js} +15 -1
- package/dist/chunks/ssh-sign-cli-SWtTF00D.js +133 -0
- package/dist/chunks/ssh-signing-core-CRhVVWNW.js +49 -0
- package/dist/client/assets/index-BiTwrj1H.js +254 -0
- package/dist/client/index.html +1 -1
- package/dist/scripts/postinstall-path-check.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/session/sandbox-open-launcher.js +2 -1
- package/package.json +1 -1
- package/dist/chunks/config-store-C8Ry8ZFD.js +0 -2
- package/dist/client/assets/index-Co4S7tnh.js +0 -254
package/README.md
CHANGED
|
@@ -57,7 +57,7 @@ Update a clone with `git pull --ff-only && npm ci && npm run build`, then restar
|
|
|
57
57
|
- **Claude Code CLI** on PATH, or another supported agent below.
|
|
58
58
|
- **git** on PATH, for per-session worktrees.
|
|
59
59
|
- **Linux only:** `build-essential` and `python3` for node-pty.
|
|
60
|
-
- **Linux only:** `bubblewrap` (`bwrap`), `socat` and `ripgrep` (`rg`) for the sandbox
|
|
60
|
+
- **Linux only:** `bubblewrap` (`bwrap`), `socat` and `ripgrep` (`rg`) for the sandbox runtime behind session guardrails and factory checks (`sudo apt install bubblewrap socat ripgrep`). `glimmervoid doctor` reports all three.
|
|
61
61
|
|
|
62
62
|
## Supported agents
|
|
63
63
|
|
package/dist/bin/glimmervoid.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { o as nodePtyRebuildHint, r as firstLine, t as probeNodePty } from "../chunks/node-pty-preflight-C8QIlrtU.js";
|
|
3
3
|
import { i as errorText } from "../chunks/text-DoirglWV.js";
|
|
4
4
|
import { a as packageRoot } from "../chunks/runtime-paths-BPoxENmK.js";
|
|
5
|
-
import { t as AGENT_API_VERBS } from "../chunks/session-
|
|
5
|
+
import { t as AGENT_API_VERBS } from "../chunks/session-C7rstCmA.js";
|
|
6
6
|
import { i as execSync } from "../chunks/child-process-safe-DDELk9XC.js";
|
|
7
7
|
import { t as renderTable } from "../chunks/ascii-figure-core-pDAwtlKO.js";
|
|
8
8
|
import { n as glimmervoidHomeDir, t as decideConfigPath } from "../chunks/config-path-core-DFt-TemS.js";
|
|
9
|
-
import { i as sandboxDoctorRows, r as probeSandboxDependencies } from "../chunks/sandbox-deps-
|
|
9
|
+
import { i as sandboxDoctorRows, r as probeSandboxDependencies } from "../chunks/sandbox-deps-C63o3mZs.js";
|
|
10
10
|
import { r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-CrLW4a6r.js";
|
|
11
11
|
import { i as pnpmGlobalBinDir, n as npmGlobalBinDir, r as onPath, t as formatPathNotice } from "../chunks/path-doctor-C23VAqeu.js";
|
|
12
12
|
import fs from "node:fs";
|
|
@@ -109,6 +109,7 @@ Commands:
|
|
|
109
109
|
board From inside a Glimmervoid session, list the live sessions
|
|
110
110
|
push From inside a Glimmervoid session, land its commits on the integration branch and push it
|
|
111
111
|
edit <path> From inside a Glimmervoid session, surface a text file for the operator to edit in the dashboard
|
|
112
|
+
ssh-sign What git runs inside a Glimmervoid session to sign a commit with the operator's forwarded ssh agent
|
|
112
113
|
kg [command] Experimental typed knowledge and task graph (Settings > Lanes > Knowledge graph)
|
|
113
114
|
|
|
114
115
|
Options:
|
|
@@ -134,23 +135,27 @@ var SUBCOMMAND_RUNNERS = new Map([
|
|
|
134
135
|
return 0;
|
|
135
136
|
}],
|
|
136
137
|
["pair", async (subcommandArgs) => {
|
|
137
|
-
const { runPairCli } = await import("../chunks/pair-cli-
|
|
138
|
+
const { runPairCli } = await import("../chunks/pair-cli-Nnrd0il_.js");
|
|
138
139
|
return runPairCli(subcommandArgs);
|
|
139
140
|
}],
|
|
140
141
|
["agent", async (subcommandArgs) => {
|
|
141
|
-
const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-
|
|
142
|
+
const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-CFielF2o.js");
|
|
142
143
|
return runAgentSetupCli(subcommandArgs);
|
|
143
144
|
}],
|
|
144
145
|
["kg", async (subcommandArgs) => {
|
|
145
|
-
const { runKnowledgeGraphCommand } = await import("../chunks/knowledge-graph-cli-
|
|
146
|
+
const { runKnowledgeGraphCommand } = await import("../chunks/knowledge-graph-cli-BBE3R9DJ.js");
|
|
146
147
|
return runKnowledgeGraphCommand(subcommandArgs);
|
|
147
148
|
}],
|
|
148
149
|
["visions", async (subcommandArgs) => {
|
|
149
150
|
const { runVisionsCli } = await import("../chunks/visions-cli-BhFdym5n.js");
|
|
150
151
|
return runVisionsCli(subcommandArgs);
|
|
151
152
|
}],
|
|
153
|
+
["ssh-sign", async (subcommandArgs) => {
|
|
154
|
+
const { runSshSignCli } = await import("../chunks/ssh-sign-cli-SWtTF00D.js");
|
|
155
|
+
return runSshSignCli(subcommandArgs);
|
|
156
|
+
}],
|
|
152
157
|
...AGENT_API_VERBS.map((verb) => [verb, async (subcommandArgs, subcommandName) => {
|
|
153
|
-
const { runAgentApiCli } = await import("../chunks/agent-api-cli-
|
|
158
|
+
const { runAgentApiCli } = await import("../chunks/agent-api-cli-CRJYxzVU.js");
|
|
154
159
|
return runAgentApiCli([subcommandName, ...subcommandArgs]);
|
|
155
160
|
}])
|
|
156
161
|
]);
|
|
@@ -204,7 +209,7 @@ async function readDeclaredCustomAgents() {
|
|
|
204
209
|
declared: [],
|
|
205
210
|
error: null
|
|
206
211
|
};
|
|
207
|
-
const { loadConfigFile } = await import("../chunks/config-store-
|
|
212
|
+
const { loadConfigFile } = await import("../chunks/config-store-BmdXeUz1.js");
|
|
208
213
|
try {
|
|
209
214
|
const loaded = loadConfigFile(decided.path, { exitOnError: false });
|
|
210
215
|
if (!loaded.config) return {
|
|
@@ -280,7 +285,7 @@ async function runDoctor() {
|
|
|
280
285
|
}
|
|
281
286
|
switchSection("Agents");
|
|
282
287
|
try {
|
|
283
|
-
const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-
|
|
288
|
+
const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-_HwpLy0R.js");
|
|
284
289
|
const declaredCustomAgents = await readDeclaredCustomAgents();
|
|
285
290
|
if (declaredCustomAgents.error) line("config", declaredCustomAgents.error);
|
|
286
291
|
setCustomAgents(declaredCustomAgents.declared);
|
|
@@ -288,7 +293,7 @@ async function runDoctor() {
|
|
|
288
293
|
const { label, path: resolvedPath } = describeAgentResolvability(id);
|
|
289
294
|
line(`${id} (${label})`, resolvedPath ?? "not found on PATH");
|
|
290
295
|
}
|
|
291
|
-
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-
|
|
296
|
+
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-CFielF2o.js");
|
|
292
297
|
const grokSetup = inspectGrokAgentSetup();
|
|
293
298
|
line("grok hook setup", `${grokSetup.classification}: ${grokSetup.filePath}`);
|
|
294
299
|
} catch (err) {
|
|
@@ -305,7 +310,7 @@ async function runDoctor() {
|
|
|
305
310
|
try {
|
|
306
311
|
const { resolvePackageBin } = await import("../chunks/runtime-paths-DU5jBEEO.js");
|
|
307
312
|
const { execFileSync } = await import("../chunks/child-process-safe-B3zcPdFM.js");
|
|
308
|
-
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-
|
|
313
|
+
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-CFielF2o.js");
|
|
309
314
|
const binPath = resolvePackageBin("cc-safety-net", "cc-safety-net");
|
|
310
315
|
line("Sane YOLO", binPath || "not installed");
|
|
311
316
|
if (binPath) line("cc-safety-net version", execFileSync(process.execPath, [binPath, "--version"], {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { o as relayPath } from "./runtime-paths-BPoxENmK.js";
|
|
2
|
-
import {
|
|
2
|
+
import { D as firstDetailLine, O as toolDetailFieldValue, f as PendingPromptQuestion, u as PROMPT_DETAIL_HIDDEN_CHARACTERS } from "./session-C7rstCmA.js";
|
|
3
3
|
import { r as execFileSync } from "./child-process-safe-DDELk9XC.js";
|
|
4
4
|
import { n as resolveAgentCommand, t as buildAgentSpawnCommand } from "./spawn-command-Cc40FiZI.js";
|
|
5
5
|
import { n as isRecord } from "./coerce-NSst8oRP.js";
|
|
6
|
-
import { c as buildAgentEnv, i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, t as grok } from "./grok-
|
|
6
|
+
import { c as buildAgentEnv, i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, t as grok } from "./grok-BYKnBgdr.js";
|
|
7
7
|
import { t as buildHookCommand } from "./hook-command-core-DclEoE9e.js";
|
|
8
|
-
import "./contracts-
|
|
8
|
+
import "./contracts-D1wLN5iO.js";
|
|
9
9
|
import { n as mergeCodexPreToolUse, t as HOOK_TOOLS } from "./hook-tools-UX2fmt81.js";
|
|
10
10
|
import fs from "node:fs";
|
|
11
11
|
//#region session/adapters/claude-code.ts
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as describeAgentResolvability, d as setCustomAgents, l as listAgentIds } from "./adapters-
|
|
1
|
+
import { a as describeAgentResolvability, d as setCustomAgents, l as listAgentIds } from "./adapters-BY8slY95.js";
|
|
2
2
|
export { describeAgentResolvability, listAgentIds, setCustomAgents };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as errorCode } from "./text-DoirglWV.js";
|
|
2
|
-
import { a as AgentDispatchRequest, c as AgentTicketRequest, n as AGENT_URL_ENV } from "./session-
|
|
2
|
+
import { a as AgentDispatchRequest, c as AgentTicketRequest, n as AGENT_URL_ENV } from "./session-C7rstCmA.js";
|
|
3
3
|
import { i as resolveHookTarget } from "./hook-relay-core-DA_bz2KA.js";
|
|
4
4
|
import { n as decideSandboxProxy } from "./sandbox-proxy-core-hnQgKR0T.js";
|
|
5
|
-
import { c as isAgentApiVerb, l as isOrchestratorAgentVerb } from "./agent-api-core-
|
|
5
|
+
import { c as isAgentApiVerb, l as isOrchestratorAgentVerb } from "./agent-api-core-Ddg15j2j.js";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import http from "node:http";
|
|
8
8
|
//#region server/agent-api-cli.ts
|
|
@@ -148,4 +148,4 @@ async function runAgentApiCli(args) {
|
|
|
148
148
|
return reply.hasSuccessStatus && bodySaysOk(reply.text) ? 0 : 1;
|
|
149
149
|
}
|
|
150
150
|
//#endregion
|
|
151
|
-
export { runAgentApiCli };
|
|
151
|
+
export { runAgentApiCli as n, postToAgentIngress as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as AgentDispatchRequest, i as AgentAttentionRequest, l as ORCHESTRATOR_AGENT_VERBS, o as AgentEditRequest, s as AgentSpawnRequest, t as AGENT_API_VERBS } from "./session-
|
|
1
|
+
import { a as AgentDispatchRequest, i as AgentAttentionRequest, l as ORCHESTRATOR_AGENT_VERBS, o as AgentEditRequest, s as AgentSpawnRequest, t as AGENT_API_VERBS } from "./session-C7rstCmA.js";
|
|
2
2
|
import crypto from "node:crypto";
|
|
3
3
|
var MAX_SPAWNS_IN_FLIGHT = 1;
|
|
4
4
|
var SPAWNABLE_DEPTH = 0;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as isMissingFileError, r as errorMessage } from "./text-DoirglWV.js";
|
|
2
|
-
import { a as classifyGrokHooksFile, o as renderGrokHooksFile, t as grok } from "./grok-
|
|
2
|
+
import { a as classifyGrokHooksFile, o as renderGrokHooksFile, t as grok } from "./grok-BYKnBgdr.js";
|
|
3
3
|
import { p as writeTextAtomicSync } from "./json-file-oEH9vt-0.js";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { T as TaskTitle } from "./session-C7rstCmA.js";
|
|
2
2
|
import { n as isRecord } from "./coerce-NSst8oRP.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { z } from "zod";
|
|
@@ -143,10 +143,6 @@ var CoherenceWorkCreated = z.looseObject({
|
|
|
143
143
|
var CoherenceTicketCreated = CoherenceWorkCreated.extend({ parent: z.string().regex(/^wrk-[a-f0-9]{16}$/) });
|
|
144
144
|
//#endregion
|
|
145
145
|
//#region shared/settings-ranges.ts
|
|
146
|
-
var FACTORY_WATCH_WINDOW_RANGE = Object.freeze({
|
|
147
|
-
min: 1,
|
|
148
|
-
max: 1440
|
|
149
|
-
});
|
|
150
146
|
var FACTORY_MAX_LIVE_WORKERS_RANGE = Object.freeze({ min: 1 });
|
|
151
147
|
var POSITIVE_NUMBER_RANGE = Object.freeze({
|
|
152
148
|
min: 0,
|
|
@@ -249,7 +245,6 @@ var WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE = Object.freeze({
|
|
|
249
245
|
Object.freeze({
|
|
250
246
|
NON_NEGATIVE_NUMBER_RANGE,
|
|
251
247
|
FACTORY_MAX_LIVE_WORKERS_RANGE,
|
|
252
|
-
FACTORY_WATCH_WINDOW_RANGE,
|
|
253
248
|
FLYING_ANIMALS_GAP_RANGE,
|
|
254
249
|
FLYING_ANIMALS_DURATION_RANGE,
|
|
255
250
|
FLYING_ANIMALS_SCALE_RANGE,
|
|
@@ -1393,11 +1388,6 @@ var FactorySettings = z.object({
|
|
|
1393
1388
|
checks: z.array(z.string().trim().min(1)).optional(),
|
|
1394
1389
|
protectedPaths: z.array(z.string().trim().min(1)).optional(),
|
|
1395
1390
|
reviewerModel: z.string().trim().min(1).nullable().optional(),
|
|
1396
|
-
watchWindowMinutes: z.number().int().min(FACTORY_WATCH_WINDOW_RANGE.min).max(FACTORY_WATCH_WINDOW_RANGE.max).optional(),
|
|
1397
|
-
watchProjects: z.array(z.object({
|
|
1398
|
-
project: z.string().trim().min(1),
|
|
1399
|
-
posthogProjectId: z.number().int().positive()
|
|
1400
|
-
})).optional(),
|
|
1401
1391
|
dailyBudgetUsd: z.number().finite().nonnegative().nullable().optional(),
|
|
1402
1392
|
verifierModel: z.string().trim().min(1).nullable().optional(),
|
|
1403
1393
|
mirrorHarnessRuns: optionalBoolean("factory.mirrorHarnessRuns")
|
|
@@ -1458,12 +1448,16 @@ var AgentApiSettings = z.object(agentApiShape, { error: "agentApi must be an obj
|
|
|
1458
1448
|
var AgentApiFileSettings = z.object(agentApiShape, { error: "agentApi must be an object" }).passthrough().optional();
|
|
1459
1449
|
var optionalPathList = (field) => z.array(z.string({ error: `${field} must be an array of paths` }).trim().min(1, { error: `${field} must be an array of paths` }), { error: `${field} must be an array of paths` }).optional();
|
|
1460
1450
|
var sandboxShape = {
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
unreadablePaths: optionalPathList("
|
|
1451
|
+
unguardedRepos: optionalPathList("guardrails.unguardedRepos"),
|
|
1452
|
+
blockedPaths: optionalPathList("guardrails.blockedPaths"),
|
|
1453
|
+
unreadablePaths: optionalPathList("guardrails.unreadablePaths")
|
|
1464
1454
|
};
|
|
1465
|
-
var
|
|
1466
|
-
var
|
|
1455
|
+
var isHomeRelativePath = (entry) => entry === "~" || entry.startsWith("~/") || entry.startsWith("~\\");
|
|
1456
|
+
var createSandboxSettings = (isAbsolutePath) => z.object({
|
|
1457
|
+
...sandboxShape,
|
|
1458
|
+
blockedPaths: z.array(z.string({ error: "guardrails.blockedPaths must be an array of paths" }).trim().min(1, { error: "guardrails.blockedPaths must be an array of paths" }).refine((entry) => isHomeRelativePath(entry) || isAbsolutePath(entry), { message: "guardrails.blockedPaths entries must be absolute paths or start with ~/" }), { error: "guardrails.blockedPaths must be an array of paths" }).optional()
|
|
1459
|
+
}, { error: "guardrails must be an object" }).strict().optional();
|
|
1460
|
+
var SandboxFileSettings = z.object(sandboxShape, { error: "guardrails must be an object" }).passthrough().optional();
|
|
1467
1461
|
var telemetryShape = { enabled: optionalBoolean("telemetry.enabled") };
|
|
1468
1462
|
var TelemetrySettings = z.object(telemetryShape, { error: "telemetry must be an object" }).strict().optional();
|
|
1469
1463
|
var TelemetryFileSettings = z.object(telemetryShape, { error: "telemetry must be an object" }).passthrough().optional();
|
|
@@ -1506,7 +1500,7 @@ var createBrowserConfigShape = (isAbsolutePath) => ({
|
|
|
1506
1500
|
telegram: TelegramSettings,
|
|
1507
1501
|
ingest: IngestSettings,
|
|
1508
1502
|
agentApi: AgentApiSettings,
|
|
1509
|
-
|
|
1503
|
+
guardrails: createSandboxSettings(isAbsolutePath),
|
|
1510
1504
|
telemetry: TelemetrySettings,
|
|
1511
1505
|
workflows: WorkflowsSettings.nullable().optional()
|
|
1512
1506
|
});
|
|
@@ -1603,7 +1597,7 @@ var ProjectConfig = z.object({
|
|
|
1603
1597
|
agent: z.string({ error: "projects[].agent must be a string" }).regex(AGENT_ID_RE, { error: `projects[].agent must be ${AGENT_ID_SHAPE_MESSAGE}` }).optional(),
|
|
1604
1598
|
codexBypassHookTrust: z.boolean().optional(),
|
|
1605
1599
|
dangerouslySkipPermissions: z.boolean({ error: "projects[].dangerouslySkipPermissions must be a boolean" }).optional(),
|
|
1606
|
-
|
|
1600
|
+
unguarded: z.boolean({ error: "projects[].unguarded must be a boolean" }).optional()
|
|
1607
1601
|
}).passthrough();
|
|
1608
1602
|
var FILE_CONFIG_SHAPE = {
|
|
1609
1603
|
...BROWSER_CONFIG_SHAPE,
|
|
@@ -1622,7 +1616,7 @@ var FILE_CONFIG_SHAPE = {
|
|
|
1622
1616
|
ingest: optionalLooseObject("ingest"),
|
|
1623
1617
|
workflows: optionalLooseObject("workflows"),
|
|
1624
1618
|
agentApi: AgentApiFileSettings,
|
|
1625
|
-
|
|
1619
|
+
guardrails: SandboxFileSettings,
|
|
1626
1620
|
telemetry: TelemetryFileSettings,
|
|
1627
1621
|
trace: TraceSettings,
|
|
1628
1622
|
planReview: PlanReviewSettings,
|
|
@@ -1679,7 +1673,7 @@ var CONFIG_BLOCK_KEYS = Object.freeze([
|
|
|
1679
1673
|
"telegram",
|
|
1680
1674
|
"ingest",
|
|
1681
1675
|
"agentApi",
|
|
1682
|
-
"
|
|
1676
|
+
"guardrails",
|
|
1683
1677
|
"telemetry",
|
|
1684
1678
|
"workflows",
|
|
1685
1679
|
"coder"
|
|
@@ -3,8 +3,8 @@ import { i as equalsIgnoringCaseOnWindows, t as canonicalizePath } from "./paths
|
|
|
3
3
|
import { n as glimmervoidHomeDir$1, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
|
|
4
4
|
import { a as positiveIntOr, c as textOr, n as isRecord } from "./coerce-NSst8oRP.js";
|
|
5
5
|
import { d as writeJsonAtomicSync, f as writeTextAtomic, p as writeTextAtomicSync } from "./json-file-oEH9vt-0.js";
|
|
6
|
-
import { St as normalizeLegacyConfigNumbers, f as BranchGcFileSettings, i as Config, l as configIssueMessage, m as DEFAULT_FACTORY_PROTECTED_PATHS, n as BUILTIN_AGENT_IDS, p as DEFAULT_FACTORY_CHECKS, s as RUNTIME_CONFIG_SCALAR_KEYS, t as AGENT_ID_SHAPE_MESSAGE } from "./config-
|
|
7
|
-
import { V as FeatureFlagsResponse, W as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-
|
|
6
|
+
import { St as normalizeLegacyConfigNumbers, f as BranchGcFileSettings, i as Config, l as configIssueMessage, m as DEFAULT_FACTORY_PROTECTED_PATHS, n as BUILTIN_AGENT_IDS, p as DEFAULT_FACTORY_CHECKS, s as RUNTIME_CONFIG_SCALAR_KEYS, t as AGENT_ID_SHAPE_MESSAGE } from "./config-DTwMFUjx.js";
|
|
7
|
+
import { V as FeatureFlagsResponse, W as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-D1wLN5iO.js";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import os from "node:os";
|
|
@@ -1108,16 +1108,14 @@ var DEFAULT_CONFIG = {
|
|
|
1108
1108
|
checks: DEFAULT_FACTORY_CHECKS,
|
|
1109
1109
|
protectedPaths: DEFAULT_FACTORY_PROTECTED_PATHS,
|
|
1110
1110
|
reviewerModel: null,
|
|
1111
|
-
watchWindowMinutes: 30,
|
|
1112
|
-
watchProjects: [],
|
|
1113
1111
|
dailyBudgetUsd: null,
|
|
1114
1112
|
verifierModel: null,
|
|
1115
1113
|
mirrorHarnessRuns: false
|
|
1116
1114
|
},
|
|
1117
1115
|
agentApi: { enabled: false },
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1116
|
+
guardrails: {
|
|
1117
|
+
unguardedRepos: [],
|
|
1118
|
+
blockedPaths: [],
|
|
1121
1119
|
unreadablePaths: []
|
|
1122
1120
|
},
|
|
1123
1121
|
telemetry: { enabled: true },
|
|
@@ -1390,6 +1388,12 @@ function pickRedactedBlock(stored, allowedKeys, secretKeys) {
|
|
|
1390
1388
|
}
|
|
1391
1389
|
return redacted;
|
|
1392
1390
|
}
|
|
1391
|
+
function retiredGuardrailKeysWarning(config) {
|
|
1392
|
+
const projects = Array.isArray(config.projects) ? config.projects : [];
|
|
1393
|
+
const retiredKeys = [...Object.hasOwn(config, "sandbox") ? ["sandbox (move it to guardrails, renaming unconfinedRepos to unguardedRepos)"] : [], ...projects.some((project) => isRecord(project) && Object.hasOwn(project, "unconfined")) ? ["projects[].unconfined (rename it to unguarded)"] : []];
|
|
1394
|
+
if (retiredKeys.length === 0) return null;
|
|
1395
|
+
return `[guardrails] config.json still has ${retiredKeys.join(" and ")}. These keys are ignored, so their unreadable paths and opt-outs do not apply until you move them.`;
|
|
1396
|
+
}
|
|
1393
1397
|
function createConfigStore({ settingsDefaults } = {}) {
|
|
1394
1398
|
const configPath = resolveConfigPath();
|
|
1395
1399
|
const effectiveDefaults = {
|
|
@@ -1403,6 +1407,8 @@ function createConfigStore({ settingsDefaults } = {}) {
|
|
|
1403
1407
|
writeBackupContent(`${configPath}.boot.bak`, loadedConfig.loadedContent);
|
|
1404
1408
|
config.repoRoots = config.repoRoots || [];
|
|
1405
1409
|
config.branchGc = resolveBranchGcAndWarn(config.branchGc);
|
|
1410
|
+
const retiredGuardrailKeys = retiredGuardrailKeysWarning(config);
|
|
1411
|
+
if (retiredGuardrailKeys !== null) console.warn(retiredGuardrailKeys);
|
|
1406
1412
|
if (Array.isArray(config.projects) && ensureProjectIds(config.projects)) try {
|
|
1407
1413
|
writeJsonAtomicSync(configPath, withoutEnvSecrets(config, envSecrets), { mode: 384 });
|
|
1408
1414
|
console.log("[config] Auto-assigned IDs to projects missing them");
|
|
@@ -1522,9 +1528,9 @@ function createConfigStore({ settingsDefaults } = {}) {
|
|
|
1522
1528
|
recordSignals: config.recordSignals ?? effectiveDefaults.recordSignals,
|
|
1523
1529
|
trace: { enabled: config.trace?.enabled ?? DEFAULT_CONFIG.trace.enabled },
|
|
1524
1530
|
agentApi: { enabled: config.agentApi?.enabled ?? DEFAULT_CONFIG.agentApi.enabled },
|
|
1525
|
-
|
|
1526
|
-
...DEFAULT_CONFIG.
|
|
1527
|
-
...config.
|
|
1531
|
+
guardrails: {
|
|
1532
|
+
...DEFAULT_CONFIG.guardrails,
|
|
1533
|
+
...config.guardrails
|
|
1528
1534
|
},
|
|
1529
1535
|
telemetry: { enabled: config.telemetry?.enabled ?? DEFAULT_CONFIG.telemetry.enabled },
|
|
1530
1536
|
telemetryForcedOff: isTelemetryForcedOff(process.env),
|
|
@@ -1600,7 +1606,7 @@ function createConfigStore({ settingsDefaults } = {}) {
|
|
|
1600
1606
|
if (newConfig.telegram != null) config.telegram = newConfig.telegram;
|
|
1601
1607
|
if (newConfig.ingest != null) config.ingest = newConfig.ingest;
|
|
1602
1608
|
if (newConfig.agentApi != null) config.agentApi = newConfig.agentApi;
|
|
1603
|
-
if (newConfig.
|
|
1609
|
+
if (newConfig.guardrails != null) config.guardrails = newConfig.guardrails;
|
|
1604
1610
|
if (newConfig.telemetry != null) config.telemetry = newConfig.telemetry;
|
|
1605
1611
|
if (newConfig.workflows == null) delete config.workflows;
|
|
1606
1612
|
if (newConfig.workflows != null) config.workflows = newConfig.workflows;
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { D as MyPrMergeWhenReadyRequest, Dt as CoherenceRisk, Et as CoherenceReadiness, F as CommitSha, O as MyPrMergeWhenReadyResult, P as MyPrsStatus, Q as TeamReviewActionResult, S as MyPrKeepMergeableResult, T as MyPrMergeResult, Tt as CoherenceOrient, Z as TeamReviewActionRequest, _t as ReviewsRefreshResult, gt as ReviewsRefreshRequest, jt as CoherenceWorkState, mt as REPO_SLUG_RE, n as BUILTIN_AGENT_IDS, nt as TeamReviewStatus, vt as reviewsPollingShape, w as MyPrMergeRequest, x as MyPrKeepMergeableRequest } from "./config-
|
|
1
|
+
import { T as TaskTitle, b as SessionSnapshot, d as PendingPromptDetail, g as SESSION_DOC_PATH_MAX_CHARS, p as PendingWakeup, x as SessionState, y as SessionDoc } from "./session-C7rstCmA.js";
|
|
2
|
+
import { D as MyPrMergeWhenReadyRequest, Dt as CoherenceRisk, Et as CoherenceReadiness, F as CommitSha, O as MyPrMergeWhenReadyResult, P as MyPrsStatus, Q as TeamReviewActionResult, S as MyPrKeepMergeableResult, T as MyPrMergeResult, Tt as CoherenceOrient, Z as TeamReviewActionRequest, _t as ReviewsRefreshResult, gt as ReviewsRefreshRequest, jt as CoherenceWorkState, mt as REPO_SLUG_RE, n as BUILTIN_AGENT_IDS, nt as TeamReviewStatus, vt as reviewsPollingShape, w as MyPrMergeRequest, x as MyPrKeepMergeableRequest } from "./config-DTwMFUjx.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region shared/contracts/factory.ts
|
|
5
|
-
var FactoryIssue = z.object({
|
|
6
|
-
issueId: z.string().min(1),
|
|
7
|
-
firstSeenMs: z.number().finite(),
|
|
8
|
-
framePaths: z.array(z.string())
|
|
9
|
-
});
|
|
10
|
-
var FactoryWatchEntry = z.object({
|
|
11
|
-
workId: z.string().min(1),
|
|
12
|
-
intentId: z.string().min(1),
|
|
13
|
-
projectId: z.string().min(1),
|
|
14
|
-
mergedSha: z.string().regex(/^[a-f0-9]{40,64}$/),
|
|
15
|
-
mergedAt: z.iso.datetime(),
|
|
16
|
-
writeScopes: z.array(z.string()),
|
|
17
|
-
breaches: z.array(FactoryIssue).optional()
|
|
18
|
-
});
|
|
19
|
-
var FactoryHogQLResponse = z.looseObject({ results: z.array(z.unknown()) });
|
|
20
|
-
var FactoryIssueQueryRow = z.object({
|
|
21
|
-
issueId: z.string().min(1),
|
|
22
|
-
firstSeen: z.string().min(1),
|
|
23
|
-
framePaths: z.array(z.string())
|
|
24
|
-
});
|
|
25
5
|
var FactoryConsequences = z.looseObject({ records: z.array(z.looseObject({
|
|
26
6
|
from: z.object({
|
|
27
7
|
kind: z.string(),
|
|
@@ -50,7 +30,6 @@ var FactoryProjectState = z.object({
|
|
|
50
30
|
sessionId: z.string()
|
|
51
31
|
})).optional(),
|
|
52
32
|
reviewing: z.array(z.string()).optional(),
|
|
53
|
-
watches: z.array(FactoryWatchEntry).optional(),
|
|
54
33
|
note: z.string().nullable().optional(),
|
|
55
34
|
spentTodayUsd: z.number().finite().nonnegative().optional(),
|
|
56
35
|
dailyBudgetUsd: z.number().finite().nonnegative().nullable().optional(),
|
|
@@ -189,7 +168,6 @@ var FactoryLaneState = z.object({
|
|
|
189
168
|
ledgerPath: z.string().min(1).max(4096).nullable(),
|
|
190
169
|
ledgerBranch: z.string().min(1).max(1024).nullable(),
|
|
191
170
|
paused: z.boolean(),
|
|
192
|
-
watch: z.array(FactoryWatchEntry).optional(),
|
|
193
171
|
trustedVerifications: z.array(z.object({
|
|
194
172
|
id: z.string().min(1),
|
|
195
173
|
sha: z.string().regex(/^[a-f0-9]{40,64}$/)
|
|
@@ -210,7 +188,6 @@ var FactoryLaneState = z.object({
|
|
|
210
188
|
tickets: z.array(FactoryIntentTicket).min(1).max(FACTORY_INTENT_TICKET_LIMIT)
|
|
211
189
|
})).optional(),
|
|
212
190
|
intentBaseShas: z.record(z.string().min(1), z.string().regex(/^[a-f0-9]{40,64}$/)).optional(),
|
|
213
|
-
filedBreaches: z.array(z.string().min(1)).optional(),
|
|
214
191
|
factoryLandedShas: z.array(z.string().regex(/^[a-f0-9]{40,64}$/)).optional(),
|
|
215
192
|
unlandedFactoryRecords: z.array(FactoryUnlandedRecord).optional(),
|
|
216
193
|
ticketBlockCounts: z.record(z.string().min(1), z.number().int().nonnegative()).optional(),
|
|
@@ -236,7 +213,6 @@ var FactoryDecisionKind = z.enum([
|
|
|
236
213
|
"admission",
|
|
237
214
|
"closeout",
|
|
238
215
|
"merge",
|
|
239
|
-
"watch",
|
|
240
216
|
"verification",
|
|
241
217
|
"exception",
|
|
242
218
|
"landing",
|
|
@@ -251,9 +227,6 @@ var FactoryDecisionOutcome = z.enum([
|
|
|
251
227
|
"block",
|
|
252
228
|
"merge",
|
|
253
229
|
"merged",
|
|
254
|
-
"breach",
|
|
255
|
-
"verified",
|
|
256
|
-
"verified-unwatched",
|
|
257
230
|
"failed",
|
|
258
231
|
"stale",
|
|
259
232
|
"passed",
|
|
@@ -269,7 +242,6 @@ var FactoryDecisionFailureClass = z.enum([
|
|
|
269
242
|
"check",
|
|
270
243
|
"review",
|
|
271
244
|
"closeout",
|
|
272
|
-
"breach",
|
|
273
245
|
"verification",
|
|
274
246
|
"stale",
|
|
275
247
|
"exception",
|
|
@@ -331,15 +303,6 @@ var FactoryDecisionLogLine = z.discriminatedUnion("kind", [
|
|
|
331
303
|
outcome: z.literal("merged"),
|
|
332
304
|
mergedSha: z.string().regex(/^[a-f0-9]{40,64}$/)
|
|
333
305
|
}),
|
|
334
|
-
z.strictObject({
|
|
335
|
-
...decisionFields,
|
|
336
|
-
kind: z.literal("watch"),
|
|
337
|
-
outcome: z.enum([
|
|
338
|
-
"breach",
|
|
339
|
-
"verified",
|
|
340
|
-
"verified-unwatched"
|
|
341
|
-
])
|
|
342
|
-
}),
|
|
343
306
|
z.strictObject({
|
|
344
307
|
...decisionFields,
|
|
345
308
|
kind: z.literal("verification"),
|
|
@@ -369,7 +332,6 @@ var FactoryDecisionLogLine = z.discriminatedUnion("kind", [
|
|
|
369
332
|
"refused",
|
|
370
333
|
"retry",
|
|
371
334
|
"block",
|
|
372
|
-
"breach",
|
|
373
335
|
"failed",
|
|
374
336
|
"stale",
|
|
375
337
|
"raised",
|
|
@@ -2168,4 +2130,4 @@ z.object({
|
|
|
2168
2130
|
projects: z.array(z.string()).optional()
|
|
2169
2131
|
}).passthrough();
|
|
2170
2132
|
//#endregion
|
|
2171
|
-
export { FactoryHarnessVerdict as $, BenchmarkActionRequest as A, PrCheckoutCaseInput as B, IssueKey as C, IssuesStatus as D, IssuesState as E, BenchmarkStatus as F, TelemetryState as G, PendingCrashReport as H, BenchmarkSuite as I, FACTORY_ERROR_MAX_CHARS as J, FACTORY_DECISION_OUTPUT_MAX_BYTES as K, CommitComparison as L, BenchmarkId as M, BenchmarkJudgement as N, ChangeMap as O, BenchmarkRun as P, FactoryHarnessStateLine as Q, MergedPrListing as R, GithubIssueResponse as S, IssuesSearchResponse as T, TELEMETRY_EVENT_SCHEMAS as U, FeatureFlagsResponse as V, TELEMETRY_KILL_SWITCH_FLAG as W, FactoryConsequences as X, FACTORY_PROTECTED_PATH_FLOOR as Y, FactoryControlRequest as Z, PlanDecision as _, ClientMessage as a,
|
|
2133
|
+
export { FactoryHarnessVerdict as $, BenchmarkActionRequest as A, PrCheckoutCaseInput as B, IssueKey as C, IssuesStatus as D, IssuesState as E, BenchmarkStatus as F, TelemetryState as G, PendingCrashReport as H, BenchmarkSuite as I, FACTORY_ERROR_MAX_CHARS as J, FACTORY_DECISION_OUTPUT_MAX_BYTES as K, CommitComparison as L, BenchmarkId as M, BenchmarkJudgement as N, ChangeMap as O, BenchmarkRun as P, FactoryHarnessStateLine as Q, MergedPrListing as R, GithubIssueResponse as S, IssuesSearchResponse as T, TELEMETRY_EVENT_SCHEMAS as U, FeatureFlagsResponse as V, TELEMETRY_KILL_SWITCH_FLAG as W, FactoryConsequences as X, FACTORY_PROTECTED_PATH_FLOOR as Y, FactoryControlRequest as Z, PlanDecision as _, ClientMessage as a, FactoryWorkerEvent as at, planTitle as b, UpdateJournal as c, TraceRecord as d, FactoryLaneState as et, PLAN_BODY_CAP_BYTES as f, PLAN_TOOL_NAME as g, PLAN_RESULT_HOOK_EVENT as h, CONTROL_FRAME_MAX_BYTES as i, FactoryReviewerOutput as it, BenchmarkCase as j, changeMapFactId as k, MAX_RAW_LINE_CHARS as l, PLAN_HOOK_OUTPUT_MAX_CHARS as m, HookEnvelope as n, FactoryQueueIntentRequest as nt, DIFF_ANNOTATION_NOTE_MAX_CHARS as o, isSingleFactoryPathSegment as ot, PLAN_HOOK_EVENT as p, FactoryDecisionLogLine as q, parseDataClientMessage as r, FactoryReviewVerdict as rt, InstallFlavor as s, HTTP_URL_RE as t, FactoryProjectState as tt, TraceCheckpoint as u, PlanRevision as v, IssueUpdate as w, GithubIssuePullRequestsRepository as x, parseExitPlanModeHookPayload as y, MinedPrReviewData as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as errorMessage } from "./text-DoirglWV.js";
|
|
2
2
|
import { o as relayPath } from "./runtime-paths-BPoxENmK.js";
|
|
3
|
-
import { n as AGENT_URL_ENV } from "./session-
|
|
3
|
+
import { _ as SIGN_URL_ENV, n as AGENT_URL_ENV } from "./session-C7rstCmA.js";
|
|
4
4
|
import { t as HOOK_URL_ENV } from "./hook-relay-core-DA_bz2KA.js";
|
|
5
5
|
import { n as isRecord } from "./coerce-NSst8oRP.js";
|
|
6
6
|
import { a as SANE_YOLO_PATH_ENV, n as RTK_PATH_ENV, o as saneYoloEnv } from "./rtk-hook-core-BmEz2aq9.js";
|
|
@@ -19,6 +19,7 @@ var GLIMMERVOID_SCRUB_KEYS = [
|
|
|
19
19
|
"GLIMMERVOID_CONFIG",
|
|
20
20
|
HOOK_URL_ENV,
|
|
21
21
|
AGENT_URL_ENV,
|
|
22
|
+
SIGN_URL_ENV,
|
|
22
23
|
RTK_PATH_ENV,
|
|
23
24
|
SANE_YOLO_PATH_ENV,
|
|
24
25
|
...GLIMMERVOID_SECRET_KEYS
|
|
@@ -2,7 +2,7 @@ import { r as errorMessage } from "./text-DoirglWV.js";
|
|
|
2
2
|
import { s as resolvePackageBin } from "./runtime-paths-BPoxENmK.js";
|
|
3
3
|
import { r as execFileSync } from "./child-process-safe-DDELk9XC.js";
|
|
4
4
|
import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
|
|
5
|
-
import { r as BrowserConfig } from "./config-
|
|
5
|
+
import { r as BrowserConfig } from "./config-DTwMFUjx.js";
|
|
6
6
|
import fs, { closeSync, constants, existsSync, fstatSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync } from "node:fs";
|
|
7
7
|
import path, { dirname, join, posix, resolve, win32 } from "node:path";
|
|
8
8
|
import { parseArgs } from "node:util";
|