@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,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":"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"}
|
|
@@ -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 @@
|
|
|
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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"}
|