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.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/dist/capture.js +4 -2
- package/dist/cli.js +4 -2
- package/dist/deliver.js +5 -3
- package/dist/mcp-record.js +6 -4
- package/dist/mcp.js +1 -1
- package/package.json +1 -1
- package/skills/trace/SKILL.md +1 -1
|
@@ -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.
|
|
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",
|
package/dist/capture.js
CHANGED
|
@@ -11690,7 +11690,7 @@ function fit(body) {
|
|
|
11690
11690
|
|
|
11691
11691
|
${z}`,
|
|
11692
11692
|
truncated: true,
|
|
11693
|
-
redacted:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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 =
|
|
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) => [
|
package/dist/mcp-record.js
CHANGED
|
@@ -46588,7 +46588,7 @@ function fit(body) {
|
|
|
46588
46588
|
|
|
46589
46589
|
${z2}`,
|
|
46590
46590
|
truncated: true,
|
|
46591
|
-
redacted:
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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.
|
|
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",
|
package/skills/trace/SKILL.md
CHANGED
|
@@ -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
|
|
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,
|