soturail 0.2.3 → 0.3.0
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 +43 -10
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/bench.d.ts +1 -1
- package/dist/commands/bench.js +126 -2
- package/dist/commands/bench.js.map +1 -1
- package/dist/commands/context.d.ts +2 -0
- package/dist/commands/context.js +27 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/hooks.d.ts +3 -0
- package/dist/commands/hooks.js +32 -8
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/mcp.d.ts +2 -0
- package/dist/commands/mcp.js +21 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/memory.d.ts +1 -0
- package/dist/commands/memory.js +2 -1
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/release.js +175 -7
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/skills.d.ts +2 -0
- package/dist/commands/skills.js +43 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/core/config.d.ts +5 -0
- package/dist/core/config.js +12 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/context-pack.d.ts +13 -0
- package/dist/core/context-pack.js +102 -0
- package/dist/core/context-pack.js.map +1 -0
- package/dist/core/mcp-resources.d.ts +13 -0
- package/dist/core/mcp-resources.js +46 -0
- package/dist/core/mcp-resources.js.map +1 -0
- package/dist/core/mcp-server.d.ts +14 -0
- package/dist/core/mcp-server.js +81 -0
- package/dist/core/mcp-server.js.map +1 -0
- package/dist/core/mcp-tools.d.ts +7 -0
- package/dist/core/mcp-tools.js +73 -0
- package/dist/core/mcp-tools.js.map +1 -0
- package/dist/core/release-preflight.js +2 -0
- package/dist/core/release-preflight.js.map +1 -1
- package/dist/core/skill-exporter.d.ts +3 -0
- package/dist/core/skill-exporter.js +72 -0
- package/dist/core/skill-exporter.js.map +1 -0
- package/dist/core/skill-schema.d.ts +55 -0
- package/dist/core/skill-schema.js +84 -0
- package/dist/core/skill-schema.js.map +1 -0
- package/dist/core/skill-store.d.ts +4 -0
- package/dist/core/skill-store.js +92 -0
- package/dist/core/skill-store.js.map +1 -0
- package/dist/core/skill-validator.d.ts +12 -0
- package/dist/core/skill-validator.js +94 -0
- package/dist/core/skill-validator.js.map +1 -0
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/docs/benchmarking.md +6 -1
- package/docs/comparisons.md +35 -0
- package/docs/context-packs.md +29 -0
- package/docs/examples/skills/README.md +11 -0
- package/docs/hooks/claude.md +6 -4
- package/docs/hooks/codex.md +4 -3
- package/docs/hooks/cursor.md +4 -3
- package/docs/hooks/gemini.md +4 -3
- package/docs/hooks/mcp.md +10 -0
- package/docs/hooks.md +12 -16
- package/docs/mcp.md +18 -0
- package/docs/release-checklist.md +3 -0
- package/docs/release-workflow.md +15 -22
- package/docs/security-model.md +6 -0
- package/docs/skill-rail.md +14 -20
- package/docs/usage.md +15 -0
- package/docs/windows.md +1 -1
- package/docs/workflow-rail.md +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { getWorkspacePaths, readJsonl } from "./config.js";
|
|
4
|
+
export const mcpResources = [
|
|
5
|
+
{ uri: "soturail://repo-map", name: "Heuristic Repo Map", mimeType: "application/json", description: "Stable repository map generated by soturail index." },
|
|
6
|
+
{ uri: "soturail://tree", name: "Repository Tree", mimeType: "text/plain", description: "Stable tree output generated by soturail index." },
|
|
7
|
+
{ uri: "soturail://rules", name: "Rules", mimeType: "text/yaml", description: "Extracted local rules." },
|
|
8
|
+
{ uri: "soturail://approved-memory", name: "Approved Memory", mimeType: "application/jsonl", description: "Approved local memory records." },
|
|
9
|
+
{ uri: "soturail://self-report", name: "Self Dogfood Report", mimeType: "text/markdown", description: "Latest self-dogfooding report." },
|
|
10
|
+
{ uri: "soturail://benchmarks/latest", name: "Latest Benchmarks", mimeType: "application/json", description: "Latest benchmark JSON results." },
|
|
11
|
+
{ uri: "soturail://roadmap", name: "Roadmap", mimeType: "text/markdown", description: "Project roadmap." }
|
|
12
|
+
];
|
|
13
|
+
export async function listMcpResources() {
|
|
14
|
+
return mcpResources;
|
|
15
|
+
}
|
|
16
|
+
export async function readMcpResource(uri, root = process.cwd()) {
|
|
17
|
+
const paths = getWorkspacePaths(root);
|
|
18
|
+
const stableFirstNotice = "SotuRail resource: stable project content first; dynamic metadata appears last when present.\n\n";
|
|
19
|
+
switch (uri) {
|
|
20
|
+
case "soturail://repo-map":
|
|
21
|
+
return resource(uri, "application/json", stableFirstNotice + await readOptional(path.join(paths.indexesDir, "repo-map.json"), "{}"));
|
|
22
|
+
case "soturail://tree":
|
|
23
|
+
return resource(uri, "text/plain", stableFirstNotice + await readOptional(path.join(paths.indexesDir, "tree.txt"), "No tree found. Run soturail index."));
|
|
24
|
+
case "soturail://rules":
|
|
25
|
+
return resource(uri, "text/yaml", stableFirstNotice + await readOptional(paths.rulesFile, "No rules found."));
|
|
26
|
+
case "soturail://approved-memory": {
|
|
27
|
+
const approved = await readJsonl(paths.memoryApprovedFile);
|
|
28
|
+
return resource(uri, "application/jsonl", stableFirstNotice + approved.map((item) => JSON.stringify(item)).join("\n"));
|
|
29
|
+
}
|
|
30
|
+
case "soturail://self-report":
|
|
31
|
+
return resource(uri, "text/markdown", await readOptional(path.join(paths.workspace, "reports", "self-dogfood.md"), "No self report found."));
|
|
32
|
+
case "soturail://benchmarks/latest":
|
|
33
|
+
return resource(uri, "application/json", await readOptional(path.join(root, "benchmarks", "results", "latest.json"), "{}"));
|
|
34
|
+
case "soturail://roadmap":
|
|
35
|
+
return resource(uri, "text/markdown", await readOptional(path.join(root, "ROADMAP.md"), "No roadmap found."));
|
|
36
|
+
default:
|
|
37
|
+
throw new Error(`Unknown MCP resource: ${uri}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function resource(uri, mimeType, text) {
|
|
41
|
+
return { uri, mimeType, text };
|
|
42
|
+
}
|
|
43
|
+
async function readOptional(filePath, fallback) {
|
|
44
|
+
return fs.readFile(filePath, "utf8").catch(() => fallback);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=mcp-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-resources.js","sourceRoot":"","sources":["../../src/core/mcp-resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { listMcpResources } from "./mcp-resources.js";
|
|
2
|
+
import { listMcpTools } from "./mcp-tools.js";
|
|
3
|
+
export interface McpManifest {
|
|
4
|
+
name: string;
|
|
5
|
+
version: string;
|
|
6
|
+
protocol: string;
|
|
7
|
+
transports: string[];
|
|
8
|
+
resources: Awaited<ReturnType<typeof listMcpResources>>;
|
|
9
|
+
tools: ReturnType<typeof listMcpTools>;
|
|
10
|
+
}
|
|
11
|
+
export declare function mcpManifest(version: string): Promise<McpManifest>;
|
|
12
|
+
export declare function mcpDoctor(version: string): Promise<string>;
|
|
13
|
+
export declare function handleMcpMessage(message: any, root?: string, version?: string): Promise<any>;
|
|
14
|
+
export declare function serveMcpStdio(root?: string, version?: string): Promise<void>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import readline from "node:readline";
|
|
2
|
+
import { stdin as input, stdout as output } from "node:process";
|
|
3
|
+
import { listMcpResources, readMcpResource } from "./mcp-resources.js";
|
|
4
|
+
import { callMcpTool, listMcpTools } from "./mcp-tools.js";
|
|
5
|
+
export async function mcpManifest(version) {
|
|
6
|
+
return {
|
|
7
|
+
name: "soturail",
|
|
8
|
+
version,
|
|
9
|
+
protocol: "json-rpc-2.0-mcp-compatible-stdio",
|
|
10
|
+
transports: ["stdio"],
|
|
11
|
+
resources: await listMcpResources(),
|
|
12
|
+
tools: listMcpTools()
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export async function mcpDoctor(version) {
|
|
16
|
+
const manifest = await mcpManifest(version);
|
|
17
|
+
return [
|
|
18
|
+
"SotuRail MCP doctor",
|
|
19
|
+
`version: ${version}`,
|
|
20
|
+
`resources: ${manifest.resources.length}`,
|
|
21
|
+
`tools: ${manifest.tools.length}`,
|
|
22
|
+
"transport_stdio: available",
|
|
23
|
+
"arbitrary_shell_execution: disabled"
|
|
24
|
+
].join("\n") + "\n";
|
|
25
|
+
}
|
|
26
|
+
export async function handleMcpMessage(message, root = process.cwd(), version = "0.0.0") {
|
|
27
|
+
const id = message?.id ?? null;
|
|
28
|
+
try {
|
|
29
|
+
switch (message?.method) {
|
|
30
|
+
case "initialize":
|
|
31
|
+
return rpcResult(id, {
|
|
32
|
+
protocolVersion: "2024-11-05",
|
|
33
|
+
serverInfo: { name: "soturail", version },
|
|
34
|
+
capabilities: { resources: {}, tools: {} }
|
|
35
|
+
});
|
|
36
|
+
case "resources/list":
|
|
37
|
+
return rpcResult(id, { resources: await listMcpResources() });
|
|
38
|
+
case "resources/read": {
|
|
39
|
+
const uri = message?.params?.uri;
|
|
40
|
+
if (typeof uri !== "string")
|
|
41
|
+
throw new Error("resources/read requires params.uri");
|
|
42
|
+
const resource = await readMcpResource(uri, root);
|
|
43
|
+
return rpcResult(id, { contents: [{ uri: resource.uri, mimeType: resource.mimeType, text: resource.text }] });
|
|
44
|
+
}
|
|
45
|
+
case "tools/list":
|
|
46
|
+
return rpcResult(id, { tools: listMcpTools().map((tool) => ({ name: tool.name, description: tool.description, inputSchema: { type: "object" } })) });
|
|
47
|
+
case "tools/call": {
|
|
48
|
+
const name = message?.params?.name;
|
|
49
|
+
if (typeof name !== "string")
|
|
50
|
+
throw new Error("tools/call requires params.name");
|
|
51
|
+
const text = await callMcpTool(name, message?.params?.arguments ?? {}, root);
|
|
52
|
+
return rpcResult(id, { content: [{ type: "text", text }] });
|
|
53
|
+
}
|
|
54
|
+
default:
|
|
55
|
+
throw new Error(`Unsupported MCP method: ${String(message?.method)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return { jsonrpc: "2.0", id, error: { code: -32000, message: error instanceof Error ? error.message : String(error) } };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export async function serveMcpStdio(root = process.cwd(), version = "0.0.0") {
|
|
63
|
+
const rl = readline.createInterface({ input });
|
|
64
|
+
for await (const line of rl) {
|
|
65
|
+
if (!line.trim())
|
|
66
|
+
continue;
|
|
67
|
+
let message;
|
|
68
|
+
try {
|
|
69
|
+
message = JSON.parse(line);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
output.write(`${JSON.stringify({ jsonrpc: "2.0", id: null, error: { code: -32700, message: "Parse error" } })}\n`);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
output.write(`${JSON.stringify(await handleMcpMessage(message, root, version))}\n`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function rpcResult(id, result) {
|
|
79
|
+
return { jsonrpc: "2.0", id, result };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface McpToolInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const mcpTools: McpToolInfo[];
|
|
6
|
+
export declare function callMcpTool(name: string, args?: Record<string, unknown>, root?: string): Promise<string>;
|
|
7
|
+
export declare function listMcpTools(): McpToolInfo[];
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { reduceAgentResponse } from "../compressors/agent-response-reducer.js";
|
|
4
|
+
import { expandRawLog } from "../commands/expand.js";
|
|
5
|
+
import { readCommand } from "../commands/read.js";
|
|
6
|
+
import { checkRules } from "../commands/rules.js";
|
|
7
|
+
import { runIndex } from "../commands/index.js";
|
|
8
|
+
import { buildContextPack } from "./context-pack.js";
|
|
9
|
+
import { MetricsStore } from "./metrics-store.js";
|
|
10
|
+
import { readSkills, renderSkillList } from "./skill-store.js";
|
|
11
|
+
export const mcpTools = [
|
|
12
|
+
{ name: "soturail.index", description: "Run the heuristic repository indexer." },
|
|
13
|
+
{ name: "soturail.read", description: "Read a file progressively." },
|
|
14
|
+
{ name: "soturail.format", description: "Compress agent response text deterministically." },
|
|
15
|
+
{ name: "soturail.rules.check", description: "Run local rule validators." },
|
|
16
|
+
{ name: "soturail.skills.list", description: "List local Skill Rail skills." },
|
|
17
|
+
{ name: "soturail.context.pack", description: "Build a cache-friendly context pack." },
|
|
18
|
+
{ name: "soturail.expand", description: "Expand a raw log with redaction unless allow_raw=true." }
|
|
19
|
+
];
|
|
20
|
+
export async function callMcpTool(name, args = {}, root = process.cwd()) {
|
|
21
|
+
switch (name) {
|
|
22
|
+
case "soturail.index":
|
|
23
|
+
return runIndex(root);
|
|
24
|
+
case "soturail.read": {
|
|
25
|
+
const file = requiredString(args.file, "file");
|
|
26
|
+
const query = stringArg(args.query);
|
|
27
|
+
return readCommand(file, query ? { query, full: args.full === true } : { full: args.full === true }, root);
|
|
28
|
+
}
|
|
29
|
+
case "soturail.format": {
|
|
30
|
+
const text = typeof args.text === "string"
|
|
31
|
+
? args.text
|
|
32
|
+
: await fs.readFile(path.resolve(root, requiredString(args.file, "file")), "utf8");
|
|
33
|
+
const mode = stringArg(args.mode) ?? "concise";
|
|
34
|
+
return reduceAgentResponse(text, mode).output;
|
|
35
|
+
}
|
|
36
|
+
case "soturail.rules.check":
|
|
37
|
+
return checkRules(root);
|
|
38
|
+
case "soturail.skills.list":
|
|
39
|
+
return renderSkillList(await readSkills(root));
|
|
40
|
+
case "soturail.context.pack": {
|
|
41
|
+
const target = (stringArg(args.target) ?? "generic");
|
|
42
|
+
const pack = await buildContextPack(target, root);
|
|
43
|
+
return `Context pack written: ${path.normalize(path.relative(root, pack.path))}\n`;
|
|
44
|
+
}
|
|
45
|
+
case "soturail.expand": {
|
|
46
|
+
const rawId = requiredString(args.raw_id, "raw_id");
|
|
47
|
+
const allowRaw = args.allow_raw === true;
|
|
48
|
+
const raw = (await expandRawLog(rawId, root)).toString("utf8");
|
|
49
|
+
await new MetricsStore(root).append({ type: "expand", raw_id: rawId, details: { source: "mcp", allow_raw: allowRaw } });
|
|
50
|
+
return allowRaw ? raw : redactSecrets(raw);
|
|
51
|
+
}
|
|
52
|
+
default:
|
|
53
|
+
throw new Error(`Unknown MCP tool: ${name}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function listMcpTools() {
|
|
57
|
+
return mcpTools;
|
|
58
|
+
}
|
|
59
|
+
function requiredString(value, name) {
|
|
60
|
+
if (typeof value !== "string" || value.length === 0)
|
|
61
|
+
throw new Error(`Missing required argument: ${name}`);
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
function stringArg(value) {
|
|
65
|
+
return typeof value === "string" ? value : undefined;
|
|
66
|
+
}
|
|
67
|
+
function redactSecrets(text) {
|
|
68
|
+
return text
|
|
69
|
+
.replace(/sk-[A-Za-z0-9_-]{12,}/g, "sk-[REDACTED]")
|
|
70
|
+
.replace(/AKIA[0-9A-Z]{16}/g, "AKIA[REDACTED]")
|
|
71
|
+
.replace(/(password|api[_-]?key|secret)\s*[:=]\s*["']?[^"'\s]+/gi, "$1=[REDACTED]");
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=mcp-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/core/mcp-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,9 +33,11 @@ export async function runReleasePreflight(root = process.cwd(), options = {}) {
|
|
|
33
33
|
const combined = `${pack.stdout}\n${pack.stderr}`;
|
|
34
34
|
const expectedTarball = packageName && version ? `${packageName}-${version}.tgz` : null;
|
|
35
35
|
addGate(gates, "npm_pack_metadata", "npm pack metadata", Boolean(pack.code === 0 && expectedTarball && combined.includes(expectedTarball)), expectedTarball ? `expected ${expectedTarball}` : "missing package name or version");
|
|
36
|
+
addGate(gates, "npm_pack_no_raw_logs", "npm pack excludes raw logs", !combined.includes(".soturail/raw") && !combined.includes("benchmarks/results/latest.json"), "pack output must not include .soturail/raw or generated benchmark JSON");
|
|
36
37
|
}
|
|
37
38
|
else {
|
|
38
39
|
addGate(gates, "npm_pack_metadata", "npm pack metadata", true, "skipped by test options", false);
|
|
40
|
+
addGate(gates, "npm_pack_no_raw_logs", "npm pack excludes raw logs", true, "skipped by test options", false);
|
|
39
41
|
}
|
|
40
42
|
const readme = await readOptionalText(path.join(resolvedRoot, "README.md"));
|
|
41
43
|
addGate(gates, "readme_install", "README install instructions", Boolean(readme && /npx\s+soturail/.test(readme) && readme.includes("npm install -g soturail") && readme.includes("soturail --version")), readme ? "README.md contains npm/npx/global install guidance" : "README.md missing");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-preflight.js","sourceRoot":"","sources":["../../src/core/release-preflight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"release-preflight.js","sourceRoot":"","sources":["../../src/core/release-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { ensureWorkspace, getWorkspacePaths } from "./config.js";
|
|
4
|
+
import { readSkills } from "./skill-store.js";
|
|
5
|
+
import { validateSkills } from "./skill-validator.js";
|
|
6
|
+
export async function exportSkills(target, root = process.cwd()) {
|
|
7
|
+
await ensureWorkspace(root);
|
|
8
|
+
const validation = await validateSkills(root);
|
|
9
|
+
if (!validation.ok) {
|
|
10
|
+
throw new Error("Cannot export invalid skills. Run soturail skills validate for details.");
|
|
11
|
+
}
|
|
12
|
+
const skills = await readSkills(root);
|
|
13
|
+
const paths = getWorkspacePaths(root);
|
|
14
|
+
const targetDir = path.join(paths.skillExportsDir, target);
|
|
15
|
+
await fs.mkdir(targetDir, { recursive: true });
|
|
16
|
+
const written = [];
|
|
17
|
+
for (const skill of skills) {
|
|
18
|
+
const filePath = path.join(targetDir, `${skill.metadata.id}.md`);
|
|
19
|
+
await fs.writeFile(filePath, renderTargetSkill(target, skill.metadata.id, skill.markdown), "utf8");
|
|
20
|
+
written.push(path.normalize(path.relative(root, filePath)));
|
|
21
|
+
}
|
|
22
|
+
const indexPath = path.join(targetDir, "index.md");
|
|
23
|
+
await fs.writeFile(indexPath, renderExportIndex(target, skills.map((skill) => skill.metadata.id)), "utf8");
|
|
24
|
+
written.push(path.normalize(path.relative(root, indexPath)));
|
|
25
|
+
return `Exported ${skills.length} skill(s) for ${target}:\n${written.join("\n")}\n`;
|
|
26
|
+
}
|
|
27
|
+
export async function packSkills(format, root = process.cwd()) {
|
|
28
|
+
await ensureWorkspace(root);
|
|
29
|
+
const skills = await readSkills(root);
|
|
30
|
+
const paths = getWorkspacePaths(root);
|
|
31
|
+
const filePath = path.join(paths.skillExportsDir, `skills-pack.${format === "json" ? "json" : "md"}`);
|
|
32
|
+
const payload = format === "json"
|
|
33
|
+
? `${JSON.stringify(skills.map((skill) => ({ metadata: skill.metadata, markdown: skill.markdown })), null, 2)}\n`
|
|
34
|
+
: skills.map((skill) => renderTargetSkill("generic", skill.metadata.id, skill.markdown)).join("\n---\n");
|
|
35
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
36
|
+
await fs.writeFile(filePath, payload, "utf8");
|
|
37
|
+
return `Skill pack written: ${path.normalize(path.relative(root, filePath))}\n`;
|
|
38
|
+
}
|
|
39
|
+
function renderTargetSkill(target, id, markdown) {
|
|
40
|
+
const header = [
|
|
41
|
+
`# SotuRail Skill: ${id}`,
|
|
42
|
+
"",
|
|
43
|
+
`Target: ${target}`,
|
|
44
|
+
"Generated by SotuRail Skill Rail as an independent local-first export.",
|
|
45
|
+
"",
|
|
46
|
+
"Safety constraints:",
|
|
47
|
+
"- Do not run destructive shell commands.",
|
|
48
|
+
"- Do not exfiltrate secrets.",
|
|
49
|
+
"- Ask for human approval before remote writes or destructive actions.",
|
|
50
|
+
"- Treat this export as project-local guidance, not a marketplace install.",
|
|
51
|
+
""
|
|
52
|
+
];
|
|
53
|
+
const targetNote = {
|
|
54
|
+
claude: "Claude usage: place this in a reviewed skill/rules location supported by your installed Claude Code version.",
|
|
55
|
+
codex: "Codex usage: include this in AGENTS.md or project rules after review.",
|
|
56
|
+
gemini: "Gemini usage: include this as concise project guidance after review.",
|
|
57
|
+
cursor: "Cursor usage: include this in .cursor/rules after review.",
|
|
58
|
+
generic: "Generic usage: portable Markdown guidance for local AI agent workflows."
|
|
59
|
+
};
|
|
60
|
+
return `${header.join("\n")}${targetNote[target]}\n\n${markdown.trim()}\n`;
|
|
61
|
+
}
|
|
62
|
+
function renderExportIndex(target, ids) {
|
|
63
|
+
return [
|
|
64
|
+
`# SotuRail ${target} Skill Export`,
|
|
65
|
+
"",
|
|
66
|
+
"Review all generated files before enabling them in an agent host.",
|
|
67
|
+
"",
|
|
68
|
+
...ids.map((id) => `- [${id}](./${id}.md)`),
|
|
69
|
+
""
|
|
70
|
+
].join("\n");
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=skill-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-exporter.js","sourceRoot":"","sources":["../../src/core/skill-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const SkillTargetSchema: z.ZodEnum<["claude", "codex", "gemini", "cursor", "generic"]>;
|
|
3
|
+
export type SkillTarget = z.infer<typeof SkillTargetSchema>;
|
|
4
|
+
export declare const SkillMetadataSchema: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
description: z.ZodString;
|
|
8
|
+
version: z.ZodString;
|
|
9
|
+
author: z.ZodString;
|
|
10
|
+
risk_level: z.ZodEnum<["low", "medium", "high"]>;
|
|
11
|
+
targets: z.ZodArray<z.ZodEnum<["claude", "codex", "gemini", "cursor", "generic"]>, "many">;
|
|
12
|
+
allowed_tools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
13
|
+
forbidden_patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
14
|
+
requires_human_approval: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
15
|
+
created_at: z.ZodString;
|
|
16
|
+
content_hash: z.ZodString;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
version: string;
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
author: string;
|
|
23
|
+
risk_level: "low" | "medium" | "high";
|
|
24
|
+
targets: ("claude" | "codex" | "gemini" | "cursor" | "generic")[];
|
|
25
|
+
allowed_tools: string[];
|
|
26
|
+
forbidden_patterns: string[];
|
|
27
|
+
requires_human_approval: string[];
|
|
28
|
+
created_at: string;
|
|
29
|
+
content_hash: string;
|
|
30
|
+
}, {
|
|
31
|
+
version: string;
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
author: string;
|
|
36
|
+
risk_level: "low" | "medium" | "high";
|
|
37
|
+
targets: ("claude" | "codex" | "gemini" | "cursor" | "generic")[];
|
|
38
|
+
created_at: string;
|
|
39
|
+
content_hash: string;
|
|
40
|
+
allowed_tools?: string[] | undefined;
|
|
41
|
+
forbidden_patterns?: string[] | undefined;
|
|
42
|
+
requires_human_approval?: string[] | undefined;
|
|
43
|
+
}>;
|
|
44
|
+
export type SkillMetadata = z.infer<typeof SkillMetadataSchema>;
|
|
45
|
+
export interface SkillRecord {
|
|
46
|
+
metadata: SkillMetadata;
|
|
47
|
+
markdown: string;
|
|
48
|
+
dir: string;
|
|
49
|
+
}
|
|
50
|
+
export declare const defaultForbiddenPatterns: string[];
|
|
51
|
+
export declare const defaultHumanApprovals: string[];
|
|
52
|
+
export declare function slugifySkillName(name: string): string;
|
|
53
|
+
export declare function stableSkillHash(metadata: Omit<SkillMetadata, "content_hash">, markdown: string): string;
|
|
54
|
+
export declare function stringifySkillYaml(metadata: SkillMetadata): string;
|
|
55
|
+
export declare function parseSkillYaml(text: string): Record<string, unknown>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const SkillTargetSchema = z.enum(["claude", "codex", "gemini", "cursor", "generic"]);
|
|
4
|
+
export const SkillMetadataSchema = z.object({
|
|
5
|
+
id: z.string().min(1).regex(/^[a-z0-9][a-z0-9-]*$/),
|
|
6
|
+
name: z.string().min(1),
|
|
7
|
+
description: z.string().min(1),
|
|
8
|
+
version: z.string().min(1),
|
|
9
|
+
author: z.string().min(1),
|
|
10
|
+
risk_level: z.enum(["low", "medium", "high"]),
|
|
11
|
+
targets: z.array(SkillTargetSchema).min(1),
|
|
12
|
+
allowed_tools: z.array(z.string()).default([]),
|
|
13
|
+
forbidden_patterns: z.array(z.string()).default([]),
|
|
14
|
+
requires_human_approval: z.array(z.string()).default([]),
|
|
15
|
+
created_at: z.string().min(1),
|
|
16
|
+
content_hash: z.string().regex(/^[a-f0-9]{64}$/)
|
|
17
|
+
});
|
|
18
|
+
export const defaultForbiddenPatterns = ["rm -rf", "curl | sh", "git push"];
|
|
19
|
+
export const defaultHumanApprovals = ["remote_write", "destructive_command"];
|
|
20
|
+
export function slugifySkillName(name) {
|
|
21
|
+
return name
|
|
22
|
+
.trim()
|
|
23
|
+
.toLowerCase()
|
|
24
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
25
|
+
.replace(/^-+|-+$/g, "")
|
|
26
|
+
.slice(0, 64) || "skill";
|
|
27
|
+
}
|
|
28
|
+
export function stableSkillHash(metadata, markdown) {
|
|
29
|
+
const normalized = JSON.stringify({ ...metadata, content_hash: undefined, markdown });
|
|
30
|
+
return createHash("sha256").update(normalized).digest("hex");
|
|
31
|
+
}
|
|
32
|
+
export function stringifySkillYaml(metadata) {
|
|
33
|
+
const scalar = (value) => value.includes(":") || value.includes("#") ? JSON.stringify(value) : value;
|
|
34
|
+
const lines = [];
|
|
35
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
lines.push(`${key}:`);
|
|
38
|
+
for (const item of value)
|
|
39
|
+
lines.push(` - ${scalar(item)}`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
lines.push(`${key}: ${scalar(String(value))}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return `${lines.join("\n")}\n`;
|
|
46
|
+
}
|
|
47
|
+
export function parseSkillYaml(text) {
|
|
48
|
+
const result = {};
|
|
49
|
+
let currentArray = null;
|
|
50
|
+
for (const rawLine of text.split(/\r?\n/)) {
|
|
51
|
+
const line = rawLine.trimEnd();
|
|
52
|
+
if (!line.trim() || line.trimStart().startsWith("#"))
|
|
53
|
+
continue;
|
|
54
|
+
const arrayMatch = line.match(/^([A-Za-z0-9_]+):\s*$/);
|
|
55
|
+
if (arrayMatch?.[1]) {
|
|
56
|
+
currentArray = arrayMatch[1];
|
|
57
|
+
result[currentArray] = [];
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const itemMatch = line.match(/^\s*-\s*(.+)$/);
|
|
61
|
+
if (itemMatch?.[1] && currentArray && Array.isArray(result[currentArray])) {
|
|
62
|
+
result[currentArray].push(unquote(itemMatch[1].trim()));
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const kv = line.match(/^([A-Za-z0-9_]+):\s*(.*)$/);
|
|
66
|
+
if (kv?.[1]) {
|
|
67
|
+
currentArray = null;
|
|
68
|
+
result[kv[1]] = unquote(kv[2] ?? "");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
function unquote(value) {
|
|
74
|
+
if ((value.startsWith("\"") && value.endsWith("\"")) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
75
|
+
try {
|
|
76
|
+
return JSON.parse(value);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return value.slice(1, -1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=skill-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-schema.js","sourceRoot":"","sources":["../../src/core/skill-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type SkillRecord } from "./skill-schema.js";
|
|
2
|
+
export declare function createSkill(name: string, root?: string): Promise<SkillRecord>;
|
|
3
|
+
export declare function readSkills(root?: string): Promise<SkillRecord[]>;
|
|
4
|
+
export declare function renderSkillList(skills: SkillRecord[]): string;
|