infrawise 0.10.1 → 0.10.3
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/README.md +8 -13
- package/dist/cli/commands/start.js +2 -34
- package/dist/cli/index.js +0 -2
- package/package.json +8 -4
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://glama.ai/mcp/servers/Sidd27/infrawise)
|
|
8
8
|
|
|
9
|
-
**Understand your infrastructure, not just your code.**
|
|
9
|
+
**[sidd27.github.io/infrawise](https://sidd27.github.io/infrawise/) — Understand your infrastructure, not just your code.**
|
|
10
10
|
|
|
11
11
|
Infrawise gives AI coding assistants deterministic infrastructure awareness.
|
|
12
12
|
|
|
@@ -117,14 +117,6 @@ infrawise start --cursor
|
|
|
117
117
|
|
|
118
118
|
Writes `.cursor/mcp.json` and opens Cursor. All 15 infrawise tools are available in Cursor's MCP panel.
|
|
119
119
|
|
|
120
|
-
### Windsurf
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
infrawise start --windsurf
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Writes to `~/.codeium/windsurf/mcp_config.json` and opens Windsurf.
|
|
127
|
-
|
|
128
120
|
### Any editor (no flag)
|
|
129
121
|
|
|
130
122
|
```bash
|
|
@@ -168,7 +160,7 @@ Add to your editor's MCP config:
|
|
|
168
160
|
| `get_topic_details` | SNS topics — subscription counts, protocols, and filter policies (required message attributes per subscription) |
|
|
169
161
|
| `get_secrets_overview` | Secrets Manager — names and rotation status (values never included) |
|
|
170
162
|
| `get_parameter_overview` | SSM Parameter Store — names, types, tiers (values never included) |
|
|
171
|
-
| `get_lambda_overview` | Lambda functions — runtime, memory, timeout, triggers (SQS/DynamoDB/Kinesis/EventBridge/S3), env var key names |
|
|
163
|
+
| `get_lambda_overview` | Lambda functions — runtime, memory, timeout, triggers (SQS/SNS/DynamoDB/Kinesis/MSK/EventBridge/S3), env var key names |
|
|
172
164
|
| `get_eventbridge_details` | EventBridge rules — name, state, schedule/event pattern, target functions |
|
|
173
165
|
| `get_s3_overview` | S3 buckets — versioning, encryption, public access, event notifications |
|
|
174
166
|
| `get_log_errors` | CloudWatch error patterns and counts (no raw log messages) |
|
|
@@ -182,7 +174,6 @@ Add to your editor's MCP config:
|
|
|
182
174
|
| `infrawise start` | **Primary command** — init + analyze + write editor MCP config, then exit |
|
|
183
175
|
| `infrawise start --claude` | Same as above, then opens Claude Code |
|
|
184
176
|
| `infrawise start --cursor` | Same as above, then opens Cursor |
|
|
185
|
-
| `infrawise start --windsurf` | Same as above, then opens Windsurf |
|
|
186
177
|
| `infrawise init` | Generate `infrawise.yaml` only (no analysis, no editor config) |
|
|
187
178
|
| `infrawise auth` | Select or switch AWS profile |
|
|
188
179
|
| `infrawise analyze` | Force a full re-scan — useful after major infrastructure changes |
|
|
@@ -400,6 +391,10 @@ Infrawise does not use an LLM to analyze your infrastructure. All extraction and
|
|
|
400
391
|
- **No telemetry** — zero data collection
|
|
401
392
|
- **Credentials** — uses your existing AWS credential chain, never stored by infrawise
|
|
402
393
|
|
|
394
|
+
### 🔒 Security & Project Naming Note
|
|
395
|
+
|
|
396
|
+
You might see this package flagged on certain supply-chain security scanners under "deceptive naming." This is a false positive triggered by automated tools because of the prefix "infra." This project is completely safe, independent, and unaffiliated with any commercial trademarks.
|
|
397
|
+
|
|
403
398
|
---
|
|
404
399
|
|
|
405
400
|
## Architecture overview
|
|
@@ -414,10 +409,10 @@ src/
|
|
|
414
409
|
core/ Config (Zod + YAML), logger (Pino), local cache
|
|
415
410
|
graph/ Graph engine — nodes, edges, builder
|
|
416
411
|
adapters/
|
|
417
|
-
aws/ DynamoDB, Lambda, SQS/SNS/SSM/Secrets/EventBridge/RDS, CloudWatch
|
|
412
|
+
aws/ DynamoDB, S3, Lambda, SQS/SNS/SSM/Secrets/EventBridge/RDS, CloudWatch
|
|
418
413
|
db/ PostgreSQL, MySQL, MongoDB
|
|
419
414
|
iac/ Terraform, CDK, CloudFormation (local file parsing)
|
|
420
|
-
analyzers/
|
|
415
|
+
analyzers/ 27 rule-based analyzers
|
|
421
416
|
context/ Repository scanner (ts-morph AST)
|
|
422
417
|
server/ Fastify MCP server (@modelcontextprotocol/sdk, Streamable HTTP)
|
|
423
418
|
cli/ CLI commands (Commander.js)
|
|
@@ -34,29 +34,6 @@ function writeCursorMcp(configAbsPath) {
|
|
|
34
34
|
fs.writeFileSync(path.join(dir, 'mcp.json'), JSON.stringify(entry, null, 2), 'utf-8');
|
|
35
35
|
log.success('Cursor config written', '.cursor/mcp.json');
|
|
36
36
|
}
|
|
37
|
-
function writeWindsurfMcp(configAbsPath) {
|
|
38
|
-
const windsurfDir = path.join(process.env.HOME ?? '', '.codeium', 'windsurf');
|
|
39
|
-
if (!fs.existsSync(windsurfDir))
|
|
40
|
-
fs.mkdirSync(windsurfDir, { recursive: true });
|
|
41
|
-
const mcpConfigPath = path.join(windsurfDir, 'mcp_config.json');
|
|
42
|
-
let existing = {};
|
|
43
|
-
if (fs.existsSync(mcpConfigPath)) {
|
|
44
|
-
try {
|
|
45
|
-
existing = JSON.parse(fs.readFileSync(mcpConfigPath, 'utf-8'));
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
// corrupt file — overwrite cleanly
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const servers = existing.mcpServers ?? {};
|
|
52
|
-
servers['infrawise'] = {
|
|
53
|
-
command: 'infrawise',
|
|
54
|
-
args: ['stdio', '--config', configAbsPath],
|
|
55
|
-
};
|
|
56
|
-
existing.mcpServers = servers;
|
|
57
|
-
fs.writeFileSync(mcpConfigPath, JSON.stringify(existing, null, 2), 'utf-8');
|
|
58
|
-
log.success('Windsurf config written', mcpConfigPath);
|
|
59
|
-
}
|
|
60
37
|
function launchEditor(editor) {
|
|
61
38
|
return new Promise((resolve) => {
|
|
62
39
|
if (editor === 'claude') {
|
|
@@ -77,7 +54,7 @@ function launchEditor(editor) {
|
|
|
77
54
|
const cmd = editor;
|
|
78
55
|
const args = ['.'];
|
|
79
56
|
console.log('');
|
|
80
|
-
console.log(chalk.dim(
|
|
57
|
+
console.log(chalk.dim(' Opening Cursor...'));
|
|
81
58
|
const child = spawn(cmd, args, { detached: true, stdio: 'ignore' });
|
|
82
59
|
child.on('error', (err) => {
|
|
83
60
|
if (err.code === 'ENOENT') {
|
|
@@ -128,23 +105,14 @@ export async function runStart(options = {}) {
|
|
|
128
105
|
writeMcpJson(configAbsPath);
|
|
129
106
|
if (options.cursor)
|
|
130
107
|
writeCursorMcp(configAbsPath);
|
|
131
|
-
if (options.windsurf)
|
|
132
|
-
writeWindsurfMcp(configAbsPath);
|
|
133
108
|
// Step 4 — launch editor or print instructions
|
|
134
|
-
const editor = options.claude
|
|
135
|
-
? 'claude'
|
|
136
|
-
: options.cursor
|
|
137
|
-
? 'cursor'
|
|
138
|
-
: options.windsurf
|
|
139
|
-
? 'windsurf'
|
|
140
|
-
: null;
|
|
109
|
+
const editor = options.claude ? 'claude' : options.cursor ? 'cursor' : null;
|
|
141
110
|
if (!editor) {
|
|
142
111
|
console.log('');
|
|
143
112
|
console.log(chalk.bold(' Setup complete — open your editor to start.'));
|
|
144
113
|
console.log('');
|
|
145
114
|
console.log(chalk.dim(' Claude Code: claude'));
|
|
146
115
|
console.log(chalk.dim(' Cursor: cursor .'));
|
|
147
|
-
console.log(chalk.dim(' Windsurf: windsurf .'));
|
|
148
116
|
console.log('');
|
|
149
117
|
console.log(chalk.dim(' Next time just open your editor — no infrawise command needed.'));
|
|
150
118
|
console.log('');
|
package/dist/cli/index.js
CHANGED
|
@@ -22,14 +22,12 @@ program
|
|
|
22
22
|
.option('-c, --config <path>', 'Path to infrawise.yaml', 'infrawise.yaml')
|
|
23
23
|
.option('--claude', 'Write .mcp.json and open Claude Code')
|
|
24
24
|
.option('--cursor', 'Write .cursor/mcp.json and open Cursor')
|
|
25
|
-
.option('--windsurf', 'Write Windsurf MCP config and open Windsurf')
|
|
26
25
|
.action(async (options) => {
|
|
27
26
|
printBanner();
|
|
28
27
|
await runStart({
|
|
29
28
|
config: options.config !== 'infrawise.yaml' ? options.config : undefined,
|
|
30
29
|
claude: options.claude,
|
|
31
30
|
cursor: options.cursor,
|
|
32
|
-
windsurf: options.windsurf,
|
|
33
31
|
});
|
|
34
32
|
});
|
|
35
33
|
program
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "infrawise",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.3",
|
|
4
4
|
"mcpName": "io.github.Sidd27/infrawise",
|
|
5
5
|
"description": "CLI-first infrastructure intelligence platform — analyzes DynamoDB, PostgreSQL, MySQL, MongoDB, SQS, SNS, SSM, Secrets Manager, Lambda, S3, CloudWatch Logs and exposes findings as an MCP server for Claude Code",
|
|
6
6
|
"keywords": [
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"agentskills": {
|
|
38
38
|
"infrawise": "./AGENTS.md"
|
|
39
39
|
},
|
|
40
|
-
"homepage": "https://github.
|
|
40
|
+
"homepage": "https://sidd27.github.io/infrawise/",
|
|
41
41
|
"repository": {
|
|
42
42
|
"type": "git",
|
|
43
43
|
"url": "git+https://github.com/Sidd27/infrawise.git"
|
|
@@ -60,7 +60,9 @@
|
|
|
60
60
|
"lint": "eslint src",
|
|
61
61
|
"typecheck": "tsc",
|
|
62
62
|
"format": "prettier --write src",
|
|
63
|
-
"
|
|
63
|
+
"build-arch": "node scripts/build-arch.mjs",
|
|
64
|
+
"generate-diagrams": "node scripts/build-arch.mjs",
|
|
65
|
+
"record": "bash docs/demo/record.sh",
|
|
64
66
|
"dev": "node dist/cli/index.js dev",
|
|
65
67
|
"release": "node scripts/release.js",
|
|
66
68
|
"prepare": "simple-git-hooks"
|
|
@@ -105,6 +107,7 @@
|
|
|
105
107
|
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
|
106
108
|
"@typescript-eslint/parser": "^8.59.3",
|
|
107
109
|
"@vitest/coverage-v8": "^4.1.6",
|
|
110
|
+
"@xmldom/xmldom": "^0.9.10",
|
|
108
111
|
"eslint": "^10.4.0",
|
|
109
112
|
"prettier": "^3.8.3",
|
|
110
113
|
"simple-git-hooks": "^2.13.1",
|
|
@@ -121,7 +124,8 @@
|
|
|
121
124
|
},
|
|
122
125
|
"pnpm": {
|
|
123
126
|
"overrides": {
|
|
124
|
-
"qs": ">=6.15.2"
|
|
127
|
+
"qs": ">=6.15.2",
|
|
128
|
+
"vite": "^7"
|
|
125
129
|
},
|
|
126
130
|
"allowedBuildScripts": [
|
|
127
131
|
"puppeteer",
|