@sporhq/spor 0.18.3 → 0.18.4

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.
@@ -2,7 +2,7 @@
2
2
  "name": "spor",
3
3
  "displayName": "Spor Context Compiler",
4
4
  "description": "Maintains a typed, versioned knowledge graph and compiles compact briefings from it: session-start injection, per-prompt relevance digests, capture at discovery, end-of-session distillation, decision queue.",
5
- "version": "0.18.3",
5
+ "version": "0.18.4",
6
6
  "author": {
7
7
  "name": "losthammer"
8
8
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spor",
3
- "version": "0.18.3",
3
+ "version": "0.18.4",
4
4
  "description": "Maintains a typed, versioned knowledge graph and compiles compact briefings from it: session-start injection, per-prompt relevance digests, capture at discovery, end-of-session distillation, decision queue.",
5
5
  "author": {
6
6
  "name": "Spor",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sporhq/spor",
3
- "version": "0.18.3",
3
+ "version": "0.18.4",
4
4
  "description": "Spor — a shared memory substrate for teams and agents. Decisions, their reasons, and the traces they leave. Knowledge-graph context compiler: session-start briefings, per-prompt digests, capture at discovery, end-of-session distillation, decision queue.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Anthony Allen",
@@ -210,9 +210,20 @@ function repeatedFollowup(graph, input, prompt, digest) {
210
210
  return prev && prev.sig === sig && !hasHighSignalToken(prompt) && u.wordCount(prompt) <= 12;
211
211
  }
212
212
 
213
+ // Claude Code appends `<system-reminder>…</system-reminder>` blocks
214
+ // (scheduled-message timestamps, deferred-tool notices, injected context) to the
215
+ // user's text, and they arrive in the hook's `prompt`. Their words must not feed
216
+ // the trivial-prompt gates or the retrieval query — otherwise a bare "Continue"
217
+ // arrives as 8 words, clears the continuation + word-floor gates, and fires a
218
+ // noise digest (issue-spor-digest-continuation-gate-system-reminder-defeat).
219
+ // Strip them before anything else looks at the prompt.
220
+ function stripSystemReminders(prompt) {
221
+ return String(prompt).replace(/\n*<system-reminder>[\s\S]*?<\/system-reminder>\s*/g, "").trim();
222
+ }
223
+
213
224
  async function promptContext(input) {
214
225
  const graph = u.graphHome();
215
- const prompt = input.prompt ?? "";
226
+ const prompt = stripSystemReminders(input.prompt ?? "");
216
227
  const slug = u.projectSlug(input.cwd ?? "");
217
228
 
218
229
  // Skip trivial / continuation prompts BEFORE any network call. The second