pi-goosedump 0.13.5 → 0.13.7

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 (3) hide show
  1. package/README.md +10 -10
  2. package/dist/index.ts +88 -88
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # pi-goosedump
2
2
 
3
3
  Pi extension for session search, durable memory, session management, and
4
- compaction. Canonical tools use the `gooseDump_` prefix (with legacy `goose_` aliases supported).
4
+ compaction. Canonical tools use the `goosedump_` prefix (with legacy `goose_` aliases supported).
5
5
 
6
6
  ## Install
7
7
 
@@ -15,20 +15,20 @@ packaged binary.
15
15
 
16
16
  ## Tools
17
17
 
18
- - `gooseDump_search` and `gooseDump_grep` find session entries.
19
- - `gooseDump_get` expands entry IDs to full content.
20
- - `gooseDump_remember`, `gooseDump_recall`, and `gooseDump_forget` manage durable memory.
21
- - `gooseDump_memory_status` reports memory storage health.
22
- - `gooseDump_compact` compacts the current Pi session.
23
- - `gooseDump_sessions` lists or deletes sessions for the current project.
18
+ - `goosedump_search` and `goosedump_grep` find session entries.
19
+ - `goosedump_get` expands entry IDs to full content.
20
+ - `goosedump_remember`, `goosedump_recall`, and `goosedump_forget` manage durable memory.
21
+ - `goosedump_memory_status` reports memory storage health.
22
+ - `goosedump_compact` compacts the current Pi session.
23
+ - `goosedump_sessions` lists or deletes sessions for the current project.
24
24
 
25
- Search and grep return entry IDs; call `gooseDump_get` before relying on their
25
+ Search and grep return entry IDs; call `goosedump_get` before relying on their
26
26
  content. Non-Pi providers require an explicit session ID.
27
27
 
28
28
  ## Commands
29
29
 
30
- `/goose-search`, `/goose-compact`, `/goose-sessions`, `/goose-forget`,
31
- `/goose-memory-status`, and `/goose-settings`.
30
+ `/goosedump-search`, `/goosedump-compact`, `/goosedump-sessions`, `/goosedump-forget`,
31
+ `/goosedump-memory-status`, and `/goosedump-settings`.
32
32
 
33
33
  ## Settings
34
34
 
package/dist/index.ts CHANGED
@@ -685,7 +685,7 @@ async function goosedumpCompact(target, options, signal, executablePath) {
685
685
  continue;
686
686
  }
687
687
  }
688
- return { summary: output.stdout.trim(), warning: output.stderr.trim() };
688
+ return { summary: "", warning: output.stderr.trim() };
689
689
  }
690
690
  function currentSessionTarget(ctx) {
691
691
  const sessionManager = ctx.sessionManager;
@@ -740,7 +740,7 @@ function settingSpecFromSchema(schema) {
740
740
  return { kind: "number", min: minimum, max: maximum };
741
741
  }
742
742
  var GOOSEDUMP_SETTING_SPECS = Object.fromEntries(GOOSEDUMP_SETTING_KEYS.map((key) => [key, settingSpecFromSchema(GOOSEDUMP_SETTING_SCHEMAS[key])]));
743
- var MEMORY_DISABLED_MESSAGE = "Durable memory is disabled. Set goosedump.enableMemory to true in settings (or /goose-settings).";
743
+ var MEMORY_DISABLED_MESSAGE = "Durable memory is disabled. Set goosedump.enableMemory to true in settings (or /goosedump-settings).";
744
744
  function isValidGoosedumpSettingValue(key, value) {
745
745
  return Value3.Check(GOOSEDUMP_SETTING_SCHEMAS[key], value);
746
746
  }
@@ -1715,27 +1715,27 @@ function hideMemoryActivity(ctx) {
1715
1715
 
1716
1716
  // src/policy.ts
1717
1717
  var GOOSEDUMP_TOOL_NAMES = [
1718
- "gooseDump_remember",
1719
- "gooseDump_recall",
1720
- "gooseDump_forget",
1721
- "gooseDump_memory_status",
1722
- "gooseDump_search",
1723
- "gooseDump_get",
1724
- "gooseDump_grep",
1725
- "gooseDump_compact",
1726
- "gooseDump_sessions"
1718
+ "goosedump_remember",
1719
+ "goosedump_recall",
1720
+ "goosedump_forget",
1721
+ "goosedump_memory_status",
1722
+ "goosedump_search",
1723
+ "goosedump_get",
1724
+ "goosedump_grep",
1725
+ "goosedump_compact",
1726
+ "goosedump_sessions"
1727
1727
  ];
1728
1728
  var GOOSE_TOOL_NAMES = GOOSEDUMP_TOOL_NAMES;
1729
1729
  var LEGACY_TO_CANONICAL_TOOL_NAMES = {
1730
- goose_remember: "gooseDump_remember",
1731
- goose_recall: "gooseDump_recall",
1732
- goose_forget: "gooseDump_forget",
1733
- goose_memory_status: "gooseDump_memory_status",
1734
- goose_search: "gooseDump_search",
1735
- goose_get: "gooseDump_get",
1736
- goose_grep: "gooseDump_grep",
1737
- goose_compact: "gooseDump_compact",
1738
- goose_sessions: "gooseDump_sessions"
1730
+ goose_remember: "goosedump_remember",
1731
+ goose_recall: "goosedump_recall",
1732
+ goose_forget: "goosedump_forget",
1733
+ goose_memory_status: "goosedump_memory_status",
1734
+ goose_search: "goosedump_search",
1735
+ goose_get: "goosedump_get",
1736
+ goose_grep: "goosedump_grep",
1737
+ goose_compact: "goosedump_compact",
1738
+ goose_sessions: "goosedump_sessions"
1739
1739
  };
1740
1740
  function resolveCanonicalToolName(name) {
1741
1741
  if (GOOSEDUMP_TOOL_NAMES.includes(name)) {
@@ -1762,14 +1762,14 @@ var PARAM_DESCRIPTIONS = {
1762
1762
  sessionsDeleteId: "Session ID to delete (required for action: delete)"
1763
1763
  };
1764
1764
  var HISTORY_TARGET_GUIDELINE = "Default to the current Pi session; non-Pi providers require an explicit session ID.";
1765
- var HISTORY_WORKFLOW_GUIDELINE = "Prefer gooseDump_search or gooseDump_grep for candidate entry IDs, then gooseDump_get before quoting or acting on prior session content.";
1766
- var PREFER_REMEMBER = "Prefer gooseDump_remember after milestones instead of restating durable facts in prompts.";
1767
- var PREFER_RECALL = "Prefer gooseDump_recall over re-asking the user or re-deriving settled project context.";
1768
- var PREFER_HISTORY = "Prefer gooseDump_search or gooseDump_grep, then gooseDump_get, over replaying full history or guessing prior work.";
1769
- var PREFER_COMPACT = "Prefer gooseDump_compact when context is large, repetitive, or nearing limits; optional keep:N keeps the last N user turns.";
1770
- var PREFER_SESSIONS = "Prefer gooseDump_sessions for cwd session discovery/delete; use gooseDump_forget / gooseDump_memory_status to maintain durable memory.";
1765
+ var HISTORY_WORKFLOW_GUIDELINE = "Prefer goosedump_search or goosedump_grep for candidate entry IDs, then goosedump_get before quoting or acting on prior session content.";
1766
+ var PREFER_REMEMBER = "Prefer goosedump_remember after milestones instead of restating durable facts in prompts.";
1767
+ var PREFER_RECALL = "Prefer goosedump_recall over re-asking the user or re-deriving settled project context.";
1768
+ var PREFER_HISTORY = "Prefer goosedump_search or goosedump_grep, then goosedump_get, over replaying full history or guessing prior work.";
1769
+ var PREFER_COMPACT = "Prefer goosedump_compact when context is large, repetitive, or nearing limits; optional keep:N keeps the last N user turns.";
1770
+ var PREFER_SESSIONS = "Prefer goosedump_sessions for cwd session discovery/delete; use goosedump_forget / goosedump_memory_status to maintain durable memory.";
1771
1771
  var CANONICAL_GOOSE_TOOL_POLICIES = {
1772
- gooseDump_remember: {
1772
+ goosedump_remember: {
1773
1773
  description: "Preferred for background memory learning after milestones. Extracts evidence-backed claims for later recall; defaults to the current Pi session.",
1774
1774
  snippet: "Persist important context from the current or another session into durable memory",
1775
1775
  preference: PREFER_REMEMBER,
@@ -1779,7 +1779,7 @@ var CANONICAL_GOOSE_TOOL_POLICIES = {
1779
1779
  "Defaults to the current Pi session; pass provider/session to learn from another agent session."
1780
1780
  ]
1781
1781
  },
1782
- gooseDump_recall: {
1782
+ goosedump_recall: {
1783
1783
  description: "Preferred for durable project memory before re-asking the user or re-deriving settled decisions. Returns provenance-backed claims, never instructions.",
1784
1784
  snippet: "Recall durable context from earlier sessions",
1785
1785
  preference: PREFER_RECALL,
@@ -1792,59 +1792,59 @@ var CANONICAL_GOOSE_TOOL_POLICIES = {
1792
1792
  "Filter with type when you already know the memory kind (decision, fact, preference, procedure, lesson)."
1793
1793
  ]
1794
1794
  },
1795
- gooseDump_forget: {
1795
+ goosedump_forget: {
1796
1796
  description: "Preferred for tombstoning stale or wrong durable memory by mem_ ID or provider:session.",
1797
1797
  snippet: "Remove obsolete entries from durable memory store",
1798
1798
  guidelines: [
1799
- "Call gooseDump_forget when stored memory is stale, wrong, or should no longer be recalled.",
1799
+ "Call goosedump_forget when stored memory is stale, wrong, or should no longer be recalled.",
1800
1800
  "Target a memory ID (mem_...) or a provider:session to drop that session's retained sources.",
1801
- "Forgotten content leaves a tombstone; use gooseDump_memory_status to inspect remaining store health."
1801
+ "Forgotten content leaves a tombstone; use goosedump_memory_status to inspect remaining store health."
1802
1802
  ]
1803
1803
  },
1804
- gooseDump_memory_status: {
1804
+ goosedump_memory_status: {
1805
1805
  description: "Preferred for diagnosing empty recall, missing embeddings, or unexpected durable-memory volume.",
1806
1806
  snippet: "Inspect durable memory health and statistics",
1807
1807
  guidelines: [
1808
- "Call gooseDump_memory_status when diagnosing empty recall, missing embeddings, or unexpected memory volume.",
1808
+ "Call goosedump_memory_status when diagnosing empty recall, missing embeddings, or unexpected memory volume.",
1809
1809
  "Useful before or after bulk learn/forget operations."
1810
1810
  ]
1811
1811
  },
1812
- gooseDump_search: {
1813
- description: "Preferred for ranked session-history search. Returns compact entry IDs; expand hits with gooseDump_get. Defaults to the current Pi session.",
1812
+ goosedump_search: {
1813
+ description: "Preferred for ranked session-history search. Returns compact entry IDs; expand hits with goosedump_get. Defaults to the current Pi session.",
1814
1814
  snippet: "Search session history by ranked relevance",
1815
1815
  preference: PREFER_HISTORY,
1816
1816
  guidelines: [
1817
1817
  PREFER_HISTORY,
1818
- "Call gooseDump_search to recover relevant prior work from this or another coding-agent session.",
1818
+ "Call goosedump_search to recover relevant prior work from this or another coding-agent session.",
1819
1819
  HISTORY_WORKFLOW_GUIDELINE,
1820
1820
  'Default scope is "lineage" (active branch); use scope: "all" for every branch in the session.',
1821
1821
  "Page results with page when the first page is incomplete.",
1822
1822
  HISTORY_TARGET_GUIDELINE
1823
1823
  ]
1824
1824
  },
1825
- gooseDump_get: {
1826
- description: "Preferred for expanding gooseDump_search/gooseDump_grep entry IDs to full content. Defaults to the current Pi session.",
1825
+ goosedump_get: {
1826
+ description: "Preferred for expanding goosedump_search/goosedump_grep entry IDs to full content. Defaults to the current Pi session.",
1827
1827
  snippet: "Expand session entries by ID to full content",
1828
1828
  guidelines: [
1829
- "Prefer gooseDump_get after gooseDump_search or gooseDump_grep; do not guess full prior content from overviews.",
1829
+ "Prefer goosedump_get after goosedump_search or goosedump_grep; do not guess full prior content from overviews.",
1830
1830
  "Pass only the IDs you need; full transcripts are expensive.",
1831
1831
  'Default scope is "lineage" (active branch); use scope: "all" for every branch in the session.',
1832
1832
  HISTORY_TARGET_GUIDELINE
1833
1833
  ]
1834
1834
  },
1835
- gooseDump_grep: {
1836
- description: "Preferred for glob/substring filtering of session history when ranked search is too fuzzy. Expand hits with gooseDump_get. Defaults to the current Pi session.",
1835
+ goosedump_grep: {
1836
+ description: "Preferred for glob/substring filtering of session history when ranked search is too fuzzy. Expand hits with goosedump_get. Defaults to the current Pi session.",
1837
1837
  snippet: "Filter session history by glob pattern",
1838
1838
  preference: PREFER_HISTORY,
1839
1839
  guidelines: [
1840
1840
  PREFER_HISTORY,
1841
- "Call gooseDump_grep for exact substring or glob matches when ranked search is too fuzzy.",
1841
+ "Call goosedump_grep for exact substring or glob matches when ranked search is too fuzzy.",
1842
1842
  HISTORY_WORKFLOW_GUIDELINE,
1843
1843
  'Default scope is "lineage" (active branch); use scope: "all" for every branch in the session.',
1844
1844
  HISTORY_TARGET_GUIDELINE
1845
1845
  ]
1846
1846
  },
1847
- gooseDump_compact: {
1847
+ goosedump_compact: {
1848
1848
  description: "Preferred for proactive session compaction when context is large or nearing limits. Optional keep:N; runs through Pi's compaction flow.",
1849
1849
  snippet: "Compact session history; optionally keep recent user turns",
1850
1850
  preference: PREFER_COMPACT,
@@ -1855,7 +1855,7 @@ var CANONICAL_GOOSE_TOOL_POLICIES = {
1855
1855
  "Successful compaction may queue background memory learning."
1856
1856
  ]
1857
1857
  },
1858
- gooseDump_sessions: {
1858
+ goosedump_sessions: {
1859
1859
  description: "Preferred for listing or deleting coding-agent sessions scoped to the current working directory.",
1860
1860
  snippet: "List or delete coding agent sessions for current directory",
1861
1861
  preference: PREFER_SESSIONS,
@@ -2062,20 +2062,20 @@ function formatExpandedMemoryStatus(content, theme) {
2062
2062
  function renderGooseDumpRememberCall(args, theme, ...rest) {
2063
2063
  const context = rest[0] ?? {};
2064
2064
  const target = args?.session ? `${args?.provider ?? "pi"}:${args.session}` : "current session";
2065
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_remember")} ${theme.fg("accent", target)}`, context.width);
2065
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_remember")} ${theme.fg("accent", target)}`, context.width);
2066
2066
  return upsertTextComponent(context.lastComponent, text);
2067
2067
  }
2068
2068
  var renderGooseRememberCall = renderGooseDumpRememberCall;
2069
2069
  function renderGooseDumpRememberResult(result, options, theme, ...rest) {
2070
2070
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2071
2071
  if (isPartial)
2072
- return renderPendingResult("pending gooseDump_remember", width, theme);
2072
+ return renderPendingResult("pending goosedump_remember", width, theme);
2073
2073
  const content = result.content?.[0]?.text ?? "";
2074
2074
  if (isError || result.isError) {
2075
2075
  return renderErrorResult(content, {
2076
2076
  expanded,
2077
2077
  width,
2078
- fallback: "gooseDump_remember failed",
2078
+ fallback: "goosedump_remember failed",
2079
2079
  theme
2080
2080
  });
2081
2081
  }
@@ -2098,20 +2098,20 @@ function renderGooseDumpRecallCall(args, theme, ...rest) {
2098
2098
  args?.history && "history"
2099
2099
  ].filter(Boolean);
2100
2100
  const flagsBadge = flags.length > 0 ? theme.fg("dim", ` [${flags.join(", ")}]`) : "";
2101
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_recall")} ${theme.fg("accent", query)}${flagsBadge}`, context.width);
2101
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_recall")} ${theme.fg("accent", query)}${flagsBadge}`, context.width);
2102
2102
  return upsertTextComponent(context.lastComponent, text);
2103
2103
  }
2104
2104
  var renderGooseRecallCall = renderGooseDumpRecallCall;
2105
2105
  function renderGooseDumpRecallResult(result, options, theme, ...rest) {
2106
2106
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2107
2107
  if (isPartial)
2108
- return renderPendingResult("pending gooseDump_recall", width, theme);
2108
+ return renderPendingResult("pending goosedump_recall", width, theme);
2109
2109
  const content = result.content?.[0]?.text ?? "";
2110
2110
  if (isError || result.isError) {
2111
2111
  return renderErrorResult(content, {
2112
2112
  expanded,
2113
2113
  width,
2114
- fallback: "gooseDump_recall failed",
2114
+ fallback: "goosedump_recall failed",
2115
2115
  theme
2116
2116
  });
2117
2117
  }
@@ -2139,20 +2139,20 @@ var renderGooseRecallResult = renderGooseDumpRecallResult;
2139
2139
  function renderGooseDumpForgetCall(args, theme, ...rest) {
2140
2140
  const context = rest[0] ?? {};
2141
2141
  const target = args?.target ? String(args.target) : '""';
2142
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_forget")} ${theme.fg("accent", target)}`, context.width);
2142
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_forget")} ${theme.fg("accent", target)}`, context.width);
2143
2143
  return upsertTextComponent(context.lastComponent, text);
2144
2144
  }
2145
2145
  var renderGooseForgetCall = renderGooseDumpForgetCall;
2146
2146
  function renderGooseDumpForgetResult(result, options, theme, ...rest) {
2147
2147
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2148
2148
  if (isPartial)
2149
- return renderPendingResult("pending gooseDump_forget", width, theme);
2149
+ return renderPendingResult("pending goosedump_forget", width, theme);
2150
2150
  const content = result.content?.[0]?.text ?? "";
2151
2151
  if (isError || result.isError) {
2152
2152
  return renderErrorResult(content, {
2153
2153
  expanded,
2154
2154
  width,
2155
- fallback: "gooseDump_forget failed",
2155
+ fallback: "goosedump_forget failed",
2156
2156
  theme
2157
2157
  });
2158
2158
  }
@@ -2163,20 +2163,20 @@ function renderGooseDumpForgetResult(result, options, theme, ...rest) {
2163
2163
  var renderGooseForgetResult = renderGooseDumpForgetResult;
2164
2164
  function renderGooseDumpMemoryStatusCall(_args, theme, ...rest) {
2165
2165
  const context = rest[0] ?? {};
2166
- const text = clampLineToWidth(renderToolLabel(theme, "gooseDump_memory_status"), context.width);
2166
+ const text = clampLineToWidth(renderToolLabel(theme, "goosedump_memory_status"), context.width);
2167
2167
  return upsertTextComponent(context.lastComponent, text);
2168
2168
  }
2169
2169
  var renderGooseMemoryStatusCall = renderGooseDumpMemoryStatusCall;
2170
2170
  function renderGooseDumpMemoryStatusResult(result, options, theme, ...rest) {
2171
2171
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2172
2172
  if (isPartial)
2173
- return renderPendingResult("pending gooseDump_memory_status", width, theme);
2173
+ return renderPendingResult("pending goosedump_memory_status", width, theme);
2174
2174
  const content = result.content?.[0]?.text ?? "";
2175
2175
  if (isError || result.isError) {
2176
2176
  return renderErrorResult(content, {
2177
2177
  expanded,
2178
2178
  width,
2179
- fallback: "gooseDump_memory_status failed",
2179
+ fallback: "goosedump_memory_status failed",
2180
2180
  theme
2181
2181
  });
2182
2182
  }
@@ -2214,20 +2214,20 @@ function renderGooseDumpSearchCall(args, theme, ...rest) {
2214
2214
  args?.page && args.page > 1 && `page=${args.page}`
2215
2215
  ].filter(Boolean);
2216
2216
  const flagsBadge = flags.length > 0 ? theme.fg("dim", ` [${flags.join(", ")}]`) : "";
2217
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_search")} ${theme.fg("accent", query)}${target}${flagsBadge}`, context.width);
2217
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_search")} ${theme.fg("accent", query)}${target}${flagsBadge}`, context.width);
2218
2218
  return upsertTextComponent(context.lastComponent, text);
2219
2219
  }
2220
2220
  var renderGooseSearchCall = renderGooseDumpSearchCall;
2221
2221
  function renderGooseDumpSearchResult(result, options, theme, ...rest) {
2222
2222
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2223
2223
  if (isPartial)
2224
- return renderPendingResult("pending gooseDump_search", width, theme);
2224
+ return renderPendingResult("pending goosedump_search", width, theme);
2225
2225
  const content = result.content?.[0]?.text ?? "";
2226
2226
  if (isError || result.isError) {
2227
2227
  return renderErrorResult(content, {
2228
2228
  expanded,
2229
2229
  width,
2230
- fallback: "gooseDump_search failed",
2230
+ fallback: "goosedump_search failed",
2231
2231
  theme
2232
2232
  });
2233
2233
  }
@@ -2259,17 +2259,17 @@ function renderGooseDumpGetCall(args, theme, ...rest) {
2259
2259
  const ids = Array.isArray(args?.ids) ? args.ids : [];
2260
2260
  const idsDisplay = ids.length <= 3 ? ids.join(", ") : `${ids.slice(0, 3).join(", ")}… (${ids.length})`;
2261
2261
  const target = args?.session ? theme.fg("dim", ` in ${args.provider ?? "pi"}:${args.session}`) : "";
2262
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_get")} ${theme.fg("accent", `[${idsDisplay}]`)}${target}`, context.width);
2262
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_get")} ${theme.fg("accent", `[${idsDisplay}]`)}${target}`, context.width);
2263
2263
  return upsertTextComponent(context.lastComponent, text);
2264
2264
  }
2265
2265
  var renderGooseGetCall = renderGooseDumpGetCall;
2266
2266
  function renderGooseDumpGetResult(result, options, theme, ...rest) {
2267
2267
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2268
2268
  if (isPartial)
2269
- return renderPendingResult("pending gooseDump_get", width, theme);
2269
+ return renderPendingResult("pending goosedump_get", width, theme);
2270
2270
  const content = result.content?.[0]?.text ?? "";
2271
2271
  if (isError || result.isError) {
2272
- return renderErrorResult(content, { expanded, width, fallback: "gooseDump_get failed", theme });
2272
+ return renderErrorResult(content, { expanded, width, fallback: "goosedump_get failed", theme });
2273
2273
  }
2274
2274
  if (content.startsWith("No entries found")) {
2275
2275
  return upsertTextComponent(rest[0]?.lastComponent, clampLineToWidth(summaryLine("no entries found", { theme, style: "dim" }), width));
@@ -2297,20 +2297,20 @@ function renderGooseDumpGrepCall(args, theme, ...rest) {
2297
2297
  const target = args?.session ? theme.fg("dim", ` in ${args.provider ?? "pi"}:${args.session}`) : "";
2298
2298
  const flags = [args?.scope && args.scope !== "lineage" && `scope=${args.scope}`].filter(Boolean);
2299
2299
  const flagsBadge = flags.length > 0 ? theme.fg("dim", ` [${flags.join(", ")}]`) : "";
2300
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_grep")} ${theme.fg("accent", pattern)}${target}${flagsBadge}`, context.width);
2300
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_grep")} ${theme.fg("accent", pattern)}${target}${flagsBadge}`, context.width);
2301
2301
  return upsertTextComponent(context.lastComponent, text);
2302
2302
  }
2303
2303
  var renderGooseGrepCall = renderGooseDumpGrepCall;
2304
2304
  function renderGooseDumpGrepResult(result, options, theme, ...rest) {
2305
2305
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2306
2306
  if (isPartial)
2307
- return renderPendingResult("pending gooseDump_grep", width, theme);
2307
+ return renderPendingResult("pending goosedump_grep", width, theme);
2308
2308
  const content = result.content?.[0]?.text ?? "";
2309
2309
  if (isError || result.isError) {
2310
2310
  return renderErrorResult(content, {
2311
2311
  expanded,
2312
2312
  width,
2313
- fallback: "gooseDump_grep failed",
2313
+ fallback: "goosedump_grep failed",
2314
2314
  theme
2315
2315
  });
2316
2316
  }
@@ -2335,20 +2335,20 @@ function renderGooseDumpCompactCall(args, theme, ...rest) {
2335
2335
  const context = rest[0] ?? {};
2336
2336
  const flags = args?.keep ? [theme.fg("dim", `keep=${args.keep}`)] : [];
2337
2337
  const flagsBadge = flags.length > 0 ? ` [${flags.join(", ")}]` : "";
2338
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_compact")}${flagsBadge}`, context.width);
2338
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_compact")}${flagsBadge}`, context.width);
2339
2339
  return upsertTextComponent(context.lastComponent, text);
2340
2340
  }
2341
2341
  var renderGooseCompactCall = renderGooseDumpCompactCall;
2342
2342
  function renderGooseDumpCompactResult(result, options, theme, ...rest) {
2343
2343
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2344
2344
  if (isPartial)
2345
- return renderPendingResult("pending gooseDump_compact", width, theme);
2345
+ return renderPendingResult("pending goosedump_compact", width, theme);
2346
2346
  const content = result.content?.[0]?.text ?? "";
2347
2347
  if (isError || result.isError) {
2348
2348
  return renderErrorResult(content, {
2349
2349
  expanded,
2350
2350
  width,
2351
- fallback: "gooseDump_compact failed",
2351
+ fallback: "goosedump_compact failed",
2352
2352
  theme
2353
2353
  });
2354
2354
  }
@@ -2362,20 +2362,20 @@ function renderGooseDumpSessionsCall(args, theme, ...rest) {
2362
2362
  const context = rest[0] ?? {};
2363
2363
  const action = args?.action ?? "list";
2364
2364
  const target = args?.session ? `${args?.provider ?? "pi"}:${args.session}` : `(${args?.provider ?? "pi"})`;
2365
- const text = clampLineToWidth(`${renderToolLabel(theme, "gooseDump_sessions")} ${theme.fg("accent", action)} ${theme.fg("dim", target)}`, context.width);
2365
+ const text = clampLineToWidth(`${renderToolLabel(theme, "goosedump_sessions")} ${theme.fg("accent", action)} ${theme.fg("dim", target)}`, context.width);
2366
2366
  return upsertTextComponent(context.lastComponent, text);
2367
2367
  }
2368
2368
  var renderGooseSessionsCall = renderGooseDumpSessionsCall;
2369
2369
  function renderGooseDumpSessionsResult(result, options, theme, ...rest) {
2370
2370
  const { isPartial, isError, expanded, width } = resolveRenderResultContext(options, rest);
2371
2371
  if (isPartial)
2372
- return renderPendingResult("pending gooseDump_sessions", width, theme);
2372
+ return renderPendingResult("pending goosedump_sessions", width, theme);
2373
2373
  const content = result.content?.[0]?.text ?? "";
2374
2374
  if (isError || result.isError) {
2375
2375
  return renderErrorResult(content, {
2376
2376
  expanded,
2377
2377
  width,
2378
- fallback: "gooseDump_sessions failed",
2378
+ fallback: "goosedump_sessions failed",
2379
2379
  theme
2380
2380
  });
2381
2381
  }
@@ -2456,7 +2456,7 @@ function boundedHistoryResult(text) {
2456
2456
  return textResult(text);
2457
2457
  return textResult(`${output.content}
2458
2458
 
2459
- [Output truncated: showing ${output.outputLines} of ${output.totalLines} lines ` + `and ${output.outputBytes} of ${output.totalBytes} bytes. ` + "Use gooseDump_get with fewer IDs or a narrower gooseDump_grep pattern.]");
2459
+ [Output truncated: showing ${output.outputLines} of ${output.totalLines} lines ` + `and ${output.outputBytes} of ${output.totalBytes} bytes. ` + "Use goosedump_get with fewer IDs or a narrower goosedump_grep pattern.]");
2460
2460
  }
2461
2461
  function resolveHistoryTarget(ctx, tool, params) {
2462
2462
  const provider = params.provider ?? "pi";
@@ -2504,7 +2504,7 @@ function registerGooseTools(pi, deps) {
2504
2504
  pi.registerTool(defineGooseTool(canonicalName, parameters, handler, renderers));
2505
2505
  pi.registerTool(defineGooseTool(legacyName, parameters, handler, renderers));
2506
2506
  }
2507
- registerPair("gooseDump_remember", "goose_remember", Type3.Object({ ...historyTargetParams() }), async (params, _signal, ctx, toolName) => {
2507
+ registerPair("goosedump_remember", "goose_remember", Type3.Object({ ...historyTargetParams() }), async (params, _signal, ctx, toolName) => {
2508
2508
  const disabled = requireMemoryEnabled(ctx);
2509
2509
  if (disabled)
2510
2510
  return disabled;
@@ -2518,7 +2518,7 @@ function registerGooseTools(pi, deps) {
2518
2518
  });
2519
2519
  return textResult(accepted ? `Memory learning started for ${resolved.target}.` : `Memory learning dropped for ${resolved.target}: another inference task is active.`);
2520
2520
  }, { renderCall: renderGooseRememberCall, renderResult: renderGooseRememberResult });
2521
- registerPair("gooseDump_recall", "goose_recall", Type3.Object({
2521
+ registerPair("goosedump_recall", "goose_recall", Type3.Object({
2522
2522
  query: Type3.String({ description: PARAM_DESCRIPTIONS.memoryQuery }),
2523
2523
  type: Type3.Optional(Type3.Union(GOOSE_MEMORY_TYPES.map((type) => Type3.Literal(type)), { description: PARAM_DESCRIPTIONS.memoryType })),
2524
2524
  allProjects: Type3.Optional(Type3.Boolean({
@@ -2555,7 +2555,7 @@ function registerGooseTools(pi, deps) {
2555
2555
  return textResult(`No durable memory for "${params.query}"`);
2556
2556
  return textResult(formatMemoryHits(hits));
2557
2557
  }, { renderCall: renderGooseRecallCall, renderResult: renderGooseRecallResult });
2558
- registerPair("gooseDump_forget", "goose_forget", Type3.Object({
2558
+ registerPair("goosedump_forget", "goose_forget", Type3.Object({
2559
2559
  target: Type3.String({
2560
2560
  description: PARAM_DESCRIPTIONS.forgetTarget
2561
2561
  })
@@ -2569,13 +2569,13 @@ function registerGooseTools(pi, deps) {
2569
2569
  const res = await goosedumpMemoryForget(params.target.trim(), signal, nativeExecutablePath);
2570
2570
  return textResult(res);
2571
2571
  }, { renderCall: renderGooseForgetCall, renderResult: renderGooseForgetResult });
2572
- registerPair("gooseDump_memory_status", "goose_memory_status", Type3.Object({}), async (_params, signal, ctx) => {
2572
+ registerPair("goosedump_memory_status", "goose_memory_status", Type3.Object({}), async (_params, signal, ctx) => {
2573
2573
  const disabled = requireMemoryEnabled(ctx);
2574
2574
  if (disabled)
2575
2575
  return disabled;
2576
2576
  return textResult(await goosedumpMemoryStatus(signal, nativeExecutablePath));
2577
2577
  }, { renderCall: renderGooseMemoryStatusCall, renderResult: renderGooseMemoryStatusResult });
2578
- registerPair("gooseDump_search", "goose_search", Type3.Object({
2578
+ registerPair("goosedump_search", "goose_search", Type3.Object({
2579
2579
  query: Type3.String({ description: PARAM_DESCRIPTIONS.searchQuery }),
2580
2580
  ...historyBranchParams(),
2581
2581
  page: Type3.Optional(Type3.Integer({
@@ -2597,7 +2597,7 @@ function registerGooseTools(pi, deps) {
2597
2597
 
2598
2598
  ${text}`);
2599
2599
  }, { renderCall: renderGooseSearchCall, renderResult: renderGooseSearchResult });
2600
- registerPair("gooseDump_get", "goose_get", Type3.Object({
2600
+ registerPair("goosedump_get", "goose_get", Type3.Object({
2601
2601
  ids: Type3.Array(Type3.String(), {
2602
2602
  minItems: 1,
2603
2603
  description: PARAM_DESCRIPTIONS.entryIds
@@ -2613,7 +2613,7 @@ ${text}`);
2613
2613
  }
2614
2614
  return boundedHistoryResult(formatMessagesFull(messages));
2615
2615
  }, { renderCall: renderGooseGetCall, renderResult: renderGooseGetResult });
2616
- registerPair("gooseDump_grep", "goose_grep", Type3.Object({
2616
+ registerPair("goosedump_grep", "goose_grep", Type3.Object({
2617
2617
  pattern: Type3.String({ description: PARAM_DESCRIPTIONS.pattern }),
2618
2618
  ...historyBranchParams()
2619
2619
  }), async (params, signal, ctx, toolName) => {
@@ -2626,7 +2626,7 @@ ${text}`);
2626
2626
  }
2627
2627
  return boundedHistoryResult(formatMessagesCompact(messages));
2628
2628
  }, { renderCall: renderGooseGrepCall, renderResult: renderGooseGrepResult });
2629
- registerPair("gooseDump_compact", "goose_compact", Type3.Object({
2629
+ registerPair("goosedump_compact", "goose_compact", Type3.Object({
2630
2630
  keep: Type3.Optional(Type3.Integer({
2631
2631
  minimum: 1,
2632
2632
  description: PARAM_DESCRIPTIONS.keep
@@ -2641,7 +2641,7 @@ ${text}`);
2641
2641
  }
2642
2642
  return textResult(compactStartedMessage(keep, result === "queued"));
2643
2643
  }, { renderCall: renderGooseCompactCall, renderResult: renderGooseCompactResult });
2644
- registerPair("gooseDump_sessions", "goose_sessions", Type3.Object({
2644
+ registerPair("goosedump_sessions", "goose_sessions", Type3.Object({
2645
2645
  action: Type3.Optional(Type3.Union([Type3.Literal("list"), Type3.Literal("delete")], {
2646
2646
  default: "list",
2647
2647
  description: PARAM_DESCRIPTIONS.sessionsAction
@@ -3561,13 +3561,13 @@ ${renderToolRoutingPolicy()}`
3561
3561
  compaction.syncCompactCounters(ctx);
3562
3562
  compaction.updateStatus(ctx);
3563
3563
  };
3564
- registerGooseCommand("goose-settings", "Edit goosedump settings", openSettingsEditor);
3565
- registerGooseCommand("goose-compact", "Compact the current session now; optionally keep the last N user turns", async (args, ctx) => {
3564
+ registerGooseCommand("goosedump-settings", "Edit goosedump settings", openSettingsEditor);
3565
+ registerGooseCommand("goosedump-compact", "Compact the current session now; optionally keep the last N user turns", async (args, ctx) => {
3566
3566
  let keep = null;
3567
3567
  if (args.trim()) {
3568
3568
  const match = args.trim().match(/^keep:(\d+)$/);
3569
3569
  if (!match) {
3570
- ctx.ui.notify("Usage: /goose-compact [keep:N], where N >= 1", "error");
3570
+ ctx.ui.notify("Usage: /goosedump-compact [keep:N], where N >= 1", "error");
3571
3571
  return;
3572
3572
  }
3573
3573
  keep = Number(match[1]);
@@ -3585,16 +3585,16 @@ ${renderToolRoutingPolicy()}`
3585
3585
  ctx.ui.notify(compactStartedMessage(keep, result === "queued"), "info");
3586
3586
  }
3587
3587
  });
3588
- registerGooseCommand("goose-search", "Search the current session history", async (args, ctx) => {
3588
+ registerGooseCommand("goosedump-search", "Search the current session history", async (args, ctx) => {
3589
3589
  const query = args.trim() || (await ctx.ui.input("Search query:", ""))?.trim() || "";
3590
3590
  if (query.length === 0)
3591
3591
  return;
3592
3592
  await runSearchPanel(ctx, query, nativeExecutablePath);
3593
3593
  });
3594
- registerGooseCommand("goose-sessions", "List, resume, or delete sessions for the current working directory", async (_args, ctx) => {
3594
+ registerGooseCommand("goosedump-sessions", "List, resume, or delete sessions for the current working directory", async (_args, ctx) => {
3595
3595
  await runSessionsPanel(ctx, nativeExecutablePath);
3596
3596
  });
3597
- registerGooseCommand("goose-forget", "Remove a durable memory entry or remembered session", async (args, ctx) => {
3597
+ registerGooseCommand("goosedump-forget", "Remove a durable memory entry or remembered session", async (args, ctx) => {
3598
3598
  if (!isMemoryEnabled(ctx.cwd, projectSettingsTrusted(ctx))) {
3599
3599
  ctx.ui.notify(MEMORY_DISABLED_MESSAGE, "warning");
3600
3600
  return;
@@ -3605,7 +3605,7 @@ ${renderToolRoutingPolicy()}`
3605
3605
  const res = await goosedumpMemoryForget(target, undefined, nativeExecutablePath);
3606
3606
  ctx.ui.notify(res, "info");
3607
3607
  });
3608
- registerGooseCommand("goose-memory-status", "Show durable memory storage health and type counts", async (_args, ctx) => {
3608
+ registerGooseCommand("goosedump-memory-status", "Show durable memory storage health and type counts", async (_args, ctx) => {
3609
3609
  if (!isMemoryEnabled(ctx.cwd, projectSettingsTrusted(ctx))) {
3610
3610
  ctx.ui.notify(MEMORY_DISABLED_MESSAGE, "warning");
3611
3611
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-goosedump",
3
- "version": "0.13.5",
3
+ "version": "0.13.7",
4
4
  "description": "Pi extension for goosedump session search, durable memory, session management, and compaction",
5
5
  "keywords": [
6
6
  "compaction",
@@ -37,7 +37,7 @@
37
37
  "ci:test": "npm test"
38
38
  },
39
39
  "dependencies": {
40
- "@jarkkojs/goosedump": "^0.13.5"
40
+ "@jarkkojs/goosedump": "^0.13.7"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@earendil-works/pi-coding-agent": "^0.84.2",