@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
package/bin/karis.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '../dist/index.js';
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBrandCustomizeCommand(program: Command): void;
3
+ export declare function runBrandCustomize(options: {
4
+ brand?: string;
5
+ name?: string;
6
+ description?: string;
7
+ category?: string;
8
+ industries?: string;
9
+ audience?: string;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=customize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customize.d.ts","sourceRoot":"","sources":["../../../src/commands/brand/customize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmBpE;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GhB"}
@@ -0,0 +1,115 @@
1
+ import chalk from 'chalk';
2
+ import { KarisClient } from '../../core/client.js';
3
+ import { createAuthRequiredError } from '../../core/errors.js';
4
+ import { isTextOutput } from '../../core/cli-context.js';
5
+ import { InteractiveSession } from '../../utils/interactive.js';
6
+ import { runCommand } from '../../utils/run-command.js';
7
+ import ora from 'ora';
8
+ export function registerBrandCustomizeCommand(program) {
9
+ program
10
+ .command('customize')
11
+ .description('Customize brand profile (override AI-generated data)')
12
+ .argument('[brand]', 'Brand name, domain, or ID to customize (default: current)')
13
+ .option('-n, --name <name>', 'Override brand name')
14
+ .option('-d, --description <desc>', 'Override one-liner description')
15
+ .option('-c, --category <category>', 'Override category')
16
+ .option('-i, --industries <industries>', 'Override industries (comma-separated)')
17
+ .option('-a, --audience <audience>', 'Override primary audience')
18
+ .action(runCommand(async (brand, options) => {
19
+ await runBrandCustomize({ brand, ...options });
20
+ }));
21
+ }
22
+ export async function runBrandCustomize(options) {
23
+ const client = await KarisClient.create();
24
+ if (!client.hasApiKey()) {
25
+ throw createAuthRequiredError();
26
+ }
27
+ const brands = await client.listBrands();
28
+ if (brands.length === 0) {
29
+ console.log(chalk.yellow('No brands found. Run: npx karis brand init <domain>'));
30
+ return;
31
+ }
32
+ // Find target brand
33
+ let targetBrand = options.brand;
34
+ let brandId;
35
+ if (targetBrand) {
36
+ const match = brands.find(b => b.id === targetBrand ||
37
+ b.name?.toLowerCase() === targetBrand.toLowerCase() ||
38
+ b.domain.toLowerCase() === targetBrand.toLowerCase());
39
+ if (!match) {
40
+ console.log(chalk.red(`Brand not found: ${targetBrand}`));
41
+ return;
42
+ }
43
+ brandId = match.id;
44
+ }
45
+ else {
46
+ // Use current selection
47
+ const current = await client.getBrand();
48
+ if (!current) {
49
+ console.log(chalk.yellow('No brand selected. Specify a brand to customize.'));
50
+ return;
51
+ }
52
+ brandId = current.id;
53
+ }
54
+ // Collect customizations from CLI options or prompt
55
+ const customizations = {};
56
+ if (options.name)
57
+ customizations.name = options.name;
58
+ if (options.category)
59
+ customizations.category = options.category;
60
+ if (options.industries) {
61
+ customizations.industries = options.industries.split(',').map(s => s.trim());
62
+ }
63
+ if (options.audience) {
64
+ customizations.audience = { primary: options.audience };
65
+ }
66
+ if (options.description) {
67
+ // Store in a way that updateBrand can use
68
+ customizations.name = options.description; // This is a hack, need proper field
69
+ }
70
+ // If no CLI options, prompt interactively
71
+ if (Object.keys(customizations).length === 0 && isTextOutput()) {
72
+ const session = new InteractiveSession();
73
+ console.log(chalk.bold('\nCustomize Brand\n'));
74
+ const name = await session.ask('Brand name (leave empty to skip)');
75
+ if (name)
76
+ customizations.name = name;
77
+ const category = await session.ask('Category (e.g., SaaS, AI)');
78
+ if (category)
79
+ customizations.category = category;
80
+ const industries = await session.ask('Industries (comma-separated, e.g., AI, SaaS)');
81
+ if (industries) {
82
+ customizations.industries = industries.split(',').map(s => s.trim());
83
+ }
84
+ const audience = await session.ask('Primary audience');
85
+ if (audience) {
86
+ customizations.audience = { primary: audience };
87
+ }
88
+ session.close();
89
+ }
90
+ if (Object.keys(customizations).length === 0) {
91
+ console.log(chalk.yellow('No customizations provided.'));
92
+ return;
93
+ }
94
+ const spinner = ora(`Applying customizations...`).start();
95
+ try {
96
+ const profile = await client.updateBrand({
97
+ ...customizations,
98
+ // Map to expected format
99
+ category: customizations.category,
100
+ categories: customizations.categories,
101
+ industries: customizations.industries,
102
+ audience: customizations.audience,
103
+ });
104
+ spinner.succeed('Brand customized.');
105
+ console.log();
106
+ console.log(chalk.bold(`Updated: ${profile.name || profile.domain}`));
107
+ console.log(chalk.dim('Run: npx karis brand show to view details'));
108
+ console.log();
109
+ }
110
+ catch (error) {
111
+ spinner.fail('Failed to customize brand.');
112
+ throw error;
113
+ }
114
+ }
115
+ //# sourceMappingURL=customize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customize.js","sourceRoot":"","sources":["../../../src/commands/brand/customize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBrandInfoCommand(program: Command): void;
3
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/brand/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS/D"}
@@ -0,0 +1,14 @@
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 registerBrandInfoCommand(program) {
5
+ program
6
+ .command('info')
7
+ .description('Get brand info via agent tool (Layer 1)')
8
+ .action(runCommand(async () => {
9
+ const client = await KarisClient.create();
10
+ const result = await client.toolDirect('get_brand_info', {});
11
+ renderToolResult(result);
12
+ }));
13
+ }
14
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/brand/info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yCAAyC,CAAC;SACtD,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,7 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBrandInitCommand(program: Command): void;
3
+ export declare function runBrandInit(options: {
4
+ domain?: string;
5
+ force?: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/brand/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS/D;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwH/F"}
@@ -0,0 +1,133 @@
1
+ import chalk from 'chalk';
2
+ import { KarisClient } from '../../core/client.js';
3
+ import { emitStructuredEvent, printCommandResult, success, warning, section } from '../../utils/output.js';
4
+ import { createAuthRequiredError } from '../../core/errors.js';
5
+ import { isTextOutput } from '../../core/cli-context.js';
6
+ import { InteractiveSession } from '../../utils/interactive.js';
7
+ import { runCommand } from '../../utils/run-command.js';
8
+ import ora from 'ora';
9
+ export function registerBrandInitCommand(program) {
10
+ program
11
+ .command('init')
12
+ .description('Create brand profile from domain')
13
+ .argument('[domain]', 'Domain to analyze')
14
+ .option('-f, --force', 'Overwrite existing brand profile without prompting')
15
+ .action(runCommand(async (domain, options) => {
16
+ await runBrandInit({ domain, force: options?.force });
17
+ }));
18
+ }
19
+ export async function runBrandInit(options) {
20
+ const client = await KarisClient.create();
21
+ if (!client.hasApiKey()) {
22
+ throw createAuthRequiredError();
23
+ }
24
+ const session = new InteractiveSession();
25
+ // Check if brand already exists
26
+ const existing = await client.getBrand();
27
+ if (existing && !options.force) {
28
+ if (isTextOutput()) {
29
+ console.log(warning(`Brand profile already exists for ${chalk.bold(existing.name || existing.domain)}.`));
30
+ }
31
+ else {
32
+ emitStructuredEvent({
33
+ type: 'status',
34
+ stage: 'brand_exists',
35
+ name: existing.name || existing.domain,
36
+ domain: existing.domain,
37
+ });
38
+ }
39
+ const overwrite = await session.ask('Overwrite? (y/N)', { defaultValue: 'N' });
40
+ if (overwrite.toLowerCase() !== 'y') {
41
+ session.close();
42
+ printCommandResult({
43
+ action: 'brand.init',
44
+ cancelled: true,
45
+ reason: 'overwrite_declined',
46
+ prompts: session.getTranscript(),
47
+ existing_brand: {
48
+ name: existing.name,
49
+ domain: existing.domain,
50
+ },
51
+ });
52
+ return;
53
+ }
54
+ }
55
+ if (isTextOutput()) {
56
+ section('Brand Profile Setup');
57
+ console.log();
58
+ console.log(chalk.dim(' We\'ll analyze your domain using Brandfetch + AI to generate a complete brand profile.'));
59
+ console.log();
60
+ }
61
+ else {
62
+ emitStructuredEvent({
63
+ type: 'status',
64
+ stage: 'setup',
65
+ message: 'Collecting brand init inputs',
66
+ });
67
+ }
68
+ const domain = options.domain || await session.ask('Domain (e.g., karis.im)');
69
+ if (!domain) {
70
+ session.close();
71
+ throw new Error('Domain is required.');
72
+ }
73
+ session.close();
74
+ if (isTextOutput()) {
75
+ console.log();
76
+ }
77
+ else {
78
+ emitStructuredEvent({
79
+ type: 'status',
80
+ stage: 'analyzing',
81
+ domain,
82
+ message: 'Analyzing brand assets and generating profile',
83
+ });
84
+ }
85
+ const spinner = isTextOutput()
86
+ ? ora('Analyzing brand assets and generating profile...').start()
87
+ : null;
88
+ try {
89
+ const profile = await client.createBrand(domain);
90
+ spinner?.succeed('Brand profile created.');
91
+ if (isTextOutput()) {
92
+ console.log();
93
+ console.log(success(chalk.bold(`Brand profile for ${profile.name || domain} is ready.`)));
94
+ console.log();
95
+ // Show quick summary
96
+ console.log(chalk.dim('Quick Summary:'));
97
+ if (profile.name)
98
+ console.log(chalk.dim(` Name: ${profile.name}`));
99
+ if (profile.description)
100
+ console.log(chalk.dim(` Description: ${profile.description}`));
101
+ if (profile.category)
102
+ console.log(chalk.dim(` Category: ${profile.category}`));
103
+ if (profile.industries && profile.industries.length > 0) {
104
+ console.log(chalk.dim(` Industries: ${profile.industries.join(', ')}`));
105
+ }
106
+ console.log();
107
+ console.log(chalk.dim(` View full profile: ${chalk.cyan('npx karis brand show')}`));
108
+ console.log(chalk.dim(` Chat with CMO: ${chalk.cyan('npx karis chat')}`));
109
+ console.log();
110
+ }
111
+ else {
112
+ emitStructuredEvent({
113
+ type: 'status',
114
+ stage: 'completed',
115
+ domain,
116
+ brand_name: profile.name || domain,
117
+ });
118
+ }
119
+ printCommandResult({
120
+ action: 'brand.init',
121
+ cancelled: false,
122
+ domain,
123
+ prompts: session.getTranscript(),
124
+ profile,
125
+ });
126
+ return;
127
+ }
128
+ catch (error) {
129
+ spinner?.fail('Failed to create brand profile.');
130
+ throw error;
131
+ }
132
+ }
133
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/brand/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBrandListCommand(program: Command): void;
3
+ export declare function runBrandList(): Promise<void>;
4
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/brand/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO/D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAsClD"}
@@ -0,0 +1,46 @@
1
+ import chalk from 'chalk';
2
+ import { KarisClient } from '../../core/client.js';
3
+ import { createAuthRequiredError } from '../../core/errors.js';
4
+ import { runCommand } from '../../utils/run-command.js';
5
+ import { saveIndex } from '../../utils/index-cache.js';
6
+ export function registerBrandListCommand(program) {
7
+ program
8
+ .command('list')
9
+ .description('List all brands')
10
+ .action(runCommand(async () => {
11
+ await runBrandList();
12
+ }));
13
+ }
14
+ export async function runBrandList() {
15
+ const client = await KarisClient.create();
16
+ if (!client.hasApiKey()) {
17
+ throw createAuthRequiredError();
18
+ }
19
+ const brands = await client.listBrands();
20
+ if (brands.length === 0) {
21
+ console.log(chalk.yellow('No brands found. Run: npx karis brand init <domain>'));
22
+ return;
23
+ }
24
+ // Get current selection
25
+ const current = await client.getBrand();
26
+ const currentId = current?.id;
27
+ console.log(chalk.bold('\nYour Brands:\n'));
28
+ brands.forEach((brand, i) => {
29
+ const isSelected = brand.id === currentId;
30
+ const marker = isSelected ? chalk.green('✓') : ' ';
31
+ const name = isSelected ? chalk.bold(brand.name || brand.domain) : brand.name || brand.domain;
32
+ console.log(` ${marker} ${name} (${brand.domain})`);
33
+ });
34
+ console.log();
35
+ // Save index cache for `karis show <n>`
36
+ await saveIndex(brands.map(b => ({
37
+ id: b.id,
38
+ label: b.name || b.domain,
39
+ type: 'brand',
40
+ domain: b.domain,
41
+ })));
42
+ if (!current) {
43
+ console.log(chalk.dim('No brand selected. Run: npx karis brand select <name>'));
44
+ }
45
+ }
46
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/brand/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;IAE1C,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QACxB,MAAM,uBAAuB,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,EAAE,EAAE,CAAC;IAE9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,wCAAwC;IACxC,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM;QACzB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBrandRefreshCommand(program: Command): void;
3
+ export declare function runBrandRefresh(options: {
4
+ brand?: string;
5
+ scope?: string;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/commands/brand/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASlE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDhG"}
@@ -0,0 +1,63 @@
1
+ import chalk from 'chalk';
2
+ import { KarisClient } from '../../core/client.js';
3
+ import { createAuthRequiredError } from '../../core/errors.js';
4
+ import { runCommand } from '../../utils/run-command.js';
5
+ import ora from 'ora';
6
+ export function registerBrandRefreshCommand(program) {
7
+ program
8
+ .command('refresh')
9
+ .description('Refresh brand data from source (re-fetch from Brandfetch)')
10
+ .argument('[brand]', 'Brand name, domain, or ID to refresh (default: current)')
11
+ .option('-s, --scope <scope>', 'Refresh scope: profile, clusters, kit, all', 'all')
12
+ .action(runCommand(async (brand, options) => {
13
+ await runBrandRefresh({ brand, scope: options?.scope });
14
+ }));
15
+ }
16
+ export async function runBrandRefresh(options) {
17
+ const client = await KarisClient.create();
18
+ if (!client.hasApiKey()) {
19
+ throw createAuthRequiredError();
20
+ }
21
+ const brands = await client.listBrands();
22
+ if (brands.length === 0) {
23
+ console.log(chalk.yellow('No brands found. Run: npx karis brand init <domain>'));
24
+ return;
25
+ }
26
+ // Find target brand
27
+ let targetBrand = options.brand;
28
+ let brandId;
29
+ if (targetBrand) {
30
+ const match = brands.find(b => b.id === targetBrand ||
31
+ b.name?.toLowerCase() === targetBrand.toLowerCase() ||
32
+ b.domain.toLowerCase() === targetBrand.toLowerCase());
33
+ if (!match) {
34
+ console.log(chalk.red(`Brand not found: ${targetBrand}`));
35
+ return;
36
+ }
37
+ brandId = match.id;
38
+ }
39
+ else {
40
+ // Use current selection
41
+ const current = await client.getBrand();
42
+ if (!current) {
43
+ console.log(chalk.yellow('No brand selected. Specify a brand to refresh.'));
44
+ return;
45
+ }
46
+ brandId = current.id;
47
+ }
48
+ const spinner = ora(`Refreshing brand data...`).start();
49
+ try {
50
+ const scopes = options.scope ? [options.scope] : ['all'];
51
+ const profile = await client.refreshBrand(brandId, scopes);
52
+ spinner.succeed('Brand refreshed.');
53
+ console.log();
54
+ console.log(chalk.bold(`Updated: ${profile.name || profile.domain}`));
55
+ console.log(chalk.dim('Run: npx karis brand show to view details'));
56
+ console.log();
57
+ }
58
+ catch (error) {
59
+ spinner.fail('Failed to refresh brand.');
60
+ throw error;
61
+ }
62
+ }
63
+ //# sourceMappingURL=refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/commands/brand/refresh.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBrandSelectCommand(program: Command): void;
3
+ export declare function runBrandSelect(options: {
4
+ brand?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/commands/brand/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQjE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmG/E"}
@@ -0,0 +1,104 @@
1
+ import chalk from 'chalk';
2
+ import { KarisClient } from '../../core/client.js';
3
+ import { success, warning } from '../../utils/output.js';
4
+ import { createAuthRequiredError } from '../../core/errors.js';
5
+ import { isTextOutput } from '../../core/cli-context.js';
6
+ import { InteractiveSession } from '../../utils/interactive.js';
7
+ import { runCommand } from '../../utils/run-command.js';
8
+ import ora from 'ora';
9
+ export function registerBrandSelectCommand(program) {
10
+ program
11
+ .command('select')
12
+ .description('Switch to a different brand')
13
+ .argument('[brand]', 'Brand name or domain to select')
14
+ .action(runCommand(async (brand) => {
15
+ await runBrandSelect({ brand });
16
+ }));
17
+ }
18
+ export async function runBrandSelect(options) {
19
+ const client = await KarisClient.create();
20
+ if (!client.hasApiKey()) {
21
+ throw createAuthRequiredError();
22
+ }
23
+ const session = new InteractiveSession();
24
+ // Get all brands
25
+ const brands = await client.listBrands();
26
+ if (brands.length === 0) {
27
+ session.close();
28
+ console.log(chalk.yellow('No brands found. Run: npx karis brand init <domain>'));
29
+ return;
30
+ }
31
+ // Get current selection
32
+ const current = await client.getBrand();
33
+ const currentId = current?.id;
34
+ let selectedBrand = options.brand;
35
+ if (!selectedBrand) {
36
+ // Show list and prompt
37
+ console.log(chalk.bold('\nSelect a brand:\n'));
38
+ brands.forEach((brand, i) => {
39
+ const isSelected = brand.id === currentId;
40
+ const marker = isSelected ? chalk.green('✓') : ' ';
41
+ const name = isSelected ? chalk.bold(brand.name || brand.domain) : brand.name || brand.domain;
42
+ console.log(` ${chalk.gray(`${i + 1}.`)} ${name} (${brand.domain})${isSelected ? ' (current)' : ''}`);
43
+ });
44
+ console.log();
45
+ const idx = await session.ask('Enter number or name', { defaultValue: '' });
46
+ if (!idx) {
47
+ session.close();
48
+ return;
49
+ }
50
+ // Parse input - could be number or name
51
+ const num = parseInt(idx, 10);
52
+ if (!isNaN(num) && num > 0 && num <= brands.length) {
53
+ selectedBrand = brands[num - 1].id;
54
+ }
55
+ else {
56
+ // Try to match by name or domain
57
+ const match = brands.find(b => b.name?.toLowerCase() === idx.toLowerCase() ||
58
+ b.domain.toLowerCase() === idx.toLowerCase());
59
+ if (match) {
60
+ selectedBrand = match.id;
61
+ }
62
+ else {
63
+ session.close();
64
+ console.log(warning(`Brand not found: ${idx}`));
65
+ return;
66
+ }
67
+ }
68
+ }
69
+ else if (selectedBrand) {
70
+ // Check if input is brand ID or name
71
+ const input = selectedBrand;
72
+ const match = brands.find(b => b.id === input ||
73
+ b.name?.toLowerCase() === input.toLowerCase() ||
74
+ b.domain.toLowerCase() === input.toLowerCase());
75
+ if (!match) {
76
+ session.close();
77
+ console.log(warning(`Brand not found: ${input}`));
78
+ return;
79
+ }
80
+ selectedBrand = match.id;
81
+ }
82
+ session.close();
83
+ if (!selectedBrand) {
84
+ console.log(chalk.yellow('No brand selected.'));
85
+ return;
86
+ }
87
+ if (selectedBrand === currentId) {
88
+ console.log(chalk.yellow('Already using this brand.'));
89
+ return;
90
+ }
91
+ const spinner = isTextOutput() ? ora('Switching brand...').start() : null;
92
+ try {
93
+ const profile = await client.setBrandSelection(selectedBrand);
94
+ spinner?.succeed('Brand switched.');
95
+ console.log();
96
+ console.log(success(chalk.bold(`Now using: ${profile.name || profile.domain}`)));
97
+ console.log();
98
+ }
99
+ catch (error) {
100
+ spinner?.fail('Failed to switch brand.');
101
+ throw error;
102
+ }
103
+ }
104
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/commands/brand/select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerBrandShowCommand(program: Command): void;
3
+ export declare function runBrandShow(): Promise<void>;
4
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/brand/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO/D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA+HlD"}