@commandable/mcp-core 0.2.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 (157) hide show
  1. package/LICENSE +10 -0
  2. package/README.md +8 -0
  3. package/dist/config/configApply.d.ts +16 -0
  4. package/dist/config/configApply.d.ts.map +1 -0
  5. package/dist/config/configApply.js +77 -0
  6. package/dist/config/configApply.js.map +1 -0
  7. package/dist/config/configLoader.d.ts +9 -0
  8. package/dist/config/configLoader.d.ts.map +1 -0
  9. package/dist/config/configLoader.js +75 -0
  10. package/dist/config/configLoader.js.map +1 -0
  11. package/dist/config/configSchema.d.ts +45 -0
  12. package/dist/config/configSchema.d.ts.map +1 -0
  13. package/dist/config/configSchema.js +23 -0
  14. package/dist/config/configSchema.js.map +1 -0
  15. package/dist/crypto/encryption.d.ts +3 -0
  16. package/dist/crypto/encryption.d.ts.map +1 -0
  17. package/dist/crypto/encryption.js +29 -0
  18. package/dist/crypto/encryption.js.map +1 -0
  19. package/dist/db/client.d.ts +24 -0
  20. package/dist/db/client.d.ts.map +1 -0
  21. package/dist/db/client.js +50 -0
  22. package/dist/db/client.js.map +1 -0
  23. package/dist/db/credentialStore.d.ts +15 -0
  24. package/dist/db/credentialStore.d.ts.map +1 -0
  25. package/dist/db/credentialStore.js +56 -0
  26. package/dist/db/credentialStore.js.map +1 -0
  27. package/dist/db/integrationStore.d.ts +14 -0
  28. package/dist/db/integrationStore.d.ts.map +1 -0
  29. package/dist/db/integrationStore.js +128 -0
  30. package/dist/db/integrationStore.js.map +1 -0
  31. package/dist/db/integrationTypeConfigStore.d.ts +7 -0
  32. package/dist/db/integrationTypeConfigStore.d.ts.map +1 -0
  33. package/dist/db/integrationTypeConfigStore.js +101 -0
  34. package/dist/db/integrationTypeConfigStore.js.map +1 -0
  35. package/dist/db/migrate.d.ts +3 -0
  36. package/dist/db/migrate.d.ts.map +1 -0
  37. package/dist/db/migrate.js +11 -0
  38. package/dist/db/migrate.js.map +1 -0
  39. package/dist/db/migrations/pg/0000_initial.sql +74 -0
  40. package/dist/db/migrations/pg/meta/_journal.json +13 -0
  41. package/dist/db/migrations/sqlite/0000_initial.sql +74 -0
  42. package/dist/db/migrations/sqlite/meta/_journal.json +13 -0
  43. package/dist/db/schema.d.ts +1863 -0
  44. package/dist/db/schema.d.ts.map +1 -0
  45. package/dist/db/schema.js +133 -0
  46. package/dist/db/schema.js.map +1 -0
  47. package/dist/db/toolDefinitionStore.d.ts +9 -0
  48. package/dist/db/toolDefinitionStore.d.ts.map +1 -0
  49. package/dist/db/toolDefinitionStore.js +117 -0
  50. package/dist/db/toolDefinitionStore.js.map +1 -0
  51. package/dist/errors/httpError.d.ts +6 -0
  52. package/dist/errors/httpError.d.ts.map +1 -0
  53. package/dist/errors/httpError.js +11 -0
  54. package/dist/errors/httpError.js.map +1 -0
  55. package/dist/index.d.ts +34 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +34 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/integrations/actionsFactory.d.ts +16 -0
  60. package/dist/integrations/actionsFactory.d.ts.map +1 -0
  61. package/dist/integrations/actionsFactory.js +98 -0
  62. package/dist/integrations/actionsFactory.js.map +1 -0
  63. package/dist/integrations/catalog.d.ts +8 -0
  64. package/dist/integrations/catalog.d.ts.map +1 -0
  65. package/dist/integrations/catalog.js +45 -0
  66. package/dist/integrations/catalog.js.map +1 -0
  67. package/dist/integrations/customToolFactory.d.ts +13 -0
  68. package/dist/integrations/customToolFactory.d.ts.map +1 -0
  69. package/dist/integrations/customToolFactory.js +31 -0
  70. package/dist/integrations/customToolFactory.js.map +1 -0
  71. package/dist/integrations/dataLoader.d.ts +3 -0
  72. package/dist/integrations/dataLoader.d.ts.map +1 -0
  73. package/dist/integrations/dataLoader.js +2 -0
  74. package/dist/integrations/dataLoader.js.map +1 -0
  75. package/dist/integrations/fileIntegrationTypeConfigStore.d.ts +7 -0
  76. package/dist/integrations/fileIntegrationTypeConfigStore.d.ts.map +1 -0
  77. package/dist/integrations/fileIntegrationTypeConfigStore.js +34 -0
  78. package/dist/integrations/fileIntegrationTypeConfigStore.js.map +1 -0
  79. package/dist/integrations/getIntegration.d.ts +14 -0
  80. package/dist/integrations/getIntegration.d.ts.map +1 -0
  81. package/dist/integrations/getIntegration.js +30 -0
  82. package/dist/integrations/getIntegration.js.map +1 -0
  83. package/dist/integrations/googleServiceAccount.d.ts +6 -0
  84. package/dist/integrations/googleServiceAccount.d.ts.map +1 -0
  85. package/dist/integrations/googleServiceAccount.js +54 -0
  86. package/dist/integrations/googleServiceAccount.js.map +1 -0
  87. package/dist/integrations/health.d.ts +20 -0
  88. package/dist/integrations/health.d.ts.map +1 -0
  89. package/dist/integrations/health.js +43 -0
  90. package/dist/integrations/health.js.map +1 -0
  91. package/dist/integrations/integrationTypeConfigLookup.d.ts +12 -0
  92. package/dist/integrations/integrationTypeConfigLookup.d.ts.map +1 -0
  93. package/dist/integrations/integrationTypeConfigLookup.js +11 -0
  94. package/dist/integrations/integrationTypeConfigLookup.js.map +1 -0
  95. package/dist/integrations/providerRegistry.d.ts +2 -0
  96. package/dist/integrations/providerRegistry.d.ts.map +1 -0
  97. package/dist/integrations/providerRegistry.js +72 -0
  98. package/dist/integrations/providerRegistry.js.map +1 -0
  99. package/dist/integrations/proxy.d.ts +19 -0
  100. package/dist/integrations/proxy.d.ts.map +1 -0
  101. package/dist/integrations/proxy.js +377 -0
  102. package/dist/integrations/proxy.js.map +1 -0
  103. package/dist/integrations/sandbox.d.ts +8 -0
  104. package/dist/integrations/sandbox.d.ts.map +1 -0
  105. package/dist/integrations/sandbox.js +221 -0
  106. package/dist/integrations/sandbox.js.map +1 -0
  107. package/dist/integrations/sandboxUtils.d.ts +15 -0
  108. package/dist/integrations/sandboxUtils.d.ts.map +1 -0
  109. package/dist/integrations/sandboxUtils.js +489 -0
  110. package/dist/integrations/sandboxUtils.js.map +1 -0
  111. package/dist/integrations/tools.d.ts +3 -0
  112. package/dist/integrations/tools.d.ts.map +1 -0
  113. package/dist/integrations/tools.js +70 -0
  114. package/dist/integrations/tools.js.map +1 -0
  115. package/dist/mcp/abilityCatalog.d.ts +51 -0
  116. package/dist/mcp/abilityCatalog.d.ts.map +1 -0
  117. package/dist/mcp/abilityCatalog.js +300 -0
  118. package/dist/mcp/abilityCatalog.js.map +1 -0
  119. package/dist/mcp/auth.d.ts +18 -0
  120. package/dist/mcp/auth.d.ts.map +1 -0
  121. package/dist/mcp/auth.js +45 -0
  122. package/dist/mcp/auth.js.map +1 -0
  123. package/dist/mcp/builder_guide.md +441 -0
  124. package/dist/mcp/commandable_readme.md +29 -0
  125. package/dist/mcp/handlers.d.ts +21 -0
  126. package/dist/mcp/handlers.d.ts.map +1 -0
  127. package/dist/mcp/handlers.js +86 -0
  128. package/dist/mcp/handlers.js.map +1 -0
  129. package/dist/mcp/metaTools.d.ts +79 -0
  130. package/dist/mcp/metaTools.d.ts.map +1 -0
  131. package/dist/mcp/metaTools.js +901 -0
  132. package/dist/mcp/metaTools.js.map +1 -0
  133. package/dist/mcp/server.d.ts +25 -0
  134. package/dist/mcp/server.d.ts.map +1 -0
  135. package/dist/mcp/server.js +14 -0
  136. package/dist/mcp/server.js.map +1 -0
  137. package/dist/mcp/sessionState.d.ts +19 -0
  138. package/dist/mcp/sessionState.d.ts.map +1 -0
  139. package/dist/mcp/sessionState.js +79 -0
  140. package/dist/mcp/sessionState.js.map +1 -0
  141. package/dist/mcp/toolAdapter.d.ts +34 -0
  142. package/dist/mcp/toolAdapter.d.ts.map +1 -0
  143. package/dist/mcp/toolAdapter.js +24 -0
  144. package/dist/mcp/toolAdapter.js.map +1 -0
  145. package/dist/runtime/credentialManager.d.ts +19 -0
  146. package/dist/runtime/credentialManager.d.ts.map +1 -0
  147. package/dist/runtime/credentialManager.js +82 -0
  148. package/dist/runtime/credentialManager.js.map +1 -0
  149. package/dist/runtime/stdioSession.d.ts +8 -0
  150. package/dist/runtime/stdioSession.d.ts.map +1 -0
  151. package/dist/runtime/stdioSession.js +79 -0
  152. package/dist/runtime/stdioSession.js.map +1 -0
  153. package/dist/types.d.ts +92 -0
  154. package/dist/types.d.ts.map +1 -0
  155. package/dist/types.js +2 -0
  156. package/dist/types.js.map +1 -0
  157. package/package.json +64 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import { integer, sqliteTable, text, primaryKey as sqlitePrimaryKey } from 'drizzle-orm/sqlite-core';
2
+ import { integer as pgInteger, jsonb, pgTable, primaryKey as pgPrimaryKey, timestamp, text as pgText } from 'drizzle-orm/pg-core';
3
+ // SQLite tables (self-hosted default)
4
+ export const sqliteIntegrations = sqliteTable('integrations', {
5
+ id: text('id').notNull().primaryKey(),
6
+ spaceId: text('space_id'),
7
+ type: text('type').notNull(),
8
+ referenceId: text('reference_id').notNull(),
9
+ label: text('label').notNull(),
10
+ enabled: integer('enabled').notNull().default(1),
11
+ connectionMethod: text('connection_method'),
12
+ connectionId: text('connection_id'),
13
+ credentialId: text('credential_id'),
14
+ credentialVariant: text('credential_variant'),
15
+ enabledToolsets: text('enabled_toolsets'),
16
+ maxScope: text('max_scope'),
17
+ disabledTools: text('disabled_tools'),
18
+ healthStatus: text('health_status'),
19
+ healthCheckedAt: integer('health_checked_at', { mode: 'timestamp_ms' }),
20
+ createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
21
+ });
22
+ export const sqliteCredentials = sqliteTable('credentials', {
23
+ spaceId: text('space_id').notNull(),
24
+ id: text('id').notNull(),
25
+ ciphertext: text('ciphertext').notNull(),
26
+ createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
27
+ updatedAt: integer('updated_at', { mode: 'timestamp_ms' }).notNull(),
28
+ }, t => ({
29
+ pk: sqlitePrimaryKey({ columns: [t.spaceId, t.id] }),
30
+ }));
31
+ export const sqliteApiKeys = sqliteTable('api_keys', {
32
+ id: text('id').notNull().primaryKey(),
33
+ name: text('name').notNull(),
34
+ keyHash: text('key_hash').notNull(),
35
+ scopesJson: text('scopes_json'),
36
+ createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
37
+ });
38
+ export const sqliteUsers = sqliteTable('users', {
39
+ id: text('id').notNull().primaryKey(),
40
+ email: text('email').notNull(),
41
+ passwordHash: text('password_hash'),
42
+ createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
43
+ });
44
+ export const sqliteIntegrationTypeConfigs = sqliteTable('integration_type_configs', {
45
+ id: text('id').notNull().primaryKey(),
46
+ spaceId: text('space_id').notNull(),
47
+ typeSlug: text('type_slug').notNull(),
48
+ label: text('label').notNull(),
49
+ defaultVariant: text('default_variant').notNull(),
50
+ variantsJson: text('variants_json').notNull(),
51
+ createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
52
+ updatedAt: integer('updated_at', { mode: 'timestamp_ms' }).notNull(),
53
+ });
54
+ export const sqliteToolDefinitions = sqliteTable('tool_definitions', {
55
+ id: text('id').notNull().primaryKey(),
56
+ spaceId: text('space_id').notNull(),
57
+ integrationId: text('integration_id').notNull(),
58
+ name: text('name').notNull(),
59
+ displayName: text('display_name'),
60
+ description: text('description').notNull(),
61
+ scope: text('scope').notNull(),
62
+ inputSchemaJson: text('input_schema_json').notNull(),
63
+ handlerCode: text('handler_code').notNull(),
64
+ utilsJson: text('utils_json'),
65
+ createdAt: integer('created_at', { mode: 'timestamp_ms' }).notNull(),
66
+ updatedAt: integer('updated_at', { mode: 'timestamp_ms' }).notNull(),
67
+ });
68
+ // Postgres tables (hosted/production)
69
+ export const pgIntegrations = pgTable('integrations', {
70
+ id: pgText('id').notNull().primaryKey(),
71
+ spaceId: pgText('space_id'),
72
+ type: pgText('type').notNull(),
73
+ referenceId: pgText('reference_id').notNull(),
74
+ label: pgText('label').notNull(),
75
+ enabled: pgInteger('enabled').notNull().default(1),
76
+ connectionMethod: pgText('connection_method'),
77
+ connectionId: pgText('connection_id'),
78
+ credentialId: pgText('credential_id'),
79
+ credentialVariant: pgText('credential_variant'),
80
+ enabledToolsets: pgText('enabled_toolsets'),
81
+ maxScope: pgText('max_scope'),
82
+ disabledTools: pgText('disabled_tools'),
83
+ healthStatus: pgText('health_status'),
84
+ healthCheckedAt: timestamp('health_checked_at', { withTimezone: true }),
85
+ createdAt: timestamp('created_at', { withTimezone: true }).notNull(),
86
+ });
87
+ export const pgCredentials = pgTable('credentials', {
88
+ spaceId: pgText('space_id').notNull(),
89
+ id: pgText('id').notNull(),
90
+ ciphertext: pgText('ciphertext').notNull(),
91
+ createdAt: timestamp('created_at', { withTimezone: true }).notNull(),
92
+ updatedAt: timestamp('updated_at', { withTimezone: true }).notNull(),
93
+ }, t => ({
94
+ pk: pgPrimaryKey({ columns: [t.spaceId, t.id] }),
95
+ }));
96
+ export const pgApiKeys = pgTable('api_keys', {
97
+ id: pgText('id').notNull().primaryKey(),
98
+ name: pgText('name').notNull(),
99
+ keyHash: pgText('key_hash').notNull(),
100
+ scopesJson: jsonb('scopes_json'),
101
+ createdAt: timestamp('created_at', { withTimezone: true }).notNull(),
102
+ });
103
+ export const pgUsers = pgTable('users', {
104
+ id: pgText('id').notNull().primaryKey(),
105
+ email: pgText('email').notNull(),
106
+ passwordHash: pgText('password_hash'),
107
+ createdAt: timestamp('created_at', { withTimezone: true }).notNull(),
108
+ });
109
+ export const pgIntegrationTypeConfigs = pgTable('integration_type_configs', {
110
+ id: pgText('id').notNull().primaryKey(),
111
+ spaceId: pgText('space_id').notNull(),
112
+ typeSlug: pgText('type_slug').notNull(),
113
+ label: pgText('label').notNull(),
114
+ defaultVariant: pgText('default_variant').notNull(),
115
+ variantsJson: jsonb('variants_json').notNull(),
116
+ createdAt: timestamp('created_at', { withTimezone: true }).notNull(),
117
+ updatedAt: timestamp('updated_at', { withTimezone: true }).notNull(),
118
+ });
119
+ export const pgToolDefinitions = pgTable('tool_definitions', {
120
+ id: pgText('id').notNull().primaryKey(),
121
+ spaceId: pgText('space_id').notNull(),
122
+ integrationId: pgText('integration_id').notNull(),
123
+ name: pgText('name').notNull(),
124
+ displayName: pgText('display_name'),
125
+ description: pgText('description').notNull(),
126
+ scope: pgText('scope').notNull(),
127
+ inputSchemaJson: jsonb('input_schema_json').notNull(),
128
+ handlerCode: pgText('handler_code').notNull(),
129
+ utilsJson: jsonb('utils_json'),
130
+ createdAt: timestamp('created_at', { withTimezone: true }).notNull(),
131
+ updatedAt: timestamp('updated_at', { withTimezone: true }).notNull(),
132
+ });
133
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { DbClient } from './client.js';
2
+ import type { ToolDefinition } from '../types.js';
3
+ export declare function listToolDefinitions(client: DbClient, spaceId: string): Promise<ToolDefinition[]>;
4
+ export declare function listToolDefinitionsForIntegration(client: DbClient, spaceId: string, integrationId: string): Promise<ToolDefinition[]>;
5
+ export declare function getToolDefinitionByName(client: DbClient, spaceId: string, integrationId: string, name: string): Promise<ToolDefinition | null>;
6
+ export declare function upsertToolDefinition(client: DbClient, tool: Required<Pick<ToolDefinition, 'id' | 'spaceId' | 'integrationId'>> & Omit<ToolDefinition, 'createdAt' | 'updatedAt'>): Promise<void>;
7
+ export declare function deleteToolDefinitionByName(client: DbClient, spaceId: string, integrationId: string, name: string): Promise<number>;
8
+ export declare function deleteToolDefinitionsForIntegration(client: DbClient, spaceId: string, integrationId: string): Promise<number>;
9
+ //# sourceMappingURL=toolDefinitionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolDefinitionStore.d.ts","sourceRoot":"","sources":["../../src/db/toolDefinitionStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAA;AA2C5D,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAGtG;AAED,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC,CAO3B;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,SAAS,GAAG,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,GACzH,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -0,0 +1,117 @@
1
+ import { and, eq } from 'drizzle-orm';
2
+ import { pgToolDefinitions, sqliteToolDefinitions } from './schema.js';
3
+ function t(client) {
4
+ return client.dialect === 'sqlite' ? sqliteToolDefinitions : pgToolDefinitions;
5
+ }
6
+ function db(client) {
7
+ return client.db;
8
+ }
9
+ function normalizeScope(raw) {
10
+ const s = String(raw || '').toLowerCase().trim();
11
+ if (s === 'read' || s === 'write' || s === 'admin')
12
+ return s;
13
+ return 'write';
14
+ }
15
+ function parseJson(raw) {
16
+ if (raw == null)
17
+ return null;
18
+ if (typeof raw === 'string') {
19
+ try {
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ return raw;
27
+ }
28
+ function rowToToolDefinition(r) {
29
+ return {
30
+ id: r.id,
31
+ spaceId: r.spaceId,
32
+ integrationId: r.integrationId,
33
+ name: r.name,
34
+ displayName: r.displayName ?? null,
35
+ description: r.description,
36
+ scope: normalizeScope(r.scope),
37
+ inputSchema: parseJson(r.inputSchemaJson) || { type: 'object', additionalProperties: true },
38
+ handlerCode: r.handlerCode,
39
+ utils: parseJson(r.utilsJson),
40
+ createdAt: r.createdAt instanceof Date ? r.createdAt : (r.createdAt ? new Date(r.createdAt) : undefined),
41
+ updatedAt: r.updatedAt instanceof Date ? r.updatedAt : (r.updatedAt ? new Date(r.updatedAt) : undefined),
42
+ };
43
+ }
44
+ export async function listToolDefinitions(client, spaceId) {
45
+ const rows = await db(client).select().from(t(client)).where(eq(t(client).spaceId, spaceId));
46
+ return rows.map(rowToToolDefinition);
47
+ }
48
+ export async function listToolDefinitionsForIntegration(client, spaceId, integrationId) {
49
+ const table = t(client);
50
+ const rows = await db(client)
51
+ .select()
52
+ .from(table)
53
+ .where(and(eq(table.spaceId, spaceId), eq(table.integrationId, integrationId)));
54
+ return rows.map(rowToToolDefinition);
55
+ }
56
+ export async function getToolDefinitionByName(client, spaceId, integrationId, name) {
57
+ const table = t(client);
58
+ const rows = await db(client)
59
+ .select()
60
+ .from(table)
61
+ .where(and(eq(table.spaceId, spaceId), eq(table.integrationId, integrationId), eq(table.name, name)))
62
+ .limit(1);
63
+ return rows[0] ? rowToToolDefinition(rows[0]) : null;
64
+ }
65
+ export async function upsertToolDefinition(client, tool) {
66
+ const table = t(client);
67
+ const now = new Date();
68
+ const schemaValue = client.dialect === 'sqlite' ? JSON.stringify(tool.inputSchema ?? {}) : (tool.inputSchema ?? {});
69
+ const utilsValue = tool.utils?.length
70
+ ? (client.dialect === 'sqlite' ? JSON.stringify(tool.utils) : tool.utils)
71
+ : null;
72
+ await db(client)
73
+ .insert(table)
74
+ .values({
75
+ id: tool.id,
76
+ spaceId: tool.spaceId,
77
+ integrationId: tool.integrationId,
78
+ name: tool.name,
79
+ displayName: tool.displayName ?? null,
80
+ description: tool.description,
81
+ scope: tool.scope,
82
+ inputSchemaJson: schemaValue,
83
+ handlerCode: tool.handlerCode,
84
+ utilsJson: utilsValue,
85
+ createdAt: now,
86
+ updatedAt: now,
87
+ })
88
+ .onConflictDoUpdate({
89
+ target: [table.spaceId, table.integrationId, table.name],
90
+ set: {
91
+ integrationId: tool.integrationId,
92
+ name: tool.name,
93
+ displayName: tool.displayName ?? null,
94
+ description: tool.description,
95
+ scope: tool.scope,
96
+ inputSchemaJson: schemaValue,
97
+ handlerCode: tool.handlerCode,
98
+ utilsJson: utilsValue,
99
+ updatedAt: now,
100
+ },
101
+ });
102
+ }
103
+ export async function deleteToolDefinitionByName(client, spaceId, integrationId, name) {
104
+ const table = t(client);
105
+ const result = await db(client)
106
+ .delete(table)
107
+ .where(and(eq(table.spaceId, spaceId), eq(table.integrationId, integrationId), eq(table.name, name)));
108
+ return Number(result?.rowsAffected ?? result?.rowCount ?? 0);
109
+ }
110
+ export async function deleteToolDefinitionsForIntegration(client, spaceId, integrationId) {
111
+ const table = t(client);
112
+ const result = await db(client)
113
+ .delete(table)
114
+ .where(and(eq(table.spaceId, spaceId), eq(table.integrationId, integrationId)));
115
+ return Number(result?.rowsAffected ?? result?.rowCount ?? 0);
116
+ }
117
+ //# sourceMappingURL=toolDefinitionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolDefinitionStore.js","sourceRoot":"","sources":["../../src/db/toolDefinitionStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class HttpError extends Error {
2
+ readonly statusCode: number;
3
+ readonly data?: unknown;
4
+ constructor(statusCode: number, message: string, data?: unknown);
5
+ }
6
+ //# sourceMappingURL=httpError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/errors/httpError.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;gBAEX,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAMhE"}
@@ -0,0 +1,11 @@
1
+ export class HttpError extends Error {
2
+ statusCode;
3
+ data;
4
+ constructor(statusCode, message, data) {
5
+ super(message);
6
+ this.name = 'HttpError';
7
+ this.statusCode = statusCode;
8
+ this.data = data;
9
+ }
10
+ }
11
+ //# sourceMappingURL=httpError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/errors/httpError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,UAAU,CAAQ;IAClB,IAAI,CAAU;IAEvB,YAAY,UAAkB,EAAE,OAAe,EAAE,IAAc;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ export * from './types.js';
2
+ export * from './errors/httpError.js';
3
+ export * from './crypto/encryption.js';
4
+ export * from './integrations/dataLoader.js';
5
+ export * from './integrations/catalog.js';
6
+ export * from './integrations/tools.js';
7
+ export * from './integrations/providerRegistry.js';
8
+ export * from './integrations/sandbox.js';
9
+ export * from './integrations/getIntegration.js';
10
+ export * from './integrations/actionsFactory.js';
11
+ export * from './integrations/proxy.js';
12
+ export * from './integrations/health.js';
13
+ export * from './integrations/fileIntegrationTypeConfigStore.js';
14
+ export * from './integrations/integrationTypeConfigLookup.js';
15
+ export * from './db/client.js';
16
+ export * from './db/migrate.js';
17
+ export * from './db/schema.js';
18
+ export * from './db/credentialStore.js';
19
+ export * from './db/integrationStore.js';
20
+ export * from './db/integrationTypeConfigStore.js';
21
+ export * from './db/toolDefinitionStore.js';
22
+ export * from './mcp/toolAdapter.js';
23
+ export * from './mcp/handlers.js';
24
+ export * from './mcp/abilityCatalog.js';
25
+ export * from './mcp/sessionState.js';
26
+ export * from './mcp/metaTools.js';
27
+ export * from './mcp/auth.js';
28
+ export * from './mcp/server.js';
29
+ export * from './config/configSchema.js';
30
+ export * from './config/configLoader.js';
31
+ export * from './config/configApply.js';
32
+ export * from './runtime/credentialManager.js';
33
+ export * from './runtime/stdioSession.js';
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,uBAAuB,CAAA;AAErC,cAAc,wBAAwB,CAAA;AAEtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oCAAoC,CAAA;AAClD,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kDAAkD,CAAA;AAChE,cAAc,+CAA+C,CAAA;AAE7D,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAE3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AAEvC,cAAc,gCAAgC,CAAA;AAE9C,cAAc,2BAA2B,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ export * from './types.js';
2
+ export * from './errors/httpError.js';
3
+ export * from './crypto/encryption.js';
4
+ export * from './integrations/dataLoader.js';
5
+ export * from './integrations/catalog.js';
6
+ export * from './integrations/tools.js';
7
+ export * from './integrations/providerRegistry.js';
8
+ export * from './integrations/sandbox.js';
9
+ export * from './integrations/getIntegration.js';
10
+ export * from './integrations/actionsFactory.js';
11
+ export * from './integrations/proxy.js';
12
+ export * from './integrations/health.js';
13
+ export * from './integrations/fileIntegrationTypeConfigStore.js';
14
+ export * from './integrations/integrationTypeConfigLookup.js';
15
+ export * from './db/client.js';
16
+ export * from './db/migrate.js';
17
+ export * from './db/schema.js';
18
+ export * from './db/credentialStore.js';
19
+ export * from './db/integrationStore.js';
20
+ export * from './db/integrationTypeConfigStore.js';
21
+ export * from './db/toolDefinitionStore.js';
22
+ export * from './mcp/toolAdapter.js';
23
+ export * from './mcp/handlers.js';
24
+ export * from './mcp/abilityCatalog.js';
25
+ export * from './mcp/sessionState.js';
26
+ export * from './mcp/metaTools.js';
27
+ export * from './mcp/auth.js';
28
+ export * from './mcp/server.js';
29
+ export * from './config/configSchema.js';
30
+ export * from './config/configLoader.js';
31
+ export * from './config/configApply.js';
32
+ export * from './runtime/credentialManager.js';
33
+ export * from './runtime/stdioSession.js';
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,uBAAuB,CAAA;AAErC,cAAc,wBAAwB,CAAA;AAEtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oCAAoC,CAAA;AAClD,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kDAAkD,CAAA;AAChE,cAAc,+CAA+C,CAAA;AAE7D,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAE3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AAEvC,cAAc,gCAAgC,CAAA;AAE9C,cAAc,2BAA2B,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { ExecutableTool, IntegrationData, ToolDefinition } from '../types.js';
2
+ import type { IntegrationProxy } from './proxy.js';
3
+ export interface BuildToolsOptions {
4
+ requireWriteConfirmation?: boolean;
5
+ integrationsRef?: {
6
+ current: IntegrationData[];
7
+ };
8
+ toolDefinitions?: ToolDefinition[];
9
+ }
10
+ export declare function buildToolsByIntegration(spaceId: string, integrations: IntegrationData[], proxy: IntegrationProxy, opts?: BuildToolsOptions): Record<string, {
11
+ read: ExecutableTool[];
12
+ write: ExecutableTool[];
13
+ admin: ExecutableTool[];
14
+ }>;
15
+ export declare function buildDisplayCardTools(spaceId: string, integrations: IntegrationData[]): Record<string, ExecutableTool[]>;
16
+ //# sourceMappingURL=actionsFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionsFactory.d.ts","sourceRoot":"","sources":["../../src/integrations/actionsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAa,MAAM,aAAa,CAAA;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AASlD,MAAM,WAAW,iBAAiB;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,EAAE,CAAA;KAAE,CAAA;IAChD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAA;CACnC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,eAAe,EAAE,EAC/B,KAAK,EAAE,gBAAgB,EACvB,IAAI,GAAE,iBAAsB,GAC3B,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CA6E9F;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,eAAe,EAAE,GAC9B,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CA2BlC"}
@@ -0,0 +1,98 @@
1
+ import { loadIntegrationDisplayCards, loadIntegrationTools } from './dataLoader.js';
2
+ import { makeIntegrationToolName, sanitizeJsonSchema } from './tools.js';
3
+ import { createSafeHandlerFromString } from './sandbox.js';
4
+ import { createGetIntegration } from './getIntegration.js';
5
+ import { buildSandboxUtils } from './sandboxUtils.js';
6
+ export function buildToolsByIntegration(spaceId, integrations, proxy, opts = {}) {
7
+ const { requireWriteConfirmation = false, integrationsRef, toolDefinitions } = opts;
8
+ const getIntegration = createGetIntegration(integrationsRef || { current: integrations }, proxy);
9
+ const toolsByIntegration = {};
10
+ for (const integ of integrations) {
11
+ if (integ.enabled === false)
12
+ continue;
13
+ const humanize = (s) => (s || '')
14
+ .replace(/_/g, ' ')
15
+ .split(/\s+/g)
16
+ .filter(Boolean)
17
+ .map(w => w.length ? `${w[0].toUpperCase()}${w.slice(1).toLowerCase()}` : w)
18
+ .join(' ');
19
+ const loaded = loadIntegrationTools(integ.type, {
20
+ credentialVariant: integ.credentialVariant ?? undefined,
21
+ toolsets: integ.enabledToolsets ?? undefined,
22
+ maxScope: integ.maxScope ?? undefined,
23
+ disabledTools: integ.disabledTools ?? undefined,
24
+ });
25
+ const readBuiltIn = loaded?.read || [];
26
+ const writeBuiltIn = loaded?.write || [];
27
+ const adminBuiltIn = loaded?.admin || [];
28
+ const dbDefsForIntegration = (toolDefinitions || []).filter(t => t.integrationId === integ.id);
29
+ const readDb = dbDefsForIntegration.filter(t => t.scope === 'read');
30
+ const writeDb = dbDefsForIntegration.filter(t => t.scope === 'write');
31
+ const adminDb = dbDefsForIntegration.filter(t => t.scope === 'admin');
32
+ const buildActions = (arr, scope) => arr.map((t) => {
33
+ const rawSchema = typeof t.inputSchema === 'string' ? JSON.parse(t.inputSchema) : t.inputSchema;
34
+ const schemaObj = sanitizeJsonSchema(rawSchema);
35
+ const toolName = makeIntegrationToolName(integ.type, t.name, integ.id);
36
+ const description = `[${integ.label} | ${integ.type}] ${t.description}`;
37
+ const wrapper = `async (input) => {\n const integration = getIntegration('${integ.id}');\n const __inner = ${t.handlerCode};\n return await __inner(input);\n}`;
38
+ const utils = buildSandboxUtils(Array.isArray(t.utils) ? t.utils : undefined);
39
+ const safeHandler = createSafeHandlerFromString(wrapper, getIntegration, utils);
40
+ return {
41
+ name: toolName,
42
+ displayName: `${t.displayName || humanize(t.name)}`,
43
+ description,
44
+ inputSchema: schemaObj,
45
+ run: safeHandler,
46
+ integrations: [integ],
47
+ requireConfirmation: scope === 'write' && requireWriteConfirmation,
48
+ };
49
+ });
50
+ const buildActionsFromToolDefinitions = (defs, scope) => defs.map((t) => {
51
+ const schemaObj = sanitizeJsonSchema(t.inputSchema);
52
+ const toolName = makeIntegrationToolName(integ.type, t.name, integ.id);
53
+ const description = `[${integ.label} | ${integ.type}] ${t.description}`;
54
+ const wrapper = `async (input) => {\n const integration = getIntegration('${integ.id}');\n const __inner = ${t.handlerCode};\n return await __inner(input);\n}`;
55
+ const utils = buildSandboxUtils(Array.isArray(t.utils) ? t.utils : undefined);
56
+ const safeHandler = createSafeHandlerFromString(wrapper, getIntegration, utils);
57
+ return {
58
+ name: toolName,
59
+ displayName: `${t.displayName || humanize(String(t.name || 'tool'))}`,
60
+ description,
61
+ inputSchema: schemaObj,
62
+ run: safeHandler,
63
+ integrations: [integ],
64
+ requireConfirmation: scope === 'write' && requireWriteConfirmation,
65
+ };
66
+ });
67
+ toolsByIntegration[integ.referenceId] = {
68
+ read: [...buildActions(readBuiltIn, 'read'), ...buildActionsFromToolDefinitions(readDb, 'read')],
69
+ write: [...buildActions(writeBuiltIn, 'write'), ...buildActionsFromToolDefinitions(writeDb, 'write')],
70
+ admin: [...buildActions(adminBuiltIn, 'admin'), ...buildActionsFromToolDefinitions(adminDb, 'admin')],
71
+ };
72
+ }
73
+ return toolsByIntegration;
74
+ }
75
+ export function buildDisplayCardTools(spaceId, integrations) {
76
+ const displayToolsByIntegration = {};
77
+ for (const integ of integrations) {
78
+ const cards = loadIntegrationDisplayCards(integ.type);
79
+ if (!cards.length)
80
+ continue;
81
+ const tools = [];
82
+ for (const card of cards) {
83
+ const schemaObj = sanitizeJsonSchema(card.inputSchema);
84
+ const toolName = makeIntegrationToolName(integ.type, card.name, integ.id);
85
+ const description = `[${integ.label} | ${integ.type}] ${card.description}`;
86
+ tools.push({
87
+ name: toolName,
88
+ displayName: card.component,
89
+ description,
90
+ inputSchema: schemaObj,
91
+ run: async (args) => ({ success: true, result: args, logs: [] }),
92
+ });
93
+ }
94
+ displayToolsByIntegration[integ.referenceId] = tools;
95
+ }
96
+ return displayToolsByIntegration;
97
+ }
98
+ //# sourceMappingURL=actionsFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionsFactory.js","sourceRoot":"","sources":["../../src/integrations/actionsFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type { IntegrationCatalogItem } from '@commandable/integration-data';
2
+ export { listIntegrationCatalog } from '@commandable/integration-data';
3
+ export declare function searchIntegrationCatalog(query: string, limit?: number): Array<{
4
+ type: string;
5
+ name: string;
6
+ score: number;
7
+ }>;
8
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/integrations/catalog.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqChI"}
@@ -0,0 +1,45 @@
1
+ import { distance as levenshtein } from 'fastest-levenshtein';
2
+ import { listIntegrationCatalog } from '@commandable/integration-data';
3
+ export { listIntegrationCatalog } from '@commandable/integration-data';
4
+ export function searchIntegrationCatalog(query, limit = 10) {
5
+ const items = listIntegrationCatalog();
6
+ const q = (query || '').toLowerCase().trim();
7
+ if (!q)
8
+ return items.slice(0, limit).map(i => ({ ...i, score: 0 }));
9
+ const qTokens = q.split(/\s+/g);
10
+ const scored = [];
11
+ for (const it of items) {
12
+ let score = 0;
13
+ const name = it.name.toLowerCase();
14
+ const type = it.type.toLowerCase();
15
+ const combined = `${name} ${type}`;
16
+ if (type === q || name === q)
17
+ score += 15;
18
+ if (combined.includes(q))
19
+ score += 10;
20
+ if (combined.startsWith(q))
21
+ score += 12;
22
+ for (const t of qTokens) {
23
+ if (!t)
24
+ continue;
25
+ if (name.startsWith(t))
26
+ score += 6;
27
+ else if (name.includes(t))
28
+ score += 4;
29
+ if (type.startsWith(t))
30
+ score += 6;
31
+ else if (type.includes(t))
32
+ score += 4;
33
+ }
34
+ const dType = levenshtein(type, q);
35
+ const dName = levenshtein(name, q);
36
+ if (dType <= 2)
37
+ score += 5 - dType;
38
+ if (dName <= 2)
39
+ score += 5 - dName;
40
+ scored.push({ ...it, score });
41
+ }
42
+ scored.sort((a, b) => b.score - a.score);
43
+ return scored.slice(0, limit);
44
+ }
45
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/integrations/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAItE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,QAAgB,EAAE;IACxE,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAA;IACtC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IAC5C,IAAI,CAAC,CAAC;QACJ,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAE7D,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAE/B,MAAM,MAAM,GAAyD,EAAE,CAAA;IACvE,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;QAElC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;YAAE,KAAK,IAAI,EAAE,CAAA;QACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,IAAI,EAAE,CAAA;QACrC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,KAAK,IAAI,EAAE,CAAA;QAEvC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC;gBAAE,SAAQ;YAChB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAA;iBAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAA;YACrC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAA;iBAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAClC,IAAI,KAAK,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAA;QAClC,IAAI,KAAK,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAA;QAElC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ExecutableTool, IntegrationData, ToolDefinition } from '../types.js';
2
+ import type { IntegrationProxy } from './proxy.js';
3
+ export declare function buildExecutableToolFromDefinition(params: {
4
+ spaceId: string;
5
+ integration: IntegrationData;
6
+ tool: ToolDefinition;
7
+ proxy: IntegrationProxy;
8
+ integrationsRef?: {
9
+ current: IntegrationData[];
10
+ };
11
+ requireWriteConfirmation?: boolean;
12
+ }): ExecutableTool;
13
+ //# sourceMappingURL=customToolFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customToolFactory.d.ts","sourceRoot":"","sources":["../../src/integrations/customToolFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAa,MAAM,aAAa,CAAA;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAclD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE;IACxD,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,eAAe,CAAA;IAC5B,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,gBAAgB,CAAA;IACvB,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,EAAE,CAAA;KAAE,CAAA;IAChD,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,cAAc,CAsBjB"}