@id-wispera/core 0.1.0
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 +268 -0
- package/dist/audit.d.ts +68 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +252 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/keychainProvider.d.ts +40 -0
- package/dist/auth/keychainProvider.d.ts.map +1 -0
- package/dist/auth/keychainProvider.js +98 -0
- package/dist/auth/keychainProvider.js.map +1 -0
- package/dist/auth/passphraseProvider.d.ts +80 -0
- package/dist/auth/passphraseProvider.d.ts.map +1 -0
- package/dist/auth/passphraseProvider.js +188 -0
- package/dist/auth/passphraseProvider.js.map +1 -0
- package/dist/auth/sessionTokenManager.d.ts +106 -0
- package/dist/auth/sessionTokenManager.d.ts.map +1 -0
- package/dist/auth/sessionTokenManager.js +263 -0
- package/dist/auth/sessionTokenManager.js.map +1 -0
- package/dist/delegation.d.ts +81 -0
- package/dist/delegation.d.ts.map +1 -0
- package/dist/delegation.js +299 -0
- package/dist/delegation.js.map +1 -0
- package/dist/detection.d.ts +35 -0
- package/dist/detection.d.ts.map +1 -0
- package/dist/detection.js +474 -0
- package/dist/detection.js.map +1 -0
- package/dist/exec/execManager.d.ts +60 -0
- package/dist/exec/execManager.d.ts.map +1 -0
- package/dist/exec/execManager.js +226 -0
- package/dist/exec/execManager.js.map +1 -0
- package/dist/exec/index.d.ts +6 -0
- package/dist/exec/index.d.ts.map +1 -0
- package/dist/exec/index.js +5 -0
- package/dist/exec/index.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +98 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/base.d.ts +64 -0
- package/dist/integrations/base.d.ts.map +1 -0
- package/dist/integrations/base.js +173 -0
- package/dist/integrations/base.js.map +1 -0
- package/dist/integrations/envMapping.d.ts +47 -0
- package/dist/integrations/envMapping.d.ts.map +1 -0
- package/dist/integrations/envMapping.js +174 -0
- package/dist/integrations/envMapping.js.map +1 -0
- package/dist/integrations/google-a2a.d.ts +48 -0
- package/dist/integrations/google-a2a.d.ts.map +1 -0
- package/dist/integrations/google-a2a.js +108 -0
- package/dist/integrations/google-a2a.js.map +1 -0
- package/dist/integrations/index.d.ts +14 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +14 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/langchain.d.ts +38 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +45 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/integrations/openai-agents.d.ts +76 -0
- package/dist/integrations/openai-agents.d.ts.map +1 -0
- package/dist/integrations/openai-agents.js +95 -0
- package/dist/integrations/openai-agents.js.map +1 -0
- package/dist/integrations/slack.d.ts +59 -0
- package/dist/integrations/slack.d.ts.map +1 -0
- package/dist/integrations/slack.js +113 -0
- package/dist/integrations/slack.js.map +1 -0
- package/dist/integrations/types.d.ts +107 -0
- package/dist/integrations/types.d.ts.map +1 -0
- package/dist/integrations/types.js +6 -0
- package/dist/integrations/types.js.map +1 -0
- package/dist/locations.d.ts +157 -0
- package/dist/locations.d.ts.map +1 -0
- package/dist/locations.js +733 -0
- package/dist/locations.js.map +1 -0
- package/dist/passport.d.ts +70 -0
- package/dist/passport.d.ts.map +1 -0
- package/dist/passport.js +429 -0
- package/dist/passport.js.map +1 -0
- package/dist/policy.d.ts +80 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +392 -0
- package/dist/policy.js.map +1 -0
- package/dist/providers/openclaw.d.ts +80 -0
- package/dist/providers/openclaw.d.ts.map +1 -0
- package/dist/providers/openclaw.js +712 -0
- package/dist/providers/openclaw.js.map +1 -0
- package/dist/provisioning/adminPassport.d.ts +51 -0
- package/dist/provisioning/adminPassport.d.ts.map +1 -0
- package/dist/provisioning/adminPassport.js +101 -0
- package/dist/provisioning/adminPassport.js.map +1 -0
- package/dist/provisioning/index.d.ts +81 -0
- package/dist/provisioning/index.d.ts.map +1 -0
- package/dist/provisioning/index.js +141 -0
- package/dist/provisioning/index.js.map +1 -0
- package/dist/provisioning/provider.d.ts +59 -0
- package/dist/provisioning/provider.d.ts.map +1 -0
- package/dist/provisioning/provider.js +52 -0
- package/dist/provisioning/provider.js.map +1 -0
- package/dist/provisioning/providers/anthropic.d.ts +32 -0
- package/dist/provisioning/providers/anthropic.d.ts.map +1 -0
- package/dist/provisioning/providers/anthropic.js +116 -0
- package/dist/provisioning/providers/anthropic.js.map +1 -0
- package/dist/provisioning/providers/aws.d.ts +29 -0
- package/dist/provisioning/providers/aws.d.ts.map +1 -0
- package/dist/provisioning/providers/aws.js +455 -0
- package/dist/provisioning/providers/aws.js.map +1 -0
- package/dist/provisioning/providers/azure-entra.d.ts +32 -0
- package/dist/provisioning/providers/azure-entra.d.ts.map +1 -0
- package/dist/provisioning/providers/azure-entra.js +312 -0
- package/dist/provisioning/providers/azure-entra.js.map +1 -0
- package/dist/provisioning/providers/github.d.ts +24 -0
- package/dist/provisioning/providers/github.d.ts.map +1 -0
- package/dist/provisioning/providers/github.js +219 -0
- package/dist/provisioning/providers/github.js.map +1 -0
- package/dist/provisioning/providers/google-cloud.d.ts +34 -0
- package/dist/provisioning/providers/google-cloud.d.ts.map +1 -0
- package/dist/provisioning/providers/google-cloud.js +366 -0
- package/dist/provisioning/providers/google-cloud.js.map +1 -0
- package/dist/provisioning/providers/openai.d.ts +29 -0
- package/dist/provisioning/providers/openai.d.ts.map +1 -0
- package/dist/provisioning/providers/openai.js +263 -0
- package/dist/provisioning/providers/openai.js.map +1 -0
- package/dist/provisioning/providers/sendgrid.d.ts +27 -0
- package/dist/provisioning/providers/sendgrid.d.ts.map +1 -0
- package/dist/provisioning/providers/sendgrid.js +186 -0
- package/dist/provisioning/providers/sendgrid.js.map +1 -0
- package/dist/provisioning/providers/twilio.d.ts +27 -0
- package/dist/provisioning/providers/twilio.d.ts.map +1 -0
- package/dist/provisioning/providers/twilio.js +194 -0
- package/dist/provisioning/providers/twilio.js.map +1 -0
- package/dist/provisioning/types.d.ts +274 -0
- package/dist/provisioning/types.d.ts.map +1 -0
- package/dist/provisioning/types.js +6 -0
- package/dist/provisioning/types.js.map +1 -0
- package/dist/sharing.d.ts +60 -0
- package/dist/sharing.d.ts.map +1 -0
- package/dist/sharing.js +305 -0
- package/dist/sharing.js.map +1 -0
- package/dist/types.d.ts +396 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +88 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +45 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +110 -0
- package/dist/utils.js.map +1 -0
- package/dist/vault.d.ts +151 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +499 -0
- package/dist/vault.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExecManager — Core Subprocess Credential Injection
|
|
3
|
+
*
|
|
4
|
+
* Handles the core exec logic independently of the CLI, so it can be
|
|
5
|
+
* reused by the MCP server or programmatic API in the future.
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. Resolve each passport (by ID or name)
|
|
9
|
+
* 2. Evaluate policy for each passport
|
|
10
|
+
* 3. Determine env var names (explicit, platform-map, or fallback)
|
|
11
|
+
* 4. Check for env var collisions
|
|
12
|
+
* 5. Inject into child process environment
|
|
13
|
+
* 6. Spawn the child process
|
|
14
|
+
* 7. Propagate signals (SIGTERM, SIGINT, SIGHUP)
|
|
15
|
+
* 8. Wait for exit
|
|
16
|
+
* 9. Log audit entries with process metadata
|
|
17
|
+
* 10. Return exit code
|
|
18
|
+
*/
|
|
19
|
+
import { spawn } from 'child_process';
|
|
20
|
+
import { resolveEnvVarName } from '../integrations/envMapping.js';
|
|
21
|
+
import { evaluatePolicy } from '../policy.js';
|
|
22
|
+
import { logAction } from '../audit.js';
|
|
23
|
+
/**
|
|
24
|
+
* Execute a command with vault credentials injected as environment variables.
|
|
25
|
+
*/
|
|
26
|
+
export async function execWithCredentials(options) {
|
|
27
|
+
const { command, passports: passportSpecs, vault, actor, inheritEnv = true, extraEnv = {}, cwd, dryRun = false, } = options;
|
|
28
|
+
if (command.length === 0) {
|
|
29
|
+
throw new Error('No command specified');
|
|
30
|
+
}
|
|
31
|
+
const startTime = Date.now();
|
|
32
|
+
const injectedVars = [];
|
|
33
|
+
const auditEntryIds = [];
|
|
34
|
+
const credentialEnv = {};
|
|
35
|
+
// --- Step 1 & 2: Resolve passports and evaluate policy ---
|
|
36
|
+
const resolvedPassports = [];
|
|
37
|
+
for (const spec of passportSpecs) {
|
|
38
|
+
// Resolve by ID first, then by name
|
|
39
|
+
let passport;
|
|
40
|
+
// Try by ID
|
|
41
|
+
try {
|
|
42
|
+
passport = await vault.retrievePassport(spec.passportRef);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Not found by ID — try by name
|
|
46
|
+
}
|
|
47
|
+
// Try by name if ID lookup failed
|
|
48
|
+
if (!passport) {
|
|
49
|
+
const allPassports = await vault.getAllPassports();
|
|
50
|
+
passport = allPassports.find(p => p.name.toLowerCase() === spec.passportRef.toLowerCase());
|
|
51
|
+
}
|
|
52
|
+
if (!passport) {
|
|
53
|
+
throw new Error(`Passport not found: "${spec.passportRef}". Use 'idw list' to see available passports.`);
|
|
54
|
+
}
|
|
55
|
+
// Check passport status
|
|
56
|
+
if (passport.status === 'revoked') {
|
|
57
|
+
throw new Error(`Passport "${passport.name}" (${passport.id}) is revoked and cannot be used.`);
|
|
58
|
+
}
|
|
59
|
+
if (passport.status === 'expired') {
|
|
60
|
+
throw new Error(`Passport "${passport.name}" (${passport.id}) has expired.`);
|
|
61
|
+
}
|
|
62
|
+
if (passport.status === 'suspended') {
|
|
63
|
+
throw new Error(`Passport "${passport.name}" (${passport.id}) is suspended.`);
|
|
64
|
+
}
|
|
65
|
+
// Evaluate policy
|
|
66
|
+
const policyResult = evaluatePolicy(passport, 'exec');
|
|
67
|
+
if (policyResult.effect === 'deny') {
|
|
68
|
+
throw new Error(`Policy denied access to "${passport.name}": ${policyResult.reason}`);
|
|
69
|
+
}
|
|
70
|
+
if (policyResult.effect === 'require-approval') {
|
|
71
|
+
throw new Error(`Passport "${passport.name}" requires approval before use: ${policyResult.reason}\n` +
|
|
72
|
+
`Adjust policy rules or use a passport that does not require approval.`);
|
|
73
|
+
}
|
|
74
|
+
// Resolve env var name
|
|
75
|
+
const { envVarName, source } = resolveEnvVarName(passport, spec.envVarOverride);
|
|
76
|
+
resolvedPassports.push({ passport, envVar: envVarName, source });
|
|
77
|
+
}
|
|
78
|
+
// --- Step 3: Check for env var collisions ---
|
|
79
|
+
const envVarMap = new Map();
|
|
80
|
+
for (const { envVar, passport } of resolvedPassports) {
|
|
81
|
+
const existing = envVarMap.get(envVar) ?? [];
|
|
82
|
+
existing.push(passport.name);
|
|
83
|
+
envVarMap.set(envVar, existing);
|
|
84
|
+
}
|
|
85
|
+
for (const [envVar, passportNames] of envVarMap) {
|
|
86
|
+
if (passportNames.length > 1) {
|
|
87
|
+
throw new Error(`Environment variable collision: ${envVar} would be set by multiple passports: ${passportNames.join(', ')}. ` +
|
|
88
|
+
`Use --as to specify distinct env var names.`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// --- Step 4: Build credential environment ---
|
|
92
|
+
for (const { passport, envVar, source } of resolvedPassports) {
|
|
93
|
+
credentialEnv[envVar] = passport.credentialValue;
|
|
94
|
+
injectedVars.push({
|
|
95
|
+
envVar,
|
|
96
|
+
passportId: passport.id,
|
|
97
|
+
passportName: passport.name,
|
|
98
|
+
source,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// --- Step 5: Dry run ---
|
|
102
|
+
if (dryRun) {
|
|
103
|
+
// Log audit entries for dry run too
|
|
104
|
+
for (const { passport } of resolvedPassports) {
|
|
105
|
+
const auditEntry = await logAction(vault, {
|
|
106
|
+
passportId: passport.id,
|
|
107
|
+
action: 'policy-checked',
|
|
108
|
+
actor,
|
|
109
|
+
details: `Dry run: exec ${command[0]}`,
|
|
110
|
+
metadata: { dryRun: true, command: command[0] },
|
|
111
|
+
});
|
|
112
|
+
auditEntryIds.push(auditEntry.id);
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
exitCode: 0,
|
|
116
|
+
injectedVars,
|
|
117
|
+
duration: Date.now() - startTime,
|
|
118
|
+
auditEntryIds,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// --- Step 6: Log access and spawn ---
|
|
122
|
+
for (const { passport } of resolvedPassports) {
|
|
123
|
+
const auditEntry = await logAction(vault, {
|
|
124
|
+
passportId: passport.id,
|
|
125
|
+
action: 'accessed',
|
|
126
|
+
actor,
|
|
127
|
+
platform: passport.platforms[0],
|
|
128
|
+
details: `exec: ${command.join(' ')}`,
|
|
129
|
+
metadata: {
|
|
130
|
+
command: command[0],
|
|
131
|
+
args: command.slice(1),
|
|
132
|
+
pid: process.pid,
|
|
133
|
+
envVars: injectedVars.map(v => v.envVar),
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
auditEntryIds.push(auditEntry.id);
|
|
137
|
+
}
|
|
138
|
+
// Build child environment
|
|
139
|
+
const childEnv = {
|
|
140
|
+
...(inheritEnv ? process.env : {}),
|
|
141
|
+
...extraEnv,
|
|
142
|
+
...credentialEnv,
|
|
143
|
+
};
|
|
144
|
+
// Remove IDW_PASSPHRASE and IDW_SESSION_TOKEN from child env
|
|
145
|
+
// (child should not inherit vault access)
|
|
146
|
+
delete childEnv['IDW_PASSPHRASE'];
|
|
147
|
+
delete childEnv['IDW_SESSION_TOKEN'];
|
|
148
|
+
const cmd = command[0];
|
|
149
|
+
const args = command.slice(1);
|
|
150
|
+
return new Promise((resolve, reject) => {
|
|
151
|
+
let child;
|
|
152
|
+
try {
|
|
153
|
+
child = spawn(cmd, args, {
|
|
154
|
+
env: childEnv,
|
|
155
|
+
cwd: cwd ?? process.cwd(),
|
|
156
|
+
stdio: 'inherit', // pipe stdin/stdout/stderr to parent
|
|
157
|
+
shell: process.platform === 'win32', // use shell on Windows for .cmd/.bat support
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
162
|
+
reject(new Error(`Failed to spawn "${cmd}": ${message}`));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// --- Step 7: Signal propagation ---
|
|
166
|
+
const signalHandler = (signal) => {
|
|
167
|
+
if (child && !child.killed) {
|
|
168
|
+
child.kill(signal);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
process.on('SIGTERM', signalHandler);
|
|
172
|
+
process.on('SIGINT', signalHandler);
|
|
173
|
+
process.on('SIGHUP', signalHandler);
|
|
174
|
+
const cleanup = () => {
|
|
175
|
+
process.removeListener('SIGTERM', signalHandler);
|
|
176
|
+
process.removeListener('SIGINT', signalHandler);
|
|
177
|
+
process.removeListener('SIGHUP', signalHandler);
|
|
178
|
+
};
|
|
179
|
+
child.on('error', (err) => {
|
|
180
|
+
cleanup();
|
|
181
|
+
reject(new Error(`Failed to execute "${cmd}": ${err.message}`));
|
|
182
|
+
});
|
|
183
|
+
child.on('close', (code, signal) => {
|
|
184
|
+
cleanup();
|
|
185
|
+
const duration = Date.now() - startTime;
|
|
186
|
+
// Log completion audit entries asynchronously (don't block on failure)
|
|
187
|
+
const logCompletions = resolvedPassports.map(async ({ passport }) => {
|
|
188
|
+
try {
|
|
189
|
+
await logAction(vault, {
|
|
190
|
+
passportId: passport.id,
|
|
191
|
+
action: 'accessed',
|
|
192
|
+
actor,
|
|
193
|
+
details: `exec completed: ${command[0]} (exit=${code ?? 'signal'}, duration=${duration}ms)`,
|
|
194
|
+
metadata: {
|
|
195
|
+
command: command[0],
|
|
196
|
+
exitCode: code,
|
|
197
|
+
signal: signal ?? undefined,
|
|
198
|
+
durationMs: duration,
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Don't fail on audit logging errors
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
Promise.all(logCompletions).then(() => {
|
|
207
|
+
resolve({
|
|
208
|
+
exitCode: code ?? 1,
|
|
209
|
+
signal: signal ?? undefined,
|
|
210
|
+
injectedVars,
|
|
211
|
+
duration,
|
|
212
|
+
auditEntryIds,
|
|
213
|
+
});
|
|
214
|
+
}).catch(() => {
|
|
215
|
+
resolve({
|
|
216
|
+
exitCode: code ?? 1,
|
|
217
|
+
signal: signal ?? undefined,
|
|
218
|
+
injectedVars,
|
|
219
|
+
duration,
|
|
220
|
+
auditEntryIds,
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=execManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execManager.js","sourceRoot":"","sources":["../../src/exec/execManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exec/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exec/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID Wispera Core
|
|
3
|
+
* The Identity Whisperer for AI Agents
|
|
4
|
+
*
|
|
5
|
+
* A credential governance platform using the passport/visa metaphor
|
|
6
|
+
* to manage, secure, and audit AI agent credentials.
|
|
7
|
+
*/
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export { Vault, MemoryStorageBackend, FileSystemStorageBackend, initVault, unlockVault, lockVault, vaultExists, getDefaultVaultPath, migrateVault, SCRYPT_PARAMS, } from './vault.js';
|
|
10
|
+
export type { StorageBackend } from './vault.js';
|
|
11
|
+
export { createPassport, getPassport, listPassports, updatePassport, revokePassport, renewPassport, duplicatePassport, deletePassport, accessCredential, calculateStatus, refreshStatus, maskCredential, getExpiringPassports, getPassportStats, } from './passport.js';
|
|
12
|
+
export { detectCredentials, classifyCredential, mightContainCredentials, maskCredentialsInText, getDetectionStats, } from './detection.js';
|
|
13
|
+
export { logAction, getAuditLog, exportAuditLog, getAuditStats, getRecentActivity, getAccessHistory, wasAccessedRecently, searchAuditLog, getSuspiciousActivity, } from './audit.js';
|
|
14
|
+
export type { LogActionInput } from './audit.js';
|
|
15
|
+
export { evaluatePolicy, validatePassport, createPolicyRule, mergePolicyRules, getEnabledRules, hasValidHumanOwner, isWithinValidityPeriod, hasExcessiveDelegation, hasBroadScope, hasPrivilegedAccess, PolicyBuilder, policy, DEFAULT_POLICY_RULES, } from './policy.js';
|
|
16
|
+
export { createShareLink, resolveShareLink, getShareInfo, isShareValid, createShareUrl, parseShareUrl, createOneTimeShare, createMetadataShare, } from './sharing.js';
|
|
17
|
+
export { addDelegation, revokeDelegation, clearDelegations, getDelegationDepth, getCurrentHolder, getOriginalIssuer, getAllDelegationParties, isInDelegationChain, getDelegationPath, hasExpiredDelegation, getExpiredDelegations, getExpiringDelegations, getEffectiveScope, isScopePermitted, getScopeRestrictions, validateDelegationChain, } from './delegation.js';
|
|
18
|
+
export { type RiskLevel, type CredentialClassification, type DiscoveredCredential, type LocationScanResult, type ProviderDefinition, type ProviderLocation, expandPath, getHomeDir, providers, getProvider, getProviderIds, detectInstalledProviders, getRiskEmoji, getRiskLabel, sortByRisk, openclawProvider, awsProvider, sshProvider, dockerProvider, npmProvider, kubernetesProvider, } from './locations.js';
|
|
19
|
+
export { OPENCLAW_BASE_PATH, OPENCLAW_PATHS, isOpenClawInstalled, checkFilePermissions, checkDirectoryPermissions, scanOpenClaw, type OpenClawScanResult, toPassportInput, formatCredentialRow, } from './providers/openclaw.js';
|
|
20
|
+
export { provisionAndCreatePassport, provision, rotateCredential, revokeAtSource, listProviderKeys, validateProviderAuth, getProviderCapabilities, listProviders, OpenAIProvider, AWSProvider, GoogleCloudProvider, AzureEntraProvider, GitHubProvider, TwilioProvider, SendGridProvider, AnthropicProvider, BaseProvisioningProvider, } from './provisioning/index.js';
|
|
21
|
+
export type { IProvisioningProvider } from './provisioning/index.js';
|
|
22
|
+
export type { ProvisioningProvider, ProviderCapabilities, ProviderAuth, ProvisioningRequest, ProvisioningResult, RotationResult, ProviderSpecificConfig, ProviderPermissions, OpenAIConfig, AWSConfig, GoogleCloudConfig, AzureEntraConfig, GitHubConfig, TwilioConfig, SendGridConfig, AnthropicConfig, OpenAIPermissions, AWSPermissions, GoogleCloudPermissions, AzureEntraPermissions, GitHubPermissions, TwilioPermissions, SendGridPermissions, } from './provisioning/types.js';
|
|
23
|
+
export { WisperaCredentialProvider, WisperaLangChainProvider, WisperaOpenAIAgentProvider, WisperaA2AProvider, WisperaSlackProvider, } from './integrations/index.js';
|
|
24
|
+
export { PLATFORM_ENV_MAP, resolveEnvVarName, getPlatformEnvVars, } from './integrations/index.js';
|
|
25
|
+
export type { EnvVarMapping } from './integrations/index.js';
|
|
26
|
+
export type { HandoffScope, ToolAuth } from './integrations/openai-agents.js';
|
|
27
|
+
export type { IntegrationConfig, CredentialAccessOptions, CredentialResult, AvailableCredential, LLMConfig, SlackTokenType, SlackCredentialResult, A2AAgentCredentials, A2ATaskCredentials, } from './integrations/types.js';
|
|
28
|
+
export { execWithCredentials } from './exec/index.js';
|
|
29
|
+
export type { ExecPassportSpec, ExecOptions, ExecResult } from './exec/index.js';
|
|
30
|
+
export { PassphraseProvider, SessionTokenManager, SESSION_TOKEN_ENV_VAR, KeychainProvider, } from './auth/index.js';
|
|
31
|
+
export type { PassphraseProviderOptions, PassphraseSource, PassphraseResult, SidecarEntry, SidecarFile, TokenInfo, } from './auth/index.js';
|
|
32
|
+
export { MS_PER_DAY, maskValue, capitalizeFirst, previewToken, toArray, getErrorMessage, pathExists, getRandomBytes, getCryptoSubtle, toBufferSource, } from './utils.js';
|
|
33
|
+
export declare const VERSION = "0.1.0";
|
|
34
|
+
export declare const PACKAGE_NAME = "@id-wispera/core";
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID Wispera Core
|
|
3
|
+
* The Identity Whisperer for AI Agents
|
|
4
|
+
*
|
|
5
|
+
* A credential governance platform using the passport/visa metaphor
|
|
6
|
+
* to manage, secure, and audit AI agent credentials.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Type Exports
|
|
10
|
+
// ============================================================================
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Vault
|
|
14
|
+
// ============================================================================
|
|
15
|
+
export { Vault, MemoryStorageBackend, FileSystemStorageBackend, initVault, unlockVault, lockVault, vaultExists, getDefaultVaultPath, migrateVault, SCRYPT_PARAMS, } from './vault.js';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Passport Management
|
|
18
|
+
// ============================================================================
|
|
19
|
+
export { createPassport, getPassport, listPassports, updatePassport, revokePassport, renewPassport, duplicatePassport, deletePassport, accessCredential, calculateStatus, refreshStatus, maskCredential, getExpiringPassports, getPassportStats, } from './passport.js';
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Credential Detection
|
|
22
|
+
// ============================================================================
|
|
23
|
+
export { detectCredentials, classifyCredential, mightContainCredentials, maskCredentialsInText, getDetectionStats, } from './detection.js';
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Audit Trail
|
|
26
|
+
// ============================================================================
|
|
27
|
+
export { logAction, getAuditLog, exportAuditLog, getAuditStats, getRecentActivity, getAccessHistory, wasAccessedRecently, searchAuditLog, getSuspiciousActivity, } from './audit.js';
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Policy Engine
|
|
30
|
+
// ============================================================================
|
|
31
|
+
export { evaluatePolicy, validatePassport, createPolicyRule, mergePolicyRules, getEnabledRules, hasValidHumanOwner, isWithinValidityPeriod, hasExcessiveDelegation, hasBroadScope, hasPrivilegedAccess, PolicyBuilder, policy, DEFAULT_POLICY_RULES, } from './policy.js';
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// Secure Sharing
|
|
34
|
+
// ============================================================================
|
|
35
|
+
export { createShareLink, resolveShareLink, getShareInfo, isShareValid, createShareUrl, parseShareUrl, createOneTimeShare, createMetadataShare, } from './sharing.js';
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Delegation Management
|
|
38
|
+
// ============================================================================
|
|
39
|
+
export { addDelegation, revokeDelegation, clearDelegations, getDelegationDepth, getCurrentHolder, getOriginalIssuer, getAllDelegationParties, isInDelegationChain, getDelegationPath, hasExpiredDelegation, getExpiredDelegations, getExpiringDelegations, getEffectiveScope, isScopePermitted, getScopeRestrictions, validateDelegationChain, } from './delegation.js';
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// Credential Locations & Provider Registry
|
|
42
|
+
// ============================================================================
|
|
43
|
+
export {
|
|
44
|
+
// Path helpers
|
|
45
|
+
expandPath, getHomeDir,
|
|
46
|
+
// Provider registry
|
|
47
|
+
providers, getProvider, getProviderIds, detectInstalledProviders,
|
|
48
|
+
// Risk helpers
|
|
49
|
+
getRiskEmoji, getRiskLabel, sortByRisk,
|
|
50
|
+
// Built-in providers
|
|
51
|
+
openclawProvider, awsProvider, sshProvider, dockerProvider, npmProvider, kubernetesProvider, } from './locations.js';
|
|
52
|
+
// ============================================================================
|
|
53
|
+
// OpenClaw Provider
|
|
54
|
+
// ============================================================================
|
|
55
|
+
export {
|
|
56
|
+
// Constants
|
|
57
|
+
OPENCLAW_BASE_PATH, OPENCLAW_PATHS,
|
|
58
|
+
// Detection
|
|
59
|
+
isOpenClawInstalled, checkFilePermissions, checkDirectoryPermissions,
|
|
60
|
+
// Scanning
|
|
61
|
+
scanOpenClaw,
|
|
62
|
+
// Import helpers
|
|
63
|
+
toPassportInput, formatCredentialRow, } from './providers/openclaw.js';
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Credential Provisioning
|
|
66
|
+
// ============================================================================
|
|
67
|
+
export {
|
|
68
|
+
// Unified interface
|
|
69
|
+
provisionAndCreatePassport, provision, rotateCredential, revokeAtSource, listProviderKeys, validateProviderAuth, getProviderCapabilities, listProviders,
|
|
70
|
+
// Provider classes
|
|
71
|
+
OpenAIProvider, AWSProvider, GoogleCloudProvider, AzureEntraProvider, GitHubProvider, TwilioProvider, SendGridProvider, AnthropicProvider, BaseProvisioningProvider, } from './provisioning/index.js';
|
|
72
|
+
// ============================================================================
|
|
73
|
+
// Framework Integrations
|
|
74
|
+
// ============================================================================
|
|
75
|
+
export {
|
|
76
|
+
// Base provider
|
|
77
|
+
WisperaCredentialProvider,
|
|
78
|
+
// Framework-specific providers
|
|
79
|
+
WisperaLangChainProvider, WisperaOpenAIAgentProvider, WisperaA2AProvider, WisperaSlackProvider, } from './integrations/index.js';
|
|
80
|
+
export { PLATFORM_ENV_MAP, resolveEnvVarName, getPlatformEnvVars, } from './integrations/index.js';
|
|
81
|
+
// ============================================================================
|
|
82
|
+
// Exec — Secure credential injection via subprocess
|
|
83
|
+
// ============================================================================
|
|
84
|
+
export { execWithCredentials } from './exec/index.js';
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// Authentication
|
|
87
|
+
// ============================================================================
|
|
88
|
+
export { PassphraseProvider, SessionTokenManager, SESSION_TOKEN_ENV_VAR, KeychainProvider, } from './auth/index.js';
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Utilities
|
|
91
|
+
// ============================================================================
|
|
92
|
+
export { MS_PER_DAY, maskValue, capitalizeFirst, previewToken, toArray, getErrorMessage, pathExists, getRandomBytes, getCryptoSubtle, toBufferSource, } from './utils.js';
|
|
93
|
+
// ============================================================================
|
|
94
|
+
// Package Info
|
|
95
|
+
// ============================================================================
|
|
96
|
+
export const VERSION = '0.1.0';
|
|
97
|
+
export const PACKAGE_NAME = '@id-wispera/core';
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID Wispera Base Integration Provider
|
|
3
|
+
* Common credential access logic shared by all framework integrations
|
|
4
|
+
*/
|
|
5
|
+
import type { Passport, Platform } from '../types.js';
|
|
6
|
+
import type { Vault } from '../vault.js';
|
|
7
|
+
import type { IntegrationConfig, CredentialAccessOptions, CredentialResult, AvailableCredential, LLMConfig } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Base credential provider that all framework integrations extend.
|
|
10
|
+
* Handles vault access, caching, audit logging, and credential lookup.
|
|
11
|
+
*/
|
|
12
|
+
export declare class WisperaCredentialProvider {
|
|
13
|
+
protected vault: Vault;
|
|
14
|
+
protected actor: string;
|
|
15
|
+
protected enableCache: boolean;
|
|
16
|
+
protected logAccessDefault: boolean;
|
|
17
|
+
private cache;
|
|
18
|
+
constructor(config: IntegrationConfig);
|
|
19
|
+
/**
|
|
20
|
+
* Get a credential by passport name
|
|
21
|
+
*/
|
|
22
|
+
get(passportName: string, options?: CredentialAccessOptions): Promise<CredentialResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Get a credential value by passport name (convenience shorthand)
|
|
25
|
+
*/
|
|
26
|
+
getValue(passportName: string, options?: CredentialAccessOptions): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Get a credential filtered by platform
|
|
29
|
+
*/
|
|
30
|
+
getByPlatform(passportName: string, platform: Platform): Promise<CredentialResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Get OpenAI API key
|
|
33
|
+
*/
|
|
34
|
+
getOpenAIKey(passportName?: string): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Get Anthropic API key
|
|
37
|
+
*/
|
|
38
|
+
getAnthropicKey(passportName?: string): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Get Azure AI API key
|
|
41
|
+
*/
|
|
42
|
+
getAzureKey(passportName?: string): Promise<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Get LLM configuration for a credential
|
|
45
|
+
*/
|
|
46
|
+
getLLMConfig(passportName: string, model?: string): Promise<LLMConfig>;
|
|
47
|
+
/**
|
|
48
|
+
* List available credentials
|
|
49
|
+
*/
|
|
50
|
+
listAvailable(platform?: Platform): Promise<AvailableCredential[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Clear the credential cache
|
|
53
|
+
*/
|
|
54
|
+
clearCache(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Find a passport by name with optional platform filter
|
|
57
|
+
*/
|
|
58
|
+
protected findPassport(passportName: string, platform?: Platform): Promise<Passport>;
|
|
59
|
+
/**
|
|
60
|
+
* Detect LLM provider from platform list
|
|
61
|
+
*/
|
|
62
|
+
protected detectProvider(platforms: Platform[]): string | null;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/integrations/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,yBAAyB;IACpC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,KAAK,CAA4C;gBAE7C,MAAM,EAAE,iBAAiB;IAOrC;;OAEG;IACG,GAAG,CACP,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,gBAAgB,CAAC;IAgC5B;;OAEG;IACG,QAAQ,CACZ,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC;IAKlB;;OAEG;IACG,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,gBAAgB,CAAC;IAI5B;;OAEG;IACG,YAAY,CAAC,YAAY,GAAE,MAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;OAEG;IACG,eAAe,CAAC,YAAY,GAAE,MAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1E;;OAEG;IACG,WAAW,CAAC,YAAY,GAAE,MAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlE;;OAEG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC;IAwBrB;;OAEG;IACG,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmBxE;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;cACa,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,QAAQ,CAAC;IAkBpB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI;CAgB/D"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID Wispera Base Integration Provider
|
|
3
|
+
* Common credential access logic shared by all framework integrations
|
|
4
|
+
*/
|
|
5
|
+
import { listPassports } from '../passport.js';
|
|
6
|
+
import { logAction } from '../audit.js';
|
|
7
|
+
/**
|
|
8
|
+
* Base credential provider that all framework integrations extend.
|
|
9
|
+
* Handles vault access, caching, audit logging, and credential lookup.
|
|
10
|
+
*/
|
|
11
|
+
export class WisperaCredentialProvider {
|
|
12
|
+
vault;
|
|
13
|
+
actor;
|
|
14
|
+
enableCache;
|
|
15
|
+
logAccessDefault;
|
|
16
|
+
cache = new Map();
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.vault = config.vault;
|
|
19
|
+
this.actor = config.actor ?? 'integration';
|
|
20
|
+
this.enableCache = config.enableCache ?? true;
|
|
21
|
+
this.logAccessDefault = config.logAccess ?? true;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get a credential by passport name
|
|
25
|
+
*/
|
|
26
|
+
async get(passportName, options) {
|
|
27
|
+
const cacheKey = `${passportName}:${options?.platform ?? ''}`;
|
|
28
|
+
if (this.enableCache && this.cache.has(cacheKey)) {
|
|
29
|
+
return this.cache.get(cacheKey);
|
|
30
|
+
}
|
|
31
|
+
const passport = await this.findPassport(passportName, options?.platform);
|
|
32
|
+
const shouldLog = options?.logAccess ?? this.logAccessDefault;
|
|
33
|
+
if (shouldLog) {
|
|
34
|
+
await logAction(this.vault, {
|
|
35
|
+
passportId: passport.id,
|
|
36
|
+
action: 'accessed',
|
|
37
|
+
actor: this.actor,
|
|
38
|
+
platform: options?.platform ?? this.actor,
|
|
39
|
+
details: options?.purpose ?? `Credential accessed via ${this.actor} provider`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const result = {
|
|
43
|
+
value: passport.credentialValue,
|
|
44
|
+
passport,
|
|
45
|
+
};
|
|
46
|
+
if (this.enableCache) {
|
|
47
|
+
this.cache.set(cacheKey, result);
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get a credential value by passport name (convenience shorthand)
|
|
53
|
+
*/
|
|
54
|
+
async getValue(passportName, options) {
|
|
55
|
+
const result = await this.get(passportName, options);
|
|
56
|
+
return result.value;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get a credential filtered by platform
|
|
60
|
+
*/
|
|
61
|
+
async getByPlatform(passportName, platform) {
|
|
62
|
+
return this.get(passportName, { platform });
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get OpenAI API key
|
|
66
|
+
*/
|
|
67
|
+
async getOpenAIKey(passportName = 'openai') {
|
|
68
|
+
return this.getValue(passportName, { platform: 'openai' });
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get Anthropic API key
|
|
72
|
+
*/
|
|
73
|
+
async getAnthropicKey(passportName = 'anthropic') {
|
|
74
|
+
return this.getValue(passportName, { platform: 'anthropic' });
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get Azure AI API key
|
|
78
|
+
*/
|
|
79
|
+
async getAzureKey(passportName = 'azure') {
|
|
80
|
+
return this.getValue(passportName, { platform: 'azure-ai' });
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get LLM configuration for a credential
|
|
84
|
+
*/
|
|
85
|
+
async getLLMConfig(passportName, model) {
|
|
86
|
+
const result = await this.get(passportName);
|
|
87
|
+
const provider = this.detectProvider(result.passport.platforms);
|
|
88
|
+
const config = {
|
|
89
|
+
apiKey: result.value,
|
|
90
|
+
provider: provider ?? 'custom',
|
|
91
|
+
};
|
|
92
|
+
if (model) {
|
|
93
|
+
config.model = model;
|
|
94
|
+
}
|
|
95
|
+
else if (provider === 'openai') {
|
|
96
|
+
config.model = 'gpt-4';
|
|
97
|
+
}
|
|
98
|
+
else if (provider === 'anthropic') {
|
|
99
|
+
config.model = 'claude-sonnet-4-5-20250514';
|
|
100
|
+
}
|
|
101
|
+
else if (provider === 'azure') {
|
|
102
|
+
config.model = 'gpt-4';
|
|
103
|
+
}
|
|
104
|
+
else if (provider === 'google') {
|
|
105
|
+
config.model = 'gemini-pro';
|
|
106
|
+
}
|
|
107
|
+
return config;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* List available credentials
|
|
111
|
+
*/
|
|
112
|
+
async listAvailable(platform) {
|
|
113
|
+
const passports = await listPassports(this.vault);
|
|
114
|
+
return passports
|
|
115
|
+
.filter((p) => {
|
|
116
|
+
if (p.status !== 'active' && p.status !== 'expiring')
|
|
117
|
+
return false;
|
|
118
|
+
if (platform && !p.platforms.includes(platform))
|
|
119
|
+
return false;
|
|
120
|
+
return true;
|
|
121
|
+
})
|
|
122
|
+
.map((p) => ({
|
|
123
|
+
name: p.name,
|
|
124
|
+
id: p.id,
|
|
125
|
+
credentialType: p.credentialType,
|
|
126
|
+
platforms: p.platforms,
|
|
127
|
+
status: p.status,
|
|
128
|
+
tags: p.tags,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Clear the credential cache
|
|
133
|
+
*/
|
|
134
|
+
clearCache() {
|
|
135
|
+
this.cache.clear();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Find a passport by name with optional platform filter
|
|
139
|
+
*/
|
|
140
|
+
async findPassport(passportName, platform) {
|
|
141
|
+
const passports = await listPassports(this.vault);
|
|
142
|
+
for (const passport of passports) {
|
|
143
|
+
if (passport.name === passportName) {
|
|
144
|
+
if (platform && !passport.platforms.includes(platform)) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (passport.status !== 'active' && passport.status !== 'expiring') {
|
|
148
|
+
throw new Error(`Passport '${passportName}' is ${passport.status}`);
|
|
149
|
+
}
|
|
150
|
+
return passport;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
throw new Error(`Passport not found: ${passportName}`);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Detect LLM provider from platform list
|
|
157
|
+
*/
|
|
158
|
+
detectProvider(platforms) {
|
|
159
|
+
const providerMap = {
|
|
160
|
+
openai: 'openai',
|
|
161
|
+
anthropic: 'anthropic',
|
|
162
|
+
'azure-ai': 'azure',
|
|
163
|
+
'google-a2a': 'google',
|
|
164
|
+
};
|
|
165
|
+
for (const platform of platforms) {
|
|
166
|
+
if (platform in providerMap) {
|
|
167
|
+
return providerMap[platform];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=base.js.map
|