Extensions: skills, plugins, MCP, sub-agents; configurable keys
ci / linux (clang) (push) Canceled after 0s
ci / linux (gcc) (push) Canceled after 0s
ci / sanitizers (push) Canceled after 0s
ci / musl (push) Canceled after 0s
ci / macos (push) Canceled after 0s

- Skills (SKILL.md discovery, skill tool, /skills /skill)
- plugin.json exec tools with permission prompts, timeouts and workspace trust (/plugins)
- MCP stdio client: JSON-RPC initialize/tools/list/tools/call, mcp__server__tool, /mcp and sidebar status
- task tool with general/explore/plan and .agent/agents/*.md roles, parallel read-only runs, cancel propagation, /agents
- Keymap with Ctrl+X leader, keybinds.json overrides and /keys panel
- Collapsed thinking, throttled streaming Markdown, leaner tool output, parallel read-only tools
- Spawn: close-on-exec pipes and a process-wide fork lock
- Tests for keymap, skills, plugins, MCP, sub-agents, shell compaction; docs/plugins.md
This commit is contained in:
WHC
2026-10-05 14:55:31 +08:00
parent c81df42f0b
commit 7d3ec9fcb9
38 changed files with 8356 additions and 399 deletions
+4 -3
View File
@@ -9,6 +9,7 @@
#include "os_compat.h"
#include <curl/curl.h>
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -477,9 +478,9 @@ static void sse_reset(sse_t *s) {
/* --- record / replay ----------------------------------------------------- */
static int g_trace_seq;
static atomic_int g_trace_seq;
void cst_llm_trace_reset(void) { g_trace_seq = 0; }
void cst_llm_trace_reset(void) { atomic_store(&g_trace_seq, 0); }
static void trace_path(const char *dir, int seq, const char *ext, char *out,
size_t n) {
@@ -575,7 +576,7 @@ int cst_llm_chat_stream(const cst_llm_request_t *req, char *err,
return -1;
}
int seq = g_trace_seq++;
int seq = atomic_fetch_add(&g_trace_seq, 1);
const char *rec_dir = getenv("CST_RECORD_SSE");
const char *rep_dir = getenv("CST_REPLAY_SSE");
if (rec_dir && rec_dir[0]) {