managed-deepagents 0.10.0-dev.18 → 0.10.0-dev.19
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 +23 -4
- 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/assistant-text.d.ts +1 -1
- package/dist/channels/assistant-text.js +1 -1
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +6 -2
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/delivery.d.ts +23 -8
- package/dist/channels/delivery.d.ts.map +1 -1
- package/dist/channels/delivery.js +181 -18
- package/dist/channels/delivery.js.map +1 -1
- 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/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +9 -23
- package/dist/channels/github/index.js.map +1 -1
- package/dist/channels/http/index.d.ts +6 -0
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +24 -9
- package/dist/channels/http/index.js.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/index.d.ts.map +1 -1
- package/dist/channels/linear/index.js +11 -55
- package/dist/channels/linear/index.js.map +1 -1
- package/dist/channels/runtime.d.ts +4 -1
- 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 +1 -12
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +5 -61
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +3 -0
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/trigger/client.d.ts.map +1 -1
- package/dist/channels/trigger/client.js +3 -1
- 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 +9 -1
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +28 -12
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/ingress.d.ts +32 -0
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +89 -6
- 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 +10 -0
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +24 -1
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.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 -8
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.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 +21 -0
- package/dist/managed-composition.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 +37 -2
- 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 +108 -0
- package/dist/runtime/browser-langsmith.d.ts.map +1 -0
- package/dist/runtime/browser-langsmith.js +379 -0
- package/dist/runtime/browser-langsmith.js.map +1 -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 +125 -0
- package/dist/runtime/browser.d.ts.map +1 -0
- package/dist/runtime/browser.js +606 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/index.d.ts +38 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +47 -16
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/managed-thread.d.ts +1 -0
- package/dist/runtime/managed-thread.d.ts.map +1 -1
- package/dist/runtime/managed-thread.js +1 -1
- package/dist/runtime/managed-thread.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 +4 -1
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +30 -7
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +14 -1
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +33 -8
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +62 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +125 -6
- 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 +9 -2
- package/dist/runtime/thread-record.d.ts.map +1 -1
- package/dist/runtime/thread-record.js +13 -5
- package/dist/runtime/thread-record.js.map +1 -1
- package/dist/runtime/types.d.ts +7 -0
- package/dist/runtime/types.d.ts.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/package.json +22 -8
package/README.md
CHANGED
|
@@ -327,6 +327,19 @@ Supply only the matching payload. Native JSON has no extra provider or payload
|
|
|
327
327
|
wrapper. The channel helper has no `address`, `update`, or destination override.
|
|
328
328
|
A post sends an additional message; the normal final agent reply remains automatic.
|
|
329
329
|
|
|
330
|
+
On Slack, `post(message, { newThread: true })` posts at top level in the same
|
|
331
|
+
conversation instead, which starts a new Slack thread. Replies in it continue a
|
|
332
|
+
thread of their own, also without a mention in thread mode. Add `run` to start a
|
|
333
|
+
run there at once, with a channel handler's run input, as the current run's
|
|
334
|
+
person. The result also has `threadId` and, on Slack, the message `url`:
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
const posted = await runtime.thread?.origin?.channel.post?.(
|
|
338
|
+
{ type: "content", content: "Haiku about mango" },
|
|
339
|
+
{ newThread: true, run: { messages: [...history, new HumanMessage("Go on.")] } }
|
|
340
|
+
);
|
|
341
|
+
```
|
|
342
|
+
|
|
330
343
|
Managed Slack channels save incoming files under `/workspace/attachments/` and
|
|
331
344
|
add `upload_files(paths)` so the agent can attach completed workspace files
|
|
332
345
|
to its reply. This requires a managed sandbox.
|
|
@@ -1016,9 +1029,10 @@ it installs the app.
|
|
|
1016
1029
|
[Setting up the Linear app](#setting-up-the-linear-app).
|
|
1017
1030
|
|
|
1018
1031
|
The channel reads the webhook signing secret from Agent Auth, or from
|
|
1019
|
-
`LINEAR_WEBHOOK_SECRET` when set. It acts as the app through the
|
|
1020
|
-
connection `mda/linear-app/<deployment-id>`,
|
|
1021
|
-
|
|
1032
|
+
`LINEAR_WEBHOOK_SECRET` when set. It acts as the app through the deployment's
|
|
1033
|
+
Agent Auth app, whose OAuth connection is `mda/linear-app/<deployment-id>`,
|
|
1034
|
+
installed with `actor=app`; read its token with
|
|
1035
|
+
`await connections.get("mda/linear-token", { type: "agent" })` to call Linear's API from tools.
|
|
1022
1036
|
|
|
1023
1037
|
`reply: "none"` leaves the run's answer to the agent: the channel doesn't post
|
|
1024
1038
|
it as a comment or in the session. Session acknowledgements, Stop and error
|
|
@@ -1076,6 +1090,8 @@ or to continue without the Linear channel. Without a terminal the failure ends
|
|
|
1076
1090
|
the deploy, once the other channels are set up. An agent with a Linear channel
|
|
1077
1091
|
can't be deployed with `--no-wait`, because setup needs the live deployment.
|
|
1078
1092
|
`mda delete` removes the credentials; delete the app itself in Linear.
|
|
1093
|
+
Deployments set up by an earlier `mda` keep the app as workspace connections,
|
|
1094
|
+
which only a LangSmith workspace admin can delete.
|
|
1079
1095
|
|
|
1080
1096
|
## HTTP channels
|
|
1081
1097
|
|
|
@@ -1399,7 +1415,10 @@ current thread. When a schedule is created on a channel's thread, such as a
|
|
|
1399
1415
|
Slack thread, each run posts its final answer to that channel. A same-thread
|
|
1400
1416
|
schedule posts wherever the thread's origin points when it runs, so its record
|
|
1401
1417
|
has `channel: null` and `target: null`. A new-thread schedule keeps the
|
|
1402
|
-
conversation it was created in.
|
|
1418
|
+
conversation it was created in. On Slack, each run starts a new Slack thread
|
|
1419
|
+
there, with its answer or, when it waits on a decision, with a notice. Replies
|
|
1420
|
+
and decisions in that Slack thread continue the run's thread. Runtime schedules
|
|
1421
|
+
stay when you deploy again.
|
|
1403
1422
|
|
|
1404
1423
|
A user schedule can run as another person on the thread. Pass one of
|
|
1405
1424
|
`runtime.thread.participants` as `runAs`; the caller still owns the schedule
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The managed `browser.ts` declaration primitive.
|
|
3
|
+
*
|
|
4
|
+
* The CLI discovers a root `browser` export in `browser.ts`; MDA then gives the
|
|
5
|
+
* agent a LangSmith browser and Stagehand's tools, as `browser_run`,
|
|
6
|
+
* `browser_snapshot` and `browser_screenshot`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // browser.ts
|
|
11
|
+
* import { defineBrowser } from "managed-deepagents";
|
|
12
|
+
*
|
|
13
|
+
* export const browser = defineBrowser({ scope: "user" });
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export type BrowserScope = "thread" | "user";
|
|
17
|
+
/** Developer-provided options for the managed browser. */
|
|
18
|
+
export interface BrowserOptions {
|
|
19
|
+
/**
|
|
20
|
+
* `"thread"` gives each thread its own browser; `"user"` shares one per
|
|
21
|
+
* signed-in user across their threads, logins included, with a window per
|
|
22
|
+
* thread. Runs with no person behind them, such as scheduled runs, get their
|
|
23
|
+
* thread's browser. Defaults to `"thread"`.
|
|
24
|
+
*/
|
|
25
|
+
scope?: BrowserScope;
|
|
26
|
+
/** Stop a browser after this long idle (60 to 86,400). Defaults to 600. */
|
|
27
|
+
idleTtlSeconds?: number;
|
|
28
|
+
}
|
|
29
|
+
/** The object exported from `browser.ts`. */
|
|
30
|
+
export interface BrowserDefinition {
|
|
31
|
+
readonly kind: "browser";
|
|
32
|
+
readonly scope: BrowserScope;
|
|
33
|
+
readonly idleTtlSeconds: number;
|
|
34
|
+
}
|
|
35
|
+
/** Give the agent a LangSmith browser. */
|
|
36
|
+
export declare function defineBrowser(options?: BrowserOptions): BrowserDefinition;
|
|
37
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7C,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,iBAAiB,CAiB7E"}
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The managed `browser.ts` declaration primitive.
|
|
3
|
+
*
|
|
4
|
+
* The CLI discovers a root `browser` export in `browser.ts`; MDA then gives the
|
|
5
|
+
* agent a LangSmith browser and Stagehand's tools, as `browser_run`,
|
|
6
|
+
* `browser_snapshot` and `browser_screenshot`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // browser.ts
|
|
11
|
+
* import { defineBrowser } from "managed-deepagents";
|
|
12
|
+
*
|
|
13
|
+
* export const browser = defineBrowser({ scope: "user" });
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const MIN_IDLE_TTL_S = 60;
|
|
17
|
+
const MAX_IDLE_TTL_S = 86_400;
|
|
18
|
+
/** Give the agent a LangSmith browser. */
|
|
19
|
+
export function defineBrowser(options = {}) {
|
|
20
|
+
const { scope = "thread", idleTtlSeconds = 600 } = options;
|
|
21
|
+
if (scope !== "thread" && scope !== "user") {
|
|
22
|
+
throw new TypeError(`browser scope must be "thread" or "user", not ${JSON.stringify(scope)}`);
|
|
23
|
+
}
|
|
24
|
+
if (!Number.isInteger(idleTtlSeconds) ||
|
|
25
|
+
idleTtlSeconds < MIN_IDLE_TTL_S ||
|
|
26
|
+
idleTtlSeconds > MAX_IDLE_TTL_S) {
|
|
27
|
+
throw new TypeError(`idleTtlSeconds must be an integer between ${MIN_IDLE_TTL_S} and ${MAX_IDLE_TTL_S}`);
|
|
28
|
+
}
|
|
29
|
+
return Object.freeze({ kind: "browser", scope, idleTtlSeconds });
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,cAAc,GAAG,MAAM,CAAC;AAwB9B,0CAA0C;AAC1C,MAAM,UAAU,aAAa,CAAC,OAAO,GAAmB,EAAE;IACxD,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,cAAc,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAC3D,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,IAAI,SAAS,CACjB,iDAAiD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;QACjC,cAAc,GAAG,cAAc;QAC/B,cAAc,GAAG,cAAc,EAC/B,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,6CAA6C,cAAc,QAAQ,cAAc,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -34,7 +34,7 @@ export declare function extractReplyContent(input: {
|
|
|
34
34
|
export declare const NOTIFICATION_KEY = "deepagents_notification";
|
|
35
35
|
/**
|
|
36
36
|
* `additional_kwargs` key MDA marks its own notifications with, such as a browser
|
|
37
|
-
* handoff ending
|
|
37
|
+
* handoff ending, the same way.
|
|
38
38
|
*/
|
|
39
39
|
export declare const MDA_NOTIFICATION_KEY = "mda_notification";
|
|
40
40
|
//# sourceMappingURL=assistant-text.d.ts.map
|
|
@@ -100,7 +100,7 @@ function runStart(messages, afterId) {
|
|
|
100
100
|
export const NOTIFICATION_KEY = "deepagents_notification";
|
|
101
101
|
/**
|
|
102
102
|
* `additional_kwargs` key MDA marks its own notifications with, such as a browser
|
|
103
|
-
* handoff ending
|
|
103
|
+
* handoff ending, the same way.
|
|
104
104
|
*/
|
|
105
105
|
export const MDA_NOTIFICATION_KEY = "mda_notification";
|
|
106
106
|
/** A user-role message deepagents or MDA sent with news, not the user's. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../src/channels/binding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../src/channels/binding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,6DAA6D;AAC7D,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,GACvD,cAAc,CAWhB;AAED,eAAO,MAAM,qBAAqB;cACtB,cAAc;gBACZ,OAAO;IACnB,2EAA2E;cACjE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cACvB,OAAO;IACjB,wDAAwD;aAC/C,SAAS;EAChB,CAAC;AAiBL,uFAAuF;AACvF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,cAAc,GAAG,SAAS,CAe5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GACnB,aAAa,GAAG,SAAS,CAG3B;AAYD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,WAAW,GAAG,SAAS,CAGzB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,uBAAuB,GAAG,SAAS,GAC3E,cAAc,GAAG,SAAS,CAI5B;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EACjD,KAAK,EAAE,YAAY,GAAG,IAAI,EAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,uBAAuB,GAAG,SAAS,GAC3E,cAAc,CAgBhB;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,MAAM,GAAG,SAAS,CAYpB"}
|
package/dist/channels/binding.js
CHANGED
|
@@ -5,6 +5,7 @@ import { channelInfo, createRuntimeChannel } from "./runtime.js";
|
|
|
5
5
|
import { isJsonValue } from "./message-schema.js";
|
|
6
6
|
import { channelProviderForName, messagingTransportForName, } from "./messaging-registry.js";
|
|
7
7
|
import { createTriggerClient } from "./trigger/client.js";
|
|
8
|
+
import { startTriggerConversation } from "./trigger/conversation.js";
|
|
8
9
|
import { createTriggerTransport } from "./trigger/transport.js";
|
|
9
10
|
import { channelContextSchema } from "../run-context.js";
|
|
10
11
|
import { bindingFromOrigin, } from "../runtime/thread-record.js";
|
|
@@ -79,17 +80,20 @@ export function resolveRuntimeChannel(context, configurable, transportFactory) {
|
|
|
79
80
|
/** A runtime channel that posts to a binding's target. */
|
|
80
81
|
export function runtimeChannelFor(binding, event, transportFactory) {
|
|
81
82
|
let transport;
|
|
83
|
+
let startThread;
|
|
82
84
|
if (binding.transport === "trigger_server") {
|
|
83
85
|
const client = createTriggerClient();
|
|
84
|
-
if (client)
|
|
86
|
+
if (client) {
|
|
85
87
|
transport = createTriggerTransport(client);
|
|
88
|
+
startThread = (message, run) => startTriggerConversation(client, binding, message, run);
|
|
89
|
+
}
|
|
86
90
|
}
|
|
87
91
|
else {
|
|
88
92
|
transport =
|
|
89
93
|
messagingTransportForName(binding.name) ??
|
|
90
94
|
transportFactory?.(binding.provider);
|
|
91
95
|
}
|
|
92
|
-
return createRuntimeChannel({ ...binding, event, transport });
|
|
96
|
+
return createRuntimeChannel({ ...binding, event, transport, startThread });
|
|
93
97
|
}
|
|
94
98
|
/** Trusted ingress source for telemetry; direct HTTP callers have no channel stamp. */
|
|
95
99
|
export function resolveChannelProvider(configurable) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/channels/binding.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/channels/binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,35 @@
|
|
|
1
1
|
import type { CompiledStateGraph } from "@langchain/langgraph";
|
|
2
2
|
import type { RunThread } from "../runtime/managed-thread.js";
|
|
3
3
|
type Graph = Pick<CompiledStateGraph<unknown, unknown>, "getState" | "getStateHistory">;
|
|
4
|
+
/** What a new Trigger thread posted when a scheduled run pauses says. */
|
|
5
|
+
export declare const PAUSED_NOTICE = "This scheduled run is waiting for a decision.";
|
|
6
|
+
/** The run a delivery step belongs to. */
|
|
7
|
+
export interface DeliveredRun {
|
|
8
|
+
/** The Agent Server run, for idempotent posts, notices and their links. */
|
|
9
|
+
runId?: string;
|
|
10
|
+
assistantId?: string;
|
|
11
|
+
/** The run's configurable, with the principal the server stamped. */
|
|
12
|
+
configurable?: Record<string, unknown>;
|
|
13
|
+
/** The run's metadata, which marks a managed cron fire. */
|
|
14
|
+
metadata?: unknown;
|
|
15
|
+
/** Cron routing split out of the run's context. */
|
|
16
|
+
routing?: Record<string, unknown>;
|
|
17
|
+
/** The run's own thread; an async subagent's differs from `run.thread`'s. */
|
|
18
|
+
runThreadId?: string;
|
|
19
|
+
/** An async subagent's run: report its pause, never post its answer. */
|
|
20
|
+
subagent?: boolean;
|
|
21
|
+
}
|
|
4
22
|
/**
|
|
5
|
-
* Deliver a finished top-level run's result to its thread's origin
|
|
6
|
-
*
|
|
23
|
+
* Deliver a finished top-level run's result to its thread's origin, or to a
|
|
24
|
+
* scheduled run's `deliverTo`. A thread with neither gets nothing. The Agent
|
|
25
|
+
* Server runs every TypeScript graph run on a thread with a checkpointer, a
|
|
26
|
+
* cron fire without a `thread_id` included, so its state can always be read.
|
|
7
27
|
*
|
|
8
28
|
* Failures follow what each channel did before: a Trigger post and any
|
|
9
29
|
* scheduled delivery fail the run; a direct channel's post is logged and the
|
|
10
30
|
* run still succeeds.
|
|
11
31
|
*/
|
|
12
|
-
export declare function deliverRunResult(graph: Graph, run: RunThread,
|
|
13
|
-
/** The Agent Server run and its assistant, for notices and their links. */
|
|
14
|
-
{ runId, assistantId }?: {
|
|
15
|
-
runId?: string;
|
|
16
|
-
assistantId?: string;
|
|
17
|
-
}): Promise<void>;
|
|
32
|
+
export declare function deliverRunResult(graph: Graph, run: RunThread, delivered?: DeliveredRun): Promise<void>;
|
|
18
33
|
/** The Trigger post id for a run's answer, stable across retries. */
|
|
19
34
|
export declare function replyActionId(runId: string): string;
|
|
20
35
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/channels/delivery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/channels/delivery.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,sBAAsB,CAAC;AAI9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AA2C9D,KAAK,KAAK,GAAG,IAAI,CACf,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,EACpC,UAAU,GAAG,iBAAiB,CAC/B,CAAC;AAGF,yEAAyE;AACzE,eAAO,MAAM,aAAa,kDAAkD,CAAC;AAE7E,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAOD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,SAAS,EACd,SAAS,GAAE,YAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA0Df;AAuLD,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -5,53 +5,90 @@
|
|
|
5
5
|
* The run does it, not the process that received the event, so a restart of
|
|
6
6
|
* that process loses nothing, and a run LangSmith Studio resumes answers the
|
|
7
7
|
* conversation the paused run came from.
|
|
8
|
+
*
|
|
9
|
+
* A scheduled run that starts a new Trigger thread, with its answer or with a
|
|
10
|
+
* notice that it waits on a decision, hands its own thread to that thread's
|
|
11
|
+
* conversation, so replies and decisions there continue the run.
|
|
8
12
|
*/
|
|
9
13
|
import { randomUUID } from "node:crypto";
|
|
10
14
|
import { v5 as uuidv5 } from "uuid";
|
|
11
15
|
import { z } from "zod";
|
|
12
|
-
import { triggerTargetSchema } from "../runtime/thread-record.js";
|
|
16
|
+
import { THREAD_CONVERSATION_METADATA, originFromBinding, threadRecordMetadata, triggerTargetSchema, } from "../runtime/thread-record.js";
|
|
17
|
+
import { handOffScheduledThread, scheduleExecution, } from "../runtime/schedule-auth.js";
|
|
13
18
|
import { logger } from "../runtime/log.js";
|
|
14
19
|
import { QUIET_REPLY, extractReplyContent, extractReplyText, } from "./assistant-text.js";
|
|
15
|
-
import { channelAutoRepliesForName, messagingTransportForName, pausedNoticeForName, } from "./messaging-registry.js";
|
|
20
|
+
import { channelAutoRepliesForName, channelProviderForName, messagingTransportForName, pausedNoticeForName, } from "./messaging-registry.js";
|
|
21
|
+
import { deliverScheduleResult, getDeploymentId, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, } from "./schedule-delivery.js";
|
|
16
22
|
import { createTriggerClient } from "./trigger/client.js";
|
|
17
23
|
import { resolveTracerSessionId } from "./trigger/tracing-project.js";
|
|
18
|
-
import { createTriggerTransport } from "./trigger/transport.js";
|
|
24
|
+
import { createTriggerTransport, startTriggerThread, } from "./trigger/transport.js";
|
|
25
|
+
/** What a new Trigger thread posted when a scheduled run pauses says. */
|
|
26
|
+
export const PAUSED_NOTICE = "This scheduled run is waiting for a decision.";
|
|
19
27
|
/**
|
|
20
|
-
* Deliver a finished top-level run's result to its thread's origin
|
|
21
|
-
*
|
|
28
|
+
* Deliver a finished top-level run's result to its thread's origin, or to a
|
|
29
|
+
* scheduled run's `deliverTo`. A thread with neither gets nothing. The Agent
|
|
30
|
+
* Server runs every TypeScript graph run on a thread with a checkpointer, a
|
|
31
|
+
* cron fire without a `thread_id` included, so its state can always be read.
|
|
22
32
|
*
|
|
23
33
|
* Failures follow what each channel did before: a Trigger post and any
|
|
24
34
|
* scheduled delivery fail the run; a direct channel's post is logged and the
|
|
25
35
|
* run still succeeds.
|
|
26
36
|
*/
|
|
27
|
-
export async function deliverRunResult(graph, run,
|
|
28
|
-
/** The Agent Server run and its assistant, for notices and their links. */
|
|
29
|
-
{ runId, assistantId } = {}) {
|
|
37
|
+
export async function deliverRunResult(graph, run, delivered = {}) {
|
|
30
38
|
const { thread, origin } = run;
|
|
31
|
-
if (!thread
|
|
39
|
+
if (!thread)
|
|
40
|
+
return;
|
|
41
|
+
const delivery = origin ? undefined : scheduledDelivery(delivered);
|
|
42
|
+
if (!origin && !delivery)
|
|
32
43
|
return;
|
|
33
|
-
const
|
|
44
|
+
const deliverTo = delivery?.deliverTo;
|
|
45
|
+
const opening = openingOf(origin, delivery, delivered);
|
|
46
|
+
const { runId, subagent } = delivered;
|
|
47
|
+
const threadId = delivered.runThreadId ?? thread.id;
|
|
48
|
+
const config = { configurable: { thread_id: threadId } };
|
|
34
49
|
const state = await graph.getState(config);
|
|
35
50
|
const interrupts = pendingInterrupts(state);
|
|
36
51
|
if (interrupts.length) {
|
|
37
|
-
if (
|
|
38
|
-
await
|
|
39
|
-
|
|
40
|
-
|
|
52
|
+
if (opening) {
|
|
53
|
+
const opened = await openThread(opening, run, delivered, {
|
|
54
|
+
text: PAUSED_NOTICE,
|
|
55
|
+
actionId: runId ? pausedActionId(runId) : randomUUID(),
|
|
56
|
+
});
|
|
57
|
+
if (opened)
|
|
58
|
+
await reportInterrupted(opened, threadId, runId, interrupts);
|
|
59
|
+
}
|
|
60
|
+
else if (origin?.transport === "trigger_server")
|
|
61
|
+
await reportInterrupted(origin, threadId, runId, interrupts);
|
|
62
|
+
else if (origin)
|
|
63
|
+
await noticePaused(origin, threadId, delivered.assistantId);
|
|
41
64
|
return;
|
|
42
65
|
}
|
|
43
66
|
// A static breakpoint stopped the run before it finished: no answer yet.
|
|
44
|
-
if (state.next.length > 0)
|
|
67
|
+
if (state.next.length > 0 || subagent)
|
|
45
68
|
return;
|
|
46
69
|
// A channel declared with `reply: "none"` leaves replying to the agent.
|
|
47
|
-
if (!channelAutoRepliesForName(origin.name))
|
|
70
|
+
if (origin && !channelAutoRepliesForName(origin.name))
|
|
48
71
|
return;
|
|
49
72
|
const values = { messages: messagesOf(state.values) };
|
|
50
73
|
const boundary = await replyBoundary(graph, config, values.messages);
|
|
51
|
-
|
|
74
|
+
const text = extractReplyText(values, boundary);
|
|
75
|
+
if (text.trim() === QUIET_REPLY)
|
|
76
|
+
return;
|
|
77
|
+
if (opening) {
|
|
78
|
+
if (text)
|
|
79
|
+
await openThread(opening, run, delivered, {
|
|
80
|
+
text,
|
|
81
|
+
actionId: runId ? replyActionId(runId) : randomUUID(),
|
|
82
|
+
});
|
|
52
83
|
return;
|
|
84
|
+
}
|
|
85
|
+
if (!origin) {
|
|
86
|
+
if (deliverTo && text)
|
|
87
|
+
await deliverToTarget(deliverTo, text);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
53
90
|
const content = origin.transport === "trigger_server"
|
|
54
|
-
?
|
|
91
|
+
? text || null
|
|
55
92
|
: extractReplyContent(values, boundary);
|
|
56
93
|
if (content === null)
|
|
57
94
|
return;
|
|
@@ -66,6 +103,128 @@ export async function deliverRunResult(graph, run,
|
|
|
66
103
|
logger.error(`channel reply failed (${logger.safeErrorLabel(error)})`);
|
|
67
104
|
}
|
|
68
105
|
}
|
|
106
|
+
/** A compiled schedule's routing: where it delivers, and whether each fire has its own thread. */
|
|
107
|
+
const scheduleRoutingSchema = z.object({
|
|
108
|
+
deliver_to: z.unknown().optional(),
|
|
109
|
+
new_thread: z.boolean().optional(),
|
|
110
|
+
});
|
|
111
|
+
/** A trusted cron fire's schedule routing, when it posts its result to `deliverTo`. */
|
|
112
|
+
function scheduledDelivery(delivered) {
|
|
113
|
+
if (!isTrustedScheduleDeliveryRun(delivered.configurable, delivered.metadata))
|
|
114
|
+
return undefined;
|
|
115
|
+
const schedule = scheduleRoutingSchema.safeParse(delivered.routing?.mda_schedule);
|
|
116
|
+
if (!schedule.success)
|
|
117
|
+
return undefined;
|
|
118
|
+
const deliverTo = readScheduleDeliverTo(schedule.data.deliver_to);
|
|
119
|
+
return deliverTo?.autoPost
|
|
120
|
+
? { deliverTo, newThread: schedule.data.new_thread === true }
|
|
121
|
+
: undefined;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Where a scheduled run starts a new Trigger thread: a new-thread schedule on
|
|
125
|
+
* a Trigger channel, or a new-thread `deliverTo` conversation Trigger delivers
|
|
126
|
+
* to. A schedule with a fixed thread keeps it.
|
|
127
|
+
*/
|
|
128
|
+
function openingOf(origin, delivery, delivered) {
|
|
129
|
+
if (scheduleExecution(delivered.configurable) === undefined)
|
|
130
|
+
return undefined;
|
|
131
|
+
if (origin)
|
|
132
|
+
return origin.transport === "trigger_server" &&
|
|
133
|
+
origin.event?.type === "schedule" &&
|
|
134
|
+
origin.event.new_thread
|
|
135
|
+
? { via: "channel", origin }
|
|
136
|
+
: undefined;
|
|
137
|
+
return delivery?.newThread === true &&
|
|
138
|
+
delivery.deliverTo.to.type === "provider_conversation" &&
|
|
139
|
+
getDeploymentId() !== undefined &&
|
|
140
|
+
hasTriggerClient()
|
|
141
|
+
? { via: "deployment", deliverTo: delivery.deliverTo }
|
|
142
|
+
: undefined;
|
|
143
|
+
}
|
|
144
|
+
/** Whether Trigger is configured; a malformed setting leaves `deliverTo` its own fallback. */
|
|
145
|
+
function hasTriggerClient() {
|
|
146
|
+
try {
|
|
147
|
+
return createTriggerClient() !== undefined;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Post the first message of a new Trigger thread, then hand the run's thread
|
|
155
|
+
* to that thread's conversation. Returns the conversation, unless Trigger
|
|
156
|
+
* could not name the thread it started.
|
|
157
|
+
*/
|
|
158
|
+
async function openThread(opening, run, delivered, { text, actionId }) {
|
|
159
|
+
const client = createTriggerClient();
|
|
160
|
+
if (!client)
|
|
161
|
+
throw new Error("channel delivery is not configured");
|
|
162
|
+
let started;
|
|
163
|
+
let name;
|
|
164
|
+
if (opening.via === "channel") {
|
|
165
|
+
name = opening.origin.name;
|
|
166
|
+
started = await startTriggerThread(client, {
|
|
167
|
+
target: opening.origin.target,
|
|
168
|
+
text,
|
|
169
|
+
actionId,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
name = opening.deliverTo.channel;
|
|
174
|
+
const deploymentId = getDeploymentId();
|
|
175
|
+
if (!deploymentId)
|
|
176
|
+
throw new Error("channel delivery is not configured");
|
|
177
|
+
const result = await client.postDeploymentAction(deploymentId, name, {
|
|
178
|
+
type: "post",
|
|
179
|
+
action_id: actionId,
|
|
180
|
+
address: { conversation_id: opening.deliverTo.to.conversationId },
|
|
181
|
+
follow_thread: true,
|
|
182
|
+
message: { text },
|
|
183
|
+
});
|
|
184
|
+
started = result.thread;
|
|
185
|
+
}
|
|
186
|
+
if (!started) {
|
|
187
|
+
logger.warn("scheduled post started a thread Trigger did not name");
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
const provider = opening.via === "channel"
|
|
191
|
+
? opening.origin.provider
|
|
192
|
+
: (channelProviderForName(name) ?? name);
|
|
193
|
+
const conversation = {
|
|
194
|
+
name,
|
|
195
|
+
provider,
|
|
196
|
+
transport: "trigger_server",
|
|
197
|
+
sourceThreadKey: started.source_thread_key,
|
|
198
|
+
deliveryId: actionId,
|
|
199
|
+
target: started,
|
|
200
|
+
};
|
|
201
|
+
await handOff(run, delivered, conversation);
|
|
202
|
+
return { ...conversation, event: null };
|
|
203
|
+
}
|
|
204
|
+
/** Make the run's thread the conversation's, keeping its participants. */
|
|
205
|
+
async function handOff(run, delivered, conversation) {
|
|
206
|
+
const execution = scheduleExecution(delivered.configurable);
|
|
207
|
+
if (!execution || !run.thread)
|
|
208
|
+
throw new Error("scheduled thread handoff is unavailable");
|
|
209
|
+
const record = threadRecordMetadata({
|
|
210
|
+
origin: originFromBinding(conversation, null),
|
|
211
|
+
participants: run.thread.participants.map(({ id, role }) => ({ id, role })),
|
|
212
|
+
});
|
|
213
|
+
await handOffScheduledThread({
|
|
214
|
+
thread: run.thread.id,
|
|
215
|
+
execution,
|
|
216
|
+
conversation: {
|
|
217
|
+
provider: conversation.provider,
|
|
218
|
+
source_thread_key: conversation.sourceThreadKey,
|
|
219
|
+
},
|
|
220
|
+
}, { ...record, [THREAD_CONVERSATION_METADATA]: conversation.sourceThreadKey });
|
|
221
|
+
}
|
|
222
|
+
/** Post a `deliverTo` result into an existing conversation; a failure fails the run. */
|
|
223
|
+
async function deliverToTarget(deliverTo, text) {
|
|
224
|
+
const outcome = await deliverScheduleResult({ deliverTo, replyText: text });
|
|
225
|
+
if (outcome === "failed")
|
|
226
|
+
throw new Error("Scheduled channel delivery failed");
|
|
227
|
+
}
|
|
69
228
|
async function post(origin, content, runId) {
|
|
70
229
|
const newThread = origin.event?.type === "schedule" ? origin.event.new_thread : undefined;
|
|
71
230
|
const message = { type: "content", content };
|
|
@@ -88,6 +247,10 @@ async function post(origin, content, runId) {
|
|
|
88
247
|
...(newThread !== undefined && { newThread }),
|
|
89
248
|
});
|
|
90
249
|
}
|
|
250
|
+
/** The Trigger post id of a paused run's notice, stable across retries. */
|
|
251
|
+
function pausedActionId(runId) {
|
|
252
|
+
return uuidv5(`mda-paused:${runId}`, uuidv5.URL);
|
|
253
|
+
}
|
|
91
254
|
/** The Trigger post id for a run's answer, stable across retries. */
|
|
92
255
|
export function replyActionId(runId) {
|
|
93
256
|
return uuidv5(`mda-reply:${runId}`, uuidv5.URL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/channels/delivery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/channels/delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { GitHubAppOptions } from "./types.js";
|
|
2
|
+
type PermissionLevel = "read" | "write";
|
|
3
|
+
/** A permission the App asks for, with the handled events that need it. */
|
|
4
|
+
export type AppPermission = {
|
|
5
|
+
name: string;
|
|
6
|
+
level: PermissionLevel;
|
|
7
|
+
/** Empty when the level comes from `app.permissions` or is `metadata`. */
|
|
8
|
+
events: string[];
|
|
9
|
+
};
|
|
10
|
+
/** What `mda deploy` needs to set up the GitHub App. */
|
|
11
|
+
export type GitHubAppSetup = {
|
|
12
|
+
/** The handled event keys, such as `issues.opened`. */
|
|
13
|
+
events: string[];
|
|
14
|
+
/** The webhook events the App subscribes to, such as `issues`. */
|
|
15
|
+
webhookEvents: string[];
|
|
16
|
+
permissions: AppPermission[];
|
|
17
|
+
/** `owner/name`, lowercased and sorted; absent for every repository. */
|
|
18
|
+
repositories?: string[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The App the channel's handlers and `app` options need. The CLI reads it
|
|
22
|
+
* from the channel's manifest instead of working it out; the Python runtime
|
|
23
|
+
* mirrors these rules in `github_app_setup.py`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function githubAppSetup(handlers: object, app: GitHubAppOptions | undefined): GitHubAppSetup;
|
|
26
|
+
/**
|
|
27
|
+
* The repositories the channel is limited to, lowercased since GitHub names
|
|
28
|
+
* are case-insensitive. One installation covers them, so they share an owner.
|
|
29
|
+
*/
|
|
30
|
+
export declare function repositoryAllowlist(repositories: readonly string[] | undefined): string[] | undefined;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=app-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-setup.d.ts","sourceRoot":"","sources":["../../../src/channels/github/app-setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAC;AAEtE,KAAK,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAgExC,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG;IAC3B,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,gBAAgB,GAAG,SAAS,GAChC,cAAc,CAiBhB;AAoDD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC1C,MAAM,EAAE,GAAG,SAAS,CAiCtB"}
|