@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.
Files changed (154) hide show
  1. package/README.md +268 -0
  2. package/dist/audit.d.ts +68 -0
  3. package/dist/audit.d.ts.map +1 -0
  4. package/dist/audit.js +252 -0
  5. package/dist/audit.js.map +1 -0
  6. package/dist/auth/index.d.ts +8 -0
  7. package/dist/auth/index.d.ts.map +1 -0
  8. package/dist/auth/index.js +8 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/auth/keychainProvider.d.ts +40 -0
  11. package/dist/auth/keychainProvider.d.ts.map +1 -0
  12. package/dist/auth/keychainProvider.js +98 -0
  13. package/dist/auth/keychainProvider.js.map +1 -0
  14. package/dist/auth/passphraseProvider.d.ts +80 -0
  15. package/dist/auth/passphraseProvider.d.ts.map +1 -0
  16. package/dist/auth/passphraseProvider.js +188 -0
  17. package/dist/auth/passphraseProvider.js.map +1 -0
  18. package/dist/auth/sessionTokenManager.d.ts +106 -0
  19. package/dist/auth/sessionTokenManager.d.ts.map +1 -0
  20. package/dist/auth/sessionTokenManager.js +263 -0
  21. package/dist/auth/sessionTokenManager.js.map +1 -0
  22. package/dist/delegation.d.ts +81 -0
  23. package/dist/delegation.d.ts.map +1 -0
  24. package/dist/delegation.js +299 -0
  25. package/dist/delegation.js.map +1 -0
  26. package/dist/detection.d.ts +35 -0
  27. package/dist/detection.d.ts.map +1 -0
  28. package/dist/detection.js +474 -0
  29. package/dist/detection.js.map +1 -0
  30. package/dist/exec/execManager.d.ts +60 -0
  31. package/dist/exec/execManager.d.ts.map +1 -0
  32. package/dist/exec/execManager.js +226 -0
  33. package/dist/exec/execManager.js.map +1 -0
  34. package/dist/exec/index.d.ts +6 -0
  35. package/dist/exec/index.d.ts.map +1 -0
  36. package/dist/exec/index.js +5 -0
  37. package/dist/exec/index.js.map +1 -0
  38. package/dist/index.d.ts +35 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +98 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/integrations/base.d.ts +64 -0
  43. package/dist/integrations/base.d.ts.map +1 -0
  44. package/dist/integrations/base.js +173 -0
  45. package/dist/integrations/base.js.map +1 -0
  46. package/dist/integrations/envMapping.d.ts +47 -0
  47. package/dist/integrations/envMapping.d.ts.map +1 -0
  48. package/dist/integrations/envMapping.js +174 -0
  49. package/dist/integrations/envMapping.js.map +1 -0
  50. package/dist/integrations/google-a2a.d.ts +48 -0
  51. package/dist/integrations/google-a2a.d.ts.map +1 -0
  52. package/dist/integrations/google-a2a.js +108 -0
  53. package/dist/integrations/google-a2a.js.map +1 -0
  54. package/dist/integrations/index.d.ts +14 -0
  55. package/dist/integrations/index.d.ts.map +1 -0
  56. package/dist/integrations/index.js +14 -0
  57. package/dist/integrations/index.js.map +1 -0
  58. package/dist/integrations/langchain.d.ts +38 -0
  59. package/dist/integrations/langchain.d.ts.map +1 -0
  60. package/dist/integrations/langchain.js +45 -0
  61. package/dist/integrations/langchain.js.map +1 -0
  62. package/dist/integrations/openai-agents.d.ts +76 -0
  63. package/dist/integrations/openai-agents.d.ts.map +1 -0
  64. package/dist/integrations/openai-agents.js +95 -0
  65. package/dist/integrations/openai-agents.js.map +1 -0
  66. package/dist/integrations/slack.d.ts +59 -0
  67. package/dist/integrations/slack.d.ts.map +1 -0
  68. package/dist/integrations/slack.js +113 -0
  69. package/dist/integrations/slack.js.map +1 -0
  70. package/dist/integrations/types.d.ts +107 -0
  71. package/dist/integrations/types.d.ts.map +1 -0
  72. package/dist/integrations/types.js +6 -0
  73. package/dist/integrations/types.js.map +1 -0
  74. package/dist/locations.d.ts +157 -0
  75. package/dist/locations.d.ts.map +1 -0
  76. package/dist/locations.js +733 -0
  77. package/dist/locations.js.map +1 -0
  78. package/dist/passport.d.ts +70 -0
  79. package/dist/passport.d.ts.map +1 -0
  80. package/dist/passport.js +429 -0
  81. package/dist/passport.js.map +1 -0
  82. package/dist/policy.d.ts +80 -0
  83. package/dist/policy.d.ts.map +1 -0
  84. package/dist/policy.js +392 -0
  85. package/dist/policy.js.map +1 -0
  86. package/dist/providers/openclaw.d.ts +80 -0
  87. package/dist/providers/openclaw.d.ts.map +1 -0
  88. package/dist/providers/openclaw.js +712 -0
  89. package/dist/providers/openclaw.js.map +1 -0
  90. package/dist/provisioning/adminPassport.d.ts +51 -0
  91. package/dist/provisioning/adminPassport.d.ts.map +1 -0
  92. package/dist/provisioning/adminPassport.js +101 -0
  93. package/dist/provisioning/adminPassport.js.map +1 -0
  94. package/dist/provisioning/index.d.ts +81 -0
  95. package/dist/provisioning/index.d.ts.map +1 -0
  96. package/dist/provisioning/index.js +141 -0
  97. package/dist/provisioning/index.js.map +1 -0
  98. package/dist/provisioning/provider.d.ts +59 -0
  99. package/dist/provisioning/provider.d.ts.map +1 -0
  100. package/dist/provisioning/provider.js +52 -0
  101. package/dist/provisioning/provider.js.map +1 -0
  102. package/dist/provisioning/providers/anthropic.d.ts +32 -0
  103. package/dist/provisioning/providers/anthropic.d.ts.map +1 -0
  104. package/dist/provisioning/providers/anthropic.js +116 -0
  105. package/dist/provisioning/providers/anthropic.js.map +1 -0
  106. package/dist/provisioning/providers/aws.d.ts +29 -0
  107. package/dist/provisioning/providers/aws.d.ts.map +1 -0
  108. package/dist/provisioning/providers/aws.js +455 -0
  109. package/dist/provisioning/providers/aws.js.map +1 -0
  110. package/dist/provisioning/providers/azure-entra.d.ts +32 -0
  111. package/dist/provisioning/providers/azure-entra.d.ts.map +1 -0
  112. package/dist/provisioning/providers/azure-entra.js +312 -0
  113. package/dist/provisioning/providers/azure-entra.js.map +1 -0
  114. package/dist/provisioning/providers/github.d.ts +24 -0
  115. package/dist/provisioning/providers/github.d.ts.map +1 -0
  116. package/dist/provisioning/providers/github.js +219 -0
  117. package/dist/provisioning/providers/github.js.map +1 -0
  118. package/dist/provisioning/providers/google-cloud.d.ts +34 -0
  119. package/dist/provisioning/providers/google-cloud.d.ts.map +1 -0
  120. package/dist/provisioning/providers/google-cloud.js +366 -0
  121. package/dist/provisioning/providers/google-cloud.js.map +1 -0
  122. package/dist/provisioning/providers/openai.d.ts +29 -0
  123. package/dist/provisioning/providers/openai.d.ts.map +1 -0
  124. package/dist/provisioning/providers/openai.js +263 -0
  125. package/dist/provisioning/providers/openai.js.map +1 -0
  126. package/dist/provisioning/providers/sendgrid.d.ts +27 -0
  127. package/dist/provisioning/providers/sendgrid.d.ts.map +1 -0
  128. package/dist/provisioning/providers/sendgrid.js +186 -0
  129. package/dist/provisioning/providers/sendgrid.js.map +1 -0
  130. package/dist/provisioning/providers/twilio.d.ts +27 -0
  131. package/dist/provisioning/providers/twilio.d.ts.map +1 -0
  132. package/dist/provisioning/providers/twilio.js +194 -0
  133. package/dist/provisioning/providers/twilio.js.map +1 -0
  134. package/dist/provisioning/types.d.ts +274 -0
  135. package/dist/provisioning/types.d.ts.map +1 -0
  136. package/dist/provisioning/types.js +6 -0
  137. package/dist/provisioning/types.js.map +1 -0
  138. package/dist/sharing.d.ts +60 -0
  139. package/dist/sharing.d.ts.map +1 -0
  140. package/dist/sharing.js +305 -0
  141. package/dist/sharing.js.map +1 -0
  142. package/dist/types.d.ts +396 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +88 -0
  145. package/dist/types.js.map +1 -0
  146. package/dist/utils.d.ts +45 -0
  147. package/dist/utils.d.ts.map +1 -0
  148. package/dist/utils.js +110 -0
  149. package/dist/utils.js.map +1 -0
  150. package/dist/vault.d.ts +151 -0
  151. package/dist/vault.d.ts.map +1 -0
  152. package/dist/vault.js +499 -0
  153. package/dist/vault.js.map +1 -0
  154. 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,6 @@
1
+ /**
2
+ * Exec Module — Secure credential injection via subprocess
3
+ */
4
+ export { execWithCredentials } from './execManager.js';
5
+ export type { ExecPassportSpec, ExecOptions, ExecResult } from './execManager.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ /**
2
+ * Exec Module — Secure credential injection via subprocess
3
+ */
4
+ export { execWithCredentials } from './execManager.js';
5
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -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