@ace-sdk/cli 2.0.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 (150) hide show
  1. package/README.md +61 -0
  2. package/dist/cli.d.ts +14 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +427 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/bootstrap.d.ts +19 -0
  7. package/dist/commands/bootstrap.d.ts.map +1 -0
  8. package/dist/commands/bootstrap.js +157 -0
  9. package/dist/commands/bootstrap.js.map +1 -0
  10. package/dist/commands/cache.d.ts +19 -0
  11. package/dist/commands/cache.d.ts.map +1 -0
  12. package/dist/commands/cache.js +101 -0
  13. package/dist/commands/cache.js.map +1 -0
  14. package/dist/commands/clear.d.ts +12 -0
  15. package/dist/commands/clear.d.ts.map +1 -0
  16. package/dist/commands/clear.js +50 -0
  17. package/dist/commands/clear.js.map +1 -0
  18. package/dist/commands/config.d.ts +34 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +423 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/delta.d.ts +14 -0
  23. package/dist/commands/delta.d.ts.map +1 -0
  24. package/dist/commands/delta.js +140 -0
  25. package/dist/commands/delta.js.map +1 -0
  26. package/dist/commands/doctor.d.ts +8 -0
  27. package/dist/commands/doctor.d.ts.map +1 -0
  28. package/dist/commands/doctor.js +187 -0
  29. package/dist/commands/doctor.js.map +1 -0
  30. package/dist/commands/export.d.ts +12 -0
  31. package/dist/commands/export.d.ts.map +1 -0
  32. package/dist/commands/export.js +45 -0
  33. package/dist/commands/export.js.map +1 -0
  34. package/dist/commands/import.d.ts +13 -0
  35. package/dist/commands/import.d.ts.map +1 -0
  36. package/dist/commands/import.js +87 -0
  37. package/dist/commands/import.js.map +1 -0
  38. package/dist/commands/learn.d.ts +17 -0
  39. package/dist/commands/learn.d.ts.map +1 -0
  40. package/dist/commands/learn.js +193 -0
  41. package/dist/commands/learn.js.map +1 -0
  42. package/dist/commands/patterns.d.ts +13 -0
  43. package/dist/commands/patterns.d.ts.map +1 -0
  44. package/dist/commands/patterns.js +76 -0
  45. package/dist/commands/patterns.js.map +1 -0
  46. package/dist/commands/plugin.d.ts +26 -0
  47. package/dist/commands/plugin.d.ts.map +1 -0
  48. package/dist/commands/plugin.js +267 -0
  49. package/dist/commands/plugin.js.map +1 -0
  50. package/dist/commands/projects.d.ts +15 -0
  51. package/dist/commands/projects.d.ts.map +1 -0
  52. package/dist/commands/projects.js +122 -0
  53. package/dist/commands/projects.js.map +1 -0
  54. package/dist/commands/record.d.ts +32 -0
  55. package/dist/commands/record.d.ts.map +1 -0
  56. package/dist/commands/record.js +307 -0
  57. package/dist/commands/record.js.map +1 -0
  58. package/dist/commands/search.d.ts +16 -0
  59. package/dist/commands/search.d.ts.map +1 -0
  60. package/dist/commands/search.js +125 -0
  61. package/dist/commands/search.js.map +1 -0
  62. package/dist/commands/status.d.ts +8 -0
  63. package/dist/commands/status.d.ts.map +1 -0
  64. package/dist/commands/status.js +63 -0
  65. package/dist/commands/status.js.map +1 -0
  66. package/dist/commands/summarize.d.ts +17 -0
  67. package/dist/commands/summarize.d.ts.map +1 -0
  68. package/dist/commands/summarize.js +167 -0
  69. package/dist/commands/summarize.js.map +1 -0
  70. package/dist/commands/top.d.ts +14 -0
  71. package/dist/commands/top.d.ts.map +1 -0
  72. package/dist/commands/top.js +58 -0
  73. package/dist/commands/top.js.map +1 -0
  74. package/dist/commands/tune.d.ts +36 -0
  75. package/dist/commands/tune.d.ts.map +1 -0
  76. package/dist/commands/tune.js +354 -0
  77. package/dist/commands/tune.js.map +1 -0
  78. package/dist/formatters/playbook-formatter.d.ts +19 -0
  79. package/dist/formatters/playbook-formatter.d.ts.map +1 -0
  80. package/dist/formatters/playbook-formatter.js +56 -0
  81. package/dist/formatters/playbook-formatter.js.map +1 -0
  82. package/dist/formatters/search-formatter.d.ts +28 -0
  83. package/dist/formatters/search-formatter.d.ts.map +1 -0
  84. package/dist/formatters/search-formatter.js +48 -0
  85. package/dist/formatters/search-formatter.js.map +1 -0
  86. package/dist/formatters/status-formatter.d.ts +25 -0
  87. package/dist/formatters/status-formatter.d.ts.map +1 -0
  88. package/dist/formatters/status-formatter.js +46 -0
  89. package/dist/formatters/status-formatter.js.map +1 -0
  90. package/dist/services/config-loader.d.ts +8 -0
  91. package/dist/services/config-loader.d.ts.map +1 -0
  92. package/dist/services/config-loader.js +7 -0
  93. package/dist/services/config-loader.js.map +1 -0
  94. package/dist/services/initialization.d.ts +128 -0
  95. package/dist/services/initialization.d.ts.map +1 -0
  96. package/dist/services/initialization.js +874 -0
  97. package/dist/services/initialization.js.map +1 -0
  98. package/dist/services/language-detector.d.ts +63 -0
  99. package/dist/services/language-detector.d.ts.map +1 -0
  100. package/dist/services/language-detector.js +123 -0
  101. package/dist/services/language-detector.js.map +1 -0
  102. package/dist/services/logger.d.ts +97 -0
  103. package/dist/services/logger.d.ts.map +1 -0
  104. package/dist/services/logger.js +229 -0
  105. package/dist/services/logger.js.map +1 -0
  106. package/dist/services/plugin-loader.d.ts +84 -0
  107. package/dist/services/plugin-loader.d.ts.map +1 -0
  108. package/dist/services/plugin-loader.js +282 -0
  109. package/dist/services/plugin-loader.js.map +1 -0
  110. package/dist/services/recorder.d.ts +80 -0
  111. package/dist/services/recorder.d.ts.map +1 -0
  112. package/dist/services/recorder.js +267 -0
  113. package/dist/services/recorder.js.map +1 -0
  114. package/dist/services/server-client.d.ts +32 -0
  115. package/dist/services/server-client.d.ts.map +1 -0
  116. package/dist/services/server-client.js +68 -0
  117. package/dist/services/server-client.js.map +1 -0
  118. package/dist/services/session-storage.d.ts +20 -0
  119. package/dist/services/session-storage.d.ts.map +1 -0
  120. package/dist/services/session-storage.js +29 -0
  121. package/dist/services/session-storage.js.map +1 -0
  122. package/dist/types/config.d.ts +33 -0
  123. package/dist/types/config.d.ts.map +1 -0
  124. package/dist/types/config.js +63 -0
  125. package/dist/types/config.js.map +1 -0
  126. package/dist/types/pattern.d.ts +8 -0
  127. package/dist/types/pattern.d.ts.map +1 -0
  128. package/dist/types/pattern.js +7 -0
  129. package/dist/types/pattern.js.map +1 -0
  130. package/dist/types/plugin.d.ts +87 -0
  131. package/dist/types/plugin.d.ts.map +1 -0
  132. package/dist/types/plugin.js +5 -0
  133. package/dist/types/plugin.js.map +1 -0
  134. package/dist/types/recorder.d.ts +44 -0
  135. package/dist/types/recorder.d.ts.map +1 -0
  136. package/dist/types/recorder.js +5 -0
  137. package/dist/types/recorder.js.map +1 -0
  138. package/dist/utils/code-extractor.d.ts +8 -0
  139. package/dist/utils/code-extractor.d.ts.map +1 -0
  140. package/dist/utils/code-extractor.js +7 -0
  141. package/dist/utils/code-extractor.js.map +1 -0
  142. package/dist/utils/semver.d.ts +13 -0
  143. package/dist/utils/semver.d.ts.map +1 -0
  144. package/dist/utils/semver.js +14 -0
  145. package/dist/utils/semver.js.map +1 -0
  146. package/dist/utils/version-checker.d.ts +27 -0
  147. package/dist/utils/version-checker.d.ts.map +1 -0
  148. package/dist/utils/version-checker.js +141 -0
  149. package/dist/utils/version-checker.js.map +1 -0
  150. package/package.json +64 -0
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Health diagnostics command
3
+ */
4
+ import { existsSync } from 'fs';
5
+ import { homedir } from 'os';
6
+ import { join } from 'path';
7
+ import { globalOptions } from '../cli.js';
8
+ import { getConfig } from '../types/config.js';
9
+ import { ACEServerClient } from '../services/server-client.js';
10
+ import { Logger } from '../services/logger.js';
11
+ import chalk from 'chalk';
12
+ /**
13
+ * Run diagnostics on ACE configuration and connectivity
14
+ */
15
+ export async function doctorCommand() {
16
+ const logger = new Logger(globalOptions);
17
+ const results = [];
18
+ // Check 1: Config file exists
19
+ let spinner = logger.spinner('Checking configuration file...');
20
+ const configPath = join(homedir(), '.ace', 'config.json');
21
+ if (existsSync(configPath)) {
22
+ results.push({
23
+ check: 'Config File',
24
+ status: 'pass',
25
+ message: `Found at ${configPath}`
26
+ });
27
+ spinner?.succeed('Configuration file found');
28
+ }
29
+ else {
30
+ results.push({
31
+ check: 'Config File',
32
+ status: 'fail',
33
+ message: 'Configuration file not found. Run "ce-ace config" to set up.'
34
+ });
35
+ spinner?.fail('Configuration file not found');
36
+ }
37
+ // Check 2: Config is valid
38
+ spinner = logger.spinner('Validating configuration...');
39
+ let config;
40
+ try {
41
+ config = getConfig();
42
+ results.push({
43
+ check: 'Config Validity',
44
+ status: 'pass',
45
+ message: 'Configuration is valid',
46
+ details: {
47
+ serverUrl: config.serverUrl,
48
+ projectId: config.projectId,
49
+ hasApiToken: !!config.apiToken
50
+ }
51
+ });
52
+ spinner?.succeed('Configuration is valid');
53
+ }
54
+ catch (error) {
55
+ results.push({
56
+ check: 'Config Validity',
57
+ status: 'fail',
58
+ message: error instanceof Error ? error.message : String(error)
59
+ });
60
+ spinner?.fail('Configuration is invalid');
61
+ }
62
+ // Check 3: Server connectivity
63
+ if (config) {
64
+ spinner = logger.spinner('Testing server connectivity...');
65
+ try {
66
+ const client = new ACEServerClient(config, logger);
67
+ // Try to get playbook analytics (minimal request)
68
+ await client.getAnalytics();
69
+ results.push({
70
+ check: 'Server Connectivity',
71
+ status: 'pass',
72
+ message: `Connected to ${config.serverUrl}`
73
+ });
74
+ spinner?.succeed('Server is reachable');
75
+ }
76
+ catch (error) {
77
+ results.push({
78
+ check: 'Server Connectivity',
79
+ status: 'fail',
80
+ message: error instanceof Error ? error.message : String(error),
81
+ details: {
82
+ serverUrl: config.serverUrl
83
+ }
84
+ });
85
+ spinner?.fail('Cannot reach server');
86
+ }
87
+ // Check 4: API token validity
88
+ spinner = logger.spinner('Validating API token...');
89
+ try {
90
+ const client = new ACEServerClient(config, logger);
91
+ // Getting playbook also validates the token
92
+ await client.getPlaybook({ forceRefresh: false, include_metadata: false });
93
+ results.push({
94
+ check: 'API Token',
95
+ status: 'pass',
96
+ message: 'API token is valid'
97
+ });
98
+ spinner?.succeed('API token is valid');
99
+ }
100
+ catch (error) {
101
+ const errorMsg = error instanceof Error ? error.message : String(error);
102
+ if (errorMsg.includes('401') || errorMsg.includes('unauthorized')) {
103
+ results.push({
104
+ check: 'API Token',
105
+ status: 'fail',
106
+ message: 'API token is invalid or expired'
107
+ });
108
+ spinner?.fail('API token is invalid');
109
+ }
110
+ else {
111
+ results.push({
112
+ check: 'API Token',
113
+ status: 'warn',
114
+ message: 'Could not validate API token',
115
+ details: { error: errorMsg }
116
+ });
117
+ spinner?.warn('Could not validate API token');
118
+ }
119
+ }
120
+ // Check 5: Project/org existence
121
+ spinner = logger.spinner('Verifying project access...');
122
+ try {
123
+ const client = new ACEServerClient(config, logger);
124
+ const analytics = await client.getAnalytics();
125
+ results.push({
126
+ check: 'Project Access',
127
+ status: 'pass',
128
+ message: `Project ${config.projectId} is accessible`,
129
+ details: {
130
+ totalBullets: analytics.total_bullets || 0
131
+ }
132
+ });
133
+ spinner?.succeed('Project is accessible');
134
+ }
135
+ catch (error) {
136
+ results.push({
137
+ check: 'Project Access',
138
+ status: 'fail',
139
+ message: `Cannot access project ${config.projectId}`,
140
+ details: {
141
+ error: error instanceof Error ? error.message : String(error)
142
+ }
143
+ });
144
+ spinner?.fail('Project is not accessible');
145
+ }
146
+ }
147
+ // Output results
148
+ if (logger.isJson()) {
149
+ logger.output({
150
+ timestamp: new Date().toISOString(),
151
+ results,
152
+ summary: {
153
+ total: results.length,
154
+ passed: results.filter(r => r.status === 'pass').length,
155
+ failed: results.filter(r => r.status === 'fail').length,
156
+ warnings: results.filter(r => r.status === 'warn').length
157
+ }
158
+ });
159
+ }
160
+ else {
161
+ logger.info(chalk.bold('\n📊 Diagnostic Results\n'));
162
+ results.forEach(result => {
163
+ const symbol = result.status === 'pass' ? chalk.green('✓') :
164
+ result.status === 'fail' ? chalk.red('✗') :
165
+ chalk.yellow('⚠');
166
+ logger.info(`${symbol} ${chalk.bold(result.check)}: ${result.message}`);
167
+ if (result.details && logger.isVerbose()) {
168
+ logger.debug(` ${JSON.stringify(result.details, null, 2)}`);
169
+ }
170
+ });
171
+ const passed = results.filter(r => r.status === 'pass').length;
172
+ const failed = results.filter(r => r.status === 'fail').length;
173
+ const warned = results.filter(r => r.status === 'warn').length;
174
+ logger.info('');
175
+ logger.info(chalk.bold('Summary:'));
176
+ logger.info(` ${chalk.green('✓')} Passed: ${passed}`);
177
+ if (failed > 0)
178
+ logger.info(` ${chalk.red('✗')} Failed: ${failed}`);
179
+ if (warned > 0)
180
+ logger.info(` ${chalk.yellow('⚠')} Warnings: ${warned}`);
181
+ logger.info('');
182
+ if (failed > 0) {
183
+ process.exit(1);
184
+ }
185
+ }
186
+ }
187
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Export playbook command
3
+ */
4
+ interface ExportOptions {
5
+ output?: string;
6
+ }
7
+ /**
8
+ * Export playbook to JSON
9
+ */
10
+ export declare function exportCommand(options: ExportOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAmCzD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Export playbook command
3
+ */
4
+ import { writeFileSync } from 'fs';
5
+ import { globalOptions } from '../cli.js';
6
+ import { createContext } from '../types/config.js';
7
+ import { ACEServerClient } from '../services/server-client.js';
8
+ import { Logger } from '../services/logger.js';
9
+ import chalk from 'chalk';
10
+ /**
11
+ * Export playbook to JSON
12
+ */
13
+ export async function exportCommand(options) {
14
+ const logger = new Logger(globalOptions);
15
+ const spinner = logger.spinner('Exporting playbook...');
16
+ try {
17
+ const context = await createContext({ org: globalOptions.org, project: globalOptions.project });
18
+ const client = new ACEServerClient(context, logger);
19
+ const result = await client.getPlaybook({ forceRefresh: false, include_metadata: false });
20
+ spinner?.succeed('Playbook exported');
21
+ const jsonOutput = JSON.stringify(result.playbook, null, 2);
22
+ if (options.output) {
23
+ // Write to file
24
+ writeFileSync(options.output, jsonOutput);
25
+ if (!logger.isJson()) {
26
+ logger.info(chalk.green(`\n✅ Playbook exported to ${options.output}\n`));
27
+ }
28
+ }
29
+ else {
30
+ // Write to stdout
31
+ logger.output(jsonOutput);
32
+ }
33
+ }
34
+ catch (error) {
35
+ spinner?.fail('Failed to export playbook');
36
+ if (logger.isJson()) {
37
+ logger.output({ error: error instanceof Error ? error.message : String(error) });
38
+ }
39
+ else {
40
+ logger.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
41
+ }
42
+ process.exit(1);
43
+ }
44
+ }
45
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1F,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,gBAAgB;YAChB,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAE1C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Import playbook command
3
+ */
4
+ interface ImportOptions {
5
+ file?: string;
6
+ stdin?: boolean;
7
+ }
8
+ /**
9
+ * Import playbook from JSON file or stdin
10
+ */
11
+ export declare function importCommand(fileArg: string | undefined, options: ImportOptions): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,iBAmFtF"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Import playbook command
3
+ */
4
+ import { readFileSync } from 'fs';
5
+ import { globalOptions } from '../cli.js';
6
+ import { createContext } from '../types/config.js';
7
+ import { ACEServerClient } from '../services/server-client.js';
8
+ import { Logger } from '../services/logger.js';
9
+ import chalk from 'chalk';
10
+ /**
11
+ * Import playbook from JSON file or stdin
12
+ */
13
+ export async function importCommand(fileArg, options) {
14
+ const logger = new Logger(globalOptions);
15
+ const spinner = logger.spinner('Importing playbook...');
16
+ try {
17
+ let playbook;
18
+ // Read from stdin if specified
19
+ if (options.stdin) {
20
+ const stdinData = readFileSync(0, 'utf8'); // fd 0 is stdin
21
+ playbook = JSON.parse(stdinData.trim());
22
+ }
23
+ // Read from file (either from --file option or positional argument)
24
+ else {
25
+ const file = options.file || fileArg;
26
+ if (!file) {
27
+ throw new Error('Must provide either a file path or use --stdin');
28
+ }
29
+ const fileContent = readFileSync(file, 'utf8');
30
+ playbook = JSON.parse(fileContent);
31
+ }
32
+ const context = await createContext({ org: globalOptions.org, project: globalOptions.project });
33
+ const client = new ACEServerClient(context, logger);
34
+ // Convert playbook to code blocks for bootstrap
35
+ const codeBlocks = [];
36
+ // Add all patterns from each section
37
+ if (playbook.strategies_and_hard_rules) {
38
+ for (const pattern of playbook.strategies_and_hard_rules) {
39
+ codeBlocks.push(`[STRATEGY] ${pattern.content}`);
40
+ }
41
+ }
42
+ if (playbook.useful_code_snippets) {
43
+ for (const pattern of playbook.useful_code_snippets) {
44
+ codeBlocks.push(pattern.content);
45
+ }
46
+ }
47
+ if (playbook.troubleshooting_and_pitfalls) {
48
+ for (const pattern of playbook.troubleshooting_and_pitfalls) {
49
+ codeBlocks.push(`[TROUBLESHOOTING] ${pattern.content}`);
50
+ }
51
+ }
52
+ if (playbook.apis_to_use) {
53
+ for (const pattern of playbook.apis_to_use) {
54
+ codeBlocks.push(`[API] ${pattern.content}`);
55
+ }
56
+ }
57
+ // Import via bootstrap
58
+ await client.bootstrap({
59
+ mode: 'local-files',
60
+ code_blocks: codeBlocks,
61
+ metadata: {
62
+ blocks_extracted: codeBlocks.length
63
+ }
64
+ });
65
+ // Invalidate cache
66
+ client.invalidateCache();
67
+ spinner?.succeed('Playbook imported');
68
+ const source = options.stdin ? 'stdin' : (options.file || fileArg);
69
+ if (logger.isJson()) {
70
+ logger.output({ success: true, message: 'Playbook imported', source });
71
+ }
72
+ else {
73
+ logger.info(chalk.green(`\n✅ Playbook imported successfully from ${source}\n`));
74
+ }
75
+ }
76
+ catch (error) {
77
+ spinner?.fail('Failed to import playbook');
78
+ if (logger.isJson()) {
79
+ logger.output({ error: error instanceof Error ? error.message : String(error) });
80
+ }
81
+ else {
82
+ logger.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
83
+ }
84
+ process.exit(1);
85
+ }
86
+ }
87
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Learning command - submit execution traces to update playbook
3
+ */
4
+ interface LearnOptions {
5
+ transcript?: string;
6
+ stdin?: boolean;
7
+ task?: string;
8
+ success?: boolean;
9
+ failure?: boolean;
10
+ output?: string;
11
+ }
12
+ /**
13
+ * Submit learning event to update playbook
14
+ */
15
+ export declare function learnCommand(options: LearnOptions): Promise<void>;
16
+ export {};
17
+ //# sourceMappingURL=learn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn.d.ts","sourceRoot":"","sources":["../../src/commands/learn.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBAyLvD"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Learning command - submit execution traces to update playbook
3
+ */
4
+ import { readFileSync } from 'fs';
5
+ import { globalOptions } from '../cli.js';
6
+ import { createContext } from '../types/config.js';
7
+ import { ACEServerClient } from '../services/server-client.js';
8
+ import { Logger } from '../services/logger.js';
9
+ import chalk from 'chalk';
10
+ /**
11
+ * Submit learning event to update playbook
12
+ */
13
+ export async function learnCommand(options) {
14
+ const logger = new Logger(globalOptions);
15
+ let trace = null;
16
+ // Read from file if specified
17
+ if (options.transcript) {
18
+ try {
19
+ const content = readFileSync(options.transcript, 'utf8');
20
+ trace = JSON.parse(content);
21
+ }
22
+ catch (error) {
23
+ if (logger.isJson()) {
24
+ logger.error('Failed to read transcript file');
25
+ }
26
+ else {
27
+ logger.error(chalk.red(`Error: Failed to read transcript file: ${error instanceof Error ? error.message : String(error)}`));
28
+ }
29
+ process.exit(1);
30
+ }
31
+ }
32
+ // Read from stdin if specified
33
+ else if (options.stdin) {
34
+ try {
35
+ const stdinData = readFileSync(0, 'utf8'); // fd 0 is stdin
36
+ trace = JSON.parse(stdinData.trim());
37
+ }
38
+ catch (error) {
39
+ if (logger.isJson()) {
40
+ logger.error('Failed to read from stdin');
41
+ }
42
+ else {
43
+ logger.error(chalk.red(`Error: Failed to read from stdin: ${error instanceof Error ? error.message : String(error)}`));
44
+ }
45
+ process.exit(1);
46
+ }
47
+ }
48
+ // Build from command-line options
49
+ else if (options.task && (options.success || options.failure) && options.output) {
50
+ const trajectory = [{
51
+ step: 1,
52
+ action: options.task,
53
+ args: {},
54
+ result: 'Completed'
55
+ }];
56
+ trace = {
57
+ task: options.task,
58
+ trajectory,
59
+ result: {
60
+ success: options.success || false,
61
+ output: options.output,
62
+ error: options.failure ? 'Task failed' : undefined
63
+ },
64
+ playbook_used: [],
65
+ timestamp: new Date().toISOString()
66
+ };
67
+ }
68
+ else {
69
+ if (logger.isJson()) {
70
+ logger.error('Must provide either --transcript, --stdin, or --task + --success/--failure + --output');
71
+ }
72
+ else {
73
+ logger.error(chalk.red('Error: Must provide either:'));
74
+ logger.info(chalk.dim(' - --transcript <file>'));
75
+ logger.info(chalk.dim(' - --stdin'));
76
+ logger.info(chalk.dim(' - --task + --success/--failure + --output'));
77
+ }
78
+ process.exit(1);
79
+ }
80
+ if (!trace) {
81
+ if (logger.isJson()) {
82
+ logger.error('Failed to create execution trace');
83
+ }
84
+ else {
85
+ logger.error(chalk.red('Error: Failed to create execution trace'));
86
+ }
87
+ process.exit(1);
88
+ }
89
+ const spinner = logger.spinner('Submitting learning event...');
90
+ try {
91
+ const context = await createContext({ org: globalOptions.org, project: globalOptions.project });
92
+ const client = new ACEServerClient(context, logger);
93
+ // Check server config for learning settings
94
+ try {
95
+ const serverConfig = await client.getConfig();
96
+ const runtimeSettings = serverConfig?.runtime_settings || {};
97
+ // Warn if learning is disabled on server
98
+ if (runtimeSettings.learningEnabled === false) {
99
+ logger.warn('Learning is disabled on the server. Trace will be stored but not processed.');
100
+ }
101
+ // Log server thresholds
102
+ logger.debug(`Learning settings: enabled=${runtimeSettings.learningEnabled ?? true}, min_confidence=${runtimeSettings.learningMinConfidence ?? 0.3}, min_tokens=${runtimeSettings.learningMinTokens ?? 100}`);
103
+ }
104
+ catch (error) {
105
+ logger.debug('Failed to fetch server config, proceeding with submission');
106
+ }
107
+ const result = await client.storeExecutionTrace(trace);
108
+ // Invalidate cache so next request gets fresh data
109
+ client.invalidateCache();
110
+ spinner?.succeed('Learning event submitted');
111
+ if (logger.isJson()) {
112
+ // JSON output includes full response
113
+ logger.output({
114
+ success: true,
115
+ message: 'Execution trace stored successfully',
116
+ task: trace.task,
117
+ timestamp: trace.timestamp,
118
+ analysis_performed: result.analysis_performed,
119
+ learning_statistics: result.learning_statistics
120
+ });
121
+ }
122
+ else {
123
+ // Human-readable output
124
+ logger.info(chalk.green('\n✅ Learning event submitted successfully'));
125
+ logger.info(chalk.dim(` Task: ${trace.task}`));
126
+ logger.info(chalk.dim(` Timestamp: ${trace.timestamp}`));
127
+ // Show learning statistics if available (server v3.10.0+)
128
+ if (result.learning_statistics) {
129
+ const stats = result.learning_statistics;
130
+ logger.info(chalk.bold('\n📊 Learning Results:'));
131
+ // Show creation/update counts
132
+ if (stats.patterns_created > 0) {
133
+ logger.info(chalk.green(` • ${stats.patterns_created} new pattern${stats.patterns_created === 1 ? '' : 's'} created`));
134
+ }
135
+ if (stats.patterns_updated > 0) {
136
+ logger.info(chalk.cyan(` • ${stats.patterns_updated} pattern${stats.patterns_updated === 1 ? '' : 's'} updated`));
137
+ }
138
+ if (stats.patterns_pruned > 0) {
139
+ logger.info(chalk.yellow(` • ${stats.patterns_pruned} low-quality pattern${stats.patterns_pruned === 1 ? '' : 's'} pruned`));
140
+ }
141
+ if (stats.patterns_deduplicated > 0) {
142
+ logger.info(chalk.blue(` • ${stats.patterns_deduplicated} duplicate${stats.patterns_deduplicated === 1 ? '' : 's'} merged`));
143
+ }
144
+ // Show section breakdown if verbose
145
+ if (logger.isVerbose()) {
146
+ const sections = stats.by_section;
147
+ const totalSectionChanges = sections.strategies_and_hard_rules +
148
+ sections.useful_code_snippets +
149
+ sections.troubleshooting_and_pitfalls +
150
+ sections.apis_to_use;
151
+ if (totalSectionChanges > 0) {
152
+ logger.info(chalk.bold('\n Affected Sections:'));
153
+ if (sections.strategies_and_hard_rules > 0) {
154
+ logger.info(chalk.dim(` - Strategies & Hard Rules: ${sections.strategies_and_hard_rules}`));
155
+ }
156
+ if (sections.useful_code_snippets > 0) {
157
+ logger.info(chalk.dim(` - Useful Code Snippets: ${sections.useful_code_snippets}`));
158
+ }
159
+ if (sections.troubleshooting_and_pitfalls > 0) {
160
+ logger.info(chalk.dim(` - Troubleshooting & Pitfalls: ${sections.troubleshooting_and_pitfalls}`));
161
+ }
162
+ if (sections.apis_to_use > 0) {
163
+ logger.info(chalk.dim(` - APIs to Use: ${sections.apis_to_use}`));
164
+ }
165
+ }
166
+ }
167
+ // Show quality metrics
168
+ logger.info(chalk.bold('\n Quality Metrics:'));
169
+ logger.info(chalk.dim(` - Average confidence: ${(stats.average_confidence * 100).toFixed(0)}%`));
170
+ if (stats.helpful_delta > 0) {
171
+ logger.info(chalk.dim(` - Helpful feedback: +${stats.helpful_delta}`));
172
+ }
173
+ logger.info(chalk.dim(` - Analysis time: ${stats.analysis_time_seconds.toFixed(1)}s`));
174
+ logger.info('');
175
+ }
176
+ else {
177
+ // Fallback for older servers without statistics
178
+ logger.info(chalk.dim(' Server is analyzing and updating playbook...\n'));
179
+ }
180
+ }
181
+ }
182
+ catch (error) {
183
+ spinner?.fail('Failed to submit learning event');
184
+ if (logger.isJson()) {
185
+ logger.error(error instanceof Error ? error.message : String(error));
186
+ }
187
+ else {
188
+ logger.error(chalk.red(`\nError: ${error instanceof Error ? error.message : String(error)}\n`));
189
+ }
190
+ process.exit(1);
191
+ }
192
+ }
193
+ //# sourceMappingURL=learn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn.js","sourceRoot":"","sources":["../../src/commands/learn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * View playbook patterns command
3
+ */
4
+ interface PatternsOptions {
5
+ section?: string;
6
+ minHelpful?: number;
7
+ }
8
+ /**
9
+ * View playbook patterns
10
+ */
11
+ export declare function patternsCommand(options: PatternsOptions): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/commands/patterns.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBAwE7D"}