@tangle-network/agent-integrations 0.20.0 → 0.22.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 CHANGED
@@ -111,6 +111,8 @@ pnpm add @tangle-network/agent-integrations
111
111
  | `buildTangleIntegrationCatalogConnectors` | Broad normalized Tangle Integrations Catalog inventory for long-tail connection discovery. |
112
112
  | `createTangleCatalogExecutorProvider` | Promotes catalog entries to gateway-executable only when a runtime executor is explicitly supplied. |
113
113
  | `createTangleCatalogHttpExecutor` | Signed HTTP executor client for Tangle-hosted catalog runtimes. |
114
+ | `createTangleCatalogRuntimeHandler` | Server-side `/v1/integration-catalog/actions/invoke` handler with signature, connector, and action validation. |
115
+ | `createTangleCatalogInstalledPackageExecutor` | Runtime-side dispatcher for installed long-tail connector packages with explicit action aliasing and credential resolution hooks. |
114
116
  | `auditTangleIntegrationCatalogFreshness` | Release gate for catalog breadth, executable promotion, registry conflicts, and stale external ingestion. |
115
117
  | `createGatewayCatalogProvider` | Normalizes 500+ gateway-backed connectors into the same provider contract. |
116
118
  | `buildIntegrationInvocationEnvelope` | Sandbox-safe action envelope. |
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { A as ACTIVEPIECES_OVERRIDES, a as ACTIVEPIECES_PUBLIC_CATALOG_URL, b as ACTIVEPIECES_RUNTIME_SIGNATURE_HEADER, c as ActivepiecesCatalogEntry, d as ActivepiecesExecutorInvocation, e as ActivepiecesExecutorProviderOptions, f as ActivepiecesHttpExecutorOptions, g as ActivepiecesPieceOverride, h as ActivepiecesRuntimeRequest, ApiKeyAuthSpec, i as ApprovalBackedPolicyEngine, j as ApprovalBackedPolicyOptions, k as AuthSpec, C as CANONICAL_INTEGRATION_ACTIONS, l as CASStrategy, m as CanonicalIntegrationActionId, n as CanonicalLaunchConnectorOptions, o as Capability, p as CapabilityClass, q as CapabilityMutation, r as CapabilityMutationResult, s as CapabilityParameterSchema, t as CapabilityRead, u as CapabilityReadResult, v as CatalogExecutorInvocation, w as CatalogExecutorProviderOptions, x as CompleteAuthRequest, y as ComposeIntegrationRegistryOptions, z as ConnectionCredentialResolverOptions, B as ConnectorAdapter, D as ConnectorAdapterProviderOptions, E as ConnectorCredentials, F as ConnectorInvocation, G as ConnectorManifest, H as ConnectorManifestValidationIssue, I as ConnectorManifestValidationResult, J as ConsentSummary, K as ConsistencyModel, ConsoleStep, CredentialFieldSpec, CredentialValidationInput, CredentialValidationResult, L as CredentialsExpired, CustomAuthSpec, M as DEFAULT_INTEGRATION_BRIDGE_ENV, N as DEFAULT_SIGNATURE_TOLERANCE_SECONDS, O as DataSourceMetadata, P as DefaultIntegrationActionGuard, Q as EventHandlerResult, R as ExchangeCodeInput, S as GatewayCatalogAction, T as GatewayCatalogEntry, U as GatewayCatalogProviderOptions, V as GatewayCatalogTrigger, W as GenericHmacVerifyOptions, X as GoogleCalendarOptions, Y as GoogleSheetsOptions, Z as GraphqlOperationSpec, HealthcheckPlan, HealthcheckSpec, HmacAuthSpec, _ as HttpIntegrationProviderOptions, $ as HubSpotOptions, INTEGRATION_FAMILIES, a0 as ImportCatalogOptions, a1 as InMemoryConnectionStore, a2 as InMemoryIntegrationApprovalStore, a3 as InMemoryIntegrationAuditStore, a4 as InMemoryIntegrationEventStore, a5 as InMemoryIntegrationGrantStore, a6 as InMemoryIntegrationHealthcheckStore, a7 as InMemoryIntegrationIdempotencyStore, a8 as InMemoryIntegrationSecretStore, a9 as InMemoryIntegrationWorkflowStore, aa as InMemoryOAuthFlowStore, ab as InboundEvent, ac as InferIntegrationRequirementsOptions, ad as InstalledIntegrationWorkflow, ae as IntegrationActionGuard, af as IntegrationActionPack, ag as IntegrationActionRequest, ah as IntegrationActionResult, ai as IntegrationActionRisk, aj as IntegrationActor, ak as IntegrationApprovalFilter, al as IntegrationApprovalRecord, am as IntegrationApprovalRequest, an as IntegrationApprovalResolution, ao as IntegrationApprovalStatus, ap as IntegrationApprovalStore, aq as IntegrationAuditEvent, ar as IntegrationAuditEventType, as as IntegrationAuditFilter, at as IntegrationAuditSink, au as IntegrationAuditStore, IntegrationAuthMode, IntegrationAuthSpec, av as IntegrationBridgePayload, aw as IntegrationBridgeToolBinding, ax as IntegrationCapability, ay as IntegrationCapabilityBinding, az as IntegrationCatalogFreshnessOptions, aA as IntegrationCatalogFreshnessResult, aB as IntegrationCatalogSource, aC as IntegrationConnection, aD as IntegrationConnectionStore, aE as IntegrationConnector, aF as IntegrationConnectorAction, aG as IntegrationConnectorCategory, aH as IntegrationConnectorTrigger, aI as IntegrationCoveragePriority, aJ as IntegrationCoverageSpec, aK as IntegrationDataClass, aL as IntegrationError, aM as IntegrationErrorCode, aN as IntegrationEventStore, IntegrationFamilyId, IntegrationFamilySpec, aO as IntegrationGrant, aP as IntegrationGrantStore, aQ as IntegrationGuardContext, aR as IntegrationHealthcheckCheck, aS as IntegrationHealthcheckResult, aT as IntegrationHealthcheckStatus, aU as IntegrationHealthcheckStore, aV as IntegrationHub, aW as IntegrationHubOptions, aX as IntegrationIdempotencyRecord, aY as IntegrationIdempotencyStore, aZ as IntegrationInvocationEnvelope, a_ as IntegrationInvocationEnvelopeValidationOptions, IntegrationLifecycleSpec, a$ as IntegrationManifest, b0 as IntegrationManifestResolution, IntegrationPlannerHints, b1 as IntegrationPolicyDecision, b2 as IntegrationPolicyEffect, b3 as IntegrationPolicyEngine, b4 as IntegrationPolicyRule, b5 as IntegrationProvider, b6 as IntegrationProviderKind, b7 as IntegrationRateLimitDecision, b8 as IntegrationRateLimiter, b9 as IntegrationRegistry, ba as IntegrationRegistryConflict, bb as IntegrationRegistryEntry, bc as IntegrationRegistrySourceRef, bd as IntegrationRegistrySummary, be as IntegrationRequirement, bf as IntegrationRequirementMode, bg as IntegrationRequirementResolution, bh as IntegrationRequirementStatus, bi as IntegrationRuntime, bj as IntegrationRuntimeError, bk as IntegrationRuntimeHub, bl as IntegrationRuntimeOptions, bm as IntegrationSandboxBundle, bn as IntegrationSandboxHost, bo as IntegrationSandboxHostHub, bp as IntegrationSandboxHostOptions, bq as IntegrationSecretStore, IntegrationSetupSpec, IntegrationSpec, IntegrationSpecStatus, IntegrationSpecValidationIssue, IntegrationSpecValidationResult, br as IntegrationSupportTier, bs as IntegrationToolDefinition, bt as IntegrationToolSearchFilters, bu as IntegrationToolSearchResult, bv as IntegrationTriggerEvent, bw as IntegrationTriggerSubscription, bx as IntegrationUserAction, by as IntegrationWebhookReceiverResult, bz as IntegrationWorkflowDefinition, bA as IntegrationWorkflowRuntime, bB as IntegrationWorkflowRuntimeHub, bC as IntegrationWorkflowRuntimeOptions, bD as IntegrationWorkflowStore, bE as InvokeWithCapabilityRequest, bF as IssueCapabilityRequest, bG as IssuedIntegrationCapability, bH as ManifestValidationIssue, bI as ManifestValidationResult, bJ as McpCatalog, bK as McpCatalogTool, bL as McpToolDefinition, bM as MicrosoftCalendarOptions, bN as MissingRequirementExplanation, NoneAuthSpec, bO as NormalizedIntegrationError, bP as NormalizedIntegrationResult, NormalizedPermission, bQ as NotionDatabaseOptions, OAuth2AuthSpec, bR as OAuthFlowStore, bS as OAuthTokens, bT as OpenApiDocument, bU as OpenApiOperation, bV as PROVIDER_PASSTHROUGH_ACTION, bW as ParsedStripeSignatureHeader, bX as PendingOAuthFlow, PermissionDescriptor, bY as PlatformIntegrationPolicyPresetOptions, PostSetupCheck, bZ as ProviderHttpRequestInput, b_ as ProviderPassthroughPolicy, Quirk, b$ as RateLimitSpec, c0 as RefreshInput, c1 as RenderConsentOptions, RenderSpecOptions, RenderedConsoleStep, c2 as ResolvedDataSource, c3 as ResourceContention, c4 as RestConnectorSpec, c5 as RestCredentialPlacement, c6 as RestOperationSpec, c7 as RestRequestSpec, ScopeDescriptor, c8 as SecretRef, c9 as SlackOptions, ca as SlackVerifyOptions, cb as StartAuthRequest, cc as StartAuthResult, cd as StartOAuthInput, ce as StartOAuthOutput, cf as StaticIntegrationPolicyEngine, cg as StaticIntegrationPolicyOptions, ch as StoredIntegrationEvent, ci as StripeVerifyOptions, cj as TANGLE_CATALOG_RUNTIME_SIGNATURE_HEADER, ck as TANGLE_INTEGRATIONS_CATALOG_PROVIDER_ID, cl as TANGLE_INTEGRATIONS_CATALOG_SOURCE, cm as TangleCatalogExecutorInvocation, cn as TangleCatalogExecutorProviderOptions, co as TangleCatalogHttpExecutorInvocation, cp as TangleCatalogHttpExecutorOptions, cq as TangleCatalogRuntimeRequest, cr as TangleIntegrationCatalogEntry, cs as TangleIntegrationCatalogFreshnessOptions, ct as TangleIntegrationCatalogFreshnessResult, cu as TangleIntegrationInvokeInput, cv as TangleIntegrationInvokeResult, cw as TangleIntegrationsClient, cx as TangleIntegrationsClientOptions, cy as TwilioVerifyOptions, cz as _resetPendingFlowsForTests, cA as adapterManifestsToConnectors, cB as airtableConnector, cC as asanaConnector, cD as assertValidConnectorManifest, cE as assertValidIntegrationManifest, assertValidIntegrationSpec, cF as auditIntegrationCatalogFreshness, cG as auditTangleIntegrationCatalogFreshness, cH as buildActivepiecesConnectors, cI as buildActivepiecesRuntimeRequest, cJ as buildApprovalRequest, cK as buildCanonicalLaunchConnectors, cL as buildDefaultIntegrationRegistry, buildHealthcheckPlan, cM as buildIntegrationBridgeEnvironment, cN as buildIntegrationBridgePayload, cO as buildIntegrationCoverageConnectors, cP as buildIntegrationInvocationEnvelope, cQ as buildIntegrationToolCatalog, cR as buildTangleCatalogRuntimeRequest, cS as buildTangleIntegrationCatalogConnectors, cT as calendarExercisePlannerManifest, cU as canonicalActionConnectorId, cV as canonicalConnectorId, cW as composeIntegrationRegistry, consoleStepsToText, cX as consumePendingFlow, cY as createActivepiecesExecutorProvider, cZ as createActivepiecesHttpExecutor, c_ as createApprovalBackedPolicyEngine, c$ as createAuditingActionGuard, d0 as createCatalogExecutorProvider, d1 as createConnectionCredentialResolver, d2 as createConnectorAdapterCatalogSource, d3 as createConnectorAdapterProvider, d4 as createCredentialBackedAdapterProvider, d5 as createDefaultIntegrationActionGuard, d6 as createDefaultIntegrationPolicyEngine, d7 as createGatewayCatalogProvider, d8 as createHttpIntegrationProvider, d9 as createIntegrationAuditEvent, da as createIntegrationRuntime, db as createIntegrationWorkflowRuntime, dc as createMockIntegrationProvider, dd as createPlatformIntegrationPolicyPreset, de as createTangleCatalogExecutorProvider, df as createTangleCatalogHttpExecutor, dg as createTangleIntegrationsClient, dh as declarativeRestConnector, di as decodeIntegrationBridgePayload, dj as dispatchIntegrationInvocation, dk as encodeIntegrationBridgePayload, dl as exchangeAuthorizationCode, dm as explainMissingRequirements, dn as extractActivepiecesPublicPieceCount, dp as extractExternalCatalogPublicCount, dq as firstHeader, dr as getActivepiecesOverride, getIntegrationFamily, getIntegrationSpec, ds as githubConnector, dt as gitlabConnector, du as googleCalendar, dv as googleSheets, dw as healthcheckRequest, dx as hubspot, dy as importGraphqlConnector, dz as importMcpConnector, dA as importOpenApiConnector, dB as inferIntegrationManifestFromTools, dC as inferIntegrationSupportTier, dD as integrationCoverageChecklistMarkdown, integrationSpecToConnector, dE as integrationToolName, dF as invocationRequestFromEnvelope, dG as listActivepiecesCatalogEntries, listExecutableIntegrationSpecs, dH as listIntegrationCoverageSpecs, listIntegrationSpecs, dI as listTangleIntegrationCatalogEntries, dJ as manifestToConnector, dK as microsoftCalendar, dL as normalizeGatewayCatalog, dM as normalizeIntegrationError, dN as normalizeIntegrationResult, dO as notionDatabase, dP as parseIntegrationBridgeEnvironment, dQ as parseIntegrationToolName, dR as parseStripeSignatureHeader, dS as receiveIntegrationWebhook, dT as redactApprovalRequest, dU as redactCapability, dV as redactIntegrationBridgePayload, dW as redactInvocationEnvelope, dX as refreshAccessToken, renderAgentToolDescription, dY as renderApprovalCopy, dZ as renderConsentSummary, renderConsoleSteps, renderRunbookMarkdown, d_ as resolveConnectionCredentials, d$ as resolveIntegrationApproval, e0 as revokeConnection, e1 as runIntegrationHealthcheck, e2 as runIntegrationHealthchecks, e3 as salesforceConnector, e4 as sanitizeAuditConnection, e5 as sanitizeConnection, e6 as searchIntegrationTools, e7 as signActivepiecesRuntimeRequest, e8 as signCapability, e9 as signTangleCatalogRuntimeRequest, ea as slack, eb as slackEventsConnector, specAuthToConnectorAuth, ec as startOAuthFlow, ed as statusForCode, ee as storedEventToTriggerEvent, ef as stripePackConnector, eg as stripeWebhookReceiverConnector, eh as summarizeIntegrationRegistry, ei as toMcpTools, ej as twilioSmsConnector, ek as validateConnectorManifest, validateCredentialFormat, validateCredentialSet, el as validateIntegrationInvocationEnvelope, em as validateIntegrationManifest, validateIntegrationSpec, en as validateProviderPassthroughRequest, eo as verifyActivepiecesRuntimeSignature, ep as verifyCapabilityToken, eq as verifyHmacSignature, er as verifySlackSignature, es as verifyStripeSignature, et as verifyTangleCatalogRuntimeSignature, eu as verifyTwilioSignature, ev as webhookConnector } from './specs.js';
1
+ export { A as ACTIVEPIECES_OVERRIDES, a as ACTIVEPIECES_PUBLIC_CATALOG_URL, b as ACTIVEPIECES_RUNTIME_SIGNATURE_HEADER, c as ActivepiecesCatalogEntry, d as ActivepiecesExecutorInvocation, e as ActivepiecesExecutorProviderOptions, f as ActivepiecesHttpExecutorOptions, g as ActivepiecesPieceOverride, h as ActivepiecesRuntimeRequest, ApiKeyAuthSpec, i as ApprovalBackedPolicyEngine, j as ApprovalBackedPolicyOptions, k as AuthSpec, C as CANONICAL_INTEGRATION_ACTIONS, l as CASStrategy, m as CanonicalIntegrationActionId, n as CanonicalLaunchConnectorOptions, o as Capability, p as CapabilityClass, q as CapabilityMutation, r as CapabilityMutationResult, s as CapabilityParameterSchema, t as CapabilityRead, u as CapabilityReadResult, v as CatalogExecutorInvocation, w as CatalogExecutorProviderOptions, x as CompleteAuthRequest, y as ComposeIntegrationRegistryOptions, z as ConnectionCredentialResolverOptions, B as ConnectorAdapter, D as ConnectorAdapterProviderOptions, E as ConnectorCredentials, F as ConnectorInvocation, G as ConnectorManifest, H as ConnectorManifestValidationIssue, I as ConnectorManifestValidationResult, J as ConsentSummary, K as ConsistencyModel, ConsoleStep, CredentialFieldSpec, CredentialValidationInput, CredentialValidationResult, L as CredentialsExpired, CustomAuthSpec, M as DEFAULT_INTEGRATION_BRIDGE_ENV, N as DEFAULT_SIGNATURE_TOLERANCE_SECONDS, O as DataSourceMetadata, P as DefaultIntegrationActionGuard, Q as EventHandlerResult, R as ExchangeCodeInput, S as GatewayCatalogAction, T as GatewayCatalogEntry, U as GatewayCatalogProviderOptions, V as GatewayCatalogTrigger, W as GenericHmacVerifyOptions, X as GoogleCalendarOptions, Y as GoogleSheetsOptions, Z as GraphqlOperationSpec, HealthcheckPlan, HealthcheckSpec, HmacAuthSpec, _ as HttpIntegrationProviderOptions, $ as HubSpotOptions, INTEGRATION_FAMILIES, a0 as ImportCatalogOptions, a1 as InMemoryConnectionStore, a2 as InMemoryIntegrationApprovalStore, a3 as InMemoryIntegrationAuditStore, a4 as InMemoryIntegrationEventStore, a5 as InMemoryIntegrationGrantStore, a6 as InMemoryIntegrationHealthcheckStore, a7 as InMemoryIntegrationIdempotencyStore, a8 as InMemoryIntegrationSecretStore, a9 as InMemoryIntegrationWorkflowStore, aa as InMemoryOAuthFlowStore, ab as InboundEvent, ac as InferIntegrationRequirementsOptions, ad as InstalledIntegrationWorkflow, ae as IntegrationActionGuard, af as IntegrationActionPack, ag as IntegrationActionRequest, ah as IntegrationActionResult, ai as IntegrationActionRisk, aj as IntegrationActor, ak as IntegrationApprovalFilter, al as IntegrationApprovalRecord, am as IntegrationApprovalRequest, an as IntegrationApprovalResolution, ao as IntegrationApprovalStatus, ap as IntegrationApprovalStore, aq as IntegrationAuditEvent, ar as IntegrationAuditEventType, as as IntegrationAuditFilter, at as IntegrationAuditSink, au as IntegrationAuditStore, IntegrationAuthMode, IntegrationAuthSpec, av as IntegrationBridgePayload, aw as IntegrationBridgeToolBinding, ax as IntegrationCapability, ay as IntegrationCapabilityBinding, az as IntegrationCatalogFreshnessOptions, aA as IntegrationCatalogFreshnessResult, aB as IntegrationCatalogSource, aC as IntegrationConnection, aD as IntegrationConnectionStore, aE as IntegrationConnector, aF as IntegrationConnectorAction, aG as IntegrationConnectorCategory, aH as IntegrationConnectorTrigger, aI as IntegrationCoveragePriority, aJ as IntegrationCoverageSpec, aK as IntegrationDataClass, aL as IntegrationError, aM as IntegrationErrorCode, aN as IntegrationEventStore, IntegrationFamilyId, IntegrationFamilySpec, aO as IntegrationGrant, aP as IntegrationGrantStore, aQ as IntegrationGuardContext, aR as IntegrationHealthcheckCheck, aS as IntegrationHealthcheckResult, aT as IntegrationHealthcheckStatus, aU as IntegrationHealthcheckStore, aV as IntegrationHub, aW as IntegrationHubOptions, aX as IntegrationIdempotencyRecord, aY as IntegrationIdempotencyStore, aZ as IntegrationInvocationEnvelope, a_ as IntegrationInvocationEnvelopeValidationOptions, IntegrationLifecycleSpec, a$ as IntegrationManifest, b0 as IntegrationManifestResolution, IntegrationPlannerHints, b1 as IntegrationPolicyDecision, b2 as IntegrationPolicyEffect, b3 as IntegrationPolicyEngine, b4 as IntegrationPolicyRule, b5 as IntegrationProvider, b6 as IntegrationProviderKind, b7 as IntegrationRateLimitDecision, b8 as IntegrationRateLimiter, b9 as IntegrationRegistry, ba as IntegrationRegistryConflict, bb as IntegrationRegistryEntry, bc as IntegrationRegistrySourceRef, bd as IntegrationRegistrySummary, be as IntegrationRequirement, bf as IntegrationRequirementMode, bg as IntegrationRequirementResolution, bh as IntegrationRequirementStatus, bi as IntegrationRuntime, bj as IntegrationRuntimeError, bk as IntegrationRuntimeHub, bl as IntegrationRuntimeOptions, bm as IntegrationSandboxBundle, bn as IntegrationSandboxHost, bo as IntegrationSandboxHostHub, bp as IntegrationSandboxHostOptions, bq as IntegrationSecretStore, IntegrationSetupSpec, IntegrationSpec, IntegrationSpecStatus, IntegrationSpecValidationIssue, IntegrationSpecValidationResult, br as IntegrationSupportTier, bs as IntegrationToolDefinition, bt as IntegrationToolSearchFilters, bu as IntegrationToolSearchResult, bv as IntegrationTriggerEvent, bw as IntegrationTriggerSubscription, bx as IntegrationUserAction, by as IntegrationWebhookReceiverResult, bz as IntegrationWorkflowDefinition, bA as IntegrationWorkflowRuntime, bB as IntegrationWorkflowRuntimeHub, bC as IntegrationWorkflowRuntimeOptions, bD as IntegrationWorkflowStore, bE as InvokeWithCapabilityRequest, bF as IssueCapabilityRequest, bG as IssuedIntegrationCapability, bH as ManifestValidationIssue, bI as ManifestValidationResult, bJ as McpCatalog, bK as McpCatalogTool, bL as McpToolDefinition, bM as MicrosoftCalendarOptions, bN as MissingRequirementExplanation, NoneAuthSpec, bO as NormalizedIntegrationError, bP as NormalizedIntegrationResult, NormalizedPermission, bQ as NotionDatabaseOptions, OAuth2AuthSpec, bR as OAuthFlowStore, bS as OAuthTokens, bT as OpenApiDocument, bU as OpenApiOperation, bV as PROVIDER_PASSTHROUGH_ACTION, bW as ParsedStripeSignatureHeader, bX as PendingOAuthFlow, PermissionDescriptor, bY as PlatformIntegrationPolicyPresetOptions, PostSetupCheck, bZ as ProviderHttpRequestInput, b_ as ProviderPassthroughPolicy, Quirk, b$ as RateLimitSpec, c0 as RefreshInput, c1 as RenderConsentOptions, RenderSpecOptions, RenderedConsoleStep, c2 as ResolvedDataSource, c3 as ResourceContention, c4 as RestConnectorSpec, c5 as RestCredentialPlacement, c6 as RestOperationSpec, c7 as RestRequestSpec, ScopeDescriptor, c8 as SecretRef, c9 as SlackOptions, ca as SlackVerifyOptions, cb as StartAuthRequest, cc as StartAuthResult, cd as StartOAuthInput, ce as StartOAuthOutput, cf as StaticIntegrationPolicyEngine, cg as StaticIntegrationPolicyOptions, ch as StoredIntegrationEvent, ci as StripeVerifyOptions, cj as TANGLE_CATALOG_RUNTIME_SIGNATURE_HEADER, ck as TANGLE_INTEGRATIONS_CATALOG_PROVIDER_ID, cl as TANGLE_INTEGRATIONS_CATALOG_SOURCE, cm as TangleCatalogExecutorInvocation, cn as TangleCatalogExecutorProviderOptions, co as TangleCatalogHttpExecutorInvocation, cp as TangleCatalogHttpExecutorOptions, cq as TangleCatalogInstalledPackageExecutorOptions, cr as TangleCatalogRuntimeHandlerOptions, cs as TangleCatalogRuntimeHttpRequest, ct as TangleCatalogRuntimeHttpResponse, cu as TangleCatalogRuntimeInvocation, cv as TangleCatalogRuntimeModuleAction, cw as TangleCatalogRuntimeRequest, cx as TangleIntegrationCatalogEntry, cy as TangleIntegrationCatalogFreshnessOptions, cz as TangleIntegrationCatalogFreshnessResult, cA as TangleIntegrationInvokeInput, cB as TangleIntegrationInvokeResult, cC as TangleIntegrationsClient, cD as TangleIntegrationsClientOptions, cE as TwilioVerifyOptions, cF as _resetPendingFlowsForTests, cG as adapterManifestsToConnectors, cH as airtableConnector, cI as asanaConnector, cJ as assertValidConnectorManifest, cK as assertValidIntegrationManifest, assertValidIntegrationSpec, cL as auditIntegrationCatalogFreshness, cM as auditTangleIntegrationCatalogFreshness, cN as buildActivepiecesConnectors, cO as buildActivepiecesRuntimeRequest, cP as buildApprovalRequest, cQ as buildCanonicalLaunchConnectors, cR as buildDefaultIntegrationRegistry, buildHealthcheckPlan, cS as buildIntegrationBridgeEnvironment, cT as buildIntegrationBridgePayload, cU as buildIntegrationCoverageConnectors, cV as buildIntegrationInvocationEnvelope, cW as buildIntegrationToolCatalog, cX as buildTangleCatalogRuntimeRequest, cY as buildTangleIntegrationCatalogConnectors, cZ as calendarExercisePlannerManifest, c_ as canonicalActionConnectorId, c$ as canonicalConnectorId, d0 as composeIntegrationRegistry, consoleStepsToText, d1 as consumePendingFlow, d2 as createActivepiecesExecutorProvider, d3 as createActivepiecesHttpExecutor, d4 as createApprovalBackedPolicyEngine, d5 as createAuditingActionGuard, d6 as createCatalogExecutorProvider, d7 as createConnectionCredentialResolver, d8 as createConnectorAdapterCatalogSource, d9 as createConnectorAdapterProvider, da as createCredentialBackedAdapterProvider, db as createDefaultIntegrationActionGuard, dc as createDefaultIntegrationPolicyEngine, dd as createGatewayCatalogProvider, de as createHttpIntegrationProvider, df as createIntegrationAuditEvent, dg as createIntegrationRuntime, dh as createIntegrationWorkflowRuntime, di as createMockIntegrationProvider, dj as createPlatformIntegrationPolicyPreset, dk as createTangleCatalogExecutorProvider, dl as createTangleCatalogHttpExecutor, dm as createTangleCatalogInstalledPackageExecutor, dn as createTangleCatalogRuntimeHandler, dp as createTangleIntegrationsClient, dq as declarativeRestConnector, dr as decodeIntegrationBridgePayload, ds as dispatchIntegrationInvocation, dt as encodeIntegrationBridgePayload, du as exchangeAuthorizationCode, dv as explainMissingRequirements, dw as extractActivepiecesPublicPieceCount, dx as extractExternalCatalogPublicCount, dy as firstHeader, dz as getActivepiecesOverride, getIntegrationFamily, getIntegrationSpec, dA as githubConnector, dB as gitlabConnector, dC as googleCalendar, dD as googleSheets, dE as healthcheckRequest, dF as hubspot, dG as importGraphqlConnector, dH as importMcpConnector, dI as importOpenApiConnector, dJ as inferIntegrationManifestFromTools, dK as inferIntegrationSupportTier, dL as integrationCoverageChecklistMarkdown, integrationSpecToConnector, dM as integrationToolName, dN as invocationRequestFromEnvelope, dO as listActivepiecesCatalogEntries, listExecutableIntegrationSpecs, dP as listIntegrationCoverageSpecs, listIntegrationSpecs, dQ as listTangleIntegrationCatalogEntries, dR as manifestToConnector, dS as microsoftCalendar, dT as normalizeGatewayCatalog, dU as normalizeIntegrationError, dV as normalizeIntegrationResult, dW as notionDatabase, dX as parseIntegrationBridgeEnvironment, dY as parseIntegrationToolName, dZ as parseStripeSignatureHeader, d_ as receiveIntegrationWebhook, d$ as redactApprovalRequest, e0 as redactCapability, e1 as redactIntegrationBridgePayload, e2 as redactInvocationEnvelope, e3 as refreshAccessToken, renderAgentToolDescription, e4 as renderApprovalCopy, e5 as renderConsentSummary, renderConsoleSteps, renderRunbookMarkdown, e6 as resolveConnectionCredentials, e7 as resolveIntegrationApproval, e8 as revokeConnection, e9 as runIntegrationHealthcheck, ea as runIntegrationHealthchecks, eb as salesforceConnector, ec as sanitizeAuditConnection, ed as sanitizeConnection, ee as searchIntegrationTools, ef as signActivepiecesRuntimeRequest, eg as signCapability, eh as signTangleCatalogRuntimeRequest, ei as slack, ej as slackEventsConnector, specAuthToConnectorAuth, ek as startOAuthFlow, el as statusForCode, em as storedEventToTriggerEvent, en as stripePackConnector, eo as stripeWebhookReceiverConnector, ep as summarizeIntegrationRegistry, eq as toMcpTools, er as twilioSmsConnector, es as validateConnectorManifest, validateCredentialFormat, validateCredentialSet, et as validateIntegrationInvocationEnvelope, eu as validateIntegrationManifest, validateIntegrationSpec, ev as validateProviderPassthroughRequest, ew as verifyActivepiecesRuntimeSignature, ex as verifyCapabilityToken, ey as verifyHmacSignature, ez as verifySlackSignature, eA as verifyStripeSignature, eB as verifyTangleCatalogRuntimeSignature, eC as verifyTwilioSignature, eD as webhookConnector } from './specs.js';
package/dist/index.js CHANGED
@@ -6218,6 +6218,199 @@ function sanitizeConnector(connector, providerId) {
6218
6218
  };
6219
6219
  }
6220
6220
 
6221
+ // src/tangle-catalog-runtime.ts
6222
+ function createTangleCatalogRuntimeHandler(options) {
6223
+ const connectors = options.connectors ?? buildTangleIntegrationCatalogConnectors({
6224
+ includeCatalogActions: true,
6225
+ executable: true
6226
+ });
6227
+ const byConnector = new Map(connectors.map((connector) => [connector.id, connector]));
6228
+ const requireSignature = options.requireSignature ?? Boolean(options.secret);
6229
+ const signatureHeader = options.signatureHeader ?? TANGLE_CATALOG_RUNTIME_SIGNATURE_HEADER;
6230
+ const maxBodyBytes = options.maxBodyBytes ?? 1e6;
6231
+ return async function handleTangleCatalogRuntimeRequest(input) {
6232
+ const serialized = serializeBody(input.body);
6233
+ if (Buffer.byteLength(serialized, "utf8") > maxBodyBytes) {
6234
+ return errorResponse(413, "unknown", "payload_too_large", "Tangle catalog runtime request is too large.");
6235
+ }
6236
+ if (requireSignature) {
6237
+ if (!options.secret) {
6238
+ return errorResponse(500, "unknown", "runtime_misconfigured", "Tangle catalog runtime secret is not configured.");
6239
+ }
6240
+ const signature = readHeader(input.headers, signatureHeader);
6241
+ if (!verifyTangleCatalogRuntimeSignature(serialized, signature, options.secret)) {
6242
+ return errorResponse(401, "unknown", "signature_invalid", "Tangle catalog runtime signature is invalid.");
6243
+ }
6244
+ }
6245
+ const parsed = parseRuntimeRequest(serialized);
6246
+ if (!parsed.ok) return parsed.response;
6247
+ const request = parsed.request;
6248
+ const connector = byConnector.get(request.connector.id);
6249
+ if (!connector) {
6250
+ return errorResponse(404, request.action.id, "connector_not_found", `Connector ${request.connector.id} is not in the Tangle catalog runtime.`);
6251
+ }
6252
+ if (request.connection.connectorId !== connector.id) {
6253
+ return errorResponse(400, request.action.id, "connector_mismatch", "Connection connectorId does not match runtime connector.");
6254
+ }
6255
+ if (request.connection.providerId !== connector.providerId) {
6256
+ return errorResponse(400, request.action.id, "provider_mismatch", "Connection providerId does not match runtime connector.");
6257
+ }
6258
+ const action = connector.actions.find((candidate) => candidate.id === request.action.id);
6259
+ if (!action) {
6260
+ return errorResponse(404, request.action.id, "action_not_found", `Action ${request.action.id} is not defined by connector ${connector.id}.`);
6261
+ }
6262
+ const result = await options.executeAction({
6263
+ request,
6264
+ connection: request.connection,
6265
+ connector,
6266
+ action
6267
+ });
6268
+ return {
6269
+ status: result.ok ? 200 : 502,
6270
+ headers: { "content-type": "application/json" },
6271
+ body: result
6272
+ };
6273
+ };
6274
+ }
6275
+ function createTangleCatalogInstalledPackageExecutor(options = {}) {
6276
+ const packageByConnector = new Map(
6277
+ listActivepiecesCatalogEntries().filter((entry) => entry.npmPackage).map((entry) => [entry.id, entry.npmPackage])
6278
+ );
6279
+ const moduleCache = /* @__PURE__ */ new Map();
6280
+ return async (invocation) => {
6281
+ await options.beforeRun?.(invocation);
6282
+ const packageName = packageByConnector.get(invocation.connector.id);
6283
+ if (!packageName) {
6284
+ return runtimeFailure(invocation.action.id, "runtime_not_available", `No installed runtime package is known for connector ${invocation.connector.id}.`);
6285
+ }
6286
+ const loaded = await loadRuntimeModule(packageName, options.moduleLoader, moduleCache);
6287
+ if (!loaded.ok) {
6288
+ return runtimeFailure(invocation.action.id, "runtime_not_installed", loaded.message);
6289
+ }
6290
+ const piece = findPieceExport(loaded.module, invocation.connector.id);
6291
+ if (!piece) {
6292
+ return runtimeFailure(invocation.action.id, "runtime_invalid", `Runtime package ${packageName} does not export a recognizable piece for ${invocation.connector.id}.`);
6293
+ }
6294
+ const action = findRuntimeAction(piece, invocation, options.actionAliases);
6295
+ if (!action?.run) {
6296
+ return runtimeFailure(invocation.action.id, "action_not_implemented", `Runtime package ${packageName} does not expose executable action ${invocation.action.id}.`);
6297
+ }
6298
+ try {
6299
+ const output = await action.run({
6300
+ auth: await options.resolveAuth?.(invocation.connection),
6301
+ propsValue: invocation.request.action.input,
6302
+ input: invocation.request.action.input,
6303
+ connection: invocation.connection,
6304
+ request: invocation.request
6305
+ });
6306
+ return {
6307
+ ok: true,
6308
+ action: invocation.action.id,
6309
+ output
6310
+ };
6311
+ } catch (error) {
6312
+ return runtimeFailure(
6313
+ invocation.action.id,
6314
+ "runtime_action_failed",
6315
+ error instanceof Error ? error.message : "Runtime action failed."
6316
+ );
6317
+ }
6318
+ };
6319
+ }
6320
+ function serializeBody(body) {
6321
+ if (typeof body === "string") return body;
6322
+ if (body instanceof Uint8Array) return new TextDecoder().decode(body);
6323
+ return JSON.stringify(body);
6324
+ }
6325
+ async function loadRuntimeModule(packageName, moduleLoader, moduleCache) {
6326
+ try {
6327
+ const load = moduleLoader ?? ((name) => import(name));
6328
+ const promise = moduleCache.get(packageName) ?? Promise.resolve(load(packageName));
6329
+ moduleCache.set(packageName, promise);
6330
+ return { ok: true, module: await promise };
6331
+ } catch (error) {
6332
+ return {
6333
+ ok: false,
6334
+ message: error instanceof Error ? `Runtime package ${packageName} could not be loaded: ${error.message}` : `Runtime package ${packageName} could not be loaded.`
6335
+ };
6336
+ }
6337
+ }
6338
+ function findPieceExport(moduleValue, connectorId) {
6339
+ const mod = moduleValue && typeof moduleValue === "object" ? moduleValue : {};
6340
+ const values = [
6341
+ mod.default,
6342
+ mod[camel(connectorId)],
6343
+ mod[connectorId],
6344
+ ...Object.values(mod)
6345
+ ];
6346
+ return values.find((value) => Boolean(value) && typeof value === "object" && Array.isArray(value.actions));
6347
+ }
6348
+ function findRuntimeAction(piece, invocation, aliases = {}) {
6349
+ const actions = (piece.actions ?? []).filter((action) => Boolean(action) && typeof action === "object");
6350
+ const explicit = aliases[invocation.connector.id]?.[invocation.action.id];
6351
+ const candidates = new Set([
6352
+ invocation.action.id,
6353
+ invocation.action.title,
6354
+ invocation.request.piece.upstreamActionName,
6355
+ explicit
6356
+ ].filter((value) => Boolean(value)));
6357
+ for (const action of actions) {
6358
+ const names = [action.name, action.displayName].filter((value) => Boolean(value));
6359
+ if (names.some((name) => candidates.has(name))) return action;
6360
+ if (names.some((name) => [...candidates].some((candidate) => comparable(name) === comparable(candidate)))) return action;
6361
+ }
6362
+ return void 0;
6363
+ }
6364
+ function runtimeFailure(action, code, message) {
6365
+ return {
6366
+ ok: false,
6367
+ action,
6368
+ output: { code, message }
6369
+ };
6370
+ }
6371
+ function comparable(value) {
6372
+ return value.toLowerCase().replace(/[^a-z0-9]/g, "");
6373
+ }
6374
+ function camel(value) {
6375
+ return value.replace(/[-_.]+([a-z0-9])/g, (_, char) => char.toUpperCase());
6376
+ }
6377
+ function parseRuntimeRequest(serialized) {
6378
+ try {
6379
+ const request = JSON.parse(serialized);
6380
+ if (request.version !== 1) {
6381
+ return { ok: false, response: errorResponse(400, request.action?.id ?? "unknown", "version_invalid", "Unsupported Tangle catalog runtime request version.") };
6382
+ }
6383
+ if (!request.connection || !request.connector || !request.action?.id) {
6384
+ return { ok: false, response: errorResponse(400, request.action?.id ?? "unknown", "request_invalid", "Tangle catalog runtime request is missing required fields.") };
6385
+ }
6386
+ return { ok: true, request };
6387
+ } catch {
6388
+ return { ok: false, response: errorResponse(400, "unknown", "json_invalid", "Tangle catalog runtime request body is not valid JSON.") };
6389
+ }
6390
+ }
6391
+ function readHeader(headers, name) {
6392
+ if (!headers) return void 0;
6393
+ if (headers instanceof Headers) return headers.get(name) ?? void 0;
6394
+ const wanted = name.toLowerCase();
6395
+ for (const [key, value] of Object.entries(headers)) {
6396
+ if (key.toLowerCase() !== wanted) continue;
6397
+ if (Array.isArray(value)) return value[0];
6398
+ return value;
6399
+ }
6400
+ return void 0;
6401
+ }
6402
+ function errorResponse(status, action, code, message) {
6403
+ return {
6404
+ status,
6405
+ headers: { "content-type": "application/json" },
6406
+ body: {
6407
+ ok: false,
6408
+ action,
6409
+ output: { code, message }
6410
+ }
6411
+ };
6412
+ }
6413
+
6221
6414
  // src/runtime.ts
6222
6415
  var InMemoryIntegrationGrantStore = class {
6223
6416
  grants = /* @__PURE__ */ new Map();
@@ -6923,6 +7116,8 @@ export {
6923
7116
  createPlatformIntegrationPolicyPreset,
6924
7117
  createTangleCatalogExecutorProvider,
6925
7118
  createTangleCatalogHttpExecutor,
7119
+ createTangleCatalogInstalledPackageExecutor,
7120
+ createTangleCatalogRuntimeHandler,
6926
7121
  createTangleIntegrationsClient,
6927
7122
  declarativeRestConnector,
6928
7123
  decodeIntegrationBridgePayload,