@parlor/agent-ui 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +10 -2
- package/dist/client/agent-ui-client.d.ts +60 -0
- package/dist/client/agent-ui-client.d.ts.map +1 -0
- package/dist/client/agent-ui-client.js +407 -0
- package/dist/client/agent-ui-client.js.map +1 -0
- package/dist/client/confirmations.d.ts +34 -0
- package/dist/client/confirmations.d.ts.map +1 -0
- package/dist/client/confirmations.js +95 -0
- package/dist/client/confirmations.js.map +1 -0
- package/dist/client/environment.d.ts +37 -0
- package/dist/client/environment.d.ts.map +1 -0
- package/dist/client/environment.js +79 -0
- package/dist/client/environment.js.map +1 -0
- package/dist/client/highlight.d.ts +12 -0
- package/dist/client/highlight.d.ts.map +1 -0
- package/dist/client/highlight.js +98 -0
- package/dist/client/highlight.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +7 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/json-equal.d.ts +2 -0
- package/dist/client/json-equal.d.ts.map +1 -0
- package/dist/client/json-equal.js +20 -0
- package/dist/client/json-equal.js.map +1 -0
- package/dist/client/registry.d.ts +54 -0
- package/dist/client/registry.d.ts.map +1 -0
- package/dist/client/registry.js +280 -0
- package/dist/client/registry.js.map +1 -0
- package/dist/client/screen.d.ts +20 -0
- package/dist/client/screen.d.ts.map +1 -0
- package/dist/client/screen.js +196 -0
- package/dist/client/screen.js.map +1 -0
- package/dist/client/write.d.ts +13 -0
- package/dist/client/write.d.ts.map +1 -0
- package/dist/client/write.js +101 -0
- package/dist/client/write.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +44 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +23 -0
- package/dist/manifest.js.map +1 -0
- package/dist/protocol.d.ts +206 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +152 -0
- package/dist/protocol.js.map +1 -0
- package/dist/server/agent-ui.d.ts +36 -0
- package/dist/server/agent-ui.d.ts.map +1 -0
- package/dist/server/agent-ui.js +89 -0
- package/dist/server/agent-ui.js.map +1 -0
- package/dist/server/audience.d.ts +9 -0
- package/dist/server/audience.d.ts.map +1 -0
- package/dist/server/audience.js +15 -0
- package/dist/server/audience.js.map +1 -0
- package/dist/server/broker.d.ts +29 -0
- package/dist/server/broker.d.ts.map +1 -0
- package/dist/server/broker.js +152 -0
- package/dist/server/broker.js.map +1 -0
- package/dist/server/confirmations.d.ts +40 -0
- package/dist/server/confirmations.d.ts.map +1 -0
- package/dist/server/confirmations.js +230 -0
- package/dist/server/confirmations.js.map +1 -0
- package/dist/server/directory.d.ts +41 -0
- package/dist/server/directory.d.ts.map +1 -0
- package/dist/server/directory.js +193 -0
- package/dist/server/directory.js.map +1 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +10 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/manifest-source.d.ts +10 -0
- package/dist/server/manifest-source.d.ts.map +1 -0
- package/dist/server/manifest-source.js +36 -0
- package/dist/server/manifest-source.js.map +1 -0
- package/dist/server/routes.d.ts +11 -0
- package/dist/server/routes.d.ts.map +1 -0
- package/dist/server/routes.js +38 -0
- package/dist/server/routes.js.map +1 -0
- package/dist/server/schemas.d.ts +69 -0
- package/dist/server/schemas.d.ts.map +1 -0
- package/dist/server/schemas.js +78 -0
- package/dist/server/schemas.js.map +1 -0
- package/dist/server/tools.d.ts +49 -0
- package/dist/server/tools.d.ts.map +1 -0
- package/dist/server/tools.js +312 -0
- package/dist/server/tools.js.map +1 -0
- package/dist/view.d.ts +54 -0
- package/dist/view.d.ts.map +1 -0
- package/dist/view.js +15 -0
- package/dist/view.js.map +1 -0
- package/dist/vite/index.d.ts +3 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +3 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/manifest.d.ts +5 -0
- package/dist/vite/manifest.d.ts.map +1 -0
- package/dist/vite/manifest.js +107 -0
- package/dist/vite/manifest.js.map +1 -0
- package/dist/vite/plugin.d.ts +10 -0
- package/dist/vite/plugin.d.ts.map +1 -0
- package/dist/vite/plugin.js +143 -0
- package/dist/vite/plugin.js.map +1 -0
- package/package.json +65 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/client/write.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type AgentRouteData, type JsonSchema, type ManifestBuild, type RouteEntry, routeHref, type UiAppInfo, UI_MANIFEST_FILE, type UiManifest, type ViewEntry, } from "./manifest.js";
|
|
2
|
+
export { type AgentOrigin, type AttentionSnapshot, type ClientMessage, type ClientSummary, type FocusSnapshot, type ItemSnapshot, type JsonObject, type KeyedViewSnapshot, type LeaveNotice, MAX_WATCHED_THREADS, type MatchedRouteSnapshot, type NotFoundRouteSnapshot, type PresenceUpdate, type QuerySnapshot, type QueryStatus, type RecentRef, type RouteSnapshot, type ScreenSnapshot, type SelectionSnapshot, type SingleViewSnapshot, type TruncatedValue, UI_CHANNEL, UI_ERROR_CODES, UI_OPS, type UiError, type UiErrorCode, type UiOp, type UiOpInput, type UiOpInputs, uiOpReadOnly, uiOps, type UiOpResults, type UiReply, type UiRequest, type ViewSnapshot, } from "./protocol.js";
|
|
3
|
+
export { type AgentViewBinding, type AgentViewConfig, type AgentViewDefinition, type AnyAgentView, defineAgentView, isAgentView, type IsWritable, type ViewField, type ViewRef, type ViewSchema, type ViewSetter, type ViewValue, type WritableField, } from "./view.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,SAAS,EACT,KAAK,SAAS,EACd,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,UAAU,EACV,cAAc,EACd,MAAM,EACN,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,UAAU,EACf,YAAY,EACZ,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,eAAe,EACf,WAAW,EACX,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EAET,gBAAgB,GAGjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAUL,mBAAmB,EAYnB,UAAU,EACV,cAAc,EACd,MAAM,EAMN,YAAY,EACZ,KAAK,GAKN,MAAM,eAAe,CAAC;AACvB,OAAO,EAKL,eAAe,EACf,WAAW,GAQZ,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { StaticDataRouteOption } from "@tanstack/router-core";
|
|
2
|
+
import type { AnyAgentView } from "./view.js";
|
|
3
|
+
declare module "@tanstack/router-core" {
|
|
4
|
+
interface StaticDataRouteOption {
|
|
5
|
+
readonly description?: string | undefined;
|
|
6
|
+
readonly views?: readonly AnyAgentView[] | undefined;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export type AgentRouteData = Pick<StaticDataRouteOption, "description" | "views">;
|
|
10
|
+
export declare const UI_MANIFEST_FILE = "ui-manifest.json";
|
|
11
|
+
export type JsonSchema = Readonly<Record<string, unknown>>;
|
|
12
|
+
export interface UiAppInfo {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly description?: string | undefined;
|
|
16
|
+
readonly scheme?: string | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface RouteEntry {
|
|
19
|
+
readonly path: string;
|
|
20
|
+
readonly description?: string | undefined;
|
|
21
|
+
readonly params: readonly string[];
|
|
22
|
+
readonly search?: JsonSchema | undefined;
|
|
23
|
+
readonly views: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
export interface ViewEntry {
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly description: string;
|
|
28
|
+
readonly keyed: boolean;
|
|
29
|
+
readonly schema?: JsonSchema | undefined;
|
|
30
|
+
readonly writable: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
export interface UiManifest {
|
|
33
|
+
readonly protocol: 1;
|
|
34
|
+
readonly app: UiAppInfo;
|
|
35
|
+
readonly buildId?: string | undefined;
|
|
36
|
+
readonly routes: readonly RouteEntry[];
|
|
37
|
+
readonly views: readonly ViewEntry[];
|
|
38
|
+
}
|
|
39
|
+
export interface ManifestBuild {
|
|
40
|
+
readonly manifest: UiManifest;
|
|
41
|
+
readonly warnings: readonly string[];
|
|
42
|
+
}
|
|
43
|
+
export declare function routeHref(route: RouteEntry, params: Readonly<Record<string, string>> | undefined, search: Readonly<Record<string, unknown>> | undefined): string;
|
|
44
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,QAAQ,uBAAuB,CAAC;IACrC,UAAU,qBAAqB;QAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;KACtD;CACF;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC;AAElF,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EACpD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GACpD,MAAM,CAkBR"}
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const UI_MANIFEST_FILE = "ui-manifest.json";
|
|
2
|
+
export function routeHref(route, params, search) {
|
|
3
|
+
const path = route.path
|
|
4
|
+
.split("/")
|
|
5
|
+
.map((segment) => {
|
|
6
|
+
if (!segment.startsWith("$"))
|
|
7
|
+
return segment;
|
|
8
|
+
const value = params?.[segment === "$" ? "_splat" : segment.slice(1)] ?? "";
|
|
9
|
+
return segment === "$"
|
|
10
|
+
? value.split("/").map(encodeURIComponent).join("/")
|
|
11
|
+
: encodeURIComponent(value);
|
|
12
|
+
})
|
|
13
|
+
.join("/");
|
|
14
|
+
const query = new URLSearchParams();
|
|
15
|
+
for (const [key, value] of Object.entries(search ?? {})) {
|
|
16
|
+
if (value === undefined)
|
|
17
|
+
continue;
|
|
18
|
+
query.set(key, typeof value === "string" ? value : JSON.stringify(value));
|
|
19
|
+
}
|
|
20
|
+
const queryString = query.toString();
|
|
21
|
+
return queryString ? `${path}?${queryString}` : path;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAwCnD,MAAM,UAAU,SAAS,CACvB,KAAiB,EACjB,MAAoD,EACpD,MAAqD;IAErD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5E,OAAO,OAAO,KAAK,GAAG;YACpB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACpD,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACrC,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import type { ActionSource } from "@parlor/core";
|
|
2
|
+
import type { ViewRef } from "./view.js";
|
|
3
|
+
export declare const UI_CHANNEL = "ui";
|
|
4
|
+
/** Presence names at most this many watched chat threads; a client sending more is truncated. */
|
|
5
|
+
export declare const MAX_WATCHED_THREADS = 8;
|
|
6
|
+
export interface UiOpInputs {
|
|
7
|
+
readonly screen: Readonly<Record<string, never>>;
|
|
8
|
+
readonly navigate: {
|
|
9
|
+
readonly to: string;
|
|
10
|
+
readonly params?: Readonly<Record<string, string>> | undefined;
|
|
11
|
+
readonly search?: Readonly<Record<string, unknown>> | undefined;
|
|
12
|
+
readonly replace?: boolean | undefined;
|
|
13
|
+
};
|
|
14
|
+
readonly set: {
|
|
15
|
+
readonly view: string;
|
|
16
|
+
readonly key?: string | undefined;
|
|
17
|
+
readonly value: JsonObject;
|
|
18
|
+
};
|
|
19
|
+
readonly highlight: {
|
|
20
|
+
readonly view: string;
|
|
21
|
+
readonly key?: string | undefined;
|
|
22
|
+
readonly field?: string | undefined;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export type UiOp = keyof UiOpInputs;
|
|
26
|
+
export type UiOpInput<O extends UiOp> = UiOpInputs[O];
|
|
27
|
+
export interface UiOpResults {
|
|
28
|
+
readonly screen: ScreenSnapshot;
|
|
29
|
+
readonly navigate: {
|
|
30
|
+
readonly screen: ScreenSnapshot;
|
|
31
|
+
};
|
|
32
|
+
readonly set: {
|
|
33
|
+
readonly value: JsonObject;
|
|
34
|
+
readonly agentFields: readonly string[];
|
|
35
|
+
};
|
|
36
|
+
readonly highlight: {
|
|
37
|
+
readonly shown: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
interface UiOpSpec<O extends UiOp> {
|
|
41
|
+
readonly readOnly: boolean;
|
|
42
|
+
readonly input: (value: unknown) => UiOpInput<O> | undefined;
|
|
43
|
+
}
|
|
44
|
+
export declare const uiOps: {
|
|
45
|
+
readonly [O in UiOp]: UiOpSpec<O>;
|
|
46
|
+
};
|
|
47
|
+
export declare const UI_OPS: readonly UiOp[];
|
|
48
|
+
export declare const isUiOp: (value: unknown) => value is UiOp;
|
|
49
|
+
export declare const LEGACY_UI_OPS: readonly UiOp[];
|
|
50
|
+
export declare const uiOpReadOnly: {
|
|
51
|
+
readonly [O in UiOp]: boolean;
|
|
52
|
+
};
|
|
53
|
+
export interface AgentOrigin {
|
|
54
|
+
readonly via: Extract<ActionSource, "mcp" | "agent">;
|
|
55
|
+
readonly name?: string | undefined;
|
|
56
|
+
}
|
|
57
|
+
export type UiRequest = {
|
|
58
|
+
readonly [O in UiOp]: {
|
|
59
|
+
readonly id: string;
|
|
60
|
+
readonly op: O;
|
|
61
|
+
readonly input: UiOpInput<O>;
|
|
62
|
+
readonly origin: AgentOrigin;
|
|
63
|
+
readonly timeoutMs: number;
|
|
64
|
+
};
|
|
65
|
+
}[UiOp];
|
|
66
|
+
export declare const UI_ERROR_CODES: readonly ["unknown_route", "unknown_client", "ambiguous_client", "not_mounted", "not_writable", "invalid_value", "user_editing", "unsupported_op", "busy", "timeout", "outcome_unknown", "internal"];
|
|
67
|
+
export type UiErrorCode = (typeof UI_ERROR_CODES)[number];
|
|
68
|
+
export interface UiError {
|
|
69
|
+
readonly code: UiErrorCode;
|
|
70
|
+
readonly message: string;
|
|
71
|
+
readonly issues?: readonly {
|
|
72
|
+
readonly path: string;
|
|
73
|
+
readonly message: string;
|
|
74
|
+
}[] | undefined;
|
|
75
|
+
}
|
|
76
|
+
export type UiReply = {
|
|
77
|
+
readonly type: "reply";
|
|
78
|
+
readonly id: string;
|
|
79
|
+
readonly ok: true;
|
|
80
|
+
readonly result: unknown;
|
|
81
|
+
} | {
|
|
82
|
+
readonly type: "reply";
|
|
83
|
+
readonly id: string;
|
|
84
|
+
readonly ok: false;
|
|
85
|
+
readonly error: UiError;
|
|
86
|
+
};
|
|
87
|
+
export interface PresenceUpdate {
|
|
88
|
+
readonly type: "presence";
|
|
89
|
+
readonly focused: boolean;
|
|
90
|
+
readonly visible: boolean;
|
|
91
|
+
readonly platform: string;
|
|
92
|
+
readonly buildId?: string | undefined;
|
|
93
|
+
readonly ops?: readonly string[] | undefined;
|
|
94
|
+
readonly canConfirm?: boolean | undefined;
|
|
95
|
+
/** Chat threads this client shows; a confirmation bound to one reaches every watcher. */
|
|
96
|
+
readonly watching?: readonly string[] | undefined;
|
|
97
|
+
}
|
|
98
|
+
export interface LeaveNotice {
|
|
99
|
+
readonly type: "leave";
|
|
100
|
+
}
|
|
101
|
+
export interface ConfirmationAnswer {
|
|
102
|
+
readonly type: "answer";
|
|
103
|
+
readonly id: string;
|
|
104
|
+
readonly approve: boolean;
|
|
105
|
+
}
|
|
106
|
+
export type ClientMessage = UiReply | PresenceUpdate | LeaveNotice | ConfirmationAnswer;
|
|
107
|
+
export interface ConfirmationPrompt {
|
|
108
|
+
readonly id: string;
|
|
109
|
+
readonly action: string;
|
|
110
|
+
readonly description: string;
|
|
111
|
+
readonly input: unknown;
|
|
112
|
+
readonly origin: AgentOrigin;
|
|
113
|
+
readonly expiresInMs: number;
|
|
114
|
+
/** The chat thread whose turn asked; the chat renders the card inline there. */
|
|
115
|
+
readonly threadId?: string | undefined;
|
|
116
|
+
}
|
|
117
|
+
export interface ConfirmationsFrame {
|
|
118
|
+
readonly type: "confirmations";
|
|
119
|
+
readonly items: readonly ConfirmationPrompt[];
|
|
120
|
+
}
|
|
121
|
+
export type UiFrame = UiRequest | ConfirmationsFrame;
|
|
122
|
+
export type JsonObject = {
|
|
123
|
+
readonly [key: string]: unknown;
|
|
124
|
+
};
|
|
125
|
+
export interface TruncatedValue {
|
|
126
|
+
readonly truncated: true;
|
|
127
|
+
readonly bytes: number;
|
|
128
|
+
}
|
|
129
|
+
export interface MatchedRouteSnapshot {
|
|
130
|
+
readonly notFound: false;
|
|
131
|
+
readonly path: string;
|
|
132
|
+
readonly params: Readonly<Record<string, string>>;
|
|
133
|
+
readonly search: JsonObject;
|
|
134
|
+
readonly url: string;
|
|
135
|
+
}
|
|
136
|
+
export interface NotFoundRouteSnapshot {
|
|
137
|
+
readonly notFound: true;
|
|
138
|
+
readonly url: string;
|
|
139
|
+
}
|
|
140
|
+
export type RouteSnapshot = MatchedRouteSnapshot | NotFoundRouteSnapshot;
|
|
141
|
+
export type QueryStatus = "pending" | "error" | "success";
|
|
142
|
+
export interface QuerySnapshot {
|
|
143
|
+
readonly action: string;
|
|
144
|
+
readonly input: unknown;
|
|
145
|
+
readonly status: QueryStatus;
|
|
146
|
+
}
|
|
147
|
+
export interface SingleViewSnapshot {
|
|
148
|
+
readonly value: JsonObject | TruncatedValue;
|
|
149
|
+
readonly shown?: number | undefined;
|
|
150
|
+
}
|
|
151
|
+
export interface ItemSnapshot {
|
|
152
|
+
readonly key: string;
|
|
153
|
+
readonly value: JsonObject | TruncatedValue;
|
|
154
|
+
readonly shown: number;
|
|
155
|
+
}
|
|
156
|
+
export interface KeyedViewSnapshot {
|
|
157
|
+
readonly items: readonly ItemSnapshot[];
|
|
158
|
+
readonly offscreen: number;
|
|
159
|
+
}
|
|
160
|
+
export type ViewSnapshot = SingleViewSnapshot | KeyedViewSnapshot;
|
|
161
|
+
export interface RecentRef extends ViewRef {
|
|
162
|
+
readonly agoMs: number;
|
|
163
|
+
}
|
|
164
|
+
export interface FocusSnapshot {
|
|
165
|
+
readonly view?: string | undefined;
|
|
166
|
+
readonly key?: string | undefined;
|
|
167
|
+
readonly field?: string | undefined;
|
|
168
|
+
readonly label?: string | undefined;
|
|
169
|
+
}
|
|
170
|
+
export interface SelectionSnapshot {
|
|
171
|
+
readonly text: string;
|
|
172
|
+
readonly within: ViewRef;
|
|
173
|
+
readonly truncated: boolean;
|
|
174
|
+
}
|
|
175
|
+
export interface AttentionSnapshot {
|
|
176
|
+
readonly focus: FocusSnapshot | null;
|
|
177
|
+
readonly selection: SelectionSnapshot | null;
|
|
178
|
+
readonly lastInteracted: RecentRef | null;
|
|
179
|
+
readonly lastEntered: RecentRef | null;
|
|
180
|
+
readonly focal: ViewRef | null;
|
|
181
|
+
}
|
|
182
|
+
export interface ScreenSnapshot {
|
|
183
|
+
readonly route: RouteSnapshot | null;
|
|
184
|
+
readonly queries: readonly QuerySnapshot[];
|
|
185
|
+
readonly views: Readonly<Record<string, ViewSnapshot>>;
|
|
186
|
+
readonly attention: AttentionSnapshot;
|
|
187
|
+
readonly truncated: boolean;
|
|
188
|
+
}
|
|
189
|
+
export interface ClientSummary {
|
|
190
|
+
readonly id: string;
|
|
191
|
+
readonly platform: string;
|
|
192
|
+
readonly buildId?: string | undefined;
|
|
193
|
+
readonly focused: boolean;
|
|
194
|
+
readonly visible: boolean;
|
|
195
|
+
readonly seenAgoMs: number;
|
|
196
|
+
}
|
|
197
|
+
export type ParsedUiFrame = {
|
|
198
|
+
readonly ok: true;
|
|
199
|
+
readonly frame: UiFrame;
|
|
200
|
+
} | {
|
|
201
|
+
readonly ok: false;
|
|
202
|
+
readonly id: string | undefined;
|
|
203
|
+
};
|
|
204
|
+
export declare function parseUiFrame(data: string): ParsedUiFrame;
|
|
205
|
+
export {};
|
|
206
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
export const UI_CHANNEL = "ui";
|
|
2
|
+
/** Presence names at most this many watched chat threads; a client sending more is truncated. */
|
|
3
|
+
export const MAX_WATCHED_THREADS = 8;
|
|
4
|
+
export const uiOps = {
|
|
5
|
+
screen: { readOnly: true, input: (value) => (isFields(value) ? {} : undefined) },
|
|
6
|
+
navigate: { readOnly: false, input: (value) => navigateInputOf(value) },
|
|
7
|
+
set: { readOnly: false, input: (value) => setInputOf(value) },
|
|
8
|
+
highlight: { readOnly: false, input: (value) => highlightInputOf(value) },
|
|
9
|
+
};
|
|
10
|
+
export const UI_OPS = Object.keys(uiOps);
|
|
11
|
+
export const isUiOp = (value) => typeof value === "string" && Object.hasOwn(uiOps, value);
|
|
12
|
+
export const LEGACY_UI_OPS = ["screen", "navigate"];
|
|
13
|
+
export const uiOpReadOnly = {
|
|
14
|
+
screen: uiOps.screen.readOnly,
|
|
15
|
+
navigate: uiOps.navigate.readOnly,
|
|
16
|
+
set: uiOps.set.readOnly,
|
|
17
|
+
highlight: uiOps.highlight.readOnly,
|
|
18
|
+
};
|
|
19
|
+
export const UI_ERROR_CODES = [
|
|
20
|
+
"unknown_route",
|
|
21
|
+
"unknown_client",
|
|
22
|
+
"ambiguous_client",
|
|
23
|
+
"not_mounted",
|
|
24
|
+
"not_writable",
|
|
25
|
+
"invalid_value",
|
|
26
|
+
"user_editing",
|
|
27
|
+
"unsupported_op",
|
|
28
|
+
"busy",
|
|
29
|
+
"timeout",
|
|
30
|
+
"outcome_unknown",
|
|
31
|
+
"internal",
|
|
32
|
+
];
|
|
33
|
+
const isFields = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
34
|
+
const isString = (value) => typeof value === "string";
|
|
35
|
+
const isBoolean = (value) => typeof value === "boolean";
|
|
36
|
+
const isPositiveInteger = (value) => typeof value === "number" && Number.isSafeInteger(value) && value > 0;
|
|
37
|
+
const isStringFields = (value) => isFields(value) && Object.values(value).every(isString);
|
|
38
|
+
const absentOr = (value, guard) => value === undefined || guard(value);
|
|
39
|
+
function originOf(value) {
|
|
40
|
+
if (!isFields(value))
|
|
41
|
+
return undefined;
|
|
42
|
+
const { via, name } = value;
|
|
43
|
+
if (via !== "mcp" && via !== "agent")
|
|
44
|
+
return undefined;
|
|
45
|
+
if (!absentOr(name, isString))
|
|
46
|
+
return undefined;
|
|
47
|
+
return name === undefined ? { via } : { via, name };
|
|
48
|
+
}
|
|
49
|
+
function navigateInputOf(value) {
|
|
50
|
+
if (!isFields(value) || !isString(value.to))
|
|
51
|
+
return undefined;
|
|
52
|
+
const { to, params, search, replace } = value;
|
|
53
|
+
if (!absentOr(params, isStringFields) ||
|
|
54
|
+
!absentOr(search, isFields) ||
|
|
55
|
+
!absentOr(replace, isBoolean)) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
to,
|
|
60
|
+
...(params === undefined ? {} : { params }),
|
|
61
|
+
...(search === undefined ? {} : { search }),
|
|
62
|
+
...(replace === undefined ? {} : { replace }),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function setInputOf(value) {
|
|
66
|
+
if (!isFields(value) || !isString(value.view) || !isFields(value.value)) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
if (!absentOr(value.key, isString))
|
|
70
|
+
return undefined;
|
|
71
|
+
const { view, key } = value;
|
|
72
|
+
return key === undefined
|
|
73
|
+
? { view, value: value.value }
|
|
74
|
+
: { view, key, value: value.value };
|
|
75
|
+
}
|
|
76
|
+
function highlightInputOf(value) {
|
|
77
|
+
if (!isFields(value) || !isString(value.view))
|
|
78
|
+
return undefined;
|
|
79
|
+
if (!absentOr(value.key, isString) || !absentOr(value.field, isString))
|
|
80
|
+
return undefined;
|
|
81
|
+
const { view, key, field } = value;
|
|
82
|
+
return {
|
|
83
|
+
view,
|
|
84
|
+
...(key === undefined ? {} : { key }),
|
|
85
|
+
...(field === undefined ? {} : { field }),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function requestOf(json) {
|
|
89
|
+
if (!isFields(json))
|
|
90
|
+
return undefined;
|
|
91
|
+
const { id, op, input, timeoutMs } = json;
|
|
92
|
+
const origin = originOf(json.origin);
|
|
93
|
+
if (!isString(id) || id === "" || !origin || !isPositiveInteger(timeoutMs)) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
if (!isUiOp(op))
|
|
97
|
+
return undefined;
|
|
98
|
+
const parsed = uiOps[op].input(input);
|
|
99
|
+
return parsed === undefined
|
|
100
|
+
? undefined
|
|
101
|
+
: { id, origin, timeoutMs, op, input: parsed };
|
|
102
|
+
}
|
|
103
|
+
const isNonNegativeInteger = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
104
|
+
function promptOf(json) {
|
|
105
|
+
if (!isFields(json))
|
|
106
|
+
return undefined;
|
|
107
|
+
const { id, action, description, input, expiresInMs } = json;
|
|
108
|
+
const origin = originOf(json.origin);
|
|
109
|
+
if (!isString(id) || id === "" || !isString(action) || !isString(description)) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
if (!origin || !isNonNegativeInteger(expiresInMs))
|
|
113
|
+
return undefined;
|
|
114
|
+
const { threadId } = json;
|
|
115
|
+
return {
|
|
116
|
+
id,
|
|
117
|
+
action,
|
|
118
|
+
description,
|
|
119
|
+
input,
|
|
120
|
+
origin,
|
|
121
|
+
expiresInMs,
|
|
122
|
+
...(isString(threadId) && threadId !== "" ? { threadId } : {}),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function confirmationsOf(json) {
|
|
126
|
+
if (!Array.isArray(json.items))
|
|
127
|
+
return undefined;
|
|
128
|
+
const items = json.items.flatMap((item) => promptOf(item) ?? []);
|
|
129
|
+
return { type: "confirmations", items };
|
|
130
|
+
}
|
|
131
|
+
function parseJson(data) {
|
|
132
|
+
try {
|
|
133
|
+
return JSON.parse(data);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const idOf = (json) => {
|
|
140
|
+
const id = isFields(json) ? json.id : undefined;
|
|
141
|
+
return isString(id) && id !== "" ? id : undefined;
|
|
142
|
+
};
|
|
143
|
+
export function parseUiFrame(data) {
|
|
144
|
+
const json = parseJson(data);
|
|
145
|
+
if (isFields(json) && json.type === "confirmations") {
|
|
146
|
+
const frame = confirmationsOf(json);
|
|
147
|
+
return frame ? { ok: true, frame } : { ok: false, id: undefined };
|
|
148
|
+
}
|
|
149
|
+
const request = requestOf(json);
|
|
150
|
+
return request ? { ok: true, frame: request } : { ok: false, id: idOf(json) };
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ServerChannel } from "@parlor/sync";
|
|
2
|
+
import type { UiManifest } from "../manifest.js";
|
|
3
|
+
import { type AgentOrigin, type ClientMessage } from "../protocol.js";
|
|
4
|
+
import { type UiReceipt } from "./broker.js";
|
|
5
|
+
import { type ConfirmationOutcome, type ConfirmationRequest } from "./confirmations.js";
|
|
6
|
+
import { type UiManifestSource } from "./manifest-source.js";
|
|
7
|
+
import { type AgentTool, type AgentToolContext } from "./tools.js";
|
|
8
|
+
export type ExternalUiPolicy = boolean | "read-only";
|
|
9
|
+
export interface AgentUiOptions {
|
|
10
|
+
readonly external?: ExternalUiPolicy | undefined;
|
|
11
|
+
readonly timeoutMs?: number | undefined;
|
|
12
|
+
readonly confirmTimeoutMs?: number | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface AgentUiDependencies {
|
|
15
|
+
readonly audience: (request: Request) => string | Promise<string>;
|
|
16
|
+
readonly webOrigin?: string | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentUi {
|
|
19
|
+
readonly channel: ServerChannel;
|
|
20
|
+
touch(clientId: string | undefined, audience: string): void;
|
|
21
|
+
receive(clientId: string, audience: string, message: ClientMessage): UiReceipt;
|
|
22
|
+
tools(surface: "mcp" | "agent"): readonly AgentTool[];
|
|
23
|
+
/** `chat` binds an inline agent's `ui_*` calls to the client its turn's prompt came from. */
|
|
24
|
+
contextFor(request: Request | undefined, origin: AgentOrigin, signal?: AbortSignal, chat?: {
|
|
25
|
+
readonly clientId: string;
|
|
26
|
+
}): Promise<AgentToolContext>;
|
|
27
|
+
instructions(surface: "mcp" | "agent"): string | undefined;
|
|
28
|
+
confirm(request: ConfirmationRequest): Promise<ConfirmationOutcome>;
|
|
29
|
+
manifest(): UiManifest | undefined;
|
|
30
|
+
install(source: UiManifestSource): void;
|
|
31
|
+
close(): void;
|
|
32
|
+
}
|
|
33
|
+
export declare const DEFAULT_UI_TIMEOUT_MS = 10000;
|
|
34
|
+
export declare function webOriginFromEnv(value?: string | undefined): string | undefined;
|
|
35
|
+
export declare function createAgentUi(options: AgentUiOptions & AgentUiDependencies): AgentUi;
|
|
36
|
+
//# sourceMappingURL=agent-ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ui.d.ts","sourceRoot":"","sources":["../../src/server/agent-ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,WAAW,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IAC/E,KAAK,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,SAAS,EAAE,CAAC;IACtD,6FAA6F;IAC7F,UAAU,CACR,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3D,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpE,QAAQ,IAAI,UAAU,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,wBAAgB,gBAAgB,CAC9B,KAAK,GAAE,MAAM,GAAG,SAAyC,GACxD,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,GAAG,OAAO,CA0EpF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { UI_CHANNEL } from "../protocol.js";
|
|
2
|
+
import { UiBroker } from "./broker.js";
|
|
3
|
+
import { ConfirmationBoard, DEFAULT_CONFIRM_TIMEOUT_MS, } from "./confirmations.js";
|
|
4
|
+
import { ClientDirectory } from "./directory.js";
|
|
5
|
+
import { normalizeManifest, } from "./manifest-source.js";
|
|
6
|
+
import { createUiTools, uiInstructions, } from "./tools.js";
|
|
7
|
+
export const DEFAULT_UI_TIMEOUT_MS = 10_000;
|
|
8
|
+
export function webOriginFromEnv(value = process.env.PARLOR_WEB_ORIGIN) {
|
|
9
|
+
return value && /^https?:\/\//.test(value) ? value : undefined;
|
|
10
|
+
}
|
|
11
|
+
export function createAgentUi(options) {
|
|
12
|
+
const external = options.external ?? true;
|
|
13
|
+
const webOrigin = "webOrigin" in options ? options.webOrigin : webOriginFromEnv();
|
|
14
|
+
const directory = new ClientDirectory();
|
|
15
|
+
const confirmations = new ConfirmationBoard({
|
|
16
|
+
directory,
|
|
17
|
+
timeoutMs: options.confirmTimeoutMs ?? DEFAULT_CONFIRM_TIMEOUT_MS,
|
|
18
|
+
});
|
|
19
|
+
const broker = new UiBroker({ timeoutMs: options.timeoutMs ?? DEFAULT_UI_TIMEOUT_MS });
|
|
20
|
+
const toolsFor = createUiTools({ directory, broker });
|
|
21
|
+
let source = () => undefined;
|
|
22
|
+
let normalized;
|
|
23
|
+
const manifest = () => {
|
|
24
|
+
const input = source();
|
|
25
|
+
if (!input)
|
|
26
|
+
return undefined;
|
|
27
|
+
if (normalized?.input !== input) {
|
|
28
|
+
normalized = { input, manifest: normalizeManifest(input) };
|
|
29
|
+
}
|
|
30
|
+
return normalized.manifest;
|
|
31
|
+
};
|
|
32
|
+
const tools = (surface) => {
|
|
33
|
+
const allTools = toolsFor(manifest());
|
|
34
|
+
if (surface === "agent" || external === true)
|
|
35
|
+
return allTools;
|
|
36
|
+
if (external === "read-only")
|
|
37
|
+
return allTools.filter((tool) => tool.readOnly);
|
|
38
|
+
return [];
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
channel: {
|
|
42
|
+
event: UI_CHANNEL,
|
|
43
|
+
connect: (connection) => directory.connect(connection),
|
|
44
|
+
},
|
|
45
|
+
touch: (clientId, audience) => directory.touch(clientId, audience),
|
|
46
|
+
receive(clientId, audience, message) {
|
|
47
|
+
switch (message.type) {
|
|
48
|
+
case "presence": {
|
|
49
|
+
const outcome = directory.presence(clientId, audience, message);
|
|
50
|
+
const target = directory.target(clientId);
|
|
51
|
+
if (outcome === "registered" && target)
|
|
52
|
+
broker.reconnected(target);
|
|
53
|
+
return { accepted: outcome !== "rejected" };
|
|
54
|
+
}
|
|
55
|
+
case "leave": {
|
|
56
|
+
const left = directory.leave(clientId, audience);
|
|
57
|
+
if (left)
|
|
58
|
+
broker.abandon(clientId);
|
|
59
|
+
return { accepted: left };
|
|
60
|
+
}
|
|
61
|
+
case "reply":
|
|
62
|
+
return broker.reply(clientId, message);
|
|
63
|
+
case "answer":
|
|
64
|
+
return { accepted: confirmations.answer(clientId, audience, message) };
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
tools,
|
|
68
|
+
async contextFor(request, origin, signal, chat) {
|
|
69
|
+
return {
|
|
70
|
+
scope: request ? await options.audience(request) : "default",
|
|
71
|
+
...(chat ? { clientId: chat.clientId } : {}),
|
|
72
|
+
origin,
|
|
73
|
+
signal,
|
|
74
|
+
webOrigin: webOrigin ?? (request ? new URL(request.url).origin : undefined),
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
instructions: (surface) => (tools(surface).length > 0 ? uiInstructions() : undefined),
|
|
78
|
+
confirm: (request) => confirmations.ask(request),
|
|
79
|
+
manifest,
|
|
80
|
+
install(next) {
|
|
81
|
+
source = next;
|
|
82
|
+
},
|
|
83
|
+
close: () => {
|
|
84
|
+
broker.close();
|
|
85
|
+
confirmations.close();
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=agent-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ui.js","sourceRoot":"","sources":["../../src/server/agent-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Principal, type UserId } from "@parlor/core";
|
|
2
|
+
/**
|
|
3
|
+
* Whose screens a request may see and drive: its scope and, once signed in, its user.
|
|
4
|
+
* Without auth, or as the dev user, it is the scope itself.
|
|
5
|
+
*/
|
|
6
|
+
export declare function audienceOf(scope: string, principal: Principal | undefined): string;
|
|
7
|
+
/** `audienceOf` for a known user: the sync stream only that user's tabs and computers hear. */
|
|
8
|
+
export declare function userAudience(scope: string, userId: UserId | undefined): string;
|
|
9
|
+
//# sourceMappingURL=audience.d.ts.map
|