opencode-1password-auth 1.0.8 → 1.0.9
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.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +388 -0
- package/dist/index.js.map +1 -0
- package/package.json +26 -4
- package/index.ts +0 -453
- package/setup.ps1 +0 -636
- package/setup.sh +0 -646
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA0ClD,eAAO,MAAM,qBAAqB,EAAE,MA2ZnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
import * as sdk from "@1password/sdk";
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
// Debug logging to file
|
|
5
|
+
const debugLog = (message) => {
|
|
6
|
+
const timestamp = new Date().toISOString();
|
|
7
|
+
const logMessage = `[${timestamp}] 1Password: ${message}\n`;
|
|
8
|
+
console.log(logMessage.trim());
|
|
9
|
+
try {
|
|
10
|
+
// Try to write to a debug log file
|
|
11
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
12
|
+
const logDir = path.join(home, '.opencode-1password-debug');
|
|
13
|
+
if (!fs.existsSync(logDir)) {
|
|
14
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
15
|
+
}
|
|
16
|
+
const logFile = path.join(logDir, 'debug.log');
|
|
17
|
+
fs.appendFileSync(logFile, logMessage);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
// Ignore file logging errors
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export const OnePasswordAuthPlugin = async ({ client, $ }) => {
|
|
24
|
+
// TEST: This log should appear in OpenCode's terminal output if plugin loads
|
|
25
|
+
console.log("1Password Plugin: Export function called - starting initialization");
|
|
26
|
+
let opClient = null;
|
|
27
|
+
let mcpsEnvId;
|
|
28
|
+
let initialized = false;
|
|
29
|
+
let executionOrder = 0;
|
|
30
|
+
debugLog(`Plugin loaded (order: ${++executionOrder})`);
|
|
31
|
+
// Log environment variable status (redacted)
|
|
32
|
+
const token = process.env.OP_SERVICE_ACCOUNT_TOKEN;
|
|
33
|
+
const configId = process.env.OP_CONFIG_ENV_ID;
|
|
34
|
+
debugLog(`Environment check - OP_SERVICE_ACCOUNT_TOKEN: ${token ? 'SET' : 'MISSING'} (${token ? token.substring(0, 8) + '...' : 'N/A'})`);
|
|
35
|
+
debugLog(`Environment check - OP_CONFIG_ENV_ID: ${configId ? 'SET' : 'MISSING'} (${configId ? configId.substring(0, 8) + '...' : 'N/A'})`);
|
|
36
|
+
const normalizeProviderId = (variableName) => {
|
|
37
|
+
// Convert common patterns to match auth.json provider IDs
|
|
38
|
+
// e.g., "MINIMAX_CODING_PLAN" -> "minimax-coding-plan"
|
|
39
|
+
// e.g., "OPENCODE" -> "opencode"
|
|
40
|
+
// e.g., "DEEPSEEK" -> "deepseek"
|
|
41
|
+
let normalized = variableName.toLowerCase();
|
|
42
|
+
// Convert underscores to hyphens
|
|
43
|
+
normalized = normalized.replace(/_/g, '-');
|
|
44
|
+
debugLog(`Normalized ${variableName} -> ${normalized}`);
|
|
45
|
+
return normalized;
|
|
46
|
+
};
|
|
47
|
+
const getAlternativeEnvVarNames = (providerId) => {
|
|
48
|
+
// Generate all possible env var names that might be used
|
|
49
|
+
const names = new Set();
|
|
50
|
+
// Original providerId (e.g., "minimax-coding-plan")
|
|
51
|
+
names.add(providerId);
|
|
52
|
+
// Uppercase version (e.g., "MINIMAX-CODING-PLAN")
|
|
53
|
+
names.add(providerId.toUpperCase());
|
|
54
|
+
// With underscores instead of hyphens (e.g., "minimax_coding_plan")
|
|
55
|
+
names.add(providerId.replace(/-/g, '_'));
|
|
56
|
+
// Uppercase with underscores (e.g., "MINIMAX_CODING_PLAN")
|
|
57
|
+
names.add(providerId.replace(/-/g, '_').toUpperCase());
|
|
58
|
+
// Just the first part (e.g., "minimax")
|
|
59
|
+
const firstPart = providerId.split('-')[0];
|
|
60
|
+
if (firstPart && firstPart !== providerId) {
|
|
61
|
+
names.add(firstPart);
|
|
62
|
+
names.add(firstPart.toUpperCase());
|
|
63
|
+
}
|
|
64
|
+
return Array.from(names);
|
|
65
|
+
};
|
|
66
|
+
const getHomeDir = () => {
|
|
67
|
+
return process.env.HOME || process.env.USERPROFILE || "";
|
|
68
|
+
};
|
|
69
|
+
const getAuthJsonPath = () => {
|
|
70
|
+
const home = getHomeDir();
|
|
71
|
+
return `${home}/.local/share/opencode/auth.json`;
|
|
72
|
+
};
|
|
73
|
+
const getOpenCodeJsonPath = () => {
|
|
74
|
+
const home = getHomeDir();
|
|
75
|
+
return `${home}/.config/opencode/opencode.json`;
|
|
76
|
+
};
|
|
77
|
+
const initClient = async () => {
|
|
78
|
+
const token = process.env.OP_SERVICE_ACCOUNT_TOKEN;
|
|
79
|
+
if (!token) {
|
|
80
|
+
debugLog("Missing OP_SERVICE_ACCOUNT_TOKEN");
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
return await sdk.createClient({
|
|
85
|
+
auth: token,
|
|
86
|
+
integrationName: "opencode-1password-env",
|
|
87
|
+
integrationVersion: "1.0.0",
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
debugLog(`Failed to create client: ${err}`);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const readEnvironmentVariables = async (envId) => {
|
|
96
|
+
if (!opClient)
|
|
97
|
+
return [];
|
|
98
|
+
try {
|
|
99
|
+
const { variables } = await opClient.environments.getVariables(envId);
|
|
100
|
+
debugLog(`Read ${variables?.length || 0} variables from environment ${envId}`);
|
|
101
|
+
return variables || [];
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
debugLog(`Failed to read environment ${envId}: ${err}`);
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
const getSecretsFromEnvironment = async (envId) => {
|
|
109
|
+
const vars = await readEnvironmentVariables(envId);
|
|
110
|
+
const secrets = {};
|
|
111
|
+
for (const v of vars) {
|
|
112
|
+
if (v.value) {
|
|
113
|
+
secrets[v.name] = v.value;
|
|
114
|
+
debugLog(`Found secret: ${v.name} (${v.value.length} chars)`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return secrets;
|
|
118
|
+
};
|
|
119
|
+
const updateAuthJson = async (providerEnvId) => {
|
|
120
|
+
const authJsonPath = getAuthJsonPath();
|
|
121
|
+
try {
|
|
122
|
+
// Read current auth.json using cat
|
|
123
|
+
const catResult = await $ `cat "${authJsonPath}"`;
|
|
124
|
+
const content = catResult.stdout;
|
|
125
|
+
let auth;
|
|
126
|
+
try {
|
|
127
|
+
auth = JSON.parse(content.toString());
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
debugLog("auth.json is not valid JSON, skipping");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
let modified = false;
|
|
134
|
+
for (const [providerId, authConfig] of Object.entries(auth)) {
|
|
135
|
+
if (authConfig.key && !authConfig.key.startsWith("{env:")) {
|
|
136
|
+
// Replace hardcoded key with env var reference
|
|
137
|
+
authConfig.key = `{env:${providerId}}`;
|
|
138
|
+
modified = true;
|
|
139
|
+
debugLog(`Updated auth.json - ${providerId} -> {env:${providerId}}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (modified) {
|
|
143
|
+
// Write updated content using a temp file and mv
|
|
144
|
+
const newContent = JSON.stringify(auth, null, 2);
|
|
145
|
+
// Use node to write the file since $ heredocs can be tricky
|
|
146
|
+
await $ `node -e "const fs=require('fs'); fs.writeFileSync('${authJsonPath}', JSON.stringify(${JSON.stringify(auth)}, null, 2));"`;
|
|
147
|
+
debugLog("auth.json updated to use environment variables");
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
debugLog(`Failed to update auth.json: ${err}`);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const updateOpenCodeJsonMCP = async (mcpEnvId) => {
|
|
155
|
+
const openCodeJsonPath = getOpenCodeJsonPath();
|
|
156
|
+
try {
|
|
157
|
+
// Read current opencode.json using cat
|
|
158
|
+
const catResult = await $ `cat "${openCodeJsonPath}"`;
|
|
159
|
+
const content = catResult.stdout;
|
|
160
|
+
let config;
|
|
161
|
+
try {
|
|
162
|
+
config = JSON.parse(content.toString());
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
debugLog("opencode.json is not valid JSON, skipping");
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (!config.mcp) {
|
|
169
|
+
debugLog("No MCP configuration found, skipping");
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
let modified = false;
|
|
173
|
+
for (const [serverName, serverConfig] of Object.entries(config.mcp)) {
|
|
174
|
+
if (serverConfig?.environment) {
|
|
175
|
+
for (const [key, value] of Object.entries(serverConfig.environment)) {
|
|
176
|
+
if (typeof value === "string" && !value.startsWith("{env:") && !value.startsWith("$")) {
|
|
177
|
+
// Replace hardcoded value with env var reference
|
|
178
|
+
serverConfig.environment[key] = `{env:${key}}`;
|
|
179
|
+
modified = true;
|
|
180
|
+
debugLog(`Updated opencode.json - ${serverName}.${key} -> {env:${key}}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (modified) {
|
|
186
|
+
// Write updated content
|
|
187
|
+
await $ `node -e "const fs=require('fs'); fs.writeFileSync('${openCodeJsonPath}', JSON.stringify(${JSON.stringify(config)}, null, 2));"`;
|
|
188
|
+
debugLog("opencode.json MCP config updated to use environment variables");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
debugLog(`Failed to update opencode.json: ${err}`);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
const authenticateProviders = async (providerEnvId) => {
|
|
196
|
+
if (!opClient)
|
|
197
|
+
return;
|
|
198
|
+
debugLog(`Reading provider secrets from environment ${providerEnvId}`);
|
|
199
|
+
const secrets = await getSecretsFromEnvironment(providerEnvId);
|
|
200
|
+
debugLog(`Found ${Object.keys(secrets).length} provider secrets`);
|
|
201
|
+
for (const [variableName, apiKey] of Object.entries(secrets)) {
|
|
202
|
+
if (!apiKey)
|
|
203
|
+
continue;
|
|
204
|
+
const providerId = normalizeProviderId(variableName);
|
|
205
|
+
debugLog(`Processing ${variableName} -> ${providerId} (key length: ${apiKey.length})`);
|
|
206
|
+
// Set environment variables in multiple formats
|
|
207
|
+
const envVarNames = getAlternativeEnvVarNames(providerId);
|
|
208
|
+
for (const envVarName of envVarNames) {
|
|
209
|
+
process.env[envVarName] = apiKey;
|
|
210
|
+
debugLog(`Set process.env.${envVarName} = ${apiKey.substring(0, 8)}...`);
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
// Authenticate with OpenCode runtime
|
|
214
|
+
debugLog(`Calling client.auth.set for ${providerId} with key length ${apiKey.length}`);
|
|
215
|
+
const result = await client.auth.set({
|
|
216
|
+
path: { id: providerId },
|
|
217
|
+
body: { type: "api", key: apiKey },
|
|
218
|
+
});
|
|
219
|
+
debugLog(`✓ ${providerId} authenticated (from ${variableName}) - Result: ${JSON.stringify(result)}`);
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
debugLog(`Failed to authenticate ${providerId}: ${err}`);
|
|
223
|
+
if (err instanceof Error) {
|
|
224
|
+
debugLog(`Error message: ${err.message}`);
|
|
225
|
+
debugLog(`Error stack: ${err.stack}`);
|
|
226
|
+
}
|
|
227
|
+
// Also log to console for immediate visibility
|
|
228
|
+
console.error(`[1Password Plugin] Failed to authenticate ${providerId}: ${err}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
const getConfiguredMCPVars = () => {
|
|
233
|
+
const vars = new Set();
|
|
234
|
+
try {
|
|
235
|
+
const config = client.config;
|
|
236
|
+
if (config?.mcp) {
|
|
237
|
+
for (const [, serverConfig] of Object.entries(config.mcp)) {
|
|
238
|
+
if (serverConfig?.environment) {
|
|
239
|
+
for (const [key] of Object.entries(serverConfig.environment)) {
|
|
240
|
+
if (key.startsWith("{env:")) {
|
|
241
|
+
const envVar = key.slice(5, -1);
|
|
242
|
+
vars.add(envVar);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
vars.add(key);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
debugLog(`Failed to read MCP config: ${err}`);
|
|
254
|
+
}
|
|
255
|
+
return vars;
|
|
256
|
+
};
|
|
257
|
+
const injectMCPSecrets = async (mcpEnvId) => {
|
|
258
|
+
const neededVars = getConfiguredMCPVars();
|
|
259
|
+
if (neededVars.size === 0) {
|
|
260
|
+
return {};
|
|
261
|
+
}
|
|
262
|
+
const secrets = await getSecretsFromEnvironment(mcpEnvId);
|
|
263
|
+
const toInject = {};
|
|
264
|
+
for (const varName of neededVars) {
|
|
265
|
+
if (secrets[varName]) {
|
|
266
|
+
toInject[varName] = secrets[varName];
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return toInject;
|
|
270
|
+
};
|
|
271
|
+
// Initialize as soon as plugin loads (config hook runs early)
|
|
272
|
+
const initializePlugin = async () => {
|
|
273
|
+
debugLog(`initializePlugin called (order: ${++executionOrder})`);
|
|
274
|
+
if (initialized) {
|
|
275
|
+
debugLog("initializePlugin: already initialized, skipping");
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
debugLog("Initializing plugin...");
|
|
279
|
+
opClient = await initClient();
|
|
280
|
+
if (!opClient) {
|
|
281
|
+
debugLog("No client available");
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const configEnvId = process.env.OP_CONFIG_ENV_ID;
|
|
285
|
+
if (!configEnvId) {
|
|
286
|
+
debugLog("Missing OP_CONFIG_ENV_ID");
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
debugLog(`Reading config from environment ${configEnvId}`);
|
|
290
|
+
const vars = await readEnvironmentVariables(configEnvId);
|
|
291
|
+
const configEnvIds = {};
|
|
292
|
+
for (const v of vars) {
|
|
293
|
+
if (v.name.endsWith("_ENV_ID") && v.value) {
|
|
294
|
+
configEnvIds[v.name] = v.value;
|
|
295
|
+
debugLog(`Found ${v.name} = ${v.value.substring(0, 10)}...`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const providersEnvId = configEnvIds.OPENCODE_PROVIDERS_ENV_ID;
|
|
299
|
+
if (providersEnvId) {
|
|
300
|
+
// Authenticate providers - client.auth.set() will write to auth.json
|
|
301
|
+
// SKIP updateAuthJson - it writes {env:...} placeholders which cause issues
|
|
302
|
+
// await updateAuthJson(providersEnvId);
|
|
303
|
+
await authenticateProviders(providersEnvId);
|
|
304
|
+
}
|
|
305
|
+
const mcpEnvIdFromConfig = configEnvIds.OPENCODE_MCPS_ENV_ID;
|
|
306
|
+
if (mcpEnvIdFromConfig) {
|
|
307
|
+
mcpsEnvId = mcpEnvIdFromConfig;
|
|
308
|
+
await updateOpenCodeJsonMCP(mcpEnvIdFromConfig);
|
|
309
|
+
const toInject = await injectMCPSecrets(mcpEnvIdFromConfig);
|
|
310
|
+
if (Object.keys(toInject).length > 0) {
|
|
311
|
+
debugLog(`Injected ${Object.keys(toInject).join(", ")} for MCP`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
initialized = true;
|
|
315
|
+
debugLog("Plugin initialization complete");
|
|
316
|
+
};
|
|
317
|
+
// Start initialization immediately (but config hook might run first)
|
|
318
|
+
debugLog(`Starting immediate initialization (order: ${++executionOrder})`);
|
|
319
|
+
if (!initialized) {
|
|
320
|
+
initializePlugin().catch(err => {
|
|
321
|
+
debugLog(`Failed to initialize plugin: ${err}`);
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
debugLog("Already initialized, skipping immediate init");
|
|
326
|
+
}
|
|
327
|
+
return {
|
|
328
|
+
async config(config) {
|
|
329
|
+
debugLog(`Config hook called (order: ${++executionOrder})`);
|
|
330
|
+
// Config hook runs early - try to authenticate here
|
|
331
|
+
if (!initialized) {
|
|
332
|
+
debugLog("Config hook: attempting authentication");
|
|
333
|
+
try {
|
|
334
|
+
await initializePlugin();
|
|
335
|
+
initialized = true;
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
debugLog(`Config hook authentication failed: ${err}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
debugLog("Config hook: already initialized");
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
async event({ event }) {
|
|
346
|
+
debugLog(`Received event: ${event.type}`);
|
|
347
|
+
if (event.type === "server.connected") {
|
|
348
|
+
debugLog("Server connected - rechecking authentication");
|
|
349
|
+
// Re-authenticate providers in case they weren't set earlier
|
|
350
|
+
if (opClient) {
|
|
351
|
+
const configEnvId = process.env.OP_CONFIG_ENV_ID;
|
|
352
|
+
if (configEnvId) {
|
|
353
|
+
const vars = await readEnvironmentVariables(configEnvId);
|
|
354
|
+
const configEnvIds = {};
|
|
355
|
+
for (const v of vars) {
|
|
356
|
+
if (v.name.endsWith("_ENV_ID") && v.value) {
|
|
357
|
+
configEnvIds[v.name] = v.value;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
const providersEnvId = configEnvIds.OPENCODE_PROVIDERS_ENV_ID;
|
|
361
|
+
if (providersEnvId) {
|
|
362
|
+
await authenticateProviders(providersEnvId);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
async "shell.env"(input, output) {
|
|
369
|
+
if (!opClient || !mcpsEnvId)
|
|
370
|
+
return;
|
|
371
|
+
const toInject = await injectMCPSecrets(mcpsEnvId);
|
|
372
|
+
for (const [varName, value] of Object.entries(toInject)) {
|
|
373
|
+
output.env[varName] = value;
|
|
374
|
+
debugLog(`Injected ${varName} into shell environment`);
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
async "tool.execute.before"(input) {
|
|
378
|
+
if (input.tool !== "read")
|
|
379
|
+
return;
|
|
380
|
+
const fileArgs = input.args;
|
|
381
|
+
if (fileArgs?.filePath && fileArgs.filePath.includes(".env")) {
|
|
382
|
+
debugLog("Warning - .env file access detected. Consider using 1Password for secrets management.");
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
};
|
|
386
|
+
};
|
|
387
|
+
export default OnePasswordAuthPlugin;
|
|
388
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-1password-auth",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "1Password integration for OpenCode - authenticate providers and inject MCP secrets from 1Password environments",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "index.
|
|
7
|
-
"
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": ["dist"],
|
|
14
|
+
"keywords": [
|
|
15
|
+
"opencode",
|
|
16
|
+
"opencode-plugin",
|
|
17
|
+
"1password",
|
|
18
|
+
"mcp",
|
|
19
|
+
"secrets"
|
|
20
|
+
],
|
|
8
21
|
"author": "",
|
|
9
22
|
"license": "MIT",
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"prepublishOnly": "npm run build"
|
|
26
|
+
},
|
|
10
27
|
"dependencies": {
|
|
11
28
|
"@1password/sdk": "0.4.1-beta.1"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@opencode-ai/plugin": "^1.3.13",
|
|
32
|
+
"@types/node": "^25.5.2",
|
|
33
|
+
"typescript": "^5.0.0"
|
|
12
34
|
}
|
|
13
|
-
}
|
|
35
|
+
}
|