@dainprotocol/service-sdk 2.0.53 → 2.0.54

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 (105) hide show
  1. package/README.md +78 -0
  2. package/dist/__tests__/api-sdk.test.d.ts +1 -0
  3. package/dist/__tests__/api-sdk.test.js +102 -0
  4. package/dist/__tests__/api-sdk.test.js.map +1 -0
  5. package/dist/__tests__/auth.test.d.ts +1 -0
  6. package/dist/__tests__/auth.test.js +110 -0
  7. package/dist/__tests__/auth.test.js.map +1 -0
  8. package/dist/__tests__/citations-plugin.test.d.ts +1 -0
  9. package/dist/__tests__/citations-plugin.test.js +491 -0
  10. package/dist/__tests__/citations-plugin.test.js.map +1 -0
  11. package/dist/__tests__/context-behavior.test.d.ts +1 -0
  12. package/dist/__tests__/context-behavior.test.js +290 -0
  13. package/dist/__tests__/context-behavior.test.js.map +1 -0
  14. package/dist/__tests__/convertToVercelTool.test.d.ts +1 -0
  15. package/dist/__tests__/convertToVercelTool.test.js +527 -0
  16. package/dist/__tests__/convertToVercelTool.test.js.map +1 -0
  17. package/dist/__tests__/core.test.d.ts +1 -0
  18. package/dist/__tests__/core.test.js +154 -0
  19. package/dist/__tests__/core.test.js.map +1 -0
  20. package/dist/__tests__/crypto-plugin.test.d.ts +1 -0
  21. package/dist/__tests__/crypto-plugin.test.js +694 -0
  22. package/dist/__tests__/crypto-plugin.test.js.map +1 -0
  23. package/dist/__tests__/humanActions.test.d.ts +1 -0
  24. package/dist/__tests__/humanActions.test.js +221 -0
  25. package/dist/__tests__/humanActions.test.js.map +1 -0
  26. package/dist/__tests__/integration.test.d.ts +1 -0
  27. package/dist/__tests__/integration.test.js +1573 -0
  28. package/dist/__tests__/integration.test.js.map +1 -0
  29. package/dist/__tests__/mealMeSchemas.test.d.ts +576 -0
  30. package/dist/__tests__/mealMeSchemas.test.js +627 -0
  31. package/dist/__tests__/mealMeSchemas.test.js.map +1 -0
  32. package/dist/__tests__/oauth-context-simple.test.d.ts +1 -0
  33. package/dist/__tests__/oauth-context-simple.test.js +90 -0
  34. package/dist/__tests__/oauth-context-simple.test.js.map +1 -0
  35. package/dist/__tests__/oauth-context.test.d.ts +1 -0
  36. package/dist/__tests__/oauth-context.test.js +282 -0
  37. package/dist/__tests__/oauth-context.test.js.map +1 -0
  38. package/dist/__tests__/oauth.test.d.ts +1 -0
  39. package/dist/__tests__/oauth.test.js +378 -0
  40. package/dist/__tests__/oauth.test.js.map +1 -0
  41. package/dist/__tests__/oauth2-client-context.test.d.ts +1 -0
  42. package/dist/__tests__/oauth2-client-context.test.js +165 -0
  43. package/dist/__tests__/oauth2-client-context.test.js.map +1 -0
  44. package/dist/__tests__/oauth2-client-integration.test.d.ts +1 -0
  45. package/dist/__tests__/oauth2-client-integration.test.js +182 -0
  46. package/dist/__tests__/oauth2-client-integration.test.js.map +1 -0
  47. package/dist/__tests__/oauth2-client-simple.test.d.ts +1 -0
  48. package/dist/__tests__/oauth2-client-simple.test.js +144 -0
  49. package/dist/__tests__/oauth2-client-simple.test.js.map +1 -0
  50. package/dist/__tests__/oauth2-context.test.d.ts +1 -0
  51. package/dist/__tests__/oauth2-context.test.js +201 -0
  52. package/dist/__tests__/oauth2-context.test.js.map +1 -0
  53. package/dist/__tests__/oauth2-datasource.test.d.ts +1 -0
  54. package/dist/__tests__/oauth2-datasource.test.js +251 -0
  55. package/dist/__tests__/oauth2-datasource.test.js.map +1 -0
  56. package/dist/__tests__/plugin.test.d.ts +1 -0
  57. package/dist/__tests__/plugin.test.js +900 -0
  58. package/dist/__tests__/plugin.test.js.map +1 -0
  59. package/dist/__tests__/processes.test.d.ts +1 -0
  60. package/dist/__tests__/processes.test.js +239 -0
  61. package/dist/__tests__/processes.test.js.map +1 -0
  62. package/dist/__tests__/streaming.test.d.ts +1 -0
  63. package/dist/__tests__/streaming.test.js +592 -0
  64. package/dist/__tests__/streaming.test.js.map +1 -0
  65. package/dist/__tests__/testEnums.d.ts +1 -0
  66. package/dist/__tests__/testEnums.js +73 -0
  67. package/dist/__tests__/testEnums.js.map +1 -0
  68. package/dist/__tests__/testOptionals.test.d.ts +1 -0
  69. package/dist/__tests__/testOptionals.test.js +83 -0
  70. package/dist/__tests__/testOptionals.test.js.map +1 -0
  71. package/dist/__tests__/types.test.d.ts +1 -0
  72. package/dist/__tests__/types.test.js +98 -0
  73. package/dist/__tests__/types.test.js.map +1 -0
  74. package/dist/client/client.d.ts +18 -5
  75. package/dist/client/client.js +25 -4
  76. package/dist/client/client.js.map +1 -1
  77. package/dist/client/types.d.ts +38 -0
  78. package/dist/client/types.js +35 -1
  79. package/dist/client/types.js.map +1 -1
  80. package/dist/service/actionable-tools.d.ts +135 -0
  81. package/dist/service/actionable-tools.js +144 -0
  82. package/dist/service/actionable-tools.js.map +1 -0
  83. package/dist/service/direct-auth-setup.d.ts +154 -0
  84. package/dist/service/direct-auth-setup.js +308 -0
  85. package/dist/service/direct-auth-setup.js.map +1 -0
  86. package/dist/service/index.d.ts +3 -1
  87. package/dist/service/index.js +10 -1
  88. package/dist/service/index.js.map +1 -1
  89. package/dist/service/nodeService.js +2 -0
  90. package/dist/service/nodeService.js.map +1 -1
  91. package/dist/service/oauth2.d.ts +40 -1
  92. package/dist/service/oauth2.js +46 -0
  93. package/dist/service/oauth2.js.map +1 -1
  94. package/dist/service/oauth2Manager.d.ts +31 -4
  95. package/dist/service/oauth2Manager.js +119 -8
  96. package/dist/service/oauth2Manager.js.map +1 -1
  97. package/dist/service/server.js +93 -19
  98. package/dist/service/server.js.map +1 -1
  99. package/dist/service/service.js +6 -1
  100. package/dist/service/service.js.map +1 -1
  101. package/dist/service/types.d.ts +59 -0
  102. package/dist/service/zod-json-converter.d.ts +14 -0
  103. package/dist/service/zod-json-converter.js +203 -0
  104. package/dist/service/zod-json-converter.js.map +1 -0
  105. package/package.json +9 -10
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ // File: src/service/direct-auth-setup.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DirectAuthSetupManager = void 0;
5
+ const crypto_1 = require("crypto");
6
+ /**
7
+ * DirectAuthSetupManager - Manages temporary setup codes for direct authentication providers
8
+ *
9
+ * Used for services that require user-provided configuration without external OAuth flow
10
+ * Examples: Telegram bot (chat ID), SMS (phone number), custom API endpoints
11
+ *
12
+ * Storage Strategy:
13
+ * - Uses StorageAdapter (backed by database from @dainprotocol/oauth2-storage-drizzle)
14
+ * - Pending setups: Stored as tokens with provider `setup_pending_{provider}`
15
+ * - userId field = setup code (for quick lookup)
16
+ * - email field = actual user ID
17
+ * - metadata = { originalUserId, provider, expiresAt }
18
+ * - token.expiresAt = expiry timestamp
19
+ * - Completed setups: Stored as tokens with provider `{provider}`
20
+ * - userId field = user ID
21
+ * - metadata = { chatId, username, firstName, etc. }
22
+ */
23
+ class DirectAuthSetupManager {
24
+ storage;
25
+ constructor(storage) {
26
+ this.storage = storage;
27
+ }
28
+ /**
29
+ * Generate a cryptographically secure setup code
30
+ * 32 hex characters (16 bytes entropy)
31
+ */
32
+ generateSetupCode() {
33
+ return (0, crypto_1.randomBytes)(16).toString('hex');
34
+ }
35
+ /**
36
+ * Get the pending provider name for storage
37
+ */
38
+ getPendingProviderName(provider) {
39
+ return `setup_pending_${provider}`;
40
+ }
41
+ /**
42
+ * Create a pending setup for a user and provider
43
+ *
44
+ * @param userId - The user ID (e.g., smart account ID)
45
+ * @param provider - The provider name (e.g., 'telegram')
46
+ * @param expiryMinutes - How long the setup code is valid (default: 15 minutes)
47
+ * @returns The generated setup code
48
+ */
49
+ async createSetup(userId, provider, expiryMinutes = 15) {
50
+ const setupCode = this.generateSetupCode();
51
+ const expiresAt = Date.now() + (expiryMinutes * 60 * 1000);
52
+ const pendingProvider = this.getPendingProviderName(provider);
53
+ // Store pending setup using StorageAdapter
54
+ // We use setupCode as userId for quick lookup when verifying
55
+ // The actual userId is stored in the email field and metadata
56
+ await this.storage.saveToken({
57
+ provider: pendingProvider,
58
+ userId: setupCode, // Use setup code as userId for lookup
59
+ email: `${userId}@dain.local`, // Store actual userId in email field
60
+ token: {
61
+ accessToken: setupCode,
62
+ expiresAt: new Date(expiresAt),
63
+ tokenType: 'pending_setup'
64
+ },
65
+ metadata: {
66
+ originalUserId: userId,
67
+ provider: provider,
68
+ expiresAt: expiresAt,
69
+ createdAt: Date.now()
70
+ }
71
+ });
72
+ console.log(`[DirectAuthSetupManager] Created setup code for user ${userId}, provider ${provider}, expires in ${expiryMinutes} minutes`);
73
+ return setupCode;
74
+ }
75
+ /**
76
+ * Verify a setup code is valid and not expired
77
+ *
78
+ * @param setupCode - The setup code to verify
79
+ * @param provider - The provider name
80
+ * @returns The pending setup info if valid, null otherwise
81
+ */
82
+ async verifySetup(setupCode, provider) {
83
+ const pendingProvider = this.getPendingProviderName(provider);
84
+ try {
85
+ // Look up the setup code (stored as userId)
86
+ const tokens = await this.storage.queryTokens({
87
+ userId: setupCode,
88
+ provider: pendingProvider
89
+ });
90
+ if (!tokens || tokens.length === 0) {
91
+ console.log(`[DirectAuthSetupManager] Setup code not found: ${setupCode.substring(0, 8)}...`);
92
+ return null;
93
+ }
94
+ const token = tokens[0];
95
+ const metadata = token.metadata;
96
+ // Check expiry
97
+ const expiresAt = metadata?.expiresAt || 0;
98
+ if (Date.now() > expiresAt) {
99
+ console.log(`[DirectAuthSetupManager] Setup code expired: ${setupCode.substring(0, 8)}...`);
100
+ // Clean up expired token
101
+ await this.storage.deleteTokenByProviderEmail(pendingProvider, `${metadata.originalUserId}@dain.local`);
102
+ return null;
103
+ }
104
+ return {
105
+ setupCode,
106
+ userId: metadata.originalUserId,
107
+ provider: metadata.provider,
108
+ expiresAt
109
+ };
110
+ }
111
+ catch (error) {
112
+ console.error(`[DirectAuthSetupManager] Error verifying setup:`, error);
113
+ return null;
114
+ }
115
+ }
116
+ /**
117
+ * Complete setup and store the provider configuration
118
+ *
119
+ * @param setupCode - The setup code that was verified
120
+ * @param provider - The provider name
121
+ * @param config - The configuration to store (e.g., { chatId: 123456789 })
122
+ * @returns Result indicating success or failure
123
+ */
124
+ async completeSetup(setupCode, provider, config) {
125
+ // First verify the setup code
126
+ const pendingSetup = await this.verifySetup(setupCode, provider);
127
+ if (!pendingSetup) {
128
+ return {
129
+ success: false,
130
+ error: 'Invalid or expired setup code'
131
+ };
132
+ }
133
+ const { userId } = pendingSetup;
134
+ const pendingProvider = this.getPendingProviderName(provider);
135
+ try {
136
+ // Store the completed setup as a token for the actual provider
137
+ // This makes it accessible via hasValidTokens() and getTokensByUserId()
138
+ // Use far-future expiry for direct auth configs (10 years)
139
+ const farFutureExpiry = new Date(Date.now() + 10 * 365 * 24 * 60 * 60 * 1000);
140
+ await this.storage.saveToken({
141
+ provider: provider,
142
+ userId: userId,
143
+ email: `${userId}@dain.local`,
144
+ token: {
145
+ accessToken: 'direct_auth_configured',
146
+ expiresAt: farFutureExpiry,
147
+ tokenType: 'configured'
148
+ },
149
+ metadata: {
150
+ ...config,
151
+ configuredAt: Date.now(),
152
+ setupCode: setupCode.substring(0, 8) + '...' // Store partial code for debugging
153
+ }
154
+ });
155
+ // Delete the pending setup
156
+ await this.storage.deleteTokenByProviderEmail(pendingProvider, `${userId}@dain.local`);
157
+ console.log(`[DirectAuthSetupManager] Completed setup for user ${userId}, provider ${provider}`);
158
+ return {
159
+ success: true,
160
+ userId
161
+ };
162
+ }
163
+ catch (error) {
164
+ console.error(`[DirectAuthSetupManager] Error completing setup:`, error);
165
+ return {
166
+ success: false,
167
+ error: error.message || 'Failed to complete setup'
168
+ };
169
+ }
170
+ }
171
+ /**
172
+ * Check if a user has completed setup for a provider
173
+ *
174
+ * @param userId - The user ID
175
+ * @param provider - The provider name
176
+ * @returns True if setup is complete
177
+ */
178
+ async isSetupComplete(userId, provider) {
179
+ try {
180
+ const tokens = await this.storage.queryTokens({
181
+ userId: userId,
182
+ provider: provider
183
+ });
184
+ return tokens.length > 0;
185
+ }
186
+ catch (error) {
187
+ console.error(`[DirectAuthSetupManager] Error checking setup status:`, error);
188
+ return false;
189
+ }
190
+ }
191
+ /**
192
+ * Get the stored configuration for a user and provider
193
+ *
194
+ * @param userId - The user ID
195
+ * @param provider - The provider name
196
+ * @returns The stored config or null if not found
197
+ */
198
+ async getProviderConfig(userId, provider) {
199
+ try {
200
+ const tokens = await this.storage.queryTokens({
201
+ userId: userId,
202
+ provider: provider
203
+ });
204
+ if (!tokens || tokens.length === 0) {
205
+ return null;
206
+ }
207
+ return tokens[0].metadata;
208
+ }
209
+ catch (error) {
210
+ console.error(`[DirectAuthSetupManager] Error getting provider config:`, error);
211
+ return null;
212
+ }
213
+ }
214
+ /**
215
+ * Delete provider configuration for a user
216
+ * Used when user wants to disconnect/revoke access
217
+ *
218
+ * @param userId - The user ID
219
+ * @param provider - The provider name
220
+ * @returns True if deleted successfully
221
+ */
222
+ async deleteProviderConfig(userId, provider) {
223
+ try {
224
+ await this.storage.deleteTokenByProviderEmail(provider, `${userId}@dain.local`);
225
+ console.log(`[DirectAuthSetupManager] Deleted config for user ${userId}, provider ${provider}`);
226
+ return true;
227
+ }
228
+ catch (error) {
229
+ console.error(`[DirectAuthSetupManager] Error deleting config:`, error);
230
+ return false;
231
+ }
232
+ }
233
+ /**
234
+ * Get pending setup status for a user
235
+ * Useful for showing setup progress in UI
236
+ *
237
+ * @param userId - The user ID
238
+ * @param provider - The provider name
239
+ * @returns Pending setup info if exists, null otherwise
240
+ */
241
+ async getPendingSetup(userId, provider) {
242
+ const pendingProvider = this.getPendingProviderName(provider);
243
+ try {
244
+ // We need to search by the actual user ID in email/metadata
245
+ // This is less efficient but necessary since we store by setup code
246
+ const allTokens = await this.storage.queryTokens({
247
+ provider: pendingProvider
248
+ });
249
+ for (const token of allTokens) {
250
+ const metadata = token.metadata;
251
+ if (metadata?.originalUserId === userId) {
252
+ const expiresAt = metadata?.expiresAt || 0;
253
+ // Check expiry
254
+ if (Date.now() > expiresAt) {
255
+ // Clean up expired token
256
+ await this.storage.deleteTokenByProviderEmail(pendingProvider, `${userId}@dain.local`);
257
+ return null;
258
+ }
259
+ return {
260
+ setupCode: token.userId,
261
+ userId: metadata.originalUserId,
262
+ provider: metadata.provider,
263
+ expiresAt
264
+ };
265
+ }
266
+ }
267
+ return null;
268
+ }
269
+ catch (error) {
270
+ console.error(`[DirectAuthSetupManager] Error getting pending setup:`, error);
271
+ return null;
272
+ }
273
+ }
274
+ /**
275
+ * Cleanup expired pending setups
276
+ * Should be called periodically to prevent stale data accumulation
277
+ *
278
+ * @param provider - The provider name to clean up
279
+ * @returns Number of expired setups cleaned up
280
+ */
281
+ async cleanupExpiredSetups(provider) {
282
+ const pendingProvider = this.getPendingProviderName(provider);
283
+ let cleanedUp = 0;
284
+ try {
285
+ const allTokens = await this.storage.queryTokens({
286
+ provider: pendingProvider
287
+ });
288
+ for (const token of allTokens) {
289
+ const metadata = token.metadata;
290
+ const expiresAt = metadata?.expiresAt || 0;
291
+ if (Date.now() > expiresAt) {
292
+ await this.storage.deleteTokenByProviderEmail(pendingProvider, token.email || `${metadata?.originalUserId}@dain.local`);
293
+ cleanedUp++;
294
+ }
295
+ }
296
+ if (cleanedUp > 0) {
297
+ console.log(`[DirectAuthSetupManager] Cleaned up ${cleanedUp} expired ${provider} setups`);
298
+ }
299
+ return cleanedUp;
300
+ }
301
+ catch (error) {
302
+ console.error(`[DirectAuthSetupManager] Error cleaning up expired setups:`, error);
303
+ return 0;
304
+ }
305
+ }
306
+ }
307
+ exports.DirectAuthSetupManager = DirectAuthSetupManager;
308
+ //# sourceMappingURL=direct-auth-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-auth-setup.js","sourceRoot":"","sources":["../../src/service/direct-auth-setup.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,9 @@ import { requireScope } from "./server";
9
9
  import { hasScope, hasAllScopes, hasAnyScope } from "./auth";
10
10
  import { WebhookTriggerRegistry, createWebhookTriggerRegistry, createSimpleTrigger, type WebhookTrigger, type WebhookTriggerDefinition, type WebhookProcessResult } from "./webhooks";
11
11
  import { HITLHandler, routeActionToService, type HITLConfig, type HITLResult } from "./hitl";
12
+ import { ActionableToolBaseSchema, ActionSchema, MetadataSchema, extendActionableSchema, buildActionableTool, validateActionableSchema, type ActionableToolInput, type Action, type AutomationMetadata } from "./actionable-tools";
13
+ import { DirectAuthSetupManager, type DirectAuthAdapter, type OnboardingUI, type PendingSetup, type SetupCompletionResult } from "./direct-auth-setup";
12
14
  export declare const defineDAINService: (config: DAINServiceConfig) => DAINService;
13
- export { defineNodeService, defineDenoService, defineCloudflareService, createNextDainService, createTool, createService, createToolbox, CoreUtils, createOAuth2Tool, createAgent, ProcessHandler, RedisProcessStore, MemoryProcessStore, requireScope, hasScope, hasAllScopes, hasAnyScope, WebhookTriggerRegistry, createWebhookTriggerRegistry, createSimpleTrigger, type WebhookTrigger, type WebhookTriggerDefinition, type WebhookProcessResult, HITLHandler, routeActionToService, type HITLConfig, type HITLResult, };
15
+ export { defineNodeService, defineDenoService, defineCloudflareService, createNextDainService, createTool, createService, createToolbox, CoreUtils, createOAuth2Tool, createAgent, ProcessHandler, RedisProcessStore, MemoryProcessStore, requireScope, hasScope, hasAllScopes, hasAnyScope, WebhookTriggerRegistry, createWebhookTriggerRegistry, createSimpleTrigger, type WebhookTrigger, type WebhookTriggerDefinition, type WebhookProcessResult, HITLHandler, routeActionToService, type HITLConfig, type HITLResult, ActionableToolBaseSchema, ActionSchema, MetadataSchema, extendActionableSchema, buildActionableTool, validateActionableSchema, type ActionableToolInput, type Action, type AutomationMetadata, DirectAuthSetupManager, type DirectAuthAdapter, type OnboardingUI, type PendingSetup, type SetupCompletionResult, };
14
16
  export * from './types';
15
17
  export * from './oauth2Store';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // File: src/service/index.ts
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.routeActionToService = exports.HITLHandler = exports.createSimpleTrigger = exports.createWebhookTriggerRegistry = exports.WebhookTriggerRegistry = exports.hasAnyScope = exports.hasAllScopes = exports.hasScope = exports.requireScope = exports.MemoryProcessStore = exports.RedisProcessStore = exports.ProcessHandler = exports.createAgent = exports.createOAuth2Tool = exports.CoreUtils = exports.createToolbox = exports.createService = exports.createTool = exports.createNextDainService = exports.defineCloudflareService = exports.defineDenoService = exports.defineNodeService = exports.defineDAINService = void 0;
4
+ exports.DirectAuthSetupManager = exports.validateActionableSchema = exports.buildActionableTool = exports.extendActionableSchema = exports.MetadataSchema = exports.ActionSchema = exports.ActionableToolBaseSchema = exports.routeActionToService = exports.HITLHandler = exports.createSimpleTrigger = exports.createWebhookTriggerRegistry = exports.WebhookTriggerRegistry = exports.hasAnyScope = exports.hasAllScopes = exports.hasScope = exports.requireScope = exports.MemoryProcessStore = exports.RedisProcessStore = exports.ProcessHandler = exports.createAgent = exports.createOAuth2Tool = exports.CoreUtils = exports.createToolbox = exports.createService = exports.createTool = exports.createNextDainService = exports.defineCloudflareService = exports.defineDenoService = exports.defineNodeService = exports.defineDAINService = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  const nodeService_1 = require("./nodeService");
7
7
  Object.defineProperty(exports, "defineNodeService", { enumerable: true, get: function () { return nodeService_1.defineDAINService; } });
@@ -35,6 +35,15 @@ Object.defineProperty(exports, "createSimpleTrigger", { enumerable: true, get: f
35
35
  const hitl_1 = require("./hitl");
36
36
  Object.defineProperty(exports, "HITLHandler", { enumerable: true, get: function () { return hitl_1.HITLHandler; } });
37
37
  Object.defineProperty(exports, "routeActionToService", { enumerable: true, get: function () { return hitl_1.routeActionToService; } });
38
+ const actionable_tools_1 = require("./actionable-tools");
39
+ Object.defineProperty(exports, "ActionableToolBaseSchema", { enumerable: true, get: function () { return actionable_tools_1.ActionableToolBaseSchema; } });
40
+ Object.defineProperty(exports, "ActionSchema", { enumerable: true, get: function () { return actionable_tools_1.ActionSchema; } });
41
+ Object.defineProperty(exports, "MetadataSchema", { enumerable: true, get: function () { return actionable_tools_1.MetadataSchema; } });
42
+ Object.defineProperty(exports, "extendActionableSchema", { enumerable: true, get: function () { return actionable_tools_1.extendActionableSchema; } });
43
+ Object.defineProperty(exports, "buildActionableTool", { enumerable: true, get: function () { return actionable_tools_1.buildActionableTool; } });
44
+ Object.defineProperty(exports, "validateActionableSchema", { enumerable: true, get: function () { return actionable_tools_1.validateActionableSchema; } });
45
+ const direct_auth_setup_1 = require("./direct-auth-setup");
46
+ Object.defineProperty(exports, "DirectAuthSetupManager", { enumerable: true, get: function () { return direct_auth_setup_1.DirectAuthSetupManager; } });
38
47
  const defineDAINService = (config) => {
39
48
  throw new Error("This is a fallback implementation. Use the appropriate runtime-specific import.");
40
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;;;;AAG7B,+CAAuE;AA4BrE,kGA5B4B,+BAAiB,OA4B5B;AA3BnB,+CAAuE;AA4BrE,kGA5B4B,+BAAiB,OA4B5B;AA3BnB,2DAAmF;AA4BjF,wGA5B4B,qCAAuB,OA4B5B;AA3BzB,+CAAsD;AA4BpD,sGA5BO,mCAAqB,OA4BP;AA3BvB,iCAA4G;AA4B1G,2FA5BO,iBAAU,OA4BP;AACV,8FA7BmB,oBAAa,OA6BnB;AACb,8FA9BkC,oBAAa,OA8BlC;AACb,0FA/BiD,gBAAS,OA+BjD;AACT,iGAhC4D,uBAAgB,OAgC5D;AAChB,4FAjC8E,kBAAW,OAiC9E;AAhCb,2CAAoF;AAiClF,+FAjCO,0BAAc,OAiCP;AACd,kGAlCuB,6BAAiB,OAkCvB;AACjB,mGAnC0C,8BAAkB,OAmC1C;AAlCpB,qCAAwC;AAmCtC,6FAnCO,qBAAY,OAmCP;AAlCd,iCAA6D;AAmC3D,yFAnCO,eAAQ,OAmCP;AACR,6FApCiB,mBAAY,OAoCjB;AACZ,4FArC+B,kBAAW,OAqC/B;AApCb,yCAOoB;AA+BlB,uGArCA,iCAAsB,OAqCA;AACtB,6GArCA,uCAA4B,OAqCA;AAC5B,oGArCA,8BAAmB,OAqCA;AAhCrB,iCAKgB;AAgCd,4FApCA,kBAAW,OAoCA;AACX,qGApCA,2BAAoB,OAoCA;AA/Bf,MAAM,iBAAiB,GAAG,CAAC,MAAyB,EAAe,EAAE;IAC1E,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;AACrG,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAkCF,sBAAsB;AACtB,kDAAwB;AAExB,wDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;;;;AAG7B,+CAAuE;AA8CrE,kGA9C4B,+BAAiB,OA8C5B;AA7CnB,+CAAuE;AA8CrE,kGA9C4B,+BAAiB,OA8C5B;AA7CnB,2DAAmF;AA8CjF,wGA9C4B,qCAAuB,OA8C5B;AA7CzB,+CAAsD;AA8CpD,sGA9CO,mCAAqB,OA8CP;AA7CvB,iCAA4G;AA8C1G,2FA9CO,iBAAU,OA8CP;AACV,8FA/CmB,oBAAa,OA+CnB;AACb,8FAhDkC,oBAAa,OAgDlC;AACb,0FAjDiD,gBAAS,OAiDjD;AACT,iGAlD4D,uBAAgB,OAkD5D;AAChB,4FAnD8E,kBAAW,OAmD9E;AAlDb,2CAAoF;AAmDlF,+FAnDO,0BAAc,OAmDP;AACd,kGApDuB,6BAAiB,OAoDvB;AACjB,mGArD0C,8BAAkB,OAqD1C;AApDpB,qCAAwC;AAqDtC,6FArDO,qBAAY,OAqDP;AApDd,iCAA6D;AAqD3D,yFArDO,eAAQ,OAqDP;AACR,6FAtDiB,mBAAY,OAsDjB;AACZ,4FAvD+B,kBAAW,OAuD/B;AAtDb,yCAOoB;AAiDlB,uGAvDA,iCAAsB,OAuDA;AACtB,6GAvDA,uCAA4B,OAuDA;AAC5B,oGAvDA,8BAAmB,OAuDA;AAlDrB,iCAKgB;AAkDd,4FAtDA,kBAAW,OAsDA;AACX,qGAtDA,2BAAoB,OAsDA;AAlDtB,yDAU4B;AA4C1B,yGArDA,2CAAwB,OAqDA;AACxB,6FArDA,+BAAY,OAqDA;AACZ,+FArDA,iCAAc,OAqDA;AACd,uGArDA,yCAAsB,OAqDA;AACtB,oGArDA,sCAAmB,OAqDA;AACnB,yGArDA,2CAAwB,OAqDA;AAhD1B,2DAM6B;AA+C3B,uGApDA,0CAAsB,OAoDA;AA7CjB,MAAM,iBAAiB,GAAG,CAAC,MAAyB,EAAe,EAAE;IAC1E,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;AACrG,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAkDF,sBAAsB;AACtB,kDAAwB;AAExB,wDAA8B"}
@@ -49,7 +49,9 @@ function defineDAINService(config) {
49
49
  server.close();
50
50
  },
51
51
  app: service,
52
+ oauth2: service.oauth2,
52
53
  oauth2Client: service.oauth2 ? service.oauth2.getClient() : undefined,
54
+ setupManager: service.oauth2 ? service.oauth2.getSetupManager() : undefined,
53
55
  server: server,
54
56
  };
55
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nodeService.js","sourceRoot":"","sources":["../../src/service/nodeService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodeService.js","sourceRoot":"","sources":["../../src/service/nodeService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { OAuth2ProviderConfig } from "./types";
1
+ import { OAuth2ProviderConfig, DirectProviderConfig, ProviderInfo } from "./types";
2
2
  import { StorageAdapter, OAuth2Client } from "@dainprotocol/oauth2-token-manager";
3
+ import { DirectAuthSetupManager } from "./direct-auth-setup";
3
4
  interface StateData {
4
5
  agentId: string;
5
6
  provider: string;
@@ -14,12 +15,50 @@ export declare class OAuth2Handler {
14
15
  * @returns The OAuth2Client instance
15
16
  */
16
17
  getClient(): OAuth2Client;
18
+ /**
19
+ * Get the DirectAuthSetupManager for direct provider setup flows
20
+ * @returns The DirectAuthSetupManager instance
21
+ */
22
+ getSetupManager(): DirectAuthSetupManager;
17
23
  constructor(privateKey: string, baseUrl: string, tokenStore?: StorageAdapter);
24
+ /**
25
+ * Register an OAuth2 provider
26
+ * @param name Provider name (e.g., 'google', 'slack')
27
+ * @param config OAuth2 configuration
28
+ */
18
29
  registerProvider(name: string, config: OAuth2ProviderConfig): void;
30
+ /**
31
+ * Register a direct configuration provider (non-OAuth2)
32
+ * Used for services that require user-provided config without external OAuth flow
33
+ * Examples: Telegram bot (chat ID), SMS (phone number)
34
+ *
35
+ * @param name Provider name (e.g., 'telegram', 'sms')
36
+ * @param config Direct provider configuration
37
+ */
38
+ registerDirectProvider(name: string, config: DirectProviderConfig): void;
19
39
  generateAuthUrl(provider: string, agentId: string): Promise<string>;
20
40
  handleCallback(code: string, state: string): Promise<void>;
21
41
  hasValidTokens(provider: string, agentId: string): Promise<boolean>;
22
42
  getAccounts(provider: string, agentId: string): Promise<any[]>;
43
+ /**
44
+ * Get unified authentication providers (OAuth2 + Direct)
45
+ * Returns provider info with type discrimination and connection status
46
+ *
47
+ * @param agentId Agent/user ID
48
+ * @returns Array of provider information with auth methods
49
+ */
50
+ getAuthenticationProviders(agentId: string): Promise<ProviderInfo[]>;
51
+ /**
52
+ * Get auto-generated contexts for direct providers
53
+ * Automatically creates ServiceContext objects that expose setup values to AI
54
+ *
55
+ * @returns Array of ServiceContext objects
56
+ */
57
+ getDirectProviderContexts(): import("./types").ServiceContext<any>[];
58
+ /**
59
+ * Get OAuth2 providers (legacy method for backward compatibility)
60
+ * @deprecated Use getAuthenticationProviders() instead for full provider support
61
+ */
23
62
  getProviders(agentId: string): Promise<Array<{
24
63
  name: string;
25
64
  config: Omit<OAuth2ProviderConfig, 'clientSecret' | 'onSuccess'>;
@@ -14,15 +14,38 @@ class OAuth2Handler {
14
14
  getClient() {
15
15
  return this.manager.client;
16
16
  }
17
+ /**
18
+ * Get the DirectAuthSetupManager for direct provider setup flows
19
+ * @returns The DirectAuthSetupManager instance
20
+ */
21
+ getSetupManager() {
22
+ return this.manager.setupManager;
23
+ }
17
24
  constructor(privateKey, baseUrl, tokenStore) {
18
25
  this.privateKey = privateKey;
19
26
  // Use provided storage or default to in-memory storage
20
27
  const storage = tokenStore || new oauth2_token_manager_1.InMemoryStorageAdapter();
21
28
  this.manager = new oauth2Manager_1.OAuth2Manager(baseUrl, storage);
22
29
  }
30
+ /**
31
+ * Register an OAuth2 provider
32
+ * @param name Provider name (e.g., 'google', 'slack')
33
+ * @param config OAuth2 configuration
34
+ */
23
35
  registerProvider(name, config) {
24
36
  this.manager.registerProvider(name, config);
25
37
  }
38
+ /**
39
+ * Register a direct configuration provider (non-OAuth2)
40
+ * Used for services that require user-provided config without external OAuth flow
41
+ * Examples: Telegram bot (chat ID), SMS (phone number)
42
+ *
43
+ * @param name Provider name (e.g., 'telegram', 'sms')
44
+ * @param config Direct provider configuration
45
+ */
46
+ registerDirectProvider(name, config) {
47
+ this.manager.registerDirectProvider(name, config);
48
+ }
26
49
  async generateAuthUrl(provider, agentId) {
27
50
  return this.manager.generateAuthUrl(provider, agentId);
28
51
  }
@@ -35,6 +58,29 @@ class OAuth2Handler {
35
58
  async getAccounts(provider, agentId) {
36
59
  return this.manager.getAccounts(provider, agentId);
37
60
  }
61
+ /**
62
+ * Get unified authentication providers (OAuth2 + Direct)
63
+ * Returns provider info with type discrimination and connection status
64
+ *
65
+ * @param agentId Agent/user ID
66
+ * @returns Array of provider information with auth methods
67
+ */
68
+ async getAuthenticationProviders(agentId) {
69
+ return this.manager.getAuthenticationProviders(agentId);
70
+ }
71
+ /**
72
+ * Get auto-generated contexts for direct providers
73
+ * Automatically creates ServiceContext objects that expose setup values to AI
74
+ *
75
+ * @returns Array of ServiceContext objects
76
+ */
77
+ getDirectProviderContexts() {
78
+ return this.manager.getDirectProviderContexts();
79
+ }
80
+ /**
81
+ * Get OAuth2 providers (legacy method for backward compatibility)
82
+ * @deprecated Use getAuthenticationProviders() instead for full provider support
83
+ */
38
84
  async getProviders(agentId) {
39
85
  const allProviders = this.manager.getProviders();
40
86
  const providers = await Promise.all(Object.entries(allProviders).map(async ([name, config]) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../src/service/oauth2.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAChD,+CAAoD;AACpD,6EAA0G;AAS1G,MAAa,aAAa;IAChB,OAAO,CAAgB;IACd,UAAU,CAAS;IAEpC;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,YAAY,UAAkB,EAAE,OAAe,EAAE,UAA2B;QAC1E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,uDAAuD;QACvD,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,6CAAsB,EAAE,CAAC;QAE3D,IAAI,CAAC,OAAO,GAAG,IAAI,6BAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,MAA4B;QACzD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,OAAe;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,KAAa;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,OAAe;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,OAAe;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAKhC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,IAAI;YACJ,MAAM,EAAE;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC;YACD,SAAS,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;SAC5D,CAAC,CAAC,CACJ,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,WAAW,CAAC,IAAe;QAC/B,OAAO,MAAM,IAAA,uBAAQ,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,OAAO,MAAM,IAAA,yBAAU,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;CACF;AAxED,sCAwEC"}
1
+ {"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../src/service/oauth2.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,27 @@
1
1
  import { OAuth2Client, StorageAdapter, StoredToken } from '@dainprotocol/oauth2-token-manager';
2
- import { OAuth2ProviderConfig, OAuth2Tokens } from './types';
2
+ import { OAuth2ProviderConfig, OAuth2Tokens, DirectProviderConfig, ProviderInfo, ServiceContext } from './types';
3
+ import { DirectAuthSetupManager } from './direct-auth-setup';
3
4
  /**
4
5
  * OAuth2Manager - A clean integration with @dainprotocol/oauth2-token-manager
6
+ * Supports both OAuth2 and direct configuration providers
5
7
  */
6
8
  export declare class OAuth2Manager {
7
9
  readonly client: OAuth2Client;
10
+ readonly setupManager: DirectAuthSetupManager;
11
+ readonly storage: StorageAdapter;
8
12
  private baseUrl;
9
13
  private providerConfigs;
14
+ private directProviders;
10
15
  constructor(baseUrl: string, storage?: StorageAdapter);
11
16
  /**
12
- * Register a provider with the OAuth2 client
17
+ * Register an OAuth2 provider
13
18
  */
14
19
  registerProvider(name: string, config: OAuth2ProviderConfig): void;
20
+ /**
21
+ * Register a direct configuration provider (non-OAuth2)
22
+ * Users provide config directly (e.g., Telegram chat ID) without external OAuth flow
23
+ */
24
+ registerDirectProvider(name: string, config: DirectProviderConfig): void;
15
25
  /**
16
26
  * Generate authorization URL
17
27
  */
@@ -34,11 +44,13 @@ export declare class OAuth2Manager {
34
44
  */
35
45
  deleteTokens(provider: string, agentId: string): Promise<void>;
36
46
  /**
37
- * Get all configured providers
47
+ * Get all configured OAuth2 providers (legacy - returns only OAuth2, not direct providers)
48
+ * @deprecated Use getAuthenticationProviders() for full provider list
38
49
  */
39
50
  getProviders(): Record<string, OAuth2ProviderConfig>;
40
51
  /**
41
- * Get a specific provider config
52
+ * Get a specific OAuth2 provider config (legacy - only returns OAuth2 providers)
53
+ * @deprecated Use getAuthenticationProviders() for full provider info
42
54
  */
43
55
  getProvider(name: string): OAuth2ProviderConfig | undefined;
44
56
  /**
@@ -47,4 +59,19 @@ export declare class OAuth2Manager {
47
59
  * @returns Array of stored tokens for the user and provider
48
60
  */
49
61
  getAccounts(provider: string, agentId: string): Promise<StoredToken[]>;
62
+ /**
63
+ * Get all authentication providers (OAuth2 + Direct) with connection status
64
+ * Returns unified provider information with type discrimination
65
+ *
66
+ * @param agentId Agent/user ID
67
+ * @returns Array of provider info with auth methods
68
+ */
69
+ getAuthenticationProviders(agentId: string): Promise<ProviderInfo[]>;
70
+ /**
71
+ * Get auto-generated contexts for direct providers
72
+ * Automatically creates contexts that expose setup values to AI
73
+ *
74
+ * @returns Array of ServiceContext objects, one per direct provider
75
+ */
76
+ getDirectProviderContexts(): ServiceContext[];
50
77
  }