@ace3-memory/ace 3.0.5
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/LICENSE +26 -0
- package/README.md +153 -0
- package/cli.js +37 -0
- package/download-binary.js +148 -0
- package/package.json +61 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
PROPRIETARY SOFTWARE LICENSE
|
|
2
|
+
|
|
3
|
+
Copyright © 2025 ACE3 Technologies. All Rights Reserved.
|
|
4
|
+
|
|
5
|
+
This software and associated documentation files (the "Software") are the proprietary
|
|
6
|
+
and confidential information of ACE3 Technologies.
|
|
7
|
+
|
|
8
|
+
NOTICE: All information contained herein is, and remains the property of ACE3
|
|
9
|
+
Technologies. The intellectual and technical concepts contained herein are proprietary
|
|
10
|
+
to ACE3 Technologies and may be covered by patents, patents in process, and are
|
|
11
|
+
protected by trade secret or copyright law.
|
|
12
|
+
|
|
13
|
+
Dissemination of this information or reproduction of this material is strictly
|
|
14
|
+
forbidden unless prior written permission is obtained from ACE3 Technologies.
|
|
15
|
+
|
|
16
|
+
Unauthorized copying, modification, distribution, or use of this Software, via any
|
|
17
|
+
medium, is strictly prohibited without the express written consent of ACE3 Technologies.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
20
|
+
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
21
|
+
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ACE3 TECHNOLOGIES BE LIABLE
|
|
22
|
+
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
23
|
+
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
24
|
+
DEALINGS IN THE SOFTWARE.
|
|
25
|
+
|
|
26
|
+
For licensing inquiries, please contact: legal@ace3-ai.com
|
package/README.md
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# ACE: The Private Engineering Logbook for AI
|
|
2
|
+
|
|
3
|
+
> **Stop explaining your architecture to ChatGPT every morning.**
|
|
4
|
+
>
|
|
5
|
+
> ACE gives your AI tools (Claude, ChatGPT, Gemini) a persistent, shared memory that lives on **your** infrastructure, not the cloud.
|
|
6
|
+
|
|
7
|
+
[](https://ace3-ai.com/license)
|
|
8
|
+
[](https://www.python.org/downloads/)
|
|
9
|
+
[](https://github.com/AdyBrooks46/AutonomousContextEngine/releases)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 🛑 The Problem
|
|
14
|
+
|
|
15
|
+
AI coding agents are amazing, but they are **super-talented interns with amnesia**.
|
|
16
|
+
* They forget your architectural decisions from last week.
|
|
17
|
+
* They re-introduce bugs you already fixed.
|
|
18
|
+
* They don't know *why* your codebase is structured this way.
|
|
19
|
+
* **And you are tired of copy-pasting context into every new chat session.**
|
|
20
|
+
|
|
21
|
+
## ✅ The Solution: Control, Not Magic.
|
|
22
|
+
|
|
23
|
+
ACE (Autonomous Context Engine) is a **local-first** memory layer that sits between you and your AI. It automatically indexes your codebase, tracks your decisions, and ensures every AI session starts with full context.
|
|
24
|
+
|
|
25
|
+
### Why Developers Use ACE:
|
|
26
|
+
|
|
27
|
+
1. **Complete Privacy (Local-First):**
|
|
28
|
+
* Your code, decisions, and patterns stay on **your** PostgreSQL database (Localhost or Private Cloud).
|
|
29
|
+
* Zero telemetry. No data sent to OpenAI/Anthropic for training.
|
|
30
|
+
* You own the "Brain."
|
|
31
|
+
|
|
32
|
+
2. **The "Senior Engineer" in the Loop:**
|
|
33
|
+
* **Pattern Enforcement:** ACE scans your code (`pattern_detector.py`) and tells the AI: *"We use the Repository pattern here, don't write spaghetti code."*
|
|
34
|
+
* **Decision Tracking:** When you decide "No Microservices," ACE remembers. If an AI tries to suggest a microservice next month, ACE blocks it with context.
|
|
35
|
+
|
|
36
|
+
3. **Team Memory (The "Killer Feature"):**
|
|
37
|
+
* **Junior Onboarding:** A new hire asks: *"How do I handle auth?"* ACE answers with the context saved by your Lead Architect 6 months ago.
|
|
38
|
+
* **No More Repetition:** Solve a bug once. ACE remembers the fix forever. The next time the AI sees that error, it knows the solution immediately.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## ⚡ Quick Start
|
|
43
|
+
|
|
44
|
+
You don't need a PhD in AI to use this. It's a single binary.
|
|
45
|
+
|
|
46
|
+
### 1. Install
|
|
47
|
+
|
|
48
|
+
**macOS / Linux:**
|
|
49
|
+
```bash
|
|
50
|
+
curl -fsSL https://ace3-ai.com/install | sh
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Windows (PowerShell):**
|
|
54
|
+
```powershell
|
|
55
|
+
irm https://ace3-ai.com/install.ps1 | iex
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Alternative (npm):**
|
|
59
|
+
```bash
|
|
60
|
+
npm install -g @ace3-memory/ace
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 2. Run
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Login (Authenticates your license, NOT your data)
|
|
67
|
+
ace login
|
|
68
|
+
|
|
69
|
+
# Start the server (Runs on localhost:7777)
|
|
70
|
+
ace start
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 3. Connect Your AI
|
|
74
|
+
|
|
75
|
+
ACE provides a universal REST API that works with **any** AI tool that can run shell commands or make HTTP requests.
|
|
76
|
+
|
|
77
|
+
**Example: Telling Claude/ChatGPT to "Remember":**
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# In your AI chat, just tell it to run:
|
|
81
|
+
ace remember --key "auth-decision" --value "We use JWT with 30d expiry because of [reason]"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Example: Search Context:**
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
ace recall "why did we choose postgres?"
|
|
88
|
+
# Output: "Decision #45: Chosen for vector extension support and ACID compliance..."
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 🛠️ Features for "Control"
|
|
94
|
+
|
|
95
|
+
| Feature | What It Does | Why It Matters |
|
|
96
|
+
| :--- | :--- | :--- |
|
|
97
|
+
| **Pattern Detector** | Scans Python/JS/TS code to find architectural patterns. | AI writes code that *matches* your existing style, not generic StackOverflow code. |
|
|
98
|
+
| **Decision Log** | Tracks "Architecture Decision Records" (ADRs). | Prevents "Architecture Drift" where AI slowly ruins your design. |
|
|
99
|
+
| **Issue Tracker** | Logs bugs and their specific fixes. | Never debug the same "stale token" error twice. |
|
|
100
|
+
| **Team Sync** | Syncs memories across your team (Pro Plan). | Your Junior Dev inherits the Senior Dev's context instantly. |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 🏗️ Architecture (Privacy First)
|
|
105
|
+
|
|
106
|
+
We built ACE to be the "Switzerland" of AI. Neutral, private, and secure.
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
[ Your Laptop / Server ]
|
|
110
|
+
|
|
|
111
|
+
+-- [ ACE Binary ] (The Brain)
|
|
112
|
+
| |
|
|
113
|
+
| +-- [ Your Local Postgres ] (The Memory) <--- DATA STAYS HERE
|
|
114
|
+
|
|
|
115
|
+
+-- [ AI Interface ] (Claude, ChatGPT, IDE) <--- Queries ACE via localhost:7777
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**We (ACE3) provide:**
|
|
119
|
+
* The Intelligence (The Binary).
|
|
120
|
+
* The Dashboard (UI for visualizing memory).
|
|
121
|
+
* The License.
|
|
122
|
+
|
|
123
|
+
**You provide:**
|
|
124
|
+
* The Database (Postgres).
|
|
125
|
+
* The Infrastructure.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 💰 Pricing (v3.0.5)
|
|
130
|
+
|
|
131
|
+
* **Starter (Free):** 1 User, 1 Namespace, 100 Memories, 50 API calls/day. Forever free.
|
|
132
|
+
* **Developer:** £9.99/mo. 1 User, 3 Namespaces, 2,500 Memories, 500 API calls/day.
|
|
133
|
+
* **Pro:** £24.99/mo. 10 Users (+£3/extra), Unlimited Namespaces & Memories.
|
|
134
|
+
* **Founder's Deal:** £299 one-time. 25 Users, Lifetime access. Limited to 100 licenses.
|
|
135
|
+
* **Enterprise:** Custom pricing. Unlimited everything, SSO, SLA.
|
|
136
|
+
|
|
137
|
+
[**View Full Pricing & Sign Up**](https://ace3-ai.com/pricing)
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 🤝 Contributing
|
|
142
|
+
|
|
143
|
+
We are "Open Core" at heart. While the core binary is proprietary (to protect our IP), we welcome contributions to:
|
|
144
|
+
* **Parsers:** Add support for Rust, Go, Java.
|
|
145
|
+
* **SDKs:** Build a Python or Node.js wrapper.
|
|
146
|
+
* **Integrations:** Build a VS Code extension.
|
|
147
|
+
|
|
148
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
**Built by a Developer, for Developers.**
|
|
153
|
+
*This isn't "Magic." It's just a better way to work.*
|
package/cli.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ACE CLI Wrapper
|
|
4
|
+
* Thin wrapper that executes the platform-specific binary
|
|
5
|
+
* This file is readable, but the actual ACE logic is in the compiled binary
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const { spawn } = require('child_process');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
|
|
11
|
+
const platform = process.platform;
|
|
12
|
+
const binaryName = 'ace' + (platform === 'win32' ? '.exe' : '');
|
|
13
|
+
const binaryPath = path.join(__dirname, 'bin', binaryName);
|
|
14
|
+
|
|
15
|
+
// Check if binary exists
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
if (!fs.existsSync(binaryPath)) {
|
|
18
|
+
console.error('❌ ACE binary not found.');
|
|
19
|
+
console.error('This usually means the installation failed.');
|
|
20
|
+
console.error('Try reinstalling: npm install -g @ace3-memory/ace');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Execute the binary with all arguments
|
|
25
|
+
const child = spawn(binaryPath, process.argv.slice(2), {
|
|
26
|
+
stdio: 'inherit',
|
|
27
|
+
env: process.env
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
child.on('exit', (code) => {
|
|
31
|
+
process.exit(code || 0);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
child.on('error', (err) => {
|
|
35
|
+
console.error('❌ Failed to start ACE:', err.message);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
});
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ACE Binary Downloader (npm postinstall script)
|
|
4
|
+
* Downloads platform-specific ACE binary from GitHub releases
|
|
5
|
+
* Similar to how Claude Code, GitHub CLI, and other modern tools work
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const https = require('https');
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
|
|
12
|
+
const VERSION = process.env.ACE_VERSION || 'v3.0.4';
|
|
13
|
+
const GITHUB_REPO = 'AdyBrooks46/AutonomousContextEngine';
|
|
14
|
+
const BINARY_DIR = path.join(__dirname, 'bin');
|
|
15
|
+
|
|
16
|
+
// Detect platform and architecture
|
|
17
|
+
const platform = process.platform;
|
|
18
|
+
const arch = process.arch;
|
|
19
|
+
|
|
20
|
+
// Map to binary names
|
|
21
|
+
// Note: macOS Intel (x64) uses ARM64 binary via Rosetta 2
|
|
22
|
+
const BINARY_MAP = {
|
|
23
|
+
'darwin-arm64': 'ace-macos-arm64',
|
|
24
|
+
'darwin-x64': 'ace-macos-arm64', // Intel Macs use ARM64 via Rosetta 2
|
|
25
|
+
'linux-x64': 'ace-linux-x64',
|
|
26
|
+
'win32-x64': 'ace-windows-x64.exe'
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const platformKey = `${platform}-${arch}`;
|
|
30
|
+
const binaryName = BINARY_MAP[platformKey];
|
|
31
|
+
|
|
32
|
+
if (!binaryName) {
|
|
33
|
+
console.error(`❌ Unsupported platform: ${platform} ${arch}`);
|
|
34
|
+
console.error(`Supported platforms: macOS (Intel/Apple Silicon), Linux x64, Windows x64`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// GitHub release URL
|
|
39
|
+
const downloadUrl = `https://github.com/${GITHUB_REPO}/releases/download/${VERSION}/${binaryName}`;
|
|
40
|
+
const binaryPath = path.join(BINARY_DIR, 'ace' + (platform === 'win32' ? '.exe' : ''));
|
|
41
|
+
|
|
42
|
+
console.log(`\n📦 Installing ACE ${VERSION} for ${platform} ${arch}...`);
|
|
43
|
+
console.log(`📥 Downloading: ${binaryName}`);
|
|
44
|
+
|
|
45
|
+
// Create bin directory
|
|
46
|
+
if (!fs.existsSync(BINARY_DIR)) {
|
|
47
|
+
fs.mkdirSync(BINARY_DIR, { recursive: true });
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Download binary
|
|
51
|
+
const file = fs.createWriteStream(binaryPath);
|
|
52
|
+
let downloadedBytes = 0;
|
|
53
|
+
let totalBytes = 0;
|
|
54
|
+
|
|
55
|
+
https.get(downloadUrl, (response) => {
|
|
56
|
+
if (response.statusCode === 302 || response.statusCode === 301) {
|
|
57
|
+
// Follow redirect
|
|
58
|
+
https.get(response.headers.location, (redirectResponse) => {
|
|
59
|
+
totalBytes = parseInt(redirectResponse.headers['content-length'], 10);
|
|
60
|
+
|
|
61
|
+
redirectResponse.on('data', (chunk) => {
|
|
62
|
+
downloadedBytes += chunk.length;
|
|
63
|
+
const percent = ((downloadedBytes / totalBytes) * 100).toFixed(1);
|
|
64
|
+
process.stdout.write(`\r⏳ Progress: ${percent}% (${(downloadedBytes / 1024 / 1024).toFixed(1)}MB / ${(totalBytes / 1024 / 1024).toFixed(1)}MB)`);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
redirectResponse.pipe(file);
|
|
68
|
+
|
|
69
|
+
file.on('finish', () => {
|
|
70
|
+
file.close(() => {
|
|
71
|
+
process.stdout.write('\n');
|
|
72
|
+
console.log('✅ Download complete');
|
|
73
|
+
|
|
74
|
+
// Make executable (Unix-like systems)
|
|
75
|
+
if (platform !== 'win32') {
|
|
76
|
+
try {
|
|
77
|
+
fs.chmodSync(binaryPath, 0o755);
|
|
78
|
+
console.log('✅ Binary made executable');
|
|
79
|
+
} catch (err) {
|
|
80
|
+
console.error('⚠️ Could not make binary executable:', err.message);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
console.log(`✅ ACE installed successfully!`);
|
|
85
|
+
console.log(`\n🚀 Quick start:`);
|
|
86
|
+
console.log(` 1. ace login # Authenticate`);
|
|
87
|
+
console.log(` 2. ace start # Start server`);
|
|
88
|
+
console.log(` 3. ace status # Check status\n`);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}).on('error', (err) => {
|
|
92
|
+
fs.unlinkSync(binaryPath);
|
|
93
|
+
console.error(`\n❌ Download failed:`, err.message);
|
|
94
|
+
process.exit(1);
|
|
95
|
+
});
|
|
96
|
+
} else if (response.statusCode === 200) {
|
|
97
|
+
totalBytes = parseInt(response.headers['content-length'], 10);
|
|
98
|
+
|
|
99
|
+
response.on('data', (chunk) => {
|
|
100
|
+
downloadedBytes += chunk.length;
|
|
101
|
+
const percent = ((downloadedBytes / totalBytes) * 100).toFixed(1);
|
|
102
|
+
process.stdout.write(`\r⏳ Progress: ${percent}% (${(downloadedBytes / 1024 / 1024).toFixed(1)}MB / ${(totalBytes / 1024 / 1024).toFixed(1)}MB)`);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
response.pipe(file);
|
|
106
|
+
|
|
107
|
+
file.on('finish', () => {
|
|
108
|
+
file.close(() => {
|
|
109
|
+
process.stdout.write('\n');
|
|
110
|
+
console.log('✅ Download complete');
|
|
111
|
+
|
|
112
|
+
// Make executable (Unix-like systems)
|
|
113
|
+
if (platform !== 'win32') {
|
|
114
|
+
try {
|
|
115
|
+
fs.chmodSync(binaryPath, 0o755);
|
|
116
|
+
console.log('✅ Binary made executable');
|
|
117
|
+
} catch (err) {
|
|
118
|
+
console.error('⚠️ Could not make binary executable:', err.message);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
console.log(`✅ ACE installed successfully!`);
|
|
123
|
+
console.log(`\n🚀 Quick start:`);
|
|
124
|
+
console.log(` 1. ace login # Authenticate`);
|
|
125
|
+
console.log(` 2. ace start # Start server`);
|
|
126
|
+
console.log(` 3. ace status # Check status\n`);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
} else {
|
|
130
|
+
console.error(`\n❌ Failed to download: HTTP ${response.statusCode}`);
|
|
131
|
+
console.error(`URL: ${downloadUrl}`);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
}).on('error', (err) => {
|
|
135
|
+
if (fs.existsSync(binaryPath)) {
|
|
136
|
+
fs.unlinkSync(binaryPath);
|
|
137
|
+
}
|
|
138
|
+
console.error(`\n❌ Download failed:`, err.message);
|
|
139
|
+
process.exit(1);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
file.on('error', (err) => {
|
|
143
|
+
if (fs.existsSync(binaryPath)) {
|
|
144
|
+
fs.unlinkSync(binaryPath);
|
|
145
|
+
}
|
|
146
|
+
console.error(`\n❌ File write error:`, err.message);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ace3-memory/ace",
|
|
3
|
+
"version": "3.0.5",
|
|
4
|
+
"description": "Your Logbook for AI - persistent memory for ChatGPT, Claude, Gemini, and more",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ace": "./cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"postinstall": "node download-binary.js",
|
|
11
|
+
"test": "./scripts/test-report.sh run",
|
|
12
|
+
"test:report": "./scripts/test-report.sh",
|
|
13
|
+
"test:frontend": "cd ace-frontend && npm test",
|
|
14
|
+
"test:unit": "python -m pytest tests/unit -v --tb=short",
|
|
15
|
+
"test:api": "ACE_SERVER_RUNNING=1 python -m pytest tests/api -v --tb=short",
|
|
16
|
+
"test:all": "npm run test:frontend && npm run test:unit && npm run test:api",
|
|
17
|
+
"test:coverage": "python -m pytest tests/ --cov=ace_core --cov-report=html --cov-report=term"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/AdyBrooks46/AutonomousContextEngine.git"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"ai",
|
|
25
|
+
"memory",
|
|
26
|
+
"llm",
|
|
27
|
+
"rag",
|
|
28
|
+
"vector",
|
|
29
|
+
"embeddings",
|
|
30
|
+
"semantic-search",
|
|
31
|
+
"chatgpt",
|
|
32
|
+
"claude",
|
|
33
|
+
"gemini",
|
|
34
|
+
"context",
|
|
35
|
+
"persistent-memory"
|
|
36
|
+
],
|
|
37
|
+
"author": "ACE3 Technologies <team@ace3-ai.com>",
|
|
38
|
+
"license": "PROPRIETARY",
|
|
39
|
+
"homepage": "https://ace3-ai.com",
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/AdyBrooks46/AutonomousContextEngine/issues"
|
|
42
|
+
},
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=14.0.0"
|
|
45
|
+
},
|
|
46
|
+
"os": [
|
|
47
|
+
"darwin",
|
|
48
|
+
"linux",
|
|
49
|
+
"win32"
|
|
50
|
+
],
|
|
51
|
+
"cpu": [
|
|
52
|
+
"x64",
|
|
53
|
+
"arm64"
|
|
54
|
+
],
|
|
55
|
+
"files": [
|
|
56
|
+
"cli.js",
|
|
57
|
+
"download-binary.js",
|
|
58
|
+
"README.md",
|
|
59
|
+
"LICENSE"
|
|
60
|
+
]
|
|
61
|
+
}
|