@defai.digital/cli 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/LICENSE +214 -0
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +11 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/bootstrap.d.ts +144 -0
  7. package/dist/bootstrap.d.ts.map +1 -0
  8. package/dist/bootstrap.js +315 -0
  9. package/dist/bootstrap.js.map +1 -0
  10. package/dist/cli.d.ts +14 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +84 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/ability.d.ts +17 -0
  15. package/dist/commands/ability.d.ts.map +1 -0
  16. package/dist/commands/ability.js +286 -0
  17. package/dist/commands/ability.js.map +1 -0
  18. package/dist/commands/agent.d.ts +18 -0
  19. package/dist/commands/agent.d.ts.map +1 -0
  20. package/dist/commands/agent.js +361 -0
  21. package/dist/commands/agent.js.map +1 -0
  22. package/dist/commands/call.d.ts +15 -0
  23. package/dist/commands/call.d.ts.map +1 -0
  24. package/dist/commands/call.js +503 -0
  25. package/dist/commands/call.js.map +1 -0
  26. package/dist/commands/cleanup.d.ts +18 -0
  27. package/dist/commands/cleanup.d.ts.map +1 -0
  28. package/dist/commands/cleanup.js +300 -0
  29. package/dist/commands/cleanup.js.map +1 -0
  30. package/dist/commands/config.d.ts +16 -0
  31. package/dist/commands/config.d.ts.map +1 -0
  32. package/dist/commands/config.js +513 -0
  33. package/dist/commands/config.js.map +1 -0
  34. package/dist/commands/discuss.d.ts +16 -0
  35. package/dist/commands/discuss.d.ts.map +1 -0
  36. package/dist/commands/discuss.js +700 -0
  37. package/dist/commands/discuss.js.map +1 -0
  38. package/dist/commands/doctor.d.ts +48 -0
  39. package/dist/commands/doctor.d.ts.map +1 -0
  40. package/dist/commands/doctor.js +356 -0
  41. package/dist/commands/doctor.js.map +1 -0
  42. package/dist/commands/guard.d.ts +12 -0
  43. package/dist/commands/guard.d.ts.map +1 -0
  44. package/dist/commands/guard.js +225 -0
  45. package/dist/commands/guard.js.map +1 -0
  46. package/dist/commands/help.d.ts +11 -0
  47. package/dist/commands/help.d.ts.map +1 -0
  48. package/dist/commands/help.js +180 -0
  49. package/dist/commands/help.js.map +1 -0
  50. package/dist/commands/history.d.ts +19 -0
  51. package/dist/commands/history.d.ts.map +1 -0
  52. package/dist/commands/history.js +200 -0
  53. package/dist/commands/history.js.map +1 -0
  54. package/dist/commands/index.d.ts +23 -0
  55. package/dist/commands/index.d.ts.map +1 -0
  56. package/dist/commands/index.js +26 -0
  57. package/dist/commands/index.js.map +1 -0
  58. package/dist/commands/iterate.d.ts +16 -0
  59. package/dist/commands/iterate.d.ts.map +1 -0
  60. package/dist/commands/iterate.js +72 -0
  61. package/dist/commands/iterate.js.map +1 -0
  62. package/dist/commands/list.d.ts +6 -0
  63. package/dist/commands/list.d.ts.map +1 -0
  64. package/dist/commands/list.js +62 -0
  65. package/dist/commands/list.js.map +1 -0
  66. package/dist/commands/mcp.d.ts +16 -0
  67. package/dist/commands/mcp.d.ts.map +1 -0
  68. package/dist/commands/mcp.js +57 -0
  69. package/dist/commands/mcp.js.map +1 -0
  70. package/dist/commands/resume.d.ts +18 -0
  71. package/dist/commands/resume.d.ts.map +1 -0
  72. package/dist/commands/resume.js +208 -0
  73. package/dist/commands/resume.js.map +1 -0
  74. package/dist/commands/review.d.ts +13 -0
  75. package/dist/commands/review.d.ts.map +1 -0
  76. package/dist/commands/review.js +450 -0
  77. package/dist/commands/review.js.map +1 -0
  78. package/dist/commands/run.d.ts +6 -0
  79. package/dist/commands/run.d.ts.map +1 -0
  80. package/dist/commands/run.js +158 -0
  81. package/dist/commands/run.js.map +1 -0
  82. package/dist/commands/scaffold.d.ts +20 -0
  83. package/dist/commands/scaffold.d.ts.map +1 -0
  84. package/dist/commands/scaffold.js +924 -0
  85. package/dist/commands/scaffold.js.map +1 -0
  86. package/dist/commands/session.d.ts +20 -0
  87. package/dist/commands/session.d.ts.map +1 -0
  88. package/dist/commands/session.js +504 -0
  89. package/dist/commands/session.js.map +1 -0
  90. package/dist/commands/setup.d.ts +14 -0
  91. package/dist/commands/setup.d.ts.map +1 -0
  92. package/dist/commands/setup.js +762 -0
  93. package/dist/commands/setup.js.map +1 -0
  94. package/dist/commands/status.d.ts +17 -0
  95. package/dist/commands/status.d.ts.map +1 -0
  96. package/dist/commands/status.js +227 -0
  97. package/dist/commands/status.js.map +1 -0
  98. package/dist/commands/trace.d.ts +6 -0
  99. package/dist/commands/trace.d.ts.map +1 -0
  100. package/dist/commands/trace.js +204 -0
  101. package/dist/commands/trace.js.map +1 -0
  102. package/dist/commands/update.d.ts +24 -0
  103. package/dist/commands/update.d.ts.map +1 -0
  104. package/dist/commands/update.js +296 -0
  105. package/dist/commands/update.js.map +1 -0
  106. package/dist/index.d.ts +8 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +13 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/parser.d.ts +14 -0
  111. package/dist/parser.d.ts.map +1 -0
  112. package/dist/parser.js +288 -0
  113. package/dist/parser.js.map +1 -0
  114. package/dist/types.d.ts +91 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +29 -0
  117. package/dist/types.js.map +1 -0
  118. package/dist/utils/dangerous-op-guard.d.ts +33 -0
  119. package/dist/utils/dangerous-op-guard.d.ts.map +1 -0
  120. package/dist/utils/dangerous-op-guard.js +112 -0
  121. package/dist/utils/dangerous-op-guard.js.map +1 -0
  122. package/dist/utils/database.d.ts +85 -0
  123. package/dist/utils/database.d.ts.map +1 -0
  124. package/dist/utils/database.js +184 -0
  125. package/dist/utils/database.js.map +1 -0
  126. package/dist/utils/index.d.ts +7 -0
  127. package/dist/utils/index.d.ts.map +1 -0
  128. package/dist/utils/index.js +7 -0
  129. package/dist/utils/index.js.map +1 -0
  130. package/dist/utils/provider-factory.d.ts +31 -0
  131. package/dist/utils/provider-factory.d.ts.map +1 -0
  132. package/dist/utils/provider-factory.js +109 -0
  133. package/dist/utils/provider-factory.js.map +1 -0
  134. package/dist/utils/storage-instances.d.ts +19 -0
  135. package/dist/utils/storage-instances.d.ts.map +1 -0
  136. package/dist/utils/storage-instances.js +20 -0
  137. package/dist/utils/storage-instances.js.map +1 -0
  138. package/package.json +77 -0
@@ -0,0 +1,315 @@
1
+ /**
2
+ * CLI Composition Root (Bootstrap Module)
3
+ *
4
+ * This is the ONLY place in CLI that imports adapter implementations.
5
+ * All other CLI code depends on port interfaces from contracts.
6
+ *
7
+ * Following Ports & Adapters (Hexagonal Architecture) pattern.
8
+ *
9
+ * Storage Mode (AX_STORAGE environment variable):
10
+ * - 'sqlite' (default): Persistent storage using SQLite at ~/.automatosx/data.db
11
+ * - 'memory': In-memory storage (data lost between invocations)
12
+ */
13
+ // ============================================================================
14
+ // Adapter Imports - ONLY allowed in this file
15
+ // ============================================================================
16
+ // Provider adapter imports
17
+ import { createProviderRegistry, createCLIAdapter, claudeConfig, geminiConfig, codexConfig, qwenConfig, glmConfig, grokConfig, } from '@defai.digital/provider-adapters';
18
+ // Storage adapter imports (dynamic to avoid hard dependency)
19
+ // SQLite adapters imported dynamically in initializeStorage()
20
+ // In-memory storage imports (from core domains - allowed)
21
+ import { createInMemoryCheckpointStorage, } from '@defai.digital/agent-execution';
22
+ import { createInMemoryTraceStore, } from '@defai.digital/trace-domain';
23
+ import { createDeadLetterQueue, createInMemoryDeadLetterStorage, } from '@defai.digital/cross-cutting';
24
+ // Step executor imports (for workflow execution)
25
+ import { createRealStepExecutor, } from '@defai.digital/workflow-engine';
26
+ import { createProviderPromptExecutor, } from '@defai.digital/agent-domain';
27
+ import { createProviderBridge, createDiscussionExecutor, } from '@defai.digital/discussion-domain';
28
+ // Database utilities
29
+ import { getDatabase, getDatabaseConfig } from './utils/database.js';
30
+ // ============================================================================
31
+ // Provider Configurations
32
+ // ============================================================================
33
+ /**
34
+ * Provider configurations - centralized here
35
+ */
36
+ export const PROVIDER_CONFIGS = {
37
+ claude: claudeConfig,
38
+ gemini: geminiConfig,
39
+ codex: codexConfig,
40
+ qwen: qwenConfig,
41
+ glm: glmConfig,
42
+ grok: grokConfig,
43
+ };
44
+ let _dependencies = null;
45
+ let _initialized = false;
46
+ // ============================================================================
47
+ // Bootstrap Function
48
+ // ============================================================================
49
+ /**
50
+ * Initialize all CLI dependencies
51
+ *
52
+ * Called once at application startup. Wires adapters to ports.
53
+ * This is the composition root - the only place that knows about concrete implementations.
54
+ */
55
+ export async function bootstrap() {
56
+ if (_initialized && _dependencies) {
57
+ return _dependencies;
58
+ }
59
+ // Initialize storage
60
+ const storage = await initializeStorage();
61
+ // Create provider registry
62
+ const providerRegistry = createProviderRegistry();
63
+ // Build dependency container
64
+ _dependencies = {
65
+ checkpointStorage: storage.checkpointStorage,
66
+ traceStore: storage.traceStore,
67
+ dlq: storage.dlq,
68
+ providerRegistry,
69
+ usingSqlite: storage.usingSqlite,
70
+ };
71
+ _initialized = true;
72
+ return _dependencies;
73
+ }
74
+ /**
75
+ * Synchronous bootstrap with in-memory storage only
76
+ * Used when async initialization is not possible
77
+ */
78
+ export function bootstrapSync() {
79
+ if (_initialized && _dependencies) {
80
+ return _dependencies;
81
+ }
82
+ // Create in-memory storage
83
+ const checkpointStorage = createInMemoryCheckpointStorage();
84
+ const traceStore = createInMemoryTraceStore();
85
+ const dlq = createDeadLetterQueue(createInMemoryDeadLetterStorage());
86
+ // Create provider registry
87
+ const providerRegistry = createProviderRegistry();
88
+ _dependencies = {
89
+ checkpointStorage,
90
+ traceStore,
91
+ dlq,
92
+ providerRegistry,
93
+ usingSqlite: false,
94
+ };
95
+ _initialized = true;
96
+ return _dependencies;
97
+ }
98
+ /**
99
+ * Initialize storage with SQLite if available
100
+ */
101
+ async function initializeStorage() {
102
+ const config = await getDatabaseConfig();
103
+ const db = await getDatabase();
104
+ if (db && config.storageMode === 'sqlite') {
105
+ try {
106
+ // Dynamic import of SQLite stores
107
+ const sqliteModule = await import('@defai.digital/sqlite-adapter');
108
+ // Create SQLite-backed stores
109
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
+ const sqliteDb = db;
111
+ const checkpointStorage = sqliteModule.createSqliteCheckpointStorage(sqliteDb);
112
+ const traceStore = sqliteModule.createSqliteTraceStore(sqliteDb);
113
+ const dlqStorage = sqliteModule.createSqliteDeadLetterStorage(sqliteDb);
114
+ const dlq = createDeadLetterQueue(dlqStorage);
115
+ return {
116
+ checkpointStorage,
117
+ traceStore,
118
+ dlq,
119
+ usingSqlite: true,
120
+ };
121
+ }
122
+ catch (error) {
123
+ // SQLite stores not available, fall back to in-memory
124
+ console.warn(`[WARN] Failed to initialize SQLite storage: ${error instanceof Error ? error.message : 'Unknown error'}. ` +
125
+ 'Using in-memory storage.');
126
+ }
127
+ }
128
+ // Fall back to in-memory storage
129
+ return {
130
+ checkpointStorage: createInMemoryCheckpointStorage(),
131
+ traceStore: createInMemoryTraceStore(),
132
+ dlq: createDeadLetterQueue(createInMemoryDeadLetterStorage()),
133
+ usingSqlite: false,
134
+ };
135
+ }
136
+ // ============================================================================
137
+ // Dependency Accessors
138
+ // ============================================================================
139
+ /**
140
+ * Get initialized dependencies
141
+ * Throws if bootstrap() not called
142
+ */
143
+ export function getDependencies() {
144
+ if (!_dependencies) {
145
+ // Auto-bootstrap with sync method if not initialized
146
+ return bootstrapSync();
147
+ }
148
+ return _dependencies;
149
+ }
150
+ /**
151
+ * Check if bootstrap has been called
152
+ */
153
+ export function isBootstrapped() {
154
+ return _initialized;
155
+ }
156
+ /**
157
+ * Get checkpoint storage
158
+ */
159
+ export function getCheckpointStorage() {
160
+ return getDependencies().checkpointStorage;
161
+ }
162
+ /**
163
+ * Get trace store
164
+ */
165
+ export function getTraceStore() {
166
+ return getDependencies().traceStore;
167
+ }
168
+ /**
169
+ * Get dead letter queue
170
+ */
171
+ export function getDLQ() {
172
+ return getDependencies().dlq;
173
+ }
174
+ /**
175
+ * Get provider registry
176
+ */
177
+ export function getProviderRegistry() {
178
+ return getDependencies().providerRegistry;
179
+ }
180
+ /**
181
+ * Check if using SQLite storage
182
+ */
183
+ export function isUsingSqlite() {
184
+ return getDependencies().usingSqlite;
185
+ }
186
+ // ============================================================================
187
+ // Provider Helpers
188
+ // ============================================================================
189
+ /**
190
+ * Create a CLI adapter for a provider
191
+ * This wraps the adapter creation to keep adapter imports centralized
192
+ */
193
+ export function createProvider(config) {
194
+ return createCLIAdapter(config);
195
+ }
196
+ /**
197
+ * Get provider configuration by ID
198
+ */
199
+ export function getProviderConfig(providerId) {
200
+ return PROVIDER_CONFIGS[providerId];
201
+ }
202
+ /**
203
+ * Get all provider IDs
204
+ */
205
+ export function getProviderIds() {
206
+ return Object.keys(PROVIDER_CONFIGS);
207
+ }
208
+ // ============================================================================
209
+ // Storage Info
210
+ // ============================================================================
211
+ /**
212
+ * Get storage info for diagnostics
213
+ */
214
+ export async function getStorageInfo() {
215
+ const config = await getDatabaseConfig();
216
+ const deps = getDependencies();
217
+ const result = {
218
+ mode: deps.usingSqlite ? 'sqlite' : 'memory',
219
+ initialized: _initialized,
220
+ };
221
+ if (deps.usingSqlite) {
222
+ result.path = config.path;
223
+ }
224
+ return result;
225
+ }
226
+ // ============================================================================
227
+ // Reset (for testing)
228
+ // ============================================================================
229
+ /**
230
+ * Reset all dependencies (for testing)
231
+ */
232
+ export function resetBootstrap() {
233
+ _dependencies = null;
234
+ _initialized = false;
235
+ }
236
+ // Cached step executor instance
237
+ let _stepExecutor = null;
238
+ /**
239
+ * Creates a production step executor for workflow execution
240
+ *
241
+ * This wires together:
242
+ * - ProviderPromptExecutor: For prompt steps (real LLM calls)
243
+ * - DiscussionExecutor: For discuss steps (multi-model discussions)
244
+ *
245
+ * Following hexagonal architecture, this is the only place that
246
+ * connects the workflow engine to concrete provider implementations.
247
+ *
248
+ * NOTE: This uses type assertions at boundaries because the workflow-engine's
249
+ * "Like" interfaces don't exactly match the concrete implementations from
250
+ * agent-domain and discussion-domain due to exactOptionalPropertyTypes.
251
+ * The runtime behavior is correct; this is a TypeScript-only issue.
252
+ *
253
+ * @param options - Configuration options
254
+ * @returns A StepExecutor that executes real LLM calls
255
+ */
256
+ export function createProductionStepExecutor(options = {}) {
257
+ // Return cached executor if available
258
+ if (_stepExecutor !== null) {
259
+ return _stepExecutor;
260
+ }
261
+ const { defaultProvider = 'claude', defaultTimeout = 120000, checkProviderHealth = false, } = options;
262
+ // Get the provider registry
263
+ const registry = getProviderRegistry();
264
+ // Create prompt executor config
265
+ const promptConfig = {
266
+ defaultProvider,
267
+ defaultTimeout,
268
+ };
269
+ // Create prompt executor (for prompt steps)
270
+ // Type assertion needed due to exactOptionalPropertyTypes differences
271
+ const promptExecutor = createProviderPromptExecutor(registry, promptConfig);
272
+ // Create provider bridge for discussion executor
273
+ // The registry needs type adaptation for the bridge interface
274
+ const registryForBridge = {
275
+ get: (id) => registry.get(id),
276
+ getAll: () => registry.getProviderIds()
277
+ .map(id => registry.get(id))
278
+ .filter((p) => p !== undefined),
279
+ has: (id) => registry.get(id) !== undefined,
280
+ };
281
+ const providerBridge = createProviderBridge(registryForBridge, {
282
+ defaultTimeoutMs: defaultTimeout,
283
+ performHealthChecks: checkProviderHealth,
284
+ healthCheckCacheMs: 60000,
285
+ });
286
+ // Create discussion executor (for discuss steps)
287
+ // Type assertion needed due to interface differences in result types
288
+ const discussionExecutor = createDiscussionExecutor(providerBridge, {
289
+ defaultTimeoutMs: defaultTimeout,
290
+ checkProviderHealth,
291
+ });
292
+ // Create real step executor with wired dependencies
293
+ _stepExecutor = createRealStepExecutor({
294
+ promptExecutor,
295
+ discussionExecutor,
296
+ defaultProvider,
297
+ });
298
+ return _stepExecutor;
299
+ }
300
+ /**
301
+ * Get the cached step executor or create a new one
302
+ */
303
+ export function getStepExecutor(options) {
304
+ if (_stepExecutor === null) {
305
+ return createProductionStepExecutor(options);
306
+ }
307
+ return _stepExecutor;
308
+ }
309
+ /**
310
+ * Reset the step executor (for testing)
311
+ */
312
+ export function resetStepExecutor() {
313
+ _stepExecutor = null;
314
+ }
315
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { parseArgs, formatOutput } from './parser.js';
2
+ /**
3
+ * Main CLI entry point
4
+ */
5
+ export declare function run(argv: string[]): Promise<number>;
6
+ /**
7
+ * Creates a CLI instance for testing
8
+ */
9
+ export declare function createCLI(): {
10
+ run: (argv: string[]) => Promise<number>;
11
+ parseArgs: typeof parseArgs;
12
+ formatOutput: typeof formatOutput;
13
+ };
14
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA+DtD;;GAEG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoCzD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI;IAC3B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;CACnC,CAMA"}
package/dist/cli.js ADDED
@@ -0,0 +1,84 @@
1
+ import { parseArgs, formatOutput } from './parser.js';
2
+ import { runCommand, listCommand, traceCommand, doctorCommand, guardCommand, callCommand, agentCommand, abilityCommand, sessionCommand, setupCommand, configCommand, reviewCommand, scaffoldCommand, discussCommand, helpCommand, versionCommand,
3
+ // High-value additions
4
+ resumeCommand, historyCommand, statusCommand, cleanupCommand, iterateCommand,
5
+ // MCP server
6
+ mcpCommand,
7
+ // Update
8
+ updateCommand, } from './commands/index.js';
9
+ /**
10
+ * Command registry
11
+ */
12
+ const COMMANDS = {
13
+ run: runCommand,
14
+ list: listCommand,
15
+ trace: traceCommand,
16
+ doctor: doctorCommand,
17
+ guard: guardCommand,
18
+ call: callCommand,
19
+ agent: agentCommand,
20
+ ability: abilityCommand,
21
+ session: sessionCommand,
22
+ setup: setupCommand,
23
+ config: configCommand,
24
+ review: reviewCommand,
25
+ scaffold: scaffoldCommand,
26
+ discuss: discussCommand,
27
+ help: helpCommand,
28
+ version: versionCommand,
29
+ // High-value additions
30
+ resume: resumeCommand,
31
+ history: historyCommand,
32
+ status: statusCommand,
33
+ cleanup: cleanupCommand,
34
+ iterate: iterateCommand,
35
+ // MCP server
36
+ mcp: mcpCommand,
37
+ // Update
38
+ update: updateCommand,
39
+ };
40
+ /**
41
+ * Main CLI entry point
42
+ */
43
+ export async function run(argv) {
44
+ const parsed = parseArgs(argv);
45
+ // Get command handler
46
+ const handler = COMMANDS[parsed.command];
47
+ if (handler === undefined) {
48
+ console.error(`Unknown command: ${parsed.command}`);
49
+ console.error('Run "ax help" for usage information.');
50
+ return 1;
51
+ }
52
+ try {
53
+ const result = await handler(parsed.args, parsed.options);
54
+ // Output result
55
+ if (result.message !== undefined) {
56
+ if (result.success) {
57
+ console.log(result.message);
58
+ }
59
+ else {
60
+ console.error(result.message);
61
+ }
62
+ }
63
+ // Output data if JSON format
64
+ if (parsed.options.format === 'json' && result.data !== undefined) {
65
+ console.log(formatOutput(result.data, 'json'));
66
+ }
67
+ return result.exitCode;
68
+ }
69
+ catch (error) {
70
+ console.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
71
+ return 1;
72
+ }
73
+ }
74
+ /**
75
+ * Creates a CLI instance for testing
76
+ */
77
+ export function createCLI() {
78
+ return {
79
+ run,
80
+ parseArgs,
81
+ formatOutput,
82
+ };
83
+ }
84
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Ability Command
3
+ *
4
+ * CLI command for managing abilities - reusable knowledge modules for agents.
5
+ */
6
+ import type { CommandResult, CLIOptions } from '../types.js';
7
+ /**
8
+ * Handles the 'ability' command - manage abilities
9
+ *
10
+ * Subcommands:
11
+ * ability list - List all abilities
12
+ * ability get <id> - Get ability details
13
+ * ability inject - Preview ability injection for an agent/task
14
+ * ability load <dir> - Load abilities from a directory
15
+ */
16
+ export declare function abilityCommand(args: string[], options: CLIOptions): Promise<CommandResult>;
17
+ //# sourceMappingURL=ability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../src/commands/ability.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmC7D;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,CAAC,CA0BxB"}