@kkelly-offical/kkcode 0.1.3 → 0.1.7
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 +110 -172
- package/package.json +46 -46
- package/src/agent/agent.mjs +220 -170
- package/src/agent/prompt/bug-hunter.txt +90 -0
- package/src/agent/prompt/frontend-designer.txt +58 -0
- package/src/agent/prompt/longagent-blueprint-agent.txt +83 -0
- package/src/agent/prompt/longagent-coding-agent.txt +37 -0
- package/src/agent/prompt/longagent-debugging-agent.txt +46 -0
- package/src/agent/prompt/longagent-preview-agent.txt +63 -0
- package/src/config/defaults.mjs +260 -195
- package/src/config/schema.mjs +71 -6
- package/src/core/constants.mjs +91 -46
- package/src/index.mjs +1 -1
- package/src/knowledge/frontend-aesthetics.txt +39 -0
- package/src/knowledge/loader.mjs +2 -1
- package/src/knowledge/tailwind.txt +12 -3
- package/src/mcp/client-http.mjs +141 -157
- package/src/mcp/client-sse.mjs +288 -286
- package/src/mcp/client-stdio.mjs +533 -451
- package/src/mcp/constants.mjs +2 -0
- package/src/mcp/registry.mjs +479 -394
- package/src/mcp/stdio-framing.mjs +133 -127
- package/src/mcp/tool-result.mjs +24 -0
- package/src/observability/index.mjs +42 -0
- package/src/observability/metrics.mjs +137 -0
- package/src/observability/tracer.mjs +137 -0
- package/src/orchestration/background-manager.mjs +372 -358
- package/src/orchestration/background-worker.mjs +305 -245
- package/src/orchestration/longagent-manager.mjs +171 -116
- package/src/orchestration/stage-scheduler.mjs +728 -489
- package/src/permission/exec-policy.mjs +9 -11
- package/src/provider/anthropic.mjs +1 -0
- package/src/provider/openai.mjs +340 -339
- package/src/provider/retry-policy.mjs +68 -68
- package/src/provider/router.mjs +241 -228
- package/src/provider/sse.mjs +104 -91
- package/src/repl.mjs +59 -7
- package/src/session/checkpoint.mjs +66 -3
- package/src/session/compaction.mjs +298 -276
- package/src/session/engine.mjs +232 -225
- package/src/session/longagent-4stage.mjs +460 -0
- package/src/session/longagent-hybrid.mjs +1097 -0
- package/src/session/longagent-plan.mjs +365 -329
- package/src/session/longagent-project-memory.mjs +53 -0
- package/src/session/longagent-scaffold.mjs +291 -100
- package/src/session/longagent-task-bus.mjs +54 -0
- package/src/session/longagent-utils.mjs +472 -0
- package/src/session/longagent.mjs +900 -1462
- package/src/session/loop.mjs +65 -40
- package/src/session/project-context.mjs +30 -0
- package/src/session/prompt/agent.txt +25 -0
- package/src/session/prompt/plan.txt +31 -9
- package/src/session/rollback.mjs +196 -0
- package/src/session/store.mjs +519 -503
- package/src/session/system-prompt.mjs +273 -260
- package/src/session/task-validator.mjs +4 -3
- package/src/skill/builtin/design.mjs +76 -0
- package/src/skill/builtin/frontend.mjs +8 -0
- package/src/skill/registry.mjs +390 -336
- package/src/storage/ghost-commit-store.mjs +18 -8
- package/src/tool/executor.mjs +11 -0
- package/src/tool/git-auto.mjs +0 -19
- package/src/tool/question-prompt.mjs +93 -86
- package/src/tool/registry.mjs +71 -37
- package/src/ui/activity-renderer.mjs +664 -410
- package/src/util/git.mjs +23 -0
|
@@ -34,7 +34,11 @@ function createMatcher(pattern) {
|
|
|
34
34
|
return (cmd) => pattern.test(cmd)
|
|
35
35
|
}
|
|
36
36
|
if (Array.isArray(pattern)) {
|
|
37
|
-
//
|
|
37
|
+
// RegExp 数组:任一匹配即命中
|
|
38
|
+
if (pattern[0] instanceof RegExp) {
|
|
39
|
+
return (cmd) => pattern.some(re => re.test(cmd))
|
|
40
|
+
}
|
|
41
|
+
// 字符串数组:按顺序包含所有元素(用于匹配 git commit)
|
|
38
42
|
return (cmd) => {
|
|
39
43
|
const parts = cmd.toLowerCase().split(/\s+/)
|
|
40
44
|
let patternIdx = 0
|
|
@@ -295,21 +299,15 @@ export function checkBashAllowed(command, config = {}) {
|
|
|
295
299
|
const result = evaluateCommand(command)
|
|
296
300
|
|
|
297
301
|
if (result.isForbidden()) {
|
|
298
|
-
//
|
|
302
|
+
// 全自动化模式下,仅 git_safety 类别的危险操作可被允许
|
|
299
303
|
if (fullAuto && allowDangerous && result.category === "git_safety") {
|
|
300
304
|
return {
|
|
301
305
|
allowed: true,
|
|
302
|
-
warning: `Dangerous operation allowed in full-auto mode: ${result.reason}`
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
if (fullAuto && allowDangerous) {
|
|
307
|
-
return {
|
|
308
|
-
allowed: true,
|
|
309
|
-
warning: `Operation allowed in full-auto mode with dangerous_ops enabled: ${result.reason}`
|
|
306
|
+
warning: `Dangerous git operation allowed in full-auto mode: ${result.reason}`
|
|
310
307
|
}
|
|
311
308
|
}
|
|
312
|
-
|
|
309
|
+
|
|
310
|
+
// 其他 forbidden 类别(fs_safety, network_safety 等)始终禁止
|
|
313
311
|
return {
|
|
314
312
|
allowed: false,
|
|
315
313
|
reason: result.reason
|
|
@@ -290,6 +290,7 @@ export async function* requestAnthropicStream(input) {
|
|
|
290
290
|
}
|
|
291
291
|
break
|
|
292
292
|
} catch (err) {
|
|
293
|
+
clearTimeout(connTimer)
|
|
293
294
|
if (signal?.aborted) throw err
|
|
294
295
|
const isNetwork = err?.code === "ETIMEDOUT" || err?.code === "ECONNRESET" || err?.name === "AbortError"
|
|
295
296
|
if (!isNetwork || attempt >= attempts) throw err
|