@holostaff/sdk 0.4.1 → 0.9.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 (51) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +102 -11
  4. package/dist/index.js.map +1 -1
  5. package/dist/presence/chip.d.ts +37 -0
  6. package/dist/presence/chip.d.ts.map +1 -0
  7. package/dist/presence/chip.js +348 -0
  8. package/dist/presence/chip.js.map +1 -0
  9. package/dist/presence/index.d.ts +35 -0
  10. package/dist/presence/index.d.ts.map +1 -0
  11. package/dist/presence/index.js +81 -0
  12. package/dist/presence/index.js.map +1 -0
  13. package/dist/presence/note.d.ts +47 -0
  14. package/dist/presence/note.d.ts.map +1 -0
  15. package/dist/presence/note.js +501 -0
  16. package/dist/presence/note.js.map +1 -0
  17. package/dist/presence/types.d.ts +69 -0
  18. package/dist/presence/types.d.ts.map +1 -0
  19. package/dist/presence/types.js +8 -0
  20. package/dist/presence/types.js.map +1 -0
  21. package/dist/stage/anamFace.d.ts +32 -0
  22. package/dist/stage/anamFace.d.ts.map +1 -0
  23. package/dist/stage/anamFace.js +95 -0
  24. package/dist/stage/anamFace.js.map +1 -0
  25. package/dist/stage/index.d.ts +39 -0
  26. package/dist/stage/index.d.ts.map +1 -0
  27. package/dist/stage/index.js +182 -0
  28. package/dist/stage/index.js.map +1 -0
  29. package/dist/stage/realtime.d.ts +50 -0
  30. package/dist/stage/realtime.d.ts.map +1 -0
  31. package/dist/stage/realtime.js +165 -0
  32. package/dist/stage/realtime.js.map +1 -0
  33. package/dist/stage/ui.d.ts +27 -0
  34. package/dist/stage/ui.d.ts.map +1 -0
  35. package/dist/stage/ui.js +176 -0
  36. package/dist/stage/ui.js.map +1 -0
  37. package/dist/theater/index.d.ts +46 -0
  38. package/dist/theater/index.d.ts.map +1 -0
  39. package/dist/theater/index.js +222 -0
  40. package/dist/theater/index.js.map +1 -0
  41. package/dist/transport.d.ts +6 -0
  42. package/dist/transport.d.ts.map +1 -1
  43. package/dist/transport.js +26 -0
  44. package/dist/transport.js.map +1 -1
  45. package/dist/types.d.ts +46 -0
  46. package/dist/types.d.ts.map +1 -1
  47. package/package.json +5 -2
  48. package/dist/widget.d.ts +0 -48
  49. package/dist/widget.d.ts.map +0 -1
  50. package/dist/widget.js +0 -311
  51. package/dist/widget.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -36,6 +36,6 @@ export interface HolostaffApi {
36
36
  _destroy(): void;
37
37
  }
38
38
  export declare const holostaff: HolostaffApi;
39
- export type { BowtieStage, InitOptions, InterventionOutcome, ObserveOptions } from './types.js';
39
+ export type { BowtieStage, InitOptions, InterventionOutcome, ObserveOptions, PresenceOptions, DockCorner, TheaterOptions, VoiceOptions, } from './types.js';
40
40
  export { BOWTIE_STAGES } from './types.js';
41
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAmDxG,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,IAAI,IAAI,CAAA;IACrB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACxC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE;;;;;;OAMG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACzE,kCAAkC;IAClC,QAAQ,IAAI,IAAI,CAAA;CACjB;AAED,eAAO,MAAM,SAAS,EAAE,YA4LvB,CAAA;AAED,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgBH,OAAO,EAAiB,KAAK,WAAW,EAAmB,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAA;AA4EzH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,IAAI,IAAI,CAAA;IACrB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACxC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE;;;;;;OAMG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACzE,kCAAkC;IAClC,QAAQ,IAAI,IAAI,CAAA;CACjB;AAED,eAAO,MAAM,SAAS,EAAE,YAsQvB,CAAA;AAED,YAAY,EACV,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAC7D,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,GAC1D,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -22,8 +22,13 @@ import { resolveTransportConfig, postJson, postBeacon, openCommandStream } from
22
22
  import { mintSessionId, bindUnload } from './session.js';
23
23
  import { startSignals } from './signals.js';
24
24
  import { startObservations } from './observations.js';
25
- import { startWidget } from './widget.js';
25
+ import { startPresence } from './presence/index.js';
26
+ import { startNote } from './presence/note.js';
27
+ import { startTheater } from './theater/index.js';
28
+ import { startStage } from './stage/index.js';
26
29
  import { BOWTIE_STAGES } from './types.js';
30
+ /** Public Theater service — overridable via init({ theater: { baseUrl } }). */
31
+ const DEFAULT_THEATER_URL = 'https://theater.holostaff.ai';
27
32
  let state = null;
28
33
  const preInitQueue = [];
29
34
  function whenReady(fn) {
@@ -45,6 +50,21 @@ function commonBody(s, extras = {}) {
45
50
  ...extras,
46
51
  };
47
52
  }
53
+ /** The note's "Show me" CTA → open the Theater on the intervention's
54
+ * intent. Re-applied whenever the note binding is recreated. */
55
+ function wireNoteToTheater(note, theater) {
56
+ note.onShow(ctx => theater.present({
57
+ intent: ctx.goal || ctx.content,
58
+ context: ctx.content,
59
+ }));
60
+ }
61
+ /** Chip click + note "Talk" → open the voice Stage. Re-applied whenever
62
+ * the presence/note bindings are recreated (presence is the chip's
63
+ * click source; note carries the "Talk" CTA). */
64
+ function wireStage(presence, note, stage) {
65
+ presence.onActivate(() => stage.open());
66
+ note.onTalk(ctx => stage.open({ intent: ctx.goal || ctx.content }));
67
+ }
48
68
  export const holostaff = {
49
69
  init(opts) {
50
70
  if (state) {
@@ -92,15 +112,63 @@ export const holostaff = {
92
112
  buildBody: () => commonBody(nextState),
93
113
  observe: opts.observe,
94
114
  });
95
- // Wave 3e widget subscribes to the SSE channel and renders the
96
- // text pill on `fire_intervention` events. Outcomes flow back to
97
- // /outcome.
98
- nextState.widget = startWidget({
115
+ // P2the living-portrait chip. Subscribes to the `presence` SSE
116
+ // event and renders the copilot as a presence in the corner. The
117
+ // note (P3) and Stage (P6) grow from this chip, so it's started
118
+ // before the widget.
119
+ nextState.presenceOpts = opts.presence;
120
+ nextState.presence = startPresence({
99
121
  cfg: transport,
100
122
  getSessionId: () => nextState.sessionId,
101
123
  buildBody: () => commonBody(nextState),
102
124
  source: nextState.commands,
125
+ options: opts.presence,
103
126
  });
127
+ // P3 — the note. Renders `fire_intervention` events as a card that
128
+ // grows from the chip (attention-gated ignore timing). Replaces the
129
+ // v1 widget pill. Outcomes flow back to /outcome.
130
+ nextState.note = startNote({
131
+ cfg: transport,
132
+ getSessionId: () => nextState.sessionId,
133
+ buildBody: () => commonBody(nextState),
134
+ source: nextState.commands,
135
+ presence: nextState.presence,
136
+ dock: (opts.presence?.dock ?? 'bottom-right'),
137
+ });
138
+ // P5 — the Theater overlay. Opened from a note's "Show me" CTA (and
139
+ // the Stage's present() in P6). Session-agnostic (buildContext reads
140
+ // the live sessionId), so it persists across identity changes.
141
+ if (opts.theater?.enabled !== false) {
142
+ nextState.theater = startTheater({
143
+ baseUrl: opts.theater?.baseUrl ?? DEFAULT_THEATER_URL,
144
+ buildContext: () => ({
145
+ tenantId: nextState.tenantId,
146
+ sourceId: nextState.sourceId,
147
+ sessionId: nextState.sessionId,
148
+ }),
149
+ presence: nextState.presence,
150
+ onError: (err) => transport.onError?.(err, { method: 'THEATER', path: '(present)' }),
151
+ });
152
+ wireNoteToTheater(nextState.note, nextState.theater);
153
+ }
154
+ // P6 — the voice Stage. Opens on chip click + a note's "Talk".
155
+ // While open it reports conversationActive so the runtime suppresses
156
+ // autonomous fires (the copilot doesn't interrupt itself). The voice
157
+ // engine + Anam SDK load lazily on first open.
158
+ if (opts.voice?.enabled !== false) {
159
+ nextState.stage = startStage({
160
+ cfg: transport,
161
+ getSessionId: () => nextState.sessionId,
162
+ buildBody: () => commonBody(nextState),
163
+ presence: nextState.presence,
164
+ theater: nextState.theater ?? null,
165
+ dock: (opts.presence?.dock ?? 'bottom-right'),
166
+ reportConversationActive: (active) => {
167
+ void postJson(transport, `/api/runtime/sessions/${nextState.sessionId}/fastpath`, commonBody(nextState, { conversationActive: active }));
168
+ },
169
+ });
170
+ wireStage(nextState.presence, nextState.note, nextState.stage);
171
+ }
104
172
  // Bind page-leave so we mark the session as closed for suppression
105
173
  // accounting. Reason 'domain_leave' is the safe default; logout
106
174
  // upgrades it (see clearIdentity).
@@ -170,18 +238,38 @@ export const holostaff = {
170
238
  buildBody: () => commonBody(s),
171
239
  observe: s.observeOpts,
172
240
  });
173
- // Wave 3e — same for the SSE channel + widget. The old session is
174
- // closed; reopen against the new id so future fire_intervention
175
- // events reach the correct stream.
176
- s.widget?.dispose();
241
+ // Same for the SSE channel + note + presence. The old session is
242
+ // closed; reopen against the new id so future fire_intervention /
243
+ // presence events reach the correct stream.
244
+ s.note?.dispose();
245
+ s.presence?.dispose();
177
246
  s.commands?.close();
178
247
  s.commands = openCommandStream(s.transport, s.sessionId, s.tenantId, s.sourceId);
179
- s.widget = startWidget({
248
+ s.presence = startPresence({
249
+ cfg: s.transport,
250
+ getSessionId: () => s.sessionId,
251
+ buildBody: () => commonBody(s),
252
+ source: s.commands,
253
+ options: s.presenceOpts,
254
+ });
255
+ s.note = startNote({
180
256
  cfg: s.transport,
181
257
  getSessionId: () => s.sessionId,
182
258
  buildBody: () => commonBody(s),
183
259
  source: s.commands,
260
+ presence: s.presence,
261
+ dock: (s.presenceOpts?.dock ?? 'bottom-right'),
184
262
  });
263
+ // Theater persists across identity changes; re-wire the new note's
264
+ // "Show me" CTA to it.
265
+ if (s.theater)
266
+ wireNoteToTheater(s.note, s.theater);
267
+ // Voice Stage persists too — end any open conversation (the session
268
+ // rotated) and re-wire chip-click + "Talk" to the new bindings.
269
+ if (s.stage) {
270
+ s.stage.close();
271
+ wireStage(s.presence, s.note, s.stage);
272
+ }
185
273
  });
186
274
  },
187
275
  markStageEntry(stage) {
@@ -221,7 +309,10 @@ export const holostaff = {
221
309
  state.unload?.dispose();
222
310
  state.signals?.dispose();
223
311
  state.observations?.dispose();
224
- state.widget?.dispose();
312
+ state.note?.dispose();
313
+ state.presence?.dispose();
314
+ state.theater?.dispose();
315
+ state.stage?.dispose();
225
316
  state.commands?.close();
226
317
  state = null;
227
318
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The living portrait — chip magnitude (copilot-presence-design.md §2.1).
3
+ *
4
+ * A small living video portrait docked in a corner: idle loop (breathing,
5
+ * blinking) with gaze + greeting gestures crossfaded over it, a hover
6
+ * name-tag, and a strict liveness budget so it reads as a *presence*, not
7
+ * a toy. Three fidelity tiers degrade gracefully:
8
+ *
9
+ * 1. idle loop — seamless webm/mp4 (P0 asset)
10
+ * 2. poster — static first frame / avatar (also reduced-motion + load state)
11
+ * 3. monogram — initial-letter disc (no asset)
12
+ *
13
+ * Shadow-DOM isolated. Pauses on hidden tab + prefers-reduced-motion.
14
+ * Click activation routes to onActivate (the Stage, wired in P6).
15
+ */
16
+ import type { DesignTokens, DockCorner, PresenceCopilot } from './types.js';
17
+ export type GestureName = 'meet' | 'nod' | 'wave' | 'glanceL' | 'glanceR';
18
+ export interface ChipDeps {
19
+ dock: DockCorner;
20
+ offset: number;
21
+ /** Click / Enter → open the Stage (P6). Until then, a no-op is fine. */
22
+ onActivate?: (copilot: PresenceCopilot) => void;
23
+ }
24
+ export interface ChipInstance {
25
+ /** Set / swap / clear the rendered copilot. Crossfades on identity change. */
26
+ setCopilot(copilot: PresenceCopilot | null, tokens: DesignTokens | null): void;
27
+ /** Play a one-shot gesture over the idle loop (user-meaningful moments). */
28
+ playGesture(name: GestureName): void;
29
+ /** The chip's viewport rect — the note (P3) grows from this anchor. */
30
+ getAnchorRect(): DOMRect | null;
31
+ /** Inward glance direction for this dock (note side). */
32
+ innerGlance(): 'glanceL' | 'glanceR';
33
+ getCopilot(): PresenceCopilot | null;
34
+ destroy(): void;
35
+ }
36
+ export declare function startChip(deps: ChipDeps): ChipInstance;
37
+ //# sourceMappingURL=chip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.d.ts","sourceRoot":"","sources":["../../src/presence/chip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAgB,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AASzE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;IAC9E,4EAA4E;IAC5E,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACpC,uEAAuE;IACvE,aAAa,IAAI,OAAO,GAAG,IAAI,CAAA;IAC/B,yDAAyD;IACzD,WAAW,IAAI,SAAS,GAAG,SAAS,CAAA;IACpC,UAAU,IAAI,eAAe,GAAG,IAAI,CAAA;IACpC,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CA8KtD"}
@@ -0,0 +1,348 @@
1
+ /**
2
+ * The living portrait — chip magnitude (copilot-presence-design.md §2.1).
3
+ *
4
+ * A small living video portrait docked in a corner: idle loop (breathing,
5
+ * blinking) with gaze + greeting gestures crossfaded over it, a hover
6
+ * name-tag, and a strict liveness budget so it reads as a *presence*, not
7
+ * a toy. Three fidelity tiers degrade gracefully:
8
+ *
9
+ * 1. idle loop — seamless webm/mp4 (P0 asset)
10
+ * 2. poster — static first frame / avatar (also reduced-motion + load state)
11
+ * 3. monogram — initial-letter disc (no asset)
12
+ *
13
+ * Shadow-DOM isolated. Pauses on hidden tab + prefers-reduced-motion.
14
+ * Click activation routes to onActivate (the Stage, wired in P6).
15
+ */
16
+ const CHIP_PX = 56; // chip diameter (design: 44–56px range)
17
+ const CONTAINER_ID = 'holostaff-presence-root';
18
+ const CROSSFADE_MS = 220;
19
+ /** Liveness budget — at most one autonomous gesture per 2 minutes. */
20
+ const MIN_AUTONOMOUS_GAP_MS = 120000;
21
+ const AUTONOMOUS_JITTER_MS = 45000;
22
+ export function startChip(deps) {
23
+ if (typeof window === 'undefined' || typeof document === 'undefined') {
24
+ return noopChip();
25
+ }
26
+ const reducedMotion = typeof window.matchMedia === 'function'
27
+ && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
28
+ const container = ensureContainer(deps);
29
+ const root = container.shadowRoot;
30
+ root.appendChild(styleNode(deps));
31
+ // -- Structure: chip (frame: idle video + gesture video + poster/mono)
32
+ // + name tag -------------------------------------------------------
33
+ const wrap = document.createElement('div');
34
+ wrap.className = 'wrap';
35
+ const chip = document.createElement('button');
36
+ chip.className = 'chip';
37
+ chip.type = 'button';
38
+ chip.setAttribute('aria-label', 'Copilot');
39
+ chip.style.display = 'none'; // hidden until a copilot arrives
40
+ const frame = document.createElement('div');
41
+ frame.className = 'frame';
42
+ const idleVideo = makeVideo('idle');
43
+ const gestureVideo = makeVideo('gesture');
44
+ const poster = document.createElement('img');
45
+ poster.className = 'poster';
46
+ poster.alt = '';
47
+ poster.referrerPolicy = 'no-referrer';
48
+ const mono = document.createElement('div');
49
+ mono.className = 'mono';
50
+ frame.append(poster, idleVideo, gestureVideo, mono);
51
+ chip.appendChild(frame);
52
+ const tag = document.createElement('div');
53
+ tag.className = 'tag';
54
+ const tagName = document.createElement('div');
55
+ tagName.className = 'tag-name';
56
+ const tagScope = document.createElement('div');
57
+ tagScope.className = 'tag-scope';
58
+ tag.append(tagName, tagScope);
59
+ wrap.append(chip, tag);
60
+ root.appendChild(wrap);
61
+ // -- State -----------------------------------------------------------
62
+ let copilot = null;
63
+ let autonomousTimer = null;
64
+ let gestureClearTimer = null;
65
+ let destroyed = false;
66
+ const innerGlance = () => deps.dock.endsWith('right') ? 'glanceL' : 'glanceR';
67
+ // -- Tier rendering --------------------------------------------------
68
+ const renderTiers = (c, tokens) => {
69
+ const portrait = c.portrait ?? {};
70
+ const posterUrl = portrait.poster ?? c.avatar ?? '';
71
+ const accent = tokens?.light?.primary || tokens?.dark?.primary || '';
72
+ if (accent)
73
+ frame.style.setProperty('--accent', accent);
74
+ // Monogram is the always-available floor.
75
+ mono.textContent = (c.name.trim()[0] ?? '?').toUpperCase();
76
+ const canVideo = !reducedMotion && Boolean(portrait.idle || portrait.idleMp4);
77
+ if (canVideo) {
78
+ setVideoSources(idleVideo, portrait.idle, portrait.idleMp4);
79
+ if (posterUrl)
80
+ idleVideo.poster = posterUrl;
81
+ idleVideo.style.display = 'block';
82
+ poster.style.display = 'none';
83
+ mono.style.display = 'none';
84
+ void idleVideo.play().catch(() => { });
85
+ }
86
+ else if (posterUrl) {
87
+ poster.src = posterUrl;
88
+ poster.style.display = 'block';
89
+ idleVideo.style.display = 'none';
90
+ mono.style.display = 'none';
91
+ }
92
+ else {
93
+ mono.style.display = 'flex';
94
+ idleVideo.style.display = 'none';
95
+ poster.style.display = 'none';
96
+ }
97
+ };
98
+ const playGesture = (name) => {
99
+ if (destroyed || reducedMotion || document.hidden)
100
+ return;
101
+ const src = copilot?.portrait?.gestures?.[name];
102
+ if (!src)
103
+ return;
104
+ setVideoSources(gestureVideo, src, undefined);
105
+ gestureVideo.classList.add('show');
106
+ void gestureVideo.play().catch(() => { });
107
+ if (gestureClearTimer)
108
+ clearTimeout(gestureClearTimer);
109
+ const clear = () => { gestureVideo.classList.remove('show'); };
110
+ gestureVideo.onended = clear;
111
+ // Backstop in case 'ended' is swallowed (hidden tab mid-play).
112
+ gestureClearTimer = setTimeout(clear, 4000);
113
+ };
114
+ // -- Autonomous liveness (budgeted glances at rest) ------------------
115
+ const scheduleAutonomous = () => {
116
+ if (autonomousTimer)
117
+ clearTimeout(autonomousTimer);
118
+ const delay = MIN_AUTONOMOUS_GAP_MS + Math.random() * AUTONOMOUS_JITTER_MS;
119
+ autonomousTimer = setTimeout(() => {
120
+ if (!destroyed && !document.hidden && !reducedMotion && copilot) {
121
+ playGesture(innerGlance());
122
+ }
123
+ scheduleAutonomous();
124
+ }, delay);
125
+ };
126
+ // -- Interaction -----------------------------------------------------
127
+ const onEnter = () => { wrap.classList.add('open'); playGesture('meet'); };
128
+ const onLeave = () => { wrap.classList.remove('open'); };
129
+ chip.addEventListener('mouseenter', onEnter);
130
+ chip.addEventListener('mouseleave', onLeave);
131
+ chip.addEventListener('focus', onEnter);
132
+ chip.addEventListener('blur', onLeave);
133
+ chip.addEventListener('click', () => { if (copilot)
134
+ deps.onActivate?.(copilot); });
135
+ const onVisibility = () => {
136
+ if (document.hidden) {
137
+ idleVideo.pause();
138
+ }
139
+ else if (copilot && !reducedMotion && (copilot.portrait?.idle || copilot.portrait?.idleMp4)) {
140
+ void idleVideo.play().catch(() => { });
141
+ }
142
+ };
143
+ document.addEventListener('visibilitychange', onVisibility);
144
+ // -- Public API ------------------------------------------------------
145
+ const setCopilot = (next, tokens) => {
146
+ if (destroyed)
147
+ return;
148
+ if (!next) {
149
+ // Hide — copilot left this stage / cleared.
150
+ copilot = null;
151
+ chip.classList.add('leaving');
152
+ setTimeout(() => { if (!copilot)
153
+ chip.style.display = 'none'; }, reducedMotion ? 0 : CROSSFADE_MS);
154
+ if (autonomousTimer) {
155
+ clearTimeout(autonomousTimer);
156
+ autonomousTimer = null;
157
+ }
158
+ return;
159
+ }
160
+ const changed = copilot?.copilotId !== next.copilotId;
161
+ copilot = next;
162
+ tagName.textContent = `${next.name} · ${next.roleLine}`;
163
+ tagScope.textContent = next.scopeLine;
164
+ chip.setAttribute('aria-label', `${next.name}, ${next.roleLine}. ${next.scopeLine}`);
165
+ chip.style.display = 'block';
166
+ chip.classList.remove('leaving');
167
+ if (changed && !reducedMotion) {
168
+ // Light crossfade on identity swap (P4 adds the greeting ritual).
169
+ chip.classList.add('swap');
170
+ requestAnimationFrame(() => requestAnimationFrame(() => chip.classList.remove('swap')));
171
+ }
172
+ renderTiers(next, tokens);
173
+ scheduleAutonomous();
174
+ };
175
+ return {
176
+ setCopilot,
177
+ playGesture,
178
+ getAnchorRect: () => (chip.style.display === 'none' ? null : chip.getBoundingClientRect()),
179
+ innerGlance,
180
+ getCopilot: () => copilot,
181
+ destroy() {
182
+ destroyed = true;
183
+ if (autonomousTimer)
184
+ clearTimeout(autonomousTimer);
185
+ if (gestureClearTimer)
186
+ clearTimeout(gestureClearTimer);
187
+ document.removeEventListener('visibilitychange', onVisibility);
188
+ try {
189
+ container.remove();
190
+ }
191
+ catch { /* gone */ }
192
+ },
193
+ };
194
+ }
195
+ // -------------------------------------------------------------------------
196
+ // DOM helpers
197
+ // -------------------------------------------------------------------------
198
+ function makeVideo(cls) {
199
+ const v = document.createElement('video');
200
+ v.className = cls;
201
+ v.muted = true;
202
+ v.loop = cls === 'idle';
203
+ v.autoplay = cls === 'idle';
204
+ v.playsInline = true;
205
+ v.setAttribute('playsinline', '');
206
+ v.setAttribute('aria-hidden', 'true');
207
+ v.preload = 'auto';
208
+ return v;
209
+ }
210
+ function setVideoSources(v, webm, mp4) {
211
+ while (v.firstChild)
212
+ v.removeChild(v.firstChild);
213
+ if (webm) {
214
+ const s = document.createElement('source');
215
+ s.src = webm;
216
+ s.type = webm.endsWith('.mp4') ? 'video/mp4' : 'video/webm';
217
+ v.appendChild(s);
218
+ }
219
+ if (mp4 && mp4 !== webm) {
220
+ const s = document.createElement('source');
221
+ s.src = mp4;
222
+ s.type = 'video/mp4';
223
+ v.appendChild(s);
224
+ }
225
+ v.load();
226
+ }
227
+ function ensureContainer(deps) {
228
+ let el = document.getElementById(CONTAINER_ID);
229
+ if (el)
230
+ return el;
231
+ el = document.createElement('div');
232
+ el.id = CONTAINER_ID;
233
+ const [v, h] = deps.dock.split('-');
234
+ const off = `${deps.offset}px`;
235
+ el.style.cssText = [
236
+ 'position:fixed',
237
+ `${v}:${avoidCollision(deps, off)}`,
238
+ `${h}:${off}`,
239
+ 'z-index:2147483646',
240
+ 'pointer-events:none',
241
+ ].join(';');
242
+ el.attachShadow({ mode: 'open' });
243
+ document.body.appendChild(el);
244
+ return el;
245
+ }
246
+ /**
247
+ * Collision courtesy (design §3): if a well-known chat-widget squats the
248
+ * docked corner, offset the chip above it rather than overlapping. Cheap
249
+ * id/selector check at mount; logs a hint so the deploy can pick a dock.
250
+ */
251
+ function avoidCollision(deps, baseOffset) {
252
+ const KNOWN = [
253
+ '#intercom-container', '.intercom-lightweight-app',
254
+ '#launcher', // Zendesk
255
+ '#drift-widget', '.drift-frame-controller',
256
+ '#crisp-chatbox',
257
+ '#hubspot-messages-iframe-container',
258
+ ];
259
+ try {
260
+ const occupied = KNOWN.some(sel => document.querySelector(sel));
261
+ if (occupied) {
262
+ console.info('[holostaff] presence: chat widget detected in the dock corner; offsetting the copilot above it. Set init({ presence: { dock } }) to choose a corner.');
263
+ return `calc(${baseOffset} + 76px)`;
264
+ }
265
+ }
266
+ catch { /* selector / DOM not ready */ }
267
+ return baseOffset;
268
+ }
269
+ function noopChip() {
270
+ return {
271
+ setCopilot: () => { },
272
+ playGesture: () => { },
273
+ getAnchorRect: () => null,
274
+ innerGlance: () => 'glanceL',
275
+ getCopilot: () => null,
276
+ destroy: () => { },
277
+ };
278
+ }
279
+ // -------------------------------------------------------------------------
280
+ // Styles — shadow-DOM scoped. Name-tag grows toward viewport center.
281
+ // -------------------------------------------------------------------------
282
+ function styleNode(deps) {
283
+ const node = document.createElement('style');
284
+ const onRight = deps.dock.endsWith('right');
285
+ // Tag sits on the inner side (toward center) and slides out from the chip.
286
+ const tagSide = onRight ? 'right: calc(100% + 10px);' : 'left: calc(100% + 10px);';
287
+ const tagFrom = onRight ? 'translateX(8px)' : 'translateX(-8px)';
288
+ node.textContent = `
289
+ :host { all: initial; }
290
+ .wrap {
291
+ position: relative;
292
+ display: flex; align-items: center;
293
+ font: 13px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
294
+ }
295
+ .chip {
296
+ pointer-events: auto;
297
+ appearance: none; border: 0; padding: 0; margin: 0;
298
+ width: ${CHIP_PX}px; height: ${CHIP_PX}px; border-radius: 50%;
299
+ cursor: pointer; background: transparent;
300
+ transition: transform 160ms ease-out, opacity ${CROSSFADE_MS}ms ease-out;
301
+ opacity: 1;
302
+ }
303
+ .chip:hover { transform: scale(1.06); }
304
+ .chip:focus-visible { outline: none; }
305
+ .chip:focus-visible .frame { box-shadow: 0 0 0 3px var(--accent, #4f8bff); }
306
+ .chip.swap .frame { opacity: 0; }
307
+ .chip.leaving { opacity: 0; transform: scale(0.9); }
308
+ .frame {
309
+ position: relative; width: 100%; height: 100%;
310
+ border-radius: 50%; overflow: hidden;
311
+ background: #1a1a1a;
312
+ box-shadow: 0 4px 16px rgba(0,0,0,0.28), 0 0 0 2px var(--accent, rgba(255,255,255,0.18));
313
+ transition: opacity ${CROSSFADE_MS}ms ease-out, box-shadow 160ms ease-out;
314
+ }
315
+ .frame > * {
316
+ position: absolute; inset: 0;
317
+ width: 100%; height: 100%; object-fit: cover;
318
+ }
319
+ .idle, .poster { display: none; }
320
+ .gesture { opacity: 0; transition: opacity ${CROSSFADE_MS}ms ease-out; pointer-events: none; }
321
+ .gesture.show { opacity: 1; }
322
+ .mono {
323
+ display: none; align-items: center; justify-content: center;
324
+ background: #23262e; color: var(--accent, #9ab8ff);
325
+ font-weight: 600; font-size: 22px;
326
+ }
327
+ .tag {
328
+ pointer-events: none;
329
+ position: absolute; ${tagSide}
330
+ top: 50%;
331
+ transform: translateY(-50%) ${tagFrom};
332
+ opacity: 0;
333
+ transition: opacity 160ms ease-out, transform 160ms ease-out;
334
+ background: #111; color: #fafafa;
335
+ border-radius: 12px; padding: 8px 12px;
336
+ box-shadow: 0 8px 24px rgba(0,0,0,0.3);
337
+ white-space: nowrap; max-width: 260px;
338
+ }
339
+ .wrap.open .tag { opacity: 1; transform: translateY(-50%) translateX(0); }
340
+ .tag-name { font-weight: 600; font-size: 13px; }
341
+ .tag-scope { font-size: 12px; color: #c7c7c7; margin-top: 2px; white-space: normal; }
342
+ @media (prefers-reduced-motion: reduce) {
343
+ .chip, .frame, .gesture, .tag { transition: none; }
344
+ }
345
+ `;
346
+ return node;
347
+ }
348
+ //# sourceMappingURL=chip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.js","sourceRoot":"","sources":["../../src/presence/chip.ts"],"names":[],"mappings":"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"}