glimmervoid 0.43.5 → 0.44.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 +13 -13
- package/dist/chunks/{adapters-43NBaf3J.js → adapters-B2IgKmuZ.js} +1 -1
- package/dist/chunks/{adapters-DCXbfZ2V.js → adapters-BsoXEvlZ.js} +5 -5
- package/dist/chunks/{agent-api-cli-CgQTmmLd.js → agent-api-cli-B-QxkZAQ.js} +1 -1
- package/dist/chunks/{agent-api-cli-6W5lx3AO.js → agent-api-cli-DIl92JjQ.js} +3 -3
- package/dist/chunks/{agent-api-core-DniJGdf6.js → agent-api-core-BCFplxXu.js} +6 -5
- package/dist/chunks/{agent-setup-cli-B5vnfQXA.js → agent-setup-cli-7hG401Io.js} +1 -1
- package/dist/chunks/{config-bGil1wqg.js → config-Dh4e-Mkv.js} +34 -5
- package/dist/chunks/{config-store-GsSGMu08.js → config-store-CEsetno2.js} +52 -8
- package/dist/chunks/config-store-DVwdcnub.js +1 -0
- package/dist/chunks/{contracts-s0s0gCZJ.js → contracts-dj-GFptp.js} +63 -17
- package/dist/chunks/{git-version-BwJ-H5Gl.js → git-version-C3lznLS_.js} +1 -1
- package/dist/chunks/{grok-BYvOJJMV.js → grok-Di4aQGre.js} +1 -1
- package/dist/chunks/{main-uV_6B2Am.js → main-CA3ONCUS.js} +4677 -4221
- package/dist/chunks/{pair-cli-BFg0PF9X.js → pair-cli-CWHMbInF.js} +2 -2
- package/dist/chunks/{remote-config-yLvSEm11.js → remote-config-CtcoO10O.js} +1 -1
- package/dist/chunks/{session-GoNLV4AT.js → session-CUc6d7aS.js} +11 -2
- package/dist/chunks/{session-routes-BBWZ5xmv.js → session-routes--hrsvv7a.js} +1 -1
- package/dist/chunks/{settings-cli-Do404URB.js → settings-cli-DGOkkmW-.js} +5 -5
- package/dist/chunks/{settings-readout-core-x331h4CR.js → settings-readout-core-BVb6tTLq.js} +2 -2
- package/dist/chunks/{ssh-sign-cli-BG0t2-3v.js → ssh-sign-cli-BdvvBKkj.js} +2 -2
- package/dist/client/assets/index-BR-wN5UF.js +177 -0
- package/dist/client/assets/index-QxVyoSUP.css +2 -0
- package/dist/client/index.html +6 -5
- package/dist/server/index.js +1 -1
- package/package.json +6 -5
- package/dist/chunks/config-store-C2CaymPs.js +0 -1
- package/dist/client/assets/index-BhMm8IuJ.css +0 -2
- package/dist/client/assets/index-DRT1ZGFh.js +0 -177
package/dist/bin/glimmervoid.js
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
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 { o as packageRoot } from "../chunks/runtime-paths-ghcH9CeW.js";
|
|
5
|
-
import { t as AGENT_API_VERBS } from "../chunks/session-
|
|
5
|
+
import { t as AGENT_API_VERBS } from "../chunks/session-CUc6d7aS.js";
|
|
6
6
|
import { i as execSync } from "../chunks/child-process-safe-D4hyVIXj.js";
|
|
7
|
-
import { r as agentCommandHelpLines } from "../chunks/agent-api-core-
|
|
7
|
+
import { r as agentCommandHelpLines } from "../chunks/agent-api-core-BCFplxXu.js";
|
|
8
8
|
import { t as renderTable } from "../chunks/ascii-figure-core-pDAwtlKO.js";
|
|
9
9
|
import { n as glimmervoidHomeDir, t as decideConfigPath } from "../chunks/config-path-core-DFt-TemS.js";
|
|
10
|
-
import { i as parseCommandLine, r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-
|
|
10
|
+
import { i as parseCommandLine, r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-C3lznLS_.js";
|
|
11
11
|
import { i as guardrailsDoctorRows, r as probeGuardrailsDependencies } from "../chunks/guardrails-deps-BjPzk1rE.js";
|
|
12
12
|
import { i as pnpmGlobalBinDir, n as npmGlobalBinDir, r as onPath, t as formatPathNotice } from "../chunks/path-doctor-C23VAqeu.js";
|
|
13
13
|
import fs from "node:fs";
|
|
@@ -65,15 +65,15 @@ var OWN_SUBCOMMAND_RUNNERS = [
|
|
|
65
65
|
return 0;
|
|
66
66
|
}],
|
|
67
67
|
["pair", async (subcommandArgs) => {
|
|
68
|
-
const { runPairCli } = await import("../chunks/pair-cli-
|
|
68
|
+
const { runPairCli } = await import("../chunks/pair-cli-CWHMbInF.js");
|
|
69
69
|
return runPairCli(subcommandArgs);
|
|
70
70
|
}],
|
|
71
71
|
["agent", async (subcommandArgs) => {
|
|
72
|
-
const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-
|
|
72
|
+
const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-7hG401Io.js");
|
|
73
73
|
return runAgentSetupCli(subcommandArgs);
|
|
74
74
|
}],
|
|
75
75
|
["settings", async (subcommandArgs) => {
|
|
76
|
-
const { runSettingsCli } = await import("../chunks/settings-cli-
|
|
76
|
+
const { runSettingsCli } = await import("../chunks/settings-cli-DGOkkmW-.js");
|
|
77
77
|
return runSettingsCli(subcommandArgs);
|
|
78
78
|
}],
|
|
79
79
|
["visions", async (subcommandArgs) => {
|
|
@@ -81,13 +81,13 @@ var OWN_SUBCOMMAND_RUNNERS = [
|
|
|
81
81
|
return runVisionsCli(subcommandArgs);
|
|
82
82
|
}],
|
|
83
83
|
["ssh-sign", async (subcommandArgs) => {
|
|
84
|
-
const { runSshSignCli } = await import("../chunks/ssh-sign-cli-
|
|
84
|
+
const { runSshSignCli } = await import("../chunks/ssh-sign-cli-BdvvBKkj.js");
|
|
85
85
|
return runSshSignCli(subcommandArgs);
|
|
86
86
|
}]
|
|
87
87
|
];
|
|
88
88
|
var ownSubcommandNames = new Set(OWN_SUBCOMMAND_RUNNERS.map(([name]) => name));
|
|
89
89
|
var SUBCOMMAND_RUNNERS = new Map([...OWN_SUBCOMMAND_RUNNERS, ...AGENT_API_VERBS.filter((verb) => !ownSubcommandNames.has(verb)).map((verb) => [verb, async (subcommandArgs, subcommandName) => {
|
|
90
|
-
const { runAgentApiCli } = await import("../chunks/agent-api-cli-
|
|
90
|
+
const { runAgentApiCli } = await import("../chunks/agent-api-cli-B-QxkZAQ.js");
|
|
91
91
|
return runAgentApiCli([subcommandName, ...subcommandArgs]);
|
|
92
92
|
}])]);
|
|
93
93
|
var AGENT_INSTALL_COMMAND_BY_ID = {
|
|
@@ -101,7 +101,7 @@ function missingAgentText(agentId) {
|
|
|
101
101
|
}
|
|
102
102
|
async function printSessionLimits() {
|
|
103
103
|
if (!process.env["GLIMMERVOID_AGENT_URL"]) return;
|
|
104
|
-
const { sessionLimitsHelpLines } = await import("../chunks/agent-api-cli-
|
|
104
|
+
const { sessionLimitsHelpLines } = await import("../chunks/agent-api-cli-B-QxkZAQ.js");
|
|
105
105
|
const limitsLines = await sessionLimitsHelpLines();
|
|
106
106
|
console.log(`\n${limitsLines.join("\n")}`);
|
|
107
107
|
}
|
|
@@ -158,7 +158,7 @@ async function readDeclaredCustomAgents() {
|
|
|
158
158
|
declared: [],
|
|
159
159
|
error: null
|
|
160
160
|
};
|
|
161
|
-
const { loadConfigFile } = await import("../chunks/config-store-
|
|
161
|
+
const { loadConfigFile } = await import("../chunks/config-store-DVwdcnub.js");
|
|
162
162
|
try {
|
|
163
163
|
const loaded = loadConfigFile(decided.path, { exitOnError: false });
|
|
164
164
|
if (!loaded.config) return {
|
|
@@ -234,7 +234,7 @@ async function runDoctor() {
|
|
|
234
234
|
}
|
|
235
235
|
switchSection("Agents");
|
|
236
236
|
try {
|
|
237
|
-
const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-
|
|
237
|
+
const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-B2IgKmuZ.js");
|
|
238
238
|
const declaredCustomAgents = await readDeclaredCustomAgents();
|
|
239
239
|
if (declaredCustomAgents.error) line("config", declaredCustomAgents.error);
|
|
240
240
|
setCustomAgents(declaredCustomAgents.declared);
|
|
@@ -242,7 +242,7 @@ async function runDoctor() {
|
|
|
242
242
|
const { label, path: resolvedPath } = describeAgentResolvability(id);
|
|
243
243
|
line(`${id} (${label})`, resolvedPath ?? missingAgentText(id));
|
|
244
244
|
}
|
|
245
|
-
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-
|
|
245
|
+
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-7hG401Io.js");
|
|
246
246
|
const grokSetup = inspectGrokAgentSetup();
|
|
247
247
|
line("grok hook setup", `${grokSetup.classification}: ${grokSetup.filePath}`);
|
|
248
248
|
} catch (err) {
|
|
@@ -259,7 +259,7 @@ async function runDoctor() {
|
|
|
259
259
|
try {
|
|
260
260
|
const { resolvePackageBin } = await import("../chunks/runtime-paths-Cc0_ZR6V.js");
|
|
261
261
|
const { execFileSync } = await import("../chunks/child-process-safe-CjVtRjDD.js");
|
|
262
|
-
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-
|
|
262
|
+
const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-7hG401Io.js");
|
|
263
263
|
const binPath = resolvePackageBin("cc-safety-net", "cc-safety-net");
|
|
264
264
|
line("Sane YOLO", binPath || "not installed");
|
|
265
265
|
if (binPath) line("cc-safety-net version", execFileSync(process.execPath, [binPath, "--version"], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-
|
|
1
|
+
export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-BsoXEvlZ.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { s as relayPath } from "./runtime-paths-ghcH9CeW.js";
|
|
2
|
-
import { Vt as shortSha$1, zt as FULL_SHA_RE } from "./session-
|
|
2
|
+
import { Vt as shortSha$1, zt as FULL_SHA_RE } from "./session-CUc6d7aS.js";
|
|
3
3
|
import { n as execFileAsync, r as execFileSync } from "./child-process-safe-D4hyVIXj.js";
|
|
4
|
-
import { y as InstallFlavor } from "./config-
|
|
5
|
-
import { o as supervisionLine } from "./session-routes
|
|
4
|
+
import { y as InstallFlavor } from "./config-Dh4e-Mkv.js";
|
|
5
|
+
import { o as supervisionLine } from "./session-routes--hrsvv7a.js";
|
|
6
6
|
import { c as textOr, s as rawTextOr } from "./coerce-NSst8oRP.js";
|
|
7
7
|
import { n as resolveAgentCommand, t as buildAgentSpawnCommand } from "./spawn-command-Cc40FiZI.js";
|
|
8
8
|
import { r as nextBackoffMs } from "./backoff-DjVpfHk7.js";
|
|
9
|
-
import { i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, s as buildAgentEnv, t as grok } from "./grok-
|
|
9
|
+
import { i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, s as buildAgentEnv, t as grok } from "./grok-Di4aQGre.js";
|
|
10
10
|
import { t as buildHookCommand } from "./hook-command-core-qTNK-xMF.js";
|
|
11
|
-
import "./contracts-
|
|
11
|
+
import "./contracts-dj-GFptp.js";
|
|
12
12
|
import { n as mergeCodexPreToolUse, t as HOOK_TOOLS } from "./hook-tools-Dl7-r2Eb.js";
|
|
13
13
|
import fs from "node:fs";
|
|
14
14
|
import path from "node:path";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-
|
|
1
|
+
export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-DIl92JjQ.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as errorCode } from "./text-DoirglWV.js";
|
|
2
|
-
import { c as AgentLimitsReply, n as AGENT_URL_ENV } from "./session-
|
|
3
|
-
import { i as formatSessionLimits } from "./session-routes
|
|
4
|
-
import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-
|
|
2
|
+
import { c as AgentLimitsReply, n as AGENT_URL_ENV } from "./session-CUc6d7aS.js";
|
|
3
|
+
import { i as formatSessionLimits } from "./session-routes--hrsvv7a.js";
|
|
4
|
+
import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-BCFplxXu.js";
|
|
5
5
|
import { i as resolveHookTarget } from "./hook-relay-core-DA_bz2KA.js";
|
|
6
6
|
import { n as decideGuardrailsProxy } from "./guardrails-proxy-core-BI3rdY-m.js";
|
|
7
7
|
import { t as parseJsonOrNull } from "./json-core-dfa_7Fak.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { R as TASK_TITLE_CONTROL_CHARACTERS, T as RefinedTaskTitle, a as AgentAttentionRequest, d as AgentSendRequest, i as AgentAnswerRequest, l as AgentPullRequestRequest, m as AgentSpawnRequest, o as AgentCloseRequest, p as AgentSettingsRequest, s as AgentEditRequest, t as AGENT_API_VERBS, u as AgentReadRequest } from "./session-
|
|
2
|
-
import {
|
|
3
|
-
import { n as NO_OWN_WORKTREE_REASON, t as COMMAND_ROUTES } from "./session-routes
|
|
1
|
+
import { R as TASK_TITLE_CONTROL_CHARACTERS, T as RefinedTaskTitle, a as AgentAttentionRequest, d as AgentSendRequest, i as AgentAnswerRequest, l as AgentPullRequestRequest, m as AgentSpawnRequest, o as AgentCloseRequest, p as AgentSettingsRequest, s as AgentEditRequest, t as AGENT_API_VERBS, u as AgentReadRequest } from "./session-CUc6d7aS.js";
|
|
2
|
+
import { c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle, w as pullRequestKeyFromReference } from "./config-Dh4e-Mkv.js";
|
|
3
|
+
import { n as NO_OWN_WORKTREE_REASON, t as COMMAND_ROUTES } from "./session-routes--hrsvv7a.js";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import crypto from "node:crypto";
|
|
6
6
|
//#region shared/session-naming.ts
|
|
@@ -441,6 +441,7 @@ function chooseRefinedSessionName({ currentName, projectFolderName, proposedName
|
|
|
441
441
|
if (!isAutoNameOf(currentName, projectFolderName)) return null;
|
|
442
442
|
return nextSuggestedName(proposedName, takenNames.filter((name) => name !== currentName));
|
|
443
443
|
}
|
|
444
|
+
var MAX_LIFETIME_SPAWNS = 10;
|
|
444
445
|
var MAX_SPAWNS_IN_FLIGHT = 1;
|
|
445
446
|
var REFUSAL_REASON = "unknown session";
|
|
446
447
|
var INVALID_BODY_STATUS = 400;
|
|
@@ -490,10 +491,10 @@ function decideSpawnAllowance({ liveChildren, lifetimeSpawns, inFlight }) {
|
|
|
490
491
|
status: 429,
|
|
491
492
|
reason: `at most 3 spawned sessions may be live at once`
|
|
492
493
|
};
|
|
493
|
-
if (lifetimeSpawns >=
|
|
494
|
+
if (lifetimeSpawns >= MAX_LIFETIME_SPAWNS) return {
|
|
494
495
|
ok: false,
|
|
495
496
|
status: 429,
|
|
496
|
-
reason: `this session has used its
|
|
497
|
+
reason: `this session has used its ${MAX_LIFETIME_SPAWNS} spawns`
|
|
497
498
|
};
|
|
498
499
|
return { ok: true };
|
|
499
500
|
}
|
|
@@ -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-Di4aQGre.js";
|
|
3
3
|
import { p as writeTextAtomicSync } from "./json-file-DFCTvPjj.js";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as MyPrMergeWhenReadyRequest, B as UnseenOutcome, Dt as TeamReviewActionResult, Et as TeamReviewActionRequest, F as SessionState, Gt as repoParts, H as MyPr, Ht as GH_SEGMENT, Jt as GithubPrsFreshness, K as MyPrKeepMergeableRequest, Kt as GithubPollingRefreshRequest, Lt as hasRequiredActionHead, N as SessionDoc, O as SESSION_DOC_PATH_MAX_CHARS, P as SessionSnapshot, S as ConversationApprovalDecision, V as LinkedPr, Wt as REPO_SLUG_RE, X as MyPrMergeRequest, Yt as githubPollingShape, Z as MyPrMergeResult, b as ConversationAnswers, ct as pullRequestKeyFormat, et as MyPrMergeWhenReadyResult, jt as TeamReviewStatus, lt as repositoryName, mt as GithubReviewDecision, ot as MyPrsStatus, q as MyPrKeepMergeableResult, qt as GithubPollingRefreshResult, st as SessionPrLinks, tt as MyPrSearchNode, ut as CommitSha, w as PendingWakeup, x as ConversationApproval, y as CoherenceHooksState, yt as ReviewChecksState, z as TaskTitle } from "./session-
|
|
1
|
+
import { $ as MyPrMergeWhenReadyRequest, B as UnseenOutcome, Dt as TeamReviewActionResult, Et as TeamReviewActionRequest, F as SessionState, Gt as repoParts, H as MyPr, Ht as GH_SEGMENT, Jt as GithubPrsFreshness, K as MyPrKeepMergeableRequest, Kt as GithubPollingRefreshRequest, Lt as hasRequiredActionHead, N as SessionDoc, O as SESSION_DOC_PATH_MAX_CHARS, P as SessionSnapshot, S as ConversationApprovalDecision, V as LinkedPr, Wt as REPO_SLUG_RE, X as MyPrMergeRequest, Yt as githubPollingShape, Z as MyPrMergeResult, b as ConversationAnswers, ct as pullRequestKeyFormat, et as MyPrMergeWhenReadyResult, jt as TeamReviewStatus, lt as repositoryName, mt as GithubReviewDecision, ot as MyPrsStatus, q as MyPrKeepMergeableResult, qt as GithubPollingRefreshResult, st as SessionPrLinks, tt as MyPrSearchNode, ut as CommitSha, w as PendingWakeup, x as ConversationApproval, y as CoherenceHooksState, yt as ReviewChecksState, z as TaskTitle } from "./session-CUc6d7aS.js";
|
|
2
2
|
import { n as isRecord } from "./coerce-NSst8oRP.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { z } from "zod";
|
|
@@ -1405,7 +1405,11 @@ var ClientErrorReport = z.object({
|
|
|
1405
1405
|
name: z.string().max(128),
|
|
1406
1406
|
stack: z.string().max(8192)
|
|
1407
1407
|
}).strict();
|
|
1408
|
-
var DASHBOARD_TELEMETRY_EVENTS = Object.freeze([
|
|
1408
|
+
var DASHBOARD_TELEMETRY_EVENTS = Object.freeze([
|
|
1409
|
+
"view_shown",
|
|
1410
|
+
"operator_action",
|
|
1411
|
+
"onboarding_step"
|
|
1412
|
+
]);
|
|
1409
1413
|
var DASHBOARD_VIEWS = Object.freeze([
|
|
1410
1414
|
"focus",
|
|
1411
1415
|
"zen",
|
|
@@ -1445,6 +1449,12 @@ var OPERATOR_ACTIONS_BY_SURFACE = Object.freeze({
|
|
|
1445
1449
|
"suppress",
|
|
1446
1450
|
"archive-investigation"
|
|
1447
1451
|
],
|
|
1452
|
+
onboarding: [
|
|
1453
|
+
"rescan",
|
|
1454
|
+
"add-root-typed",
|
|
1455
|
+
"add-root-suggested",
|
|
1456
|
+
"add-session"
|
|
1457
|
+
],
|
|
1448
1458
|
reviews: [
|
|
1449
1459
|
"open-session",
|
|
1450
1460
|
"approve",
|
|
@@ -1459,17 +1469,22 @@ var OPERATOR_ACTIONS_BY_SURFACE = Object.freeze({
|
|
|
1459
1469
|
"refresh"
|
|
1460
1470
|
]
|
|
1461
1471
|
});
|
|
1472
|
+
var ONBOARDING_STEPS = Object.freeze([
|
|
1473
|
+
"agent",
|
|
1474
|
+
"repo_roots",
|
|
1475
|
+
"first_session"
|
|
1476
|
+
]);
|
|
1477
|
+
var ONBOARDING_STEP_STATES = Object.freeze(["current", "done"]);
|
|
1462
1478
|
var OPERATOR_SURFACES = Object.freeze([
|
|
1463
1479
|
"usage",
|
|
1464
1480
|
"issues",
|
|
1465
1481
|
"radar",
|
|
1482
|
+
"onboarding",
|
|
1466
1483
|
"reviews"
|
|
1467
1484
|
]);
|
|
1468
1485
|
var idOnlyClientTypes = [
|
|
1469
1486
|
"kill",
|
|
1470
1487
|
"start-session",
|
|
1471
|
-
"restart",
|
|
1472
|
-
"force-restart",
|
|
1473
1488
|
"merge-session",
|
|
1474
1489
|
"finish-session",
|
|
1475
1490
|
"merge-continue-session",
|
|
@@ -1488,7 +1503,15 @@ function idOnlyClientVariant(type) {
|
|
|
1488
1503
|
});
|
|
1489
1504
|
}
|
|
1490
1505
|
var idOnlyClientVariants = idOnlyClientTypes.map(idOnlyClientVariant);
|
|
1506
|
+
var restartClientShape = {
|
|
1507
|
+
id: sessionId,
|
|
1508
|
+
force: z.unknown().optional(),
|
|
1509
|
+
fresh: z.unknown().optional(),
|
|
1510
|
+
conversationId: z.string().optional()
|
|
1511
|
+
};
|
|
1491
1512
|
var clientVariants = [
|
|
1513
|
+
loose("restart", restartClientShape),
|
|
1514
|
+
loose("force-restart", restartClientShape),
|
|
1492
1515
|
loose("add-session", {
|
|
1493
1516
|
name: z.string(),
|
|
1494
1517
|
path: z.string(),
|
|
@@ -1649,6 +1672,7 @@ var clientVariants = [
|
|
|
1649
1672
|
loose("restart-server"),
|
|
1650
1673
|
loose("focus-change", { focused: z.boolean() }),
|
|
1651
1674
|
loose("request-health-snapshot"),
|
|
1675
|
+
loose("request-telemetry-deletion", { requestId }),
|
|
1652
1676
|
loose("update-check"),
|
|
1653
1677
|
loose("update-apply"),
|
|
1654
1678
|
loose("session-trace", {
|
|
@@ -1784,6 +1808,7 @@ Object.freeze([
|
|
|
1784
1808
|
"open-issue-session-result",
|
|
1785
1809
|
"open-team-review-session-result",
|
|
1786
1810
|
"radar-issue-action-result",
|
|
1811
|
+
"telemetry-deletion-result",
|
|
1787
1812
|
"team-review-action-result",
|
|
1788
1813
|
"benchmark-action-result",
|
|
1789
1814
|
"my-pr-merge-result",
|
|
@@ -2244,6 +2269,10 @@ var serverVariants = [
|
|
|
2244
2269
|
...TeamReviewActionResult.shape,
|
|
2245
2270
|
requestId
|
|
2246
2271
|
}),
|
|
2272
|
+
loose("telemetry-deletion-result", {
|
|
2273
|
+
requestId,
|
|
2274
|
+
ok: z.boolean()
|
|
2275
|
+
}),
|
|
2247
2276
|
loose("benchmark-action-result", {
|
|
2248
2277
|
...BenchmarkActionResult.shape,
|
|
2249
2278
|
requestId
|
|
@@ -2914,4 +2943,4 @@ function configIssueMessage(error) {
|
|
|
2914
2943
|
return error.issues[0]?.message || "settings are invalid";
|
|
2915
2944
|
}
|
|
2916
2945
|
//#endregion
|
|
2917
|
-
export {
|
|
2946
|
+
export { POSITIVE_NUMBER_RANGE as $, BenchmarkStatus as A, GithubIssueResponse as At, comparablePrKey as B, OPERATOR_SURFACES as C, PLAN_RESULT_HOOK_EVENT as Ct, BenchmarkId as D, parseExitPlanModeHookPayload as Dt, BenchmarkCase as E, PlanRevision as Et, PrCheckoutCaseInput as F, IssuesStatus as Ft, FLYING_ANIMALS_DEFAULTS as G, WorkflowLabelName as H, GithubPrDetailNode as I, issuePullRequestStateFromGithub as It, FLYING_ANIMALS_SCALE_RANGE as J, FLYING_ANIMALS_DURATION_RANGE as K, GithubPrKey as L, CommitComparison as M, IssueUpdate as Mt, MergedPrListing as N, IssuesSearchResponse as Nt, BenchmarkJudgement as O, planTitle as Ot, MinedPrReviewData as P, IssuesState as Pt, PORT_RANGE as Q, GithubPrLightSearchNode as R, OPERATOR_ACTIONS_BY_SURFACE as S, PLAN_HOOK_OUTPUT_MAX_CHARS as St, BenchmarkActionRequest as T, PlanDecision as Tt, WorkflowsSettings as U, WorkflowCommentBody as V, WorkflowsState as W, MEMORY_RESERVE_MB_RANGE as X, KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE as Y, NON_NEGATIVE_NUMBER_RANGE as Z, ClientMessage as _, CoherenceJournalOutput as _t, ConfigUpdate as a, TASK_TITLE_TIMEOUT_RANGE as at, ONBOARDING_STEPS as b, PLAN_BODY_CAP_BYTES as bt, TASK_TITLE_SOURCE_PRIORITY as c, USAGE_RETAIN_DAYS_RANGE as ct, POST_TURN_CHECK_MODES as d, WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE as dt, POSTHOG_FIX_TIMEOUT_RANGE as et, UPDATE_CHANNELS as f, UpdateJournal as ft, CONTROL_FRAME_MAX_BYTES as g, TraceRecord as gt, normalizeLegacyConfigNumbers as h, TraceCheckpoint as ht, Config as i, REPLAY_BUFFER_KB_RANGE as it, BenchmarkSuite as j, IssueKey as jt, BenchmarkRun as k, GithubIssuePullRequestsRepository as kt, configIssueMessage as l, USAGE_SCAN_INTERVAL_RANGE as lt, USAGE_VENDOR_KEYS as m, MAX_RAW_LINE_CHARS as mt, BUILTIN_AGENT_IDS as n, POSTHOG_TRAFFIC_MIN_USERS_RANGE as nt, PersistedTaskTitle as o, USAGE_BUDGET_RANGE as ot, USAGE_COST_MODES as p, SessionSetup as pt, FLYING_ANIMALS_GAP_RANGE as q, BrowserConfig as r, POSTHOG_TRAFFIC_MULTIPLIER_RANGE as rt, RUNTIME_CONFIG_SCALAR_KEYS as s, USAGE_INTEGER_RANGES as st, AGENT_ID_SHAPE_MESSAGE as t, POSTHOG_TRAFFIC_BASELINE_RANGE as tt, BranchGcFileSettings as u, WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE as ut, DASHBOARD_VIEWS as v, ChangeMap as vt, pullRequestKeyFromReference as w, PLAN_TOOL_NAME as wt, ONBOARDING_STEP_STATES as x, PLAN_HOOK_EVENT as xt, InstallFlavor as y, changeMapFactId as yt, GithubPrsFrame as z };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as errorLabel, r as errorMessage } from "./text-DoirglWV.js";
|
|
2
2
|
import { n as equalsIgnoringCaseOnWindows } from "./paths-Bu4eH1Yd.js";
|
|
3
|
-
import { $ as
|
|
3
|
+
import { $ as POSITIVE_NUMBER_RANGE, G as FLYING_ANIMALS_DEFAULTS, J as FLYING_ANIMALS_SCALE_RANGE, K as FLYING_ANIMALS_DURATION_RANGE, Q as PORT_RANGE, X as MEMORY_RESERVE_MB_RANGE, Y as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, Z as NON_NEGATIVE_NUMBER_RANGE, at as TASK_TITLE_TIMEOUT_RANGE, ct as USAGE_RETAIN_DAYS_RANGE, d as POST_TURN_CHECK_MODES, dt as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, et as POSTHOG_FIX_TIMEOUT_RANGE, f as UPDATE_CHANNELS, h as normalizeLegacyConfigNumbers, i as Config, it as REPLAY_BUFFER_KB_RANGE, l as configIssueMessage, lt as USAGE_SCAN_INTERVAL_RANGE, n as BUILTIN_AGENT_IDS, nt as POSTHOG_TRAFFIC_MIN_USERS_RANGE, ot as USAGE_BUDGET_RANGE, p as USAGE_COST_MODES, q as FLYING_ANIMALS_GAP_RANGE, rt as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, s as RUNTIME_CONFIG_SCALAR_KEYS, st as USAGE_INTEGER_RANGES, t as AGENT_ID_SHAPE_MESSAGE, tt as POSTHOG_TRAFFIC_BASELINE_RANGE, u as BranchGcFileSettings, ut as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE } from "./config-Dh4e-Mkv.js";
|
|
4
4
|
import { n as isRecord } from "./coerce-NSst8oRP.js";
|
|
5
5
|
import { n as glimmervoidHomeDir$1, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
|
|
6
6
|
import { d as writeJsonAtomicSync, f as writeTextAtomic, p as writeTextAtomicSync } from "./json-file-DFCTvPjj.js";
|
|
7
|
-
import { s as FeatureFlagsResponse, u as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-
|
|
7
|
+
import { s as FeatureFlagsResponse, u as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-dj-GFptp.js";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import os from "node:os";
|
|
@@ -264,7 +264,11 @@ var POSTHOG_INGEST_HOST = "https://us.i.posthog.com";
|
|
|
264
264
|
var TELEMETRY_BATCH_URL = `${POSTHOG_INGEST_HOST}/batch/`;
|
|
265
265
|
var TELEMETRY_FLAGS_URL = `${POSTHOG_INGEST_HOST}/flags?v=2`;
|
|
266
266
|
var MAX_STACK_LENGTH = 16384;
|
|
267
|
-
var
|
|
267
|
+
var ACCOUNT_HASH_SALT = "glimmervoid-account-hash-v1";
|
|
268
|
+
var OPENAI_AUTH_CLAIM = "https://api.openai.com/auth";
|
|
269
|
+
var UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
270
|
+
var OPENAI_USER_ID_PATTERN = /^user-[A-Za-z0-9]+$/;
|
|
271
|
+
var FIRST_RUN_NOTICE = ["Glimmervoid collects usage data to help us improve it. No prompts or project information are collected.", "Turn it off in Settings > Privacy, or GLIMMERVOID_TELEMETRY=0."].join("\n");
|
|
268
272
|
var TRUTHY_FLAGS = /* @__PURE__ */ new Set([
|
|
269
273
|
"1",
|
|
270
274
|
"true",
|
|
@@ -573,6 +577,45 @@ function decideIsDevInstall({ installFlavor, isBundled, homeDir, defaultHomeDir
|
|
|
573
577
|
if (installFlavor === "clone" || !isBundled) return true;
|
|
574
578
|
return comparablePath(homeDir) !== comparablePath(defaultHomeDir);
|
|
575
579
|
}
|
|
580
|
+
function parseJsonOrNull(text) {
|
|
581
|
+
try {
|
|
582
|
+
return JSON.parse(text);
|
|
583
|
+
} catch {
|
|
584
|
+
return null;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
function fieldOf(value, key) {
|
|
588
|
+
if (typeof value !== "object" || value === null || !(key in value)) return void 0;
|
|
589
|
+
return Reflect.get(value, key);
|
|
590
|
+
}
|
|
591
|
+
function hashAccountId(rawAccountId) {
|
|
592
|
+
return createHash("sha256").update(`${ACCOUNT_HASH_SALT}:${rawAccountId}`).digest("hex");
|
|
593
|
+
}
|
|
594
|
+
function claudeAccountUuidOf(claudeConfigText) {
|
|
595
|
+
const accountUuid = fieldOf(fieldOf(parseJsonOrNull(claudeConfigText), "oauthAccount"), "accountUuid");
|
|
596
|
+
return typeof accountUuid === "string" && UUID_PATTERN.test(accountUuid) ? accountUuid : null;
|
|
597
|
+
}
|
|
598
|
+
function codexUserIdOf(codexAuthText) {
|
|
599
|
+
const idToken = fieldOf(fieldOf(parseJsonOrNull(codexAuthText), "tokens"), "id_token");
|
|
600
|
+
if (typeof idToken !== "string") return null;
|
|
601
|
+
const encodedClaims = idToken.split(".")[1];
|
|
602
|
+
if (!encodedClaims) return null;
|
|
603
|
+
const userId = fieldOf(fieldOf(parseJsonOrNull(Buffer.from(encodedClaims, "base64url").toString("utf8")), OPENAI_AUTH_CLAIM), "user_id");
|
|
604
|
+
return typeof userId === "string" && OPENAI_USER_ID_PATTERN.test(userId) ? userId : null;
|
|
605
|
+
}
|
|
606
|
+
function buildPersonProperties(accountIds, firstSeen) {
|
|
607
|
+
return {
|
|
608
|
+
$set: {
|
|
609
|
+
...accountIds.claudeAccountUuid ? { claude_account_hash: hashAccountId(accountIds.claudeAccountUuid) } : {},
|
|
610
|
+
...accountIds.codexUserId ? { codex_user_hash: hashAccountId(accountIds.codexUserId) } : {}
|
|
611
|
+
},
|
|
612
|
+
$set_once: {
|
|
613
|
+
first_app_version: firstSeen.appVersion.slice(0, 512),
|
|
614
|
+
first_os_platform: firstSeen.osPlatform.slice(0, 512),
|
|
615
|
+
first_install_flavor: firstSeen.installFlavor.slice(0, 512)
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
}
|
|
576
619
|
function nodeMajorVersion(nodeVersion) {
|
|
577
620
|
const major = Number.parseInt(nodeVersion.replace(/^v/, ""), 10);
|
|
578
621
|
return Number.isFinite(major) ? major : 0;
|
|
@@ -1635,7 +1678,7 @@ var SECTIONS = Object.freeze([
|
|
|
1635
1678
|
id: "team-review-re-review-after-hours",
|
|
1636
1679
|
path: "teamReview.reReviewAfterHours",
|
|
1637
1680
|
title: "Re-review after",
|
|
1638
|
-
description: "When a reviewed PR has a new head, review it again after this long since its last review.
|
|
1681
|
+
description: "When a reviewed PR has a new head, review it again after this long since its last review. Re-run review runs it at any time.",
|
|
1639
1682
|
control: "number",
|
|
1640
1683
|
range: POSITIVE_NUMBER_RANGE,
|
|
1641
1684
|
unit: HOURS,
|
|
@@ -1834,8 +1877,8 @@ var SECTIONS = Object.freeze([
|
|
|
1834
1877
|
settings: [{
|
|
1835
1878
|
id: "telemetry-enabled",
|
|
1836
1879
|
path: "telemetry.enabled",
|
|
1837
|
-
title: "Send
|
|
1838
|
-
description: "
|
|
1880
|
+
title: "Send usage data",
|
|
1881
|
+
description: "Helps us improve Glimmervoid. Sent under a random install id: version, platform, app starts, daily activity, session starts and ends with agent kind, exit kind and duration, errors as their type, error code and scrubbed stack frames, per session token counts, models and estimated costs from the usage scan, and a salted one-way hash of your Claude and Codex account ids so installs of one account count together. Never prompts, project information, error messages, paths, repository or branch names, objectives, terminal output, emails or names. Delete my data asks for everything sent under this install to be erased and starts a new install id. GLIMMERVOID_TELEMETRY=0, DO_NOT_TRACK=1 or CI=true turn it off regardless.",
|
|
1839
1882
|
control: "toggle",
|
|
1840
1883
|
keywords: [
|
|
1841
1884
|
"telemetry",
|
|
@@ -3697,7 +3740,7 @@ function retiredGuardrailKeysWarning(config) {
|
|
|
3697
3740
|
if (retiredKeys.length === 0) return null;
|
|
3698
3741
|
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.`;
|
|
3699
3742
|
}
|
|
3700
|
-
function createConfigStore({ settingsDefaults } = {}) {
|
|
3743
|
+
function createConfigStore({ settingsDefaults, readTelemetryInstallId } = {}) {
|
|
3701
3744
|
const configPath = resolveConfigPath();
|
|
3702
3745
|
const effectiveDefaults = {
|
|
3703
3746
|
...DEFAULT_CONFIG,
|
|
@@ -3847,6 +3890,7 @@ function createConfigStore({ settingsDefaults } = {}) {
|
|
|
3847
3890
|
...config.telemetry
|
|
3848
3891
|
}),
|
|
3849
3892
|
telemetryForcedOff: isTelemetryForcedOff(process.env),
|
|
3893
|
+
telemetryInstallId: readTelemetryInstallId?.() ?? null,
|
|
3850
3894
|
rtk: config.rtk ?? effectiveDefaults.rtk,
|
|
3851
3895
|
rtkInstallSupported: assetForPlatform(process.platform, process.arch) !== null,
|
|
3852
3896
|
saneYolo: config.saneYolo ?? effectiveDefaults.saneYolo,
|
|
@@ -3993,4 +4037,4 @@ function createConfigStore({ settingsDefaults } = {}) {
|
|
|
3993
4037
|
};
|
|
3994
4038
|
}
|
|
3995
4039
|
//#endregion
|
|
3996
|
-
export {
|
|
4040
|
+
export { readEnvSecrets as $, settingsOf as A, buildExceptionProperties as B, deleteValueAtPath as C, scoreSettingsSearch as D, parsePosthogProjectSelection as E, TELEMETRY_BATCH_URL as F, decideIsDevInstall as G, classifySessionExit as H, TELEMETRY_FLAGS_URL as I, exceptionFingerprint as J, decideRemoteTelemetryState as K, adapterBucket as L, FILE_ONLY_GROUPS as M, SETTINGS_REGISTRY as N, setValueAtPath as O, FIRST_RUN_NOTICE as P, ENV_SECRET_BINDINGS as Q, buildAiGenerationEvents as R, cloneValue as S, hasScaledUnit as T, claudeAccountUuidOf as U, buildPersonProperties as V, codexUserIdOf as W, parsePosthogReleaseId as X, nodeMajorVersion as Y, resolveProjectToken as Z, SECRET_PRESENCE_SUFFIX as _, generateProjectId as a, planWorktreeGc as at, validateSettingsBlock as b, resolveConfigPath as c, worktreeIntegrationTips as ct, assetForPlatform as d, isSameDirectoryPath as dt, stableConfigKey as et, decideRtkInstall as f, verifyDigest as g, isRtkBinaryName as h, ensureProjectIds as i, planBranchGc as it, valueAtPath as j, settingsGroupOf as k, saveConfigFileOnce as l, canonicalizePath as lt, installTargetPath as m, DEFAULT_CONFIG as n, DEFAULT_BRANCH_GC_PREFIXES as nt, glimmervoidHomeDir as o, sessionIdFromBranch as ot, findEscapingArchiveMember as p, decideTelemetryConsent as q, createConfigStore as r, matchedPrefix as rt, loadConfigFile as s, usablePrefixes as st, ABORT_CONFIG_SAVE as t, withEnvSecrets as tt, validateConfig as u, comparableDirectoryPath as ut, mergeSettingsBlock as v, displayText as w, SETTINGS_INDEX as x, settingsBlockSpecFor as y, buildBrowserExceptionProperties as z };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { s as loadConfigFile } from "./config-store-CEsetno2.js";
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import "./session-
|
|
2
|
-
import {
|
|
1
|
+
import "./session-CUc6d7aS.js";
|
|
2
|
+
import { C as OPERATOR_SURFACES, S as OPERATOR_ACTIONS_BY_SURFACE, b as ONBOARDING_STEPS, n as BUILTIN_AGENT_IDS, v as DASHBOARD_VIEWS, x as ONBOARDING_STEP_STATES } from "./config-Dh4e-Mkv.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region shared/contracts/telemetry.ts
|
|
5
5
|
var TELEMETRY_ADAPTERS = Object.freeze([...BUILTIN_AGENT_IDS, "custom"]);
|
|
6
|
+
var SESSION_END_CAUSES = Object.freeze([
|
|
7
|
+
"removed",
|
|
8
|
+
"replaced",
|
|
9
|
+
"server_stopped"
|
|
10
|
+
]);
|
|
6
11
|
var SESSION_EXIT_KINDS = Object.freeze([
|
|
7
12
|
"clean",
|
|
8
13
|
"error",
|
|
9
14
|
"signal",
|
|
10
|
-
"no_output"
|
|
15
|
+
"no_output",
|
|
16
|
+
...SESSION_END_CAUSES
|
|
11
17
|
]);
|
|
12
18
|
var TEAM_REVIEW_SETTLED_OUTCOMES = Object.freeze([
|
|
13
19
|
"approve",
|
|
@@ -56,8 +62,27 @@ var RADAR_HANDOFF_STEPS = Object.freeze([
|
|
|
56
62
|
var OPERATOR_ACTIONS = Object.freeze([...new Set(Object.values(OPERATOR_ACTIONS_BY_SURFACE).flat())]);
|
|
57
63
|
var nonNegativeInteger = z.number().int().nonnegative();
|
|
58
64
|
var boundedText = z.string().max(512);
|
|
59
|
-
var
|
|
60
|
-
var
|
|
65
|
+
var sha256Hex = z.string().regex(/^[0-9a-f]{64}$/);
|
|
66
|
+
var PersonProperties = z.object({
|
|
67
|
+
$set: z.object({
|
|
68
|
+
claude_account_hash: sha256Hex.optional(),
|
|
69
|
+
codex_user_hash: sha256Hex.optional()
|
|
70
|
+
}).strict(),
|
|
71
|
+
$set_once: z.object({
|
|
72
|
+
first_app_version: boundedText,
|
|
73
|
+
first_os_platform: boundedText,
|
|
74
|
+
first_install_flavor: boundedText
|
|
75
|
+
}).strict()
|
|
76
|
+
}).strict();
|
|
77
|
+
var AppStartedProperties = z.object({
|
|
78
|
+
is_first_start: z.boolean(),
|
|
79
|
+
...PersonProperties.partial().shape
|
|
80
|
+
}).strict();
|
|
81
|
+
var AppActiveProperties = z.object({
|
|
82
|
+
active_session_count: nonNegativeInteger,
|
|
83
|
+
...PersonProperties.partial().shape
|
|
84
|
+
}).strict();
|
|
85
|
+
var DataDeletionRequestedProperties = z.object({}).strict();
|
|
61
86
|
var SessionStartedProperties = z.object({ adapter: z.enum(TELEMETRY_ADAPTERS) }).strict();
|
|
62
87
|
var SessionEndedProperties = z.object({
|
|
63
88
|
adapter: z.enum(TELEMETRY_ADAPTERS),
|
|
@@ -72,6 +97,10 @@ var OperatorActionProperties = z.object({
|
|
|
72
97
|
surface: z.enum(OPERATOR_SURFACES),
|
|
73
98
|
action: z.enum(OPERATOR_ACTIONS)
|
|
74
99
|
}).strict().refine(isActionOfSurface, { message: "action does not belong to its surface" });
|
|
100
|
+
var OnboardingStepProperties = z.object({
|
|
101
|
+
step: z.enum(ONBOARDING_STEPS),
|
|
102
|
+
state: z.enum(ONBOARDING_STEP_STATES)
|
|
103
|
+
}).strict();
|
|
75
104
|
var TeamReviewDraftedProperties = z.object({ inline_comment_count: nonNegativeInteger }).strict();
|
|
76
105
|
var TeamReviewSettledProperties = z.object({
|
|
77
106
|
duration_ms: nonNegativeInteger,
|
|
@@ -89,13 +118,20 @@ var RadarInvestigationFinishedProperties = z.object({
|
|
|
89
118
|
error_reason: z.enum(RADAR_ERROR_REASONS).optional()
|
|
90
119
|
}).strict();
|
|
91
120
|
var RadarFixHandoffFailedProperties = z.object({ step: z.enum(RADAR_HANDOFF_STEPS) }).strict();
|
|
92
|
-
var DashboardTelemetryReport = z.discriminatedUnion("event", [
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
121
|
+
var DashboardTelemetryReport = z.discriminatedUnion("event", [
|
|
122
|
+
z.object({
|
|
123
|
+
event: z.literal("view_shown"),
|
|
124
|
+
properties: ViewShownProperties
|
|
125
|
+
}),
|
|
126
|
+
z.object({
|
|
127
|
+
event: z.literal("operator_action"),
|
|
128
|
+
properties: OperatorActionProperties
|
|
129
|
+
}),
|
|
130
|
+
z.object({
|
|
131
|
+
event: z.literal("onboarding_step"),
|
|
132
|
+
properties: OnboardingStepProperties
|
|
133
|
+
})
|
|
134
|
+
]);
|
|
99
135
|
var ExceptionFrame = z.object({
|
|
100
136
|
platform: z.enum(["node:javascript", "web:javascript"]),
|
|
101
137
|
function: boundedText,
|
|
@@ -140,20 +176,22 @@ var TELEMETRY_EVENT_SCHEMAS = Object.freeze({
|
|
|
140
176
|
$ai_generation: AiGenerationProperties,
|
|
141
177
|
view_shown: ViewShownProperties,
|
|
142
178
|
operator_action: OperatorActionProperties,
|
|
179
|
+
onboarding_step: OnboardingStepProperties,
|
|
143
180
|
team_review_drafted: TeamReviewDraftedProperties,
|
|
144
181
|
team_review_settled: TeamReviewSettledProperties,
|
|
145
182
|
team_review_post_refused: TeamReviewPostRefusedProperties,
|
|
146
183
|
radar_investigation_finished: RadarInvestigationFinishedProperties,
|
|
147
|
-
radar_fix_handoff_failed: RadarFixHandoffFailedProperties
|
|
184
|
+
radar_fix_handoff_failed: RadarFixHandoffFailedProperties,
|
|
185
|
+
data_deletion_requested: DataDeletionRequestedProperties
|
|
148
186
|
});
|
|
149
187
|
Object.freeze([
|
|
150
188
|
{
|
|
151
189
|
name: "app_started",
|
|
152
|
-
description: "The server started listening."
|
|
190
|
+
description: "The server started listening, and whether this is the first start, with no Glimmervoid config file yet. Also sets the person properties: a one-way hash of the Claude Code account id and the Codex user id when logged in, and the first version, platform and install flavor seen."
|
|
153
191
|
},
|
|
154
192
|
{
|
|
155
193
|
name: "app_active",
|
|
156
|
-
description: "Once a day while the server runs, with how many sessions are live."
|
|
194
|
+
description: "Once a day while the server runs, with how many sessions are live, and the same person properties as app_started."
|
|
157
195
|
},
|
|
158
196
|
{
|
|
159
197
|
name: "session_started",
|
|
@@ -161,7 +199,7 @@ Object.freeze([
|
|
|
161
199
|
},
|
|
162
200
|
{
|
|
163
201
|
name: "session_ended",
|
|
164
|
-
description: "A session
|
|
202
|
+
description: "A session ended: how it exited, or that it was removed, replaced by a settings change or stopped with the server, and how long it ran, in whole seconds."
|
|
165
203
|
},
|
|
166
204
|
{
|
|
167
205
|
name: "$exception",
|
|
@@ -177,7 +215,11 @@ Object.freeze([
|
|
|
177
215
|
},
|
|
178
216
|
{
|
|
179
217
|
name: "operator_action",
|
|
180
|
-
description: "An action taken in the Usage, Issues, Radar or Reviews tab: which tab and which action, from a fixed list. Never which repository, pull request, issue or session it was taken on."
|
|
218
|
+
description: "An action taken in the Usage, Issues, Radar or Reviews tab or the first-run checklist: which tab and which action, from a fixed list. Never which repository, pull request, issue or session it was taken on."
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: "onboarding_step",
|
|
222
|
+
description: "The first-run checklist moved a step to current or done, with which step. Sent once per change while the page is open."
|
|
181
223
|
},
|
|
182
224
|
{
|
|
183
225
|
name: "team_review_drafted",
|
|
@@ -198,6 +240,10 @@ Object.freeze([
|
|
|
198
240
|
{
|
|
199
241
|
name: "radar_fix_handoff_failed",
|
|
200
242
|
description: "Handing a Radar fix over as a pull request failed, with which step failed. Never the branch or the error text."
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: "data_deletion_requested",
|
|
246
|
+
description: "Delete my data was confirmed in Settings > Privacy, with no properties. Sent under the old install id even when telemetry is off, unless the maintainers stopped all sending, and then the install id is replaced. PostHog deletes the person and every event under that id on receipt."
|
|
201
247
|
}
|
|
202
248
|
]);
|
|
203
249
|
Object.freeze([
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as AGENT_API_VERBS } from "./session-
|
|
1
|
+
import { t as AGENT_API_VERBS } from "./session-CUc6d7aS.js";
|
|
2
2
|
import { r as execFileSync } from "./child-process-safe-D4hyVIXj.js";
|
|
3
3
|
//#region server/core/command-line-core.ts
|
|
4
4
|
var SUBCOMMANDS_HONORING_TRAILING_GLOBAL_OPTIONS = /* @__PURE__ */ new Set([
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as errorMessage } from "./text-DoirglWV.js";
|
|
2
2
|
import { s as relayPath } from "./runtime-paths-ghcH9CeW.js";
|
|
3
|
-
import { j as SIGN_URL_ENV, n as AGENT_URL_ENV } from "./session-
|
|
3
|
+
import { j as SIGN_URL_ENV, n as AGENT_URL_ENV } from "./session-CUc6d7aS.js";
|
|
4
4
|
import { n as isRecord } from "./coerce-NSst8oRP.js";
|
|
5
5
|
import { t as HOOK_URL_ENV } from "./hook-relay-core-DA_bz2KA.js";
|
|
6
6
|
import { a as SANE_YOLO_PATH_ENV, o as saneYoloEnv, r as RTK_PATH_ENV } from "./rtk-hook-core-B-MpzPin.js";
|