envibe 0.2.0 → 0.2.2
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/cli/index.js +48 -102
- package/dist/index.js +38 -92
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -15545,7 +15545,7 @@ function serializeManifest(manifest) {
|
|
|
15545
15545
|
version: manifest.version,
|
|
15546
15546
|
variables: manifest.variables
|
|
15547
15547
|
});
|
|
15548
|
-
const header = `#
|
|
15548
|
+
const header = `# envibe manifest - AI access control for environment variables
|
|
15549
15549
|
# Access levels:
|
|
15550
15550
|
# full - AI can see and modify the value
|
|
15551
15551
|
# read-only - AI can see but not modify
|
|
@@ -15588,245 +15588,193 @@ var CLASSIFICATION_PATTERNS = [
|
|
|
15588
15588
|
name: "stripe-secret",
|
|
15589
15589
|
pattern: /^STRIPE_SECRET/i,
|
|
15590
15590
|
suggestedAccess: "hidden" /* HIDDEN */,
|
|
15591
|
-
description: "Stripe secret key"
|
|
15592
|
-
format: "key",
|
|
15593
|
-
example: "sk_live_..."
|
|
15591
|
+
description: "Stripe secret key"
|
|
15594
15592
|
},
|
|
15595
15593
|
{
|
|
15596
15594
|
name: "private-key",
|
|
15597
15595
|
pattern: /PRIVATE[_-]?KEY/i,
|
|
15598
15596
|
suggestedAccess: "hidden" /* HIDDEN */,
|
|
15599
|
-
description: "Private key material"
|
|
15600
|
-
format: "pem",
|
|
15601
|
-
example: "-----BEGIN PRIVATE KEY-----..."
|
|
15597
|
+
description: "Private key material"
|
|
15602
15598
|
},
|
|
15603
15599
|
{
|
|
15604
15600
|
name: "signing-secret",
|
|
15605
15601
|
pattern: /SIGNING[_-]?SECRET/i,
|
|
15606
15602
|
suggestedAccess: "hidden" /* HIDDEN */,
|
|
15607
|
-
description: "Signing secret"
|
|
15608
|
-
format: "key"
|
|
15603
|
+
description: "Signing secret"
|
|
15609
15604
|
},
|
|
15610
15605
|
{
|
|
15611
15606
|
name: "api-key",
|
|
15612
15607
|
pattern: /API[_-]?KEY/i,
|
|
15613
15608
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15614
|
-
description: "API key"
|
|
15615
|
-
format: "key",
|
|
15616
|
-
example: "sk-..."
|
|
15609
|
+
description: "API key"
|
|
15617
15610
|
},
|
|
15618
15611
|
{
|
|
15619
15612
|
name: "secret-key",
|
|
15620
15613
|
pattern: /SECRET[_-]?KEY/i,
|
|
15621
15614
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15622
|
-
description: "Secret key"
|
|
15623
|
-
format: "key"
|
|
15615
|
+
description: "Secret key"
|
|
15624
15616
|
},
|
|
15625
15617
|
{
|
|
15626
15618
|
name: "access-key",
|
|
15627
15619
|
pattern: /ACCESS[_-]?KEY/i,
|
|
15628
15620
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15629
|
-
description: "Access key"
|
|
15630
|
-
format: "key",
|
|
15631
|
-
example: "AKIA..."
|
|
15621
|
+
description: "Access key"
|
|
15632
15622
|
},
|
|
15633
15623
|
{
|
|
15634
15624
|
name: "auth-token",
|
|
15635
15625
|
pattern: /AUTH[_-]?TOKEN/i,
|
|
15636
15626
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15637
|
-
description: "Authentication token"
|
|
15638
|
-
format: "token"
|
|
15627
|
+
description: "Authentication token"
|
|
15639
15628
|
},
|
|
15640
15629
|
{
|
|
15641
15630
|
name: "bearer-token",
|
|
15642
15631
|
pattern: /BEARER[_-]?TOKEN/i,
|
|
15643
15632
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15644
|
-
description: "Bearer token"
|
|
15645
|
-
format: "token"
|
|
15633
|
+
description: "Bearer token"
|
|
15646
15634
|
},
|
|
15647
15635
|
{
|
|
15648
15636
|
name: "jwt-secret",
|
|
15649
15637
|
pattern: /JWT[_-]?SECRET/i,
|
|
15650
15638
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15651
|
-
description: "JWT signing secret"
|
|
15652
|
-
format: "key"
|
|
15639
|
+
description: "JWT signing secret"
|
|
15653
15640
|
},
|
|
15654
15641
|
{
|
|
15655
15642
|
name: "password",
|
|
15656
15643
|
pattern: /PASSWORD/i,
|
|
15657
15644
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15658
|
-
description: "Password credential"
|
|
15659
|
-
format: "password"
|
|
15645
|
+
description: "Password credential"
|
|
15660
15646
|
},
|
|
15661
15647
|
{
|
|
15662
15648
|
name: "credential",
|
|
15663
15649
|
pattern: /CREDENTIAL/i,
|
|
15664
15650
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15665
|
-
description: "Credential"
|
|
15666
|
-
format: "key"
|
|
15651
|
+
description: "Credential"
|
|
15667
15652
|
},
|
|
15668
15653
|
{
|
|
15669
15654
|
name: "secret",
|
|
15670
15655
|
pattern: /SECRET/i,
|
|
15671
15656
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15672
|
-
description: "Secret value"
|
|
15673
|
-
format: "key"
|
|
15657
|
+
description: "Secret value"
|
|
15674
15658
|
},
|
|
15675
15659
|
{
|
|
15676
15660
|
name: "token",
|
|
15677
15661
|
pattern: /TOKEN$/i,
|
|
15678
15662
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15679
|
-
description: "Token"
|
|
15680
|
-
format: "token"
|
|
15663
|
+
description: "Token"
|
|
15681
15664
|
},
|
|
15682
15665
|
{
|
|
15683
15666
|
name: "database-url",
|
|
15684
15667
|
pattern: /DATABASE[_-]?URL/i,
|
|
15685
15668
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15686
|
-
description: "Database connection URL (may contain password)"
|
|
15687
|
-
format: "url",
|
|
15688
|
-
example: "postgres://user:pass@localhost:5432/dbname"
|
|
15669
|
+
description: "Database connection URL (may contain password)"
|
|
15689
15670
|
},
|
|
15690
15671
|
{
|
|
15691
15672
|
name: "redis-url",
|
|
15692
15673
|
pattern: /REDIS[_-]?URL/i,
|
|
15693
15674
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15694
|
-
description: "Redis connection URL (may contain password)"
|
|
15695
|
-
format: "url",
|
|
15696
|
-
example: "redis://user:pass@localhost:6379/0"
|
|
15675
|
+
description: "Redis connection URL (may contain password)"
|
|
15697
15676
|
},
|
|
15698
15677
|
{
|
|
15699
15678
|
name: "mongodb-uri",
|
|
15700
15679
|
pattern: /MONGO(DB)?[_-]?URI/i,
|
|
15701
15680
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15702
|
-
description: "MongoDB connection URI (may contain password)"
|
|
15703
|
-
format: "url",
|
|
15704
|
-
example: "mongodb://user:pass@localhost:27017/dbname"
|
|
15681
|
+
description: "MongoDB connection URI (may contain password)"
|
|
15705
15682
|
},
|
|
15706
15683
|
{
|
|
15707
15684
|
name: "connection-string",
|
|
15708
15685
|
pattern: /CONNECTION[_-]?STRING/i,
|
|
15709
15686
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
15710
|
-
description: "Connection string (may contain password)"
|
|
15711
|
-
format: "url"
|
|
15687
|
+
description: "Connection string (may contain password)"
|
|
15712
15688
|
},
|
|
15713
15689
|
{
|
|
15714
15690
|
name: "url-suffix",
|
|
15715
15691
|
pattern: /_URL$/i,
|
|
15716
15692
|
suggestedAccess: "read-only" /* READ_ONLY */,
|
|
15717
|
-
description: "URL endpoint"
|
|
15718
|
-
format: "url",
|
|
15719
|
-
example: "https://api.example.com"
|
|
15693
|
+
description: "URL endpoint"
|
|
15720
15694
|
},
|
|
15721
15695
|
{
|
|
15722
15696
|
name: "uri-suffix",
|
|
15723
15697
|
pattern: /_URI$/i,
|
|
15724
15698
|
suggestedAccess: "read-only" /* READ_ONLY */,
|
|
15725
|
-
description: "URI endpoint"
|
|
15726
|
-
format: "url"
|
|
15699
|
+
description: "URI endpoint"
|
|
15727
15700
|
},
|
|
15728
15701
|
{
|
|
15729
15702
|
name: "host",
|
|
15730
15703
|
pattern: /_HOST$/i,
|
|
15731
15704
|
suggestedAccess: "read-only" /* READ_ONLY */,
|
|
15732
|
-
description: "Host address"
|
|
15733
|
-
format: "hostname",
|
|
15734
|
-
example: "localhost"
|
|
15705
|
+
description: "Host address"
|
|
15735
15706
|
},
|
|
15736
15707
|
{
|
|
15737
15708
|
name: "node-env",
|
|
15738
15709
|
pattern: /^NODE_ENV$/i,
|
|
15739
15710
|
suggestedAccess: "full" /* FULL */,
|
|
15740
|
-
description: "Node.js environment mode"
|
|
15741
|
-
format: "enum",
|
|
15742
|
-
example: "development | production | test"
|
|
15711
|
+
description: "Node.js environment mode"
|
|
15743
15712
|
},
|
|
15744
15713
|
{
|
|
15745
15714
|
name: "env-suffix",
|
|
15746
15715
|
pattern: /_ENV$/i,
|
|
15747
15716
|
suggestedAccess: "full" /* FULL */,
|
|
15748
|
-
description: "Environment setting"
|
|
15749
|
-
format: "string"
|
|
15717
|
+
description: "Environment setting"
|
|
15750
15718
|
},
|
|
15751
15719
|
{
|
|
15752
15720
|
name: "debug",
|
|
15753
15721
|
pattern: /DEBUG/i,
|
|
15754
15722
|
suggestedAccess: "full" /* FULL */,
|
|
15755
|
-
description: "Debug flag"
|
|
15756
|
-
format: "boolean",
|
|
15757
|
-
example: "true | false"
|
|
15723
|
+
description: "Debug flag"
|
|
15758
15724
|
},
|
|
15759
15725
|
{
|
|
15760
15726
|
name: "log-level",
|
|
15761
15727
|
pattern: /LOG[_-]?LEVEL/i,
|
|
15762
15728
|
suggestedAccess: "full" /* FULL */,
|
|
15763
|
-
description: "Logging level"
|
|
15764
|
-
format: "enum",
|
|
15765
|
-
example: "debug | info | warn | error"
|
|
15729
|
+
description: "Logging level"
|
|
15766
15730
|
},
|
|
15767
15731
|
{
|
|
15768
15732
|
name: "port",
|
|
15769
15733
|
pattern: /^PORT$/i,
|
|
15770
15734
|
suggestedAccess: "full" /* FULL */,
|
|
15771
|
-
description: "Server port"
|
|
15772
|
-
format: "number",
|
|
15773
|
-
example: "3000"
|
|
15735
|
+
description: "Server port"
|
|
15774
15736
|
},
|
|
15775
15737
|
{
|
|
15776
15738
|
name: "port-suffix",
|
|
15777
15739
|
pattern: /_PORT$/i,
|
|
15778
15740
|
suggestedAccess: "full" /* FULL */,
|
|
15779
|
-
description: "Port number"
|
|
15780
|
-
format: "number",
|
|
15781
|
-
example: "5432"
|
|
15741
|
+
description: "Port number"
|
|
15782
15742
|
},
|
|
15783
15743
|
{
|
|
15784
15744
|
name: "timeout",
|
|
15785
15745
|
pattern: /TIMEOUT/i,
|
|
15786
15746
|
suggestedAccess: "full" /* FULL */,
|
|
15787
|
-
description: "Timeout setting"
|
|
15788
|
-
format: "number",
|
|
15789
|
-
example: "30000"
|
|
15747
|
+
description: "Timeout setting"
|
|
15790
15748
|
},
|
|
15791
15749
|
{
|
|
15792
15750
|
name: "max-size",
|
|
15793
15751
|
pattern: /MAX[_-]?(SIZE|LENGTH|COUNT)/i,
|
|
15794
15752
|
suggestedAccess: "full" /* FULL */,
|
|
15795
|
-
description: "Size/count limit"
|
|
15796
|
-
format: "number",
|
|
15797
|
-
example: "100"
|
|
15753
|
+
description: "Size/count limit"
|
|
15798
15754
|
},
|
|
15799
15755
|
{
|
|
15800
15756
|
name: "enable-disable",
|
|
15801
15757
|
pattern: /(ENABLE|DISABLE)[_-]/i,
|
|
15802
15758
|
suggestedAccess: "full" /* FULL */,
|
|
15803
|
-
description: "Feature flag"
|
|
15804
|
-
format: "boolean",
|
|
15805
|
-
example: "true | false"
|
|
15759
|
+
description: "Feature flag"
|
|
15806
15760
|
},
|
|
15807
15761
|
{
|
|
15808
15762
|
name: "feature-flag",
|
|
15809
15763
|
pattern: /FEATURE[_-]/i,
|
|
15810
15764
|
suggestedAccess: "full" /* FULL */,
|
|
15811
|
-
description: "Feature flag"
|
|
15812
|
-
format: "boolean",
|
|
15813
|
-
example: "true | false"
|
|
15765
|
+
description: "Feature flag"
|
|
15814
15766
|
},
|
|
15815
15767
|
{
|
|
15816
15768
|
name: "region",
|
|
15817
15769
|
pattern: /_REGION$/i,
|
|
15818
15770
|
suggestedAccess: "full" /* FULL */,
|
|
15819
|
-
description: "Cloud region"
|
|
15820
|
-
format: "string",
|
|
15821
|
-
example: "us-east-1"
|
|
15771
|
+
description: "Cloud region"
|
|
15822
15772
|
},
|
|
15823
15773
|
{
|
|
15824
15774
|
name: "version",
|
|
15825
15775
|
pattern: /_VERSION$/i,
|
|
15826
15776
|
suggestedAccess: "full" /* FULL */,
|
|
15827
|
-
description: "Version number"
|
|
15828
|
-
format: "string",
|
|
15829
|
-
example: "1.0.0"
|
|
15777
|
+
description: "Version number"
|
|
15830
15778
|
}
|
|
15831
15779
|
];
|
|
15832
15780
|
function classifyVariable(name) {
|
|
@@ -15834,9 +15782,7 @@ function classifyVariable(name) {
|
|
|
15834
15782
|
if (pattern.pattern.test(name)) {
|
|
15835
15783
|
return {
|
|
15836
15784
|
access: pattern.suggestedAccess,
|
|
15837
|
-
description: pattern.description
|
|
15838
|
-
format: pattern.format,
|
|
15839
|
-
example: pattern.example
|
|
15785
|
+
description: pattern.description
|
|
15840
15786
|
};
|
|
15841
15787
|
}
|
|
15842
15788
|
}
|
|
@@ -15920,9 +15866,9 @@ function filterForAI(env, manifest) {
|
|
|
15920
15866
|
}
|
|
15921
15867
|
function generateAIEnvContent(variables) {
|
|
15922
15868
|
const lines = [
|
|
15923
|
-
"# Generated by
|
|
15869
|
+
"# Generated by envibe - AI-safe view of environment variables",
|
|
15924
15870
|
"# See .env.manifest.yaml for access rules",
|
|
15925
|
-
"# DO NOT EDIT - regenerate with:
|
|
15871
|
+
"# DO NOT EDIT - regenerate with: envibe generate",
|
|
15926
15872
|
""
|
|
15927
15873
|
];
|
|
15928
15874
|
for (const variable of variables) {
|
|
@@ -16113,8 +16059,8 @@ Created ${manifestPath}`);
|
|
|
16113
16059
|
console.log(`
|
|
16114
16060
|
Next steps:`);
|
|
16115
16061
|
console.log(` 1. Review and adjust access levels in ${manifestPath}`);
|
|
16116
|
-
console.log(" 2. Run:
|
|
16117
|
-
console.log(" 3. Run:
|
|
16062
|
+
console.log(" 2. Run: envibe generate");
|
|
16063
|
+
console.log(" 3. Run: envibe setup (to configure Claude Code)");
|
|
16118
16064
|
});
|
|
16119
16065
|
|
|
16120
16066
|
// src/cli/commands/generate.ts
|
|
@@ -16141,7 +16087,7 @@ Access level summary:`);
|
|
|
16141
16087
|
}
|
|
16142
16088
|
} catch (error) {
|
|
16143
16089
|
if (error instanceof Error && error.message.includes("not found")) {
|
|
16144
|
-
console.error("Error: No manifest found. Run '
|
|
16090
|
+
console.error("Error: No manifest found. Run 'envibe init' first.");
|
|
16145
16091
|
process.exit(1);
|
|
16146
16092
|
}
|
|
16147
16093
|
throw error;
|
|
@@ -16205,7 +16151,7 @@ var viewCommand = new Command("view").description("Display environment variables
|
|
|
16205
16151
|
}
|
|
16206
16152
|
} catch (error) {
|
|
16207
16153
|
if (error instanceof Error && error.message.includes("not found")) {
|
|
16208
|
-
console.error("Error: No manifest found. Run '
|
|
16154
|
+
console.error("Error: No manifest found. Run 'envibe init' first.");
|
|
16209
16155
|
process.exit(1);
|
|
16210
16156
|
}
|
|
16211
16157
|
throw error;
|
|
@@ -16247,7 +16193,7 @@ To bypass access control, use --force (not recommended)`);
|
|
|
16247
16193
|
}
|
|
16248
16194
|
} catch (error) {
|
|
16249
16195
|
if (error instanceof Error && error.message.includes("not found")) {
|
|
16250
|
-
console.error("Error: No manifest found. Run '
|
|
16196
|
+
console.error("Error: No manifest found. Run 'envibe init' first.");
|
|
16251
16197
|
process.exit(1);
|
|
16252
16198
|
}
|
|
16253
16199
|
throw error;
|
|
@@ -16322,7 +16268,7 @@ Summary: ${errors2.length} errors, ${warnings.length} warnings`);
|
|
|
16322
16268
|
}
|
|
16323
16269
|
} catch (error) {
|
|
16324
16270
|
if (error instanceof Error && error.message.includes("not found")) {
|
|
16325
|
-
console.error("Error: No manifest found. Run '
|
|
16271
|
+
console.error("Error: No manifest found. Run 'envibe init' first.");
|
|
16326
16272
|
process.exit(1);
|
|
16327
16273
|
}
|
|
16328
16274
|
throw error;
|
|
@@ -16478,7 +16424,7 @@ var EXAMPLE_FILES = [
|
|
|
16478
16424
|
".env.development.example"
|
|
16479
16425
|
];
|
|
16480
16426
|
var GITIGNORE_PATTERNS = [
|
|
16481
|
-
"#
|
|
16427
|
+
"# envibe - environment files with secrets",
|
|
16482
16428
|
".env",
|
|
16483
16429
|
".env.local",
|
|
16484
16430
|
".env.development",
|
|
@@ -16488,7 +16434,7 @@ var GITIGNORE_PATTERNS = [
|
|
|
16488
16434
|
".env.secrets",
|
|
16489
16435
|
".env.keys",
|
|
16490
16436
|
"",
|
|
16491
|
-
"#
|
|
16437
|
+
"# envibe - generated AI-safe view (regenerated)",
|
|
16492
16438
|
".env.ai"
|
|
16493
16439
|
];
|
|
16494
16440
|
var FALLBACK_MANIFEST = {
|
|
@@ -16573,7 +16519,7 @@ async function classifyVariablesInteractive(varNames) {
|
|
|
16573
16519
|
return result;
|
|
16574
16520
|
}
|
|
16575
16521
|
var setupCommand = new Command("setup").description("Full setup: init manifest, generate .env.ai, configure Claude Code").option("-i, --interactive", "Interactively configure access levels for each variable").option("--skip-claude", "Skip Claude Code settings configuration").option("--skip-gitignore", "Skip .gitignore configuration").action(async (options) => {
|
|
16576
|
-
console.log(`Setting up
|
|
16522
|
+
console.log(`Setting up envibe...
|
|
16577
16523
|
`);
|
|
16578
16524
|
const manifestPath = getManifestFilename();
|
|
16579
16525
|
const manifestFile = Bun.file(manifestPath);
|
|
@@ -16640,7 +16586,7 @@ var setupCommand = new Command("setup").description("Full setup: init manifest,
|
|
|
16640
16586
|
Setup complete! Next steps:`);
|
|
16641
16587
|
console.log(" 1. Review .env.manifest.yaml and adjust access levels");
|
|
16642
16588
|
console.log(" 2. Create .env with your actual secrets (it's gitignored)");
|
|
16643
|
-
console.log(" 3. Run '
|
|
16589
|
+
console.log(" 3. Run 'envibe generate' to update .env.ai");
|
|
16644
16590
|
console.log(" 4. AI will read .env.ai and use MCP tools (secrets protected)");
|
|
16645
16591
|
});
|
|
16646
16592
|
async function configureGitignore() {
|
|
@@ -23001,8 +22947,8 @@ async function ensureSetup() {
|
|
|
23001
22947
|
}
|
|
23002
22948
|
async function startMCPServer() {
|
|
23003
22949
|
const server = new Server({
|
|
23004
|
-
name: "
|
|
23005
|
-
version: "0.
|
|
22950
|
+
name: "envibe",
|
|
22951
|
+
version: "0.2.2"
|
|
23006
22952
|
}, {
|
|
23007
22953
|
capabilities: {
|
|
23008
22954
|
tools: {},
|
package/dist/index.js
CHANGED
|
@@ -13494,7 +13494,7 @@ function serializeManifest(manifest) {
|
|
|
13494
13494
|
version: manifest.version,
|
|
13495
13495
|
variables: manifest.variables
|
|
13496
13496
|
});
|
|
13497
|
-
const header = `#
|
|
13497
|
+
const header = `# envibe manifest - AI access control for environment variables
|
|
13498
13498
|
# Access levels:
|
|
13499
13499
|
# full - AI can see and modify the value
|
|
13500
13500
|
# read-only - AI can see but not modify
|
|
@@ -13549,245 +13549,193 @@ var CLASSIFICATION_PATTERNS = [
|
|
|
13549
13549
|
name: "stripe-secret",
|
|
13550
13550
|
pattern: /^STRIPE_SECRET/i,
|
|
13551
13551
|
suggestedAccess: "hidden" /* HIDDEN */,
|
|
13552
|
-
description: "Stripe secret key"
|
|
13553
|
-
format: "key",
|
|
13554
|
-
example: "sk_live_..."
|
|
13552
|
+
description: "Stripe secret key"
|
|
13555
13553
|
},
|
|
13556
13554
|
{
|
|
13557
13555
|
name: "private-key",
|
|
13558
13556
|
pattern: /PRIVATE[_-]?KEY/i,
|
|
13559
13557
|
suggestedAccess: "hidden" /* HIDDEN */,
|
|
13560
|
-
description: "Private key material"
|
|
13561
|
-
format: "pem",
|
|
13562
|
-
example: "-----BEGIN PRIVATE KEY-----..."
|
|
13558
|
+
description: "Private key material"
|
|
13563
13559
|
},
|
|
13564
13560
|
{
|
|
13565
13561
|
name: "signing-secret",
|
|
13566
13562
|
pattern: /SIGNING[_-]?SECRET/i,
|
|
13567
13563
|
suggestedAccess: "hidden" /* HIDDEN */,
|
|
13568
|
-
description: "Signing secret"
|
|
13569
|
-
format: "key"
|
|
13564
|
+
description: "Signing secret"
|
|
13570
13565
|
},
|
|
13571
13566
|
{
|
|
13572
13567
|
name: "api-key",
|
|
13573
13568
|
pattern: /API[_-]?KEY/i,
|
|
13574
13569
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13575
|
-
description: "API key"
|
|
13576
|
-
format: "key",
|
|
13577
|
-
example: "sk-..."
|
|
13570
|
+
description: "API key"
|
|
13578
13571
|
},
|
|
13579
13572
|
{
|
|
13580
13573
|
name: "secret-key",
|
|
13581
13574
|
pattern: /SECRET[_-]?KEY/i,
|
|
13582
13575
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13583
|
-
description: "Secret key"
|
|
13584
|
-
format: "key"
|
|
13576
|
+
description: "Secret key"
|
|
13585
13577
|
},
|
|
13586
13578
|
{
|
|
13587
13579
|
name: "access-key",
|
|
13588
13580
|
pattern: /ACCESS[_-]?KEY/i,
|
|
13589
13581
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13590
|
-
description: "Access key"
|
|
13591
|
-
format: "key",
|
|
13592
|
-
example: "AKIA..."
|
|
13582
|
+
description: "Access key"
|
|
13593
13583
|
},
|
|
13594
13584
|
{
|
|
13595
13585
|
name: "auth-token",
|
|
13596
13586
|
pattern: /AUTH[_-]?TOKEN/i,
|
|
13597
13587
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13598
|
-
description: "Authentication token"
|
|
13599
|
-
format: "token"
|
|
13588
|
+
description: "Authentication token"
|
|
13600
13589
|
},
|
|
13601
13590
|
{
|
|
13602
13591
|
name: "bearer-token",
|
|
13603
13592
|
pattern: /BEARER[_-]?TOKEN/i,
|
|
13604
13593
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13605
|
-
description: "Bearer token"
|
|
13606
|
-
format: "token"
|
|
13594
|
+
description: "Bearer token"
|
|
13607
13595
|
},
|
|
13608
13596
|
{
|
|
13609
13597
|
name: "jwt-secret",
|
|
13610
13598
|
pattern: /JWT[_-]?SECRET/i,
|
|
13611
13599
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13612
|
-
description: "JWT signing secret"
|
|
13613
|
-
format: "key"
|
|
13600
|
+
description: "JWT signing secret"
|
|
13614
13601
|
},
|
|
13615
13602
|
{
|
|
13616
13603
|
name: "password",
|
|
13617
13604
|
pattern: /PASSWORD/i,
|
|
13618
13605
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13619
|
-
description: "Password credential"
|
|
13620
|
-
format: "password"
|
|
13606
|
+
description: "Password credential"
|
|
13621
13607
|
},
|
|
13622
13608
|
{
|
|
13623
13609
|
name: "credential",
|
|
13624
13610
|
pattern: /CREDENTIAL/i,
|
|
13625
13611
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13626
|
-
description: "Credential"
|
|
13627
|
-
format: "key"
|
|
13612
|
+
description: "Credential"
|
|
13628
13613
|
},
|
|
13629
13614
|
{
|
|
13630
13615
|
name: "secret",
|
|
13631
13616
|
pattern: /SECRET/i,
|
|
13632
13617
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13633
|
-
description: "Secret value"
|
|
13634
|
-
format: "key"
|
|
13618
|
+
description: "Secret value"
|
|
13635
13619
|
},
|
|
13636
13620
|
{
|
|
13637
13621
|
name: "token",
|
|
13638
13622
|
pattern: /TOKEN$/i,
|
|
13639
13623
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13640
|
-
description: "Token"
|
|
13641
|
-
format: "token"
|
|
13624
|
+
description: "Token"
|
|
13642
13625
|
},
|
|
13643
13626
|
{
|
|
13644
13627
|
name: "database-url",
|
|
13645
13628
|
pattern: /DATABASE[_-]?URL/i,
|
|
13646
13629
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13647
|
-
description: "Database connection URL (may contain password)"
|
|
13648
|
-
format: "url",
|
|
13649
|
-
example: "postgres://user:pass@localhost:5432/dbname"
|
|
13630
|
+
description: "Database connection URL (may contain password)"
|
|
13650
13631
|
},
|
|
13651
13632
|
{
|
|
13652
13633
|
name: "redis-url",
|
|
13653
13634
|
pattern: /REDIS[_-]?URL/i,
|
|
13654
13635
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13655
|
-
description: "Redis connection URL (may contain password)"
|
|
13656
|
-
format: "url",
|
|
13657
|
-
example: "redis://user:pass@localhost:6379/0"
|
|
13636
|
+
description: "Redis connection URL (may contain password)"
|
|
13658
13637
|
},
|
|
13659
13638
|
{
|
|
13660
13639
|
name: "mongodb-uri",
|
|
13661
13640
|
pattern: /MONGO(DB)?[_-]?URI/i,
|
|
13662
13641
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13663
|
-
description: "MongoDB connection URI (may contain password)"
|
|
13664
|
-
format: "url",
|
|
13665
|
-
example: "mongodb://user:pass@localhost:27017/dbname"
|
|
13642
|
+
description: "MongoDB connection URI (may contain password)"
|
|
13666
13643
|
},
|
|
13667
13644
|
{
|
|
13668
13645
|
name: "connection-string",
|
|
13669
13646
|
pattern: /CONNECTION[_-]?STRING/i,
|
|
13670
13647
|
suggestedAccess: "placeholder" /* PLACEHOLDER */,
|
|
13671
|
-
description: "Connection string (may contain password)"
|
|
13672
|
-
format: "url"
|
|
13648
|
+
description: "Connection string (may contain password)"
|
|
13673
13649
|
},
|
|
13674
13650
|
{
|
|
13675
13651
|
name: "url-suffix",
|
|
13676
13652
|
pattern: /_URL$/i,
|
|
13677
13653
|
suggestedAccess: "read-only" /* READ_ONLY */,
|
|
13678
|
-
description: "URL endpoint"
|
|
13679
|
-
format: "url",
|
|
13680
|
-
example: "https://api.example.com"
|
|
13654
|
+
description: "URL endpoint"
|
|
13681
13655
|
},
|
|
13682
13656
|
{
|
|
13683
13657
|
name: "uri-suffix",
|
|
13684
13658
|
pattern: /_URI$/i,
|
|
13685
13659
|
suggestedAccess: "read-only" /* READ_ONLY */,
|
|
13686
|
-
description: "URI endpoint"
|
|
13687
|
-
format: "url"
|
|
13660
|
+
description: "URI endpoint"
|
|
13688
13661
|
},
|
|
13689
13662
|
{
|
|
13690
13663
|
name: "host",
|
|
13691
13664
|
pattern: /_HOST$/i,
|
|
13692
13665
|
suggestedAccess: "read-only" /* READ_ONLY */,
|
|
13693
|
-
description: "Host address"
|
|
13694
|
-
format: "hostname",
|
|
13695
|
-
example: "localhost"
|
|
13666
|
+
description: "Host address"
|
|
13696
13667
|
},
|
|
13697
13668
|
{
|
|
13698
13669
|
name: "node-env",
|
|
13699
13670
|
pattern: /^NODE_ENV$/i,
|
|
13700
13671
|
suggestedAccess: "full" /* FULL */,
|
|
13701
|
-
description: "Node.js environment mode"
|
|
13702
|
-
format: "enum",
|
|
13703
|
-
example: "development | production | test"
|
|
13672
|
+
description: "Node.js environment mode"
|
|
13704
13673
|
},
|
|
13705
13674
|
{
|
|
13706
13675
|
name: "env-suffix",
|
|
13707
13676
|
pattern: /_ENV$/i,
|
|
13708
13677
|
suggestedAccess: "full" /* FULL */,
|
|
13709
|
-
description: "Environment setting"
|
|
13710
|
-
format: "string"
|
|
13678
|
+
description: "Environment setting"
|
|
13711
13679
|
},
|
|
13712
13680
|
{
|
|
13713
13681
|
name: "debug",
|
|
13714
13682
|
pattern: /DEBUG/i,
|
|
13715
13683
|
suggestedAccess: "full" /* FULL */,
|
|
13716
|
-
description: "Debug flag"
|
|
13717
|
-
format: "boolean",
|
|
13718
|
-
example: "true | false"
|
|
13684
|
+
description: "Debug flag"
|
|
13719
13685
|
},
|
|
13720
13686
|
{
|
|
13721
13687
|
name: "log-level",
|
|
13722
13688
|
pattern: /LOG[_-]?LEVEL/i,
|
|
13723
13689
|
suggestedAccess: "full" /* FULL */,
|
|
13724
|
-
description: "Logging level"
|
|
13725
|
-
format: "enum",
|
|
13726
|
-
example: "debug | info | warn | error"
|
|
13690
|
+
description: "Logging level"
|
|
13727
13691
|
},
|
|
13728
13692
|
{
|
|
13729
13693
|
name: "port",
|
|
13730
13694
|
pattern: /^PORT$/i,
|
|
13731
13695
|
suggestedAccess: "full" /* FULL */,
|
|
13732
|
-
description: "Server port"
|
|
13733
|
-
format: "number",
|
|
13734
|
-
example: "3000"
|
|
13696
|
+
description: "Server port"
|
|
13735
13697
|
},
|
|
13736
13698
|
{
|
|
13737
13699
|
name: "port-suffix",
|
|
13738
13700
|
pattern: /_PORT$/i,
|
|
13739
13701
|
suggestedAccess: "full" /* FULL */,
|
|
13740
|
-
description: "Port number"
|
|
13741
|
-
format: "number",
|
|
13742
|
-
example: "5432"
|
|
13702
|
+
description: "Port number"
|
|
13743
13703
|
},
|
|
13744
13704
|
{
|
|
13745
13705
|
name: "timeout",
|
|
13746
13706
|
pattern: /TIMEOUT/i,
|
|
13747
13707
|
suggestedAccess: "full" /* FULL */,
|
|
13748
|
-
description: "Timeout setting"
|
|
13749
|
-
format: "number",
|
|
13750
|
-
example: "30000"
|
|
13708
|
+
description: "Timeout setting"
|
|
13751
13709
|
},
|
|
13752
13710
|
{
|
|
13753
13711
|
name: "max-size",
|
|
13754
13712
|
pattern: /MAX[_-]?(SIZE|LENGTH|COUNT)/i,
|
|
13755
13713
|
suggestedAccess: "full" /* FULL */,
|
|
13756
|
-
description: "Size/count limit"
|
|
13757
|
-
format: "number",
|
|
13758
|
-
example: "100"
|
|
13714
|
+
description: "Size/count limit"
|
|
13759
13715
|
},
|
|
13760
13716
|
{
|
|
13761
13717
|
name: "enable-disable",
|
|
13762
13718
|
pattern: /(ENABLE|DISABLE)[_-]/i,
|
|
13763
13719
|
suggestedAccess: "full" /* FULL */,
|
|
13764
|
-
description: "Feature flag"
|
|
13765
|
-
format: "boolean",
|
|
13766
|
-
example: "true | false"
|
|
13720
|
+
description: "Feature flag"
|
|
13767
13721
|
},
|
|
13768
13722
|
{
|
|
13769
13723
|
name: "feature-flag",
|
|
13770
13724
|
pattern: /FEATURE[_-]/i,
|
|
13771
13725
|
suggestedAccess: "full" /* FULL */,
|
|
13772
|
-
description: "Feature flag"
|
|
13773
|
-
format: "boolean",
|
|
13774
|
-
example: "true | false"
|
|
13726
|
+
description: "Feature flag"
|
|
13775
13727
|
},
|
|
13776
13728
|
{
|
|
13777
13729
|
name: "region",
|
|
13778
13730
|
pattern: /_REGION$/i,
|
|
13779
13731
|
suggestedAccess: "full" /* FULL */,
|
|
13780
|
-
description: "Cloud region"
|
|
13781
|
-
format: "string",
|
|
13782
|
-
example: "us-east-1"
|
|
13732
|
+
description: "Cloud region"
|
|
13783
13733
|
},
|
|
13784
13734
|
{
|
|
13785
13735
|
name: "version",
|
|
13786
13736
|
pattern: /_VERSION$/i,
|
|
13787
13737
|
suggestedAccess: "full" /* FULL */,
|
|
13788
|
-
description: "Version number"
|
|
13789
|
-
format: "string",
|
|
13790
|
-
example: "1.0.0"
|
|
13738
|
+
description: "Version number"
|
|
13791
13739
|
}
|
|
13792
13740
|
];
|
|
13793
13741
|
function classifyVariable(name) {
|
|
@@ -13795,9 +13743,7 @@ function classifyVariable(name) {
|
|
|
13795
13743
|
if (pattern.pattern.test(name)) {
|
|
13796
13744
|
return {
|
|
13797
13745
|
access: pattern.suggestedAccess,
|
|
13798
|
-
description: pattern.description
|
|
13799
|
-
format: pattern.format,
|
|
13800
|
-
example: pattern.example
|
|
13746
|
+
description: pattern.description
|
|
13801
13747
|
};
|
|
13802
13748
|
}
|
|
13803
13749
|
}
|
|
@@ -13881,9 +13827,9 @@ function filterForAI(env, manifest) {
|
|
|
13881
13827
|
}
|
|
13882
13828
|
function generateAIEnvContent(variables) {
|
|
13883
13829
|
const lines = [
|
|
13884
|
-
"# Generated by
|
|
13830
|
+
"# Generated by envibe - AI-safe view of environment variables",
|
|
13885
13831
|
"# See .env.manifest.yaml for access rules",
|
|
13886
|
-
"# DO NOT EDIT - regenerate with:
|
|
13832
|
+
"# DO NOT EDIT - regenerate with: envibe generate",
|
|
13887
13833
|
""
|
|
13888
13834
|
];
|
|
13889
13835
|
for (const variable of variables) {
|
|
@@ -20510,8 +20456,8 @@ async function ensureSetup() {
|
|
|
20510
20456
|
}
|
|
20511
20457
|
async function startMCPServer() {
|
|
20512
20458
|
const server = new Server({
|
|
20513
|
-
name: "
|
|
20514
|
-
version: "0.
|
|
20459
|
+
name: "envibe",
|
|
20460
|
+
version: "0.2.2"
|
|
20515
20461
|
}, {
|
|
20516
20462
|
capabilities: {
|
|
20517
20463
|
tools: {},
|