repowise 0.1.39 → 0.1.41

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 (85) hide show
  1. package/dist/bin/repowise.js +2719 -85
  2. package/package.json +3 -2
  3. package/dist/bin/repowise.d.ts +0 -3
  4. package/dist/bin/repowise.d.ts.map +0 -1
  5. package/dist/bin/repowise.js.map +0 -1
  6. package/dist/src/commands/config.d.ts +0 -2
  7. package/dist/src/commands/config.d.ts.map +0 -1
  8. package/dist/src/commands/config.js +0 -95
  9. package/dist/src/commands/config.js.map +0 -1
  10. package/dist/src/commands/create.d.ts +0 -2
  11. package/dist/src/commands/create.d.ts.map +0 -1
  12. package/dist/src/commands/create.js +0 -309
  13. package/dist/src/commands/create.js.map +0 -1
  14. package/dist/src/commands/listen.d.ts +0 -5
  15. package/dist/src/commands/listen.d.ts.map +0 -1
  16. package/dist/src/commands/listen.js +0 -47
  17. package/dist/src/commands/listen.js.map +0 -1
  18. package/dist/src/commands/login.d.ts +0 -5
  19. package/dist/src/commands/login.d.ts.map +0 -1
  20. package/dist/src/commands/login.js +0 -58
  21. package/dist/src/commands/login.js.map +0 -1
  22. package/dist/src/commands/logout.d.ts +0 -2
  23. package/dist/src/commands/logout.d.ts.map +0 -1
  24. package/dist/src/commands/logout.js +0 -12
  25. package/dist/src/commands/logout.js.map +0 -1
  26. package/dist/src/commands/start.d.ts +0 -2
  27. package/dist/src/commands/start.d.ts.map +0 -1
  28. package/dist/src/commands/start.js +0 -17
  29. package/dist/src/commands/start.js.map +0 -1
  30. package/dist/src/commands/status.d.ts +0 -2
  31. package/dist/src/commands/status.d.ts.map +0 -1
  32. package/dist/src/commands/status.js +0 -63
  33. package/dist/src/commands/status.js.map +0 -1
  34. package/dist/src/commands/stop.d.ts +0 -2
  35. package/dist/src/commands/stop.d.ts.map +0 -1
  36. package/dist/src/commands/stop.js +0 -17
  37. package/dist/src/commands/stop.js.map +0 -1
  38. package/dist/src/commands/sync.d.ts +0 -2
  39. package/dist/src/commands/sync.d.ts.map +0 -1
  40. package/dist/src/commands/sync.js +0 -205
  41. package/dist/src/commands/sync.js.map +0 -1
  42. package/dist/src/lib/ai-tools.d.ts +0 -23
  43. package/dist/src/lib/ai-tools.d.ts.map +0 -1
  44. package/dist/src/lib/ai-tools.js +0 -193
  45. package/dist/src/lib/ai-tools.js.map +0 -1
  46. package/dist/src/lib/api.d.ts +0 -2
  47. package/dist/src/lib/api.d.ts.map +0 -1
  48. package/dist/src/lib/api.js +0 -38
  49. package/dist/src/lib/api.js.map +0 -1
  50. package/dist/src/lib/auth.d.ts +0 -28
  51. package/dist/src/lib/auth.d.ts.map +0 -1
  52. package/dist/src/lib/auth.js +0 -271
  53. package/dist/src/lib/auth.js.map +0 -1
  54. package/dist/src/lib/config.d.ts +0 -15
  55. package/dist/src/lib/config.d.ts.map +0 -1
  56. package/dist/src/lib/config.js +0 -19
  57. package/dist/src/lib/config.js.map +0 -1
  58. package/dist/src/lib/env.d.ts +0 -10
  59. package/dist/src/lib/env.d.ts.map +0 -1
  60. package/dist/src/lib/env.js +0 -26
  61. package/dist/src/lib/env.js.map +0 -1
  62. package/dist/src/lib/interview-handler.d.ts +0 -2
  63. package/dist/src/lib/interview-handler.d.ts.map +0 -1
  64. package/dist/src/lib/interview-handler.js +0 -100
  65. package/dist/src/lib/interview-handler.js.map +0 -1
  66. package/dist/src/lib/progress-renderer.d.ts +0 -84
  67. package/dist/src/lib/progress-renderer.d.ts.map +0 -1
  68. package/dist/src/lib/progress-renderer.js +0 -388
  69. package/dist/src/lib/progress-renderer.js.map +0 -1
  70. package/dist/src/lib/prompts.d.ts +0 -7
  71. package/dist/src/lib/prompts.d.ts.map +0 -1
  72. package/dist/src/lib/prompts.js +0 -33
  73. package/dist/src/lib/prompts.js.map +0 -1
  74. package/dist/src/lib/welcome.d.ts +0 -6
  75. package/dist/src/lib/welcome.d.ts.map +0 -1
  76. package/dist/src/lib/welcome.js +0 -42
  77. package/dist/src/lib/welcome.js.map +0 -1
  78. package/dist/src/types/index.d.ts +0 -4
  79. package/dist/src/types/index.d.ts.map +0 -1
  80. package/dist/src/types/index.js +0 -2
  81. package/dist/src/types/index.js.map +0 -1
  82. package/dist/tsup.config.d.ts +0 -3
  83. package/dist/tsup.config.d.ts.map +0 -1
  84. package/dist/tsup.config.js +0 -18
  85. package/dist/tsup.config.js.map +0 -1
@@ -1,12 +0,0 @@
1
- import chalk from 'chalk';
2
- import { clearCredentials, getStoredCredentials } from '../lib/auth.js';
3
- export async function logout() {
4
- const creds = await getStoredCredentials();
5
- if (!creds) {
6
- console.log(chalk.yellow('Not logged in.'));
7
- return;
8
- }
9
- await clearCredentials();
10
- console.log(chalk.green('Logged out successfully.'));
11
- }
12
- //# sourceMappingURL=logout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,KAAK,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,EAAE,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function start(): Promise<void>;
2
- //# sourceMappingURL=start.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"AAAA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB3C"}
@@ -1,17 +0,0 @@
1
- export async function start() {
2
- try {
3
- const { isRunning, startBackground } = (await import('@repowise/listener/process-manager'));
4
- if (await isRunning()) {
5
- console.log('Listener is already running.');
6
- return;
7
- }
8
- const pid = await startBackground();
9
- console.log(`Listener started (PID: ${pid}).`);
10
- }
11
- catch (err) {
12
- const message = err instanceof Error ? err.message : 'Unknown error';
13
- console.error(`Failed to start listener: ${message}`);
14
- process.exitCode = 1;
15
- }
16
- }
17
- //# sourceMappingURL=start.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAGzF,CAAC;QAEF,IAAI,MAAM,SAAS,EAAE,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function status(): Promise<void>;
2
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAUA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAkE5C"}
@@ -1,63 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { homedir } from 'node:os';
3
- import { join } from 'node:path';
4
- const STATE_PATH = join(homedir(), '.repowise', 'listener-state.json');
5
- export async function status() {
6
- let state = null;
7
- try {
8
- const data = await readFile(STATE_PATH, 'utf-8');
9
- state = JSON.parse(data);
10
- }
11
- catch {
12
- // No state file — listener hasn't run yet
13
- }
14
- // Check process status
15
- let processRunning = false;
16
- let pid = null;
17
- try {
18
- const { getStatus } = (await import('@repowise/listener/process-manager'));
19
- const processStatus = await getStatus();
20
- processRunning = processStatus.running;
21
- pid = processStatus.pid;
22
- }
23
- catch {
24
- // process-manager not available
25
- }
26
- // Check service registration
27
- let serviceInstalled = false;
28
- try {
29
- const { isInstalled } = (await import('@repowise/listener/service-installer'));
30
- serviceInstalled = await isInstalled();
31
- }
32
- catch {
33
- // service-installer not available
34
- }
35
- console.log('RepoWise Status');
36
- console.log('===============');
37
- if (processRunning) {
38
- console.log(`Listener: running (PID: ${pid})`);
39
- }
40
- else {
41
- console.log('Listener: stopped');
42
- }
43
- if (serviceInstalled) {
44
- console.log('Auto-start: enabled');
45
- }
46
- else {
47
- console.log('Auto-start: disabled');
48
- }
49
- console.log('');
50
- if (!state || Object.keys(state.repos).length === 0) {
51
- console.log('No sync history. Run `repowise listen` to start syncing.');
52
- return;
53
- }
54
- console.log('Watched Repos:');
55
- for (const [repoId, repoState] of Object.entries(state.repos)) {
56
- const syncTime = repoState.lastSyncTimestamp
57
- ? new Date(repoState.lastSyncTimestamp).toLocaleString()
58
- : 'never';
59
- const commit = repoState.lastSyncCommitSha ? repoState.lastSyncCommitSha.slice(0, 7) : 'none';
60
- console.log(` ${repoId}: last sync ${syncTime} (commit: ${commit})`);
61
- }
62
- }
63
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function stop(): Promise<void>;
2
- //# sourceMappingURL=stop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB1C"}
@@ -1,17 +0,0 @@
1
- export async function stop() {
2
- try {
3
- const { isRunning, stopProcess } = (await import('@repowise/listener/process-manager'));
4
- if (!(await isRunning())) {
5
- console.log('Listener is not running.');
6
- return;
7
- }
8
- await stopProcess();
9
- console.log('Listener stopped.');
10
- }
11
- catch (err) {
12
- const message = err instanceof Error ? err.message : 'Unknown error';
13
- console.error(`Failed to stop listener: ${message}`);
14
- process.exitCode = 1;
15
- }
16
- }
17
- //# sourceMappingURL=stop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAGrF,CAAC;QAEF,IAAI,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function sync(): Promise<void>;
2
- //# sourceMappingURL=sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync.ts"],"names":[],"mappings":"AAkGA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoM1C"}
@@ -1,205 +0,0 @@
1
- import { execSync } from 'node:child_process';
2
- import { mkdirSync, writeFileSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import chalk from 'chalk';
5
- import ora from 'ora';
6
- import { getValidCredentials, performLogin, decodeIdToken } from '../lib/auth.js';
7
- import { apiRequest } from '../lib/api.js';
8
- import { handleInterview } from '../lib/interview-handler.js';
9
- import { ProgressRenderer } from '../lib/progress-renderer.js';
10
- const POLL_INTERVAL_MS = 3000;
11
- const MAX_POLL_ATTEMPTS = 600; // ~30 minutes at 3s interval
12
- const DEFAULT_CONTEXT_FOLDER = 'repowise-context';
13
- function detectRepoRoot() {
14
- return execSync('git rev-parse --show-toplevel', { encoding: 'utf-8' }).trim();
15
- }
16
- function detectRepoName(repoRoot) {
17
- try {
18
- const remoteUrl = execSync('git remote get-url origin', {
19
- encoding: 'utf-8',
20
- cwd: repoRoot,
21
- }).trim();
22
- const match = remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);
23
- if (match?.[1])
24
- return match[1];
25
- }
26
- catch {
27
- // No remote — fall back to directory name
28
- }
29
- return repoRoot.split('/').pop() ?? 'unknown';
30
- }
31
- function formatElapsed(ms) {
32
- const totalSeconds = Math.round(ms / 1000);
33
- const minutes = Math.floor(totalSeconds / 60);
34
- const seconds = totalSeconds % 60;
35
- if (minutes === 0)
36
- return `${seconds}s`;
37
- return seconds > 0 ? `${minutes}m ${seconds}s` : `${minutes}m`;
38
- }
39
- export async function sync() {
40
- const startTime = Date.now();
41
- const spinner = ora('Checking authentication...').start();
42
- try {
43
- // Step 1: Auth check
44
- let credentials = await getValidCredentials();
45
- if (!credentials) {
46
- spinner.info(chalk.yellow('Not logged in. Opening browser to authenticate...'));
47
- credentials = await performLogin();
48
- const { email } = decodeIdToken(credentials.idToken);
49
- spinner.succeed(chalk.green(`Authenticated as ${chalk.bold(email)}`));
50
- }
51
- else {
52
- spinner.succeed('Authenticated');
53
- }
54
- // Step 2: Detect repo
55
- let repoRoot;
56
- let repoName;
57
- spinner.start('Detecting repository...');
58
- try {
59
- repoRoot = detectRepoRoot();
60
- repoName = detectRepoName(repoRoot);
61
- spinner.succeed(`Repository: ${chalk.bold(repoName)}`);
62
- }
63
- catch {
64
- spinner.fail(chalk.red('Not in a git repository. Run this command from your repo directory.'));
65
- process.exitCode = 1;
66
- return;
67
- }
68
- // Resolve repoId from API
69
- let repoId;
70
- spinner.start('Resolving repository...');
71
- try {
72
- const repos = await apiRequest('/v1/repos');
73
- const match = repos.find((r) => r.name === repoName || r.fullName.endsWith(`/${repoName}`));
74
- if (match) {
75
- repoId = match.repoId;
76
- }
77
- }
78
- catch {
79
- // Could not resolve
80
- }
81
- if (!repoId) {
82
- spinner.fail(chalk.red('Could not find this repository in your RepoWise account. Run `repowise create` first.'));
83
- process.exitCode = 1;
84
- return;
85
- }
86
- spinner.succeed('Repository resolved');
87
- // Step 3: Trigger incremental sync
88
- spinner.start('Triggering incremental sync...');
89
- let syncId;
90
- try {
91
- const triggerResult = await apiRequest(`/v1/repos/${repoId}/sync`, {
92
- method: 'POST',
93
- body: JSON.stringify({ scanType: 'incremental' }),
94
- });
95
- syncId = triggerResult.syncId;
96
- }
97
- catch (triggerErr) {
98
- const msg = triggerErr instanceof Error ? triggerErr.message : '';
99
- if (!msg.toLowerCase().includes('already running')) {
100
- throw triggerErr;
101
- }
102
- // A sync is already in progress — find it and resume polling
103
- spinner.text = 'Resuming existing sync...';
104
- const syncs = await apiRequest(`/v1/repos/${repoId}/syncs?limit=1`);
105
- const active = syncs.items.find((s) => s.status === 'in_progress' || s.status === 'awaiting_input');
106
- if (!active) {
107
- throw new Error('Could not find active sync to resume. Please try again.');
108
- }
109
- syncId = active.syncId;
110
- spinner.info(chalk.cyan('Resuming existing sync...'));
111
- spinner.start();
112
- }
113
- // Step 4: Poll for completion
114
- let pollAttempts = 0;
115
- const progressRenderer = new ProgressRenderer();
116
- while (true) {
117
- if (++pollAttempts > MAX_POLL_ATTEMPTS) {
118
- spinner.fail(chalk.red('Sync timed out. Check dashboard for status.'));
119
- process.exitCode = 1;
120
- return;
121
- }
122
- await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
123
- const syncResult = await apiRequest(`/v1/sync/${syncId}/status`);
124
- progressRenderer.update(syncResult, spinner);
125
- // Handle interview questions
126
- if (syncResult.status === 'awaiting_input' &&
127
- syncResult.questionId &&
128
- syncResult.questionText) {
129
- spinner.stop();
130
- await handleInterview(syncId, syncResult.questionId, syncResult.questionText, syncResult.questionContext ?? undefined, syncResult.discoveryResult?.estimatedInterviewQuestions);
131
- spinner.start('Resuming sync...');
132
- continue;
133
- }
134
- if (syncResult.status === 'completed') {
135
- const generatedFiles = syncResult.filesGenerated ?? [];
136
- const fileCount = generatedFiles.length;
137
- if (fileCount > 0) {
138
- spinner.succeed(chalk.green(`Incremental update complete — ${fileCount} files updated`));
139
- }
140
- else {
141
- spinner.succeed(chalk.green('Incremental sync complete — no files needed updating'));
142
- }
143
- break;
144
- }
145
- if (syncResult.status === 'failed') {
146
- spinner.fail(chalk.red(`Sync failed: ${syncResult.error ?? 'Unknown error'}`));
147
- process.exitCode = 1;
148
- return;
149
- }
150
- }
151
- // Step 5: Download context files from server
152
- spinner.start('Downloading context files from server...');
153
- try {
154
- const listResult = await apiRequest(`/v1/repos/${repoId}/context`);
155
- const files = listResult.data?.files ??
156
- listResult.files ??
157
- [];
158
- if (files.length > 0) {
159
- const contextDir = join(repoRoot, DEFAULT_CONTEXT_FOLDER);
160
- mkdirSync(contextDir, { recursive: true });
161
- let downloadedCount = 0;
162
- let failedCount = 0;
163
- for (const file of files) {
164
- // Path traversal protection
165
- if (file.fileName.includes('..') || file.fileName.includes('/')) {
166
- failedCount++;
167
- continue;
168
- }
169
- const urlResult = await apiRequest(`/v1/repos/${repoId}/context/${file.fileName}`);
170
- const presignedUrl = urlResult.data?.url ?? urlResult.url;
171
- const response = await fetch(presignedUrl);
172
- if (response.ok) {
173
- const content = await response.text();
174
- writeFileSync(join(contextDir, file.fileName), content, 'utf-8');
175
- downloadedCount++;
176
- }
177
- else {
178
- failedCount++;
179
- }
180
- }
181
- if (failedCount > 0) {
182
- spinner.warn(`Downloaded ${downloadedCount}/${files.length} files to ./${DEFAULT_CONTEXT_FOLDER}/ (${failedCount} failed)`);
183
- }
184
- else {
185
- spinner.succeed(`Context files downloaded to ./${DEFAULT_CONTEXT_FOLDER}/`);
186
- }
187
- }
188
- else {
189
- spinner.info('No context files found on server');
190
- }
191
- }
192
- catch (err) {
193
- const msg = err instanceof Error ? err.message : 'Unknown error';
194
- spinner.warn(chalk.yellow(`Could not download context files: ${msg}\nRetry when online.`));
195
- }
196
- const elapsed = formatElapsed(Date.now() - startTime);
197
- console.log(chalk.dim(`\n Total time: ${elapsed}`));
198
- }
199
- catch (err) {
200
- const message = err instanceof Error ? err.message : 'Sync failed';
201
- spinner.fail(chalk.red(message));
202
- process.exitCode = 1;
203
- }
204
- }
205
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- export type AiTool = 'cursor' | 'claude-code' | 'copilot' | 'windsurf' | 'cline' | 'codex' | 'roo-code';
2
- export interface ContextFileInfo {
3
- fileName: string;
4
- relativePath: string;
5
- }
6
- interface ToolConfig {
7
- label: string;
8
- fileName: string;
9
- filePath: string;
10
- markerStart: string;
11
- markerEnd: string;
12
- format: 'markdown' | 'plain-text';
13
- }
14
- export declare const AI_TOOL_CONFIG: Record<AiTool, ToolConfig>;
15
- export declare const SUPPORTED_TOOLS: AiTool[];
16
- export declare function generateReference(tool: AiTool, repoName: string, contextFolder: string, contextFiles: ContextFileInfo[]): string;
17
- export declare function updateToolConfig(repoRoot: string, tool: AiTool, repoName: string, contextFolder: string, contextFiles: ContextFileInfo[]): Promise<{
18
- created: boolean;
19
- }>;
20
- export declare function removeToolConfig(repoRoot: string, tool: AiTool): Promise<void>;
21
- export declare function scanLocalContextFiles(repoRoot: string, contextFolder: string): Promise<ContextFileInfo[]>;
22
- export {};
23
- //# sourceMappingURL=ai-tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../../../src/lib/ai-tools.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,MAAM,GACd,QAAQ,GACR,aAAa,GACb,SAAS,GACT,UAAU,GACV,OAAO,GACP,OAAO,GACP,UAAU,CAAC;AAEf,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;CACnC;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAyDrD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,EAA4C,CAAC;AAejF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,MAAM,CA4DR;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuC/B;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpF;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,EAAE,CAAC,CAe5B"}
@@ -1,193 +0,0 @@
1
- import { readFile, writeFile, mkdir, readdir } from 'node:fs/promises';
2
- import { join, dirname } from 'node:path';
3
- export const AI_TOOL_CONFIG = {
4
- cursor: {
5
- label: 'Cursor',
6
- fileName: '.cursorrules',
7
- filePath: '.cursorrules',
8
- markerStart: '# --- repowise-start ---',
9
- markerEnd: '# --- repowise-end ---',
10
- format: 'plain-text',
11
- },
12
- 'claude-code': {
13
- label: 'Claude Code',
14
- fileName: 'CLAUDE.md',
15
- filePath: 'CLAUDE.md',
16
- markerStart: '<!-- repowise-start -->',
17
- markerEnd: '<!-- repowise-end -->',
18
- format: 'markdown',
19
- },
20
- copilot: {
21
- label: 'GitHub Copilot',
22
- fileName: 'copilot-instructions.md',
23
- filePath: '.github/copilot-instructions.md',
24
- markerStart: '<!-- repowise-start -->',
25
- markerEnd: '<!-- repowise-end -->',
26
- format: 'markdown',
27
- },
28
- windsurf: {
29
- label: 'Windsurf',
30
- fileName: '.windsurfrules',
31
- filePath: '.windsurfrules',
32
- markerStart: '# --- repowise-start ---',
33
- markerEnd: '# --- repowise-end ---',
34
- format: 'plain-text',
35
- },
36
- cline: {
37
- label: 'Cline',
38
- fileName: '.clinerules',
39
- filePath: '.clinerules',
40
- markerStart: '# --- repowise-start ---',
41
- markerEnd: '# --- repowise-end ---',
42
- format: 'plain-text',
43
- },
44
- codex: {
45
- label: 'Codex',
46
- fileName: 'AGENTS.md',
47
- filePath: 'AGENTS.md',
48
- markerStart: '<!-- repowise-start -->',
49
- markerEnd: '<!-- repowise-end -->',
50
- format: 'markdown',
51
- },
52
- 'roo-code': {
53
- label: 'Roo Code',
54
- fileName: 'rules.md',
55
- filePath: '.roo/rules.md',
56
- markerStart: '<!-- repowise-start -->',
57
- markerEnd: '<!-- repowise-end -->',
58
- format: 'markdown',
59
- },
60
- };
61
- export const SUPPORTED_TOOLS = Object.keys(AI_TOOL_CONFIG);
62
- function sanitizeRepoName(name) {
63
- // Strip markdown/HTML special chars to prevent content injection
64
- return name.replace(/[<>[\]`()|\\]/g, '');
65
- }
66
- function fileDescriptionFromName(fileName) {
67
- return fileName
68
- .replace(/\.md$/, '')
69
- .split('-')
70
- .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
71
- .join(' ');
72
- }
73
- export function generateReference(tool, repoName, contextFolder, contextFiles) {
74
- const config = AI_TOOL_CONFIG[tool];
75
- const safeName = sanitizeRepoName(repoName);
76
- const fileLines = contextFiles.map((f) => {
77
- const desc = fileDescriptionFromName(f.fileName);
78
- const isOverview = f.fileName === 'project-overview.md';
79
- return { path: f.relativePath, desc: isOverview ? `${desc} (full index of all files)` : desc };
80
- });
81
- const hasFiles = fileLines.length > 0;
82
- if (config.format === 'markdown') {
83
- const lines = [
84
- config.markerStart,
85
- '',
86
- `## Project Context \u2014 ${safeName}`,
87
- '',
88
- `This repository has AI-optimized context files generated by RepoWise.`,
89
- `Before making changes, read the relevant context files in \`${contextFolder}/\` to understand the project's architecture, coding patterns, conventions, and domain knowledge.`,
90
- '',
91
- `**Start here:** \`${contextFolder}/project-overview.md\` \u2014 the routing document that describes every context file and when to read it.`,
92
- '',
93
- ];
94
- if (hasFiles) {
95
- lines.push(`**Core context files:**`, '', ...fileLines.map((f) => `- \`${f.path}\` \u2014 ${f.desc}`), '', `> Additional context files may exist beyond this list. Check \`project-overview.md\` for the complete index.`);
96
- }
97
- lines.push('', config.markerEnd);
98
- return lines.join('\n');
99
- }
100
- // plain-text format
101
- const lines = [
102
- config.markerStart,
103
- `# Project Context \u2014 ${safeName}`,
104
- '#',
105
- `# This repository has AI-optimized context files generated by RepoWise.`,
106
- `# Before making changes, read the relevant context files in ${contextFolder}/`,
107
- `# to understand the project's architecture, coding patterns, conventions, and domain knowledge.`,
108
- '#',
109
- `# Start here: ${contextFolder}/project-overview.md`,
110
- `# The routing document that describes every context file and when to read it.`,
111
- ];
112
- if (hasFiles) {
113
- lines.push('#', `# Core context files:`, ...fileLines.map((f) => `# ${f.path} \u2014 ${f.desc}`), '#', '# Additional context files may exist beyond this list.', '# Check project-overview.md for the complete index.');
114
- }
115
- lines.push(config.markerEnd);
116
- return lines.join('\n');
117
- }
118
- export async function updateToolConfig(repoRoot, tool, repoName, contextFolder, contextFiles) {
119
- const config = AI_TOOL_CONFIG[tool];
120
- const fullPath = join(repoRoot, config.filePath);
121
- // Ensure parent directory exists for tools in subdirectories
122
- const dir = dirname(fullPath);
123
- if (dir !== repoRoot) {
124
- await mkdir(dir, { recursive: true });
125
- }
126
- const referenceBlock = generateReference(tool, repoName, contextFolder, contextFiles);
127
- let existing = '';
128
- let created = true;
129
- try {
130
- existing = await readFile(fullPath, 'utf-8');
131
- created = false;
132
- }
133
- catch (err) {
134
- if (err.code !== 'ENOENT')
135
- throw err;
136
- }
137
- const startIdx = existing.indexOf(config.markerStart);
138
- const endIdx = existing.indexOf(config.markerEnd);
139
- let content;
140
- if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
141
- // Replace between markers (inclusive)
142
- const before = existing.slice(0, startIdx);
143
- const after = existing.slice(endIdx + config.markerEnd.length);
144
- content = before + referenceBlock + after;
145
- }
146
- else {
147
- // Append to end
148
- const separator = existing.length > 0 && !existing.endsWith('\n') ? '\n\n' : existing.length > 0 ? '\n' : '';
149
- content = existing + separator + referenceBlock + '\n';
150
- }
151
- await writeFile(fullPath, content, 'utf-8');
152
- return { created };
153
- }
154
- export async function removeToolConfig(repoRoot, tool) {
155
- const config = AI_TOOL_CONFIG[tool];
156
- const fullPath = join(repoRoot, config.filePath);
157
- let existing;
158
- try {
159
- existing = await readFile(fullPath, 'utf-8');
160
- }
161
- catch (err) {
162
- if (err.code === 'ENOENT')
163
- return;
164
- throw err;
165
- }
166
- const startIdx = existing.indexOf(config.markerStart);
167
- const endIdx = existing.indexOf(config.markerEnd);
168
- if (startIdx === -1 || endIdx === -1)
169
- return;
170
- const before = existing.slice(0, startIdx);
171
- const after = existing.slice(endIdx + config.markerEnd.length);
172
- const content = (before + after).replace(/\n{3,}/g, '\n\n').trim() + '\n';
173
- await writeFile(fullPath, content, 'utf-8');
174
- }
175
- export async function scanLocalContextFiles(repoRoot, contextFolder) {
176
- const folderPath = join(repoRoot, contextFolder);
177
- try {
178
- const entries = await readdir(folderPath, { withFileTypes: true });
179
- return entries
180
- .filter((e) => e.isFile() && e.name.endsWith('.md'))
181
- .map((e) => ({
182
- fileName: e.name,
183
- relativePath: `${contextFolder}/${e.name}`,
184
- }))
185
- .sort((a, b) => a.fileName.localeCompare(b.fileName));
186
- }
187
- catch (err) {
188
- if (err.code === 'ENOENT')
189
- return [];
190
- throw err;
191
- }
192
- }
193
- //# sourceMappingURL=ai-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-tools.js","sourceRoot":"","sources":["../../../src/lib/ai-tools.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function apiRequest<T>(path: string, options?: RequestInit): Promise<T>;
2
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAWA,wBAAsB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAkCnF"}