@ductape/sdk 0.3.7 → 0.3.8

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/dist/index.js CHANGED
@@ -50,9 +50,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.validateDatabaseActionOutput = exports.deriveDatabaseActionOutputContract = exports.createMemoryAdapter = exports.createWeaviateAdapter = exports.createQdrantAdapter = exports.createPineconeAdapter = exports.createVectorStoreAdapter = exports.VectorServiceAdapter = exports.OpenAIProvider = exports.AnthropicProvider = exports.createLLMProvider = exports.MemoryManager = exports.ToolRegistry = exports.AgentContext = exports.AgentExecutor = exports.agentsService = exports.AgentError = exports.AgentsService = exports.verifyInvocationSignature = exports.PORTABLE_FUNCTION_HTTP_PATH = exports.handlePortableFunctionHttpRequest = exports.PortableFunctionError = exports.PortableFunctionsRegistry = exports.portableFunctions = exports.defineFunctions = exports.defineFunction = exports.FeatureExecutor = exports.createFeature = exports.FeatureBuilder = exports.featureService = exports.FeatureCompilationError = exports.FeatureError = exports.FeatureService = exports.GraphAdapterFactory = exports.MemgraphAdapter = exports.ArangoDBAdapter = exports.NeptuneAdapter = exports.Neo4jAdapter = exports.BaseGraphAdapter = exports.GraphError = exports.GraphSortOrder = exports.GraphFeature = exports.GraphErrorType = exports.GraphTransactionStatus = exports.GraphIsolationLevel = exports.NodeConstraintType = exports.NodeIndexType = exports.TraversalDirection = exports.GraphType = exports.GraphService = void 0;
54
- exports.SecretResolutionError = exports.SecretRevokedError = exports.SecretExpiredError = exports.SecretEnvironmentError = exports.SecretScopeError = exports.SecretNotFoundError = exports.SECRET_PATTERN_GLOBAL = exports.SECRET_PATTERN = exports.SecretsService = exports.VectorFeature = exports.VectorErrorType = exports.VectorIndexType = exports.DistanceMetric = exports.VectorDBType = exports.MemoryAdapter = exports.WeaviateAdapter = exports.QdrantAdapter = exports.PineconeAdapter = exports.BaseVectorAdapter = exports.VectorError = exports.VectorDatabaseService = exports.SmsProvider = exports.PushNotificationProvider = exports.NotificationChannelType = exports.notificationsService = exports.NotificationsService = exports.getSqsQueueUrl = exports.isValidSqsUrl = exports.parseEventString = exports.loadBrokerService = exports.GooglePubSubService = exports.RedisService = exports.SQSService = exports.KafkaService = exports.RabbitMQService = exports.BrokerError = exports.BrokersService = exports.CacheLogger = exports.cacheLogger = exports.CacheError = exports.CacheService = exports.SessionError = exports.SessionsService = exports.generateSignedUrl = exports.listBlobsInCloud = exports.deleteBlobFromCloud = exports.downloadBlobFromCloud = exports.uploadBlobToCloud = exports.StorageError = exports.StorageService = void 0;
55
- exports.getAssetSchemas = exports.buildVpcConnectorRelayWebSocketUrl = exports.parseTcpEndpointFromUrl = exports.buildVpcConnectorTunnelAdapterOptions = exports.openVpcConnectorTunnelStream = exports.resolveCloudLinkedEnvConfig = exports.resolveCloudLinkedConfig = exports.CloudError = exports.CloudService = exports.mightContainSecrets = exports.findAllSecretReferences = exports.extractSecretKeys = exports.containsSecretReferences = exports.isSecretReference = void 0;
53
+ exports.deriveDatabaseActionOutputContract = exports.createMemoryAdapter = exports.createWeaviateAdapter = exports.createQdrantAdapter = exports.createPineconeAdapter = exports.createVectorStoreAdapter = exports.VectorServiceAdapter = exports.OpenAIProvider = exports.AnthropicProvider = exports.createLLMProvider = exports.MemoryManager = exports.ToolRegistry = exports.AgentContext = exports.AgentExecutor = exports.agentsService = exports.AgentError = exports.AgentsService = exports.verifyInvocationSignature = exports.PORTABLE_FUNCTION_HTTP_PATH = exports.handlePortableFunctionHttpRequest = exports.PortableFunctionError = exports.PortableFunctionsRegistry = exports.portableFunctions = exports.defineFunctions = exports.defineFunction = exports.FeatureExecutor = exports.createFeature = exports.FeatureBuilder = exports.FeaturePublicationError = exports.featureService = exports.FeatureCompilationError = exports.FeatureError = exports.FeatureService = exports.GraphAdapterFactory = exports.MemgraphAdapter = exports.ArangoDBAdapter = exports.NeptuneAdapter = exports.Neo4jAdapter = exports.BaseGraphAdapter = exports.GraphError = exports.GraphSortOrder = exports.GraphFeature = exports.GraphErrorType = exports.GraphTransactionStatus = exports.GraphIsolationLevel = exports.NodeConstraintType = exports.NodeIndexType = exports.TraversalDirection = exports.GraphType = exports.GraphService = void 0;
54
+ exports.SecretRevokedError = exports.SecretExpiredError = exports.SecretEnvironmentError = exports.SecretScopeError = exports.SecretNotFoundError = exports.SECRET_PATTERN_GLOBAL = exports.SECRET_PATTERN = exports.SecretsService = exports.VectorFeature = exports.VectorErrorType = exports.VectorIndexType = exports.DistanceMetric = exports.VectorDBType = exports.MemoryAdapter = exports.WeaviateAdapter = exports.QdrantAdapter = exports.PineconeAdapter = exports.BaseVectorAdapter = exports.VectorError = exports.VectorDatabaseService = exports.SmsProvider = exports.PushNotificationProvider = exports.NotificationChannelType = exports.notificationsService = exports.NotificationsService = exports.getSqsQueueUrl = exports.isValidSqsUrl = exports.parseEventString = exports.loadBrokerService = exports.GooglePubSubService = exports.RedisService = exports.SQSService = exports.KafkaService = exports.RabbitMQService = exports.BrokerError = exports.BrokersService = exports.CacheLogger = exports.cacheLogger = exports.CacheError = exports.CacheService = exports.SessionError = exports.SessionsService = exports.generateSignedUrl = exports.listBlobsInCloud = exports.deleteBlobFromCloud = exports.downloadBlobFromCloud = exports.uploadBlobToCloud = exports.StorageError = exports.StorageService = exports.validateDatabaseActionOutput = void 0;
55
+ exports.getAssetSchemas = exports.buildVpcConnectorRelayWebSocketUrl = exports.parseTcpEndpointFromUrl = exports.buildVpcConnectorTunnelAdapterOptions = exports.openVpcConnectorTunnelStream = exports.resolveCloudLinkedEnvConfig = exports.resolveCloudLinkedConfig = exports.CloudError = exports.CloudService = exports.mightContainSecrets = exports.findAllSecretReferences = exports.extractSecretKeys = exports.containsSecretReferences = exports.isSecretReference = exports.SecretResolutionError = void 0;
56
56
  const appApi_service_1 = require("./api/services/appApi.service");
57
57
  const userApi_service_1 = require("./api/services/userApi.service");
58
58
  const workspaceApi_service_1 = require("./api/services/workspaceApi.service");
@@ -60,6 +60,7 @@ const app_service_1 = __importDefault(require("./apps/services/app.service"));
60
60
  const filePath = __importStar(require("path"));
61
61
  const products_service_1 = __importDefault(require("./products/services/products.service"));
62
62
  const fs_1 = require("fs");
63
+ const crypto_1 = require("crypto");
63
64
  const types_1 = require("./types");
64
65
  const index_types_1 = require("./types/index.types");
65
66
  const runtime_defaults_1 = require("./runtime/runtime-defaults");
@@ -323,10 +324,12 @@ Object.defineProperty(exports, "FeatureError", { enumerable: true, get: function
323
324
  Object.defineProperty(exports, "FeatureCompilationError", { enumerable: true, get: function () { return features_2.FeatureCompilationError; } });
324
325
  Object.defineProperty(exports, "featureService", { enumerable: true, get: function () { return features_2.featureService; } });
325
326
  var features_3 = require("./features");
326
- Object.defineProperty(exports, "FeatureBuilder", { enumerable: true, get: function () { return features_3.FeatureBuilder; } });
327
- Object.defineProperty(exports, "createFeature", { enumerable: true, get: function () { return features_3.createFeature; } });
327
+ Object.defineProperty(exports, "FeaturePublicationError", { enumerable: true, get: function () { return features_3.FeaturePublicationError; } });
328
328
  var features_4 = require("./features");
329
- Object.defineProperty(exports, "FeatureExecutor", { enumerable: true, get: function () { return features_4.FeatureExecutor; } });
329
+ Object.defineProperty(exports, "FeatureBuilder", { enumerable: true, get: function () { return features_4.FeatureBuilder; } });
330
+ Object.defineProperty(exports, "createFeature", { enumerable: true, get: function () { return features_4.createFeature; } });
331
+ var features_5 = require("./features");
332
+ Object.defineProperty(exports, "FeatureExecutor", { enumerable: true, get: function () { return features_5.FeatureExecutor; } });
330
333
  var functions_2 = require("./functions");
331
334
  Object.defineProperty(exports, "defineFunction", { enumerable: true, get: function () { return functions_2.defineFunction; } });
332
335
  Object.defineProperty(exports, "defineFunctions", { enumerable: true, get: function () { return functions_2.defineFunctions; } });
@@ -539,8 +542,27 @@ class Ductape {
539
542
  this.runtimeCredentialState = { status: 'idle', referenced: 0, cached: 0, missing: 0 };
540
543
  this.runtimeClosed = false;
541
544
  /** Register and inspect portable application functions used by Feature JSON. */
545
+ this.registeredFunctionContracts = new Map();
542
546
  this.functions = {
543
- register: (contract) => functions_1.portableFunctions.register(contract),
547
+ register: (contract) => {
548
+ const client = functions_1.portableFunctions.register(contract);
549
+ this.registeredFunctionContracts.set(`${contract.namespace}@${contract.version}`, contract);
550
+ return client;
551
+ },
552
+ sync: async (options = {}) => {
553
+ var _a;
554
+ const product = (_a = options.product) !== null && _a !== void 0 ? _a : this.defaultProduct;
555
+ if (!product)
556
+ throw new Error('Product is required to persist function metadata');
557
+ const builder = await this.getProductBuilder(product);
558
+ const results = [];
559
+ for (const contract of this.registeredFunctionContracts.values()) {
560
+ if (options.namespaces && !options.namespaces.includes(contract.namespace))
561
+ continue;
562
+ results.push(await builder.syncPortableFunction(contract));
563
+ }
564
+ return results;
565
+ },
544
566
  use: (contract) => functions_1.portableFunctions.use(contract),
545
567
  list: () => functions_1.portableFunctions.list(),
546
568
  registerGrpcInvoker: (invoker) => functions_1.portableFunctions.registerGrpcInvoker(invoker),
@@ -548,15 +570,41 @@ class Ductape {
548
570
  };
549
571
  /** Atomic keyed request enforcement; distinct from weighted provider quotas. */
550
572
  this.rateLimit = {
573
+ list: () => { var _a, _b; return (_b = (_a = this._rateLimitService) === null || _a === void 0 ? void 0 : _a.list()) !== null && _b !== void 0 ? _b : []; },
574
+ sync: async (env, product) => {
575
+ var _a;
576
+ await this.initUserAuth(false);
577
+ (_a = this._rateLimitService) !== null && _a !== void 0 ? _a : (this._rateLimitService = new resilience_1.RateLimitService(this.redisClient));
578
+ this._rateLimitService.setRedis(this.redisClient);
579
+ this._rateLimitService.setContext({ workspace: this.workspace_id, product: product !== null && product !== void 0 ? product : this.defaultProduct });
580
+ return this._rateLimitService.sync(env, product);
581
+ },
551
582
  define: (definition) => {
552
583
  var _a;
553
584
  (_a = this._rateLimitService) !== null && _a !== void 0 ? _a : (this._rateLimitService = new resilience_1.RateLimitService(this.redisClient));
554
585
  return this._rateLimitService.define(definition);
555
586
  },
556
587
  run: async (input) => {
557
- var _a;
558
- (_a = this._rateLimitService) !== null && _a !== void 0 ? _a : (this._rateLimitService = new resilience_1.RateLimitService(this.redisClient));
588
+ var _a, _b;
589
+ await this.initUserAuth(false);
590
+ let sessionFields = {};
591
+ if (input.session) {
592
+ const builder = await this.getProductBuilder((_a = input.product) !== null && _a !== void 0 ? _a : this.defaultProduct);
593
+ const { processSessionForExecution } = await Promise.resolve().then(() => __importStar(require('./sessions')));
594
+ const resolved = await processSessionForExecution(input.session, builder.fetchPrivateKey(), input, input.env, {
595
+ fetchSessionSelector: async (tag) => { var _a; return (_a = (await builder.fetchSession(tag))) === null || _a === void 0 ? void 0 : _a.selector; },
596
+ });
597
+ if (resolved.error)
598
+ throw new Error('Invalid rate-limit session');
599
+ sessionFields = resolved.logFields;
600
+ }
601
+ (_b = this._rateLimitService) !== null && _b !== void 0 ? _b : (this._rateLimitService = new resilience_1.RateLimitService(this.redisClient));
559
602
  this._rateLimitService.setRedis(this.redisClient);
603
+ const logger = this.createNewLogger();
604
+ this._rateLimitService.setContext({ workspace: this.workspace_id, product: this.defaultProduct, observe: (event) => {
605
+ logger.add(Object.assign({ process_id: (0, crypto_1.randomUUID)(), product_tag: event.product, env: event.env, parent_tag: event.tag, type: 'rate_limit', status: (event.outcome === 'allowed' ? 'success' : 'fail'), successful_execution: event.outcome === 'allowed', failed_execution: event.outcome !== 'allowed', name: 'Rate limit decision', action: event.outcome, data: event, latency: event.latency, parent_process_id: event.executionId, trace_id: event.correlationId }, sessionFields));
606
+ void logger.publish();
607
+ } });
560
608
  return this._rateLimitService.run(input);
561
609
  },
562
610
  };