@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,122 @@
1
+ import chalk from 'chalk';
2
+ import { KarisClient } from '../../core/client.js';
3
+ import { createAuthRequiredError, createNoBrandError } from '../../core/errors.js';
4
+ import { isTextOutput } from '../../core/cli-context.js';
5
+ import { printCommandResult } from '../../utils/output.js';
6
+ import { runCommand } from '../../utils/run-command.js';
7
+ export function registerBrandShowCommand(program) {
8
+ program
9
+ .command('show')
10
+ .description('Display current brand profile')
11
+ .action(runCommand(async () => {
12
+ await runBrandShow();
13
+ }));
14
+ }
15
+ export async function runBrandShow() {
16
+ const client = await KarisClient.create();
17
+ if (!client.hasApiKey()) {
18
+ throw createAuthRequiredError();
19
+ }
20
+ const profile = await client.getBrand();
21
+ if (!profile) {
22
+ throw createNoBrandError();
23
+ }
24
+ if (isTextOutput()) {
25
+ console.log();
26
+ console.log(chalk.bold(`Brand Profile — ${profile.name || profile.domain}`));
27
+ console.log();
28
+ // Basic Info
29
+ console.log(` ${chalk.dim('Name:')} ${chalk.bold(profile.name || 'N/A')}`);
30
+ console.log(` ${chalk.dim('Domain:')} ${profile.domain}`);
31
+ if (profile.claimed !== undefined) {
32
+ console.log(` ${chalk.dim('Claimed:')} ${profile.claimed ? chalk.green('Yes') : chalk.yellow('No')}`);
33
+ }
34
+ if (profile.description) {
35
+ console.log();
36
+ console.log(` ${chalk.dim('Description:')}`);
37
+ console.log(` ${profile.description}`);
38
+ }
39
+ if (profile.longDescription) {
40
+ console.log();
41
+ console.log(` ${chalk.dim('Long Description:')}`);
42
+ const lines = profile.longDescription.split('\n');
43
+ lines.forEach(line => console.log(` ${line}`));
44
+ }
45
+ // LLM-generated fields
46
+ if (profile.category) {
47
+ console.log();
48
+ console.log(` ${chalk.dim('Category:')} ${profile.category}`);
49
+ }
50
+ if (profile.industries && profile.industries.length > 0) {
51
+ console.log(` ${chalk.dim('Industries:')} ${profile.industries.join(', ')}`);
52
+ }
53
+ if (profile.audience) {
54
+ if (profile.audience.primary) {
55
+ console.log(` ${chalk.dim('Audience:')} ${profile.audience.primary}`);
56
+ if (profile.audience.secondary) {
57
+ console.log(` ${chalk.dim(' ')} ${chalk.dim('(secondary: ' + profile.audience.secondary + ')')}`);
58
+ }
59
+ }
60
+ }
61
+ if (profile.value_propositions && profile.value_propositions.length > 0) {
62
+ console.log();
63
+ console.log(` ${chalk.dim('Value Propositions:')}`);
64
+ profile.value_propositions.forEach(vp => {
65
+ console.log(` ${chalk.cyan('•')} ${vp}`);
66
+ });
67
+ }
68
+ if (profile.keywords && profile.keywords.length > 0) {
69
+ console.log();
70
+ console.log(` ${chalk.dim('Keywords:')} ${profile.keywords.join(', ')}`);
71
+ }
72
+ if (profile.competitors && profile.competitors.length > 0) {
73
+ console.log();
74
+ console.log(` ${chalk.dim('Competitors:')}`);
75
+ for (const comp of profile.competitors) {
76
+ console.log(` ${chalk.cyan('•')} ${comp.name.padEnd(20)} ${chalk.dim(comp.domain)}`);
77
+ }
78
+ }
79
+ if (profile.channels && profile.channels.length > 0) {
80
+ console.log();
81
+ console.log(` ${chalk.dim('Channels:')} ${profile.channels.join(', ')}`);
82
+ }
83
+ if (profile.tone) {
84
+ console.log(` ${chalk.dim('Tone:')} ${profile.tone}`);
85
+ }
86
+ // Brand Assets
87
+ if (profile.colors && profile.colors.length > 0) {
88
+ console.log();
89
+ console.log(` ${chalk.dim('Brand Colors:')}`);
90
+ profile.colors.slice(0, 5).forEach(color => {
91
+ console.log(` ${chalk.hex(color.hex)('█')} ${color.hex.padEnd(10)} ${chalk.dim(color.type)}`);
92
+ });
93
+ if (profile.colors.length > 5) {
94
+ console.log(` ${chalk.dim(`... and ${profile.colors.length - 5} more`)}`);
95
+ }
96
+ }
97
+ if (profile.logos && profile.logos.length > 0) {
98
+ console.log();
99
+ console.log(` ${chalk.dim('Logos:')} ${profile.logos.length} available`);
100
+ }
101
+ if (profile.fonts && profile.fonts.length > 0) {
102
+ console.log(` ${chalk.dim('Fonts:')} ${profile.fonts.map(f => f.name).join(', ')}`);
103
+ }
104
+ if (profile.links && profile.links.length > 0) {
105
+ console.log();
106
+ console.log(` ${chalk.dim('Links:')}`);
107
+ profile.links.slice(0, 5).forEach(link => {
108
+ console.log(` ${chalk.cyan('•')} ${link.name.padEnd(15)} ${chalk.dim(link.url)}`);
109
+ });
110
+ if (profile.links.length > 5) {
111
+ console.log(` ${chalk.dim(`... and ${profile.links.length - 5} more`)}`);
112
+ }
113
+ }
114
+ console.log();
115
+ console.log(chalk.dim(' ── Synced across your team via Karis Platform'));
116
+ console.log();
117
+ console.log(chalk.dim(` Update: ${chalk.cyan('npx karis brand init <domain>')}`));
118
+ console.log();
119
+ }
120
+ printCommandResult(profile);
121
+ }
122
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/brand/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerCapabilitiesCommand(program: Command): void;
3
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsEpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmClE"}
@@ -0,0 +1,103 @@
1
+ import chalk from 'chalk';
2
+ import { isTextOutput } from '../core/cli-context.js';
3
+ import { printCommandResult } from '../utils/output.js';
4
+ import { runCommand } from '../utils/run-command.js';
5
+ const CAPABILITIES = {
6
+ name: 'karis',
7
+ version: '0.1.0',
8
+ description: 'Your AI-powered CMO — agent-first CLI for marketing automation',
9
+ layers: {
10
+ tool_runtime: {
11
+ layer: 1,
12
+ description: 'Tool Runtime — execute via ToolRegistry, no LLM. Returns JSON.',
13
+ usage: 'karis chat -t <tool> --tool-args \'{"key":"value"}\'',
14
+ response: 'JSON',
15
+ },
16
+ domain_agent: {
17
+ layer: 2,
18
+ description: 'Domain Agent — Full Agent guided by skill/tool hint',
19
+ usage: 'karis chat --skill <slug> "message" or karis chat -t <tool> "message"',
20
+ response: 'SSE stream',
21
+ },
22
+ cmo: {
23
+ layer: 3,
24
+ description: 'CMO — Full Agent with complete autonomy over tools and skills',
25
+ usage: 'karis chat "your message"',
26
+ response: 'SSE stream',
27
+ },
28
+ },
29
+ commands: {
30
+ chat: {
31
+ description: 'Chat with your CMO (default command)',
32
+ options: {
33
+ '-c, --conversation <id>': 'Continue existing conversation',
34
+ '--skill <name>': 'Layer 2: guide Domain Agent with a specific skill',
35
+ '-t, --tool <name>': 'Layer 1/2: specify a tool (with --tool-args → L1 Runtime; with message → L2 Agent)',
36
+ '--tool-args <json>': 'Layer 1: JSON args for Tool Runtime direct execution',
37
+ },
38
+ },
39
+ 'tools list': {
40
+ description: 'List available tools and skills',
41
+ options: {
42
+ '--tools-only': 'Show only tools',
43
+ '--skills-only': 'Show only skills',
44
+ },
45
+ },
46
+ 'brand init': { description: 'Initialize brand profile from domain' },
47
+ 'brand show': { description: 'Show current brand profile' },
48
+ 'brand list': { description: 'List all brands' },
49
+ capabilities: { description: 'Show this capabilities descriptor' },
50
+ },
51
+ examples: [
52
+ '# Layer 3 — CMO (complete autonomy)',
53
+ 'karis chat "Help me grow my SaaS product"',
54
+ '',
55
+ '# Layer 2 — Domain Agent (skill-guided)',
56
+ 'karis chat --skill reddit-growth "Write a post about my AI tool"',
57
+ '',
58
+ '# Layer 2 — Domain Agent (tool-guided)',
59
+ 'karis chat -t search_reddit "Find discussions about AI agents"',
60
+ '',
61
+ '# Layer 1 — Tool Runtime (direct execution, JSON)',
62
+ 'karis chat -t search_reddit --tool-args \'{"query":"AI agents","subreddit":"SaaS"}\'',
63
+ '',
64
+ '# Discovery',
65
+ 'karis tools list',
66
+ ],
67
+ };
68
+ export function registerCapabilitiesCommand(program) {
69
+ program
70
+ .command('capabilities')
71
+ .description('Show agent capabilities and Layer Cake architecture')
72
+ .action(runCommand(async () => {
73
+ if (isTextOutput()) {
74
+ console.log();
75
+ console.log(chalk.bold.underline('Karis — Layer Cake Architecture'));
76
+ console.log();
77
+ for (const [key, layer] of Object.entries(CAPABILITIES.layers)) {
78
+ const l = layer;
79
+ console.log(` ${chalk.cyan(`Layer ${l.layer}`)} ${chalk.bold(key.padEnd(10))} ${chalk.dim(l.description)}`);
80
+ console.log(` ${' '.repeat(18)} ${chalk.dim('Usage:')} ${l.usage}`);
81
+ console.log();
82
+ }
83
+ console.log(chalk.bold.underline('Examples'));
84
+ console.log();
85
+ for (const line of CAPABILITIES.examples) {
86
+ if (line.startsWith('#')) {
87
+ console.log(` ${chalk.dim(line)}`);
88
+ }
89
+ else if (line === '') {
90
+ console.log();
91
+ }
92
+ else {
93
+ console.log(` ${chalk.cyan(line)}`);
94
+ }
95
+ }
96
+ console.log();
97
+ }
98
+ else {
99
+ printCommandResult(CAPABILITIES);
100
+ }
101
+ }));
102
+ }
103
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerChatCommand(program: Command): void;
3
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6N1D"}
@@ -0,0 +1,336 @@
1
+ import chalk from 'chalk';
2
+ import * as readline from 'node:readline/promises';
3
+ import { Writable } from 'node:stream';
4
+ import { stdin as input, stdout as output } from 'node:process';
5
+ import { createAgent, renderChunk } from '../utils/agent-helper.js';
6
+ import { RemoteAgent } from '../core/remote-agent.js';
7
+ import { KarisClient } from '../core/client.js';
8
+ import { createUnsupportedModeError } from '../core/errors.js';
9
+ import { isJsonLinesOutput, isJsonOutput, isTextOutput, isYamlOutput } from '../core/cli-context.js';
10
+ import { printCommandResult, resetToolCallCounter } from '../utils/output.js';
11
+ import { runCommand } from '../utils/run-command.js';
12
+ import { getLastConversationId, setLastConversationId } from '../utils/config.js';
13
+ import { promptForm } from '../utils/form-prompt.js';
14
+ const silentOutput = new Writable({
15
+ write(_chunk, _encoding, callback) {
16
+ callback();
17
+ },
18
+ });
19
+ export function registerChatCommand(program) {
20
+ program
21
+ .command('chat')
22
+ .description('Talk to your CMO interactively or with a single prompt')
23
+ .argument('[prompt...]', 'Run a single prompt instead of interactive chat')
24
+ .option('-c, --conversation <id>', 'Continue an existing conversation')
25
+ .option('--skill <name>', 'Hint which skill to use, e.g. aeo-geo, reddit-listening')
26
+ .option('-t, --tool <name>', 'Use a specific tool, e.g. search_reddit, search_web')
27
+ .option('--tool-args <json>', 'JSON args for --tool (implies direct execution, returns JSON)')
28
+ .option('-y, --yes', 'Auto-confirm optional HITL forms with defaults')
29
+ .action(runCommand(async (promptParts = [], options) => {
30
+ const prompt = promptParts.join(' ').trim();
31
+ // Layer 1 (Tool Runtime): direct execution via ToolRegistry, no LLM
32
+ if (options.tool && options.toolArgs) {
33
+ let parsedArgs;
34
+ try {
35
+ parsedArgs = JSON.parse(options.toolArgs);
36
+ }
37
+ catch {
38
+ throw new Error('Invalid JSON in --tool-args. Must be a valid JSON object.');
39
+ }
40
+ const client = await KarisClient.create();
41
+ const result = await client.toolDirect(options.tool, parsedArgs);
42
+ if (isTextOutput()) {
43
+ console.log(JSON.stringify(result, null, 2));
44
+ }
45
+ else {
46
+ printCommandResult(result);
47
+ }
48
+ return;
49
+ }
50
+ const agent = await createAgent();
51
+ if (prompt) {
52
+ const [, brandContext] = await Promise.all([
53
+ initializeInteractiveConversation(agent, options),
54
+ agent.getBrandContext(),
55
+ ]);
56
+ await runSingleTurnChatWithBrand(agent, prompt, options, brandContext);
57
+ return;
58
+ }
59
+ const [, brandContext] = await Promise.all([
60
+ initializeInteractiveConversation(agent, options),
61
+ agent.getBrandContext(),
62
+ ]);
63
+ const transcript = [];
64
+ const promptOutput = isTextOutput() ? output : silentOutput;
65
+ if (isTextOutput()) {
66
+ console.log();
67
+ console.log(chalk.bold('CMO ready.') + chalk.dim(` Mode: ${agent.getDescription()}`));
68
+ if (agent instanceof RemoteAgent) {
69
+ console.log(chalk.dim(`Conversation: ${agent.getConversationId() || 'pending'}`));
70
+ }
71
+ if (brandContext) {
72
+ const brandMatch = brandContext.content.match(/Name: (.+)/);
73
+ const domainMatch = brandContext.content.match(/Domain: (.+)/);
74
+ const brandName = brandMatch?.[1] || 'Unknown';
75
+ const domain = domainMatch?.[1] || 'unknown.com';
76
+ console.log(chalk.dim(`Brand: ${brandName} (${domain})`));
77
+ }
78
+ else {
79
+ console.log(chalk.dim('(No brand context loaded)'));
80
+ }
81
+ console.log(chalk.dim('Type your message or "exit" to quit.\n'));
82
+ }
83
+ if ((isJsonOutput() || isYamlOutput()) && process.stdin.isTTY) {
84
+ throw createUnsupportedModeError('`karis chat --json` does not support interactive TTY sessions.', [
85
+ 'For interactive use, run `npx karis chat`',
86
+ 'For automation, consume stream events with `npx karis --jsonl chat`',
87
+ ]);
88
+ }
89
+ const rl = readline.createInterface({ input, output: promptOutput });
90
+ const messages = brandContext ? [brandContext] : [];
91
+ // Handle readline close event
92
+ let readlineClosed = false;
93
+ rl.on('close', () => {
94
+ readlineClosed = true;
95
+ });
96
+ // SIGINT handler for remote agent interrupt
97
+ const sigintHandler = async () => {
98
+ if (agent instanceof RemoteAgent) {
99
+ await agent.interrupt();
100
+ // Save conversation ID before exiting
101
+ const convId = agent.getConversationId();
102
+ if (convId) {
103
+ await setLastConversationId(convId);
104
+ }
105
+ }
106
+ if (isTextOutput()) {
107
+ console.log(chalk.dim('\n[interrupted]\n'));
108
+ }
109
+ rl.close();
110
+ process.exit(0);
111
+ };
112
+ process.on('SIGINT', sigintHandler);
113
+ try {
114
+ while (true) {
115
+ // Check if readline is closed before attempting to read
116
+ if (readlineClosed) {
117
+ break;
118
+ }
119
+ let userInput;
120
+ try {
121
+ userInput = await rl.question(isTextOutput() ? chalk.cyan('You: ') : '');
122
+ // Give time for close event to fire if stdin reached EOF
123
+ await new Promise(resolve => setImmediate(resolve));
124
+ if (readlineClosed) {
125
+ break;
126
+ }
127
+ }
128
+ catch (error) {
129
+ // Handle readline closure error
130
+ if (error instanceof Error && error.message.includes('closed')) {
131
+ break;
132
+ }
133
+ throw error;
134
+ }
135
+ if (!userInput.trim()) {
136
+ // If input is empty and stdin is not a TTY, likely EOF reached
137
+ if (!process.stdin.isTTY) {
138
+ break;
139
+ }
140
+ continue;
141
+ }
142
+ if (userInput.toLowerCase() === 'exit') {
143
+ // Save conversation ID for next session
144
+ if (agent instanceof RemoteAgent) {
145
+ const convId = agent.getConversationId();
146
+ if (convId) {
147
+ await setLastConversationId(convId);
148
+ }
149
+ }
150
+ if (isTextOutput()) {
151
+ console.log();
152
+ console.log(chalk.dim(`Session ended. Conversation saved. Run \`npx karis chat\` to continue.`));
153
+ console.log();
154
+ }
155
+ break;
156
+ }
157
+ messages.push({ role: 'user', content: userInput });
158
+ if (isTextOutput()) {
159
+ process.stdout.write(chalk.green('CMO: '));
160
+ }
161
+ let fullResponse = '';
162
+ let hasError = false;
163
+ const events = [];
164
+ resetToolCallCounter();
165
+ for await (const chunk of agent.streamChat(messages, undefined, options.skill, options.tool)) {
166
+ if (chunk.type === 'hitl_request' && agent instanceof RemoteAgent) {
167
+ await handleHitlChunk(chunk, agent, !!options.yes);
168
+ continue;
169
+ }
170
+ renderChunk(chunk);
171
+ events.push(chunk);
172
+ if (chunk.type === 'content' && chunk.content) {
173
+ fullResponse += chunk.content;
174
+ }
175
+ if (chunk.type === 'error') {
176
+ hasError = true;
177
+ }
178
+ }
179
+ if (hasError) {
180
+ rl.close();
181
+ process.exit(1);
182
+ }
183
+ if (agent instanceof RemoteAgent) {
184
+ const convId = agent.getConversationId();
185
+ if (convId) {
186
+ await setLastConversationId(convId);
187
+ }
188
+ }
189
+ if (fullResponse) {
190
+ messages.push({ role: 'assistant', content: fullResponse });
191
+ }
192
+ if (isJsonOutput() || isJsonLinesOutput() || isYamlOutput()) {
193
+ transcript.push({
194
+ user: userInput,
195
+ assistant: fullResponse,
196
+ events,
197
+ });
198
+ }
199
+ }
200
+ }
201
+ finally {
202
+ process.removeListener('SIGINT', sigintHandler);
203
+ rl.close();
204
+ }
205
+ if (isJsonOutput() || isYamlOutput()) {
206
+ printCommandResult({
207
+ conversation_id: agent instanceof RemoteAgent ? (agent.getConversationId() || undefined) : undefined,
208
+ mode: agent.getMode(),
209
+ transcript,
210
+ });
211
+ }
212
+ }));
213
+ }
214
+ async function handleHitlChunk(chunk, agent, autoConfirm) {
215
+ const conversationId = agent.getConversationId();
216
+ const hitlId = chunk.hitl_id;
217
+ if (!conversationId || !hitlId)
218
+ return;
219
+ const client = agent.getClient();
220
+ if (chunk.hitl_type === 'auth' && chunk.auth_url) {
221
+ if (isTextOutput()) {
222
+ console.log(chalk.yellow(`\n◆ Authorization required`));
223
+ console.log(chalk.dim(` Opening browser: ${chunk.auth_url}`));
224
+ }
225
+ try {
226
+ const openModule = await import('open');
227
+ await openModule.default(chunk.auth_url);
228
+ }
229
+ catch {
230
+ if (isTextOutput()) {
231
+ console.log(chalk.dim(` Could not open browser. Please visit the URL manually.`));
232
+ }
233
+ }
234
+ return;
235
+ }
236
+ if (chunk.form_data) {
237
+ const nonTty = !process.stdin.isTTY;
238
+ const payload = await promptForm(chunk.form_data, autoConfirm || nonTty);
239
+ try {
240
+ const result = await client.respondHitl(conversationId, hitlId, payload);
241
+ if (result?.data && typeof result.data === 'object' && 'code' in result.data) {
242
+ const code = result.data.code;
243
+ if (code === 'AGENT_NOT_FOUND' && isTextOutput()) {
244
+ console.log(chalk.dim(` [Agent restarting with HITL result...]`));
245
+ }
246
+ }
247
+ }
248
+ catch (err) {
249
+ if (isTextOutput()) {
250
+ console.error(chalk.red(`\n HITL response failed: ${err instanceof Error ? err.message : String(err)}`));
251
+ }
252
+ }
253
+ if (isTextOutput()) {
254
+ console.log();
255
+ }
256
+ }
257
+ }
258
+ async function initializeInteractiveConversation(agent, options) {
259
+ if (!(agent instanceof RemoteAgent)) {
260
+ return;
261
+ }
262
+ if (options.conversation) {
263
+ agent.setConversationId(options.conversation);
264
+ return;
265
+ }
266
+ const lastConversationId = await getLastConversationId();
267
+ if (lastConversationId) {
268
+ agent.setConversationId(lastConversationId);
269
+ return;
270
+ }
271
+ const conversationId = await agent.ensureConversationId();
272
+ await setLastConversationId(conversationId);
273
+ }
274
+ async function runSingleTurnChatWithBrand(agent, prompt, options, brandContext) {
275
+ const messages = brandContext ? [brandContext] : [];
276
+ messages.push({ role: 'user', content: prompt });
277
+ if (isTextOutput()) {
278
+ console.log();
279
+ }
280
+ const chunks = [];
281
+ let response = '';
282
+ const sigintHandler = async () => {
283
+ if (agent instanceof RemoteAgent && options.conversation) {
284
+ await agent.interrupt();
285
+ const convId = agent.getConversationId();
286
+ if (convId) {
287
+ await setLastConversationId(convId);
288
+ }
289
+ }
290
+ if (isTextOutput()) {
291
+ console.log(chalk.dim('\n[interrupted]\n'));
292
+ }
293
+ process.exit(0);
294
+ };
295
+ process.on('SIGINT', sigintHandler);
296
+ try {
297
+ resetToolCallCounter();
298
+ for await (const chunk of agent.streamChat(messages, undefined, options.skill, options.tool)) {
299
+ if (chunk.type === 'hitl_request' && agent instanceof RemoteAgent) {
300
+ await handleHitlChunk(chunk, agent, !!options.yes);
301
+ continue;
302
+ }
303
+ renderChunk(chunk);
304
+ chunks.push(chunk);
305
+ if (chunk.type === 'content' && chunk.content) {
306
+ response += chunk.content;
307
+ }
308
+ if (chunk.type === 'error') {
309
+ process.exit(1);
310
+ }
311
+ }
312
+ }
313
+ finally {
314
+ process.removeListener('SIGINT', sigintHandler);
315
+ }
316
+ if (agent instanceof RemoteAgent) {
317
+ const convId = agent.getConversationId();
318
+ if (convId) {
319
+ await setLastConversationId(convId);
320
+ }
321
+ }
322
+ if (isJsonOutput() || isYamlOutput()) {
323
+ printCommandResult({
324
+ prompt,
325
+ response,
326
+ events: chunks,
327
+ conversation_id: agent instanceof RemoteAgent ? (agent.getConversationId() || undefined) : undefined,
328
+ mode: agent.getMode(),
329
+ }, {
330
+ meta: {
331
+ runtime: agent.getDescription(),
332
+ },
333
+ });
334
+ }
335
+ }
336
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerConfigCommand(program: Command): void;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF5D"}