@kilospark/nairo 0.0.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/api.d.ts +16 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +102 -0
- package/dist/api.js.map +1 -0
- package/dist/auth-browser.d.ts +5 -0
- package/dist/auth-browser.d.ts.map +1 -0
- package/dist/auth-browser.js +217 -0
- package/dist/auth-browser.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +5 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +363 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/delete.d.ts +4 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +64 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/export.d.ts +4 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +25 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/hook.d.ts +4 -0
- package/dist/commands/hook.d.ts.map +1 -0
- package/dist/commands/hook.js +242 -0
- package/dist/commands/hook.js.map +1 -0
- package/dist/commands/import.d.ts +2 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +210 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/install.d.ts +9 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +282 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +90 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +24 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/search.d.ts +4 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +42 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/signup.d.ts +2 -0
- package/dist/commands/signup.d.ts.map +1 -0
- package/dist/commands/signup.js +6 -0
- package/dist/commands/signup.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +35 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/prompt.d.ts +10 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +37 -0
- package/dist/prompt.js.map +1 -0
- package/dist/tools/configure.d.ts +9 -0
- package/dist/tools/configure.d.ts.map +1 -0
- package/dist/tools/configure.js +326 -0
- package/dist/tools/configure.js.map +1 -0
- package/dist/tools/detect.d.ts +7 -0
- package/dist/tools/detect.d.ts.map +1 -0
- package/dist/tools/detect.js +125 -0
- package/dist/tools/detect.js.map +1 -0
- package/package.json +24 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { loadConfig, saveConfig } from "../config.js";
|
|
2
|
+
import { detectTools } from "../tools/detect.js";
|
|
3
|
+
import { configureTool, hasNairoMcpConfig } from "../tools/configure.js";
|
|
4
|
+
import { prompt } from "../prompt.js";
|
|
5
|
+
import { importCommand } from "./import.js";
|
|
6
|
+
import { bootstrapCommand } from "./bootstrap.js";
|
|
7
|
+
import { authenticateViaBrowser } from "../auth-browser.js";
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
9
|
+
import { join, dirname } from "node:path";
|
|
10
|
+
import { homedir } from "node:os";
|
|
11
|
+
function yes(answer) {
|
|
12
|
+
return answer.trim().toLowerCase() === "y";
|
|
13
|
+
}
|
|
14
|
+
function parseToolSelection(input, max) {
|
|
15
|
+
const picked = new Set();
|
|
16
|
+
for (const chunk of input.split(",")) {
|
|
17
|
+
const value = Number.parseInt(chunk.trim(), 10);
|
|
18
|
+
if (!Number.isNaN(value) && value >= 1 && value <= max) {
|
|
19
|
+
picked.add(value - 1);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return [...picked].sort((a, b) => a - b);
|
|
23
|
+
}
|
|
24
|
+
function configureClaudeCodeHooks(dryRun) {
|
|
25
|
+
const settingsPath = join(homedir(), ".claude", "settings.json");
|
|
26
|
+
if (dryRun) {
|
|
27
|
+
console.log(` [dry-run] Would configure hooks in ${settingsPath}`);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
let settings = {};
|
|
31
|
+
try {
|
|
32
|
+
if (existsSync(settingsPath)) {
|
|
33
|
+
settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Start fresh if the file is corrupted
|
|
38
|
+
}
|
|
39
|
+
const hooks = (settings.hooks ?? {});
|
|
40
|
+
// Merge nairo hooks into existing arrays (don't overwrite other tools' hooks)
|
|
41
|
+
const nairoHookEntries = {
|
|
42
|
+
PostToolUse: {
|
|
43
|
+
matcher: "Bash|Edit|Write|Read",
|
|
44
|
+
entry: {
|
|
45
|
+
matcher: "Bash|Edit|Write|Read",
|
|
46
|
+
hooks: [{ type: "command", command: "nairo hook post-tool-use", timeout: 5 }],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
SessionStart: {
|
|
50
|
+
matcher: "startup|resume",
|
|
51
|
+
entry: {
|
|
52
|
+
matcher: "startup|resume",
|
|
53
|
+
hooks: [{ type: "command", command: "nairo hook session-start", timeout: 10 }],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
SessionEnd: {
|
|
57
|
+
entry: {
|
|
58
|
+
hooks: [{ type: "command", command: "nairo hook session-end", timeout: 5 }],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
for (const [event, { entry }] of Object.entries(nairoHookEntries)) {
|
|
63
|
+
const existing = Array.isArray(hooks[event]) ? hooks[event] : [];
|
|
64
|
+
// Remove any previous nairo hook entries (matched by command string)
|
|
65
|
+
const filtered = existing.filter((h) => {
|
|
66
|
+
const hookObj = h;
|
|
67
|
+
const innerHooks = hookObj.hooks;
|
|
68
|
+
if (!Array.isArray(innerHooks))
|
|
69
|
+
return true;
|
|
70
|
+
return !innerHooks.some((ih) => String(ih.command ?? "").startsWith("nairo hook"));
|
|
71
|
+
});
|
|
72
|
+
filtered.push(entry);
|
|
73
|
+
hooks[event] = filtered;
|
|
74
|
+
}
|
|
75
|
+
settings.hooks = hooks;
|
|
76
|
+
const dir = dirname(settingsPath);
|
|
77
|
+
if (!existsSync(dir)) {
|
|
78
|
+
mkdirSync(dir, { recursive: true });
|
|
79
|
+
}
|
|
80
|
+
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n", "utf-8");
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
export async function installCommand(options = {}) {
|
|
84
|
+
console.log("Nairo Install\n");
|
|
85
|
+
// Step 1: Resolve configuration
|
|
86
|
+
const stored = loadConfig();
|
|
87
|
+
const hasExplicitApiUrl = typeof options.apiUrl === "string" && options.apiUrl.trim().length > 0;
|
|
88
|
+
const hasExplicitApiKey = typeof options.apiKey === "string" && options.apiKey.trim().length > 0;
|
|
89
|
+
let apiUrl = options.apiUrl ||
|
|
90
|
+
stored?.apiUrl ||
|
|
91
|
+
process.env.NAIRO_API_URL ||
|
|
92
|
+
"http://localhost:3000";
|
|
93
|
+
let apiKey = options.apiKey || stored?.apiKey || process.env.NAIRO_API_KEY;
|
|
94
|
+
const dryRun = options.dryRun === true;
|
|
95
|
+
const forceBrowserAuth = options.browserAuth === true;
|
|
96
|
+
// Explicit CLI args always win.
|
|
97
|
+
if (hasExplicitApiUrl) {
|
|
98
|
+
apiUrl = String(options.apiUrl).trim();
|
|
99
|
+
}
|
|
100
|
+
if (hasExplicitApiKey) {
|
|
101
|
+
apiKey = String(options.apiKey).trim();
|
|
102
|
+
if (!apiKey) {
|
|
103
|
+
console.error("API key is required.");
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (!apiKey || forceBrowserAuth) {
|
|
108
|
+
if (dryRun) {
|
|
109
|
+
console.log("[dry-run] Browser authentication requested/needed. Skipping in dry-run.");
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
console.log(`${forceBrowserAuth ? "Browser sign-in forced." : "No API key found."} Starting browser sign-in...\n`);
|
|
113
|
+
try {
|
|
114
|
+
const result = await authenticateViaBrowser(apiUrl);
|
|
115
|
+
apiKey = result.apiKey;
|
|
116
|
+
saveConfig({
|
|
117
|
+
apiKey,
|
|
118
|
+
apiUrl,
|
|
119
|
+
email: result.email,
|
|
120
|
+
});
|
|
121
|
+
console.log(`Signed in as ${result.email}`);
|
|
122
|
+
console.log("Saved to ~/.nairo/config.json\n");
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
126
|
+
console.error(`Browser sign-in failed: ${message}`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else if (hasExplicitApiUrl || hasExplicitApiKey) {
|
|
131
|
+
if (!dryRun) {
|
|
132
|
+
saveConfig({
|
|
133
|
+
apiKey,
|
|
134
|
+
apiUrl,
|
|
135
|
+
email: stored?.email,
|
|
136
|
+
});
|
|
137
|
+
console.log("Saved provided API settings to ~/.nairo/config.json\n");
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
console.log("[dry-run] Would save provided API settings to ~/.nairo/config.json\n");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (stored?.email) {
|
|
144
|
+
console.log(`Using config for ${stored.email} (${stored.apiUrl})\n`);
|
|
145
|
+
}
|
|
146
|
+
else if (stored) {
|
|
147
|
+
console.log(`Using saved config (${stored.apiUrl})\n`);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
if (!dryRun) {
|
|
151
|
+
saveConfig({
|
|
152
|
+
apiKey,
|
|
153
|
+
apiUrl,
|
|
154
|
+
});
|
|
155
|
+
console.log("Saved provided API settings to ~/.nairo/config.json\n");
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.log("[dry-run] Would save provided API settings to ~/.nairo/config.json\n");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (!dryRun) {
|
|
162
|
+
try {
|
|
163
|
+
const response = await fetch(`${apiUrl.replace(/\/+$/, "")}/api/mcp`, {
|
|
164
|
+
method: "GET",
|
|
165
|
+
});
|
|
166
|
+
if (response.status !== 401 && response.status !== 405) {
|
|
167
|
+
console.log(`Warning: MCP endpoint check returned ${response.status}. Continuing.`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
console.log("Warning: could not reach MCP endpoint during preflight check.");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
console.log("[dry-run] Skipping MCP endpoint preflight check.");
|
|
176
|
+
}
|
|
177
|
+
// Step 2: Detect installed AI tools
|
|
178
|
+
console.log("Detecting AI coding tools...\n");
|
|
179
|
+
const tools = detectTools();
|
|
180
|
+
const detected = tools.filter((t) => t.detected);
|
|
181
|
+
if (detected.length === 0) {
|
|
182
|
+
console.log("No supported AI coding tools detected.");
|
|
183
|
+
console.log("Supported tools: Claude Code, Cursor, Codex, VS Code (Copilot), Windsurf, Opencode, Gemini, Droid, Zed");
|
|
184
|
+
console.log("\nInstall one of these tools and run `nairo install` again.");
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
console.log("Found:");
|
|
188
|
+
for (const [index, tool] of detected.entries()) {
|
|
189
|
+
const installed = hasNairoMcpConfig(tool, apiUrl);
|
|
190
|
+
const mark = installed ? "✓" : "✗";
|
|
191
|
+
console.log(` [${index + 1}] ${tool.name} (${mark} nairo mcp)`);
|
|
192
|
+
}
|
|
193
|
+
const notDetected = tools.filter((t) => !t.detected);
|
|
194
|
+
for (const tool of notDetected) {
|
|
195
|
+
console.log(` [ ] ${tool.name} (not found)`);
|
|
196
|
+
}
|
|
197
|
+
const mode = await prompt("\nInstall into (a)ll detected tools, (s)elect specific ones, or s(k)ip MCP install? [a/s/k]: ");
|
|
198
|
+
let selected = detected;
|
|
199
|
+
const modeNormalized = mode.trim().toLowerCase();
|
|
200
|
+
if (modeNormalized === "k" || modeNormalized === "skip") {
|
|
201
|
+
selected = [];
|
|
202
|
+
console.log("Skipping MCP configuration for tools.");
|
|
203
|
+
}
|
|
204
|
+
else if (modeNormalized === "s") {
|
|
205
|
+
const picked = await prompt("Enter tool numbers (comma-separated, e.g. 1,3): ");
|
|
206
|
+
const indexes = parseToolSelection(picked, detected.length);
|
|
207
|
+
if (indexes.length === 0) {
|
|
208
|
+
selected = [];
|
|
209
|
+
console.log("No valid tool selection. Skipping MCP configuration.");
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
selected = indexes.map((i) => detected[i]);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else if (modeNormalized !== "a" && modeNormalized !== "") {
|
|
216
|
+
selected = [];
|
|
217
|
+
console.log("Invalid choice. Skipping MCP configuration.");
|
|
218
|
+
}
|
|
219
|
+
let shouldConfigure = selected.length > 0;
|
|
220
|
+
if (selected.length > 0) {
|
|
221
|
+
const confirm = await prompt(`Configure ${selected.length} tool(s) now? [y/N]: `);
|
|
222
|
+
shouldConfigure = yes(confirm);
|
|
223
|
+
}
|
|
224
|
+
// Step 3: Configure MCP
|
|
225
|
+
if (shouldConfigure) {
|
|
226
|
+
console.log("\nConfiguring MCP...\n");
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
console.log("\nMCP configuration skipped.\n");
|
|
230
|
+
}
|
|
231
|
+
let configured = 0;
|
|
232
|
+
if (shouldConfigure) {
|
|
233
|
+
for (const tool of selected) {
|
|
234
|
+
try {
|
|
235
|
+
configureTool(tool, apiKey, apiUrl, { dryRun });
|
|
236
|
+
const status = dryRun ? "[dry-run]" : "[ok]";
|
|
237
|
+
console.log(` ${status} ${tool.name} — ${tool.configPath}`);
|
|
238
|
+
if (tool.name === "Codex") {
|
|
239
|
+
console.log(dryRun
|
|
240
|
+
? " [dry-run] Would configure Codex auth header for Nairo."
|
|
241
|
+
: " Codex configured with direct Authorization header for Nairo (no env var dependency).");
|
|
242
|
+
}
|
|
243
|
+
configured++;
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
247
|
+
console.log(` [err] ${tool.name} — ${message}`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Step 3b: Configure Claude Code hooks
|
|
252
|
+
if (!dryRun) {
|
|
253
|
+
console.log("\nConfiguring Claude Code hooks...\n");
|
|
254
|
+
try {
|
|
255
|
+
configureClaudeCodeHooks(false);
|
|
256
|
+
console.log(" [ok] Claude Code hooks — ~/.claude/settings.json");
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
260
|
+
console.log(` [err] Claude Code hooks — ${message}`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
configureClaudeCodeHooks(true);
|
|
265
|
+
}
|
|
266
|
+
// Step 4: Summary
|
|
267
|
+
console.log(`\nDone! Configured ${configured}/${selected.length} selected tool(s).`);
|
|
268
|
+
console.log("Restart your AI tools to pick up the new MCP configuration.");
|
|
269
|
+
if (!dryRun) {
|
|
270
|
+
const importAnswer = await prompt("\nRun import onboarding for local conversation sources now? [y/N]: ");
|
|
271
|
+
if (yes(importAnswer)) {
|
|
272
|
+
console.log("");
|
|
273
|
+
await importCommand();
|
|
274
|
+
}
|
|
275
|
+
const bootstrapAnswer = await prompt("\nRun bootstrap for current workspace now? [y/N]: ");
|
|
276
|
+
if (yes(bootstrapAnswer)) {
|
|
277
|
+
console.log("");
|
|
278
|
+
await bootstrapCommand({});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AA4CA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFhB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { getConfig } from "../config.js";
|
|
2
|
+
import { apiClient } from "../api.js";
|
|
3
|
+
import { prompt } from "../prompt.js";
|
|
4
|
+
function formatDate(dateStr) {
|
|
5
|
+
try {
|
|
6
|
+
const d = new Date(dateStr);
|
|
7
|
+
return d.toLocaleDateString("en-US", {
|
|
8
|
+
year: "numeric",
|
|
9
|
+
month: "short",
|
|
10
|
+
day: "numeric",
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return dateStr;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function padEnd(str, len) {
|
|
18
|
+
if (str.length >= len)
|
|
19
|
+
return str.slice(0, len);
|
|
20
|
+
return str + " ".repeat(len - str.length);
|
|
21
|
+
}
|
|
22
|
+
export async function listCommand(options) {
|
|
23
|
+
const config = getConfig();
|
|
24
|
+
let projectId = options.project;
|
|
25
|
+
// If no project specified, list projects and let user pick
|
|
26
|
+
if (!projectId) {
|
|
27
|
+
try {
|
|
28
|
+
const resp = await apiClient("/api/projects");
|
|
29
|
+
if (resp.projects.length === 0) {
|
|
30
|
+
console.log("No projects found. Run `nairo bootstrap` to create one.");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (resp.projects.length === 1) {
|
|
34
|
+
projectId = resp.projects[0].id;
|
|
35
|
+
console.log(`Using project: ${resp.projects[0].name}\n`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.log("Select a project:\n");
|
|
39
|
+
for (let i = 0; i < resp.projects.length; i++) {
|
|
40
|
+
console.log(` ${i + 1}. ${resp.projects[i].name} (${resp.projects[i].id})`);
|
|
41
|
+
}
|
|
42
|
+
console.log("");
|
|
43
|
+
const answer = await prompt("Project number: ");
|
|
44
|
+
const idx = parseInt(answer, 10) - 1;
|
|
45
|
+
if (isNaN(idx) || idx < 0 || idx >= resp.projects.length) {
|
|
46
|
+
console.error("Invalid selection.");
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
projectId = resp.projects[idx].id;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
54
|
+
console.error(`Failed to list projects: ${message}`);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Fetch events
|
|
59
|
+
try {
|
|
60
|
+
let path = `/api/events?projectId=${projectId}`;
|
|
61
|
+
if (options.type) {
|
|
62
|
+
path += `&type=${encodeURIComponent(options.type)}`;
|
|
63
|
+
}
|
|
64
|
+
const resp = await apiClient(path);
|
|
65
|
+
if (resp.events.length === 0) {
|
|
66
|
+
console.log("No events found.");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// Display table
|
|
70
|
+
const header = `${padEnd("TYPE", 20)} ${padEnd("SUMMARY", 50)} ${padEnd("CONF", 6)} ${padEnd("DATE", 14)}`;
|
|
71
|
+
console.log(header);
|
|
72
|
+
console.log("-".repeat(header.length));
|
|
73
|
+
for (const event of resp.events) {
|
|
74
|
+
const type = padEnd(event.type, 20);
|
|
75
|
+
const summary = padEnd(event.summary.length > 48
|
|
76
|
+
? event.summary.slice(0, 48) + ".."
|
|
77
|
+
: event.summary, 50);
|
|
78
|
+
const conf = padEnd(String(event.confidence), 6);
|
|
79
|
+
const date = padEnd(formatDate(event.createdAt), 14);
|
|
80
|
+
console.log(`${type} ${summary} ${conf} ${date}`);
|
|
81
|
+
}
|
|
82
|
+
console.log(`\nTotal: ${resp.total} event(s)`);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
86
|
+
console.error(`Failed to list events: ${message}`);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBlD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { saveConfig } from "../config.js";
|
|
2
|
+
import { prompt } from "../prompt.js";
|
|
3
|
+
import { authenticateViaBrowser } from "../auth-browser.js";
|
|
4
|
+
export async function loginCommand() {
|
|
5
|
+
console.log("Nairo CLI browser login\n");
|
|
6
|
+
const apiUrlInput = await prompt("API URL [http://localhost:3000]: ");
|
|
7
|
+
const apiUrl = apiUrlInput || "http://localhost:3000";
|
|
8
|
+
try {
|
|
9
|
+
const result = await authenticateViaBrowser(apiUrl);
|
|
10
|
+
saveConfig({
|
|
11
|
+
apiKey: result.apiKey,
|
|
12
|
+
apiUrl,
|
|
13
|
+
email: result.email,
|
|
14
|
+
});
|
|
15
|
+
console.log(`\nSigned in as ${result.email}`);
|
|
16
|
+
console.log("Saved API credentials to ~/.nairo/config.json");
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
20
|
+
console.error(`Browser login failed: ${message}`);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,WAAW,IAAI,uBAAuB,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACpD,UAAU,CAAC;YACT,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAqBA,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { getConfig } from "../config.js";
|
|
2
|
+
import { apiClient } from "../api.js";
|
|
3
|
+
function padEnd(str, len) {
|
|
4
|
+
if (str.length >= len)
|
|
5
|
+
return str.slice(0, len);
|
|
6
|
+
return str + " ".repeat(len - str.length);
|
|
7
|
+
}
|
|
8
|
+
export async function searchCommand(query, options) {
|
|
9
|
+
const config = getConfig();
|
|
10
|
+
try {
|
|
11
|
+
const body = { query };
|
|
12
|
+
if (options.project) {
|
|
13
|
+
body.projectId = options.project;
|
|
14
|
+
}
|
|
15
|
+
const resp = await apiClient("/api/search", {
|
|
16
|
+
method: "POST",
|
|
17
|
+
body,
|
|
18
|
+
});
|
|
19
|
+
if (resp.results.length === 0) {
|
|
20
|
+
console.log("No results found.");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
console.log(`Found ${resp.results.length} result(s):\n`);
|
|
24
|
+
const header = `${padEnd("#", 4)} ${padEnd("TYPE", 20)} ${padEnd("SUMMARY", 60)} ${padEnd("CONF", 6)}`;
|
|
25
|
+
console.log(header);
|
|
26
|
+
console.log("-".repeat(header.length));
|
|
27
|
+
for (let i = 0; i < resp.results.length; i++) {
|
|
28
|
+
const r = resp.results[i];
|
|
29
|
+
const num = padEnd(String(i + 1), 4);
|
|
30
|
+
const type = padEnd(r.type, 20);
|
|
31
|
+
const summary = padEnd(r.summary.length > 58 ? r.summary.slice(0, 58) + ".." : r.summary, 60);
|
|
32
|
+
const conf = padEnd(String(r.confidence), 6);
|
|
33
|
+
console.log(`${num} ${type} ${summary} ${conf}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
+
console.error(`Search failed: ${message}`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../src/commands/signup.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/commands/signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,MAAM,YAAY,EAAE,CAAC;AACvB,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface NairoConfig {
|
|
2
|
+
apiKey: string;
|
|
3
|
+
apiUrl: string;
|
|
4
|
+
email?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function loadConfig(): NairoConfig | null;
|
|
7
|
+
export declare function saveConfig(config: NairoConfig): void;
|
|
8
|
+
export declare function getConfig(): NairoConfig;
|
|
9
|
+
export declare const DEFAULT_API_URL = "https://api.nairo.dev";
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,UAAU,IAAI,WAAW,GAAG,IAAI,CAU/C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAKpD;AAED,wBAAgB,SAAS,IAAI,WAAW,CAavC;AAED,eAAO,MAAM,eAAe,0BAA0B,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const CONFIG_DIR = join(homedir(), ".nairo");
|
|
5
|
+
const CONFIG_FILE = join(CONFIG_DIR, "config.json");
|
|
6
|
+
export function loadConfig() {
|
|
7
|
+
try {
|
|
8
|
+
if (!existsSync(CONFIG_FILE)) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const raw = readFileSync(CONFIG_FILE, "utf-8");
|
|
12
|
+
return JSON.parse(raw);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function saveConfig(config) {
|
|
19
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
20
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), "utf-8");
|
|
23
|
+
}
|
|
24
|
+
export function getConfig() {
|
|
25
|
+
const config = loadConfig();
|
|
26
|
+
if (!config) {
|
|
27
|
+
throw new Error("Nairo is not configured. Run `nairo install` first.");
|
|
28
|
+
}
|
|
29
|
+
if (!config.apiKey) {
|
|
30
|
+
throw new Error("No API key found. Run `nairo install` first.");
|
|
31
|
+
}
|
|
32
|
+
return config;
|
|
33
|
+
}
|
|
34
|
+
export const DEFAULT_API_URL = "https://api.nairo.dev";
|
|
35
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,qDAAqD,CACtD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|