@code-yeongyu/senpi 2026.10.24-4 → 2026.10.25-1
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/CHANGELOG.md +16 -0
- package/dist/bundle/chunks/{chunk-IUHU5PEC.js → chunk-7WAJCESX.js} +1 -1
- package/dist/bundle/chunks/{chunk-NQC7MI2G.js → chunk-BTNYLNWZ.js} +1 -1
- package/dist/bundle/chunks/{chunk-UT6AJHPK.js → chunk-EYBDBR7V.js} +1 -1
- package/dist/bundle/chunks/{chunk-HKUXKTFW.js → chunk-J5P2VL3Y.js} +1 -1
- package/dist/bundle/chunks/{chunk-GVJ76VQI.js → chunk-URBJS24R.js} +54 -54
- package/dist/bundle/chunks/{chunk-42OY5SZZ.js → chunk-YDCRA5ES.js} +1 -1
- package/dist/bundle/chunks/{cli-main-UH3MAREK.js → cli-main-TABBP55A.js} +1 -1
- package/dist/bundle/chunks/{interactive-mode-R5RCSJ2F.js → interactive-mode-DGQNSXUA.js} +1 -1
- package/dist/bundle/chunks/{multi-session-host-YZEMYUFY.js → multi-session-host-M7HVUMRH.js} +1 -1
- package/dist/bundle/chunks/{package-manager-cli-5FOXDKUA.js → package-manager-cli-FSR5P6YL.js} +1 -1
- package/dist/bundle/chunks/{rpc-mode-6K62CZBW.js → rpc-mode-SZAJNKKL.js} +1 -1
- package/dist/bundle/chunks/{session-control-endpoint-54TMCS7Q.js → session-control-endpoint-WEF3XTJR.js} +1 -1
- package/dist/bundle/chunks/{session-picker-P2VUU2MQ.js → session-picker-KQUFWDQC.js} +1 -1
- package/dist/bundle/chunks/session-worker.js +56 -56
- package/dist/bundle/cli.js +2 -2
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/bundle/runtime-manifest.json +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-binding.d.ts +2 -0
- package/dist/core/extensions/builtin/anthropic-subscription/session-commit-boundary.d.ts +6 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-commit-boundary.js +18 -7
- package/dist/core/extensions/builtin/anthropic-subscription/session-commit-divergence.d.ts +23 -0
- package/dist/core/extensions/builtin/anthropic-subscription/session-commit-divergence.js +107 -0
- package/dist/core/extensions/builtin/anthropic-subscription/session-entry-annotations.d.ts +1 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-entry-annotations.js +3 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-observability.d.ts +3 -0
- package/dist/core/extensions/builtin/anthropic-subscription/session-observability.js +4 -0
- package/dist/core/extensions/builtin/anthropic-subscription/session-registry-wiring.js +12 -7
- package/dist/core/extensions/builtin/anthropic-subscription/session-registry.d.ts +3 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-registry.js +3 -2
- package/dist/core/extensions/builtin/anthropic-subscription/session-stream.js +2 -0
- package/dist/core/skill-access.js +15 -3
- package/dist/core/skill-discovery.d.ts +2 -0
- package/dist/core/skill-discovery.js +1 -1
- package/package.json +6 -6
|
@@ -22,15 +22,27 @@ export function insideSkillRoot(path, root) {
|
|
|
22
22
|
export function buildSkillAllowedSet(sources) {
|
|
23
23
|
const roots = new Set();
|
|
24
24
|
const files = new Set();
|
|
25
|
-
|
|
25
|
+
// Package resolution retains the selected root on every discovered skill.
|
|
26
|
+
// Walk each spelling once, without collapsing differently ignored aliases.
|
|
27
|
+
const realpaths = new Map();
|
|
28
|
+
const realpath = (path) => {
|
|
29
|
+
let canonical = realpaths.get(path);
|
|
30
|
+
if (canonical === undefined) {
|
|
31
|
+
canonical = realpathSync.native(path);
|
|
32
|
+
realpaths.set(path, canonical);
|
|
33
|
+
}
|
|
34
|
+
return canonical;
|
|
35
|
+
};
|
|
36
|
+
for (const source of new Set(sources)) {
|
|
26
37
|
try {
|
|
27
|
-
const canonical =
|
|
38
|
+
const canonical = realpath(source);
|
|
28
39
|
if (statSync(canonical).isFile()) {
|
|
29
40
|
files.add(canonical);
|
|
30
41
|
continue;
|
|
31
42
|
}
|
|
32
43
|
collectSkillEntries(source, "pi", undefined, undefined, {
|
|
33
|
-
|
|
44
|
+
realpath,
|
|
45
|
+
onDirectory: (path) => roots.add(realpath(path)),
|
|
34
46
|
});
|
|
35
47
|
}
|
|
36
48
|
catch {
|
|
@@ -9,6 +9,8 @@ export interface SkillWalkOptions {
|
|
|
9
9
|
readonly allowedSet?: SkillAllowedSet;
|
|
10
10
|
readonly ancestry?: ReadonlySet<string>;
|
|
11
11
|
readonly onDirectory?: (path: string) => void;
|
|
12
|
+
/** Optional cache owned by a single discovery pass, never retained on a Skill. */
|
|
13
|
+
readonly realpath?: (path: string) => string;
|
|
12
14
|
}
|
|
13
15
|
export declare function shouldSkipSkillWalkDirectoryName(name: string): boolean;
|
|
14
16
|
/**
|
|
@@ -117,7 +117,7 @@ export function collectSkillEntries(dir, mode, ignoreMatcher, rootDir, options =
|
|
|
117
117
|
let canonical;
|
|
118
118
|
try {
|
|
119
119
|
authorizeSkillPath(dir, options.provenance, options.allowedSet, true);
|
|
120
|
-
canonical = realpathSync.native(dir);
|
|
120
|
+
canonical = (options.realpath ?? realpathSync.native)(dir);
|
|
121
121
|
}
|
|
122
122
|
catch (error) {
|
|
123
123
|
// Leave a blocked root as a candidate so the resource loader retains its
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/senpi",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.25-1",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"piConfig": {
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"@earendil-works/chord": "0.99.1",
|
|
74
|
-
"@earendil-works/pi-agent-core": "npm:@code-yeongyu/senpi-agent-core@2026.10.
|
|
75
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.10.
|
|
76
|
-
"@earendil-works/pi-tui": "npm:@code-yeongyu/senpi-tui@2026.10.
|
|
74
|
+
"@earendil-works/pi-agent-core": "npm:@code-yeongyu/senpi-agent-core@2026.10.25-1",
|
|
75
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.10.25-1",
|
|
76
|
+
"@earendil-works/pi-tui": "npm:@code-yeongyu/senpi-tui@2026.10.25-1",
|
|
77
77
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
78
78
|
"chalk": "6.0.0",
|
|
79
79
|
"cross-spawn": "7.0.6",
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
"yaml": "2.9.1",
|
|
93
93
|
"@anthropic-ai/claude-agent-sdk": "0.3.306",
|
|
94
94
|
"@anthropic-ai/sdk": "0.127.0",
|
|
95
|
-
"@code-yeongyu/senpi-codemode": "2026.10.
|
|
96
|
-
"@earendil-works/pi-pty": "npm:@code-yeongyu/senpi-pty@2026.10.
|
|
95
|
+
"@code-yeongyu/senpi-codemode": "2026.10.25-1",
|
|
96
|
+
"@earendil-works/pi-pty": "npm:@code-yeongyu/senpi-pty@2026.10.25-1",
|
|
97
97
|
"@modelcontextprotocol/sdk": "1.32.1",
|
|
98
98
|
"@mozilla/readability": "0.6.0",
|
|
99
99
|
"linkedom": "0.18.13",
|