@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,95 @@
1
+ /**
2
+ * ID Wispera OpenAI Agents SDK Integration
3
+ * Credential provider for the OpenAI Agents SDK
4
+ *
5
+ * Manages API keys for agent initialization, tool credential injection,
6
+ * and multi-agent handoffs with scoped credentials.
7
+ *
8
+ * Usage:
9
+ * import { WisperaOpenAIAgentProvider } from '@id-wispera/core';
10
+ *
11
+ * const provider = new WisperaOpenAIAgentProvider({ vault });
12
+ * const apiKey = await provider.getAgentKey('coding-agent');
13
+ */
14
+ import { WisperaCredentialProvider } from './base.js';
15
+ /**
16
+ * OpenAI Agents SDK credential provider.
17
+ * Manages governed credentials for OpenAI agents, tools, and handoffs.
18
+ */
19
+ export class WisperaOpenAIAgentProvider extends WisperaCredentialProvider {
20
+ constructor(config) {
21
+ super({ ...config, actor: config.actor ?? 'openai-agents' });
22
+ }
23
+ /**
24
+ * Get an API key for agent initialization.
25
+ * Looks up a passport by name and returns the key for use with the Agents SDK.
26
+ */
27
+ async getAgentKey(passportName = 'openai') {
28
+ return this.getValue(passportName, {
29
+ platform: 'openai',
30
+ purpose: 'Agent initialization',
31
+ });
32
+ }
33
+ /**
34
+ * Get OpenAI-specific agent configuration.
35
+ * Returns model and API key for agent setup.
36
+ */
37
+ async getAgentConfig(passportName = 'openai', model) {
38
+ const config = await this.getLLMConfig(passportName, model);
39
+ if (!config.model) {
40
+ config.model = 'gpt-4';
41
+ }
42
+ config.provider = 'openai';
43
+ return config;
44
+ }
45
+ /**
46
+ * Get credentials for a tool that the agent will use.
47
+ * Returns auth details formatted for tool configuration.
48
+ */
49
+ async getToolAuth(toolPassportName, options) {
50
+ const result = await this.get(toolPassportName, {
51
+ purpose: `Tool authentication for ${toolPassportName}`,
52
+ });
53
+ return {
54
+ tool: toolPassportName,
55
+ credential: result.value,
56
+ headerName: options?.headerName ?? 'Authorization',
57
+ headerTemplate: options?.headerTemplate ?? `Bearer ${result.value}`,
58
+ };
59
+ }
60
+ /**
61
+ * Get scoped credentials for an agent handoff.
62
+ * Validates that the target agent is permitted in the delegation chain
63
+ * and returns the credential if the scope is allowed.
64
+ */
65
+ async getHandoffCredential(passportName, handoff) {
66
+ const result = await this.get(passportName, {
67
+ purpose: `Handoff to agent: ${handoff.targetAgent}`,
68
+ });
69
+ // Validate scope if specified
70
+ if (handoff.allowedScopes && handoff.allowedScopes.length > 0) {
71
+ const passportScopes = result.passport.scope;
72
+ const permitted = handoff.allowedScopes.every((s) => passportScopes.includes(s));
73
+ if (!permitted) {
74
+ throw new Error(`Scope not permitted for handoff to ${handoff.targetAgent}. ` +
75
+ `Requested: [${handoff.allowedScopes.join(', ')}], ` +
76
+ `Available: [${passportScopes.join(', ')}]`);
77
+ }
78
+ }
79
+ return result;
80
+ }
81
+ /**
82
+ * Get multiple tool credentials at once for agent setup.
83
+ * Returns a map of tool name to credential value.
84
+ */
85
+ async getToolCredentials(toolPassportMap) {
86
+ const results = {};
87
+ for (const [toolName, passportName] of Object.entries(toolPassportMap)) {
88
+ results[toolName] = await this.getValue(passportName, {
89
+ purpose: `Tool credential for ${toolName}`,
90
+ });
91
+ }
92
+ return results;
93
+ }
94
+ }
95
+ //# sourceMappingURL=openai-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-agents.js","sourceRoot":"","sources":["../../src/integrations/openai-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * ID Wispera Slack Integration
3
+ * Manages Slack bot tokens, webhook URLs, and app-level tokens as governed passports
4
+ *
5
+ * Usage:
6
+ * import { WisperaSlackProvider } from '@id-wispera/core';
7
+ *
8
+ * const provider = new WisperaSlackProvider({ vault });
9
+ * const botToken = await provider.getBotToken('my-slack-bot');
10
+ */
11
+ import { WisperaCredentialProvider } from './base.js';
12
+ import type { IntegrationConfig, SlackCredentialResult, AvailableCredential } from './types.js';
13
+ /**
14
+ * Slack credential provider.
15
+ * Manages bot tokens, user tokens, app-level tokens, and webhook URLs.
16
+ */
17
+ export declare class WisperaSlackProvider extends WisperaCredentialProvider {
18
+ constructor(config: IntegrationConfig);
19
+ /**
20
+ * Get a Slack bot token (xoxb-...)
21
+ */
22
+ getBotToken(passportName?: string): Promise<string>;
23
+ /**
24
+ * Get a Slack app-level token (xapp-...)
25
+ */
26
+ getAppToken(passportName?: string): Promise<string>;
27
+ /**
28
+ * Get a Slack user token (xoxp-...)
29
+ */
30
+ getUserToken(passportName?: string): Promise<string>;
31
+ /**
32
+ * Get a Slack webhook URL
33
+ */
34
+ getWebhookUrl(passportName?: string): Promise<string>;
35
+ /**
36
+ * Get a typed Slack credential with token type detection
37
+ */
38
+ getSlackCredential(passportName: string): Promise<SlackCredentialResult>;
39
+ /**
40
+ * List all available Slack credentials
41
+ */
42
+ listSlackCredentials(): Promise<AvailableCredential[]>;
43
+ /**
44
+ * Get multiple Slack tokens at once (e.g., bot + app tokens for Socket Mode)
45
+ */
46
+ getSocketModeTokens(botPassportName?: string, appPassportName?: string): Promise<{
47
+ botToken: string;
48
+ appToken: string;
49
+ }>;
50
+ /**
51
+ * Detect the type of a Slack token from its prefix
52
+ */
53
+ private detectTokenType;
54
+ /**
55
+ * Extract team/workspace ID from passport tags
56
+ */
57
+ private extractTeamId;
58
+ }
59
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/integrations/slack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EAErB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,yBAAyB;gBACrD,MAAM,EAAE,iBAAiB;IAIrC;;OAEG;IACG,WAAW,CAAC,YAAY,GAAE,MAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtE;;OAEG;IACG,WAAW,CAAC,YAAY,GAAE,MAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtE;;OAEG;IACG,YAAY,CAAC,YAAY,GAAE,MAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxE;;OAEG;IACG,aAAa,CAAC,YAAY,GAAE,MAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5E;;OAEG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAe9E;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAU5D;;OAEG;IACG,mBAAmB,CACvB,eAAe,GAAE,MAAoB,EACrC,eAAe,GAAE,MAAoB,GACpC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IASlD;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,aAAa;CAOtB"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * ID Wispera Slack Integration
3
+ * Manages Slack bot tokens, webhook URLs, and app-level tokens as governed passports
4
+ *
5
+ * Usage:
6
+ * import { WisperaSlackProvider } from '@id-wispera/core';
7
+ *
8
+ * const provider = new WisperaSlackProvider({ vault });
9
+ * const botToken = await provider.getBotToken('my-slack-bot');
10
+ */
11
+ import { WisperaCredentialProvider } from './base.js';
12
+ /**
13
+ * Slack credential provider.
14
+ * Manages bot tokens, user tokens, app-level tokens, and webhook URLs.
15
+ */
16
+ export class WisperaSlackProvider extends WisperaCredentialProvider {
17
+ constructor(config) {
18
+ super({ ...config, actor: config.actor ?? 'slack' });
19
+ }
20
+ /**
21
+ * Get a Slack bot token (xoxb-...)
22
+ */
23
+ async getBotToken(passportName = 'slack-bot') {
24
+ return this.getValue(passportName, {
25
+ purpose: 'Slack bot token access',
26
+ });
27
+ }
28
+ /**
29
+ * Get a Slack app-level token (xapp-...)
30
+ */
31
+ async getAppToken(passportName = 'slack-app') {
32
+ return this.getValue(passportName, {
33
+ purpose: 'Slack app-level token access',
34
+ });
35
+ }
36
+ /**
37
+ * Get a Slack user token (xoxp-...)
38
+ */
39
+ async getUserToken(passportName = 'slack-user') {
40
+ return this.getValue(passportName, {
41
+ purpose: 'Slack user token access',
42
+ });
43
+ }
44
+ /**
45
+ * Get a Slack webhook URL
46
+ */
47
+ async getWebhookUrl(passportName = 'slack-webhook') {
48
+ return this.getValue(passportName, {
49
+ purpose: 'Slack webhook URL access',
50
+ });
51
+ }
52
+ /**
53
+ * Get a typed Slack credential with token type detection
54
+ */
55
+ async getSlackCredential(passportName) {
56
+ const result = await this.get(passportName, {
57
+ purpose: 'Slack credential access',
58
+ });
59
+ const tokenType = this.detectTokenType(result.value);
60
+ const teamId = this.extractTeamId(result.passport.tags);
61
+ return {
62
+ ...result,
63
+ tokenType,
64
+ teamId,
65
+ };
66
+ }
67
+ /**
68
+ * List all available Slack credentials
69
+ */
70
+ async listSlackCredentials() {
71
+ const all = await this.listAvailable();
72
+ return all.filter((cred) => cred.tags.includes('slack') ||
73
+ cred.credentialType === 'bot-token' ||
74
+ cred.name.toLowerCase().includes('slack'));
75
+ }
76
+ /**
77
+ * Get multiple Slack tokens at once (e.g., bot + app tokens for Socket Mode)
78
+ */
79
+ async getSocketModeTokens(botPassportName = 'slack-bot', appPassportName = 'slack-app') {
80
+ const [botToken, appToken] = await Promise.all([
81
+ this.getBotToken(botPassportName),
82
+ this.getAppToken(appPassportName),
83
+ ]);
84
+ return { botToken, appToken };
85
+ }
86
+ /**
87
+ * Detect the type of a Slack token from its prefix
88
+ */
89
+ detectTokenType(value) {
90
+ if (value.startsWith('xoxb-'))
91
+ return 'bot';
92
+ if (value.startsWith('xoxp-'))
93
+ return 'user';
94
+ if (value.startsWith('xapp-'))
95
+ return 'app-level';
96
+ if (value.startsWith('https://hooks.slack.com/'))
97
+ return 'webhook';
98
+ return 'bot'; // Default assumption
99
+ }
100
+ /**
101
+ * Extract team/workspace ID from passport tags
102
+ */
103
+ extractTeamId(tags) {
104
+ for (const tag of tags) {
105
+ if (tag.startsWith('team:'))
106
+ return tag.slice(5);
107
+ if (tag.startsWith('workspace:'))
108
+ return tag.slice(10);
109
+ }
110
+ return undefined;
111
+ }
112
+ }
113
+ //# sourceMappingURL=slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/integrations/slack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAQtD;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,yBAAyB;IACjE,YAAY,MAAyB;QACnC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,eAAuB,WAAW;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YACjC,OAAO,EAAE,wBAAwB;SAClC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,eAAuB,WAAW;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YACjC,OAAO,EAAE,8BAA8B;SACxC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,eAAuB,YAAY;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YACjC,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,eAAuB,eAAe;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;YACjC,OAAO,EAAE,0BAA0B;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAAoB;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAC1C,OAAO,EAAE,yBAAyB;SACnC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAExD,OAAO;YACL,GAAG,MAAM;YACT,SAAS;YACT,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,MAAM,CACf,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,cAAc,KAAK,WAAW;YACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,kBAA0B,WAAW,EACrC,kBAA0B,WAAW;QAErC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAa;QACnC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC;QAC7C,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,WAAW,CAAC;QAClD,IAAI,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAAE,OAAO,SAAS,CAAC;QACnE,OAAO,KAAK,CAAC,CAAC,qBAAqB;IACrC,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAc;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * ID Wispera Integration Types
3
+ * Shared types for all framework integrations
4
+ */
5
+ import type { Passport, Platform } from '../types.js';
6
+ import type { Vault } from '../vault.js';
7
+ /**
8
+ * Configuration for initializing an integration provider
9
+ */
10
+ export interface IntegrationConfig {
11
+ /** Vault instance to use for credential access */
12
+ vault: Vault;
13
+ /** Actor name for audit logging (e.g., "langchain", "openai-agents") */
14
+ actor?: string;
15
+ /** Whether to cache credentials in memory (default: true) */
16
+ enableCache?: boolean;
17
+ /** Whether to log credential access to audit trail (default: true) */
18
+ logAccess?: boolean;
19
+ }
20
+ /**
21
+ * Options for retrieving a credential
22
+ */
23
+ export interface CredentialAccessOptions {
24
+ /** Optional platform filter */
25
+ platform?: Platform;
26
+ /** Whether to log this access (overrides provider default) */
27
+ logAccess?: boolean;
28
+ /** Purpose of access (recorded in audit log) */
29
+ purpose?: string;
30
+ }
31
+ /**
32
+ * A credential result returned by integrations
33
+ */
34
+ export interface CredentialResult {
35
+ /** The raw credential value */
36
+ value: string;
37
+ /** The passport that contains this credential */
38
+ passport: Passport;
39
+ }
40
+ /**
41
+ * Summary of an available credential (no sensitive data)
42
+ */
43
+ export interface AvailableCredential {
44
+ /** Passport name */
45
+ name: string;
46
+ /** Passport ID */
47
+ id: string;
48
+ /** Credential type */
49
+ credentialType: string;
50
+ /** Platforms this credential is valid for */
51
+ platforms: Platform[];
52
+ /** Current status */
53
+ status: string;
54
+ /** Tags */
55
+ tags: string[];
56
+ }
57
+ /**
58
+ * LLM provider configuration returned by integrations
59
+ */
60
+ export interface LLMConfig {
61
+ /** The API key */
62
+ apiKey: string;
63
+ /** The provider name (openai, anthropic, azure, google) */
64
+ provider: string;
65
+ /** The model to use */
66
+ model?: string;
67
+ /** Additional provider-specific config */
68
+ [key: string]: unknown;
69
+ }
70
+ /**
71
+ * Slack credential types
72
+ */
73
+ export type SlackTokenType = 'bot' | 'user' | 'app-level' | 'webhook';
74
+ /**
75
+ * Slack credential result with typed metadata
76
+ */
77
+ export interface SlackCredentialResult extends CredentialResult {
78
+ /** The type of Slack token */
79
+ tokenType: SlackTokenType;
80
+ /** Slack workspace/team ID if known */
81
+ teamId?: string;
82
+ }
83
+ /**
84
+ * Google A2A Agent Card credential fields
85
+ */
86
+ export interface A2AAgentCredentials {
87
+ /** Agent authentication token */
88
+ authToken: string;
89
+ /** Agent identity (from passport name) */
90
+ agentId: string;
91
+ /** Scopes the agent is authorized for */
92
+ scopes: string[];
93
+ /** When the credential expires */
94
+ expiresAt?: string;
95
+ }
96
+ /**
97
+ * Google A2A task credential scoping
98
+ */
99
+ export interface A2ATaskCredentials {
100
+ /** Credentials scoped for this task */
101
+ credentials: Map<string, CredentialResult>;
102
+ /** Task ID */
103
+ taskId: string;
104
+ /** Scopes permitted for this task */
105
+ scopes: string[];
106
+ }
107
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/integrations/types.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;AAEzC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,KAAK,EAAE,KAAK,CAAC;IACb,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,8BAA8B;IAC9B,SAAS,EAAE,cAAc,CAAC;IAC1B,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * ID Wispera Integration Types
3
+ * Shared types for all framework integrations
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/integrations/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * ID Wispera Credential Locations Registry
3
+ * Defines well-known credential storage paths for various providers
4
+ */
5
+ import { VisaType, CredentialType } from './types.js';
6
+ /**
7
+ * Risk level for credentials
8
+ */
9
+ export type RiskLevel = 'critical' | 'high' | 'medium' | 'low';
10
+ /**
11
+ * Credential classification from scan
12
+ */
13
+ export interface CredentialClassification {
14
+ /** Human-readable name */
15
+ name: string;
16
+ /** Credential type */
17
+ credentialType: CredentialType;
18
+ /** Recommended visa type */
19
+ visaType: VisaType;
20
+ /** Risk level */
21
+ riskLevel: RiskLevel;
22
+ /** Platform tags */
23
+ platforms: string[];
24
+ /** Auto-generated tags */
25
+ tags: string[];
26
+ /** Issuing authority */
27
+ issuingAuthority: string;
28
+ /** Additional context */
29
+ context?: Record<string, unknown>;
30
+ }
31
+ /**
32
+ * A discovered credential from scanning
33
+ */
34
+ export interface DiscoveredCredential {
35
+ /** Provider that owns this credential */
36
+ provider: string;
37
+ /** File path where credential was found */
38
+ filePath: string;
39
+ /** Classification details */
40
+ classification: CredentialClassification;
41
+ /** The raw credential value (for import) */
42
+ rawValue: string;
43
+ /** Extracted metadata */
44
+ metadata: Record<string, unknown>;
45
+ /** Expiry date if known */
46
+ expiresAt?: Date;
47
+ /** Whether the file has insecure permissions */
48
+ insecurePermissions?: boolean;
49
+ }
50
+ /**
51
+ * Result of scanning a location
52
+ */
53
+ export interface LocationScanResult {
54
+ /** Path that was scanned */
55
+ path: string;
56
+ /** Whether the path exists */
57
+ exists: boolean;
58
+ /** Whether the path is readable */
59
+ readable: boolean;
60
+ /** Error message if not readable */
61
+ error?: string;
62
+ /** Discovered credentials */
63
+ credentials: DiscoveredCredential[];
64
+ /** Permission warning if applicable */
65
+ permissionWarning?: string;
66
+ }
67
+ /**
68
+ * Provider definition with credential locations
69
+ */
70
+ export interface ProviderDefinition {
71
+ /** Provider identifier */
72
+ id: string;
73
+ /** Human-readable name */
74
+ name: string;
75
+ /** Description */
76
+ description: string;
77
+ /** Detection function - returns true if provider is installed */
78
+ detect: () => Promise<boolean>;
79
+ /** Credential locations to scan */
80
+ locations: ProviderLocation[];
81
+ }
82
+ /**
83
+ * A location where credentials are stored
84
+ */
85
+ export interface ProviderLocation {
86
+ /** Location identifier */
87
+ id: string;
88
+ /** Human-readable name */
89
+ name: string;
90
+ /** Path pattern (supports {home}, {accountId}, {agentId}, etc.) */
91
+ pathPattern: string;
92
+ /** File pattern to match (glob) */
93
+ filePattern?: string;
94
+ /** Parser function for this location */
95
+ parse: (filePath: string, content: string) => DiscoveredCredential[];
96
+ }
97
+ /**
98
+ * Expand path patterns like {home} to actual paths
99
+ */
100
+ export declare function expandPath(pattern: string, vars?: Record<string, string>): string;
101
+ /**
102
+ * Get the home directory
103
+ */
104
+ export declare function getHomeDir(): string;
105
+ /**
106
+ * OpenClaw provider definition
107
+ */
108
+ export declare const openclawProvider: ProviderDefinition;
109
+ /**
110
+ * AWS provider definition
111
+ */
112
+ export declare const awsProvider: ProviderDefinition;
113
+ /**
114
+ * SSH provider definition
115
+ */
116
+ export declare const sshProvider: ProviderDefinition;
117
+ /**
118
+ * Docker provider definition
119
+ */
120
+ export declare const dockerProvider: ProviderDefinition;
121
+ /**
122
+ * npm provider definition
123
+ */
124
+ export declare const npmProvider: ProviderDefinition;
125
+ /**
126
+ * Kubernetes provider definition
127
+ */
128
+ export declare const kubernetesProvider: ProviderDefinition;
129
+ /**
130
+ * All registered providers
131
+ */
132
+ export declare const providers: ProviderDefinition[];
133
+ /**
134
+ * Get provider by ID
135
+ */
136
+ export declare function getProvider(id: string): ProviderDefinition | undefined;
137
+ /**
138
+ * Get all provider IDs
139
+ */
140
+ export declare function getProviderIds(): string[];
141
+ /**
142
+ * Detect which providers are installed
143
+ */
144
+ export declare function detectInstalledProviders(): Promise<ProviderDefinition[]>;
145
+ /**
146
+ * Get risk level emoji
147
+ */
148
+ export declare function getRiskEmoji(level: RiskLevel): string;
149
+ /**
150
+ * Get risk level label
151
+ */
152
+ export declare function getRiskLabel(level: RiskLevel): string;
153
+ /**
154
+ * Sort credentials by risk level (critical first)
155
+ */
156
+ export declare function sortByRisk(credentials: DiscoveredCredential[]): DiscoveredCredential[];
157
+ //# sourceMappingURL=locations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locations.d.ts","sourceRoot":"","sources":["../src/locations.ts"],"names":[],"mappings":"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"}