s-app-scoder-agent 0.8.21 → 0.9.3
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/README.md +31 -5
- package/dist/agent.js +662 -65
- package/dist/agents-guide.js +201 -0
- package/dist/agents.js +76 -3
- package/dist/compaction.js +12 -4
- package/dist/config.js +16 -2
- package/dist/context.js +15 -3
- package/dist/diagnostics.js +188 -0
- package/dist/index.js +277 -6
- package/dist/mcp-import.js +204 -0
- package/dist/mcp.js +553 -54
- package/dist/memory.js +140 -0
- package/dist/permissions.js +18 -3
- package/dist/prompt.js +204 -84
- package/dist/repo-map.js +177 -0
- package/dist/sandbox.js +6 -5
- package/dist/session.js +29 -8
- package/dist/skills.js +211 -62
- package/dist/snapshot.js +5 -0
- package/dist/steering.js +4 -0
- package/dist/tools.js +374 -57
- package/dist/tui/app.js +79 -28
- package/dist/tui/ask-user-modal.js +25 -0
- package/dist/tui/chat-views.js +15 -8
- package/dist/tui/chrome.js +2 -1
- package/dist/tui/command-registry.js +284 -9
- package/dist/tui/commands.js +224 -37
- package/dist/tui/markdown.js +170 -12
- package/dist/tui/sidebar.js +36 -13
- package/dist/tui/state.js +101 -2
- package/dist/tui/theme.js +4 -0
- package/dist/tui/transcript.js +145 -0
- package/dist/watch.js +8 -0
- package/dist/webfetch.js +5 -2
- package/package.json +1 -1
package/dist/watch.js
CHANGED
|
@@ -29,6 +29,14 @@ export function watchWorkdir(workdir, onChange) {
|
|
|
29
29
|
}
|
|
30
30
|
catch { /* race — file removed between existsSync and watch */ }
|
|
31
31
|
}
|
|
32
|
+
// Watch the parent too so a skills directory created after startup is seen.
|
|
33
|
+
const scoderDir = join(workdir, ".scoder");
|
|
34
|
+
if (existsSync(scoderDir)) {
|
|
35
|
+
try {
|
|
36
|
+
watchers.push(watch(scoderDir, () => fire("skills")));
|
|
37
|
+
}
|
|
38
|
+
catch { /* ignore */ }
|
|
39
|
+
}
|
|
32
40
|
// .scoder/skills/ — skill files added/removed/edited.
|
|
33
41
|
const skillsDir = join(workdir, ".scoder", "skills");
|
|
34
42
|
if (existsSync(skillsDir)) {
|
package/dist/webfetch.js
CHANGED
|
@@ -39,8 +39,8 @@ function isPrivateAddress(ip) {
|
|
|
39
39
|
const lower = ip.toLowerCase();
|
|
40
40
|
if (lower === "::1" || lower === "::")
|
|
41
41
|
return true;
|
|
42
|
-
if (lower
|
|
43
|
-
return true; // link-local
|
|
42
|
+
if (/^fe[89ab][0-9a-f]{2}:/.test(lower))
|
|
43
|
+
return true; // link-local fe80::/10
|
|
44
44
|
if (/^f[cd][0-9a-f]{2}:/.test(lower))
|
|
45
45
|
return true; // unique local fc00::/7
|
|
46
46
|
// IPv4-mapped ::ffff:10.0.0.1
|
|
@@ -166,6 +166,9 @@ export async function toolWebFetch(ctx, args) {
|
|
|
166
166
|
if (signal.aborted) {
|
|
167
167
|
return { ok: false, output: `ERROR: fetch aborted (${signal.reason?.message ?? "aborted"})` };
|
|
168
168
|
}
|
|
169
|
+
if (current.protocol !== "http:" && current.protocol !== "https:") {
|
|
170
|
+
return { ok: false, output: `ERROR: redirect target uses unsupported protocol ${current.protocol}` };
|
|
171
|
+
}
|
|
169
172
|
await assertPublicHost(current.hostname);
|
|
170
173
|
const res = await fetch(current, {
|
|
171
174
|
method: "GET",
|
package/package.json
CHANGED