@staticn0va/wigolo 0.6.4 → 0.6.6

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 (189) hide show
  1. package/README.md +88 -64
  2. package/SKILL.md +22 -22
  3. package/assets/blocks/claude-code/CLAUDE.md.block +20 -0
  4. package/assets/blocks/claude-code/wigolo-command.md +40 -0
  5. package/assets/blocks/cursor/wigolo.mdc +46 -0
  6. package/assets/blocks/gemini-cli/GEMINI.md.block +18 -0
  7. package/assets/blocks/vscode/copilot-instructions.md.block +18 -0
  8. package/assets/skills/wigolo/SKILL.md +50 -0
  9. package/assets/skills/wigolo/rules/cache-first.md +30 -0
  10. package/assets/skills/wigolo/rules/synthesis.md +43 -0
  11. package/assets/skills/wigolo-agent/SKILL.md +73 -0
  12. package/assets/skills/wigolo-crawl/SKILL.md +60 -0
  13. package/assets/skills/wigolo-extract/SKILL.md +59 -0
  14. package/assets/skills/wigolo-fetch/SKILL.md +65 -0
  15. package/assets/skills/wigolo-find-similar/SKILL.md +72 -0
  16. package/assets/skills/wigolo-research/SKILL.md +77 -0
  17. package/assets/skills/wigolo-search/SKILL.md +78 -0
  18. package/dist/agent/pipeline.js +3 -3
  19. package/dist/agent/pipeline.js.map +1 -1
  20. package/dist/cache/store.d.ts.map +1 -1
  21. package/dist/cache/store.js +44 -33
  22. package/dist/cache/store.js.map +1 -1
  23. package/dist/cli/agents/antigravity.d.ts +20 -0
  24. package/dist/cli/agents/antigravity.d.ts.map +1 -0
  25. package/dist/cli/agents/antigravity.js +56 -0
  26. package/dist/cli/agents/antigravity.js.map +1 -0
  27. package/dist/cli/agents/claude-code.d.ts +25 -0
  28. package/dist/cli/agents/claude-code.d.ts.map +1 -0
  29. package/dist/cli/agents/claude-code.js +117 -0
  30. package/dist/cli/agents/claude-code.js.map +1 -0
  31. package/dist/cli/agents/cursor.d.ts +21 -0
  32. package/dist/cli/agents/cursor.d.ts.map +1 -0
  33. package/dist/cli/agents/cursor.js +57 -0
  34. package/dist/cli/agents/cursor.js.map +1 -0
  35. package/dist/cli/agents/gemini-cli.d.ts +21 -0
  36. package/dist/cli/agents/gemini-cli.d.ts.map +1 -0
  37. package/dist/cli/agents/gemini-cli.js +55 -0
  38. package/dist/cli/agents/gemini-cli.js.map +1 -0
  39. package/dist/cli/agents/registry.d.ts +21 -0
  40. package/dist/cli/agents/registry.d.ts.map +1 -0
  41. package/dist/cli/agents/registry.js +20 -0
  42. package/dist/cli/agents/registry.js.map +1 -0
  43. package/dist/cli/agents/utils.d.ts +26 -0
  44. package/dist/cli/agents/utils.d.ts.map +1 -0
  45. package/dist/cli/agents/utils.js +151 -0
  46. package/dist/cli/agents/utils.js.map +1 -0
  47. package/dist/cli/agents/vscode.d.ts +21 -0
  48. package/dist/cli/agents/vscode.d.ts.map +1 -0
  49. package/dist/cli/agents/vscode.js +58 -0
  50. package/dist/cli/agents/vscode.js.map +1 -0
  51. package/dist/cli/doctor.d.ts +3 -3
  52. package/dist/cli/doctor.js +12 -12
  53. package/dist/cli/doctor.js.map +1 -1
  54. package/dist/cli/health.js +1 -1
  55. package/dist/cli/health.js.map +1 -1
  56. package/dist/cli/index.d.ts +1 -1
  57. package/dist/cli/index.d.ts.map +1 -1
  58. package/dist/cli/index.js +1 -0
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/init.d.ts.map +1 -1
  61. package/dist/cli/init.js +92 -54
  62. package/dist/cli/init.js.map +1 -1
  63. package/dist/cli/tui/components/AgentSelect.d.ts +13 -0
  64. package/dist/cli/tui/components/AgentSelect.d.ts.map +1 -0
  65. package/dist/cli/tui/components/AgentSelect.js +88 -0
  66. package/dist/cli/tui/components/AgentSelect.js.map +1 -0
  67. package/dist/cli/tui/components/Banner.d.ts +6 -0
  68. package/dist/cli/tui/components/Banner.d.ts.map +1 -0
  69. package/dist/cli/tui/components/Banner.js +15 -0
  70. package/dist/cli/tui/components/Banner.js.map +1 -0
  71. package/dist/cli/tui/components/BrowserSelect.d.ts +7 -0
  72. package/dist/cli/tui/components/BrowserSelect.d.ts.map +1 -0
  73. package/dist/cli/tui/components/BrowserSelect.js +12 -0
  74. package/dist/cli/tui/components/BrowserSelect.js.map +1 -0
  75. package/dist/cli/tui/components/InstallProgress.d.ts +9 -0
  76. package/dist/cli/tui/components/InstallProgress.d.ts.map +1 -0
  77. package/dist/cli/tui/components/InstallProgress.js +34 -0
  78. package/dist/cli/tui/components/InstallProgress.js.map +1 -0
  79. package/dist/cli/tui/components/SkillInstall.d.ts +14 -0
  80. package/dist/cli/tui/components/SkillInstall.d.ts.map +1 -0
  81. package/dist/cli/tui/components/SkillInstall.js +80 -0
  82. package/dist/cli/tui/components/SkillInstall.js.map +1 -0
  83. package/dist/cli/tui/components/Summary.d.ts +22 -0
  84. package/dist/cli/tui/components/Summary.d.ts.map +1 -0
  85. package/dist/cli/tui/components/Summary.js +19 -0
  86. package/dist/cli/tui/components/Summary.js.map +1 -0
  87. package/dist/cli/tui/components/SystemCheck.d.ts +8 -0
  88. package/dist/cli/tui/components/SystemCheck.d.ts.map +1 -0
  89. package/dist/cli/tui/components/SystemCheck.js +36 -0
  90. package/dist/cli/tui/components/SystemCheck.js.map +1 -0
  91. package/dist/cli/tui/components/Verification.d.ts +8 -0
  92. package/dist/cli/tui/components/Verification.d.ts.map +1 -0
  93. package/dist/cli/tui/components/Verification.js +31 -0
  94. package/dist/cli/tui/components/Verification.js.map +1 -0
  95. package/dist/cli/tui/hooks/useAgentDetect.d.ts +6 -0
  96. package/dist/cli/tui/hooks/useAgentDetect.d.ts.map +1 -0
  97. package/dist/cli/tui/hooks/useAgentDetect.js +18 -0
  98. package/dist/cli/tui/hooks/useAgentDetect.js.map +1 -0
  99. package/dist/cli/tui/hooks/useInstall.d.ts +14 -0
  100. package/dist/cli/tui/hooks/useInstall.d.ts.map +1 -0
  101. package/dist/cli/tui/hooks/useInstall.js +70 -0
  102. package/dist/cli/tui/hooks/useInstall.js.map +1 -0
  103. package/dist/cli/tui/hooks/useSystemCheck.d.ts +13 -0
  104. package/dist/cli/tui/hooks/useSystemCheck.d.ts.map +1 -0
  105. package/dist/cli/tui/hooks/useSystemCheck.js +97 -0
  106. package/dist/cli/tui/hooks/useSystemCheck.js.map +1 -0
  107. package/dist/cli/tui/hooks/useVerify.d.ts +14 -0
  108. package/dist/cli/tui/hooks/useVerify.d.ts.map +1 -0
  109. package/dist/cli/tui/hooks/useVerify.js +52 -0
  110. package/dist/cli/tui/hooks/useVerify.js.map +1 -0
  111. package/dist/cli/tui/ink-init.d.ts +2 -0
  112. package/dist/cli/tui/ink-init.d.ts.map +1 -0
  113. package/dist/cli/tui/ink-init.js +125 -0
  114. package/dist/cli/tui/ink-init.js.map +1 -0
  115. package/dist/cli/tui/status-format.js +5 -5
  116. package/dist/cli/tui/status-format.js.map +1 -1
  117. package/dist/cli/tui/status-python.js +1 -1
  118. package/dist/cli/tui/status-python.js.map +1 -1
  119. package/dist/cli/tui/utils/config-writer.d.ts +3 -0
  120. package/dist/cli/tui/utils/config-writer.d.ts.map +1 -0
  121. package/dist/cli/tui/utils/config-writer.js +20 -0
  122. package/dist/cli/tui/utils/config-writer.js.map +1 -0
  123. package/dist/cli/tui/utils/suppress-logs.d.ts +3 -0
  124. package/dist/cli/tui/utils/suppress-logs.d.ts.map +1 -0
  125. package/dist/cli/tui/utils/suppress-logs.js +7 -0
  126. package/dist/cli/tui/utils/suppress-logs.js.map +1 -0
  127. package/dist/cli/tui/verify-suggestions.d.ts +1 -1
  128. package/dist/cli/tui/verify-suggestions.d.ts.map +1 -1
  129. package/dist/cli/tui/verify-suggestions.js +3 -6
  130. package/dist/cli/tui/verify-suggestions.js.map +1 -1
  131. package/dist/cli/tui/verify.d.ts +0 -3
  132. package/dist/cli/tui/verify.d.ts.map +1 -1
  133. package/dist/cli/tui/verify.js +3 -29
  134. package/dist/cli/tui/verify.js.map +1 -1
  135. package/dist/cli/uninstall.d.ts +2 -0
  136. package/dist/cli/uninstall.d.ts.map +1 -0
  137. package/dist/cli/uninstall.js +50 -0
  138. package/dist/cli/uninstall.js.map +1 -0
  139. package/dist/cli/warmup.js +14 -14
  140. package/dist/cli/warmup.js.map +1 -1
  141. package/dist/embedding/embed.d.ts +2 -0
  142. package/dist/embedding/embed.d.ts.map +1 -1
  143. package/dist/embedding/embed.js +18 -0
  144. package/dist/embedding/embed.js.map +1 -1
  145. package/dist/index.js +6 -0
  146. package/dist/index.js.map +1 -1
  147. package/dist/instructions.d.ts +5 -5
  148. package/dist/instructions.d.ts.map +1 -1
  149. package/dist/instructions.js +17 -16
  150. package/dist/instructions.js.map +1 -1
  151. package/dist/logger.d.ts.map +1 -1
  152. package/dist/logger.js +29 -1
  153. package/dist/logger.js.map +1 -1
  154. package/dist/research/brief.d.ts +4 -2
  155. package/dist/research/brief.d.ts.map +1 -1
  156. package/dist/research/brief.js +127 -1
  157. package/dist/research/brief.js.map +1 -1
  158. package/dist/research/decompose.d.ts +7 -0
  159. package/dist/research/decompose.d.ts.map +1 -1
  160. package/dist/research/decompose.js +126 -2
  161. package/dist/research/decompose.js.map +1 -1
  162. package/dist/research/pipeline.d.ts +1 -1
  163. package/dist/research/pipeline.d.ts.map +1 -1
  164. package/dist/research/pipeline.js +12 -7
  165. package/dist/research/pipeline.js.map +1 -1
  166. package/dist/search/engines/bing.d.ts.map +1 -1
  167. package/dist/search/engines/bing.js +40 -0
  168. package/dist/search/engines/bing.js.map +1 -1
  169. package/dist/search/engines/duckduckgo.d.ts.map +1 -1
  170. package/dist/search/engines/duckduckgo.js +13 -1
  171. package/dist/search/engines/duckduckgo.js.map +1 -1
  172. package/dist/search/engines/startpage.d.ts.map +1 -1
  173. package/dist/search/engines/startpage.js +21 -1
  174. package/dist/search/engines/startpage.js.map +1 -1
  175. package/dist/search/find-similar.d.ts.map +1 -1
  176. package/dist/search/find-similar.js +28 -8
  177. package/dist/search/find-similar.js.map +1 -1
  178. package/dist/server/backend-status.js +2 -2
  179. package/dist/server/backend-status.js.map +1 -1
  180. package/dist/server.js +15 -15
  181. package/dist/server.js.map +1 -1
  182. package/dist/tools/fetch.d.ts.map +1 -1
  183. package/dist/tools/fetch.js +6 -1
  184. package/dist/tools/fetch.js.map +1 -1
  185. package/dist/tools/search.js +2 -2
  186. package/dist/tools/search.js.map +1 -1
  187. package/dist/types.d.ts +17 -0
  188. package/dist/types.d.ts.map +1 -1
  189. package/package.json +10 -4
@@ -0,0 +1,151 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync } from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { execSync } from 'node:child_process';
5
+ function getPackageRoot() {
6
+ const here = dirname(fileURLToPath(import.meta.url));
7
+ // dist/cli/agents/utils.js → ../../.. = package root
8
+ return join(here, '..', '..', '..');
9
+ }
10
+ export function getVersion() {
11
+ try {
12
+ const raw = readFileSync(join(getPackageRoot(), 'package.json'), 'utf-8');
13
+ const pkg = JSON.parse(raw);
14
+ return pkg.version ?? '0.0.0';
15
+ }
16
+ catch {
17
+ return '0.0.0';
18
+ }
19
+ }
20
+ export function readAsset(relPath) {
21
+ const full = join(getPackageRoot(), 'assets', relPath);
22
+ return readFileSync(full, 'utf-8').replace(/\{version\}/g, getVersion());
23
+ }
24
+ /** Returns { 'SKILL.md': content, 'rules/cache-first.md': content, ... } */
25
+ export function readSkillDir(name) {
26
+ const dir = join(getPackageRoot(), 'assets', 'skills', name);
27
+ const result = {};
28
+ const mainPath = join(dir, 'SKILL.md');
29
+ if (existsSync(mainPath)) {
30
+ result['SKILL.md'] = readFileSync(mainPath, 'utf-8');
31
+ }
32
+ const rulesDir = join(dir, 'rules');
33
+ if (existsSync(rulesDir)) {
34
+ for (const file of readdirSync(rulesDir)) {
35
+ if (file.endsWith('.md')) {
36
+ result[`rules/${file}`] = readFileSync(join(rulesDir, file), 'utf-8');
37
+ }
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ /**
43
+ * Merge a block (delimited by wigolo:start/wigolo:end markers) into a file.
44
+ * Creates the file if it doesn't exist.
45
+ * Replaces an existing block, or appends if no block present.
46
+ */
47
+ export function mergeBlock(filePath, block) {
48
+ mkdirSync(dirname(filePath), { recursive: true });
49
+ const START = '<!-- wigolo:start';
50
+ const END = '<!-- wigolo:end -->';
51
+ if (!existsSync(filePath)) {
52
+ writeFileSync(filePath, block.trimEnd() + '\n', 'utf-8');
53
+ return;
54
+ }
55
+ const content = readFileSync(filePath, 'utf-8');
56
+ const startIdx = content.indexOf(START);
57
+ const endIdx = content.indexOf(END);
58
+ if (startIdx !== -1 && endIdx !== -1) {
59
+ const before = content.slice(0, startIdx).trimEnd();
60
+ const after = content.slice(endIdx + END.length).trimStart();
61
+ const parts = [before, block.trimEnd(), after].filter(Boolean);
62
+ writeFileSync(filePath, parts.join('\n\n') + '\n', 'utf-8');
63
+ }
64
+ else {
65
+ const trimmed = content.trimEnd();
66
+ writeFileSync(filePath, trimmed + '\n\n' + block.trimEnd() + '\n', 'utf-8');
67
+ }
68
+ }
69
+ /** Remove the wigolo block from a file. Returns true if a block was removed. */
70
+ export function removeBlock(filePath) {
71
+ if (!existsSync(filePath))
72
+ return false;
73
+ const START = '<!-- wigolo:start';
74
+ const END = '<!-- wigolo:end -->';
75
+ const content = readFileSync(filePath, 'utf-8');
76
+ const startIdx = content.indexOf(START);
77
+ const endIdx = content.indexOf(END);
78
+ if (startIdx === -1 || endIdx === -1)
79
+ return false;
80
+ const before = content.slice(0, startIdx).trimEnd();
81
+ const after = content.slice(endIdx + END.length).trimStart();
82
+ const parts = [before, after].filter(Boolean);
83
+ const newContent = parts.join('\n\n');
84
+ writeFileSync(filePath, newContent ? newContent + '\n' : '', 'utf-8');
85
+ return true;
86
+ }
87
+ /**
88
+ * Create or merge an MCP server entry into a JSON config file.
89
+ * keyPath like ['mcpServers', 'wigolo'] navigates/creates nested keys.
90
+ * Other servers in the file are preserved.
91
+ */
92
+ export function mergeMcpJson(configPath, entry, keyPath) {
93
+ mkdirSync(dirname(configPath), { recursive: true });
94
+ let root = {};
95
+ if (existsSync(configPath)) {
96
+ try {
97
+ root = JSON.parse(readFileSync(configPath, 'utf-8'));
98
+ }
99
+ catch {
100
+ root = {};
101
+ }
102
+ }
103
+ let obj = root;
104
+ for (let i = 0; i < keyPath.length - 1; i++) {
105
+ const key = keyPath[i];
106
+ if (typeof obj[key] !== 'object' || obj[key] === null) {
107
+ obj[key] = {};
108
+ }
109
+ obj = obj[key];
110
+ }
111
+ obj[keyPath[keyPath.length - 1]] = entry;
112
+ writeFileSync(configPath, JSON.stringify(root, null, 2) + '\n', 'utf-8');
113
+ }
114
+ /** Remove the wigolo entry from a JSON MCP config, preserving other servers. */
115
+ export function removeMcpJson(configPath, keyPath) {
116
+ if (!existsSync(configPath))
117
+ return;
118
+ let root;
119
+ try {
120
+ root = JSON.parse(readFileSync(configPath, 'utf-8'));
121
+ }
122
+ catch {
123
+ return;
124
+ }
125
+ let obj = root;
126
+ for (let i = 0; i < keyPath.length - 1; i++) {
127
+ const key = keyPath[i];
128
+ if (typeof obj[key] !== 'object' || obj[key] === null)
129
+ return;
130
+ obj = obj[key];
131
+ }
132
+ delete obj[keyPath[keyPath.length - 1]];
133
+ writeFileSync(configPath, JSON.stringify(root, null, 2) + '\n', 'utf-8');
134
+ }
135
+ /** Detect whether wigolo is installed globally and return the appropriate command. */
136
+ export function getMcpCommand() {
137
+ try {
138
+ const path = execSync('which wigolo', {
139
+ encoding: 'utf-8',
140
+ stdio: ['pipe', 'pipe', 'pipe'],
141
+ }).trim();
142
+ if (path) {
143
+ return { command: 'wigolo', args: [] };
144
+ }
145
+ }
146
+ catch {
147
+ // not found globally
148
+ }
149
+ return { command: 'npx', args: ['-y', '@staticn0va/wigolo'] };
150
+ }
151
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/cli/agents/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ declare function detect(): boolean;
2
+ declare function installMcp(cmd: {
3
+ command: string;
4
+ args: string[];
5
+ }): Promise<void>;
6
+ declare function installInstructions(): Promise<void>;
7
+ declare function uninstall(): Promise<{
8
+ removed: string[];
9
+ }>;
10
+ export declare const vscodeHandler: {
11
+ id: "vscode";
12
+ displayName: string;
13
+ supportsSkills: boolean;
14
+ supportsCommands: boolean;
15
+ detect: typeof detect;
16
+ installMcp: typeof installMcp;
17
+ installInstructions: typeof installInstructions;
18
+ uninstall: typeof uninstall;
19
+ };
20
+ export {};
21
+ //# sourceMappingURL=vscode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vscode.d.ts","sourceRoot":"","sources":["../../../src/cli/agents/vscode.ts"],"names":[],"mappings":"AAaA,iBAAS,MAAM,IAAI,OAAO,CASzB;AAED,iBAAe,UAAU,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjF;AAED,iBAAe,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED,iBAAe,SAAS,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAezD;AAED,eAAO,MAAM,aAAa;;;;;;;;;CASzB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { existsSync, mkdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { execSync } from 'node:child_process';
5
+ import { mergeMcpJson, removeMcpJson, mergeBlock, removeBlock, readAsset } from './utils.js';
6
+ const MCP_KEY_PATH = ['servers', 'wigolo'];
7
+ const INSTRUCTIONS_FILE = '.github/copilot-instructions.md';
8
+ function vscodeConfigPath() {
9
+ return join(homedir(), '.vscode', 'mcp.json');
10
+ }
11
+ function detect() {
12
+ const home = homedir();
13
+ if (existsSync(join(home, '.vscode')))
14
+ return true;
15
+ try {
16
+ execSync('which code', { stdio: ['pipe', 'pipe', 'pipe'] });
17
+ return true;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ async function installMcp(cmd) {
24
+ const configPath = vscodeConfigPath();
25
+ mkdirSync(join(homedir(), '.vscode'), { recursive: true });
26
+ mergeMcpJson(configPath, { command: cmd.command, args: cmd.args, type: 'stdio' }, MCP_KEY_PATH);
27
+ }
28
+ async function installInstructions() {
29
+ const block = readAsset('blocks/vscode/copilot-instructions.md.block');
30
+ // Install to project-level .github/copilot-instructions.md (CWD)
31
+ const target = join(process.cwd(), INSTRUCTIONS_FILE);
32
+ mkdirSync(join(process.cwd(), '.github'), { recursive: true });
33
+ mergeBlock(target, block);
34
+ }
35
+ async function uninstall() {
36
+ const removed = [];
37
+ const configPath = vscodeConfigPath();
38
+ if (existsSync(configPath)) {
39
+ removeMcpJson(configPath, MCP_KEY_PATH);
40
+ removed.push('~/.vscode/mcp.json (wigolo entry)');
41
+ }
42
+ const instructionsFile = join(process.cwd(), INSTRUCTIONS_FILE);
43
+ if (existsSync(instructionsFile) && removeBlock(instructionsFile)) {
44
+ removed.push('.github/copilot-instructions.md block');
45
+ }
46
+ return { removed };
47
+ }
48
+ export const vscodeHandler = {
49
+ id: 'vscode',
50
+ displayName: 'VS Code (Copilot)',
51
+ supportsSkills: false,
52
+ supportsCommands: false,
53
+ detect,
54
+ installMcp,
55
+ installInstructions,
56
+ uninstall,
57
+ };
58
+ //# sourceMappingURL=vscode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../src/cli/agents/vscode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAU,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7F,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3C,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAE5D,SAAS,gBAAgB;IACvB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,MAAM;IACb,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC;QACH,QAAQ,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAwC;IAChE,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,YAAY,CACV,UAAU,EACV,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EACvD,YAAY,CACb,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,KAAK,GAAG,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACvE,iEAAiE;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACtD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAChE,IAAI,UAAU,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,EAAE,QAAiB;IACrB,WAAW,EAAE,mBAAmB;IAChC,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;IACvB,MAAM;IACN,UAAU;IACV,mBAAmB;IACnB,SAAS;CACV,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Exit code contract:
3
- * - 0 when all required components OK, or only optional packages (Trafilatura/FlashRank) missing.
4
- * - 1 when any required component is degraded: Python missing, Playwright browsers missing,
5
- * SearXNG bootstrap failed/no_runtime, or SearXNG process supposed to be up but isn't.
3
+ * - 0 when all required components OK, or only optional packages (content extractor/ML reranker) missing.
4
+ * - 1 when any required component is degraded: Python missing, browser missing,
5
+ * search engine bootstrap failed/no_runtime, or search engine process supposed to be up but isn't.
6
6
  */
7
7
  export declare function runDoctor(dataDir: string): Promise<number>;
8
8
  //# sourceMappingURL=doctor.d.ts.map
@@ -61,9 +61,9 @@ function humanRetry(nextRetryAt) {
61
61
  }
62
62
  /**
63
63
  * Exit code contract:
64
- * - 0 when all required components OK, or only optional packages (Trafilatura/FlashRank) missing.
65
- * - 1 when any required component is degraded: Python missing, Playwright browsers missing,
66
- * SearXNG bootstrap failed/no_runtime, or SearXNG process supposed to be up but isn't.
64
+ * - 0 when all required components OK, or only optional packages (content extractor/ML reranker) missing.
65
+ * - 1 when any required component is degraded: Python missing, browser missing,
66
+ * search engine bootstrap failed/no_runtime, or search engine process supposed to be up but isn't.
67
67
  */
68
68
  export async function runDoctor(dataDir) {
69
69
  let degraded = false;
@@ -78,7 +78,7 @@ export async function runDoctor(dataDir) {
78
78
  degraded = true;
79
79
  out('');
80
80
  const pw = checkPlaywright();
81
- out('[wigolo doctor] Playwright:');
81
+ out('[wigolo doctor] Browser engine:');
82
82
  out(` Installation: ${pw.installed ? `installed${pw.version ? ` (v${pw.version})` : ''}` : 'not installed'}`);
83
83
  out(` Browsers: chromium ${pw.browsers.chromium ? 'OK' : 'missing'} firefox ${pw.browsers.firefox ? 'OK' : 'missing'} webkit ${pw.browsers.webkit ? 'OK' : 'missing'}`);
84
84
  if (!pw.installed || !pw.browsers.chromium)
@@ -87,12 +87,12 @@ export async function runDoctor(dataDir) {
87
87
  const pythonBin = getPythonBin(dataDir);
88
88
  const traf = checkPyPackage('trafilatura', pythonBin);
89
89
  const flash = checkPyPackage('flashrank', pythonBin);
90
- out('[wigolo doctor] Optional Python packages:');
91
- out(` Trafilatura: ${traf.ok ? `installed${traf.version ? ` (v${traf.version})` : ''}` : 'not installed'}`);
92
- out(` FlashRank: ${flash.ok ? `installed${flash.version ? ` (v${flash.version})` : ''}` : 'not installed'}`);
90
+ out('[wigolo doctor] Optional components:');
91
+ out(` Content extractor: ${traf.ok ? `installed (trafilatura${traf.version ? ` v${traf.version}` : ''})` : 'not installed'}`);
92
+ out(` ML reranker: ${flash.ok ? `installed (flashrank${flash.version ? ` v${flash.version}` : ''})` : 'not installed'}`);
93
93
  out('');
94
94
  const state = getBootstrapState(dataDir);
95
- out('[wigolo doctor] SearXNG install:');
95
+ out('[wigolo doctor] Search engine:');
96
96
  if (!state) {
97
97
  out(' status: not bootstrapped — run `npx @staticn0va/wigolo warmup`');
98
98
  degraded = true;
@@ -128,18 +128,18 @@ export async function runDoctor(dataDir) {
128
128
  try {
129
129
  const lock = JSON.parse(readFileSync(lockPath, 'utf-8'));
130
130
  if (lock.pid && isProcessAlive(lock.pid)) {
131
- out(`[wigolo doctor] SearXNG process: running (pid ${lock.pid}, port ${lock.port ?? '?'})`);
131
+ out(`[wigolo doctor] Search engine process: running (pid ${lock.pid}, port ${lock.port ?? '?'})`);
132
132
  }
133
133
  else {
134
- out('[wigolo doctor] SearXNG process: stale lock (process exited) — will be cleaned on next start');
134
+ out('[wigolo doctor] Search engine process: stale lock (process exited) — will be cleaned on next start');
135
135
  }
136
136
  }
137
137
  catch {
138
- out('[wigolo doctor] SearXNG process: lock file unparseable — will be cleaned on next start');
138
+ out('[wigolo doctor] Search engine process: lock file unparseable — will be cleaned on next start');
139
139
  }
140
140
  }
141
141
  else {
142
- out('[wigolo doctor] SearXNG process: not running (starts on-demand with MCP server)');
142
+ out('[wigolo doctor] Search engine process: not running (starts on-demand with MCP server)');
143
143
  }
144
144
  if (state?.status === 'failed') {
145
145
  out('');
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export async function runHealthCheck() {
20
20
  }
21
21
  const report = await response.json();
22
22
  log(`Status: ${report.status}`);
23
- log(`SearXNG: ${report.searxng}`);
23
+ log(`Search engine: ${report.searxng}`);
24
24
  log(`Browsers: ${report.browsers}`);
25
25
  log(`Cache: ${report.cache}`);
26
26
  log(`Uptime: ${report.uptime_seconds}s`);
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,SAAS,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,GAAG,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,GAAG,CAAC,WAAW,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;QACzC,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1G,GAAG,CAAC,4BAA4B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAChD,GAAG,CAAC,6CAA6C,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,SAAS,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,GAAG,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,kBAAkB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,GAAG,CAAC,WAAW,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;QACzC,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1G,GAAG,CAAC,4BAA4B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YAChD,GAAG,CAAC,6CAA6C,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- export type Command = 'mcp' | 'warmup' | 'serve' | 'health' | 'doctor' | 'auth' | 'plugin' | 'shell' | 'init' | 'setup' | 'status';
1
+ export type Command = 'mcp' | 'warmup' | 'serve' | 'health' | 'doctor' | 'auth' | 'plugin' | 'shell' | 'init' | 'uninstall' | 'setup' | 'status';
2
2
  export interface ParsedCommand {
3
3
  command: Command;
4
4
  args: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnI,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAeD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAQ1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjJ,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAQ1D"}
package/dist/cli/index.js CHANGED
@@ -7,6 +7,7 @@ const KNOWN_COMMANDS = new Set([
7
7
  'plugin',
8
8
  'shell',
9
9
  'init',
10
+ 'uninstall',
10
11
  'setup',
11
12
  'status',
12
13
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IAClD,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtB,IAAI,KAAK,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IAClD,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtB,IAAI,KAAK,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAoEA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsG7D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAcA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC7D"}
package/dist/cli/init.js CHANGED
@@ -1,16 +1,4 @@
1
- import { renderBanner } from './tui/banner.js';
2
- import { getPackageVersion } from './tui/version.js';
3
- import { runSystemCheck } from './tui/system-check.js';
4
- import { ok, fail, warn, info } from './tui/format.js';
5
- import chalk from 'chalk';
6
1
  import { parseInitFlags, FlagParseError } from './tui/flags.js';
7
- import { runWarmup } from './warmup.js';
8
- import { detectAgents } from './tui/agents.js';
9
- import { selectAgents, NotTtyError } from './tui/select-agents.js';
10
- import { applyConfigs } from './tui/config-writer.js';
11
- import { runVerify } from './tui/verify.js';
12
- import { autoReporter } from './tui/reporter-auto.js';
13
- import { getConfig } from '../config.js';
14
2
  const INIT_USAGE = [
15
3
  'Usage: wigolo init [options]',
16
4
  '',
@@ -22,46 +10,6 @@ const INIT_USAGE = [
22
10
  ' --help, -h Show this message',
23
11
  '',
24
12
  ].join('\n');
25
- function out(line = '') {
26
- process.stdout.write(`${line}\n`);
27
- }
28
- function renderSystemCheck(result) {
29
- out(chalk.bold(' Checking your system...'));
30
- if (result.node.ok) {
31
- out(` ${ok(`Node.js ${result.node.version}`)}`);
32
- }
33
- else {
34
- out(` ${fail(`Node.js ${result.node.version ?? '(unknown)'}`)}`);
35
- if (result.node.message)
36
- out(` ${chalk.gray(result.node.message)}`);
37
- }
38
- if (result.python.ok) {
39
- out(` ${ok(`Python ${result.python.version} (${result.python.binary})`)}`);
40
- }
41
- else {
42
- out(` ${fail('Python 3 not found')}`);
43
- if (result.python.message)
44
- out(` ${chalk.gray(result.python.message)}`);
45
- out(` ${chalk.gray('Install: https://python.org/downloads or `brew install python3`')}`);
46
- }
47
- if (result.docker.ok) {
48
- const ver = result.docker.version ?? '';
49
- out(` ${ok(`Docker ${ver} ${chalk.gray('(optional, available)')}`.trim())}`);
50
- }
51
- else {
52
- out(` ${warn(`Docker not found ${chalk.gray('(optional — only needed for docker-mode SearXNG)')}`)}`);
53
- }
54
- if (result.disk.ok) {
55
- out(` ${ok(`Disk: ${result.disk.freeMb} MB free`)}`);
56
- }
57
- else {
58
- out(` ${warn(`Disk: ${result.disk.message ?? 'low free space'}`)}`);
59
- }
60
- }
61
- function renderHardFailure() {
62
- out();
63
- out(chalk.red.bold(' Setup cannot continue until the issues above are resolved.'));
64
- }
65
13
  export async function runInit(args) {
66
14
  let flags;
67
15
  try {
@@ -84,12 +32,71 @@ export async function runInit(args) {
84
32
  process.stderr.write(INIT_USAGE);
85
33
  return 2;
86
34
  }
35
+ const isTTY = Boolean(process.stdout.isTTY);
36
+ const isCI = process.env.CI === 'true' ||
37
+ process.env.CI === '1' ||
38
+ process.env.GITHUB_ACTIONS === 'true';
39
+ const useInk = !flags.plain && !flags.nonInteractive && isTTY && !isCI;
40
+ if (useInk) {
41
+ const { runInkInit } = await import('./tui/ink-init.js');
42
+ await runInkInit();
43
+ return 0;
44
+ }
45
+ // Plain / non-interactive mode — use the existing text-based flow
46
+ return runInitPlain(flags);
47
+ }
48
+ async function runInitPlain(flags) {
49
+ const { renderBanner } = await import('./tui/banner.js');
50
+ const { getPackageVersion } = await import('./tui/version.js');
51
+ const { runSystemCheck } = await import('./tui/system-check.js');
52
+ const { ok, fail, warn, info } = await import('./tui/format.js');
53
+ const { default: chalk } = await import('chalk');
54
+ const { runWarmup } = await import('./warmup.js');
55
+ const { detectAgents } = await import('./tui/agents.js');
56
+ const { applyConfigs } = await import('./tui/config-writer.js');
57
+ const { runVerify } = await import('./tui/verify.js');
58
+ const { autoReporter } = await import('./tui/reporter-auto.js');
59
+ const { getConfig } = await import('../config.js');
60
+ const { saveInitConfig } = await import('./tui/utils/config-writer.js');
61
+ function out(line = '') {
62
+ process.stdout.write(`${line}\n`);
63
+ }
87
64
  const version = getPackageVersion();
88
65
  process.stdout.write(renderBanner(version));
89
66
  const sysResult = await runSystemCheck();
90
- renderSystemCheck(sysResult);
67
+ out(chalk.bold(' Checking your system...'));
68
+ if (sysResult.node.ok) {
69
+ out(` ${ok(`Node.js ${sysResult.node.version}`)}`);
70
+ }
71
+ else {
72
+ out(` ${fail(`Node.js ${sysResult.node.version ?? '(unknown)'}`)}`);
73
+ if (sysResult.node.message)
74
+ out(` ${chalk.gray(sysResult.node.message)}`);
75
+ }
76
+ if (sysResult.python.ok) {
77
+ out(` ${ok(`Python ${sysResult.python.version} (${sysResult.python.binary})`)}`);
78
+ }
79
+ else {
80
+ out(` ${fail('Python 3 not found')}`);
81
+ if (sysResult.python.message)
82
+ out(` ${chalk.gray(sysResult.python.message)}`);
83
+ out(` ${chalk.gray('Install: https://python.org/downloads or `brew install python3`')}`);
84
+ }
85
+ if (sysResult.docker.ok) {
86
+ out(` ${ok(`Docker ${sysResult.docker.version ?? ''} ${chalk.gray('(optional)')}`)}`.trim());
87
+ }
88
+ else {
89
+ out(` ${warn(`Docker not found ${chalk.gray('(optional)')}`)}`);
90
+ }
91
+ if (sysResult.disk.ok) {
92
+ out(` ${ok(`Disk: ${sysResult.disk.freeMb} MB free`)}`);
93
+ }
94
+ else {
95
+ out(` ${warn(`Disk: ${sysResult.disk.message ?? 'low free space'}`)}`);
96
+ }
91
97
  if (sysResult.hardFailure) {
92
- renderHardFailure();
98
+ out();
99
+ out(chalk.red.bold(' Setup cannot continue until the issues above are resolved.'));
93
100
  return 1;
94
101
  }
95
102
  out();
@@ -118,6 +125,7 @@ export async function runInit(args) {
118
125
  selected = [...flags.agents];
119
126
  }
120
127
  else {
128
+ const { selectAgents, NotTtyError } = await import('./tui/select-agents.js');
121
129
  try {
122
130
  selected = await selectAgents(detected);
123
131
  }
@@ -145,6 +153,36 @@ export async function runInit(args) {
145
153
  process.stderr.write(`Writing configs failed: ${message}\n`);
146
154
  return 1;
147
155
  }
156
+ // Install instructions, skills, and commands for agents that support them
157
+ {
158
+ const { getAgentHandler } = await import('./agents/registry.js');
159
+ for (const id of selected) {
160
+ const handler = getAgentHandler(id);
161
+ if (!handler)
162
+ continue;
163
+ try {
164
+ out(` Configuring ${handler.displayName}...`);
165
+ await handler.installInstructions();
166
+ out(` ${ok('Global instructions updated')}`);
167
+ if (handler.supportsSkills && handler.installSkills) {
168
+ await handler.installSkills();
169
+ out(` ${ok('8 skills installed')}`);
170
+ }
171
+ if (handler.supportsCommands && handler.installCommand) {
172
+ await handler.installCommand();
173
+ out(` ${ok('Command installed')}`);
174
+ }
175
+ }
176
+ catch (err) {
177
+ const message = err instanceof Error ? err.message : String(err);
178
+ out(` ${warn(`Skills/instructions skipped: ${message}`)}`);
179
+ }
180
+ }
181
+ }
182
+ saveInitConfig(config.dataDir, {
183
+ configuredAgents: selected,
184
+ lastInit: new Date().toISOString(),
185
+ });
148
186
  if (!flags.skipVerify) {
149
187
  try {
150
188
  const verifyResult = await runVerify(config.dataDir, reporter);