@legioncodeinc/honeycomb 0.1.13 → 0.1.14

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.
Files changed (42) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/LICENSE +661 -661
  4. package/README.md +314 -283
  5. package/assets/logos/honeycomb-memory-cluster.svg +17 -17
  6. package/assets/readme.md +117 -117
  7. package/assets/styles.css +11 -11
  8. package/assets/tokens/base.css +76 -76
  9. package/assets/tokens/colors.css +111 -111
  10. package/assets/tokens/fonts.css +32 -32
  11. package/assets/tokens/spacing.css +48 -48
  12. package/assets/tokens/typography.css +38 -38
  13. package/bundle/cli.js +522 -190
  14. package/daemon/index.js +43493 -43073
  15. package/daemon/restart-helper.js +0 -0
  16. package/embeddings/embed-daemon.js +1 -1
  17. package/harnesses/claude-code/.claude-plugin/plugin.json +2 -2
  18. package/harnesses/claude-code/bundle/capture.js +0 -0
  19. package/harnesses/claude-code/bundle/index.js +0 -0
  20. package/harnesses/claude-code/bundle/pre-tool-use.js +0 -0
  21. package/harnesses/claude-code/bundle/session-end.js +0 -0
  22. package/harnesses/claude-code/bundle/session-start.js +0 -0
  23. package/harnesses/claude-code/hooks/hooks.json +86 -86
  24. package/harnesses/codex/bundle/capture.js +0 -0
  25. package/harnesses/codex/bundle/index.js +0 -0
  26. package/harnesses/codex/bundle/pre-tool-use.js +0 -0
  27. package/harnesses/codex/bundle/session-start.js +0 -0
  28. package/harnesses/codex/package.json +2 -2
  29. package/harnesses/cursor/bundle/capture.js +0 -0
  30. package/harnesses/cursor/bundle/index.js +0 -0
  31. package/harnesses/cursor/bundle/pre-tool-use.js +0 -0
  32. package/harnesses/cursor/bundle/session-end.js +0 -0
  33. package/harnesses/cursor/bundle/session-start.js +0 -0
  34. package/harnesses/hermes/bundle/index.js +0 -0
  35. package/harnesses/openclaw/dist/index.js +1 -1
  36. package/harnesses/openclaw/openclaw.plugin.json +1 -1
  37. package/harnesses/openclaw/package.json +2 -2
  38. package/harnesses/pi/bundle/index.js +0 -0
  39. package/mcp/bundle/server.js +1 -1
  40. package/package.json +144 -144
  41. package/scripts/ensure-embed-deps.mjs +67 -67
  42. package/scripts/ensure-tree-sitter.mjs +89 -89
@@ -1,67 +1,67 @@
1
- #!/usr/bin/env node
2
- // PRD-025 Wave 2 (D-2 / D-3 / AC-1 / AC-7) — first-run embedding-deps heal.
3
- //
4
- // Mirrors scripts/ensure-tree-sitter.mjs: a fast, NON-FATAL sanity check run from
5
- // the `postinstall` hook. It HEALS NOTHING heavy and DOWNLOADS NOTHING here — the
6
- // ~600 MB model is acquired LATER, lazily, on the daemon's first warmup (D-2: the
7
- // model is acquired at first run, NEVER packed into the npm tarball; D-3: the
8
- // download is background-warm and never blocks login or the first recall). This
9
- // script only REPORTS whether the optional inference stack
10
- // (`@huggingface/transformers`) resolved, so a consumer sees one clear line at
11
- // install time instead of an opaque failure when the daemon later tries to warm.
12
- //
13
- // Why it stays in the `files` allowlist + `postinstall`: parity with
14
- // ensure-tree-sitter (the install hook references it by path), and a deterministic,
15
- // non-fatal install experience. It ALWAYS exits 0 (unless strict CI mode) — an
16
- // end-user `npm i` must NEVER hard-break because the optional embed stack is absent;
17
- // embeddings simply stay OFF until the deps are present (the BM25 lexical fallback
18
- // has no quality cliff — PRD-025 D-4).
19
-
20
- import { createRequire } from "node:module";
21
-
22
- const ROOT = process.cwd();
23
- const require = createRequire(`${ROOT}/`);
24
-
25
- // Recursion guard for nested npm calls (parity with ensure-tree-sitter).
26
- if (process.env.ENSURE_EMBED_RUNNING) process.exit(0);
27
-
28
- // The opt-OUT (PRD-025 D-1): an explicit `HONEYCOMB_EMBEDDINGS=false`/`0` means the
29
- // user does not want embeddings — say so and exit cleanly, never probing.
30
- const raw = (process.env.HONEYCOMB_EMBEDDINGS ?? "").trim().toLowerCase();
31
- if (raw === "false" || raw === "0") {
32
- console.error(
33
- "[ensure-embed-deps] HONEYCOMB_EMBEDDINGS opt-out set — embeddings disabled, recall is lexical-only. Skipping.",
34
- );
35
- process.exit(0);
36
- }
37
-
38
- // The optional inference stack. It is an `optionalDependency` (~600 MB with its
39
- // native ONNX runtime), so a slimmed / offline / `--no-optional` install legitimately
40
- // lacks it. Resolve-only: we do NOT import it (importing would load native bindings
41
- // at install time — exactly what we avoid; the daemon loads it lazily on warmup).
42
- let present = true;
43
- try {
44
- require.resolve("@huggingface/transformers");
45
- } catch {
46
- present = false;
47
- }
48
-
49
- if (present) {
50
- console.error(
51
- "[ensure-embed-deps] OK — @huggingface/transformers present. The nomic-embed-text-v1.5 model " +
52
- "(~600 MB) downloads + caches on first daemon warmup (one time), then reuses the cached dir.",
53
- );
54
- process.exit(0);
55
- }
56
-
57
- // Absent: this is the COMMON, non-error case for a lean install. Embeddings stay OFF
58
- // and recall is the BM25/ILIKE lexical fallback (no quality cliff — D-4). In strict CI
59
- // mode a missing optional stack can be made a hard signal; otherwise it is informational.
60
- const strict = process.env.HONEYCOMB_STRICT_POSTINSTALL === "1";
61
- console.error(
62
- "[ensure-embed-deps] @huggingface/transformers not installed — semantic recall is OFF; recall " +
63
- "falls back to lexical (BM25/ILIKE), which is fine. To enable semantic recall, install the " +
64
- "optional embedding deps (`npm i @huggingface/transformers`) and restart the daemon." +
65
- (strict ? " (strict mode — failing this install)" : " (non-fatal)"),
66
- );
67
- process.exit(strict ? 1 : 0);
1
+ #!/usr/bin/env node
2
+ // PRD-025 Wave 2 (D-2 / D-3 / AC-1 / AC-7) — first-run embedding-deps heal.
3
+ //
4
+ // Mirrors scripts/ensure-tree-sitter.mjs: a fast, NON-FATAL sanity check run from
5
+ // the `postinstall` hook. It HEALS NOTHING heavy and DOWNLOADS NOTHING here — the
6
+ // ~600 MB model is acquired LATER, lazily, on the daemon's first warmup (D-2: the
7
+ // model is acquired at first run, NEVER packed into the npm tarball; D-3: the
8
+ // download is background-warm and never blocks login or the first recall). This
9
+ // script only REPORTS whether the optional inference stack
10
+ // (`@huggingface/transformers`) resolved, so a consumer sees one clear line at
11
+ // install time instead of an opaque failure when the daemon later tries to warm.
12
+ //
13
+ // Why it stays in the `files` allowlist + `postinstall`: parity with
14
+ // ensure-tree-sitter (the install hook references it by path), and a deterministic,
15
+ // non-fatal install experience. It ALWAYS exits 0 (unless strict CI mode) — an
16
+ // end-user `npm i` must NEVER hard-break because the optional embed stack is absent;
17
+ // embeddings simply stay OFF until the deps are present (the BM25 lexical fallback
18
+ // has no quality cliff — PRD-025 D-4).
19
+
20
+ import { createRequire } from "node:module";
21
+
22
+ const ROOT = process.cwd();
23
+ const require = createRequire(`${ROOT}/`);
24
+
25
+ // Recursion guard for nested npm calls (parity with ensure-tree-sitter).
26
+ if (process.env.ENSURE_EMBED_RUNNING) process.exit(0);
27
+
28
+ // The opt-OUT (PRD-025 D-1): an explicit `HONEYCOMB_EMBEDDINGS=false`/`0` means the
29
+ // user does not want embeddings — say so and exit cleanly, never probing.
30
+ const raw = (process.env.HONEYCOMB_EMBEDDINGS ?? "").trim().toLowerCase();
31
+ if (raw === "false" || raw === "0") {
32
+ console.error(
33
+ "[ensure-embed-deps] HONEYCOMB_EMBEDDINGS opt-out set — embeddings disabled, recall is lexical-only. Skipping.",
34
+ );
35
+ process.exit(0);
36
+ }
37
+
38
+ // The optional inference stack. It is an `optionalDependency` (~600 MB with its
39
+ // native ONNX runtime), so a slimmed / offline / `--no-optional` install legitimately
40
+ // lacks it. Resolve-only: we do NOT import it (importing would load native bindings
41
+ // at install time — exactly what we avoid; the daemon loads it lazily on warmup).
42
+ let present = true;
43
+ try {
44
+ require.resolve("@huggingface/transformers");
45
+ } catch {
46
+ present = false;
47
+ }
48
+
49
+ if (present) {
50
+ console.error(
51
+ "[ensure-embed-deps] OK — @huggingface/transformers present. The nomic-embed-text-v1.5 model " +
52
+ "(~600 MB) downloads + caches on first daemon warmup (one time), then reuses the cached dir.",
53
+ );
54
+ process.exit(0);
55
+ }
56
+
57
+ // Absent: this is the COMMON, non-error case for a lean install. Embeddings stay OFF
58
+ // and recall is the BM25/ILIKE lexical fallback (no quality cliff — D-4). In strict CI
59
+ // mode a missing optional stack can be made a hard signal; otherwise it is informational.
60
+ const strict = process.env.HONEYCOMB_STRICT_POSTINSTALL === "1";
61
+ console.error(
62
+ "[ensure-embed-deps] @huggingface/transformers not installed — semantic recall is OFF; recall " +
63
+ "falls back to lexical (BM25/ILIKE), which is fine. To enable semantic recall, install the " +
64
+ "optional embedding deps (`npm i @huggingface/transformers`) and restart the daemon." +
65
+ (strict ? " (strict mode — failing this install)" : " (non-fatal)"),
66
+ );
67
+ process.exit(strict ? 1 : 0);
@@ -1,89 +1,89 @@
1
- #!/usr/bin/env node
2
- // Confirms the tree-sitter WASM parser stack is present and loadable after install
3
- // (PRD-014 codebase graph, D-1). This script HEALS NOTHING and COMPILES NOTHING:
4
- // the parser is `web-tree-sitter` (a WASM/emscripten runtime) + `tree-sitter-wasms`
5
- // (prebuilt `.wasm` grammars), so there is no native binding to build, no node-gyp,
6
- // no C/C++ toolchain, and no per-platform/per-ABI compile. That is the whole point
7
- // of choosing WASM over native `tree-sitter` + `tree-sitter-<lang>`: the install is
8
- // deterministic and identical across the CI matrix (ubuntu Node 22/24 + windows-smoke),
9
- // with no postinstall compile that could break Windows or linux-arm64.
10
- //
11
- // Why this file still exists (and stays in the `files` allowlist + `postinstall`):
12
- // 1. Backwards-compatible name — the build script + CI reference `rebuild:native`
13
- // and `postinstall` by this path; keeping it avoids churn in those surfaces.
14
- // 2. A fast, non-fatal SANITY check: if a consumer's install dropped a grammar
15
- // `.wasm` (a partial extract, a pruned `node_modules`), we say so clearly
16
- // rather than letting the daemon fail later with an opaque WASM load error.
17
- //
18
- // It ALWAYS exits 0 (unless explicitly run in strict CI mode and a grammar is
19
- // genuinely missing): an end-user consumer must never get a hard install break from
20
- // this hook.
21
- import { existsSync } from "node:fs";
22
- import { createRequire } from "node:module";
23
-
24
- const ROOT = process.cwd();
25
- const require = createRequire(`${ROOT}/`);
26
-
27
- // Recursion guard for nested npm calls (kept for parity with prior behaviour).
28
- if (process.env.ENSURE_TS_RUNNING) process.exit(0);
29
-
30
- // The nine PRD-014 languages map to these grammar `.wasm` files (TS routes both
31
- // `tree-sitter-typescript` and `tree-sitter-tsx`). Located by resolving the
32
- // `tree-sitter-wasms` package and reading its `out/` directory — the SAME anchor
33
- // the runtime extractor uses (`src/daemon/runtime/codebase/extract.ts`).
34
- const GRAMMARS = [
35
- "tree-sitter-typescript",
36
- "tree-sitter-tsx",
37
- "tree-sitter-javascript",
38
- "tree-sitter-python",
39
- "tree-sitter-go",
40
- "tree-sitter-rust",
41
- "tree-sitter-java",
42
- "tree-sitter-ruby",
43
- "tree-sitter-c",
44
- "tree-sitter-cpp",
45
- ];
46
-
47
- // Greenfield / not-yet-installed short-circuit: if the parser deps are not present
48
- // (a checkout before `npm install`, or a slimmed environment), there is nothing to
49
- // check. Log and exit 0 so `npm install` / `npm run rebuild:native` never breaks.
50
- let wasmDir;
51
- try {
52
- wasmDir = require.resolve("tree-sitter-wasms/package.json").replace(/package\.json$/, "out/");
53
- } catch {
54
- console.error(
55
- "[ensure-tree-sitter] web-tree-sitter / tree-sitter-wasms not installed yet — nothing to check. Skipping.",
56
- );
57
- process.exit(0);
58
- }
59
-
60
- // Confirm the web-tree-sitter runtime resolves too (it carries its own
61
- // `tree-sitter.wasm` emscripten runtime loaded at parse time).
62
- let runtimeOk = true;
63
- try {
64
- require.resolve("web-tree-sitter");
65
- } catch {
66
- runtimeOk = false;
67
- }
68
-
69
- const missing = GRAMMARS.filter((g) => !existsSync(`${wasmDir}${g}.wasm`));
70
-
71
- if (runtimeOk && missing.length === 0) {
72
- console.error(
73
- `[ensure-tree-sitter] OK — web-tree-sitter runtime + ${GRAMMARS.length} WASM grammars present (no native build needed).`,
74
- );
75
- process.exit(0);
76
- }
77
-
78
- // Something is missing. In strict CI mode (HONEYCOMB_STRICT_POSTINSTALL=1) this is a
79
- // hard failure so a partial install surfaces as a red check; otherwise it is a
80
- // non-fatal warning so an end-user install never breaks.
81
- const strict = process.env.HONEYCOMB_STRICT_POSTINSTALL === "1";
82
- console.error(
83
- "[ensure-tree-sitter] WARNING: tree-sitter WASM stack incomplete — " +
84
- (runtimeOk ? "" : "web-tree-sitter runtime not resolvable; ") +
85
- (missing.length ? `missing grammars: ${missing.join(", ")}. ` : "") +
86
- "Re-run `npm install` to restore the parser deps." +
87
- (strict ? " (strict mode — failing this install)" : " (non-fatal)"),
88
- );
89
- process.exit(strict ? 1 : 0);
1
+ #!/usr/bin/env node
2
+ // Confirms the tree-sitter WASM parser stack is present and loadable after install
3
+ // (PRD-014 codebase graph, D-1). This script HEALS NOTHING and COMPILES NOTHING:
4
+ // the parser is `web-tree-sitter` (a WASM/emscripten runtime) + `tree-sitter-wasms`
5
+ // (prebuilt `.wasm` grammars), so there is no native binding to build, no node-gyp,
6
+ // no C/C++ toolchain, and no per-platform/per-ABI compile. That is the whole point
7
+ // of choosing WASM over native `tree-sitter` + `tree-sitter-<lang>`: the install is
8
+ // deterministic and identical across the CI matrix (ubuntu Node 22/24 + windows-smoke),
9
+ // with no postinstall compile that could break Windows or linux-arm64.
10
+ //
11
+ // Why this file still exists (and stays in the `files` allowlist + `postinstall`):
12
+ // 1. Backwards-compatible name — the build script + CI reference `rebuild:native`
13
+ // and `postinstall` by this path; keeping it avoids churn in those surfaces.
14
+ // 2. A fast, non-fatal SANITY check: if a consumer's install dropped a grammar
15
+ // `.wasm` (a partial extract, a pruned `node_modules`), we say so clearly
16
+ // rather than letting the daemon fail later with an opaque WASM load error.
17
+ //
18
+ // It ALWAYS exits 0 (unless explicitly run in strict CI mode and a grammar is
19
+ // genuinely missing): an end-user consumer must never get a hard install break from
20
+ // this hook.
21
+ import { existsSync } from "node:fs";
22
+ import { createRequire } from "node:module";
23
+
24
+ const ROOT = process.cwd();
25
+ const require = createRequire(`${ROOT}/`);
26
+
27
+ // Recursion guard for nested npm calls (kept for parity with prior behaviour).
28
+ if (process.env.ENSURE_TS_RUNNING) process.exit(0);
29
+
30
+ // The nine PRD-014 languages map to these grammar `.wasm` files (TS routes both
31
+ // `tree-sitter-typescript` and `tree-sitter-tsx`). Located by resolving the
32
+ // `tree-sitter-wasms` package and reading its `out/` directory — the SAME anchor
33
+ // the runtime extractor uses (`src/daemon/runtime/codebase/extract.ts`).
34
+ const GRAMMARS = [
35
+ "tree-sitter-typescript",
36
+ "tree-sitter-tsx",
37
+ "tree-sitter-javascript",
38
+ "tree-sitter-python",
39
+ "tree-sitter-go",
40
+ "tree-sitter-rust",
41
+ "tree-sitter-java",
42
+ "tree-sitter-ruby",
43
+ "tree-sitter-c",
44
+ "tree-sitter-cpp",
45
+ ];
46
+
47
+ // Greenfield / not-yet-installed short-circuit: if the parser deps are not present
48
+ // (a checkout before `npm install`, or a slimmed environment), there is nothing to
49
+ // check. Log and exit 0 so `npm install` / `npm run rebuild:native` never breaks.
50
+ let wasmDir;
51
+ try {
52
+ wasmDir = require.resolve("tree-sitter-wasms/package.json").replace(/package\.json$/, "out/");
53
+ } catch {
54
+ console.error(
55
+ "[ensure-tree-sitter] web-tree-sitter / tree-sitter-wasms not installed yet — nothing to check. Skipping.",
56
+ );
57
+ process.exit(0);
58
+ }
59
+
60
+ // Confirm the web-tree-sitter runtime resolves too (it carries its own
61
+ // `tree-sitter.wasm` emscripten runtime loaded at parse time).
62
+ let runtimeOk = true;
63
+ try {
64
+ require.resolve("web-tree-sitter");
65
+ } catch {
66
+ runtimeOk = false;
67
+ }
68
+
69
+ const missing = GRAMMARS.filter((g) => !existsSync(`${wasmDir}${g}.wasm`));
70
+
71
+ if (runtimeOk && missing.length === 0) {
72
+ console.error(
73
+ `[ensure-tree-sitter] OK — web-tree-sitter runtime + ${GRAMMARS.length} WASM grammars present (no native build needed).`,
74
+ );
75
+ process.exit(0);
76
+ }
77
+
78
+ // Something is missing. In strict CI mode (HONEYCOMB_STRICT_POSTINSTALL=1) this is a
79
+ // hard failure so a partial install surfaces as a red check; otherwise it is a
80
+ // non-fatal warning so an end-user install never breaks.
81
+ const strict = process.env.HONEYCOMB_STRICT_POSTINSTALL === "1";
82
+ console.error(
83
+ "[ensure-tree-sitter] WARNING: tree-sitter WASM stack incomplete — " +
84
+ (runtimeOk ? "" : "web-tree-sitter runtime not resolvable; ") +
85
+ (missing.length ? `missing grammars: ${missing.join(", ")}. ` : "") +
86
+ "Re-run `npm install` to restore the parser deps." +
87
+ (strict ? " (strict mode — failing this install)" : " (non-fatal)"),
88
+ );
89
+ process.exit(strict ? 1 : 0);