@stackfactor/agent-utils 1.2.4 → 1.2.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,gFAAgF;IAChF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqCD;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,MAAM,EAChB,SAAS,mBAAmB,EAC5B,UAAS,gBAAqB,KAC7B,OAAO,CAAC,GAAG,CAyDV,CAAC;AAEL,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,EAAE,EAAE,OAAO,CAAC;IACZ,gFAAgF;IAChF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,UAAS,iBAAsB,KAC9B,OAAO,CAAC,WAAW,CA6ClB,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,gFAAgF;IAChF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8DD;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,MAAM,EAChB,SAAS,mBAAmB,EAC5B,UAAS,gBAAqB,KAC7B,OAAO,CAAC,GAAG,CA0DV,CAAC;AAEL,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,EAAE,EAAE,OAAO,CAAC;IACZ,gFAAgF;IAChF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,UAAS,iBAAsB,KAC9B,OAAO,CAAC,WAAW,CA8ClB,CAAC"}
@@ -37,6 +37,29 @@ exports.checkAgent = exports.callAgent = void 0;
37
37
  const grpc = __importStar(require("@grpc/grpc-js"));
38
38
  const agentProto_js_1 = require("./agentProto.js");
39
39
  const DEFAULT_DEADLINE_MS = 900_000;
40
+ /**
41
+ * gRPC-js defaults `grpc.max_receive_message_length` to 4 MiB. Agents stream
42
+ * their result inline in `result_json`, and image/avatar agents (GIA) routinely
43
+ * return payloads well above 4 MiB — a single PNG can be 5 MiB+ before the
44
+ * ~33% base64 inflation of embedding it in JSON — which trips
45
+ * `RESOURCE_EXHAUSTED: Received message larger than max`. Raise both limits to
46
+ * 64 MiB so large media responses pass. Override via the
47
+ * `STACKFACTOR_AGENT_MAX_MESSAGE_BYTES` env var if an even larger ceiling is
48
+ * needed. (-1 in gRPC-js means "unlimited", which we deliberately avoid so a
49
+ * runaway response can't exhaust memory.)
50
+ */
51
+ const MAX_MESSAGE_BYTES = (() => {
52
+ const fromEnv = Number(process.env.STACKFACTOR_AGENT_MAX_MESSAGE_BYTES);
53
+ return Number.isFinite(fromEnv) && fromEnv > 0 ? fromEnv : 64 * 1024 * 1024;
54
+ })();
55
+ /**
56
+ * Channel options applied to every agent gRPC client. Lifts the send/receive
57
+ * message-size caps off their 4 MiB defaults (see `MAX_MESSAGE_BYTES`).
58
+ */
59
+ const CHANNEL_OPTIONS = {
60
+ "grpc.max_receive_message_length": MAX_MESSAGE_BYTES,
61
+ "grpc.max_send_message_length": MAX_MESSAGE_BYTES,
62
+ };
40
63
  const safeParse = (value, fallback) => {
41
64
  if (!value)
42
65
  return fallback;
@@ -82,7 +105,7 @@ const callAgent = (agentUrl, request, options = {}) => new Promise((resolve, rej
82
105
  const loaded = (0, agentProto_js_1.loadAgentPackage)();
83
106
  const url = new URL(agentUrl);
84
107
  const address = `${url.hostname}:${url.port || "443"}`;
85
- const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken));
108
+ const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken), CHANNEL_OPTIONS);
86
109
  const stream = client.Execute(request, {
87
110
  deadline: Date.now() + (options.deadlineMs ?? DEFAULT_DEADLINE_MS),
88
111
  });
@@ -142,7 +165,7 @@ const checkAgent = (agentUrl, options = {}) => new Promise((resolve, reject) =>
142
165
  const loaded = (0, agentProto_js_1.loadAgentPackage)();
143
166
  const url = new URL(agentUrl);
144
167
  const address = `${url.hostname}:${url.port || "443"}`;
145
- const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken));
168
+ const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken), CHANNEL_OPTIONS);
146
169
  const request = {
147
170
  request_json: JSON.stringify({ authToken: options.authToken }),
148
171
  deep: !!options.deep,
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,gFAAgF;IAChF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqCD;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,MAAM,EAChB,SAAS,mBAAmB,EAC5B,UAAS,gBAAqB,KAC7B,OAAO,CAAC,GAAG,CAyDV,CAAC;AAEL,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,EAAE,EAAE,OAAO,CAAC;IACZ,gFAAgF;IAChF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,UAAS,iBAAsB,KAC9B,OAAO,CAAC,WAAW,CA6ClB,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,gFAAgF;IAChF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8DD;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,MAAM,EAChB,SAAS,mBAAmB,EAC5B,UAAS,gBAAqB,KAC7B,OAAO,CAAC,GAAG,CA0DV,CAAC;AAEL,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,EAAE,EAAE,OAAO,CAAC;IACZ,gFAAgF;IAChF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,UAAS,iBAAsB,KAC9B,OAAO,CAAC,WAAW,CA8ClB,CAAC"}
@@ -1,6 +1,29 @@
1
1
  import * as grpc from "@grpc/grpc-js";
2
2
  import { loadAgentPackage } from "./agentProto.js";
3
3
  const DEFAULT_DEADLINE_MS = 900_000;
4
+ /**
5
+ * gRPC-js defaults `grpc.max_receive_message_length` to 4 MiB. Agents stream
6
+ * their result inline in `result_json`, and image/avatar agents (GIA) routinely
7
+ * return payloads well above 4 MiB — a single PNG can be 5 MiB+ before the
8
+ * ~33% base64 inflation of embedding it in JSON — which trips
9
+ * `RESOURCE_EXHAUSTED: Received message larger than max`. Raise both limits to
10
+ * 64 MiB so large media responses pass. Override via the
11
+ * `STACKFACTOR_AGENT_MAX_MESSAGE_BYTES` env var if an even larger ceiling is
12
+ * needed. (-1 in gRPC-js means "unlimited", which we deliberately avoid so a
13
+ * runaway response can't exhaust memory.)
14
+ */
15
+ const MAX_MESSAGE_BYTES = (() => {
16
+ const fromEnv = Number(process.env.STACKFACTOR_AGENT_MAX_MESSAGE_BYTES);
17
+ return Number.isFinite(fromEnv) && fromEnv > 0 ? fromEnv : 64 * 1024 * 1024;
18
+ })();
19
+ /**
20
+ * Channel options applied to every agent gRPC client. Lifts the send/receive
21
+ * message-size caps off their 4 MiB defaults (see `MAX_MESSAGE_BYTES`).
22
+ */
23
+ const CHANNEL_OPTIONS = {
24
+ "grpc.max_receive_message_length": MAX_MESSAGE_BYTES,
25
+ "grpc.max_send_message_length": MAX_MESSAGE_BYTES,
26
+ };
4
27
  const safeParse = (value, fallback) => {
5
28
  if (!value)
6
29
  return fallback;
@@ -46,7 +69,7 @@ export const callAgent = (agentUrl, request, options = {}) => new Promise((resol
46
69
  const loaded = loadAgentPackage();
47
70
  const url = new URL(agentUrl);
48
71
  const address = `${url.hostname}:${url.port || "443"}`;
49
- const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken));
72
+ const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken), CHANNEL_OPTIONS);
50
73
  const stream = client.Execute(request, {
51
74
  deadline: Date.now() + (options.deadlineMs ?? DEFAULT_DEADLINE_MS),
52
75
  });
@@ -105,7 +128,7 @@ export const checkAgent = (agentUrl, options = {}) => new Promise((resolve, reje
105
128
  const loaded = loadAgentPackage();
106
129
  const url = new URL(agentUrl);
107
130
  const address = `${url.hostname}:${url.port || "443"}`;
108
- const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken));
131
+ const client = new loaded.stackfactor.agent.v1.Agent(address, buildCredentials(options.idToken), CHANNEL_OPTIONS);
109
132
  const request = {
110
133
  request_json: JSON.stringify({ authToken: options.authToken }),
111
134
  deep: !!options.deep,
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.2.4",
6
+ "version": "1.2.6",
7
7
  "description": "",
8
8
  "main": "dist/cjs/index.js",
9
9
  "module": "dist/esm/index.js",