@cotal-ai/connector-claude-code 0.7.0 → 0.8.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/dist/mcp.cjs CHANGED
@@ -10096,6 +10096,126 @@ var require_mod = __commonJS({
10096
10096
  }
10097
10097
  });
10098
10098
 
10099
+ // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/types.js
10100
+ var require_types2 = __commonJS({
10101
+ "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/types.js"(exports2) {
10102
+ "use strict";
10103
+ Object.defineProperty(exports2, "__esModule", { value: true });
10104
+ exports2.RepublishHeaders = exports2.DirectMsgHeaders = exports2.JsHeaders = exports2.AdvisoryKind = void 0;
10105
+ exports2.isOrderedPushConsumerOptions = isOrderedPushConsumerOptions;
10106
+ exports2.isPullConsumer = isPullConsumer;
10107
+ exports2.isPushConsumer = isPushConsumer;
10108
+ exports2.isBoundPushConsumerOptions = isBoundPushConsumerOptions;
10109
+ function isOrderedPushConsumerOptions(v) {
10110
+ if (v && typeof v === "object") {
10111
+ return "name_prefix" in v || "deliver_subject_prefix" in v || "filter_subjects" in v || "filter_subject" in v || "deliver_policy" in v || "opt_start_seq" in v || "opt_start_time" in v || "replay_policy" in v || "inactive_threshold" in v || "headers_only" in v || "deliver_prefix" in v;
10112
+ }
10113
+ return false;
10114
+ }
10115
+ function isPullConsumer(v) {
10116
+ return v.isPullConsumer();
10117
+ }
10118
+ function isPushConsumer(v) {
10119
+ return v.isPushConsumer();
10120
+ }
10121
+ function isBoundPushConsumerOptions(v) {
10122
+ if (v && typeof v === "object") {
10123
+ return "deliver_subject" in v || "deliver_group" in v || "idle_heartbeat" in v;
10124
+ }
10125
+ return false;
10126
+ }
10127
+ exports2.AdvisoryKind = {
10128
+ API: "api_audit",
10129
+ StreamAction: "stream_action",
10130
+ ConsumerAction: "consumer_action",
10131
+ SnapshotCreate: "snapshot_create",
10132
+ SnapshotComplete: "snapshot_complete",
10133
+ RestoreCreate: "restore_create",
10134
+ RestoreComplete: "restore_complete",
10135
+ MaxDeliver: "max_deliver",
10136
+ Terminated: "terminated",
10137
+ Ack: "consumer_ack",
10138
+ StreamLeaderElected: "stream_leader_elected",
10139
+ StreamQuorumLost: "stream_quorum_lost",
10140
+ ConsumerLeaderElected: "consumer_leader_elected",
10141
+ ConsumerQuorumLost: "consumer_quorum_lost"
10142
+ };
10143
+ exports2.JsHeaders = {
10144
+ /**
10145
+ * Set if message is from a stream source - format is `stream seq`
10146
+ */
10147
+ StreamSourceHdr: "Nats-Stream-Source",
10148
+ /**
10149
+ * Set for heartbeat messages
10150
+ */
10151
+ LastConsumerSeqHdr: "Nats-Last-Consumer",
10152
+ /**
10153
+ * Set for heartbeat messages
10154
+ */
10155
+ LastStreamSeqHdr: "Nats-Last-Stream",
10156
+ /**
10157
+ * Set for heartbeat messages if the consumer is stalled, reply subject
10158
+ * will unstall the client when the client responds
10159
+ */
10160
+ ConsumerStalledHdr: "Nats-Consumer-Stalled",
10161
+ /**
10162
+ * Set for headers_only consumers indicates the number of bytes in the payload
10163
+ */
10164
+ MessageSizeHdr: "Nats-Msg-Size",
10165
+ // rollup header
10166
+ RollupHdr: "Nats-Rollup",
10167
+ // value for rollup header when rolling up a subject
10168
+ RollupValueSubject: "sub",
10169
+ // value for rollup header when rolling up all subjects
10170
+ RollupValueAll: "all",
10171
+ /**
10172
+ * Set on protocol messages to indicate pull request message count that
10173
+ * was not honored.
10174
+ */
10175
+ PendingMessagesHdr: "Nats-Pending-Messages",
10176
+ /**
10177
+ * Set on protocol messages to indicate pull request byte count that
10178
+ * was not honored
10179
+ */
10180
+ PendingBytesHdr: "Nats-Pending-Bytes",
10181
+ /**
10182
+ * Asserts a minimum JetStream API level on a JS API request (ADR-44).
10183
+ */
10184
+ RequiredApiLevel: "Nats-Required-Api-Level"
10185
+ };
10186
+ exports2.DirectMsgHeaders = {
10187
+ Stream: "Nats-Stream",
10188
+ Sequence: "Nats-Sequence",
10189
+ TimeStamp: "Nats-Time-Stamp",
10190
+ Subject: "Nats-Subject",
10191
+ LastSequence: "Nats-Last-Sequence",
10192
+ NumPending: "Nats-Num-Pending"
10193
+ };
10194
+ exports2.RepublishHeaders = {
10195
+ /**
10196
+ * The source stream of the message
10197
+ */
10198
+ Stream: "Nats-Stream",
10199
+ /**
10200
+ * The original subject of the message
10201
+ */
10202
+ Subject: "Nats-Subject",
10203
+ /**
10204
+ * The sequence of the republished message
10205
+ */
10206
+ Sequence: "Nats-Sequence",
10207
+ /**
10208
+ * The stream sequence id of the last message ingested to the same original subject (or 0 if none or deleted)
10209
+ */
10210
+ LastSequence: "Nats-Last-Sequence",
10211
+ /**
10212
+ * The size in bytes of the message's body - Only if {@link Republish#headers_only} is set.
10213
+ */
10214
+ Size: "Nats-Msg-Size"
10215
+ };
10216
+ }
10217
+ });
10218
+
10099
10219
  // ../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/encoders.js
10100
10220
  var require_encoders = __commonJS({
10101
10221
  "../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/encoders.js"(exports2) {
@@ -14912,7 +15032,7 @@ ${stack}`;
14912
15032
  });
14913
15033
 
14914
15034
  // ../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/types.js
14915
- var require_types2 = __commonJS({
15035
+ var require_types3 = __commonJS({
14916
15036
  "../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/types.js"(exports2) {
14917
15037
  "use strict";
14918
15038
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -14933,7 +15053,7 @@ var require_bench = __commonJS({
14933
15053
  exports2.throughput = throughput;
14934
15054
  exports2.msgThroughput = msgThroughput;
14935
15055
  exports2.humanizeBytes = humanizeBytes;
14936
- var types_1 = require_types2();
15056
+ var types_1 = require_types3();
14937
15057
  var nuid_1 = require_nuid2();
14938
15058
  var util_1 = require_util3();
14939
15059
  var Metric = class {
@@ -15895,7 +16015,7 @@ var require_internal_mod = __commonJS({
15895
16015
  Object.defineProperty(exports2, "parseSemVer", { enumerable: true, get: function() {
15896
16016
  return semver_1.parseSemVer;
15897
16017
  } });
15898
- var types_1 = require_types2();
16018
+ var types_1 = require_types3();
15899
16019
  Object.defineProperty(exports2, "Empty", { enumerable: true, get: function() {
15900
16020
  return types_1.Empty;
15901
16021
  } });
@@ -15987,747 +16107,105 @@ var require_internal_mod = __commonJS({
15987
16107
  }
15988
16108
  });
15989
16109
 
15990
- // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/nats-base-client.js
15991
- var require_nats_base_client = __commonJS({
15992
- "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/nats-base-client.js"(exports2) {
15993
- "use strict";
15994
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
15995
- if (k2 === void 0) k2 = k;
15996
- var desc = Object.getOwnPropertyDescriptor(m, k);
15997
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15998
- desc = { enumerable: true, get: function() {
15999
- return m[k];
16000
- } };
16001
- }
16002
- Object.defineProperty(o, k2, desc);
16003
- }) : (function(o, m, k, k2) {
16004
- if (k2 === void 0) k2 = k;
16005
- o[k2] = m[k];
16006
- }));
16007
- var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
16008
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
16009
- };
16010
- Object.defineProperty(exports2, "__esModule", { value: true });
16011
- __exportStar(require_internal_mod(), exports2);
16012
- }
16013
- });
16014
-
16015
- // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/version.js
16016
- var require_version3 = __commonJS({
16017
- "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/version.js"(exports2) {
16110
+ // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/jserrors.js
16111
+ var require_jserrors = __commonJS({
16112
+ "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/jserrors.js"(exports2) {
16018
16113
  "use strict";
16019
16114
  Object.defineProperty(exports2, "__esModule", { value: true });
16020
- exports2.version = void 0;
16021
- exports2.version = "3.4.0";
16022
- }
16023
- });
16024
-
16025
- // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/node_transport.js
16026
- var require_node_transport = __commonJS({
16027
- "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/node_transport.js"(exports2) {
16028
- "use strict";
16029
- var __importDefault = exports2 && exports2.__importDefault || function(mod) {
16030
- return mod && mod.__esModule ? mod : { "default": mod };
16115
+ exports2.jserrors = exports2.StreamNotFoundError = exports2.ConsumerNotFoundError = exports2.JetStreamApiError = exports2.InvalidNameError = exports2.JetStreamApiCodes = exports2.JetStreamStatus = exports2.JetStreamStatusError = exports2.JetStreamError = exports2.JetStreamNotEnabled = void 0;
16116
+ exports2.isMessageNotFound = isMessageNotFound;
16117
+ var types_1 = require_types2();
16118
+ var JetStreamNotEnabled = class extends Error {
16119
+ constructor(message, opts) {
16120
+ super(message, opts);
16121
+ this.name = "JetStreamNotEnabled";
16122
+ }
16031
16123
  };
16032
- Object.defineProperty(exports2, "__esModule", { value: true });
16033
- exports2.NodeTransport = exports2.VERSION = void 0;
16034
- exports2.nodeResolveHost = nodeResolveHost;
16035
- var nats_base_client_1 = require_nats_base_client();
16036
- var node_net_1 = require("node:net");
16037
- var node_tls_1 = require("node:tls");
16038
- var node_path_1 = require("node:path");
16039
- var node_fs_1 = require("node:fs");
16040
- var node_dns_1 = __importDefault(require("node:dns"));
16041
- var version_1 = require_version3();
16042
- exports2.VERSION = version_1.version;
16043
- var LANG = "nats.js";
16044
- var NodeTransport = class {
16045
- socket;
16046
- version;
16047
- lang;
16048
- yields = [];
16049
- signal = (0, nats_base_client_1.deferred)();
16050
- closedNotification = (0, nats_base_client_1.deferred)();
16051
- options;
16052
- connected = false;
16053
- tlsName = "";
16054
- done = false;
16055
- closeError;
16056
- constructor() {
16057
- this.lang = LANG;
16058
- this.version = exports2.VERSION;
16124
+ exports2.JetStreamNotEnabled = JetStreamNotEnabled;
16125
+ var JetStreamError = class extends Error {
16126
+ constructor(message, opts) {
16127
+ super(message, opts);
16128
+ this.name = "JetStreamError";
16059
16129
  }
16060
- async connect(hp, options) {
16061
- this.tlsName = hp.tlsName;
16062
- this.options = options;
16063
- const { tls } = this.options;
16064
- const { handshakeFirst } = tls || {};
16065
- try {
16066
- if (handshakeFirst === true) {
16067
- this.socket = await this.tlsFirst(hp);
16068
- } else {
16069
- this.socket = await this.dial(hp);
16070
- }
16071
- if (this.done) {
16072
- this.socket?.destroy();
16073
- }
16074
- const info = await this.peekInfo();
16075
- (0, nats_base_client_1.checkOptions)(info, options);
16076
- const { tls_required: tlsRequired, tls_available: tlsAvailable } = info;
16077
- const desired = tlsAvailable === true && options.tls !== null;
16078
- if (!handshakeFirst && (tlsRequired || desired)) {
16079
- this.socket = await this.startTLS();
16080
- }
16081
- if (this.done) {
16082
- this.socket?.destroy();
16083
- }
16084
- if (tlsRequired && this.socket.encrypted !== true) {
16085
- throw nats_base_client_1.errors.InvalidArgumentError.format("tls", "is not available on this server");
16086
- }
16087
- this.connected = true;
16088
- this.setupHandlers();
16089
- this.signal.resolve();
16090
- return Promise.resolve();
16091
- } catch (ex) {
16092
- let err2 = ex;
16093
- if (!err2) {
16094
- err2 = new nats_base_client_1.errors.ConnectionError("error connecting - node provided an undefined error");
16095
- }
16096
- const { code } = err2;
16097
- const perr = code === "ECONNREFUSED" ? new nats_base_client_1.errors.ConnectionError("connection refused", { cause: err2 }) : err2;
16098
- this.socket?.destroy();
16099
- throw perr;
16100
- }
16130
+ };
16131
+ exports2.JetStreamError = JetStreamError;
16132
+ var JetStreamStatusError = class extends JetStreamError {
16133
+ code;
16134
+ constructor(message, code, opts) {
16135
+ super(message, opts);
16136
+ this.code = code;
16137
+ this.name = "JetStreamStatusError";
16101
16138
  }
16102
- dial(hp) {
16103
- const d = (0, nats_base_client_1.deferred)();
16104
- let dialError;
16105
- const socket = (0, node_net_1.createConnection)(hp.port, hp.hostname, () => {
16106
- d.resolve(socket);
16107
- socket.removeAllListeners();
16108
- });
16109
- socket.on("error", (err2) => {
16110
- dialError = err2;
16111
- });
16112
- socket.on("close", () => {
16113
- socket.removeAllListeners();
16114
- d.reject(dialError);
16115
- });
16116
- socket.setNoDelay(true);
16117
- return d;
16139
+ };
16140
+ exports2.JetStreamStatusError = JetStreamStatusError;
16141
+ var JetStreamStatus = class _JetStreamStatus {
16142
+ msg;
16143
+ _description;
16144
+ constructor(msg) {
16145
+ this.msg = msg;
16146
+ this._description = "";
16118
16147
  }
16119
- get isClosed() {
16120
- return this.done;
16148
+ static maybeParseStatus(msg) {
16149
+ const status = new _JetStreamStatus(msg);
16150
+ return status.code === 0 ? null : status;
16121
16151
  }
16122
- close(err2) {
16123
- return this._closed(err2, false);
16152
+ toError() {
16153
+ return new JetStreamStatusError(this.description, this.code);
16124
16154
  }
16125
- peekInfo() {
16126
- const d = (0, nats_base_client_1.deferred)();
16127
- let peekError;
16128
- this.socket.on("data", (frame) => {
16129
- this.yields.push(frame);
16130
- const t = nats_base_client_1.DataBuffer.concat(...this.yields);
16131
- const pm = (0, nats_base_client_1.extractProtocolMessage)(t);
16132
- if (pm !== "") {
16133
- try {
16134
- const m = nats_base_client_1.INFO.exec(pm);
16135
- if (!m) {
16136
- throw new Error("unexpected response from server");
16137
- }
16138
- const info = JSON.parse(m[1]);
16139
- d.resolve(info);
16140
- } catch (err2) {
16141
- d.reject(err2);
16142
- } finally {
16143
- this.socket.removeAllListeners();
16144
- }
16145
- }
16146
- });
16147
- this.socket.on("error", (err2) => {
16148
- peekError = err2;
16149
- });
16150
- this.socket.on("close", () => {
16151
- this.socket.removeAllListeners();
16152
- d.reject(peekError);
16155
+ debug() {
16156
+ console.log({
16157
+ subject: this.msg.subject,
16158
+ reply: this.msg.reply,
16159
+ description: this.description,
16160
+ status: this.code,
16161
+ headers: this.msg.headers
16153
16162
  });
16154
- return d;
16155
16163
  }
16156
- loadFile(fn) {
16157
- if (!fn) {
16158
- return Promise.resolve();
16159
- }
16160
- const d = (0, nats_base_client_1.deferred)();
16161
- try {
16162
- fn = (0, node_path_1.resolve)(fn);
16163
- if (!(0, node_fs_1.existsSync)(fn)) {
16164
- d.reject(new Error(`${fn} doesn't exist`));
16165
- }
16166
- (0, node_fs_1.readFile)(fn, (err2, data) => {
16167
- if (err2) {
16168
- return d.reject(err2);
16169
- }
16170
- d.resolve(data);
16171
- });
16172
- } catch (err2) {
16173
- d.reject(err2);
16174
- }
16175
- return d;
16164
+ get code() {
16165
+ return this.msg.headers?.code || 0;
16176
16166
  }
16177
- async loadClientCerts() {
16178
- const tlsOpts = {};
16179
- const { certFile, cert, caFile, ca, keyFile, key } = this.options.tls;
16180
- try {
16181
- if (certFile) {
16182
- const data = await this.loadFile(certFile);
16183
- if (data) {
16184
- tlsOpts.cert = data;
16185
- }
16186
- } else if (cert) {
16187
- tlsOpts.cert = cert;
16188
- }
16189
- if (keyFile) {
16190
- const data = await this.loadFile(keyFile);
16191
- if (data) {
16192
- tlsOpts.key = data;
16193
- }
16194
- } else if (key) {
16195
- tlsOpts.key = key;
16196
- }
16197
- if (caFile) {
16198
- const data = await this.loadFile(caFile);
16199
- if (data) {
16200
- tlsOpts.ca = [data];
16201
- }
16202
- } else if (ca) {
16203
- tlsOpts.ca = ca;
16167
+ get description() {
16168
+ if (this._description === "") {
16169
+ this._description = this.msg.headers?.description?.toLowerCase() || "";
16170
+ if (this._description === "") {
16171
+ this._description = this.code === 503 ? "no responders" : "unknown";
16204
16172
  }
16205
- return Promise.resolve(tlsOpts);
16206
- } catch (err2) {
16207
- return Promise.reject(err2);
16208
16173
  }
16174
+ return this._description;
16209
16175
  }
16210
- async tlsFirst(hp) {
16211
- let tlsError;
16212
- let tlsOpts = {
16213
- servername: this.tlsName,
16214
- rejectUnauthorized: true
16215
- };
16216
- if (this.socket) {
16217
- tlsOpts.socket = this.socket;
16218
- }
16219
- if (typeof this.options.tls === "object") {
16220
- try {
16221
- const certOpts = await this.loadClientCerts() || {};
16222
- tlsOpts = (0, nats_base_client_1.extend)(tlsOpts, this.options.tls, certOpts);
16223
- } catch (err2) {
16224
- return Promise.reject(new nats_base_client_1.errors.ConnectionError(err2.message, { cause: err2 }));
16225
- }
16226
- }
16227
- const d = (0, nats_base_client_1.deferred)();
16228
- try {
16229
- const tlsSocket = (0, node_tls_1.connect)(hp.port, hp.hostname, tlsOpts, () => {
16230
- tlsSocket.removeAllListeners();
16231
- d.resolve(tlsSocket);
16232
- });
16233
- tlsSocket.on("error", (err2) => {
16234
- tlsError = err2;
16235
- });
16236
- tlsSocket.on("secureConnect", () => {
16237
- if (tlsOpts.rejectUnauthorized === false) {
16238
- return;
16239
- }
16240
- if (!tlsSocket.authorized) {
16241
- throw tlsSocket.authorizationError;
16242
- }
16243
- });
16244
- tlsSocket.on("close", () => {
16245
- d.reject(tlsError);
16246
- tlsSocket.removeAllListeners();
16247
- });
16248
- tlsSocket.setNoDelay(true);
16249
- } catch (err2) {
16250
- d.reject(new nats_base_client_1.errors.ConnectionError(err2.message, { cause: err2 }));
16176
+ isIdleHeartbeat() {
16177
+ return this.code === 100 && this.description === "idle heartbeat";
16178
+ }
16179
+ isFlowControlRequest() {
16180
+ return this.code === 100 && this.description === "flowcontrol request";
16181
+ }
16182
+ parseHeartbeat() {
16183
+ if (this.isIdleHeartbeat()) {
16184
+ return {
16185
+ type: "heartbeat",
16186
+ lastConsumerSequence: parseInt(this.msg.headers?.get("Nats-Last-Consumer") || "0"),
16187
+ lastStreamSequence: parseInt(this.msg.headers?.get("Nats-Last-Stream") || "0")
16188
+ };
16251
16189
  }
16252
- return d;
16190
+ return null;
16253
16191
  }
16254
- async startTLS() {
16255
- let tlsError;
16256
- let tlsOpts = {
16257
- socket: this.socket,
16258
- servername: this.tlsName,
16259
- rejectUnauthorized: true
16192
+ isRequestTimeout() {
16193
+ return this.code === 408 && this.description === "request timeout";
16194
+ }
16195
+ parseDiscard() {
16196
+ const discard = {
16197
+ msgsLeft: 0,
16198
+ bytesLeft: 0
16260
16199
  };
16261
- if (typeof this.options.tls === "object") {
16262
- try {
16263
- const certOpts = await this.loadClientCerts() || {};
16264
- tlsOpts = (0, nats_base_client_1.extend)(tlsOpts, this.options.tls, certOpts);
16265
- } catch (err2) {
16266
- return Promise.reject(new nats_base_client_1.errors.ConnectionError(err2.message, {
16267
- cause: err2
16268
- }));
16269
- }
16200
+ const msgsLeft = this.msg.headers?.get(types_1.JsHeaders.PendingMessagesHdr);
16201
+ if (msgsLeft) {
16202
+ discard.msgsLeft = parseInt(msgsLeft);
16270
16203
  }
16271
- const d = (0, nats_base_client_1.deferred)();
16272
- try {
16273
- const tlsSocket = (0, node_tls_1.connect)(tlsOpts, () => {
16274
- tlsSocket.removeAllListeners();
16275
- d.resolve(tlsSocket);
16276
- });
16277
- tlsSocket.on("error", (err2) => {
16278
- tlsError = err2;
16279
- });
16280
- tlsSocket.on("secureConnect", () => {
16281
- if (tlsOpts.rejectUnauthorized === false) {
16282
- return;
16283
- }
16284
- if (!tlsSocket.authorized) {
16285
- throw tlsSocket.authorizationError;
16286
- }
16287
- });
16288
- tlsSocket.on("close", () => {
16289
- d.reject(tlsError);
16290
- tlsSocket.removeAllListeners();
16291
- });
16292
- } catch (err2) {
16293
- d.reject(new nats_base_client_1.errors.ConnectionError(err2.message, { cause: err2 }));
16204
+ const bytesLeft = this.msg.headers?.get(types_1.JsHeaders.PendingBytesHdr);
16205
+ if (bytesLeft) {
16206
+ discard.bytesLeft = parseInt(bytesLeft);
16294
16207
  }
16295
- return d;
16296
- }
16297
- setupHandlers() {
16298
- let connError;
16299
- this.socket.on("data", (frame) => {
16300
- this.yields.push(frame);
16301
- return this.signal.resolve();
16302
- });
16303
- this.socket.on("error", (err2) => {
16304
- connError = err2;
16305
- });
16306
- this.socket.on("end", () => {
16307
- if (this.socket?.destroyed) {
16308
- return;
16309
- }
16310
- this.socket?.write(new Uint8Array(0), () => {
16311
- this.socket?.end();
16312
- });
16313
- });
16314
- this.socket.on("close", () => {
16315
- this._closed(connError, false);
16316
- });
16317
- }
16318
- [Symbol.asyncIterator]() {
16319
- return this.iterate();
16320
- }
16321
- async *iterate() {
16322
- while (true) {
16323
- if (this.yields.length === 0) {
16324
- await this.signal;
16325
- }
16326
- const yields = this.yields;
16327
- this.yields = [];
16328
- for (let i = 0; i < yields.length; i++) {
16329
- if (this.options.debug) {
16330
- console.info(`> ${(0, nats_base_client_1.render)(yields[i])}`);
16331
- }
16332
- yield yields[i];
16333
- }
16334
- if (this.done) {
16335
- break;
16336
- } else if (this.yields.length === 0) {
16337
- yields.length = 0;
16338
- this.yields = yields;
16339
- this.signal = (0, nats_base_client_1.deferred)();
16340
- }
16341
- }
16342
- }
16343
- discard() {
16344
- this.done = true;
16345
- if (this.socket) {
16346
- try {
16347
- this.socket.removeAllListeners();
16348
- this.socket.destroy();
16349
- } catch {
16350
- }
16351
- }
16352
- }
16353
- disconnect() {
16354
- this._closed(void 0, true).then().catch();
16355
- }
16356
- isEncrypted() {
16357
- return this.socket instanceof node_tls_1.TLSSocket;
16358
- }
16359
- _send(frame) {
16360
- if (this.isClosed || this.socket === void 0) {
16361
- return Promise.resolve();
16362
- }
16363
- if (this.options.debug) {
16364
- console.info(`< ${(0, nats_base_client_1.render)(frame)}`);
16365
- }
16366
- const d = (0, nats_base_client_1.deferred)();
16367
- try {
16368
- this.socket.write(frame, (err2) => {
16369
- if (err2) {
16370
- if (this.options.debug) {
16371
- console.error(`!!! ${(0, nats_base_client_1.render)(frame)}: ${err2}`);
16372
- }
16373
- return d.reject(err2);
16374
- }
16375
- return d.resolve();
16376
- });
16377
- } catch (err2) {
16378
- if (this.options.debug) {
16379
- console.error(`!!! ${(0, nats_base_client_1.render)(frame)}: ${err2}`);
16380
- }
16381
- d.reject(err2);
16382
- }
16383
- return d;
16384
- }
16385
- send(frame) {
16386
- const p = this._send(frame);
16387
- p.catch((_err) => {
16388
- });
16389
- }
16390
- async _closed(err2, internal = true) {
16391
- if (!this.connected)
16392
- return;
16393
- if (this.done) {
16394
- this.socket?.destroy();
16395
- return;
16396
- }
16397
- this.closeError = err2;
16398
- if (!err2 && this.socket && internal) {
16399
- try {
16400
- await this._send(new TextEncoder().encode(""));
16401
- } catch (err3) {
16402
- if (this.options.debug) {
16403
- console.log("transport close terminated with an error", err3);
16404
- }
16405
- }
16406
- }
16407
- try {
16408
- if (this.socket) {
16409
- this.socket.removeAllListeners();
16410
- this.socket?.destroy();
16411
- this.socket = void 0;
16412
- }
16413
- } catch (err3) {
16414
- console.log(err3);
16415
- }
16416
- this.done = true;
16417
- this.closedNotification.resolve(this.closeError);
16418
- }
16419
- closed() {
16420
- return this.closedNotification;
16421
- }
16422
- };
16423
- exports2.NodeTransport = NodeTransport;
16424
- function nodeResolveHost(s) {
16425
- const ips = (0, nats_base_client_1.deferred)();
16426
- node_dns_1.default.lookup(
16427
- s,
16428
- { all: true },
16429
- //@ts-ignore: callback changes shape when all is true
16430
- (err2, address) => {
16431
- if (err2) {
16432
- ips.reject(err2);
16433
- return;
16434
- }
16435
- const buf = [];
16436
- for (const r of address) {
16437
- buf.push(r.address);
16438
- }
16439
- if (buf.length === 0) {
16440
- buf.push(s);
16441
- }
16442
- ips.resolve(buf);
16443
- }
16444
- );
16445
- return ips;
16446
- }
16447
- }
16448
- });
16449
-
16450
- // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/connect.js
16451
- var require_connect = __commonJS({
16452
- "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/connect.js"(exports2) {
16453
- "use strict";
16454
- Object.defineProperty(exports2, "__esModule", { value: true });
16455
- exports2.connect = connect7;
16456
- var node_transport_1 = require_node_transport();
16457
- var nats_base_client_1 = require_nats_base_client();
16458
- var nats_base_client_2 = require_nats_base_client();
16459
- function connect7(opts = {}) {
16460
- if ((0, nats_base_client_2.hasWsProtocol)(opts)) {
16461
- return Promise.reject(nats_base_client_2.errors.InvalidArgumentError.format(`servers`, `node client doesn't support websockets, use the 'wsconnect' function instead`));
16462
- }
16463
- (0, nats_base_client_1.setTransportFactory)({
16464
- factory: () => {
16465
- return new node_transport_1.NodeTransport();
16466
- },
16467
- dnsResolveFn: node_transport_1.nodeResolveHost
16468
- });
16469
- return nats_base_client_1.NatsConnectionImpl.connect(opts);
16470
- }
16471
- }
16472
- });
16473
-
16474
- // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/mod.js
16475
- var require_mod3 = __commonJS({
16476
- "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/mod.js"(exports2) {
16477
- "use strict";
16478
- var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
16479
- if (k2 === void 0) k2 = k;
16480
- var desc = Object.getOwnPropertyDescriptor(m, k);
16481
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16482
- desc = { enumerable: true, get: function() {
16483
- return m[k];
16484
- } };
16485
- }
16486
- Object.defineProperty(o, k2, desc);
16487
- }) : (function(o, m, k, k2) {
16488
- if (k2 === void 0) k2 = k;
16489
- o[k2] = m[k];
16490
- }));
16491
- var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
16492
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
16493
- };
16494
- Object.defineProperty(exports2, "__esModule", { value: true });
16495
- exports2.connect = void 0;
16496
- var connect_1 = require_connect();
16497
- Object.defineProperty(exports2, "connect", { enumerable: true, get: function() {
16498
- return connect_1.connect;
16499
- } });
16500
- __exportStar(require_nats_base_client(), exports2);
16501
- }
16502
- });
16503
-
16504
- // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/index.js
16505
- var require_transport_node = __commonJS({
16506
- "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/index.js"(exports2, module2) {
16507
- "use strict";
16508
- module2.exports = require_mod3();
16509
- }
16510
- });
16511
-
16512
- // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/types.js
16513
- var require_types3 = __commonJS({
16514
- "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/types.js"(exports2) {
16515
- "use strict";
16516
- Object.defineProperty(exports2, "__esModule", { value: true });
16517
- exports2.RepublishHeaders = exports2.DirectMsgHeaders = exports2.JsHeaders = exports2.AdvisoryKind = void 0;
16518
- exports2.isOrderedPushConsumerOptions = isOrderedPushConsumerOptions;
16519
- exports2.isPullConsumer = isPullConsumer;
16520
- exports2.isPushConsumer = isPushConsumer;
16521
- exports2.isBoundPushConsumerOptions = isBoundPushConsumerOptions;
16522
- function isOrderedPushConsumerOptions(v) {
16523
- if (v && typeof v === "object") {
16524
- return "name_prefix" in v || "deliver_subject_prefix" in v || "filter_subjects" in v || "filter_subject" in v || "deliver_policy" in v || "opt_start_seq" in v || "opt_start_time" in v || "replay_policy" in v || "inactive_threshold" in v || "headers_only" in v || "deliver_prefix" in v;
16525
- }
16526
- return false;
16527
- }
16528
- function isPullConsumer(v) {
16529
- return v.isPullConsumer();
16530
- }
16531
- function isPushConsumer(v) {
16532
- return v.isPushConsumer();
16533
- }
16534
- function isBoundPushConsumerOptions(v) {
16535
- if (v && typeof v === "object") {
16536
- return "deliver_subject" in v || "deliver_group" in v || "idle_heartbeat" in v;
16537
- }
16538
- return false;
16539
- }
16540
- exports2.AdvisoryKind = {
16541
- API: "api_audit",
16542
- StreamAction: "stream_action",
16543
- ConsumerAction: "consumer_action",
16544
- SnapshotCreate: "snapshot_create",
16545
- SnapshotComplete: "snapshot_complete",
16546
- RestoreCreate: "restore_create",
16547
- RestoreComplete: "restore_complete",
16548
- MaxDeliver: "max_deliver",
16549
- Terminated: "terminated",
16550
- Ack: "consumer_ack",
16551
- StreamLeaderElected: "stream_leader_elected",
16552
- StreamQuorumLost: "stream_quorum_lost",
16553
- ConsumerLeaderElected: "consumer_leader_elected",
16554
- ConsumerQuorumLost: "consumer_quorum_lost"
16555
- };
16556
- exports2.JsHeaders = {
16557
- /**
16558
- * Set if message is from a stream source - format is `stream seq`
16559
- */
16560
- StreamSourceHdr: "Nats-Stream-Source",
16561
- /**
16562
- * Set for heartbeat messages
16563
- */
16564
- LastConsumerSeqHdr: "Nats-Last-Consumer",
16565
- /**
16566
- * Set for heartbeat messages
16567
- */
16568
- LastStreamSeqHdr: "Nats-Last-Stream",
16569
- /**
16570
- * Set for heartbeat messages if the consumer is stalled, reply subject
16571
- * will unstall the client when the client responds
16572
- */
16573
- ConsumerStalledHdr: "Nats-Consumer-Stalled",
16574
- /**
16575
- * Set for headers_only consumers indicates the number of bytes in the payload
16576
- */
16577
- MessageSizeHdr: "Nats-Msg-Size",
16578
- // rollup header
16579
- RollupHdr: "Nats-Rollup",
16580
- // value for rollup header when rolling up a subject
16581
- RollupValueSubject: "sub",
16582
- // value for rollup header when rolling up all subjects
16583
- RollupValueAll: "all",
16584
- /**
16585
- * Set on protocol messages to indicate pull request message count that
16586
- * was not honored.
16587
- */
16588
- PendingMessagesHdr: "Nats-Pending-Messages",
16589
- /**
16590
- * Set on protocol messages to indicate pull request byte count that
16591
- * was not honored
16592
- */
16593
- PendingBytesHdr: "Nats-Pending-Bytes",
16594
- /**
16595
- * Asserts a minimum JetStream API level on a JS API request (ADR-44).
16596
- */
16597
- RequiredApiLevel: "Nats-Required-Api-Level"
16598
- };
16599
- exports2.DirectMsgHeaders = {
16600
- Stream: "Nats-Stream",
16601
- Sequence: "Nats-Sequence",
16602
- TimeStamp: "Nats-Time-Stamp",
16603
- Subject: "Nats-Subject",
16604
- LastSequence: "Nats-Last-Sequence",
16605
- NumPending: "Nats-Num-Pending"
16606
- };
16607
- exports2.RepublishHeaders = {
16608
- /**
16609
- * The source stream of the message
16610
- */
16611
- Stream: "Nats-Stream",
16612
- /**
16613
- * The original subject of the message
16614
- */
16615
- Subject: "Nats-Subject",
16616
- /**
16617
- * The sequence of the republished message
16618
- */
16619
- Sequence: "Nats-Sequence",
16620
- /**
16621
- * The stream sequence id of the last message ingested to the same original subject (or 0 if none or deleted)
16622
- */
16623
- LastSequence: "Nats-Last-Sequence",
16624
- /**
16625
- * The size in bytes of the message's body - Only if {@link Republish#headers_only} is set.
16626
- */
16627
- Size: "Nats-Msg-Size"
16628
- };
16629
- }
16630
- });
16631
-
16632
- // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/jserrors.js
16633
- var require_jserrors = __commonJS({
16634
- "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/jserrors.js"(exports2) {
16635
- "use strict";
16636
- Object.defineProperty(exports2, "__esModule", { value: true });
16637
- exports2.jserrors = exports2.StreamNotFoundError = exports2.ConsumerNotFoundError = exports2.JetStreamApiError = exports2.InvalidNameError = exports2.JetStreamApiCodes = exports2.JetStreamStatus = exports2.JetStreamStatusError = exports2.JetStreamError = exports2.JetStreamNotEnabled = void 0;
16638
- exports2.isMessageNotFound = isMessageNotFound;
16639
- var types_1 = require_types3();
16640
- var JetStreamNotEnabled = class extends Error {
16641
- constructor(message, opts) {
16642
- super(message, opts);
16643
- this.name = "JetStreamNotEnabled";
16644
- }
16645
- };
16646
- exports2.JetStreamNotEnabled = JetStreamNotEnabled;
16647
- var JetStreamError = class extends Error {
16648
- constructor(message, opts) {
16649
- super(message, opts);
16650
- this.name = "JetStreamError";
16651
- }
16652
- };
16653
- exports2.JetStreamError = JetStreamError;
16654
- var JetStreamStatusError = class extends JetStreamError {
16655
- code;
16656
- constructor(message, code, opts) {
16657
- super(message, opts);
16658
- this.code = code;
16659
- this.name = "JetStreamStatusError";
16660
- }
16661
- };
16662
- exports2.JetStreamStatusError = JetStreamStatusError;
16663
- var JetStreamStatus = class _JetStreamStatus {
16664
- msg;
16665
- _description;
16666
- constructor(msg) {
16667
- this.msg = msg;
16668
- this._description = "";
16669
- }
16670
- static maybeParseStatus(msg) {
16671
- const status = new _JetStreamStatus(msg);
16672
- return status.code === 0 ? null : status;
16673
- }
16674
- toError() {
16675
- return new JetStreamStatusError(this.description, this.code);
16676
- }
16677
- debug() {
16678
- console.log({
16679
- subject: this.msg.subject,
16680
- reply: this.msg.reply,
16681
- description: this.description,
16682
- status: this.code,
16683
- headers: this.msg.headers
16684
- });
16685
- }
16686
- get code() {
16687
- return this.msg.headers?.code || 0;
16688
- }
16689
- get description() {
16690
- if (this._description === "") {
16691
- this._description = this.msg.headers?.description?.toLowerCase() || "";
16692
- if (this._description === "") {
16693
- this._description = this.code === 503 ? "no responders" : "unknown";
16694
- }
16695
- }
16696
- return this._description;
16697
- }
16698
- isIdleHeartbeat() {
16699
- return this.code === 100 && this.description === "idle heartbeat";
16700
- }
16701
- isFlowControlRequest() {
16702
- return this.code === 100 && this.description === "flowcontrol request";
16703
- }
16704
- parseHeartbeat() {
16705
- if (this.isIdleHeartbeat()) {
16706
- return {
16707
- type: "heartbeat",
16708
- lastConsumerSequence: parseInt(this.msg.headers?.get("Nats-Last-Consumer") || "0"),
16709
- lastStreamSequence: parseInt(this.msg.headers?.get("Nats-Last-Stream") || "0")
16710
- };
16711
- }
16712
- return null;
16713
- }
16714
- isRequestTimeout() {
16715
- return this.code === 408 && this.description === "request timeout";
16716
- }
16717
- parseDiscard() {
16718
- const discard = {
16719
- msgsLeft: 0,
16720
- bytesLeft: 0
16721
- };
16722
- const msgsLeft = this.msg.headers?.get(types_1.JsHeaders.PendingMessagesHdr);
16723
- if (msgsLeft) {
16724
- discard.msgsLeft = parseInt(msgsLeft);
16725
- }
16726
- const bytesLeft = this.msg.headers?.get(types_1.JsHeaders.PendingBytesHdr);
16727
- if (bytesLeft) {
16728
- discard.bytesLeft = parseInt(bytesLeft);
16729
- }
16730
- return discard;
16208
+ return discard;
16731
16209
  }
16732
16210
  isBadRequest() {
16733
16211
  return this.code === 400;
@@ -16850,7 +16328,7 @@ var require_jsbaseclient_api = __commonJS({
16850
16328
  exports2.parseJsResponse = parseJsResponse;
16851
16329
  exports2.defaultJsOptions = defaultJsOptions;
16852
16330
  var internal_1 = require_internal_mod();
16853
- var types_1 = require_types3();
16331
+ var types_1 = require_types2();
16854
16332
  var jserrors_1 = require_jserrors();
16855
16333
  var defaultPrefix = "$JS.API";
16856
16334
  var defaultTimeout = 5e3;
@@ -17111,7 +16589,7 @@ var require_jsutil = __commonJS({
17111
16589
  });
17112
16590
 
17113
16591
  // ../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/mod.js
17114
- var require_mod4 = __commonJS({
16592
+ var require_mod3 = __commonJS({
17115
16593
  "../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/mod.js"(exports2) {
17116
16594
  "use strict";
17117
16595
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -17247,7 +16725,7 @@ var require_jsapi_types = __commonJS({
17247
16725
  Object.defineProperty(exports2, "__esModule", { value: true });
17248
16726
  exports2.PubHeaders = exports2.PriorityPolicy = exports2.ConsumerApiAction = exports2.PersistMode = exports2.StoreCompression = exports2.ReplayPolicy = exports2.AckPolicy = exports2.DeliverPolicy = exports2.StorageType = exports2.DiscardPolicy = exports2.RetentionPolicy = void 0;
17249
16727
  exports2.defaultConsumer = defaultConsumer;
17250
- var nats_core_1 = require_mod4();
16728
+ var nats_core_1 = require_mod3();
17251
16729
  exports2.RetentionPolicy = {
17252
16730
  /**
17253
16731
  * Retain messages until the limits are reached, then trigger the discard policy.
@@ -18557,7 +18035,7 @@ var require_pushconsumer = __commonJS({
18557
18035
  exports2.PushConsumerImpl = exports2.PushConsumerMessagesImpl = void 0;
18558
18036
  var jsmsg_1 = require_jsmsg();
18559
18037
  var jsapi_types_1 = require_jsapi_types();
18560
- var types_1 = require_types3();
18038
+ var types_1 = require_types2();
18561
18039
  var internal_1 = require_internal_mod();
18562
18040
  var jserrors_1 = require_jserrors();
18563
18041
  var PushConsumerMessagesImpl = class extends internal_1.QueuedIteratorImpl {
@@ -18909,7 +18387,7 @@ var require_jsmstream_api = __commonJS({
18909
18387
  var jsbaseclient_api_1 = require_jsbaseclient_api();
18910
18388
  var jslister_1 = require_jslister();
18911
18389
  var jsutil_1 = require_jsutil();
18912
- var types_1 = require_types3();
18390
+ var types_1 = require_types2();
18913
18391
  var jsapi_types_1 = require_jsapi_types();
18914
18392
  var consumer_1 = require_consumer();
18915
18393
  var jsmconsumer_api_1 = require_jsmconsumer_api();
@@ -19431,7 +18909,7 @@ var require_jsm_direct = __commonJS({
19431
18909
  Object.defineProperty(exports2, "__esModule", { value: true });
19432
18910
  exports2.DirectConsumer = exports2.DirectMsgImpl = exports2.DirectStreamAPIImpl = void 0;
19433
18911
  var jsbaseclient_api_1 = require_jsbaseclient_api();
19434
- var types_1 = require_types3();
18912
+ var types_1 = require_types2();
19435
18913
  var internal_1 = require_internal_mod();
19436
18914
  var jsutil_1 = require_jsutil();
19437
18915
  var jserrors_1 = require_jserrors();
@@ -20194,327 +19672,849 @@ var require_jsclient = __commonJS({
20194
19672
  throw err2;
20195
19673
  });
20196
19674
  }
20197
- route(err2, m) {
20198
- if (err2) {
20199
- this.close(err2);
20200
- return;
20201
- }
20202
- let data;
20203
- try {
20204
- data = (0, jsbaseclient_api_1.parseJsResponse)(m);
20205
- } catch (err3) {
20206
- this.close(err3);
20207
- return;
20208
- }
20209
- if ("batch" in data && typeof data.batch === "string") {
20210
- const ack = data;
20211
- const e = this.pending.get(m.subject);
20212
- if (e && (e.op === FastIngestOp.Final || e.op === FastIngestOp.EOB)) {
20213
- e.deferred.resolve(ack);
20214
- this.pending.delete(m.subject);
19675
+ route(err2, m) {
19676
+ if (err2) {
19677
+ this.close(err2);
19678
+ return;
19679
+ }
19680
+ let data;
19681
+ try {
19682
+ data = (0, jsbaseclient_api_1.parseJsResponse)(m);
19683
+ } catch (err3) {
19684
+ this.close(err3);
19685
+ return;
19686
+ }
19687
+ if ("batch" in data && typeof data.batch === "string") {
19688
+ const ack = data;
19689
+ const e = this.pending.get(m.subject);
19690
+ if (e && (e.op === FastIngestOp.Final || e.op === FastIngestOp.EOB)) {
19691
+ e.deferred.resolve(ack);
19692
+ this.pending.delete(m.subject);
19693
+ }
19694
+ for (const [, entry] of this.pending) {
19695
+ if (entry.op === FastIngestOp.Append || entry.op === FastIngestOp.Ping) {
19696
+ entry.deferred.resolve({ batchSeq: entry.seq, ackSeq: this.acked });
19697
+ } else {
19698
+ entry.deferred.reject(new Error(BATCH_CLOSED));
19699
+ }
19700
+ }
19701
+ this.pending.clear();
19702
+ this.resolveStart();
19703
+ this.closedDeferred.resolve(ack);
19704
+ this.closed = true;
19705
+ this.gapIter?.stop();
19706
+ this.sub.unsubscribe();
19707
+ return;
19708
+ }
19709
+ const typed = data;
19710
+ if (typed.type === "gap") {
19711
+ if (this.gapIter) {
19712
+ const g = data;
19713
+ this.gapIter.push({ lastSeq: g.last_seq, seq: g.seq });
19714
+ }
19715
+ return;
19716
+ }
19717
+ const fa = data;
19718
+ if (typeof fa.msgs === "number")
19719
+ this.ackInterval = fa.msgs;
19720
+ if (typeof fa.seq === "number" && fa.seq > this.acked) {
19721
+ this.acked = fa.seq;
19722
+ }
19723
+ this.resolveStart();
19724
+ const exact = this.pending.get(m.subject);
19725
+ if (exact && (exact.op === FastIngestOp.Append || exact.op === FastIngestOp.Ping)) {
19726
+ exact.deferred.resolve({ batchSeq: exact.seq, ackSeq: this.acked });
19727
+ this.pending.delete(m.subject);
19728
+ }
19729
+ for (const [rs, e] of this.pending) {
19730
+ if (e.op === FastIngestOp.Append && e.seq - this.acked < this.ackInterval * this.maxOutstandingAcks) {
19731
+ e.deferred.resolve({ batchSeq: e.seq, ackSeq: this.acked });
19732
+ this.pending.delete(rs);
19733
+ }
19734
+ }
19735
+ }
19736
+ resolveStart() {
19737
+ this.startDeferred.resolve();
19738
+ }
19739
+ close(err2) {
19740
+ this.closed = true;
19741
+ this.closeErr = err2;
19742
+ for (const [, e] of this.pending)
19743
+ e.deferred.reject(err2);
19744
+ this.pending.clear();
19745
+ this.startDeferred.reject(err2);
19746
+ this.closedDeferred.reject(err2);
19747
+ this.gapIter?.stop();
19748
+ this.sub.unsubscribe();
19749
+ }
19750
+ add(subj, payload, opts) {
19751
+ if (this.closed)
19752
+ return Promise.reject(new Error(BATCH_CLOSED));
19753
+ const mySeq = ++this.seq;
19754
+ const rs = this.replyFor(FastIngestOp.Append, mySeq);
19755
+ const headers = opts ? buildPublishHeaders(opts) : void 0;
19756
+ this.nc.publish(subj, payload, { reply: rs, headers });
19757
+ if (mySeq - this.acked < this.ackInterval * this.maxOutstandingAcks) {
19758
+ return Promise.resolve({ batchSeq: mySeq, ackSeq: this.acked });
19759
+ }
19760
+ const d = (0, internal_1.deferred)();
19761
+ this.pending.set(rs, { seq: mySeq, op: FastIngestOp.Append, deferred: d });
19762
+ return this.deadlineOrClose(d, opts?.timeout ?? this.defaultTimeout);
19763
+ }
19764
+ last(subj, payload, opts) {
19765
+ if (this.closed)
19766
+ return Promise.reject(new Error(BATCH_CLOSED));
19767
+ const mySeq = ++this.seq;
19768
+ const rs = this.replyFor(FastIngestOp.Final, mySeq);
19769
+ const d = (0, internal_1.deferred)();
19770
+ this.pending.set(rs, { seq: mySeq, op: FastIngestOp.Final, deferred: d });
19771
+ const headers = opts ? buildPublishHeaders(opts) : void 0;
19772
+ this.nc.publish(subj, payload, { reply: rs, headers });
19773
+ return this.deadlineOrClose(d, opts?.timeout ?? this.defaultTimeout);
19774
+ }
19775
+ end(opts) {
19776
+ if (this.closed)
19777
+ return Promise.reject(new Error(BATCH_CLOSED));
19778
+ const mySeq = ++this.seq;
19779
+ const rs = this.replyFor(FastIngestOp.EOB, mySeq);
19780
+ const d = (0, internal_1.deferred)();
19781
+ this.pending.set(rs, { seq: mySeq, op: FastIngestOp.EOB, deferred: d });
19782
+ const headers = opts ? buildPublishHeaders(opts) : void 0;
19783
+ this.nc.publish(this.batchSubj, internal_1.Empty, { reply: rs, headers });
19784
+ return this.deadlineOrClose(d, opts?.timeout ?? this.defaultTimeout);
19785
+ }
19786
+ ping(timeout = this.defaultTimeout) {
19787
+ if (this.closed)
19788
+ return Promise.reject(new Error(BATCH_CLOSED));
19789
+ const rs = this.replyFor(FastIngestOp.Ping, this.seq);
19790
+ const existing = this.pending.get(rs);
19791
+ if (existing && existing.op === FastIngestOp.Ping) {
19792
+ return (0, internal_1.deadline)(existing.deferred, timeout);
19793
+ }
19794
+ const d = (0, internal_1.deferred)();
19795
+ this.pending.set(rs, { seq: this.seq, op: FastIngestOp.Ping, deferred: d });
19796
+ this.nc.publish(this.batchSubj, internal_1.Empty, { reply: rs });
19797
+ return this.deadlineOrClose(d, timeout);
19798
+ }
19799
+ done() {
19800
+ return this.closedDeferred;
19801
+ }
19802
+ gaps() {
19803
+ if (!this.gapIter) {
19804
+ this.gapIter = new internal_1.QueuedIteratorImpl();
19805
+ }
19806
+ return this.gapIter;
19807
+ }
19808
+ };
19809
+ }
19810
+ });
19811
+
19812
+ // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/internal_mod.js
19813
+ var require_internal_mod2 = __commonJS({
19814
+ "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/internal_mod.js"(exports2) {
19815
+ "use strict";
19816
+ Object.defineProperty(exports2, "__esModule", { value: true });
19817
+ exports2.validateStreamName = exports2.jserrors = exports2.JetStreamStatusError = exports2.JetStreamStatus = exports2.JetStreamError = exports2.JetStreamApiError = exports2.JetStreamApiCodes = exports2.isMessageNotFound = exports2.ListerImpl = exports2.StoreCompression = exports2.StorageType = exports2.RetentionPolicy = exports2.ReplayPolicy = exports2.PubHeaders = exports2.PersistMode = exports2.DiscardPolicy = exports2.DeliverPolicy = exports2.AckPolicy = exports2.DirectMsgImpl = exports2.BaseApiClientImpl = exports2.toJetStreamClient = exports2.startFastIngest = exports2.jetstreamManager = exports2.JetStreamClientImpl = exports2.jetstream = exports2.RepublishHeaders = exports2.JsHeaders = exports2.isPushConsumer = exports2.isPullConsumer = exports2.isOrderedPushConsumerOptions = exports2.isBoundPushConsumerOptions = exports2.DirectMsgHeaders = exports2.AdvisoryKind = void 0;
19818
+ var types_1 = require_types2();
19819
+ Object.defineProperty(exports2, "AdvisoryKind", { enumerable: true, get: function() {
19820
+ return types_1.AdvisoryKind;
19821
+ } });
19822
+ Object.defineProperty(exports2, "DirectMsgHeaders", { enumerable: true, get: function() {
19823
+ return types_1.DirectMsgHeaders;
19824
+ } });
19825
+ Object.defineProperty(exports2, "isBoundPushConsumerOptions", { enumerable: true, get: function() {
19826
+ return types_1.isBoundPushConsumerOptions;
19827
+ } });
19828
+ Object.defineProperty(exports2, "isOrderedPushConsumerOptions", { enumerable: true, get: function() {
19829
+ return types_1.isOrderedPushConsumerOptions;
19830
+ } });
19831
+ Object.defineProperty(exports2, "isPullConsumer", { enumerable: true, get: function() {
19832
+ return types_1.isPullConsumer;
19833
+ } });
19834
+ Object.defineProperty(exports2, "isPushConsumer", { enumerable: true, get: function() {
19835
+ return types_1.isPushConsumer;
19836
+ } });
19837
+ Object.defineProperty(exports2, "JsHeaders", { enumerable: true, get: function() {
19838
+ return types_1.JsHeaders;
19839
+ } });
19840
+ Object.defineProperty(exports2, "RepublishHeaders", { enumerable: true, get: function() {
19841
+ return types_1.RepublishHeaders;
19842
+ } });
19843
+ var jsclient_1 = require_jsclient();
19844
+ Object.defineProperty(exports2, "jetstream", { enumerable: true, get: function() {
19845
+ return jsclient_1.jetstream;
19846
+ } });
19847
+ Object.defineProperty(exports2, "JetStreamClientImpl", { enumerable: true, get: function() {
19848
+ return jsclient_1.JetStreamClientImpl;
19849
+ } });
19850
+ Object.defineProperty(exports2, "jetstreamManager", { enumerable: true, get: function() {
19851
+ return jsclient_1.jetstreamManager;
19852
+ } });
19853
+ Object.defineProperty(exports2, "startFastIngest", { enumerable: true, get: function() {
19854
+ return jsclient_1.startFastIngest;
19855
+ } });
19856
+ Object.defineProperty(exports2, "toJetStreamClient", { enumerable: true, get: function() {
19857
+ return jsclient_1.toJetStreamClient;
19858
+ } });
19859
+ var jsbaseclient_api_1 = require_jsbaseclient_api();
19860
+ Object.defineProperty(exports2, "BaseApiClientImpl", { enumerable: true, get: function() {
19861
+ return jsbaseclient_api_1.BaseApiClientImpl;
19862
+ } });
19863
+ var jsm_direct_1 = require_jsm_direct();
19864
+ Object.defineProperty(exports2, "DirectMsgImpl", { enumerable: true, get: function() {
19865
+ return jsm_direct_1.DirectMsgImpl;
19866
+ } });
19867
+ var jsapi_types_1 = require_jsapi_types();
19868
+ Object.defineProperty(exports2, "AckPolicy", { enumerable: true, get: function() {
19869
+ return jsapi_types_1.AckPolicy;
19870
+ } });
19871
+ Object.defineProperty(exports2, "DeliverPolicy", { enumerable: true, get: function() {
19872
+ return jsapi_types_1.DeliverPolicy;
19873
+ } });
19874
+ Object.defineProperty(exports2, "DiscardPolicy", { enumerable: true, get: function() {
19875
+ return jsapi_types_1.DiscardPolicy;
19876
+ } });
19877
+ Object.defineProperty(exports2, "PersistMode", { enumerable: true, get: function() {
19878
+ return jsapi_types_1.PersistMode;
19879
+ } });
19880
+ Object.defineProperty(exports2, "PubHeaders", { enumerable: true, get: function() {
19881
+ return jsapi_types_1.PubHeaders;
19882
+ } });
19883
+ Object.defineProperty(exports2, "ReplayPolicy", { enumerable: true, get: function() {
19884
+ return jsapi_types_1.ReplayPolicy;
19885
+ } });
19886
+ Object.defineProperty(exports2, "RetentionPolicy", { enumerable: true, get: function() {
19887
+ return jsapi_types_1.RetentionPolicy;
19888
+ } });
19889
+ Object.defineProperty(exports2, "StorageType", { enumerable: true, get: function() {
19890
+ return jsapi_types_1.StorageType;
19891
+ } });
19892
+ Object.defineProperty(exports2, "StoreCompression", { enumerable: true, get: function() {
19893
+ return jsapi_types_1.StoreCompression;
19894
+ } });
19895
+ var jslister_1 = require_jslister();
19896
+ Object.defineProperty(exports2, "ListerImpl", { enumerable: true, get: function() {
19897
+ return jslister_1.ListerImpl;
19898
+ } });
19899
+ var jserrors_1 = require_jserrors();
19900
+ Object.defineProperty(exports2, "isMessageNotFound", { enumerable: true, get: function() {
19901
+ return jserrors_1.isMessageNotFound;
19902
+ } });
19903
+ Object.defineProperty(exports2, "JetStreamApiCodes", { enumerable: true, get: function() {
19904
+ return jserrors_1.JetStreamApiCodes;
19905
+ } });
19906
+ Object.defineProperty(exports2, "JetStreamApiError", { enumerable: true, get: function() {
19907
+ return jserrors_1.JetStreamApiError;
19908
+ } });
19909
+ Object.defineProperty(exports2, "JetStreamError", { enumerable: true, get: function() {
19910
+ return jserrors_1.JetStreamError;
19911
+ } });
19912
+ Object.defineProperty(exports2, "JetStreamStatus", { enumerable: true, get: function() {
19913
+ return jserrors_1.JetStreamStatus;
19914
+ } });
19915
+ Object.defineProperty(exports2, "JetStreamStatusError", { enumerable: true, get: function() {
19916
+ return jserrors_1.JetStreamStatusError;
19917
+ } });
19918
+ Object.defineProperty(exports2, "jserrors", { enumerable: true, get: function() {
19919
+ return jserrors_1.jserrors;
19920
+ } });
19921
+ var jsutil_1 = require_jsutil();
19922
+ Object.defineProperty(exports2, "validateStreamName", { enumerable: true, get: function() {
19923
+ return jsutil_1.validateStreamName;
19924
+ } });
19925
+ }
19926
+ });
19927
+
19928
+ // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/mod.js
19929
+ var require_mod4 = __commonJS({
19930
+ "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/mod.js"(exports2) {
19931
+ "use strict";
19932
+ Object.defineProperty(exports2, "__esModule", { value: true });
19933
+ exports2.StoreCompression = exports2.StorageType = exports2.RetentionPolicy = exports2.RepublishHeaders = exports2.ReplayPolicy = exports2.PubHeaders = exports2.PersistMode = exports2.JsHeaders = exports2.JetStreamError = exports2.JetStreamApiError = exports2.JetStreamApiCodes = exports2.isPushConsumer = exports2.isPullConsumer = exports2.DiscardPolicy = exports2.DirectMsgHeaders = exports2.DeliverPolicy = exports2.AdvisoryKind = exports2.AckPolicy = exports2.jetstreamManager = exports2.jetstream = void 0;
19934
+ var internal_mod_1 = require_internal_mod2();
19935
+ Object.defineProperty(exports2, "jetstream", { enumerable: true, get: function() {
19936
+ return internal_mod_1.jetstream;
19937
+ } });
19938
+ Object.defineProperty(exports2, "jetstreamManager", { enumerable: true, get: function() {
19939
+ return internal_mod_1.jetstreamManager;
19940
+ } });
19941
+ var internal_mod_2 = require_internal_mod2();
19942
+ Object.defineProperty(exports2, "AckPolicy", { enumerable: true, get: function() {
19943
+ return internal_mod_2.AckPolicy;
19944
+ } });
19945
+ Object.defineProperty(exports2, "AdvisoryKind", { enumerable: true, get: function() {
19946
+ return internal_mod_2.AdvisoryKind;
19947
+ } });
19948
+ Object.defineProperty(exports2, "DeliverPolicy", { enumerable: true, get: function() {
19949
+ return internal_mod_2.DeliverPolicy;
19950
+ } });
19951
+ Object.defineProperty(exports2, "DirectMsgHeaders", { enumerable: true, get: function() {
19952
+ return internal_mod_2.DirectMsgHeaders;
19953
+ } });
19954
+ Object.defineProperty(exports2, "DiscardPolicy", { enumerable: true, get: function() {
19955
+ return internal_mod_2.DiscardPolicy;
19956
+ } });
19957
+ Object.defineProperty(exports2, "isPullConsumer", { enumerable: true, get: function() {
19958
+ return internal_mod_2.isPullConsumer;
19959
+ } });
19960
+ Object.defineProperty(exports2, "isPushConsumer", { enumerable: true, get: function() {
19961
+ return internal_mod_2.isPushConsumer;
19962
+ } });
19963
+ Object.defineProperty(exports2, "JetStreamApiCodes", { enumerable: true, get: function() {
19964
+ return internal_mod_2.JetStreamApiCodes;
19965
+ } });
19966
+ Object.defineProperty(exports2, "JetStreamApiError", { enumerable: true, get: function() {
19967
+ return internal_mod_2.JetStreamApiError;
19968
+ } });
19969
+ Object.defineProperty(exports2, "JetStreamError", { enumerable: true, get: function() {
19970
+ return internal_mod_2.JetStreamError;
19971
+ } });
19972
+ Object.defineProperty(exports2, "JsHeaders", { enumerable: true, get: function() {
19973
+ return internal_mod_2.JsHeaders;
19974
+ } });
19975
+ Object.defineProperty(exports2, "PersistMode", { enumerable: true, get: function() {
19976
+ return internal_mod_2.PersistMode;
19977
+ } });
19978
+ Object.defineProperty(exports2, "PubHeaders", { enumerable: true, get: function() {
19979
+ return internal_mod_2.PubHeaders;
19980
+ } });
19981
+ Object.defineProperty(exports2, "ReplayPolicy", { enumerable: true, get: function() {
19982
+ return internal_mod_2.ReplayPolicy;
19983
+ } });
19984
+ Object.defineProperty(exports2, "RepublishHeaders", { enumerable: true, get: function() {
19985
+ return internal_mod_2.RepublishHeaders;
19986
+ } });
19987
+ Object.defineProperty(exports2, "RetentionPolicy", { enumerable: true, get: function() {
19988
+ return internal_mod_2.RetentionPolicy;
19989
+ } });
19990
+ Object.defineProperty(exports2, "StorageType", { enumerable: true, get: function() {
19991
+ return internal_mod_2.StorageType;
19992
+ } });
19993
+ Object.defineProperty(exports2, "StoreCompression", { enumerable: true, get: function() {
19994
+ return internal_mod_2.StoreCompression;
19995
+ } });
19996
+ }
19997
+ });
19998
+
19999
+ // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/nats-base-client.js
20000
+ var require_nats_base_client = __commonJS({
20001
+ "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/nats-base-client.js"(exports2) {
20002
+ "use strict";
20003
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
20004
+ if (k2 === void 0) k2 = k;
20005
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20006
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20007
+ desc = { enumerable: true, get: function() {
20008
+ return m[k];
20009
+ } };
20010
+ }
20011
+ Object.defineProperty(o, k2, desc);
20012
+ }) : (function(o, m, k, k2) {
20013
+ if (k2 === void 0) k2 = k;
20014
+ o[k2] = m[k];
20015
+ }));
20016
+ var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
20017
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
20018
+ };
20019
+ Object.defineProperty(exports2, "__esModule", { value: true });
20020
+ __exportStar(require_internal_mod(), exports2);
20021
+ }
20022
+ });
20023
+
20024
+ // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/version.js
20025
+ var require_version3 = __commonJS({
20026
+ "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/version.js"(exports2) {
20027
+ "use strict";
20028
+ Object.defineProperty(exports2, "__esModule", { value: true });
20029
+ exports2.version = void 0;
20030
+ exports2.version = "3.4.0";
20031
+ }
20032
+ });
20033
+
20034
+ // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/node_transport.js
20035
+ var require_node_transport = __commonJS({
20036
+ "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/node_transport.js"(exports2) {
20037
+ "use strict";
20038
+ var __importDefault = exports2 && exports2.__importDefault || function(mod) {
20039
+ return mod && mod.__esModule ? mod : { "default": mod };
20040
+ };
20041
+ Object.defineProperty(exports2, "__esModule", { value: true });
20042
+ exports2.NodeTransport = exports2.VERSION = void 0;
20043
+ exports2.nodeResolveHost = nodeResolveHost;
20044
+ var nats_base_client_1 = require_nats_base_client();
20045
+ var node_net_1 = require("node:net");
20046
+ var node_tls_1 = require("node:tls");
20047
+ var node_path_1 = require("node:path");
20048
+ var node_fs_1 = require("node:fs");
20049
+ var node_dns_1 = __importDefault(require("node:dns"));
20050
+ var version_1 = require_version3();
20051
+ exports2.VERSION = version_1.version;
20052
+ var LANG = "nats.js";
20053
+ var NodeTransport = class {
20054
+ socket;
20055
+ version;
20056
+ lang;
20057
+ yields = [];
20058
+ signal = (0, nats_base_client_1.deferred)();
20059
+ closedNotification = (0, nats_base_client_1.deferred)();
20060
+ options;
20061
+ connected = false;
20062
+ tlsName = "";
20063
+ done = false;
20064
+ closeError;
20065
+ constructor() {
20066
+ this.lang = LANG;
20067
+ this.version = exports2.VERSION;
20068
+ }
20069
+ async connect(hp, options) {
20070
+ this.tlsName = hp.tlsName;
20071
+ this.options = options;
20072
+ const { tls } = this.options;
20073
+ const { handshakeFirst } = tls || {};
20074
+ try {
20075
+ if (handshakeFirst === true) {
20076
+ this.socket = await this.tlsFirst(hp);
20077
+ } else {
20078
+ this.socket = await this.dial(hp);
20079
+ }
20080
+ if (this.done) {
20081
+ this.socket?.destroy();
20082
+ }
20083
+ const info = await this.peekInfo();
20084
+ (0, nats_base_client_1.checkOptions)(info, options);
20085
+ const { tls_required: tlsRequired, tls_available: tlsAvailable } = info;
20086
+ const desired = tlsAvailable === true && options.tls !== null;
20087
+ if (!handshakeFirst && (tlsRequired || desired)) {
20088
+ this.socket = await this.startTLS();
20089
+ }
20090
+ if (this.done) {
20091
+ this.socket?.destroy();
20092
+ }
20093
+ if (tlsRequired && this.socket.encrypted !== true) {
20094
+ throw nats_base_client_1.errors.InvalidArgumentError.format("tls", "is not available on this server");
20095
+ }
20096
+ this.connected = true;
20097
+ this.setupHandlers();
20098
+ this.signal.resolve();
20099
+ return Promise.resolve();
20100
+ } catch (ex) {
20101
+ let err2 = ex;
20102
+ if (!err2) {
20103
+ err2 = new nats_base_client_1.errors.ConnectionError("error connecting - node provided an undefined error");
20104
+ }
20105
+ const { code } = err2;
20106
+ const perr = code === "ECONNREFUSED" ? new nats_base_client_1.errors.ConnectionError("connection refused", { cause: err2 }) : err2;
20107
+ this.socket?.destroy();
20108
+ throw perr;
20109
+ }
20110
+ }
20111
+ dial(hp) {
20112
+ const d = (0, nats_base_client_1.deferred)();
20113
+ let dialError;
20114
+ const socket = (0, node_net_1.createConnection)(hp.port, hp.hostname, () => {
20115
+ d.resolve(socket);
20116
+ socket.removeAllListeners();
20117
+ });
20118
+ socket.on("error", (err2) => {
20119
+ dialError = err2;
20120
+ });
20121
+ socket.on("close", () => {
20122
+ socket.removeAllListeners();
20123
+ d.reject(dialError);
20124
+ });
20125
+ socket.setNoDelay(true);
20126
+ return d;
20127
+ }
20128
+ get isClosed() {
20129
+ return this.done;
20130
+ }
20131
+ close(err2) {
20132
+ return this._closed(err2, false);
20133
+ }
20134
+ peekInfo() {
20135
+ const d = (0, nats_base_client_1.deferred)();
20136
+ let peekError;
20137
+ this.socket.on("data", (frame) => {
20138
+ this.yields.push(frame);
20139
+ const t = nats_base_client_1.DataBuffer.concat(...this.yields);
20140
+ const pm = (0, nats_base_client_1.extractProtocolMessage)(t);
20141
+ if (pm !== "") {
20142
+ try {
20143
+ const m = nats_base_client_1.INFO.exec(pm);
20144
+ if (!m) {
20145
+ throw new Error("unexpected response from server");
20146
+ }
20147
+ const info = JSON.parse(m[1]);
20148
+ d.resolve(info);
20149
+ } catch (err2) {
20150
+ d.reject(err2);
20151
+ } finally {
20152
+ this.socket.removeAllListeners();
20153
+ }
20154
+ }
20155
+ });
20156
+ this.socket.on("error", (err2) => {
20157
+ peekError = err2;
20158
+ });
20159
+ this.socket.on("close", () => {
20160
+ this.socket.removeAllListeners();
20161
+ d.reject(peekError);
20162
+ });
20163
+ return d;
20164
+ }
20165
+ loadFile(fn) {
20166
+ if (!fn) {
20167
+ return Promise.resolve();
20168
+ }
20169
+ const d = (0, nats_base_client_1.deferred)();
20170
+ try {
20171
+ fn = (0, node_path_1.resolve)(fn);
20172
+ if (!(0, node_fs_1.existsSync)(fn)) {
20173
+ d.reject(new Error(`${fn} doesn't exist`));
20174
+ }
20175
+ (0, node_fs_1.readFile)(fn, (err2, data) => {
20176
+ if (err2) {
20177
+ return d.reject(err2);
20178
+ }
20179
+ d.resolve(data);
20180
+ });
20181
+ } catch (err2) {
20182
+ d.reject(err2);
20183
+ }
20184
+ return d;
20185
+ }
20186
+ async loadClientCerts() {
20187
+ const tlsOpts = {};
20188
+ const { certFile, cert, caFile, ca, keyFile, key } = this.options.tls;
20189
+ try {
20190
+ if (certFile) {
20191
+ const data = await this.loadFile(certFile);
20192
+ if (data) {
20193
+ tlsOpts.cert = data;
20194
+ }
20195
+ } else if (cert) {
20196
+ tlsOpts.cert = cert;
20197
+ }
20198
+ if (keyFile) {
20199
+ const data = await this.loadFile(keyFile);
20200
+ if (data) {
20201
+ tlsOpts.key = data;
20202
+ }
20203
+ } else if (key) {
20204
+ tlsOpts.key = key;
20205
+ }
20206
+ if (caFile) {
20207
+ const data = await this.loadFile(caFile);
20208
+ if (data) {
20209
+ tlsOpts.ca = [data];
20210
+ }
20211
+ } else if (ca) {
20212
+ tlsOpts.ca = ca;
20213
+ }
20214
+ return Promise.resolve(tlsOpts);
20215
+ } catch (err2) {
20216
+ return Promise.reject(err2);
20217
+ }
20218
+ }
20219
+ async tlsFirst(hp) {
20220
+ let tlsError;
20221
+ let tlsOpts = {
20222
+ servername: this.tlsName,
20223
+ rejectUnauthorized: true
20224
+ };
20225
+ if (this.socket) {
20226
+ tlsOpts.socket = this.socket;
20227
+ }
20228
+ if (typeof this.options.tls === "object") {
20229
+ try {
20230
+ const certOpts = await this.loadClientCerts() || {};
20231
+ tlsOpts = (0, nats_base_client_1.extend)(tlsOpts, this.options.tls, certOpts);
20232
+ } catch (err2) {
20233
+ return Promise.reject(new nats_base_client_1.errors.ConnectionError(err2.message, { cause: err2 }));
20234
+ }
20235
+ }
20236
+ const d = (0, nats_base_client_1.deferred)();
20237
+ try {
20238
+ const tlsSocket = (0, node_tls_1.connect)(hp.port, hp.hostname, tlsOpts, () => {
20239
+ tlsSocket.removeAllListeners();
20240
+ d.resolve(tlsSocket);
20241
+ });
20242
+ tlsSocket.on("error", (err2) => {
20243
+ tlsError = err2;
20244
+ });
20245
+ tlsSocket.on("secureConnect", () => {
20246
+ if (tlsOpts.rejectUnauthorized === false) {
20247
+ return;
20248
+ }
20249
+ if (!tlsSocket.authorized) {
20250
+ throw tlsSocket.authorizationError;
20251
+ }
20252
+ });
20253
+ tlsSocket.on("close", () => {
20254
+ d.reject(tlsError);
20255
+ tlsSocket.removeAllListeners();
20256
+ });
20257
+ tlsSocket.setNoDelay(true);
20258
+ } catch (err2) {
20259
+ d.reject(new nats_base_client_1.errors.ConnectionError(err2.message, { cause: err2 }));
20260
+ }
20261
+ return d;
20262
+ }
20263
+ async startTLS() {
20264
+ let tlsError;
20265
+ let tlsOpts = {
20266
+ socket: this.socket,
20267
+ servername: this.tlsName,
20268
+ rejectUnauthorized: true
20269
+ };
20270
+ if (typeof this.options.tls === "object") {
20271
+ try {
20272
+ const certOpts = await this.loadClientCerts() || {};
20273
+ tlsOpts = (0, nats_base_client_1.extend)(tlsOpts, this.options.tls, certOpts);
20274
+ } catch (err2) {
20275
+ return Promise.reject(new nats_base_client_1.errors.ConnectionError(err2.message, {
20276
+ cause: err2
20277
+ }));
20278
+ }
20279
+ }
20280
+ const d = (0, nats_base_client_1.deferred)();
20281
+ try {
20282
+ const tlsSocket = (0, node_tls_1.connect)(tlsOpts, () => {
20283
+ tlsSocket.removeAllListeners();
20284
+ d.resolve(tlsSocket);
20285
+ });
20286
+ tlsSocket.on("error", (err2) => {
20287
+ tlsError = err2;
20288
+ });
20289
+ tlsSocket.on("secureConnect", () => {
20290
+ if (tlsOpts.rejectUnauthorized === false) {
20291
+ return;
20292
+ }
20293
+ if (!tlsSocket.authorized) {
20294
+ throw tlsSocket.authorizationError;
20295
+ }
20296
+ });
20297
+ tlsSocket.on("close", () => {
20298
+ d.reject(tlsError);
20299
+ tlsSocket.removeAllListeners();
20300
+ });
20301
+ } catch (err2) {
20302
+ d.reject(new nats_base_client_1.errors.ConnectionError(err2.message, { cause: err2 }));
20303
+ }
20304
+ return d;
20305
+ }
20306
+ setupHandlers() {
20307
+ let connError;
20308
+ this.socket.on("data", (frame) => {
20309
+ this.yields.push(frame);
20310
+ return this.signal.resolve();
20311
+ });
20312
+ this.socket.on("error", (err2) => {
20313
+ connError = err2;
20314
+ });
20315
+ this.socket.on("end", () => {
20316
+ if (this.socket?.destroyed) {
20317
+ return;
20318
+ }
20319
+ this.socket?.write(new Uint8Array(0), () => {
20320
+ this.socket?.end();
20321
+ });
20322
+ });
20323
+ this.socket.on("close", () => {
20324
+ this._closed(connError, false);
20325
+ });
20326
+ }
20327
+ [Symbol.asyncIterator]() {
20328
+ return this.iterate();
20329
+ }
20330
+ async *iterate() {
20331
+ while (true) {
20332
+ if (this.yields.length === 0) {
20333
+ await this.signal;
20215
20334
  }
20216
- for (const [, entry] of this.pending) {
20217
- if (entry.op === FastIngestOp.Append || entry.op === FastIngestOp.Ping) {
20218
- entry.deferred.resolve({ batchSeq: entry.seq, ackSeq: this.acked });
20219
- } else {
20220
- entry.deferred.reject(new Error(BATCH_CLOSED));
20335
+ const yields = this.yields;
20336
+ this.yields = [];
20337
+ for (let i = 0; i < yields.length; i++) {
20338
+ if (this.options.debug) {
20339
+ console.info(`> ${(0, nats_base_client_1.render)(yields[i])}`);
20221
20340
  }
20341
+ yield yields[i];
20222
20342
  }
20223
- this.pending.clear();
20224
- this.resolveStart();
20225
- this.closedDeferred.resolve(ack);
20226
- this.closed = true;
20227
- this.gapIter?.stop();
20228
- this.sub.unsubscribe();
20229
- return;
20230
- }
20231
- const typed = data;
20232
- if (typed.type === "gap") {
20233
- if (this.gapIter) {
20234
- const g = data;
20235
- this.gapIter.push({ lastSeq: g.last_seq, seq: g.seq });
20343
+ if (this.done) {
20344
+ break;
20345
+ } else if (this.yields.length === 0) {
20346
+ yields.length = 0;
20347
+ this.yields = yields;
20348
+ this.signal = (0, nats_base_client_1.deferred)();
20236
20349
  }
20237
- return;
20238
- }
20239
- const fa = data;
20240
- if (typeof fa.msgs === "number")
20241
- this.ackInterval = fa.msgs;
20242
- if (typeof fa.seq === "number" && fa.seq > this.acked) {
20243
- this.acked = fa.seq;
20244
- }
20245
- this.resolveStart();
20246
- const exact = this.pending.get(m.subject);
20247
- if (exact && (exact.op === FastIngestOp.Append || exact.op === FastIngestOp.Ping)) {
20248
- exact.deferred.resolve({ batchSeq: exact.seq, ackSeq: this.acked });
20249
- this.pending.delete(m.subject);
20250
20350
  }
20251
- for (const [rs, e] of this.pending) {
20252
- if (e.op === FastIngestOp.Append && e.seq - this.acked < this.ackInterval * this.maxOutstandingAcks) {
20253
- e.deferred.resolve({ batchSeq: e.seq, ackSeq: this.acked });
20254
- this.pending.delete(rs);
20351
+ }
20352
+ discard() {
20353
+ this.done = true;
20354
+ if (this.socket) {
20355
+ try {
20356
+ this.socket.removeAllListeners();
20357
+ this.socket.destroy();
20358
+ } catch {
20255
20359
  }
20256
20360
  }
20257
20361
  }
20258
- resolveStart() {
20259
- this.startDeferred.resolve();
20362
+ disconnect() {
20363
+ this._closed(void 0, true).then().catch();
20260
20364
  }
20261
- close(err2) {
20262
- this.closed = true;
20263
- this.closeErr = err2;
20264
- for (const [, e] of this.pending)
20265
- e.deferred.reject(err2);
20266
- this.pending.clear();
20267
- this.startDeferred.reject(err2);
20268
- this.closedDeferred.reject(err2);
20269
- this.gapIter?.stop();
20270
- this.sub.unsubscribe();
20365
+ isEncrypted() {
20366
+ return this.socket instanceof node_tls_1.TLSSocket;
20271
20367
  }
20272
- add(subj, payload, opts) {
20273
- if (this.closed)
20274
- return Promise.reject(new Error(BATCH_CLOSED));
20275
- const mySeq = ++this.seq;
20276
- const rs = this.replyFor(FastIngestOp.Append, mySeq);
20277
- const headers = opts ? buildPublishHeaders(opts) : void 0;
20278
- this.nc.publish(subj, payload, { reply: rs, headers });
20279
- if (mySeq - this.acked < this.ackInterval * this.maxOutstandingAcks) {
20280
- return Promise.resolve({ batchSeq: mySeq, ackSeq: this.acked });
20368
+ _send(frame) {
20369
+ if (this.isClosed || this.socket === void 0) {
20370
+ return Promise.resolve();
20281
20371
  }
20282
- const d = (0, internal_1.deferred)();
20283
- this.pending.set(rs, { seq: mySeq, op: FastIngestOp.Append, deferred: d });
20284
- return this.deadlineOrClose(d, opts?.timeout ?? this.defaultTimeout);
20285
- }
20286
- last(subj, payload, opts) {
20287
- if (this.closed)
20288
- return Promise.reject(new Error(BATCH_CLOSED));
20289
- const mySeq = ++this.seq;
20290
- const rs = this.replyFor(FastIngestOp.Final, mySeq);
20291
- const d = (0, internal_1.deferred)();
20292
- this.pending.set(rs, { seq: mySeq, op: FastIngestOp.Final, deferred: d });
20293
- const headers = opts ? buildPublishHeaders(opts) : void 0;
20294
- this.nc.publish(subj, payload, { reply: rs, headers });
20295
- return this.deadlineOrClose(d, opts?.timeout ?? this.defaultTimeout);
20296
- }
20297
- end(opts) {
20298
- if (this.closed)
20299
- return Promise.reject(new Error(BATCH_CLOSED));
20300
- const mySeq = ++this.seq;
20301
- const rs = this.replyFor(FastIngestOp.EOB, mySeq);
20302
- const d = (0, internal_1.deferred)();
20303
- this.pending.set(rs, { seq: mySeq, op: FastIngestOp.EOB, deferred: d });
20304
- const headers = opts ? buildPublishHeaders(opts) : void 0;
20305
- this.nc.publish(this.batchSubj, internal_1.Empty, { reply: rs, headers });
20306
- return this.deadlineOrClose(d, opts?.timeout ?? this.defaultTimeout);
20307
- }
20308
- ping(timeout = this.defaultTimeout) {
20309
- if (this.closed)
20310
- return Promise.reject(new Error(BATCH_CLOSED));
20311
- const rs = this.replyFor(FastIngestOp.Ping, this.seq);
20312
- const existing = this.pending.get(rs);
20313
- if (existing && existing.op === FastIngestOp.Ping) {
20314
- return (0, internal_1.deadline)(existing.deferred, timeout);
20372
+ if (this.options.debug) {
20373
+ console.info(`< ${(0, nats_base_client_1.render)(frame)}`);
20315
20374
  }
20316
- const d = (0, internal_1.deferred)();
20317
- this.pending.set(rs, { seq: this.seq, op: FastIngestOp.Ping, deferred: d });
20318
- this.nc.publish(this.batchSubj, internal_1.Empty, { reply: rs });
20319
- return this.deadlineOrClose(d, timeout);
20375
+ const d = (0, nats_base_client_1.deferred)();
20376
+ try {
20377
+ this.socket.write(frame, (err2) => {
20378
+ if (err2) {
20379
+ if (this.options.debug) {
20380
+ console.error(`!!! ${(0, nats_base_client_1.render)(frame)}: ${err2}`);
20381
+ }
20382
+ return d.reject(err2);
20383
+ }
20384
+ return d.resolve();
20385
+ });
20386
+ } catch (err2) {
20387
+ if (this.options.debug) {
20388
+ console.error(`!!! ${(0, nats_base_client_1.render)(frame)}: ${err2}`);
20389
+ }
20390
+ d.reject(err2);
20391
+ }
20392
+ return d;
20320
20393
  }
20321
- done() {
20322
- return this.closedDeferred;
20394
+ send(frame) {
20395
+ const p = this._send(frame);
20396
+ p.catch((_err) => {
20397
+ });
20323
20398
  }
20324
- gaps() {
20325
- if (!this.gapIter) {
20326
- this.gapIter = new internal_1.QueuedIteratorImpl();
20399
+ async _closed(err2, internal = true) {
20400
+ if (!this.connected)
20401
+ return;
20402
+ if (this.done) {
20403
+ this.socket?.destroy();
20404
+ return;
20327
20405
  }
20328
- return this.gapIter;
20406
+ this.closeError = err2;
20407
+ if (!err2 && this.socket && internal) {
20408
+ try {
20409
+ await this._send(new TextEncoder().encode(""));
20410
+ } catch (err3) {
20411
+ if (this.options.debug) {
20412
+ console.log("transport close terminated with an error", err3);
20413
+ }
20414
+ }
20415
+ }
20416
+ try {
20417
+ if (this.socket) {
20418
+ this.socket.removeAllListeners();
20419
+ this.socket?.destroy();
20420
+ this.socket = void 0;
20421
+ }
20422
+ } catch (err3) {
20423
+ console.log(err3);
20424
+ }
20425
+ this.done = true;
20426
+ this.closedNotification.resolve(this.closeError);
20427
+ }
20428
+ closed() {
20429
+ return this.closedNotification;
20329
20430
  }
20330
20431
  };
20432
+ exports2.NodeTransport = NodeTransport;
20433
+ function nodeResolveHost(s) {
20434
+ const ips = (0, nats_base_client_1.deferred)();
20435
+ node_dns_1.default.lookup(
20436
+ s,
20437
+ { all: true },
20438
+ //@ts-ignore: callback changes shape when all is true
20439
+ (err2, address) => {
20440
+ if (err2) {
20441
+ ips.reject(err2);
20442
+ return;
20443
+ }
20444
+ const buf = [];
20445
+ for (const r of address) {
20446
+ buf.push(r.address);
20447
+ }
20448
+ if (buf.length === 0) {
20449
+ buf.push(s);
20450
+ }
20451
+ ips.resolve(buf);
20452
+ }
20453
+ );
20454
+ return ips;
20455
+ }
20331
20456
  }
20332
20457
  });
20333
20458
 
20334
- // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/internal_mod.js
20335
- var require_internal_mod2 = __commonJS({
20336
- "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/internal_mod.js"(exports2) {
20459
+ // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/connect.js
20460
+ var require_connect = __commonJS({
20461
+ "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/connect.js"(exports2) {
20337
20462
  "use strict";
20338
20463
  Object.defineProperty(exports2, "__esModule", { value: true });
20339
- exports2.validateStreamName = exports2.jserrors = exports2.JetStreamStatusError = exports2.JetStreamStatus = exports2.JetStreamError = exports2.JetStreamApiError = exports2.JetStreamApiCodes = exports2.isMessageNotFound = exports2.ListerImpl = exports2.StoreCompression = exports2.StorageType = exports2.RetentionPolicy = exports2.ReplayPolicy = exports2.PubHeaders = exports2.PersistMode = exports2.DiscardPolicy = exports2.DeliverPolicy = exports2.AckPolicy = exports2.DirectMsgImpl = exports2.BaseApiClientImpl = exports2.toJetStreamClient = exports2.startFastIngest = exports2.jetstreamManager = exports2.JetStreamClientImpl = exports2.jetstream = exports2.RepublishHeaders = exports2.JsHeaders = exports2.isPushConsumer = exports2.isPullConsumer = exports2.isOrderedPushConsumerOptions = exports2.isBoundPushConsumerOptions = exports2.DirectMsgHeaders = exports2.AdvisoryKind = void 0;
20340
- var types_1 = require_types3();
20341
- Object.defineProperty(exports2, "AdvisoryKind", { enumerable: true, get: function() {
20342
- return types_1.AdvisoryKind;
20343
- } });
20344
- Object.defineProperty(exports2, "DirectMsgHeaders", { enumerable: true, get: function() {
20345
- return types_1.DirectMsgHeaders;
20346
- } });
20347
- Object.defineProperty(exports2, "isBoundPushConsumerOptions", { enumerable: true, get: function() {
20348
- return types_1.isBoundPushConsumerOptions;
20349
- } });
20350
- Object.defineProperty(exports2, "isOrderedPushConsumerOptions", { enumerable: true, get: function() {
20351
- return types_1.isOrderedPushConsumerOptions;
20352
- } });
20353
- Object.defineProperty(exports2, "isPullConsumer", { enumerable: true, get: function() {
20354
- return types_1.isPullConsumer;
20355
- } });
20356
- Object.defineProperty(exports2, "isPushConsumer", { enumerable: true, get: function() {
20357
- return types_1.isPushConsumer;
20358
- } });
20359
- Object.defineProperty(exports2, "JsHeaders", { enumerable: true, get: function() {
20360
- return types_1.JsHeaders;
20361
- } });
20362
- Object.defineProperty(exports2, "RepublishHeaders", { enumerable: true, get: function() {
20363
- return types_1.RepublishHeaders;
20364
- } });
20365
- var jsclient_1 = require_jsclient();
20366
- Object.defineProperty(exports2, "jetstream", { enumerable: true, get: function() {
20367
- return jsclient_1.jetstream;
20368
- } });
20369
- Object.defineProperty(exports2, "JetStreamClientImpl", { enumerable: true, get: function() {
20370
- return jsclient_1.JetStreamClientImpl;
20371
- } });
20372
- Object.defineProperty(exports2, "jetstreamManager", { enumerable: true, get: function() {
20373
- return jsclient_1.jetstreamManager;
20374
- } });
20375
- Object.defineProperty(exports2, "startFastIngest", { enumerable: true, get: function() {
20376
- return jsclient_1.startFastIngest;
20377
- } });
20378
- Object.defineProperty(exports2, "toJetStreamClient", { enumerable: true, get: function() {
20379
- return jsclient_1.toJetStreamClient;
20380
- } });
20381
- var jsbaseclient_api_1 = require_jsbaseclient_api();
20382
- Object.defineProperty(exports2, "BaseApiClientImpl", { enumerable: true, get: function() {
20383
- return jsbaseclient_api_1.BaseApiClientImpl;
20384
- } });
20385
- var jsm_direct_1 = require_jsm_direct();
20386
- Object.defineProperty(exports2, "DirectMsgImpl", { enumerable: true, get: function() {
20387
- return jsm_direct_1.DirectMsgImpl;
20388
- } });
20389
- var jsapi_types_1 = require_jsapi_types();
20390
- Object.defineProperty(exports2, "AckPolicy", { enumerable: true, get: function() {
20391
- return jsapi_types_1.AckPolicy;
20392
- } });
20393
- Object.defineProperty(exports2, "DeliverPolicy", { enumerable: true, get: function() {
20394
- return jsapi_types_1.DeliverPolicy;
20395
- } });
20396
- Object.defineProperty(exports2, "DiscardPolicy", { enumerable: true, get: function() {
20397
- return jsapi_types_1.DiscardPolicy;
20398
- } });
20399
- Object.defineProperty(exports2, "PersistMode", { enumerable: true, get: function() {
20400
- return jsapi_types_1.PersistMode;
20401
- } });
20402
- Object.defineProperty(exports2, "PubHeaders", { enumerable: true, get: function() {
20403
- return jsapi_types_1.PubHeaders;
20404
- } });
20405
- Object.defineProperty(exports2, "ReplayPolicy", { enumerable: true, get: function() {
20406
- return jsapi_types_1.ReplayPolicy;
20407
- } });
20408
- Object.defineProperty(exports2, "RetentionPolicy", { enumerable: true, get: function() {
20409
- return jsapi_types_1.RetentionPolicy;
20410
- } });
20411
- Object.defineProperty(exports2, "StorageType", { enumerable: true, get: function() {
20412
- return jsapi_types_1.StorageType;
20413
- } });
20414
- Object.defineProperty(exports2, "StoreCompression", { enumerable: true, get: function() {
20415
- return jsapi_types_1.StoreCompression;
20416
- } });
20417
- var jslister_1 = require_jslister();
20418
- Object.defineProperty(exports2, "ListerImpl", { enumerable: true, get: function() {
20419
- return jslister_1.ListerImpl;
20420
- } });
20421
- var jserrors_1 = require_jserrors();
20422
- Object.defineProperty(exports2, "isMessageNotFound", { enumerable: true, get: function() {
20423
- return jserrors_1.isMessageNotFound;
20424
- } });
20425
- Object.defineProperty(exports2, "JetStreamApiCodes", { enumerable: true, get: function() {
20426
- return jserrors_1.JetStreamApiCodes;
20427
- } });
20428
- Object.defineProperty(exports2, "JetStreamApiError", { enumerable: true, get: function() {
20429
- return jserrors_1.JetStreamApiError;
20430
- } });
20431
- Object.defineProperty(exports2, "JetStreamError", { enumerable: true, get: function() {
20432
- return jserrors_1.JetStreamError;
20433
- } });
20434
- Object.defineProperty(exports2, "JetStreamStatus", { enumerable: true, get: function() {
20435
- return jserrors_1.JetStreamStatus;
20436
- } });
20437
- Object.defineProperty(exports2, "JetStreamStatusError", { enumerable: true, get: function() {
20438
- return jserrors_1.JetStreamStatusError;
20439
- } });
20440
- Object.defineProperty(exports2, "jserrors", { enumerable: true, get: function() {
20441
- return jserrors_1.jserrors;
20442
- } });
20443
- var jsutil_1 = require_jsutil();
20444
- Object.defineProperty(exports2, "validateStreamName", { enumerable: true, get: function() {
20445
- return jsutil_1.validateStreamName;
20446
- } });
20464
+ exports2.connect = connect7;
20465
+ var node_transport_1 = require_node_transport();
20466
+ var nats_base_client_1 = require_nats_base_client();
20467
+ var nats_base_client_2 = require_nats_base_client();
20468
+ function connect7(opts = {}) {
20469
+ if ((0, nats_base_client_2.hasWsProtocol)(opts)) {
20470
+ return Promise.reject(nats_base_client_2.errors.InvalidArgumentError.format(`servers`, `node client doesn't support websockets, use the 'wsconnect' function instead`));
20471
+ }
20472
+ (0, nats_base_client_1.setTransportFactory)({
20473
+ factory: () => {
20474
+ return new node_transport_1.NodeTransport();
20475
+ },
20476
+ dnsResolveFn: node_transport_1.nodeResolveHost
20477
+ });
20478
+ return nats_base_client_1.NatsConnectionImpl.connect(opts);
20479
+ }
20447
20480
  }
20448
20481
  });
20449
20482
 
20450
- // ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/mod.js
20483
+ // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/mod.js
20451
20484
  var require_mod5 = __commonJS({
20452
- "../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/mod.js"(exports2) {
20485
+ "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/lib/mod.js"(exports2) {
20453
20486
  "use strict";
20487
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) {
20488
+ if (k2 === void 0) k2 = k;
20489
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20490
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20491
+ desc = { enumerable: true, get: function() {
20492
+ return m[k];
20493
+ } };
20494
+ }
20495
+ Object.defineProperty(o, k2, desc);
20496
+ }) : (function(o, m, k, k2) {
20497
+ if (k2 === void 0) k2 = k;
20498
+ o[k2] = m[k];
20499
+ }));
20500
+ var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
20501
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
20502
+ };
20454
20503
  Object.defineProperty(exports2, "__esModule", { value: true });
20455
- exports2.StoreCompression = exports2.StorageType = exports2.RetentionPolicy = exports2.RepublishHeaders = exports2.ReplayPolicy = exports2.PubHeaders = exports2.PersistMode = exports2.JsHeaders = exports2.JetStreamError = exports2.JetStreamApiError = exports2.JetStreamApiCodes = exports2.isPushConsumer = exports2.isPullConsumer = exports2.DiscardPolicy = exports2.DirectMsgHeaders = exports2.DeliverPolicy = exports2.AdvisoryKind = exports2.AckPolicy = exports2.jetstreamManager = exports2.jetstream = void 0;
20456
- var internal_mod_1 = require_internal_mod2();
20457
- Object.defineProperty(exports2, "jetstream", { enumerable: true, get: function() {
20458
- return internal_mod_1.jetstream;
20459
- } });
20460
- Object.defineProperty(exports2, "jetstreamManager", { enumerable: true, get: function() {
20461
- return internal_mod_1.jetstreamManager;
20462
- } });
20463
- var internal_mod_2 = require_internal_mod2();
20464
- Object.defineProperty(exports2, "AckPolicy", { enumerable: true, get: function() {
20465
- return internal_mod_2.AckPolicy;
20466
- } });
20467
- Object.defineProperty(exports2, "AdvisoryKind", { enumerable: true, get: function() {
20468
- return internal_mod_2.AdvisoryKind;
20469
- } });
20470
- Object.defineProperty(exports2, "DeliverPolicy", { enumerable: true, get: function() {
20471
- return internal_mod_2.DeliverPolicy;
20472
- } });
20473
- Object.defineProperty(exports2, "DirectMsgHeaders", { enumerable: true, get: function() {
20474
- return internal_mod_2.DirectMsgHeaders;
20475
- } });
20476
- Object.defineProperty(exports2, "DiscardPolicy", { enumerable: true, get: function() {
20477
- return internal_mod_2.DiscardPolicy;
20478
- } });
20479
- Object.defineProperty(exports2, "isPullConsumer", { enumerable: true, get: function() {
20480
- return internal_mod_2.isPullConsumer;
20481
- } });
20482
- Object.defineProperty(exports2, "isPushConsumer", { enumerable: true, get: function() {
20483
- return internal_mod_2.isPushConsumer;
20484
- } });
20485
- Object.defineProperty(exports2, "JetStreamApiCodes", { enumerable: true, get: function() {
20486
- return internal_mod_2.JetStreamApiCodes;
20487
- } });
20488
- Object.defineProperty(exports2, "JetStreamApiError", { enumerable: true, get: function() {
20489
- return internal_mod_2.JetStreamApiError;
20490
- } });
20491
- Object.defineProperty(exports2, "JetStreamError", { enumerable: true, get: function() {
20492
- return internal_mod_2.JetStreamError;
20493
- } });
20494
- Object.defineProperty(exports2, "JsHeaders", { enumerable: true, get: function() {
20495
- return internal_mod_2.JsHeaders;
20496
- } });
20497
- Object.defineProperty(exports2, "PersistMode", { enumerable: true, get: function() {
20498
- return internal_mod_2.PersistMode;
20499
- } });
20500
- Object.defineProperty(exports2, "PubHeaders", { enumerable: true, get: function() {
20501
- return internal_mod_2.PubHeaders;
20502
- } });
20503
- Object.defineProperty(exports2, "ReplayPolicy", { enumerable: true, get: function() {
20504
- return internal_mod_2.ReplayPolicy;
20505
- } });
20506
- Object.defineProperty(exports2, "RepublishHeaders", { enumerable: true, get: function() {
20507
- return internal_mod_2.RepublishHeaders;
20508
- } });
20509
- Object.defineProperty(exports2, "RetentionPolicy", { enumerable: true, get: function() {
20510
- return internal_mod_2.RetentionPolicy;
20511
- } });
20512
- Object.defineProperty(exports2, "StorageType", { enumerable: true, get: function() {
20513
- return internal_mod_2.StorageType;
20514
- } });
20515
- Object.defineProperty(exports2, "StoreCompression", { enumerable: true, get: function() {
20516
- return internal_mod_2.StoreCompression;
20504
+ exports2.connect = void 0;
20505
+ var connect_1 = require_connect();
20506
+ Object.defineProperty(exports2, "connect", { enumerable: true, get: function() {
20507
+ return connect_1.connect;
20517
20508
  } });
20509
+ __exportStar(require_nats_base_client(), exports2);
20510
+ }
20511
+ });
20512
+
20513
+ // ../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/index.js
20514
+ var require_transport_node = __commonJS({
20515
+ "../../node_modules/.pnpm/@nats-io+transport-node@3.4.0/node_modules/@nats-io/transport-node/index.js"(exports2, module2) {
20516
+ "use strict";
20517
+ module2.exports = require_mod5();
20518
20518
  }
20519
20519
  });
20520
20520
 
@@ -47524,13 +47524,8 @@ var BASE_LIMITS = {
47524
47524
  var DATA_LIMITS = { ...BASE_LIMITS, mem_storage: -1, disk_storage: -1 };
47525
47525
  var SYS_LIMITS = { ...BASE_LIMITS, mem_storage: 0, disk_storage: 0 };
47526
47526
 
47527
- // ../../packages/core/dist/endpoint.js
47528
- var import_node_events = require("node:events");
47529
- var import_node_crypto = require("node:crypto");
47530
- var import_transport_node4 = __toESM(require_transport_node(), 1);
47531
-
47532
47527
  // ../../packages/core/dist/streams.js
47533
- var import_jetstream = __toESM(require_mod5(), 1);
47528
+ var import_jetstream = __toESM(require_mod4(), 1);
47534
47529
  var import_transport_node = __toESM(require_transport_node(), 1);
47535
47530
  var import_kv = __toESM(require_mod6(), 1);
47536
47531
  var MAX_MSGS_PER_SUBJECT = 1e3;
@@ -47636,12 +47631,50 @@ function fanoutDurableConfig(space, opts = {}) {
47636
47631
  };
47637
47632
  }
47638
47633
 
47639
- // ../../packages/core/dist/endpoint.js
47640
- var import_jetstream2 = __toESM(require_mod5(), 1);
47641
- var import_kv6 = __toESM(require_mod6(), 1);
47634
+ // ../../packages/core/dist/channels.js
47635
+ var import_kv2 = __toESM(require_mod6(), 1);
47636
+ var import_transport_node2 = __toESM(require_transport_node(), 1);
47637
+ function parseDuration(s) {
47638
+ const m = /^(\d+)(s|m|h|d)$/.exec(s.trim());
47639
+ if (!m)
47640
+ throw new Error(`invalid duration "${s}" \u2014 expected <number><s|m|h|d>, e.g. "24h"`);
47641
+ const n = Number(m[1]);
47642
+ const unit = { s: 1e3, m: 6e4, h: 36e5, d: 864e5 }[m[2]];
47643
+ return n * unit;
47644
+ }
47645
+ function effectiveReplay(cfg, defaults) {
47646
+ return cfg?.replay ?? defaults?.replay ?? true;
47647
+ }
47648
+ function effectiveReplayWindowMs(cfg, defaults) {
47649
+ const w = cfg?.replayWindow ?? defaults?.replayWindow;
47650
+ return w === void 0 ? void 0 : parseDuration(w);
47651
+ }
47652
+ function effectiveDeliveryClass(cfg, defaults) {
47653
+ return cfg?.deliveryClass ?? defaults?.deliveryClass ?? "durable";
47654
+ }
47655
+ async function openChannelRegistry(nc, space, opts = {}) {
47656
+ const kvm = new import_kv2.Kvm(nc);
47657
+ return opts.create ? kvm.create(channelBucket(space)) : kvm.open(channelBucket(space));
47658
+ }
47659
+ async function readChannelConfig(kv, channel) {
47660
+ return decode3(kv, channel);
47661
+ }
47662
+ async function readChannelDefaults(kv) {
47663
+ return decode3(kv, CHANNEL_DEFAULTS_KEY);
47664
+ }
47665
+ async function decode3(kv, key) {
47666
+ const e = await kv.get(key);
47667
+ if (!e || e.operation === "DEL" || e.operation === "PURGE")
47668
+ return void 0;
47669
+ try {
47670
+ return e.json();
47671
+ } catch {
47672
+ return void 0;
47673
+ }
47674
+ }
47642
47675
 
47643
47676
  // ../../packages/core/dist/members.js
47644
- var import_kv2 = __toESM(require_mod6(), 1);
47677
+ var import_kv3 = __toESM(require_mod6(), 1);
47645
47678
  var StaleMembershipWrite = class extends Error {
47646
47679
  constructor(channel, owner, attempted, current) {
47647
47680
  super(`stale membership write for ${channel}/${owner}: generation ${attempted} < current ${current}`);
@@ -47649,7 +47682,7 @@ var StaleMembershipWrite = class extends Error {
47649
47682
  }
47650
47683
  };
47651
47684
  async function openMembersRegistry(nc, space, opts = {}) {
47652
- const kvm = new import_kv2.Kvm(nc);
47685
+ const kvm = new import_kv3.Kvm(nc);
47653
47686
  return opts.create ? kvm.create(membersBucket(space)) : kvm.open(membersBucket(space));
47654
47687
  }
47655
47688
  async function readMember(kv, channel, owner) {
@@ -47749,9 +47782,9 @@ function durableEligible(rec, seq) {
47749
47782
  }
47750
47783
 
47751
47784
  // ../../packages/core/dist/acls.js
47752
- var import_kv3 = __toESM(require_mod6(), 1);
47785
+ var import_kv4 = __toESM(require_mod6(), 1);
47753
47786
  async function openAclRegistry(nc, space, opts = {}) {
47754
- const kvm = new import_kv3.Kvm(nc);
47787
+ const kvm = new import_kv4.Kvm(nc);
47755
47788
  return opts.create ? kvm.create(aclBucket(space)) : kvm.open(aclBucket(space));
47756
47789
  }
47757
47790
  async function readAcl(kv, owner) {
@@ -47795,56 +47828,135 @@ async function commitAcl(kv, owner, allowSubscribe) {
47795
47828
  throw new Error(`acl CAS exhausted retries for ${owner}`);
47796
47829
  }
47797
47830
 
47831
+ // ../../packages/core/dist/membership-feed.js
47832
+ var import_transport_node3 = __toESM(require_transport_node(), 1);
47833
+ var import_kv5 = __toESM(require_mod6(), 1);
47834
+
47798
47835
  // ../../packages/core/dist/lease.js
47799
- var import_kv4 = __toESM(require_mod6(), 1);
47800
- var import_transport_node2 = __toESM(require_transport_node(), 1);
47836
+ var import_kv6 = __toESM(require_mod6(), 1);
47837
+ var import_transport_node4 = __toESM(require_transport_node(), 1);
47801
47838
  async function openDeliveryRegistry(nc, space) {
47802
- return new import_kv4.Kvm(nc).open(deliveryBucket(space));
47839
+ return new import_kv6.Kvm(nc).open(deliveryBucket(space));
47803
47840
  }
47804
47841
 
47805
- // ../../packages/core/dist/channels.js
47806
- var import_kv5 = __toESM(require_mod6(), 1);
47807
- var import_transport_node3 = __toESM(require_transport_node(), 1);
47808
- function parseDuration(s) {
47809
- const m = /^(\d+)(s|m|h|d)$/.exec(s.trim());
47810
- if (!m)
47811
- throw new Error(`invalid duration "${s}" \u2014 expected <number><s|m|h|d>, e.g. "24h"`);
47812
- const n = Number(m[1]);
47813
- const unit = { s: 1e3, m: 6e4, h: 36e5, d: 864e5 }[m[2]];
47814
- return n * unit;
47815
- }
47816
- function effectiveReplay(cfg, defaults) {
47817
- return cfg?.replay ?? defaults?.replay ?? true;
47818
- }
47819
- function effectiveReplayWindowMs(cfg, defaults) {
47820
- const w = cfg?.replayWindow ?? defaults?.replayWindow;
47821
- return w === void 0 ? void 0 : parseDuration(w);
47822
- }
47823
- function effectiveDeliveryClass(cfg, defaults) {
47824
- return cfg?.deliveryClass ?? defaults?.deliveryClass ?? "durable";
47825
- }
47826
- async function openChannelRegistry(nc, space, opts = {}) {
47827
- const kvm = new import_kv5.Kvm(nc);
47828
- return opts.create ? kvm.create(channelBucket(space)) : kvm.open(channelBucket(space));
47829
- }
47830
- async function readChannelConfig(kv, channel) {
47831
- return decode3(kv, channel);
47832
- }
47833
- async function readChannelDefaults(kv) {
47834
- return decode3(kv, CHANNEL_DEFAULTS_KEY);
47842
+ // ../../packages/core/dist/agent-file.js
47843
+ var import_node_fs = require("node:fs");
47844
+ function unquote(v) {
47845
+ if (v.startsWith('"') && v.endsWith('"') || v.startsWith("'") && v.endsWith("'"))
47846
+ return v.slice(1, -1);
47847
+ return v;
47835
47848
  }
47836
- async function decode3(kv, key) {
47837
- const e = await kv.get(key);
47838
- if (!e || e.operation === "DEL" || e.operation === "PURGE")
47839
- return void 0;
47840
- try {
47841
- return e.json();
47842
- } catch {
47843
- return void 0;
47849
+ function parseFrontmatter(src) {
47850
+ const out = {};
47851
+ for (const raw of src.split("\n")) {
47852
+ const line = raw.trim();
47853
+ if (!line || line.startsWith("#"))
47854
+ continue;
47855
+ const colon = line.indexOf(":");
47856
+ if (colon < 1)
47857
+ throw new Error(`agent file: unparseable frontmatter line "${raw}"`);
47858
+ const key = line.slice(0, colon).trim();
47859
+ const val = line.slice(colon + 1).trim();
47860
+ if (val.startsWith("[")) {
47861
+ if (!val.endsWith("]"))
47862
+ throw new Error(`agent file: unterminated list for "${key}"`);
47863
+ out[key] = val.slice(1, -1).split(",").map((s) => unquote(s.trim())).filter(Boolean);
47864
+ } else {
47865
+ out[key] = unquote(val);
47866
+ }
47844
47867
  }
47868
+ return out;
47869
+ }
47870
+ function loadAgentFile(path) {
47871
+ const src = (0, import_node_fs.readFileSync)(path, "utf8");
47872
+ const m = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(src);
47873
+ if (!m)
47874
+ throw new Error(`agent file ${path}: missing "---" frontmatter block`);
47875
+ const fm = parseFrontmatter(m[1]);
47876
+ const persona = m[2].trim();
47877
+ const str = (k) => {
47878
+ const v = fm[k];
47879
+ if (Array.isArray(v))
47880
+ throw new Error(`agent file ${path}: "${k}" must be a scalar`);
47881
+ return v;
47882
+ };
47883
+ const list = (k) => {
47884
+ const v = fm[k];
47885
+ if (v === void 0)
47886
+ return void 0;
47887
+ return Array.isArray(v) ? v : [v];
47888
+ };
47889
+ const name = str("name");
47890
+ if (!name)
47891
+ throw new Error(`agent file ${path}: "name" is required`);
47892
+ assertValidName(name);
47893
+ const kind = str("kind");
47894
+ if (kind && kind !== "agent" && kind !== "endpoint")
47895
+ throw new Error(`agent file ${path}: "kind" must be "agent" or "endpoint"`);
47896
+ for (const old of ["channels", "publish"])
47897
+ if (old in fm)
47898
+ throw new Error(`agent file ${path}: "${old}" was renamed \u2014 use "subscribe"/"allowSubscribe" (read) and "allowPublish" (post)`);
47899
+ const subscribe = list("subscribe");
47900
+ const allowSubscribe = list("allowSubscribe");
47901
+ const allowPublish = list("allowPublish");
47902
+ const quiet = list("quiet");
47903
+ const muted = list("muted");
47904
+ for (const ch of [...subscribe ?? [], ...allowSubscribe ?? [], ...allowPublish ?? []])
47905
+ try {
47906
+ assertValidChannel(ch);
47907
+ } catch (e) {
47908
+ throw new Error(`agent file ${path}: ${e.message}`);
47909
+ }
47910
+ const effSubscribe = subscribe?.length ? subscribe : ["general"];
47911
+ const effAllow = allowSubscribe?.length ? allowSubscribe : effSubscribe;
47912
+ for (const ch of effSubscribe)
47913
+ if (!channelInAllow(effAllow, ch))
47914
+ throw new Error(`agent file ${path}: subscribe channel "${ch}" is not within allowSubscribe [${effAllow.join(", ")}]`);
47915
+ const both = (quiet ?? []).filter((c) => (muted ?? []).includes(c));
47916
+ if (both.length)
47917
+ throw new Error(`agent file ${path}: channel(s) [${both.join(", ")}] are in both quiet and muted \u2014 pick one`);
47918
+ for (const [field, chans] of [["quiet", quiet], ["muted", muted]])
47919
+ for (const ch of chans ?? []) {
47920
+ try {
47921
+ assertValidChannel(ch);
47922
+ } catch (e) {
47923
+ throw new Error(`agent file ${path}: ${e.message}`);
47924
+ }
47925
+ if (!isConcreteChannel(ch))
47926
+ throw new Error(`agent file ${path}: ${field} channel "${ch}" must be a concrete channel (no wildcard)`);
47927
+ if (!channelInAllow(effAllow, ch))
47928
+ throw new Error(`agent file ${path}: ${field} channel "${ch}" is not within your read ACL / allowSubscribe [${effAllow.join(", ")}]`);
47929
+ }
47930
+ const known = /* @__PURE__ */ new Set(["name", "role", "kind", "description", "tags", "subscribe", "allowSubscribe", "allowPublish", "quiet", "muted", "model", "capabilities", "owner"]);
47931
+ const meta3 = {};
47932
+ for (const [k, v] of Object.entries(fm))
47933
+ if (!known.has(k) && typeof v === "string")
47934
+ meta3[k] = v;
47935
+ return {
47936
+ name,
47937
+ role: str("role"),
47938
+ kind,
47939
+ description: str("description"),
47940
+ tags: list("tags"),
47941
+ subscribe,
47942
+ allowSubscribe,
47943
+ allowPublish,
47944
+ quiet,
47945
+ muted,
47946
+ model: str("model"),
47947
+ capabilities: list("capabilities"),
47948
+ owner: str("owner"),
47949
+ meta: Object.keys(meta3).length ? meta3 : void 0,
47950
+ persona: persona || void 0
47951
+ };
47845
47952
  }
47846
47953
 
47847
47954
  // ../../packages/core/dist/endpoint.js
47955
+ var import_node_events = require("node:events");
47956
+ var import_node_crypto = require("node:crypto");
47957
+ var import_transport_node5 = __toESM(require_transport_node(), 1);
47958
+ var import_jetstream2 = __toESM(require_mod4(), 1);
47959
+ var import_kv7 = __toESM(require_mod6(), 1);
47848
47960
  var DEFAULT_SERVER = "nats://127.0.0.1:4222";
47849
47961
  var READER_MAX_REDELIVERIES = 10;
47850
47962
  var CotalEndpoint = class extends import_node_events.EventEmitter {
@@ -47993,7 +48105,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
47993
48105
  * idempotent (durables bind by name, JetStream dedups by msgID, KV opens are idempotent). */
47994
48106
  async connectAndBind() {
47995
48107
  this.clearConnectionScoped();
47996
- this.nc = await (0, import_transport_node4.connect)({
48108
+ this.nc = await (0, import_transport_node5.connect)({
47997
48109
  servers: this.servers,
47998
48110
  name: `cotal:${this.card.name}`,
47999
48111
  // Per-identity inbox namespace (the "Private Inbox" pattern). nats.js routes ALL
@@ -48007,7 +48119,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
48007
48119
  this.watchStatus();
48008
48120
  this.js = (0, import_jetstream2.jetstream)(this.nc);
48009
48121
  if (this.doWatch || this.doRegister) {
48010
- const kvm = new import_kv6.Kvm(this.nc);
48122
+ const kvm = new import_kv7.Kvm(this.nc);
48011
48123
  this.kv = this.creds ? await kvm.open(presenceBucket(this.space)) : await kvm.create(presenceBucket(this.space), { ttl: this.ttlMs });
48012
48124
  }
48013
48125
  if (this.doWatch) {
@@ -48554,7 +48666,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
48554
48666
  async membershipRegistry() {
48555
48667
  if (!this.nc)
48556
48668
  throw new Error("endpoint not started");
48557
- this.membershipKv ??= await new import_kv6.Kvm(this.nc).open(membershipBucket(this.space));
48669
+ this.membershipKv ??= await new import_kv7.Kvm(this.nc).open(membershipBucket(this.space));
48558
48670
  return this.membershipKv;
48559
48671
  }
48560
48672
  /**
@@ -48650,7 +48762,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
48650
48762
  for await (const s of this.nc.status()) {
48651
48763
  if (s.type !== "error")
48652
48764
  continue;
48653
- if (s.error instanceof import_transport_node4.PermissionViolationError && this.confirmingChatSubs.has(s.error.subject))
48765
+ if (s.error instanceof import_transport_node5.PermissionViolationError && this.confirmingChatSubs.has(s.error.subject))
48654
48766
  continue;
48655
48767
  this.emit("error", describeStatusError(s.error));
48656
48768
  }
@@ -48923,7 +49035,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
48923
49035
  filter_subject: subject,
48924
49036
  ack_policy: import_jetstream2.AckPolicy.None,
48925
49037
  mem_storage: true,
48926
- inactive_threshold: (0, import_transport_node4.nanos)(3e4),
49038
+ inactive_threshold: (0, import_transport_node5.nanos)(3e4),
48927
49039
  deliver_policy: import_jetstream2.DeliverPolicy.StartSequence,
48928
49040
  opt_start_seq: fromSeqExcl + 1
48929
49041
  });
@@ -49323,7 +49435,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
49323
49435
  * distinct from a responder that errored. nats.js surfaces it as NoRespondersError, or a RequestError
49324
49436
  * whose `isNoResponders()` is true. */
49325
49437
  isNoResponders(e) {
49326
- return e instanceof import_transport_node4.NoRespondersError || e instanceof import_transport_node4.RequestError && e.isNoResponders();
49438
+ return e instanceof import_transport_node5.NoRespondersError || e instanceof import_transport_node5.RequestError && e.isNoResponders();
49327
49439
  }
49328
49440
  /** Agent-side: this session's CURRENT durable memberships (channel + join generation) from the
49329
49441
  * manager — the agent holds no read on the privileged members KV. `undefined` ⇒ NO control responder
@@ -49666,7 +49778,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
49666
49778
  filter_subject: subject,
49667
49779
  ack_policy: import_jetstream2.AckPolicy.None,
49668
49780
  mem_storage: true,
49669
- inactive_threshold: (0, import_transport_node4.nanos)(3e4),
49781
+ inactive_threshold: (0, import_transport_node5.nanos)(3e4),
49670
49782
  ..."time" in start ? { deliver_policy: import_jetstream2.DeliverPolicy.StartTime, opt_start_time: start.time.toISOString() } : { deliver_policy: import_jetstream2.DeliverPolicy.StartSequence, opt_start_seq: start.seq }
49671
49783
  });
49672
49784
  try {
@@ -49956,143 +50068,27 @@ function authOpts(a) {
49956
50068
  if (a.creds) {
49957
50069
  if (a.token || a.user || a.pass)
49958
50070
  throw new Error("creds are mutually exclusive with token/user/pass auth");
49959
- return { authenticator: (0, import_transport_node4.credsAuthenticator)(new TextEncoder().encode(a.creds)), tls };
50071
+ return { authenticator: (0, import_transport_node5.credsAuthenticator)(new TextEncoder().encode(a.creds)), tls };
49960
50072
  }
49961
50073
  return { token: a.token, user: a.user, pass: a.pass, tls };
49962
50074
  }
49963
50075
  function describeStatusError(err2) {
49964
- if (err2 instanceof import_transport_node4.PermissionViolationError) {
50076
+ if (err2 instanceof import_transport_node5.PermissionViolationError) {
49965
50077
  return new Error(`NATS permission denied: cannot ${err2.operation} "${err2.subject}" \u2014 check this endpoint's ACLs (a denied peer looks "absent" rather than blocked)`, { cause: err2 });
49966
50078
  }
49967
50079
  return err2;
49968
50080
  }
49969
50081
  function isPermissionDenied(e) {
49970
- if (e instanceof import_transport_node4.PermissionViolationError)
50082
+ if (e instanceof import_transport_node5.PermissionViolationError)
49971
50083
  return true;
49972
- if (e?.cause instanceof import_transport_node4.PermissionViolationError)
50084
+ if (e?.cause instanceof import_transport_node5.PermissionViolationError)
49973
50085
  return true;
49974
50086
  return /permissions?\s+violation/i.test(String(e?.message ?? ""));
49975
50087
  }
49976
50088
 
49977
- // ../../packages/core/dist/membership-feed.js
49978
- var import_transport_node5 = __toESM(require_transport_node(), 1);
49979
- var import_kv7 = __toESM(require_mod6(), 1);
49980
-
49981
- // ../../packages/core/dist/agent-file.js
49982
- var import_node_fs = require("node:fs");
49983
- function unquote(v) {
49984
- if (v.startsWith('"') && v.endsWith('"') || v.startsWith("'") && v.endsWith("'"))
49985
- return v.slice(1, -1);
49986
- return v;
49987
- }
49988
- function parseFrontmatter(src) {
49989
- const out = {};
49990
- for (const raw of src.split("\n")) {
49991
- const line = raw.trim();
49992
- if (!line || line.startsWith("#"))
49993
- continue;
49994
- const colon = line.indexOf(":");
49995
- if (colon < 1)
49996
- throw new Error(`agent file: unparseable frontmatter line "${raw}"`);
49997
- const key = line.slice(0, colon).trim();
49998
- const val = line.slice(colon + 1).trim();
49999
- if (val.startsWith("[")) {
50000
- if (!val.endsWith("]"))
50001
- throw new Error(`agent file: unterminated list for "${key}"`);
50002
- out[key] = val.slice(1, -1).split(",").map((s) => unquote(s.trim())).filter(Boolean);
50003
- } else {
50004
- out[key] = unquote(val);
50005
- }
50006
- }
50007
- return out;
50008
- }
50009
- function loadAgentFile(path) {
50010
- const src = (0, import_node_fs.readFileSync)(path, "utf8");
50011
- const m = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(src);
50012
- if (!m)
50013
- throw new Error(`agent file ${path}: missing "---" frontmatter block`);
50014
- const fm = parseFrontmatter(m[1]);
50015
- const persona = m[2].trim();
50016
- const str = (k) => {
50017
- const v = fm[k];
50018
- if (Array.isArray(v))
50019
- throw new Error(`agent file ${path}: "${k}" must be a scalar`);
50020
- return v;
50021
- };
50022
- const list = (k) => {
50023
- const v = fm[k];
50024
- if (v === void 0)
50025
- return void 0;
50026
- return Array.isArray(v) ? v : [v];
50027
- };
50028
- const name = str("name");
50029
- if (!name)
50030
- throw new Error(`agent file ${path}: "name" is required`);
50031
- assertValidName(name);
50032
- const kind = str("kind");
50033
- if (kind && kind !== "agent" && kind !== "endpoint")
50034
- throw new Error(`agent file ${path}: "kind" must be "agent" or "endpoint"`);
50035
- for (const old of ["channels", "publish"])
50036
- if (old in fm)
50037
- throw new Error(`agent file ${path}: "${old}" was renamed \u2014 use "subscribe"/"allowSubscribe" (read) and "allowPublish" (post)`);
50038
- const subscribe = list("subscribe");
50039
- const allowSubscribe = list("allowSubscribe");
50040
- const allowPublish = list("allowPublish");
50041
- const quiet = list("quiet");
50042
- const muted = list("muted");
50043
- for (const ch of [...subscribe ?? [], ...allowSubscribe ?? [], ...allowPublish ?? []])
50044
- try {
50045
- assertValidChannel(ch);
50046
- } catch (e) {
50047
- throw new Error(`agent file ${path}: ${e.message}`);
50048
- }
50049
- const effSubscribe = subscribe?.length ? subscribe : ["general"];
50050
- const effAllow = allowSubscribe?.length ? allowSubscribe : effSubscribe;
50051
- for (const ch of effSubscribe)
50052
- if (!channelInAllow(effAllow, ch))
50053
- throw new Error(`agent file ${path}: subscribe channel "${ch}" is not within allowSubscribe [${effAllow.join(", ")}]`);
50054
- const both = (quiet ?? []).filter((c) => (muted ?? []).includes(c));
50055
- if (both.length)
50056
- throw new Error(`agent file ${path}: channel(s) [${both.join(", ")}] are in both quiet and muted \u2014 pick one`);
50057
- for (const [field, chans] of [["quiet", quiet], ["muted", muted]])
50058
- for (const ch of chans ?? []) {
50059
- try {
50060
- assertValidChannel(ch);
50061
- } catch (e) {
50062
- throw new Error(`agent file ${path}: ${e.message}`);
50063
- }
50064
- if (!isConcreteChannel(ch))
50065
- throw new Error(`agent file ${path}: ${field} channel "${ch}" must be a concrete channel (no wildcard)`);
50066
- if (!channelInAllow(effAllow, ch))
50067
- throw new Error(`agent file ${path}: ${field} channel "${ch}" is not within your read ACL / allowSubscribe [${effAllow.join(", ")}]`);
50068
- }
50069
- const known = /* @__PURE__ */ new Set(["name", "role", "kind", "description", "tags", "subscribe", "allowSubscribe", "allowPublish", "quiet", "muted", "model", "capabilities", "owner"]);
50070
- const meta3 = {};
50071
- for (const [k, v] of Object.entries(fm))
50072
- if (!known.has(k) && typeof v === "string")
50073
- meta3[k] = v;
50074
- return {
50075
- name,
50076
- role: str("role"),
50077
- kind,
50078
- description: str("description"),
50079
- tags: list("tags"),
50080
- subscribe,
50081
- allowSubscribe,
50082
- allowPublish,
50083
- quiet,
50084
- muted,
50085
- model: str("model"),
50086
- capabilities: list("capabilities"),
50087
- owner: str("owner"),
50088
- meta: Object.keys(meta3).length ? meta3 : void 0,
50089
- persona: persona || void 0
50090
- };
50091
- }
50092
-
50093
50089
  // ../../packages/core/dist/spaces.js
50094
50090
  var import_transport_node6 = __toESM(require_transport_node(), 1);
50095
- var import_jetstream3 = __toESM(require_mod5(), 1);
50091
+ var import_jetstream3 = __toESM(require_mod4(), 1);
50096
50092
  var import_kv8 = __toESM(require_mod6(), 1);
50097
50093
 
50098
50094
  // ../../packages/core/dist/registry.js