@sporhq/spor 0.4.1 → 0.4.2

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,6 +2,6 @@
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.4.1",
5
+ "version": "0.4.2",
6
6
  "author": { "name": "losthammer" }
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sporhq/spor",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
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",
@@ -37,14 +37,26 @@ Steps:
37
37
  **Local mode (personal graph) — `SPOR_SERVER` unset:** first resolve the
38
38
  plugin root — `${CLAUDE_PLUGIN_ROOT}` is empty in the Bash tool, so read
39
39
  the path the session-start hook cached
40
- (issue-cc-skill-plugin-root-unsubstituted):
40
+ (issue-cc-skill-plugin-root-unsubstituted) — then resolve THIS repo's
41
+ project slug the same way a session does, so the compile is scoped to the
42
+ repo you're in instead of project-blind:
41
43
  ```bash
42
44
  SPOR_ROOT="$(cat "${SPOR_HOME:-$HOME/.spor}/cache/plugin-root" 2>/dev/null \
43
45
  || cat "$HOME/.substrate/cache/plugin-root" 2>/dev/null)"
44
46
  SPOR_ROOT="${SPOR_ROOT:-$CLAUDE_PLUGIN_ROOT}"
47
+ SLUG="$(node -e 'process.stdout.write(require("'"$SPOR_ROOT"'/scripts/engines/util.js").projectSlug(process.cwd()))' 2>/dev/null)"
45
48
  ```
46
- - node id: `node "$SPOR_ROOT/lib/compile.js" --root <id> --skeleton`
47
- - query: `node "$SPOR_ROOT/lib/compile.js" --query "<text>"`
49
+ - node id: `node "$SPOR_ROOT/lib/compile.js" --root <id> --skeleton ${SLUG:+--project "$SLUG"}`
50
+ - query: `node "$SPOR_ROOT/lib/compile.js" --query "<text>" ${SLUG:+--project "$SLUG"}`
51
+
52
+ **Always pass `--project "$SLUG"`.** Without it, `compile --root`/`--query`
53
+ run *project-blind* (`sessionProject == null`): the org-norm ride-along then
54
+ keeps every `always_on` norm and ignores `applies_to_repos`/`applies_to_tags`/
55
+ `applies_to_projects` scoping entirely — so an unscoped briefing shows norms a
56
+ real session in this repo would filter out (the `applies_to_*` selectors match
57
+ the SESSION repo, not the `--root` node's repo). `--project` makes the compile
58
+ match what session-start actually injects here.
59
+
48
60
  (The compiler defaults to the global graph at `$SPOR_HOME/nodes`, falling
49
61
  back to `~/.spor/nodes` — or a pre-existing `~/.substrate/nodes` when
50
62
  `~/.spor` is absent.)
@@ -100,6 +100,10 @@ mode dispatches to the server (mirroring `/spor:brief`). Much of this is what
100
100
  the session hooks already inject for you automatically; pulling one on demand
101
101
  with `spor brief`, `spor compile`, or `/spor:brief` is the same briefing.
102
102
  Passing `--nodes <dir>` always targets that local checkout, even under a server.
103
+ In local mode, add `--project <repo-slug>` to scope to a repo: without it
104
+ `compile --root`/`--query` run *project-blind* and the `always_on` norm
105
+ ride-along ignores `applies_to_*` scoping (every norm rides along) — pass it to
106
+ match what a real session in that repo sees. `/spor:brief` does this for you.
103
107
 
104
108
  **In Cowork (Anthropic's chat workspace) and Claude Code with the connector**
105
109
  there is no shell and no ambient injection — reach the graph through the