kairn-cli 1.9.0 → 1.9.1

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.
package/dist/cli.js CHANGED
@@ -65,24 +65,47 @@ async function saveConfig(config) {
65
65
  // src/ui.ts
66
66
  import chalk from "chalk";
67
67
  var maroon = chalk.rgb(139, 0, 0);
68
- var warm = chalk.rgb(212, 165, 116);
68
+ var darkMaroon = chalk.rgb(100, 0, 0);
69
+ var warmStone = chalk.rgb(212, 165, 116);
70
+ var lightStone = chalk.rgb(220, 190, 160);
71
+ var dimStone = chalk.rgb(140, 100, 70);
69
72
  var ui = {
70
- // Brand
73
+ // Brand colors
71
74
  brand: (text) => maroon.bold(text),
72
- accent: (text) => warm(text),
73
- // Headers
74
- header: (text) => {
75
- const line = "\u2500".repeat(50);
75
+ accent: (text) => warmStone(text),
76
+ // Logos and banners
77
+ fullBanner: (subtitle) => {
78
+ const KAIRN_WORDMARK2 = [
79
+ maroon("\u2588\u2588\u2557 \u2588\u2588\u2557") + " " + maroon("\u2588\u2588\u2588\u2588\u2588\u2557 ") + " " + maroon("\u2588\u2588\u2557") + " " + maroon("\u2588\u2588\u2588\u2588\u2588\u2588\u2557 ") + " " + maroon("\u2588\u2588\u2588\u2557 \u2588\u2588\u2557"),
80
+ maroon("\u2588\u2588\u2551 \u2588\u2588\u2554\u255D") + " " + maroon("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + " " + maroon("\u2588\u2588\u2551") + " " + maroon("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + " " + maroon("\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551"),
81
+ warmStone("\u2588\u2588\u2588\u2588\u2588\u2554\u255D ") + " " + warmStone("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551") + " " + warmStone("\u2588\u2588\u2551") + " " + warmStone("\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D") + " " + warmStone("\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551"),
82
+ warmStone("\u2588\u2588\u2554\u2550\u2588\u2588\u2557 ") + " " + warmStone("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551") + " " + warmStone("\u2588\u2588\u2551") + " " + warmStone("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + " " + warmStone("\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551"),
83
+ lightStone("\u2588\u2588\u2551 \u2588\u2588\u2557") + " " + lightStone("\u2588\u2588\u2551 \u2588\u2588\u2551") + " " + lightStone("\u2588\u2588\u2551") + " " + lightStone("\u2588\u2588\u2551 \u2588\u2588\u2551") + " " + lightStone("\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551"),
84
+ lightStone("\u255A\u2550\u255D \u255A\u2550\u255D") + " " + lightStone("\u255A\u2550\u255D \u255A\u2550\u255D") + " " + lightStone("\u255A\u2550\u255D") + " " + lightStone("\u255A\u2550\u255D \u255A\u2550\u255D") + " " + lightStone("\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D")
85
+ ];
86
+ console.log("");
87
+ for (const line of KAIRN_WORDMARK2) {
88
+ console.log(" " + line);
89
+ }
90
+ if (subtitle) {
91
+ console.log(dimStone(` ${subtitle}`));
92
+ }
93
+ console.log("");
94
+ },
95
+ compactBanner: (subtitle) => {
96
+ const line = maroon("\u2501").repeat(52);
97
+ console.log(` ${line}`);
98
+ console.log(` ${maroon(" \u25C6")} ${chalk.bold.rgb(139, 0, 0)("KAIRN")}` + (subtitle ? ` ${dimStone("\u2014 " + subtitle)}` : ""));
99
+ console.log(` ${line}`);
100
+ },
101
+ // Section headers
102
+ section: (title) => {
103
+ const len = chalk.dim(title).length;
104
+ const line = "\u2501".repeat(Math.max(0, 48 - len));
76
105
  return `
77
- ${maroon("\u250C" + line + "\u2510")}
78
- ${maroon("\u2502")} ${maroon.bold(text.padEnd(49))}${maroon("\u2502")}
79
- ${maroon("\u2514" + line + "\u2518")}
80
- `;
106
+ ${warmStone("\u2501\u2501")} ${chalk.bold(title)} ${chalk.dim(warmStone(line))}`;
81
107
  },
82
- // Sections
83
- section: (title) => `
84
- ${warm("\u2501\u2501")} ${chalk.bold(title)} ${warm("\u2501".repeat(Math.max(0, 44 - title.length)))}`,
85
- // Status
108
+ // Status messages
86
109
  success: (text) => chalk.green(` \u2713 ${text}`),
87
110
  warn: (text) => chalk.yellow(` \u26A0 ${text}`),
88
111
  error: (text) => chalk.red(` \u2717 ${text}`),
@@ -92,65 +115,68 @@ var ui = {
92
115
  // File list
93
116
  file: (path15) => chalk.dim(` ${path15}`),
94
117
  // Tool display
95
- tool: (name, reason) => ` ${warm("\u25CF")} ${chalk.bold(name)}
118
+ tool: (name, reason) => ` ${warmStone("\u25CF")} ${chalk.bold(name)}
96
119
  ${chalk.dim(reason)}`,
97
120
  // Divider
98
121
  divider: () => chalk.dim(` ${"\u2500".repeat(50)}`),
99
122
  // Command suggestion
100
123
  cmd: (command) => ` ${chalk.bold.white("$ " + command)}`,
101
- // Env var setup
102
- envVar: (name, desc, url) => {
103
- let out = ` ${chalk.bold(`export ${name}=`)}${chalk.dim('"your-key-here"')}
104
- `;
105
- out += chalk.dim(` ${desc}`);
124
+ // Env var setup with signupUrl
125
+ envVarPrompt: (name, desc, url) => {
126
+ let out = ` ${chalk.bold(name)}${chalk.dim(` (${desc})`)}`;
106
127
  if (url) out += `
107
- ${chalk.dim("Get one at:")} ${warm(url)}`;
128
+ ${chalk.dim("Get one at:")} ${warmStone(url)}`;
108
129
  return out;
109
130
  },
110
- // Clarification question display
111
- question: (q, suggestion) => ` ${warm("?")} ${chalk.bold(q)}
112
- ${chalk.dim(`suggested: ${suggestion}`)}`,
113
- // Branded error box
131
+ // Clarification question
132
+ question: (q, suggestion) => {
133
+ let msg = ` ${warmStone("?")} ${chalk.bold(q)}`;
134
+ if (suggestion) {
135
+ msg += `
136
+ ${chalk.dim(`(suggested: ${suggestion})`)}`;
137
+ }
138
+ return msg;
139
+ },
140
+ // Error box for compile failures
114
141
  errorBox: (title, message) => {
115
142
  const line = "\u2500".repeat(50);
116
- return `
117
- ${chalk.red("\u250C" + line + "\u2510")}
118
- ${chalk.red("\u2502")} ${chalk.red.bold(title.padEnd(49))}${chalk.red("\u2502")}
119
- ${chalk.red("\u2514" + line + "\u2518")}
120
-
121
- ${chalk.red("\u2717")} ${message}
122
- `;
143
+ return chalk.red(`
144
+ \u250C${line}\u2510
145
+ \u2502 ${title.padEnd(49)}\u2502
146
+ \u2502 ${message.padEnd(49)}\u2502
147
+ \u2514${line}\u2518
148
+ `);
123
149
  }
124
150
  };
125
151
 
126
152
  // src/logo.ts
127
153
  import chalk2 from "chalk";
128
154
  var maroon2 = chalk2.rgb(139, 0, 0);
129
- var darkMaroon = chalk2.rgb(100, 0, 0);
130
- var warmStone = chalk2.rgb(180, 120, 80);
131
- var lightStone = chalk2.rgb(212, 165, 116);
132
- var dimStone = chalk2.rgb(140, 100, 70);
155
+ var darkMaroon2 = chalk2.rgb(100, 0, 0);
156
+ var warmStone2 = chalk2.rgb(180, 120, 80);
157
+ var lightStone2 = chalk2.rgb(212, 165, 116);
158
+ var dimStone2 = chalk2.rgb(140, 100, 70);
133
159
  var KAIRN_WORDMARK = [
134
- maroon2("\u2588\u2588\u2557 \u2588\u2588\u2557") + darkMaroon(" ") + maroon2("\u2588\u2588\u2588\u2588\u2588\u2557 ") + darkMaroon(" ") + maroon2("\u2588\u2588\u2557") + darkMaroon(" ") + maroon2("\u2588\u2588\u2588\u2588\u2588\u2588\u2557 ") + darkMaroon(" ") + maroon2("\u2588\u2588\u2588\u2557 \u2588\u2588\u2557"),
135
- maroon2("\u2588\u2588\u2551 \u2588\u2588\u2554\u255D") + darkMaroon(" ") + maroon2("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + darkMaroon(" ") + maroon2("\u2588\u2588\u2551") + darkMaroon(" ") + maroon2("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + darkMaroon(" ") + maroon2("\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551"),
136
- warmStone("\u2588\u2588\u2588\u2588\u2588\u2554\u255D ") + dimStone(" ") + warmStone("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551") + dimStone(" ") + warmStone("\u2588\u2588\u2551") + dimStone(" ") + warmStone("\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D") + dimStone(" ") + warmStone("\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551"),
137
- warmStone("\u2588\u2588\u2554\u2550\u2588\u2588\u2557 ") + dimStone(" ") + warmStone("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551") + dimStone(" ") + warmStone("\u2588\u2588\u2551") + dimStone(" ") + warmStone("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + dimStone(" ") + warmStone("\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551"),
138
- lightStone("\u2588\u2588\u2551 \u2588\u2588\u2557") + dimStone(" ") + lightStone("\u2588\u2588\u2551 \u2588\u2588\u2551") + dimStone(" ") + lightStone("\u2588\u2588\u2551") + dimStone(" ") + lightStone("\u2588\u2588\u2551 \u2588\u2588\u2551") + dimStone(" ") + lightStone("\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551"),
139
- lightStone("\u255A\u2550\u255D \u255A\u2550\u255D") + dimStone(" ") + lightStone("\u255A\u2550\u255D \u255A\u2550\u255D") + dimStone(" ") + lightStone("\u255A\u2550\u255D") + dimStone(" ") + lightStone("\u255A\u2550\u255D \u255A\u2550\u255D") + dimStone(" ") + lightStone("\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D")
160
+ maroon2("\u2588\u2588\u2557 \u2588\u2588\u2557") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2588\u2588\u2588\u2557 ") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2557") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2588\u2588\u2588\u2588\u2557 ") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2588\u2557 \u2588\u2588\u2557"),
161
+ maroon2("\u2588\u2588\u2551 \u2588\u2588\u2554\u255D") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2551") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + darkMaroon2(" ") + maroon2("\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551"),
162
+ warmStone2("\u2588\u2588\u2588\u2588\u2588\u2554\u255D ") + dimStone2(" ") + warmStone2("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551") + dimStone2(" ") + warmStone2("\u2588\u2588\u2551") + dimStone2(" ") + warmStone2("\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D") + dimStone2(" ") + warmStone2("\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551"),
163
+ warmStone2("\u2588\u2588\u2554\u2550\u2588\u2588\u2557 ") + dimStone2(" ") + warmStone2("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551") + dimStone2(" ") + warmStone2("\u2588\u2588\u2551") + dimStone2(" ") + warmStone2("\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557") + dimStone2(" ") + warmStone2("\u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551"),
164
+ lightStone2("\u2588\u2588\u2551 \u2588\u2588\u2557") + dimStone2(" ") + lightStone2("\u2588\u2588\u2551 \u2588\u2588\u2551") + dimStone2(" ") + lightStone2("\u2588\u2588\u2551") + dimStone2(" ") + lightStone2("\u2588\u2588\u2551 \u2588\u2588\u2551") + dimStone2(" ") + lightStone2("\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551"),
165
+ lightStone2("\u255A\u2550\u255D \u255A\u2550\u255D") + dimStone2(" ") + lightStone2("\u255A\u2550\u255D \u255A\u2550\u255D") + dimStone2(" ") + lightStone2("\u255A\u2550\u255D") + dimStone2(" ") + lightStone2("\u255A\u2550\u255D \u255A\u2550\u255D") + dimStone2(" ") + lightStone2("\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D")
140
166
  ];
141
167
  var CAIRN_ART = [
142
- dimStone(" \u28C0\u28C0\u28C0 "),
143
- warmStone(" \u28F4\u28FF\u28FF\u28FF\u28E6 "),
144
- warmStone(" \u2819\u283F\u283F\u280B "),
145
- dimStone(" \u28C0\u28E4\u28E4\u28E4\u28E4\u28C0 "),
146
- lightStone(" \u28F4\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28E6 "),
147
- lightStone(" \u2819\u283B\u283F\u283F\u283F\u281F\u280B "),
148
- dimStone(" \u28C0\u28E4\u28E4\u28F6\u28F6\u28F6\u28F6\u28E4\u28E4\u28C0 "),
149
- warmStone(" \u28F4\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28E6 "),
150
- warmStone(" \u2819\u283B\u283F\u283F\u283F\u283F\u283F\u283F\u281F\u280B "),
151
- dimStone(" \u28C0\u28E4\u28F6\u28F6\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28F6\u28F6\u28E4\u28C0 "),
152
- lightStone(" \u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF "),
153
- dimStone(" \u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809 ")
168
+ dimStone2(" \u28C0\u28C0\u28C0 "),
169
+ warmStone2(" \u28F4\u28FF\u28FF\u28FF\u28E6 "),
170
+ warmStone2(" \u2819\u283F\u283F\u280B "),
171
+ dimStone2(" \u28C0\u28E4\u28E4\u28E4\u28E4\u28C0 "),
172
+ lightStone2(" \u28F4\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28E6 "),
173
+ lightStone2(" \u2819\u283B\u283F\u283F\u283F\u281F\u280B "),
174
+ dimStone2(" \u28C0\u28E4\u28E4\u28F6\u28F6\u28F6\u28F6\u28E4\u28E4\u28C0 "),
175
+ warmStone2(" \u28F4\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28E6 "),
176
+ warmStone2(" \u2819\u283B\u283F\u283F\u283F\u283F\u283F\u283F\u281F\u280B "),
177
+ dimStone2(" \u28C0\u28E4\u28F6\u28F6\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28F6\u28F6\u28E4\u28C0 "),
178
+ lightStone2(" \u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF\u28FF "),
179
+ dimStone2(" \u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809\u2809 ")
154
180
  ];
155
181
  function printFullBanner(subtitle) {
156
182
  console.log("");
@@ -158,7 +184,7 @@ function printFullBanner(subtitle) {
158
184
  console.log(" " + line);
159
185
  }
160
186
  if (subtitle) {
161
- console.log(dimStone(` ${subtitle}`));
187
+ console.log(dimStone2(` ${subtitle}`));
162
188
  }
163
189
  console.log("");
164
190
  }
@@ -166,7 +192,7 @@ function printCompactBanner() {
166
192
  const line = maroon2("\u2501").repeat(50);
167
193
  console.log(`
168
194
  ${line}`);
169
- console.log(` ${maroon2(" \u25C6")} ${chalk2.bold.rgb(139, 0, 0)("KAIRN")} ${dimStone("\u2014 Agent Environment Compiler")}`);
195
+ console.log(` ${maroon2(" \u25C6")} ${chalk2.bold.rgb(139, 0, 0)("KAIRN")} ${dimStone2("\u2014 Agent Environment Compiler")}`);
170
196
  console.log(` ${line}
171
197
  `);
172
198
  }
@@ -2399,7 +2425,7 @@ var optimizeCommand = new Command6("optimize").description("Scan an existing pro
2399
2425
  console.log(ui.file(file));
2400
2426
  }
2401
2427
  if (hasEnvVars) {
2402
- await collectAndWriteKeys(summary.envSetup, targetDir);
2428
+ await collectAndWriteKeys(summary.envSetup, targetDir, { quick: options.quick });
2403
2429
  console.log("");
2404
2430
  }
2405
2431
  if (summary.pluginCommands.length > 0) {