siclaw 0.1.0 → 0.1.2
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 +75 -114
- package/dist/agentbox/gateway-client.d.ts +2 -1
- package/dist/agentbox/gateway-client.js +6 -2
- package/dist/agentbox/gateway-client.js.map +1 -1
- package/dist/agentbox/http-server.js +184 -19
- package/dist/agentbox/http-server.js.map +1 -1
- package/dist/agentbox/resource-handlers.d.ts +1 -0
- package/dist/agentbox/resource-handlers.js +23 -23
- package/dist/agentbox/resource-handlers.js.map +1 -1
- package/dist/agentbox/session.js +85 -5
- package/dist/agentbox/session.js.map +1 -1
- package/dist/agentbox-main.d.ts +2 -1
- package/dist/agentbox-main.js +65 -18
- package/dist/agentbox-main.js.map +1 -1
- package/dist/cli-credentials.d.ts +1 -0
- package/dist/cli-credentials.js +109 -0
- package/dist/cli-credentials.js.map +1 -0
- package/dist/cli-first-run.d.ts +11 -0
- package/dist/cli-first-run.js +99 -0
- package/dist/cli-first-run.js.map +1 -0
- package/dist/cli-main.js +33 -11
- package/dist/cli-main.js.map +1 -1
- package/dist/cli-setup.d.ts +5 -11
- package/dist/cli-setup.js +12 -225
- package/dist/cli-setup.js.map +1 -1
- package/dist/core/agent-factory.d.ts +4 -0
- package/dist/core/agent-factory.js +102 -151
- package/dist/core/agent-factory.js.map +1 -1
- package/dist/core/config.d.ts +10 -3
- package/dist/core/config.js +11 -95
- package/dist/core/config.js.map +1 -1
- package/dist/core/extensions/deep-investigation.d.ts +2 -1
- package/dist/core/extensions/deep-investigation.js +144 -24
- package/dist/core/extensions/deep-investigation.js.map +1 -1
- package/dist/core/extensions/setup.d.ts +8 -0
- package/dist/core/extensions/setup.js +669 -0
- package/dist/core/extensions/setup.js.map +1 -0
- package/dist/core/llm-proxy.js +7 -3
- package/dist/core/llm-proxy.js.map +1 -1
- package/dist/core/mcp-client.d.ts +0 -10
- package/dist/core/mcp-client.js +0 -65
- package/dist/core/mcp-client.js.map +1 -1
- package/dist/core/prompt.d.ts +1 -1
- package/dist/core/prompt.js +42 -5
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/provider-presets.d.ts +14 -0
- package/dist/core/provider-presets.js +81 -0
- package/dist/core/provider-presets.js.map +1 -0
- package/dist/cron/cron-coordinator.d.ts +2 -0
- package/dist/cron/cron-coordinator.js +46 -14
- package/dist/cron/cron-coordinator.js.map +1 -1
- package/dist/cron/cron-executor.js +33 -8
- package/dist/cron/cron-executor.js.map +1 -1
- package/dist/cron/cron-scheduler.d.ts +1 -1
- package/dist/cron/gateway-client.d.ts +5 -0
- package/dist/cron/gateway-client.js +43 -8
- package/dist/cron/gateway-client.js.map +1 -1
- package/dist/cron-main.js +39 -9
- package/dist/cron-main.js.map +1 -1
- package/dist/gateway/agentbox/client.d.ts +11 -0
- package/dist/gateway/agentbox/client.js +18 -0
- package/dist/gateway/agentbox/client.js.map +1 -1
- package/dist/gateway/agentbox/k8s-spawner.d.ts +11 -2
- package/dist/gateway/agentbox/k8s-spawner.js +95 -52
- package/dist/gateway/agentbox/k8s-spawner.js.map +1 -1
- package/dist/gateway/agentbox/local-spawner.d.ts +1 -1
- package/dist/gateway/agentbox/local-spawner.js +4 -2
- package/dist/gateway/agentbox/local-spawner.js.map +1 -1
- package/dist/gateway/agentbox/manager.d.ts +0 -10
- package/dist/gateway/agentbox/manager.js +11 -30
- package/dist/gateway/agentbox/manager.js.map +1 -1
- package/dist/gateway/agentbox/types.d.ts +6 -4
- package/dist/gateway/cron/cron-service.d.ts +49 -0
- package/dist/gateway/cron/cron-service.js +259 -0
- package/dist/gateway/cron/cron-service.js.map +1 -0
- package/dist/gateway/db/init-schema.js +44 -0
- package/dist/gateway/db/init-schema.js.map +1 -1
- package/dist/gateway/db/migrate-sqlite.js +73 -4
- package/dist/gateway/db/migrate-sqlite.js.map +1 -1
- package/dist/gateway/db/repositories/chat-repo.d.ts +56 -2
- package/dist/gateway/db/repositories/chat-repo.js +132 -2
- package/dist/gateway/db/repositories/chat-repo.js.map +1 -1
- package/dist/gateway/db/repositories/config-repo.d.ts +31 -2
- package/dist/gateway/db/repositories/config-repo.js +57 -7
- package/dist/gateway/db/repositories/config-repo.js.map +1 -1
- package/dist/gateway/db/repositories/env-repo.d.ts +14 -0
- package/dist/gateway/db/repositories/env-repo.js +15 -2
- package/dist/gateway/db/repositories/env-repo.js.map +1 -1
- package/dist/gateway/db/repositories/model-config-repo.d.ts +1 -1
- package/dist/gateway/db/repositories/model-config-repo.js +26 -12
- package/dist/gateway/db/repositories/model-config-repo.js.map +1 -1
- package/dist/gateway/db/repositories/skill-repo.d.ts +0 -5
- package/dist/gateway/db/repositories/skill-review-repo.d.ts +1 -0
- package/dist/gateway/db/repositories/skill-review-repo.js +4 -1
- package/dist/gateway/db/repositories/skill-review-repo.js.map +1 -1
- package/dist/gateway/db/repositories/skill-version-repo.js +0 -1
- package/dist/gateway/db/repositories/skill-version-repo.js.map +1 -1
- package/dist/gateway/db/repositories/system-config-repo.d.ts +1 -1
- package/dist/gateway/db/repositories/system-config-repo.js +2 -1
- package/dist/gateway/db/repositories/system-config-repo.js.map +1 -1
- package/dist/gateway/db/repositories/user-env-config-repo.d.ts +13 -0
- package/dist/gateway/db/repositories/user-env-config-repo.js +11 -0
- package/dist/gateway/db/repositories/user-env-config-repo.js.map +1 -1
- package/dist/gateway/db/repositories/workspace-repo.d.ts +3 -2
- package/dist/gateway/db/repositories/workspace-repo.js +6 -2
- package/dist/gateway/db/repositories/workspace-repo.js.map +1 -1
- package/dist/gateway/db/schema-mysql.d.ts +473 -51
- package/dist/gateway/db/schema-mysql.js +35 -4
- package/dist/gateway/db/schema-mysql.js.map +1 -1
- package/dist/gateway/db/schema-sqlite.d.ts +522 -57
- package/dist/gateway/db/schema-sqlite.js +38 -6
- package/dist/gateway/db/schema-sqlite.js.map +1 -1
- package/dist/gateway/db/schema.d.ts +471 -51
- package/dist/gateway/db/schema.js +1 -1
- package/dist/gateway/db/schema.js.map +1 -1
- package/dist/gateway/metrics-aggregator.d.ts +65 -0
- package/dist/gateway/metrics-aggregator.js +244 -0
- package/dist/gateway/metrics-aggregator.js.map +1 -0
- package/dist/gateway/plugins/channel-bridge.d.ts +4 -1
- package/dist/gateway/plugins/channel-bridge.js +78 -86
- package/dist/gateway/plugins/channel-bridge.js.map +1 -1
- package/dist/gateway/rpc-methods.d.ts +4 -2
- package/dist/gateway/rpc-methods.js +962 -163
- package/dist/gateway/rpc-methods.js.map +1 -1
- package/dist/gateway/security/cert-manager.d.ts +2 -2
- package/dist/gateway/security/cert-manager.js +4 -2
- package/dist/gateway/security/cert-manager.js.map +1 -1
- package/dist/gateway/server.d.ts +4 -8
- package/dist/gateway/server.js +297 -261
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/skills/file-writer.js +17 -11
- package/dist/gateway/skills/file-writer.js.map +1 -1
- package/dist/gateway/skills/script-evaluator.js +12 -9
- package/dist/gateway/skills/script-evaluator.js.map +1 -1
- package/dist/gateway/web/dist/assets/index-0p17ZeTP.js +740 -0
- package/dist/gateway/web/dist/assets/index-9eP6nPUq.js +741 -0
- package/dist/gateway/web/dist/assets/index-9eP6nPUq.js.map +1 -0
- package/dist/gateway/web/dist/assets/index-CAmSY91d.js +675 -0
- package/dist/gateway/web/dist/assets/index-DMFEh8Pp.css +1 -0
- package/dist/gateway/web/dist/assets/index-DyowBCEj.css +1 -0
- package/dist/gateway/web/dist/assets/index-PDK5JJDO.css +1 -0
- package/dist/gateway/web/dist/index.html +2 -2
- package/dist/gateway-main.js +27 -10
- package/dist/gateway-main.js.map +1 -1
- package/dist/memory/embeddings.js +5 -4
- package/dist/memory/embeddings.js.map +1 -1
- package/dist/memory/indexer.d.ts +23 -3
- package/dist/memory/indexer.js +235 -23
- package/dist/memory/indexer.js.map +1 -1
- package/dist/memory/schema.js +15 -1
- package/dist/memory/schema.js.map +1 -1
- package/dist/memory/types.d.ts +18 -0
- package/dist/memory/types.js +6 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/shared/detect-language.d.ts +12 -0
- package/dist/shared/detect-language.js +78 -0
- package/dist/shared/detect-language.js.map +1 -0
- package/dist/shared/diagnostic-events.d.ts +70 -0
- package/dist/shared/diagnostic-events.js +38 -0
- package/dist/shared/diagnostic-events.js.map +1 -0
- package/dist/shared/local-collector.d.ts +56 -0
- package/dist/shared/local-collector.js +284 -0
- package/dist/shared/local-collector.js.map +1 -0
- package/dist/shared/metrics-types.d.ts +64 -0
- package/dist/shared/metrics-types.js +25 -0
- package/dist/shared/metrics-types.js.map +1 -0
- package/dist/shared/metrics.d.ts +19 -0
- package/dist/shared/metrics.js +185 -0
- package/dist/shared/metrics.js.map +1 -0
- package/dist/shared/path-utils.d.ts +15 -0
- package/dist/shared/path-utils.js +23 -0
- package/dist/shared/path-utils.js.map +1 -0
- package/dist/shared/retry.d.ts +35 -0
- package/dist/shared/retry.js +61 -0
- package/dist/shared/retry.js.map +1 -0
- package/dist/tools/command-sets.d.ts +18 -2
- package/dist/tools/command-sets.js +207 -32
- package/dist/tools/command-sets.js.map +1 -1
- package/dist/tools/command-validator.d.ts +56 -0
- package/dist/tools/command-validator.js +357 -0
- package/dist/tools/command-validator.js.map +1 -0
- package/dist/tools/create-skill.js +26 -1
- package/dist/tools/create-skill.js.map +1 -1
- package/dist/tools/credential-list.js +1 -23
- package/dist/tools/credential-list.js.map +1 -1
- package/dist/tools/credential-manager.d.ts +98 -0
- package/dist/tools/credential-manager.js +313 -0
- package/dist/tools/credential-manager.js.map +1 -0
- package/dist/tools/deep-search/engine.js +184 -127
- package/dist/tools/deep-search/engine.js.map +1 -1
- package/dist/tools/deep-search/prompts.d.ts +10 -2
- package/dist/tools/deep-search/prompts.js +37 -36
- package/dist/tools/deep-search/prompts.js.map +1 -1
- package/dist/tools/deep-search/schemas.d.ts +87 -0
- package/dist/tools/deep-search/schemas.js +85 -0
- package/dist/tools/deep-search/schemas.js.map +1 -0
- package/dist/tools/deep-search/sub-agent.d.ts +21 -0
- package/dist/tools/deep-search/sub-agent.js +153 -4
- package/dist/tools/deep-search/sub-agent.js.map +1 -1
- package/dist/tools/deep-search/tool.js +1 -0
- package/dist/tools/deep-search/tool.js.map +1 -1
- package/dist/tools/deep-search/types.d.ts +2 -0
- package/dist/tools/deep-search/types.js.map +1 -1
- package/dist/tools/dp-tools.js +29 -5
- package/dist/tools/dp-tools.js.map +1 -1
- package/dist/tools/exec-utils.d.ts +85 -0
- package/dist/tools/exec-utils.js +294 -0
- package/dist/tools/exec-utils.js.map +1 -0
- package/dist/tools/fork-skill.js +14 -2
- package/dist/tools/fork-skill.js.map +1 -1
- package/dist/tools/investigation-feedback.d.ts +3 -0
- package/dist/tools/investigation-feedback.js +71 -0
- package/dist/tools/investigation-feedback.js.map +1 -0
- package/dist/tools/manage-schedule.js +16 -6
- package/dist/tools/manage-schedule.js.map +1 -1
- package/dist/tools/netns-script.js +27 -281
- package/dist/tools/netns-script.js.map +1 -1
- package/dist/tools/node-exec.d.ts +2 -14
- package/dist/tools/node-exec.js +18 -225
- package/dist/tools/node-exec.js.map +1 -1
- package/dist/tools/node-script.js +14 -168
- package/dist/tools/node-script.js.map +1 -1
- package/dist/tools/pod-exec.d.ts +1 -1
- package/dist/tools/pod-exec.js +10 -26
- package/dist/tools/pod-exec.js.map +1 -1
- package/dist/tools/pod-nsenter-exec.js +21 -225
- package/dist/tools/pod-nsenter-exec.js.map +1 -1
- package/dist/tools/pod-script.js +10 -19
- package/dist/tools/pod-script.js.map +1 -1
- package/dist/tools/restricted-bash.d.ts +1 -17
- package/dist/tools/restricted-bash.js +38 -252
- package/dist/tools/restricted-bash.js.map +1 -1
- package/dist/tools/run-skill.d.ts +3 -1
- package/dist/tools/run-skill.js +21 -1
- package/dist/tools/run-skill.js.map +1 -1
- package/dist/tools/script-resolver.d.ts +3 -1
- package/dist/tools/script-resolver.js +74 -30
- package/dist/tools/script-resolver.js.map +1 -1
- package/dist/tools/update-skill.js +17 -6
- package/dist/tools/update-skill.js.map +1 -1
- package/package.json +8 -6
- package/siclaw.mjs +10 -1
- package/skills/core/cluster-events/SKILL.md +1 -1
- package/skills/core/deep-investigation/SKILL.md +11 -0
- package/skills/core/deployment-rollout-debug/SKILL.md +1 -1
- package/skills/core/dns-debug/SKILL.md +1 -0
- package/skills/core/meta.json +12 -1
- package/skills/core/networkpolicy-debug/SKILL.md +332 -0
- package/skills/core/node-logs/scripts/get-node-logs.sh +19 -9
- package/skills/core/pod-pending-debug/SKILL.md +1 -0
- package/skills/core/quota-debug/SKILL.md +203 -0
- package/skills/core/service-debug/SKILL.md +1 -0
- package/skills/core/statefulset-debug/SKILL.md +280 -0
- package/skills/core/volcano-diagnose-pod/SKILL.md +196 -0
- package/skills/core/volcano-diagnose-pod/scripts/diagnose-pod.sh +175 -0
- package/skills/core/volcano-gang-scheduling/SKILL.md +299 -0
- package/skills/core/volcano-job-diagnose/SKILL.md +319 -0
- package/skills/core/volcano-job-diagnose/scripts/diagnose-job.sh +253 -0
- package/skills/core/volcano-node-resources/SKILL.md +334 -0
- package/skills/core/volcano-node-resources/scripts/get-node-resources.sh +281 -0
- package/skills/core/volcano-queue-diagnose/SKILL.md +294 -0
- package/skills/core/volcano-queue-diagnose/scripts/diagnose-queue.sh +283 -0
- package/skills/core/volcano-resource-insufficient/SKILL.md +315 -0
- package/skills/core/volcano-scheduler-config/SKILL.md +371 -0
- package/skills/core/volcano-scheduler-config/scripts/get-scheduler-config.sh +297 -0
- package/skills/core/volcano-scheduler-logs/SKILL.md +241 -0
- package/skills/core/volcano-scheduler-logs/scripts/get-scheduler-logs.sh +159 -0
- package/skills/platform/create-skill/SKILL.md +35 -3
- package/skills/platform/manage-skill/SKILL.md +9 -2
- package/skills/platform/update-skill/SKILL.md +17 -6
|
@@ -5,10 +5,14 @@ function skillsBase() {
|
|
|
5
5
|
const config = loadConfig();
|
|
6
6
|
return path.resolve(process.cwd(), config.paths.skillsDir);
|
|
7
7
|
}
|
|
8
|
-
/** Builtin skills
|
|
8
|
+
/** Builtin skills directories (baked into Docker image at skills/core/ and skills/extension/) */
|
|
9
|
+
const BUILTIN_TIERS = ["core", "extension"];
|
|
9
10
|
function builtinCoreDir() {
|
|
10
11
|
return path.resolve(process.cwd(), "skills", "core");
|
|
11
12
|
}
|
|
13
|
+
function builtinDirs() {
|
|
14
|
+
return BUILTIN_TIERS.map(t => path.resolve(process.cwd(), "skills", t));
|
|
15
|
+
}
|
|
12
16
|
/** Load disabled builtins list (written by agentbox startup from bundle API) */
|
|
13
17
|
function loadDisabledBuiltins() {
|
|
14
18
|
try {
|
|
@@ -25,35 +29,44 @@ function loadDisabledBuiltins() {
|
|
|
25
29
|
* Higher-specificity scopes first: personal > team > builtin.
|
|
26
30
|
*/
|
|
27
31
|
const SKILL_SCOPES = ["user", "extension", "team", "core"];
|
|
32
|
+
/** Map scope directory names to SkillScope values */
|
|
33
|
+
const SCOPE_MAP = {
|
|
34
|
+
user: "personal",
|
|
35
|
+
extension: "team",
|
|
36
|
+
team: "team",
|
|
37
|
+
core: "builtin",
|
|
38
|
+
};
|
|
28
39
|
/**
|
|
29
40
|
* Build the list of directories to search for a specific skill's scripts.
|
|
30
41
|
*
|
|
31
42
|
* Priority: personal/team (bundle) > builtin (Docker image).
|
|
32
|
-
* 1. Bundle-materialized (skillsBase/<skill>/) —
|
|
33
|
-
* 2.
|
|
43
|
+
* 1. Bundle-materialized (skillsBase/<skill>/) — legacy flat layout
|
|
44
|
+
* 2. Scope subdirectories (user > extension > team > core)
|
|
34
45
|
* 3. Builtin fallback (skills/core/) — unless disabled
|
|
35
46
|
*/
|
|
36
47
|
function getSkillScriptDirs(skill) {
|
|
37
48
|
const base = skillsBase();
|
|
38
|
-
// 1.
|
|
49
|
+
// 1. Legacy flat layout (bundle-materialized without scope subdirs)
|
|
39
50
|
const directPath = path.join(base, skill, "scripts");
|
|
40
51
|
if (fs.existsSync(directPath))
|
|
41
|
-
return [directPath];
|
|
42
|
-
// 2.
|
|
52
|
+
return [{ dir: directPath, scope: "team" }];
|
|
53
|
+
// 2. Scope subdirectories (user > extension > team > core)
|
|
43
54
|
const dirs = [];
|
|
44
|
-
for (const
|
|
45
|
-
const dir = path.join(base,
|
|
55
|
+
for (const scopeName of SKILL_SCOPES) {
|
|
56
|
+
const dir = path.join(base, scopeName, skill, "scripts");
|
|
46
57
|
if (fs.existsSync(dir))
|
|
47
|
-
dirs.push(dir);
|
|
58
|
+
dirs.push({ dir, scope: SCOPE_MAP[scopeName] });
|
|
48
59
|
}
|
|
49
60
|
if (dirs.length > 0)
|
|
50
61
|
return dirs;
|
|
51
|
-
// 3. Builtin fallback (skills/core/) — for skills not in the bundle
|
|
62
|
+
// 3. Builtin fallback (skills/{core,extension}/) — for skills not in the bundle
|
|
52
63
|
const disabled = loadDisabledBuiltins();
|
|
53
64
|
if (!disabled.has(skill)) {
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
65
|
+
for (const bDir of builtinDirs()) {
|
|
66
|
+
const builtinPath = path.join(bDir, skill, "scripts");
|
|
67
|
+
if (fs.existsSync(builtinPath))
|
|
68
|
+
return [{ dir: builtinPath, scope: "builtin" }];
|
|
69
|
+
}
|
|
57
70
|
}
|
|
58
71
|
return [];
|
|
59
72
|
}
|
|
@@ -65,47 +78,68 @@ function getSkillScriptDirs(skill) {
|
|
|
65
78
|
*/
|
|
66
79
|
function getSkillBaseDirs() {
|
|
67
80
|
const base = skillsBase();
|
|
68
|
-
// 1.
|
|
81
|
+
// 1. Legacy flat layout (bundle-materialized without scope subdirs)
|
|
69
82
|
const hasDirectSkills = fs.existsSync(base) && fs.readdirSync(base).some((entry) => !entry.startsWith(".") && !SKILL_SCOPES.includes(entry) &&
|
|
70
83
|
fs.statSync(path.join(base, entry)).isDirectory());
|
|
71
84
|
if (hasDirectSkills) {
|
|
72
85
|
const dirs = [base];
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
86
|
+
for (const bDir of builtinDirs()) {
|
|
87
|
+
if (fs.existsSync(bDir))
|
|
88
|
+
dirs.push(bDir);
|
|
89
|
+
}
|
|
77
90
|
return dirs;
|
|
78
91
|
}
|
|
79
|
-
// 2.
|
|
80
|
-
|
|
92
|
+
// 2. Scope subdirectories (user > extension > team > core)
|
|
93
|
+
const dirs = SKILL_SCOPES
|
|
81
94
|
.map((scope) => path.join(base, scope))
|
|
82
95
|
.filter((dir) => fs.existsSync(dir));
|
|
96
|
+
// 3. Builtin fallback (skills/{core,extension}/ from Docker image)
|
|
97
|
+
for (const bDir of builtinDirs()) {
|
|
98
|
+
if (fs.existsSync(bDir) && !dirs.includes(bDir))
|
|
99
|
+
dirs.push(bDir);
|
|
100
|
+
}
|
|
101
|
+
return dirs;
|
|
83
102
|
}
|
|
84
103
|
/** Check if a skill exists in the materialized bundle (personal/team) */
|
|
85
104
|
export function skillExistsInBundle(skillName) {
|
|
86
|
-
const
|
|
87
|
-
|
|
105
|
+
const base = skillsBase();
|
|
106
|
+
// Legacy flat layout
|
|
107
|
+
const directDir = path.join(base, skillName);
|
|
108
|
+
if (fs.existsSync(directDir) && fs.statSync(directDir).isDirectory())
|
|
109
|
+
return true;
|
|
110
|
+
// Scope subdirectory layout
|
|
111
|
+
for (const scopeDir of ["user", "extension", "team"]) {
|
|
112
|
+
const dir = path.join(base, scopeDir, skillName);
|
|
113
|
+
if (fs.existsSync(dir) && fs.statSync(dir).isDirectory())
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
88
117
|
}
|
|
89
|
-
/** Check if a skill exists as a non-disabled builtin (skills/core/) */
|
|
118
|
+
/** Check if a skill exists as a non-disabled builtin (skills/{core,extension}/) */
|
|
90
119
|
export function skillExistsAsBuiltin(skillName) {
|
|
91
120
|
const disabled = loadDisabledBuiltins();
|
|
92
121
|
if (disabled.has(skillName))
|
|
93
122
|
return false;
|
|
94
|
-
const
|
|
95
|
-
|
|
123
|
+
for (const bDir of builtinDirs()) {
|
|
124
|
+
const dir = path.join(bDir, skillName);
|
|
125
|
+
if (fs.existsSync(dir) && fs.statSync(dir).isDirectory())
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
96
129
|
}
|
|
97
130
|
/**
|
|
98
131
|
* Resolve a skill script.
|
|
99
132
|
* Searches the single skills directory (bundle model) or scope dirs (CLI fallback).
|
|
100
133
|
*/
|
|
101
134
|
export function resolveSkillScript(skill, script) {
|
|
102
|
-
for (const dir of getSkillScriptDirs(skill)) {
|
|
135
|
+
for (const { dir, scope } of getSkillScriptDirs(skill)) {
|
|
103
136
|
const scriptPath = path.join(dir, script);
|
|
104
137
|
if (fs.existsSync(scriptPath)) {
|
|
105
138
|
return {
|
|
106
139
|
path: scriptPath,
|
|
107
140
|
content: fs.readFileSync(scriptPath, "utf-8"),
|
|
108
141
|
interpreter: script.endsWith(".py") ? "python3" : "bash",
|
|
142
|
+
scope,
|
|
109
143
|
};
|
|
110
144
|
}
|
|
111
145
|
}
|
|
@@ -116,7 +150,7 @@ export function resolveSkillScript(skill, script) {
|
|
|
116
150
|
*/
|
|
117
151
|
export function listSkillScripts(skill) {
|
|
118
152
|
const scripts = new Set();
|
|
119
|
-
for (const dir of getSkillScriptDirs(skill)) {
|
|
153
|
+
for (const { dir } of getSkillScriptDirs(skill)) {
|
|
120
154
|
try {
|
|
121
155
|
for (const f of fs.readdirSync(dir)) {
|
|
122
156
|
if (f.endsWith(".sh") || f.endsWith(".py"))
|
|
@@ -136,14 +170,24 @@ export function listAllSkillsWithScripts() {
|
|
|
136
170
|
const result = [];
|
|
137
171
|
const seen = new Set();
|
|
138
172
|
const disabled = loadDisabledBuiltins();
|
|
139
|
-
const
|
|
173
|
+
const builtinSet = new Set(builtinDirs());
|
|
140
174
|
for (const base of getSkillBaseDirs()) {
|
|
141
|
-
const isBuiltinDir = base
|
|
175
|
+
const isBuiltinDir = builtinSet.has(base);
|
|
142
176
|
try {
|
|
143
177
|
for (const d of fs.readdirSync(base, { withFileTypes: true })) {
|
|
144
178
|
if (d.name.startsWith("_"))
|
|
145
179
|
continue; // skip _lib etc.
|
|
146
|
-
if (
|
|
180
|
+
if (seen.has(d.name))
|
|
181
|
+
continue;
|
|
182
|
+
// Check if entry is a directory (for symlinks, stat the target)
|
|
183
|
+
let isDir = d.isDirectory();
|
|
184
|
+
if (!isDir && d.isSymbolicLink()) {
|
|
185
|
+
try {
|
|
186
|
+
isDir = fs.statSync(path.join(base, d.name)).isDirectory();
|
|
187
|
+
}
|
|
188
|
+
catch { /* broken symlink */ }
|
|
189
|
+
}
|
|
190
|
+
if (!isDir)
|
|
147
191
|
continue;
|
|
148
192
|
// Skip disabled builtins so they don't shadow bundle overrides
|
|
149
193
|
if (isBuiltinDir && disabled.has(d.name))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-resolver.js","sourceRoot":"","sources":["../../src/tools/script-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"script-resolver.js","sourceRoot":"","sources":["../../src/tools/script-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,22 +5,33 @@ export function createUpdateSkillTool() {
|
|
|
5
5
|
name: "update_skill",
|
|
6
6
|
label: "Update Skill",
|
|
7
7
|
description: `Update an existing Siclaw skill definition.
|
|
8
|
+
|
|
9
|
+
**Skill directories are read-only. All skill modifications must go through skill management tools (create_skill, update_skill, fork_skill).**
|
|
10
|
+
|
|
8
11
|
This tool outputs a structured skill update that the user can preview and confirm. It does NOT persist anything — the user must confirm via the UI.
|
|
9
12
|
|
|
10
13
|
Use this tool (NOT create_skill) when the user asks to modify, update, change, or fix an existing skill. This includes:
|
|
11
|
-
- When the user message contains [
|
|
14
|
+
- When the user message contains \`[Skill: <name>]\` context from the UI (the user selected a skill to edit)
|
|
12
15
|
- When the user asks to change a skill that was created earlier in the conversation
|
|
13
16
|
- When the user asks to modify or replace an existing skill
|
|
14
17
|
|
|
15
|
-
**
|
|
16
|
-
Before calling this tool, you MUST know the exact name of the skill to update. Check
|
|
18
|
+
**Identify the target skill FIRST**:
|
|
19
|
+
Before calling this tool, you MUST know the exact name of the skill to update. Check \`<available_skills>\` in your system prompt, or \`read\` the skill's SKILL.md for details. If the user's request is ambiguous, ASK them to clarify which skill they mean.
|
|
20
|
+
|
|
21
|
+
## Environments and Approval Workflow
|
|
17
22
|
|
|
18
|
-
|
|
23
|
+
| Environment | Behavior |
|
|
24
|
+
|-------------|----------|
|
|
25
|
+
| **Dev / Test** | Updated content (working copy) is immediately visible and testable. |
|
|
26
|
+
| **Production** | Only the **approved** version is active. Updates enter a staged review state and the OLD version remains in use until the new version is approved. |
|
|
19
27
|
|
|
20
|
-
|
|
28
|
+
- When scripts are changed, the update enters a **staged review** state and requires admin approval before the new version becomes active in production.
|
|
29
|
+
- The **old version** of the skill remains usable in production during review.
|
|
30
|
+
- In dev/test, the working copy is immediately available for testing.
|
|
31
|
+
- After updating in production context, inform the user that the update is pending review.
|
|
21
32
|
|
|
22
33
|
Parameters:
|
|
23
|
-
- id: The skill ID from
|
|
34
|
+
- id: The skill ID from the UI context, OR the skill's kebab-case name (for name-based lookup).
|
|
24
35
|
- name: the skill name in kebab-case (cannot be changed after creation).
|
|
25
36
|
- description: one-line summary
|
|
26
37
|
- type: category (Monitoring, Network, Security, Database, Core, Utility, Automation, Custom)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-skill.js","sourceRoot":"","sources":["../../src/tools/update-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAY3D,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"update-skill.js","sourceRoot":"","sources":["../../src/tools/update-skill.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "siclaw",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "AI-powered SRE copilot for Kubernetes diagnostics via natural language",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@anthropic-ai/claude-agent-sdk": "^0.1.58",
|
|
42
42
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
43
|
+
"@clack/prompts": "^1.1.0",
|
|
43
44
|
"@kubernetes/client-node": "^1.4.0",
|
|
44
45
|
"@mariozechner/pi-coding-agent": "^0.55.3",
|
|
45
46
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
@@ -50,13 +51,13 @@
|
|
|
50
51
|
"markdown-it": "^14.1.0",
|
|
51
52
|
"mysql2": "^3.16.3",
|
|
52
53
|
"node-forge": "^1.3.3",
|
|
54
|
+
"prom-client": "^15.1.3",
|
|
53
55
|
"sql.js": "^1.12.0",
|
|
54
56
|
"sqlite-vec": "^0.1.7-alpha.2",
|
|
55
57
|
"ws": "^8.18.0",
|
|
56
58
|
"zod": "^3.24.0"
|
|
57
59
|
},
|
|
58
60
|
"optionalDependencies": {
|
|
59
|
-
"@aws-sdk/client-s3": "^3.984.0",
|
|
60
61
|
"@larksuiteoapi/node-sdk": "^1.56.1",
|
|
61
62
|
"@slack/bolt": "^4.6.0",
|
|
62
63
|
"@slack/web-api": "^7.14.1",
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|
|
68
69
|
"@types/diff": "^7.0.2",
|
|
70
|
+
"@types/express": "^5.0.6",
|
|
69
71
|
"@types/js-yaml": "^4.0.9",
|
|
70
72
|
"@types/markdown-it": "^14.1.2",
|
|
71
73
|
"@types/node": "^22.19.8",
|
|
@@ -98,9 +100,9 @@
|
|
|
98
100
|
"start:gateway": "node siclaw-gateway.mjs",
|
|
99
101
|
"start:agentbox": "node dist/agentbox-main.js",
|
|
100
102
|
"test": "vitest run",
|
|
101
|
-
"docker:build:gateway": "docker build -f Dockerfile.gateway -t siclaw-gateway:latest .",
|
|
102
|
-
"docker:build:agentbox": "docker build -f Dockerfile.agentbox -t siclaw-agentbox:latest .",
|
|
103
|
-
"docker:push:gateway": "docker push siclaw-gateway:latest",
|
|
104
|
-
"docker:push:agentbox": "docker push siclaw-agentbox:latest"
|
|
103
|
+
"docker:build:gateway": "docker build -f Dockerfile.gateway -t siclaw/siclaw-gateway:latest .",
|
|
104
|
+
"docker:build:agentbox": "docker build -f Dockerfile.agentbox -t siclaw/siclaw-agentbox:latest .",
|
|
105
|
+
"docker:push:gateway": "docker push siclaw/siclaw-gateway:latest",
|
|
106
|
+
"docker:push:agentbox": "docker push siclaw/siclaw-agentbox:latest"
|
|
105
107
|
}
|
|
106
108
|
}
|
package/siclaw.mjs
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
// Suppress Node.js ExperimentalWarning (node:sqlite) without removing other warning listeners
|
|
4
|
+
const _origEmit = process.emit;
|
|
5
|
+
process.emit = function (event, ...args) {
|
|
6
|
+
if (event === "warning" && args[0]?.name === "ExperimentalWarning") return false;
|
|
7
|
+
return _origEmit.apply(this, [event, ...args]);
|
|
8
|
+
};
|
|
9
|
+
|
|
3
10
|
import fs from "node:fs";
|
|
4
11
|
import path from "node:path";
|
|
5
12
|
import { fileURLToPath } from "node:url";
|
|
@@ -23,9 +30,11 @@ Options:
|
|
|
23
30
|
--prompt <text> Run in non-interactive print mode
|
|
24
31
|
--continue Continue the most recent session
|
|
25
32
|
--debug Enable debug logging
|
|
26
|
-
--setup Force provider setup wizard
|
|
27
33
|
--help, -h Show this help
|
|
28
34
|
--version, -v Show version
|
|
35
|
+
|
|
36
|
+
In-session commands:
|
|
37
|
+
/setup Configure credentials and model provider
|
|
29
38
|
`);
|
|
30
39
|
}
|
|
31
40
|
|
|
@@ -61,7 +61,7 @@ Match the Warning events against the patterns below. For each matched pattern, r
|
|
|
61
61
|
|
|
62
62
|
The scheduler cannot place a pod on any node.
|
|
63
63
|
|
|
64
|
-
**Next step:** Use the `pod-pending-debug` skill to diagnose the specific pod.
|
|
64
|
+
**Next step:** Use the `pod-pending-debug` skill to diagnose the specific pod. If the pod has a `scheduling.volcano.sh/pod-group` annotation (managed by Volcano scheduler), use `volcano-diagnose-pod` skill instead for Volcano-specific issues (PodGroup, Queue, Gang scheduling).
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
@@ -65,6 +65,16 @@ Synthesize the deep_search results into a conclusion.
|
|
|
65
65
|
2. Write a clear conclusion with root cause analysis and recommendations.
|
|
66
66
|
3. Call `manage_checklist` to mark `conclusion` as `done`.
|
|
67
67
|
|
|
68
|
+
### Phase 5: Feedback (optional)
|
|
69
|
+
|
|
70
|
+
After presenting findings, briefly ask if the diagnosis looks accurate.
|
|
71
|
+
Do NOT be pushy — a single sentence like "Let me know if this diagnosis
|
|
72
|
+
matches what you're seeing" is sufficient.
|
|
73
|
+
|
|
74
|
+
If the user confirms, corrects, or rejects the diagnosis:
|
|
75
|
+
1. Call `investigation_feedback` with the investigationId from deep_search results.
|
|
76
|
+
2. This improves future investigations by boosting/suppressing this diagnosis.
|
|
77
|
+
|
|
68
78
|
## Available Tools
|
|
69
79
|
|
|
70
80
|
| Tool | Purpose |
|
|
@@ -73,6 +83,7 @@ Synthesize the deep_search results into a conclusion.
|
|
|
73
83
|
| `propose_hypotheses` | Present hypotheses to the user — a communication tool for aligning investigation direction |
|
|
74
84
|
| `deep_search` | Launch parallel sub-agent validation of hypotheses |
|
|
75
85
|
| `end_investigation` | End early — auto-skips remaining phases |
|
|
86
|
+
| `investigation_feedback` | Submit user feedback on diagnosis accuracy (confirmed/corrected/rejected) |
|
|
76
87
|
|
|
77
88
|
## Guidelines
|
|
78
89
|
|
|
@@ -127,7 +127,7 @@ kubectl describe rs <new-rs> -n <ns>
|
|
|
127
127
|
|
|
128
128
|
Check events for:
|
|
129
129
|
- **Admission webhook denied** — a webhook is rejecting the new pod spec
|
|
130
|
-
- **Exceeded quota** —
|
|
130
|
+
- **Exceeded quota / LimitRange violation** — Use `quota-debug` for native ResourceQuota/LimitRange diagnosis, or `volcano-queue-diagnose` for Volcano gang scheduling clusters
|
|
131
131
|
- **FailedCreate** — other creation failures
|
|
132
132
|
|
|
133
133
|
---
|
|
@@ -142,3 +142,4 @@ Check CoreDNS pod status and events for why they are not ready.
|
|
|
142
142
|
- The `kube-dns` service name is used even when CoreDNS is the DNS provider — this is for backwards compatibility.
|
|
143
143
|
- For pods using `hostNetwork: true`, DNS resolution uses the node's `/etc/resolv.conf` instead of the cluster DNS. These pods cannot resolve cluster-internal service names by default.
|
|
144
144
|
- If testing DNS from outside the cluster, remember that `*.svc.cluster.local` names are only resolvable from within the cluster.
|
|
145
|
+
- If DNS timeouts only affect specific pods (not cluster-wide), an egress NetworkPolicy may be blocking UDP/TCP port 53 — use `networkpolicy-debug` to check before investigating CoreDNS.
|
package/skills/core/meta.json
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"image-pull-debug": ["kubernetes", "general", "diagnostic", "sre", "developer"],
|
|
10
10
|
"ingress-debug": ["kubernetes", "network", "diagnostic", "sre", "developer"],
|
|
11
11
|
"job-debug": ["kubernetes", "general", "diagnostic", "sre", "developer"],
|
|
12
|
+
"networkpolicy-debug": ["kubernetes", "network", "diagnostic", "sre", "developer"],
|
|
12
13
|
"node-health-check": ["kubernetes", "general", "diagnostic", "sre", "developer"],
|
|
13
14
|
"node-logs": ["kubernetes", "general", "diagnostic", "sre", "developer"],
|
|
14
15
|
"node-ping-gateway": ["kubernetes", "network", "diagnostic", "sre", "developer"],
|
|
@@ -18,6 +19,16 @@
|
|
|
18
19
|
"pod-ping-gateway": ["kubernetes", "network", "diagnostic", "sre", "developer"],
|
|
19
20
|
"pod-show-gateway": ["kubernetes", "network", "diagnostic", "sre", "developer"],
|
|
20
21
|
"pvc-debug": ["kubernetes", "general", "diagnostic", "sre", "developer"],
|
|
21
|
-
"
|
|
22
|
+
"quota-debug": ["kubernetes", "general", "diagnostic", "sre", "developer"],
|
|
23
|
+
"service-debug": ["kubernetes", "network", "diagnostic", "sre", "developer"],
|
|
24
|
+
"statefulset-debug": ["kubernetes", "general", "diagnostic", "sre", "developer"],
|
|
25
|
+
"volcano-diagnose-pod": ["volcano", "scheduling", "diagnostic", "sre", "developer"],
|
|
26
|
+
"volcano-gang-scheduling": ["volcano", "scheduling", "diagnostic", "sre", "developer"],
|
|
27
|
+
"volcano-job-diagnose": ["volcano", "scheduling", "diagnostic", "sre", "developer"],
|
|
28
|
+
"volcano-node-resources": ["volcano", "scheduling", "diagnostic", "sre", "developer"],
|
|
29
|
+
"volcano-queue-diagnose": ["volcano", "scheduling", "diagnostic", "sre", "developer"],
|
|
30
|
+
"volcano-resource-insufficient": ["volcano", "scheduling", "diagnostic", "sre", "developer"],
|
|
31
|
+
"volcano-scheduler-config": ["volcano", "scheduling", "diagnostic", "sre", "developer"],
|
|
32
|
+
"volcano-scheduler-logs": ["volcano", "scheduling", "diagnostic", "sre", "developer"]
|
|
22
33
|
}
|
|
23
34
|
}
|