managed-deepagents 0.9.6-dev.2 → 0.9.6-dev.21
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 +1075 -37
- 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/browser.d.ts +37 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +31 -0
- package/dist/browser.js.map +1 -0
- package/dist/channels/actor.d.ts +57 -0
- package/dist/channels/actor.d.ts.map +1 -0
- package/dist/channels/actor.js +24 -0
- package/dist/channels/actor.js.map +1 -0
- package/dist/channels/assistant-text.d.ts +29 -0
- package/dist/channels/assistant-text.d.ts.map +1 -1
- package/dist/channels/assistant-text.js +72 -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 +44 -11
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/delivery.d.ts +51 -0
- package/dist/channels/delivery.d.ts.map +1 -0
- package/dist/channels/delivery.js +424 -0
- package/dist/channels/delivery.js.map +1 -0
- package/dist/channels/github/app-setup.d.ts +32 -0
- package/dist/channels/github/app-setup.d.ts.map +1 -0
- package/dist/channels/github/app-setup.js +146 -0
- package/dist/channels/github/app-setup.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 +12 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +266 -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 +170 -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 +137 -0
- package/dist/channels/http/endpoint.d.ts.map +1 -0
- package/dist/channels/http/endpoint.js +286 -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 +439 -65
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +8 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +35 -16
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +67 -5
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +155 -43
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +125 -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 +166 -2
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/app-setup.d.ts +29 -0
- package/dist/channels/linear/app-setup.d.ts.map +1 -0
- package/dist/channels/linear/app-setup.js +102 -0
- package/dist/channels/linear/app-setup.js.map +1 -0
- 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 +13 -0
- package/dist/channels/linear/index.d.ts.map +1 -0
- package/dist/channels/linear/index.js +457 -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 +169 -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/resolve-user-endpoint.d.ts +34 -0
- package/dist/channels/resolve-user-endpoint.d.ts.map +1 -0
- package/dist/channels/resolve-user-endpoint.js +51 -0
- package/dist/channels/resolve-user-endpoint.js.map +1 -0
- package/dist/channels/resolve-user.d.ts +95 -0
- package/dist/channels/resolve-user.d.ts.map +1 -0
- package/dist/channels/resolve-user.js +143 -0
- package/dist/channels/resolve-user.js.map +1 -0
- package/dist/channels/run-input.d.ts +88 -0
- package/dist/channels/run-input.d.ts.map +1 -0
- package/dist/channels/run-input.js +177 -0
- package/dist/channels/run-input.js.map +1 -0
- package/dist/channels/runtime.d.ts +5 -2
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +19 -10
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +2 -13
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +6 -73
- 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 +278 -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 +90 -2
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +188 -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 +9 -15
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/conversation.d.ts +11 -0
- package/dist/channels/trigger/conversation.d.ts.map +1 -0
- package/dist/channels/trigger/conversation.js +72 -0
- package/dist/channels/trigger/conversation.js.map +1 -0
- package/dist/channels/trigger/http.d.ts +130 -4
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +408 -78
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/identity-context.d.ts.map +1 -1
- package/dist/channels/trigger/identity-context.js +2 -5
- package/dist/channels/trigger/identity-context.js.map +1 -1
- package/dist/channels/trigger/ingress.d.ts +70 -1
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +135 -21
- package/dist/channels/trigger/ingress.js.map +1 -1
- package/dist/channels/trigger/transport.d.ts +10 -0
- package/dist/channels/trigger/transport.d.ts.map +1 -1
- package/dist/channels/trigger/transport.js +25 -9
- package/dist/channels/trigger/transport.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +92 -3
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js +37 -0
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +53 -4
- 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 +36 -12
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +125 -30
- 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 +2 -2
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +53 -2
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +3 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/loopback.d.ts +1 -1
- package/dist/identity/loopback.d.ts.map +1 -1
- package/dist/identity/loopback.js +3 -2
- package/dist/identity/loopback.js.map +1 -1
- package/dist/identity/options.d.ts +9 -0
- package/dist/identity/options.d.ts.map +1 -1
- package/dist/identity/options.js +1 -1
- package/dist/identity/options.js.map +1 -1
- package/dist/identity/slack/links.js +3 -2
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/identity/types.d.ts +3 -0
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +19 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/ingress/loopback.d.ts +1 -0
- package/dist/ingress/loopback.d.ts.map +1 -1
- package/dist/ingress/loopback.js +7 -3
- 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 +184 -9
- package/dist/ingress/runs.js.map +1 -1
- package/dist/managed-composition.d.ts +3 -0
- package/dist/managed-composition.d.ts.map +1 -1
- package/dist/managed-composition.js +29 -13
- package/dist/managed-composition.js.map +1 -1
- package/dist/namespaces.d.ts +25 -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/async-subagents.d.ts +27 -0
- package/dist/runtime/async-subagents.d.ts.map +1 -0
- package/dist/runtime/async-subagents.js +139 -0
- package/dist/runtime/async-subagents.js.map +1 -0
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +177 -8
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +7 -0
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +32 -7
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/browser-facade.d.ts +10 -0
- package/dist/runtime/browser-facade.d.ts.map +1 -0
- package/dist/runtime/browser-facade.js +23 -0
- package/dist/runtime/browser-facade.js.map +1 -0
- package/dist/runtime/browser-langsmith.d.ts +143 -0
- package/dist/runtime/browser-langsmith.d.ts.map +1 -0
- package/dist/runtime/browser-langsmith.js +508 -0
- package/dist/runtime/browser-langsmith.js.map +1 -0
- package/dist/runtime/browser-recorder.py +831 -0
- package/dist/runtime/browser-selection.d.ts +10 -0
- package/dist/runtime/browser-selection.d.ts.map +1 -0
- package/dist/runtime/browser-selection.js +21 -0
- package/dist/runtime/browser-selection.js.map +1 -0
- package/dist/runtime/browser.d.ts +128 -0
- package/dist/runtime/browser.d.ts.map +1 -0
- package/dist/runtime/browser.js +795 -0
- package/dist/runtime/browser.js.map +1 -0
- 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 +81 -0
- package/dist/runtime/channel-icon.js.map +1 -0
- package/dist/runtime/channel.d.ts +11 -0
- package/dist/runtime/channel.d.ts.map +1 -1
- package/dist/runtime/channel.js.map +1 -1
- package/dist/runtime/graph-build-timing.d.ts +30 -0
- package/dist/runtime/graph-build-timing.d.ts.map +1 -0
- package/dist/runtime/graph-build-timing.js +50 -0
- package/dist/runtime/graph-build-timing.js.map +1 -0
- 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 +38 -2
- 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 +38 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +97 -43
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/langsmith-env.d.ts +19 -0
- package/dist/runtime/langsmith-env.d.ts.map +1 -0
- package/dist/runtime/langsmith-env.js +38 -0
- package/dist/runtime/langsmith-env.js.map +1 -0
- package/dist/runtime/managed-thread.d.ts +61 -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 -2
- package/dist/runtime/managed-tools.d.ts.map +1 -1
- package/dist/runtime/managed-tools.js +10 -8
- package/dist/runtime/managed-tools.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/parent-run.d.ts +33 -0
- package/dist/runtime/parent-run.d.ts.map +1 -0
- package/dist/runtime/parent-run.js +114 -0
- package/dist/runtime/parent-run.js.map +1 -0
- package/dist/runtime/run-input.d.ts +14 -1
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +100 -7
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +15 -2
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +40 -18
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +79 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +165 -7
- package/dist/runtime/schedule-auth.js.map +1 -1
- package/dist/runtime/static-entry.d.ts.map +1 -1
- package/dist/runtime/static-entry.js +1 -0
- package/dist/runtime/static-entry.js.map +1 -1
- package/dist/runtime/thread-record.d.ts +88 -0
- package/dist/runtime/thread-record.d.ts.map +1 -0
- package/dist/runtime/thread-record.js +213 -0
- package/dist/runtime/thread-record.js.map +1 -0
- package/dist/runtime/types.d.ts +12 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime-schedules.d.ts +15 -0
- package/dist/runtime-schedules.d.ts.map +1 -1
- package/dist/runtime-schedules.js +83 -20
- 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/metadata.d.ts.map +1 -1
- package/dist/telemetry/metadata.js +4 -4
- package/dist/telemetry/metadata.js.map +1 -1
- package/dist/telemetry/otel/exporter.d.ts.map +1 -1
- package/dist/telemetry/otel/exporter.js +3 -3
- package/dist/telemetry/otel/exporter.js.map +1 -1
- package/dist/types.d.ts +19 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.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 +26 -12
package/dist/ingress/runs.js
CHANGED
|
@@ -1,25 +1,197 @@
|
|
|
1
1
|
import { ChannelError } from "../channels/errors.js";
|
|
2
|
+
import { nextThreadRecord, parseThreadRecord, storesThreadRecord, threadRecordMetadata, } from "../runtime/thread-record.js";
|
|
2
3
|
import { currentLogContext, setLogAttributes, TRACE_ID_METADATA_KEY, } from "../telemetry/otel/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Every {@link MultitaskStrategy}, for channels that check one, by name.
|
|
6
|
+
* LangGraph exports the strategies as a type only, so this is keyed by that
|
|
7
|
+
* type: it stops compiling when LangGraph adds or drops one.
|
|
8
|
+
*/
|
|
9
|
+
export const MULTITASK_STRATEGIES = {
|
|
10
|
+
enqueue: "enqueue",
|
|
11
|
+
interrupt: "interrupt",
|
|
12
|
+
rollback: "rollback",
|
|
13
|
+
reject: "reject",
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Whether a run didn't start because a run started on its thread meanwhile
|
|
17
|
+
* and `reject` leaves the thread to it.
|
|
18
|
+
*/
|
|
19
|
+
export function rejectedAsBusy(strategy, error) {
|
|
20
|
+
return strategy === "reject" && lookupStatus(error) === 409;
|
|
21
|
+
}
|
|
22
|
+
/** Run metadata naming the provider delivery that started the run. */
|
|
23
|
+
export const DELIVERY_KEY_METADATA = "mda_delivery_key";
|
|
24
|
+
/**
|
|
25
|
+
* Thread metadata listing the thread's latest deliveries. `rollback` deletes
|
|
26
|
+
* the runs it cancels, with their metadata, but keeps the thread's.
|
|
27
|
+
*/
|
|
28
|
+
export const DELIVERY_KEYS_METADATA = "mda_delivery_keys";
|
|
29
|
+
/** How many of a thread's latest runs are checked for a repeated delivery. */
|
|
30
|
+
const DELIVERY_LOOKBACK_RUNS = 100;
|
|
31
|
+
/** The delivery keys recorded on a thread. */
|
|
32
|
+
function threadDeliveryKeys(metadata) {
|
|
33
|
+
const keys = metadata && typeof metadata === "object"
|
|
34
|
+
? metadata[DELIVERY_KEYS_METADATA]
|
|
35
|
+
: undefined;
|
|
36
|
+
return Array.isArray(keys)
|
|
37
|
+
? keys.filter((key) => typeof key === "string")
|
|
38
|
+
: [];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Record a delivery on its thread, so a redelivery stays a duplicate after
|
|
42
|
+
* `rollback` deleted the run it started. Keeps the latest
|
|
43
|
+
* `DELIVERY_LOOKBACK_RUNS` keys.
|
|
44
|
+
*/
|
|
45
|
+
export async function recordThreadDelivery(client, threadId, deliveryKey) {
|
|
46
|
+
const thread = await client.threads.get(threadId);
|
|
47
|
+
const keys = threadDeliveryKeys(thread.metadata).filter((key) => key !== deliveryKey);
|
|
48
|
+
keys.push(deliveryKey);
|
|
49
|
+
await client.threads.update(threadId, {
|
|
50
|
+
metadata: { [DELIVERY_KEYS_METADATA]: keys.slice(-DELIVERY_LOOKBACK_RUNS) },
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Record the event's channel and sender on the thread before its run starts:
|
|
55
|
+
* the Agent Server copies thread metadata into a run when it creates one.
|
|
56
|
+
* Two events at once may each miss the other's sender; the sender's next
|
|
57
|
+
* event adds them again.
|
|
58
|
+
*/
|
|
59
|
+
async function recordThreadOrigin(client, threadId, metadata, origin) {
|
|
60
|
+
const next = nextThreadRecord(parseThreadRecord(metadata), origin.binding, origin.senderId);
|
|
61
|
+
if (storesThreadRecord(metadata, next))
|
|
62
|
+
return;
|
|
63
|
+
await client.threads.update(threadId, {
|
|
64
|
+
metadata: threadRecordMetadata(next),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export async function ingressThreadState(client, threadId, deliveryKey) {
|
|
68
|
+
let thread;
|
|
69
|
+
try {
|
|
70
|
+
thread = await client.threads.get(threadId);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (lookupStatus(error) === 404)
|
|
74
|
+
return { state: "ready", interrupts: [] };
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
const assistant = thread.metadata
|
|
78
|
+
?.assistant_id;
|
|
79
|
+
const interrupts = Object.values(thread.interrupts ?? {}).flat();
|
|
80
|
+
const read = {
|
|
81
|
+
...(typeof assistant === "string" && { assistantId: assistant }),
|
|
82
|
+
interrupts,
|
|
83
|
+
};
|
|
84
|
+
if (deliveryKey !== undefined) {
|
|
85
|
+
if (threadDeliveryKeys(thread.metadata).includes(deliveryKey))
|
|
86
|
+
return { state: "duplicate", ...read };
|
|
87
|
+
const runs = await client.runs.list(threadId, {
|
|
88
|
+
limit: DELIVERY_LOOKBACK_RUNS,
|
|
89
|
+
});
|
|
90
|
+
if (runs.some((run) => run.metadata?.[DELIVERY_KEY_METADATA] === deliveryKey))
|
|
91
|
+
return { state: "duplicate", ...read };
|
|
92
|
+
}
|
|
93
|
+
// Only pending interrupts wait on a decision: a cancelled run leaves the
|
|
94
|
+
// thread `interrupted` with nothing to answer.
|
|
95
|
+
if (interrupts.length)
|
|
96
|
+
return { state: "paused", ...read };
|
|
97
|
+
return { state: thread.status === "busy" ? "busy" : "ready", ...read };
|
|
98
|
+
}
|
|
99
|
+
/** How many of a thread's latest runs are checked for active ones. */
|
|
100
|
+
const ACTIVE_LOOKBACK_RUNS = 20;
|
|
101
|
+
/** Wait until none of the thread's runs is queued or running. */
|
|
102
|
+
export async function waitForIdleThread(client, threadId) {
|
|
103
|
+
for (;;) {
|
|
104
|
+
const runs = await client.runs.list(threadId, {
|
|
105
|
+
limit: ACTIVE_LOOKBACK_RUNS,
|
|
106
|
+
});
|
|
107
|
+
// Newest first, so the last active run is the one that runs next.
|
|
108
|
+
const active = runs.filter((run) => run.status === "pending" || run.status === "running");
|
|
109
|
+
const next = active.at(-1);
|
|
110
|
+
if (!next)
|
|
111
|
+
return;
|
|
112
|
+
await client.runs.join(threadId, next.run_id);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Cancel the thread's queued and running runs, keeping their progress.
|
|
117
|
+
* Returns the IDs of the runs it cancelled; a missing thread has none.
|
|
118
|
+
*/
|
|
119
|
+
export async function cancelIngressRuns(client, threadId) {
|
|
120
|
+
let runs;
|
|
121
|
+
try {
|
|
122
|
+
runs = await client.runs.list(threadId, { limit: ACTIVE_LOOKBACK_RUNS });
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (lookupStatus(error) === 404)
|
|
126
|
+
return [];
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
const active = runs.filter((run) => run.status === "pending" || run.status === "running");
|
|
130
|
+
const cancelled = await Promise.all(active.map(async (run) => {
|
|
131
|
+
try {
|
|
132
|
+
await client.runs.cancel(threadId, run.run_id, false, "interrupt");
|
|
133
|
+
return run.run_id;
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// The run finished meanwhile.
|
|
137
|
+
const status = lookupStatus(error);
|
|
138
|
+
if (status === 404 || status === 409)
|
|
139
|
+
return undefined;
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}));
|
|
143
|
+
return cancelled.filter((runId) => runId !== undefined);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* HTTP status behind a failed loopback read.
|
|
147
|
+
*
|
|
148
|
+
* `AsyncCaller.fetch` rejects with the raw `Response`, so the status is usually
|
|
149
|
+
* on the thrown value itself; wrapped clients expose it under `response`.
|
|
150
|
+
*/
|
|
151
|
+
export function lookupStatus(error) {
|
|
152
|
+
if (typeof error !== "object" || error === null)
|
|
153
|
+
return undefined;
|
|
154
|
+
const direct = error.status;
|
|
155
|
+
if (typeof direct === "number")
|
|
156
|
+
return direct;
|
|
157
|
+
const response = error.response;
|
|
158
|
+
if (typeof response !== "object" || response === null)
|
|
159
|
+
return undefined;
|
|
160
|
+
const nested = response.status;
|
|
161
|
+
return typeof nested === "number" ? nested : undefined;
|
|
162
|
+
}
|
|
3
163
|
/** Create the addressed thread and enqueue a run without waiting for its result. */
|
|
4
164
|
export async function startIngressRun(client, input) {
|
|
5
|
-
|
|
165
|
+
const origin = input.threadOrigin;
|
|
166
|
+
// An existing thread ignores the metadata and comes back with its own.
|
|
167
|
+
const thread = await client.threads.create({
|
|
6
168
|
threadId: input.threadId,
|
|
7
169
|
ifExists: "do_nothing",
|
|
170
|
+
...(origin && {
|
|
171
|
+
metadata: threadRecordMetadata(nextThreadRecord(null, origin.binding, origin.senderId)),
|
|
172
|
+
}),
|
|
8
173
|
});
|
|
174
|
+
if (origin)
|
|
175
|
+
await recordThreadOrigin(client, input.threadId, thread?.metadata, origin);
|
|
9
176
|
const run = await client.runs.create(input.threadId, input.assistantId, {
|
|
10
|
-
input: { messages: input.messages },
|
|
11
|
-
...
|
|
177
|
+
input: { ...input.state, messages: input.messages },
|
|
178
|
+
...runMetadata(input.metadata),
|
|
179
|
+
...(input.webhook !== undefined ? { webhook: input.webhook } : {}),
|
|
12
180
|
...(input.config !== undefined ? { config: input.config } : {}),
|
|
13
181
|
...(input.context !== undefined ? { context: input.context } : {}),
|
|
14
|
-
multitaskStrategy: "enqueue",
|
|
182
|
+
multitaskStrategy: input.multitaskStrategy ?? "enqueue",
|
|
15
183
|
});
|
|
16
184
|
return startedRun(input.threadId, run.run_id);
|
|
17
185
|
}
|
|
18
186
|
/** Enqueue a keyed interrupt response on an existing thread. */
|
|
19
187
|
export async function resumeIngressRun(client, input) {
|
|
188
|
+
if (input.threadOrigin) {
|
|
189
|
+
const thread = await client.threads.get(input.threadId);
|
|
190
|
+
await recordThreadOrigin(client, input.threadId, thread.metadata, input.threadOrigin);
|
|
191
|
+
}
|
|
20
192
|
const run = await client.runs.create(input.threadId, input.assistantId, {
|
|
21
193
|
command: { resume: input.resume },
|
|
22
|
-
...
|
|
194
|
+
...runMetadata(),
|
|
23
195
|
...(input.config !== undefined ? { config: input.config } : {}),
|
|
24
196
|
...(input.context !== undefined ? { context: input.context } : {}),
|
|
25
197
|
multitaskStrategy: "enqueue",
|
|
@@ -34,12 +206,15 @@ export async function observeIngressRun(client, input) {
|
|
|
34
206
|
return { values, status: run.status };
|
|
35
207
|
}
|
|
36
208
|
/**
|
|
37
|
-
*
|
|
38
|
-
* run metadata into the run's
|
|
209
|
+
* A run's metadata: the caller's, plus the current log context's trace id
|
|
210
|
+
* when there is one. The Agent Server merges run metadata into the run's
|
|
211
|
+
* `config.metadata`.
|
|
39
212
|
*/
|
|
40
|
-
function
|
|
213
|
+
function runMetadata(metadata) {
|
|
41
214
|
const traceId = currentLogContext()?.traceId;
|
|
42
|
-
|
|
215
|
+
if (!traceId)
|
|
216
|
+
return metadata !== undefined ? { metadata } : {};
|
|
217
|
+
return { metadata: { ...metadata, [TRACE_ID_METADATA_KEY]: traceId } };
|
|
43
218
|
}
|
|
44
219
|
function startedRun(threadId, runId) {
|
|
45
220
|
if (typeof runId !== "string" || !runId.trim()) {
|
package/dist/ingress/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/ingress/runs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/ingress/runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { DefineDeepAgentConfig, McpSelection, SkillSelection } from "./types.js";
|
|
2
|
+
import { type BrowserDefinition } from "./browser.js";
|
|
2
3
|
import type { SandboxDefinition } from "./sandbox.js";
|
|
3
4
|
import type { MemoryDefinition } from "./memory/types.js";
|
|
4
5
|
export declare const DYNAMIC_MEMORY_ALLOW_ERROR = "Dynamically selected memory cannot use `allow`. Select memory layers or return null from the dynamic agent resolver instead.";
|
|
5
6
|
/** Validate a run-selected managed sandbox definition. */
|
|
6
7
|
export declare function snapshotSandboxSelection(value: unknown): SandboxDefinition | null;
|
|
8
|
+
/** Validate a run-selected managed browser definition. */
|
|
9
|
+
export declare function snapshotBrowserSelection(value: unknown): BrowserDefinition | null;
|
|
7
10
|
/** Validate and snapshot dynamic MCP definitions. */
|
|
8
11
|
export declare function snapshotMcpSelection(value: unknown): McpSelection;
|
|
9
12
|
/** Validate and snapshot a memory definition selected for a run. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-composition.d.ts","sourceRoot":"","sources":["../src/managed-composition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAErB,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"managed-composition.d.ts","sourceRoot":"","sources":["../src/managed-composition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAErB,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAGxE,eAAO,MAAM,0BAA0B,iIACyF,CAAC;AAmCjI,0DAA0D;AAC1D,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,GACb,iBAAiB,GAAG,IAAI,CAgB1B;AAED,0DAA0D;AAC1D,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,GACb,iBAAiB,GAAG,IAAI,CAS1B;AAED,qDAAqD;AACrD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAejE;AAED,oEAAoE;AACpE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,gBAAgB,CAAC,KAAK,CAAC,CAiBzB;AAED,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAC9B,IAAI,CAIN;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBlE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAqB1D;AAyCD,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA4BrE;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CACxC,OAAO,SAAS,qBAAqB,EACrC,MAAM,EAAE,OAAO,GAAG,OAAO,CA8D1B"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
+
import { defineBrowser, } from "./browser.js";
|
|
1
2
|
import { isConnector } from "./runtime/connector.js";
|
|
2
3
|
import { normalizeMemoryLayers } from "./memory/layers.js";
|
|
4
|
+
import { isPlainObject } from "./values.js";
|
|
3
5
|
export const DYNAMIC_MEMORY_ALLOW_ERROR = "Dynamically selected memory cannot use `allow`. Select memory layers or return null from the dynamic agent resolver instead.";
|
|
4
6
|
const SKILL_NAME = /^[a-z][a-z0-9-]{0,63}$/;
|
|
5
7
|
const SKILL_FILE_SEGMENT = /^[A-Za-z0-9._-]+$/;
|
|
6
|
-
function isPlainRecord(value) {
|
|
7
|
-
if (value === null || typeof value !== "object")
|
|
8
|
-
return false;
|
|
9
|
-
const prototype = Object.getPrototypeOf(value);
|
|
10
|
-
return prototype === Object.prototype || prototype === null;
|
|
11
|
-
}
|
|
12
8
|
function isMcpServersDefinition(value) {
|
|
13
9
|
return isConnector(value) && value.kind === "mcp_servers";
|
|
14
10
|
}
|
|
@@ -22,7 +18,7 @@ function snapshotSandboxValue(value, copies) {
|
|
|
22
18
|
copy.push(...value.map((item) => snapshotSandboxValue(item, copies)));
|
|
23
19
|
return Object.freeze(copy);
|
|
24
20
|
}
|
|
25
|
-
if (!
|
|
21
|
+
if (!isPlainObject(value))
|
|
26
22
|
return value;
|
|
27
23
|
const existing = copies.get(value);
|
|
28
24
|
if (existing !== undefined)
|
|
@@ -38,9 +34,9 @@ function snapshotSandboxValue(value, copies) {
|
|
|
38
34
|
export function snapshotSandboxSelection(value) {
|
|
39
35
|
if (value === null)
|
|
40
36
|
return null;
|
|
41
|
-
if (!
|
|
37
|
+
if (!isPlainObject(value) ||
|
|
42
38
|
value.kind !== "sandbox" ||
|
|
43
|
-
!
|
|
39
|
+
!isPlainObject(value.options)) {
|
|
44
40
|
throw new TypeError("sandbox must be a SandboxDefinition or null");
|
|
45
41
|
}
|
|
46
42
|
return Object.freeze({
|
|
@@ -48,6 +44,18 @@ export function snapshotSandboxSelection(value) {
|
|
|
48
44
|
options: snapshotSandboxValue(value.options, new WeakMap()),
|
|
49
45
|
});
|
|
50
46
|
}
|
|
47
|
+
/** Validate a run-selected managed browser definition. */
|
|
48
|
+
export function snapshotBrowserSelection(value) {
|
|
49
|
+
if (value === null)
|
|
50
|
+
return null;
|
|
51
|
+
if (!isPlainObject(value) || value.kind !== "browser") {
|
|
52
|
+
throw new TypeError("browser must be a BrowserDefinition or null");
|
|
53
|
+
}
|
|
54
|
+
return defineBrowser({
|
|
55
|
+
scope: value.scope,
|
|
56
|
+
idleTtlSeconds: value.idleTtlSeconds,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
51
59
|
/** Validate and snapshot dynamic MCP definitions. */
|
|
52
60
|
export function snapshotMcpSelection(value) {
|
|
53
61
|
if (!Array.isArray(value)) {
|
|
@@ -67,9 +75,9 @@ export function snapshotMcpSelection(value) {
|
|
|
67
75
|
}
|
|
68
76
|
/** Validate and snapshot a memory definition selected for a run. */
|
|
69
77
|
export function snapshotMemorySelection(value) {
|
|
70
|
-
if (!
|
|
78
|
+
if (!isPlainObject(value) ||
|
|
71
79
|
value.kind !== "memory" ||
|
|
72
|
-
!
|
|
80
|
+
!isPlainObject(value.config) ||
|
|
73
81
|
value.config.version !== 2 ||
|
|
74
82
|
!Array.isArray(value.config.scope)) {
|
|
75
83
|
throw new TypeError("memory must be created with defineMemory(...)");
|
|
@@ -134,7 +142,7 @@ function copyGeneratedSkill(value) {
|
|
|
134
142
|
}
|
|
135
143
|
let files;
|
|
136
144
|
if ("files" in value) {
|
|
137
|
-
if (!
|
|
145
|
+
if (!isPlainObject(value.files)) {
|
|
138
146
|
throw new TypeError("skills files must be a mapping of text files");
|
|
139
147
|
}
|
|
140
148
|
const entries = Object.entries(value.files);
|
|
@@ -160,7 +168,7 @@ export function snapshotSkillSelection(value) {
|
|
|
160
168
|
for (const item of value) {
|
|
161
169
|
const skill = typeof item === "string"
|
|
162
170
|
? item
|
|
163
|
-
:
|
|
171
|
+
: isPlainObject(item)
|
|
164
172
|
? copyGeneratedSkill(item)
|
|
165
173
|
: null;
|
|
166
174
|
if (skill === null) {
|
|
@@ -223,6 +231,14 @@ export function snapshotManagedComposition(config) {
|
|
|
223
231
|
selected.sandbox = snapshotSandboxSelection(provided.sandbox);
|
|
224
232
|
}
|
|
225
233
|
}
|
|
234
|
+
if ("browser" in provided) {
|
|
235
|
+
if (provided.browser === undefined) {
|
|
236
|
+
omitted.push("browser");
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
selected.browser = snapshotBrowserSelection(provided.browser);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
226
242
|
if ("skills" in provided) {
|
|
227
243
|
if (provided.skills === undefined) {
|
|
228
244
|
omitted.push("skills");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-composition.js","sourceRoot":"","sources":["../src/managed-composition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"managed-composition.js","sourceRoot":"","sources":["../src/managed-composition.ts"],"names":[],"mappings":"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"}
|
package/dist/namespaces.d.ts
CHANGED
|
@@ -15,36 +15,24 @@
|
|
|
15
15
|
* These are the only primitives the managed runtime will mount. A project
|
|
16
16
|
* cannot contribute its own — `defineExtension` stays internal.
|
|
17
17
|
*/
|
|
18
|
+
import { githubChannel } from "./channels/github/index.js";
|
|
19
|
+
import { linearChannel } from "./channels/linear/index.js";
|
|
18
20
|
import { httpChannel } from "./channels/http/index.js";
|
|
19
21
|
import { slackChannel } from "./channels/slack/index.js";
|
|
20
|
-
import { defineMcp } from "./connectors/mcp/index.js";
|
|
21
22
|
export { auth } from "./identity/index.js";
|
|
22
|
-
/** @internal */
|
|
23
|
-
export declare const CONNECTORS_MCP_DEPRECATION = "connectors.mcp(...) is deprecated; use defineMcp(...) instead. It will be removed in 0.8.0.";
|
|
24
|
-
/**
|
|
25
|
-
* @deprecated Use {@link defineMcp} instead. The `connectors` namespace will
|
|
26
|
-
* be removed in 0.8.0.
|
|
27
|
-
*
|
|
28
|
-
* Docs live on this interface so IDE hover on `connectors.mcp` stays useful.
|
|
29
|
-
*/
|
|
30
|
-
export interface Connectors {
|
|
31
|
-
/**
|
|
32
|
-
* @deprecated Use {@link defineMcp} instead. `connectors.mcp` will be removed
|
|
33
|
-
* in 0.8.0.
|
|
34
|
-
*/
|
|
35
|
-
mcp: typeof defineMcp;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* @deprecated Use {@link defineMcp} instead. The `connectors` namespace will
|
|
39
|
-
* be removed in 0.8.0.
|
|
40
|
-
*/
|
|
41
|
-
export declare const connectors: Connectors;
|
|
42
23
|
/**
|
|
43
24
|
* Inbound messaging surfaces. Exported from `channels/*`.
|
|
44
25
|
*
|
|
45
26
|
* Docs live on this interface so IDE hover on `channels.<name>` stays useful.
|
|
46
27
|
*/
|
|
47
28
|
export interface Channels {
|
|
29
|
+
/**
|
|
30
|
+
* GitHub App events: `onEvent` handlers start runs with what they return
|
|
31
|
+
* (as `agent.invoke` takes it; null/undefined skips).
|
|
32
|
+
*
|
|
33
|
+
* @experimental The GitHub channel may change in a minor release.
|
|
34
|
+
*/
|
|
35
|
+
github: typeof githubChannel;
|
|
48
36
|
/**
|
|
49
37
|
* Declare a provider http as a managed channel.
|
|
50
38
|
*
|
|
@@ -52,6 +40,22 @@ export interface Channels {
|
|
|
52
40
|
* owns caller handoff, thread selection, agent invocation, and auto-reply.
|
|
53
41
|
*/
|
|
54
42
|
http: typeof httpChannel;
|
|
43
|
+
/**
|
|
44
|
+
* Linear app webhooks: `onEvent` handlers start runs with what they return
|
|
45
|
+
* (as `agent.invoke` takes it; null/undefined skips), one conversation per
|
|
46
|
+
* issue, and the run's reply is posted as a comment on the issue.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* export const channel = channels.linear({
|
|
51
|
+
* app: { teams: ["ENG"] },
|
|
52
|
+
* onEvent: { "Issue.create": (e) => `Triage ${e.payload.data.identifier}` },
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @experimental The Linear channel may change in a minor release.
|
|
57
|
+
*/
|
|
58
|
+
linear: typeof linearChannel;
|
|
55
59
|
/**
|
|
56
60
|
* Slack ingress through Trigger Server and deploy requirements.
|
|
57
61
|
*
|
package/dist/namespaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;OAKG;IACH,MAAM,EAAE,OAAO,aAAa,CAAC;IAC7B;;;;;OAKG;IACH,IAAI,EAAE,OAAO,WAAW,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,OAAO,aAAa,CAAC;IAC7B;;;;;;;;;;;;;;OAcG;IACH,KAAK,EAAE,OAAO,YAAY,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,QAKtB,CAAC"}
|
package/dist/namespaces.js
CHANGED
|
@@ -15,43 +15,18 @@
|
|
|
15
15
|
* These are the only primitives the managed runtime will mount. A project
|
|
16
16
|
* cannot contribute its own — `defineExtension` stays internal.
|
|
17
17
|
*/
|
|
18
|
+
import { githubChannel } from "./channels/github/index.js";
|
|
19
|
+
import { linearChannel } from "./channels/linear/index.js";
|
|
18
20
|
import { httpChannel } from "./channels/http/index.js";
|
|
19
21
|
import { slackChannel } from "./channels/slack/index.js";
|
|
20
|
-
import { defineMcp } from "./connectors/mcp/index.js";
|
|
21
22
|
export { auth } from "./identity/index.js";
|
|
22
|
-
/** @internal */
|
|
23
|
-
export const CONNECTORS_MCP_DEPRECATION = "connectors.mcp(...) is deprecated; use defineMcp(...) instead. It will be removed in 0.8.0.";
|
|
24
|
-
function emitConnectorsMcpDeprecation() {
|
|
25
|
-
if (typeof process !== "undefined" &&
|
|
26
|
-
typeof process.emitWarning === "function") {
|
|
27
|
-
process.emitWarning(CONNECTORS_MCP_DEPRECATION, {
|
|
28
|
-
type: "DeprecationWarning",
|
|
29
|
-
code: "MDA_CONNECTORS_MCP",
|
|
30
|
-
});
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
console.warn(CONNECTORS_MCP_DEPRECATION);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* @deprecated Use {@link defineMcp} instead. `connectors.mcp` will be removed
|
|
37
|
-
* in 0.8.0.
|
|
38
|
-
*/
|
|
39
|
-
function deprecatedMcp(config) {
|
|
40
|
-
emitConnectorsMcpDeprecation();
|
|
41
|
-
return defineMcp(config);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* @deprecated Use {@link defineMcp} instead. The `connectors` namespace will
|
|
45
|
-
* be removed in 0.8.0.
|
|
46
|
-
*/
|
|
47
|
-
export const connectors = {
|
|
48
|
-
mcp: deprecatedMcp,
|
|
49
|
-
};
|
|
50
23
|
/**
|
|
51
24
|
* Inbound messaging surfaces. Factories are assigned by reference so signatures
|
|
52
25
|
* stay in step with the channel modules. Hover docs come from {@link Channels}.
|
|
53
26
|
*/
|
|
54
27
|
export const channels = {
|
|
28
|
+
github: githubChannel,
|
|
29
|
+
linear: linearChannel,
|
|
55
30
|
slack: slackChannel,
|
|
56
31
|
http: httpChannel,
|
|
57
32
|
};
|
package/dist/namespaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAwD3C;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,WAAW;CAClB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DeepAgentDefinition } from "../types.js";
|
|
2
|
+
/** The general-purpose subagent, which served agents also get async. */
|
|
3
|
+
export declare const GENERAL_PURPOSE = "general-purpose";
|
|
4
|
+
/** Definition key for an async subagent's own skill sources (deepagents `SubAgent.skills`). */
|
|
5
|
+
export declare const SUBAGENT_SKILLS_KEY = "subagentSkills";
|
|
6
|
+
/** A definition config carrying an async subagent's own skill sources. */
|
|
7
|
+
export type WithSubagentSkills = {
|
|
8
|
+
[SUBAGENT_SKILLS_KEY]?: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
type Spec = Record<string, unknown>;
|
|
11
|
+
/** Whether `spec` is a subagent spec marked `async: true`. */
|
|
12
|
+
export declare function isAsyncSubagent(spec: unknown): spec is Spec;
|
|
13
|
+
/**
|
|
14
|
+
* Add an async general-purpose subagent, unless one is declared already.
|
|
15
|
+
*
|
|
16
|
+
* It copies a declared sync general-purpose subagent, or else deepagents'
|
|
17
|
+
* default, so the lead can run the same agent blocking or in the background.
|
|
18
|
+
*/
|
|
19
|
+
export declare function withAsyncGeneralPurpose(definition: DeepAgentDefinition): DeepAgentDefinition;
|
|
20
|
+
/** Point each async subagent at the graph MDA built for it. */
|
|
21
|
+
export declare function routeAsyncSubagents(definition: DeepAgentDefinition, graphs: Readonly<Record<string, string>>): DeepAgentDefinition;
|
|
22
|
+
/** Refuse async subagents in eval, which has no Agent Server to launch them on. */
|
|
23
|
+
export declare function rejectAsyncSubagents(definition: DeepAgentDefinition): void;
|
|
24
|
+
/** Derive the definition of async subagent `name` from the lead's definition. */
|
|
25
|
+
export declare function asyncSubagentDefinition(definition: DeepAgentDefinition, name: string): DeepAgentDefinition;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=async-subagents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-subagents.d.ts","sourceRoot":"","sources":["../../src/runtime/async-subagents.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,wEAAwE;AACxE,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAqBjD,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE/E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,IAAI,CAI3D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,mBAAmB,GAC9B,mBAAmB,CAcrB;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACvC,mBAAmB,CASrB;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAQ1E;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,MAAM,GACX,mBAAmB,CAiBrB"}
|