@cotal-ai/connector-claude-code 0.6.0 → 0.7.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/extension.d.ts.map +1 -1
- package/dist/extension.js +6 -2
- package/dist/extension.js.map +1 -1
- package/dist/hook.cjs +4067 -4058
- package/dist/mcp.cjs +1377 -1237
- package/dist/mcp.js +2 -2
- package/dist/mcp.js.map +1 -1
- package/package.json +3 -3
package/dist/mcp.cjs
CHANGED
|
@@ -10096,126 +10096,6 @@ 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
|
-
|
|
10219
10099
|
// ../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/encoders.js
|
|
10220
10100
|
var require_encoders = __commonJS({
|
|
10221
10101
|
"../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/encoders.js"(exports2) {
|
|
@@ -13281,7 +13161,7 @@ var require_authenticator = __commonJS({
|
|
|
13281
13161
|
exports2.tokenAuthenticator = tokenAuthenticator;
|
|
13282
13162
|
exports2.nkeyAuthenticator = nkeyAuthenticator;
|
|
13283
13163
|
exports2.jwtAuthenticator = jwtAuthenticator;
|
|
13284
|
-
exports2.credsAuthenticator =
|
|
13164
|
+
exports2.credsAuthenticator = credsAuthenticator7;
|
|
13285
13165
|
var nkeys_1 = require_nkeys2();
|
|
13286
13166
|
var encoders_1 = require_encoders();
|
|
13287
13167
|
function multiAuthenticator(authenticators) {
|
|
@@ -13331,7 +13211,7 @@ var require_authenticator = __commonJS({
|
|
|
13331
13211
|
return { jwt: jwt2, nkey, sig };
|
|
13332
13212
|
};
|
|
13333
13213
|
}
|
|
13334
|
-
function
|
|
13214
|
+
function credsAuthenticator7(creds) {
|
|
13335
13215
|
const fn = typeof creds !== "function" ? () => creds : creds;
|
|
13336
13216
|
const parse3 = () => {
|
|
13337
13217
|
const CREDS = /\s*(?:(?:[-]{3,}[^\n]*[-]{3,}\n)(.+)(?:\n\s*[-]{3,}[^\n]*[-]{3,}\n))/ig;
|
|
@@ -15032,7 +14912,7 @@ ${stack}`;
|
|
|
15032
14912
|
});
|
|
15033
14913
|
|
|
15034
14914
|
// ../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/types.js
|
|
15035
|
-
var
|
|
14915
|
+
var require_types2 = __commonJS({
|
|
15036
14916
|
"../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/types.js"(exports2) {
|
|
15037
14917
|
"use strict";
|
|
15038
14918
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
@@ -15053,7 +14933,7 @@ var require_bench = __commonJS({
|
|
|
15053
14933
|
exports2.throughput = throughput;
|
|
15054
14934
|
exports2.msgThroughput = msgThroughput;
|
|
15055
14935
|
exports2.humanizeBytes = humanizeBytes;
|
|
15056
|
-
var types_1 =
|
|
14936
|
+
var types_1 = require_types2();
|
|
15057
14937
|
var nuid_1 = require_nuid2();
|
|
15058
14938
|
var util_1 = require_util3();
|
|
15059
14939
|
var Metric = class {
|
|
@@ -16015,7 +15895,7 @@ var require_internal_mod = __commonJS({
|
|
|
16015
15895
|
Object.defineProperty(exports2, "parseSemVer", { enumerable: true, get: function() {
|
|
16016
15896
|
return semver_1.parseSemVer;
|
|
16017
15897
|
} });
|
|
16018
|
-
var types_1 =
|
|
15898
|
+
var types_1 = require_types2();
|
|
16019
15899
|
Object.defineProperty(exports2, "Empty", { enumerable: true, get: function() {
|
|
16020
15900
|
return types_1.Empty;
|
|
16021
15901
|
} });
|
|
@@ -16107,125 +15987,767 @@ var require_internal_mod = __commonJS({
|
|
|
16107
15987
|
}
|
|
16108
15988
|
});
|
|
16109
15989
|
|
|
16110
|
-
// ../../node_modules/.pnpm/@nats-io+
|
|
16111
|
-
var
|
|
16112
|
-
"../../node_modules/.pnpm/@nats-io+
|
|
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) {
|
|
16113
15993
|
"use strict";
|
|
16114
|
-
Object.
|
|
16115
|
-
|
|
16116
|
-
|
|
16117
|
-
|
|
16118
|
-
|
|
16119
|
-
|
|
16120
|
-
|
|
16121
|
-
this.name = "JetStreamNotEnabled";
|
|
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
|
+
} };
|
|
16122
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);
|
|
16123
16009
|
};
|
|
16124
|
-
exports2
|
|
16125
|
-
|
|
16126
|
-
|
|
16127
|
-
|
|
16128
|
-
|
|
16129
|
-
|
|
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) {
|
|
16018
|
+
"use strict";
|
|
16019
|
+
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 };
|
|
16130
16031
|
};
|
|
16131
|
-
exports2
|
|
16132
|
-
|
|
16133
|
-
|
|
16134
|
-
|
|
16135
|
-
|
|
16136
|
-
|
|
16137
|
-
|
|
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;
|
|
16138
16059
|
}
|
|
16139
|
-
|
|
16140
|
-
|
|
16141
|
-
|
|
16142
|
-
|
|
16143
|
-
|
|
16144
|
-
|
|
16145
|
-
|
|
16146
|
-
|
|
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
|
+
}
|
|
16147
16101
|
}
|
|
16148
|
-
|
|
16149
|
-
const
|
|
16150
|
-
|
|
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;
|
|
16151
16118
|
}
|
|
16152
|
-
|
|
16153
|
-
return
|
|
16119
|
+
get isClosed() {
|
|
16120
|
+
return this.done;
|
|
16154
16121
|
}
|
|
16155
|
-
|
|
16156
|
-
|
|
16157
|
-
subject: this.msg.subject,
|
|
16158
|
-
reply: this.msg.reply,
|
|
16159
|
-
description: this.description,
|
|
16160
|
-
status: this.code,
|
|
16161
|
-
headers: this.msg.headers
|
|
16162
|
-
});
|
|
16122
|
+
close(err2) {
|
|
16123
|
+
return this._closed(err2, false);
|
|
16163
16124
|
}
|
|
16164
|
-
|
|
16165
|
-
|
|
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);
|
|
16153
|
+
});
|
|
16154
|
+
return d;
|
|
16166
16155
|
}
|
|
16167
|
-
|
|
16168
|
-
if (
|
|
16169
|
-
|
|
16170
|
-
|
|
16171
|
-
|
|
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`));
|
|
16172
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);
|
|
16173
16174
|
}
|
|
16174
|
-
return
|
|
16175
|
-
}
|
|
16176
|
-
isIdleHeartbeat() {
|
|
16177
|
-
return this.code === 100 && this.description === "idle heartbeat";
|
|
16178
|
-
}
|
|
16179
|
-
isFlowControlRequest() {
|
|
16180
|
-
return this.code === 100 && this.description === "flowcontrol request";
|
|
16175
|
+
return d;
|
|
16181
16176
|
}
|
|
16182
|
-
|
|
16183
|
-
|
|
16184
|
-
|
|
16185
|
-
|
|
16186
|
-
|
|
16187
|
-
|
|
16188
|
-
|
|
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;
|
|
16204
|
+
}
|
|
16205
|
+
return Promise.resolve(tlsOpts);
|
|
16206
|
+
} catch (err2) {
|
|
16207
|
+
return Promise.reject(err2);
|
|
16189
16208
|
}
|
|
16190
|
-
return null;
|
|
16191
|
-
}
|
|
16192
|
-
isRequestTimeout() {
|
|
16193
|
-
return this.code === 408 && this.description === "request timeout";
|
|
16194
16209
|
}
|
|
16195
|
-
|
|
16196
|
-
|
|
16197
|
-
|
|
16198
|
-
|
|
16210
|
+
async tlsFirst(hp) {
|
|
16211
|
+
let tlsError;
|
|
16212
|
+
let tlsOpts = {
|
|
16213
|
+
servername: this.tlsName,
|
|
16214
|
+
rejectUnauthorized: true
|
|
16199
16215
|
};
|
|
16200
|
-
|
|
16201
|
-
|
|
16202
|
-
discard.msgsLeft = parseInt(msgsLeft);
|
|
16216
|
+
if (this.socket) {
|
|
16217
|
+
tlsOpts.socket = this.socket;
|
|
16203
16218
|
}
|
|
16204
|
-
|
|
16205
|
-
|
|
16206
|
-
|
|
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
|
+
}
|
|
16207
16226
|
}
|
|
16208
|
-
|
|
16209
|
-
|
|
16210
|
-
|
|
16211
|
-
|
|
16212
|
-
|
|
16213
|
-
|
|
16214
|
-
|
|
16215
|
-
|
|
16216
|
-
|
|
16217
|
-
|
|
16218
|
-
|
|
16219
|
-
|
|
16220
|
-
|
|
16221
|
-
|
|
16222
|
-
|
|
16223
|
-
|
|
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 }));
|
|
16251
|
+
}
|
|
16252
|
+
return d;
|
|
16224
16253
|
}
|
|
16225
|
-
|
|
16226
|
-
|
|
16254
|
+
async startTLS() {
|
|
16255
|
+
let tlsError;
|
|
16256
|
+
let tlsOpts = {
|
|
16257
|
+
socket: this.socket,
|
|
16258
|
+
servername: this.tlsName,
|
|
16259
|
+
rejectUnauthorized: true
|
|
16260
|
+
};
|
|
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
|
+
}
|
|
16270
|
+
}
|
|
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 }));
|
|
16294
|
+
}
|
|
16295
|
+
return d;
|
|
16227
16296
|
}
|
|
16228
|
-
|
|
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;
|
|
16731
|
+
}
|
|
16732
|
+
isBadRequest() {
|
|
16733
|
+
return this.code === 400;
|
|
16734
|
+
}
|
|
16735
|
+
isConsumerDeleted() {
|
|
16736
|
+
return this.code === 409 && this.description === "consumer deleted";
|
|
16737
|
+
}
|
|
16738
|
+
isStreamDeleted() {
|
|
16739
|
+
return this.code === 409 && this.description === "stream deleted";
|
|
16740
|
+
}
|
|
16741
|
+
isIdleHeartbeatMissed() {
|
|
16742
|
+
return this.code === 409 && this.description === "idle heartbeats missed";
|
|
16743
|
+
}
|
|
16744
|
+
isMaxWaitingExceeded() {
|
|
16745
|
+
return this.code === 409 && this.description === "exceeded maxwaiting";
|
|
16746
|
+
}
|
|
16747
|
+
isConsumerIsPushBased() {
|
|
16748
|
+
return this.code === 409 && this.description === "consumer is push based";
|
|
16749
|
+
}
|
|
16750
|
+
isExceededMaxWaiting() {
|
|
16229
16751
|
return this.code === 409 && this.description.includes("exceeded maxwaiting");
|
|
16230
16752
|
}
|
|
16231
16753
|
isExceededMaxRequestBatch() {
|
|
@@ -16328,7 +16850,7 @@ var require_jsbaseclient_api = __commonJS({
|
|
|
16328
16850
|
exports2.parseJsResponse = parseJsResponse;
|
|
16329
16851
|
exports2.defaultJsOptions = defaultJsOptions;
|
|
16330
16852
|
var internal_1 = require_internal_mod();
|
|
16331
|
-
var types_1 =
|
|
16853
|
+
var types_1 = require_types3();
|
|
16332
16854
|
var jserrors_1 = require_jserrors();
|
|
16333
16855
|
var defaultPrefix = "$JS.API";
|
|
16334
16856
|
var defaultTimeout = 5e3;
|
|
@@ -16589,7 +17111,7 @@ var require_jsutil = __commonJS({
|
|
|
16589
17111
|
});
|
|
16590
17112
|
|
|
16591
17113
|
// ../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/mod.js
|
|
16592
|
-
var
|
|
17114
|
+
var require_mod4 = __commonJS({
|
|
16593
17115
|
"../../node_modules/.pnpm/@nats-io+nats-core@3.4.0/node_modules/@nats-io/nats-core/lib/mod.js"(exports2) {
|
|
16594
17116
|
"use strict";
|
|
16595
17117
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
@@ -16725,7 +17247,7 @@ var require_jsapi_types = __commonJS({
|
|
|
16725
17247
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
16726
17248
|
exports2.PubHeaders = exports2.PriorityPolicy = exports2.ConsumerApiAction = exports2.PersistMode = exports2.StoreCompression = exports2.ReplayPolicy = exports2.AckPolicy = exports2.DeliverPolicy = exports2.StorageType = exports2.DiscardPolicy = exports2.RetentionPolicy = void 0;
|
|
16727
17249
|
exports2.defaultConsumer = defaultConsumer;
|
|
16728
|
-
var nats_core_1 =
|
|
17250
|
+
var nats_core_1 = require_mod4();
|
|
16729
17251
|
exports2.RetentionPolicy = {
|
|
16730
17252
|
/**
|
|
16731
17253
|
* Retain messages until the limits are reached, then trigger the discard policy.
|
|
@@ -18035,7 +18557,7 @@ var require_pushconsumer = __commonJS({
|
|
|
18035
18557
|
exports2.PushConsumerImpl = exports2.PushConsumerMessagesImpl = void 0;
|
|
18036
18558
|
var jsmsg_1 = require_jsmsg();
|
|
18037
18559
|
var jsapi_types_1 = require_jsapi_types();
|
|
18038
|
-
var types_1 =
|
|
18560
|
+
var types_1 = require_types3();
|
|
18039
18561
|
var internal_1 = require_internal_mod();
|
|
18040
18562
|
var jserrors_1 = require_jserrors();
|
|
18041
18563
|
var PushConsumerMessagesImpl = class extends internal_1.QueuedIteratorImpl {
|
|
@@ -18387,7 +18909,7 @@ var require_jsmstream_api = __commonJS({
|
|
|
18387
18909
|
var jsbaseclient_api_1 = require_jsbaseclient_api();
|
|
18388
18910
|
var jslister_1 = require_jslister();
|
|
18389
18911
|
var jsutil_1 = require_jsutil();
|
|
18390
|
-
var types_1 =
|
|
18912
|
+
var types_1 = require_types3();
|
|
18391
18913
|
var jsapi_types_1 = require_jsapi_types();
|
|
18392
18914
|
var consumer_1 = require_consumer();
|
|
18393
18915
|
var jsmconsumer_api_1 = require_jsmconsumer_api();
|
|
@@ -18909,7 +19431,7 @@ var require_jsm_direct = __commonJS({
|
|
|
18909
19431
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
18910
19432
|
exports2.DirectConsumer = exports2.DirectMsgImpl = exports2.DirectStreamAPIImpl = void 0;
|
|
18911
19433
|
var jsbaseclient_api_1 = require_jsbaseclient_api();
|
|
18912
|
-
var types_1 =
|
|
19434
|
+
var types_1 = require_types3();
|
|
18913
19435
|
var internal_1 = require_internal_mod();
|
|
18914
19436
|
var jsutil_1 = require_jsutil();
|
|
18915
19437
|
var jserrors_1 = require_jserrors();
|
|
@@ -19665,856 +20187,334 @@ var require_jsclient = __commonJS({
|
|
|
19665
20187
|
this.nc.publish(this.batchSubj, payload, { reply: rs, headers });
|
|
19666
20188
|
return this.deadlineOrClose(this.startDeferred, opts?.timeout ?? this.defaultTimeout);
|
|
19667
20189
|
}
|
|
19668
|
-
deadlineOrClose(p, ms) {
|
|
19669
|
-
return (0, internal_1.deadline)(p, ms).catch((err2) => {
|
|
19670
|
-
if (!this.closed)
|
|
19671
|
-
this.close(err2);
|
|
19672
|
-
throw err2;
|
|
19673
|
-
});
|
|
19674
|
-
}
|
|
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();
|
|
20190
|
+
deadlineOrClose(p, ms) {
|
|
20191
|
+
return (0, internal_1.deadline)(p, ms).catch((err2) => {
|
|
20192
|
+
if (!this.closed)
|
|
20193
|
+
this.close(err2);
|
|
20194
|
+
throw err2;
|
|
20195
|
+
});
|
|
20329
20196
|
}
|
|
20330
|
-
|
|
20331
|
-
|
|
20332
|
-
|
|
20333
|
-
|
|
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);
|
|
20334
20215
|
}
|
|
20335
|
-
const
|
|
20336
|
-
|
|
20337
|
-
|
|
20338
|
-
|
|
20339
|
-
|
|
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));
|
|
20340
20221
|
}
|
|
20341
|
-
yield yields[i];
|
|
20342
|
-
}
|
|
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)();
|
|
20349
20222
|
}
|
|
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;
|
|
20350
20230
|
}
|
|
20351
|
-
|
|
20352
|
-
|
|
20353
|
-
|
|
20354
|
-
|
|
20355
|
-
|
|
20356
|
-
this.socket.removeAllListeners();
|
|
20357
|
-
this.socket.destroy();
|
|
20358
|
-
} catch {
|
|
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 });
|
|
20359
20236
|
}
|
|
20237
|
+
return;
|
|
20360
20238
|
}
|
|
20361
|
-
|
|
20362
|
-
|
|
20363
|
-
|
|
20364
|
-
|
|
20365
|
-
|
|
20366
|
-
return this.socket instanceof node_tls_1.TLSSocket;
|
|
20367
|
-
}
|
|
20368
|
-
_send(frame) {
|
|
20369
|
-
if (this.isClosed || this.socket === void 0) {
|
|
20370
|
-
return Promise.resolve();
|
|
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;
|
|
20371
20244
|
}
|
|
20372
|
-
|
|
20373
|
-
|
|
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);
|
|
20374
20250
|
}
|
|
20375
|
-
const
|
|
20376
|
-
|
|
20377
|
-
|
|
20378
|
-
|
|
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}`);
|
|
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);
|
|
20389
20255
|
}
|
|
20390
|
-
d.reject(err2);
|
|
20391
20256
|
}
|
|
20392
|
-
return d;
|
|
20393
20257
|
}
|
|
20394
|
-
|
|
20395
|
-
|
|
20396
|
-
p.catch((_err) => {
|
|
20397
|
-
});
|
|
20258
|
+
resolveStart() {
|
|
20259
|
+
this.startDeferred.resolve();
|
|
20398
20260
|
}
|
|
20399
|
-
|
|
20400
|
-
|
|
20401
|
-
|
|
20402
|
-
|
|
20403
|
-
|
|
20404
|
-
|
|
20405
|
-
|
|
20406
|
-
this.
|
|
20407
|
-
|
|
20408
|
-
|
|
20409
|
-
|
|
20410
|
-
|
|
20411
|
-
|
|
20412
|
-
|
|
20413
|
-
|
|
20414
|
-
|
|
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();
|
|
20271
|
+
}
|
|
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 });
|
|
20415
20281
|
}
|
|
20416
|
-
|
|
20417
|
-
|
|
20418
|
-
|
|
20419
|
-
|
|
20420
|
-
|
|
20421
|
-
|
|
20422
|
-
|
|
20423
|
-
|
|
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);
|
|
20424
20315
|
}
|
|
20425
|
-
|
|
20426
|
-
this.
|
|
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);
|
|
20427
20320
|
}
|
|
20428
|
-
|
|
20429
|
-
return this.
|
|
20321
|
+
done() {
|
|
20322
|
+
return this.closedDeferred;
|
|
20430
20323
|
}
|
|
20431
|
-
|
|
20432
|
-
|
|
20433
|
-
|
|
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);
|
|
20324
|
+
gaps() {
|
|
20325
|
+
if (!this.gapIter) {
|
|
20326
|
+
this.gapIter = new internal_1.QueuedIteratorImpl();
|
|
20452
20327
|
}
|
|
20453
|
-
|
|
20454
|
-
|
|
20455
|
-
}
|
|
20328
|
+
return this.gapIter;
|
|
20329
|
+
}
|
|
20330
|
+
};
|
|
20456
20331
|
}
|
|
20457
20332
|
});
|
|
20458
20333
|
|
|
20459
|
-
// ../../node_modules/.pnpm/@nats-io+
|
|
20460
|
-
var
|
|
20461
|
-
"../../node_modules/.pnpm/@nats-io+
|
|
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) {
|
|
20462
20337
|
"use strict";
|
|
20463
20338
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
20464
|
-
exports2.
|
|
20465
|
-
var
|
|
20466
|
-
|
|
20467
|
-
|
|
20468
|
-
|
|
20469
|
-
|
|
20470
|
-
|
|
20471
|
-
|
|
20472
|
-
|
|
20473
|
-
|
|
20474
|
-
|
|
20475
|
-
|
|
20476
|
-
|
|
20477
|
-
|
|
20478
|
-
|
|
20479
|
-
|
|
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
|
+
} });
|
|
20480
20447
|
}
|
|
20481
20448
|
});
|
|
20482
20449
|
|
|
20483
|
-
// ../../node_modules/.pnpm/@nats-io+
|
|
20450
|
+
// ../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/mod.js
|
|
20484
20451
|
var require_mod5 = __commonJS({
|
|
20485
|
-
"../../node_modules/.pnpm/@nats-io+
|
|
20452
|
+
"../../node_modules/.pnpm/@nats-io+jetstream@3.4.0/node_modules/@nats-io/jetstream/lib/mod.js"(exports2) {
|
|
20486
20453
|
"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
|
-
};
|
|
20503
20454
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
20504
|
-
exports2.
|
|
20505
|
-
var
|
|
20506
|
-
Object.defineProperty(exports2, "
|
|
20507
|
-
return
|
|
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;
|
|
20508
20517
|
} });
|
|
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
|
|
|
@@ -20657,7 +20657,7 @@ var require_kv = __commonJS({
|
|
|
20657
20657
|
throw new Error(`invalid bucket name: ${name}`);
|
|
20658
20658
|
}
|
|
20659
20659
|
}
|
|
20660
|
-
var
|
|
20660
|
+
var Kvm9 = class {
|
|
20661
20661
|
js;
|
|
20662
20662
|
/**
|
|
20663
20663
|
* Creates an instance of the Kv that allows you to create and access KV stores.
|
|
@@ -20723,7 +20723,7 @@ var require_kv = __commonJS({
|
|
|
20723
20723
|
return new internal_2.ListerImpl(subj, filter, this.js);
|
|
20724
20724
|
}
|
|
20725
20725
|
};
|
|
20726
|
-
exports2.Kvm =
|
|
20726
|
+
exports2.Kvm = Kvm9;
|
|
20727
20727
|
var Bucket = class _Bucket {
|
|
20728
20728
|
js;
|
|
20729
20729
|
jsm;
|
|
@@ -45764,6 +45764,10 @@ function aclBucket(space) {
|
|
|
45764
45764
|
function aclKey(owner) {
|
|
45765
45765
|
return token(owner);
|
|
45766
45766
|
}
|
|
45767
|
+
function membershipBucket(space) {
|
|
45768
|
+
return `cotal_membership_${token(space)}`;
|
|
45769
|
+
}
|
|
45770
|
+
var MEMBERSHIP_FEED_KEY = "=feed";
|
|
45767
45771
|
function deliveryBucket(space) {
|
|
45768
45772
|
return `cotal_delivery_${token(space)}`;
|
|
45769
45773
|
}
|
|
@@ -47520,13 +47524,19 @@ var BASE_LIMITS = {
|
|
|
47520
47524
|
var DATA_LIMITS = { ...BASE_LIMITS, mem_storage: -1, disk_storage: -1 };
|
|
47521
47525
|
var SYS_LIMITS = { ...BASE_LIMITS, mem_storage: 0, disk_storage: 0 };
|
|
47522
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
|
+
|
|
47523
47532
|
// ../../packages/core/dist/streams.js
|
|
47524
|
-
var import_jetstream = __toESM(
|
|
47533
|
+
var import_jetstream = __toESM(require_mod5(), 1);
|
|
47525
47534
|
var import_transport_node = __toESM(require_transport_node(), 1);
|
|
47526
47535
|
var import_kv = __toESM(require_mod6(), 1);
|
|
47527
47536
|
var MAX_MSGS_PER_SUBJECT = 1e3;
|
|
47528
47537
|
var PLANE3_DEDUP_WINDOW_MS = 2 * 60 * 60 * 1e3;
|
|
47529
47538
|
var DINBOX_MAX_ACK_PENDING = 1e3;
|
|
47539
|
+
var MEMBERSHIP_MAX_BYTES = 64 * 1024 * 1024;
|
|
47530
47540
|
async function createSpaceStreams(jsm, space) {
|
|
47531
47541
|
const p = spacePrefix(space);
|
|
47532
47542
|
await jsm.streams.add({
|
|
@@ -47626,50 +47636,12 @@ function fanoutDurableConfig(space, opts = {}) {
|
|
|
47626
47636
|
};
|
|
47627
47637
|
}
|
|
47628
47638
|
|
|
47629
|
-
// ../../packages/core/dist/
|
|
47630
|
-
var
|
|
47631
|
-
var
|
|
47632
|
-
function parseDuration(s) {
|
|
47633
|
-
const m = /^(\d+)(s|m|h|d)$/.exec(s.trim());
|
|
47634
|
-
if (!m)
|
|
47635
|
-
throw new Error(`invalid duration "${s}" \u2014 expected <number><s|m|h|d>, e.g. "24h"`);
|
|
47636
|
-
const n = Number(m[1]);
|
|
47637
|
-
const unit = { s: 1e3, m: 6e4, h: 36e5, d: 864e5 }[m[2]];
|
|
47638
|
-
return n * unit;
|
|
47639
|
-
}
|
|
47640
|
-
function effectiveReplay(cfg, defaults) {
|
|
47641
|
-
return cfg?.replay ?? defaults?.replay ?? true;
|
|
47642
|
-
}
|
|
47643
|
-
function effectiveReplayWindowMs(cfg, defaults) {
|
|
47644
|
-
const w = cfg?.replayWindow ?? defaults?.replayWindow;
|
|
47645
|
-
return w === void 0 ? void 0 : parseDuration(w);
|
|
47646
|
-
}
|
|
47647
|
-
function effectiveDeliveryClass(cfg, defaults) {
|
|
47648
|
-
return cfg?.deliveryClass ?? defaults?.deliveryClass ?? "durable";
|
|
47649
|
-
}
|
|
47650
|
-
async function openChannelRegistry(nc, space, opts = {}) {
|
|
47651
|
-
const kvm = new import_kv2.Kvm(nc);
|
|
47652
|
-
return opts.create ? kvm.create(channelBucket(space)) : kvm.open(channelBucket(space));
|
|
47653
|
-
}
|
|
47654
|
-
async function readChannelConfig(kv, channel) {
|
|
47655
|
-
return decode3(kv, channel);
|
|
47656
|
-
}
|
|
47657
|
-
async function readChannelDefaults(kv) {
|
|
47658
|
-
return decode3(kv, CHANNEL_DEFAULTS_KEY);
|
|
47659
|
-
}
|
|
47660
|
-
async function decode3(kv, key) {
|
|
47661
|
-
const e = await kv.get(key);
|
|
47662
|
-
if (!e || e.operation === "DEL" || e.operation === "PURGE")
|
|
47663
|
-
return void 0;
|
|
47664
|
-
try {
|
|
47665
|
-
return e.json();
|
|
47666
|
-
} catch {
|
|
47667
|
-
return void 0;
|
|
47668
|
-
}
|
|
47669
|
-
}
|
|
47639
|
+
// ../../packages/core/dist/endpoint.js
|
|
47640
|
+
var import_jetstream2 = __toESM(require_mod5(), 1);
|
|
47641
|
+
var import_kv6 = __toESM(require_mod6(), 1);
|
|
47670
47642
|
|
|
47671
47643
|
// ../../packages/core/dist/members.js
|
|
47672
|
-
var
|
|
47644
|
+
var import_kv2 = __toESM(require_mod6(), 1);
|
|
47673
47645
|
var StaleMembershipWrite = class extends Error {
|
|
47674
47646
|
constructor(channel, owner, attempted, current) {
|
|
47675
47647
|
super(`stale membership write for ${channel}/${owner}: generation ${attempted} < current ${current}`);
|
|
@@ -47677,7 +47649,7 @@ var StaleMembershipWrite = class extends Error {
|
|
|
47677
47649
|
}
|
|
47678
47650
|
};
|
|
47679
47651
|
async function openMembersRegistry(nc, space, opts = {}) {
|
|
47680
|
-
const kvm = new
|
|
47652
|
+
const kvm = new import_kv2.Kvm(nc);
|
|
47681
47653
|
return opts.create ? kvm.create(membersBucket(space)) : kvm.open(membersBucket(space));
|
|
47682
47654
|
}
|
|
47683
47655
|
async function readMember(kv, channel, owner) {
|
|
@@ -47777,9 +47749,9 @@ function durableEligible(rec, seq) {
|
|
|
47777
47749
|
}
|
|
47778
47750
|
|
|
47779
47751
|
// ../../packages/core/dist/acls.js
|
|
47780
|
-
var
|
|
47752
|
+
var import_kv3 = __toESM(require_mod6(), 1);
|
|
47781
47753
|
async function openAclRegistry(nc, space, opts = {}) {
|
|
47782
|
-
const kvm = new
|
|
47754
|
+
const kvm = new import_kv3.Kvm(nc);
|
|
47783
47755
|
return opts.create ? kvm.create(aclBucket(space)) : kvm.open(aclBucket(space));
|
|
47784
47756
|
}
|
|
47785
47757
|
async function readAcl(kv, owner) {
|
|
@@ -47824,130 +47796,55 @@ async function commitAcl(kv, owner, allowSubscribe) {
|
|
|
47824
47796
|
}
|
|
47825
47797
|
|
|
47826
47798
|
// ../../packages/core/dist/lease.js
|
|
47827
|
-
var
|
|
47828
|
-
var
|
|
47799
|
+
var import_kv4 = __toESM(require_mod6(), 1);
|
|
47800
|
+
var import_transport_node2 = __toESM(require_transport_node(), 1);
|
|
47829
47801
|
async function openDeliveryRegistry(nc, space) {
|
|
47830
|
-
return new
|
|
47802
|
+
return new import_kv4.Kvm(nc).open(deliveryBucket(space));
|
|
47831
47803
|
}
|
|
47832
47804
|
|
|
47833
|
-
// ../../packages/core/dist/
|
|
47834
|
-
var
|
|
47835
|
-
|
|
47836
|
-
|
|
47837
|
-
|
|
47838
|
-
|
|
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;
|
|
47839
47815
|
}
|
|
47840
|
-
function
|
|
47841
|
-
|
|
47842
|
-
for (const raw of src.split("\n")) {
|
|
47843
|
-
const line = raw.trim();
|
|
47844
|
-
if (!line || line.startsWith("#"))
|
|
47845
|
-
continue;
|
|
47846
|
-
const colon = line.indexOf(":");
|
|
47847
|
-
if (colon < 1)
|
|
47848
|
-
throw new Error(`agent file: unparseable frontmatter line "${raw}"`);
|
|
47849
|
-
const key = line.slice(0, colon).trim();
|
|
47850
|
-
const val = line.slice(colon + 1).trim();
|
|
47851
|
-
if (val.startsWith("[")) {
|
|
47852
|
-
if (!val.endsWith("]"))
|
|
47853
|
-
throw new Error(`agent file: unterminated list for "${key}"`);
|
|
47854
|
-
out[key] = val.slice(1, -1).split(",").map((s) => unquote(s.trim())).filter(Boolean);
|
|
47855
|
-
} else {
|
|
47856
|
-
out[key] = unquote(val);
|
|
47857
|
-
}
|
|
47858
|
-
}
|
|
47859
|
-
return out;
|
|
47816
|
+
function effectiveReplay(cfg, defaults) {
|
|
47817
|
+
return cfg?.replay ?? defaults?.replay ?? true;
|
|
47860
47818
|
}
|
|
47861
|
-
function
|
|
47862
|
-
const
|
|
47863
|
-
|
|
47864
|
-
|
|
47865
|
-
|
|
47866
|
-
|
|
47867
|
-
|
|
47868
|
-
|
|
47869
|
-
|
|
47870
|
-
|
|
47871
|
-
|
|
47872
|
-
|
|
47873
|
-
|
|
47874
|
-
|
|
47875
|
-
|
|
47876
|
-
|
|
47877
|
-
|
|
47878
|
-
|
|
47879
|
-
|
|
47880
|
-
|
|
47881
|
-
|
|
47882
|
-
|
|
47883
|
-
|
|
47884
|
-
|
|
47885
|
-
|
|
47886
|
-
|
|
47887
|
-
for (const old of ["channels", "publish"])
|
|
47888
|
-
if (old in fm)
|
|
47889
|
-
throw new Error(`agent file ${path}: "${old}" was renamed \u2014 use "subscribe"/"allowSubscribe" (read) and "allowPublish" (post)`);
|
|
47890
|
-
const subscribe = list("subscribe");
|
|
47891
|
-
const allowSubscribe = list("allowSubscribe");
|
|
47892
|
-
const allowPublish = list("allowPublish");
|
|
47893
|
-
const quiet = list("quiet");
|
|
47894
|
-
const muted = list("muted");
|
|
47895
|
-
for (const ch of [...subscribe ?? [], ...allowSubscribe ?? [], ...allowPublish ?? []])
|
|
47896
|
-
try {
|
|
47897
|
-
assertValidChannel(ch);
|
|
47898
|
-
} catch (e) {
|
|
47899
|
-
throw new Error(`agent file ${path}: ${e.message}`);
|
|
47900
|
-
}
|
|
47901
|
-
const effSubscribe = subscribe?.length ? subscribe : ["general"];
|
|
47902
|
-
const effAllow = allowSubscribe?.length ? allowSubscribe : effSubscribe;
|
|
47903
|
-
for (const ch of effSubscribe)
|
|
47904
|
-
if (!channelInAllow(effAllow, ch))
|
|
47905
|
-
throw new Error(`agent file ${path}: subscribe channel "${ch}" is not within allowSubscribe [${effAllow.join(", ")}]`);
|
|
47906
|
-
const both = (quiet ?? []).filter((c) => (muted ?? []).includes(c));
|
|
47907
|
-
if (both.length)
|
|
47908
|
-
throw new Error(`agent file ${path}: channel(s) [${both.join(", ")}] are in both quiet and muted \u2014 pick one`);
|
|
47909
|
-
for (const [field, chans] of [["quiet", quiet], ["muted", muted]])
|
|
47910
|
-
for (const ch of chans ?? []) {
|
|
47911
|
-
try {
|
|
47912
|
-
assertValidChannel(ch);
|
|
47913
|
-
} catch (e) {
|
|
47914
|
-
throw new Error(`agent file ${path}: ${e.message}`);
|
|
47915
|
-
}
|
|
47916
|
-
if (!isConcreteChannel(ch))
|
|
47917
|
-
throw new Error(`agent file ${path}: ${field} channel "${ch}" must be a concrete channel (no wildcard)`);
|
|
47918
|
-
if (!channelInAllow(effAllow, ch))
|
|
47919
|
-
throw new Error(`agent file ${path}: ${field} channel "${ch}" is not within your read ACL / allowSubscribe [${effAllow.join(", ")}]`);
|
|
47920
|
-
}
|
|
47921
|
-
const known = /* @__PURE__ */ new Set(["name", "role", "kind", "description", "tags", "subscribe", "allowSubscribe", "allowPublish", "quiet", "muted", "model", "capabilities", "owner"]);
|
|
47922
|
-
const meta3 = {};
|
|
47923
|
-
for (const [k, v] of Object.entries(fm))
|
|
47924
|
-
if (!known.has(k) && typeof v === "string")
|
|
47925
|
-
meta3[k] = v;
|
|
47926
|
-
return {
|
|
47927
|
-
name,
|
|
47928
|
-
role: str("role"),
|
|
47929
|
-
kind,
|
|
47930
|
-
description: str("description"),
|
|
47931
|
-
tags: list("tags"),
|
|
47932
|
-
subscribe,
|
|
47933
|
-
allowSubscribe,
|
|
47934
|
-
allowPublish,
|
|
47935
|
-
quiet,
|
|
47936
|
-
muted,
|
|
47937
|
-
model: str("model"),
|
|
47938
|
-
capabilities: list("capabilities"),
|
|
47939
|
-
owner: str("owner"),
|
|
47940
|
-
meta: Object.keys(meta3).length ? meta3 : void 0,
|
|
47941
|
-
persona: persona || void 0
|
|
47942
|
-
};
|
|
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);
|
|
47835
|
+
}
|
|
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;
|
|
47844
|
+
}
|
|
47943
47845
|
}
|
|
47944
47846
|
|
|
47945
47847
|
// ../../packages/core/dist/endpoint.js
|
|
47946
|
-
var import_node_events = require("node:events");
|
|
47947
|
-
var import_node_crypto = require("node:crypto");
|
|
47948
|
-
var import_transport_node4 = __toESM(require_transport_node(), 1);
|
|
47949
|
-
var import_jetstream2 = __toESM(require_mod4(), 1);
|
|
47950
|
-
var import_kv6 = __toESM(require_mod6(), 1);
|
|
47951
47848
|
var DEFAULT_SERVER = "nats://127.0.0.1:4222";
|
|
47952
47849
|
var READER_MAX_REDELIVERIES = 10;
|
|
47953
47850
|
var CotalEndpoint = class extends import_node_events.EventEmitter {
|
|
@@ -47977,6 +47874,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
|
|
|
47977
47874
|
membersKv;
|
|
47978
47875
|
aclKv;
|
|
47979
47876
|
deliveryKv;
|
|
47877
|
+
membershipKv;
|
|
47980
47878
|
/** The live `ctl.delivery` serve subscription (delivery daemon) — re-created on every (re)connect by
|
|
47981
47879
|
* {@link armDeliveryControl}; tracked so the stale one is dropped on reconnect. */
|
|
47982
47880
|
deliveryServeSub;
|
|
@@ -48651,6 +48549,57 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
|
|
|
48651
48549
|
arr.sort(byName);
|
|
48652
48550
|
return map2;
|
|
48653
48551
|
}
|
|
48552
|
+
/** Lazily open the derived membership feed KV (admin/observer read; the delivery daemon writes it).
|
|
48553
|
+
* Read-only here — the dashboard consumes it; agents hold no grant and never call this. */
|
|
48554
|
+
async membershipRegistry() {
|
|
48555
|
+
if (!this.nc)
|
|
48556
|
+
throw new Error("endpoint not started");
|
|
48557
|
+
this.membershipKv ??= await new import_kv6.Kvm(this.nc).open(membershipBucket(this.space));
|
|
48558
|
+
return this.membershipKv;
|
|
48559
|
+
}
|
|
48560
|
+
/**
|
|
48561
|
+
* Snapshot the broker-sourced channel-membership feed (admin/observer read): every agent's
|
|
48562
|
+
* `{live, durable}` record plus `asOf` — the feed's freshness heartbeat (epoch ms of the daemon's last
|
|
48563
|
+
* successful poll, from the reserved {@link MEMBERSHIP_FEED_KEY}). `live` patterns are kept as-is
|
|
48564
|
+
* (wildcards preserved); the consumer expands them against the channel registry. `asOf` is undefined
|
|
48565
|
+
* when the feed has never been written (no daemon → the dashboard degrades to traffic-only).
|
|
48566
|
+
*/
|
|
48567
|
+
async readMembership() {
|
|
48568
|
+
const kv = await this.membershipRegistry();
|
|
48569
|
+
const members = [];
|
|
48570
|
+
let asOf;
|
|
48571
|
+
for await (const key of await kv.keys()) {
|
|
48572
|
+
const e = await kv.get(key);
|
|
48573
|
+
if (!e || e.operation === "DEL" || e.operation === "PURGE")
|
|
48574
|
+
continue;
|
|
48575
|
+
if (key === MEMBERSHIP_FEED_KEY) {
|
|
48576
|
+
try {
|
|
48577
|
+
asOf = e.json().observedAt;
|
|
48578
|
+
} catch {
|
|
48579
|
+
}
|
|
48580
|
+
continue;
|
|
48581
|
+
}
|
|
48582
|
+
try {
|
|
48583
|
+
const rec = e.json();
|
|
48584
|
+
members.push({ id: key, live: rec.live ?? [], durable: rec.durable ?? [], observedAt: rec.observedAt });
|
|
48585
|
+
} catch {
|
|
48586
|
+
}
|
|
48587
|
+
}
|
|
48588
|
+
return { asOf, members };
|
|
48589
|
+
}
|
|
48590
|
+
/** Watch the membership feed for changes (admin/observer): `onChange` fires on every KV entry,
|
|
48591
|
+
* including the initial replay — the caller debounces + re-reads {@link readMembership}. Returns a
|
|
48592
|
+
* stop handle. Best-effort: a feed the cred can't read (or absent) surfaces as an `error` event and
|
|
48593
|
+
* the dashboard keeps its last snapshot. */
|
|
48594
|
+
async watchMembership(onChange) {
|
|
48595
|
+
const kv = await this.membershipRegistry();
|
|
48596
|
+
const iter = await kv.watch();
|
|
48597
|
+
void (async () => {
|
|
48598
|
+
for await (const _ of iter)
|
|
48599
|
+
onChange();
|
|
48600
|
+
})().catch((err2) => this.emit("error", err2));
|
|
48601
|
+
return { stop: () => iter.stop() };
|
|
48602
|
+
}
|
|
48654
48603
|
/** Fetch recent messages from a channel's JetStream backlog. */
|
|
48655
48604
|
async channelHistory(channel, opts) {
|
|
48656
48605
|
return this.streamHistory(chatStream(this.space), chatSubject(this.space, "*", channel), opts?.limit ?? 100);
|
|
@@ -49866,7 +49815,7 @@ var CotalEndpoint = class extends import_node_events.EventEmitter {
|
|
|
49866
49815
|
}
|
|
49867
49816
|
}
|
|
49868
49817
|
async publishPresence() {
|
|
49869
|
-
if (!this.kv)
|
|
49818
|
+
if (!this.doRegister || !this.kv)
|
|
49870
49819
|
return;
|
|
49871
49820
|
const p = {
|
|
49872
49821
|
card: this.card,
|
|
@@ -50025,11 +49974,127 @@ function isPermissionDenied(e) {
|
|
|
50025
49974
|
return /permissions?\s+violation/i.test(String(e?.message ?? ""));
|
|
50026
49975
|
}
|
|
50027
49976
|
|
|
50028
|
-
// ../../packages/core/dist/
|
|
49977
|
+
// ../../packages/core/dist/membership-feed.js
|
|
50029
49978
|
var import_transport_node5 = __toESM(require_transport_node(), 1);
|
|
50030
|
-
var import_jetstream3 = __toESM(require_mod4(), 1);
|
|
50031
49979
|
var import_kv7 = __toESM(require_mod6(), 1);
|
|
50032
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
|
+
// ../../packages/core/dist/spaces.js
|
|
50094
|
+
var import_transport_node6 = __toESM(require_transport_node(), 1);
|
|
50095
|
+
var import_jetstream3 = __toESM(require_mod5(), 1);
|
|
50096
|
+
var import_kv8 = __toESM(require_mod6(), 1);
|
|
50097
|
+
|
|
50033
50098
|
// ../../packages/core/dist/registry.js
|
|
50034
50099
|
var Registry = class {
|
|
50035
50100
|
#byKey = /* @__PURE__ */ new Map();
|
|
@@ -50114,7 +50179,7 @@ function configFromEnv(env = process.env) {
|
|
|
50114
50179
|
subscribe: resolvedSubscribe,
|
|
50115
50180
|
allowSubscribe: resolvedAllowSub,
|
|
50116
50181
|
// Post ACL is default-DENY: only what's explicitly declared (env > agent-file). The broker
|
|
50117
|
-
// enforces it under auth; in open mode posting is unrestricted regardless
|
|
50182
|
+
// enforces it under auth; in open mode posting is unrestricted regardless.
|
|
50118
50183
|
allowPublish: resolvedAllowPub,
|
|
50119
50184
|
quiet: resolvedQuiet,
|
|
50120
50185
|
muted: resolvedMuted,
|
|
@@ -50127,17 +50192,6 @@ function configFromEnv(env = process.env) {
|
|
|
50127
50192
|
feedbackUrl: env.COTAL_FEEDBACK_URL?.trim() || void 0
|
|
50128
50193
|
};
|
|
50129
50194
|
}
|
|
50130
|
-
function laneLine(config2) {
|
|
50131
|
-
const fmt = (cs) => cs.map((c) => `#${c}`).join(", ");
|
|
50132
|
-
const subs = config2.subscribe;
|
|
50133
|
-
if (!config2.creds)
|
|
50134
|
-
return `You read and may post to ${fmt(subs)}. `;
|
|
50135
|
-
const pubs = config2.allowPublish;
|
|
50136
|
-
if (!pubs.length)
|
|
50137
|
-
return `You read ${fmt(subs)}; you may not post to any channel (no publish channels granted). `;
|
|
50138
|
-
const same = subs.length === pubs.length && subs.every((c) => pubs.includes(c));
|
|
50139
|
-
return same ? `You read and may post to ${fmt(subs)}. ` : `You read ${fmt(subs)}; you may post only to ${fmt(pubs)} (posts to other channels are rejected). `;
|
|
50140
|
-
}
|
|
50141
50195
|
function feedbackLine(config2) {
|
|
50142
50196
|
const dest = config2.feedbackKey ? "" : `Without a feedback key it goes to the public cotal.ai intake and needs a contact email \u2014 the tool will tell you to ask the user for one if it can't find it. `;
|
|
50143
50197
|
return `Use cotal_feedback with origin="human" when the user asks you to send feedback or gives you feedback to pass along. If you independently hit a major Cotal issue \u2014 for example repeated Cotal tool failures, inability to connect, lost/incorrect mesh messages, or a workflow-blocking bug \u2014 send cotal_feedback yourself with origin="agent". Do not send minor noise or secrets; include diagnostics only when they help debug the Cotal issue. ` + dest;
|
|
@@ -50507,10 +50561,16 @@ var MeshAgent = class extends import_node_events2.EventEmitter {
|
|
|
50507
50561
|
// ---- supervision ---------------------------------------------------------
|
|
50508
50562
|
/** Ask the manager to spawn a new teammate into this space (its `start` op).
|
|
50509
50563
|
* How it lands — a detached PTY, a tmux window, a cmux tab — is the manager's
|
|
50510
|
-
* runtime; from here it just joins the mesh as a lateral peer.
|
|
50511
|
-
|
|
50564
|
+
* runtime; from here it just joins the mesh as a lateral peer. `opts.agent` picks
|
|
50565
|
+
* the harness (default the manager's `cotal`/Claude) and `opts.model` overrides the
|
|
50566
|
+
* persona file's `model:` — the same knobs the operator's `cotal start` carries, so
|
|
50567
|
+
* the agent and operator spawn doors share one control-op contract. */
|
|
50568
|
+
async spawn(name, role, opts) {
|
|
50512
50569
|
this.assertConnected();
|
|
50513
|
-
return this.ep.requestControl(CONTROL_PRIVILEGED, {
|
|
50570
|
+
return this.ep.requestControl(CONTROL_PRIVILEGED, {
|
|
50571
|
+
op: "start",
|
|
50572
|
+
args: { name, role, agent: opts?.agent, model: opts?.model }
|
|
50573
|
+
});
|
|
50514
50574
|
}
|
|
50515
50575
|
/** Ask the manager to tear a teammate down (its `stop` op). Graceful by default —
|
|
50516
50576
|
* the session is told to exit cleanly (so it leaves the mesh) before the
|
|
@@ -50698,6 +50758,69 @@ function controlSocketPath(space, name) {
|
|
|
50698
50758
|
|
|
50699
50759
|
// ../connector-core/dist/tool-specs.js
|
|
50700
50760
|
var import_node_child_process = require("node:child_process");
|
|
50761
|
+
|
|
50762
|
+
// ../connector-core/dist/orientation.js
|
|
50763
|
+
var ORIENTATION_BOOTSTRAP = "Start with cotal_orientation \u2014 it shows your identity, the channels you can read and post to, your capabilities, the tools available to you, and who's present.";
|
|
50764
|
+
var CORE_TOOLS = /* @__PURE__ */ new Set([
|
|
50765
|
+
"cotal_inbox",
|
|
50766
|
+
"cotal_send",
|
|
50767
|
+
"cotal_dm",
|
|
50768
|
+
"cotal_anycast",
|
|
50769
|
+
"cotal_roster",
|
|
50770
|
+
"cotal_status"
|
|
50771
|
+
]);
|
|
50772
|
+
function buildOrientation(agent, config2, visibleTools, generatedAt) {
|
|
50773
|
+
const core = [];
|
|
50774
|
+
const more = [];
|
|
50775
|
+
for (const t of visibleTools) {
|
|
50776
|
+
if (t.name === "cotal_orientation")
|
|
50777
|
+
continue;
|
|
50778
|
+
(CORE_TOOLS.has(t.name) ? core : more).push(t);
|
|
50779
|
+
}
|
|
50780
|
+
const peers = agent.roster().filter((p) => p.card.id !== agent.id);
|
|
50781
|
+
const shown = peers.slice(0, 8).map((p) => `${p.card.role ? `${p.card.name}/${p.card.role}` : p.card.name} (${p.status})`);
|
|
50782
|
+
const summary = peers.length ? shown.join(", ") + (peers.length > shown.length ? `, +${peers.length - shown.length} more` : "") : "no other peers present";
|
|
50783
|
+
return {
|
|
50784
|
+
v: 1,
|
|
50785
|
+
generatedAt,
|
|
50786
|
+
identity: { name: config2.name, role: config2.role, space: config2.space, id: agent.id },
|
|
50787
|
+
access: {
|
|
50788
|
+
authMode: !!config2.creds,
|
|
50789
|
+
read: config2.subscribe,
|
|
50790
|
+
readAcl: config2.allowSubscribe,
|
|
50791
|
+
post: config2.allowPublish
|
|
50792
|
+
},
|
|
50793
|
+
capabilities: config2.capabilities ?? [],
|
|
50794
|
+
tools: { core, more },
|
|
50795
|
+
peers: { present: peers.length, summary },
|
|
50796
|
+
status: agent.status,
|
|
50797
|
+
attention: agent.attention,
|
|
50798
|
+
unread: { total: agent.inboxCount() },
|
|
50799
|
+
actions: {
|
|
50800
|
+
read: "cotal_inbox",
|
|
50801
|
+
replyChannel: "cotal_send",
|
|
50802
|
+
replyPrivate: "cotal_dm",
|
|
50803
|
+
askRole: "cotal_anycast"
|
|
50804
|
+
}
|
|
50805
|
+
};
|
|
50806
|
+
}
|
|
50807
|
+
function renderOrientation(o) {
|
|
50808
|
+
const fmt = (cs) => cs.length ? cs.map((c) => `#${c}`).join(", ") : "\u2014";
|
|
50809
|
+
const who2 = o.identity.role ? `${o.identity.name}/${o.identity.role}` : o.identity.name;
|
|
50810
|
+
const aclDiffers = o.access.readAcl.length !== o.access.read.length || o.access.readAcl.some((c) => !o.access.read.includes(c));
|
|
50811
|
+
const lines = [
|
|
50812
|
+
`You are ${who2} in space "${o.identity.space}" (id ${o.identity.id.slice(0, 8)}\u2026).`,
|
|
50813
|
+
"",
|
|
50814
|
+
`Access \u2014 ${o.access.authMode ? "auth mode (grants are broker-enforced)" : "open mode (grants advisory, host-trusted)"}:`,
|
|
50815
|
+
` \u2022 read: ${fmt(o.access.read)}`
|
|
50816
|
+
];
|
|
50817
|
+
if (aclDiffers)
|
|
50818
|
+
lines.push(` \u2022 may join (read ACL): ${fmt(o.access.readAcl)}`);
|
|
50819
|
+
lines.push(` \u2022 post: ${o.access.post.length ? fmt(o.access.post) : "\u2014 (read-only; no post channels)"}`, ` \u2022 capabilities: ${o.capabilities.length ? o.capabilities.join(", ") : "none beyond defaults"}`, "", `Tools \u2014 core loop: ${o.tools.core.map((t) => t.name).join(", ") || "\u2014"}`, `Tools \u2014 more: ${o.tools.more.map((t) => t.name).join(", ") || "\u2014"}`, "", `Right now (snapshot @ ${new Date(o.generatedAt).toISOString()}):`, ` \u2022 status: ${o.status} \xB7 attention: ${o.attention}`, ` \u2022 peers present: ${o.peers.present} \u2014 ${o.peers.summary}`, ` \u2022 unread: ${o.unread.total}`, "", `Act \u2192 read: ${o.actions.read} \xB7 reply on a channel: ${o.actions.replyChannel} \xB7 private: ${o.actions.replyPrivate} \xB7 ask a role: ${o.actions.askRole}`);
|
|
50820
|
+
return lines.join("\n");
|
|
50821
|
+
}
|
|
50822
|
+
|
|
50823
|
+
// ../connector-core/dist/tool-specs.js
|
|
50701
50824
|
var ok = (text) => ({ text });
|
|
50702
50825
|
var err = (text) => ({ text, isError: true });
|
|
50703
50826
|
function controlFailure(action, e) {
|
|
@@ -50770,6 +50893,21 @@ function channelMeta(i) {
|
|
|
50770
50893
|
function cotalToolSpecs(config2, source = "connector") {
|
|
50771
50894
|
const canSpawn = !config2.creds || (config2.capabilities?.includes("spawn") ?? false);
|
|
50772
50895
|
const specs = [
|
|
50896
|
+
{
|
|
50897
|
+
name: "cotal_orientation",
|
|
50898
|
+
title: "Cotal: orient \u2014 who you are & what you can do",
|
|
50899
|
+
description: "Your orientation card: who you are (name/role/space), the channels you can read and post to, your capabilities, the tools available to you (grouped into a core loop plus the rest), who's present, your status/attention, and how many messages are unread. Call this first to get your bearings; it's read-only and safe to re-check anytime.",
|
|
50900
|
+
run(agent) {
|
|
50901
|
+
const visible = cotalToolSpecs(config2, source).map((s) => ({
|
|
50902
|
+
name: s.name,
|
|
50903
|
+
title: s.title
|
|
50904
|
+
}));
|
|
50905
|
+
const card = renderOrientation(buildOrientation(agent, config2, visible, Date.now()));
|
|
50906
|
+
return ok(agent.connected ? card : `(not connected to the mesh yet \u2014 the live context below is empty)
|
|
50907
|
+
|
|
50908
|
+
${card}`);
|
|
50909
|
+
}
|
|
50910
|
+
},
|
|
50773
50911
|
{
|
|
50774
50912
|
name: "cotal_roster",
|
|
50775
50913
|
title: "Cotal: who's present",
|
|
@@ -51017,12 +51155,14 @@ ${info}${caught}`);
|
|
|
51017
51155
|
title: "Cotal: spawn a new teammate",
|
|
51018
51156
|
description: "Ask the manager to start a new peer endpoint in your space. It joins the mesh as a lateral peer (and, when the manager runs the cmux runtime, appears in its own tab). Use when the team needs another agent.",
|
|
51019
51157
|
schema: {
|
|
51020
|
-
name: external_exports.string().describe("
|
|
51021
|
-
role: external_exports.string().optional().describe("Optional role for the new peer (e.g. worker, reviewer).")
|
|
51158
|
+
name: external_exports.string().describe("Which persona to spawn \u2014 the persona FILENAME in .cotal/agents (e.g. `review-critic`), without the .md. The new peer joins under the persona's own `name:` (auto-numbered, e.g. socrates-2, if that's taken). Fails if no such persona file exists \u2014 spawn an existing persona, don't invent a name."),
|
|
51159
|
+
role: external_exports.string().optional().describe("Optional role for the new peer (e.g. worker, reviewer); overrides the persona file's role."),
|
|
51160
|
+
agent: external_exports.string().optional().describe("Optional harness the new peer runs on \u2014 the agent/connector type (claude, opencode, hermes), NOT the persona to spawn (that's `name`). Defaults to the manager's default (Claude)."),
|
|
51161
|
+
model: external_exports.string().optional().describe("Optional model override (e.g. opus, sonnet) \u2014 wins over the persona file's model:.")
|
|
51022
51162
|
},
|
|
51023
|
-
async run(agent, _config, { name, role }) {
|
|
51163
|
+
async run(agent, _config, { name, role, agent: agentType, model }) {
|
|
51024
51164
|
try {
|
|
51025
|
-
const reply = await agent.spawn(name, role);
|
|
51165
|
+
const reply = await agent.spawn(name, role, { agent: agentType, model });
|
|
51026
51166
|
if (!reply.ok)
|
|
51027
51167
|
return err(`Couldn't spawn ${name}: ${reply.error ?? "manager refused"}`);
|
|
51028
51168
|
const d = reply.data;
|
|
@@ -51451,7 +51591,7 @@ async function main() {
|
|
|
51451
51591
|
// `claude/channel` makes this MCP server a Claude Code *channel*: peer
|
|
51452
51592
|
// messages can be pushed straight into the session (waking it if idle).
|
|
51453
51593
|
capabilities: { experimental: { "claude/channel": {} } },
|
|
51454
|
-
instructions: `You are connected to the Cotal mesh as "${config2.name}"${config2.role ? ` (role: ${config2.role})` : ""} in space "${config2.space}". ` +
|
|
51594
|
+
instructions: `You are connected to the Cotal mesh as "${config2.name}"${config2.role ? ` (role: ${config2.role})` : ""} in space "${config2.space}". ${ORIENTATION_BOOTSTRAP} ` + feedbackLine(config2) + `Other agents coordinate with you here as lateral peers. Peer messages may arrive as <channel source="cotal" from="<name>" role="<role>" kind="dm|channel|anycast" channel="<name>">\u2026</channel> \u2014 read them and, when a reply is warranted, respond with cotal_dm (back to that peer), cotal_send (to a channel), or cotal_anycast (to a role). Use cotal_roster to see who is present, cotal_inbox to pull anything you may have missed, and cotal_status to report what you are doing. If you need to concentrate, cotal_status also sets your attention \u2014 dnd (channel chatter stops waking you; it still arrives on your next turn) or focus (only DMs and @mentions reach your context \u2014 pull the held chatter with cotal_inbox). To silence one channel instead of all of them, cotal_channel_mode sets it quiet (still delivered + readable, never wakes you; @mentions still wake) or muted (you stop receiving it, @mentions included). Reply only when a reply is actually needed \u2014 a silent acknowledgement is correct; "agreed/thanks/good point" messages are noise. And @-mention a peer only when you need THAT specific peer to act: a mention wakes them, so mentioning in acknowledgements or sign-offs makes peers ping-pong wake-ups in an endless loop.`
|
|
51455
51595
|
}
|
|
51456
51596
|
);
|
|
51457
51597
|
registerCotalTools(server, agent, config2, "claude-code");
|