archicore 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +530 -0
  2. package/dist/analyzers/dead-code.d.ts +95 -0
  3. package/dist/analyzers/dead-code.js +327 -0
  4. package/dist/analyzers/duplication.d.ts +90 -0
  5. package/dist/analyzers/duplication.js +344 -0
  6. package/dist/analyzers/security.d.ts +79 -0
  7. package/dist/analyzers/security.js +484 -0
  8. package/dist/architecture/index.d.ts +35 -0
  9. package/dist/architecture/index.js +249 -0
  10. package/dist/cli/commands/analyzers.d.ts +6 -0
  11. package/dist/cli/commands/analyzers.js +431 -0
  12. package/dist/cli/commands/export.d.ts +6 -0
  13. package/dist/cli/commands/export.js +78 -0
  14. package/dist/cli/commands/index.d.ts +8 -0
  15. package/dist/cli/commands/index.js +8 -0
  16. package/dist/cli/commands/init.d.ts +26 -0
  17. package/dist/cli/commands/init.js +140 -0
  18. package/dist/cli/commands/interactive.d.ts +7 -0
  19. package/dist/cli/commands/interactive.js +522 -0
  20. package/dist/cli/commands/projects.d.ts +6 -0
  21. package/dist/cli/commands/projects.js +249 -0
  22. package/dist/cli/index.d.ts +7 -0
  23. package/dist/cli/index.js +7 -0
  24. package/dist/cli/ui/box.d.ts +17 -0
  25. package/dist/cli/ui/box.js +62 -0
  26. package/dist/cli/ui/colors.d.ts +49 -0
  27. package/dist/cli/ui/colors.js +86 -0
  28. package/dist/cli/ui/index.d.ts +9 -0
  29. package/dist/cli/ui/index.js +9 -0
  30. package/dist/cli/ui/prompt.d.ts +34 -0
  31. package/dist/cli/ui/prompt.js +122 -0
  32. package/dist/cli/ui/spinner.d.ts +29 -0
  33. package/dist/cli/ui/spinner.js +80 -0
  34. package/dist/cli/ui/table.d.ts +33 -0
  35. package/dist/cli/ui/table.js +84 -0
  36. package/dist/cli/utils/config.d.ts +23 -0
  37. package/dist/cli/utils/config.js +73 -0
  38. package/dist/cli/utils/index.d.ts +6 -0
  39. package/dist/cli/utils/index.js +6 -0
  40. package/dist/cli/utils/session.d.ts +27 -0
  41. package/dist/cli/utils/session.js +117 -0
  42. package/dist/cli.d.ts +8 -0
  43. package/dist/cli.js +295 -0
  44. package/dist/code-index/ast-parser.d.ts +16 -0
  45. package/dist/code-index/ast-parser.js +330 -0
  46. package/dist/code-index/dependency-graph.d.ts +16 -0
  47. package/dist/code-index/dependency-graph.js +161 -0
  48. package/dist/code-index/index.d.ts +44 -0
  49. package/dist/code-index/index.js +124 -0
  50. package/dist/code-index/symbol-extractor.d.ts +13 -0
  51. package/dist/code-index/symbol-extractor.js +150 -0
  52. package/dist/export/index.d.ts +92 -0
  53. package/dist/export/index.js +676 -0
  54. package/dist/github/github-service.d.ts +146 -0
  55. package/dist/github/github-service.js +609 -0
  56. package/dist/impact-engine/index.d.ts +25 -0
  57. package/dist/impact-engine/index.js +284 -0
  58. package/dist/index.d.ts +60 -0
  59. package/dist/index.js +149 -0
  60. package/dist/metrics/index.d.ts +136 -0
  61. package/dist/metrics/index.js +525 -0
  62. package/dist/orchestrator/deepseek-optimizer.d.ts +67 -0
  63. package/dist/orchestrator/deepseek-optimizer.js +320 -0
  64. package/dist/orchestrator/index.d.ts +34 -0
  65. package/dist/orchestrator/index.js +305 -0
  66. package/dist/pr-guardian/index.d.ts +143 -0
  67. package/dist/pr-guardian/index.js +553 -0
  68. package/dist/refactoring/index.d.ts +108 -0
  69. package/dist/refactoring/index.js +580 -0
  70. package/dist/rules-engine/index.d.ts +129 -0
  71. package/dist/rules-engine/index.js +482 -0
  72. package/dist/semantic-memory/embedding-service.d.ts +24 -0
  73. package/dist/semantic-memory/embedding-service.js +120 -0
  74. package/dist/semantic-memory/index.d.ts +45 -0
  75. package/dist/semantic-memory/index.js +206 -0
  76. package/dist/semantic-memory/vector-store.d.ts +27 -0
  77. package/dist/semantic-memory/vector-store.js +166 -0
  78. package/dist/server/index.d.ts +28 -0
  79. package/dist/server/index.js +141 -0
  80. package/dist/server/middleware/api-auth.d.ts +43 -0
  81. package/dist/server/middleware/api-auth.js +256 -0
  82. package/dist/server/routes/admin.d.ts +5 -0
  83. package/dist/server/routes/admin.js +123 -0
  84. package/dist/server/routes/api.d.ts +7 -0
  85. package/dist/server/routes/api.js +362 -0
  86. package/dist/server/routes/auth.d.ts +16 -0
  87. package/dist/server/routes/auth.js +191 -0
  88. package/dist/server/routes/developer.d.ts +8 -0
  89. package/dist/server/routes/developer.js +439 -0
  90. package/dist/server/routes/github.d.ts +7 -0
  91. package/dist/server/routes/github.js +495 -0
  92. package/dist/server/routes/upload.d.ts +7 -0
  93. package/dist/server/routes/upload.js +196 -0
  94. package/dist/server/services/api-key-service.d.ts +81 -0
  95. package/dist/server/services/api-key-service.js +281 -0
  96. package/dist/server/services/auth-service.d.ts +40 -0
  97. package/dist/server/services/auth-service.js +315 -0
  98. package/dist/server/services/project-service.d.ts +123 -0
  99. package/dist/server/services/project-service.js +533 -0
  100. package/dist/server/services/token-service.d.ts +107 -0
  101. package/dist/server/services/token-service.js +416 -0
  102. package/dist/server/services/upload-service.d.ts +93 -0
  103. package/dist/server/services/upload-service.js +464 -0
  104. package/dist/types/api.d.ts +188 -0
  105. package/dist/types/api.js +86 -0
  106. package/dist/types/github.d.ts +335 -0
  107. package/dist/types/github.js +5 -0
  108. package/dist/types/index.d.ts +265 -0
  109. package/dist/types/index.js +32 -0
  110. package/dist/types/user.d.ts +69 -0
  111. package/dist/types/user.js +42 -0
  112. package/dist/utils/file-utils.d.ts +20 -0
  113. package/dist/utils/file-utils.js +163 -0
  114. package/dist/utils/logger.d.ts +17 -0
  115. package/dist/utils/logger.js +41 -0
  116. package/dist/watcher/index.d.ts +125 -0
  117. package/dist/watcher/index.js +397 -0
  118. package/package.json +71 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * ArchiCore CLI - Export Command
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function registerExportCommand(program: Command): void;
6
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1,78 @@
1
+ /**
2
+ * ArchiCore CLI - Export Command
3
+ */
4
+ import { writeFile } from 'fs/promises';
5
+ import { loadConfig } from '../utils/config.js';
6
+ import { createSpinner, printError, printKeyValue, } from '../ui/index.js';
7
+ export function registerExportCommand(program) {
8
+ program
9
+ .command('export')
10
+ .description('Export project data')
11
+ .option('-p, --project <id>', 'Project ID')
12
+ .option('-f, --format <format>', 'Output format (json|html|markdown|csv|graphml)', 'json')
13
+ .option('-o, --output <file>', 'Output file path')
14
+ .option('--include <types>', 'Include specific data (architecture,graph,metrics,analysis)', 'all')
15
+ .action(async (options) => {
16
+ const spinner = createSpinner(`Exporting as ${options.format}...`).start();
17
+ try {
18
+ const config = await loadConfig();
19
+ const projectId = options.project || config.activeProjectId;
20
+ if (!projectId) {
21
+ spinner.fail('No project selected');
22
+ printError('Use "archicore projects select <id>" first.');
23
+ process.exit(1);
24
+ }
25
+ // Determine what to include
26
+ const include = options.include === 'all'
27
+ ? ['architecture', 'graph', 'metrics', 'analysis']
28
+ : options.include.split(',').map((s) => s.trim());
29
+ const response = await fetch(`${config.serverUrl}/api/projects/${projectId}/export`, {
30
+ method: 'POST',
31
+ headers: { 'Content-Type': 'application/json' },
32
+ body: JSON.stringify({
33
+ format: options.format,
34
+ include,
35
+ }),
36
+ });
37
+ if (!response.ok) {
38
+ const error = await response.json();
39
+ throw new Error(error.error || 'Failed to export');
40
+ }
41
+ const data = await response.json();
42
+ // Determine output file
43
+ const extMap = {
44
+ json: 'json',
45
+ html: 'html',
46
+ markdown: 'md',
47
+ csv: 'csv',
48
+ graphml: 'graphml',
49
+ };
50
+ const ext = extMap[options.format] || 'txt';
51
+ const outputFile = options.output || `archicore-export.${ext}`;
52
+ // Get content based on format
53
+ let content;
54
+ if (options.format === 'json') {
55
+ content = JSON.stringify(data.data || data, null, 2);
56
+ }
57
+ else if (data.content) {
58
+ content = data.content;
59
+ }
60
+ else {
61
+ content = JSON.stringify(data, null, 2);
62
+ }
63
+ await writeFile(outputFile, content);
64
+ spinner.succeed('Export complete');
65
+ console.log();
66
+ printKeyValue('Format', options.format.toUpperCase());
67
+ printKeyValue('Output', outputFile);
68
+ printKeyValue('Size', `${(content.length / 1024).toFixed(1)} KB`);
69
+ console.log();
70
+ }
71
+ catch (error) {
72
+ spinner.fail('Export failed');
73
+ printError(String(error));
74
+ process.exit(1);
75
+ }
76
+ });
77
+ }
78
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ArchiCore CLI Commands
3
+ */
4
+ export { registerAnalyzerCommands } from './analyzers.js';
5
+ export { registerExportCommand } from './export.js';
6
+ export { startInteractiveMode } from './interactive.js';
7
+ export { initProject, isInitialized, getLocalProject } from './init.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ArchiCore CLI Commands
3
+ */
4
+ export { registerAnalyzerCommands } from './analyzers.js';
5
+ export { registerExportCommand } from './export.js';
6
+ export { startInteractiveMode } from './interactive.js';
7
+ export { initProject, isInitialized, getLocalProject } from './init.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ArchiCore CLI - Project Initialization
3
+ *
4
+ * Initializes ArchiCore in the current directory
5
+ */
6
+ interface LocalProjectConfig {
7
+ id?: string;
8
+ name: string;
9
+ path: string;
10
+ createdAt: string;
11
+ indexed: boolean;
12
+ }
13
+ /**
14
+ * Check if ArchiCore is initialized in a directory
15
+ */
16
+ export declare function isInitialized(dir: string): Promise<boolean>;
17
+ /**
18
+ * Get local project config
19
+ */
20
+ export declare function getLocalProject(dir: string): Promise<LocalProjectConfig | null>;
21
+ /**
22
+ * Initialize ArchiCore in a directory
23
+ */
24
+ export declare function initProject(dir: string, name?: string): Promise<void>;
25
+ export {};
26
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1,140 @@
1
+ /**
2
+ * ArchiCore CLI - Project Initialization
3
+ *
4
+ * Initializes ArchiCore in the current directory
5
+ */
6
+ import * as path from 'path';
7
+ import * as fs from 'fs/promises';
8
+ import { createSpinner, printError, printInfo, printKeyValue } from '../ui/index.js';
9
+ import { loadConfig } from '../utils/config.js';
10
+ const ARCHICORE_DIR = '.archicore';
11
+ const CONFIG_FILE = 'project.json';
12
+ /**
13
+ * Check if ArchiCore is initialized in a directory
14
+ */
15
+ export async function isInitialized(dir) {
16
+ try {
17
+ await fs.access(path.join(dir, ARCHICORE_DIR, CONFIG_FILE));
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ /**
25
+ * Get local project config
26
+ */
27
+ export async function getLocalProject(dir) {
28
+ try {
29
+ const configPath = path.join(dir, ARCHICORE_DIR, CONFIG_FILE);
30
+ const content = await fs.readFile(configPath, 'utf-8');
31
+ return JSON.parse(content);
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ /**
38
+ * Save local project config
39
+ */
40
+ async function saveLocalProject(dir, config) {
41
+ const archicoreDir = path.join(dir, ARCHICORE_DIR);
42
+ const configPath = path.join(archicoreDir, CONFIG_FILE);
43
+ // Ensure directory exists
44
+ await fs.mkdir(archicoreDir, { recursive: true });
45
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2));
46
+ }
47
+ /**
48
+ * Initialize ArchiCore in a directory
49
+ */
50
+ export async function initProject(dir, name) {
51
+ console.log();
52
+ // Check if already initialized
53
+ const existing = await getLocalProject(dir);
54
+ if (existing) {
55
+ printInfo(`ArchiCore already initialized in this directory`);
56
+ printKeyValue('Project', existing.name);
57
+ printKeyValue('ID', existing.id || 'Not synced');
58
+ console.log();
59
+ return;
60
+ }
61
+ // Derive name from directory if not provided
62
+ const projectName = name || path.basename(dir);
63
+ const spinner = createSpinner('Initializing ArchiCore...').start();
64
+ try {
65
+ const config = await loadConfig();
66
+ // Create project on server
67
+ const response = await fetch(`${config.serverUrl}/api/projects`, {
68
+ method: 'POST',
69
+ headers: { 'Content-Type': 'application/json' },
70
+ body: JSON.stringify({ name: projectName, path: dir }),
71
+ });
72
+ let projectId;
73
+ let serverName = projectName;
74
+ if (response.ok) {
75
+ const data = await response.json();
76
+ projectId = data.id || data.project?.id;
77
+ serverName = data.name || data.project?.name || projectName;
78
+ }
79
+ else {
80
+ // Server might not be running, that's OK - we can still create local config
81
+ spinner.warn('Server not available, creating local config only');
82
+ }
83
+ // Create local config
84
+ const localConfig = {
85
+ id: projectId,
86
+ name: serverName,
87
+ path: dir,
88
+ createdAt: new Date().toISOString(),
89
+ indexed: false,
90
+ };
91
+ await saveLocalProject(dir, localConfig);
92
+ // Add .archicore to .gitignore if git repo
93
+ await addToGitignore(dir);
94
+ if (projectId) {
95
+ spinner.succeed('ArchiCore initialized');
96
+ }
97
+ console.log();
98
+ printKeyValue('Directory', dir);
99
+ printKeyValue('Project', serverName);
100
+ if (projectId) {
101
+ printKeyValue('ID', projectId.slice(0, 8));
102
+ }
103
+ console.log();
104
+ printInfo('Run `archicore` to start interactive mode');
105
+ printInfo('Use /index to index your codebase');
106
+ console.log();
107
+ }
108
+ catch (error) {
109
+ spinner.fail('Initialization failed');
110
+ printError(String(error));
111
+ }
112
+ }
113
+ /**
114
+ * Add .archicore to .gitignore
115
+ */
116
+ async function addToGitignore(dir) {
117
+ const gitignorePath = path.join(dir, '.gitignore');
118
+ try {
119
+ let content = '';
120
+ try {
121
+ content = await fs.readFile(gitignorePath, 'utf-8');
122
+ }
123
+ catch {
124
+ // File doesn't exist
125
+ }
126
+ // Check if already ignored
127
+ if (content.includes('.archicore')) {
128
+ return;
129
+ }
130
+ // Add to gitignore
131
+ const newContent = content.trim()
132
+ ? `${content.trim()}\n\n# ArchiCore\n.archicore/\n`
133
+ : `# ArchiCore\n.archicore/\n`;
134
+ await fs.writeFile(gitignorePath, newContent);
135
+ }
136
+ catch {
137
+ // Ignore errors
138
+ }
139
+ }
140
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * ArchiCore CLI - Interactive Mode
3
+ *
4
+ * REPL-style interface similar to Claude Code
5
+ */
6
+ export declare function startInteractiveMode(): Promise<void>;
7
+ //# sourceMappingURL=interactive.d.ts.map