opencode-varlock 0.0.1
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 +21 -0
- package/README.md +352 -0
- package/assets/permissions.json +156 -0
- package/assets/varlock.config.json +53 -0
- package/assets/varlock.schema.json +105 -0
- package/dist/config.d.ts +40 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +105 -0
- package/dist/config.js.map +1 -0
- package/dist/guard.d.ts +15 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +163 -0
- package/dist/guard.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +6 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +56 -0
- package/dist/plugin.js.map +1 -0
- package/dist/tools.d.ts +39 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +216 -0
- package/dist/tools.js.map +1 -0
- package/package.json +78 -0
package/dist/tools.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import { readFileSync, existsSync } from "fs";
|
|
3
|
+
import { resolve } from "path";
|
|
4
|
+
export function createLoadEnvTool(envConfig) {
|
|
5
|
+
const allowedRoot = resolve(envConfig.allowedRoot);
|
|
6
|
+
return tool({
|
|
7
|
+
description: [
|
|
8
|
+
"Load environment variables from a .env file into the running process.",
|
|
9
|
+
"Returns the names of variables that were set - never the values.",
|
|
10
|
+
"The agent can then write code that references process.env.VAR_NAME",
|
|
11
|
+
"without ever seeing the actual secret.",
|
|
12
|
+
].join(" "),
|
|
13
|
+
args: {
|
|
14
|
+
path: tool.schema
|
|
15
|
+
.string()
|
|
16
|
+
.optional()
|
|
17
|
+
.default(".env")
|
|
18
|
+
.describe("Relative or absolute path to the .env file"),
|
|
19
|
+
override: tool.schema
|
|
20
|
+
.boolean()
|
|
21
|
+
.optional()
|
|
22
|
+
.default(false)
|
|
23
|
+
.describe("Replace vars that already exist in the environment"),
|
|
24
|
+
prefix: tool.schema
|
|
25
|
+
.string()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("Only load vars whose name starts with this prefix"),
|
|
28
|
+
},
|
|
29
|
+
async execute(args) {
|
|
30
|
+
const envPath = resolve(args.path);
|
|
31
|
+
if (!envPath.startsWith(allowedRoot)) {
|
|
32
|
+
throw new Error(`[varlock] Path "${args.path}" resolves outside the allowed root. ` +
|
|
33
|
+
`Only .env files under "${allowedRoot}" are permitted.`);
|
|
34
|
+
}
|
|
35
|
+
if (!existsSync(envPath)) {
|
|
36
|
+
throw new Error(`[varlock] File not found: ${envPath}`);
|
|
37
|
+
}
|
|
38
|
+
const content = readFileSync(envPath, "utf-8");
|
|
39
|
+
const loaded = [];
|
|
40
|
+
const skipped = [];
|
|
41
|
+
for (const line of content.split("\n")) {
|
|
42
|
+
const trimmed = line.trim();
|
|
43
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
44
|
+
continue;
|
|
45
|
+
const eqIdx = trimmed.indexOf("=");
|
|
46
|
+
if (eqIdx === -1)
|
|
47
|
+
continue;
|
|
48
|
+
let keyPart = trimmed.slice(0, eqIdx).trim();
|
|
49
|
+
if (keyPart.startsWith("export ")) {
|
|
50
|
+
keyPart = keyPart.slice(7).trim();
|
|
51
|
+
}
|
|
52
|
+
if (args.prefix && !keyPart.startsWith(args.prefix))
|
|
53
|
+
continue;
|
|
54
|
+
let value = trimmed.slice(eqIdx + 1).trim();
|
|
55
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
56
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
57
|
+
value = value.slice(1, -1);
|
|
58
|
+
}
|
|
59
|
+
if (process.env[keyPart] && !args.override) {
|
|
60
|
+
skipped.push(keyPart);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
process.env[keyPart] = value;
|
|
64
|
+
loaded.push(keyPart);
|
|
65
|
+
}
|
|
66
|
+
return JSON.stringify({
|
|
67
|
+
status: "ok",
|
|
68
|
+
source: args.path,
|
|
69
|
+
loaded,
|
|
70
|
+
skipped,
|
|
71
|
+
message: `Loaded ${loaded.length} variable(s): ${loaded.join(", ") || "(none)"}` +
|
|
72
|
+
(skipped.length
|
|
73
|
+
? `. Skipped ${skipped.length} existing: ${skipped.join(", ")}`
|
|
74
|
+
: ""),
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
export function createLoadSecretsTool($, varlockConfig) {
|
|
80
|
+
const cmd = varlockConfig.command;
|
|
81
|
+
const defaultNs = varlockConfig.namespace;
|
|
82
|
+
return tool({
|
|
83
|
+
description: [
|
|
84
|
+
"Load secrets from Varlock into the running process environment.",
|
|
85
|
+
"Varlock retrieves secrets from the configured backend (pass, Azure Key Vault, etc.).",
|
|
86
|
+
"Returns only the names of loaded variables - never the values.",
|
|
87
|
+
].join(" "),
|
|
88
|
+
args: {
|
|
89
|
+
namespace: tool.schema
|
|
90
|
+
.string()
|
|
91
|
+
.optional()
|
|
92
|
+
.default(defaultNs)
|
|
93
|
+
.describe("Varlock namespace / path prefix to load from"),
|
|
94
|
+
keys: tool.schema
|
|
95
|
+
.array(tool.schema.string())
|
|
96
|
+
.optional()
|
|
97
|
+
.describe("Specific secret keys to load. If omitted, loads all keys in the namespace."),
|
|
98
|
+
override: tool.schema
|
|
99
|
+
.boolean()
|
|
100
|
+
.optional()
|
|
101
|
+
.default(false)
|
|
102
|
+
.describe("Replace vars that already exist in the environment"),
|
|
103
|
+
envPrefix: tool.schema
|
|
104
|
+
.string()
|
|
105
|
+
.optional()
|
|
106
|
+
.describe("Prefix to add to env var names, e.g. 'APP_' turns 'db_url' into 'APP_DB_URL'"),
|
|
107
|
+
},
|
|
108
|
+
async execute(args) {
|
|
109
|
+
const ns = args.namespace;
|
|
110
|
+
let keyList;
|
|
111
|
+
if (args.keys && args.keys.length > 0) {
|
|
112
|
+
keyList = args.keys;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
try {
|
|
116
|
+
const raw = await $ `${cmd} list ${ns}`.text();
|
|
117
|
+
keyList = raw
|
|
118
|
+
.trim()
|
|
119
|
+
.split("\n")
|
|
120
|
+
.filter((k) => k.length > 0);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
throw new Error(`[varlock] Failed to list keys in namespace "${ns}": ${err.message}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const loaded = [];
|
|
127
|
+
const failed = [];
|
|
128
|
+
const skipped = [];
|
|
129
|
+
for (const key of keyList) {
|
|
130
|
+
const envName = args.envPrefix
|
|
131
|
+
? `${args.envPrefix}${key.toUpperCase()}`
|
|
132
|
+
: key.toUpperCase();
|
|
133
|
+
if (process.env[envName] && !args.override) {
|
|
134
|
+
skipped.push(envName);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
const value = (await $ `${cmd} get ${ns}/${key}`.text()).trim();
|
|
139
|
+
if (value) {
|
|
140
|
+
process.env[envName] = value;
|
|
141
|
+
loaded.push(envName);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
failed.push(key);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const parts = [
|
|
149
|
+
`Loaded ${loaded.length} secret(s): ${loaded.join(", ") || "(none)"}`,
|
|
150
|
+
];
|
|
151
|
+
if (skipped.length) {
|
|
152
|
+
parts.push(`Skipped ${skipped.length} existing: ${skipped.join(", ")}`);
|
|
153
|
+
}
|
|
154
|
+
if (failed.length) {
|
|
155
|
+
parts.push(`Failed ${failed.length}: ${failed.join(", ")}`);
|
|
156
|
+
}
|
|
157
|
+
return JSON.stringify({
|
|
158
|
+
status: failed.length === keyList.length ? "error" : "ok",
|
|
159
|
+
source: `varlock/${ns}`,
|
|
160
|
+
loaded,
|
|
161
|
+
skipped,
|
|
162
|
+
failed,
|
|
163
|
+
message: parts.join(". "),
|
|
164
|
+
});
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
export function createSecretStatusTool($, varlockConfig) {
|
|
169
|
+
const cmd = varlockConfig.command;
|
|
170
|
+
const defaultNs = varlockConfig.namespace;
|
|
171
|
+
return tool({
|
|
172
|
+
description: [
|
|
173
|
+
"Check which secrets are available in Varlock and which are",
|
|
174
|
+
"currently loaded in the process environment.",
|
|
175
|
+
"Returns key names and loaded/unloaded status - never values.",
|
|
176
|
+
].join(" "),
|
|
177
|
+
args: {
|
|
178
|
+
namespace: tool.schema
|
|
179
|
+
.string()
|
|
180
|
+
.optional()
|
|
181
|
+
.default(defaultNs)
|
|
182
|
+
.describe("Varlock namespace to inspect"),
|
|
183
|
+
},
|
|
184
|
+
async execute(args) {
|
|
185
|
+
const ns = args.namespace;
|
|
186
|
+
let available;
|
|
187
|
+
try {
|
|
188
|
+
const raw = await $ `${cmd} list ${ns}`.text();
|
|
189
|
+
available = raw
|
|
190
|
+
.trim()
|
|
191
|
+
.split("\n")
|
|
192
|
+
.filter((k) => k.length > 0);
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
throw new Error(`[varlock] Cannot list namespace "${ns}": ${err.message}`);
|
|
196
|
+
}
|
|
197
|
+
const status = available.map((key) => {
|
|
198
|
+
const envName = key.toUpperCase();
|
|
199
|
+
return {
|
|
200
|
+
key,
|
|
201
|
+
envName,
|
|
202
|
+
loaded: envName in process.env,
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
const loadedCount = status.filter((s) => s.loaded).length;
|
|
206
|
+
return JSON.stringify({
|
|
207
|
+
namespace: ns,
|
|
208
|
+
total: available.length,
|
|
209
|
+
loaded: loadedCount,
|
|
210
|
+
unloaded: available.length - loadedCount,
|
|
211
|
+
keys: status,
|
|
212
|
+
});
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "opencode-varlock",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "OpenCode plugin for secret management via Varlock with configurable env guard protection",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./config": {
|
|
14
|
+
"types": "./dist/config.d.ts",
|
|
15
|
+
"default": "./dist/config.js"
|
|
16
|
+
},
|
|
17
|
+
"./guard": {
|
|
18
|
+
"types": "./dist/guard.d.ts",
|
|
19
|
+
"default": "./dist/guard.js"
|
|
20
|
+
},
|
|
21
|
+
"./tools": {
|
|
22
|
+
"types": "./dist/tools.d.ts",
|
|
23
|
+
"default": "./dist/tools.js"
|
|
24
|
+
},
|
|
25
|
+
"./plugin": {
|
|
26
|
+
"types": "./dist/plugin.d.ts",
|
|
27
|
+
"default": "./dist/plugin.js"
|
|
28
|
+
},
|
|
29
|
+
"./permissions": "./assets/permissions.json",
|
|
30
|
+
"./varlock.config.json": "./assets/varlock.config.json",
|
|
31
|
+
"./varlock.schema.json": "./assets/varlock.schema.json",
|
|
32
|
+
"./assets/permissions.json": "./assets/permissions.json",
|
|
33
|
+
"./assets/varlock.config.json": "./assets/varlock.config.json",
|
|
34
|
+
"./assets/varlock.schema.json": "./assets/varlock.schema.json"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist/",
|
|
38
|
+
"assets/",
|
|
39
|
+
"README.md",
|
|
40
|
+
"LICENSE"
|
|
41
|
+
],
|
|
42
|
+
"keywords": [
|
|
43
|
+
"opencode",
|
|
44
|
+
"opencode-ai",
|
|
45
|
+
"opencode-plugin",
|
|
46
|
+
"varlock",
|
|
47
|
+
"secrets",
|
|
48
|
+
"env",
|
|
49
|
+
"security",
|
|
50
|
+
"guard"
|
|
51
|
+
],
|
|
52
|
+
"homepage": "https://github.com/itlackey/opencode-varlock#readme",
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/itlackey/opencode-varlock/issues"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "tsc --project ./tsconfig.json",
|
|
58
|
+
"clean": "rm -rf ./dist",
|
|
59
|
+
"typecheck": "tsc --project ./tsconfig.json --noEmit",
|
|
60
|
+
"validate": "npm run typecheck && npm run build && npm pack --dry-run",
|
|
61
|
+
"prepublishOnly": "npm run clean && npm run validate"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
},
|
|
66
|
+
"dependencies": {
|
|
67
|
+
"@opencode-ai/plugin": "^1.2.20"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@types/node": "^22.13.10",
|
|
71
|
+
"typescript": "^5.9.3"
|
|
72
|
+
},
|
|
73
|
+
"license": "MPL-2.0",
|
|
74
|
+
"repository": {
|
|
75
|
+
"type": "git",
|
|
76
|
+
"url": "https://github.com/itlackey/opencode-varlock"
|
|
77
|
+
}
|
|
78
|
+
}
|