@sayknow-cli/coding-agent 0.5.14 → 0.5.15
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
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.5.15] - 2026-09-16
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Native `UserPromptSubmit` UI-skill routing no longer lets a failed install-root lookup swallow the bundled skill directive. Candidate `SKILL.md` probes are best-effort, and hook tests isolate `home` so a runner's `~/.agents/skills` cannot pollute CI.
|
|
10
|
+
|
|
5
11
|
## [0.5.14] - 2026-09-16
|
|
6
12
|
|
|
7
13
|
### Added
|
|
@@ -7,6 +7,7 @@ export interface SkcNativeHookDispatchResult {
|
|
|
7
7
|
type HookPayload = Record<string, unknown>;
|
|
8
8
|
interface SkcNativeHookDispatchOptions {
|
|
9
9
|
cwd?: string;
|
|
10
|
+
home?: string;
|
|
10
11
|
stateDir?: string;
|
|
11
12
|
effectiveSkillConfig?: EffectiveSkillConfigInput;
|
|
12
13
|
configPaths?: string[];
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@sayknow-cli/coding-agent",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.15",
|
|
5
5
|
"description": "Sayknow-CLI CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://sayknow-cli.com",
|
|
7
7
|
"author": "jaybeyond",
|
|
@@ -54,12 +54,12 @@
|
|
|
54
54
|
"@agentclientprotocol/sdk": "1.3.0",
|
|
55
55
|
"@babel/parser": "^7.29.3",
|
|
56
56
|
"@mozilla/readability": "^0.6.0",
|
|
57
|
-
"@sayknow-cli/stats": "0.5.
|
|
58
|
-
"@sayknow-cli/agent-core": "0.5.
|
|
59
|
-
"@sayknow-cli/ai": "0.5.
|
|
60
|
-
"@sayknow-cli/natives": "0.5.
|
|
61
|
-
"@sayknow-cli/tui": "0.5.
|
|
62
|
-
"@sayknow-cli/utils": "0.5.
|
|
57
|
+
"@sayknow-cli/stats": "0.5.15",
|
|
58
|
+
"@sayknow-cli/agent-core": "0.5.15",
|
|
59
|
+
"@sayknow-cli/ai": "0.5.15",
|
|
60
|
+
"@sayknow-cli/natives": "0.5.15",
|
|
61
|
+
"@sayknow-cli/tui": "0.5.15",
|
|
62
|
+
"@sayknow-cli/utils": "0.5.15",
|
|
63
63
|
"@puppeteer/browsers": "^2.13.0",
|
|
64
64
|
"@types/turndown": "5.0.6",
|
|
65
65
|
"@xterm/headless": "^6.0.0",
|
|
@@ -28,6 +28,7 @@ type HookPayload = Record<string, unknown>;
|
|
|
28
28
|
|
|
29
29
|
interface SkcNativeHookDispatchOptions {
|
|
30
30
|
cwd?: string;
|
|
31
|
+
home?: string;
|
|
31
32
|
stateDir?: string;
|
|
32
33
|
effectiveSkillConfig?: EffectiveSkillConfigInput;
|
|
33
34
|
configPaths?: string[];
|
|
@@ -342,12 +343,18 @@ export async function dispatchSkcNativeSkillHook(
|
|
|
342
343
|
};
|
|
343
344
|
}
|
|
344
345
|
// Frontend skills SKC routes to but does not vendor (license-restricted
|
|
345
|
-
// collections). Resolved against the user's own install roots.
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
346
|
+
// collections). Resolved against the user's own install roots. A lookup
|
|
347
|
+
// failure must not swallow the bundled UI-skill directive.
|
|
348
|
+
let externalUiContext: string | null = null;
|
|
349
|
+
try {
|
|
350
|
+
externalUiContext = await buildExternalUiSkillContext({
|
|
351
|
+
cwd,
|
|
352
|
+
home: options.home ?? os.homedir(),
|
|
353
|
+
text: prompt,
|
|
354
|
+
});
|
|
355
|
+
} catch {
|
|
356
|
+
externalUiContext = null;
|
|
357
|
+
}
|
|
351
358
|
const additionalContext = [
|
|
352
359
|
skillState ? buildSkillActivationAdditionalContext(skillState, effectiveSkillConfig) : activeUltragoalContext,
|
|
353
360
|
// Bundled frontend UI skills are advertised independently of workflow
|
|
@@ -264,7 +264,11 @@ function skillCandidatePaths(cwd: string, home: string, skill: string): string[]
|
|
|
264
264
|
|
|
265
265
|
async function isSkillInstalled(cwd: string, home: string, skill: string): Promise<boolean> {
|
|
266
266
|
for (const candidate of skillCandidatePaths(cwd, home, skill)) {
|
|
267
|
-
|
|
267
|
+
try {
|
|
268
|
+
if (await Bun.file(candidate).exists()) return true;
|
|
269
|
+
} catch {
|
|
270
|
+
// Permission or I/O on a candidate must not fail the prompt hook.
|
|
271
|
+
}
|
|
268
272
|
}
|
|
269
273
|
return false;
|
|
270
274
|
}
|