attocode 0.1.0 → 0.1.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/CHANGELOG.md +64 -1
- package/README.md +138 -10
- package/dist/src/agent.d.ts +75 -1
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +700 -25
- package/dist/src/agent.js.map +1 -1
- package/dist/src/commands/agents-commands.d.ts +24 -0
- package/dist/src/commands/agents-commands.d.ts.map +1 -0
- package/dist/src/commands/agents-commands.js +284 -0
- package/dist/src/commands/agents-commands.js.map +1 -0
- package/dist/src/commands/handler.d.ts.map +1 -1
- package/dist/src/commands/handler.js +135 -19
- package/dist/src/commands/handler.js.map +1 -1
- package/dist/src/commands/init-commands.d.ts +35 -0
- package/dist/src/commands/init-commands.d.ts.map +1 -0
- package/dist/src/commands/init-commands.js +187 -0
- package/dist/src/commands/init-commands.js.map +1 -0
- package/dist/src/commands/skills-commands.d.ts +26 -0
- package/dist/src/commands/skills-commands.d.ts.map +1 -0
- package/dist/src/commands/skills-commands.js +309 -0
- package/dist/src/commands/skills-commands.js.map +1 -0
- package/dist/src/commands/types.d.ts +13 -2
- package/dist/src/commands/types.d.ts.map +1 -1
- package/dist/src/defaults.d.ts +29 -1
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +66 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/integrations/agent-registry.d.ts +68 -2
- package/dist/src/integrations/agent-registry.d.ts.map +1 -1
- package/dist/src/integrations/agent-registry.js +230 -23
- package/dist/src/integrations/agent-registry.js.map +1 -1
- package/dist/src/integrations/cancellation.d.ts +5 -0
- package/dist/src/integrations/cancellation.d.ts.map +1 -1
- package/dist/src/integrations/cancellation.js +7 -0
- package/dist/src/integrations/cancellation.js.map +1 -1
- package/dist/src/integrations/capabilities.d.ts +160 -0
- package/dist/src/integrations/capabilities.d.ts.map +1 -0
- package/dist/src/integrations/capabilities.js +426 -0
- package/dist/src/integrations/capabilities.js.map +1 -0
- package/dist/src/integrations/context-engineering.d.ts +6 -1
- package/dist/src/integrations/context-engineering.d.ts.map +1 -1
- package/dist/src/integrations/context-engineering.js +7 -0
- package/dist/src/integrations/context-engineering.js.map +1 -1
- package/dist/src/integrations/index.d.ts +12 -2
- package/dist/src/integrations/index.d.ts.map +1 -1
- package/dist/src/integrations/index.js +22 -2
- package/dist/src/integrations/index.js.map +1 -1
- package/dist/src/integrations/interactive-planning.d.ts +322 -0
- package/dist/src/integrations/interactive-planning.d.ts.map +1 -0
- package/dist/src/integrations/interactive-planning.js +655 -0
- package/dist/src/integrations/interactive-planning.js.map +1 -0
- package/dist/src/integrations/learning-store.d.ts +291 -0
- package/dist/src/integrations/learning-store.d.ts.map +1 -0
- package/dist/src/integrations/learning-store.js +640 -0
- package/dist/src/integrations/learning-store.js.map +1 -0
- package/dist/src/integrations/pending-plan.d.ts.map +1 -1
- package/dist/src/integrations/pending-plan.js +69 -10
- package/dist/src/integrations/pending-plan.js.map +1 -1
- package/dist/src/integrations/skill-executor.d.ts +113 -0
- package/dist/src/integrations/skill-executor.d.ts.map +1 -0
- package/dist/src/integrations/skill-executor.js +270 -0
- package/dist/src/integrations/skill-executor.js.map +1 -0
- package/dist/src/integrations/skills.d.ts +98 -7
- package/dist/src/integrations/skills.d.ts.map +1 -1
- package/dist/src/integrations/skills.js +210 -11
- package/dist/src/integrations/skills.js.map +1 -1
- package/dist/src/providers/circuit-breaker.d.ts +180 -0
- package/dist/src/providers/circuit-breaker.d.ts.map +1 -0
- package/dist/src/providers/circuit-breaker.js +349 -0
- package/dist/src/providers/circuit-breaker.js.map +1 -0
- package/dist/src/providers/fallback-chain.d.ts +194 -0
- package/dist/src/providers/fallback-chain.d.ts.map +1 -0
- package/dist/src/providers/fallback-chain.js +363 -0
- package/dist/src/providers/fallback-chain.js.map +1 -0
- package/dist/src/providers/llm-resilience.d.ts +126 -0
- package/dist/src/providers/llm-resilience.d.ts.map +1 -0
- package/dist/src/providers/llm-resilience.js +261 -0
- package/dist/src/providers/llm-resilience.js.map +1 -0
- package/dist/src/providers/resilient-provider.d.ts +124 -0
- package/dist/src/providers/resilient-provider.d.ts.map +1 -0
- package/dist/src/providers/resilient-provider.js +242 -0
- package/dist/src/providers/resilient-provider.js.map +1 -0
- package/dist/src/tricks/recursive-context.d.ts +296 -0
- package/dist/src/tricks/recursive-context.d.ts.map +1 -0
- package/dist/src/tricks/recursive-context.js +518 -0
- package/dist/src/tricks/recursive-context.js.map +1 -0
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +226 -29
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -1
- package/dist/src/tui/components/ApprovalDialog.js +1 -1
- package/dist/src/tui/components/ApprovalDialog.js.map +1 -1
- package/dist/src/tui/index.d.ts +1 -0
- package/dist/src/tui/index.d.ts.map +1 -1
- package/dist/src/tui/index.js +2 -0
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/transparency-aggregator.d.ts +100 -0
- package/dist/src/tui/transparency-aggregator.d.ts.map +1 -0
- package/dist/src/tui/transparency-aggregator.js +234 -0
- package/dist/src/tui/transparency-aggregator.js.map +1 -0
- package/dist/src/types.d.ts +155 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -166,13 +166,16 @@ export class PendingPlanManager {
|
|
|
166
166
|
return 'No pending plan.';
|
|
167
167
|
}
|
|
168
168
|
const lines = [
|
|
169
|
-
|
|
169
|
+
`━━━ PENDING PLAN ━━━`,
|
|
170
|
+
``,
|
|
171
|
+
`Task: "${this.currentPlan.task}"`,
|
|
170
172
|
`Status: ${this.currentPlan.status}`,
|
|
171
173
|
`Created: ${this.currentPlan.createdAt}`,
|
|
172
174
|
'',
|
|
173
175
|
];
|
|
176
|
+
// Show exploration summary if available
|
|
174
177
|
if (this.currentPlan.explorationSummary) {
|
|
175
|
-
lines.push('Exploration Summary:');
|
|
178
|
+
lines.push('📋 Exploration Summary:');
|
|
176
179
|
lines.push(this.currentPlan.explorationSummary);
|
|
177
180
|
lines.push('');
|
|
178
181
|
}
|
|
@@ -180,26 +183,82 @@ export class PendingPlanManager {
|
|
|
180
183
|
lines.push('No proposed changes yet.');
|
|
181
184
|
}
|
|
182
185
|
else {
|
|
183
|
-
|
|
186
|
+
// Extract overall approach from first change's reason (often shared across spawn_agent calls)
|
|
187
|
+
const firstReason = this.currentPlan.proposedChanges[0]?.reason || '';
|
|
188
|
+
const allSameReason = this.currentPlan.proposedChanges.every(c => c.reason === firstReason);
|
|
189
|
+
if (allSameReason && firstReason && this.currentPlan.proposedChanges.length > 1) {
|
|
190
|
+
lines.push('🎯 Overall Approach:');
|
|
191
|
+
lines.push(` ${firstReason}`);
|
|
192
|
+
lines.push('');
|
|
193
|
+
}
|
|
194
|
+
lines.push(`📝 Proposed Actions (${this.currentPlan.proposedChanges.length}):`);
|
|
184
195
|
lines.push('');
|
|
185
196
|
for (const change of this.currentPlan.proposedChanges) {
|
|
186
|
-
|
|
187
|
-
// Format args nicely
|
|
197
|
+
// Format based on tool type
|
|
188
198
|
if (change.tool === 'write_file' || change.tool === 'edit_file') {
|
|
189
199
|
const path = change.args.path || change.args.file_path;
|
|
190
|
-
lines.push(
|
|
200
|
+
lines.push(`${change.order}. [${change.tool}] ${path}`);
|
|
201
|
+
if (!allSameReason) {
|
|
202
|
+
lines.push(` └─ ${change.reason}`);
|
|
203
|
+
}
|
|
191
204
|
}
|
|
192
205
|
else if (change.tool === 'bash') {
|
|
193
|
-
const cmd = String(change.args.command || '').slice(0,
|
|
194
|
-
lines.push(
|
|
206
|
+
const cmd = String(change.args.command || '').slice(0, 80);
|
|
207
|
+
lines.push(`${change.order}. [bash] ${cmd}${cmd.length >= 80 ? '...' : ''}`);
|
|
208
|
+
if (!allSameReason) {
|
|
209
|
+
lines.push(` └─ ${change.reason}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else if (change.tool === 'spawn_agent') {
|
|
213
|
+
// For spawn_agent, the task IS the plan - show it prominently
|
|
214
|
+
const agentType = change.args.agent || change.args.type || 'subagent';
|
|
215
|
+
const task = String(change.args.task || change.args.prompt || '');
|
|
216
|
+
lines.push(`${change.order}. [${agentType}]`);
|
|
217
|
+
// Show the full task, properly formatted with line breaks
|
|
218
|
+
const taskLines = task.split(/\n/).filter(l => l.trim());
|
|
219
|
+
if (taskLines.length <= 3) {
|
|
220
|
+
// Short task - show inline
|
|
221
|
+
for (const taskLine of taskLines) {
|
|
222
|
+
lines.push(` ${taskLine.trim()}`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// Longer task - show first few lines and indicate more
|
|
227
|
+
for (let i = 0; i < Math.min(4, taskLines.length); i++) {
|
|
228
|
+
const line = taskLines[i].trim();
|
|
229
|
+
if (line.length > 100) {
|
|
230
|
+
lines.push(` ${line.slice(0, 97)}...`);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
lines.push(` ${line}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (taskLines.length > 4) {
|
|
237
|
+
lines.push(` ... (${taskLines.length - 4} more lines)`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!allSameReason) {
|
|
241
|
+
lines.push(` └─ ${change.reason}`);
|
|
242
|
+
}
|
|
195
243
|
}
|
|
196
244
|
else {
|
|
197
|
-
|
|
245
|
+
// Generic tool
|
|
246
|
+
lines.push(`${change.order}. [${change.tool}]`);
|
|
247
|
+
const argsStr = JSON.stringify(change.args);
|
|
248
|
+
if (argsStr.length > 100) {
|
|
249
|
+
lines.push(` Args: ${argsStr.slice(0, 97)}...`);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
lines.push(` Args: ${argsStr}`);
|
|
253
|
+
}
|
|
254
|
+
if (!allSameReason) {
|
|
255
|
+
lines.push(` └─ ${change.reason}`);
|
|
256
|
+
}
|
|
198
257
|
}
|
|
199
|
-
lines.push(` Reason: ${change.reason}`);
|
|
200
258
|
lines.push('');
|
|
201
259
|
}
|
|
202
260
|
}
|
|
261
|
+
lines.push('━━━━━━━━━━━━━━━━━━━━━━━');
|
|
203
262
|
lines.push('Commands: /approve, /reject, /show-plan');
|
|
204
263
|
return lines.join('\n');
|
|
205
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-plan.js","sourceRoot":"","sources":["../../../src/integrations/pending-plan.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pending-plan.js","sourceRoot":"","sources":["../../../src/integrations/pending-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Executor
|
|
3
|
+
*
|
|
4
|
+
* Handles invocation of skills with argument parsing and template substitution.
|
|
5
|
+
* Skills can be invoked like commands: /review --file src/main.ts --focus security
|
|
6
|
+
*/
|
|
7
|
+
import type { Skill, SkillManager } from './skills.js';
|
|
8
|
+
/**
|
|
9
|
+
* Parsed arguments from command line input.
|
|
10
|
+
*/
|
|
11
|
+
export interface ParsedArgs {
|
|
12
|
+
/** Named arguments (--name value or -n value) */
|
|
13
|
+
named: Record<string, unknown>;
|
|
14
|
+
/** Positional arguments (remaining after named) */
|
|
15
|
+
positional: string[];
|
|
16
|
+
/** Any parsing errors */
|
|
17
|
+
errors: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Context provided during skill execution.
|
|
21
|
+
*/
|
|
22
|
+
export interface SkillExecutionContext {
|
|
23
|
+
/** Current working directory */
|
|
24
|
+
cwd: string;
|
|
25
|
+
/** Session ID */
|
|
26
|
+
sessionId?: string;
|
|
27
|
+
/** Current conversation context (for prompt injection) */
|
|
28
|
+
conversationContext?: string;
|
|
29
|
+
/** Callback to run agent with injected prompt */
|
|
30
|
+
runWithPrompt?: (prompt: string) => Promise<SkillExecutionResult>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of skill execution.
|
|
34
|
+
*/
|
|
35
|
+
export interface SkillExecutionResult {
|
|
36
|
+
/** Whether execution succeeded */
|
|
37
|
+
success: boolean;
|
|
38
|
+
/** Result message or output */
|
|
39
|
+
output: string;
|
|
40
|
+
/** Injected prompt for the agent (if prompt-injection mode) */
|
|
41
|
+
injectedPrompt?: string;
|
|
42
|
+
/** Error message if failed */
|
|
43
|
+
error?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Skill execution event types.
|
|
47
|
+
*/
|
|
48
|
+
export type SkillExecutorEvent = {
|
|
49
|
+
type: 'skill.invoke.start';
|
|
50
|
+
skillName: string;
|
|
51
|
+
args: string[];
|
|
52
|
+
} | {
|
|
53
|
+
type: 'skill.invoke.parsed';
|
|
54
|
+
skillName: string;
|
|
55
|
+
parsed: ParsedArgs;
|
|
56
|
+
} | {
|
|
57
|
+
type: 'skill.invoke.complete';
|
|
58
|
+
skillName: string;
|
|
59
|
+
result: SkillExecutionResult;
|
|
60
|
+
} | {
|
|
61
|
+
type: 'skill.invoke.error';
|
|
62
|
+
skillName: string;
|
|
63
|
+
error: string;
|
|
64
|
+
};
|
|
65
|
+
export type SkillExecutorEventListener = (event: SkillExecutorEvent) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Executes invokable skills with argument parsing and template substitution.
|
|
68
|
+
*/
|
|
69
|
+
export declare class SkillExecutor {
|
|
70
|
+
private skillManager;
|
|
71
|
+
private eventListeners;
|
|
72
|
+
constructor(skillManager: SkillManager);
|
|
73
|
+
/**
|
|
74
|
+
* Check if an input string is a potential skill invocation.
|
|
75
|
+
* Returns the skill name if it matches, null otherwise.
|
|
76
|
+
*/
|
|
77
|
+
isSkillInvocation(input: string): string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Parse command-line style arguments.
|
|
80
|
+
*/
|
|
81
|
+
parseArguments(skill: Skill, rawArgs: string[]): ParsedArgs;
|
|
82
|
+
/**
|
|
83
|
+
* Substitute template variables in skill content.
|
|
84
|
+
* Variables are in the form {{name}} or {{name|default}}.
|
|
85
|
+
*/
|
|
86
|
+
substituteTemplate(content: string, args: ParsedArgs): string;
|
|
87
|
+
/**
|
|
88
|
+
* Execute a skill by name with arguments.
|
|
89
|
+
*/
|
|
90
|
+
executeSkill(skillName: string, rawArgs: string[], ctx: SkillExecutionContext): Promise<SkillExecutionResult>;
|
|
91
|
+
/**
|
|
92
|
+
* Build the prompt to inject based on skill content and arguments.
|
|
93
|
+
*/
|
|
94
|
+
private buildInjectedPrompt;
|
|
95
|
+
/**
|
|
96
|
+
* Format help text for a skill.
|
|
97
|
+
*/
|
|
98
|
+
formatSkillHelp(skill: Skill): string;
|
|
99
|
+
/**
|
|
100
|
+
* Get all invokable skills.
|
|
101
|
+
*/
|
|
102
|
+
getInvokableSkills(): Skill[];
|
|
103
|
+
/**
|
|
104
|
+
* Subscribe to executor events.
|
|
105
|
+
*/
|
|
106
|
+
subscribe(listener: SkillExecutorEventListener): () => void;
|
|
107
|
+
private emit;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Create a skill executor.
|
|
111
|
+
*/
|
|
112
|
+
export declare function createSkillExecutor(skillManager: SkillManager): SkillExecutor;
|
|
113
|
+
//# sourceMappingURL=skill-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-executor.d.ts","sourceRoot":"","sources":["../../../src/integrations/skill-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAMtE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B,mDAAmD;IACnD,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IAEZ,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IAEjB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IAEf,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAM7E;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAA8C;gBAExD,YAAY,EAAE,YAAY;IAItC;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAc/C;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU;IA8F3D;;;OAGG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM;IAY7D;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,oBAAoB,CAAC;IAqEhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAoBrC;;OAEG;IACH,kBAAkB,IAAI,KAAK,EAAE;IAI7B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM,IAAI;IAK3D,OAAO,CAAC,IAAI;CASb;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa,CAE7E"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Executor
|
|
3
|
+
*
|
|
4
|
+
* Handles invocation of skills with argument parsing and template substitution.
|
|
5
|
+
* Skills can be invoked like commands: /review --file src/main.ts --focus security
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// SKILL EXECUTOR
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Executes invokable skills with argument parsing and template substitution.
|
|
12
|
+
*/
|
|
13
|
+
export class SkillExecutor {
|
|
14
|
+
skillManager;
|
|
15
|
+
eventListeners = new Set();
|
|
16
|
+
constructor(skillManager) {
|
|
17
|
+
this.skillManager = skillManager;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if an input string is a potential skill invocation.
|
|
21
|
+
* Returns the skill name if it matches, null otherwise.
|
|
22
|
+
*/
|
|
23
|
+
isSkillInvocation(input) {
|
|
24
|
+
if (!input.startsWith('/'))
|
|
25
|
+
return null;
|
|
26
|
+
const parts = input.split(/\s+/);
|
|
27
|
+
const cmdName = parts[0].slice(1); // Remove leading /
|
|
28
|
+
const skill = this.skillManager.getSkill(cmdName);
|
|
29
|
+
if (skill && skill.invokable) {
|
|
30
|
+
return cmdName;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse command-line style arguments.
|
|
36
|
+
*/
|
|
37
|
+
parseArguments(skill, rawArgs) {
|
|
38
|
+
const result = {
|
|
39
|
+
named: {},
|
|
40
|
+
positional: [],
|
|
41
|
+
errors: [],
|
|
42
|
+
};
|
|
43
|
+
const argDefs = skill.arguments || [];
|
|
44
|
+
// Build alias map
|
|
45
|
+
const aliasMap = new Map();
|
|
46
|
+
for (const arg of argDefs) {
|
|
47
|
+
aliasMap.set(`--${arg.name}`, arg);
|
|
48
|
+
if (arg.aliases) {
|
|
49
|
+
for (const alias of arg.aliases) {
|
|
50
|
+
aliasMap.set(alias, arg);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Parse arguments
|
|
55
|
+
let i = 0;
|
|
56
|
+
while (i < rawArgs.length) {
|
|
57
|
+
const token = rawArgs[i];
|
|
58
|
+
if (token.startsWith('-')) {
|
|
59
|
+
// Check for --flag=value syntax
|
|
60
|
+
const eqIndex = token.indexOf('=');
|
|
61
|
+
let key;
|
|
62
|
+
let value;
|
|
63
|
+
if (eqIndex !== -1) {
|
|
64
|
+
key = token.slice(0, eqIndex);
|
|
65
|
+
value = token.slice(eqIndex + 1);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
key = token;
|
|
69
|
+
}
|
|
70
|
+
const argDef = aliasMap.get(key);
|
|
71
|
+
if (argDef) {
|
|
72
|
+
// Get value
|
|
73
|
+
if (argDef.type === 'boolean') {
|
|
74
|
+
result.named[argDef.name] = value !== undefined ? value === 'true' : true;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (value === undefined) {
|
|
78
|
+
i++;
|
|
79
|
+
if (i < rawArgs.length && !rawArgs[i].startsWith('-')) {
|
|
80
|
+
value = rawArgs[i];
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
result.errors.push(`Missing value for argument: ${key}`);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Type conversion
|
|
88
|
+
if (argDef.type === 'number') {
|
|
89
|
+
const num = parseFloat(value);
|
|
90
|
+
if (isNaN(num)) {
|
|
91
|
+
result.errors.push(`Invalid number for ${argDef.name}: ${value}`);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
result.named[argDef.name] = num;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
result.named[argDef.name] = value;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Unknown argument - treat as positional? Or error?
|
|
104
|
+
result.errors.push(`Unknown argument: ${key}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
result.positional.push(token);
|
|
109
|
+
}
|
|
110
|
+
i++;
|
|
111
|
+
}
|
|
112
|
+
// Apply defaults
|
|
113
|
+
for (const arg of argDefs) {
|
|
114
|
+
if (result.named[arg.name] === undefined && arg.default !== undefined) {
|
|
115
|
+
result.named[arg.name] = arg.default;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Check required arguments
|
|
119
|
+
for (const arg of argDefs) {
|
|
120
|
+
if (arg.required && result.named[arg.name] === undefined) {
|
|
121
|
+
result.errors.push(`Missing required argument: --${arg.name}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Substitute template variables in skill content.
|
|
128
|
+
* Variables are in the form {{name}} or {{name|default}}.
|
|
129
|
+
*/
|
|
130
|
+
substituteTemplate(content, args) {
|
|
131
|
+
return content.replace(/\{\{(\w+)(?:\|([^}]*))?\}\}/g, (match, name, defaultVal) => {
|
|
132
|
+
if (args.named[name] !== undefined) {
|
|
133
|
+
return String(args.named[name]);
|
|
134
|
+
}
|
|
135
|
+
if (defaultVal !== undefined) {
|
|
136
|
+
return defaultVal;
|
|
137
|
+
}
|
|
138
|
+
return match; // Keep original if no value
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Execute a skill by name with arguments.
|
|
143
|
+
*/
|
|
144
|
+
async executeSkill(skillName, rawArgs, ctx) {
|
|
145
|
+
this.emit({ type: 'skill.invoke.start', skillName, args: rawArgs });
|
|
146
|
+
const skill = this.skillManager.getSkill(skillName);
|
|
147
|
+
if (!skill) {
|
|
148
|
+
const error = `Skill not found: ${skillName}`;
|
|
149
|
+
this.emit({ type: 'skill.invoke.error', skillName, error });
|
|
150
|
+
return { success: false, output: '', error };
|
|
151
|
+
}
|
|
152
|
+
if (!skill.invokable) {
|
|
153
|
+
const error = `Skill "${skillName}" is not invokable. It can only be activated passively.`;
|
|
154
|
+
this.emit({ type: 'skill.invoke.error', skillName, error });
|
|
155
|
+
return { success: false, output: '', error };
|
|
156
|
+
}
|
|
157
|
+
// Parse arguments
|
|
158
|
+
const parsed = this.parseArguments(skill, rawArgs);
|
|
159
|
+
this.emit({ type: 'skill.invoke.parsed', skillName, parsed });
|
|
160
|
+
if (parsed.errors.length > 0) {
|
|
161
|
+
const error = `Argument errors:\n${parsed.errors.map(e => ` - ${e}`).join('\n')}\n\n${this.formatSkillHelp(skill)}`;
|
|
162
|
+
this.emit({ type: 'skill.invoke.error', skillName, error });
|
|
163
|
+
return { success: false, output: '', error };
|
|
164
|
+
}
|
|
165
|
+
// Add positional args as a special variable
|
|
166
|
+
if (parsed.positional.length > 0) {
|
|
167
|
+
parsed.named['_positional'] = parsed.positional.join(' ');
|
|
168
|
+
parsed.named['_args'] = parsed.positional;
|
|
169
|
+
}
|
|
170
|
+
// Add context variables
|
|
171
|
+
parsed.named['_cwd'] = ctx.cwd;
|
|
172
|
+
if (ctx.sessionId) {
|
|
173
|
+
parsed.named['_sessionId'] = ctx.sessionId;
|
|
174
|
+
}
|
|
175
|
+
// Substitute template variables in content
|
|
176
|
+
const processedContent = this.substituteTemplate(skill.content, parsed);
|
|
177
|
+
// For prompt-injection mode, create the injected prompt
|
|
178
|
+
if (skill.executionMode === 'prompt-injection' || !skill.executionMode) {
|
|
179
|
+
const injectedPrompt = this.buildInjectedPrompt(skill, processedContent, parsed);
|
|
180
|
+
const result = {
|
|
181
|
+
success: true,
|
|
182
|
+
output: `Skill "${skillName}" activated with injected prompt.`,
|
|
183
|
+
injectedPrompt,
|
|
184
|
+
};
|
|
185
|
+
this.emit({ type: 'skill.invoke.complete', skillName, result });
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
// Workflow mode would require running multiple steps
|
|
189
|
+
// For now, treat it like prompt-injection
|
|
190
|
+
const injectedPrompt = this.buildInjectedPrompt(skill, processedContent, parsed);
|
|
191
|
+
const result = {
|
|
192
|
+
success: true,
|
|
193
|
+
output: `Skill "${skillName}" activated in workflow mode.`,
|
|
194
|
+
injectedPrompt,
|
|
195
|
+
};
|
|
196
|
+
this.emit({ type: 'skill.invoke.complete', skillName, result });
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Build the prompt to inject based on skill content and arguments.
|
|
201
|
+
*/
|
|
202
|
+
buildInjectedPrompt(skill, content, args) {
|
|
203
|
+
const parts = [];
|
|
204
|
+
parts.push(`<skill name="${skill.name}">`);
|
|
205
|
+
parts.push(content);
|
|
206
|
+
// Add argument context if any were provided
|
|
207
|
+
const namedArgs = Object.entries(args.named)
|
|
208
|
+
.filter(([k]) => !k.startsWith('_'))
|
|
209
|
+
.map(([k, v]) => ` ${k}: ${JSON.stringify(v)}`)
|
|
210
|
+
.join('\n');
|
|
211
|
+
if (namedArgs) {
|
|
212
|
+
parts.push(`\n<arguments>\n${namedArgs}\n</arguments>`);
|
|
213
|
+
}
|
|
214
|
+
parts.push('</skill>');
|
|
215
|
+
return parts.join('\n');
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Format help text for a skill.
|
|
219
|
+
*/
|
|
220
|
+
formatSkillHelp(skill) {
|
|
221
|
+
const lines = [
|
|
222
|
+
`Usage: /${skill.name} [options]`,
|
|
223
|
+
'',
|
|
224
|
+
skill.description,
|
|
225
|
+
];
|
|
226
|
+
if (skill.arguments && skill.arguments.length > 0) {
|
|
227
|
+
lines.push('', 'Options:');
|
|
228
|
+
for (const arg of skill.arguments) {
|
|
229
|
+
const aliases = arg.aliases ? arg.aliases.join(', ') + ', ' : '';
|
|
230
|
+
const required = arg.required ? ' (required)' : '';
|
|
231
|
+
const defaultVal = arg.default !== undefined ? ` [default: ${arg.default}]` : '';
|
|
232
|
+
lines.push(` ${aliases}--${arg.name} ${arg.description}${required}${defaultVal}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return lines.join('\n');
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get all invokable skills.
|
|
239
|
+
*/
|
|
240
|
+
getInvokableSkills() {
|
|
241
|
+
return this.skillManager.getAllSkills().filter(s => s.invokable);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Subscribe to executor events.
|
|
245
|
+
*/
|
|
246
|
+
subscribe(listener) {
|
|
247
|
+
this.eventListeners.add(listener);
|
|
248
|
+
return () => this.eventListeners.delete(listener);
|
|
249
|
+
}
|
|
250
|
+
emit(event) {
|
|
251
|
+
for (const listener of this.eventListeners) {
|
|
252
|
+
try {
|
|
253
|
+
listener(event);
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
// Ignore listener errors
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// =============================================================================
|
|
262
|
+
// FACTORY FUNCTIONS
|
|
263
|
+
// =============================================================================
|
|
264
|
+
/**
|
|
265
|
+
* Create a skill executor.
|
|
266
|
+
*/
|
|
267
|
+
export function createSkillExecutor(skillManager) {
|
|
268
|
+
return new SkillExecutor(skillManager);
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=skill-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-executor.js","sourceRoot":"","sources":["../../../src/integrations/skill-executor.ts"],"names":[],"mappings":"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"}
|