@paparats/cli 0.3.1 → 0.4.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 (46) hide show
  1. package/dist/commands/edit.d.ts +30 -0
  2. package/dist/commands/edit.d.ts.map +1 -0
  3. package/dist/commands/edit.js +131 -0
  4. package/dist/commands/edit.js.map +1 -0
  5. package/dist/commands/groups.d.ts.map +1 -1
  6. package/dist/commands/groups.js +1 -1
  7. package/dist/commands/groups.js.map +1 -1
  8. package/dist/commands/install.d.ts +64 -21
  9. package/dist/commands/install.d.ts.map +1 -1
  10. package/dist/commands/install.js +337 -294
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/lifecycle.d.ts +17 -0
  13. package/dist/commands/lifecycle.d.ts.map +1 -0
  14. package/dist/commands/lifecycle.js +86 -0
  15. package/dist/commands/lifecycle.js.map +1 -0
  16. package/dist/commands/projects.d.ts +81 -0
  17. package/dist/commands/projects.d.ts.map +1 -0
  18. package/dist/commands/projects.js +321 -0
  19. package/dist/commands/projects.js.map +1 -0
  20. package/dist/docker-compose-generator.d.ts +30 -24
  21. package/dist/docker-compose-generator.d.ts.map +1 -1
  22. package/dist/docker-compose-generator.js +58 -81
  23. package/dist/docker-compose-generator.js.map +1 -1
  24. package/dist/index.js +19 -7
  25. package/dist/index.js.map +1 -1
  26. package/dist/projects-yml.d.ts +95 -0
  27. package/dist/projects-yml.d.ts.map +1 -0
  28. package/dist/projects-yml.js +157 -0
  29. package/dist/projects-yml.js.map +1 -0
  30. package/package.json +2 -2
  31. package/dist/commands/index-cmd.d.ts +0 -75
  32. package/dist/commands/index-cmd.d.ts.map +0 -1
  33. package/dist/commands/index-cmd.js +0 -240
  34. package/dist/commands/index-cmd.js.map +0 -1
  35. package/dist/commands/init.d.ts +0 -28
  36. package/dist/commands/init.d.ts.map +0 -1
  37. package/dist/commands/init.js +0 -316
  38. package/dist/commands/init.js.map +0 -1
  39. package/dist/commands/watch.d.ts +0 -33
  40. package/dist/commands/watch.d.ts.map +0 -1
  41. package/dist/commands/watch.js +0 -358
  42. package/dist/commands/watch.js.map +0 -1
  43. package/dist/lsp-installers.d.ts +0 -28
  44. package/dist/lsp-installers.d.ts.map +0 -1
  45. package/dist/lsp-installers.js +0 -125
  46. package/dist/lsp-installers.js.map +0 -1
@@ -1,316 +0,0 @@
1
- import { Command } from 'commander';
2
- import { execSync } from 'child_process';
3
- import fs from 'fs';
4
- import path from 'path';
5
- import { input, select, confirm, checkbox } from '@inquirer/prompts';
6
- import chalk from 'chalk';
7
- import { getDefaultExcludeForLanguages } from '@paparats/shared';
8
- import { CONFIG_FILE, SUPPORTED_LANGUAGES, detectLanguage, writeConfig, } from '../config.js';
9
- import { upsertMcpServer } from './install.js';
10
- import { LSP_CONFIGS, buildCclspConfig, CCLSP_CONFIG_RELATIVE, checkLspInstalled, installLspServer, getCclspConfigPath, } from '../lsp-installers.js';
11
- import ora from 'ora';
12
- export function validateGroupName(value) {
13
- const trimmed = value.trim();
14
- if (!trimmed)
15
- return 'Group name is required';
16
- if (!/^[a-z0-9-_]+$/i.test(trimmed)) {
17
- return 'Group name can only contain letters, numbers, dashes, and underscores';
18
- }
19
- return true;
20
- }
21
- export function appendToGitignore(gitignorePath) {
22
- const content = fs.readFileSync(gitignorePath, 'utf8');
23
- const needsLeadingNewline = content.length > 0 && !content.endsWith('\n');
24
- const entry = needsLeadingNewline ? `\n${CONFIG_FILE}\n` : `${CONFIG_FILE}\n`;
25
- fs.appendFileSync(gitignorePath, entry);
26
- }
27
- export async function runInit(projectDir, opts, deps) {
28
- const configPath = path.join(projectDir, CONFIG_FILE);
29
- if (fs.existsSync(configPath)) {
30
- if (!opts.force) {
31
- throw new Error(`${CONFIG_FILE} already exists. Use --force to overwrite.`);
32
- }
33
- console.log(chalk.yellow(`Warning: ${CONFIG_FILE} exists and will be overwritten`));
34
- }
35
- const skipPrompts = opts.nonInteractive ?? false;
36
- const defaultGroup = path.basename(projectDir);
37
- console.log(chalk.bold('\npaparats init\n'));
38
- let group;
39
- if (opts.group) {
40
- const validation = validateGroupName(opts.group);
41
- if (validation !== true)
42
- throw new Error(validation);
43
- group = opts.group.trim();
44
- }
45
- else if (skipPrompts) {
46
- group = defaultGroup;
47
- }
48
- else if (deps?.promptGroup) {
49
- group = await deps.promptGroup(defaultGroup);
50
- }
51
- else {
52
- group = await input({
53
- message: 'Group name (projects in the same group share a search index):',
54
- default: defaultGroup,
55
- validate: validateGroupName,
56
- });
57
- }
58
- const detected = detectLanguage(projectDir);
59
- let language;
60
- if (opts.language) {
61
- const lang = opts.language;
62
- if (!SUPPORTED_LANGUAGES.includes(lang)) {
63
- throw new Error(`Unsupported language '${lang}'. Supported: ${SUPPORTED_LANGUAGES.join(', ')}`);
64
- }
65
- language = lang;
66
- }
67
- else if (skipPrompts) {
68
- language = detected ?? 'typescript';
69
- }
70
- else if (deps?.promptLanguage) {
71
- language = await deps.promptLanguage(detected);
72
- }
73
- else {
74
- const multi = await confirm({
75
- message: 'Is this a multi-language project?',
76
- default: false,
77
- });
78
- if (multi) {
79
- language = await checkbox({
80
- message: 'Select all languages:',
81
- choices: SUPPORTED_LANGUAGES.map((l) => ({ name: l, value: l })),
82
- validate: (choices) => choices.length > 0 ? true : 'Select at least one language',
83
- });
84
- }
85
- else {
86
- language = await select({
87
- message: 'Primary language:',
88
- choices: SUPPORTED_LANGUAGES.map((l) => ({
89
- name: l === detected ? `${l} (detected)` : l,
90
- value: l,
91
- })),
92
- default: detected ?? 'typescript',
93
- });
94
- }
95
- }
96
- let paths;
97
- let dirs = [];
98
- if (!skipPrompts) {
99
- try {
100
- dirs = fs
101
- .readdirSync(projectDir, { withFileTypes: true })
102
- .filter((d) => d.isDirectory() && !d.name.startsWith('.') && d.name !== 'node_modules')
103
- .map((d) => d.name);
104
- }
105
- catch {
106
- console.error(chalk.yellow('Warning: Could not read directory contents'));
107
- }
108
- const addPaths = dirs.length > 0 &&
109
- (deps?.promptAddPaths
110
- ? await deps.promptAddPaths()
111
- : await confirm({
112
- message: 'Specify custom paths to index? (default: entire project)',
113
- default: false,
114
- }));
115
- if (addPaths && dirs.length > 0) {
116
- if (deps?.promptPaths) {
117
- paths = await deps.promptPaths(dirs);
118
- }
119
- else {
120
- const selected = await checkbox({
121
- message: 'Select directories to index:',
122
- choices: dirs.map((d) => ({ name: d, value: d + '/' })),
123
- });
124
- paths = selected.length > 0 ? selected : undefined;
125
- }
126
- }
127
- }
128
- const languagesForExclude = Array.isArray(language) ? language : [language];
129
- const defaultExclude = getDefaultExcludeForLanguages(languagesForExclude);
130
- let exclude;
131
- if (skipPrompts) {
132
- exclude = defaultExclude;
133
- }
134
- else if (deps?.promptAddExclude) {
135
- const add = await deps.promptAddExclude();
136
- exclude = add ? defaultExclude : undefined;
137
- }
138
- else {
139
- const addExclude = await confirm({
140
- message: 'Add common exclusions for your language(s)?',
141
- default: true,
142
- });
143
- exclude = addExclude ? defaultExclude : undefined;
144
- }
145
- let embeddings;
146
- if (!skipPrompts) {
147
- const configureEmbeddings = deps?.promptConfigureEmbeddings ??
148
- (() => confirm({
149
- message: 'Configure embeddings provider?',
150
- default: false,
151
- }));
152
- const shouldConfigure = await configureEmbeddings();
153
- if (shouldConfigure) {
154
- const provider = (deps?.promptEmbeddingsProvider
155
- ? await deps.promptEmbeddingsProvider()
156
- : await select({
157
- message: 'Embeddings provider:',
158
- choices: [
159
- { name: 'Ollama (local, free)', value: 'ollama' },
160
- { name: 'OpenAI (cloud, paid)', value: 'openai' },
161
- ],
162
- default: 'ollama',
163
- }));
164
- const defaultModel = provider === 'ollama' ? 'jina-code-embeddings' : 'text-embedding-3-small';
165
- const model = deps?.promptEmbeddingsModel
166
- ? await deps.promptEmbeddingsModel(provider)
167
- : await input({
168
- message: 'Model name:',
169
- default: defaultModel,
170
- });
171
- embeddings = { provider, model };
172
- }
173
- }
174
- const indexing = {
175
- ...(paths ? { paths } : {}),
176
- ...(exclude ? { exclude } : {}),
177
- };
178
- const config = {
179
- group,
180
- language,
181
- ...(Object.keys(indexing).length > 0 ? { indexing } : {}),
182
- ...(embeddings ? { embeddings } : {}),
183
- };
184
- writeConfig(projectDir, config);
185
- console.log(chalk.green(`\n✓ Created ${CONFIG_FILE}`));
186
- // Auto-configure Claude Code MCP
187
- const mcpJsonPath = path.join(projectDir, '.mcp.json');
188
- const mcpResult = upsertMcpServer(mcpJsonPath, 'paparats', {
189
- type: 'http',
190
- url: 'http://localhost:9876/mcp',
191
- });
192
- if (mcpResult === 'unchanged') {
193
- console.log(chalk.green('✓ .mcp.json already configured'));
194
- }
195
- else {
196
- console.log(chalk.green('✓ Added paparats to .mcp.json'));
197
- }
198
- // CCLSP setup
199
- if (!opts.skipCclsp) {
200
- const languages = Array.isArray(language) ? language : [language];
201
- const supportedLspLanguages = languages.filter((l) => LSP_CONFIGS[l]);
202
- if (supportedLspLanguages.length > 0) {
203
- let setupCclsp;
204
- if (skipPrompts) {
205
- setupCclsp = true;
206
- }
207
- else if (deps?.promptSetupCclsp) {
208
- setupCclsp = await deps.promptSetupCclsp();
209
- }
210
- else {
211
- setupCclsp = await confirm({
212
- message: 'Set up CCLSP for precise code navigation (go-to-definition, find-references)?',
213
- default: true,
214
- });
215
- }
216
- if (setupCclsp) {
217
- for (const lang of supportedLspLanguages) {
218
- const lspConfig = LSP_CONFIGS[lang];
219
- if (!lspConfig)
220
- continue;
221
- const installed = checkLspInstalled(lang, deps?.lspDeps);
222
- if (installed) {
223
- console.log(chalk.green(`✓ ${lspConfig.displayName} already installed`));
224
- }
225
- else {
226
- const spinner = ora(`Installing ${lspConfig.displayName}...`).start();
227
- try {
228
- installLspServer(lang, deps?.lspDeps);
229
- spinner.succeed(`Installed ${lspConfig.displayName}`);
230
- }
231
- catch {
232
- spinner.warn(`Failed to install ${lspConfig.displayName} — install manually: ${lspConfig.installCmd}`);
233
- }
234
- }
235
- }
236
- const cclspConfig = buildCclspConfig(supportedLspLanguages);
237
- const cclspConfigPath = getCclspConfigPath(projectDir);
238
- fs.writeFileSync(cclspConfigPath, JSON.stringify(cclspConfig, null, 2) + '\n');
239
- console.log(chalk.green('✓ Created cclsp.json'));
240
- const cclspInstalled = checkLspInstalled('cclsp', deps?.lspDeps);
241
- if (!cclspInstalled) {
242
- const spinner = ora('Installing cclsp...').start();
243
- try {
244
- (deps?.lspDeps?.execInstall ??
245
- ((cmd) => execSync(cmd, { stdio: 'inherit', timeout: 120_000 })))('npm install -g cclsp');
246
- spinner.succeed('Installed cclsp');
247
- }
248
- catch {
249
- spinner.warn('Failed to install cclsp — install manually: npm install -g cclsp');
250
- }
251
- }
252
- else {
253
- console.log(chalk.green('✓ cclsp already installed'));
254
- }
255
- const cclspMcpResult = upsertMcpServer(mcpJsonPath, 'cclsp', {
256
- command: 'cclsp',
257
- env: {
258
- CCLSP_CONFIG_PATH: CCLSP_CONFIG_RELATIVE,
259
- },
260
- });
261
- if (cclspMcpResult === 'unchanged') {
262
- console.log(chalk.green('✓ CCLSP already configured in .mcp.json'));
263
- }
264
- else {
265
- console.log(chalk.green('✓ Added CCLSP to .mcp.json'));
266
- }
267
- }
268
- }
269
- }
270
- if (!skipPrompts) {
271
- const gitignorePath = path.join(projectDir, '.gitignore');
272
- if (fs.existsSync(gitignorePath)) {
273
- const content = fs.readFileSync(gitignorePath, 'utf8');
274
- if (!content.includes(CONFIG_FILE)) {
275
- const addToGitignore = deps?.promptGitignore
276
- ? await deps.promptGitignore()
277
- : await confirm({
278
- message: `Add ${CONFIG_FILE} to .gitignore?`,
279
- default: false,
280
- });
281
- if (addToGitignore) {
282
- appendToGitignore(gitignorePath);
283
- console.log(chalk.green(`✓ Added to .gitignore`));
284
- }
285
- }
286
- }
287
- }
288
- if (!skipPrompts) {
289
- console.log(chalk.dim(`\nExample config:`));
290
- console.log(chalk.dim(` group: ${group}`));
291
- console.log(chalk.dim(` language: ${Array.isArray(language) ? language.join(', ') : language}`));
292
- }
293
- console.log(chalk.dim(`\nNext: run ${chalk.bold('paparats install')} to set up Docker & Ollama`));
294
- }
295
- export const initCommand = new Command('init')
296
- .description('Create .paparats.yml in the current directory')
297
- .option('--force', 'Overwrite existing config')
298
- .option('--group <name>', 'Group name (skip prompt)')
299
- .option('--language <lang>', 'Primary language (skip prompt)')
300
- .option('--non-interactive', 'Use defaults without prompts')
301
- .option('--skip-cclsp', 'Skip CCLSP language server setup')
302
- .action(async (opts) => {
303
- try {
304
- await runInit(process.cwd(), opts);
305
- }
306
- catch (err) {
307
- const error = err;
308
- if (error.name === 'ExitPromptError') {
309
- console.log(chalk.yellow('\nInit cancelled by user'));
310
- process.exit(130);
311
- }
312
- console.error(chalk.red(error.message));
313
- process.exit(1);
314
- }
315
- });
316
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { Command } from 'commander';
2
- import { watch } from 'chokidar';
3
- import { readConfig } from '../config.js';
4
- export interface WatchOptions {
5
- server?: string;
6
- verbose?: boolean;
7
- dryRun?: boolean;
8
- json?: boolean;
9
- /** Use polling instead of native watchers (fewer file descriptors, use if EMFILE occurs) */
10
- polling?: boolean;
11
- }
12
- export interface WatchDeps {
13
- readConfigFn?: () => {
14
- config: Awaited<ReturnType<typeof readConfig>>['config'];
15
- projectDir: string;
16
- };
17
- createWatcher?: typeof watch;
18
- apiClient?: {
19
- fileChanged: (group: string, project: string, path: string, content: string, opts?: {
20
- language?: string;
21
- }) => Promise<unknown>;
22
- fileDeleted: (group: string, project: string, path: string) => Promise<unknown>;
23
- health: (opts?: {
24
- timeout?: number;
25
- }) => Promise<{
26
- status: number;
27
- }>;
28
- };
29
- }
30
- /** Run watch command. Returns async cleanup function to stop watcher and drain pending. */
31
- export declare function runWatch(opts: WatchOptions, deps?: WatchDeps): Promise<() => Promise<void>>;
32
- export declare const watchCommand: Command;
33
- //# sourceMappingURL=watch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EACL,UAAU,EAKX,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,MAAM;QACnB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzD,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,aAAa,CAAC,EAAE,OAAO,KAAK,CAAC;IAC7B,SAAS,CAAC,EAAE;QACV,WAAW,EAAE,CACX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAChF,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtE,CAAC;CACH;AAYD,2FAA2F;AAC3F,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA4TjG;AAED,eAAO,MAAM,YAAY,SAwBrB,CAAC"}