managed-deepagents 0.9.6-dev.14 → 0.9.6-dev.15
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/README.md +953 -57
- package/dist/agent-auth.d.ts +1 -1
- package/dist/agent-auth.d.ts.map +1 -1
- package/dist/agent-auth.js +36 -12
- package/dist/agent-auth.js.map +1 -1
- package/dist/channels/actor.d.ts +43 -0
- package/dist/channels/actor.d.ts.map +1 -0
- package/dist/channels/actor.js +2 -0
- package/dist/channels/actor.js.map +1 -0
- package/dist/channels/assistant-text.d.ts +24 -0
- package/dist/channels/assistant-text.d.ts.map +1 -1
- package/dist/channels/assistant-text.js +65 -1
- package/dist/channels/assistant-text.js.map +1 -1
- package/dist/channels/binding.d.ts +20 -1
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +39 -10
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/delivery.d.ts +21 -0
- package/dist/channels/delivery.d.ts.map +1 -0
- package/dist/channels/delivery.js +196 -0
- package/dist/channels/delivery.js.map +1 -0
- package/dist/channels/github/connections.d.ts +11 -0
- package/dist/channels/github/connections.d.ts.map +1 -0
- package/dist/channels/github/connections.js +14 -0
- package/dist/channels/github/connections.js.map +1 -0
- package/dist/channels/github/index.d.ts +8 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +274 -0
- package/dist/channels/github/index.js.map +1 -0
- package/dist/channels/github/mentions.d.ts +12 -0
- package/dist/channels/github/mentions.d.ts.map +1 -0
- package/dist/channels/github/mentions.js +185 -0
- package/dist/channels/github/mentions.js.map +1 -0
- package/dist/channels/github/schema.d.ts +4165 -0
- package/dist/channels/github/schema.d.ts.map +1 -0
- package/dist/channels/github/schema.js +221 -0
- package/dist/channels/github/schema.js.map +1 -0
- package/dist/channels/github/types.d.ts +163 -0
- package/dist/channels/github/types.d.ts.map +1 -0
- package/dist/channels/github/types.js +2 -0
- package/dist/channels/github/types.js.map +1 -0
- package/dist/channels/http/endpoint.d.ts +95 -0
- package/dist/channels/http/endpoint.d.ts.map +1 -0
- package/dist/channels/http/endpoint.js +276 -0
- package/dist/channels/http/endpoint.js.map +1 -0
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +386 -65
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +2 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +14 -10
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +65 -5
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +149 -33
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +119 -0
- package/dist/channels/http/provider.d.ts.map +1 -0
- package/dist/channels/http/provider.js +227 -0
- package/dist/channels/http/provider.js.map +1 -0
- package/dist/channels/http/studio.d.ts +24 -0
- package/dist/channels/http/studio.d.ts.map +1 -0
- package/dist/channels/http/studio.js +95 -0
- package/dist/channels/http/studio.js.map +1 -0
- package/dist/channels/http/threads.d.ts +7 -0
- package/dist/channels/http/threads.d.ts.map +1 -0
- package/dist/channels/http/threads.js +10 -0
- package/dist/channels/http/threads.js.map +1 -0
- package/dist/channels/http/types.d.ts +143 -2
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/connections.d.ts +11 -0
- package/dist/channels/linear/connections.d.ts.map +1 -0
- package/dist/channels/linear/connections.js +14 -0
- package/dist/channels/linear/connections.js.map +1 -0
- package/dist/channels/linear/graphql.d.ts +57 -0
- package/dist/channels/linear/graphql.d.ts.map +1 -0
- package/dist/channels/linear/graphql.js +167 -0
- package/dist/channels/linear/graphql.js.map +1 -0
- package/dist/channels/linear/index.d.ts +9 -0
- package/dist/channels/linear/index.d.ts.map +1 -0
- package/dist/channels/linear/index.js +489 -0
- package/dist/channels/linear/index.js.map +1 -0
- package/dist/channels/linear/schema.d.ts +1050 -0
- package/dist/channels/linear/schema.d.ts.map +1 -0
- package/dist/channels/linear/schema.js +255 -0
- package/dist/channels/linear/schema.js.map +1 -0
- package/dist/channels/linear/types.d.ts +162 -0
- package/dist/channels/linear/types.d.ts.map +1 -0
- package/dist/channels/linear/types.js +2 -0
- package/dist/channels/linear/types.js.map +1 -0
- package/dist/channels/message-schema.d.ts +2 -0
- package/dist/channels/message-schema.d.ts.map +1 -1
- package/dist/channels/message-schema.js +4 -0
- package/dist/channels/message-schema.js.map +1 -1
- package/dist/channels/messaging-registry.d.ts +16 -0
- package/dist/channels/messaging-registry.d.ts.map +1 -1
- package/dist/channels/messaging-registry.js +29 -0
- package/dist/channels/messaging-registry.js.map +1 -1
- package/dist/channels/reserved-connections.d.ts +12 -0
- package/dist/channels/reserved-connections.d.ts.map +1 -0
- package/dist/channels/reserved-connections.js +55 -0
- package/dist/channels/reserved-connections.js.map +1 -0
- package/dist/channels/run-input.d.ts +71 -0
- package/dist/channels/run-input.d.ts.map +1 -0
- package/dist/channels/run-input.js +155 -0
- package/dist/channels/run-input.js.map +1 -0
- package/dist/channels/runtime.d.ts +1 -1
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +1 -1
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +1 -1
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +12 -23
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/api.d.ts +2 -0
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +6 -0
- package/dist/channels/slack/api.js.map +1 -1
- package/dist/channels/slack/connections.d.ts +6 -0
- package/dist/channels/slack/connections.d.ts.map +1 -0
- package/dist/channels/slack/connections.js +6 -0
- package/dist/channels/slack/connections.js.map +1 -0
- package/dist/channels/slack/events.d.ts +272 -0
- package/dist/channels/slack/events.d.ts.map +1 -0
- package/dist/channels/slack/events.js +235 -0
- package/dist/channels/slack/events.js.map +1 -0
- package/dist/channels/slack/files.d.ts.map +1 -1
- package/dist/channels/slack/files.js +2 -3
- package/dist/channels/slack/files.js.map +1 -1
- package/dist/channels/slack/index.d.ts +76 -2
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +177 -6
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/slack/message-content.d.ts.map +1 -1
- package/dist/channels/slack/message-content.js +23 -28
- package/dist/channels/slack/message-content.js.map +1 -1
- package/dist/channels/slack/status.d.ts +76 -0
- package/dist/channels/slack/status.d.ts.map +1 -0
- package/dist/channels/slack/status.js +427 -0
- package/dist/channels/slack/status.js.map +1 -0
- package/dist/channels/source-providers.js +1 -1
- package/dist/channels/source-providers.js.map +1 -1
- package/dist/channels/trigger/client.d.ts.map +1 -1
- package/dist/channels/trigger/client.js +6 -15
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/http.d.ts +114 -3
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +314 -82
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/identity-context.d.ts +1 -1
- package/dist/channels/trigger/identity-context.d.ts.map +1 -1
- package/dist/channels/trigger/identity-context.js +2 -3
- package/dist/channels/trigger/identity-context.js.map +1 -1
- package/dist/channels/trigger/ingress.d.ts +38 -1
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +49 -23
- package/dist/channels/trigger/ingress.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +82 -3
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js +36 -0
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +19 -3
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js +2 -0
- package/dist/channels/types.js.map +1 -1
- package/dist/connections.d.ts +31 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +108 -11
- package/dist/connections.js.map +1 -1
- package/dist/credential-gate.d.ts +2 -0
- package/dist/credential-gate.d.ts.map +1 -1
- package/dist/credential-gate.js +37 -3
- package/dist/credential-gate.js.map +1 -1
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +6 -0
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/identity/loopback.d.ts +2 -14
- package/dist/identity/loopback.d.ts.map +1 -1
- package/dist/identity/loopback.js +4 -25
- package/dist/identity/loopback.js.map +1 -1
- package/dist/identity/slack/links.js +3 -3
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ingress/index.d.ts +0 -8
- package/dist/ingress/index.d.ts.map +1 -1
- package/dist/ingress/index.js +2 -32
- package/dist/ingress/index.js.map +1 -1
- package/dist/ingress/loopback.js +4 -4
- package/dist/ingress/loopback.js.map +1 -1
- package/dist/ingress/runs.d.ts +74 -1
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +176 -16
- package/dist/ingress/runs.js.map +1 -1
- package/dist/managed-composition.d.ts.map +1 -1
- package/dist/managed-composition.js +8 -13
- package/dist/managed-composition.js.map +1 -1
- package/dist/memory/instructions-middleware.d.ts.map +1 -1
- package/dist/memory/instructions-middleware.js +5 -6
- package/dist/memory/instructions-middleware.js.map +1 -1
- package/dist/namespaces.d.ts +21 -21
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +4 -29
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +151 -21
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/channel-icon.d.ts +22 -0
- package/dist/runtime/channel-icon.d.ts.map +1 -0
- package/dist/runtime/channel-icon.js +70 -0
- package/dist/runtime/channel-icon.js.map +1 -0
- package/dist/runtime/channel.d.ts +6 -0
- package/dist/runtime/channel.d.ts.map +1 -1
- package/dist/runtime/channel.js.map +1 -1
- package/dist/runtime/http.d.ts +0 -15
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +0 -37
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/identity-http.d.ts +2 -0
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +40 -16
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +10 -0
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +22 -0
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +46 -47
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/log.d.ts +14 -8
- package/dist/runtime/log.d.ts.map +1 -1
- package/dist/runtime/log.js +7 -16
- package/dist/runtime/log.js.map +1 -1
- package/dist/runtime/managed-middleware.d.ts.map +1 -1
- package/dist/runtime/managed-middleware.js +14 -1
- package/dist/runtime/managed-middleware.js.map +1 -1
- package/dist/runtime/managed-thread.d.ts +60 -0
- package/dist/runtime/managed-thread.d.ts.map +1 -0
- package/dist/runtime/managed-thread.js +76 -0
- package/dist/runtime/managed-thread.js.map +1 -0
- package/dist/runtime/managed-tools.d.ts +10 -10
- package/dist/runtime/managed-tools.d.ts.map +1 -1
- package/dist/runtime/managed-tools.js +24 -24
- package/dist/runtime/managed-tools.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +11 -82
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +34 -173
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/memory/policy.d.ts.map +1 -1
- package/dist/runtime/memory/policy.js +1 -3
- package/dist/runtime/memory/policy.js.map +1 -1
- package/dist/runtime/run-input.d.ts +10 -0
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +47 -19
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +1 -1
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +9 -7
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +17 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +41 -3
- package/dist/runtime/schedule-auth.js.map +1 -1
- package/dist/runtime/selected-skills-backend.d.ts +3 -3
- package/dist/runtime/selected-skills-backend.d.ts.map +1 -1
- package/dist/runtime/selected-skills-backend.js +5 -5
- package/dist/runtime/selected-skills-backend.js.map +1 -1
- package/dist/runtime/thread-record.d.ts +81 -0
- package/dist/runtime/thread-record.d.ts.map +1 -0
- package/dist/runtime/thread-record.js +205 -0
- package/dist/runtime/thread-record.js.map +1 -0
- package/dist/runtime/types.d.ts +5 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime-schedules.d.ts +13 -0
- package/dist/runtime-schedules.d.ts.map +1 -1
- package/dist/runtime-schedules.js +86 -22
- package/dist/runtime-schedules.js.map +1 -1
- package/dist/sandbox.d.ts +0 -6
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +3 -7
- package/dist/sandbox.js.map +1 -1
- package/dist/schedule-channel.d.ts +5 -2
- package/dist/schedule-channel.d.ts.map +1 -1
- package/dist/schedule-channel.js +13 -12
- package/dist/schedule-channel.js.map +1 -1
- package/dist/telemetry/run-listener.d.ts +1 -1
- package/dist/telemetry/run-listener.d.ts.map +1 -1
- package/dist/telemetry/run-listener.js +2 -32
- package/dist/telemetry/run-listener.js.map +1 -1
- package/dist/telemetry/transport/posthog.d.ts +1 -13
- package/dist/telemetry/transport/posthog.d.ts.map +1 -1
- package/dist/telemetry/transport/posthog.js +30 -68
- package/dist/telemetry/transport/posthog.js.map +1 -1
- package/dist/values.d.ts +15 -0
- package/dist/values.d.ts.map +1 -0
- package/dist/values.js +31 -0
- package/dist/values.js.map +1 -0
- package/package.json +11 -11
- package/dist/concurrency/batch-processor.d.ts +0 -51
- package/dist/concurrency/batch-processor.d.ts.map +0 -1
- package/dist/concurrency/batch-processor.js +0 -99
- package/dist/concurrency/batch-processor.js.map +0 -1
- package/dist/resilience/retry.d.ts +0 -21
- package/dist/resilience/retry.d.ts.map +0 -1
- package/dist/resilience/retry.js +0 -40
- package/dist/resilience/retry.js.map +0 -1
- package/dist/runtime/graph-build-timing.d.ts +0 -30
- package/dist/runtime/graph-build-timing.d.ts.map +0 -1
- package/dist/runtime/graph-build-timing.js +0 -50
- package/dist/runtime/graph-build-timing.js.map +0 -1
- package/dist/telemetry/lifecycle.d.ts +0 -26
- package/dist/telemetry/lifecycle.d.ts.map +0 -1
- package/dist/telemetry/lifecycle.js +0 -49
- package/dist/telemetry/lifecycle.js.map +0 -1
- package/dist/telemetry/otel/context.d.ts +0 -57
- package/dist/telemetry/otel/context.d.ts.map +0 -1
- package/dist/telemetry/otel/context.js +0 -122
- package/dist/telemetry/otel/context.js.map +0 -1
- package/dist/telemetry/otel/exporter.d.ts +0 -53
- package/dist/telemetry/otel/exporter.d.ts.map +0 -1
- package/dist/telemetry/otel/exporter.js +0 -190
- package/dist/telemetry/otel/exporter.js.map +0 -1
- package/dist/telemetry/otel/index.d.ts +0 -6
- package/dist/telemetry/otel/index.d.ts.map +0 -1
- package/dist/telemetry/otel/index.js +0 -3
- package/dist/telemetry/otel/index.js.map +0 -1
- package/dist/telemetry/otel/otlp.d.ts +0 -44
- package/dist/telemetry/otel/otlp.d.ts.map +0 -1
- package/dist/telemetry/otel/otlp.js +0 -7
- package/dist/telemetry/otel/otlp.js.map +0 -1
- package/dist/telemetry/otel/truncate.d.ts +0 -10
- package/dist/telemetry/otel/truncate.d.ts.map +0 -1
- package/dist/telemetry/otel/truncate.js +0 -39
- package/dist/telemetry/otel/truncate.js.map +0 -1
|
@@ -1,34 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { withRetry } from "../../resilience/retry.js";
|
|
3
|
-
import { fetchWithTimeout, HttpStatusError, isRetryable, requestedDelayMs, } from "../../runtime/http.js";
|
|
4
|
-
import { onShutdown } from "../lifecycle.js";
|
|
1
|
+
import { fetchWithTimeout } from "../../runtime/http.js";
|
|
5
2
|
const POSTHOG_API_KEY_ENV = "MDA_POSTHOG_API_KEY";
|
|
6
3
|
const POSTHOG_HOST_ENV = "MDA_POSTHOG_HOST";
|
|
7
4
|
const DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com";
|
|
8
|
-
const
|
|
9
|
-
/**
|
|
10
|
-
const REQUEST_TIMEOUT_MS =
|
|
11
|
-
const MAX_BATCH_EVENTS = 100;
|
|
12
|
-
const BATCH_WAIT_MS = 1_000;
|
|
13
|
-
/** Events waiting to send; later ones are dropped. */
|
|
14
|
-
const MAX_QUEUED_EVENTS = 1_000;
|
|
15
|
-
/** 429 and 5xx (including timeouts and network failures) are tried again. */
|
|
16
|
-
const SEND_RETRY = {
|
|
17
|
-
maxAttempts: 5,
|
|
18
|
-
baseDelayMs: 1_000,
|
|
19
|
-
maxDelayMs: 30_000,
|
|
20
|
-
retryOn: isRetryable,
|
|
21
|
-
delayFor: requestedDelayMs,
|
|
22
|
-
};
|
|
5
|
+
const POSTHOG_CAPTURE_PATH = "/i/v0/e/";
|
|
6
|
+
/** A send is awaited at the end of a run, so it must not extend the wall clock. */
|
|
7
|
+
const REQUEST_TIMEOUT_MS = 1_000;
|
|
23
8
|
/** Public write-only key: submission only, and already in every released binary. */
|
|
24
9
|
const DEFAULT_POSTHOG_API_KEY = "phc_C6RmkdQQ3kWHgj6o7kby3aP6dbewjpLzfanw9WcmU65V";
|
|
25
10
|
function nonempty(value) {
|
|
26
11
|
const trimmed = value?.trim();
|
|
27
12
|
return trimmed ? trimmed : undefined;
|
|
28
13
|
}
|
|
29
|
-
/** `new URL` alone accepts `ftp:`/`file:`. Python's `
|
|
30
|
-
function
|
|
31
|
-
const url = new URL(`${host.replace(/\/+$/, "")}${
|
|
14
|
+
/** `new URL` alone accepts `ftp:`/`file:`. Python's `capture_url` rejects them. */
|
|
15
|
+
function captureUrl(host) {
|
|
16
|
+
const url = new URL(`${host.replace(/\/+$/, "")}${POSTHOG_CAPTURE_PATH}`);
|
|
32
17
|
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
33
18
|
throw new Error("PostHog host must be a valid URL");
|
|
34
19
|
}
|
|
@@ -44,63 +29,45 @@ export function resolvePosthogConfig(env, bakedApiKey = DEFAULT_POSTHOG_API_KEY)
|
|
|
44
29
|
host: nonempty(env[POSTHOG_HOST_ENV]) ?? DEFAULT_POSTHOG_HOST,
|
|
45
30
|
};
|
|
46
31
|
}
|
|
47
|
-
/**
|
|
48
|
-
* Sends events to PostHog in the background, in batches. `send` only queues
|
|
49
|
-
* the event, so delivery never delays a run.
|
|
50
|
-
*/
|
|
51
32
|
export class PosthogTransport {
|
|
52
33
|
apiKey;
|
|
53
|
-
|
|
34
|
+
captureUrl;
|
|
54
35
|
fetchImpl;
|
|
55
|
-
processor;
|
|
56
36
|
constructor(options) {
|
|
57
37
|
if (!options.apiKey) {
|
|
58
38
|
throw new Error("PostHog project ingestion key is required");
|
|
59
39
|
}
|
|
60
40
|
this.apiKey = options.apiKey;
|
|
61
|
-
this.
|
|
41
|
+
this.captureUrl = captureUrl(options.host ?? DEFAULT_POSTHOG_HOST);
|
|
62
42
|
this.fetchImpl = options.fetch ?? fetch;
|
|
63
|
-
this.processor = new BatchProcessor({
|
|
64
|
-
handle: withRetry((batch, signal) => this.post(batch, signal), options.retry ?? SEND_RETRY),
|
|
65
|
-
maxBatchSize: MAX_BATCH_EVENTS,
|
|
66
|
-
maxWaitMs: options.maxWaitMs ?? BATCH_WAIT_MS,
|
|
67
|
-
maxQueued: MAX_QUEUED_EVENTS,
|
|
68
|
-
});
|
|
69
43
|
}
|
|
70
44
|
async send(event) {
|
|
71
|
-
this.
|
|
72
|
-
}
|
|
73
|
-
/** Refuse new events and drain what is queued until `deadlineMs`. */
|
|
74
|
-
shutdown(deadlineMs) {
|
|
75
|
-
return this.processor.shutdown(deadlineMs);
|
|
76
|
-
}
|
|
77
|
-
async post(batch, signal) {
|
|
78
|
-
const response = await fetchWithTimeout(this.batchUrl.toString(), {
|
|
45
|
+
const response = await fetchWithTimeout(this.captureUrl.toString(), {
|
|
79
46
|
method: "POST",
|
|
80
47
|
headers: { "content-type": "application/json" },
|
|
81
48
|
body: JSON.stringify({
|
|
82
49
|
api_key: this.apiKey,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
$geoip_disable: true,
|
|
95
|
-
...event,
|
|
96
|
-
},
|
|
97
|
-
})),
|
|
50
|
+
event: event.event_type,
|
|
51
|
+
distinct_id: event.distinct_id,
|
|
52
|
+
timestamp: event.created_at,
|
|
53
|
+
properties: {
|
|
54
|
+
// The subject is an organization, and the request leaves our
|
|
55
|
+
// infrastructure rather than the customer's, so a person profile
|
|
56
|
+
// and a geoip lookup would both describe the wrong thing.
|
|
57
|
+
$process_person_profile: false,
|
|
58
|
+
$geoip_disable: true,
|
|
59
|
+
...event,
|
|
60
|
+
},
|
|
98
61
|
}),
|
|
99
|
-
signal,
|
|
100
62
|
}, REQUEST_TIMEOUT_MS, this.fetchImpl);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
63
|
+
try {
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
throw new Error(`PostHog rejected analytics event: ${response.status}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
await response.body?.cancel();
|
|
70
|
+
}
|
|
104
71
|
}
|
|
105
72
|
}
|
|
106
73
|
export function posthogTransport(env = process.env) {
|
|
@@ -109,12 +76,7 @@ export function posthogTransport(env = process.env) {
|
|
|
109
76
|
return undefined;
|
|
110
77
|
}
|
|
111
78
|
try {
|
|
112
|
-
|
|
113
|
-
apiKey: config.apiKey,
|
|
114
|
-
host: config.host,
|
|
115
|
-
});
|
|
116
|
-
onShutdown((ms) => transport.shutdown(ms));
|
|
117
|
-
return transport;
|
|
79
|
+
return new PosthogTransport({ apiKey: config.apiKey, host: config.host });
|
|
118
80
|
}
|
|
119
81
|
catch {
|
|
120
82
|
// A malformed host must not take the runtime down with it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/transport/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/transport/posthog.ts"],"names":[],"mappings":"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"}
|
package/dist/values.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Checks for values of unknown shape, such as a provider's JSON or run config. */
|
|
2
|
+
/** Whether a value is an object and not an array, as a JSON object is. */
|
|
3
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
4
|
+
/**
|
|
5
|
+
* Whether a value is a plain object, one an object literal or `JSON.parse`
|
|
6
|
+
* makes, rather than an instance of a class, such as a `Date` or a `Map`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
9
|
+
/** A value that is a string with more than whitespace in it, as it is; otherwise `undefined`. */
|
|
10
|
+
export declare function nonblankString(value: unknown): string | undefined;
|
|
11
|
+
/** A required string without its leading and trailing whitespace; blank throws, naming `label`. */
|
|
12
|
+
export declare function requireNonblank(value: string, label: string): string;
|
|
13
|
+
/** {@link nonblankString}, without its leading and trailing whitespace. */
|
|
14
|
+
export declare function trimmedString(value: unknown): string | undefined;
|
|
15
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIlC;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,mGAAmG;AACnG,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEhE"}
|
package/dist/values.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** Checks for values of unknown shape, such as a provider's JSON or run config. */
|
|
2
|
+
/** Whether a value is an object and not an array, as a JSON object is. */
|
|
3
|
+
export function isRecord(value) {
|
|
4
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Whether a value is a plain object, one an object literal or `JSON.parse`
|
|
8
|
+
* makes, rather than an instance of a class, such as a `Date` or a `Map`.
|
|
9
|
+
*/
|
|
10
|
+
export function isPlainObject(value) {
|
|
11
|
+
if (!isRecord(value))
|
|
12
|
+
return false;
|
|
13
|
+
const prototype = Object.getPrototypeOf(value);
|
|
14
|
+
return prototype === Object.prototype || prototype === null;
|
|
15
|
+
}
|
|
16
|
+
/** A value that is a string with more than whitespace in it, as it is; otherwise `undefined`. */
|
|
17
|
+
export function nonblankString(value) {
|
|
18
|
+
return typeof value === "string" && value.trim() ? value : undefined;
|
|
19
|
+
}
|
|
20
|
+
/** A required string without its leading and trailing whitespace; blank throws, naming `label`. */
|
|
21
|
+
export function requireNonblank(value, label) {
|
|
22
|
+
const trimmed = value.trim();
|
|
23
|
+
if (!trimmed)
|
|
24
|
+
throw new Error(`${label} must be a non-empty string`);
|
|
25
|
+
return trimmed;
|
|
26
|
+
}
|
|
27
|
+
/** {@link nonblankString}, without its leading and trailing whitespace. */
|
|
28
|
+
export function trimmedString(value) {
|
|
29
|
+
return nonblankString(value)?.trim();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,0EAA0E;AAC1E,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAa;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "managed-deepagents",
|
|
3
|
-
"version": "0.9.6-dev.
|
|
3
|
+
"version": "0.9.6-dev.15",
|
|
4
4
|
"description": "Managed Deep Agents — the `defineDeepAgent` authoring interface plus the CLI that compiles and deploys a code-first Deep Agent repository to a managed LangGraph runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"langchain",
|
|
@@ -52,30 +52,30 @@
|
|
|
52
52
|
"node": ">=22"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@langchain/core": "1.2.17",
|
|
55
|
+
"@langchain/core": "^1.2.17",
|
|
56
56
|
"@langchain/langgraph": "^1.4.18",
|
|
57
57
|
"@langchain/langgraph-sdk": "^1.12.2",
|
|
58
58
|
"@langchain/mcp-adapters": "^2.0.1",
|
|
59
59
|
"@standard-schema/spec": "^1.1.0",
|
|
60
|
-
"deepagents": "^1.
|
|
60
|
+
"deepagents": "^1.13.4",
|
|
61
61
|
"hono": "^4.13.7",
|
|
62
62
|
"jose": "^6.2.12",
|
|
63
|
-
"langchain": "1.5.
|
|
63
|
+
"langchain": "^1.5.12",
|
|
64
64
|
"langsmith": "^0.10.2",
|
|
65
65
|
"uuid": "^14.0.2",
|
|
66
66
|
"zod": "^4.6.2"
|
|
67
67
|
},
|
|
68
68
|
"optionalDependencies": {
|
|
69
|
-
"@langchain/managed-deepagents-darwin-arm64": "0.9.6-dev.
|
|
70
|
-
"@langchain/managed-deepagents-darwin-x64": "0.9.6-dev.
|
|
71
|
-
"@langchain/managed-deepagents-linux-arm64": "0.9.6-dev.
|
|
72
|
-
"@langchain/managed-deepagents-linux-x64": "0.9.6-dev.
|
|
73
|
-
"@langchain/managed-deepagents-win32-arm64": "0.9.6-dev.
|
|
74
|
-
"@langchain/managed-deepagents-win32-x64": "0.9.6-dev.
|
|
69
|
+
"@langchain/managed-deepagents-darwin-arm64": "0.9.6-dev.15",
|
|
70
|
+
"@langchain/managed-deepagents-darwin-x64": "0.9.6-dev.15",
|
|
71
|
+
"@langchain/managed-deepagents-linux-arm64": "0.9.6-dev.15",
|
|
72
|
+
"@langchain/managed-deepagents-linux-x64": "0.9.6-dev.15",
|
|
73
|
+
"@langchain/managed-deepagents-win32-arm64": "0.9.6-dev.15",
|
|
74
|
+
"@langchain/managed-deepagents-win32-x64": "0.9.6-dev.15"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@types/node": "^26.5.1",
|
|
78
|
-
"oxfmt": "^0.
|
|
78
|
+
"oxfmt": "^0.71.0",
|
|
79
79
|
"oxlint": "^1.82.0",
|
|
80
80
|
"typescript": "^7.0.2",
|
|
81
81
|
"vitest": "^5.0.0"
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Collects items pushed from anywhere in the process and hands them to
|
|
3
|
-
* `handle` in batches: when `maxBatchSize` items are waiting, or `maxWaitMs`
|
|
4
|
-
* after the first one arrived, or without the wait once `shutdown` starts. One batch is handled
|
|
5
|
-
* at a time; a rejected `handle` drops that batch. Compose `handle` (see
|
|
6
|
-
* `resilience/`) for retries, passing on its signal.
|
|
7
|
-
*
|
|
8
|
-
* The worker starts on the first push and stops when the queue is empty, and
|
|
9
|
-
* its timers never keep the process alive; only `shutdown` holds it open,
|
|
10
|
-
* until its deadline.
|
|
11
|
-
*/
|
|
12
|
-
export interface BatchProcessorOptions<T> {
|
|
13
|
-
/** `signal` aborts at the `shutdown` deadline. */
|
|
14
|
-
handle: (batch: T[], signal: AbortSignal) => Promise<void>;
|
|
15
|
-
maxBatchSize: number;
|
|
16
|
-
maxWaitMs: number;
|
|
17
|
-
/** Items pushed while this many are waiting are dropped. */
|
|
18
|
-
maxQueued: number;
|
|
19
|
-
/**
|
|
20
|
-
* With `sizeOf`, a batch also stops before it would pass this many bytes.
|
|
21
|
-
* A single larger item still goes, alone.
|
|
22
|
-
*/
|
|
23
|
-
maxBatchBytes?: number;
|
|
24
|
-
sizeOf?: (item: T) => number;
|
|
25
|
-
}
|
|
26
|
-
export declare class BatchProcessor<T> {
|
|
27
|
-
private readonly options;
|
|
28
|
-
private readonly queue;
|
|
29
|
-
/** The running worker; unset while the queue is empty. */
|
|
30
|
-
private worker;
|
|
31
|
-
private wake;
|
|
32
|
-
private closed;
|
|
33
|
-
private readonly deadline;
|
|
34
|
-
constructor(options: BatchProcessorOptions<T>);
|
|
35
|
-
/** Queue items without blocking or throwing. Returns how many were accepted. */
|
|
36
|
-
push(...items: T[]): number;
|
|
37
|
-
/** Resolves once everything pushed so far has been handled. */
|
|
38
|
-
idle(): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Drain: refuse new items and send what is queued, a batch at a time as
|
|
41
|
-
* usual but without the batch wait, retrying as `handle` does. At
|
|
42
|
-
* `deadlineMs` the request in flight is aborted and the rest is dropped.
|
|
43
|
-
*/
|
|
44
|
-
shutdown(deadlineMs: number): Promise<void>;
|
|
45
|
-
private run;
|
|
46
|
-
/** How many queued items fit the next batch. */
|
|
47
|
-
private nextBatchSize;
|
|
48
|
-
/** Resolves after `ms`, or as soon as a full batch is waiting. */
|
|
49
|
-
private waitUpTo;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=batch-processor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch-processor.d.ts","sourceRoot":"","sources":["../../src/concurrency/batch-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,kDAAkD;IAClD,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;CAC9B;AAED,qBAAa,cAAc,CAAC,CAAC;IAQf,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,0DAA0D;IAC1D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAElD,YAA6B,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAI;IAElE,gFAAgF;IAChF,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,MAAM,CAQ1B;IAED,+DAA+D;IAC/D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpB;IAED;;;;OAIG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAchD;YAEa,GAAG;IAiBjB,gDAAgD;IAChD,OAAO,CAAC,aAAa;IAcrB,kEAAkE;IAClE,OAAO,CAAC,QAAQ;CAcjB"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
export class BatchProcessor {
|
|
2
|
-
options;
|
|
3
|
-
queue = [];
|
|
4
|
-
/** The running worker; unset while the queue is empty. */
|
|
5
|
-
worker;
|
|
6
|
-
wake;
|
|
7
|
-
closed = false;
|
|
8
|
-
deadline = new AbortController();
|
|
9
|
-
constructor(options) {
|
|
10
|
-
this.options = options;
|
|
11
|
-
}
|
|
12
|
-
/** Queue items without blocking or throwing. Returns how many were accepted. */
|
|
13
|
-
push(...items) {
|
|
14
|
-
if (this.closed)
|
|
15
|
-
return 0;
|
|
16
|
-
const room = Math.max(this.options.maxQueued - this.queue.length, 0);
|
|
17
|
-
const accepted = items.slice(0, room);
|
|
18
|
-
this.queue.push(...accepted);
|
|
19
|
-
if (this.queue.length >= this.options.maxBatchSize)
|
|
20
|
-
this.wake?.();
|
|
21
|
-
if (!this.worker && this.queue.length > 0)
|
|
22
|
-
this.worker = this.run();
|
|
23
|
-
return accepted.length;
|
|
24
|
-
}
|
|
25
|
-
/** Resolves once everything pushed so far has been handled. */
|
|
26
|
-
idle() {
|
|
27
|
-
return this.worker ?? Promise.resolve();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Drain: refuse new items and send what is queued, a batch at a time as
|
|
31
|
-
* usual but without the batch wait, retrying as `handle` does. At
|
|
32
|
-
* `deadlineMs` the request in flight is aborted and the rest is dropped.
|
|
33
|
-
*/
|
|
34
|
-
async shutdown(deadlineMs) {
|
|
35
|
-
this.closed = true;
|
|
36
|
-
this.wake?.();
|
|
37
|
-
let timer;
|
|
38
|
-
const deadline = new Promise((resolve) => {
|
|
39
|
-
timer = setTimeout(resolve, deadlineMs);
|
|
40
|
-
});
|
|
41
|
-
try {
|
|
42
|
-
await Promise.race([this.idle(), deadline]);
|
|
43
|
-
}
|
|
44
|
-
finally {
|
|
45
|
-
clearTimeout(timer);
|
|
46
|
-
this.deadline.abort();
|
|
47
|
-
this.queue.length = 0;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async run() {
|
|
51
|
-
try {
|
|
52
|
-
while (this.queue.length > 0) {
|
|
53
|
-
if (this.queue.length < this.options.maxBatchSize && !this.closed) {
|
|
54
|
-
await this.waitUpTo(this.options.maxWaitMs);
|
|
55
|
-
}
|
|
56
|
-
const batch = this.queue.splice(0, this.nextBatchSize());
|
|
57
|
-
await this.options
|
|
58
|
-
.handle(batch, this.deadline.signal)
|
|
59
|
-
.catch(() => undefined);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
finally {
|
|
63
|
-
// Same tick as the empty-queue check, so a later push starts a new worker.
|
|
64
|
-
this.worker = undefined;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/** How many queued items fit the next batch. */
|
|
68
|
-
nextBatchSize() {
|
|
69
|
-
const { maxBatchSize, maxBatchBytes, sizeOf } = this.options;
|
|
70
|
-
const limit = Math.min(maxBatchSize, this.queue.length);
|
|
71
|
-
if (maxBatchBytes === undefined || !sizeOf)
|
|
72
|
-
return limit;
|
|
73
|
-
let count = 0;
|
|
74
|
-
let bytes = 0;
|
|
75
|
-
while (count < limit) {
|
|
76
|
-
bytes += sizeOf(this.queue[count]);
|
|
77
|
-
if (count > 0 && bytes > maxBatchBytes)
|
|
78
|
-
break;
|
|
79
|
-
count++;
|
|
80
|
-
}
|
|
81
|
-
return count;
|
|
82
|
-
}
|
|
83
|
-
/** Resolves after `ms`, or as soon as a full batch is waiting. */
|
|
84
|
-
waitUpTo(ms) {
|
|
85
|
-
return new Promise((resolve) => {
|
|
86
|
-
const timer = setTimeout(() => {
|
|
87
|
-
this.wake = undefined;
|
|
88
|
-
resolve();
|
|
89
|
-
}, ms);
|
|
90
|
-
timer.unref?.();
|
|
91
|
-
this.wake = () => {
|
|
92
|
-
clearTimeout(timer);
|
|
93
|
-
this.wake = undefined;
|
|
94
|
-
resolve();
|
|
95
|
-
};
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=batch-processor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch-processor.js","sourceRoot":"","sources":["../../src/concurrency/batch-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/** Retry a failing async call with jittered exponential backoff. */
|
|
2
|
-
export interface RetryPolicy {
|
|
3
|
-
maxAttempts: number;
|
|
4
|
-
baseDelayMs: number;
|
|
5
|
-
maxDelayMs: number;
|
|
6
|
-
/** Whether `error` is worth another attempt. */
|
|
7
|
-
retryOn: (error: unknown) => boolean;
|
|
8
|
-
/**
|
|
9
|
-
* A delay the error asks for, such as an HTTP `Retry-After`. Capped at
|
|
10
|
-
* `maxDelayMs`.
|
|
11
|
-
*/
|
|
12
|
-
delayFor?: (error: unknown) => number | undefined;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* `fn`, retried under `policy`. The last error is rethrown. Once `signal`
|
|
16
|
-
* aborts, a backoff in progress ends and no further attempt is made.
|
|
17
|
-
*/
|
|
18
|
-
export declare function withRetry<T, R>(fn: (arg: T, signal: AbortSignal) => Promise<R>, policy: RetryPolicy): (arg: T, signal: AbortSignal) => Promise<R>;
|
|
19
|
-
/** Full-range jitter over the upper half of the exponential step. */
|
|
20
|
-
export declare function backoffMs(attempt: number, { baseDelayMs, maxDelayMs }: Pick<RetryPolicy, "baseDelayMs" | "maxDelayMs">): number;
|
|
21
|
-
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/resilience/retry.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CACnD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAC5B,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/C,MAAM,EAAE,WAAW,GAClB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAwB7C;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,CAAC,GAC3E,MAAM,CAGR"}
|
package/dist/resilience/retry.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `fn`, retried under `policy`. The last error is rethrown. Once `signal`
|
|
3
|
-
* aborts, a backoff in progress ends and no further attempt is made.
|
|
4
|
-
*/
|
|
5
|
-
export function withRetry(fn, policy) {
|
|
6
|
-
return async (arg, signal) => {
|
|
7
|
-
for (let attempt = 1;; attempt++) {
|
|
8
|
-
try {
|
|
9
|
-
return await fn(arg, signal);
|
|
10
|
-
}
|
|
11
|
-
catch (error) {
|
|
12
|
-
if (attempt >= policy.maxAttempts ||
|
|
13
|
-
!policy.retryOn(error) ||
|
|
14
|
-
signal.aborted) {
|
|
15
|
-
throw error;
|
|
16
|
-
}
|
|
17
|
-
await sleep(Math.min(policy.delayFor?.(error) ?? backoffMs(attempt, policy), policy.maxDelayMs), signal);
|
|
18
|
-
if (signal.aborted)
|
|
19
|
-
throw error;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
/** Full-range jitter over the upper half of the exponential step. */
|
|
25
|
-
export function backoffMs(attempt, { baseDelayMs, maxDelayMs }) {
|
|
26
|
-
const ceiling = Math.min(maxDelayMs, baseDelayMs * 2 ** (attempt - 1));
|
|
27
|
-
return ceiling / 2 + Math.random() * (ceiling / 2);
|
|
28
|
-
}
|
|
29
|
-
/** Resolves after `ms`, or as soon as `signal` aborts. */
|
|
30
|
-
function sleep(ms, signal) {
|
|
31
|
-
return new Promise((resolve) => {
|
|
32
|
-
const onAbort = () => resolve();
|
|
33
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
34
|
-
setTimeout(() => {
|
|
35
|
-
signal.removeEventListener("abort", onAbort);
|
|
36
|
-
resolve();
|
|
37
|
-
}, ms).unref?.();
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=retry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/resilience/retry.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,EAA+C,EAC/C,MAAmB;IAEnB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAC3B,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IACE,OAAO,IAAI,MAAM,CAAC,WAAW;oBAC7B,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;oBACtB,MAAM,CAAC,OAAO,EACd,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,CACT,IAAI,CAAC,GAAG,CACN,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EACtD,MAAM,CAAC,UAAU,CAClB,EACD,MAAM,CACP,CAAC;gBACF,IAAI,MAAM,CAAC,OAAO;oBAAE,MAAM,KAAK,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,SAAS,CACvB,OAAe,EACf,EAAE,WAAW,EAAE,UAAU,EAAmD;IAE5E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,OAAO,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,0DAA0D;AAC1D,SAAS,KAAK,CAAC,EAAU,EAAE,MAAmB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export type GraphBuildPhase = "factory" | "context" | "skills" | "instructions" | "connectors" | "create_deep_agent";
|
|
2
|
-
export type GraphBuildKind = "run" | "read";
|
|
3
|
-
/** What the agent graph is built from. */
|
|
4
|
-
export type GraphBuildSizes = {
|
|
5
|
-
tools: number;
|
|
6
|
-
middleware: number;
|
|
7
|
-
subagents: number;
|
|
8
|
-
};
|
|
9
|
-
/** Wall time of each managed phase, from construction to {@link log}. */
|
|
10
|
-
export declare class GraphBuildTiming {
|
|
11
|
-
private readonly clock;
|
|
12
|
-
private readonly started;
|
|
13
|
-
private readonly phases;
|
|
14
|
-
private sizes;
|
|
15
|
-
constructor(clock?: () => number);
|
|
16
|
-
/**
|
|
17
|
-
* Return what `run` settles to and add the time it took to `name`.
|
|
18
|
-
*
|
|
19
|
-
* Phases may overlap: connector tools load while the context opens.
|
|
20
|
-
*/
|
|
21
|
-
phase<T>(name: GraphBuildPhase, run: () => T | Promise<T>): Promise<T>;
|
|
22
|
-
/** Record what the agent graph is built from. */
|
|
23
|
-
setSizes(sizes: GraphBuildSizes): void;
|
|
24
|
-
/** Write the total, each phase in the order it first finished, and the sizes. */
|
|
25
|
-
log({ kind, runId, }: {
|
|
26
|
-
kind: GraphBuildKind;
|
|
27
|
-
runId: string | undefined;
|
|
28
|
-
}): void;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=graph-build-timing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-build-timing.d.ts","sourceRoot":"","sources":["../../src/runtime/graph-build-timing.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,mBAAmB,CAAC;AACxB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAC5C,0CAA0C;AAC1C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,yEAAyE;AACzE,qBAAa,gBAAgB;IAKf,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,KAAK,CAA8B;IAE3C,YAA6B,KAAK,GAAE,MAAM,MAAgC,EAEzE;IAED;;;;OAIG;IACG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAU3E;IAED,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAErC;IAED,iFAAiF;IACjF,GAAG,CAAC,EACF,IAAI,EACJ,KAAK,GACN,EAAE;QACD,IAAI,EAAE,cAAc,CAAC;QACrB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,GAAG,IAAI,CAuBP;CACF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { logger } from "./log.js";
|
|
2
|
-
/** Wall time of each managed phase, from construction to {@link log}. */
|
|
3
|
-
export class GraphBuildTiming {
|
|
4
|
-
clock;
|
|
5
|
-
started;
|
|
6
|
-
phases = new Map();
|
|
7
|
-
sizes;
|
|
8
|
-
constructor(clock = () => performance.now()) {
|
|
9
|
-
this.clock = clock;
|
|
10
|
-
this.started = clock();
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Return what `run` settles to and add the time it took to `name`.
|
|
14
|
-
*
|
|
15
|
-
* Phases may overlap: connector tools load while the context opens.
|
|
16
|
-
*/
|
|
17
|
-
async phase(name, run) {
|
|
18
|
-
const started = this.clock();
|
|
19
|
-
try {
|
|
20
|
-
return await run();
|
|
21
|
-
}
|
|
22
|
-
finally {
|
|
23
|
-
this.phases.set(name, (this.phases.get(name) ?? 0) + this.clock() - started);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/** Record what the agent graph is built from. */
|
|
27
|
-
setSizes(sizes) {
|
|
28
|
-
this.sizes = sizes;
|
|
29
|
-
}
|
|
30
|
-
/** Write the total, each phase in the order it first finished, and the sizes. */
|
|
31
|
-
log({ kind, runId, }) {
|
|
32
|
-
const totalMs = Math.round(this.clock() - this.started);
|
|
33
|
-
const scope = runId === undefined
|
|
34
|
-
? `kind=${kind}`
|
|
35
|
-
: `kind=${kind}, run_id=${logger.logIdentifier(runId)}`;
|
|
36
|
-
const parts = [
|
|
37
|
-
...[...this.phases].map(([name, ms]) => `${name}=${Math.round(ms)}ms`),
|
|
38
|
-
...Object.entries(this.sizes ?? {}).map(([name, count]) => `${name}=${count}`),
|
|
39
|
-
].join(" ");
|
|
40
|
-
const attributes = {
|
|
41
|
-
"mda.graph_build.kind": kind,
|
|
42
|
-
"mda.graph_build.total_ms": totalMs,
|
|
43
|
-
};
|
|
44
|
-
for (const [name, ms] of this.phases) {
|
|
45
|
-
attributes[`mda.graph_build.${name}_ms`] = Math.round(ms);
|
|
46
|
-
}
|
|
47
|
-
logger.info(`graph build took ${totalMs}ms (${scope})${parts ? `: ${parts}` : ""}`, attributes);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=graph-build-timing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-build-timing.js","sourceRoot":"","sources":["../../src/runtime/graph-build-timing.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAiBlC,yEAAyE;AACzE,MAAM,OAAO,gBAAgB;IAKE,KAAK;IAJjB,OAAO,CAAS;IAChB,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IACrD,KAAK,CAA8B;IAE3C,YAA6B,KAAK,GAAiB,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;qBAA7C,KAAK;QAChC,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAI,IAAqB,EAAE,GAAyB;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,IAAI,EACJ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,QAAQ,CAAC,KAAsB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,iFAAiF;IACjF,GAAG,CAAC,EACF,IAAI,EACJ,KAAK,GAIN;QACC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,KAAK,GACT,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,QAAQ,IAAI,EAAE;YAChB,CAAC,CAAC,QAAQ,IAAI,YAAY,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG;YACZ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;YACtE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CACrC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CACtC;SACF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,UAAU,GAAkB;YAChC,sBAAsB,EAAE,IAAI;YAC5B,0BAA0B,EAAE,OAAO;SACpC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,UAAU,CAAC,mBAAmB,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,CAAC,IAAI,CACT,oBAAoB,OAAO,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EACtE,UAAU,CACX,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Process shutdown for the telemetry sinks. Each sink registers a drain; on
|
|
3
|
-
* exit or SIGTERM/SIGINT they run in parallel under one shared deadline.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* How long the drains get. Kubernetes allows 30s between SIGTERM and SIGKILL
|
|
7
|
-
* by default (`terminationGracePeriodSeconds`), and the server's own drain uses
|
|
8
|
-
* part of it; 5s fits alongside and matches Fluent Bit's default `Grace`.
|
|
9
|
-
*/
|
|
10
|
-
export declare const SHUTDOWN_DEADLINE_MS = 5000;
|
|
11
|
-
/** Sends what a sink holds, giving up after `deadlineMs`. */
|
|
12
|
-
export type Drain = (deadlineMs: number) => Promise<void>;
|
|
13
|
-
/** The parts of `process` the hooks use, so tests can pass their own. */
|
|
14
|
-
export interface ShutdownProcess {
|
|
15
|
-
readonly pid: number;
|
|
16
|
-
once(event: "beforeExit" | NodeJS.Signals, listener: () => void): unknown;
|
|
17
|
-
listenerCount(event: NodeJS.Signals): number;
|
|
18
|
-
kill(pid: number, signal: NodeJS.Signals): unknown;
|
|
19
|
-
}
|
|
20
|
-
/** Run `drain` at shutdown. The first registration installs the hooks. */
|
|
21
|
-
export declare function onShutdown(drain: Drain, target?: ShutdownProcess): void;
|
|
22
|
-
/** Drain every registered sink in parallel. Runs once; later calls share it. */
|
|
23
|
-
export declare function shutdownTelemetry(deadlineMs?: number): Promise<void>;
|
|
24
|
-
/** @internal Forget registrations and hooks between tests. */
|
|
25
|
-
export declare function resetShutdownForTests(): void;
|
|
26
|
-
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/telemetry/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAE1C,6DAA6D;AAC7D,MAAM,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1D,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IAC1E,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;IAC7C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;CACpD;AAQD,0EAA0E;AAC1E,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,eAAyB,GAChC,IAAI,CAoBN;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,UAAU,GAAE,MAA6B,GACxC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
|