@karis-ai/cli 0.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 (154) hide show
  1. package/bin/karis.js +2 -0
  2. package/dist/commands/brand/customize.d.ts +11 -0
  3. package/dist/commands/brand/customize.d.ts.map +1 -0
  4. package/dist/commands/brand/customize.js +115 -0
  5. package/dist/commands/brand/customize.js.map +1 -0
  6. package/dist/commands/brand/info.d.ts +3 -0
  7. package/dist/commands/brand/info.d.ts.map +1 -0
  8. package/dist/commands/brand/info.js +14 -0
  9. package/dist/commands/brand/info.js.map +1 -0
  10. package/dist/commands/brand/init.d.ts +7 -0
  11. package/dist/commands/brand/init.d.ts.map +1 -0
  12. package/dist/commands/brand/init.js +133 -0
  13. package/dist/commands/brand/init.js.map +1 -0
  14. package/dist/commands/brand/list.d.ts +4 -0
  15. package/dist/commands/brand/list.d.ts.map +1 -0
  16. package/dist/commands/brand/list.js +46 -0
  17. package/dist/commands/brand/list.js.map +1 -0
  18. package/dist/commands/brand/refresh.d.ts +7 -0
  19. package/dist/commands/brand/refresh.d.ts.map +1 -0
  20. package/dist/commands/brand/refresh.js +63 -0
  21. package/dist/commands/brand/refresh.js.map +1 -0
  22. package/dist/commands/brand/select.d.ts +6 -0
  23. package/dist/commands/brand/select.d.ts.map +1 -0
  24. package/dist/commands/brand/select.js +104 -0
  25. package/dist/commands/brand/select.js.map +1 -0
  26. package/dist/commands/brand/show.d.ts +4 -0
  27. package/dist/commands/brand/show.d.ts.map +1 -0
  28. package/dist/commands/brand/show.js +122 -0
  29. package/dist/commands/brand/show.js.map +1 -0
  30. package/dist/commands/capabilities.d.ts +3 -0
  31. package/dist/commands/capabilities.d.ts.map +1 -0
  32. package/dist/commands/capabilities.js +103 -0
  33. package/dist/commands/capabilities.js.map +1 -0
  34. package/dist/commands/chat.d.ts +3 -0
  35. package/dist/commands/chat.d.ts.map +1 -0
  36. package/dist/commands/chat.js +336 -0
  37. package/dist/commands/chat.js.map +1 -0
  38. package/dist/commands/config.d.ts +3 -0
  39. package/dist/commands/config.d.ts.map +1 -0
  40. package/dist/commands/config.js +91 -0
  41. package/dist/commands/config.js.map +1 -0
  42. package/dist/commands/doctor.d.ts +3 -0
  43. package/dist/commands/doctor.d.ts.map +1 -0
  44. package/dist/commands/doctor.js +148 -0
  45. package/dist/commands/doctor.js.map +1 -0
  46. package/dist/commands/geo.d.ts +3 -0
  47. package/dist/commands/geo.d.ts.map +1 -0
  48. package/dist/commands/geo.js +22 -0
  49. package/dist/commands/geo.js.map +1 -0
  50. package/dist/commands/login.d.ts +8 -0
  51. package/dist/commands/login.d.ts.map +1 -0
  52. package/dist/commands/login.js +173 -0
  53. package/dist/commands/login.js.map +1 -0
  54. package/dist/commands/memory.d.ts +3 -0
  55. package/dist/commands/memory.d.ts.map +1 -0
  56. package/dist/commands/memory.js +19 -0
  57. package/dist/commands/memory.js.map +1 -0
  58. package/dist/commands/reddit.d.ts +3 -0
  59. package/dist/commands/reddit.d.ts.map +1 -0
  60. package/dist/commands/reddit.js +61 -0
  61. package/dist/commands/reddit.js.map +1 -0
  62. package/dist/commands/schedule.d.ts +3 -0
  63. package/dist/commands/schedule.d.ts.map +1 -0
  64. package/dist/commands/schedule.js +15 -0
  65. package/dist/commands/schedule.js.map +1 -0
  66. package/dist/commands/setup.d.ts +11 -0
  67. package/dist/commands/setup.d.ts.map +1 -0
  68. package/dist/commands/setup.js +303 -0
  69. package/dist/commands/setup.js.map +1 -0
  70. package/dist/commands/show.d.ts +3 -0
  71. package/dist/commands/show.d.ts.map +1 -0
  72. package/dist/commands/show.js +46 -0
  73. package/dist/commands/show.js.map +1 -0
  74. package/dist/commands/tools.d.ts +3 -0
  75. package/dist/commands/tools.d.ts.map +1 -0
  76. package/dist/commands/tools.js +139 -0
  77. package/dist/commands/tools.js.map +1 -0
  78. package/dist/commands/web.d.ts +3 -0
  79. package/dist/commands/web.d.ts.map +1 -0
  80. package/dist/commands/web.js +29 -0
  81. package/dist/commands/web.js.map +1 -0
  82. package/dist/commands/x.d.ts +3 -0
  83. package/dist/commands/x.d.ts.map +1 -0
  84. package/dist/commands/x.js +29 -0
  85. package/dist/commands/x.js.map +1 -0
  86. package/dist/commands/youtube.d.ts +3 -0
  87. package/dist/commands/youtube.d.ts.map +1 -0
  88. package/dist/commands/youtube.js +16 -0
  89. package/dist/commands/youtube.js.map +1 -0
  90. package/dist/core/agent-factory.d.ts +20 -0
  91. package/dist/core/agent-factory.d.ts.map +1 -0
  92. package/dist/core/agent-factory.js +26 -0
  93. package/dist/core/agent-factory.js.map +1 -0
  94. package/dist/core/agent-interface.d.ts +68 -0
  95. package/dist/core/agent-interface.d.ts.map +1 -0
  96. package/dist/core/agent-interface.js +5 -0
  97. package/dist/core/agent-interface.js.map +1 -0
  98. package/dist/core/browser-bridge.d.ts +19 -0
  99. package/dist/core/browser-bridge.d.ts.map +1 -0
  100. package/dist/core/browser-bridge.js +56 -0
  101. package/dist/core/browser-bridge.js.map +1 -0
  102. package/dist/core/cli-context.d.ts +19 -0
  103. package/dist/core/cli-context.d.ts.map +1 -0
  104. package/dist/core/cli-context.js +43 -0
  105. package/dist/core/cli-context.js.map +1 -0
  106. package/dist/core/client.d.ts +219 -0
  107. package/dist/core/client.d.ts.map +1 -0
  108. package/dist/core/client.js +638 -0
  109. package/dist/core/client.js.map +1 -0
  110. package/dist/core/errors.d.ts +18 -0
  111. package/dist/core/errors.d.ts.map +1 -0
  112. package/dist/core/errors.js +107 -0
  113. package/dist/core/errors.js.map +1 -0
  114. package/dist/core/remote-agent.d.ts +36 -0
  115. package/dist/core/remote-agent.d.ts.map +1 -0
  116. package/dist/core/remote-agent.js +195 -0
  117. package/dist/core/remote-agent.js.map +1 -0
  118. package/dist/index.d.ts +2 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +178 -0
  121. package/dist/index.js.map +1 -0
  122. package/dist/utils/agent-helper.d.ts +14 -0
  123. package/dist/utils/agent-helper.d.ts.map +1 -0
  124. package/dist/utils/agent-helper.js +54 -0
  125. package/dist/utils/agent-helper.js.map +1 -0
  126. package/dist/utils/config.d.ts +26 -0
  127. package/dist/utils/config.d.ts.map +1 -0
  128. package/dist/utils/config.js +93 -0
  129. package/dist/utils/config.js.map +1 -0
  130. package/dist/utils/form-prompt.d.ts +15 -0
  131. package/dist/utils/form-prompt.d.ts.map +1 -0
  132. package/dist/utils/form-prompt.js +153 -0
  133. package/dist/utils/form-prompt.js.map +1 -0
  134. package/dist/utils/formatter.d.ts +7 -0
  135. package/dist/utils/formatter.d.ts.map +1 -0
  136. package/dist/utils/formatter.js +132 -0
  137. package/dist/utils/formatter.js.map +1 -0
  138. package/dist/utils/index-cache.d.ts +10 -0
  139. package/dist/utils/index-cache.d.ts.map +1 -0
  140. package/dist/utils/index-cache.js +22 -0
  141. package/dist/utils/index-cache.js.map +1 -0
  142. package/dist/utils/interactive.d.ts +19 -0
  143. package/dist/utils/interactive.d.ts.map +1 -0
  144. package/dist/utils/interactive.js +73 -0
  145. package/dist/utils/interactive.js.map +1 -0
  146. package/dist/utils/output.d.ts +41 -0
  147. package/dist/utils/output.d.ts.map +1 -0
  148. package/dist/utils/output.js +259 -0
  149. package/dist/utils/output.js.map +1 -0
  150. package/dist/utils/run-command.d.ts +2 -0
  151. package/dist/utils/run-command.d.ts.map +1 -0
  152. package/dist/utils/run-command.js +12 -0
  153. package/dist/utils/run-command.js.map +1 -0
  154. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAE5E,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC7D,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ interface SetupOptions {
3
+ apiKey?: string;
4
+ baseUrl?: string;
5
+ domain?: string;
6
+ skipBrand?: boolean;
7
+ }
8
+ export declare function runSetup(options?: SetupOptions): Promise<void>;
9
+ export declare function registerSetupCommand(program: Command): void;
10
+ export {};
11
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+OxE;AAyED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAW3D"}
@@ -0,0 +1,303 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { select } from '@inquirer/prompts';
4
+ import { KarisClient } from '../core/client.js';
5
+ import { loadResolvedConfig, maskValue, setConfigValue } from '../utils/config.js';
6
+ import { InteractiveSession } from '../utils/interactive.js';
7
+ import { emitStructuredEvent, printCommandResult, section, success, warning } from '../utils/output.js';
8
+ import { isTextOutput } from '../core/cli-context.js';
9
+ import { runCommand } from '../utils/run-command.js';
10
+ import { executeSingleTurn } from '../utils/agent-helper.js';
11
+ import { browserLogin } from './login.js';
12
+ const API_KEYS_URL = 'https://karis.im/settings/api-keys';
13
+ export async function runSetup(options = {}) {
14
+ const resolved = await loadResolvedConfig();
15
+ const apiUrl = options.baseUrl || resolved.apiUrl.value || 'https://api.karis.im';
16
+ const session = new InteractiveSession();
17
+ let apiKeySource = options.apiKey ? 'flag' : resolved.apiKey.value ? toSetupApiKeySource(resolved.apiKey.source) : 'unset';
18
+ let apiKey = options.apiKey || resolved.apiKey.value;
19
+ let keyInfo;
20
+ let baseUrlSaved = false;
21
+ let apiKeySaved = false;
22
+ let brandStatus = 'skipped';
23
+ let brandProfile;
24
+ if (isTextOutput()) {
25
+ console.log();
26
+ console.log(chalk.bold.cyan('Welcome to Karis'));
27
+ console.log();
28
+ console.log(chalk.dim('We will set up your API access and optionally create a brand profile.'));
29
+ console.log();
30
+ }
31
+ if (options.baseUrl) {
32
+ await setConfigValue('base-url', options.baseUrl);
33
+ baseUrlSaved = true;
34
+ if (isTextOutput()) {
35
+ console.log(success(`Saved base URL: ${options.baseUrl}`));
36
+ console.log();
37
+ }
38
+ else {
39
+ emitStructuredEvent({
40
+ type: 'status',
41
+ stage: 'base_url_saved',
42
+ base_url: options.baseUrl,
43
+ });
44
+ }
45
+ }
46
+ if (isTextOutput()) {
47
+ section('Step 1: API Key');
48
+ }
49
+ if (apiKey) {
50
+ if (isTextOutput()) {
51
+ console.log(chalk.dim(`Using API key from ${apiKeySource}: ${maskValue('api-key', apiKey)}`));
52
+ console.log(chalk.dim(`Create or manage keys at ${API_KEYS_URL}`));
53
+ console.log();
54
+ }
55
+ keyInfo = await verifyApiKey(apiKey, apiUrl);
56
+ if (apiKeySource === 'flag') {
57
+ await setConfigValue('api-key', apiKey);
58
+ apiKeySaved = true;
59
+ }
60
+ if (isTextOutput()) {
61
+ console.log(success(`API key verified: ${keyInfo.name} (${keyInfo.key_prefix}...)`));
62
+ console.log();
63
+ }
64
+ }
65
+ else if (process.stdin.isTTY && isTextOutput()) {
66
+ const method = await select({
67
+ message: 'How would you like to authenticate?',
68
+ choices: [
69
+ { name: 'Log in with browser (recommended)', value: 'browser' },
70
+ { name: 'Paste an API key manually', value: 'paste' },
71
+ ],
72
+ });
73
+ if (method === 'browser') {
74
+ const spinner = ora('Opening browser...').start();
75
+ try {
76
+ spinner.text = 'Waiting for authorization...';
77
+ apiKey = await browserLogin(apiUrl);
78
+ spinner.succeed('Authorized');
79
+ }
80
+ catch (error) {
81
+ spinner.fail('Login failed');
82
+ throw error;
83
+ }
84
+ apiKeySource = 'prompt';
85
+ keyInfo = await verifyApiKey(apiKey, apiUrl);
86
+ await setConfigValue('api-key', apiKey);
87
+ apiKeySaved = true;
88
+ console.log(success(`API key saved: ${keyInfo.name} (${keyInfo.key_prefix}...)`));
89
+ console.log();
90
+ }
91
+ else {
92
+ console.log();
93
+ console.log(chalk.dim(`Create or manage keys at: ${API_KEYS_URL}`));
94
+ console.log();
95
+ const enteredApiKey = await session.ask('Enter your Karis API key (leave blank to skip)');
96
+ if (!enteredApiKey) {
97
+ session.close();
98
+ console.log();
99
+ console.log(warning('Setup paused. No API key was provided.'));
100
+ console.log(chalk.dim(`Run ${chalk.cyan('npx karis login')} or ${chalk.cyan('npx karis setup')} to try again.`));
101
+ console.log();
102
+ printCommandResult({
103
+ action: 'setup',
104
+ configured: false,
105
+ api_key: { provided: false, source: 'unset', create_url: API_KEYS_URL },
106
+ base_url: { value: apiUrl, saved: baseUrlSaved },
107
+ brand: { status: 'deferred' },
108
+ prompts: session.getTranscript(),
109
+ });
110
+ return;
111
+ }
112
+ apiKey = enteredApiKey;
113
+ apiKeySource = 'prompt';
114
+ keyInfo = await verifyApiKey(apiKey, apiUrl);
115
+ await setConfigValue('api-key', apiKey);
116
+ apiKeySaved = true;
117
+ console.log();
118
+ console.log(success(`API key verified and saved: ${keyInfo.name} (${keyInfo.key_prefix}...)`));
119
+ console.log();
120
+ }
121
+ }
122
+ else {
123
+ if (isTextOutput()) {
124
+ console.log(chalk.dim(`Paste an API key below, or leave it blank and create one at:`));
125
+ console.log(chalk.dim(` ${API_KEYS_URL}`));
126
+ console.log();
127
+ }
128
+ const enteredApiKey = await session.ask('Enter your Karis API key (leave blank to set it up later)');
129
+ if (!enteredApiKey) {
130
+ session.close();
131
+ if (isTextOutput()) {
132
+ console.log();
133
+ console.log(warning('Setup paused. No API key was provided.'));
134
+ console.log(chalk.dim(`Create one at: ${API_KEYS_URL}`));
135
+ console.log(chalk.dim(`Then run: ${chalk.cyan('npx karis setup')}`));
136
+ console.log();
137
+ }
138
+ printCommandResult({
139
+ action: 'setup',
140
+ configured: false,
141
+ api_key: { provided: false, source: 'unset', create_url: API_KEYS_URL },
142
+ base_url: { value: apiUrl, saved: baseUrlSaved },
143
+ brand: { status: 'deferred' },
144
+ prompts: session.getTranscript(),
145
+ });
146
+ return;
147
+ }
148
+ apiKey = enteredApiKey;
149
+ apiKeySource = 'prompt';
150
+ keyInfo = await verifyApiKey(apiKey, apiUrl);
151
+ await setConfigValue('api-key', apiKey);
152
+ apiKeySaved = true;
153
+ if (isTextOutput()) {
154
+ console.log();
155
+ console.log(success(`API key verified and saved: ${keyInfo.name} (${keyInfo.key_prefix}...)`));
156
+ console.log();
157
+ }
158
+ }
159
+ const client = new KarisClient({ apiKey, apiUrl });
160
+ if (options.skipBrand) {
161
+ brandStatus = 'skipped';
162
+ }
163
+ else {
164
+ if (isTextOutput()) {
165
+ section('Step 2: Brand Profile');
166
+ }
167
+ const existingBrand = await client.getBrand();
168
+ if (existingBrand) {
169
+ brandProfile = existingBrand;
170
+ brandStatus = 'existing';
171
+ if (isTextOutput()) {
172
+ console.log(success(`Brand profile already exists: ${chalk.bold(existingBrand.name || existingBrand.domain)}`));
173
+ console.log();
174
+ }
175
+ const shouldCreate = await session.ask('Create or replace the brand profile now? (y/N)', {
176
+ defaultValue: 'N',
177
+ });
178
+ if (shouldCreate.toLowerCase() === 'y') {
179
+ brandProfile = await createBrandProfile(client, session, options.domain);
180
+ brandStatus = 'created';
181
+ }
182
+ }
183
+ else {
184
+ brandProfile = await createBrandProfile(client, session, options.domain);
185
+ brandStatus = brandProfile ? 'created' : 'deferred';
186
+ }
187
+ }
188
+ session.close();
189
+ if (isTextOutput()) {
190
+ printSetupComplete(brandProfile);
191
+ }
192
+ printCommandResult({
193
+ action: 'setup',
194
+ configured: true,
195
+ api_key: {
196
+ provided: true,
197
+ source: apiKeySource,
198
+ saved: apiKeySaved || apiKeySource === 'config',
199
+ verified: true,
200
+ key_name: keyInfo?.name,
201
+ key_prefix: keyInfo?.key_prefix,
202
+ },
203
+ base_url: {
204
+ value: apiUrl,
205
+ saved: baseUrlSaved,
206
+ },
207
+ brand: {
208
+ status: brandStatus,
209
+ name: brandProfile?.name,
210
+ domain: brandProfile?.domain,
211
+ },
212
+ prompts: session.getTranscript(),
213
+ });
214
+ if (brandProfile && isTextOutput() && process.stdin.isTTY) {
215
+ const quickAuditSession = new InteractiveSession();
216
+ const runAudit = await quickAuditSession.ask('Run a quick audit now? (Y/n)', { defaultValue: 'Y' });
217
+ quickAuditSession.close();
218
+ if (runAudit.toLowerCase() !== 'n') {
219
+ console.log();
220
+ console.log(chalk.bold('Running audit...\n'));
221
+ const domain = brandProfile.domain;
222
+ await executeSingleTurn(`Run a comprehensive audit of my brand for ${domain} (visibility in AI search, presence, and key metrics)`);
223
+ }
224
+ }
225
+ }
226
+ async function verifyApiKey(apiKey, apiUrl) {
227
+ const spinner = isTextOutput() ? ora('Verifying API key...').start() : null;
228
+ const client = new KarisClient({ apiKey, apiUrl });
229
+ try {
230
+ const info = await client.verifyKey();
231
+ spinner?.succeed('API key is valid.');
232
+ return info;
233
+ }
234
+ catch (error) {
235
+ spinner?.fail('API key verification failed.');
236
+ throw error;
237
+ }
238
+ }
239
+ async function createBrandProfile(client, session, providedDomain) {
240
+ if (isTextOutput()) {
241
+ console.log(chalk.dim('You can skip this step and run `npx karis brand init` later.'));
242
+ console.log();
243
+ }
244
+ const domain = providedDomain || await session.ask('Brand domain (leave blank to skip)');
245
+ if (!domain) {
246
+ if (isTextOutput()) {
247
+ console.log(warning('Skipped brand profile creation.'));
248
+ console.log();
249
+ }
250
+ return undefined;
251
+ }
252
+ if (!isTextOutput()) {
253
+ emitStructuredEvent({
254
+ type: 'status',
255
+ stage: 'brand_analyzing',
256
+ domain,
257
+ });
258
+ }
259
+ const spinner = isTextOutput() ? ora('Analyzing brand assets and creating profile...').start() : null;
260
+ try {
261
+ const profile = await client.createBrand(domain);
262
+ spinner?.succeed('Brand profile created.');
263
+ if (isTextOutput()) {
264
+ console.log(success(`Brand profile for ${profile.name || domain} is ready.`));
265
+ console.log();
266
+ }
267
+ return profile;
268
+ }
269
+ catch (error) {
270
+ spinner?.fail('Failed to create brand profile.');
271
+ throw error;
272
+ }
273
+ }
274
+ function printSetupComplete(profile) {
275
+ console.log();
276
+ console.log(chalk.bold.green('Setup complete.'));
277
+ console.log();
278
+ if (!profile) {
279
+ console.log(chalk.dim('Next steps:'));
280
+ console.log(chalk.dim(` Create a brand: ${chalk.cyan('npx karis brand init')}`));
281
+ console.log(chalk.dim(` Chat with CMO: ${chalk.cyan('npx karis chat')}`));
282
+ console.log();
283
+ }
284
+ }
285
+ export function registerSetupCommand(program) {
286
+ program
287
+ .command('setup')
288
+ .description('First-time setup — API key and brand profile')
289
+ .option('-k, --api-key <key>', 'Provide the API key directly')
290
+ .option('--base-url <url>', 'Persist a custom API base URL')
291
+ .option('-d, --domain <domain>', 'Provide the brand domain directly')
292
+ .option('--skip-brand', 'Skip brand profile creation')
293
+ .action(runCommand(async (options) => {
294
+ await runSetup(options);
295
+ }));
296
+ }
297
+ function toSetupApiKeySource(source) {
298
+ if (source === 'env' || source === 'config') {
299
+ return source;
300
+ }
301
+ return 'unset';
302
+ }
303
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerShowCommand(program: Command): void;
3
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0C1D"}
@@ -0,0 +1,46 @@
1
+ import chalk from 'chalk';
2
+ import { getIndexEntry, loadIndex } from '../utils/index-cache.js';
3
+ import { isTextOutput } from '../core/cli-context.js';
4
+ import { printCommandResult, printCommandError } from '../utils/output.js';
5
+ import { runCommand } from '../utils/run-command.js';
6
+ export function registerShowCommand(program) {
7
+ program
8
+ .command('show')
9
+ .description('Show details for an item from the last list')
10
+ .argument('<index>', 'Index number from the last list output')
11
+ .action(runCommand(async (indexStr) => {
12
+ const index = parseInt(indexStr, 10);
13
+ if (isNaN(index) || index < 1) {
14
+ printCommandError(new Error('Index must be a positive number'), {
15
+ command: 'show',
16
+ });
17
+ }
18
+ const entry = await getIndexEntry(index);
19
+ if (!entry) {
20
+ const all = await loadIndex();
21
+ if (all.length === 0) {
22
+ printCommandError(new Error('No index cache found. Run a list command first (e.g. `npx karis brand list`).'), {
23
+ command: 'show',
24
+ });
25
+ }
26
+ else {
27
+ printCommandError(new Error(`Index ${index} out of range. Last list had ${all.length} item(s).`), {
28
+ command: 'show',
29
+ });
30
+ }
31
+ }
32
+ if (isTextOutput()) {
33
+ console.log();
34
+ console.log(chalk.bold(`[${index}] ${entry.label}`));
35
+ console.log();
36
+ for (const [key, value] of Object.entries(entry)) {
37
+ if (key === 'label')
38
+ continue;
39
+ console.log(` ${chalk.dim(key + ':')} ${value}`);
40
+ }
41
+ console.log();
42
+ }
43
+ printCommandResult(entry, { command: 'show' });
44
+ }));
45
+ }
46
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,SAAS,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,iBAAiB,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,EAAE;gBAC9D,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,iBAAiB,CAAC,IAAI,KAAK,CAAC,+EAA+E,CAAC,EAAE;oBAC5G,OAAO,EAAE,MAAM;iBAChB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,iBAAiB,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,gCAAgC,GAAG,CAAC,MAAM,WAAW,CAAC,EAAE;oBAChG,OAAO,EAAE,MAAM;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,YAAY,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,KAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAM,CAAC,EAAE,CAAC;gBAClD,IAAI,GAAG,KAAK,OAAO;oBAAE,SAAS;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerToolsCommand(program: Command): void;
3
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuGpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD3D"}
@@ -0,0 +1,139 @@
1
+ import chalk from 'chalk';
2
+ import { KarisClient } from '../core/client.js';
3
+ import { isTextOutput } from '../core/cli-context.js';
4
+ import { printCommandResult } from '../utils/output.js';
5
+ import { runCommand } from '../utils/run-command.js';
6
+ const TOOL_GROUPS = [
7
+ {
8
+ label: 'Web',
9
+ tools: [
10
+ { cli: 'karis web search <query>', description: 'Search the web' },
11
+ { cli: 'karis web read <url> [--focus <kw>]', description: 'Read a webpage' },
12
+ ],
13
+ },
14
+ {
15
+ label: 'X / Twitter',
16
+ tools: [
17
+ { cli: 'karis x search <query>', description: 'Search X posts' },
18
+ { cli: 'karis x tweets <username>', description: "Get user's tweets" },
19
+ ],
20
+ },
21
+ {
22
+ label: 'Reddit',
23
+ tools: [
24
+ { cli: 'karis reddit search <query>', description: 'Search Reddit' },
25
+ { cli: 'karis reddit posts <subreddit>', description: 'Browse subreddit' },
26
+ { cli: 'karis reddit comments <post_id>', description: 'Get comment tree' },
27
+ { cli: 'karis reddit rules <subreddit>', description: 'Get subreddit rules' },
28
+ ],
29
+ },
30
+ {
31
+ label: 'YouTube',
32
+ tools: [
33
+ { cli: 'karis youtube search <query>', description: 'Search YouTube' },
34
+ ],
35
+ },
36
+ {
37
+ label: 'Brand & GEO',
38
+ tools: [
39
+ { cli: 'karis brand info', description: 'Brand profile' },
40
+ { cli: 'karis geo data --domain <domain>', description: 'GEO visibility' },
41
+ ],
42
+ },
43
+ {
44
+ label: 'Utility',
45
+ tools: [
46
+ { cli: 'karis schedule list', description: 'List scheduled tasks' },
47
+ { cli: 'karis memory recall [query]', description: 'Search saved facts' },
48
+ ],
49
+ },
50
+ ];
51
+ const PUBLIC_SKILLS = new Set([
52
+ 'ab-test-setup',
53
+ 'aeo-geo',
54
+ 'analytics-tracking',
55
+ 'brand-intel',
56
+ 'competitor-alternatives',
57
+ 'content-strategy',
58
+ 'copy-editing',
59
+ 'copywriting',
60
+ 'deep-research',
61
+ 'elonmusk-repost',
62
+ 'email-sequence',
63
+ 'find-influencer',
64
+ 'find-opportunity',
65
+ 'form-cro',
66
+ 'free-tool-strategy',
67
+ 'launch-strategy',
68
+ 'marketing-ideas',
69
+ 'marketing-psychology',
70
+ 'onboarding-cro',
71
+ 'page-cro',
72
+ 'page-seo',
73
+ 'paid-ads',
74
+ 'paywall-upgrade-cro',
75
+ 'popup-cro',
76
+ 'pricing-strategy',
77
+ 'programmatic-seo',
78
+ 'reddit-growth',
79
+ 'reddit-listening',
80
+ 'referral-program',
81
+ 'schema-markup',
82
+ 'seo-article',
83
+ 'seo-audit',
84
+ 'signup-flow-cro',
85
+ 'social-content-repurpose',
86
+ 'social-content-strategy',
87
+ 'social-signal',
88
+ 'youtube-insights',
89
+ ]);
90
+ export function registerToolsCommand(program) {
91
+ const tools = program.command('tools').description('Discover available tools and skills');
92
+ tools
93
+ .command('list')
94
+ .description('List available tools and skills')
95
+ .option('--tools-only', 'Show only tools')
96
+ .option('--skills-only', 'Show only skills')
97
+ .option('--all', 'Include internal/builder skills')
98
+ .action(runCommand(async (options) => {
99
+ const client = await KarisClient.create();
100
+ const result = await client.listTools();
101
+ const skills = options.all
102
+ ? result.data.skills
103
+ : result.data.skills.filter((s) => PUBLIC_SKILLS.has(s.slug));
104
+ if (isTextOutput()) {
105
+ if (!options.skillsOnly) {
106
+ console.log();
107
+ console.log(chalk.bold.underline('Tools (Layer 1)'));
108
+ for (const group of TOOL_GROUPS) {
109
+ console.log();
110
+ console.log(chalk.bold(` ${group.label}`));
111
+ for (const t of group.tools) {
112
+ console.log(` ${chalk.cyan(t.cli.padEnd(42))} ${chalk.dim(t.description)}`);
113
+ }
114
+ }
115
+ console.log();
116
+ console.log(chalk.dim(` ${result.data.tools.length} tools available`));
117
+ }
118
+ if (!options.toolsOnly) {
119
+ console.log();
120
+ console.log(chalk.bold.underline('Skills (Layer 2 — use via karis chat --skill <name>)'));
121
+ console.log();
122
+ for (const s of skills) {
123
+ const desc = s.description ? s.description.slice(0, 80) : '';
124
+ console.log(` ${chalk.cyan(s.slug.padEnd(28))} ${chalk.dim(desc)}`);
125
+ }
126
+ console.log();
127
+ console.log(chalk.dim(` ${skills.length} skills available`));
128
+ if (!options.all && result.data.skills.length > skills.length) {
129
+ console.log(chalk.dim(` (${result.data.skills.length - skills.length} internal skills hidden — use --all to show)`));
130
+ }
131
+ }
132
+ console.log();
133
+ }
134
+ else {
135
+ printCommandResult({ ...result.data, skills });
136
+ }
137
+ }));
138
+ }
139
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerWebCommand(program: Command): void;
3
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyBzD"}
@@ -0,0 +1,29 @@
1
+ import { KarisClient } from '../core/client.js';
2
+ import { renderToolResult } from '../utils/formatter.js';
3
+ import { runCommand } from '../utils/run-command.js';
4
+ export function registerWebCommand(program) {
5
+ const web = program.command('web').description('Web search and page reading');
6
+ web
7
+ .command('search')
8
+ .description('Search the web for current information')
9
+ .argument('<query>', 'Search query')
10
+ .action(runCommand(async (query) => {
11
+ const client = await KarisClient.create();
12
+ const result = await client.toolDirect('search_web', { query });
13
+ renderToolResult(result);
14
+ }));
15
+ web
16
+ .command('read')
17
+ .description('Fetch and extract text from a URL')
18
+ .argument('<url>', 'URL to read')
19
+ .option('--focus <keyword>', 'Extract only sections relevant to keyword')
20
+ .action(runCommand(async (url, options) => {
21
+ const args = { url };
22
+ if (options.focus)
23
+ args.focus = options.focus;
24
+ const client = await KarisClient.create();
25
+ const result = await client.toolDirect('read_webpage', args);
26
+ renderToolResult(result);
27
+ }));
28
+ }
29
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAE9E,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;SACnC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC,CAAC;IAEN,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mCAAmC,CAAC;SAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;SAChC,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;SACxE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,GAAW,EAAE,OAAO,EAAE,EAAE;QAChD,MAAM,IAAI,GAA4B,EAAE,GAAG,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC7D,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerXCommand(program: Command): void;
3
+ //# sourceMappingURL=x.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x.d.ts","sourceRoot":"","sources":["../../src/commands/x.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyBvD"}
@@ -0,0 +1,29 @@
1
+ import { KarisClient } from '../core/client.js';
2
+ import { renderToolResult } from '../utils/formatter.js';
3
+ import { runCommand } from '../utils/run-command.js';
4
+ export function registerXCommand(program) {
5
+ const x = program.command('x').description('X / Twitter search and data');
6
+ x
7
+ .command('search')
8
+ .description('Search X for posts matching a query')
9
+ .argument('<query>', 'Search query')
10
+ .option('--max-results <n>', 'Max results (1-10, default 5)', parseInt)
11
+ .action(runCommand(async (query, options) => {
12
+ const args = { query };
13
+ if (options.maxResults)
14
+ args.max_results = options.maxResults;
15
+ const client = await KarisClient.create();
16
+ const result = await client.toolDirect('search_x', args);
17
+ renderToolResult(result);
18
+ }));
19
+ x
20
+ .command('tweets')
21
+ .description('Get recent tweets from a user')
22
+ .argument('<username>', 'Username (without @)')
23
+ .action(runCommand(async (username) => {
24
+ const client = await KarisClient.create();
25
+ const result = await client.toolDirect('get_user_tweets', { username });
26
+ renderToolResult(result);
27
+ }));
28
+ }
29
+ //# sourceMappingURL=x.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x.js","sourceRoot":"","sources":["../../src/commands/x.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAE1E,CAAC;SACE,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,QAAQ,CAAC;SACtE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAa,EAAE,OAAO,EAAE,EAAE;QAClD,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC,CAAC;IAEN,CAAC;SACE,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;SAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}