@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.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -2
  3. package/dist/client/agent-ui-client.d.ts +60 -0
  4. package/dist/client/agent-ui-client.d.ts.map +1 -0
  5. package/dist/client/agent-ui-client.js +407 -0
  6. package/dist/client/agent-ui-client.js.map +1 -0
  7. package/dist/client/confirmations.d.ts +34 -0
  8. package/dist/client/confirmations.d.ts.map +1 -0
  9. package/dist/client/confirmations.js +95 -0
  10. package/dist/client/confirmations.js.map +1 -0
  11. package/dist/client/environment.d.ts +37 -0
  12. package/dist/client/environment.d.ts.map +1 -0
  13. package/dist/client/environment.js +79 -0
  14. package/dist/client/environment.js.map +1 -0
  15. package/dist/client/highlight.d.ts +12 -0
  16. package/dist/client/highlight.d.ts.map +1 -0
  17. package/dist/client/highlight.js +98 -0
  18. package/dist/client/highlight.js.map +1 -0
  19. package/dist/client/index.d.ts +7 -0
  20. package/dist/client/index.d.ts.map +1 -0
  21. package/dist/client/index.js +7 -0
  22. package/dist/client/index.js.map +1 -0
  23. package/dist/client/json-equal.d.ts +2 -0
  24. package/dist/client/json-equal.d.ts.map +1 -0
  25. package/dist/client/json-equal.js +20 -0
  26. package/dist/client/json-equal.js.map +1 -0
  27. package/dist/client/registry.d.ts +54 -0
  28. package/dist/client/registry.d.ts.map +1 -0
  29. package/dist/client/registry.js +280 -0
  30. package/dist/client/registry.js.map +1 -0
  31. package/dist/client/screen.d.ts +20 -0
  32. package/dist/client/screen.d.ts.map +1 -0
  33. package/dist/client/screen.js +196 -0
  34. package/dist/client/screen.js.map +1 -0
  35. package/dist/client/write.d.ts +13 -0
  36. package/dist/client/write.d.ts.map +1 -0
  37. package/dist/client/write.js +101 -0
  38. package/dist/client/write.js.map +1 -0
  39. package/dist/index.d.ts +4 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +4 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/manifest.d.ts +44 -0
  44. package/dist/manifest.d.ts.map +1 -0
  45. package/dist/manifest.js +23 -0
  46. package/dist/manifest.js.map +1 -0
  47. package/dist/protocol.d.ts +206 -0
  48. package/dist/protocol.d.ts.map +1 -0
  49. package/dist/protocol.js +152 -0
  50. package/dist/protocol.js.map +1 -0
  51. package/dist/server/agent-ui.d.ts +36 -0
  52. package/dist/server/agent-ui.d.ts.map +1 -0
  53. package/dist/server/agent-ui.js +89 -0
  54. package/dist/server/agent-ui.js.map +1 -0
  55. package/dist/server/audience.d.ts +9 -0
  56. package/dist/server/audience.d.ts.map +1 -0
  57. package/dist/server/audience.js +15 -0
  58. package/dist/server/audience.js.map +1 -0
  59. package/dist/server/broker.d.ts +29 -0
  60. package/dist/server/broker.d.ts.map +1 -0
  61. package/dist/server/broker.js +152 -0
  62. package/dist/server/broker.js.map +1 -0
  63. package/dist/server/confirmations.d.ts +40 -0
  64. package/dist/server/confirmations.d.ts.map +1 -0
  65. package/dist/server/confirmations.js +230 -0
  66. package/dist/server/confirmations.js.map +1 -0
  67. package/dist/server/directory.d.ts +41 -0
  68. package/dist/server/directory.d.ts.map +1 -0
  69. package/dist/server/directory.js +193 -0
  70. package/dist/server/directory.js.map +1 -0
  71. package/dist/server/index.d.ts +10 -0
  72. package/dist/server/index.d.ts.map +1 -0
  73. package/dist/server/index.js +10 -0
  74. package/dist/server/index.js.map +1 -0
  75. package/dist/server/manifest-source.d.ts +10 -0
  76. package/dist/server/manifest-source.d.ts.map +1 -0
  77. package/dist/server/manifest-source.js +36 -0
  78. package/dist/server/manifest-source.js.map +1 -0
  79. package/dist/server/routes.d.ts +11 -0
  80. package/dist/server/routes.d.ts.map +1 -0
  81. package/dist/server/routes.js +38 -0
  82. package/dist/server/routes.js.map +1 -0
  83. package/dist/server/schemas.d.ts +69 -0
  84. package/dist/server/schemas.d.ts.map +1 -0
  85. package/dist/server/schemas.js +78 -0
  86. package/dist/server/schemas.js.map +1 -0
  87. package/dist/server/tools.d.ts +49 -0
  88. package/dist/server/tools.d.ts.map +1 -0
  89. package/dist/server/tools.js +312 -0
  90. package/dist/server/tools.js.map +1 -0
  91. package/dist/view.d.ts +54 -0
  92. package/dist/view.d.ts.map +1 -0
  93. package/dist/view.js +15 -0
  94. package/dist/view.js.map +1 -0
  95. package/dist/vite/index.d.ts +3 -0
  96. package/dist/vite/index.d.ts.map +1 -0
  97. package/dist/vite/index.js +3 -0
  98. package/dist/vite/index.js.map +1 -0
  99. package/dist/vite/manifest.d.ts +5 -0
  100. package/dist/vite/manifest.d.ts.map +1 -0
  101. package/dist/vite/manifest.js +107 -0
  102. package/dist/vite/manifest.js.map +1 -0
  103. package/dist/vite/plugin.d.ts +10 -0
  104. package/dist/vite/plugin.d.ts.map +1 -0
  105. package/dist/vite/plugin.js +143 -0
  106. package/dist/vite/plugin.js.map +1 -0
  107. package/package.json +65 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmations.js","sourceRoot":"","sources":["../../src/client/confirmations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export interface IntersectionObserverLike {
2
+ observe(element: Element): void;
3
+ unobserve(element: Element): void;
4
+ disconnect(): void;
5
+ }
6
+ export interface IntersectionEntryLike {
7
+ readonly target: Element;
8
+ readonly isIntersecting: boolean;
9
+ }
10
+ export interface RectLike {
11
+ readonly top: number;
12
+ readonly bottom: number;
13
+ readonly left: number;
14
+ readonly right: number;
15
+ readonly width: number;
16
+ readonly height: number;
17
+ }
18
+ export interface BrowserEnvironment {
19
+ readonly document: Document | undefined;
20
+ readonly window: (Window & typeof globalThis) | undefined;
21
+ readonly observeIntersections: (callback: (entries: readonly IntersectionEntryLike[]) => void) => IntersectionObserverLike | undefined;
22
+ readonly rect: (element: Element) => RectLike;
23
+ readonly viewport: () => {
24
+ readonly width: number;
25
+ readonly height: number;
26
+ };
27
+ readonly now: () => number;
28
+ readonly nextTask: () => Promise<void>;
29
+ readonly setTimeout: typeof globalThis.setTimeout;
30
+ readonly clearTimeout: typeof globalThis.clearTimeout;
31
+ readonly scrollIntoView: (element: Element) => Promise<void>;
32
+ readonly hasFinePointer: () => boolean;
33
+ }
34
+ export declare const SCROLL_SETTLE_CAP_MS = 900;
35
+ export declare function scrollIntoCenter(window: (Window & typeof globalThis) | undefined, element: Element): Promise<void>;
36
+ export declare function browserEnvironment(): BrowserEnvironment;
37
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/client/environment.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,OAAO,UAAU,CAAC,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,KAAK,IAAI,KAC1D,wBAAwB,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,OAAO,UAAU,CAAC,UAAU,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC;CACxC;AAED,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAKxC,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,CAAC,MAAM,GAAG,OAAO,UAAU,CAAC,GAAG,SAAS,EAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,wBAAgB,kBAAkB,IAAI,kBAAkB,CA6BvD"}
@@ -0,0 +1,79 @@
1
+ export const SCROLL_SETTLE_CAP_MS = 900;
2
+ const NO_SCROLL_FRAMES = 6;
3
+ const STILL_FRAMES = 2;
4
+ export function scrollIntoCenter(window, element) {
5
+ if (!window)
6
+ return Promise.resolve();
7
+ const hidden = window.document?.visibilityState === "hidden";
8
+ const reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
9
+ const started = window.performance.now();
10
+ let last = element.getBoundingClientRect().top;
11
+ element.scrollIntoView({
12
+ block: "center",
13
+ inline: "nearest",
14
+ behavior: reduced || hidden ? "instant" : "smooth",
15
+ });
16
+ if (hidden)
17
+ return Promise.resolve();
18
+ return new Promise((resolve) => {
19
+ let moved = false;
20
+ let still = 0;
21
+ let frames = 0;
22
+ let done = false;
23
+ const finish = () => {
24
+ done = true;
25
+ globalThis.clearTimeout(cap);
26
+ resolve();
27
+ };
28
+ const cap = globalThis.setTimeout(finish, SCROLL_SETTLE_CAP_MS);
29
+ const step = () => {
30
+ if (done)
31
+ return;
32
+ const { top } = element.getBoundingClientRect();
33
+ frames++;
34
+ if (top === last)
35
+ still++;
36
+ else {
37
+ moved = true;
38
+ still = 0;
39
+ last = top;
40
+ }
41
+ const settled = moved ? still >= STILL_FRAMES : frames >= NO_SCROLL_FRAMES;
42
+ if (settled || window.performance.now() - started >= SCROLL_SETTLE_CAP_MS) {
43
+ finish();
44
+ return;
45
+ }
46
+ window.requestAnimationFrame(step);
47
+ };
48
+ window.requestAnimationFrame(step);
49
+ });
50
+ }
51
+ export function browserEnvironment() {
52
+ const window = typeof globalThis.window === "undefined" ? undefined : globalThis.window;
53
+ return {
54
+ document: window?.document,
55
+ window,
56
+ observeIntersections: (callback) => typeof IntersectionObserver === "undefined"
57
+ ? undefined
58
+ : new IntersectionObserver((entries) => callback(entries)),
59
+ rect: (element) => element.getBoundingClientRect(),
60
+ viewport: () => ({
61
+ width: window?.innerWidth ?? 0,
62
+ height: window?.innerHeight ?? 0,
63
+ }),
64
+ now: () => Date.now(),
65
+ nextTask: () => new Promise((resolve) => {
66
+ const channel = new MessageChannel();
67
+ channel.port1.onmessage = () => {
68
+ channel.port1.close();
69
+ resolve();
70
+ };
71
+ channel.port2.postMessage(undefined);
72
+ }),
73
+ setTimeout: globalThis.setTimeout.bind(globalThis),
74
+ clearTimeout: globalThis.clearTimeout.bind(globalThis),
75
+ scrollIntoView: (element) => scrollIntoCenter(window, element),
76
+ hasFinePointer: () => window?.matchMedia("(pointer: fine)").matches ?? false,
77
+ };
78
+ }
79
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/client/environment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { UiError, UiOpInput, UiOpResults } from "../protocol.js";
2
+ import type { BrowserEnvironment } from "./environment.js";
3
+ import type { ViewRegistryRuntime } from "./registry.js";
4
+ export declare const HIGHLIGHT_ATTRIBUTE = "data-parlor-highlight";
5
+ export declare const HIGHLIGHT_HOLD_MS = 2000;
6
+ export interface HighlightMarks {
7
+ mark(element: Element): void;
8
+ dispose(): void;
9
+ }
10
+ export declare function createHighlightMarks(env: Pick<BrowserEnvironment, "setTimeout" | "clearTimeout">, holdMs?: number): HighlightMarks;
11
+ export declare function highlightView(registry: ViewRegistryRuntime, input: UiOpInput<"highlight">, env: BrowserEnvironment, marks: HighlightMarks): Promise<UiOpResults["highlight"] | UiError>;
12
+ //# sourceMappingURL=highlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../src/client/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAIzD,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAC3D,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,cAAc,CAAC,EAC5D,MAAM,GAAE,MAA0B,GACjC,cAAc,CAoBhB;AAqDD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,EAC7B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,CAgC7C"}
@@ -0,0 +1,98 @@
1
+ import { measure } from "./screen.js";
2
+ import { notMounted } from "./write.js";
3
+ export const HIGHLIGHT_ATTRIBUTE = "data-parlor-highlight";
4
+ export const HIGHLIGHT_HOLD_MS = 2000;
5
+ export function createHighlightMarks(env, holdMs = HIGHLIGHT_HOLD_MS) {
6
+ const timers = new Map();
7
+ const clear = (element) => {
8
+ env.clearTimeout(timers.get(element));
9
+ timers.delete(element);
10
+ element.removeAttribute(HIGHLIGHT_ATTRIBUTE);
11
+ };
12
+ return {
13
+ mark(element) {
14
+ env.clearTimeout(timers.get(element));
15
+ element.setAttribute(HIGHLIGHT_ATTRIBUTE, "");
16
+ timers.set(element, env.setTimeout(() => clear(element), holdMs));
17
+ },
18
+ dispose() {
19
+ for (const element of [...timers.keys()])
20
+ clear(element);
21
+ },
22
+ };
23
+ }
24
+ const quote = (name) => name.replace(/["\\]/g, "\\$&");
25
+ const NON_TEXT_INPUTS = new Set([
26
+ "button",
27
+ "checkbox",
28
+ "color",
29
+ "file",
30
+ "image",
31
+ "radio",
32
+ "range",
33
+ "reset",
34
+ "submit",
35
+ ]);
36
+ const CONTENT_EDITABLE = '[contenteditable=""],[contenteditable="true"],[contenteditable="plaintext-only"]';
37
+ function takesTyping(element) {
38
+ switch (element.tagName) {
39
+ case "TEXTAREA":
40
+ case "SELECT":
41
+ return true;
42
+ case "INPUT":
43
+ return !NON_TEXT_INPUTS.has(element.type);
44
+ default:
45
+ return element.closest(CONTENT_EDITABLE) !== null;
46
+ }
47
+ }
48
+ function typingElsewhere(registry, env, target) {
49
+ const document = env.document;
50
+ if (!document?.hasFocus())
51
+ return undefined;
52
+ const active = document.activeElement;
53
+ return active &&
54
+ active !== target &&
55
+ active !== registry.agentFocus() &&
56
+ takesTyping(active)
57
+ ? active
58
+ : undefined;
59
+ }
60
+ async function untilIntersectionsReported(env) {
61
+ // The observer's notification is queued after our first task, so wait for a second.
62
+ await env.nextTask();
63
+ await env.nextTask();
64
+ }
65
+ export async function highlightView(registry, input, env, marks) {
66
+ const root = registry.find(input)?.element;
67
+ if (!root)
68
+ return notMounted(input);
69
+ const element = input.field === undefined
70
+ ? root
71
+ : root.querySelector(`[name="${quote(input.field)}"]`);
72
+ if (!element) {
73
+ return {
74
+ code: "not_mounted",
75
+ message: `${input.view} has no field ${input.field} on screen.`,
76
+ issues: [{ path: "field", message: input.field }],
77
+ };
78
+ }
79
+ const typing = typingElsewhere(registry, env, element);
80
+ if (typing) {
81
+ const name = typing.getAttribute("name") ?? typing.tagName.toLowerCase();
82
+ return {
83
+ code: "user_editing",
84
+ message: `The user is typing in ${name}. Wait, or ask them.`,
85
+ issues: [{ path: name, message: "The user is typing here." }],
86
+ };
87
+ }
88
+ await registry.quietly(async () => {
89
+ if (input.field !== undefined && env.hasFinePointer()) {
90
+ registry.placeFocus(element);
91
+ }
92
+ await env.scrollIntoView(element);
93
+ await untilIntersectionsReported(env);
94
+ });
95
+ marks.mark(element);
96
+ return { shown: measure(element, env).shown };
97
+ }
98
+ //# sourceMappingURL=highlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/client/highlight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { type ActivityStore, type AgentActivity, type AgentActivityKind, type AgentOutcome, type AgentUiClient, type AgentUiClientOptions, createAgentUiClient, type QuerySource, routeSnapshot, } from "./agent-ui-client.js";
2
+ export { type BrowserEnvironment, browserEnvironment, type IntersectionEntryLike, type IntersectionObserverLike, type RectLike, } from "./environment.js";
3
+ export { type AgentConfirmation, type ConfirmationStore } from "./confirmations.js";
4
+ export { type AgentWrites, type AnyViewBinding, NO_AGENT_WRITES, type ViewRegistry, type ViewSlot, } from "./registry.js";
5
+ export { agentFieldsOf } from "./write.js";
6
+ export { DEFAULT_SCREEN_LIMITS, type ScreenLimits } from "./screen.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,mBAAmB,EACnB,KAAK,WAAW,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { createAgentUiClient, routeSnapshot, } from "./agent-ui-client.js";
2
+ export { browserEnvironment, } from "./environment.js";
3
+ export {} from "./confirmations.js";
4
+ export { NO_AGENT_WRITES, } from "./registry.js";
5
+ export { agentFieldsOf } from "./write.js";
6
+ export { DEFAULT_SCREEN_LIMITS } from "./screen.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,mBAAmB,EAEnB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,kBAAkB,GAInB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAkD,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAGL,eAAe,GAGhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAqB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function jsonEqual(a: unknown, b: unknown): boolean;
2
+ //# sourceMappingURL=json-equal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-equal.d.ts","sourceRoot":"","sources":["../../src/client/json-equal.ts"],"names":[],"mappings":"AAMA,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAazD"}
@@ -0,0 +1,20 @@
1
+ const isPlainObject = (value) => {
2
+ if (typeof value !== "object" || value === null)
3
+ return false;
4
+ const prototype = Object.getPrototypeOf(value);
5
+ return prototype === Object.prototype || prototype === null;
6
+ };
7
+ export function jsonEqual(a, b) {
8
+ if (Object.is(a, b))
9
+ return true;
10
+ if (Array.isArray(a) && Array.isArray(b)) {
11
+ return a.length === b.length && a.every((item, index) => jsonEqual(item, b[index]));
12
+ }
13
+ if (isPlainObject(a) && isPlainObject(b)) {
14
+ const keys = Object.keys(a);
15
+ return (keys.length === Object.keys(b).length &&
16
+ keys.every((key) => Object.hasOwn(b, key) && jsonEqual(a[key], b[key])));
17
+ }
18
+ return false;
19
+ }
20
+ //# sourceMappingURL=json-equal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-equal.js","sourceRoot":"","sources":["../../src/client/json-equal.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,CAAU,EAAE,CAAU;IAC9C,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,CACL,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;YACrC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { AnyAgentView, ViewRef } from "../view.js";
2
+ import type { BrowserEnvironment } from "./environment.js";
3
+ export interface AnyViewBinding {
4
+ readonly key?: string | undefined;
5
+ get(): Readonly<Record<string, unknown>>;
6
+ set?(next: Readonly<Record<string, unknown>>, changed: readonly string[]): void | Promise<void>;
7
+ }
8
+ export type AgentWrites = ReadonlyMap<string, unknown>;
9
+ export declare const NO_AGENT_WRITES: AgentWrites;
10
+ export interface ViewSlot {
11
+ readonly ref: (element: Element | null) => void;
12
+ bind(binding: AnyViewBinding): void;
13
+ mount(key: string | undefined): () => void;
14
+ readonly subscribeWrites: (listener: () => void) => () => void;
15
+ readonly writes: () => AgentWrites;
16
+ }
17
+ export interface ViewRegistry {
18
+ track(view: AnyAgentView, binding: AnyViewBinding): ViewSlot;
19
+ }
20
+ export interface MountedView {
21
+ readonly view: AnyAgentView;
22
+ readonly key: string | undefined;
23
+ readonly binding: AnyViewBinding;
24
+ readonly element: Element | undefined;
25
+ readonly writes: AgentWrites;
26
+ }
27
+ export interface Moment {
28
+ readonly view: MountedView;
29
+ readonly at: number;
30
+ }
31
+ export interface RegistryReader {
32
+ find(ref: ViewRef): MountedView | undefined;
33
+ singles(): Iterable<MountedView>;
34
+ onScreenCandidates(): Iterable<MountedView>;
35
+ keyedCount(viewName: string): number;
36
+ isCurrent(mounted: MountedView): boolean;
37
+ owner(node: Node | null): MountedView | undefined;
38
+ lastEntered(): Moment | undefined;
39
+ lastInteracted(): Moment | undefined;
40
+ agentFocus(): Element | undefined;
41
+ }
42
+ export interface ViewRegistryRuntime extends ViewRegistry, RegistryReader {
43
+ remember(mounted: MountedView, values: Readonly<Record<string, unknown>>): void;
44
+ quietly<T>(act: () => Promise<T>): Promise<T>;
45
+ placeFocus(element: HTMLElement): void;
46
+ restore(mounted: MountedView, writes: AgentWrites): void;
47
+ awaitingObserver(): boolean;
48
+ observed(): Promise<void>;
49
+ resume(): void;
50
+ dispose(): void;
51
+ }
52
+ export declare function createViewRegistry(env: BrowserEnvironment): ViewRegistryRuntime;
53
+ export declare function refOf(mounted: MountedView): ViewRef;
54
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/client/registry.ts"],"names":[],"mappings":"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"}