greprag 5.74.17 → 5.74.18

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.
@@ -180,6 +180,22 @@ function crushField(content, stash, thresholdBytes = exports.DEFAULT_THRESHOLD_B
180
180
  return `${crushed}\n${ccrMarker(hash)}`;
181
181
  }
182
182
  // ---------- Message-array walker ----------------------------------------------
183
+ /** Resolve the bash command string from a tool part, regardless of whether
184
+ * the part is a tool_use (carries .input.command) or a tool_result (may
185
+ * carry .name, .tool, or .toolName). Returns an empty string when the
186
+ * command cannot be resolved. */
187
+ function resolveRetrieveCommand(p) {
188
+ const input = p.input;
189
+ if (input && typeof input.command === 'string')
190
+ return input.command;
191
+ const toolName = (typeof p.name === 'string' && p.name) ||
192
+ (typeof p.tool === 'string' && p.tool) ||
193
+ (typeof p.toolName === 'string' && p.toolName);
194
+ // opencode may carry the full command string in .name / .tool
195
+ if (toolName)
196
+ return toolName;
197
+ return '';
198
+ }
183
199
  /** Apply crushField to one object's string field, accounting stats and
184
200
  * mutating in place on a real crush. When a `memo` is supplied, the heavy
185
201
  * crushField path is skipped for content already seen this session — the
@@ -245,9 +261,11 @@ function processPart(part, stash, thresholdBytes, stats, memo) {
245
261
  // Skip re-crushing output of greprag retrieve — the original was
246
262
  // already stashed once; crushing it again creates an infinite
247
263
  // marker→retrieve→same marker loop.
248
- const input = p.input;
249
- const cmd = input && typeof input.command === 'string' ? input.command : '';
250
- if (cmd.includes('greprag retrieve')) {
264
+ // The tool name / command may live on p.input.command (tool_use
265
+ // part) or on p.name / p.tool (tool_result part) depending on
266
+ // the opencode message format version.
267
+ const cmd = resolveRetrieveCommand(p);
268
+ if (cmd && cmd.includes('greprag retrieve')) {
251
269
  stats.partsSkipped++;
252
270
  }
253
271
  else {
@@ -22,18 +22,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  mod
23
23
  ));
24
24
 
25
- // src/opencode-plugin.ts
25
+ // ../greprag/packages/cli/src/opencode-plugin.ts
26
26
  var crypto5 = __toESM(require("crypto"));
27
27
  var fs7 = __toESM(require("fs"));
28
28
  var os2 = __toESM(require("os"));
29
29
  var path7 = __toESM(require("path"));
30
30
 
31
- // src/opencode-plugin-helpers.ts
31
+ // ../greprag/packages/cli/src/opencode-plugin-helpers.ts
32
32
  var crypto = __toESM(require("crypto"));
33
33
  var fs = __toESM(require("fs"));
34
34
  var path = __toESM(require("path"));
35
35
 
36
- // src/proc.ts
36
+ // ../greprag/packages/cli/src/proc.ts
37
37
  var import_child_process = require("child_process");
38
38
  function safeExecSync(command, options) {
39
39
  return (0, import_child_process.execSync)(command, { windowsHide: true, ...options });
@@ -45,7 +45,7 @@ function safeSpawn(command, argsOrOptions, maybeOptions) {
45
45
  return (0, import_child_process.spawn)(command, { windowsHide: true, ...argsOrOptions });
46
46
  }
47
47
 
48
- // src/opencode-plugin-helpers.ts
48
+ // ../greprag/packages/cli/src/opencode-plugin-helpers.ts
49
49
  var HOME = process.env.HOME || process.env.USERPROFILE || "";
50
50
  function readAnchorFile(filePath) {
51
51
  try {
@@ -272,7 +272,7 @@ async function buildRecapBody(apiUrl, apiKey, anchor, now = /* @__PURE__ */ new
272
272
  return parts.join("\n");
273
273
  }
274
274
 
275
- // src/crush/crush-types.ts
275
+ // ../greprag/packages/cli/src/crush/crush-types.ts
276
276
  function estimateTokens(text) {
277
277
  return Math.ceil(text.length / 4);
278
278
  }
@@ -292,7 +292,7 @@ function makePassthrough(content, sourceType, reason, units = 0) {
292
292
  };
293
293
  }
294
294
 
295
- // src/crush/adaptive-sizer.ts
295
+ // ../greprag/packages/cli/src/crush/adaptive-sizer.ts
296
296
  function fnv1a(s, seed) {
297
297
  let h = (2166136261 ^ seed) >>> 0;
298
298
  for (let i = 0; i < s.length; i++) {
@@ -394,7 +394,7 @@ function computeOptimalK(items, bias, minK, maxK) {
394
394
  return Math.max(minK, Math.min(k, effectiveMax));
395
395
  }
396
396
 
397
- // src/crush/crush-keywords.ts
397
+ // ../greprag/packages/cli/src/crush/crush-keywords.ts
398
398
  var ERROR_KEYWORDS = [
399
399
  "error",
400
400
  "exception",
@@ -467,7 +467,7 @@ function classifyImportance(line) {
467
467
  return null;
468
468
  }
469
469
 
470
- // src/crush/search-compressor.ts
470
+ // ../greprag/packages/cli/src/crush/search-compressor.ts
471
471
  var DEFAULT_SEARCH_CONFIG = {
472
472
  maxMatchesPerFile: 5,
473
473
  alwaysKeepFirst: true,
@@ -630,7 +630,7 @@ function crushSearch(content, query = "", config = {}) {
630
630
  };
631
631
  }
632
632
 
633
- // src/crush/log-compressor.ts
633
+ // ../greprag/packages/cli/src/crush/log-compressor.ts
634
634
  var DEFAULT_LOG_CONFIG = {
635
635
  maxErrors: 10,
636
636
  errorContextLines: 3,
@@ -941,7 +941,7 @@ function crushLog(content, config = {}) {
941
941
  };
942
942
  }
943
943
 
944
- // src/crush/json-detectors.ts
944
+ // ../greprag/packages/cli/src/crush/json-detectors.ts
945
945
  function classifyArray(items) {
946
946
  if (items.length === 0)
947
947
  return "empty";
@@ -1101,7 +1101,7 @@ function detectErrorItems(items) {
1101
1101
  return out;
1102
1102
  }
1103
1103
 
1104
- // src/crush/json-crusher.ts
1104
+ // ../greprag/packages/cli/src/crush/json-crusher.ts
1105
1105
  var DEFAULT_JSON_CONFIG = {
1106
1106
  minItemsToAnalyze: 10,
1107
1107
  maxItemsAfterCrush: 15,
@@ -1312,7 +1312,7 @@ function crushJson(content, config = {}) {
1312
1312
  };
1313
1313
  }
1314
1314
 
1315
- // src/crush/code-compressor.ts
1315
+ // ../greprag/packages/cli/src/crush/code-compressor.ts
1316
1316
  var DEFAULT_CODE_CONFIG = {
1317
1317
  minLines: 8,
1318
1318
  maxBodyLines: 3
@@ -1599,7 +1599,7 @@ function crushCode(content, config = {}) {
1599
1599
  };
1600
1600
  }
1601
1601
 
1602
- // src/opencode-plugin-crush.ts
1602
+ // ../greprag/packages/cli/src/opencode-plugin-crush.ts
1603
1603
  var CCR_MARKER_HASH_LEN = 16;
1604
1604
  function ccrMarker(hash) {
1605
1605
  return `<<ccr:${hash.slice(0, CCR_MARKER_HASH_LEN)}>>`;
@@ -1664,6 +1664,15 @@ function crushField(content, stash, thresholdBytes = DEFAULT_THRESHOLD_BYTES) {
1664
1664
  return `${crushed}
1665
1665
  ${ccrMarker(hash)}`;
1666
1666
  }
1667
+ function resolveRetrieveCommand(p) {
1668
+ const input = p.input;
1669
+ if (input && typeof input.command === "string")
1670
+ return input.command;
1671
+ const toolName = typeof p.name === "string" && p.name || typeof p.tool === "string" && p.tool || typeof p.toolName === "string" && p.toolName;
1672
+ if (toolName)
1673
+ return toolName;
1674
+ return "";
1675
+ }
1667
1676
  function crushAndApply(obj, key, stash, thresholdBytes, stats, memo) {
1668
1677
  const content = obj[key];
1669
1678
  if (typeof content !== "string")
@@ -1713,9 +1722,8 @@ function processPart(part, stash, thresholdBytes, stats, memo) {
1713
1722
  if (p.type === "tool" && p.state && typeof p.state === "object") {
1714
1723
  const state = p.state;
1715
1724
  if (state.status === "completed" && typeof state.output === "string") {
1716
- const input = p.input;
1717
- const cmd = input && typeof input.command === "string" ? input.command : "";
1718
- if (cmd.includes("greprag retrieve")) {
1725
+ const cmd = resolveRetrieveCommand(p);
1726
+ if (cmd && cmd.includes("greprag retrieve")) {
1719
1727
  stats.partsSkipped++;
1720
1728
  } else {
1721
1729
  crushAndApply(state, "output", stash, thresholdBytes, stats, memo);
@@ -1751,7 +1759,7 @@ function crushMessages(messages, opts) {
1751
1759
  return stats;
1752
1760
  }
1753
1761
 
1754
- // src/commands/os-primer-reminder.ts
1762
+ // ../greprag/packages/cli/src/commands/os-primer-reminder.ts
1755
1763
  function buildOsPrimer(env) {
1756
1764
  const spawnEntry = env?.platform === "codex" ? "codex-chip-spawn" : env?.platform === "opencode" ? "chip-bootloader" : "chip-spawn";
1757
1765
  return [
@@ -1771,7 +1779,7 @@ var osPrimerModule = {
1771
1779
  reminder: () => null
1772
1780
  };
1773
1781
 
1774
- // src/session-id.ts
1782
+ // ../greprag/packages/cli/src/session-id.ts
1775
1783
  function armMonitorCommand(short, ownerPid, assistant = false, mechanic = false) {
1776
1784
  const owner = ownerPid ? ` --owner-pid ${ownerPid}` : "";
1777
1785
  const role = mechanic ? " --mechanic" : assistant ? " --assistant" : "";
@@ -1779,7 +1787,7 @@ function armMonitorCommand(short, ownerPid, assistant = false, mechanic = false)
1779
1787
  return `while true; do ${watch}; case $? in 0|64) break;; esac; sleep 1; done`;
1780
1788
  }
1781
1789
 
1782
- // src/commands/inbox-primer-reminder.ts
1790
+ // ../greprag/packages/cli/src/commands/inbox-primer-reminder.ts
1783
1791
  function buildInboxPrimer(env) {
1784
1792
  const codex = env.platform === "codex";
1785
1793
  const opencode = env.platform === "opencode";
@@ -1817,7 +1825,7 @@ var inboxPrimerModule = {
1817
1825
  reminder: () => null
1818
1826
  };
1819
1827
 
1820
- // src/commands/load-primer-reminder.ts
1828
+ // ../greprag/packages/cli/src/commands/load-primer-reminder.ts
1821
1829
  var LOAD_PRIMER = [
1822
1830
  "[greprag load \u2014 on-demand doctrine. greprag ships its own methods inside the CLI; you never need a `.md` file or a CLAUDE.md entry to use them.]",
1823
1831
  "\u2022 `greprag load` \u2192 browse the catalog (every doctrine entry + its one-line purpose).",
@@ -1869,7 +1877,7 @@ var codexChipSpawnPointerModule = {
1869
1877
  reminder: () => null
1870
1878
  };
1871
1879
 
1872
- // src/commands/email-primer-reminder.ts
1880
+ // ../greprag/packages/cli/src/commands/email-primer-reminder.ts
1873
1881
  var EMAIL_PRIMER = [
1874
1882
  "[greprag email \u2014 the agent's REAL mailbox (actual inbound + outbound SMTP), distinct from `greprag send` (internal session mesh, never real email).]",
1875
1883
  '\u2022 SEND real mail: `greprag email send --to <addr> --subject "s" (--body "t" | --body-file <f|->)` \u2014 from your <handle>@greprag.com. Flags: --html-file (rich body) \xB7 --attach (repeatable) \xB7 --cc/--bcc \xB7 --reply-to \xB7 --from-name \xB7 --from <your-own-handle> (server rejects any address that isn\'t yours \u2014 no forging).',
@@ -1886,7 +1894,7 @@ var emailPrimerModule = {
1886
1894
  reminder: () => null
1887
1895
  };
1888
1896
 
1889
- // src/commands/corpus-reminder.ts
1897
+ // ../greprag/packages/cli/src/commands/corpus-reminder.ts
1890
1898
  function buildCorpusAnnounce(names) {
1891
1899
  if (!names || names.length === 0)
1892
1900
  return null;
@@ -1906,7 +1914,7 @@ var corpusAnnounceModule = {
1906
1914
  reminder: () => null
1907
1915
  };
1908
1916
 
1909
- // src/commands/doc-pointer-reminder.ts
1917
+ // ../greprag/packages/cli/src/commands/doc-pointer-reminder.ts
1910
1918
  var ANNOUNCE_CAP = 20;
1911
1919
  function buildDocPointerAnnounce(pointers) {
1912
1920
  if (!pointers || pointers.length === 0)
@@ -1938,7 +1946,7 @@ var docPointerAnnounceModule = {
1938
1946
  reminder: () => null
1939
1947
  };
1940
1948
 
1941
- // src/commands/setup-reminder.ts
1949
+ // ../greprag/packages/cli/src/commands/setup-reminder.ts
1942
1950
  function setupDetect(env) {
1943
1951
  return env.setupWarning ? { tier: "nudge" } : { tier: "silent" };
1944
1952
  }
@@ -1949,7 +1957,7 @@ var setupWarningModule = {
1949
1957
  reminder: () => null
1950
1958
  };
1951
1959
 
1952
- // src/commands/assistant-reminder.ts
1960
+ // ../greprag/packages/cli/src/commands/assistant-reminder.ts
1953
1961
  function assistantDetect(env) {
1954
1962
  return env.assistantDoctrine ? { tier: "ambient" } : { tier: "silent" };
1955
1963
  }
@@ -1960,7 +1968,7 @@ var assistantDoctrineModule = {
1960
1968
  reminder: () => null
1961
1969
  };
1962
1970
 
1963
- // src/commands/memory-reflex.ts
1971
+ // ../greprag/packages/cli/src/commands/memory-reflex.ts
1964
1972
  function buildMemoryAnnounce() {
1965
1973
  return [
1966
1974
  "[greprag memory \u2014 this project remembers. Every past session (decisions, bugs, what was discussed, who did what) is captured and searchable.]",
@@ -1974,7 +1982,7 @@ var memoryPrimerModule = {
1974
1982
  reminder: () => null
1975
1983
  };
1976
1984
 
1977
- // src/commands/arm-reminder.ts
1985
+ // ../greprag/packages/cli/src/commands/arm-reminder.ts
1978
1986
  function armDetect(env) {
1979
1987
  if (env.armed)
1980
1988
  return { tier: "silent" };
@@ -2004,11 +2012,11 @@ var watcherArmModule = {
2004
2012
  reminder: (d, env) => buildArmReminder(d, env)
2005
2013
  };
2006
2014
 
2007
- // src/commands/state-trigger.ts
2015
+ // ../greprag/packages/cli/src/commands/state-trigger.ts
2008
2016
  var STRESS_ELEVATED = 1;
2009
2017
  var STRESS_HIGH = 2;
2010
2018
 
2011
- // src/commands/friction-reminder.ts
2019
+ // ../greprag/packages/cli/src/commands/friction-reminder.ts
2012
2020
  function quoteForCommand(value) {
2013
2021
  return value.replace(/[\r\n]+/g, " ").replace(/"/g, '\\"').trim();
2014
2022
  }
@@ -2073,7 +2081,7 @@ var mechanicFrictionModule = {
2073
2081
  }
2074
2082
  };
2075
2083
 
2076
- // src/commands/coordinate-gate.ts
2084
+ // ../greprag/packages/cli/src/commands/coordinate-gate.ts
2077
2085
  var RISKY_PATTERNS = [
2078
2086
  { kind: "merge", label: "gh pr merge", re: /^gh\s+pr\s+merge\b/ },
2079
2087
  { kind: "deploy", label: "wrangler deploy", re: /^(?:npx\s+)?wrangler\s+deploy\b/ },
@@ -2190,7 +2198,7 @@ function buildCoordinateDirective(trigger, peers, myShort, alias) {
2190
2198
  return `COORDINATE before ${trigger.label}: ${peers.length} peer${plural} live in this repo (${list}). Ping before proceeding. Codex peers: use codex_app.list_threads and codex_app.send_message_to_thread. GrepRAG watcher/cross-harness peers: greprag send "heads up, about to ${trigger.label}" --to ${handle}@greprag.com/<8hex> --from-session ${myShort}`;
2191
2199
  }
2192
2200
 
2193
- // src/commands/collision-reminder.ts
2201
+ // ../greprag/packages/cli/src/commands/collision-reminder.ts
2194
2202
  var collisionMatchModule = {
2195
2203
  id: "collision",
2196
2204
  source: "command",
@@ -2215,7 +2223,7 @@ var collisionMatchModule = {
2215
2223
  }
2216
2224
  };
2217
2225
 
2218
- // src/commands/version-reminder.ts
2226
+ // ../greprag/packages/cli/src/commands/version-reminder.ts
2219
2227
  function buildVersionAnnounce(current, latest) {
2220
2228
  return [
2221
2229
  `[greprag \u2014 a new release is out: v${latest} (you are on v${current}).]`,
@@ -2256,7 +2264,7 @@ var versionUpgradeModule = {
2256
2264
  reminder: () => null
2257
2265
  };
2258
2266
 
2259
- // src/commands/enrichment-health-reminder.ts
2267
+ // ../greprag/packages/cli/src/commands/enrichment-health-reminder.ts
2260
2268
  function buildEnrichmentHealthAnnounce(down) {
2261
2269
  if (!down || !down.errorClass)
2262
2270
  return null;
@@ -2275,7 +2283,7 @@ var enrichmentHealthModule = {
2275
2283
  reminder: () => null
2276
2284
  };
2277
2285
 
2278
- // src/commands/skill-gain-reminder.ts
2286
+ // ../greprag/packages/cli/src/commands/skill-gain-reminder.ts
2279
2287
  function buildSkillGainAnnounce(gains) {
2280
2288
  if (!gains || gains.landed.length === 0)
2281
2289
  return null;
@@ -2294,7 +2302,7 @@ var skillGainAnnounceModule = {
2294
2302
  reminder: () => null
2295
2303
  };
2296
2304
 
2297
- // src/commands/skill-mirror-reminder.ts
2305
+ // ../greprag/packages/cli/src/commands/skill-mirror-reminder.ts
2298
2306
  var SKILL_ACTIVATION_MANIFEST_MAX_CHARS = 64e3;
2299
2307
  function renderEntry(skill) {
2300
2308
  const description = skill.triggerDescription.trim().replace(/\r\n?/g, "\n");
@@ -2347,7 +2355,7 @@ var skillMirrorAnnounceModule = {
2347
2355
  reminder: () => null
2348
2356
  };
2349
2357
 
2350
- // src/commands/procedure-reminder.ts
2358
+ // ../greprag/packages/cli/src/commands/procedure-reminder.ts
2351
2359
  function buildProcedureAnnounce(lines) {
2352
2360
  const active = (lines ?? []).map((s) => s.trim()).filter(Boolean);
2353
2361
  if (!active.length)
@@ -2365,7 +2373,7 @@ var procedureAnnounceModule = {
2365
2373
  reminder: () => null
2366
2374
  };
2367
2375
 
2368
- // src/commands/loadout-reminder.ts
2376
+ // ../greprag/packages/cli/src/commands/loadout-reminder.ts
2369
2377
  function matchLoadouts(promptText, equipped) {
2370
2378
  const prompt = (promptText || "").toLowerCase();
2371
2379
  if (!prompt.trim() || !equipped || equipped.length === 0)
@@ -2404,7 +2412,7 @@ var loadoutRegistrarModule = {
2404
2412
  reminder: (d) => buildLoadoutReminder(d.detail?.matched || [])
2405
2413
  };
2406
2414
 
2407
- // src/commands/delivery-reminder.ts
2415
+ // ../greprag/packages/cli/src/commands/delivery-reminder.ts
2408
2416
  function coordinationLine(platform) {
2409
2417
  if (platform === "codex") {
2410
2418
  return "Codex: at the merge/deploy gate, call codex_app.list_threads unfiltered, filter to peers in the same repo, then use codex_app.send_message_to_thread once for ready or overlapping work. Delivery owner: rename this task `DEPLOY: <existing title>`; transfer the prefix on handoff; remove the prefix when delivery is done.";
@@ -2436,7 +2444,7 @@ var deliveryControlModule = {
2436
2444
  reminder: () => null
2437
2445
  };
2438
2446
 
2439
- // src/commands/reminder-registry.ts
2447
+ // ../greprag/packages/cli/src/commands/reminder-registry.ts
2440
2448
  var REGISTRY = [
2441
2449
  osPrimerModule,
2442
2450
  // grepragOS constitution — the frame every other primer hangs off; boots FIRST
@@ -2531,7 +2539,7 @@ function collectAnnounces(env, registry = REGISTRY) {
2531
2539
  return out;
2532
2540
  }
2533
2541
 
2534
- // src/commands/opencode-interrupt.ts
2542
+ // ../greprag/packages/cli/src/commands/opencode-interrupt.ts
2535
2543
  var opencodeRegistry = harnessModules("opencode");
2536
2544
  var OPENCODE_QUOTA_WAITLIST_ANNOUNCE = [
2537
2545
  "[GrepRAG quota decision rule]",
@@ -2570,11 +2578,11 @@ function getOpenCodeReminders(env) {
2570
2578
  return collectReminders(env, opencodeRegistry);
2571
2579
  }
2572
2580
 
2573
- // src/procedure.ts
2581
+ // ../greprag/packages/cli/src/procedure.ts
2574
2582
  var path2 = __toESM(require("path"));
2575
2583
  var fs2 = __toESM(require("fs"));
2576
2584
 
2577
- // src/delivery-lifecycle.ts
2585
+ // ../greprag/packages/cli/src/delivery-lifecycle.ts
2578
2586
  var DELIVERY_LIFECYCLE_VERBS = [
2579
2587
  "commit",
2580
2588
  "merge",
@@ -2587,7 +2595,7 @@ function isDeliveryLifecycleVerb(verb) {
2587
2595
  return DELIVERY_LIFECYCLE_SET.has((verb || "").trim().toLowerCase());
2588
2596
  }
2589
2597
 
2590
- // src/procedure.ts
2598
+ // ../greprag/packages/cli/src/procedure.ts
2591
2599
  var PROCEDURE_STORE_VERSION = "2";
2592
2600
  function stateDir() {
2593
2601
  const home = process.env.HOME || process.env.USERPROFILE || "";
@@ -2828,10 +2836,10 @@ function activeProcedureAnnounces(store) {
2828
2836
  return lines;
2829
2837
  }
2830
2838
 
2831
- // src/procedure-runtime.ts
2839
+ // ../greprag/packages/cli/src/procedure-runtime.ts
2832
2840
  var crypto4 = __toESM(require("crypto"));
2833
2841
 
2834
- // src/project-anchor.ts
2842
+ // ../greprag/packages/cli/src/project-anchor.ts
2835
2843
  var path3 = __toESM(require("path"));
2836
2844
  var fs3 = __toESM(require("fs"));
2837
2845
  var crypto2 = __toESM(require("crypto"));
@@ -3013,7 +3021,7 @@ function readAnchor2(cwd) {
3013
3021
  };
3014
3022
  }
3015
3023
 
3016
- // src/procedure-watch.ts
3024
+ // ../greprag/packages/cli/src/procedure-watch.ts
3017
3025
  var path4 = __toESM(require("path"));
3018
3026
  var fs4 = __toESM(require("fs"));
3019
3027
  var TIER1_LEARN_TRIGGERS = [
@@ -3074,7 +3082,7 @@ function openWatchIfIdle(projectId, verb, phase, shadowRunId) {
3074
3082
  return true;
3075
3083
  }
3076
3084
 
3077
- // src/procedure-shadow.ts
3085
+ // ../greprag/packages/cli/src/procedure-shadow.ts
3078
3086
  var crypto3 = __toESM(require("crypto"));
3079
3087
  var fs5 = __toESM(require("fs"));
3080
3088
  var path5 = __toESM(require("path"));
@@ -3140,7 +3148,7 @@ function recordMissingLifecycleShadowTrigger(params) {
3140
3148
  });
3141
3149
  }
3142
3150
 
3143
- // src/procedure-runtime.ts
3151
+ // ../greprag/packages/cli/src/procedure-runtime.ts
3144
3152
  function extractLatestOpenCodeProcedurePrompt(messages) {
3145
3153
  let userCount = 0;
3146
3154
  let latest = null;
@@ -3226,7 +3234,7 @@ function runProcedurePromptCheck(params) {
3226
3234
  }
3227
3235
  }
3228
3236
 
3229
- // src/archive/glyph-font.ts
3237
+ // ../greprag/packages/cli/src/archive/glyph-font.ts
3230
3238
  var GLYPH_W = 8;
3231
3239
  var GLYPH_H = 8;
3232
3240
  var FIRST_CODE = 32;
@@ -3350,7 +3358,7 @@ function signatureForRows(bytes) {
3350
3358
  return bytes.map((b) => (b & 255).toString(16).padStart(2, "0")).join("");
3351
3359
  }
3352
3360
 
3353
- // src/archive/png-codec.ts
3361
+ // ../greprag/packages/cli/src/archive/png-codec.ts
3354
3362
  var zlib = __toESM(require("zlib"));
3355
3363
  var PNG_SIGNATURE = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]);
3356
3364
  var crcTable = null;
@@ -3492,7 +3500,7 @@ function decodePng(buf) {
3492
3500
  return { width, height, pixels };
3493
3501
  }
3494
3502
 
3495
- // src/archive/page-renderer.ts
3503
+ // ../greprag/packages/cli/src/archive/page-renderer.ts
3496
3504
  var PAGE_SIZE = 1568;
3497
3505
  var CELL_W = GLYPH_W;
3498
3506
  var CELL_H = 10;
@@ -3618,7 +3626,7 @@ function verifyRoundTrip(page) {
3618
3626
  return `length mismatch: rendered ${a.length} decoded ${b.length}`;
3619
3627
  }
3620
3628
 
3621
- // src/opencode-plugin-png.ts
3629
+ // ../greprag/packages/cli/src/opencode-plugin-png.ts
3622
3630
  var CCR_MARKER_HASH_LEN2 = 16;
3623
3631
  function ccrPngMarker(hash) {
3624
3632
  return `<<ccr:${hash.slice(0, CCR_MARKER_HASH_LEN2)}>>`;
@@ -3808,7 +3816,7 @@ function recodeMessagesToPng(messages, opts) {
3808
3816
  return stats;
3809
3817
  }
3810
3818
 
3811
- // src/skill-activation-manifest.ts
3819
+ // ../greprag/packages/cli/src/skill-activation-manifest.ts
3812
3820
  var fs6 = __toESM(require("fs"));
3813
3821
  var path6 = __toESM(require("path"));
3814
3822
  var MAX_NATIVE_SKILL_FILES = 1500;
@@ -3909,7 +3917,7 @@ function activationFromApiRows(params) {
3909
3917
  return buildMirroredSkillActivation(entries, readNativeSkillNames(params));
3910
3918
  }
3911
3919
 
3912
- // src/opencode-plugin.ts
3920
+ // ../greprag/packages/cli/src/opencode-plugin.ts
3913
3921
  var DEBUG_LOG_PATH = path7.join(os2.homedir(), ".greprag", "opencode-plugin-debug.log");
3914
3922
  var _debugLogReady = false;
3915
3923
  function dlogInit() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greprag",
3
- "version": "5.74.17",
3
+ "version": "5.74.18",
4
4
  "description": "GrepRAG — agent memory for Claude Code, Codex, and OpenCode.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {