@pinecall/dot 0.11.24 → 0.11.26
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 +135 -59
- package/dist/agent/index.d.ts +3 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +2 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/tutor.d.ts +8 -10
- package/dist/agent/tutor.d.ts.map +1 -1
- package/dist/agent/tutor.js +71 -74
- package/dist/agent/tutor.js.map +1 -1
- package/dist/agent/walks.d.ts +19 -0
- package/dist/agent/walks.d.ts.map +1 -0
- package/dist/agent/walks.js +89 -0
- package/dist/agent/walks.js.map +1 -0
- package/dist/page/page.d.ts +2 -2
- package/dist/page/page.d.ts.map +1 -1
- package/dist/page/page.js +5 -5
- package/dist/page/page.js.map +1 -1
- package/dist/page/roles.d.ts +2 -0
- package/dist/page/roles.d.ts.map +1 -1
- package/dist/page/roles.js +21 -2
- package/dist/page/roles.js.map +1 -1
- package/dist/pointer/asking.d.ts +25 -0
- package/dist/pointer/asking.d.ts.map +1 -0
- package/dist/pointer/asking.js +82 -0
- package/dist/pointer/asking.js.map +1 -0
- package/dist/pointer/flight.d.ts +28 -0
- package/dist/pointer/flight.d.ts.map +1 -1
- package/dist/pointer/flight.js +93 -7
- package/dist/pointer/flight.js.map +1 -1
- package/dist/pointer/frames.d.ts +28 -0
- package/dist/pointer/frames.d.ts.map +1 -0
- package/dist/pointer/frames.js +66 -0
- package/dist/pointer/frames.js.map +1 -0
- package/dist/pointer/icons.d.ts +8 -0
- package/dist/pointer/icons.d.ts.map +1 -0
- package/dist/pointer/icons.js +15 -0
- package/dist/pointer/icons.js.map +1 -0
- package/dist/pointer/menu.d.ts +3 -0
- package/dist/pointer/menu.d.ts.map +1 -1
- package/dist/pointer/menu.js +26 -6
- package/dist/pointer/menu.js.map +1 -1
- package/dist/pointer/person.d.ts +13 -2
- package/dist/pointer/person.d.ts.map +1 -1
- package/dist/pointer/person.js +47 -41
- package/dist/pointer/person.js.map +1 -1
- package/dist/pointer/pressing.d.ts +6 -0
- package/dist/pointer/pressing.d.ts.map +1 -0
- package/dist/pointer/pressing.js +32 -0
- package/dist/pointer/pressing.js.map +1 -0
- package/dist/pointer/typing.d.ts +5 -3
- package/dist/pointer/typing.d.ts.map +1 -1
- package/dist/pointer/typing.js +46 -15
- package/dist/pointer/typing.js.map +1 -1
- package/dist/server/index.d.ts +34 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +108 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/questions.d.ts +30 -0
- package/dist/server/questions.d.ts.map +1 -0
- package/dist/server/questions.js +136 -0
- package/dist/server/questions.js.map +1 -0
- package/dist/server/saying.d.ts +31 -0
- package/dist/server/saying.d.ts.map +1 -0
- package/dist/server/saying.js +124 -0
- package/dist/server/saying.js.map +1 -0
- package/dist/tutor/acting.d.ts +42 -0
- package/dist/tutor/acting.d.ts.map +1 -0
- package/dist/tutor/acting.js +180 -0
- package/dist/tutor/acting.js.map +1 -0
- package/dist/tutor/aloud.d.ts +50 -0
- package/dist/tutor/aloud.d.ts.map +1 -0
- package/dist/tutor/aloud.js +288 -0
- package/dist/tutor/aloud.js.map +1 -0
- package/dist/tutor/ask.d.ts +49 -0
- package/dist/tutor/ask.d.ts.map +1 -0
- package/dist/tutor/ask.js +47 -0
- package/dist/tutor/ask.js.map +1 -0
- package/dist/tutor/listening.d.ts +17 -0
- package/dist/tutor/listening.d.ts.map +1 -0
- package/dist/tutor/listening.js +66 -0
- package/dist/tutor/listening.js.map +1 -0
- package/dist/tutor/options.d.ts +37 -1
- package/dist/tutor/options.d.ts.map +1 -1
- package/dist/tutor/options.js +1 -1
- package/dist/tutor/options.js.map +1 -1
- package/dist/tutor/reading.d.ts +58 -0
- package/dist/tutor/reading.d.ts.map +1 -0
- package/dist/tutor/reading.js +193 -0
- package/dist/tutor/reading.js.map +1 -0
- package/dist/tutor/text.d.ts +16 -0
- package/dist/tutor/text.d.ts.map +1 -0
- package/dist/tutor/text.js +119 -0
- package/dist/tutor/text.js.map +1 -0
- package/dist/tutor/tutor.d.ts +2 -9
- package/dist/tutor/tutor.d.ts.map +1 -1
- package/dist/tutor/tutor.js +109 -87
- package/dist/tutor/tutor.js.map +1 -1
- package/dist/tutor/walking.d.ts +20 -6
- package/dist/tutor/walking.d.ts.map +1 -1
- package/dist/tutor/walking.js +125 -25
- package/dist/tutor/walking.js.map +1 -1
- package/dist/tutor/walks.d.ts +33 -0
- package/dist/tutor/walks.d.ts.map +1 -1
- package/dist/tutor/walks.js +116 -10
- package/dist/tutor/walks.js.map +1 -1
- package/dist/wire/acts.d.ts +60 -0
- package/dist/wire/acts.d.ts.map +1 -0
- package/dist/wire/acts.js +120 -0
- package/dist/wire/acts.js.map +1 -0
- package/dist/wire/ask.d.ts +132 -0
- package/dist/wire/ask.d.ts.map +1 -0
- package/dist/wire/ask.js +102 -0
- package/dist/wire/ask.js.map +1 -0
- package/dist/wire/index.d.ts +26 -8
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +62 -11
- package/dist/wire/index.js.map +1 -1
- package/docs/macros.md +53 -3
- package/docs/write-a-tutor.md +26 -2
- package/package.json +8 -4
package/dist/pointer/person.js
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
// the way a multiplayer cursor carries a name tag. The spotlight and the "here" ring live there too,
|
|
6
6
|
// and, in the corner it rests in, what the visitor is saying and the buttons: captions, with hang-up
|
|
7
7
|
// in a call and stop in a walk. They stand beside the resting face, and slide into its corner while
|
|
8
|
-
// it tours, back aside as it comes home. Every colour is a custom property: --pc-face
|
|
9
|
-
//
|
|
10
|
-
|
|
8
|
+
// it tours, back aside as it comes home. Every colour is a custom property: --pc-face (the dot and
|
|
9
|
+
// the arrow), --pc-face-ring, --pc-bubble, --pc-bubble-ink, --pc-heard, --pc-heard-ink, --pc-hang.
|
|
10
|
+
import { ARROW, BACK, CAPTIONS, NEXT, PAUSE, STOP } from "./icons.js";
|
|
11
|
+
import { boxOf } from "./frames.js";
|
|
11
12
|
/** The resting face's size, in px, and how far its edge stands from the corner of the window. */
|
|
12
13
|
const SIZE = 58;
|
|
13
14
|
const EDGE = 14;
|
|
@@ -36,6 +37,7 @@ const STYLE = `
|
|
|
36
37
|
.pc-bubble .pc-coming { opacity: .38; }
|
|
37
38
|
.pc-person.pc-touring .pc-bubble { right: auto; bottom: auto; left: 62px; top: 14px; border-radius: 4px 16px 16px 16px; transform-origin: top left; }
|
|
38
39
|
.pc-person.pc-touring.pc-west .pc-face { left: -54px; }
|
|
40
|
+
.pc-person.pc-touring.pc-west .pc-arrow { left: -23px; transform: scaleX(-1); }
|
|
39
41
|
.pc-person.pc-touring.pc-west .pc-progress { left: -60px; }
|
|
40
42
|
.pc-person.pc-touring.pc-west .pc-bubble { left: auto; right: 62px; border-radius: 16px 4px 16px 16px; transform-origin: top right; }
|
|
41
43
|
.pc-person.pc-touring.pc-up .pc-face { top: -56px; }
|
|
@@ -47,13 +49,15 @@ const STYLE = `
|
|
|
47
49
|
background: var(--pc-heard, #e7f3ee); color: var(--pc-heard-ink, #17201c); border-radius: 16px 16px 4px 16px;
|
|
48
50
|
font: 14px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; box-shadow: 0 10px 28px rgb(0 0 0 / .12); transition: opacity .2s; }
|
|
49
51
|
.pc-heard[hidden] { display: block !important; opacity: 0; }
|
|
50
|
-
.pc-calling { position: fixed; right: calc(${EDGE}px + var(--pc-dot-size, ${SIZE}px) + 8px); bottom: calc(${EDGE}px + var(--pc-dot-size, ${SIZE}px) / 2 -
|
|
52
|
+
.pc-calling { position: fixed; right: calc(${EDGE}px + var(--pc-dot-size, ${SIZE}px) + 8px); bottom: calc(${EDGE}px + var(--pc-dot-size, ${SIZE}px) / 2 - 16px); display: flex; gap: 2px; padding: 3px;
|
|
53
|
+
border-radius: 999px; background: var(--pc-bubble, #fff); box-shadow: 0 4px 14px rgb(0 0 0 / .18); pointer-events: auto; transition: right .35s cubic-bezier(.2,.8,.2,1), left .35s cubic-bezier(.2,.8,.2,1); }
|
|
51
54
|
.pc-layer.pc-away .pc-calling { right: ${EDGE}px; }
|
|
52
55
|
.pc-calling[hidden] { display: none; }
|
|
53
|
-
.pc-calling button { all: unset; box-sizing: border-box; height:
|
|
54
|
-
font: 600
|
|
56
|
+
.pc-calling button { all: unset; box-sizing: border-box; height: 26px; min-width: 26px; padding: 0 8px; border-radius: 999px; cursor: pointer;
|
|
57
|
+
font: 600 11px/26px system-ui, -apple-system, "Segoe UI", sans-serif; text-align: center; color: var(--pc-bubble-ink, #17201c); }
|
|
58
|
+
.pc-calling button:hover { background: color-mix(in srgb, var(--pc-bubble-ink, #17201c) 9%, transparent); }
|
|
55
59
|
.pc-calling button:focus-visible { outline: 2px solid var(--pc-face-ring, #44a785); outline-offset: 2px; }
|
|
56
|
-
.pc-calling .pc-cc, .pc-calling .pc-pause, .pc-calling .pc-stop { display: grid; place-items: center; padding: 0;
|
|
60
|
+
.pc-calling .pc-cc, .pc-calling .pc-pause, .pc-calling .pc-stop, .pc-calling .pc-back, .pc-calling .pc-next { display: grid; place-items: center; padding: 0; }
|
|
57
61
|
.pc-calling svg { display: block; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
|
|
58
62
|
.pc-calling .pc-stop svg { fill: currentColor; stroke: none; }
|
|
59
63
|
.pc-pause .pc-go { display: none; fill: currentColor; stroke: none; }
|
|
@@ -63,7 +67,7 @@ const STYLE = `
|
|
|
63
67
|
.pc-cc[aria-pressed="false"] { opacity: .6; }
|
|
64
68
|
.pc-cc[aria-pressed="false"] .pc-off { display: inline; }
|
|
65
69
|
.pc-calling button[hidden] { display: none; }
|
|
66
|
-
.pc-calling .pc-hang { background: var(--pc-hang, #d6453d); color: #fff; font-size:
|
|
70
|
+
.pc-calling .pc-hang, .pc-calling .pc-hang:hover { background: var(--pc-hang, #d6453d); color: #fff; font-size: 13px; }
|
|
67
71
|
.pc-play { position: fixed; width: 26px; height: 26px; border-radius: 50%; pointer-events: auto; cursor: pointer; border: 0; padding: 0;
|
|
68
72
|
background: var(--pc-face, #1f6b55); color: #fff; font: 11px/26px system-ui, sans-serif; text-align: center; box-shadow: 0 3px 10px rgb(0 0 0 / .25); }
|
|
69
73
|
.pc-play[hidden] { display: none; }
|
|
@@ -74,20 +78,10 @@ const STYLE = `
|
|
|
74
78
|
.pc-spot { position: fixed; border-radius: 16px; box-shadow: 0 0 0 9999px rgb(10 18 16 / .34), 0 0 0 3px var(--pc-face-ring, #44a785); opacity: 0; transition: opacity .3s; }
|
|
75
79
|
.pc-spot.pc-on { opacity: 1; }
|
|
76
80
|
.pc-ring { position: fixed; width: 18px; height: 18px; margin: -9px 0 0 -9px; border-radius: 50%; border: 2px solid var(--pc-face-ring, #44a785); opacity: 0; }
|
|
77
|
-
.pc-ring.pc-go { animation: pc-ring 1.1s ease-out
|
|
81
|
+
.pc-ring.pc-go { animation: pc-ring 1.1s ease-out 1; }
|
|
78
82
|
@keyframes pc-ring { 0% { transform: scale(.6); opacity: .9; } 100% { transform: scale(3.2); opacity: 0; } }
|
|
79
83
|
@media (prefers-reduced-motion: reduce) { .pc-face, .pc-bubble, .pc-heard, .pc-spot { transition: none; } .pc-ring.pc-go { animation: none; opacity: .9; } }
|
|
80
84
|
`;
|
|
81
|
-
// Captions: lines of words in a frame, struck through while off. Pause: two bars, a triangle while held. Stop: a square.
|
|
82
|
-
const CAPTIONS = (size) => `<svg viewBox="0 0 24 24" width="${size}" height="${size}" aria-hidden="true"><rect x="3" y="5.5" width="18" height="13" rx="3"/><path d="M7 10.5h4M13.5 10.5h3.5M7 14h6.5M16 14h1"/><path class="pc-off" d="M4 4l16 16"/></svg>`;
|
|
83
|
-
const PAUSE = `<svg viewBox="0 0 24 24" width="12" height="12" aria-hidden="true"><path class="pc-hold" d="M8.5 6v12M15.5 6v12" stroke-width="3"/><path class="pc-go" d="M8 5.5v13l10-6.5Z"/></svg>`;
|
|
84
|
-
const STOP = `<svg viewBox="0 0 24 24" width="10" height="10" aria-hidden="true"><rect x="5" y="5" width="14" height="14" rx="2.5"/></svg>`;
|
|
85
|
-
// The arrow is the screen recorder's (~/ss/screen-demo/build.mjs), in the face's colour; the hand and the I-beam are drawn to match.
|
|
86
|
-
const ARROW = `<svg class="pc-arrow" viewBox="0 0 26 26" data-kind="arrow" aria-hidden="true">
|
|
87
|
-
<path class="pc-kind-arrow" d="M3 2 L3 21 L8 16.5 L11.4 24 L14.6 22.6 L11.3 15.3 L18 15.3 Z" fill="var(--pc-face, #1f6b55)" stroke="#fff" stroke-width="1.6" stroke-linejoin="round"/>
|
|
88
|
-
<path class="pc-kind-hand" d="M8 3.5c0-1.1 1.8-1.1 1.8 0V11h.6V9.2c0-1.1 1.8-1.1 1.8 0V11h.6V9.8c0-1.1 1.8-1.1 1.8 0V11.4h.6v-.8c0-1.1 1.8-1.1 1.8 0V16c0 3.6-2.2 6.5-5.6 6.5-2.5 0-3.8-1.2-5-3.2l-2.6-4.4c-.6-1 .7-2 1.6-1.2L8 15.4Z" fill="var(--pc-face, #1f6b55)" stroke="#fff" stroke-width="1.4" stroke-linejoin="round"/>
|
|
89
|
-
<path class="pc-kind-ibeam" d="M9 3h5M9 23h5M11.5 3v20" fill="none" stroke="var(--pc-face, #1f6b55)" stroke-width="2.4" stroke-linecap="round"/>
|
|
90
|
-
</svg>`;
|
|
91
85
|
/** How far the face and its words reach from the tip, across and down, in px; above, they end this far over it. */
|
|
92
86
|
const REACH = { across: 340, down: 96, over: 14 };
|
|
93
87
|
/** How much of the box being explained the face may touch: the tip stands in its first line. */
|
|
@@ -98,18 +92,24 @@ const SIDES = [
|
|
|
98
92
|
{ west: false, up: true },
|
|
99
93
|
{ west: true, up: true },
|
|
100
94
|
];
|
|
101
|
-
/** The
|
|
102
|
-
|
|
103
|
-
|
|
95
|
+
/** The box the face and its words take on `side` of the tip. */
|
|
96
|
+
function reachOf(tip, side) {
|
|
97
|
+
return {
|
|
104
98
|
left: side.west ? tip.x - REACH.across : tip.x + 8,
|
|
105
99
|
right: side.west ? tip.x - 8 : tip.x + REACH.across,
|
|
106
100
|
top: side.up ? tip.y - REACH.down : tip.y + 8,
|
|
107
101
|
bottom: side.up ? tip.y - REACH.over : tip.y + REACH.down,
|
|
108
|
-
});
|
|
109
|
-
const fits = (side) => {
|
|
110
|
-
const box = reach(side);
|
|
111
|
-
return box.left >= 0 && box.right <= width && box.top >= 0 && box.bottom <= height;
|
|
112
102
|
};
|
|
103
|
+
}
|
|
104
|
+
/** Whether the face and its words on `side` of the tip stay on a screen `width` by `height`. */
|
|
105
|
+
export function fitsOn(tip, side, width, height) {
|
|
106
|
+
const box = reachOf(tip, side);
|
|
107
|
+
return box.left >= 0 && box.right <= width && box.top >= 0 && box.bottom <= height;
|
|
108
|
+
}
|
|
109
|
+
/** The first side whose reach fits the screen and covers nothing of `avoid`; else the first that fits; else below and right. */
|
|
110
|
+
export function sideOf(tip, avoid, width, height) {
|
|
111
|
+
const reach = (side) => reachOf(tip, side);
|
|
112
|
+
const fits = (side) => fitsOn(tip, side, width, height);
|
|
113
113
|
const clear = (side) => {
|
|
114
114
|
const box = reach(side);
|
|
115
115
|
if (avoid === null)
|
|
@@ -132,6 +132,8 @@ export class Person {
|
|
|
132
132
|
#cc;
|
|
133
133
|
#stop;
|
|
134
134
|
#pause;
|
|
135
|
+
#back;
|
|
136
|
+
#next;
|
|
135
137
|
#hang;
|
|
136
138
|
#play;
|
|
137
139
|
#offered = null;
|
|
@@ -151,7 +153,7 @@ export class Person {
|
|
|
151
153
|
this.#layer.dataset["pinecallSkip"] = "";
|
|
152
154
|
if (options.color !== undefined)
|
|
153
155
|
this.#layer.style.setProperty("--pc-face", options.color);
|
|
154
|
-
this.#layer.innerHTML = `<div class="pc-spot"></div><div class="pc-ring"></div><div class="pc-person">${ARROW}<svg class="pc-progress" viewBox="0 0 100 100" hidden aria-hidden="true"><circle cx="50" cy="50" r="47" pathLength="100" stroke-dasharray="0 100"></circle></svg><div class="pc-face" role="button" tabindex="0"></div><div class="pc-bubble" role="status" hidden></div></div><div class="pc-heard" role="status" hidden></div><div class="pc-calling" hidden><button type="button" class="pc-
|
|
156
|
+
this.#layer.innerHTML = `<div class="pc-spot"></div><div class="pc-ring"></div><div class="pc-person">${ARROW}<svg class="pc-progress" viewBox="0 0 100 100" hidden aria-hidden="true"><circle cx="50" cy="50" r="47" pathLength="100" stroke-dasharray="0 100"></circle></svg><div class="pc-face" role="button" tabindex="0"></div><div class="pc-bubble" role="status" hidden></div></div><div class="pc-heard" role="status" hidden></div><div class="pc-calling" hidden><button type="button" class="pc-back" hidden>${BACK}</button><button type="button" class="pc-pause" aria-pressed="false" hidden>${PAUSE}</button><button type="button" class="pc-next" hidden>${NEXT}</button><button type="button" class="pc-stop" hidden>${STOP}</button><button type="button" class="pc-cc" aria-pressed="true">${CAPTIONS(15)}</button><button type="button" class="pc-hang">✕</button></div><button type="button" class="pc-play" hidden>▶</button>`;
|
|
155
157
|
this.#spot = this.#part(".pc-spot");
|
|
156
158
|
this.#ring = this.#part(".pc-ring");
|
|
157
159
|
this.#person = this.#part(".pc-person");
|
|
@@ -161,14 +163,10 @@ export class Person {
|
|
|
161
163
|
this.#heard = this.#part(".pc-heard");
|
|
162
164
|
this.#calling = this.#part(".pc-calling");
|
|
163
165
|
this.#cc = this.#part(".pc-cc");
|
|
164
|
-
this.#stop = this.#
|
|
165
|
-
this.#
|
|
166
|
-
this.#
|
|
167
|
-
this.#
|
|
168
|
-
this.#pause = this.#part(".pc-pause");
|
|
169
|
-
this.#pause.setAttribute("aria-label", options.pause.label);
|
|
170
|
-
this.#pause.title = options.pause.label;
|
|
171
|
-
this.#pause.addEventListener("click", options.pause.onClick);
|
|
166
|
+
this.#stop = this.#button(".pc-stop", options.stop);
|
|
167
|
+
this.#pause = this.#button(".pc-pause", options.pause);
|
|
168
|
+
this.#back = this.#button(".pc-back", options.back);
|
|
169
|
+
this.#next = this.#button(".pc-next", options.next);
|
|
172
170
|
this.#play = this.#part(".pc-play");
|
|
173
171
|
this.#play.setAttribute("aria-label", options.explain.label);
|
|
174
172
|
this.#play.title = options.explain.label;
|
|
@@ -261,8 +259,8 @@ export class Person {
|
|
|
261
259
|
this.#heard.textContent = text;
|
|
262
260
|
}
|
|
263
261
|
/**
|
|
264
|
-
* The corner's buttons: captions and hang-up while a call is on,
|
|
265
|
-
* walk plays; captions pressed while they show, pause while the walk is held. Called every frame, so
|
|
262
|
+
* The corner's buttons: captions and hang-up while a call is on, back, pause, next, stop and captions
|
|
263
|
+
* while a walk plays; captions pressed while they show, pause while the walk is held. Called every frame, so
|
|
266
264
|
* it writes only what changed.
|
|
267
265
|
*/
|
|
268
266
|
buttons(call, walk, captioned, paused = false) {
|
|
@@ -272,8 +270,8 @@ export class Person {
|
|
|
272
270
|
};
|
|
273
271
|
show(this.#calling, call || walk);
|
|
274
272
|
show(this.#hang, call);
|
|
275
|
-
|
|
276
|
-
|
|
273
|
+
for (const one of [this.#back, this.#pause, this.#next, this.#stop])
|
|
274
|
+
show(one, walk && !call);
|
|
277
275
|
const press = (element, on) => {
|
|
278
276
|
if (element.getAttribute("aria-pressed") !== String(on))
|
|
279
277
|
element.setAttribute("aria-pressed", String(on));
|
|
@@ -287,7 +285,7 @@ export class Person {
|
|
|
287
285
|
this.#play.hidden = element === null;
|
|
288
286
|
if (element === null)
|
|
289
287
|
return;
|
|
290
|
-
const box = element
|
|
288
|
+
const box = boxOf(element);
|
|
291
289
|
const width = this.#document.defaultView?.innerWidth ?? 0;
|
|
292
290
|
this.#play.style.left = `${Math.min(box.right - 34, width - 40).toFixed(0)}px`;
|
|
293
291
|
this.#play.style.top = `${Math.max(box.top + 8, 8).toFixed(0)}px`;
|
|
@@ -297,7 +295,7 @@ export class Person {
|
|
|
297
295
|
this.#spot.classList.toggle("pc-on", element !== null);
|
|
298
296
|
if (element === null)
|
|
299
297
|
return;
|
|
300
|
-
const box = element
|
|
298
|
+
const box = boxOf(element);
|
|
301
299
|
const pad = 8;
|
|
302
300
|
const radius = Number.parseFloat(this.#document.defaultView?.getComputedStyle(element).borderRadius ?? "") || 10;
|
|
303
301
|
Object.assign(this.#spot.style, {
|
|
@@ -339,6 +337,14 @@ export class Person {
|
|
|
339
337
|
this.#layer.remove();
|
|
340
338
|
this.#style.remove();
|
|
341
339
|
}
|
|
340
|
+
/** A button of the corner, named and wired. */
|
|
341
|
+
#button(selector, action) {
|
|
342
|
+
const button = this.#part(selector);
|
|
343
|
+
button.setAttribute("aria-label", action.label);
|
|
344
|
+
button.title = action.label;
|
|
345
|
+
button.addEventListener("click", action.onClick);
|
|
346
|
+
return button;
|
|
347
|
+
}
|
|
342
348
|
#part(selector) {
|
|
343
349
|
const found = this.#layer.querySelector(selector);
|
|
344
350
|
if (found === null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/pointer/person.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/pointer/person.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** The pointer pressing a button a walk names: a search, a tab, a "show more", never a form that sends the visitor's details. */
|
|
2
|
+
/** Why `element` is not a button the pointer presses, or null when it is one; `forms`, one in a form is. */
|
|
3
|
+
export declare function notPressable(element: Element, forms?: boolean): string | null;
|
|
4
|
+
/** Press `element`: the click a person makes. Resolves with why it could not, or null. */
|
|
5
|
+
export declare function press(element: Element, forms?: boolean): string | null;
|
|
6
|
+
//# sourceMappingURL=pressing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pressing.d.ts","sourceRoot":"","sources":["../../src/pointer/pressing.ts"],"names":[],"mappings":"AAAA,iIAAiI;AAUjI,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,UAAQ,GAAG,MAAM,GAAG,IAAI,CAQ3E;AAED,0FAA0F;AAC1F,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,UAAQ,GAAG,MAAM,GAAG,IAAI,CAKpE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** The pointer pressing a button a walk names: a search, a tab, a "show more", never a form that sends the visitor's details. */
|
|
2
|
+
//
|
|
3
|
+
// A walk the site wrote may press a button by its name, as a person would: the click the site's own code
|
|
4
|
+
// listens for. Not one in a form, unless the form is a search (`<search>`, `role="search"`): a form that
|
|
5
|
+
// books, buys or signs up is the visitor's to send. A page read aloud is the site's own example, and its
|
|
6
|
+
// button is pressed in any form (`forms`). Not a link, which leaves the page, and not a button that is
|
|
7
|
+
// disabled or hidden. A button of a frame of the site's own is pressed the same.
|
|
8
|
+
const BUTTON = "button, input[type=submit], input[type=button], [role=button]";
|
|
9
|
+
/** Why `element` is not a button the pointer presses, or null when it is one; `forms`, one in a form is. */
|
|
10
|
+
export function notPressable(element, forms = false) {
|
|
11
|
+
const button = element.closest(BUTTON);
|
|
12
|
+
if (button === null || !("click" in button))
|
|
13
|
+
return "it is not a button";
|
|
14
|
+
if (button.closest("a[href]") !== null)
|
|
15
|
+
return "it leaves the page";
|
|
16
|
+
if ((button.tagName === "BUTTON" || button.tagName === "INPUT") && button.disabled)
|
|
17
|
+
return "it is disabled";
|
|
18
|
+
if (button.getAttribute("aria-disabled") === "true")
|
|
19
|
+
return "it is disabled";
|
|
20
|
+
if (!forms && button.closest("form") !== null && button.closest("search, [role=search]") === null)
|
|
21
|
+
return "it sends a form, which is the visitor's to send";
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
/** Press `element`: the click a person makes. Resolves with why it could not, or null. */
|
|
25
|
+
export function press(element, forms = false) {
|
|
26
|
+
const refused = notPressable(element, forms);
|
|
27
|
+
if (refused !== null)
|
|
28
|
+
return refused;
|
|
29
|
+
element.closest(BUTTON).click();
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=pressing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pressing.js","sourceRoot":"","sources":["../../src/pointer/pressing.ts"],"names":[],"mappings":"AAAA,iIAAiI;AACjI,EAAE;AACF,yGAAyG;AACzG,yGAAyG;AACzG,yGAAyG;AACzG,uGAAuG;AACvG,iFAAiF;AAEjF,MAAM,MAAM,GAAG,+DAA+D,CAAC;AAE/E,4GAA4G;AAC5G,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,KAAK,GAAG,KAAK;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACzE,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI;QAAE,OAAO,oBAAoB,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,IAAK,MAA4B,CAAC,QAAQ;QAAE,OAAO,gBAAgB,CAAC;IACnI,IAAI,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM;QAAE,OAAO,gBAAgB,CAAC;IAC7E,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,IAAI;QAAE,OAAO,iDAAiD,CAAC;IAC5J,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,KAAK,CAAC,OAAgB,EAAE,KAAK,GAAG,KAAK;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IACpC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAiB,CAAC,KAAK,EAAE,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/pointer/typing.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/** The pointer filling a field the way a person types: letter by letter, with the events the site's own code listens for. */
|
|
2
|
-
/**
|
|
2
|
+
/** The event an element that is no field is typed into by: the site's own editor takes each with `preventDefault()` and writes `detail.text`, what was typed so far, where it belongs; `detail.done` on the last. */
|
|
3
|
+
export declare const TYPING_EVENT = "pinecall-typing";
|
|
4
|
+
/** Why `element` is not a field to fill, or null when it is one. Told by its tag: a frame's field is of the frame's window. */
|
|
3
5
|
export declare function notFillable(element: Element): string | null;
|
|
4
|
-
/** Fill `field` with `text`: typed letter by letter, or, for a list, the option that says it. Resolves with why it could not, or null. */
|
|
5
|
-
export declare function fill(field: Element, text: string, still: boolean): Promise<string | null>;
|
|
6
|
+
/** Fill `field` with `text`: typed letter by letter (paced to `ms`, a recording said meanwhile), or, for a list, the option that says it; an element that is no field, by `TYPING_EVENT`s the site takes. Resolves with why it could not, or null. */
|
|
7
|
+
export declare function fill(field: Element, text: string, still: boolean, ms?: number): Promise<string | null>;
|
|
6
8
|
//# sourceMappingURL=typing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typing.d.ts","sourceRoot":"","sources":["../../src/pointer/typing.ts"],"names":[],"mappings":"AAAA,6HAA6H;
|
|
1
|
+
{"version":3,"file":"typing.d.ts","sourceRoot":"","sources":["../../src/pointer/typing.ts"],"names":[],"mappings":"AAAA,6HAA6H;AAW7H,qNAAqN;AACrN,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAK9C,+HAA+H;AAC/H,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAO3D;AAED,sPAAsP;AACtP,wBAAsB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkB5G"}
|
package/dist/pointer/typing.js
CHANGED
|
@@ -6,26 +6,34 @@
|
|
|
6
6
|
// hidden field.
|
|
7
7
|
/** How long one letter takes, in ms. */
|
|
8
8
|
const LETTER_MS = 45;
|
|
9
|
+
/** The slowest a letter comes when the typing is paced to a recording, in ms: a long sentence over a few words typed. */
|
|
10
|
+
const SLOWEST_MS = 180;
|
|
11
|
+
/** The event an element that is no field is typed into by: the site's own editor takes each with `preventDefault()` and writes `detail.text`, what was typed so far, where it belongs; `detail.done` on the last. */
|
|
12
|
+
export const TYPING_EVENT = "pinecall-typing";
|
|
13
|
+
const NOT_A_FIELD = "it is not a field";
|
|
9
14
|
/** The inputs a person writes words in. */
|
|
10
15
|
const WRITTEN = new Set(["text", "tel", "email", "search", "url", "number", "date", "time", "datetime-local", "month", "week"]);
|
|
11
|
-
/** Why `element` is not a field to fill, or null when it is one. */
|
|
16
|
+
/** Why `element` is not a field to fill, or null when it is one. Told by its tag: a frame's field is of the frame's window. */
|
|
12
17
|
export function notFillable(element) {
|
|
13
|
-
if (element
|
|
18
|
+
if (element.tagName === "SELECT" || element.tagName === "TEXTAREA")
|
|
14
19
|
return element.disabled ? "it is disabled" : null;
|
|
15
|
-
if (
|
|
16
|
-
return
|
|
17
|
-
|
|
20
|
+
if (element.tagName !== "INPUT")
|
|
21
|
+
return NOT_A_FIELD;
|
|
22
|
+
const input = element;
|
|
23
|
+
if (input.type === "password" || input.autocomplete.startsWith("cc-"))
|
|
18
24
|
return "a password or a card is the visitor's to type";
|
|
19
|
-
if (!WRITTEN.has(
|
|
20
|
-
return `a ${
|
|
21
|
-
return
|
|
25
|
+
if (!WRITTEN.has(input.type))
|
|
26
|
+
return `a ${input.type} field is not written in`;
|
|
27
|
+
return input.disabled || input.readOnly ? "it is disabled" : null;
|
|
22
28
|
}
|
|
23
|
-
/** Fill `field` with `text`: typed letter by letter, or, for a list, the option that says it. Resolves with why it could not, or null. */
|
|
24
|
-
export async function fill(field, text, still) {
|
|
29
|
+
/** Fill `field` with `text`: typed letter by letter (paced to `ms`, a recording said meanwhile), or, for a list, the option that says it; an element that is no field, by `TYPING_EVENT`s the site takes. Resolves with why it could not, or null. */
|
|
30
|
+
export async function fill(field, text, still, ms) {
|
|
25
31
|
const refused = notFillable(field);
|
|
32
|
+
if (refused === NOT_A_FIELD)
|
|
33
|
+
return told(field, text, still, ms);
|
|
26
34
|
if (refused !== null)
|
|
27
35
|
return refused;
|
|
28
|
-
if (field
|
|
36
|
+
if (field.tagName === "SELECT")
|
|
29
37
|
return choose(field, text);
|
|
30
38
|
const written = field;
|
|
31
39
|
written.focus({ preventScroll: true });
|
|
@@ -36,12 +44,31 @@ export async function fill(field, text, still) {
|
|
|
36
44
|
set(written, "");
|
|
37
45
|
for (let at = 1; at <= text.length; at++) {
|
|
38
46
|
set(written, text.slice(0, at));
|
|
39
|
-
await new Promise((done) => setTimeout(done,
|
|
47
|
+
await new Promise((done) => setTimeout(done, paceOf(text, ms)));
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
written.dispatchEvent(new Event("change", { bubbles: true }));
|
|
43
51
|
return null;
|
|
44
52
|
}
|
|
53
|
+
/** How long each letter takes: `LETTER_MS`, or the recording's length spread over the letters, `SLOWEST_MS` at most. */
|
|
54
|
+
function paceOf(text, ms) {
|
|
55
|
+
return ms === undefined ? LETTER_MS : Math.min(SLOWEST_MS, Math.max(LETTER_MS / 2, (ms * 0.9) / Math.max(1, text.length)));
|
|
56
|
+
}
|
|
57
|
+
// An element that is no field is told what is typed, a letter at a time, and the site writes it where it
|
|
58
|
+
// belongs (its editor); an element whose site takes no such event is no place to type.
|
|
59
|
+
async function told(element, text, still, ms) {
|
|
60
|
+
const taken = (typed, done) => !element.dispatchEvent(new CustomEvent(TYPING_EVENT, { bubbles: true, cancelable: true, detail: { text: typed, done } }));
|
|
61
|
+
element.focus?.({ preventScroll: true });
|
|
62
|
+
if (still)
|
|
63
|
+
return taken(text, true) ? null : NOT_A_FIELD;
|
|
64
|
+
if (!taken("", false))
|
|
65
|
+
return NOT_A_FIELD;
|
|
66
|
+
for (let at = 1; at <= text.length; at++) {
|
|
67
|
+
taken(text.slice(0, at), at === text.length);
|
|
68
|
+
await new Promise((done) => setTimeout(done, paceOf(text, ms)));
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
45
72
|
function choose(list, text) {
|
|
46
73
|
const wanted = text.trim().toLowerCase();
|
|
47
74
|
const options = [...list.options];
|
|
@@ -53,10 +80,14 @@ function choose(list, text) {
|
|
|
53
80
|
list.dispatchEvent(new Event("change", { bubbles: true }));
|
|
54
81
|
return null;
|
|
55
82
|
}
|
|
56
|
-
// A framework keeps its own copy of the value and reads it back from the prototype's setter
|
|
83
|
+
// A framework keeps its own copy of the value and reads it back from the prototype's setter: the one of the
|
|
84
|
+
// field's own window, found up its chain.
|
|
57
85
|
function set(field, value) {
|
|
58
|
-
|
|
59
|
-
Object.getOwnPropertyDescriptor(prototype, "value")
|
|
86
|
+
let prototype = Object.getPrototypeOf(field);
|
|
87
|
+
while (prototype !== null && Object.getOwnPropertyDescriptor(prototype, "value") === undefined)
|
|
88
|
+
prototype = Object.getPrototypeOf(prototype);
|
|
89
|
+
if (prototype !== null)
|
|
90
|
+
Object.getOwnPropertyDescriptor(prototype, "value")?.set?.call(field, value);
|
|
60
91
|
field.dispatchEvent(new Event("input", { bubbles: true }));
|
|
61
92
|
}
|
|
62
93
|
//# sourceMappingURL=typing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typing.js","sourceRoot":"","sources":["../../src/pointer/typing.ts"],"names":[],"mappings":"AAAA,6HAA6H;AAC7H,EAAE;AACF,kGAAkG;AAClG,iGAAiG;AACjG,gGAAgG;AAChG,gBAAgB;AAEhB,wCAAwC;AACxC,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,2CAA2C;AAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhI
|
|
1
|
+
{"version":3,"file":"typing.js","sourceRoot":"","sources":["../../src/pointer/typing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** `@pinecall/dot/server`: the site's door the dot asks, answered on its server: what the visitor typed decided, a row picked, a sentence recorded. */
|
|
2
|
+
import type { AskRequest, Decision, NextLine, Note, RowAnswer, RowRequest, SaidAnswer } from "../wire/ask.js";
|
|
3
|
+
import { decisionFrom, questionsOf, spansOf, thingsOf } from "./questions.js";
|
|
4
|
+
import { explainOutput, nextLine, recordSay, type Voicing } from "./saying.js";
|
|
5
|
+
export type { AskRequest, Decision, DoorRequest, RowRequest, SayRequest } from "../wire/ask.js";
|
|
6
|
+
export type { Voicing } from "./saying.js";
|
|
7
|
+
export { decisionFrom, questionsOf, spansOf, thingsOf, recordSay, explainOutput, nextLine };
|
|
8
|
+
export interface DecideOptions {
|
|
9
|
+
/** An OpenRouter key. */
|
|
10
|
+
key: string;
|
|
11
|
+
/** Default `~typesafe/jev-latest`. */
|
|
12
|
+
model?: string | undefined;
|
|
13
|
+
/** How sure the walk, the thing or a param must be, 0 to 1, to be done. Default 0.5. */
|
|
14
|
+
threshold?: number | undefined;
|
|
15
|
+
/** Default OpenRouter's Decisions API. */
|
|
16
|
+
endpoint?: string | undefined;
|
|
17
|
+
fetch?: typeof fetch | undefined;
|
|
18
|
+
}
|
|
19
|
+
export interface AnswerOptions extends DecideOptions {
|
|
20
|
+
/** The agent whose voice records a walk's sentences with slots; none, a `say` is refused. */
|
|
21
|
+
voicing?: Voicing | undefined;
|
|
22
|
+
}
|
|
23
|
+
/** Decide what the dot does for what the visitor typed, and the params of a walk decided. Throws when the model cannot be reached or refuses. */
|
|
24
|
+
export declare function decide(request: AskRequest, options: DecideOptions): Promise<Decision>;
|
|
25
|
+
/** Which row of a table best answers what the visitor typed; null when none is sure enough. */
|
|
26
|
+
export declare function pickRow(request: RowRequest, options: DecideOptions): Promise<RowAnswer>;
|
|
27
|
+
/**
|
|
28
|
+
* The site's door, whole: what the page sent (`{ decide }`, `{ row }` or `{ say }`), answered. Throws on a
|
|
29
|
+
* request that is none of them, and on a model or a gateway that did not answer.
|
|
30
|
+
*/
|
|
31
|
+
export declare function answer(body: unknown, options: AnswerOptions): Promise<Decision | RowAnswer | SaidAnswer | {
|
|
32
|
+
notes: Note[];
|
|
33
|
+
} | NextLine>;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,uJAAuJ;AAWvJ,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAkB,QAAQ,EAAe,IAAI,EAAe,SAAS,EAAE,UAAU,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAC;AACpK,OAAO,EAA0B,YAAY,EAAc,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAC/H,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAc,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3F,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChG,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,6FAA6F;IAC7F,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAeD,iJAAiJ;AACjJ,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAY3F;AAED,+FAA+F;AAC/F,wBAAsB,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAc7F;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,GAAG,QAAQ,CAAC,CAa7I"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/** `@pinecall/dot/server`: the site's door the dot asks, answered on its server: what the visitor typed decided, a row picked, a sentence recorded. */
|
|
2
|
+
//
|
|
3
|
+
// What the visitor typed goes to Jev, TypeSafe's System One model, through OpenRouter's Decisions API, as
|
|
4
|
+
// one request of questions answered at once (`questions.ts`): Jev answers each with a choice among the
|
|
5
|
+
// options it was given and their probabilities. It cannot write a sentence or name a thing that is not on
|
|
6
|
+
// the page, so the dot does something on the page or offers the agent, and never talks; a walk's params
|
|
7
|
+
// are parts of what was typed, never a word of the model's. Under the threshold it does nothing rather
|
|
8
|
+
// than guess. A walk that read a table asks which row answers the visitor best, the same way; a sentence
|
|
9
|
+
// with slots is recorded in the agent's voice when it is reached (`saying.ts`). The keys are the server's:
|
|
10
|
+
// this never runs in a browser.
|
|
11
|
+
import { MODEL, MOST, THRESHOLD, decisionFrom, paramsFrom, questionsOf, spansOf, thingsOf } from "./questions.js";
|
|
12
|
+
import { explainOutput, nextLine, recordRead, recordSay } from "./saying.js";
|
|
13
|
+
export { decisionFrom, questionsOf, spansOf, thingsOf, recordSay, explainOutput, nextLine };
|
|
14
|
+
const ENDPOINT = "https://openrouter.ai/api/alpha/decisions";
|
|
15
|
+
/** Ask Jev; its answers, by question. Throws when it cannot be reached or refuses. */
|
|
16
|
+
async function asked(body, options) {
|
|
17
|
+
const answer = await (options.fetch ?? fetch)(options.endpoint ?? ENDPOINT, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: { authorization: `Bearer ${options.key}`, "content-type": "application/json" },
|
|
20
|
+
body: JSON.stringify(body),
|
|
21
|
+
});
|
|
22
|
+
if (!answer.ok)
|
|
23
|
+
throw new Error(`the decision model answered ${answer.status}`);
|
|
24
|
+
return (await answer.json()).answers ?? {};
|
|
25
|
+
}
|
|
26
|
+
/** Decide what the dot does for what the visitor typed, and the params of a walk decided. Throws when the model cannot be reached or refuses. */
|
|
27
|
+
export async function decide(request, options) {
|
|
28
|
+
const things = thingsOf(request.page);
|
|
29
|
+
const spans = spansOf(request.message);
|
|
30
|
+
const answers = await asked(questionsOf(request, things, options.model ?? MODEL, spans), options);
|
|
31
|
+
const decision = decisionFrom(answers, options.threshold ?? THRESHOLD);
|
|
32
|
+
// A thing the model chose is one of the page's: anything else is no decision.
|
|
33
|
+
if (decision.do === "show" && !things.some((thing) => thing.ref === decision.target))
|
|
34
|
+
return { do: "none", confidence: 0 };
|
|
35
|
+
if (decision.do !== "walk")
|
|
36
|
+
return decision;
|
|
37
|
+
const walk = request.walks.find((one) => one.name === decision.walk);
|
|
38
|
+
if (walk === undefined)
|
|
39
|
+
return { do: "none", confidence: 0 };
|
|
40
|
+
const params = paramsFrom(answers, walk, spans, options.threshold ?? THRESHOLD);
|
|
41
|
+
return Object.keys(params).length === 0 ? decision : { ...decision, params };
|
|
42
|
+
}
|
|
43
|
+
/** Which row of a table best answers what the visitor typed; null when none is sure enough. */
|
|
44
|
+
export async function pickRow(request, options) {
|
|
45
|
+
const rows = request.rows.slice(0, MOST);
|
|
46
|
+
if (rows.length === 0)
|
|
47
|
+
return { row: null };
|
|
48
|
+
const answers = await asked({
|
|
49
|
+
model: options.model ?? MODEL,
|
|
50
|
+
state: [`A visitor typed to a website's guide: "${request.message}"\n\nThe rows of the table the site shows them:\n${rows.map((row) => `- ${row}`).join("\n")}`],
|
|
51
|
+
questions: { row: { type: "choice", instructions: "Which row best answers what they typed?", criteria: Object.fromEntries(rows.map((row, at) => [`r${at}`, row])) } },
|
|
52
|
+
}, options);
|
|
53
|
+
const choice = answers["row"];
|
|
54
|
+
const at = Number(choice?.choice?.slice(1));
|
|
55
|
+
return Number.isInteger(at) && at < rows.length && (choice?.confidence ?? 0) >= (options.threshold ?? THRESHOLD) ? { row: at } : { row: null };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The site's door, whole: what the page sent (`{ decide }`, `{ row }` or `{ say }`), answered. Throws on a
|
|
59
|
+
* request that is none of them, and on a model or a gateway that did not answer.
|
|
60
|
+
*/
|
|
61
|
+
export async function answer(body, options) {
|
|
62
|
+
const request = (typeof body === "object" && body !== null ? body : {});
|
|
63
|
+
if (isAsk(request.decide))
|
|
64
|
+
return decide(request.decide, options);
|
|
65
|
+
if (isRow(request.row))
|
|
66
|
+
return pickRow(request.row, options);
|
|
67
|
+
const voicing = () => {
|
|
68
|
+
if (options.voicing === undefined)
|
|
69
|
+
throw new Error("this door records no sentence: give answer() a voicing");
|
|
70
|
+
return options.voicing;
|
|
71
|
+
};
|
|
72
|
+
if (isSay(request.say))
|
|
73
|
+
return recordSay(request.say, voicing(), options.fetch ?? fetch);
|
|
74
|
+
if (isRead(request.read))
|
|
75
|
+
return recordRead(request.read.text, voicing(), options.fetch ?? fetch);
|
|
76
|
+
if (isExplain(request.explain))
|
|
77
|
+
return explainOutput(request.explain, voicing(), options.fetch ?? fetch);
|
|
78
|
+
if (isNext(request.next))
|
|
79
|
+
return nextLine(request.next, voicing(), options.fetch ?? fetch);
|
|
80
|
+
throw new Error("the door takes { decide }, { row }, { say }, { read }, { explain } or { next }");
|
|
81
|
+
}
|
|
82
|
+
const isString = (value) => typeof value === "string";
|
|
83
|
+
function isAsk(value) {
|
|
84
|
+
const fields = (value ?? {});
|
|
85
|
+
return typeof value === "object" && isString(fields["message"]) && isString(fields["path"]) && isString(fields["page"]) && Array.isArray(fields["walks"]);
|
|
86
|
+
}
|
|
87
|
+
function isRow(value) {
|
|
88
|
+
const fields = (value ?? {});
|
|
89
|
+
return typeof value === "object" && isString(fields["message"]) && Array.isArray(fields["rows"]) && fields["rows"].every(isString);
|
|
90
|
+
}
|
|
91
|
+
function isNext(value) {
|
|
92
|
+
if (typeof value !== "object" || value === null)
|
|
93
|
+
return false;
|
|
94
|
+
const { goal, heard } = value;
|
|
95
|
+
return typeof goal === "string" && Array.isArray(heard) && heard.every((turn) => typeof turn === "object" && turn !== null && typeof turn["said"] === "string");
|
|
96
|
+
}
|
|
97
|
+
function isExplain(value) {
|
|
98
|
+
return typeof value === "object" && value !== null && isString(value["output"]);
|
|
99
|
+
}
|
|
100
|
+
function isRead(value) {
|
|
101
|
+
return typeof value === "object" && value !== null && isString(value["text"]);
|
|
102
|
+
}
|
|
103
|
+
function isSay(value) {
|
|
104
|
+
const fields = (value ?? {});
|
|
105
|
+
const values = fields["values"];
|
|
106
|
+
return typeof value === "object" && isString(fields["path"]) && isString(fields["walk"]) && Number.isInteger(fields["step"]) && typeof values === "object" && values !== null;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|