@codeany/open-agent-sdk 0.2.2 → 0.2.3
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/dist/agent.d.ts +113 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +446 -0
- package/dist/agent.js.map +1 -0
- package/dist/engine.d.ts +62 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +496 -0
- package/dist/engine.js.map +1 -0
- package/dist/hooks.d.ts +111 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +179 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +133 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +19 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +126 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/providers/anthropic.d.ts +17 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +47 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/index.d.ts +20 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +26 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai.d.ts +26 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +212 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +84 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +11 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/sdk-mcp-server.d.ts +52 -0
- package/dist/sdk-mcp-server.d.ts.map +1 -0
- package/dist/sdk-mcp-server.js +57 -0
- package/dist/sdk-mcp-server.js.map +1 -0
- package/dist/session.d.ts +73 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +159 -0
- package/dist/session.js.map +1 -0
- package/dist/skills/bundled/commit.d.ts +7 -0
- package/dist/skills/bundled/commit.d.ts.map +1 -0
- package/dist/skills/bundled/commit.js +35 -0
- package/dist/skills/bundled/commit.js.map +1 -0
- package/dist/skills/bundled/debug.d.ts +7 -0
- package/dist/skills/bundled/debug.d.ts.map +1 -0
- package/{src/skills/bundled/debug.ts → dist/skills/bundled/debug.js} +20 -22
- package/dist/skills/bundled/debug.js.map +1 -0
- package/dist/skills/bundled/index.d.ts +11 -0
- package/dist/skills/bundled/index.d.ts.map +1 -0
- package/dist/skills/bundled/index.js +26 -0
- package/dist/skills/bundled/index.js.map +1 -0
- package/dist/skills/bundled/review.d.ts +7 -0
- package/dist/skills/bundled/review.d.ts.map +1 -0
- package/{src/skills/bundled/review.ts → dist/skills/bundled/review.js} +18 -21
- package/dist/skills/bundled/review.js.map +1 -0
- package/dist/skills/bundled/simplify.d.ts +8 -0
- package/dist/skills/bundled/simplify.d.ts.map +1 -0
- package/{src/skills/bundled/simplify.ts → dist/skills/bundled/simplify.js} +16 -19
- package/dist/skills/bundled/simplify.js.map +1 -0
- package/dist/skills/bundled/test.d.ts +7 -0
- package/dist/skills/bundled/test.d.ts.map +1 -0
- package/{src/skills/bundled/test.ts → dist/skills/bundled/test.js} +18 -21
- package/dist/skills/bundled/test.js.map +1 -0
- package/dist/skills/index.d.ts +7 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/registry.d.ts +43 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +111 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/types.d.ts +83 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +8 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tool-helper.d.ts +73 -0
- package/dist/tool-helper.d.ts.map +1 -0
- package/dist/tool-helper.js +86 -0
- package/dist/tool-helper.js.map +1 -0
- package/dist/tools/agent-tool.d.ts +17 -0
- package/dist/tools/agent-tool.d.ts.map +1 -0
- package/dist/tools/agent-tool.js +146 -0
- package/dist/tools/agent-tool.js.map +1 -0
- package/dist/tools/ask-user.d.ts +18 -0
- package/dist/tools/ask-user.d.ts.map +1 -0
- package/dist/tools/ask-user.js +72 -0
- package/dist/tools/ask-user.js.map +1 -0
- package/dist/tools/bash.d.ts +5 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +67 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/config-tool.d.ts +20 -0
- package/dist/tools/config-tool.d.ts.map +1 -0
- package/dist/tools/config-tool.js +83 -0
- package/dist/tools/config-tool.js.map +1 -0
- package/dist/tools/cron-tools.d.ts +33 -0
- package/dist/tools/cron-tools.d.ts.map +1 -0
- package/dist/tools/cron-tools.js +128 -0
- package/dist/tools/cron-tools.js.map +1 -0
- package/dist/tools/edit.d.ts +5 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +70 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +5 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +75 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +5 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +168 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +45 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +162 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/lsp-tool.d.ts +9 -0
- package/dist/tools/lsp-tool.d.ts.map +1 -0
- package/dist/tools/lsp-tool.js +137 -0
- package/dist/tools/lsp-tool.js.map +1 -0
- package/dist/tools/mcp-resource-tools.d.ts +14 -0
- package/dist/tools/mcp-resource-tools.d.ts.map +1 -0
- package/dist/tools/mcp-resource-tools.js +117 -0
- package/dist/tools/mcp-resource-tools.js.map +1 -0
- package/dist/tools/notebook-edit.d.ts +5 -0
- package/dist/tools/notebook-edit.d.ts.map +1 -0
- package/dist/tools/notebook-edit.js +85 -0
- package/dist/tools/notebook-edit.js.map +1 -0
- package/dist/tools/plan-tools.d.ts +12 -0
- package/dist/tools/plan-tools.d.ts.map +1 -0
- package/dist/tools/plan-tools.js +77 -0
- package/dist/tools/plan-tools.js.map +1 -0
- package/dist/tools/read.d.ts +5 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +66 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/send-message.d.ts +31 -0
- package/dist/tools/send-message.d.ts.map +1 -0
- package/dist/tools/send-message.js +77 -0
- package/dist/tools/send-message.js.map +1 -0
- package/dist/tools/skill-tool.d.ts +9 -0
- package/dist/tools/skill-tool.d.ts.map +1 -0
- package/dist/tools/skill-tool.js +115 -0
- package/dist/tools/skill-tool.js.map +1 -0
- package/dist/tools/task-tools.d.ts +48 -0
- package/dist/tools/task-tools.d.ts.map +1 -0
- package/dist/tools/task-tools.js +242 -0
- package/dist/tools/task-tools.js.map +1 -0
- package/dist/tools/team-tools.d.ts +34 -0
- package/dist/tools/team-tools.d.ts.map +1 -0
- package/dist/tools/team-tools.js +103 -0
- package/dist/tools/team-tools.js.map +1 -0
- package/dist/tools/todo-tool.d.ts +22 -0
- package/dist/tools/todo-tool.d.ts.map +1 -0
- package/dist/tools/todo-tool.js +93 -0
- package/dist/tools/todo-tool.js.map +1 -0
- package/dist/tools/tool-search.d.ts +13 -0
- package/dist/tools/tool-search.d.ts.map +1 -0
- package/dist/tools/tool-search.js +76 -0
- package/dist/tools/tool-search.js.map +1 -0
- package/dist/tools/types.d.ts +29 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +52 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +5 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +60 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +5 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +77 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/worktree-tools.d.ts +10 -0
- package/dist/tools/worktree-tools.d.ts.map +1 -0
- package/dist/tools/worktree-tools.js +130 -0
- package/dist/tools/worktree-tools.js.map +1 -0
- package/dist/tools/write.d.ts +5 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +40 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +423 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/compact.d.ts +44 -0
- package/dist/utils/compact.d.ts.map +1 -0
- package/dist/utils/compact.js +162 -0
- package/dist/utils/compact.js.map +1 -0
- package/dist/utils/context.d.ts +35 -0
- package/dist/utils/context.d.ts.map +1 -0
- package/dist/utils/context.js +174 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/fileCache.d.ts +64 -0
- package/dist/utils/fileCache.d.ts.map +1 -0
- package/dist/utils/fileCache.js +117 -0
- package/dist/utils/fileCache.js.map +1 -0
- package/dist/utils/messages.d.ts +57 -0
- package/dist/utils/messages.d.ts.map +1 -0
- package/dist/utils/messages.js +152 -0
- package/dist/utils/messages.js.map +1 -0
- package/dist/utils/retry.d.ts +48 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +111 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/tokens.d.ts +57 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +134 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +6 -1
- package/.env.example +0 -8
- package/examples/01-simple-query.ts +0 -43
- package/examples/02-multi-tool.ts +0 -44
- package/examples/03-multi-turn.ts +0 -39
- package/examples/04-prompt-api.ts +0 -29
- package/examples/05-custom-system-prompt.ts +0 -26
- package/examples/06-mcp-server.ts +0 -49
- package/examples/07-custom-tools.ts +0 -87
- package/examples/08-official-api-compat.ts +0 -38
- package/examples/09-subagents.ts +0 -48
- package/examples/10-permissions.ts +0 -40
- package/examples/11-custom-mcp-tools.ts +0 -101
- package/examples/12-skills.ts +0 -88
- package/examples/13-hooks.ts +0 -88
- package/examples/14-openai-compat.ts +0 -71
- package/examples/web/index.html +0 -365
- package/examples/web/server.ts +0 -157
- package/src/agent.ts +0 -516
- package/src/engine.ts +0 -633
- package/src/hooks.ts +0 -261
- package/src/index.ts +0 -426
- package/src/mcp/client.ts +0 -150
- package/src/providers/anthropic.ts +0 -60
- package/src/providers/index.ts +0 -34
- package/src/providers/openai.ts +0 -315
- package/src/providers/types.ts +0 -85
- package/src/sdk-mcp-server.ts +0 -78
- package/src/session.ts +0 -227
- package/src/skills/bundled/commit.ts +0 -38
- package/src/skills/bundled/index.ts +0 -28
- package/src/skills/index.ts +0 -25
- package/src/skills/registry.ts +0 -133
- package/src/skills/types.ts +0 -99
- package/src/tool-helper.ts +0 -127
- package/src/tools/agent-tool.ts +0 -164
- package/src/tools/ask-user.ts +0 -79
- package/src/tools/bash.ts +0 -75
- package/src/tools/config-tool.ts +0 -89
- package/src/tools/cron-tools.ts +0 -153
- package/src/tools/edit.ts +0 -74
- package/src/tools/glob.ts +0 -77
- package/src/tools/grep.ts +0 -168
- package/src/tools/index.ts +0 -240
- package/src/tools/lsp-tool.ts +0 -163
- package/src/tools/mcp-resource-tools.ts +0 -125
- package/src/tools/notebook-edit.ts +0 -93
- package/src/tools/plan-tools.ts +0 -88
- package/src/tools/read.ts +0 -73
- package/src/tools/send-message.ts +0 -96
- package/src/tools/skill-tool.ts +0 -133
- package/src/tools/task-tools.ts +0 -290
- package/src/tools/team-tools.ts +0 -128
- package/src/tools/todo-tool.ts +0 -112
- package/src/tools/tool-search.ts +0 -87
- package/src/tools/types.ts +0 -66
- package/src/tools/web-fetch.ts +0 -66
- package/src/tools/web-search.ts +0 -86
- package/src/tools/worktree-tools.ts +0 -140
- package/src/tools/write.ts +0 -42
- package/src/types.ts +0 -486
- package/src/utils/compact.ts +0 -207
- package/src/utils/context.ts +0 -191
- package/src/utils/fileCache.ts +0 -148
- package/src/utils/messages.ts +0 -195
- package/src/utils/retry.ts +0 -140
- package/src/utils/tokens.ts +0 -145
- package/tsconfig.json +0 -19
package/dist/session.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Storage & Management
|
|
3
|
+
*
|
|
4
|
+
* Persists conversation transcripts to disk for resumption.
|
|
5
|
+
* Manages session lifecycle (create, resume, list, fork).
|
|
6
|
+
*/
|
|
7
|
+
import { readFile, writeFile, mkdir, readdir } from 'fs/promises';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
/**
|
|
10
|
+
* Get the sessions directory path.
|
|
11
|
+
*/
|
|
12
|
+
function getSessionsDir() {
|
|
13
|
+
const home = process.env.HOME || process.env.USERPROFILE || '/tmp';
|
|
14
|
+
return join(home, '.open-agent-sdk', 'sessions');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get the path for a specific session.
|
|
18
|
+
*/
|
|
19
|
+
function getSessionPath(sessionId) {
|
|
20
|
+
return join(getSessionsDir(), sessionId);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Save session to disk.
|
|
24
|
+
*/
|
|
25
|
+
export async function saveSession(sessionId, messages, metadata) {
|
|
26
|
+
const dir = getSessionPath(sessionId);
|
|
27
|
+
await mkdir(dir, { recursive: true });
|
|
28
|
+
const data = {
|
|
29
|
+
metadata: {
|
|
30
|
+
id: sessionId,
|
|
31
|
+
cwd: metadata.cwd || process.cwd(),
|
|
32
|
+
model: metadata.model || 'claude-sonnet-4-6',
|
|
33
|
+
createdAt: metadata.createdAt || new Date().toISOString(),
|
|
34
|
+
updatedAt: new Date().toISOString(),
|
|
35
|
+
messageCount: messages.length,
|
|
36
|
+
summary: metadata.summary,
|
|
37
|
+
},
|
|
38
|
+
messages,
|
|
39
|
+
};
|
|
40
|
+
await writeFile(join(dir, 'transcript.json'), JSON.stringify(data, null, 2), 'utf-8');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Load session from disk.
|
|
44
|
+
*/
|
|
45
|
+
export async function loadSession(sessionId) {
|
|
46
|
+
try {
|
|
47
|
+
const filePath = join(getSessionPath(sessionId), 'transcript.json');
|
|
48
|
+
const content = await readFile(filePath, 'utf-8');
|
|
49
|
+
return JSON.parse(content);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* List all sessions.
|
|
57
|
+
*/
|
|
58
|
+
export async function listSessions() {
|
|
59
|
+
try {
|
|
60
|
+
const dir = getSessionsDir();
|
|
61
|
+
const entries = await readdir(dir);
|
|
62
|
+
const sessions = [];
|
|
63
|
+
for (const entry of entries) {
|
|
64
|
+
try {
|
|
65
|
+
const data = await loadSession(entry);
|
|
66
|
+
if (data?.metadata) {
|
|
67
|
+
sessions.push(data.metadata);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Skip invalid sessions
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Sort by updatedAt descending
|
|
75
|
+
sessions.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
76
|
+
return sessions;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Fork a session (create a copy with a new ID).
|
|
84
|
+
*/
|
|
85
|
+
export async function forkSession(sourceSessionId, newSessionId) {
|
|
86
|
+
const data = await loadSession(sourceSessionId);
|
|
87
|
+
if (!data)
|
|
88
|
+
return null;
|
|
89
|
+
const forkId = newSessionId || crypto.randomUUID();
|
|
90
|
+
await saveSession(forkId, data.messages, {
|
|
91
|
+
...data.metadata,
|
|
92
|
+
id: forkId,
|
|
93
|
+
createdAt: new Date().toISOString(),
|
|
94
|
+
summary: `Forked from session ${sourceSessionId}`,
|
|
95
|
+
});
|
|
96
|
+
return forkId;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get session messages.
|
|
100
|
+
*/
|
|
101
|
+
export async function getSessionMessages(sessionId) {
|
|
102
|
+
const data = await loadSession(sessionId);
|
|
103
|
+
return data?.messages || [];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Append a message to a session transcript.
|
|
107
|
+
*/
|
|
108
|
+
export async function appendToSession(sessionId, message) {
|
|
109
|
+
const data = await loadSession(sessionId);
|
|
110
|
+
if (!data)
|
|
111
|
+
return;
|
|
112
|
+
data.messages.push(message);
|
|
113
|
+
data.metadata.updatedAt = new Date().toISOString();
|
|
114
|
+
data.metadata.messageCount = data.messages.length;
|
|
115
|
+
await saveSession(sessionId, data.messages, data.metadata);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Delete a session.
|
|
119
|
+
*/
|
|
120
|
+
export async function deleteSession(sessionId) {
|
|
121
|
+
try {
|
|
122
|
+
const { rm } = await import('fs/promises');
|
|
123
|
+
await rm(getSessionPath(sessionId), { recursive: true, force: true });
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get info about a specific session.
|
|
132
|
+
*/
|
|
133
|
+
export async function getSessionInfo(sessionId, options) {
|
|
134
|
+
const data = await loadSession(sessionId);
|
|
135
|
+
return data?.metadata || null;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Rename a session.
|
|
139
|
+
*/
|
|
140
|
+
export async function renameSession(sessionId, title, options) {
|
|
141
|
+
const data = await loadSession(sessionId);
|
|
142
|
+
if (!data)
|
|
143
|
+
return;
|
|
144
|
+
data.metadata.summary = title;
|
|
145
|
+
data.metadata.updatedAt = new Date().toISOString();
|
|
146
|
+
await saveSession(sessionId, data.messages, data.metadata);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Tag a session.
|
|
150
|
+
*/
|
|
151
|
+
export async function tagSession(sessionId, tag, options) {
|
|
152
|
+
const data = await loadSession(sessionId);
|
|
153
|
+
if (!data)
|
|
154
|
+
return;
|
|
155
|
+
data.metadata.tag = tag;
|
|
156
|
+
data.metadata.updatedAt = new Date().toISOString();
|
|
157
|
+
await saveSession(sessionId, data.messages, data.metadata);
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../../src/skills/bundled/commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,wBAAgB,mBAAmB,IAAI,IAAI,CAe1C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled Skill: commit
|
|
3
|
+
*
|
|
4
|
+
* Create a git commit with a well-crafted message based on staged changes.
|
|
5
|
+
*/
|
|
6
|
+
import { registerSkill } from '../registry.js';
|
|
7
|
+
const COMMIT_PROMPT = `Create a git commit for the current changes. Follow these steps:
|
|
8
|
+
|
|
9
|
+
1. Run \`git status\` and \`git diff --cached\` to understand what's staged
|
|
10
|
+
2. If nothing is staged, run \`git diff\` to see unstaged changes and suggest what to stage
|
|
11
|
+
3. Analyze the changes and draft a concise commit message that:
|
|
12
|
+
- Uses imperative mood ("Add feature" not "Added feature")
|
|
13
|
+
- Summarizes the "why" not just the "what"
|
|
14
|
+
- Keeps the first line under 72 characters
|
|
15
|
+
- Adds a body with details if the change is complex
|
|
16
|
+
4. Create the commit
|
|
17
|
+
|
|
18
|
+
Do NOT push to remote unless explicitly asked.`;
|
|
19
|
+
export function registerCommitSkill() {
|
|
20
|
+
registerSkill({
|
|
21
|
+
name: 'commit',
|
|
22
|
+
description: 'Create a git commit with a well-crafted message based on staged changes.',
|
|
23
|
+
aliases: ['ci'],
|
|
24
|
+
allowedTools: ['Bash', 'Read', 'Glob', 'Grep'],
|
|
25
|
+
userInvocable: true,
|
|
26
|
+
async getPrompt(args) {
|
|
27
|
+
let prompt = COMMIT_PROMPT;
|
|
28
|
+
if (args.trim()) {
|
|
29
|
+
prompt += `\n\nAdditional instructions: ${args}`;
|
|
30
|
+
}
|
|
31
|
+
return [{ type: 'text', text: prompt }];
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/skills/bundled/commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,MAAM,aAAa,GAAG;;;;;;;;;;;+CAWyB,CAAA;AAE/C,MAAM,UAAU,mBAAmB;IACjC,aAAa,CAAC;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0EAA0E;QACvF,OAAO,EAAE,CAAC,IAAI,CAAC;QACf,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC9C,aAAa,EAAE,IAAI;QACnB,KAAK,CAAC,SAAS,CAAC,IAAI;YAClB,IAAI,MAAM,GAAG,aAAa,CAAA;YAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,gCAAgC,IAAI,EAAE,CAAA;YAClD,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/skills/bundled/debug.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2BH,wBAAgB,kBAAkB,IAAI,IAAI,CAgBzC"}
|
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Systematic debugging of an issue using structured investigation.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
import { registerSkill } from '../registry.js'
|
|
8
|
-
import type { SkillContentBlock } from '../types.js'
|
|
9
|
-
|
|
6
|
+
import { registerSkill } from '../registry.js';
|
|
10
7
|
const DEBUG_PROMPT = `Debug the described issue using a systematic approach:
|
|
11
8
|
|
|
12
9
|
1. **Reproduce**: Understand and reproduce the issue
|
|
@@ -27,22 +24,23 @@ const DEBUG_PROMPT = `Debug the described issue using a systematic approach:
|
|
|
27
24
|
|
|
28
25
|
5. **Verify**: Confirm the fix works
|
|
29
26
|
- Run relevant tests
|
|
30
|
-
- Check for regressions
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
27
|
+
- Check for regressions`;
|
|
28
|
+
export function registerDebugSkill() {
|
|
29
|
+
registerSkill({
|
|
30
|
+
name: 'debug',
|
|
31
|
+
description: 'Systematic debugging of an issue using structured investigation.',
|
|
32
|
+
aliases: ['investigate', 'diagnose'],
|
|
33
|
+
userInvocable: true,
|
|
34
|
+
async getPrompt(args) {
|
|
35
|
+
let prompt = DEBUG_PROMPT;
|
|
36
|
+
if (args.trim()) {
|
|
37
|
+
prompt += `\n\n## Issue Description\n${args}`;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
prompt += `\n\nAsk the user to describe the issue they're experiencing.`;
|
|
41
|
+
}
|
|
42
|
+
return [{ type: 'text', text: prompt }];
|
|
43
|
+
},
|
|
44
|
+
});
|
|
48
45
|
}
|
|
46
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/skills/bundled/debug.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;2BAoBM,CAAA;AAE3B,MAAM,UAAU,kBAAkB;IAChC,aAAa,CAAC;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kEAAkE;QAC/E,OAAO,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;QACpC,aAAa,EAAE,IAAI;QACnB,KAAK,CAAC,SAAS,CAAC,IAAI;YAClB,IAAI,MAAM,GAAG,YAAY,CAAA;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,6BAA6B,IAAI,EAAE,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,8DAA8D,CAAA;YAC1E,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled Skills Initialization
|
|
3
|
+
*
|
|
4
|
+
* Registers all built-in skills at SDK startup.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Initialize all bundled skills.
|
|
8
|
+
* Safe to call multiple times (idempotent).
|
|
9
|
+
*/
|
|
10
|
+
export declare function initBundledSkills(): void;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skills/bundled/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CASxC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled Skills Initialization
|
|
3
|
+
*
|
|
4
|
+
* Registers all built-in skills at SDK startup.
|
|
5
|
+
*/
|
|
6
|
+
import { registerSimplifySkill } from './simplify.js';
|
|
7
|
+
import { registerCommitSkill } from './commit.js';
|
|
8
|
+
import { registerReviewSkill } from './review.js';
|
|
9
|
+
import { registerDebugSkill } from './debug.js';
|
|
10
|
+
import { registerTestSkill } from './test.js';
|
|
11
|
+
let initialized = false;
|
|
12
|
+
/**
|
|
13
|
+
* Initialize all bundled skills.
|
|
14
|
+
* Safe to call multiple times (idempotent).
|
|
15
|
+
*/
|
|
16
|
+
export function initBundledSkills() {
|
|
17
|
+
if (initialized)
|
|
18
|
+
return;
|
|
19
|
+
initialized = true;
|
|
20
|
+
registerSimplifySkill();
|
|
21
|
+
registerCommitSkill();
|
|
22
|
+
registerReviewSkill();
|
|
23
|
+
registerDebugSkill();
|
|
24
|
+
registerTestSkill();
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/skills/bundled/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,WAAW;QAAE,OAAM;IACvB,WAAW,GAAG,IAAI,CAAA;IAElB,qBAAqB,EAAE,CAAA;IACvB,mBAAmB,EAAE,CAAA;IACrB,mBAAmB,EAAE,CAAA;IACrB,kBAAkB,EAAE,CAAA;IACpB,iBAAiB,EAAE,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/skills/bundled/review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,wBAAgB,mBAAmB,IAAI,IAAI,CAe1C"}
|
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Review code changes (PR or local diff) for issues and improvements.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
import { registerSkill } from '../registry.js'
|
|
8
|
-
import type { SkillContentBlock } from '../types.js'
|
|
9
|
-
|
|
6
|
+
import { registerSkill } from '../registry.js';
|
|
10
7
|
const REVIEW_PROMPT = `Review the current code changes for potential issues. Follow these steps:
|
|
11
8
|
|
|
12
9
|
1. Run \`git diff\` to see uncommitted changes, or \`git diff main...HEAD\` for branch changes
|
|
@@ -21,21 +18,21 @@ const REVIEW_PROMPT = `Review the current code changes for potential issues. Fol
|
|
|
21
18
|
- Suggestions (nice to have)
|
|
22
19
|
- Questions (need clarification)
|
|
23
20
|
|
|
24
|
-
Be specific: reference file names, line numbers, and suggest fixes
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
})
|
|
21
|
+
Be specific: reference file names, line numbers, and suggest fixes.`;
|
|
22
|
+
export function registerReviewSkill() {
|
|
23
|
+
registerSkill({
|
|
24
|
+
name: 'review',
|
|
25
|
+
description: 'Review code changes for correctness, security, performance, and style issues.',
|
|
26
|
+
aliases: ['review-pr', 'cr'],
|
|
27
|
+
allowedTools: ['Bash', 'Read', 'Glob', 'Grep'],
|
|
28
|
+
userInvocable: true,
|
|
29
|
+
async getPrompt(args) {
|
|
30
|
+
let prompt = REVIEW_PROMPT;
|
|
31
|
+
if (args.trim()) {
|
|
32
|
+
prompt += `\n\nFocus area: ${args}`;
|
|
33
|
+
}
|
|
34
|
+
return [{ type: 'text', text: prompt }];
|
|
35
|
+
},
|
|
36
|
+
});
|
|
41
37
|
}
|
|
38
|
+
//# sourceMappingURL=review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/skills/bundled/review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,MAAM,aAAa,GAAG;;;;;;;;;;;;;;oEAc8C,CAAA;AAEpE,MAAM,UAAU,mBAAmB;IACjC,aAAa,CAAC;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+EAA+E;QAC5F,OAAO,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;QAC5B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC9C,aAAa,EAAE,IAAI;QACnB,KAAK,CAAC,SAAS,CAAC,IAAI;YAClB,IAAI,MAAM,GAAG,aAAa,CAAA;YAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,mBAAmB,IAAI,EAAE,CAAA;YACrC,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled Skill: simplify
|
|
3
|
+
*
|
|
4
|
+
* Reviews changed code for reuse opportunities, code quality issues,
|
|
5
|
+
* and efficiency improvements, then fixes any issues found.
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerSimplifySkill(): void;
|
|
8
|
+
//# sourceMappingURL=simplify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../../src/skills/bundled/simplify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH,wBAAgB,qBAAqB,IAAI,IAAI,CAa5C"}
|
|
@@ -4,10 +4,7 @@
|
|
|
4
4
|
* Reviews changed code for reuse opportunities, code quality issues,
|
|
5
5
|
* and efficiency improvements, then fixes any issues found.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
import { registerSkill } from '../registry.js'
|
|
9
|
-
import type { SkillContentBlock } from '../types.js'
|
|
10
|
-
|
|
7
|
+
import { registerSkill } from '../registry.js';
|
|
11
8
|
const SIMPLIFY_PROMPT = `Review the recently changed code for three categories of improvements. Launch 3 parallel Agent sub-tasks:
|
|
12
9
|
|
|
13
10
|
## Task 1: Reuse Analysis
|
|
@@ -33,19 +30,19 @@ Look for:
|
|
|
33
30
|
- Inefficient data structures for the access pattern
|
|
34
31
|
- Unnecessary re-computation
|
|
35
32
|
|
|
36
|
-
After all three analyses complete, fix any issues found. Prioritize by impact
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
})
|
|
33
|
+
After all three analyses complete, fix any issues found. Prioritize by impact.`;
|
|
34
|
+
export function registerSimplifySkill() {
|
|
35
|
+
registerSkill({
|
|
36
|
+
name: 'simplify',
|
|
37
|
+
description: 'Review changed code for reuse, quality, and efficiency, then fix any issues found.',
|
|
38
|
+
userInvocable: true,
|
|
39
|
+
async getPrompt(args) {
|
|
40
|
+
let prompt = SIMPLIFY_PROMPT;
|
|
41
|
+
if (args.trim()) {
|
|
42
|
+
prompt += `\n\n## Additional Focus\n${args}`;
|
|
43
|
+
}
|
|
44
|
+
return [{ type: 'text', text: prompt }];
|
|
45
|
+
},
|
|
46
|
+
});
|
|
51
47
|
}
|
|
48
|
+
//# sourceMappingURL=simplify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/skills/bundled/simplify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;+EAyBuD,CAAA;AAE/E,MAAM,UAAU,qBAAqB;IACnC,aAAa,CAAC;QACZ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oFAAoF;QACjG,aAAa,EAAE,IAAI;QACnB,KAAK,CAAC,SAAS,CAAC,IAAI;YAClB,IAAI,MAAM,GAAG,eAAe,CAAA;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,4BAA4B,IAAI,EAAE,CAAA;YAC9C,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/skills/bundled/test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuBH,wBAAgB,iBAAiB,IAAI,IAAI,CAexC"}
|
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Run tests and analyze failures.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
import { registerSkill } from '../registry.js'
|
|
8
|
-
import type { SkillContentBlock } from '../types.js'
|
|
9
|
-
|
|
6
|
+
import { registerSkill } from '../registry.js';
|
|
10
7
|
const TEST_PROMPT = `Run the project's test suite and analyze the results:
|
|
11
8
|
|
|
12
9
|
1. **Discover**: Find the test runner configuration
|
|
@@ -23,21 +20,21 @@ const TEST_PROMPT = `Run the project's test suite and analyze the results:
|
|
|
23
20
|
- Identify why the test is failing
|
|
24
21
|
- Fix the issue (in tests or source as appropriate)
|
|
25
22
|
|
|
26
|
-
4. **Re-verify**: Run the failing tests again to confirm the fix
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
})
|
|
23
|
+
4. **Re-verify**: Run the failing tests again to confirm the fix`;
|
|
24
|
+
export function registerTestSkill() {
|
|
25
|
+
registerSkill({
|
|
26
|
+
name: 'test',
|
|
27
|
+
description: 'Run tests and analyze failures, fixing any issues found.',
|
|
28
|
+
aliases: ['run-tests'],
|
|
29
|
+
allowedTools: ['Bash', 'Read', 'Write', 'Edit', 'Glob', 'Grep'],
|
|
30
|
+
userInvocable: true,
|
|
31
|
+
async getPrompt(args) {
|
|
32
|
+
let prompt = TEST_PROMPT;
|
|
33
|
+
if (args.trim()) {
|
|
34
|
+
prompt += `\n\nSpecific test target: ${args}`;
|
|
35
|
+
}
|
|
36
|
+
return [{ type: 'text', text: prompt }];
|
|
37
|
+
},
|
|
38
|
+
});
|
|
43
39
|
}
|
|
40
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/skills/bundled/test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;iEAgB6C,CAAA;AAEjE,MAAM,UAAU,iBAAiB;IAC/B,aAAa,CAAC;QACZ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/D,aAAa,EAAE,IAAI;QACnB,KAAK,CAAC,SAAS,CAAC,IAAI;YAClB,IAAI,MAAM,GAAG,WAAW,CAAA;YACxB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,6BAA6B,IAAI,EAAE,CAAA;YAC/C,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Module - Public API
|
|
3
|
+
*/
|
|
4
|
+
export type { SkillDefinition, SkillContentBlock, SkillResult, } from './types.js';
|
|
5
|
+
export { registerSkill, getSkill, getAllSkills, getUserInvocableSkills, hasSkill, unregisterSkill, clearSkills, formatSkillsForPrompt, } from './registry.js';
|
|
6
|
+
export { initBundledSkills } from './bundled/index.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,GACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,WAAW,EACX,qBAAqB,GACtB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Module - Public API
|
|
3
|
+
*/
|
|
4
|
+
// Registry
|
|
5
|
+
export { registerSkill, getSkill, getAllSkills, getUserInvocableSkills, hasSkill, unregisterSkill, clearSkills, formatSkillsForPrompt, } from './registry.js';
|
|
6
|
+
// Bundled skills
|
|
7
|
+
export { initBundledSkills } from './bundled/index.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,WAAW;AACX,OAAO,EACL,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,WAAW,EACX,qBAAqB,GACtB,MAAM,eAAe,CAAA;AAEtB,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for managing skill definitions.
|
|
5
|
+
* Skills can be registered programmatically or loaded from bundled definitions.
|
|
6
|
+
*/
|
|
7
|
+
import type { SkillDefinition } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Register a skill definition.
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerSkill(definition: SkillDefinition): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get a skill by name or alias.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getSkill(name: string): SkillDefinition | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Get all registered skills.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getAllSkills(): SkillDefinition[];
|
|
20
|
+
/**
|
|
21
|
+
* Get all user-invocable skills (for /command listing).
|
|
22
|
+
*/
|
|
23
|
+
export declare function getUserInvocableSkills(): SkillDefinition[];
|
|
24
|
+
/**
|
|
25
|
+
* Check if a skill exists.
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasSkill(name: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Remove a skill.
|
|
30
|
+
*/
|
|
31
|
+
export declare function unregisterSkill(name: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Clear all skills (for testing).
|
|
34
|
+
*/
|
|
35
|
+
export declare function clearSkills(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Format skills listing for system prompt injection.
|
|
38
|
+
*
|
|
39
|
+
* Uses a budget system: skills listing gets a limited character budget
|
|
40
|
+
* to avoid bloating the context window.
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatSkillsForPrompt(contextWindowTokens?: number): string;
|
|
43
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAS/D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAUlE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,eAAe,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAI1D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYrD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,MAAM,CAgCR"}
|