@tryhamster/gerbil 1.0.0-rc.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/LICENSE +23 -0
- package/README.md +253 -0
- package/bin/cli.js +2 -0
- package/dist/auto-update-BbNHbSU1.mjs +3 -0
- package/dist/browser/index.d.mts +262 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.mjs +755 -0
- package/dist/browser/index.mjs.map +1 -0
- package/dist/chrome-backend-C5Un08O4.mjs +771 -0
- package/dist/chrome-backend-C5Un08O4.mjs.map +1 -0
- package/dist/chrome-backend-CtwPENIW.mjs +3 -0
- package/dist/chunk-Ct1HF2bE.mjs +7 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +7078 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/frameworks/express.d.mts +22 -0
- package/dist/frameworks/express.d.mts.map +1 -0
- package/dist/frameworks/express.mjs +123 -0
- package/dist/frameworks/express.mjs.map +1 -0
- package/dist/frameworks/fastify.d.mts +11 -0
- package/dist/frameworks/fastify.d.mts.map +1 -0
- package/dist/frameworks/fastify.mjs +73 -0
- package/dist/frameworks/fastify.mjs.map +1 -0
- package/dist/frameworks/hono.d.mts +14 -0
- package/dist/frameworks/hono.d.mts.map +1 -0
- package/dist/frameworks/hono.mjs +82 -0
- package/dist/frameworks/hono.mjs.map +1 -0
- package/dist/frameworks/next.d.mts +31 -0
- package/dist/frameworks/next.d.mts.map +1 -0
- package/dist/frameworks/next.mjs +116 -0
- package/dist/frameworks/next.mjs.map +1 -0
- package/dist/frameworks/react.d.mts +56 -0
- package/dist/frameworks/react.d.mts.map +1 -0
- package/dist/frameworks/react.mjs +172 -0
- package/dist/frameworks/react.mjs.map +1 -0
- package/dist/frameworks/trpc.d.mts +12 -0
- package/dist/frameworks/trpc.d.mts.map +1 -0
- package/dist/frameworks/trpc.mjs +80 -0
- package/dist/frameworks/trpc.mjs.map +1 -0
- package/dist/gerbil-BfnsFWRE.mjs +644 -0
- package/dist/gerbil-BfnsFWRE.mjs.map +1 -0
- package/dist/gerbil-BjW-z7Fq.mjs +5 -0
- package/dist/gerbil-DZ1k3ChC.d.mts +138 -0
- package/dist/gerbil-DZ1k3ChC.d.mts.map +1 -0
- package/dist/index.d.mts +223 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +13 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integrations/ai-sdk.d.mts +78 -0
- package/dist/integrations/ai-sdk.d.mts.map +1 -0
- package/dist/integrations/ai-sdk.mjs +199 -0
- package/dist/integrations/ai-sdk.mjs.map +1 -0
- package/dist/integrations/langchain.d.mts +41 -0
- package/dist/integrations/langchain.d.mts.map +1 -0
- package/dist/integrations/langchain.mjs +93 -0
- package/dist/integrations/langchain.mjs.map +1 -0
- package/dist/integrations/llamaindex.d.mts +45 -0
- package/dist/integrations/llamaindex.d.mts.map +1 -0
- package/dist/integrations/llamaindex.mjs +86 -0
- package/dist/integrations/llamaindex.mjs.map +1 -0
- package/dist/integrations/mcp-client.d.mts +206 -0
- package/dist/integrations/mcp-client.d.mts.map +1 -0
- package/dist/integrations/mcp-client.mjs +507 -0
- package/dist/integrations/mcp-client.mjs.map +1 -0
- package/dist/integrations/mcp.d.mts +177 -0
- package/dist/integrations/mcp.d.mts.map +1 -0
- package/dist/integrations/mcp.mjs +8 -0
- package/dist/mcp-R8kRLIKb.mjs +348 -0
- package/dist/mcp-R8kRLIKb.mjs.map +1 -0
- package/dist/models-DKULvhOr.mjs +136 -0
- package/dist/models-DKULvhOr.mjs.map +1 -0
- package/dist/models-De2-_GmQ.d.mts +22 -0
- package/dist/models-De2-_GmQ.d.mts.map +1 -0
- package/dist/one-liner-BUQR0nqq.mjs +98 -0
- package/dist/one-liner-BUQR0nqq.mjs.map +1 -0
- package/dist/skills/index.d.mts +390 -0
- package/dist/skills/index.d.mts.map +1 -0
- package/dist/skills/index.mjs +7 -0
- package/dist/skills-D3CEpgDc.mjs +630 -0
- package/dist/skills-D3CEpgDc.mjs.map +1 -0
- package/dist/tools-BsiEE6f2.mjs +567 -0
- package/dist/tools-BsiEE6f2.mjs.map +1 -0
- package/dist/types-BS1N92Jt.d.mts +183 -0
- package/dist/types-BS1N92Jt.d.mts.map +1 -0
- package/dist/utils-7vXqtq2Q.mjs +63 -0
- package/dist/utils-7vXqtq2Q.mjs.map +1 -0
- package/docs/ai-sdk.md +80 -0
- package/docs/architecture/README.md +84 -0
- package/docs/architecture/caching.md +227 -0
- package/docs/architecture/inference.md +176 -0
- package/docs/architecture/overview.md +179 -0
- package/docs/architecture/streaming.md +261 -0
- package/docs/architecture/webgpu.md +213 -0
- package/docs/browser.md +328 -0
- package/docs/cli.md +155 -0
- package/docs/frameworks.md +90 -0
- package/docs/mcp-client.md +224 -0
- package/docs/mcp.md +109 -0
- package/docs/memory.md +229 -0
- package/docs/repl.md +473 -0
- package/docs/skills.md +261 -0
- package/docs/tools.md +304 -0
- package/package.json +207 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
//#region src/core/models.ts
|
|
2
|
+
const BUILTIN_MODELS = {
|
|
3
|
+
"qwen3-0.6b": {
|
|
4
|
+
id: "qwen3-0.6b",
|
|
5
|
+
repo: "onnx-community/Qwen3-0.6B-ONNX",
|
|
6
|
+
description: "Qwen3 0.6B - Best balance of speed and quality, supports thinking",
|
|
7
|
+
size: "~400MB",
|
|
8
|
+
contextLength: 32768,
|
|
9
|
+
supportsThinking: true,
|
|
10
|
+
supportsJson: true,
|
|
11
|
+
family: "qwen"
|
|
12
|
+
},
|
|
13
|
+
"qwen2.5-0.5b": {
|
|
14
|
+
id: "qwen2.5-0.5b",
|
|
15
|
+
repo: "onnx-community/Qwen2.5-0.5B-Instruct",
|
|
16
|
+
description: "Qwen2.5 0.5B - Fast and capable",
|
|
17
|
+
size: "~350MB",
|
|
18
|
+
contextLength: 32768,
|
|
19
|
+
supportsThinking: false,
|
|
20
|
+
supportsJson: true,
|
|
21
|
+
family: "qwen"
|
|
22
|
+
},
|
|
23
|
+
"qwen2.5-coder-0.5b": {
|
|
24
|
+
id: "qwen2.5-coder-0.5b",
|
|
25
|
+
repo: "onnx-community/Qwen2.5-Coder-0.5B-Instruct",
|
|
26
|
+
description: "Qwen2.5 Coder 0.5B - Optimized for code",
|
|
27
|
+
size: "~400MB",
|
|
28
|
+
contextLength: 32768,
|
|
29
|
+
supportsThinking: false,
|
|
30
|
+
supportsJson: true,
|
|
31
|
+
family: "qwen"
|
|
32
|
+
},
|
|
33
|
+
"smollm2-360m": {
|
|
34
|
+
id: "smollm2-360m",
|
|
35
|
+
repo: "HuggingFaceTB/SmolLM2-360M-Instruct",
|
|
36
|
+
description: "SmolLM2 360M - Fast, good for simple tasks",
|
|
37
|
+
size: "~250MB",
|
|
38
|
+
contextLength: 8192,
|
|
39
|
+
supportsThinking: false,
|
|
40
|
+
supportsJson: false,
|
|
41
|
+
family: "smollm"
|
|
42
|
+
},
|
|
43
|
+
"smollm2-135m": {
|
|
44
|
+
id: "smollm2-135m",
|
|
45
|
+
repo: "HuggingFaceTB/SmolLM2-135M-Instruct",
|
|
46
|
+
description: "SmolLM2 135M - Fastest, basic generation",
|
|
47
|
+
size: "~100MB",
|
|
48
|
+
contextLength: 8192,
|
|
49
|
+
supportsThinking: false,
|
|
50
|
+
supportsJson: false,
|
|
51
|
+
family: "smollm"
|
|
52
|
+
},
|
|
53
|
+
"phi-3-mini": {
|
|
54
|
+
id: "phi-3-mini",
|
|
55
|
+
repo: "microsoft/Phi-3-mini-4k-instruct-onnx",
|
|
56
|
+
description: "Phi-3 Mini - High quality, larger model",
|
|
57
|
+
size: "~2.1GB",
|
|
58
|
+
contextLength: 4096,
|
|
59
|
+
supportsThinking: false,
|
|
60
|
+
supportsJson: true,
|
|
61
|
+
family: "phi"
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Parse model identifier and resolve to source
|
|
66
|
+
*
|
|
67
|
+
* Supported formats:
|
|
68
|
+
* - "qwen3-0.6b" (built-in)
|
|
69
|
+
* - "hf:org/model" (HuggingFace shorthand)
|
|
70
|
+
* - "https://huggingface.co/org/model" (full URL)
|
|
71
|
+
* - "file:./path/to/model" (local path)
|
|
72
|
+
*/
|
|
73
|
+
function resolveModel(modelId) {
|
|
74
|
+
if (BUILTIN_MODELS[modelId]) return {
|
|
75
|
+
type: "builtin",
|
|
76
|
+
path: BUILTIN_MODELS[modelId].repo
|
|
77
|
+
};
|
|
78
|
+
if (modelId.startsWith("hf:")) return {
|
|
79
|
+
type: "huggingface",
|
|
80
|
+
path: modelId.slice(3)
|
|
81
|
+
};
|
|
82
|
+
if (modelId.startsWith("https://huggingface.co/")) return {
|
|
83
|
+
type: "huggingface",
|
|
84
|
+
path: modelId.replace("https://huggingface.co/", "")
|
|
85
|
+
};
|
|
86
|
+
if (modelId.startsWith("file:")) return {
|
|
87
|
+
type: "local",
|
|
88
|
+
path: modelId.slice(5)
|
|
89
|
+
};
|
|
90
|
+
if (modelId.includes("/")) return {
|
|
91
|
+
type: "huggingface",
|
|
92
|
+
path: modelId
|
|
93
|
+
};
|
|
94
|
+
return {
|
|
95
|
+
type: "huggingface",
|
|
96
|
+
path: modelId
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get model config (built-in only)
|
|
101
|
+
*/
|
|
102
|
+
function getModelConfig(modelId) {
|
|
103
|
+
return BUILTIN_MODELS[modelId] || null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Create model config for external model
|
|
107
|
+
*/
|
|
108
|
+
function createExternalModelConfig(modelId, repo) {
|
|
109
|
+
let family = "other";
|
|
110
|
+
const repoLower = repo.toLowerCase();
|
|
111
|
+
if (repoLower.includes("qwen")) family = "qwen";
|
|
112
|
+
else if (repoLower.includes("smollm")) family = "smollm";
|
|
113
|
+
else if (repoLower.includes("phi")) family = "phi";
|
|
114
|
+
else if (repoLower.includes("mistral")) family = "mistral";
|
|
115
|
+
else if (repoLower.includes("llama")) family = "llama";
|
|
116
|
+
return {
|
|
117
|
+
id: modelId,
|
|
118
|
+
repo,
|
|
119
|
+
description: `External model: ${repo}`,
|
|
120
|
+
size: "Unknown",
|
|
121
|
+
contextLength: 4096,
|
|
122
|
+
supportsThinking: family === "qwen",
|
|
123
|
+
supportsJson: family === "qwen" || family === "phi",
|
|
124
|
+
family
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* List all built-in models
|
|
129
|
+
*/
|
|
130
|
+
function listBuiltinModels() {
|
|
131
|
+
return Object.values(BUILTIN_MODELS);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
//#endregion
|
|
135
|
+
export { resolveModel as a, listBuiltinModels as i, createExternalModelConfig as n, getModelConfig as r, BUILTIN_MODELS as t };
|
|
136
|
+
//# sourceMappingURL=models-DKULvhOr.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models-DKULvhOr.mjs","names":["BUILTIN_MODELS: Record<string, ModelConfig>","family: ModelConfig[\"family\"]"],"sources":["../src/core/models.ts"],"sourcesContent":["/**\n * Model Registry\n *\n * Supports built-in models and any HuggingFace model via hf:org/model syntax\n */\n\nimport type { ModelConfig, ModelSource } from \"./types.js\";\n\n// ============================================\n// Built-in Models (curated & tested)\n// ============================================\n\nexport const BUILTIN_MODELS: Record<string, ModelConfig> = {\n \"qwen3-0.6b\": {\n id: \"qwen3-0.6b\",\n repo: \"onnx-community/Qwen3-0.6B-ONNX\",\n description: \"Qwen3 0.6B - Best balance of speed and quality, supports thinking\",\n size: \"~400MB\",\n contextLength: 32_768,\n supportsThinking: true,\n supportsJson: true,\n family: \"qwen\",\n },\n \"qwen2.5-0.5b\": {\n id: \"qwen2.5-0.5b\",\n repo: \"onnx-community/Qwen2.5-0.5B-Instruct\",\n description: \"Qwen2.5 0.5B - Fast and capable\",\n size: \"~350MB\",\n contextLength: 32_768,\n supportsThinking: false,\n supportsJson: true,\n family: \"qwen\",\n },\n \"qwen2.5-coder-0.5b\": {\n id: \"qwen2.5-coder-0.5b\",\n repo: \"onnx-community/Qwen2.5-Coder-0.5B-Instruct\",\n description: \"Qwen2.5 Coder 0.5B - Optimized for code\",\n size: \"~400MB\",\n contextLength: 32_768,\n supportsThinking: false,\n supportsJson: true,\n family: \"qwen\",\n },\n \"smollm2-360m\": {\n id: \"smollm2-360m\",\n repo: \"HuggingFaceTB/SmolLM2-360M-Instruct\",\n description: \"SmolLM2 360M - Fast, good for simple tasks\",\n size: \"~250MB\",\n contextLength: 8192,\n supportsThinking: false,\n supportsJson: false,\n family: \"smollm\",\n },\n \"smollm2-135m\": {\n id: \"smollm2-135m\",\n repo: \"HuggingFaceTB/SmolLM2-135M-Instruct\",\n description: \"SmolLM2 135M - Fastest, basic generation\",\n size: \"~100MB\",\n contextLength: 8192,\n supportsThinking: false,\n supportsJson: false,\n family: \"smollm\",\n },\n \"phi-3-mini\": {\n id: \"phi-3-mini\",\n repo: \"microsoft/Phi-3-mini-4k-instruct-onnx\",\n description: \"Phi-3 Mini - High quality, larger model\",\n size: \"~2.1GB\",\n contextLength: 4096,\n supportsThinking: false,\n supportsJson: true,\n family: \"phi\",\n },\n};\n\n// ============================================\n// Model Resolution\n// ============================================\n\n/**\n * Parse model identifier and resolve to source\n *\n * Supported formats:\n * - \"qwen3-0.6b\" (built-in)\n * - \"hf:org/model\" (HuggingFace shorthand)\n * - \"https://huggingface.co/org/model\" (full URL)\n * - \"file:./path/to/model\" (local path)\n */\nexport function resolveModel(modelId: string): ModelSource {\n // Built-in model\n if (BUILTIN_MODELS[modelId]) {\n return {\n type: \"builtin\",\n path: BUILTIN_MODELS[modelId].repo,\n };\n }\n\n // HuggingFace shorthand: hf:org/model\n if (modelId.startsWith(\"hf:\")) {\n const repo = modelId.slice(3);\n return {\n type: \"huggingface\",\n path: repo,\n };\n }\n\n // HuggingFace URL\n if (modelId.startsWith(\"https://huggingface.co/\")) {\n const repo = modelId.replace(\"https://huggingface.co/\", \"\");\n return {\n type: \"huggingface\",\n path: repo,\n };\n }\n\n // Local file\n if (modelId.startsWith(\"file:\")) {\n const path = modelId.slice(5);\n return {\n type: \"local\",\n path,\n };\n }\n\n // Assume it's a HuggingFace repo if it contains a slash\n if (modelId.includes(\"/\")) {\n return {\n type: \"huggingface\",\n path: modelId,\n };\n }\n\n // Unknown - treat as HuggingFace\n return {\n type: \"huggingface\",\n path: modelId,\n };\n}\n\n/**\n * Get model config (built-in only)\n */\nexport function getModelConfig(modelId: string): ModelConfig | null {\n return BUILTIN_MODELS[modelId] || null;\n}\n\n/**\n * Create model config for external model\n */\nexport function createExternalModelConfig(modelId: string, repo: string): ModelConfig {\n // Try to infer family from repo name\n let family: ModelConfig[\"family\"] = \"other\";\n const repoLower = repo.toLowerCase();\n\n if (repoLower.includes(\"qwen\")) {\n family = \"qwen\";\n } else if (repoLower.includes(\"smollm\")) {\n family = \"smollm\";\n } else if (repoLower.includes(\"phi\")) {\n family = \"phi\";\n } else if (repoLower.includes(\"mistral\")) {\n family = \"mistral\";\n } else if (repoLower.includes(\"llama\")) {\n family = \"llama\";\n }\n\n return {\n id: modelId,\n repo,\n description: `External model: ${repo}`,\n size: \"Unknown\",\n contextLength: 4096, // Conservative default\n supportsThinking: family === \"qwen\",\n supportsJson: family === \"qwen\" || family === \"phi\",\n family,\n };\n}\n\n/**\n * List all built-in models\n */\nexport function listBuiltinModels(): ModelConfig[] {\n return Object.values(BUILTIN_MODELS);\n}\n\n/**\n * Search HuggingFace models (placeholder - would need HF API)\n */\nexport async function searchModels(query: string): Promise<ModelConfig[]> {\n // TODO: Implement HuggingFace API search\n // For now, filter built-in models\n const q = query.toLowerCase();\n return listBuiltinModels().filter(\n (m) =>\n m.id.toLowerCase().includes(q) ||\n m.description.toLowerCase().includes(q) ||\n m.family.toLowerCase().includes(q),\n );\n}\n"],"mappings":";AAYA,MAAaA,iBAA8C;CACzD,cAAc;EACZ,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,QAAQ;EACT;CACD,gBAAgB;EACd,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,QAAQ;EACT;CACD,sBAAsB;EACpB,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,QAAQ;EACT;CACD,gBAAgB;EACd,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,QAAQ;EACT;CACD,gBAAgB;EACd,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,QAAQ;EACT;CACD,cAAc;EACZ,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,QAAQ;EACT;CACF;;;;;;;;;;AAeD,SAAgB,aAAa,SAA8B;AAEzD,KAAI,eAAe,SACjB,QAAO;EACL,MAAM;EACN,MAAM,eAAe,SAAS;EAC/B;AAIH,KAAI,QAAQ,WAAW,MAAM,CAE3B,QAAO;EACL,MAAM;EACN,MAHW,QAAQ,MAAM,EAAE;EAI5B;AAIH,KAAI,QAAQ,WAAW,0BAA0B,CAE/C,QAAO;EACL,MAAM;EACN,MAHW,QAAQ,QAAQ,2BAA2B,GAAG;EAI1D;AAIH,KAAI,QAAQ,WAAW,QAAQ,CAE7B,QAAO;EACL,MAAM;EACN,MAHW,QAAQ,MAAM,EAAE;EAI5B;AAIH,KAAI,QAAQ,SAAS,IAAI,CACvB,QAAO;EACL,MAAM;EACN,MAAM;EACP;AAIH,QAAO;EACL,MAAM;EACN,MAAM;EACP;;;;;AAMH,SAAgB,eAAe,SAAqC;AAClE,QAAO,eAAe,YAAY;;;;;AAMpC,SAAgB,0BAA0B,SAAiB,MAA2B;CAEpF,IAAIC,SAAgC;CACpC,MAAM,YAAY,KAAK,aAAa;AAEpC,KAAI,UAAU,SAAS,OAAO,CAC5B,UAAS;UACA,UAAU,SAAS,SAAS,CACrC,UAAS;UACA,UAAU,SAAS,MAAM,CAClC,UAAS;UACA,UAAU,SAAS,UAAU,CACtC,UAAS;UACA,UAAU,SAAS,QAAQ,CACpC,UAAS;AAGX,QAAO;EACL,IAAI;EACJ;EACA,aAAa,mBAAmB;EAChC,MAAM;EACN,eAAe;EACf,kBAAkB,WAAW;EAC7B,cAAc,WAAW,UAAU,WAAW;EAC9C;EACD;;;;;AAMH,SAAgB,oBAAmC;AACjD,QAAO,OAAO,OAAO,eAAe"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { f as ModelConfig, p as ModelSource } from "./types-BS1N92Jt.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/core/models.d.ts
|
|
4
|
+
|
|
5
|
+
declare const BUILTIN_MODELS: Record<string, ModelConfig>;
|
|
6
|
+
/**
|
|
7
|
+
* Parse model identifier and resolve to source
|
|
8
|
+
*
|
|
9
|
+
* Supported formats:
|
|
10
|
+
* - "qwen3-0.6b" (built-in)
|
|
11
|
+
* - "hf:org/model" (HuggingFace shorthand)
|
|
12
|
+
* - "https://huggingface.co/org/model" (full URL)
|
|
13
|
+
* - "file:./path/to/model" (local path)
|
|
14
|
+
*/
|
|
15
|
+
declare function resolveModel(modelId: string): ModelSource;
|
|
16
|
+
/**
|
|
17
|
+
* List all built-in models
|
|
18
|
+
*/
|
|
19
|
+
declare function listBuiltinModels(): ModelConfig[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { listBuiltinModels as n, resolveModel as r, BUILTIN_MODELS as t };
|
|
22
|
+
//# sourceMappingURL=models-De2-_GmQ.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models-De2-_GmQ.d.mts","names":[],"sources":["../src/core/models.ts"],"sourcesContent":[],"mappings":";;;;cAYa,gBAAgB,eAAe;;;;;;;;;;iBA4E5B,YAAA,mBAA+B;;;;iBA6F/B,iBAAA,CAAA,GAAqB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { t as Gerbil } from "./gerbil-BfnsFWRE.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/core/one-liner.ts
|
|
4
|
+
/**
|
|
5
|
+
* One-liner API for Gerbil
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import gerbil from "gerbil";
|
|
10
|
+
*
|
|
11
|
+
* const text = await gerbil("Write a haiku");
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
let instance = null;
|
|
15
|
+
let loadPromise = null;
|
|
16
|
+
let currentModel = null;
|
|
17
|
+
async function getInstance(model) {
|
|
18
|
+
const requestedModel = model || "qwen3-0.6b";
|
|
19
|
+
if (instance && currentModel && currentModel !== requestedModel) {
|
|
20
|
+
await instance.dispose();
|
|
21
|
+
instance = null;
|
|
22
|
+
loadPromise = null;
|
|
23
|
+
currentModel = null;
|
|
24
|
+
}
|
|
25
|
+
if (!instance) instance = new Gerbil();
|
|
26
|
+
if (!(instance.isLoaded() || loadPromise)) {
|
|
27
|
+
currentModel = requestedModel;
|
|
28
|
+
loadPromise = instance.loadModel(requestedModel);
|
|
29
|
+
}
|
|
30
|
+
if (loadPromise) {
|
|
31
|
+
await loadPromise;
|
|
32
|
+
loadPromise = null;
|
|
33
|
+
}
|
|
34
|
+
return instance;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate text with zero setup
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const text = await gerbil("Write a haiku");
|
|
42
|
+
* const text = await gerbil("Explain this", { model: "qwen3-0.6b", thinking: true });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
async function gerbil(prompt, options = {}) {
|
|
46
|
+
const { model, ...generateOptions } = options;
|
|
47
|
+
return (await (await getInstance(model)).generate(prompt, generateOptions)).text;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Generate text (returns full result)
|
|
51
|
+
*/
|
|
52
|
+
async function generate(prompt, options = {}) {
|
|
53
|
+
const { model, ...generateOptions } = options;
|
|
54
|
+
return (await getInstance(model)).generate(prompt, generateOptions);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Stream text generation
|
|
58
|
+
*/
|
|
59
|
+
async function* stream(prompt, options = {}) {
|
|
60
|
+
const { model, ...generateOptions } = options;
|
|
61
|
+
return yield* (await getInstance(model)).stream(prompt, generateOptions);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate structured JSON
|
|
65
|
+
*/
|
|
66
|
+
async function json(prompt, options) {
|
|
67
|
+
const { model, ...jsonOptions } = options;
|
|
68
|
+
return (await getInstance(model)).json(prompt, jsonOptions);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Generate embeddings
|
|
72
|
+
*/
|
|
73
|
+
async function embed(text, options = {}) {
|
|
74
|
+
const { model, ...embedOptions } = options;
|
|
75
|
+
return (await getInstance(model)).embed(text, embedOptions);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Generate embeddings for multiple texts
|
|
79
|
+
*/
|
|
80
|
+
async function embedBatch(texts, options = {}) {
|
|
81
|
+
const { model, ...embedOptions } = options;
|
|
82
|
+
return (await getInstance(model)).embedBatch(texts, embedOptions);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Dispose singleton instance
|
|
86
|
+
*/
|
|
87
|
+
async function dispose() {
|
|
88
|
+
if (instance) {
|
|
89
|
+
await instance.dispose();
|
|
90
|
+
instance = null;
|
|
91
|
+
loadPromise = null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
var one_liner_default = gerbil;
|
|
95
|
+
|
|
96
|
+
//#endregion
|
|
97
|
+
export { getInstance as a, stream as c, generate as i, embed as n, json as o, embedBatch as r, one_liner_default as s, dispose as t };
|
|
98
|
+
//# sourceMappingURL=one-liner-BUQR0nqq.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"one-liner-BUQR0nqq.mjs","names":["instance: Gerbil | null","loadPromise: Promise<void> | null","currentModel: string | null"],"sources":["../src/core/one-liner.ts"],"sourcesContent":["/**\n * One-liner API for Gerbil\n *\n * @example\n * ```ts\n * import gerbil from \"gerbil\";\n *\n * const text = await gerbil(\"Write a haiku\");\n * ```\n */\n\nimport { Gerbil } from \"./gerbil.js\";\nimport type {\n EmbedOptions,\n EmbedResult,\n GenerateOptions,\n GenerateResult,\n JsonOptions,\n} from \"./types.js\";\n\n// Singleton instance (lazy loaded)\nlet instance: Gerbil | null = null;\nlet loadPromise: Promise<void> | null = null;\nlet currentModel: string | null = null;\n\nasync function getInstance(model?: string): Promise<Gerbil> {\n const requestedModel = model || \"qwen3-0.6b\";\n\n // If requesting a different model, we need a new instance\n if (instance && currentModel && currentModel !== requestedModel) {\n // Dispose old instance and create new one with requested model\n await instance.dispose();\n instance = null;\n loadPromise = null;\n currentModel = null;\n }\n\n if (!instance) {\n instance = new Gerbil();\n }\n\n if (!(instance.isLoaded() || loadPromise)) {\n currentModel = requestedModel;\n loadPromise = instance.loadModel(requestedModel);\n }\n\n if (loadPromise) {\n await loadPromise;\n loadPromise = null;\n }\n\n return instance;\n}\n\n// ============================================\n// Main Function\n// ============================================\n\ninterface GerbilOptions extends GenerateOptions {\n model?: string;\n}\n\n/**\n * Generate text with zero setup\n *\n * @example\n * ```ts\n * const text = await gerbil(\"Write a haiku\");\n * const text = await gerbil(\"Explain this\", { model: \"qwen3-0.6b\", thinking: true });\n * ```\n */\nasync function gerbil(prompt: string, options: GerbilOptions = {}): Promise<string> {\n const { model, ...generateOptions } = options;\n const g = await getInstance(model);\n const result = await g.generate(prompt, generateOptions);\n return result.text;\n}\n\n// ============================================\n// Functional Exports\n// ============================================\n\n/**\n * Generate text (returns full result)\n */\nexport async function generate(\n prompt: string,\n options: GerbilOptions = {},\n): Promise<GenerateResult> {\n const { model, ...generateOptions } = options;\n const g = await getInstance(model);\n return g.generate(prompt, generateOptions);\n}\n\n/**\n * Stream text generation\n */\nexport async function* stream(\n prompt: string,\n options: GerbilOptions = {},\n): AsyncGenerator<string, GenerateResult, unknown> {\n const { model, ...generateOptions } = options;\n const g = await getInstance(model);\n return yield* g.stream(prompt, generateOptions);\n}\n\n/**\n * Generate structured JSON\n */\nexport async function json<T>(\n prompt: string,\n options: JsonOptions<T> & { model?: string },\n): Promise<T> {\n const { model, ...jsonOptions } = options;\n const g = await getInstance(model);\n return g.json(prompt, jsonOptions);\n}\n\n/**\n * Generate embeddings\n */\nexport async function embed(\n text: string,\n options: EmbedOptions & { model?: string } = {},\n): Promise<EmbedResult> {\n const { model, ...embedOptions } = options;\n const g = await getInstance(model);\n return g.embed(text, embedOptions);\n}\n\n/**\n * Generate embeddings for multiple texts\n */\nexport async function embedBatch(\n texts: string[],\n options: EmbedOptions & { model?: string } = {},\n): Promise<EmbedResult[]> {\n const { model, ...embedOptions } = options;\n const g = await getInstance(model);\n return g.embedBatch(texts, embedOptions);\n}\n\n/**\n * Dispose singleton instance\n */\nexport async function dispose(): Promise<void> {\n if (instance) {\n await instance.dispose();\n instance = null;\n loadPromise = null;\n }\n}\n\n/**\n * Get singleton instance (for advanced usage)\n */\nexport { getInstance };\n\nexport default gerbil;\n"],"mappings":";;;;;;;;;;;;;AAqBA,IAAIA,WAA0B;AAC9B,IAAIC,cAAoC;AACxC,IAAIC,eAA8B;AAElC,eAAe,YAAY,OAAiC;CAC1D,MAAM,iBAAiB,SAAS;AAGhC,KAAI,YAAY,gBAAgB,iBAAiB,gBAAgB;AAE/D,QAAM,SAAS,SAAS;AACxB,aAAW;AACX,gBAAc;AACd,iBAAe;;AAGjB,KAAI,CAAC,SACH,YAAW,IAAI,QAAQ;AAGzB,KAAI,EAAE,SAAS,UAAU,IAAI,cAAc;AACzC,iBAAe;AACf,gBAAc,SAAS,UAAU,eAAe;;AAGlD,KAAI,aAAa;AACf,QAAM;AACN,gBAAc;;AAGhB,QAAO;;;;;;;;;;;AAoBT,eAAe,OAAO,QAAgB,UAAyB,EAAE,EAAmB;CAClF,MAAM,EAAE,OAAO,GAAG,oBAAoB;AAGtC,SADe,OADL,MAAM,YAAY,MAAM,EACX,SAAS,QAAQ,gBAAgB,EAC1C;;;;;AAUhB,eAAsB,SACpB,QACA,UAAyB,EAAE,EACF;CACzB,MAAM,EAAE,OAAO,GAAG,oBAAoB;AAEtC,SADU,MAAM,YAAY,MAAM,EACzB,SAAS,QAAQ,gBAAgB;;;;;AAM5C,gBAAuB,OACrB,QACA,UAAyB,EAAE,EACsB;CACjD,MAAM,EAAE,OAAO,GAAG,oBAAoB;AAEtC,QAAO,QADG,MAAM,YAAY,MAAM,EAClB,OAAO,QAAQ,gBAAgB;;;;;AAMjD,eAAsB,KACpB,QACA,SACY;CACZ,MAAM,EAAE,OAAO,GAAG,gBAAgB;AAElC,SADU,MAAM,YAAY,MAAM,EACzB,KAAK,QAAQ,YAAY;;;;;AAMpC,eAAsB,MACpB,MACA,UAA6C,EAAE,EACzB;CACtB,MAAM,EAAE,OAAO,GAAG,iBAAiB;AAEnC,SADU,MAAM,YAAY,MAAM,EACzB,MAAM,MAAM,aAAa;;;;;AAMpC,eAAsB,WACpB,OACA,UAA6C,EAAE,EACvB;CACxB,MAAM,EAAE,OAAO,GAAG,iBAAiB;AAEnC,SADU,MAAM,YAAY,MAAM,EACzB,WAAW,OAAO,aAAa;;;;;AAM1C,eAAsB,UAAyB;AAC7C,KAAI,UAAU;AACZ,QAAM,SAAS,SAAS;AACxB,aAAW;AACX,gBAAc;;;AASlB,wBAAe"}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import "../types-BS1N92Jt.mjs";
|
|
2
|
+
import { t as Gerbil } from "../gerbil-DZ1k3ChC.mjs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/skills/types.d.ts
|
|
6
|
+
type SkillDefinition<TInput = unknown, TOutput = unknown> = {
|
|
7
|
+
/** Unique skill name (kebab-case) */
|
|
8
|
+
name: string;
|
|
9
|
+
/** Human-readable description */
|
|
10
|
+
description: string;
|
|
11
|
+
/** Semver version */
|
|
12
|
+
version?: string;
|
|
13
|
+
/** Author name/email */
|
|
14
|
+
author?: string;
|
|
15
|
+
/** Zod schema for input validation */
|
|
16
|
+
input?: z.ZodType<TInput>;
|
|
17
|
+
/** Zod schema for structured output (optional) */
|
|
18
|
+
output?: z.ZodType<TOutput>;
|
|
19
|
+
/** Default system prompt */
|
|
20
|
+
system?: string;
|
|
21
|
+
/** Default model for this skill */
|
|
22
|
+
model?: string;
|
|
23
|
+
/** Enable thinking mode by default */
|
|
24
|
+
thinking?: boolean;
|
|
25
|
+
/** Max tokens default */
|
|
26
|
+
maxTokens?: number;
|
|
27
|
+
/** Temperature default */
|
|
28
|
+
temperature?: number;
|
|
29
|
+
/** The skill implementation */
|
|
30
|
+
run: (ctx: SkillContext<TInput>) => Promise<TOutput | string>;
|
|
31
|
+
};
|
|
32
|
+
type SkillContext<TInput = unknown> = {
|
|
33
|
+
/** Validated input */
|
|
34
|
+
input: TInput;
|
|
35
|
+
/** Gerbil instance (already loaded) */
|
|
36
|
+
gerbil: Gerbil;
|
|
37
|
+
/** Raw input before validation */
|
|
38
|
+
rawInput: unknown;
|
|
39
|
+
/** Skill definition (for accessing defaults) */
|
|
40
|
+
definition: SkillDefinition<TInput, unknown>;
|
|
41
|
+
};
|
|
42
|
+
type Skill<TInput = unknown, TOutput = unknown> = {
|
|
43
|
+
/** Skill metadata */
|
|
44
|
+
definition: SkillDefinition<TInput, TOutput>;
|
|
45
|
+
/** Execute skill with input */
|
|
46
|
+
(input: TInput): Promise<TOutput>;
|
|
47
|
+
/** Execute with custom Gerbil instance */
|
|
48
|
+
run(input: TInput, gerbil?: Gerbil): Promise<TOutput>;
|
|
49
|
+
};
|
|
50
|
+
type SkillRegistry = {
|
|
51
|
+
/** Register a skill */
|
|
52
|
+
register<TInput, TOutput>(skill: Skill<TInput, TOutput>): void;
|
|
53
|
+
/** Get skill by name */
|
|
54
|
+
get<TInput = unknown, TOutput = unknown>(name: string): Skill<TInput, TOutput> | undefined;
|
|
55
|
+
/** Check if skill exists */
|
|
56
|
+
has(name: string): boolean;
|
|
57
|
+
/** List all skill names */
|
|
58
|
+
list(): string[];
|
|
59
|
+
/** Remove a skill */
|
|
60
|
+
remove(name: string): boolean;
|
|
61
|
+
/** Clear all skills */
|
|
62
|
+
clear(): void;
|
|
63
|
+
};
|
|
64
|
+
type LoadSkillsOptions = {
|
|
65
|
+
/** File patterns to match (default: ['*.skill.ts', '*.skill.js']) */
|
|
66
|
+
patterns?: string[];
|
|
67
|
+
/** Watch for changes */
|
|
68
|
+
watch?: boolean;
|
|
69
|
+
};
|
|
70
|
+
type SkillInfo = {
|
|
71
|
+
/** Skill name */
|
|
72
|
+
name: string;
|
|
73
|
+
/** Description */
|
|
74
|
+
description: string;
|
|
75
|
+
/** Version */
|
|
76
|
+
version?: string;
|
|
77
|
+
/** Author */
|
|
78
|
+
author?: string;
|
|
79
|
+
/** Whether it's a built-in skill */
|
|
80
|
+
builtin: boolean;
|
|
81
|
+
/** Source file path (if loaded from file) */
|
|
82
|
+
source?: string;
|
|
83
|
+
};
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/skills/loader.d.ts
|
|
86
|
+
/**
|
|
87
|
+
* Load skills from the project's .gerbil/skills/ directory
|
|
88
|
+
*
|
|
89
|
+
* This is the standard location for project-specific skills.
|
|
90
|
+
* Creates the directory structure if it doesn't exist.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* // Load from .gerbil/skills/ in current working directory
|
|
95
|
+
* const loaded = await loadProjectSkills();
|
|
96
|
+
* console.log(`Loaded ${loaded.length} project skills`);
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
declare function loadProjectSkills(cwd?: string): Promise<string[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Load all skills from a directory
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* // Load all *.skill.ts and *.skill.js files
|
|
106
|
+
* const loaded = await loadSkills("./skills");
|
|
107
|
+
* console.log(`Loaded ${loaded.length} skills`);
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
declare function loadSkills(dir: string, options?: LoadSkillsOptions): Promise<string[]>;
|
|
111
|
+
/**
|
|
112
|
+
* Load a single skill from a file
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* const skill = await loadSkill("./skills/sentiment.skill.ts");
|
|
117
|
+
* if (skill) {
|
|
118
|
+
* const result = await skill({ text: "Hello" });
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
declare function loadSkill(filePath: string): Promise<Skill | null>;
|
|
123
|
+
/**
|
|
124
|
+
* Load skills from an npm package
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```ts
|
|
128
|
+
* // Load skills from a package
|
|
129
|
+
* const loaded = await loadSkillPackage("gerbil-skills-extra");
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
declare function loadSkillPackage(packageName: string): Promise<string[]>;
|
|
133
|
+
//#endregion
|
|
134
|
+
//#region src/skills/registry.d.ts
|
|
135
|
+
/**
|
|
136
|
+
* Define and register a skill
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const sentiment = defineSkill({
|
|
141
|
+
* name: "sentiment",
|
|
142
|
+
* description: "Analyze sentiment of text",
|
|
143
|
+
* input: z.object({ text: z.string() }),
|
|
144
|
+
* output: z.object({ sentiment: z.enum(["positive", "negative", "neutral"]) }),
|
|
145
|
+
* async run({ input, gerbil }) {
|
|
146
|
+
* return gerbil.json(`Analyze sentiment: ${input.text}`, { schema: this.output });
|
|
147
|
+
* }
|
|
148
|
+
* });
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
declare function defineSkill<TInput, TOutput>(definition: SkillDefinition<TInput, TOutput>): Skill<TInput, TOutput>;
|
|
152
|
+
/**
|
|
153
|
+
* Get a skill by name
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* const sentiment = useSkill("sentiment");
|
|
158
|
+
* const result = await sentiment({ text: "I love this!" });
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
declare function useSkill<TInput = unknown, TOutput = unknown>(name: string): Skill<TInput, TOutput>;
|
|
162
|
+
/**
|
|
163
|
+
* List all registered skill names
|
|
164
|
+
*/
|
|
165
|
+
declare function listSkills(): string[];
|
|
166
|
+
/**
|
|
167
|
+
* Get skill metadata
|
|
168
|
+
*/
|
|
169
|
+
declare function getSkillInfo(name: string): SkillInfo | undefined;
|
|
170
|
+
/**
|
|
171
|
+
* Check if a skill exists
|
|
172
|
+
*/
|
|
173
|
+
declare function hasSkill(name: string): boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Remove a skill from registry
|
|
176
|
+
*/
|
|
177
|
+
declare function removeSkill(name: string): boolean;
|
|
178
|
+
/**
|
|
179
|
+
* Clear all skills from registry
|
|
180
|
+
*/
|
|
181
|
+
declare function clearSkills(): void;
|
|
182
|
+
/**
|
|
183
|
+
* Get all skill info
|
|
184
|
+
*/
|
|
185
|
+
declare function getAllSkillInfo(): SkillInfo[];
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region src/skills/builtin/commit.d.ts
|
|
188
|
+
declare const CommitInput: z.ZodObject<{
|
|
189
|
+
/** Git diff (auto-detected if not provided) */
|
|
190
|
+
diff: z.ZodOptional<z.ZodString>;
|
|
191
|
+
/** Commit style */
|
|
192
|
+
type: z.ZodDefault<z.ZodEnum<["conventional", "simple", "detailed"]>>;
|
|
193
|
+
/** Max length for commit message */
|
|
194
|
+
maxLength: z.ZodDefault<z.ZodNumber>;
|
|
195
|
+
}, "strip", z.ZodTypeAny, {
|
|
196
|
+
type: "conventional" | "simple" | "detailed";
|
|
197
|
+
maxLength: number;
|
|
198
|
+
diff?: string | undefined;
|
|
199
|
+
}, {
|
|
200
|
+
diff?: string | undefined;
|
|
201
|
+
type?: "conventional" | "simple" | "detailed" | undefined;
|
|
202
|
+
maxLength?: number | undefined;
|
|
203
|
+
}>;
|
|
204
|
+
type CommitInput = z.infer<typeof CommitInput>;
|
|
205
|
+
declare const commit: Skill<{
|
|
206
|
+
diff?: string | undefined;
|
|
207
|
+
type?: "conventional" | "simple" | "detailed" | undefined;
|
|
208
|
+
maxLength?: number | undefined;
|
|
209
|
+
}, string>;
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region src/skills/builtin/explain.d.ts
|
|
212
|
+
declare const ExplainInput: z.ZodObject<{
|
|
213
|
+
/** Content to explain */
|
|
214
|
+
content: z.ZodString;
|
|
215
|
+
/** Explanation level */
|
|
216
|
+
level: z.ZodDefault<z.ZodEnum<["beginner", "intermediate", "expert"]>>;
|
|
217
|
+
/** Programming language (for code) */
|
|
218
|
+
language: z.ZodOptional<z.ZodString>;
|
|
219
|
+
}, "strip", z.ZodTypeAny, {
|
|
220
|
+
content: string;
|
|
221
|
+
level: "beginner" | "intermediate" | "expert";
|
|
222
|
+
language?: string | undefined;
|
|
223
|
+
}, {
|
|
224
|
+
content: string;
|
|
225
|
+
level?: "beginner" | "intermediate" | "expert" | undefined;
|
|
226
|
+
language?: string | undefined;
|
|
227
|
+
}>;
|
|
228
|
+
type ExplainInput = z.infer<typeof ExplainInput>;
|
|
229
|
+
declare const explain: Skill<{
|
|
230
|
+
content: string;
|
|
231
|
+
level?: "beginner" | "intermediate" | "expert" | undefined;
|
|
232
|
+
language?: string | undefined;
|
|
233
|
+
}, string>;
|
|
234
|
+
//#endregion
|
|
235
|
+
//#region src/skills/builtin/extract.d.ts
|
|
236
|
+
declare const ExtractInput: z.ZodObject<{
|
|
237
|
+
/** Content to extract from */
|
|
238
|
+
content: z.ZodString;
|
|
239
|
+
/** Zod schema for extraction (passed at runtime) */
|
|
240
|
+
schema: z.ZodAny;
|
|
241
|
+
/** Additional context */
|
|
242
|
+
context: z.ZodOptional<z.ZodString>;
|
|
243
|
+
}, "strip", z.ZodTypeAny, {
|
|
244
|
+
content: string;
|
|
245
|
+
schema?: any;
|
|
246
|
+
context?: string | undefined;
|
|
247
|
+
}, {
|
|
248
|
+
content: string;
|
|
249
|
+
schema?: any;
|
|
250
|
+
context?: string | undefined;
|
|
251
|
+
}>;
|
|
252
|
+
type ExtractInput = z.infer<typeof ExtractInput>;
|
|
253
|
+
declare const extract: Skill<{
|
|
254
|
+
content: string;
|
|
255
|
+
schema?: any;
|
|
256
|
+
context?: string | undefined;
|
|
257
|
+
}, string>;
|
|
258
|
+
//#endregion
|
|
259
|
+
//#region src/skills/builtin/review.d.ts
|
|
260
|
+
declare const ReviewInput: z.ZodObject<{
|
|
261
|
+
/** Code to review */
|
|
262
|
+
code: z.ZodString;
|
|
263
|
+
/** Focus areas */
|
|
264
|
+
focus: z.ZodDefault<z.ZodArray<z.ZodEnum<["security", "performance", "style", "bugs", "all"]>, "many">>;
|
|
265
|
+
/** Output format */
|
|
266
|
+
format: z.ZodDefault<z.ZodEnum<["inline", "summary", "detailed"]>>;
|
|
267
|
+
}, "strip", z.ZodTypeAny, {
|
|
268
|
+
code: string;
|
|
269
|
+
format: "detailed" | "inline" | "summary";
|
|
270
|
+
focus: ("security" | "performance" | "style" | "bugs" | "all")[];
|
|
271
|
+
}, {
|
|
272
|
+
code: string;
|
|
273
|
+
format?: "detailed" | "inline" | "summary" | undefined;
|
|
274
|
+
focus?: ("security" | "performance" | "style" | "bugs" | "all")[] | undefined;
|
|
275
|
+
}>;
|
|
276
|
+
type ReviewInput = z.infer<typeof ReviewInput>;
|
|
277
|
+
declare const review: Skill<{
|
|
278
|
+
code: string;
|
|
279
|
+
format?: "detailed" | "inline" | "summary" | undefined;
|
|
280
|
+
focus?: ("security" | "performance" | "style" | "bugs" | "all")[] | undefined;
|
|
281
|
+
}, string>;
|
|
282
|
+
//#endregion
|
|
283
|
+
//#region src/skills/builtin/summarize.d.ts
|
|
284
|
+
declare const SummarizeInput: z.ZodObject<{
|
|
285
|
+
/** Content to summarize */
|
|
286
|
+
content: z.ZodString;
|
|
287
|
+
/** Summary length */
|
|
288
|
+
length: z.ZodDefault<z.ZodEnum<["short", "medium", "long"]>>;
|
|
289
|
+
/** Output format */
|
|
290
|
+
format: z.ZodDefault<z.ZodEnum<["paragraph", "bullets"]>>;
|
|
291
|
+
/** Focus areas */
|
|
292
|
+
focus: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
293
|
+
}, "strip", z.ZodTypeAny, {
|
|
294
|
+
content: string;
|
|
295
|
+
length: "short" | "medium" | "long";
|
|
296
|
+
format: "paragraph" | "bullets";
|
|
297
|
+
focus?: string[] | undefined;
|
|
298
|
+
}, {
|
|
299
|
+
content: string;
|
|
300
|
+
length?: "short" | "medium" | "long" | undefined;
|
|
301
|
+
format?: "paragraph" | "bullets" | undefined;
|
|
302
|
+
focus?: string[] | undefined;
|
|
303
|
+
}>;
|
|
304
|
+
type SummarizeInput = z.infer<typeof SummarizeInput>;
|
|
305
|
+
declare const summarize: Skill<{
|
|
306
|
+
content: string;
|
|
307
|
+
length?: "short" | "medium" | "long" | undefined;
|
|
308
|
+
format?: "paragraph" | "bullets" | undefined;
|
|
309
|
+
focus?: string[] | undefined;
|
|
310
|
+
}, string>;
|
|
311
|
+
//#endregion
|
|
312
|
+
//#region src/skills/builtin/test.d.ts
|
|
313
|
+
declare const TestInput: z.ZodObject<{
|
|
314
|
+
/** Code to test */
|
|
315
|
+
code: z.ZodString;
|
|
316
|
+
/** Test framework */
|
|
317
|
+
framework: z.ZodDefault<z.ZodEnum<["jest", "vitest", "mocha", "playwright"]>>;
|
|
318
|
+
/** Test style */
|
|
319
|
+
style: z.ZodDefault<z.ZodEnum<["unit", "integration", "e2e"]>>;
|
|
320
|
+
}, "strip", z.ZodTypeAny, {
|
|
321
|
+
style: "unit" | "integration" | "e2e";
|
|
322
|
+
code: string;
|
|
323
|
+
framework: "jest" | "vitest" | "mocha" | "playwright";
|
|
324
|
+
}, {
|
|
325
|
+
code: string;
|
|
326
|
+
style?: "unit" | "integration" | "e2e" | undefined;
|
|
327
|
+
framework?: "jest" | "vitest" | "mocha" | "playwright" | undefined;
|
|
328
|
+
}>;
|
|
329
|
+
type TestInput = z.infer<typeof TestInput>;
|
|
330
|
+
declare const test: Skill<{
|
|
331
|
+
code: string;
|
|
332
|
+
style?: "unit" | "integration" | "e2e" | undefined;
|
|
333
|
+
framework?: "jest" | "vitest" | "mocha" | "playwright" | undefined;
|
|
334
|
+
}, string>;
|
|
335
|
+
//#endregion
|
|
336
|
+
//#region src/skills/builtin/title.d.ts
|
|
337
|
+
declare const TitleInput: z.ZodObject<{
|
|
338
|
+
/** Content to generate title for */
|
|
339
|
+
content: z.ZodString;
|
|
340
|
+
/** Title style */
|
|
341
|
+
style: z.ZodDefault<z.ZodEnum<["professional", "clickbait", "seo", "simple"]>>;
|
|
342
|
+
/** Max length */
|
|
343
|
+
maxLength: z.ZodDefault<z.ZodNumber>;
|
|
344
|
+
}, "strip", z.ZodTypeAny, {
|
|
345
|
+
content: string;
|
|
346
|
+
style: "simple" | "professional" | "clickbait" | "seo";
|
|
347
|
+
maxLength: number;
|
|
348
|
+
}, {
|
|
349
|
+
content: string;
|
|
350
|
+
style?: "simple" | "professional" | "clickbait" | "seo" | undefined;
|
|
351
|
+
maxLength?: number | undefined;
|
|
352
|
+
}>;
|
|
353
|
+
type TitleInput = z.infer<typeof TitleInput>;
|
|
354
|
+
declare const title: Skill<{
|
|
355
|
+
content: string;
|
|
356
|
+
style?: "simple" | "professional" | "clickbait" | "seo" | undefined;
|
|
357
|
+
maxLength?: number | undefined;
|
|
358
|
+
}, string>;
|
|
359
|
+
//#endregion
|
|
360
|
+
//#region src/skills/builtin/translate.d.ts
|
|
361
|
+
declare const TranslateInput: z.ZodObject<{
|
|
362
|
+
/** Text to translate */
|
|
363
|
+
text: z.ZodString;
|
|
364
|
+
/** Source language (auto-detected if not provided) */
|
|
365
|
+
from: z.ZodOptional<z.ZodString>;
|
|
366
|
+
/** Target language */
|
|
367
|
+
to: z.ZodString;
|
|
368
|
+
/** Preserve formatting */
|
|
369
|
+
preserveFormatting: z.ZodDefault<z.ZodBoolean>;
|
|
370
|
+
}, "strip", z.ZodTypeAny, {
|
|
371
|
+
text: string;
|
|
372
|
+
to: string;
|
|
373
|
+
preserveFormatting: boolean;
|
|
374
|
+
from?: string | undefined;
|
|
375
|
+
}, {
|
|
376
|
+
text: string;
|
|
377
|
+
to: string;
|
|
378
|
+
from?: string | undefined;
|
|
379
|
+
preserveFormatting?: boolean | undefined;
|
|
380
|
+
}>;
|
|
381
|
+
type TranslateInput = z.infer<typeof TranslateInput>;
|
|
382
|
+
declare const translate: Skill<{
|
|
383
|
+
text: string;
|
|
384
|
+
to: string;
|
|
385
|
+
from?: string | undefined;
|
|
386
|
+
preserveFormatting?: boolean | undefined;
|
|
387
|
+
}, string>;
|
|
388
|
+
//#endregion
|
|
389
|
+
export { type CommitInput, type ExplainInput, type ExtractInput, type LoadSkillsOptions, type ReviewInput, type Skill, type SkillContext, type SkillDefinition, type SkillInfo, type SkillRegistry, type SummarizeInput, type TestInput, type TitleInput, type TranslateInput, clearSkills, commit, defineSkill, explain, extract, getAllSkillInfo, getSkillInfo, hasSkill, listSkills, loadProjectSkills, loadSkill, loadSkillPackage, loadSkills, removeSkill, review, summarize, test, title, translate, useSkill };
|
|
390
|
+
//# sourceMappingURL=index.d.mts.map
|