@aiyou-dev/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 (179) hide show
  1. package/bin/aiyoucli-mcp.js +7 -0
  2. package/bin/aiyoucli.js +29 -0
  3. package/dist/commands/index.d.ts +9 -0
  4. package/dist/commands/index.d.ts.map +1 -0
  5. package/dist/commands/index.js +968 -0
  6. package/dist/commands/index.js.map +1 -0
  7. package/dist/config.d.ts +6 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +99 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/index.d.ts +18 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +149 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/init/agentsmd-generator.d.ts +13 -0
  16. package/dist/init/agentsmd-generator.d.ts.map +1 -0
  17. package/dist/init/agentsmd-generator.js +138 -0
  18. package/dist/init/agentsmd-generator.js.map +1 -0
  19. package/dist/init/interactive.d.ts +6 -0
  20. package/dist/init/interactive.d.ts.map +1 -0
  21. package/dist/init/interactive.js +288 -0
  22. package/dist/init/interactive.js.map +1 -0
  23. package/dist/init/settings-generator.d.ts +17 -0
  24. package/dist/init/settings-generator.d.ts.map +1 -0
  25. package/dist/init/settings-generator.js +132 -0
  26. package/dist/init/settings-generator.js.map +1 -0
  27. package/dist/mcp/client.d.ts +27 -0
  28. package/dist/mcp/client.d.ts.map +1 -0
  29. package/dist/mcp/client.js +93 -0
  30. package/dist/mcp/client.js.map +1 -0
  31. package/dist/mcp/server.d.ts +8 -0
  32. package/dist/mcp/server.d.ts.map +1 -0
  33. package/dist/mcp/server.js +74 -0
  34. package/dist/mcp/server.js.map +1 -0
  35. package/dist/mcp/tools/agent-tools.d.ts +6 -0
  36. package/dist/mcp/tools/agent-tools.d.ts.map +1 -0
  37. package/dist/mcp/tools/agent-tools.js +196 -0
  38. package/dist/mcp/tools/agent-tools.js.map +1 -0
  39. package/dist/mcp/tools/analyze-tools.d.ts +6 -0
  40. package/dist/mcp/tools/analyze-tools.d.ts.map +1 -0
  41. package/dist/mcp/tools/analyze-tools.js +49 -0
  42. package/dist/mcp/tools/analyze-tools.js.map +1 -0
  43. package/dist/mcp/tools/config-tools.d.ts +6 -0
  44. package/dist/mcp/tools/config-tools.d.ts.map +1 -0
  45. package/dist/mcp/tools/config-tools.js +69 -0
  46. package/dist/mcp/tools/config-tools.js.map +1 -0
  47. package/dist/mcp/tools/coordination-tools.d.ts +6 -0
  48. package/dist/mcp/tools/coordination-tools.d.ts.map +1 -0
  49. package/dist/mcp/tools/coordination-tools.js +44 -0
  50. package/dist/mcp/tools/coordination-tools.js.map +1 -0
  51. package/dist/mcp/tools/distiller-tools.d.ts +7 -0
  52. package/dist/mcp/tools/distiller-tools.d.ts.map +1 -0
  53. package/dist/mcp/tools/distiller-tools.js +50 -0
  54. package/dist/mcp/tools/distiller-tools.js.map +1 -0
  55. package/dist/mcp/tools/gcc-tools.d.ts +6 -0
  56. package/dist/mcp/tools/gcc-tools.d.ts.map +1 -0
  57. package/dist/mcp/tools/gcc-tools.js +37 -0
  58. package/dist/mcp/tools/gcc-tools.js.map +1 -0
  59. package/dist/mcp/tools/hooks-tools.d.ts +7 -0
  60. package/dist/mcp/tools/hooks-tools.d.ts.map +1 -0
  61. package/dist/mcp/tools/hooks-tools.js +125 -0
  62. package/dist/mcp/tools/hooks-tools.js.map +1 -0
  63. package/dist/mcp/tools/index.d.ts +5 -0
  64. package/dist/mcp/tools/index.d.ts.map +1 -0
  65. package/dist/mcp/tools/index.js +43 -0
  66. package/dist/mcp/tools/index.js.map +1 -0
  67. package/dist/mcp/tools/memory-tools.d.ts +7 -0
  68. package/dist/mcp/tools/memory-tools.d.ts.map +1 -0
  69. package/dist/mcp/tools/memory-tools.js +153 -0
  70. package/dist/mcp/tools/memory-tools.js.map +1 -0
  71. package/dist/mcp/tools/metrics-tools.d.ts +6 -0
  72. package/dist/mcp/tools/metrics-tools.d.ts.map +1 -0
  73. package/dist/mcp/tools/metrics-tools.js +126 -0
  74. package/dist/mcp/tools/metrics-tools.js.map +1 -0
  75. package/dist/mcp/tools/neural-tools.d.ts +11 -0
  76. package/dist/mcp/tools/neural-tools.d.ts.map +1 -0
  77. package/dist/mcp/tools/neural-tools.js +68 -0
  78. package/dist/mcp/tools/neural-tools.js.map +1 -0
  79. package/dist/mcp/tools/performance-tools.d.ts +6 -0
  80. package/dist/mcp/tools/performance-tools.d.ts.map +1 -0
  81. package/dist/mcp/tools/performance-tools.js +54 -0
  82. package/dist/mcp/tools/performance-tools.js.map +1 -0
  83. package/dist/mcp/tools/security-tools.d.ts +6 -0
  84. package/dist/mcp/tools/security-tools.d.ts.map +1 -0
  85. package/dist/mcp/tools/security-tools.js +51 -0
  86. package/dist/mcp/tools/security-tools.js.map +1 -0
  87. package/dist/mcp/tools/session-tools.d.ts +6 -0
  88. package/dist/mcp/tools/session-tools.d.ts.map +1 -0
  89. package/dist/mcp/tools/session-tools.js +85 -0
  90. package/dist/mcp/tools/session-tools.js.map +1 -0
  91. package/dist/mcp/tools/skills-tools.d.ts +9 -0
  92. package/dist/mcp/tools/skills-tools.d.ts.map +1 -0
  93. package/dist/mcp/tools/skills-tools.js +167 -0
  94. package/dist/mcp/tools/skills-tools.js.map +1 -0
  95. package/dist/mcp/tools/statusline-tools.d.ts +6 -0
  96. package/dist/mcp/tools/statusline-tools.d.ts.map +1 -0
  97. package/dist/mcp/tools/statusline-tools.js +26 -0
  98. package/dist/mcp/tools/statusline-tools.js.map +1 -0
  99. package/dist/mcp/tools/swarm-tools.d.ts +6 -0
  100. package/dist/mcp/tools/swarm-tools.d.ts.map +1 -0
  101. package/dist/mcp/tools/swarm-tools.js +75 -0
  102. package/dist/mcp/tools/swarm-tools.js.map +1 -0
  103. package/dist/mcp/tools/system-tools.d.ts +6 -0
  104. package/dist/mcp/tools/system-tools.d.ts.map +1 -0
  105. package/dist/mcp/tools/system-tools.js +68 -0
  106. package/dist/mcp/tools/system-tools.js.map +1 -0
  107. package/dist/mcp/tools/task-tools.d.ts +6 -0
  108. package/dist/mcp/tools/task-tools.d.ts.map +1 -0
  109. package/dist/mcp/tools/task-tools.js +102 -0
  110. package/dist/mcp/tools/task-tools.js.map +1 -0
  111. package/dist/mcp/types.d.ts +19 -0
  112. package/dist/mcp/types.d.ts.map +1 -0
  113. package/dist/mcp/types.js +5 -0
  114. package/dist/mcp/types.js.map +1 -0
  115. package/dist/metrics/benchmark.d.ts +95 -0
  116. package/dist/metrics/benchmark.d.ts.map +1 -0
  117. package/dist/metrics/benchmark.js +195 -0
  118. package/dist/metrics/benchmark.js.map +1 -0
  119. package/dist/metrics/builtin-benchmarks.d.ts +9 -0
  120. package/dist/metrics/builtin-benchmarks.d.ts.map +1 -0
  121. package/dist/metrics/builtin-benchmarks.js +171 -0
  122. package/dist/metrics/builtin-benchmarks.js.map +1 -0
  123. package/dist/metrics/collector.d.ts +89 -0
  124. package/dist/metrics/collector.d.ts.map +1 -0
  125. package/dist/metrics/collector.js +181 -0
  126. package/dist/metrics/collector.js.map +1 -0
  127. package/dist/napi/index.d.ts +159 -0
  128. package/dist/napi/index.d.ts.map +1 -0
  129. package/dist/napi/index.js +111 -0
  130. package/dist/napi/index.js.map +1 -0
  131. package/dist/output.d.ts +44 -0
  132. package/dist/output.d.ts.map +1 -0
  133. package/dist/output.js +138 -0
  134. package/dist/output.js.map +1 -0
  135. package/dist/parser.d.ts +12 -0
  136. package/dist/parser.d.ts.map +1 -0
  137. package/dist/parser.js +135 -0
  138. package/dist/parser.js.map +1 -0
  139. package/dist/production/circuit-breaker.d.ts +31 -0
  140. package/dist/production/circuit-breaker.d.ts.map +1 -0
  141. package/dist/production/circuit-breaker.js +87 -0
  142. package/dist/production/circuit-breaker.js.map +1 -0
  143. package/dist/production/error-handler.d.ts +13 -0
  144. package/dist/production/error-handler.d.ts.map +1 -0
  145. package/dist/production/error-handler.js +52 -0
  146. package/dist/production/error-handler.js.map +1 -0
  147. package/dist/production/index.d.ts +9 -0
  148. package/dist/production/index.d.ts.map +1 -0
  149. package/dist/production/index.js +5 -0
  150. package/dist/production/index.js.map +1 -0
  151. package/dist/production/rate-limiter.d.ts +22 -0
  152. package/dist/production/rate-limiter.d.ts.map +1 -0
  153. package/dist/production/rate-limiter.js +44 -0
  154. package/dist/production/rate-limiter.js.map +1 -0
  155. package/dist/production/retry.d.ts +9 -0
  156. package/dist/production/retry.d.ts.map +1 -0
  157. package/dist/production/retry.js +32 -0
  158. package/dist/production/retry.js.map +1 -0
  159. package/dist/services/worker-daemon.d.ts +44 -0
  160. package/dist/services/worker-daemon.d.ts.map +1 -0
  161. package/dist/services/worker-daemon.js +99 -0
  162. package/dist/services/worker-daemon.js.map +1 -0
  163. package/dist/services/worker-queue.d.ts +38 -0
  164. package/dist/services/worker-queue.d.ts.map +1 -0
  165. package/dist/services/worker-queue.js +86 -0
  166. package/dist/services/worker-queue.js.map +1 -0
  167. package/dist/statusline/generator.d.ts +12 -0
  168. package/dist/statusline/generator.d.ts.map +1 -0
  169. package/dist/statusline/generator.js +361 -0
  170. package/dist/statusline/generator.js.map +1 -0
  171. package/dist/suggest.d.ts +5 -0
  172. package/dist/suggest.d.ts.map +1 -0
  173. package/dist/suggest.js +40 -0
  174. package/dist/suggest.js.map +1 -0
  175. package/dist/types.d.ts +112 -0
  176. package/dist/types.d.ts.map +1 -0
  177. package/dist/types.js +23 -0
  178. package/dist/types.js.map +1 -0
  179. package/package.json +64 -0
@@ -0,0 +1,361 @@
1
+ /**
2
+ * Statusline — honest, minimal dashboard showing only real data.
3
+ *
4
+ * Integrates with Claude Code, Gemini CLI, or standalone terminal.
5
+ * Host CLI can pipe session JSON via stdin (model, context %, cost).
6
+ */
7
+ import { writeFileSync, mkdirSync, existsSync, readFileSync, readdirSync, statSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { execSync } from "node:child_process";
10
+ import { homedir } from "node:os";
11
+ import { registry } from "../mcp/client.js";
12
+ import { registerAllTools } from "../mcp/tools/index.js";
13
+ // ── Public API ──────────────────────────────────────────────────
14
+ export function generateStatuslineScript(projectRoot) {
15
+ const dir = join(projectRoot, ".aiyoucli", "helpers");
16
+ mkdirSync(dir, { recursive: true });
17
+ const outPath = join(dir, "statusline.cjs");
18
+ writeFileSync(outPath, STANDALONE_SCRIPT, { mode: 0o755 });
19
+ return outPath;
20
+ }
21
+ export function renderStatusline(cwd, options = {}) {
22
+ const data = collect(cwd);
23
+ if (options.json)
24
+ return JSON.stringify(data, null, 2);
25
+ if (options.compact)
26
+ return formatCompact(data);
27
+ return format(data);
28
+ }
29
+ let _toolCount = null;
30
+ function getToolCount() {
31
+ if (_toolCount === null) {
32
+ try {
33
+ registerAllTools();
34
+ _toolCount = registry.list().length;
35
+ }
36
+ catch {
37
+ _toolCount = 51;
38
+ }
39
+ }
40
+ return _toolCount;
41
+ }
42
+ function collect(cwd) {
43
+ // Git — single call
44
+ const gitRaw = safeExec(`sh -c 'git config user.name 2>/dev/null||echo user;echo ---S---;git branch --show-current 2>/dev/null;echo ---S---;git status --porcelain 2>/dev/null;echo ---S---;git rev-list --left-right --count HEAD...@{upstream} 2>/dev/null||echo "0 0"'`, cwd);
45
+ const p = gitRaw.split("---S---").map((s) => s.trim());
46
+ let user = "user", branch = "", staged = 0, modified = 0, untracked = 0, ahead = 0, behind = 0;
47
+ if (p.length >= 4) {
48
+ user = p[0] || "user";
49
+ branch = p[1] || "";
50
+ for (const l of (p[2] || "").split("\n")) {
51
+ if (!l || l.length < 2)
52
+ continue;
53
+ if (l[0] === "?" && l[1] === "?") {
54
+ untracked++;
55
+ continue;
56
+ }
57
+ if (l[0] !== " " && l[0] !== "?")
58
+ staged++;
59
+ if (l[1] !== " " && l[1] !== "?")
60
+ modified++;
61
+ }
62
+ const ab = (p[3] || "0 0").split(/\s+/);
63
+ ahead = parseInt(ab[0]) || 0;
64
+ behind = parseInt(ab[1]) || 0;
65
+ }
66
+ // Model + session info from ~/.claude.json
67
+ let model = "", modelCtx = "", duration = "";
68
+ try {
69
+ const cc = readJson(join(homedir(), ".claude.json"));
70
+ if (cc?.projects) {
71
+ for (const [pp, pc] of Object.entries(cc.projects)) {
72
+ if (cwd === pp || cwd.startsWith(pp + "/")) {
73
+ // Model
74
+ const usage = pc.lastModelUsage;
75
+ if (usage) {
76
+ let lid = "", lt = 0;
77
+ for (const [id, v] of Object.entries(usage)) {
78
+ const ts = v.lastUsedAt ? new Date(v.lastUsedAt).getTime() : 0;
79
+ if (ts > lt) {
80
+ lt = ts;
81
+ lid = id;
82
+ }
83
+ }
84
+ if (lid.includes("opus")) {
85
+ model = "Opus 4.6";
86
+ modelCtx = "1M context";
87
+ }
88
+ else if (lid.includes("sonnet")) {
89
+ model = "Sonnet 4.6";
90
+ modelCtx = "200K context";
91
+ }
92
+ else if (lid.includes("haiku")) {
93
+ model = "Haiku 4.5";
94
+ modelCtx = "200K context";
95
+ }
96
+ else if (lid)
97
+ model = lid;
98
+ }
99
+ // Duration
100
+ if (pc.lastDuration && pc.lastDuration > 0) {
101
+ const totalMs = pc.lastDuration;
102
+ const mins = Math.floor(totalMs / 60000);
103
+ const secs = Math.floor((totalMs % 60000) / 1000);
104
+ duration = mins > 0 ? `${mins}m${secs}s` : `${secs}s`;
105
+ }
106
+ break;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ catch { }
112
+ // aiyoucli state — only show what actually exists
113
+ const base = join(cwd, ".aiyoucli");
114
+ const agentsData = readJson(join(base, "agents", "store.json"));
115
+ const swarmData = readJson(join(base, "swarm", "state.json"));
116
+ const tasksData = readJson(join(base, "tasks", "store.json"));
117
+ const agents = agentsData?.filter((a) => a.status !== "stopped").length ?? 0;
118
+ const tasks = {
119
+ p: tasksData?.filter((t) => t.status === "pending").length ?? 0,
120
+ r: tasksData?.filter((t) => t.status === "in_progress").length ?? 0,
121
+ c: tasksData?.filter((t) => t.status === "completed").length ?? 0,
122
+ };
123
+ // Tests — count real files
124
+ let tests = 0;
125
+ for (const d of ["__tests__", "tests", "test"]) {
126
+ try {
127
+ const dir = join(cwd, d);
128
+ if (existsSync(dir)) {
129
+ tests += readdirSync(dir).filter((f) => f.includes(".test.") || f.includes(".spec.")).length;
130
+ }
131
+ }
132
+ catch { }
133
+ }
134
+ // Vectors — check aiyouvector data dir
135
+ let vectors = 0;
136
+ const vecPaths = [join(cwd, ".aiyouvector", "data"), join(base, "memory.db")];
137
+ for (const vp of vecPaths) {
138
+ try {
139
+ const st = statSync(vp);
140
+ if (st) {
141
+ vectors = Math.floor(st.size / 512);
142
+ break;
143
+ }
144
+ }
145
+ catch { }
146
+ }
147
+ return {
148
+ user, branch, staged, modified, untracked, ahead, behind, model, modelCtx, duration,
149
+ agents,
150
+ swarm: {
151
+ on: swarmData?.status === "active",
152
+ topology: swarmData?.topology ?? "off",
153
+ max: swarmData?.maxAgents ?? 8,
154
+ },
155
+ tasks, vectors, tests, tools: getToolCount(),
156
+ };
157
+ }
158
+ // ── Compact format (ANSI colors for Claude Code statusLine) ─────
159
+ function formatCompact(d) {
160
+ const R = "\x1b[0m";
161
+ const B = "\x1b[1m";
162
+ const ind = "\x1b[38;5;105m"; // indigo
163
+ const tl = "\x1b[38;5;73m"; // teal
164
+ const wm = "\x1b[38;5;216m"; // warm peach
165
+ const gn = "\x1b[38;5;114m"; // soft green
166
+ const yl = "\x1b[38;5;222m"; // soft yellow
167
+ const gy = "\x1b[38;5;245m"; // gray
168
+ const parts = [`${B}${ind}■ aiyoucli${R}`];
169
+ if (d.branch) {
170
+ let git = `${wm}${d.branch}${R}`;
171
+ if (d.staged > 0)
172
+ git += ` ${gn}+${d.staged}${R}`;
173
+ if (d.modified > 0)
174
+ git += `${yl}~${d.modified}${R}`;
175
+ parts.push(git);
176
+ }
177
+ if (d.model)
178
+ parts.push(`${ind}${d.model}${R}`);
179
+ if (d.agents > 0)
180
+ parts.push(`${tl}${d.agents}${R} agents`);
181
+ const totalTasks = d.tasks.p + d.tasks.r + d.tasks.c;
182
+ if (totalTasks > 0)
183
+ parts.push(`${yl}${d.tasks.r}${R}r ${gn}${d.tasks.c}${R}d ${gy}${d.tasks.p}${R}q`);
184
+ if (d.vectors > 0)
185
+ parts.push(`${tl}${d.vectors}${R} vecs`);
186
+ parts.push(`${gy}${d.tools} tools${R}`);
187
+ return parts.join(` ${gy}│${R} `);
188
+ }
189
+ // ── Format (new palette: indigo/teal/warm) ──────────────────────
190
+ function format(d) {
191
+ // Colors — softer palette with indigo accents
192
+ const R = "\x1b[0m";
193
+ const B = "\x1b[1m";
194
+ const D = "\x1b[2m";
195
+ const ind = "\x1b[38;5;105m"; // indigo
196
+ const tl = "\x1b[38;5;73m"; // teal
197
+ const wm = "\x1b[38;5;216m"; // warm peach
198
+ const gn = "\x1b[38;5;114m"; // soft green
199
+ const yl = "\x1b[38;5;222m"; // soft yellow
200
+ const rd = "\x1b[38;5;203m"; // soft red
201
+ const gy = "\x1b[38;5;245m"; // gray
202
+ const wh = "\x1b[38;5;255m"; // white
203
+ const lines = [];
204
+ // Line 1: identity + git + model
205
+ let h = `${B}${ind}\u25A0 aiyoucli${R} ${tl}${d.user}${R}`;
206
+ if (d.branch) {
207
+ h += ` ${gy}\u2502${R} ${wm}${d.branch}${R}`;
208
+ if (d.staged > 0)
209
+ h += ` ${gn}+${d.staged}${R}`;
210
+ if (d.modified > 0)
211
+ h += `${yl}~${d.modified}${R}`;
212
+ if (d.untracked > 0)
213
+ h += `${gy}?${d.untracked}${R}`;
214
+ if (d.ahead > 0)
215
+ h += ` ${gn}\u2191${d.ahead}${R}`;
216
+ if (d.behind > 0)
217
+ h += ` ${rd}\u2193${d.behind}${R}`;
218
+ }
219
+ if (d.model) {
220
+ h += ` ${gy}\u2502${R} ${ind}${d.model}${R}`;
221
+ if (d.modelCtx)
222
+ h += ` ${gy}(${d.modelCtx})${R}`;
223
+ }
224
+ if (d.duration)
225
+ h += ` ${gy}\u2502${R} ${tl}\u23F1 ${d.duration}${R}`;
226
+ lines.push(h);
227
+ // Line 2: agents + swarm + tasks (only if any activity)
228
+ const parts2 = [];
229
+ if (d.swarm.on || d.agents > 0) {
230
+ const sIcon = d.swarm.on ? `${gn}\u25C9${R}` : `${gy}\u25CB${R}`;
231
+ parts2.push(`${wm}agents${R} ${sIcon} ${d.agents > 0 ? gn : gy}${d.agents}${R}${gy}/${d.swarm.max}${R}`);
232
+ }
233
+ const totalTasks = d.tasks.p + d.tasks.r + d.tasks.c;
234
+ if (totalTasks > 0) {
235
+ parts2.push(`${wm}tasks${R} ${d.tasks.r > 0 ? yl : gy}${d.tasks.r}${R} running ${gn}${d.tasks.c}${R} done ${gy}${d.tasks.p} queued${R}`);
236
+ }
237
+ if (d.vectors > 0) {
238
+ parts2.push(`${wm}vectors${R} ${gn}${d.vectors}${R}`);
239
+ }
240
+ if (d.tests > 0) {
241
+ parts2.push(`${wm}tests${R} ${gn}${d.tests}${R}`);
242
+ }
243
+ if (parts2.length > 0) {
244
+ lines.push(` ${parts2.join(` ${gy}\u2502${R} `)}`);
245
+ }
246
+ // Line 3: tools (always — this is real)
247
+ lines.push(` ${gy}${d.tools} mcp tools available${R}`);
248
+ return lines.join("\n");
249
+ }
250
+ // ── Helpers ─────────────────────────────────────────────────────
251
+ function safeExec(cmd, cwd) {
252
+ try {
253
+ return execSync(cmd, { encoding: "utf-8", timeout: 2000, stdio: ["pipe", "pipe", "pipe"], cwd }).trim();
254
+ }
255
+ catch {
256
+ return "";
257
+ }
258
+ }
259
+ function readJson(p) {
260
+ try {
261
+ if (existsSync(p))
262
+ return JSON.parse(readFileSync(p, "utf-8"));
263
+ }
264
+ catch { }
265
+ return null;
266
+ }
267
+ // ── Standalone CJS script ───────────────────────────────────────
268
+ const STANDALONE_SCRIPT = `#!/usr/bin/env node
269
+ /**
270
+ * aiyoucli statusline — standalone CJS script.
271
+ * Works with Claude Code, Gemini CLI, or terminal.
272
+ * Usage: node statusline.cjs [--json] [--compact]
273
+ */
274
+ const fs = require('fs');
275
+ const path = require('path');
276
+ const { execSync } = require('child_process');
277
+ const os = require('os');
278
+ const CWD = process.cwd();
279
+
280
+ const R='\\x1b[0m',B='\\x1b[1m',D='\\x1b[2m';
281
+ const ind='\\x1b[38;5;105m',tl='\\x1b[38;5;73m',wm='\\x1b[38;5;216m';
282
+ const gn='\\x1b[38;5;114m',yl='\\x1b[38;5;222m',rd='\\x1b[38;5;203m';
283
+ const gy='\\x1b[38;5;245m',wh='\\x1b[38;5;255m';
284
+
285
+ function sx(cmd,t){try{return execSync(cmd,{encoding:'utf-8',timeout:t||2000,stdio:['pipe','pipe','pipe'],cwd:CWD}).trim()}catch{return ''}}
286
+ function rj(p){try{return fs.existsSync(p)?JSON.parse(fs.readFileSync(p,'utf-8')):null}catch{return null}}
287
+
288
+ // Stdin from host CLI
289
+ let _sd;
290
+ function sd(){if(_sd!==undefined)return _sd;if(process.stdin.isTTY){_sd=null;return null}
291
+ try{const ch=[];const buf=Buffer.alloc(4096);let n;try{while((n=fs.readSync(0,buf,0,buf.length,null))>0)ch.push(buf.slice(0,n))}catch{}
292
+ const r=Buffer.concat(ch).toString('utf-8').trim();_sd=r&&r.startsWith('{')?JSON.parse(r):null}catch{_sd=null}return _sd}
293
+
294
+ function collect(){
295
+ const raw=sx("sh -c 'git config user.name 2>/dev/null||echo user;echo ---S---;git branch --show-current 2>/dev/null;echo ---S---;git status --porcelain 2>/dev/null;echo ---S---;git rev-list --left-right --count HEAD...@{upstream} 2>/dev/null||echo \\"0 0\\"'",3000);
296
+ const p=raw.split('---S---').map(s=>s.trim());
297
+ let user='user',branch='',staged=0,modified=0,untracked=0,ahead=0,behind=0;
298
+ if(p.length>=4){user=p[0]||'user';branch=p[1]||'';
299
+ for(const l of(p[2]||'').split('\\n')){if(!l||l.length<2)continue;if(l[0]==='?'&&l[1]==='?'){untracked++;continue}if(l[0]!==' '&&l[0]!=='?')staged++;if(l[1]!==' '&&l[1]!=='?')modified++}
300
+ const ab=(p[3]||'0 0').split(/\\s+/);ahead=parseInt(ab[0])||0;behind=parseInt(ab[1])||0}
301
+
302
+ // Model
303
+ let model='';
304
+ const s=sd();
305
+ if(s&&s.model&&s.model.display_name)model=s.model.display_name;
306
+ if(!model){try{const cc=rj(path.join(os.homedir(),'.claude.json'));if(cc&&cc.projects)for(const[pp,pc]of Object.entries(cc.projects)){
307
+ if(CWD===pp||CWD.startsWith(pp+'/')){const u=pc.lastModelUsage;if(u){let lid='',lt=0;for(const[id,v]of Object.entries(u)){const t=v.lastUsedAt?new Date(v.lastUsedAt).getTime():0;if(t>lt){lt=t;lid=id}}
308
+ if(lid.includes('opus'))model='Opus 4.6';else if(lid.includes('sonnet'))model='Sonnet 4.6';else if(lid.includes('haiku'))model='Haiku 4.5';else if(lid)model=lid}break}}}catch{}}
309
+
310
+ // State
311
+ const base=path.join(CWD,'.aiyoucli');
312
+ const ag=rj(path.join(base,'agents','store.json'))||[];
313
+ const sw=rj(path.join(base,'swarm','state.json'));
314
+ const tk=rj(path.join(base,'tasks','store.json'))||[];
315
+ const agents=ag.filter(a=>a.status!=='stopped').length;
316
+ const tasks={p:tk.filter(t=>t.status==='pending').length,r:tk.filter(t=>t.status==='in_progress').length,c:tk.filter(t=>t.status==='completed').length};
317
+ let tests=0;for(const d of['__tests__','tests','test']){try{const dir=path.join(CWD,d);if(fs.existsSync(dir))tests+=fs.readdirSync(dir).filter(f=>f.includes('.test.')||f.includes('.spec.')).length}catch{}}
318
+ let vectors=0;for(const vp of[path.join(CWD,'.aiyouvector','data'),path.join(base,'memory.db')]){try{const st=fs.statSync(vp);if(st){vectors=Math.floor(st.size/512);break}}catch{}}
319
+
320
+ // Cost/context from stdin
321
+ let dur='',ctxPct=0,costUsd=0;
322
+ if(s&&s.cost){const ms=s.cost.total_duration_ms||0;const m=Math.floor(ms/60000);const sec=Math.floor((ms%60000)/1000);dur=m>0?m+'m'+sec+'s':sec+'s';costUsd=s.cost.total_cost_usd||0}
323
+ if(s&&s.context_window)ctxPct=Math.floor(s.context_window.used_percentage||0);
324
+
325
+ return{user,branch,staged,modified,untracked,ahead,behind,model,agents,swarmOn:sw?sw.status==='active':false,swarmMax:sw?sw.maxAgents:8,tasks,vectors,tests,tools:41,dur,ctxPct,costUsd};
326
+ }
327
+
328
+ function render(){
329
+ const d=collect();const lines=[];
330
+
331
+ let h=B+ind+'\\u25A0 aiyoucli'+R+' '+tl+d.user+R;
332
+ if(d.branch){h+=' '+gy+'\\u2502'+R+' '+wm+d.branch+R;
333
+ if(d.staged>0)h+=' '+gn+'+'+d.staged+R;if(d.modified>0)h+=yl+'~'+d.modified+R;if(d.untracked>0)h+=gy+'?'+d.untracked+R;
334
+ if(d.ahead>0)h+=' '+gn+'\\u2191'+d.ahead+R;if(d.behind>0)h+=' '+rd+'\\u2193'+d.behind+R}
335
+ if(d.model)h+=' '+gy+'\\u2502'+R+' '+ind+d.model+R;
336
+ if(d.dur)h+=' '+gy+'\\u2502'+R+' '+tl+d.dur+R;
337
+ if(d.ctxPct>0){const cc=d.ctxPct>=90?rd:d.ctxPct>=70?yl:gn;h+=' '+gy+'\\u2502'+R+' '+cc+d.ctxPct+'% ctx'+R}
338
+ if(d.costUsd>0)h+=' '+gy+'\\u2502'+R+' '+yl+'$'+d.costUsd.toFixed(2)+R;
339
+ lines.push(h);
340
+
341
+ const p2=[];
342
+ if(d.swarmOn||d.agents>0){const si=d.swarmOn?gn+'\\u25C9'+R:gy+'\\u25CB'+R;p2.push(wm+'agents'+R+' '+si+' '+(d.agents>0?gn:gy)+d.agents+R+gy+'/'+d.swarmMax+R)}
343
+ const tt=d.tasks.p+d.tasks.r+d.tasks.c;
344
+ if(tt>0)p2.push(wm+'tasks'+R+' '+(d.tasks.r>0?yl:gy)+d.tasks.r+R+' running '+gn+d.tasks.c+R+' done '+gy+d.tasks.p+' queued'+R);
345
+ if(d.vectors>0)p2.push(wm+'vectors'+R+' '+gn+d.vectors+R);
346
+ if(d.tests>0)p2.push(wm+'tests'+R+' '+gn+d.tests+R);
347
+ if(p2.length>0)lines.push(' '+p2.join(' '+gy+'\\u2502'+R+' '));
348
+ lines.push(' '+gy+d.tools+' mcp tools available'+R);
349
+ return lines.join('\\n');
350
+ }
351
+
352
+ function renderJSON(){const d=collect();return{user:d.user,branch:d.branch,model:d.model,
353
+ git:{staged:d.staged,modified:d.modified,untracked:d.untracked,ahead:d.ahead,behind:d.behind},
354
+ agents:d.agents,swarm:{on:d.swarmOn,max:d.swarmMax},tasks:d.tasks,vectors:d.vectors,tests:d.tests,tools:d.tools,
355
+ session:{duration:d.dur||null,contextPct:d.ctxPct||null,costUsd:d.costUsd||null},timestamp:new Date().toISOString()}}
356
+
357
+ if(process.argv.includes('--json'))console.log(JSON.stringify(renderJSON(),null,2));
358
+ else if(process.argv.includes('--compact'))console.log(JSON.stringify(renderJSON()));
359
+ else console.log(render());
360
+ `;
361
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/statusline/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,mEAAmE;AAEnE,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACtD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAC5C,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,UAAiD,EAAE;IAEnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAuBD,IAAI,UAAU,GAAkB,IAAI,CAAC;AACrC,SAAS,YAAY;IACnB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,gBAAgB,EAAE,CAAC;YACnB,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,oBAAoB;IACpB,MAAM,MAAM,GAAG,QAAQ,CACrB,kPAAkP,EAClP,GAAG,CACJ,CAAC;IACF,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,IAAI,GAAG,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAC/F,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QACtB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAAC,SAAS,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC5D,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,2CAA2C;IAC3C,IAAI,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,CAAC;IAC7C,IAAI,CAAC;QAKH,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAsD,CAAC;QAC1G,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnD,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;oBAC3C,QAAQ;oBACR,MAAM,KAAK,GAAG,EAAE,CAAC,cAAc,CAAC;oBAChC,IAAI,KAAK,EAAE,CAAC;wBACV,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;wBACrB,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC/D,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gCAAC,EAAE,GAAG,EAAE,CAAC;gCAAC,GAAG,GAAG,EAAE,CAAC;4BAAC,CAAC;wBACrC,CAAC;wBACD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BAAC,KAAK,GAAG,UAAU,CAAC;4BAAC,QAAQ,GAAG,YAAY,CAAC;wBAAC,CAAC;6BACrE,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAAC,KAAK,GAAG,YAAY,CAAC;4BAAC,QAAQ,GAAG,cAAc,CAAC;wBAAC,CAAC;6BAChF,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;4BAAC,KAAK,GAAG,WAAW,CAAC;4BAAC,QAAQ,GAAG,cAAc,CAAC;wBAAC,CAAC;6BAC9E,IAAI,GAAG;4BAAE,KAAK,GAAG,GAAG,CAAC;oBAC5B,CAAC;oBACD,WAAW;oBACX,IAAI,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;wBAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAsB,CAAC;wBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;wBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;wBAClD,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;oBACxD,CAAC;oBACD,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,kDAAkD;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAqC,CAAC;IACpG,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAsE,CAAC;IACnI,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAqC,CAAC;IAElG,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG;QACZ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC;QAC/D,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,IAAI,CAAC;QACnE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,IAAI,CAAC;KAClE,CAAC;IAEF,2BAA2B;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/F,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9E,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;gBAAC,MAAM;YAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;QACnF,MAAM;QACN,KAAK,EAAE;YACL,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,QAAQ;YAClC,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,KAAK;YACtC,GAAG,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;SAC/B;QACD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE;KAC7C,CAAC;AACJ,CAAC;AAED,mEAAmE;AAEnE,SAAS,aAAa,CAAC,CAAO;IAC5B,MAAM,CAAC,GAAG,SAAS,CAAC;IACpB,MAAM,CAAC,GAAG,SAAS,CAAC;IACpB,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAE,SAAS;IACxC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAG,OAAO;IACrC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,aAAa;IAC3C,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,aAAa;IAC3C,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,cAAc;IAC5C,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,OAAO;IAErC,MAAM,KAAK,GAAa,CAAC,GAAG,CAAC,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;YAAE,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,IAAI,UAAU,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEvG,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IAE5D,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,mEAAmE;AAEnE,SAAS,MAAM,CAAC,CAAO;IACrB,8CAA8C;IAC9C,MAAM,CAAC,GAAG,SAAS,CAAC;IACpB,MAAM,CAAC,GAAG,SAAS,CAAC;IACpB,MAAM,CAAC,GAAG,SAAS,CAAC;IACpB,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAE,SAAS;IACxC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAG,OAAO;IACrC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,aAAa;IAC3C,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,aAAa;IAC3C,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,cAAc;IAC5C,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,WAAW;IACzC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,OAAO;IACrC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAE,QAAQ;IAEtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,iCAAiC;IACjC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,CAAC,IAAI,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;YAAE,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC;YAAE,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;YAAE,CAAC,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC,IAAI,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,CAAC,QAAQ;YAAE,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ;QAAE,CAAC,IAAI,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEd,wDAAwD;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7I,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAExD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,mEAAmE;AAEnE,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1G,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,IAAI,CAAC;QAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAChF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AAEnE,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FzB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Fuzzy command suggestion via Levenshtein distance.
3
+ */
4
+ export declare function suggestCommand(input: string, commands: string[], maxDistance?: number): string | null;
5
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,SAAI,GACd,MAAM,GAAG,IAAI,CAaf"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Fuzzy command suggestion via Levenshtein distance.
3
+ */
4
+ export function suggestCommand(input, commands, maxDistance = 3) {
5
+ let best = null;
6
+ let bestDist = Infinity;
7
+ for (const cmd of commands) {
8
+ const d = levenshtein(input.toLowerCase(), cmd.toLowerCase());
9
+ if (d < bestDist && d <= maxDistance) {
10
+ bestDist = d;
11
+ best = cmd;
12
+ }
13
+ }
14
+ return best;
15
+ }
16
+ function levenshtein(a, b) {
17
+ const m = a.length;
18
+ const n = b.length;
19
+ if (m === 0)
20
+ return n;
21
+ if (n === 0)
22
+ return m;
23
+ // Single-row optimization
24
+ const row = Array.from({ length: n + 1 }, (_, i) => i);
25
+ for (let i = 1; i <= m; i++) {
26
+ let prev = i;
27
+ for (let j = 1; j <= n; j++) {
28
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
29
+ const val = Math.min(row[j] + 1, // deletion
30
+ prev + 1, // insertion
31
+ row[j - 1] + cost // substitution
32
+ );
33
+ row[j - 1] = prev;
34
+ prev = val;
35
+ }
36
+ row[n] = prev;
37
+ }
38
+ return row[n];
39
+ }
40
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,QAAkB,EAClB,WAAW,GAAG,CAAC;IAEf,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,QAAQ,GAAG,QAAQ,CAAC;IAExB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;YACrC,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAEnB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtB,0BAA0B;IAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAQ,WAAW;YAC7B,IAAI,GAAG,CAAC,EAAW,YAAY;YAC/B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAE,eAAe;aACnC,CAAC;YACF,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YAClB,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Core type definitions for aiyoucli.
3
+ */
4
+ export interface Command {
5
+ name: string;
6
+ description: string;
7
+ aliases?: string[];
8
+ subcommands?: Command[];
9
+ options?: CommandOption[];
10
+ examples?: CommandExample[];
11
+ action?: CommandAction;
12
+ hidden?: boolean;
13
+ }
14
+ export interface CommandOption {
15
+ name: string;
16
+ short?: string;
17
+ description: string;
18
+ type: "string" | "boolean" | "number" | "array";
19
+ default?: unknown;
20
+ required?: boolean;
21
+ choices?: string[];
22
+ }
23
+ export interface CommandExample {
24
+ command: string;
25
+ description: string;
26
+ }
27
+ export type CommandAction = (ctx: CommandContext) => Promise<CommandResult | void>;
28
+ export interface CommandContext {
29
+ args: string[];
30
+ flags: ParsedFlags;
31
+ config: Config;
32
+ cwd: string;
33
+ interactive: boolean;
34
+ }
35
+ export interface CommandResult {
36
+ success: boolean;
37
+ message?: string;
38
+ data?: unknown;
39
+ exitCode?: number;
40
+ }
41
+ export interface ParsedFlags {
42
+ [key: string]: string | boolean | number | string[];
43
+ _: string[];
44
+ }
45
+ export interface ParseResult {
46
+ command: string[];
47
+ flags: ParsedFlags;
48
+ positional: string[];
49
+ raw: string[];
50
+ }
51
+ export interface Config {
52
+ version: string;
53
+ projectRoot: string;
54
+ memory: MemoryConfig;
55
+ swarm: SwarmConfig;
56
+ mcp: MCPConfig;
57
+ cli: CLIPreferences;
58
+ }
59
+ export interface MemoryConfig {
60
+ backend: "aiyouvector" | "memory";
61
+ storagePath: string;
62
+ dimensions: number;
63
+ enableHNSW: boolean;
64
+ }
65
+ export interface SwarmConfig {
66
+ topology: "hierarchical" | "mesh" | "ring" | "star" | "hybrid";
67
+ maxAgents: number;
68
+ strategy: "specialized" | "balanced" | "adaptive";
69
+ }
70
+ export interface MCPConfig {
71
+ transport: "stdio" | "http";
72
+ port: number;
73
+ autoStart: boolean;
74
+ }
75
+ export interface CLIPreferences {
76
+ color: boolean;
77
+ interactive: boolean;
78
+ verbosity: Verbosity;
79
+ format: "text" | "json" | "table";
80
+ }
81
+ export type Verbosity = "quiet" | "normal" | "verbose" | "debug";
82
+ export interface MCPTool {
83
+ name: string;
84
+ description: string;
85
+ inputSchema: MCPToolInputSchema;
86
+ handler: (input: Record<string, unknown>) => Promise<MCPToolResult>;
87
+ }
88
+ export interface MCPToolInputSchema {
89
+ type: "object";
90
+ properties: Record<string, unknown>;
91
+ required?: string[];
92
+ }
93
+ export interface MCPToolResult {
94
+ content: MCPContent[];
95
+ isError?: boolean;
96
+ }
97
+ export interface MCPContent {
98
+ type: "text" | "image" | "resource";
99
+ text?: string;
100
+ data?: string;
101
+ mimeType?: string;
102
+ }
103
+ export declare class CLIError extends Error {
104
+ code: string;
105
+ exitCode: number;
106
+ details?: unknown | undefined;
107
+ constructor(message: string, code: string, exitCode?: number, details?: unknown | undefined);
108
+ }
109
+ export declare class CommandNotFoundError extends CLIError {
110
+ constructor(name: string);
111
+ }
112
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;IACpD,CAAC,EAAE,MAAM,EAAE,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAID,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,EAAE,cAAc,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;CACnD;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAIjE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,CACP,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,QAAS,SAAQ,KAAK;IAGxB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,OAAO,CAAC,EAAE,OAAO;gBAHxB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAU,EACpB,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,IAAI,EAAE,MAAM;CAIzB"}
package/dist/types.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Core type definitions for aiyoucli.
3
+ */
4
+ // ── Errors ──────────────────────────────────────────────────────
5
+ export class CLIError extends Error {
6
+ code;
7
+ exitCode;
8
+ details;
9
+ constructor(message, code, exitCode = 1, details) {
10
+ super(message);
11
+ this.code = code;
12
+ this.exitCode = exitCode;
13
+ this.details = details;
14
+ this.name = "CLIError";
15
+ }
16
+ }
17
+ export class CommandNotFoundError extends CLIError {
18
+ constructor(name) {
19
+ super(`Unknown command: ${name}`, "COMMAND_NOT_FOUND", 127);
20
+ this.name = "CommandNotFoundError";
21
+ }
22
+ }
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+HH,mEAAmE;AAEnE,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGxB;IACA;IACA;IAJT,YACE,OAAe,EACR,IAAY,EACZ,WAAmB,CAAC,EACpB,OAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAY;QACpB,YAAO,GAAP,OAAO,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,YAAY,IAAY;QACtB,KAAK,CAAC,oBAAoB,IAAI,EAAE,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@aiyou-dev/cli",
3
+ "version": "0.1.0",
4
+ "description": "AI agent CLI with Rust-powered vector intelligence",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "aiyoucli": "./bin/aiyoucli.js",
10
+ "aiyoucli-mcp": "./bin/aiyoucli-mcp.js"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "scripts": {
16
+ "build:rs": "napi build --platform --release --package aiyoucli-napi -o .",
17
+ "build:ts": "tsc",
18
+ "build": "npm run build:rs && npm run build:ts",
19
+ "dev": "tsc --watch",
20
+ "test": "vitest run",
21
+ "test:watch": "vitest",
22
+ "lint": "eslint src/",
23
+ "clean": "rm -rf dist/ *.node"
24
+ },
25
+ "napi": {
26
+ "binaryName": "aiyoucli-napi",
27
+ "targets": [
28
+ "aarch64-apple-darwin",
29
+ "x86_64-apple-darwin",
30
+ "x86_64-unknown-linux-gnu",
31
+ "aarch64-unknown-linux-gnu",
32
+ "x86_64-pc-windows-msvc"
33
+ ]
34
+ },
35
+ "optionalDependencies": {
36
+ "@aiyou-dev/cli-darwin-arm64": "0.1.0",
37
+ "@aiyou-dev/cli-darwin-x64": "0.1.0",
38
+ "@aiyou-dev/cli-linux-x64-gnu": "0.1.0",
39
+ "@aiyou-dev/cli-linux-arm64-gnu": "0.1.0",
40
+ "@aiyou-dev/cli-win32-x64-msvc": "0.1.0"
41
+ },
42
+ "files": [
43
+ "bin/**",
44
+ "dist/**"
45
+ ],
46
+ "engines": {
47
+ "node": ">=20.0.0"
48
+ },
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "https://github.com/faugustdev/aiyoucli.git"
52
+ },
53
+ "author": {
54
+ "name": "Francisco August",
55
+ "email": "support@faugust.com"
56
+ },
57
+ "license": "MIT",
58
+ "devDependencies": {
59
+ "@napi-rs/cli": "^3.0.0-alpha",
60
+ "typescript": "^5.5.0",
61
+ "vitest": "^2.0.0",
62
+ "@types/node": "^22.0.0"
63
+ }
64
+ }