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.
Files changed (103) hide show
  1. package/CHANGELOG.md +64 -1
  2. package/README.md +138 -10
  3. package/dist/src/agent.d.ts +75 -1
  4. package/dist/src/agent.d.ts.map +1 -1
  5. package/dist/src/agent.js +700 -25
  6. package/dist/src/agent.js.map +1 -1
  7. package/dist/src/commands/agents-commands.d.ts +24 -0
  8. package/dist/src/commands/agents-commands.d.ts.map +1 -0
  9. package/dist/src/commands/agents-commands.js +284 -0
  10. package/dist/src/commands/agents-commands.js.map +1 -0
  11. package/dist/src/commands/handler.d.ts.map +1 -1
  12. package/dist/src/commands/handler.js +135 -19
  13. package/dist/src/commands/handler.js.map +1 -1
  14. package/dist/src/commands/init-commands.d.ts +35 -0
  15. package/dist/src/commands/init-commands.d.ts.map +1 -0
  16. package/dist/src/commands/init-commands.js +187 -0
  17. package/dist/src/commands/init-commands.js.map +1 -0
  18. package/dist/src/commands/skills-commands.d.ts +26 -0
  19. package/dist/src/commands/skills-commands.d.ts.map +1 -0
  20. package/dist/src/commands/skills-commands.js +309 -0
  21. package/dist/src/commands/skills-commands.js.map +1 -0
  22. package/dist/src/commands/types.d.ts +13 -2
  23. package/dist/src/commands/types.d.ts.map +1 -1
  24. package/dist/src/defaults.d.ts +29 -1
  25. package/dist/src/defaults.d.ts.map +1 -1
  26. package/dist/src/defaults.js +66 -0
  27. package/dist/src/defaults.js.map +1 -1
  28. package/dist/src/integrations/agent-registry.d.ts +68 -2
  29. package/dist/src/integrations/agent-registry.d.ts.map +1 -1
  30. package/dist/src/integrations/agent-registry.js +230 -23
  31. package/dist/src/integrations/agent-registry.js.map +1 -1
  32. package/dist/src/integrations/cancellation.d.ts +5 -0
  33. package/dist/src/integrations/cancellation.d.ts.map +1 -1
  34. package/dist/src/integrations/cancellation.js +7 -0
  35. package/dist/src/integrations/cancellation.js.map +1 -1
  36. package/dist/src/integrations/capabilities.d.ts +160 -0
  37. package/dist/src/integrations/capabilities.d.ts.map +1 -0
  38. package/dist/src/integrations/capabilities.js +426 -0
  39. package/dist/src/integrations/capabilities.js.map +1 -0
  40. package/dist/src/integrations/context-engineering.d.ts +6 -1
  41. package/dist/src/integrations/context-engineering.d.ts.map +1 -1
  42. package/dist/src/integrations/context-engineering.js +7 -0
  43. package/dist/src/integrations/context-engineering.js.map +1 -1
  44. package/dist/src/integrations/index.d.ts +12 -2
  45. package/dist/src/integrations/index.d.ts.map +1 -1
  46. package/dist/src/integrations/index.js +22 -2
  47. package/dist/src/integrations/index.js.map +1 -1
  48. package/dist/src/integrations/interactive-planning.d.ts +322 -0
  49. package/dist/src/integrations/interactive-planning.d.ts.map +1 -0
  50. package/dist/src/integrations/interactive-planning.js +655 -0
  51. package/dist/src/integrations/interactive-planning.js.map +1 -0
  52. package/dist/src/integrations/learning-store.d.ts +291 -0
  53. package/dist/src/integrations/learning-store.d.ts.map +1 -0
  54. package/dist/src/integrations/learning-store.js +640 -0
  55. package/dist/src/integrations/learning-store.js.map +1 -0
  56. package/dist/src/integrations/pending-plan.d.ts.map +1 -1
  57. package/dist/src/integrations/pending-plan.js +69 -10
  58. package/dist/src/integrations/pending-plan.js.map +1 -1
  59. package/dist/src/integrations/skill-executor.d.ts +113 -0
  60. package/dist/src/integrations/skill-executor.d.ts.map +1 -0
  61. package/dist/src/integrations/skill-executor.js +270 -0
  62. package/dist/src/integrations/skill-executor.js.map +1 -0
  63. package/dist/src/integrations/skills.d.ts +98 -7
  64. package/dist/src/integrations/skills.d.ts.map +1 -1
  65. package/dist/src/integrations/skills.js +210 -11
  66. package/dist/src/integrations/skills.js.map +1 -1
  67. package/dist/src/providers/circuit-breaker.d.ts +180 -0
  68. package/dist/src/providers/circuit-breaker.d.ts.map +1 -0
  69. package/dist/src/providers/circuit-breaker.js +349 -0
  70. package/dist/src/providers/circuit-breaker.js.map +1 -0
  71. package/dist/src/providers/fallback-chain.d.ts +194 -0
  72. package/dist/src/providers/fallback-chain.d.ts.map +1 -0
  73. package/dist/src/providers/fallback-chain.js +363 -0
  74. package/dist/src/providers/fallback-chain.js.map +1 -0
  75. package/dist/src/providers/llm-resilience.d.ts +126 -0
  76. package/dist/src/providers/llm-resilience.d.ts.map +1 -0
  77. package/dist/src/providers/llm-resilience.js +261 -0
  78. package/dist/src/providers/llm-resilience.js.map +1 -0
  79. package/dist/src/providers/resilient-provider.d.ts +124 -0
  80. package/dist/src/providers/resilient-provider.d.ts.map +1 -0
  81. package/dist/src/providers/resilient-provider.js +242 -0
  82. package/dist/src/providers/resilient-provider.js.map +1 -0
  83. package/dist/src/tricks/recursive-context.d.ts +296 -0
  84. package/dist/src/tricks/recursive-context.d.ts.map +1 -0
  85. package/dist/src/tricks/recursive-context.js +518 -0
  86. package/dist/src/tricks/recursive-context.js.map +1 -0
  87. package/dist/src/tui/app.d.ts.map +1 -1
  88. package/dist/src/tui/app.js +226 -29
  89. package/dist/src/tui/app.js.map +1 -1
  90. package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -1
  91. package/dist/src/tui/components/ApprovalDialog.js +1 -1
  92. package/dist/src/tui/components/ApprovalDialog.js.map +1 -1
  93. package/dist/src/tui/index.d.ts +1 -0
  94. package/dist/src/tui/index.d.ts.map +1 -1
  95. package/dist/src/tui/index.js +2 -0
  96. package/dist/src/tui/index.js.map +1 -1
  97. package/dist/src/tui/transparency-aggregator.d.ts +100 -0
  98. package/dist/src/tui/transparency-aggregator.d.ts.map +1 -0
  99. package/dist/src/tui/transparency-aggregator.js +234 -0
  100. package/dist/src/tui/transparency-aggregator.js.map +1 -0
  101. package/dist/src/types.d.ts +155 -0
  102. package/dist/src/types.d.ts.map +1 -1
  103. 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
- `Plan: "${this.currentPlan.task}"`,
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
- lines.push(`Proposed Changes (${this.currentPlan.proposedChanges.length}):`);
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
- lines.push(`${change.order}. [${change.tool}]`);
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(` File: ${path}`);
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, 60);
194
- lines.push(` Command: ${cmd}${cmd.length >= 60 ? '...' : ''}`);
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
- lines.push(` Args: ${JSON.stringify(change.args).slice(0, 80)}...`);
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAyFH,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,WAAW,GAAuB,IAAI,CAAC;IACvC,aAAa,GAAG,CAAC,CAAC;IAClB,cAAc,GAAkC,IAAI,GAAG,EAAE,CAAC;IAElE;;;OAGG;IACH,SAAS,CAAC,IAAY,EAAE,SAAkB;QACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAgB;YACxB,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAClE,IAAI;YACJ,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,eAAe,EAAE,EAAE;YACnB,kBAAkB,EAAE,EAAE;YACtB,MAAM,EAAE,SAAS;YACjB,SAAS;SACV,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,iBAAiB,CACf,IAAY,EACZ,IAA6B,EAC7B,MAAc,EACd,UAAmB;QAEnB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAmB;YAC7B,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAClD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,UAAU;SACX,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,OAAe;QACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,OAAO,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAc;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;QACpD,MAAM,eAAe,GAAG,KAAK,KAAK,SAAS;YACzC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC5B,CAAC,CAAC,UAAU,CAAC;QACf,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAEhE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/E,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YAC3B,WAAW,EAAE,eAAe,CAAC,MAAM;SACpC,CAAC,CAAC;QAEH,gCAAgC;QAChC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAiB;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,sBAAsB;YACtB,EAAE;YACF,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG;YAClC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACpC,YAAY,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;YACxC,EAAE;SACH,CAAC;QAEF,wCAAwC;QACxC,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,8FAA8F;YAC9F,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;YACtE,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;YAE5F,IAAI,aAAa,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChF,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;gBACtD,4BAA4B;gBAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;oBACvD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;oBACxD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAClC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,YAAY,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7E,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACzC,8DAA8D;oBAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;oBACtE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;oBAElE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,SAAS,GAAG,CAAC,CAAC;oBAE9C,0DAA0D;oBAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACzD,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBAC1B,2BAA2B;wBAC3B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;4BACjC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,uDAAuD;wBACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;4BACvD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;4BACjC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gCACtB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;4BAC3C,CAAC;iCAAM,CAAC;gCACN,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;4BAC3B,CAAC;wBACH,CAAC;wBACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzB,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC;wBAC5D,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,eAAe;oBACf,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;oBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBACzB,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;oBACpC,CAAC;oBACD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAEtD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAkC;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,WAAW;IAEH,IAAI,CAAC,KAAuB;QAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAwB;IACvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IAC1C,OAAO,GAAG,KAAK,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAC5D,CAAC"}
@@ -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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"}