sphica 0.6.23 → 0.6.24

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/plugin.schema.json",
3
3
  "name": "sphica",
4
- "version": "0.6.23",
4
+ "version": "0.6.24",
5
5
  "description": "Records Claude Code and Codex sessions on your machine and keeps past implementation and decisions, with their sources, for your agent to find.",
6
6
  "author": {
7
7
  "name": "iroha924",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sphica",
3
- "version": "0.6.23",
3
+ "version": "0.6.24",
4
4
  "description": "Records Claude Code and Codex sessions on your machine and keeps past implementation and decisions, with their sources, for your agent to find.",
5
5
  "author": {
6
6
  "name": "iroha924",
package/dist/capture.js CHANGED
@@ -11690,7 +11690,7 @@ function fit(body) {
11690
11690
 
11691
11691
  ${z}`,
11692
11692
  truncated: true,
11693
- redacted: mask(start) !== start || mask(end) !== end,
11693
+ redacted: a !== head(start, KEEP) || z !== tail(end, KEEP),
11694
11694
  originalBytes: all
11695
11695
  };
11696
11696
  }
@@ -11730,9 +11730,11 @@ function isOwnerTurn(input, parent = process.env.SPHICA_PARENT_SESSION, entrypoi
11730
11730
  return false;
11731
11731
  if (codexParent && codexParent !== input.session_id)
11732
11732
  return false;
11733
+ if (entrypoint?.startsWith("sdk-"))
11734
+ return false;
11733
11735
  if (parent)
11734
11736
  return parent === input.session_id;
11735
- return entrypoint !== "sdk-cli";
11737
+ return true;
11736
11738
  }
11737
11739
  var INJECTED = [
11738
11740
  /^<(?:task-notification|channel|cross-session-message|teammate-message|agent-message|slack-ping|slack-tag-message|fetched-web-content|remote-review|remote-review-progress)[\s>]/,
package/dist/cli.js CHANGED
@@ -15101,7 +15101,7 @@ function fit(body) {
15101
15101
 
15102
15102
  ${z}`,
15103
15103
  truncated: true,
15104
- redacted: mask(start) !== start || mask(end) !== end,
15104
+ redacted: a2 !== head(start, KEEP) || z !== tail(end, KEEP),
15105
15105
  originalBytes: all
15106
15106
  };
15107
15107
  }
@@ -15141,9 +15141,11 @@ function isOwnerTurn(input, parent = process.env.SPHICA_PARENT_SESSION, entrypoi
15141
15141
  return false;
15142
15142
  if (codexParent && codexParent !== input.session_id)
15143
15143
  return false;
15144
+ if (entrypoint?.startsWith("sdk-"))
15145
+ return false;
15144
15146
  if (parent)
15145
15147
  return parent === input.session_id;
15146
- return entrypoint !== "sdk-cli";
15148
+ return true;
15147
15149
  }
15148
15150
  var INJECTED = [
15149
15151
  /^<(?:task-notification|channel|cross-session-message|teammate-message|agent-message|slack-ping|slack-tag-message|fetched-web-content|remote-review|remote-review-progress)[\s>]/,
package/dist/deliver.js CHANGED
@@ -11736,7 +11736,7 @@ function fit(body) {
11736
11736
 
11737
11737
  ${z}`,
11738
11738
  truncated: true,
11739
- redacted: mask(start) !== start || mask(end) !== end,
11739
+ redacted: a !== head(start, KEEP) || z !== tail(end, KEEP),
11740
11740
  originalBytes: all
11741
11741
  };
11742
11742
  }
@@ -11776,9 +11776,11 @@ function isOwnerTurn(input, parent = process.env.SPHICA_PARENT_SESSION, entrypoi
11776
11776
  return false;
11777
11777
  if (codexParent && codexParent !== input.session_id)
11778
11778
  return false;
11779
+ if (entrypoint?.startsWith("sdk-"))
11780
+ return false;
11779
11781
  if (parent)
11780
11782
  return parent === input.session_id;
11781
- return entrypoint !== "sdk-cli";
11783
+ return true;
11782
11784
  }
11783
11785
  var INJECTED = [
11784
11786
  /^<(?:task-notification|channel|cross-session-message|teammate-message|agent-message|slack-ping|slack-tag-message|fetched-web-content|remote-review|remote-review-progress)[\s>]/,
@@ -31870,7 +31872,7 @@ function localChange(root, args) {
31870
31872
  }
31871
31873
 
31872
31874
  // server/src/trace.ts
31873
- var PENDING_DAYS = 30;
31875
+ var PENDING_DAYS = 14;
31874
31876
  var pendingCutoff = (now) => new Date(now.getTime() - PENDING_DAYS * 86400000).toISOString();
31875
31877
  var untracedOwner = (eb) => eb.selectFrom("source as m").whereRef("m.session_id", "=", "s.id").where("m.author_kind", "=", "owner").where(({ not, exists, selectFrom }) => not(exists(selectFrom("source_processing as p").whereRef("p.source_id", "=", "m.id").select(sql`1`.as("x")))));
31876
31878
  var untracedSessions = (db, projectId2) => db.selectFrom("session as s").where("s.project_id", "=", projectId2).where((eb) => eb.exists(untracedOwner(eb).select(sql`1`.as("x")))).select((eb) => [
@@ -46588,7 +46588,7 @@ function fit(body) {
46588
46588
 
46589
46589
  ${z2}`,
46590
46590
  truncated: true,
46591
- redacted: mask(start) !== start || mask(end) !== end,
46591
+ redacted: a !== head(start, KEEP) || z2 !== tail(end, KEEP),
46592
46592
  originalBytes: all
46593
46593
  };
46594
46594
  }
@@ -46628,9 +46628,11 @@ function isOwnerTurn(input2, parent = process.env.SPHICA_PARENT_SESSION, entrypo
46628
46628
  return false;
46629
46629
  if (codexParent && codexParent !== input2.session_id)
46630
46630
  return false;
46631
+ if (entrypoint?.startsWith("sdk-"))
46632
+ return false;
46631
46633
  if (parent)
46632
46634
  return parent === input2.session_id;
46633
- return entrypoint !== "sdk-cli";
46635
+ return true;
46634
46636
  }
46635
46637
  var INJECTED = [
46636
46638
  /^<(?:task-notification|channel|cross-session-message|teammate-message|agent-message|slack-ping|slack-tag-message|fetched-web-content|remote-review|remote-review-progress)[\s>]/,
@@ -48712,7 +48714,7 @@ ${c.errors.map((e) => ` ${e}`).join(`
48712
48714
  }
48713
48715
 
48714
48716
  // server/src/trace.ts
48715
- var PENDING_DAYS = 30;
48717
+ var PENDING_DAYS = 14;
48716
48718
  var pendingCutoff = (now) => new Date(now.getTime() - PENDING_DAYS * 86400000).toISOString();
48717
48719
  var untracedOwner = (eb) => eb.selectFrom("source as m").whereRef("m.session_id", "=", "s.id").where("m.author_kind", "=", "owner").where(({ not, exists, selectFrom }) => not(exists(selectFrom("source_processing as p").whereRef("p.source_id", "=", "m.id").select(sql`1`.as("x")))));
48718
48720
  var untracedSessions = (db, projectId2) => db.selectFrom("session as s").where("s.project_id", "=", projectId2).where((eb) => eb.exists(untracedOwner(eb).select(sql`1`.as("x")))).select((eb) => [
@@ -49317,7 +49319,7 @@ var READ = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, o
49317
49319
  var RECORD = exports_external.record(exports_external.string(), exports_external.unknown()).describe("The record, as the Skill describes");
49318
49320
  server.registerTool("trace_pending", {
49319
49321
  title: "Sessions not traced yet",
49320
- description: "Lists this project's captured sessions with owner messages no trace has looked at, then apart those whose last owner message is over 30 days old.",
49322
+ description: "Lists this project's captured sessions with owner messages no trace has looked at, then apart those whose last owner message is over 14 days old.",
49321
49323
  inputSchema: exports_external.object({ cwd: CWD }).strict(),
49322
49324
  annotations: READ
49323
49325
  }, async (a, extra) => tool(async () => pendingText(conn(), (await projectOf(a.cwd, extra._meta)).projectId)));
package/dist/mcp.js CHANGED
@@ -47392,7 +47392,7 @@ async function checkFindings(db, projectId2, files, raw) {
47392
47392
  }
47393
47393
 
47394
47394
  // server/src/trace.ts
47395
- var PENDING_DAYS = 30;
47395
+ var PENDING_DAYS = 14;
47396
47396
  var pendingCutoff = (now) => new Date(now.getTime() - PENDING_DAYS * 86400000).toISOString();
47397
47397
  var untracedOwner = (eb) => eb.selectFrom("source as m").whereRef("m.session_id", "=", "s.id").where("m.author_kind", "=", "owner").where(({ not, exists, selectFrom }) => not(exists(selectFrom("source_processing as p").whereRef("p.source_id", "=", "m.id").select(sql`1`.as("x")))));
47398
47398
  var untracedSessions = (db, projectId2) => db.selectFrom("session as s").where("s.project_id", "=", projectId2).where((eb) => eb.exists(untracedOwner(eb).select(sql`1`.as("x")))).select((eb) => [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sphica",
3
- "version": "0.6.23",
3
+ "version": "0.6.24",
4
4
  "description": "Records Claude Code and Codex sessions on your machine and keeps past implementation and decisions, with their sources, for your agent to find.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -30,7 +30,7 @@ Everything goes through Sphica's `record` MCP server (its tools are `trace_pendi
30
30
 
31
31
  1. **Pick the session.** Without a target, it is this session: its id is `${CLAUDE_SESSION_ID}` in Claude Code; in Codex, read `CODEX_THREAD_ID`
32
32
  from your shell environment. With `pending`, call `trace_pending`, show the owner the list, and ask which to trace (AskUserQuestion in
33
- Claude Code). Sessions whose last owner message is over 30 days old come last under their own heading: session start does not count
33
+ Claude Code). Sessions whose last owner message is over 14 days old come last under their own heading: session start does not count
34
34
  them, but they can still be traced. Trace one session at a time
35
35
  2. **Begin**: `trace_begin` with that `session`. It returns a `run` id bound to that session and this project; the record never names them
36
36
  3. **Read**: `record_context` with the run. It prints each captured message as `## s<N> owner|assistant <turn> <time>` followed by its text,