@driftless-sh/cli 0.1.42 → 0.1.44
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.
- package/dist/index.js +23 -7
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
- package/dist/api-client.d.ts +0 -9
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js +0 -92
- package/dist/api-client.js.map +0 -1
- package/dist/commands/context.d.ts +0 -2
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -84
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -117
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/install-skill.d.ts +0 -2
- package/dist/commands/install-skill.d.ts.map +0 -1
- package/dist/commands/install-skill.js +0 -49
- package/dist/commands/install-skill.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -74
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/scan.d.ts +0 -2
- package/dist/commands/scan.d.ts.map +0 -1
- package/dist/commands/scan.js +0 -91
- package/dist/commands/scan.js.map +0 -1
- package/dist/git.d.ts +0 -10
- package/dist/git.d.ts.map +0 -1
- package/dist/git.js +0 -64
- package/dist/git.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
package/package.json
CHANGED
package/dist/api-client.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare const api: {
|
|
2
|
-
get: <T = unknown>(path: string) => Promise<T>;
|
|
3
|
-
post: <T = unknown>(path: string, body?: unknown) => Promise<T>;
|
|
4
|
-
put: <T = unknown>(path: string, body?: unknown) => Promise<T>;
|
|
5
|
-
delete: <T = unknown>(path: string) => Promise<T>;
|
|
6
|
-
};
|
|
7
|
-
export declare function getApiUrl(): string;
|
|
8
|
-
export declare function getApiKey(): string | null;
|
|
9
|
-
//# sourceMappingURL=api-client.d.ts.map
|
package/dist/api-client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAqFA,eAAO,MAAM,GAAG;UACR,CAAC,kBAAkB,MAAM,KAA6B,OAAO,CAAC,CAAC,CAAC;WAC/D,CAAC,kBAAkB,MAAM,SAAS,OAAO,KACf,OAAO,CAAC,CAAC,CAAC;UACrC,CAAC,kBAAkB,MAAM,SAAS,OAAO,KACf,OAAO,CAAC,CAAC,CAAC;aACjC,CAAC,kBAAkB,MAAM,KAAgC,OAAO,CAAC,CAAC,CAAC;CAC7E,CAAA;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC"}
|
package/dist/api-client.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.api = void 0;
|
|
4
|
-
exports.getApiUrl = getApiUrl;
|
|
5
|
-
exports.getApiKey = getApiKey;
|
|
6
|
-
const node_http_1 = require("node:http");
|
|
7
|
-
const node_https_1 = require("node:https");
|
|
8
|
-
const node_fs_1 = require("node:fs");
|
|
9
|
-
const node_path_1 = require("node:path");
|
|
10
|
-
const node_os_1 = require("node:os");
|
|
11
|
-
const CONFIG_PATH = (0, node_path_1.resolve)((0, node_os_1.homedir)(), '.driftless', 'config.json');
|
|
12
|
-
function loadApiKey() {
|
|
13
|
-
// 1. Env var
|
|
14
|
-
const envKey = process.env['DRIFTLESS_API_KEY'];
|
|
15
|
-
if (envKey)
|
|
16
|
-
return envKey;
|
|
17
|
-
// 2. Config file
|
|
18
|
-
try {
|
|
19
|
-
if ((0, node_fs_1.existsSync)(CONFIG_PATH)) {
|
|
20
|
-
const config = JSON.parse((0, node_fs_1.readFileSync)(CONFIG_PATH, 'utf8'));
|
|
21
|
-
return config.api_key || null;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
// ignore
|
|
26
|
-
}
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
const DEFAULT_URL = 'http://localhost:3000/api/v1';
|
|
30
|
-
function getBaseUrl() {
|
|
31
|
-
const envUrl = process.env['DRIFTLESS_API_URL'];
|
|
32
|
-
if (envUrl) {
|
|
33
|
-
return envUrl.endsWith('/api/v1') ? envUrl : `${envUrl}/api/v1`;
|
|
34
|
-
}
|
|
35
|
-
// Try config file
|
|
36
|
-
try {
|
|
37
|
-
if ((0, node_fs_1.existsSync)(CONFIG_PATH)) {
|
|
38
|
-
const config = JSON.parse((0, node_fs_1.readFileSync)(CONFIG_PATH, 'utf8'));
|
|
39
|
-
return config.api_url || DEFAULT_URL;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
// ignore
|
|
44
|
-
}
|
|
45
|
-
return DEFAULT_URL;
|
|
46
|
-
}
|
|
47
|
-
function request(method, path, body) {
|
|
48
|
-
return new Promise((resolve, reject) => {
|
|
49
|
-
const baseUrl = getBaseUrl();
|
|
50
|
-
const fullUrl = `${baseUrl}${path}`;
|
|
51
|
-
const url = new URL(fullUrl);
|
|
52
|
-
const isHttps = url.protocol === 'https:';
|
|
53
|
-
const fn = isHttps ? node_https_1.request : node_http_1.request;
|
|
54
|
-
const headers = {
|
|
55
|
-
'Content-Type': 'application/json',
|
|
56
|
-
Accept: 'application/json',
|
|
57
|
-
};
|
|
58
|
-
const apiKey = loadApiKey();
|
|
59
|
-
if (apiKey) {
|
|
60
|
-
headers['X-API-Key'] = apiKey;
|
|
61
|
-
}
|
|
62
|
-
const req = fn(fullUrl, { method, headers }, (res) => {
|
|
63
|
-
let data = '';
|
|
64
|
-
res.on('data', (chunk) => (data += chunk.toString()));
|
|
65
|
-
res.on('end', () => {
|
|
66
|
-
try {
|
|
67
|
-
resolve(JSON.parse(data));
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
resolve(data);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
req.on('error', reject);
|
|
75
|
-
if (body)
|
|
76
|
-
req.write(JSON.stringify(body));
|
|
77
|
-
req.end();
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
exports.api = {
|
|
81
|
-
get: (path) => request('GET', path),
|
|
82
|
-
post: (path, body) => request('POST', path, body),
|
|
83
|
-
put: (path, body) => request('PUT', path, body),
|
|
84
|
-
delete: (path) => request('DELETE', path),
|
|
85
|
-
};
|
|
86
|
-
function getApiUrl() {
|
|
87
|
-
return getBaseUrl();
|
|
88
|
-
}
|
|
89
|
-
function getApiKey() {
|
|
90
|
-
return loadApiKey();
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=api-client.js.map
|
package/dist/api-client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFlE"}
|
package/dist/commands/context.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.contextCommand = contextCommand;
|
|
4
|
-
const api_client_1 = require("../api-client");
|
|
5
|
-
const git_1 = require("../git");
|
|
6
|
-
async function contextCommand(args) {
|
|
7
|
-
if (!(0, git_1.isGitRepo)()) {
|
|
8
|
-
console.error('Error: not a git repository.');
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
11
|
-
const remote = (0, git_1.getGitRemote)();
|
|
12
|
-
if (!remote) {
|
|
13
|
-
console.error('Error: no git remote found.');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
// Get workspace
|
|
17
|
-
let workspace;
|
|
18
|
-
try {
|
|
19
|
-
workspace = await api_client_1.api.get(`/workspaces/${remote.org}`);
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
console.error(`Workspace '${remote.org}' not found. Run 'driftless init' first.`);
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
const subCommand = args[0];
|
|
26
|
-
if (subCommand === 'list') {
|
|
27
|
-
try {
|
|
28
|
-
const watchers = (await api_client_1.api.get(`/workspaces/${remote.org}/watchers`));
|
|
29
|
-
if (watchers.length === 0) {
|
|
30
|
-
console.log('No watchers defined yet.');
|
|
31
|
-
console.log('Create one with: driftless context add "name" --what "..." --how "..." --where "..."');
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
for (const w of watchers) {
|
|
35
|
-
console.log(` • ${w.slug} — ${w.name}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
console.log('Watchers API not available yet (coming in M5).');
|
|
41
|
-
}
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (subCommand === 'get') {
|
|
45
|
-
const slug = args[1];
|
|
46
|
-
if (!slug) {
|
|
47
|
-
console.error('Usage: driftless context get <name>');
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
try {
|
|
51
|
-
const watcher = await api_client_1.api.get(`/workspaces/${remote.org}/watchers/${slug}`);
|
|
52
|
-
console.log(`Name: ${watcher.name}`);
|
|
53
|
-
console.log(`What: ${watcher.what || 'N/A'}`);
|
|
54
|
-
console.log(`How: ${watcher.how || 'N/A'}`);
|
|
55
|
-
console.log(`Where: ${watcher.where_files?.join(', ') || 'N/A'}`);
|
|
56
|
-
console.log(`Used by: ${watcher.where_used_by?.join(', ') || 'N/A'}`);
|
|
57
|
-
console.log(`Updated: ${watcher.last_updated || 'never'}`);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
console.log(`Watcher '${slug}' not found or API not available.`);
|
|
61
|
-
}
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (subCommand === 'add') {
|
|
65
|
-
const name = args[1];
|
|
66
|
-
if (!name) {
|
|
67
|
-
console.error('Usage: driftless context add "name" --what "..." --how "..." --where "..."');
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
await api_client_1.api.post(`/workspaces/${remote.org}/watchers`, {
|
|
72
|
-
name,
|
|
73
|
-
slug: name.toLowerCase().replace(/\s+/g, '-'),
|
|
74
|
-
});
|
|
75
|
-
console.log(`Watcher '${name}' created.`);
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
console.log('Watchers API not available yet (coming in M5).');
|
|
79
|
-
}
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
console.log('Usage: driftless context <list|get|add> [args]');
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAqHjD"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.initCommand = initCommand;
|
|
4
|
-
const api_client_1 = require("../api-client");
|
|
5
|
-
const git_1 = require("../git");
|
|
6
|
-
const scanner_1 = require("@driftless/scanner");
|
|
7
|
-
async function initCommand() {
|
|
8
|
-
console.log('Driftless — context integrity for engineering teams\n');
|
|
9
|
-
if (!(0, git_1.isGitRepo)()) {
|
|
10
|
-
console.error('Error: not a git repository.');
|
|
11
|
-
process.exit(1);
|
|
12
|
-
}
|
|
13
|
-
const remote = (0, git_1.getGitRemote)();
|
|
14
|
-
if (!remote) {
|
|
15
|
-
console.error('Error: no git remote found.');
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
console.log(`Repository: ${remote.org}/${remote.repo}`);
|
|
19
|
-
// 1. Get workspace from API key (not from git remote!)
|
|
20
|
-
console.log('\nConnecting to Driftless Cloud...');
|
|
21
|
-
let workspace;
|
|
22
|
-
try {
|
|
23
|
-
workspace = await api_client_1.api.get('/me');
|
|
24
|
-
if (!workspace?.workspace_id) {
|
|
25
|
-
console.error('Could not resolve workspace. Check your API key.');
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
console.log(` Workspace: ${workspace.slug} ✓`);
|
|
29
|
-
}
|
|
30
|
-
catch (err) {
|
|
31
|
-
console.error(` Failed: ${err?.message || 'unreachable'}`);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
const workspaceSlug = workspace.slug;
|
|
35
|
-
// 2. Local scan
|
|
36
|
-
console.log('\nScanning codebase locally...');
|
|
37
|
-
const cwd = process.cwd();
|
|
38
|
-
const scanResult = await (0, scanner_1.scanRepo)(cwd);
|
|
39
|
-
const summary = {
|
|
40
|
-
endpoints: scanResult.stats.total_endpoints,
|
|
41
|
-
guards: scanResult.stats.total_guards,
|
|
42
|
-
services: scanResult.stats.total_services,
|
|
43
|
-
modules: scanResult.stats.total_modules,
|
|
44
|
-
framework: scanResult.identity.framework,
|
|
45
|
-
system_type: scanResult.identity.system_type,
|
|
46
|
-
auth_patterns: scanResult.identity.auth_patterns,
|
|
47
|
-
};
|
|
48
|
-
const components = scanResult.components;
|
|
49
|
-
const relationCount = components.reduce((sum, component) => sum + (component.relations?.length || 0), 0);
|
|
50
|
-
console.log(` Framework: ${summary.framework} | Endpoints: ${summary.endpoints} | Services: ${summary.services}`);
|
|
51
|
-
console.log(` Modules: ${summary.modules} | Guards: ${summary.guards}`);
|
|
52
|
-
console.log(` Relations: ${relationCount}`);
|
|
53
|
-
if (summary.auth_patterns.length > 0) {
|
|
54
|
-
console.log(` Auth: ${summary.auth_patterns.join(', ')}`);
|
|
55
|
-
}
|
|
56
|
-
// 3. Connect repo
|
|
57
|
-
let repo;
|
|
58
|
-
try {
|
|
59
|
-
const repos = (await api_client_1.api.get(`/workspaces/${workspaceSlug}/repos`));
|
|
60
|
-
repo = Array.isArray(repos)
|
|
61
|
-
? repos.find((r) => r.github_org === remote.org && r.github_repo === remote.repo)
|
|
62
|
-
: null;
|
|
63
|
-
}
|
|
64
|
-
catch { /* will create */ }
|
|
65
|
-
if (repo) {
|
|
66
|
-
console.log(`\n Repo: ${remote.repo} ✓`);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
try {
|
|
70
|
-
repo = await api_client_1.api.post(`/workspaces/${workspaceSlug}/repos`, {
|
|
71
|
-
github_org: remote.org,
|
|
72
|
-
github_repo: remote.repo,
|
|
73
|
-
});
|
|
74
|
-
console.log(` Repo: ${remote.repo} (connected)`);
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
console.error(` Failed to connect repo: ${err?.message || 'unknown'}`);
|
|
78
|
-
process.exit(1);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// 4. Upload baseline
|
|
82
|
-
try {
|
|
83
|
-
await api_client_1.api.post(`/workspaces/${workspaceSlug}/repos/${repo.id}/baseline`, summary);
|
|
84
|
-
console.log(' Baseline uploaded ✓');
|
|
85
|
-
}
|
|
86
|
-
catch (err) {
|
|
87
|
-
console.error(` Upload failed: ${err?.message || 'unknown'}`);
|
|
88
|
-
}
|
|
89
|
-
// 5. Upload components
|
|
90
|
-
if (components.length > 0) {
|
|
91
|
-
try {
|
|
92
|
-
await api_client_1.api.post(`/workspaces/${workspaceSlug}/repos/${repo.id}/components`, { components });
|
|
93
|
-
console.log(` Components uploaded (${components.length}, relations ${relationCount}) ✓`);
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
console.error(` Component upload failed: ${err?.message || 'unknown'}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// 5. Rules
|
|
100
|
-
console.log('\nSuggested rules:');
|
|
101
|
-
const suggestions = [];
|
|
102
|
-
if (summary.auth_patterns.includes('apikey') || summary.guards > 0) {
|
|
103
|
-
suggestions.push('Every B2B endpoint must use BusinessAccessGuard');
|
|
104
|
-
}
|
|
105
|
-
if (summary.services > summary.modules) {
|
|
106
|
-
suggestions.push('Services must not import controllers directly');
|
|
107
|
-
}
|
|
108
|
-
if (summary.endpoints > 50) {
|
|
109
|
-
suggestions.push('Split large controllers — over 50 endpoints detected');
|
|
110
|
-
}
|
|
111
|
-
if (suggestions.length === 0)
|
|
112
|
-
console.log(' No suggestions.');
|
|
113
|
-
else
|
|
114
|
-
suggestions.forEach((s) => console.log(` • ${s}`));
|
|
115
|
-
console.log(`\nView: https://driftless.icu/ecosystem`);
|
|
116
|
-
}
|
|
117
|
-
//# 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../../src/commands/install-skill.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,IAAI,IAAI,CA4C1C"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.installSkillCommand = installSkillCommand;
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
function installSkillCommand() {
|
|
7
|
-
const cwd = process.cwd();
|
|
8
|
-
const agentsPath = (0, node_path_1.resolve)(cwd, 'AGENTS.md');
|
|
9
|
-
const template = `# Driftless — Team Codebase Memory
|
|
10
|
-
|
|
11
|
-
Driftless Cloud is the source of truth for this repo's architecture context.
|
|
12
|
-
|
|
13
|
-
Before touching backend architecture, auth, routes, guards, services, modules, or package boundaries, load relevant context:
|
|
14
|
-
|
|
15
|
-
\\\`\\\`\\\`bash
|
|
16
|
-
driftless context get <feature>
|
|
17
|
-
\\\`\\\`\\\`
|
|
18
|
-
|
|
19
|
-
Before completing work, verify the current diff:
|
|
20
|
-
|
|
21
|
-
\\\`\\\`\\\`bash
|
|
22
|
-
driftless scan --diff
|
|
23
|
-
\\\`\\\`\\\`
|
|
24
|
-
|
|
25
|
-
If Driftless reports violations, fix them before finishing.
|
|
26
|
-
|
|
27
|
-
If you discover durable context about the codebase, add it to the team memory:
|
|
28
|
-
|
|
29
|
-
\\\`\\\`\\\`bash
|
|
30
|
-
driftless context add "<name>" --what "..." --how "..." --where "..."
|
|
31
|
-
\\\`\\\`\\\`
|
|
32
|
-
|
|
33
|
-
Driftless is not local session memory. It is shared team context stored in Cloud and kept updated through scans, agent activity, and repo changes.
|
|
34
|
-
`;
|
|
35
|
-
if ((0, node_fs_1.existsSync)(agentsPath)) {
|
|
36
|
-
console.log('AGENTS.md already exists. Appending Driftless section...');
|
|
37
|
-
const existing = require('node:fs').readFileSync(agentsPath, 'utf8');
|
|
38
|
-
if (existing.includes('Driftless — Context & Integrity')) {
|
|
39
|
-
console.log('Driftless section already present.');
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
(0, node_fs_1.writeFileSync)(agentsPath, existing + '\n---\n\n' + template);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
(0, node_fs_1.writeFileSync)(agentsPath, template);
|
|
46
|
-
}
|
|
47
|
-
console.log(`Driftless skill installed at ${agentsPath}`);
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=install-skill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../../src/commands/install-skill.ts"],"names":[],"mappings":";;AAGA,kDA4CC;AA/CD,qCAAmD;AACnD,yCAAmC;AAEnC,SAAgB,mBAAmB;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,UAAU,GAAG,IAAA,mBAAO,EAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAE5C,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB,CAAA;IAEC,IAAI,IAAA,oBAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAA;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACpE,IAAI,QAAQ,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;YACjD,OAAM;QACR,CAAC;QACD,IAAA,uBAAa,EAAC,UAAU,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAA;IAC9D,CAAC;SAAM,CAAC;QACN,IAAA,uBAAa,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAA;AAC3D,CAAC"}
|
package/dist/commands/login.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAeA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChE"}
|
package/dist/commands/login.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loginCommand = loginCommand;
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
const node_readline_1 = require("node:readline");
|
|
7
|
-
const node_child_process_1 = require("node:child_process");
|
|
8
|
-
const node_os_1 = require("node:os");
|
|
9
|
-
const CONFIG_DIR = (0, node_path_1.resolve)((0, node_os_1.homedir)(), '.driftless');
|
|
10
|
-
const CONFIG_PATH = (0, node_path_1.resolve)(CONFIG_DIR, 'config.json');
|
|
11
|
-
function openBrowser(url) {
|
|
12
|
-
const cmd = process.platform === 'darwin' ? 'open' :
|
|
13
|
-
process.platform === 'win32' ? 'start' : 'xdg-open';
|
|
14
|
-
(0, node_child_process_1.exec)(`${cmd} ${url}`);
|
|
15
|
-
}
|
|
16
|
-
async function loginCommand(args) {
|
|
17
|
-
// --key flag for quick setup (CI, scripts)
|
|
18
|
-
const keyIndex = args.indexOf('--key');
|
|
19
|
-
if (keyIndex !== -1 && args[keyIndex + 1]) {
|
|
20
|
-
const apiKey = args[keyIndex + 1];
|
|
21
|
-
saveConfig(apiKey);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const apiUrl = process.env['DRIFTLESS_API_URL'] || 'https://api.driftless.icu/api/v1';
|
|
25
|
-
const dashboardUrl = 'https://driftless.icu';
|
|
26
|
-
console.log('Opening Driftless Dashboard to get your API key...');
|
|
27
|
-
console.log();
|
|
28
|
-
// Open browser to dashboard API keys section
|
|
29
|
-
openBrowser(dashboardUrl);
|
|
30
|
-
console.log('If the browser doesn\'t open, visit:');
|
|
31
|
-
console.log(` ${dashboardUrl}`);
|
|
32
|
-
console.log();
|
|
33
|
-
console.log('1. Sign in with your account');
|
|
34
|
-
console.log('2. Go to Settings → API Keys');
|
|
35
|
-
console.log('3. Create a new API key');
|
|
36
|
-
console.log('4. Copy the key (starts with drift_)');
|
|
37
|
-
console.log();
|
|
38
|
-
// Interactive prompt
|
|
39
|
-
const rl = (0, node_readline_1.createInterface)({
|
|
40
|
-
input: process.stdin,
|
|
41
|
-
output: process.stdout,
|
|
42
|
-
});
|
|
43
|
-
const apiKey = await new Promise((resolve) => {
|
|
44
|
-
rl.question('Paste your API key: ', (answer) => {
|
|
45
|
-
rl.close();
|
|
46
|
-
resolve(answer.trim());
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
if (!apiKey.startsWith('drift_')) {
|
|
50
|
-
console.error('Error: API key must start with "drift_".');
|
|
51
|
-
console.error('Get a valid key from your Driftless Dashboard → Settings → API Keys.');
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
saveConfig(apiKey, apiUrl);
|
|
55
|
-
}
|
|
56
|
-
function saveConfig(apiKey, apiUrl) {
|
|
57
|
-
const url = apiUrl || 'https://api.driftless.icu/api/v1';
|
|
58
|
-
try {
|
|
59
|
-
if (!(0, node_fs_1.existsSync)(CONFIG_DIR)) {
|
|
60
|
-
(0, node_fs_1.mkdirSync)(CONFIG_DIR, { recursive: true });
|
|
61
|
-
}
|
|
62
|
-
(0, node_fs_1.writeFileSync)(CONFIG_PATH, JSON.stringify({ api_key: apiKey, api_url: url }, null, 2) + '\n');
|
|
63
|
-
console.log();
|
|
64
|
-
console.log('Logged in successfully.');
|
|
65
|
-
console.log(` Config: ${CONFIG_PATH}`);
|
|
66
|
-
console.log();
|
|
67
|
-
console.log('Try: driftless scan --diff');
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
console.error('Failed to save config:', err);
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=login.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/scan.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgG/D"}
|
package/dist/commands/scan.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.scanCommand = scanCommand;
|
|
4
|
-
const api_client_1 = require("../api-client");
|
|
5
|
-
const git_1 = require("../git");
|
|
6
|
-
async function scanCommand(args) {
|
|
7
|
-
if (!(0, git_1.isGitRepo)()) {
|
|
8
|
-
console.error('Error: not a git repository.');
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
11
|
-
const remote = (0, git_1.getGitRemote)();
|
|
12
|
-
if (!remote) {
|
|
13
|
-
console.error('Error: no git remote found.');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
// Get workspace via /me (resolves from API key, not git remote slug)
|
|
17
|
-
let workspace;
|
|
18
|
-
try {
|
|
19
|
-
workspace = await api_client_1.api.get('/me');
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
console.error('Could not resolve workspace. Run driftless login first.');
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
const repos = (await api_client_1.api.get(`/workspaces/${workspace.slug}/repos`));
|
|
26
|
-
if (!Array.isArray(repos)) {
|
|
27
|
-
console.error(`Error: Could not fetch repos for workspace '${workspace.slug}'.`);
|
|
28
|
-
console.error(`Response:`, JSON.stringify(repos).slice(0, 200));
|
|
29
|
-
console.error('\nTip: Make sure your API key belongs to this workspace.');
|
|
30
|
-
console.error('Run: driftless login --key <key>');
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
const repo = repos.find((r) => r.github_org === remote.org && r.github_repo === remote.repo);
|
|
34
|
-
if (!repo) {
|
|
35
|
-
console.error(`Repo '${remote.repo}' not found. Run 'driftless init' first.`);
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
// Get diff
|
|
39
|
-
const onlyDiff = args.includes('--diff');
|
|
40
|
-
let diff = '';
|
|
41
|
-
let source = '';
|
|
42
|
-
if (onlyDiff) {
|
|
43
|
-
diff = (0, git_1.getUncommittedDiff)();
|
|
44
|
-
source = 'uncommitted changes';
|
|
45
|
-
if (!diff) {
|
|
46
|
-
console.log('No uncommitted changes. Clean.');
|
|
47
|
-
process.exit(0);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
const staged = (0, git_1.getStagedDiff)();
|
|
52
|
-
const unstaged = (0, git_1.getUncommittedDiff)();
|
|
53
|
-
diff = [staged, unstaged].filter(Boolean).join('\n');
|
|
54
|
-
source = staged && unstaged ? 'staged + unstaged' : staged ? 'staged' : 'unstaged';
|
|
55
|
-
if (!diff) {
|
|
56
|
-
console.log('No changes to scan. Clean.');
|
|
57
|
-
process.exit(0);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const commitHash = (0, git_1.getLastCommitHash)();
|
|
61
|
-
const author = (0, git_1.getAuthorName)();
|
|
62
|
-
console.log(`Scanning ${source}...`);
|
|
63
|
-
// Evaluate
|
|
64
|
-
const result = await api_client_1.api.post('/scan', {
|
|
65
|
-
workspace_id: workspace.workspace_id,
|
|
66
|
-
repo_id: repo.id,
|
|
67
|
-
diff,
|
|
68
|
-
commit_hash: commitHash,
|
|
69
|
-
author,
|
|
70
|
-
});
|
|
71
|
-
if (result.status === 'clean') {
|
|
72
|
-
console.log('Clean — no violations detected.');
|
|
73
|
-
process.exit(0);
|
|
74
|
-
}
|
|
75
|
-
if (!result.violations || result.violations.length === 0) {
|
|
76
|
-
console.log('Clean — no violations detected.');
|
|
77
|
-
process.exit(0);
|
|
78
|
-
}
|
|
79
|
-
console.log(`\n${result.violations.length} violation(s) found:\n`);
|
|
80
|
-
for (const v of result.violations) {
|
|
81
|
-
const severityColor = v.severity === 'critical' || v.severity === 'high' ? '\x1b[31m' : '\x1b[33m';
|
|
82
|
-
console.log(` ${severityColor}[${v.severity.toUpperCase()}]\x1b[0m ${v.rule_name}`);
|
|
83
|
-
console.log(` ${v.explanation}`);
|
|
84
|
-
console.log(` File: ${v.file_path}:${v.line_number}`);
|
|
85
|
-
console.log(` Code: ${v.diff_snippet}`);
|
|
86
|
-
console.log();
|
|
87
|
-
}
|
|
88
|
-
console.log('Fix these violations before pushing.');
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=scan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare function getGitRemote(): {
|
|
2
|
-
org: string;
|
|
3
|
-
repo: string;
|
|
4
|
-
} | null;
|
|
5
|
-
export declare function isGitRepo(): boolean;
|
|
6
|
-
export declare function getUncommittedDiff(): string;
|
|
7
|
-
export declare function getStagedDiff(): string;
|
|
8
|
-
export declare function getLastCommitHash(): string;
|
|
9
|
-
export declare function getAuthorName(): string;
|
|
10
|
-
//# sourceMappingURL=git.d.ts.map
|
package/dist/git.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBnE;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC"}
|