@legioncodeinc/honeycomb 0.1.6 → 0.1.8

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.
@@ -5,13 +5,13 @@
5
5
  },
6
6
  "metadata": {
7
7
  "description": "Honeycomb — persistent memory daemon and thin harness clients for AI coding assistants",
8
- "version": "0.1.6"
8
+ "version": "0.1.8"
9
9
  },
10
10
  "plugins": [
11
11
  {
12
12
  "name": "honeycomb",
13
13
  "description": "Honeycomb Claude Code plugin — captures session activity and provides cross-session memory through the local daemon",
14
- "version": "0.1.6",
14
+ "version": "0.1.8",
15
15
  "source": "./harnesses/claude-code"
16
16
  }
17
17
  ]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "honeycomb",
3
3
  "description": "Honeycomb — a long-lived daemon plus thin clients for six coding harnesses, the unified honeycomb CLI, the MCP server, and the embed daemon",
4
- "version": "0.1.6",
4
+ "version": "0.1.8",
5
5
  "author": {
6
6
  "name": "Honeycomb"
7
7
  },
package/bundle/cli.js CHANGED
@@ -15981,7 +15981,17 @@ var StorageConfigSchema = external_exports.object({
15981
15981
  /** Per-statement timeout, clamped non-negative. */
15982
15982
  queryTimeoutMs: QueryTimeoutMs.default(DEFAULT_QUERY_TIMEOUT_MS),
15983
15983
  /** SQL tracing gate (FR-6). Evaluated at call time, see client.ts. */
15984
- traceSql: external_exports.boolean().default(false)
15984
+ traceSql: external_exports.boolean().default(false),
15985
+ /**
15986
+ * Query-meter persistence gate (PRD-062a). RESERVED, NOT YET IMPLEMENTED. The
15987
+ * query meter's default posture is in-memory + structured-log only and adds
15988
+ * ZERO DeepLake queries; persisting per-source counts to the existing
15989
+ * `telemetry_counters` tenant group is a later, separate concern and would add
15990
+ * write cost, so it is gated behind this flag. Today the flag is parsed and
15991
+ * carried but nothing reads it for behavior — wiring persistence is out of
15992
+ * scope for this sub-PRD (it must not make the meter itself a write-cost driver).
15993
+ */
15994
+ queryMeterPersist: external_exports.boolean().default(false)
15985
15995
  });
15986
15996
 
15987
15997
  // dist/src/daemon/storage/converge.js
@@ -17225,7 +17235,7 @@ function buildAllowedProperties(input) {
17225
17235
  }
17226
17236
  var systemTelemetryClock = () => (/* @__PURE__ */ new Date()).toISOString();
17227
17237
  var DEFAULT_EMIT_TIMEOUT_MS = 2e3;
17228
- var HONEYCOMB_VERSION = true ? "0.1.6" : "0.0.0-dev";
17238
+ var HONEYCOMB_VERSION = true ? "0.1.8" : "0.0.0-dev";
17229
17239
  async function emitTelemetry(event, opts, deps = {}) {
17230
17240
  const env = deps.env ?? process.env;
17231
17241
  const key = deps.posthogKey ?? POSTHOG_KEY;
@@ -17253,8 +17263,8 @@ async function emitTelemetry(event, opts, deps = {}) {
17253
17263
  if (isReported(state, event))
17254
17264
  return { sent: false, skipped: "already_reported", properties };
17255
17265
  const distinctId = state.installId;
17256
- const ok = await postCapture(event, properties, distinctId, key, deps);
17257
- if (!ok)
17266
+ const ok2 = await postCapture(event, properties, distinctId, key, deps);
17267
+ if (!ok2)
17258
17268
  return { sent: false, skipped: "send_failed", properties };
17259
17269
  const clock = deps.clock ?? systemTelemetryClock;
17260
17270
  const at = clock();
@@ -17368,7 +17378,7 @@ function renderGlassBoxText(view) {
17368
17378
  // dist/src/shared/constants.js
17369
17379
  var DAEMON_PORT = 3850;
17370
17380
  var DAEMON_HOST = "127.0.0.1";
17371
- var HONEYCOMB_VERSION2 = true ? "0.1.6" : "0.0.0-dev";
17381
+ var HONEYCOMB_VERSION2 = true ? "0.1.8" : "0.0.0-dev";
17372
17382
  var PRODUCT_SLUG = "honeycomb";
17373
17383
 
17374
17384
  // dist/src/commands/install.js
@@ -18129,6 +18139,51 @@ var ROUTER_HISTORY_COLUMNS = Object.freeze([
18129
18139
  { name: "workspace_id", sql: "TEXT NOT NULL DEFAULT ''" },
18130
18140
  { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" }
18131
18141
  ]);
18142
+ var ROI_METRICS_COLUMNS = Object.freeze([
18143
+ { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
18144
+ { name: "session_id", sql: "TEXT NOT NULL DEFAULT ''" },
18145
+ { name: "org_id", sql: "TEXT NOT NULL DEFAULT ''" },
18146
+ { name: "workspace_id", sql: "TEXT NOT NULL DEFAULT ''" },
18147
+ { name: "agent_id", sql: "TEXT NOT NULL DEFAULT 'default'" },
18148
+ { name: "project_id", sql: "TEXT NOT NULL DEFAULT ''" },
18149
+ { name: "team_id", sql: "TEXT NOT NULL DEFAULT ''" },
18150
+ // GATED: '' until a verified backend-token claim populates it (f-AC-6/f-AC-7).
18151
+ { name: "user_id", sql: "TEXT NOT NULL DEFAULT ''" },
18152
+ { name: "input_tokens", sql: "BIGINT NOT NULL DEFAULT 0" },
18153
+ { name: "output_tokens", sql: "BIGINT NOT NULL DEFAULT 0" },
18154
+ { name: "cache_read_tokens", sql: "BIGINT NOT NULL DEFAULT 0" },
18155
+ { name: "cache_creation_tokens", sql: "BIGINT NOT NULL DEFAULT 0" },
18156
+ // MEASURED / MODELED / GROSS / INFRA money — BIGINT integer cents, never FLOAT (f-AC-4).
18157
+ { name: "measured_cache_savings_cents", sql: "BIGINT NOT NULL DEFAULT 0" },
18158
+ { name: "modeled_savings_cents", sql: "BIGINT NOT NULL DEFAULT 0" },
18159
+ { name: "modeled_assumption_ref", sql: "TEXT NOT NULL DEFAULT ''" },
18160
+ { name: "gross_cost_cents", sql: "BIGINT NOT NULL DEFAULT 0" },
18161
+ { name: "infra_cost_cents", sql: "BIGINT NOT NULL DEFAULT 0" },
18162
+ // cost_basis ∈ {measured, allocated, none}; allocation_method '' unless allocated (f-AC-5).
18163
+ { name: "cost_basis", sql: "TEXT NOT NULL DEFAULT 'none'" },
18164
+ { name: "allocation_method", sql: "TEXT NOT NULL DEFAULT ''" },
18165
+ { name: "price_ref", sql: "TEXT NOT NULL DEFAULT ''" },
18166
+ { name: "period_start", sql: "TEXT NOT NULL DEFAULT ''" },
18167
+ { name: "period_end", sql: "TEXT NOT NULL DEFAULT ''" },
18168
+ { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" }
18169
+ ]);
18170
+ var ROI_COST_BASES = Object.freeze(["measured", "allocated", "none"]);
18171
+ var TEAMS_COLUMNS = Object.freeze([
18172
+ { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
18173
+ { name: "team_id", sql: "TEXT NOT NULL DEFAULT ''" },
18174
+ { name: "team_name", sql: "TEXT NOT NULL DEFAULT ''" },
18175
+ // 'agent' rows work today; 'user' rows inert until user_id verified.
18176
+ { name: "member_type", sql: "TEXT NOT NULL DEFAULT 'agent'" },
18177
+ { name: "member_id", sql: "TEXT NOT NULL DEFAULT ''" },
18178
+ { name: "role", sql: "TEXT NOT NULL DEFAULT 'member'" },
18179
+ { name: "active", sql: "BIGINT NOT NULL DEFAULT 1" },
18180
+ { name: "org_id", sql: "TEXT NOT NULL DEFAULT ''" },
18181
+ { name: "workspace_id", sql: "TEXT NOT NULL DEFAULT ''" },
18182
+ { name: "version", sql: "BIGINT NOT NULL DEFAULT 0" },
18183
+ { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" },
18184
+ { name: "updated_at", sql: "TEXT NOT NULL DEFAULT ''" }
18185
+ ]);
18186
+ var TEAM_MEMBER_TYPES = Object.freeze(["agent", "user"]);
18132
18187
  var TENANCY_TABLES = defineGroup([
18133
18188
  {
18134
18189
  name: "agents",
@@ -18167,6 +18222,25 @@ var TENANCY_TABLES = defineGroup([
18167
18222
  pattern: "append-only",
18168
18223
  embeddingColumns: [],
18169
18224
  scope: "tenant"
18225
+ },
18226
+ {
18227
+ // PRD-060f (f-AC-1/f-AC-2): the shared spend ledger. APPEND-ONLY — one
18228
+ // immutable row per session, a re-price APPENDs a new row (new price_ref),
18229
+ // NEVER an in-place UPDATE; the canonical row is MAX(created_at) per session.
18230
+ name: "roi_metrics",
18231
+ columns: ROI_METRICS_COLUMNS,
18232
+ pattern: "append-only",
18233
+ embeddingColumns: [],
18234
+ scope: "tenant"
18235
+ },
18236
+ {
18237
+ // PRD-060f (f-AC-8): the roster. VERSION-BUMPED — one row per (team, member),
18238
+ // an edit APPENDs version N+1, read ORDER BY version DESC (same as api_keys).
18239
+ name: "teams",
18240
+ columns: TEAMS_COLUMNS,
18241
+ pattern: "version-bumped",
18242
+ embeddingColumns: [],
18243
+ scope: "tenant"
18170
18244
  }
18171
18245
  ]);
18172
18246
  var SCRYPT_PARAMS = Object.freeze({ N: 16384, r: 8, p: 1, keyLen: 32 });
@@ -19826,8 +19900,8 @@ function probeCli() {
19826
19900
  function probeCursorAgent() {
19827
19901
  try {
19828
19902
  const probe = process.platform === "win32" ? spawnSync2("where", ["cursor-agent"], { stdio: "ignore", windowsHide: true }) : spawnSync2("which", ["cursor-agent"], { stdio: "ignore", windowsHide: true });
19829
- const ok = probe.status === 0;
19830
- return ok ? { ok: true, detail: "on PATH" } : { ok: false, detail: "cursor-agent not on PATH" };
19903
+ const ok2 = probe.status === 0;
19904
+ return ok2 ? { ok: true, detail: "on PATH" } : { ok: false, detail: "cursor-agent not on PATH" };
19831
19905
  } catch (err) {
19832
19906
  return { ok: false, detail: err instanceof Error ? err.message : "probe failed" };
19833
19907
  }
@@ -19893,6 +19967,27 @@ var EMPTY_DASHBOARD_DATA = Object.freeze({
19893
19967
  rules: { rules: [] },
19894
19968
  skillSync: { skills: [] }
19895
19969
  });
19970
+ var EMPTY_ROI_VIEW = Object.freeze({
19971
+ savings: {
19972
+ status: "absent",
19973
+ measuredCents: 0,
19974
+ modeledCents: 0,
19975
+ assumption: { kind: "", assumptionText: "", signedOff: false },
19976
+ blendedCentsPerMtok: null
19977
+ },
19978
+ infra: { status: "absent", cents: 0, costBasis: "none" },
19979
+ pollination: { status: "absent", cents: 0, lines: [] },
19980
+ net: { status: "absent", computed: false, netCents: 0, modeled: true, costBasis: "none" },
19981
+ rollups: [],
19982
+ perUserAvailable: false,
19983
+ scopedAcrossDevices: false,
19984
+ ratesAsOf: ""
19985
+ });
19986
+ var EMPTY_ROI_TREND = Object.freeze({
19987
+ status: "absent",
19988
+ series: [],
19989
+ startedAt: ""
19990
+ });
19896
19991
 
19897
19992
  // dist/src/dashboard/views.js
19898
19993
  var GRAPH_BUILD_PROMPT = "Run `honeycomb graph build` to build the codebase graph.";