@mastra/client-js 1.56.0-alpha.3 → 1.56.0-alpha.5
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/client.d.ts +2 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/docs/SKILL.md +2 -2
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-harness-agent-controller.md +1 -1
- package/dist/docs/references/reference-client-js-agent-controller.md +2 -0
- package/dist/docs/references/reference-client-js-observability.md +121 -6
- package/dist/docs/references/{reference-observability-tracing-trace-query.md → reference-observability-tracing-advanced-queries.md} +477 -158
- package/dist/index.cjs +81 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +81 -7
- package/dist/index.js.map +1 -1
- package/dist/resources/agent-controller.d.ts +11 -0
- package/dist/resources/agent-controller.d.ts.map +1 -1
- package/dist/resources/base.d.ts.map +1 -1
- package/dist/resources/observability.d.ts +9 -7
- package/dist/resources/observability.d.ts.map +1 -1
- package/dist/route-types.generated.d.ts +81 -16
- package/dist/route-types.generated.d.ts.map +1 -1
- package/dist/utils/ai-sdk-v4/process-data-stream.d.ts +1 -1
- package/dist/utils/ai-sdk-v4/process-data-stream.d.ts.map +1 -1
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +8 -9
package/dist/index.cjs
CHANGED
|
@@ -400,6 +400,16 @@ function isTerminalHttpError(error) {
|
|
|
400
400
|
return typeof status === "number" && (status >= 400 && status < 500 || status === 501);
|
|
401
401
|
}
|
|
402
402
|
/**
|
|
403
|
+
* Whether an error is the server's trace query execution timeout (504 with code
|
|
404
|
+
* `TRACE_QUERY_EXECUTION_TIMEOUT`). Re-sending the same query hits the same
|
|
405
|
+
* timeout budget, so retrying only repeats an expensive database query.
|
|
406
|
+
* Plain 504s from proxies or gateways do not carry this code and stay retryable.
|
|
407
|
+
*/
|
|
408
|
+
function isTraceQueryTimeoutError(error) {
|
|
409
|
+
const { status, body } = error ?? {};
|
|
410
|
+
return status === 504 && body?.code === "TRACE_QUERY_EXECUTION_TIMEOUT";
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
403
413
|
* Whether a failed resubscribe should end a long-lived subscription instead of
|
|
404
414
|
* retrying. Like {@link isTerminalHttpError}, but 408 Request Timeout and
|
|
405
415
|
* 429 Too Many Requests stay retryable because they mean "try again later".
|
|
@@ -1218,7 +1228,7 @@ var BaseResource = class {
|
|
|
1218
1228
|
} catch (error) {
|
|
1219
1229
|
lastError = error;
|
|
1220
1230
|
if (signal?.aborted || error?.name === "AbortError") throw error;
|
|
1221
|
-
if (isTerminalHttpError(error)) throw error;
|
|
1231
|
+
if (isTerminalHttpError(error) || isTraceQueryTimeoutError(error)) throw error;
|
|
1222
1232
|
if (attempt === retries) break;
|
|
1223
1233
|
await new Promise((resolve, reject) => {
|
|
1224
1234
|
const timer = setTimeout(() => {
|
|
@@ -5150,10 +5160,10 @@ var Observability = class extends BaseResource {
|
|
|
5150
5160
|
});
|
|
5151
5161
|
}
|
|
5152
5162
|
/**
|
|
5153
|
-
* Queries thread
|
|
5163
|
+
* Queries full-history thread rows using a trace or thread activity window.
|
|
5154
5164
|
*
|
|
5155
|
-
* @param params - Thread query with its
|
|
5156
|
-
* @returns Matching thread
|
|
5165
|
+
* @param params - Thread query with its qualification window, filters and pagination
|
|
5166
|
+
* @returns Matching thread rows. Legacy requests retain their identity-only response.
|
|
5157
5167
|
*/
|
|
5158
5168
|
queryTraceThreads(params) {
|
|
5159
5169
|
return this.request("/observability/threads/query", {
|
|
@@ -6805,10 +6815,12 @@ var AgentControllerSession = class extends BaseResource {
|
|
|
6805
6815
|
delayMs: finiteOr(options.reconnect.delayMs, 1e3),
|
|
6806
6816
|
maxDelayMs: finiteOr(options.reconnect.maxDelayMs, 3e4)
|
|
6807
6817
|
} : null;
|
|
6818
|
+
const idleTimeoutMs = finiteOr(options.idleTimeoutMs, 6e4);
|
|
6808
6819
|
/** Exponential backoff for the Nth (1-based) retry of an outage streak. */
|
|
6809
6820
|
const backoffDelay = (attempt) => reconnectOptions ? Math.min(reconnectOptions.delayMs * 2 ** (attempt - 1), reconnectOptions.maxDelayMs) : 0;
|
|
6810
6821
|
let cancelled = false;
|
|
6811
6822
|
let currentReader = null;
|
|
6823
|
+
let currentAbort = null;
|
|
6812
6824
|
let reconnectTimer;
|
|
6813
6825
|
let delayResolve;
|
|
6814
6826
|
const settleDelay = () => {
|
|
@@ -6824,8 +6836,39 @@ var AgentControllerSession = class extends BaseResource {
|
|
|
6824
6836
|
delayResolve = resolve;
|
|
6825
6837
|
reconnectTimer = setTimeout(settleDelay, ms);
|
|
6826
6838
|
});
|
|
6839
|
+
const idleTimeoutError = () => {
|
|
6840
|
+
const error = /* @__PURE__ */ new Error(`Agent controller session stream received no data for ${idleTimeoutMs}ms`);
|
|
6841
|
+
error.name = "AgentControllerStreamIdleError";
|
|
6842
|
+
return error;
|
|
6843
|
+
};
|
|
6827
6844
|
const requestStream = async () => {
|
|
6828
|
-
const
|
|
6845
|
+
const abort = new AbortController();
|
|
6846
|
+
currentAbort = abort;
|
|
6847
|
+
let openTimer;
|
|
6848
|
+
const request = this.request(this.url(`${this.base()}/stream`), {
|
|
6849
|
+
stream: true,
|
|
6850
|
+
signal: abort.signal
|
|
6851
|
+
});
|
|
6852
|
+
request.then((response) => {
|
|
6853
|
+
if (abort.signal.aborted) response.body?.cancel().catch(() => {});
|
|
6854
|
+
}).catch(() => {});
|
|
6855
|
+
let response;
|
|
6856
|
+
try {
|
|
6857
|
+
if (idleTimeoutMs > 0) response = await Promise.race([request, new Promise((_resolve, reject) => {
|
|
6858
|
+
openTimer = setTimeout(() => {
|
|
6859
|
+
const error = idleTimeoutError();
|
|
6860
|
+
abort.abort(error);
|
|
6861
|
+
reject(error);
|
|
6862
|
+
}, idleTimeoutMs);
|
|
6863
|
+
})]);
|
|
6864
|
+
else response = await request;
|
|
6865
|
+
} finally {
|
|
6866
|
+
clearTimeout(openTimer);
|
|
6867
|
+
}
|
|
6868
|
+
if (abort.signal.aborted) {
|
|
6869
|
+
response.body?.cancel().catch(() => {});
|
|
6870
|
+
throw abort.signal.reason;
|
|
6871
|
+
}
|
|
6829
6872
|
if (!response.body) throw new Error("No response body for agent controller session stream");
|
|
6830
6873
|
return response;
|
|
6831
6874
|
};
|
|
@@ -6851,12 +6894,40 @@ var AgentControllerSession = class extends BaseResource {
|
|
|
6851
6894
|
const pump = async (response) => {
|
|
6852
6895
|
const reader = response.body.getReader();
|
|
6853
6896
|
currentReader = reader;
|
|
6897
|
+
const abort = currentAbort;
|
|
6854
6898
|
const decoder = new TextDecoder();
|
|
6855
6899
|
let buffer = "";
|
|
6900
|
+
let idleTimer;
|
|
6901
|
+
let timedOut = false;
|
|
6902
|
+
const armIdleTimer = () => {
|
|
6903
|
+
if (idleTimeoutMs <= 0) return;
|
|
6904
|
+
clearTimeout(idleTimer);
|
|
6905
|
+
idleTimer = setTimeout(() => {
|
|
6906
|
+
timedOut = true;
|
|
6907
|
+
reader.cancel(idleTimeoutError()).catch(() => {});
|
|
6908
|
+
abort?.abort(idleTimeoutError());
|
|
6909
|
+
}, idleTimeoutMs);
|
|
6910
|
+
};
|
|
6856
6911
|
try {
|
|
6912
|
+
armIdleTimer();
|
|
6857
6913
|
while (!cancelled) {
|
|
6858
|
-
|
|
6914
|
+
let chunk;
|
|
6915
|
+
try {
|
|
6916
|
+
chunk = await reader.read();
|
|
6917
|
+
} catch (error) {
|
|
6918
|
+
if (timedOut && !cancelled) return {
|
|
6919
|
+
kind: "transport_error",
|
|
6920
|
+
error: idleTimeoutError()
|
|
6921
|
+
};
|
|
6922
|
+
throw error;
|
|
6923
|
+
}
|
|
6924
|
+
if (timedOut && !cancelled) return {
|
|
6925
|
+
kind: "transport_error",
|
|
6926
|
+
error: idleTimeoutError()
|
|
6927
|
+
};
|
|
6928
|
+
const { done, value } = chunk;
|
|
6859
6929
|
if (done) return cancelled ? { kind: "cancelled" } : { kind: "done" };
|
|
6930
|
+
armIdleTimer();
|
|
6860
6931
|
if (cancelled) return { kind: "cancelled" };
|
|
6861
6932
|
buffer += decoder.decode(value, { stream: true });
|
|
6862
6933
|
let separator;
|
|
@@ -6890,7 +6961,9 @@ var AgentControllerSession = class extends BaseResource {
|
|
|
6890
6961
|
error
|
|
6891
6962
|
};
|
|
6892
6963
|
} finally {
|
|
6964
|
+
clearTimeout(idleTimer);
|
|
6893
6965
|
if (currentReader === reader) currentReader = null;
|
|
6966
|
+
if (currentAbort === abort) currentAbort = null;
|
|
6894
6967
|
reader.cancel().catch(() => {});
|
|
6895
6968
|
}
|
|
6896
6969
|
};
|
|
@@ -6967,6 +7040,7 @@ var AgentControllerSession = class extends BaseResource {
|
|
|
6967
7040
|
cancelled = true;
|
|
6968
7041
|
settleDelay();
|
|
6969
7042
|
currentReader?.cancel().catch(() => {});
|
|
7043
|
+
currentAbort?.abort();
|
|
6970
7044
|
} };
|
|
6971
7045
|
}
|
|
6972
7046
|
/**
|
|
@@ -7873,7 +7947,7 @@ var MastraClient = class extends BaseResource {
|
|
|
7873
7947
|
getTraceQueryValues(params, options) {
|
|
7874
7948
|
return this.observability.getTraceQueryValues(params, options);
|
|
7875
7949
|
}
|
|
7876
|
-
/** Queries thread
|
|
7950
|
+
/** Queries full-history thread rows using a trace or thread activity window. */
|
|
7877
7951
|
queryTraceThreads(params) {
|
|
7878
7952
|
return this.observability.queryTraceThreads(params);
|
|
7879
7953
|
}
|