@legioncodeinc/honeycomb 0.1.8 → 0.1.10
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +18 -2
- package/bundle/cli.js +513 -75
- package/daemon/dashboard-app.js +23 -23
- package/daemon/index.js +1741 -794
- package/daemon/restart-helper.js +41 -0
- package/embeddings/embed-daemon.js +1 -1
- package/harnesses/claude-code/.claude-plugin/plugin.json +1 -1
- package/harnesses/claude-code/bundle/capture.js +177 -53
- package/harnesses/claude-code/bundle/index.js +177 -53
- package/harnesses/claude-code/bundle/pre-tool-use.js +177 -53
- package/harnesses/claude-code/bundle/session-end.js +177 -53
- package/harnesses/claude-code/bundle/session-start.js +177 -53
- package/harnesses/codex/bundle/capture.js +49 -33
- package/harnesses/codex/bundle/index.js +49 -33
- package/harnesses/codex/bundle/pre-tool-use.js +49 -33
- package/harnesses/codex/bundle/session-start.js +49 -33
- package/harnesses/codex/package.json +1 -1
- package/harnesses/cursor/bundle/capture.js +49 -33
- package/harnesses/cursor/bundle/index.js +49 -33
- package/harnesses/cursor/bundle/pre-tool-use.js +49 -33
- package/harnesses/cursor/bundle/session-end.js +49 -33
- package/harnesses/cursor/bundle/session-start.js +49 -33
- package/harnesses/openclaw/dist/index.js +1 -1
- package/harnesses/openclaw/openclaw.plugin.json +1 -1
- package/harnesses/openclaw/package.json +1 -1
- package/mcp/bundle/server.js +1 -1
- package/package.json +1 -1
|
@@ -92,12 +92,14 @@ function nestedString(raw, a, b) {
|
|
|
92
92
|
function userMessageData(text) {
|
|
93
93
|
return { kind: "user_message", text };
|
|
94
94
|
}
|
|
95
|
-
function assistantMessageData(text, usage) {
|
|
95
|
+
function assistantMessageData(text, usage, model) {
|
|
96
96
|
const normalized = usage !== void 0 ? compactUsage(usage) : void 0;
|
|
97
|
+
const trimmedModel = typeof model === "string" ? model.trim() : "";
|
|
97
98
|
return {
|
|
98
99
|
kind: "assistant_message",
|
|
99
100
|
text,
|
|
100
|
-
...normalized !== void 0 ? { usage: normalized } : {}
|
|
101
|
+
...normalized !== void 0 ? { usage: normalized } : {},
|
|
102
|
+
...trimmedModel !== "" ? { model: trimmedModel } : {}
|
|
101
103
|
};
|
|
102
104
|
}
|
|
103
105
|
function compactUsage(usage) {
|
|
@@ -167,6 +169,112 @@ function preToolData(tool, fields) {
|
|
|
167
169
|
};
|
|
168
170
|
}
|
|
169
171
|
|
|
172
|
+
// dist/src/hooks/claude-code/transcript.js
|
|
173
|
+
import { readFileSync } from "node:fs";
|
|
174
|
+
function parseTurnUsage(jsonlText) {
|
|
175
|
+
const entries = parseEntries(jsonlText);
|
|
176
|
+
let lastUserIndex = -1;
|
|
177
|
+
for (let i = 0; i < entries.length; i++) {
|
|
178
|
+
if (entryType(entries[i]) === "user")
|
|
179
|
+
lastUserIndex = i;
|
|
180
|
+
}
|
|
181
|
+
const totals = new TurnTotals();
|
|
182
|
+
let lastModel;
|
|
183
|
+
let sawAssistant = false;
|
|
184
|
+
for (let i = lastUserIndex + 1; i < entries.length; i++) {
|
|
185
|
+
const entry = entries[i];
|
|
186
|
+
if (entryType(entry) !== "assistant")
|
|
187
|
+
continue;
|
|
188
|
+
sawAssistant = true;
|
|
189
|
+
totals.add(messageOf(entry));
|
|
190
|
+
const model = modelOf(entry);
|
|
191
|
+
if (model !== void 0)
|
|
192
|
+
lastModel = model;
|
|
193
|
+
}
|
|
194
|
+
if (!sawAssistant)
|
|
195
|
+
return {};
|
|
196
|
+
const usage = totals.toUsage();
|
|
197
|
+
return {
|
|
198
|
+
...lastModel !== void 0 ? { model: lastModel } : {},
|
|
199
|
+
...usage !== void 0 ? { usage } : {}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function readTranscriptTurnUsage(transcriptPath) {
|
|
203
|
+
if (transcriptPath.length === 0)
|
|
204
|
+
return {};
|
|
205
|
+
let text;
|
|
206
|
+
try {
|
|
207
|
+
text = readFileSync(transcriptPath, "utf8");
|
|
208
|
+
} catch {
|
|
209
|
+
return {};
|
|
210
|
+
}
|
|
211
|
+
return parseTurnUsage(text);
|
|
212
|
+
}
|
|
213
|
+
function parseEntries(jsonlText) {
|
|
214
|
+
const out = [];
|
|
215
|
+
for (const line of jsonlText.split("\n")) {
|
|
216
|
+
const trimmed = line.trim();
|
|
217
|
+
if (trimmed.length === 0)
|
|
218
|
+
continue;
|
|
219
|
+
let parsed;
|
|
220
|
+
try {
|
|
221
|
+
parsed = JSON.parse(trimmed);
|
|
222
|
+
} catch {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (parsed !== null && typeof parsed === "object")
|
|
226
|
+
out.push(parsed);
|
|
227
|
+
}
|
|
228
|
+
return out;
|
|
229
|
+
}
|
|
230
|
+
function entryType(entry) {
|
|
231
|
+
return typeof entry.type === "string" ? entry.type : "";
|
|
232
|
+
}
|
|
233
|
+
function messageOf(entry) {
|
|
234
|
+
const message = entry.message;
|
|
235
|
+
return message !== null && typeof message === "object" ? message : {};
|
|
236
|
+
}
|
|
237
|
+
function modelOf(entry) {
|
|
238
|
+
const model = messageOf(entry).model;
|
|
239
|
+
return typeof model === "string" && model.length > 0 ? model : void 0;
|
|
240
|
+
}
|
|
241
|
+
var TurnTotals = class {
|
|
242
|
+
input;
|
|
243
|
+
output;
|
|
244
|
+
cacheRead;
|
|
245
|
+
cacheCreation;
|
|
246
|
+
/** Fold one assistant `message.usage` block's counts into the running totals (absent counts skipped). */
|
|
247
|
+
add(message) {
|
|
248
|
+
const usage = message.usage;
|
|
249
|
+
const block = usage !== null && typeof usage === "object" ? usage : {};
|
|
250
|
+
this.input = addCount(this.input, readCount2(block, "input_tokens"));
|
|
251
|
+
this.output = addCount(this.output, readCount2(block, "output_tokens"));
|
|
252
|
+
this.cacheRead = addCount(this.cacheRead, readCount2(block, "cache_read_input_tokens"));
|
|
253
|
+
this.cacheCreation = addCount(this.cacheCreation, readCount2(block, "cache_creation_input_tokens"));
|
|
254
|
+
}
|
|
255
|
+
/** Compact the totals into a {@link NormalizedTurnUsage}, or `undefined` when every bucket stayed absent. */
|
|
256
|
+
toUsage() {
|
|
257
|
+
const usage = {
|
|
258
|
+
...this.input !== void 0 ? { input: this.input } : {},
|
|
259
|
+
...this.output !== void 0 ? { output: this.output } : {},
|
|
260
|
+
...this.cacheRead !== void 0 ? { cacheRead: this.cacheRead } : {},
|
|
261
|
+
...this.cacheCreation !== void 0 ? { cacheCreation: this.cacheCreation } : {}
|
|
262
|
+
};
|
|
263
|
+
return Object.keys(usage).length > 0 ? usage : void 0;
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
function addCount(running, addend) {
|
|
267
|
+
if (addend === void 0)
|
|
268
|
+
return running;
|
|
269
|
+
return (running ?? 0) + addend;
|
|
270
|
+
}
|
|
271
|
+
function readCount2(block, key) {
|
|
272
|
+
const value = block[key];
|
|
273
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < 0)
|
|
274
|
+
return void 0;
|
|
275
|
+
return value;
|
|
276
|
+
}
|
|
277
|
+
|
|
170
278
|
// dist/src/hooks/claude-code/shim.js
|
|
171
279
|
var CLAUDE_CODE_EVENT_MAP = {
|
|
172
280
|
SessionStart: "session-start",
|
|
@@ -181,7 +289,7 @@ var CLAUDE_CODE_CONTEXT_CHANNEL = "model-only";
|
|
|
181
289
|
var CLAUDE_CODE_RUNTIME_PATH = "legacy";
|
|
182
290
|
var CLAUDE_CODE_HOST_CLI = { bin: "claude", args: ["-p"] };
|
|
183
291
|
var CLAUDE_CODE_REFERENCES = "references/claude-code/";
|
|
184
|
-
function claudeCodeExtractData(raw, logical) {
|
|
292
|
+
function claudeCodeExtractData(raw, logical, meta3) {
|
|
185
293
|
switch (logical) {
|
|
186
294
|
case "session-start":
|
|
187
295
|
return sessionStartData(pickString(raw, "source") || "startup");
|
|
@@ -195,8 +303,11 @@ function claudeCodeExtractData(raw, logical) {
|
|
|
195
303
|
});
|
|
196
304
|
case "tool_call":
|
|
197
305
|
return toolCallData(pickString(raw, "tool_name", "tool"), nested(raw, "tool_input"), nested(raw, "tool_response"));
|
|
198
|
-
case "assistant_message":
|
|
199
|
-
|
|
306
|
+
case "assistant_message": {
|
|
307
|
+
const fromTranscript = readTranscriptTurnUsage(meta3.path ?? "");
|
|
308
|
+
const usage = fromTranscript.usage ?? extractTurnUsage(raw);
|
|
309
|
+
return assistantMessageData(pickString(raw, "text", "message"), usage, fromTranscript.model);
|
|
310
|
+
}
|
|
200
311
|
case "session-end":
|
|
201
312
|
return sessionEndData(pickString(raw, "reason") || "Stop");
|
|
202
313
|
default:
|
|
@@ -211,9 +322,8 @@ function createClaudeCodeShim() {
|
|
|
211
322
|
hostCli: CLAUDE_CODE_HOST_CLI,
|
|
212
323
|
references: CLAUDE_CODE_REFERENCES,
|
|
213
324
|
eventMap: CLAUDE_CODE_EVENT_MAP,
|
|
214
|
-
extractData(raw, logical,
|
|
215
|
-
|
|
216
|
-
return claudeCodeExtractData(raw, logical);
|
|
325
|
+
extractData(raw, logical, meta3) {
|
|
326
|
+
return claudeCodeExtractData(raw, logical, meta3);
|
|
217
327
|
}
|
|
218
328
|
});
|
|
219
329
|
}
|
|
@@ -327,7 +437,7 @@ function createNotificationsPipeline(deps) {
|
|
|
327
437
|
}
|
|
328
438
|
|
|
329
439
|
// dist/src/notifications/state.js
|
|
330
|
-
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
440
|
+
import { closeSync, existsSync, mkdirSync, openSync, readFileSync as readFileSync2, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
331
441
|
import { homedir } from "node:os";
|
|
332
442
|
import { join } from "node:path";
|
|
333
443
|
var STATE_FILE_NAME = "notifications-state.json";
|
|
@@ -349,7 +459,7 @@ var nodeStateFs = {
|
|
|
349
459
|
return existsSync(path);
|
|
350
460
|
},
|
|
351
461
|
readText(path) {
|
|
352
|
-
return
|
|
462
|
+
return readFileSync2(path, "utf-8");
|
|
353
463
|
},
|
|
354
464
|
writeText(path, contents) {
|
|
355
465
|
writeFileSync(path, contents, "utf-8");
|
|
@@ -525,7 +635,7 @@ async function parseJson(res) {
|
|
|
525
635
|
}
|
|
526
636
|
|
|
527
637
|
// dist/src/hooks/shared/credential-reader.js
|
|
528
|
-
import { existsSync as existsSync2, readFileSync as
|
|
638
|
+
import { existsSync as existsSync2, readFileSync as readFileSync3 } from "node:fs";
|
|
529
639
|
import { homedir as homedir2 } from "node:os";
|
|
530
640
|
import { join as join2 } from "node:path";
|
|
531
641
|
var CREDENTIALS_DIR_NAME = ".deeplake";
|
|
@@ -559,7 +669,7 @@ function readFileCredential(path) {
|
|
|
559
669
|
return void 0;
|
|
560
670
|
let parsed;
|
|
561
671
|
try {
|
|
562
|
-
parsed = JSON.parse(
|
|
672
|
+
parsed = JSON.parse(readFileSync3(path, "utf8"));
|
|
563
673
|
} catch {
|
|
564
674
|
return void 0;
|
|
565
675
|
}
|
|
@@ -683,7 +793,7 @@ var IDENTITY_ADAPTER = Object.freeze({
|
|
|
683
793
|
});
|
|
684
794
|
|
|
685
795
|
// dist/src/daemon-client/assets/install.js
|
|
686
|
-
import { existsSync as existsSync3, mkdirSync as mkdirSync2, readFileSync as
|
|
796
|
+
import { existsSync as existsSync3, mkdirSync as mkdirSync2, readFileSync as readFileSync4, renameSync as renameSync2, rmSync, writeFileSync as writeFileSync2 } from "node:fs";
|
|
687
797
|
import { homedir as homedir3 } from "node:os";
|
|
688
798
|
import { dirname, join as join3, resolve } from "node:path";
|
|
689
799
|
var ASSETS_API_BASE = "/api/assets";
|
|
@@ -847,7 +957,7 @@ function retract(dir, _file2) {
|
|
|
847
957
|
}
|
|
848
958
|
function readLocalMarker(dir) {
|
|
849
959
|
try {
|
|
850
|
-
const raw =
|
|
960
|
+
const raw = readFileSync4(join3(dir, ASSET_MARKER), "utf-8");
|
|
851
961
|
const parsed = JSON.parse(raw);
|
|
852
962
|
if (typeof parsed !== "object" || parsed === null)
|
|
853
963
|
return null;
|
|
@@ -970,7 +1080,7 @@ function asPulledAsset(value) {
|
|
|
970
1080
|
}
|
|
971
1081
|
|
|
972
1082
|
// dist/src/daemon-client/skillify/install.js
|
|
973
|
-
import { existsSync as existsSync4, lstatSync, mkdirSync as mkdirSync3, readFileSync as
|
|
1083
|
+
import { existsSync as existsSync4, lstatSync, mkdirSync as mkdirSync3, readFileSync as readFileSync5, readlinkSync, renameSync as renameSync3, rmSync as rmSync2, symlinkSync, unlinkSync as unlinkSync2, writeFileSync as writeFileSync3 } from "node:fs";
|
|
974
1084
|
import { homedir as homedir4 } from "node:os";
|
|
975
1085
|
import { dirname as dirname2, join as join4, resolve as resolve2 } from "node:path";
|
|
976
1086
|
var AUTOPULL_DISABLED_ENV = "HONEYCOMB_AUTOPULL_DISABLED";
|
|
@@ -978,7 +1088,7 @@ var AUTOPULL_TIMEOUT_MS = 5e3;
|
|
|
978
1088
|
var CLAUDE_SKILLS = join4(".claude", "skills");
|
|
979
1089
|
|
|
980
1090
|
// dist/src/daemon-client/skillify/config.js
|
|
981
|
-
import { mkdirSync as mkdirSync4, readFileSync as
|
|
1091
|
+
import { mkdirSync as mkdirSync4, readFileSync as readFileSync6, writeFileSync as writeFileSync4 } from "node:fs";
|
|
982
1092
|
import { homedir as homedir5 } from "node:os";
|
|
983
1093
|
import { dirname as dirname3, join as join5 } from "node:path";
|
|
984
1094
|
var DEFAULT_CONFIG = Object.freeze({
|
|
@@ -988,12 +1098,12 @@ var DEFAULT_CONFIG = Object.freeze({
|
|
|
988
1098
|
});
|
|
989
1099
|
|
|
990
1100
|
// dist/src/daemon-client/skillify/manifest.js
|
|
991
|
-
import { mkdirSync as mkdirSync5, readFileSync as
|
|
1101
|
+
import { mkdirSync as mkdirSync5, readFileSync as readFileSync8, renameSync as renameSync5, writeFileSync as writeFileSync5 } from "node:fs";
|
|
992
1102
|
import { homedir as homedir6 } from "node:os";
|
|
993
1103
|
import { dirname as dirname4, join as join6 } from "node:path";
|
|
994
1104
|
|
|
995
1105
|
// dist/src/daemon-client/skillify/migrate-manifest.js
|
|
996
|
-
import { existsSync as existsSync5, readFileSync as
|
|
1106
|
+
import { existsSync as existsSync5, readFileSync as readFileSync7, renameSync as renameSync4 } from "node:fs";
|
|
997
1107
|
|
|
998
1108
|
// dist/src/daemon-client/skillify/manifest.js
|
|
999
1109
|
var SKILL_ROW_DEFAULTS = Object.freeze({
|
|
@@ -1011,38 +1121,52 @@ var SKILL_ROW_DEFAULTS = Object.freeze({
|
|
|
1011
1121
|
});
|
|
1012
1122
|
|
|
1013
1123
|
// dist/src/commands/contracts.js
|
|
1124
|
+
var VERB_GROUPS = Object.freeze([
|
|
1125
|
+
{ key: "memory", label: "Memory & recall" },
|
|
1126
|
+
{ key: "knowledge", label: "Knowledge & skills" },
|
|
1127
|
+
{ key: "agents", label: "Agents, routing & config" },
|
|
1128
|
+
{ key: "account", label: "Account & workspaces" },
|
|
1129
|
+
{ key: "system", label: "Setup & system" }
|
|
1130
|
+
]);
|
|
1014
1131
|
var VERB_TABLE = Object.freeze([
|
|
1015
|
-
|
|
1016
|
-
{ verb: "
|
|
1017
|
-
{ verb: "
|
|
1018
|
-
{ verb: "
|
|
1019
|
-
{ verb: "
|
|
1020
|
-
{ verb: "
|
|
1021
|
-
{ verb: "
|
|
1022
|
-
|
|
1023
|
-
{ verb: "
|
|
1024
|
-
{ verb: "
|
|
1025
|
-
{ verb: "
|
|
1026
|
-
{ verb: "
|
|
1027
|
-
{ verb: "
|
|
1028
|
-
{ verb: "
|
|
1029
|
-
{ verb: "
|
|
1030
|
-
|
|
1031
|
-
{ verb: "
|
|
1032
|
-
{ verb: "
|
|
1033
|
-
{ verb: "
|
|
1034
|
-
{ verb: "
|
|
1035
|
-
|
|
1036
|
-
{ verb: "
|
|
1037
|
-
{ verb: "
|
|
1038
|
-
{ verb: "whoami", cls: "auth", summary: "show the authenticated user, org, and workspace (GET /me)" },
|
|
1039
|
-
{ verb: "org", cls: "auth", summary: "list/switch org (passthrough to the auth dispatcher)" },
|
|
1040
|
-
{ verb: "workspace", cls: "auth", summary: "list/switch/use workspace (passthrough to the auth dispatcher)" },
|
|
1041
|
-
{ verb: "workspaces", cls: "auth", summary: "list workspaces in the active org (alias of `workspace list`)" },
|
|
1042
|
-
{ verb: "project", cls: "auth", summary: "list/bind/use projects + show the resolved per-folder scope (049d)" },
|
|
1043
|
-
|
|
1044
|
-
{ verb: "
|
|
1045
|
-
{ verb: "
|
|
1132
|
+
// Memory & recall — the product's core write/read/lifecycle surface.
|
|
1133
|
+
{ verb: "remember", cls: "storage", group: "memory", summary: "write a memory through the daemon (--type fact|convention|preference|decision|gotcha|reference)" },
|
|
1134
|
+
{ verb: "recall", cls: "storage", group: "memory", summary: "recall memories through the daemon" },
|
|
1135
|
+
{ verb: "memory", cls: "storage", group: "memory", summary: "lifecycle: conflicts (list/resolve), stale-refs (list), inspect <id> --lifecycle (058d)" },
|
|
1136
|
+
{ verb: "sessions", cls: "storage", group: "memory", summary: "list/prune captured sessions through the daemon" },
|
|
1137
|
+
{ verb: "pollinate", cls: "storage", group: "memory", summary: "trigger a pollinating consolidation pass on the daemon (009/026)" },
|
|
1138
|
+
{ verb: "maintenance", cls: "storage", group: "memory", summary: "run version-history compaction over version-bumped tables (030)" },
|
|
1139
|
+
// Knowledge & skills — skills, assets, ontology, the codebase graph, and goals.
|
|
1140
|
+
{ verb: "skill", cls: "storage", group: "knowledge", summary: "skillify scope/pull/unpull/force/promote through the daemon (promote = cross-project, 049c)" },
|
|
1141
|
+
{ verb: "skillify", cls: "storage", group: "knowledge", summary: "pull team skills from the daemon (016c)" },
|
|
1142
|
+
{ verb: "asset", cls: "storage", group: "knowledge", summary: "register/promote/demote/style skills+agents through the tier\xD7style lattice (033)" },
|
|
1143
|
+
{ verb: "ontology", cls: "storage", group: "knowledge", summary: "inspect/propose ontology changes through the daemon" },
|
|
1144
|
+
{ verb: "graph", cls: "storage", group: "knowledge", summary: "build/query the codebase graph through the daemon" },
|
|
1145
|
+
{ verb: "sources", cls: "storage", group: "knowledge", summary: "connect/index/purge sources through the daemon" },
|
|
1146
|
+
{ verb: "goal", cls: "storage", group: "knowledge", summary: "manage goals/KPIs through the daemon" },
|
|
1147
|
+
// Agents, routing & config — agent turns, inference routes, secrets, and vault settings.
|
|
1148
|
+
{ verb: "agent", cls: "storage", group: "agents", summary: "run an agent turn through the daemon" },
|
|
1149
|
+
{ verb: "route", cls: "storage", group: "agents", summary: "manage inference routes through the daemon" },
|
|
1150
|
+
{ verb: "secret", cls: "storage", group: "agents", summary: "manage named secrets through the daemon" },
|
|
1151
|
+
{ verb: "settings", cls: "storage", group: "agents", summary: "get/set/list vault settings + provider\u2192model selector through the daemon" },
|
|
1152
|
+
// Account & workspaces — auth, identity, and the org/workspace/project scope surface.
|
|
1153
|
+
{ verb: "login", cls: "auth", group: "account", summary: "authenticate via device flow, or --token <key> for headless (023)" },
|
|
1154
|
+
{ verb: "logout", cls: "auth", group: "account", summary: "remove the shared credentials and sign out (023)" },
|
|
1155
|
+
{ verb: "whoami", cls: "auth", group: "account", summary: "show the authenticated user, org, and workspace (GET /me)" },
|
|
1156
|
+
{ verb: "org", cls: "auth", group: "account", summary: "list/switch org (passthrough to the auth dispatcher)" },
|
|
1157
|
+
{ verb: "workspace", cls: "auth", group: "account", summary: "list/switch/use workspace (passthrough to the auth dispatcher)" },
|
|
1158
|
+
{ verb: "workspaces", cls: "auth", group: "account", summary: "list workspaces in the active org (alias of `workspace list`)" },
|
|
1159
|
+
{ verb: "project", cls: "auth", group: "account", summary: "list/bind/use projects + show the resolved per-folder scope (049d)" },
|
|
1160
|
+
// Setup & system — install/onboard, daemon lifecycle, dashboard, hooks, telemetry, update.
|
|
1161
|
+
{ verb: "setup", cls: "local", group: "system", summary: "detect assistants, wire hooks, bring up the daemon" },
|
|
1162
|
+
{ verb: "install", cls: "local", group: "system", summary: "bring up the daemon (health-gated) + open the dashboard (PRD-050a)" },
|
|
1163
|
+
{ verb: "status", cls: "local", group: "system", summary: "daemon connectivity + login + D1\u2013D5 environment health" },
|
|
1164
|
+
{ verb: "daemon", cls: "local", group: "system", summary: "start | stop | status the loopback daemon (3850)" },
|
|
1165
|
+
{ verb: "dashboard", cls: "local", group: "system", summary: "launch the daemon-served dashboard (020b)" },
|
|
1166
|
+
{ verb: "hook", cls: "local", group: "system", summary: "inspect/wire harness hooks" },
|
|
1167
|
+
{ verb: "telemetry", cls: "local", group: "system", summary: "show exactly what adoption telemetry has been / would be sent (--show, PRD-050e)" },
|
|
1168
|
+
{ verb: "update", cls: "local", group: "system", summary: "self-update the CLI, daemon, and bundles" },
|
|
1169
|
+
{ verb: "uninstall", cls: "local", group: "system", summary: "reverse only Honeycomb's changes" }
|
|
1046
1170
|
]);
|
|
1047
1171
|
var DEFAULT_GLOBAL_FLAGS = Object.freeze({
|
|
1048
1172
|
help: false,
|
|
@@ -1095,7 +1219,7 @@ function createLoopbackDaemonClient(options = {}) {
|
|
|
1095
1219
|
|
|
1096
1220
|
// dist/src/daemon/runtime/assets/device.js
|
|
1097
1221
|
import { randomUUID } from "node:crypto";
|
|
1098
|
-
import { mkdirSync as mkdirSync6, readFileSync as
|
|
1222
|
+
import { mkdirSync as mkdirSync6, readFileSync as readFileSync9, writeFileSync as writeFileSync6 } from "node:fs";
|
|
1099
1223
|
import { homedir as homedir7, hostname } from "node:os";
|
|
1100
1224
|
import { dirname as dirname5, join as join7 } from "node:path";
|
|
1101
1225
|
function honeycombHomeDir(homeDir = homedir7()) {
|
|
@@ -1125,7 +1249,7 @@ function loadOrCreateDevice(options = {}) {
|
|
|
1125
1249
|
}
|
|
1126
1250
|
function readDeviceRecord(filePath) {
|
|
1127
1251
|
try {
|
|
1128
|
-
const parsed = JSON.parse(
|
|
1252
|
+
const parsed = JSON.parse(readFileSync9(filePath, "utf-8"));
|
|
1129
1253
|
if (typeof parsed !== "object" || parsed === null)
|
|
1130
1254
|
return null;
|
|
1131
1255
|
const r = parsed;
|
|
@@ -15871,7 +15995,7 @@ async function runCaptureGuarded(env, ctx, capture, onError) {
|
|
|
15871
15995
|
|
|
15872
15996
|
// dist/src/hooks/shared/project-resolver.js
|
|
15873
15997
|
import { execFileSync } from "node:child_process";
|
|
15874
|
-
import { existsSync as existsSync6, mkdirSync as mkdirSync7, readFileSync as
|
|
15998
|
+
import { existsSync as existsSync6, mkdirSync as mkdirSync7, readFileSync as readFileSync10, writeFileSync as writeFileSync7 } from "node:fs";
|
|
15875
15999
|
import { homedir as homedir8 } from "node:os";
|
|
15876
16000
|
import { dirname as dirname6, join as join8, resolve as resolve3, sep } from "node:path";
|
|
15877
16001
|
var UNSORTED_PROJECT_ID = "__unsorted__";
|
|
@@ -15907,7 +16031,7 @@ function loadProjectsCache(dir) {
|
|
|
15907
16031
|
return emptyProjectsCache();
|
|
15908
16032
|
let raw;
|
|
15909
16033
|
try {
|
|
15910
|
-
raw =
|
|
16034
|
+
raw = readFileSync10(path, "utf8");
|
|
15911
16035
|
} catch {
|
|
15912
16036
|
return emptyProjectsCache();
|
|
15913
16037
|
}
|