glimmervoid 0.44.0 → 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 +8 -8
- package/dist/chunks/{adapters-DjDtNufj.js → adapters-B2IgKmuZ.js} +1 -1
- package/dist/chunks/{adapters-CSRTLFiZ.js → adapters-BsoXEvlZ.js} +2 -2
- package/dist/chunks/{agent-api-cli-ep_5T7Hx.js → agent-api-cli-B-QxkZAQ.js} +1 -1
- package/dist/chunks/{agent-api-cli-CVgij_62.js → agent-api-cli-DIl92JjQ.js} +1 -1
- package/dist/chunks/{agent-api-core-DmPT6Hc_.js → agent-api-core-BCFplxXu.js} +1 -1
- package/dist/chunks/{config-CGRYpcBQ.js → config-Dh4e-Mkv.js} +6 -0
- package/dist/chunks/{config-store-B1u3WA5t.js → config-store-CEsetno2.js} +51 -7
- package/dist/chunks/config-store-DVwdcnub.js +1 -0
- package/dist/chunks/{contracts-Fup4hhP9.js → contracts-dj-GFptp.js} +30 -6
- package/dist/chunks/{main-DPtmg7Bn.js → main-CA3ONCUS.js} +147 -32
- package/dist/chunks/{pair-cli-BwOTWShx.js → pair-cli-CWHMbInF.js} +2 -2
- package/dist/chunks/{remote-config-DWWnz5dP.js → remote-config-CtcoO10O.js} +1 -1
- package/dist/chunks/{settings-cli-C_owm3rw.js → settings-cli-DGOkkmW-.js} +4 -4
- package/dist/chunks/{settings-readout-core-C_JzSeF7.js → settings-readout-core-BVb6tTLq.js} +1 -1
- package/dist/chunks/{ssh-sign-cli-CDjUtDKa.js → ssh-sign-cli-BdvvBKkj.js} +1 -1
- package/dist/client/assets/index-BR-wN5UF.js +177 -0
- package/dist/client/assets/{index-o9J4_Orv.css → index-QxVyoSUP.css} +1 -1
- package/dist/client/index.html +5 -4
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/config-store-D4vUBcUX.js +0 -1
- package/dist/client/assets/index-BedqDfKJ.js +0 -177
package/dist/bin/glimmervoid.js
CHANGED
|
@@ -4,7 +4,7 @@ import { i as errorText } from "../chunks/text-DoirglWV.js";
|
|
|
4
4
|
import { o as packageRoot } from "../chunks/runtime-paths-ghcH9CeW.js";
|
|
5
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
10
|
import { i as parseCommandLine, r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-C3lznLS_.js";
|
|
@@ -65,7 +65,7 @@ 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) => {
|
|
@@ -73,7 +73,7 @@ var OWN_SUBCOMMAND_RUNNERS = [
|
|
|
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);
|
|
@@ -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
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-
|
|
4
|
+
import { y as InstallFlavor } from "./config-Dh4e-Mkv.js";
|
|
5
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
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
2
|
import { c as AgentLimitsReply, n as AGENT_URL_ENV } from "./session-CUc6d7aS.js";
|
|
3
3
|
import { i as formatSessionLimits } from "./session-routes--hrsvv7a.js";
|
|
4
|
-
import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-
|
|
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,5 +1,5 @@
|
|
|
1
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-
|
|
2
|
+
import { c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle, w as pullRequestKeyFromReference } from "./config-Dh4e-Mkv.js";
|
|
3
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";
|
|
@@ -1672,6 +1672,7 @@ var clientVariants = [
|
|
|
1672
1672
|
loose("restart-server"),
|
|
1673
1673
|
loose("focus-change", { focused: z.boolean() }),
|
|
1674
1674
|
loose("request-health-snapshot"),
|
|
1675
|
+
loose("request-telemetry-deletion", { requestId }),
|
|
1675
1676
|
loose("update-check"),
|
|
1676
1677
|
loose("update-apply"),
|
|
1677
1678
|
loose("session-trace", {
|
|
@@ -1807,6 +1808,7 @@ Object.freeze([
|
|
|
1807
1808
|
"open-issue-session-result",
|
|
1808
1809
|
"open-team-review-session-result",
|
|
1809
1810
|
"radar-issue-action-result",
|
|
1811
|
+
"telemetry-deletion-result",
|
|
1810
1812
|
"team-review-action-result",
|
|
1811
1813
|
"benchmark-action-result",
|
|
1812
1814
|
"my-pr-merge-result",
|
|
@@ -2267,6 +2269,10 @@ var serverVariants = [
|
|
|
2267
2269
|
...TeamReviewActionResult.shape,
|
|
2268
2270
|
requestId
|
|
2269
2271
|
}),
|
|
2272
|
+
loose("telemetry-deletion-result", {
|
|
2273
|
+
requestId,
|
|
2274
|
+
ok: z.boolean()
|
|
2275
|
+
}),
|
|
2270
2276
|
loose("benchmark-action-result", {
|
|
2271
2277
|
...BenchmarkActionResult.shape,
|
|
2272
2278
|
requestId
|
|
@@ -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 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-
|
|
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;
|
|
@@ -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,5 +1,5 @@
|
|
|
1
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-
|
|
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"]);
|
|
@@ -62,8 +62,27 @@ var RADAR_HANDOFF_STEPS = Object.freeze([
|
|
|
62
62
|
var OPERATOR_ACTIONS = Object.freeze([...new Set(Object.values(OPERATOR_ACTIONS_BY_SURFACE).flat())]);
|
|
63
63
|
var nonNegativeInteger = z.number().int().nonnegative();
|
|
64
64
|
var boundedText = z.string().max(512);
|
|
65
|
-
var
|
|
66
|
-
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();
|
|
67
86
|
var SessionStartedProperties = z.object({ adapter: z.enum(TELEMETRY_ADAPTERS) }).strict();
|
|
68
87
|
var SessionEndedProperties = z.object({
|
|
69
88
|
adapter: z.enum(TELEMETRY_ADAPTERS),
|
|
@@ -162,16 +181,17 @@ var TELEMETRY_EVENT_SCHEMAS = Object.freeze({
|
|
|
162
181
|
team_review_settled: TeamReviewSettledProperties,
|
|
163
182
|
team_review_post_refused: TeamReviewPostRefusedProperties,
|
|
164
183
|
radar_investigation_finished: RadarInvestigationFinishedProperties,
|
|
165
|
-
radar_fix_handoff_failed: RadarFixHandoffFailedProperties
|
|
184
|
+
radar_fix_handoff_failed: RadarFixHandoffFailedProperties,
|
|
185
|
+
data_deletion_requested: DataDeletionRequestedProperties
|
|
166
186
|
});
|
|
167
187
|
Object.freeze([
|
|
168
188
|
{
|
|
169
189
|
name: "app_started",
|
|
170
|
-
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."
|
|
171
191
|
},
|
|
172
192
|
{
|
|
173
193
|
name: "app_active",
|
|
174
|
-
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."
|
|
175
195
|
},
|
|
176
196
|
{
|
|
177
197
|
name: "session_started",
|
|
@@ -220,6 +240,10 @@ Object.freeze([
|
|
|
220
240
|
{
|
|
221
241
|
name: "radar_fix_handoff_failed",
|
|
222
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."
|
|
223
247
|
}
|
|
224
248
|
]);
|
|
225
249
|
Object.freeze([
|