@driftless-sh/cli 0.1.2 → 0.1.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA2FjD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA4FjD"}
@@ -8,66 +8,74 @@ const node_path_1 = require("node:path");
8
8
  async function initCommand() {
9
9
  console.log('Driftless — context integrity for engineering teams\n');
10
10
  if (!(0, git_1.isGitRepo)()) {
11
- console.error('Error: not a git repository. Run this command from the root of your repo.');
11
+ console.error('Error: not a git repository.');
12
12
  process.exit(1);
13
13
  }
14
14
  const remote = (0, git_1.getGitRemote)();
15
15
  if (!remote) {
16
- console.error('Error: no git remote found. Add a remote first with: git remote add origin <url>');
16
+ console.error('Error: no git remote found.');
17
17
  process.exit(1);
18
18
  }
19
19
  console.log(`Repository: ${remote.org}/${remote.repo}`);
20
- // 1. Create workspace (or find existing)
20
+ // 1. Get workspace from API key (not from git remote!)
21
+ console.log('\nConnecting to Driftless Cloud...');
21
22
  let workspace;
22
23
  try {
23
- workspace = await api_client_1.api.get(`/workspaces/${remote.org}`);
24
- console.log(`Workspace: ${remote.org} (existing)`);
24
+ workspace = await api_client_1.api.get('/me');
25
+ if (!workspace?.workspace_id) {
26
+ console.error('Could not resolve workspace. Check your API key.');
27
+ process.exit(1);
28
+ }
29
+ console.log(` Workspace: ${workspace.slug} ✓`);
25
30
  }
26
- catch {
27
- workspace = await api_client_1.api.post('/workspaces', {
28
- name: remote.org,
29
- slug: remote.org,
30
- });
31
- console.log(`Workspace: ${remote.org} (created)`);
31
+ catch (err) {
32
+ console.error(` Failed: ${err?.message || 'unreachable'}`);
33
+ process.exit(1);
32
34
  }
33
- // 2. Connect repo (or find existing)
34
- let repo;
35
- try {
36
- const repos = (await api_client_1.api.get(`/workspaces/${remote.org}/repos`));
37
- repo = repos.find((r) => r.github_org === remote.org && r.github_repo === remote.repo);
38
- if (repo)
39
- console.log(`Repo: ${remote.repo} (existing)`);
40
- }
41
- catch { /* ignore */ }
42
- if (!repo) {
43
- repo = await api_client_1.api.post(`/workspaces/${remote.org}/repos`, {
44
- github_org: remote.org,
45
- github_repo: remote.repo,
46
- });
47
- console.log(`Repo: ${remote.repo} (connected)`);
48
- }
49
- // 3. Local scan — no cloning, no server-side access
35
+ const workspaceSlug = workspace.slug;
36
+ // 2. Local scan
50
37
  console.log('\nScanning codebase locally...');
51
38
  const cwd = process.cwd();
52
39
  const summary = scanLocal(cwd);
53
- console.log(`\nResults:`);
54
- console.log(` Framework: ${summary.framework}`);
55
- console.log(` Type: ${summary.system_type}`);
56
- console.log(` Endpoints: ${summary.endpoints}`);
57
- console.log(` Services: ${summary.services}`);
58
- console.log(` Modules: ${summary.modules}`);
59
- console.log(` Guards: ${summary.guards}`);
40
+ console.log(` Framework: ${summary.framework} | Endpoints: ${summary.endpoints} | Services: ${summary.services}`);
41
+ console.log(` Modules: ${summary.modules} | Guards: ${summary.guards}`);
60
42
  if (summary.auth_patterns.length > 0) {
61
- console.log(` Auth: ${summary.auth_patterns.join(', ')}`);
43
+ console.log(` Auth: ${summary.auth_patterns.join(', ')}`);
62
44
  }
63
- // 4. Upload baseline to Cloud
45
+ // 3. Connect repo
46
+ let repo;
64
47
  try {
65
- await api_client_1.api.post(`/workspaces/${remote.org}/repos/${repo.id}/scan`, summary);
48
+ const repos = (await api_client_1.api.get(`/workspaces/${workspaceSlug}/repos`));
49
+ repo = Array.isArray(repos)
50
+ ? repos.find((r) => r.github_org === remote.org && r.github_repo === remote.repo)
51
+ : null;
66
52
  }
67
- catch {
68
- // Non-blocking — upload happens via full scan later
53
+ catch { /* will create */ }
54
+ if (repo) {
55
+ console.log(`\n Repo: ${remote.repo} ✓`);
56
+ }
57
+ else {
58
+ try {
59
+ repo = await api_client_1.api.post(`/workspaces/${workspaceSlug}/repos`, {
60
+ github_org: remote.org,
61
+ github_repo: remote.repo,
62
+ });
63
+ console.log(` Repo: ${remote.repo} (connected)`);
64
+ }
65
+ catch (err) {
66
+ console.error(` Failed to connect repo: ${err?.message || 'unknown'}`);
67
+ process.exit(1);
68
+ }
69
+ }
70
+ // 4. Upload baseline
71
+ try {
72
+ await api_client_1.api.post(`/workspaces/${workspaceSlug}/repos/${repo.id}/baseline`, summary);
73
+ console.log(' Baseline uploaded ✓');
69
74
  }
70
- // 5. Suggest rules
75
+ catch (err) {
76
+ console.error(` Upload failed: ${err?.message || 'unknown'}`);
77
+ }
78
+ // 5. Rules
71
79
  console.log('\nSuggested rules:');
72
80
  const suggestions = [];
73
81
  if (summary.auth_patterns.includes('apikey') || summary.guards > 0) {
@@ -77,23 +85,17 @@ async function initCommand() {
77
85
  suggestions.push('Services must not import controllers directly');
78
86
  }
79
87
  if (summary.endpoints > 50) {
80
- suggestions.push('app.controller.ts should be split — over 50 endpoints detected');
81
- }
82
- if (suggestions.length === 0) {
83
- console.log(' No automatic suggestions for this repo.');
88
+ suggestions.push('Split large controllers — over 50 endpoints detected');
84
89
  }
85
- else {
86
- for (const s of suggestions) {
87
- console.log(` • ${s}`);
88
- }
89
- }
90
- console.log(`\nDone! Run 'driftless scan --diff' before pushing to check for violations.`);
91
- console.log(`View your ecosystem: https://driftless.icu/ecosystem`);
90
+ if (suggestions.length === 0)
91
+ console.log(' No suggestions.');
92
+ else
93
+ suggestions.forEach((s) => console.log(` • ${s}`));
94
+ console.log(`\nView: https://driftless.icu/ecosystem`);
92
95
  }
93
96
  function scanLocal(rootPath) {
94
97
  const pkg = readJson((0, node_path_1.join)(rootPath, 'package.json'));
95
98
  const deps = { ...pkg?.dependencies, ...pkg?.devDependencies };
96
- // Framework detection
97
99
  let framework = 'other';
98
100
  if (deps?.['@nestjs/core'] || deps?.['@nestjs/common'])
99
101
  framework = 'nestjs';
@@ -101,27 +103,15 @@ function scanLocal(rootPath) {
101
103
  framework = 'nextjs';
102
104
  else if (deps?.['express'])
103
105
  framework = 'express';
104
- // System type
105
- let systemType = 'unknown';
106
- if (framework === 'nestjs')
107
- systemType = 'api';
108
- else if (framework === 'nextjs')
109
- systemType = 'app';
110
- else if ((0, node_fs_1.existsSync)((0, node_path_1.join)(rootPath, 'pages')) || (0, node_fs_1.existsSync)((0, node_path_1.join)(rootPath, 'app')))
106
+ let systemType = framework === 'nestjs' ? 'api' : 'unknown';
107
+ if (framework === 'nextjs' && (0, node_fs_1.existsSync)((0, node_path_1.join)(rootPath, 'pages')))
111
108
  systemType = 'app';
112
- // Count source files
113
- const srcDir = (0, node_path_1.join)(rootPath, 'src');
114
- const allFiles = listFiles(srcDir);
115
- // Basic counts from source analysis
116
- let endpoints = 0;
117
- let services = 0;
118
- let modules = 0;
119
- let guards = 0;
109
+ const allFiles = listFiles((0, node_path_1.join)(rootPath, 'src'));
110
+ let endpoints = 0, services = 0, modules = 0, guards = 0;
120
111
  for (const file of allFiles) {
121
112
  try {
122
113
  const content = (0, node_fs_1.readFileSync)(file, 'utf8');
123
114
  if (content.includes('@Controller')) {
124
- // Count HTTP decorators
125
115
  const matches = content.match(/@(Get|Post|Put|Patch|Delete|All)\s*\(/g);
126
116
  if (matches)
127
117
  endpoints += matches.length;
@@ -133,41 +123,31 @@ function scanLocal(rootPath) {
133
123
  if (content.match(/class\s+\w*Guard/) && content.includes('CanActivate'))
134
124
  guards++;
135
125
  }
136
- catch { /* skip unreadable files */ }
126
+ catch { /* skip */ }
137
127
  }
138
- // Auth patterns
139
- const authPatterns = [];
128
+ const authSet = new Set();
140
129
  for (const file of allFiles.slice(0, 200)) {
141
130
  try {
142
- const content = (0, node_fs_1.readFileSync)(file, 'utf8');
143
- if (content.includes('@clerk/') || content.includes('Clerk'))
144
- authPatterns.push('clerk');
145
- if (content.includes('Cognito') || content.includes('cognito'))
146
- authPatterns.push('cognito');
147
- if (content.includes('@UseGuards') || content.includes('AuthGuard'))
148
- authPatterns.push('jwt');
149
- if (content.includes('x-api-key') || content.includes('ApiKeyGuard') || content.includes('BusinessAccessGuard'))
150
- authPatterns.push('apikey');
131
+ const c = (0, node_fs_1.readFileSync)(file, 'utf8');
132
+ if (c.includes('@clerk/') || c.includes('Clerk'))
133
+ authSet.add('clerk');
134
+ if (c.includes('Cognito') || c.includes('cognito'))
135
+ authSet.add('cognito');
136
+ if (c.includes('@UseGuards') || c.includes('AuthGuard'))
137
+ authSet.add('jwt');
138
+ if (c.includes('x-api-key') || c.includes('ApiKeyGuard') || c.includes('BusinessAccessGuard'))
139
+ authSet.add('apikey');
151
140
  }
152
141
  catch { /* skip */ }
153
142
  }
154
- return {
155
- framework,
156
- system_type: systemType,
157
- endpoints,
158
- services,
159
- modules,
160
- guards,
161
- auth_patterns: [...new Set(authPatterns)],
162
- };
143
+ return { framework, system_type: systemType, endpoints, services, modules, guards, auth_patterns: [...authSet] };
163
144
  }
164
145
  function listFiles(dir) {
165
146
  const result = [];
166
147
  if (!(0, node_fs_1.existsSync)(dir))
167
148
  return result;
168
149
  try {
169
- const entries = (0, node_fs_1.readdirSync)(dir, { withFileTypes: true });
170
- for (const entry of entries) {
150
+ for (const entry of (0, node_fs_1.readdirSync)(dir, { withFileTypes: true })) {
171
151
  if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist')
172
152
  continue;
173
153
  const full = (0, node_path_1.join)(dir, entry.name);
@@ -177,7 +157,7 @@ function listFiles(dir) {
177
157
  result.push(full);
178
158
  }
179
159
  }
180
- catch { /* permission denied */ }
160
+ catch { /* skip */ }
181
161
  return result;
182
162
  }
183
163
  function readJson(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@driftless-sh/cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Driftless CLI — context integrity for AI engineering teams",
5
5
  "license": "MIT",
6
6
  "repository": {