samograph 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js ADDED
@@ -0,0 +1,3376 @@
1
+ #!/usr/bin/env bun
2
+ // @bun
3
+ var __create = Object.create;
4
+ var __getProtoOf = Object.getPrototypeOf;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ function __accessProp(key) {
9
+ return this[key];
10
+ }
11
+ var __toESMCache_node;
12
+ var __toESMCache_esm;
13
+ var __toESM = (mod, isNodeMode, target) => {
14
+ var canCache = mod != null && typeof mod === "object";
15
+ if (canCache) {
16
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
17
+ var cached = cache.get(mod);
18
+ if (cached)
19
+ return cached;
20
+ }
21
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
22
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
23
+ for (let key of __getOwnPropNames(mod))
24
+ if (!__hasOwnProp.call(to, key))
25
+ __defProp(to, key, {
26
+ get: __accessProp.bind(mod, key),
27
+ enumerable: true
28
+ });
29
+ if (canCache)
30
+ cache.set(mod, to);
31
+ return to;
32
+ };
33
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
34
+
35
+ // package.json
36
+ var require_package = __commonJS((exports, module) => {
37
+ module.exports = {
38
+ name: "samograph",
39
+ version: "0.6.0",
40
+ description: "Let AI agents join Zoom and Google Meet calls as active participants.",
41
+ type: "module",
42
+ license: "Apache-2.0",
43
+ bin: {
44
+ samograph: "dist/cli.js"
45
+ },
46
+ files: [
47
+ "dist/cli.js",
48
+ "dictionaries/",
49
+ "LICENSE",
50
+ "README.md"
51
+ ],
52
+ repository: {
53
+ type: "git",
54
+ url: "git+https://github.com/NikolayS/samograph.git"
55
+ },
56
+ homepage: "https://samoagent.dev/",
57
+ bugs: {
58
+ url: "https://github.com/NikolayS/samograph/issues"
59
+ },
60
+ keywords: [
61
+ "ai-agent",
62
+ "meetings",
63
+ "recall-ai",
64
+ "zoom",
65
+ "google-meet",
66
+ "transcript",
67
+ "websocket"
68
+ ],
69
+ engines: {
70
+ bun: ">=1.2.0"
71
+ },
72
+ publishConfig: {
73
+ access: "public"
74
+ },
75
+ scripts: {
76
+ samograph: "bun src/cli.ts",
77
+ test: "bun test",
78
+ build: "tsc --noEmit && bun build src/cli.ts --target bun --outfile dist/cli.js && chmod +x dist/cli.js",
79
+ prepack: "bun run build"
80
+ },
81
+ devDependencies: {
82
+ "@types/bun": "latest",
83
+ typescript: "^5.9.3"
84
+ }
85
+ };
86
+ });
87
+
88
+ // src/config.ts
89
+ import { homedir } from "os";
90
+ import { join, dirname } from "path";
91
+ import { fileURLToPath } from "url";
92
+ var RECALL_BASE = "https://us-east-1.recall.ai/api/v1";
93
+
94
+ class ExitError extends Error {
95
+ code;
96
+ constructor(code) {
97
+ super(`ExitError(${code})`);
98
+ this.code = code;
99
+ this.name = "ExitError";
100
+ }
101
+ }
102
+ function repoRoot() {
103
+ return dirname(dirname(fileURLToPath(import.meta.url)));
104
+ }
105
+ function stateFile() {
106
+ return process.env.SAMOGRAPH_STATE_FILE ?? join(homedir(), ".samograph", "state.json");
107
+ }
108
+ function dictDir() {
109
+ return process.env.SAMOGRAPH_DICT_DIR ?? join(repoRoot(), "dictionaries");
110
+ }
111
+ function samographDir() {
112
+ const base = process.env.SAMOGRAPH_HOME ?? homedir();
113
+ return join(base, ".samograph");
114
+ }
115
+ function defaultTranscriptFile() {
116
+ return join(samographDir(), "transcript.txt");
117
+ }
118
+ function apiKey() {
119
+ const k = process.env.RECALL_API_KEY ?? "";
120
+ if (!k) {
121
+ process.stderr.write(`Error: RECALL_API_KEY not set
122
+ `);
123
+ throw new ExitError(1);
124
+ }
125
+ return k;
126
+ }
127
+ function headers() {
128
+ return {
129
+ Authorization: `Token ${apiKey()}`,
130
+ "Content-Type": "application/json"
131
+ };
132
+ }
133
+
134
+ // src/robotImage.ts
135
+ var ROBOT_DATA_URI = "data:image/jpeg;base64,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";
136
+
137
+ // src/presence.ts
138
+ var PRESENCE_STATES = [
139
+ "listening",
140
+ "thinking",
141
+ "speaking",
142
+ "acting",
143
+ "idle"
144
+ ];
145
+ var DEFAULT_MESSAGES = {
146
+ idle: "Idle",
147
+ listening: "Listening",
148
+ thinking: "Checking",
149
+ speaking: "Commenting",
150
+ acting: "Working"
151
+ };
152
+ function normalizePresenceState(value) {
153
+ if (typeof value !== "string")
154
+ return null;
155
+ const normalized = value.trim().toLowerCase();
156
+ return PRESENCE_STATES.includes(normalized) ? normalized : null;
157
+ }
158
+ function defaultPresenceMessage(state) {
159
+ return DEFAULT_MESSAGES[state];
160
+ }
161
+ function sanitizePresenceMessage(value, state) {
162
+ if (typeof value !== "string")
163
+ return defaultPresenceMessage(state);
164
+ const cleaned = value.replace(/[\r\n\t]+/g, " ").replace(/\s+/g, " ").trim();
165
+ return cleaned ? cleaned.slice(0, 160) : defaultPresenceMessage(state);
166
+ }
167
+ function sanitizePresenceText(value, maxLen = 220) {
168
+ if (typeof value !== "string")
169
+ return "";
170
+ return value.replace(/[\r\n\t]+/g, " ").replace(/\s+/g, " ").trim().slice(0, maxLen);
171
+ }
172
+ function newPresenceSnapshot(state = "listening", message = defaultPresenceMessage(state), activities = []) {
173
+ return {
174
+ state,
175
+ message,
176
+ updated_at: new Date().toISOString(),
177
+ activities
178
+ };
179
+ }
180
+ var ACTIVITY_LIMIT = 16;
181
+ function appendPresenceActivity(snapshot, activity) {
182
+ const text = sanitizePresenceText(activity.text);
183
+ if (!text)
184
+ return snapshot;
185
+ const label = sanitizePresenceText(activity.label, 40) || activity.kind;
186
+ return {
187
+ ...snapshot,
188
+ updated_at: new Date().toISOString(),
189
+ activities: [
190
+ { kind: activity.kind, label, text, at: new Date().toISOString() },
191
+ ...snapshot.activities
192
+ ].slice(0, ACTIVITY_LIMIT)
193
+ };
194
+ }
195
+ function activityKindForState(_state) {
196
+ return "comment";
197
+ }
198
+ function labelForPresenceState(_state) {
199
+ return "Comment";
200
+ }
201
+ function activityFromTranscriptLine(line) {
202
+ const match = line.match(/^\[[^\]]+\]\s+([^:]+):\s*(.*)$/);
203
+ if (match === null)
204
+ return null;
205
+ const label = sanitizePresenceText(match[1], 40);
206
+ const text = sanitizePresenceText(match[2]);
207
+ if (!text)
208
+ return null;
209
+ return { kind: "heard", label, text };
210
+ }
211
+ function presencePageHtml() {
212
+ return `<!doctype html>
213
+ <html lang="en">
214
+ <head>
215
+ <meta charset="utf-8">
216
+ <meta name="viewport" content="width=device-width, initial-scale=1">
217
+ <title>samograph presence</title>
218
+ <style>
219
+ :root {
220
+ color-scheme: dark;
221
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
222
+ background: #070a0f;
223
+ color: #f8fafc;
224
+ --accent: #2dd4bf;
225
+ --accent-soft: rgba(45, 212, 191, 0.2);
226
+ --accent-mid: rgba(45, 212, 191, 0.46);
227
+ --heard: #a3e635;
228
+ --comment: #38bdf8;
229
+ }
230
+ * { box-sizing: border-box; }
231
+ body {
232
+ margin: 0;
233
+ min-height: 100vh;
234
+ overflow: hidden;
235
+ background:
236
+ linear-gradient(90deg, rgba(148, 163, 184, 0.08) 1px, transparent 1px),
237
+ linear-gradient(180deg, rgba(148, 163, 184, 0.06) 1px, transparent 1px),
238
+ #070a0f;
239
+ background-size: 56px 56px;
240
+ }
241
+ .samograph-presence {
242
+ width: 100vw;
243
+ min-height: 100vh;
244
+ display: grid;
245
+ place-items: stretch;
246
+ padding: min(3.2vh, 28px);
247
+ }
248
+ .tile {
249
+ position: relative;
250
+ width: min(100%, calc((100vh - min(6.4vh, 56px)) * 16 / 9));
251
+ max-height: calc(100vh - min(6.4vh, 56px));
252
+ aspect-ratio: 16 / 9;
253
+ align-self: center;
254
+ justify-self: center;
255
+ border-radius: 8px;
256
+ display: grid;
257
+ grid-template-rows: auto minmax(0, 1fr) auto;
258
+ gap: clamp(12px, 2vh, 20px);
259
+ border: 1px solid rgba(226, 232, 240, 0.14);
260
+ box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.9), 0 28px 80px rgba(0, 0, 0, 0.56);
261
+ background: #050914;
262
+ padding: clamp(18px, 3.2vh, 34px);
263
+ overflow: hidden;
264
+ isolation: isolate;
265
+ }
266
+ .tile::before {
267
+ content: "";
268
+ position: absolute;
269
+ inset: 0;
270
+ border-top: 4px solid var(--accent);
271
+ box-shadow: inset 0 0 90px rgba(2, 6, 23, 0.75), inset 0 0 28px var(--accent-soft);
272
+ pointer-events: none;
273
+ z-index: 0;
274
+ }
275
+ .tile::after {
276
+ content: "";
277
+ position: absolute;
278
+ inset: 0;
279
+ z-index: 0;
280
+ pointer-events: none;
281
+ opacity: 0.54;
282
+ background:
283
+ radial-gradient(circle at 50% 50%, var(--accent-soft), transparent 34%),
284
+ linear-gradient(90deg, rgba(15, 23, 42, 0.7), transparent 42%, transparent 58%, rgba(15, 23, 42, 0.7));
285
+ }
286
+ .tile > * {
287
+ position: relative;
288
+ z-index: 2;
289
+ }
290
+ .plasma-canvas {
291
+ position: absolute;
292
+ inset: 0;
293
+ width: 100%;
294
+ height: 100%;
295
+ z-index: 1;
296
+ opacity: 1;
297
+ filter: saturate(1.1) contrast(1.08);
298
+ pointer-events: none;
299
+ }
300
+ .robot-img {
301
+ position: fixed;
302
+ inset: 0;
303
+ width: 100vw;
304
+ height: 100vh;
305
+ object-fit: cover;
306
+ z-index: 2147483647;
307
+ display: none;
308
+ pointer-events: none;
309
+ }
310
+ .header {
311
+ display: grid;
312
+ grid-template-columns: 1fr auto;
313
+ align-items: center;
314
+ gap: 20px;
315
+ min-height: 0;
316
+ }
317
+ .brand {
318
+ display: flex;
319
+ align-items: center;
320
+ gap: 12px;
321
+ min-width: 0;
322
+ color: #cbd5e1;
323
+ font-size: clamp(13px, 1.45vw, 18px);
324
+ font-weight: 800;
325
+ text-transform: uppercase;
326
+ }
327
+ .mark {
328
+ width: clamp(30px, 3.8vw, 46px);
329
+ height: clamp(30px, 3.8vw, 46px);
330
+ border: 2px solid var(--accent);
331
+ display: grid;
332
+ place-items: center;
333
+ font-size: clamp(14px, 1.8vw, 22px);
334
+ color: #ffffff;
335
+ background: rgba(15, 23, 42, 0.8);
336
+ box-shadow: 0 0 26px var(--accent-mid);
337
+ flex: 0 0 auto;
338
+ }
339
+ .live {
340
+ color: var(--accent);
341
+ border: 1px solid var(--accent-mid);
342
+ background: rgba(15, 23, 42, 0.74);
343
+ padding: 8px 12px;
344
+ font-size: clamp(11px, 1.2vw, 15px);
345
+ font-weight: 900;
346
+ text-transform: uppercase;
347
+ white-space: nowrap;
348
+ }
349
+ .lanes {
350
+ display: grid;
351
+ grid-template-columns: minmax(0, 1fr) minmax(210px, 0.82fr) minmax(0, 1fr);
352
+ gap: clamp(16px, 2.2vw, 30px);
353
+ align-self: stretch;
354
+ align-items: center;
355
+ height: 100%;
356
+ min-height: 0;
357
+ }
358
+ .mind {
359
+ position: relative;
360
+ width: min(100%, clamp(210px, 27vw, 360px));
361
+ aspect-ratio: 1;
362
+ justify-self: center;
363
+ display: grid;
364
+ place-items: center;
365
+ border-radius: 50%;
366
+ overflow: hidden;
367
+ border: 1px solid rgba(226, 232, 240, 0.18);
368
+ box-shadow:
369
+ 0 0 0 1px rgba(15, 23, 42, 0.85),
370
+ 0 0 42px rgba(56, 189, 248, 0.32),
371
+ inset 0 0 48px rgba(15, 23, 42, 0.86);
372
+ background: #020617;
373
+ }
374
+ .mind::after {
375
+ content: "";
376
+ position: absolute;
377
+ inset: 0;
378
+ border-radius: 50%;
379
+ background:
380
+ radial-gradient(circle at 30% 22%, rgba(191, 219, 254, 0.22), transparent 14%),
381
+ radial-gradient(circle at 68% 80%, transparent 42%, rgba(0, 0, 0, 0.58) 84%),
382
+ radial-gradient(circle at 50% 50%, transparent 59%, rgba(147, 197, 253, 0.18) 62%, transparent 70%);
383
+ box-shadow:
384
+ inset -28px -32px 62px rgba(0, 0, 0, 0.58),
385
+ inset 16px 14px 36px rgba(147, 197, 253, 0.08);
386
+ z-index: 3;
387
+ pointer-events: none;
388
+ }
389
+ .lane {
390
+ min-width: 0;
391
+ height: 100%;
392
+ min-height: 0;
393
+ display: grid;
394
+ grid-template-rows: auto 1fr;
395
+ gap: clamp(8px, 1.2vh, 12px);
396
+ padding: clamp(12px, 1.8vw, 18px);
397
+ border-left: 2px solid rgba(226, 232, 240, 0.14);
398
+ border-right: 2px solid rgba(226, 232, 240, 0.08);
399
+ background: rgba(2, 6, 23, 0.42);
400
+ box-shadow: inset 0 1px 0 rgba(248, 250, 252, 0.05);
401
+ }
402
+ .lane-title {
403
+ display: flex;
404
+ align-items: center;
405
+ justify-content: space-between;
406
+ gap: 10px;
407
+ color: #e2e8f0;
408
+ font-size: clamp(12px, 1.3vw, 17px);
409
+ font-weight: 900;
410
+ text-transform: uppercase;
411
+ }
412
+ .lane-title::after {
413
+ content: "";
414
+ height: 3px;
415
+ flex: 1 1 auto;
416
+ background: currentColor;
417
+ opacity: 0.62;
418
+ }
419
+ .lane[data-kind="heard"] .lane-title { color: var(--heard); }
420
+ .lane[data-kind="comment"] .lane-title { color: var(--comment); }
421
+ .activity {
422
+ gap: clamp(8px, 1.1vh, 12px);
423
+ min-height: 0;
424
+ overflow: hidden;
425
+ display: flex;
426
+ flex-direction: column;
427
+ justify-content: flex-start;
428
+ }
429
+ .item {
430
+ display: block;
431
+ min-width: 0;
432
+ flex: 0 0 auto;
433
+ border-left: 2px solid currentColor;
434
+ padding: 0 0 0 9px;
435
+ color: #e2e8f0;
436
+ opacity: 0.92;
437
+ }
438
+ .label {
439
+ color: #94a3b8;
440
+ font-size: clamp(10px, 1.1vw, 14px);
441
+ font-weight: 900;
442
+ text-transform: uppercase;
443
+ line-height: 1;
444
+ overflow: hidden;
445
+ text-overflow: ellipsis;
446
+ white-space: nowrap;
447
+ }
448
+ .label.repeated {
449
+ display: none;
450
+ }
451
+ .text {
452
+ color: #f8fafc;
453
+ font-size: clamp(12px, 1.18vw, 17px);
454
+ line-height: 1.04;
455
+ min-height: 0;
456
+ overflow-wrap: anywhere;
457
+ display: -webkit-box;
458
+ -webkit-box-orient: vertical;
459
+ -webkit-line-clamp: 2;
460
+ overflow: hidden;
461
+ }
462
+ .empty {
463
+ color: #64748b;
464
+ font-size: clamp(13px, 1.35vw, 18px);
465
+ line-height: 1.1;
466
+ align-self: center;
467
+ }
468
+ .footer {
469
+ display: grid;
470
+ grid-template-columns: 1fr auto auto;
471
+ gap: 16px;
472
+ align-items: end;
473
+ color: #94a3b8;
474
+ font-size: clamp(11px, 1.15vw, 15px);
475
+ font-weight: 700;
476
+ min-width: 0;
477
+ }
478
+ .timestamp {
479
+ overflow: hidden;
480
+ text-overflow: ellipsis;
481
+ white-space: nowrap;
482
+ }
483
+ .diagnostic {
484
+ color: var(--accent);
485
+ white-space: nowrap;
486
+ }
487
+ @media (max-aspect-ratio: 1/1) {
488
+ .tile {
489
+ width: 100%;
490
+ max-height: none;
491
+ min-height: calc(100vh - min(6.4vh, 56px));
492
+ aspect-ratio: auto;
493
+ }
494
+ .lanes {
495
+ grid-template-columns: 1fr;
496
+ }
497
+ .mind {
498
+ width: min(64vw, 300px);
499
+ order: -1;
500
+ }
501
+ }
502
+ @media (prefers-reduced-motion: reduce) {
503
+ .plasma-canvas,
504
+ .tile::after,
505
+ .item {
506
+ animation: none;
507
+ }
508
+ }
509
+ </style>
510
+ </head>
511
+ <body>
512
+ <main class="samograph-presence">
513
+ <section class="tile" aria-live="polite">
514
+ <header class="header">
515
+ <div class="brand"><span class="mark">S</span><span>samograph live presence</span></div>
516
+ <div class="live" id="live">listening</div>
517
+ </header>
518
+ <div class="lanes">
519
+ <section class="lane" data-kind="heard">
520
+ <div class="lane-title">Heard</div>
521
+ <div class="activity" id="heard"></div>
522
+ </section>
523
+ <div class="mind" aria-label="samoagent avatar">
524
+ <canvas class="plasma-canvas" id="plasma" aria-hidden="true"></canvas>
525
+ <img class="robot-img" id="robot" src="${ROBOT_DATA_URI}" alt="samoagent" aria-hidden="true">
526
+ </div>
527
+ <section class="lane" data-kind="comment">
528
+ <div class="lane-title">Comments</div>
529
+ <div class="activity" id="comment"></div>
530
+ </section>
531
+ </div>
532
+ <footer class="footer">
533
+ <div class="timestamp" id="updated">Waiting for live signal</div>
534
+ <div class="diagnostic" id="render-fps">Render FPS --</div>
535
+ <div id="count">0 events</div>
536
+ </footer>
537
+ </section>
538
+ </main>
539
+ <script>
540
+ const params = new URLSearchParams(location.search);
541
+ const token = params.get("token") || "";
542
+ const bgParam = params.get("bg") || "robot";
543
+ // Named modes only; unknown values fall back to the robot avatar.
544
+ const backgroundMode = ["robot", "sphere", "field", "static", "cycle"].includes(bgParam) ? bgParam : "robot";
545
+ const styles = {
546
+ idle: ["#64748b", "rgba(100, 116, 139, 0.18)", "rgba(100, 116, 139, 0.36)"],
547
+ listening: ["#38bdf8", "rgba(56, 189, 248, 0.16)", "rgba(56, 189, 248, 0.44)"],
548
+ thinking: ["#818cf8", "rgba(129, 140, 248, 0.18)", "rgba(129, 140, 248, 0.48)"],
549
+ speaking: ["#a78bfa", "rgba(167, 139, 250, 0.2)", "rgba(167, 139, 250, 0.5)"],
550
+ acting: ["#60a5fa", "rgba(96, 165, 250, 0.18)", "rgba(96, 165, 250, 0.46)"]
551
+ };
552
+ const laneConfig = [
553
+ ["heard", document.getElementById("heard"), "No speech yet"],
554
+ ["comment", document.getElementById("comment"), "No comments yet"]
555
+ ];
556
+ let activityEnergy = 0;
557
+ const classify = (item) => {
558
+ if (item && item.kind === "heard") return "heard";
559
+ return "comment";
560
+ };
561
+ function hexToRgb(hex) {
562
+ const match = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(String(hex || ""));
563
+ if (!match) return [56, 189, 248];
564
+ return [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16)];
565
+ }
566
+ function cssVarRgb(name) {
567
+ return hexToRgb(getComputedStyle(document.documentElement).getPropertyValue(name).trim());
568
+ }
569
+ function initRobot() {
570
+ // Robot mode is just a full-frame static picture. Move the image to be a
571
+ // direct child of <body> (escaping the tile's stacking/overflow context),
572
+ // then remove the entire dynamic dashboard so no header/lanes/footer/FPS
573
+ // text can show. No refresh/FPS loops run in this mode.
574
+ const robot = document.getElementById("robot");
575
+ const root = document.querySelector(".samograph-presence");
576
+ if (robot) {
577
+ document.body.appendChild(robot);
578
+ robot.style.display = "block";
579
+ }
580
+ if (root) root.remove();
581
+ document.body.style.background = "#000";
582
+ }
583
+ function initPlasma() {
584
+ const canvas = document.getElementById("plasma");
585
+ const ctx = canvas && canvas.getContext("2d", { alpha: true });
586
+ if (!canvas || !ctx) return;
587
+ let w = 1;
588
+ let h = 1;
589
+ let image = null;
590
+ let lastFrame = 0;
591
+ const frameMs = 100;
592
+ const reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
593
+ let redrawQueued = false;
594
+ function scheduleRedraw() {
595
+ if (redrawQueued) return;
596
+ redrawQueued = true;
597
+ requestAnimationFrame((now) => {
598
+ redrawQueued = false;
599
+ lastFrame = now - frameMs;
600
+ draw(now);
601
+ });
602
+ }
603
+ function resize() {
604
+ const rect = canvas.getBoundingClientRect();
605
+ const nextW = Math.max(96, Math.min(220, Math.floor(rect.width / 3.2)));
606
+ const nextH = Math.max(96, Math.min(220, Math.floor(rect.height / 3.2)));
607
+ if (image && nextW === w && nextH === h) return;
608
+ w = nextW;
609
+ h = nextH;
610
+ canvas.width = w;
611
+ canvas.height = h;
612
+ image = ctx.createImageData(w, h);
613
+ // Reassigning canvas dimensions clears the bitmap; in static or
614
+ // reduced-motion modes the animation loop never repaints, so schedule
615
+ // a one-shot redraw (the running loop covers animated modes).
616
+ if (reduce || backgroundMode === "static") scheduleRedraw();
617
+ }
618
+ function clamp(value, min, max) {
619
+ return Math.max(min, Math.min(max, value));
620
+ }
621
+ function mix(a, b, n) {
622
+ return a + (b - a) * n;
623
+ }
624
+ function plasmaBands(x, y, z, t, energy) {
625
+ return (
626
+ Math.sin(x * 6.0 + y * 2.2 + t * (1.9 + energy * 2.2)) +
627
+ Math.sin(y * 7.2 - z * 3.8 - t * (1.4 + energy * 1.6)) +
628
+ Math.sin((x + z) * 8.4 + t * (2.4 + energy * 2.8)) +
629
+ Math.sin(Math.atan2(y, x) * 5.0 + z * 4.2 - t * (1.7 + energy * 2.0))
630
+ ) / 4;
631
+ }
632
+ function drawFieldPlasma(data, accent, t, energy) {
633
+ const cx = w * 0.5;
634
+ const cy = h * 0.5;
635
+ let p = 0;
636
+ for (let y = 0; y < h; y++) {
637
+ for (let x = 0; x < w; x++) {
638
+ const nx = (x - cx) / cx;
639
+ const ny = (y - cy) / cy;
640
+ const n = plasmaBands(nx, ny, Math.hypot(nx, ny), t, energy) * 0.5 + 0.5;
641
+ data[p] = Math.round(mix(12, accent[0] + 100, n));
642
+ data[p + 1] = Math.round(mix(20, accent[1] + 62, 1 - Math.abs(n - 0.55)));
643
+ data[p + 2] = Math.round(mix(46, accent[2] + 76, 1 - n));
644
+ data[p + 3] = 190;
645
+ p += 4;
646
+ }
647
+ }
648
+ }
649
+ function drawSpherePlasma(data, accent, t, energy) {
650
+ const cx = w * 0.5;
651
+ const cy = h * 0.5;
652
+ const pulse = 1 + Math.sin(t * 3.2) * (0.035 + energy * 0.045);
653
+ const radius = Math.min(w, h) * 0.44 * pulse;
654
+ let p = 0;
655
+ for (let y = 0; y < h; y++) {
656
+ for (let x = 0; x < w; x++) {
657
+ const dx = (x - cx) / radius;
658
+ const dy = (y - cy) / radius;
659
+ const dist = Math.sqrt(dx * dx + dy * dy);
660
+ if (dist < 1) {
661
+ const z = Math.sqrt(Math.max(0, 1 - dist * dist));
662
+ const spin = t * (0.55 + energy * 0.7);
663
+ const cos = Math.cos(spin);
664
+ const sin = Math.sin(spin);
665
+ const rx = dx * cos - z * sin;
666
+ const rz = dx * sin + z * cos;
667
+ const bands = plasmaBands(rx, dy, rz, t, energy) * 0.5 + 0.5;
668
+ const rim = Math.pow(dist, 3.4);
669
+ const light = clamp(0.22 + z * 0.5 - dx * 0.1 - dy * 0.15 + energy * 0.1, 0, 1.05);
670
+ const glow = Math.pow(bands, 1.45);
671
+ const depth = Math.pow(1 - bands, 1.15);
672
+ data[p] = Math.round(clamp((24 + glow * 96 + depth * 16) * light + rim * 24, 0, 190));
673
+ data[p + 1] = Math.round(clamp((48 + glow * 142 + depth * 54) * light + rim * 48, 0, 228));
674
+ data[p + 2] = Math.round(clamp((116 + glow * 156 + depth * 120) * light + rim * 72, 0, 255));
675
+ data[p + 3] = 255;
676
+ } else {
677
+ const halo = clamp(1 - (dist - 1) / 0.42, 0, 1);
678
+ data[p] = Math.round(34 * halo);
679
+ data[p + 1] = Math.round(82 * halo);
680
+ data[p + 2] = Math.round(180 * halo);
681
+ data[p + 3] = Math.round(120 * halo * halo);
682
+ }
683
+ p += 4;
684
+ }
685
+ }
686
+ }
687
+ function draw(now) {
688
+ if (!reduce && now - lastFrame < frameMs) {
689
+ requestAnimationFrame(draw);
690
+ return;
691
+ }
692
+ lastFrame = now;
693
+ if (!image) resize();
694
+ const accent = cssVarRgb("--accent");
695
+ const energy = activityEnergy;
696
+ const t = backgroundMode === "static" ? 420 : now * (0.00055 + energy * 0.0007);
697
+ const data = image.data;
698
+ const cycle = (now * 0.00005) % 1;
699
+ if (backgroundMode === "static") drawSpherePlasma(data, accent, t, 0);
700
+ else if (backgroundMode === "field") drawFieldPlasma(data, accent, t, energy);
701
+ else if (backgroundMode === "cycle" && cycle < 0.5) drawFieldPlasma(data, accent, t, energy);
702
+ else if (backgroundMode === "cycle") drawSpherePlasma(data, accent, t, energy);
703
+ else drawSpherePlasma(data, accent, t, energy); // sphere (and fallback)
704
+ ctx.putImageData(image, 0, 0);
705
+ if (!reduce && backgroundMode !== "static") requestAnimationFrame(draw);
706
+ }
707
+ const ro = new ResizeObserver(resize);
708
+ ro.observe(canvas);
709
+ resize();
710
+ requestAnimationFrame(draw);
711
+ }
712
+ function formatUpdated(value) {
713
+ const date = new Date(String(value || ""));
714
+ if (Number.isNaN(date.getTime())) return "Waiting for live signal";
715
+ return "Updated " + date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" });
716
+ }
717
+ function initFpsProbe() {
718
+ const target = document.getElementById("render-fps");
719
+ if (!target) return;
720
+ let frames = 0;
721
+ let last = performance.now();
722
+ function tick(now) {
723
+ frames += 1;
724
+ const elapsed = now - last;
725
+ if (elapsed >= 1000) {
726
+ target.textContent = "Render FPS " + Math.round((frames * 1000) / elapsed);
727
+ frames = 0;
728
+ last = now;
729
+ }
730
+ requestAnimationFrame(tick);
731
+ }
732
+ requestAnimationFrame(tick);
733
+ }
734
+ function renderLane(element, items, fallback) {
735
+ element.replaceChildren();
736
+ if (items.length === 0) {
737
+ const empty = document.createElement("div");
738
+ empty.className = "empty";
739
+ empty.textContent = fallback;
740
+ element.append(empty);
741
+ return;
742
+ }
743
+ let lastLabel = "";
744
+ for (const item of items.slice(0, 14)) {
745
+ const row = document.createElement("div");
746
+ row.className = "item";
747
+ const label = document.createElement("div");
748
+ label.className = "label";
749
+ const labelText = String(item.label || item.kind || "event");
750
+ if (labelText === lastLabel) label.classList.add("repeated");
751
+ label.textContent = labelText;
752
+ lastLabel = labelText;
753
+ const text = document.createElement("div");
754
+ text.className = "text";
755
+ text.textContent = String(item.text || "");
756
+ row.append(label, text);
757
+ element.append(row);
758
+ }
759
+ }
760
+ async function refresh() {
761
+ try {
762
+ const response = await fetch("/presence.json", {
763
+ cache: "no-store",
764
+ headers: { "X-Samograph-Presence-Token": token },
765
+ });
766
+ if (!response.ok) return;
767
+ const data = await response.json();
768
+ const state = String(data.state || "listening");
769
+ document.getElementById("live").textContent = state;
770
+ const buckets = { heard: [], comment: [] };
771
+ const activities = Array.isArray(data.activities) ? data.activities : [];
772
+ const now = Date.now();
773
+ const recent = activities.filter((item) => {
774
+ const at = Date.parse(String(item && item.at || ""));
775
+ return Number.isFinite(at) && now - at < 12000;
776
+ }).length;
777
+ activityEnergy = Math.max(activityEnergy * 0.78, Math.min(1, recent / 5));
778
+ for (const item of activities) {
779
+ buckets[classify(item)].push(item);
780
+ }
781
+ for (const [kind, element, fallback] of laneConfig) renderLane(element, buckets[kind], fallback);
782
+ document.getElementById("updated").textContent = formatUpdated(data.updated_at);
783
+ document.getElementById("count").textContent = activities.length + (activities.length === 1 ? " event" : " events");
784
+ const pair = styles[state] || styles.listening;
785
+ document.documentElement.style.setProperty("--accent", pair[0]);
786
+ document.documentElement.style.setProperty("--accent-soft", pair[1]);
787
+ document.documentElement.style.setProperty("--accent-mid", pair[2]);
788
+ } catch {}
789
+ }
790
+ if (backgroundMode === "robot") {
791
+ initRobot();
792
+ } else {
793
+ initPlasma();
794
+ initFpsProbe();
795
+ refresh();
796
+ setInterval(refresh, 1000);
797
+ }
798
+ </script>
799
+ </body>
800
+ </html>`;
801
+ }
802
+
803
+ // src/commands/join.ts
804
+ import { writeFileSync as writeFileSync4 } from "fs";
805
+ import { spawn as spawnChild } from "child_process";
806
+ import { randomUUID } from "crypto";
807
+ import { fileURLToPath as fileURLToPath2 } from "url";
808
+
809
+ // src/transcript.ts
810
+ import {
811
+ existsSync as existsSync2,
812
+ readFileSync as readFileSync2,
813
+ writeFileSync as writeFileSync2,
814
+ mkdirSync as mkdirSync2,
815
+ openSync,
816
+ readSync,
817
+ closeSync
818
+ } from "fs";
819
+ import { join as join2 } from "path";
820
+ import { homedir as homedir2 } from "os";
821
+ import { StringDecoder } from "string_decoder";
822
+
823
+ // src/state.ts
824
+ import { chmodSync, existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
825
+ import { dirname as dirname2 } from "path";
826
+ function loadState() {
827
+ const f = stateFile();
828
+ if (existsSync(f)) {
829
+ return JSON.parse(readFileSync(f, "utf-8"));
830
+ }
831
+ return {};
832
+ }
833
+ function saveState(state) {
834
+ const f = stateFile();
835
+ const dir = dirname2(f);
836
+ const dirExisted = existsSync(dir);
837
+ mkdirSync(dir, { recursive: true, mode: 448 });
838
+ if (!dirExisted || process.env.SAMOGRAPH_STATE_FILE === undefined) {
839
+ chmodSync(dir, 448);
840
+ }
841
+ writeFileSync(f, JSON.stringify(state, null, 2), { mode: 384 });
842
+ chmodSync(f, 384);
843
+ }
844
+ function botIdFromArgsOrState(argBotId) {
845
+ if (argBotId) {
846
+ return argBotId;
847
+ }
848
+ const state = loadState();
849
+ const bid = state.bot_id;
850
+ if (!bid || typeof bid !== "string") {
851
+ process.stderr.write(`Error: no active bot. Pass BOT_ID or run 'samograph join' first.
852
+ `);
853
+ throw new ExitError(1);
854
+ }
855
+ return bid;
856
+ }
857
+
858
+ // src/transcript.ts
859
+ var SENTINEL_RE = /^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\] SAMOGRAPH_CALL_ENDED$/;
860
+ function expanduser(p) {
861
+ if (p === "~")
862
+ return homedir2();
863
+ if (p.startsWith("~/"))
864
+ return join2(homedir2(), p.slice(2));
865
+ return p;
866
+ }
867
+ function resolveTranscriptDir(transcriptDir) {
868
+ let d;
869
+ if (transcriptDir) {
870
+ d = expanduser(transcriptDir);
871
+ } else {
872
+ d = samographDir();
873
+ }
874
+ mkdirSync2(d, { recursive: true });
875
+ return d;
876
+ }
877
+ function timestampPrefixUtc(now) {
878
+ const pad = (n) => String(n).padStart(2, "0");
879
+ return [
880
+ now.getUTCFullYear(),
881
+ pad(now.getUTCMonth() + 1),
882
+ pad(now.getUTCDate())
883
+ ].join("") + "_" + [
884
+ pad(now.getUTCHours()),
885
+ pad(now.getUTCMinutes()),
886
+ pad(now.getUTCSeconds())
887
+ ].join("");
888
+ }
889
+ function resolveNewTranscriptFile(transcriptDir, now = new Date) {
890
+ const d = resolveTranscriptDir(transcriptDir);
891
+ const prefix = timestampPrefixUtc(now);
892
+ let candidate = join2(d, `${prefix}_transcript.txt`);
893
+ for (let i = 2;existsSync2(candidate); i += 1) {
894
+ candidate = join2(d, `${prefix}_${i}_transcript.txt`);
895
+ }
896
+ return candidate;
897
+ }
898
+ function sanitizeTranscriptField(value) {
899
+ return value.replace(/[\r\n]+/g, " ").replace(/\s+/g, " ").trim();
900
+ }
901
+ function formatTranscriptLine(payload) {
902
+ const p = payload ?? {};
903
+ if (p.event !== "transcript.data") {
904
+ return null;
905
+ }
906
+ const inner = p.data?.data ?? {};
907
+ const words = inner.words ?? [];
908
+ if (!words.length) {
909
+ return null;
910
+ }
911
+ const text = sanitizeTranscriptField(words.map((w) => w.text ?? "").join(" "));
912
+ const speaker = sanitizeTranscriptField(inner.participant?.name ?? "") || "?";
913
+ const absolute = words[0]?.start_timestamp?.absolute ?? "";
914
+ const ts = absolute.slice(0, 19).replace("T", " ");
915
+ return `[${ts}] ${speaker}: ${text}`;
916
+ }
917
+ function transcriptPathFromState() {
918
+ const state = loadState();
919
+ const tf = state.transcript_file;
920
+ if (typeof tf === "string" && tf) {
921
+ return tf;
922
+ }
923
+ return defaultTranscriptFile();
924
+ }
925
+ function printLocalTranscript(path) {
926
+ const tf = path ?? transcriptPathFromState();
927
+ if (existsSync2(tf)) {
928
+ const lines = localTranscriptLines(tf);
929
+ if (lines.length) {
930
+ const tail = lines.slice(-20);
931
+ const base = tf.split("/").pop() ?? tf;
932
+ process.stdout.write(`
933
+ --- last ${Math.min(20, lines.length)} lines from ${base} ---
934
+ `);
935
+ for (const line of tail) {
936
+ process.stdout.write(line + `
937
+ `);
938
+ }
939
+ } else {
940
+ process.stdout.write(`${tf} is empty -- call may not have started yet.
941
+ `);
942
+ }
943
+ } else {
944
+ process.stdout.write(`Transcript not found at ${tf}
945
+ `);
946
+ }
947
+ }
948
+ function localTranscriptLines(path) {
949
+ const tf = path ?? transcriptPathFromState();
950
+ if (!existsSync2(tf)) {
951
+ return [];
952
+ }
953
+ return readFileSync2(tf, "utf-8").split(/\r?\n/).filter((l) => l.trim() && !SENTINEL_RE.test(l));
954
+ }
955
+ var sleep = (ms) => new Promise((r) => setTimeout(r, ms));
956
+ async function streamTranscriptLines(onLine, opts = {}) {
957
+ const pollMs = opts.pollMs ?? 100;
958
+ const stateGoneCheckEvery = opts.stateGoneCheckEvery ?? 20;
959
+ const appearWaitMs = opts.appearWaitMs ?? 30000;
960
+ const tf = transcriptPathFromState();
961
+ let waited = 0;
962
+ while (!existsSync2(tf)) {
963
+ mkdirSync2(join2(tf, ".."), { recursive: true });
964
+ await sleep(500);
965
+ waited += 500;
966
+ if (waited >= appearWaitMs) {
967
+ writeFileSync2(tf, "");
968
+ break;
969
+ }
970
+ }
971
+ if (!existsSync2(stateFile())) {
972
+ process.stderr.write(`No active session. Run 'samograph join' first.
973
+ `);
974
+ return;
975
+ }
976
+ for (const existing of readFileSync2(tf, "utf-8").split(/\r?\n/)) {
977
+ if (SENTINEL_RE.test(existing.replace(/\n$/, ""))) {
978
+ return;
979
+ }
980
+ }
981
+ if (opts.fromStart === true) {
982
+ for (const existing of readFileSync2(tf, "utf-8").split(/\r?\n/)) {
983
+ if (!existing)
984
+ continue;
985
+ if (SENTINEL_RE.test(existing.replace(/\r$/, ""))) {
986
+ return;
987
+ }
988
+ await onLine(existing);
989
+ }
990
+ }
991
+ const fd = openSync(tf, "r");
992
+ try {
993
+ let pos = Bun.file(tf).size;
994
+ let pollCounter = 0;
995
+ let buffer = "";
996
+ const chunk = Buffer.alloc(64 * 1024);
997
+ let decoder = new StringDecoder("utf-8");
998
+ while (true) {
999
+ const size = Bun.file(tf).size;
1000
+ if (size < pos) {
1001
+ pos = 0;
1002
+ buffer = "";
1003
+ decoder = new StringDecoder("utf-8");
1004
+ }
1005
+ if (size > pos) {
1006
+ const toRead = size - pos;
1007
+ let remaining = toRead;
1008
+ let offset = pos;
1009
+ let data = "";
1010
+ while (remaining > 0) {
1011
+ const n = readSync(fd, chunk, 0, Math.min(chunk.length, remaining), offset);
1012
+ if (n <= 0)
1013
+ break;
1014
+ data += decoder.write(chunk.subarray(0, n));
1015
+ offset += n;
1016
+ remaining -= n;
1017
+ }
1018
+ pos = offset;
1019
+ buffer += data;
1020
+ let idx;
1021
+ while ((idx = buffer.indexOf(`
1022
+ `)) !== -1) {
1023
+ const line = buffer.slice(0, idx);
1024
+ buffer = buffer.slice(idx + 1);
1025
+ if (SENTINEL_RE.test(line.replace(/\r$/, ""))) {
1026
+ return;
1027
+ }
1028
+ await onLine(line);
1029
+ }
1030
+ } else {
1031
+ pollCounter += 1;
1032
+ await sleep(pollMs);
1033
+ if (pollCounter % stateGoneCheckEvery === 0 && !existsSync2(stateFile())) {
1034
+ return;
1035
+ }
1036
+ }
1037
+ }
1038
+ } finally {
1039
+ closeSync(fd);
1040
+ }
1041
+ }
1042
+ async function watch(opts = {}) {
1043
+ return streamTranscriptLines((line) => {
1044
+ process.stdout.write(line + `
1045
+ `);
1046
+ }, opts);
1047
+ }
1048
+
1049
+ // src/frameStore.ts
1050
+ import {
1051
+ chmodSync as chmodSync2,
1052
+ copyFileSync,
1053
+ existsSync as existsSync3,
1054
+ mkdirSync as mkdirSync3,
1055
+ readFileSync as readFileSync3,
1056
+ writeFileSync as writeFileSync3
1057
+ } from "fs";
1058
+ import { dirname as dirname3, extname, join as join3, resolve } from "path";
1059
+ import { homedir as homedir3 } from "os";
1060
+ import { Buffer as Buffer2 } from "buffer";
1061
+ function expandUser(path) {
1062
+ if (path === "~")
1063
+ return homedir3();
1064
+ if (path.startsWith("~/"))
1065
+ return join3(homedir3(), path.slice(2));
1066
+ return path;
1067
+ }
1068
+ function resolveVideoFrameDir(frameDir, create = true) {
1069
+ const dir = frameDir ? expandUser(frameDir) : join3(samographDir(), "frames");
1070
+ if (create) {
1071
+ const dirExisted = existsSync3(dir);
1072
+ mkdirSync3(dir, { recursive: true, mode: 448 });
1073
+ if (!dirExisted || !frameDir) {
1074
+ chmodSync2(dir, 448);
1075
+ }
1076
+ }
1077
+ return dir;
1078
+ }
1079
+ function resolveVideoFrameFile(frameDir, create = true) {
1080
+ return join3(resolveVideoFrameDir(frameDir, create), "latest.png");
1081
+ }
1082
+ function resolveFrameOutput(out, state) {
1083
+ if (out)
1084
+ return expandUser(out);
1085
+ const stateFile2 = state.video_frame_file;
1086
+ if (typeof stateFile2 === "string" && stateFile2)
1087
+ return expandUser(stateFile2);
1088
+ return resolveVideoFrameFile();
1089
+ }
1090
+ function safeFilenamePart(value, fallback = "unknown") {
1091
+ const raw = String(value || fallback);
1092
+ const safe = raw.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^[-._]+|[-._]+$/g, "");
1093
+ return safe || fallback;
1094
+ }
1095
+ function frameMetadataPath(framePath) {
1096
+ const ext = extname(framePath);
1097
+ return ext ? framePath.slice(0, -ext.length) + ".json" : framePath + ".json";
1098
+ }
1099
+ function frameTimestampForFilename(timestamp) {
1100
+ const absolute = timestamp?.absolute;
1101
+ const dt = absolute ? new Date(absolute) : new Date;
1102
+ const valid = Number.isNaN(dt.getTime()) ? new Date : dt;
1103
+ return valid.toISOString().replace(/[-:]/g, "").replace(/\.(\d{3})Z$/, ".$1000Z");
1104
+ }
1105
+ function archivedFramePath(frameDir, metadata) {
1106
+ const participant = metadata.participant ?? {};
1107
+ const callPart = safeFilenamePart(metadata.call_id, "no-call");
1108
+ const timestampPart = frameTimestampForFilename(metadata.timestamp);
1109
+ const sourceType = safeFilenamePart(metadata.type, "frame");
1110
+ const participantId = safeFilenamePart(participant.id, "unknown");
1111
+ return join3(frameDir, `${callPart}_${timestampPart}_${sourceType}_${participantId}.png`);
1112
+ }
1113
+ function frameSourceKey(metadata) {
1114
+ const type = metadata.type ?? null;
1115
+ const participantId = metadata.participant?.id;
1116
+ if (type === "screen_share")
1117
+ return "type:screen_share";
1118
+ if (participantId !== undefined && participantId !== null && String(participantId) !== "") {
1119
+ return `participant:${participantId}`;
1120
+ }
1121
+ if (type)
1122
+ return `type:${type}`;
1123
+ return "latest";
1124
+ }
1125
+ function frameSourceAliases(metadata) {
1126
+ const aliases = new Set([frameSourceKey(metadata)]);
1127
+ if (metadata.type) {
1128
+ aliases.add(`type:${metadata.type}`);
1129
+ }
1130
+ return [...aliases];
1131
+ }
1132
+ function normalizeFrameSource(source) {
1133
+ if (!source || source === "latest")
1134
+ return null;
1135
+ if (source === "screen" || source === "screen_share")
1136
+ return "type:screen_share";
1137
+ if (source === "webcam")
1138
+ return "type:webcam";
1139
+ if (source.startsWith("participant:") || source.startsWith("type:"))
1140
+ return source;
1141
+ return `participant:${source}`;
1142
+ }
1143
+ function frameVisualStatus(raw) {
1144
+ if (raw.byteLength === 0)
1145
+ return "empty";
1146
+ if (raw.byteLength < 2048)
1147
+ return "tiny_or_placeholder";
1148
+ return "unknown";
1149
+ }
1150
+ function writeFrameFiles(out, raw, metadata) {
1151
+ const dir = dirname3(out);
1152
+ const dirExisted = existsSync3(dir);
1153
+ mkdirSync3(dir, { recursive: true, mode: 448 });
1154
+ if (!dirExisted) {
1155
+ chmodSync2(dir, 448);
1156
+ }
1157
+ writeFileSync3(out, raw, { mode: 384 });
1158
+ chmodSync2(out, 384);
1159
+ if (metadata !== undefined) {
1160
+ const metadataFile = frameMetadataPath(out);
1161
+ writeFileSync3(metadataFile, JSON.stringify(metadata, null, 2), { mode: 384 });
1162
+ chmodSync2(metadataFile, 384);
1163
+ }
1164
+ }
1165
+ function archiveFrameBytes(frameDir, raw, metadata) {
1166
+ const archiveFile = archivedFramePath(frameDir, metadata);
1167
+ const archived = {
1168
+ ...metadata,
1169
+ archive_file: archiveFile,
1170
+ archived_at: new Date().toISOString()
1171
+ };
1172
+ writeFrameFiles(archiveFile, raw, archived);
1173
+ return archiveFile;
1174
+ }
1175
+ function archiveExistingFrame(latestFile) {
1176
+ const metadataFile = frameMetadataPath(latestFile);
1177
+ const metadata = existsSync3(metadataFile) ? JSON.parse(readFileSync3(metadataFile, "utf-8")) : {};
1178
+ const archiveFile = archivedFramePath(dirname3(latestFile), metadata);
1179
+ const archiveDir = dirname3(archiveFile);
1180
+ const dirExisted = existsSync3(archiveDir);
1181
+ mkdirSync3(archiveDir, { recursive: true, mode: 448 });
1182
+ if (!dirExisted) {
1183
+ chmodSync2(archiveDir, 448);
1184
+ }
1185
+ copyFileSync(latestFile, archiveFile);
1186
+ chmodSync2(archiveFile, 384);
1187
+ writeFileSync3(frameMetadataPath(archiveFile), JSON.stringify({
1188
+ ...metadata,
1189
+ archive_file: archiveFile,
1190
+ archived_at: new Date().toISOString()
1191
+ }, null, 2), { mode: 384 });
1192
+ chmodSync2(frameMetadataPath(archiveFile), 384);
1193
+ return archiveFile;
1194
+ }
1195
+ function decodeVideoSeparatePng(payload, callId) {
1196
+ const p = payload ?? {};
1197
+ if (p.event !== "video_separate_png.data")
1198
+ return null;
1199
+ const inner = p.data?.data ?? {};
1200
+ if (!inner.buffer)
1201
+ return null;
1202
+ const raw = new Uint8Array(Buffer2.from(inner.buffer, "base64"));
1203
+ const participant = inner.participant ?? {};
1204
+ const metadata = {
1205
+ event: p.event,
1206
+ call_id: callId ?? null,
1207
+ type: inner.type ?? null,
1208
+ participant: {
1209
+ id: participant.id ?? null,
1210
+ name: participant.name ?? null,
1211
+ is_host: participant.is_host ?? null
1212
+ },
1213
+ timestamp: inner.timestamp ?? null,
1214
+ updated_at: new Date().toISOString(),
1215
+ raw_bytes: raw.byteLength,
1216
+ visual_status: frameVisualStatus(raw)
1217
+ };
1218
+ metadata.source_key = frameSourceKey(metadata);
1219
+ return {
1220
+ raw,
1221
+ metadata
1222
+ };
1223
+ }
1224
+
1225
+ // src/dict.ts
1226
+ import { existsSync as existsSync4, readFileSync as readFileSync4 } from "fs";
1227
+ import { join as join4 } from "path";
1228
+ function loadDict(name) {
1229
+ if (!name || name.toLowerCase() === "none") {
1230
+ return [];
1231
+ }
1232
+ const path = join4(dictDir(), `${name}.txt`);
1233
+ if (!existsSync4(path)) {
1234
+ process.stdout.write(`Warning: dictionary '${name}' not found at ${path}, continuing without it.
1235
+ `);
1236
+ return [];
1237
+ }
1238
+ const terms = readFileSync4(path, "utf-8").split(/\r?\n/).map((l) => l.trim()).filter((l) => l.length > 0);
1239
+ return terms.slice(0, 100);
1240
+ }
1241
+
1242
+ // src/botName.ts
1243
+ function botName(agentName) {
1244
+ let base;
1245
+ if (agentName) {
1246
+ base = `${agentName} \uD83D\uDD34 (samograph)`;
1247
+ } else {
1248
+ base = "samograph \uD83D\uDD34";
1249
+ }
1250
+ return [...base].slice(0, 100).join("");
1251
+ }
1252
+
1253
+ // src/recall.ts
1254
+ function makeRecallClient(fetchFn = fetch) {
1255
+ return {
1256
+ async leaveCall(botId) {
1257
+ return fetchFn(`${RECALL_BASE}/bot/${botId}/leave_call/`, {
1258
+ method: "POST",
1259
+ headers: headers(),
1260
+ signal: AbortSignal.timeout(1e4)
1261
+ });
1262
+ },
1263
+ async getBot(botId) {
1264
+ const r = await fetchFn(`${RECALL_BASE}/bot/${botId}/`, {
1265
+ method: "GET",
1266
+ headers: headers(),
1267
+ signal: AbortSignal.timeout(1e4)
1268
+ });
1269
+ if (!r.ok) {
1270
+ const body = await r.text().catch(() => "");
1271
+ throw new Error(`get bot failed: ${r.status} ${body}`);
1272
+ }
1273
+ try {
1274
+ return await r.json();
1275
+ } catch {
1276
+ throw new Error("get bot failed: invalid JSON response");
1277
+ }
1278
+ },
1279
+ async sendChat(botId, message) {
1280
+ return fetchFn(`${RECALL_BASE}/bot/${botId}/send_chat_message/`, {
1281
+ method: "POST",
1282
+ headers: headers(),
1283
+ body: JSON.stringify({ message }),
1284
+ signal: AbortSignal.timeout(1e4)
1285
+ });
1286
+ },
1287
+ async screenshot(botId) {
1288
+ return fetchFn(`${RECALL_BASE}/bot/${botId}/screenshot/`, {
1289
+ method: "GET",
1290
+ headers: headers(),
1291
+ signal: AbortSignal.timeout(15000),
1292
+ redirect: "follow"
1293
+ });
1294
+ },
1295
+ async createBot(payload) {
1296
+ const r = await fetchFn(`${RECALL_BASE}/bot/`, {
1297
+ method: "POST",
1298
+ headers: headers(),
1299
+ body: JSON.stringify(payload),
1300
+ signal: AbortSignal.timeout(30000)
1301
+ });
1302
+ if (!r.ok) {
1303
+ const body = await r.text().catch(() => "");
1304
+ throw new Error(`recall.ai bot creation failed: ${r.status} ${body}`);
1305
+ }
1306
+ return r.json();
1307
+ }
1308
+ };
1309
+ }
1310
+
1311
+ // src/rtmp.ts
1312
+ import {
1313
+ existsSync as existsSync5,
1314
+ mkdirSync as mkdirSync4,
1315
+ copyFileSync as copyFileSync2,
1316
+ chmodSync as chmodSync3
1317
+ } from "fs";
1318
+ import { join as join5 } from "path";
1319
+ import { homedir as homedir4 } from "os";
1320
+ function rtmpStreamPath(rtmpUrl) {
1321
+ const parsed = new URL(rtmpUrl);
1322
+ return parsed.pathname.replace(/^\/+/, "");
1323
+ }
1324
+ var sleep2 = (ms) => new Promise((r) => setTimeout(r, ms));
1325
+ async function ngrokApiPort(fetchFn = fetch) {
1326
+ for (const p of [4040, 4041, 4042, 4043]) {
1327
+ try {
1328
+ const ctrl = AbortSignal.timeout(1000);
1329
+ const r = await fetchFn(`http://localhost:${p}/api/tunnels`, {
1330
+ signal: ctrl
1331
+ });
1332
+ await r.text().catch(() => {
1333
+ return;
1334
+ });
1335
+ return p;
1336
+ } catch {}
1337
+ }
1338
+ return 4040;
1339
+ }
1340
+ async function waitForNgrok(port, timeout = 15, fetchFn = fetch) {
1341
+ const deadline = Date.now() + timeout * 1000;
1342
+ while (Date.now() < deadline) {
1343
+ try {
1344
+ const apiPort = await ngrokApiPort(fetchFn);
1345
+ const r = await fetchFn(`http://localhost:${apiPort}/api/tunnels`, {
1346
+ signal: AbortSignal.timeout(2000)
1347
+ });
1348
+ const data = await r.json();
1349
+ const tunnels = data.tunnels ?? [];
1350
+ for (const t of tunnels) {
1351
+ if ((t.config?.addr ?? "").includes(String(port))) {
1352
+ return t.public_url;
1353
+ }
1354
+ }
1355
+ if (tunnels.length) {
1356
+ return tunnels[0].public_url;
1357
+ }
1358
+ } catch {}
1359
+ await sleep2(1000);
1360
+ }
1361
+ return null;
1362
+ }
1363
+ async function startNgrokTcpTunnel(localPort, fetchFn = fetch) {
1364
+ const apiPort = await ngrokApiPort(fetchFn);
1365
+ const payload = JSON.stringify({
1366
+ addr: String(localPort),
1367
+ proto: "tcp",
1368
+ name: "rtmp"
1369
+ });
1370
+ try {
1371
+ const r = await fetchFn(`http://localhost:${apiPort}/api/tunnels`, {
1372
+ method: "POST",
1373
+ headers: { "Content-Type": "application/json" },
1374
+ body: payload,
1375
+ signal: AbortSignal.timeout(1e4)
1376
+ });
1377
+ if (!r.ok) {
1378
+ const body = await r.text().catch(() => "");
1379
+ if (body.includes("ERR_NGROK_8013") || body.includes("credit or debit card")) {
1380
+ process.stderr.write("Error: ngrok TCP tunnels require a credit/debit card on file " + `(free plan \u2014 your card will NOT be charged).
1381
+ ` + `Add a card at: https://dashboard.ngrok.com/settings#id-verification
1382
+ ` + `Then retry with --rtmp.
1383
+ `);
1384
+ } else {
1385
+ process.stderr.write(`Error starting ngrok TCP tunnel: ${body.slice(0, 500)}
1386
+ `);
1387
+ }
1388
+ return null;
1389
+ }
1390
+ const data = await r.json();
1391
+ return data.public_url ?? null;
1392
+ } catch (e) {
1393
+ process.stderr.write(`Error starting ngrok TCP tunnel: ${e}
1394
+ `);
1395
+ return null;
1396
+ }
1397
+ }
1398
+ async function ensureMediamtx() {
1399
+ const inPath = Bun.which("mediamtx");
1400
+ if (inPath) {
1401
+ return inPath;
1402
+ }
1403
+ const localBin = join5(homedir4(), ".samograph", "bin", "mediamtx");
1404
+ if (existsSync5(localBin)) {
1405
+ return localBin;
1406
+ }
1407
+ const machine = process.arch;
1408
+ const realArch = machine === "arm64" || machine === "aarch64" ? "arm64" : "amd64";
1409
+ const plat = process.platform;
1410
+ if (plat !== "darwin" && plat !== "linux") {
1411
+ throw new Error(`Unsupported platform for mediamtx auto-download: ${plat}`);
1412
+ }
1413
+ const version = "v1.9.1";
1414
+ const filename = `mediamtx_${version}_${plat}_${realArch}.tar.gz`;
1415
+ const url = `https://github.com/bluenviron/mediamtx/releases/download/${version}/${filename}`;
1416
+ process.stdout.write(`Downloading mediamtx ${version}...
1417
+ `);
1418
+ const tmpdir = join5(homedir4(), ".samograph", "tmp-mediamtx");
1419
+ mkdirSync4(tmpdir, { recursive: true });
1420
+ const archivePath = join5(tmpdir, filename);
1421
+ const resp = await fetch(url);
1422
+ if (!resp.ok) {
1423
+ throw new Error(`Failed to download mediamtx: ${resp.status}`);
1424
+ }
1425
+ await Bun.write(archivePath, resp);
1426
+ await Bun.$`tar -xzf ${archivePath} -C ${tmpdir} mediamtx`.quiet();
1427
+ const extracted = join5(tmpdir, "mediamtx");
1428
+ if (!existsSync5(extracted)) {
1429
+ throw new Error("mediamtx binary not found in downloaded archive");
1430
+ }
1431
+ mkdirSync4(join5(localBin, ".."), { recursive: true });
1432
+ copyFileSync2(extracted, localBin);
1433
+ chmodSync3(localBin, 493);
1434
+ return localBin;
1435
+ }
1436
+ async function startMediamtx() {
1437
+ const mediamtxBin = await ensureMediamtx();
1438
+ const proc = Bun.spawn([mediamtxBin], {
1439
+ stdout: "ignore",
1440
+ stderr: "ignore"
1441
+ });
1442
+ await sleep2(1500);
1443
+ if (proc.exitCode !== null) {
1444
+ return null;
1445
+ }
1446
+ return proc;
1447
+ }
1448
+
1449
+ // src/commands/join.ts
1450
+ function defaultKill(pid, signal) {
1451
+ try {
1452
+ process.kill(pid, signal);
1453
+ } catch {}
1454
+ }
1455
+ function spawnDetached(cmd, opts = {}, spawnFn = spawnChild) {
1456
+ const [command, ...args] = cmd;
1457
+ if (!command) {
1458
+ throw new Error("cannot spawn an empty command");
1459
+ }
1460
+ const proc = spawnFn(command, args, {
1461
+ detached: true,
1462
+ stdio: "ignore",
1463
+ env: opts.env ? { ...process.env, ...opts.env } : undefined
1464
+ });
1465
+ proc.unref();
1466
+ if (typeof proc.pid !== "number") {
1467
+ throw new Error(`failed to spawn ${command}`);
1468
+ }
1469
+ return {
1470
+ get pid() {
1471
+ return proc.pid;
1472
+ },
1473
+ kill() {
1474
+ proc.kill("SIGTERM");
1475
+ }
1476
+ };
1477
+ }
1478
+ var PRESENCE_PAGE_MARKER = "samograph-presence";
1479
+ var PRESENCE_PREFLIGHT_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 " + "(KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36";
1480
+ var PRESENCE_PREFLIGHT_ATTEMPTS = 40;
1481
+ var PRESENCE_PREFLIGHT_SLEEP_MS = 750;
1482
+ async function sleep3(ms) {
1483
+ await new Promise((resolve2) => setTimeout(resolve2, ms));
1484
+ }
1485
+ async function waitForPresenceCamera(url, fetchFn = fetch, sleepFn = sleep3, attempts = PRESENCE_PREFLIGHT_ATTEMPTS) {
1486
+ for (let i = 0;i < attempts; i++) {
1487
+ try {
1488
+ const response = await fetchFn(url, {
1489
+ cache: "no-store",
1490
+ headers: { "User-Agent": PRESENCE_PREFLIGHT_USER_AGENT }
1491
+ });
1492
+ if (response.ok) {
1493
+ const text = await response.text();
1494
+ if (text.includes(PRESENCE_PAGE_MARKER)) {
1495
+ return true;
1496
+ }
1497
+ }
1498
+ } catch {}
1499
+ if (i < attempts - 1) {
1500
+ await sleepFn(PRESENCE_PREFLIGHT_SLEEP_MS);
1501
+ }
1502
+ }
1503
+ return false;
1504
+ }
1505
+ async function cmdJoin(args, deps = {}) {
1506
+ const recall = deps.recall ?? makeRecallClient();
1507
+ const kill = deps.kill ?? defaultKill;
1508
+ const spawn = deps.spawn ?? spawnDetached;
1509
+ const waitForNgrokFn = deps.waitForNgrok ?? waitForNgrok;
1510
+ const startMediamtxFn = deps.startMediamtx ?? startMediamtx;
1511
+ const startNgrokTcpTunnelFn = deps.startNgrokTcpTunnel ?? startNgrokTcpTunnel;
1512
+ const fetchFn = deps.fetch ?? fetch;
1513
+ const sleepFn = deps.sleep ?? sleep3;
1514
+ const transcriptFile = resolveNewTranscriptFile(args.transcript_dir);
1515
+ writeFileSync4(transcriptFile, "", { flag: "wx", mode: 384 });
1516
+ const webhookToken = randomUUID();
1517
+ const frameToken = randomUUID();
1518
+ const presenceToken = randomUUID();
1519
+ const presenceWriteToken = randomUUID();
1520
+ const keyterms = loadDict(args.dict);
1521
+ const name = botName(args.name);
1522
+ const port = args.port || 8080;
1523
+ let rtmpUrl = args.rtmp_url ?? null;
1524
+ const useRtmpAuto = args.rtmp ?? false;
1525
+ const useWsVideo = args.ws_video ?? false;
1526
+ const videoFrameDir = resolveVideoFrameDir(args.frame_dir, false);
1527
+ const videoFrameFile = resolveVideoFrameFile(args.frame_dir, false);
1528
+ const oldState = loadState();
1529
+ for (const pidKey of ["server_pid", "ngrok_pid", "mediamtx_pid"]) {
1530
+ const pid = oldState[pidKey];
1531
+ if (typeof pid === "number" && pid) {
1532
+ kill(pid, "SIGTERM");
1533
+ }
1534
+ }
1535
+ const selfPath = fileURLToPath2(import.meta.url);
1536
+ const cliPath = selfPath.replace(/commands\/join\.ts$/, "cli.ts");
1537
+ const server = spawn([
1538
+ process.execPath,
1539
+ cliPath,
1540
+ "_serve",
1541
+ "--port",
1542
+ String(port),
1543
+ "--transcript-file",
1544
+ transcriptFile,
1545
+ "--call-id-file",
1546
+ stateFile()
1547
+ ], {
1548
+ env: {
1549
+ SAMOGRAPH_WEBHOOK_TOKEN: webhookToken,
1550
+ SAMOGRAPH_FRAME_TOKEN: frameToken,
1551
+ SAMOGRAPH_PRESENCE_TOKEN: presenceToken,
1552
+ SAMOGRAPH_PRESENCE_WRITE_TOKEN: presenceWriteToken
1553
+ }
1554
+ });
1555
+ const started = new Set([server]);
1556
+ let stateSaved = false;
1557
+ const cleanupUnsaved = () => {
1558
+ if (stateSaved)
1559
+ return;
1560
+ for (const proc of started) {
1561
+ proc.kill();
1562
+ }
1563
+ started.clear();
1564
+ };
1565
+ const rejectWebhookBase = (message) => {
1566
+ process.stderr.write(message);
1567
+ cleanupUnsaved();
1568
+ throw new ExitError(1);
1569
+ };
1570
+ const normalizeWebhookBase = (rawBase) => {
1571
+ if (!rawBase) {
1572
+ rejectWebhookBase(`Error: --webhook-base requires a non-empty https:// URL
1573
+ `);
1574
+ }
1575
+ const parsedBase = (() => {
1576
+ try {
1577
+ return new URL(rawBase);
1578
+ } catch {
1579
+ return rejectWebhookBase(`Error: --webhook-base is not a valid URL: ${rawBase}
1580
+ `);
1581
+ }
1582
+ })();
1583
+ if (parsedBase.protocol !== "https:") {
1584
+ rejectWebhookBase(`Error: --webhook-base must be an https:// URL
1585
+ `);
1586
+ }
1587
+ return parsedBase.origin;
1588
+ };
1589
+ let webhookBase = args.webhook_base ?? null;
1590
+ if (webhookBase !== null) {
1591
+ webhookBase = normalizeWebhookBase(webhookBase);
1592
+ }
1593
+ const ngrok = webhookBase ? null : spawn(["ngrok", "http", String(port), "--log=stdout"]);
1594
+ if (ngrok)
1595
+ started.add(ngrok);
1596
+ try {
1597
+ let webhookUrl;
1598
+ if (webhookBase) {
1599
+ process.stdout.write(`Using external tunnel (--webhook-base): ${webhookBase} \u2192 localhost:${port}
1600
+ `);
1601
+ webhookUrl = webhookBase;
1602
+ } else {
1603
+ process.stdout.write(`Starting ngrok tunnel on port ${port}...
1604
+ `);
1605
+ webhookUrl = await waitForNgrokFn(port);
1606
+ }
1607
+ if (!webhookUrl) {
1608
+ process.stderr.write(`Error: could not get ngrok URL. Is ngrok installed and authenticated?
1609
+ `);
1610
+ cleanupUnsaved();
1611
+ throw new ExitError(1);
1612
+ }
1613
+ const publicBaseUrl = webhookUrl.replace(/\/+$/, "");
1614
+ const presenceBgSuffix = args.presence_bg ? `&bg=${encodeURIComponent(args.presence_bg)}` : "";
1615
+ let presencePageUrl = args.no_presence ? null : `${publicBaseUrl}/presence?token=${encodeURIComponent(presenceToken)}${presenceBgSuffix}`;
1616
+ webhookUrl = `${publicBaseUrl}/webhook?token=${encodeURIComponent(webhookToken)}`;
1617
+ process.stdout.write(`Webhook: ${webhookUrl}
1618
+ `);
1619
+ if (presencePageUrl) {
1620
+ process.stdout.write(`Presence camera: ${presencePageUrl}
1621
+ `);
1622
+ const presenceReachable = await waitForPresenceCamera(presencePageUrl, fetchFn, sleepFn);
1623
+ if (!presenceReachable) {
1624
+ process.stderr.write("Warning: the presence camera page is not reachable by a browser \u2014 " + "likely a tunnel interstitial (free ngrok / localtunnel show one to browser " + "user agents). Joining WITHOUT the presence camera; transcription and chat " + "are unaffected, and `samograph presence` will be unavailable for this call. " + `Use a paid/clean tunnel for the camera, or pass --no-presence to skip this check.
1625
+ `);
1626
+ presencePageUrl = null;
1627
+ }
1628
+ }
1629
+ let mediamtxAuto = null;
1630
+ let rtmpViaNgrok = false;
1631
+ if (useRtmpAuto && !rtmpUrl) {
1632
+ process.stdout.write(`Starting mediamtx RTMP server for --rtmp...
1633
+ `);
1634
+ const mediamtxEarly = await startMediamtxFn();
1635
+ if (!mediamtxEarly) {
1636
+ process.stderr.write(`Warning: mediamtx failed to start \u2014 RTMP frame capture disabled.
1637
+ `);
1638
+ } else {
1639
+ process.stdout.write(`Opening ngrok TCP tunnel to port 1935...
1640
+ `);
1641
+ started.add(mediamtxEarly);
1642
+ const tcpPublic = await startNgrokTcpTunnelFn(1935);
1643
+ if (tcpPublic === null) {
1644
+ process.stderr.write(`Warning: ngrok TCP tunnel failed \u2014 RTMP frame capture disabled.
1645
+ `);
1646
+ mediamtxEarly.kill();
1647
+ started.delete(mediamtxEarly);
1648
+ } else {
1649
+ rtmpUrl = tcpPublic.replace("tcp://", "rtmp://") + "/live/call";
1650
+ process.stdout.write(`ngrok TCP tunnel: ${tcpPublic}
1651
+ `);
1652
+ process.stdout.write(`RTMP URL for recall.ai: ${rtmpUrl}
1653
+ `);
1654
+ mediamtxAuto = mediamtxEarly;
1655
+ rtmpViaNgrok = true;
1656
+ }
1657
+ }
1658
+ }
1659
+ process.stdout.write(`Joining: ${args.url}
1660
+ `);
1661
+ const deepgramConfig = {
1662
+ model: "nova-3",
1663
+ language: "multi",
1664
+ mip_opt_out: true
1665
+ };
1666
+ if (keyterms.length) {
1667
+ deepgramConfig.keyterms = keyterms;
1668
+ }
1669
+ const realtimeEndpoints = [
1670
+ {
1671
+ type: "webhook",
1672
+ url: webhookUrl,
1673
+ events: ["transcript.data"]
1674
+ }
1675
+ ];
1676
+ let mediamtxProc = null;
1677
+ let rtmpLocalUrl = null;
1678
+ let wsVideoUrl = null;
1679
+ if (useWsVideo) {
1680
+ wsVideoUrl = webhookUrl.replace(/\/webhook(?:\?.*)?$/, "/video-ws").replace(/^https:\/\//, "wss://").replace(/^http:\/\//, "ws://");
1681
+ wsVideoUrl += `?token=${encodeURIComponent(frameToken)}`;
1682
+ realtimeEndpoints.push({
1683
+ type: "websocket",
1684
+ url: wsVideoUrl,
1685
+ events: ["video_separate_png.data"]
1686
+ });
1687
+ process.stdout.write(`WebSocket video: recall.ai \u2192 token-protected /video-ws \u2192 in-memory latest frame
1688
+ `);
1689
+ }
1690
+ if (rtmpUrl) {
1691
+ const rtmpHost = new URL(rtmpUrl).hostname || "";
1692
+ const rtmpIsLocal = rtmpHost === "localhost" || rtmpHost === "127.0.0.1";
1693
+ if (rtmpIsLocal) {
1694
+ process.stdout.write(`Starting mediamtx RTMP server...
1695
+ `);
1696
+ mediamtxProc = await startMediamtxFn();
1697
+ if (!mediamtxProc) {
1698
+ process.stderr.write(`Warning: mediamtx failed to start \u2014 RTMP frame capture disabled.
1699
+ `);
1700
+ rtmpUrl = null;
1701
+ } else {
1702
+ started.add(mediamtxProc);
1703
+ const streamPath = rtmpStreamPath(rtmpUrl);
1704
+ rtmpLocalUrl = `rtmp://localhost:1935/${streamPath}`;
1705
+ realtimeEndpoints.push({
1706
+ type: "rtmp",
1707
+ url: rtmpUrl,
1708
+ events: ["video_mixed_flv.data"]
1709
+ });
1710
+ process.stdout.write(`RTMP: recall.ai \u2192 ${rtmpUrl} \u2192 mediamtx (local) \u2192 ${rtmpLocalUrl}
1711
+ `);
1712
+ }
1713
+ } else if (useRtmpAuto && rtmpViaNgrok) {
1714
+ mediamtxProc = mediamtxAuto;
1715
+ const streamPath = rtmpStreamPath(rtmpUrl);
1716
+ rtmpLocalUrl = `rtmp://localhost:1935/${streamPath}`;
1717
+ realtimeEndpoints.push({
1718
+ type: "rtmp",
1719
+ url: rtmpUrl,
1720
+ events: ["video_mixed_flv.data"]
1721
+ });
1722
+ process.stdout.write(`RTMP: recall.ai \u2192 ${rtmpUrl} (ngrok TCP) \u2192 mediamtx (local) \u2192 ${rtmpLocalUrl}
1723
+ `);
1724
+ } else {
1725
+ rtmpLocalUrl = rtmpUrl;
1726
+ realtimeEndpoints.push({
1727
+ type: "rtmp",
1728
+ url: rtmpUrl,
1729
+ events: ["video_mixed_flv.data"]
1730
+ });
1731
+ process.stdout.write(`RTMP: recall.ai \u2192 ${rtmpUrl} (remote mediamtx; ffmpeg reads directly)
1732
+ `);
1733
+ }
1734
+ }
1735
+ const recordingConfig = {
1736
+ transcript: {
1737
+ provider: { deepgram_streaming: deepgramConfig },
1738
+ diarization: { use_separate_streams_when_available: true }
1739
+ },
1740
+ screenshot: {},
1741
+ realtime_endpoints: realtimeEndpoints
1742
+ };
1743
+ if (rtmpUrl) {
1744
+ recordingConfig.video_mixed_flv = {};
1745
+ }
1746
+ if (useWsVideo) {
1747
+ recordingConfig.video_mixed_layout = "gallery_view_v2";
1748
+ recordingConfig.video_separate_png = {};
1749
+ }
1750
+ const payload = {
1751
+ meeting_url: args.url,
1752
+ bot_name: name,
1753
+ recording_config: recordingConfig
1754
+ };
1755
+ if (presencePageUrl) {
1756
+ payload.output_media = {
1757
+ camera: {
1758
+ kind: "webpage",
1759
+ config: { url: presencePageUrl }
1760
+ }
1761
+ };
1762
+ }
1763
+ if (args.variant) {
1764
+ payload.variant = {
1765
+ zoom: args.variant,
1766
+ google_meet: args.variant,
1767
+ microsoft_teams: args.variant
1768
+ };
1769
+ }
1770
+ const bot = await recall.createBot(payload);
1771
+ const bid = bot.id;
1772
+ const newState = {
1773
+ bot_id: bid,
1774
+ agent_name: args.name || "samograph",
1775
+ bot_name: name,
1776
+ webhook_url: webhookUrl,
1777
+ server_pid: server.pid,
1778
+ ngrok_pid: ngrok ? ngrok.pid : null,
1779
+ started_at: new Date().toISOString(),
1780
+ dict: args.dict ?? null,
1781
+ variant: args.variant ?? null,
1782
+ meeting_url: args.url,
1783
+ transcript_file: transcriptFile
1784
+ };
1785
+ if (presencePageUrl) {
1786
+ newState.presence_page_url = presencePageUrl;
1787
+ newState.local_presence_update_url = `http://127.0.0.1:${port}/presence`;
1788
+ newState.presence_token = presenceToken;
1789
+ newState.presence_write_token = presenceWriteToken;
1790
+ }
1791
+ if (mediamtxProc) {
1792
+ newState.mediamtx_pid = mediamtxProc.pid;
1793
+ }
1794
+ if (rtmpLocalUrl) {
1795
+ newState.rtmp_local_url = rtmpLocalUrl;
1796
+ }
1797
+ if (useWsVideo) {
1798
+ newState.local_frame_url = `http://127.0.0.1:${port}/frame`;
1799
+ newState.local_frame_metadata_url = `http://127.0.0.1:${port}/frame.json`;
1800
+ newState.frame_token = frameToken;
1801
+ newState.video_frame_dir = videoFrameDir;
1802
+ newState.video_frame_file = videoFrameFile;
1803
+ }
1804
+ saveState(newState);
1805
+ stateSaved = true;
1806
+ process.stdout.write(`Bot ID: ${bid}
1807
+ `);
1808
+ process.stdout.write(`Bot name: ${name}
1809
+ `);
1810
+ process.stdout.write(`Dict: ${args.dict || "none"} (${keyterms.length} terms)
1811
+ `);
1812
+ process.stdout.write(`Transcript -> ${transcriptFile}
1813
+ `);
1814
+ process.stdout.write(`
1815
+ The agent will appear in the call within ~15 seconds.
1816
+ `);
1817
+ process.stdout.write(`
1818
+ --- AGENT INSTRUCTIONS ---
1819
+ `);
1820
+ process.stdout.write(`IMPORTANT: You must now monitor the live transcript for the duration of the call.
1821
+ `);
1822
+ process.stdout.write(`Run this command with your Monitor tool (persistent=true):
1823
+ `);
1824
+ process.stdout.write(` samograph watch
1825
+ `);
1826
+ process.stdout.write(`Each line you receive is a new utterance: [timestamp] Speaker: text
1827
+ `);
1828
+ process.stdout.write(`React to what is said. If someone addresses you or asks a question, respond in chat.
1829
+ `);
1830
+ process.stdout.write(`To send a message in the meeting chat: samograph chat 'your message'
1831
+ `);
1832
+ if (presencePageUrl) {
1833
+ process.stdout.write(`To update bot presence: samograph presence thinking 'short status'
1834
+ `);
1835
+ }
1836
+ if (rtmpLocalUrl) {
1837
+ process.stdout.write(`To capture call frame: samograph frame (ffmpeg from RTMP stream)
1838
+ `);
1839
+ } else if (useWsVideo) {
1840
+ process.stdout.write(`To list frame sources: samograph frames
1841
+ `);
1842
+ process.stdout.write(`To capture call frame: samograph frame (latest WebSocket PNG, written on demand)
1843
+ `);
1844
+ } else {
1845
+ process.stdout.write(`To capture what's on screen: samograph screenshot (then Read screenshot.png)
1846
+ `);
1847
+ }
1848
+ process.stdout.write(`To stop: samograph leave
1849
+ `);
1850
+ process.stdout.write(`--------------------------
1851
+ `);
1852
+ } catch (err) {
1853
+ cleanupUnsaved();
1854
+ throw err;
1855
+ }
1856
+ }
1857
+
1858
+ // src/commands/leave.ts
1859
+ import { existsSync as existsSync6, unlinkSync, appendFileSync } from "fs";
1860
+ function defaultKill2(pid, signal) {
1861
+ process.kill(pid, signal);
1862
+ }
1863
+ function fmtSentinelTs(d) {
1864
+ const pad = (n) => String(n).padStart(2, "0");
1865
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
1866
+ }
1867
+ async function cmdLeave(args, deps = {}) {
1868
+ const recall = deps.recall ?? makeRecallClient();
1869
+ const kill = deps.kill ?? defaultKill2;
1870
+ const now = deps.now ?? (() => new Date);
1871
+ const bid = botIdFromArgsOrState(args.bot_id);
1872
+ try {
1873
+ await recall.leaveCall(bid);
1874
+ process.stdout.write(`Bot ${bid} left the call.
1875
+ `);
1876
+ } catch (e) {
1877
+ process.stdout.write(`Warning: ${e}
1878
+ `);
1879
+ }
1880
+ const state = loadState();
1881
+ const transcriptFile = state.transcript_file;
1882
+ if (typeof transcriptFile === "string" && transcriptFile) {
1883
+ if (existsSync6(transcriptFile)) {
1884
+ const ts = fmtSentinelTs(now());
1885
+ try {
1886
+ appendFileSync(transcriptFile, `[${ts}] SAMOGRAPH_CALL_ENDED
1887
+ `);
1888
+ } catch {}
1889
+ }
1890
+ }
1891
+ for (const pidKey of ["server_pid", "ngrok_pid", "mediamtx_pid"]) {
1892
+ const pid = state[pidKey];
1893
+ if (typeof pid === "number" && pid) {
1894
+ try {
1895
+ kill(pid, "SIGTERM");
1896
+ process.stdout.write(`Stopped ${pidKey.replace("_pid", "")} (pid ${pid})
1897
+ `);
1898
+ } catch (e) {
1899
+ if (e.code !== "ESRCH") {}
1900
+ }
1901
+ }
1902
+ }
1903
+ if (existsSync6(stateFile())) {
1904
+ unlinkSync(stateFile());
1905
+ }
1906
+ process.stdout.write(`Done.
1907
+ `);
1908
+ }
1909
+
1910
+ // src/commands/status.ts
1911
+ import { existsSync as existsSync7, readFileSync as readFileSync5, statSync } from "fs";
1912
+ async function cmdStatus(args, deps = {}) {
1913
+ const recall = deps.recall ?? makeRecallClient();
1914
+ const fetchFn = deps.fetchFn ?? fetch;
1915
+ const bid = botIdFromArgsOrState(args.bot_id);
1916
+ const bot = await recall.getBot(bid);
1917
+ const changes = bot.status_changes ?? [];
1918
+ const status = changes.length ? changes[changes.length - 1].code ?? "unknown" : "joining";
1919
+ const name = bot.bot_name ?? "?";
1920
+ process.stdout.write(`Bot: ${bid}
1921
+ `);
1922
+ process.stdout.write(`Name: ${name}
1923
+ `);
1924
+ process.stdout.write(`Status: ${status}
1925
+ `);
1926
+ const state = loadState();
1927
+ const tf = typeof state.transcript_file === "string" ? state.transcript_file : defaultTranscriptFile();
1928
+ if (existsSync7(tf)) {
1929
+ const lines = readFileSync5(tf, "utf-8").split(/\r?\n/).filter((l) => l.trim() && !SENTINEL_RE.test(l));
1930
+ process.stdout.write(`Transcript lines so far: ${lines.length}
1931
+ `);
1932
+ if (lines.length) {
1933
+ process.stdout.write(`Last transcript at: ${statSync(tf).mtime.toISOString()}
1934
+ `);
1935
+ process.stdout.write(`Last transcript line: ${lines[lines.length - 1]}
1936
+ `);
1937
+ } else {
1938
+ process.stdout.write(`Last transcript line: none yet
1939
+ `);
1940
+ }
1941
+ process.stdout.write(`Transcript file: ${tf}
1942
+ `);
1943
+ }
1944
+ const frameMetadataUrl = state.local_frame_metadata_url;
1945
+ if (typeof frameMetadataUrl === "string" && frameMetadataUrl) {
1946
+ const headers2 = {};
1947
+ if (typeof state.frame_token === "string" && state.frame_token) {
1948
+ headers2["X-Samograph-Frame-Token"] = state.frame_token;
1949
+ }
1950
+ try {
1951
+ const resp = await fetchFn(frameMetadataUrl, { headers: headers2 });
1952
+ if (resp.status === 404) {
1953
+ process.stdout.write(`Last frame: none yet
1954
+ `);
1955
+ } else if (resp.ok) {
1956
+ const metadata = await resp.json();
1957
+ const participant = metadata.participant?.name ?? "?";
1958
+ const sourceType = metadata.type ?? "?";
1959
+ const frameAt = metadata.timestamp?.absolute ?? metadata.updated_at ?? "?";
1960
+ process.stdout.write(`Last frame at: ${frameAt}
1961
+ `);
1962
+ process.stdout.write(`Last frame source: ${sourceType} / ${participant}
1963
+ `);
1964
+ if (metadata.source_key) {
1965
+ process.stdout.write(`Last frame source key: ${metadata.source_key}
1966
+ `);
1967
+ }
1968
+ if (metadata.visual_status) {
1969
+ process.stdout.write(`Last frame visual status: ${metadata.visual_status}
1970
+ `);
1971
+ }
1972
+ if (metadata.updated_at) {
1973
+ process.stdout.write(`Last frame received at: ${metadata.updated_at}
1974
+ `);
1975
+ }
1976
+ } else {
1977
+ process.stdout.write(`Last frame: unavailable (${resp.status})
1978
+ `);
1979
+ }
1980
+ } catch (e) {
1981
+ const message = e instanceof Error ? e.message : String(e);
1982
+ process.stdout.write(`Last frame: unavailable (${message})
1983
+ `);
1984
+ }
1985
+ try {
1986
+ const framesUrl = frameMetadataUrl.replace(/\/frame\.json(?:\?.*)?$/, "/frames.json");
1987
+ const resp = await fetchFn(framesUrl, { headers: headers2 });
1988
+ if (resp.ok) {
1989
+ const inventory = await resp.json();
1990
+ const frames = inventory.frames ?? [];
1991
+ if (frames.length) {
1992
+ process.stdout.write(`Frame sources: ${frames.length}
1993
+ `);
1994
+ for (const frame of frames) {
1995
+ const source = frame.source_key ?? "?";
1996
+ const type = frame.type ?? "?";
1997
+ const participant = frame.participant?.name ?? frame.participant?.id ?? "?";
1998
+ const visual = frame.visual_status ?? "unknown";
1999
+ process.stdout.write(` ${source}: ${type} / ${participant} (${visual})
2000
+ `);
2001
+ }
2002
+ }
2003
+ }
2004
+ } catch {}
2005
+ }
2006
+ }
2007
+
2008
+ // src/commands/screenshot.ts
2009
+ import { resolve as resolve2 } from "path";
2010
+ var sleep4 = (ms) => new Promise((r) => setTimeout(r, ms));
2011
+ function defaultRun(cmd) {
2012
+ const proc = Bun.spawnSync(cmd);
2013
+ return { exitCode: proc.exitCode };
2014
+ }
2015
+ function defaultFocus(meetingUrl) {
2016
+ const domain = meetingUrl.includes("meet.google.com") ? "meet.google.com" : "zoom.us";
2017
+ const script = `
2018
+ tell application "Google Chrome"
2019
+ set found to false
2020
+ repeat with w in windows
2021
+ set tabIdx to 0
2022
+ repeat with t in tabs of w
2023
+ set tabIdx to tabIdx + 1
2024
+ if URL of t contains "${domain}" then
2025
+ set active tab index of w to tabIdx
2026
+ set index of w to 1
2027
+ set found to true
2028
+ exit repeat
2029
+ end if
2030
+ end repeat
2031
+ if found then exit repeat
2032
+ end repeat
2033
+ end tell
2034
+ tell application "Google Chrome" to activate
2035
+ `;
2036
+ try {
2037
+ Bun.spawnSync(["osascript", "-e", script], {
2038
+ timeout: 5000,
2039
+ stdout: "ignore",
2040
+ stderr: "ignore"
2041
+ });
2042
+ } catch {}
2043
+ }
2044
+ async function cmdScreenshot(args, deps = {}) {
2045
+ const run = deps.run ?? defaultRun;
2046
+ const focus = deps.focus ?? defaultFocus;
2047
+ const out = args.out || "screenshot.png";
2048
+ const state = loadState();
2049
+ const meetingUrl = state.meeting_url ?? "";
2050
+ if (meetingUrl.includes("meet.google.com") || meetingUrl.includes("zoom.us")) {
2051
+ focus(meetingUrl);
2052
+ await sleep4(1000);
2053
+ }
2054
+ const result = run(["screencapture", "-x", out]);
2055
+ if (result.exitCode !== 0) {
2056
+ throw new Error(`screencapture failed with code ${result.exitCode}`);
2057
+ }
2058
+ process.stdout.write(resolve2(out) + `
2059
+ `);
2060
+ }
2061
+
2062
+ // src/commands/transcript.ts
2063
+ function printLinesWithCursor(lines, args) {
2064
+ const cursor = args.transcript_cursor ?? 0;
2065
+ const limit = args.transcript_limit;
2066
+ const end = limit === undefined ? lines.length : Math.min(lines.length, cursor + limit);
2067
+ for (const line of lines.slice(cursor, end)) {
2068
+ process.stdout.write(line + `
2069
+ `);
2070
+ }
2071
+ if (args.transcript_cursor !== undefined || limit !== undefined) {
2072
+ process.stdout.write(`Next cursor: ${end}
2073
+ `);
2074
+ }
2075
+ }
2076
+ function printLocalTranscriptChunk(args) {
2077
+ const lines = localTranscriptLines(args.transcript_file);
2078
+ if (lines.length) {
2079
+ printLinesWithCursor(lines, args);
2080
+ } else {
2081
+ printLocalTranscript(args.transcript_file);
2082
+ }
2083
+ }
2084
+ async function cmdTranscript(args, deps = {}) {
2085
+ if (args.transcript_local === true || args.transcript_file) {
2086
+ printLocalTranscriptChunk(args);
2087
+ return;
2088
+ }
2089
+ const recall = deps.recall ?? makeRecallClient();
2090
+ const fetchFn = deps.fetchFn ?? fetch;
2091
+ const bid = botIdFromArgsOrState(args.bot_id);
2092
+ const bot = await recall.getBot(bid);
2093
+ const recordings = bot.recordings ?? [];
2094
+ if (!recordings.length) {
2095
+ process.stdout.write(`No recordings yet.
2096
+ `);
2097
+ printLocalTranscriptChunk(args);
2098
+ return;
2099
+ }
2100
+ const media = recordings[0].media_shortcuts?.transcript ?? {};
2101
+ const statusCode = media.status?.code ?? "?";
2102
+ const downloadUrl = media.data?.download_url;
2103
+ if (downloadUrl) {
2104
+ const r = await fetchFn(downloadUrl, { signal: AbortSignal.timeout(30000) });
2105
+ const data = await r.json();
2106
+ const lines = data.map((entry) => {
2107
+ const words = (entry.words ?? []).map((w) => w.text ?? "").join(" ");
2108
+ const speaker = entry.speaker ?? "?";
2109
+ const start = entry.words?.[0]?.start_time ?? 0;
2110
+ return `[${start.toFixed(1)}s] ${speaker}: ${words}`;
2111
+ });
2112
+ printLinesWithCursor(lines, args);
2113
+ } else {
2114
+ process.stdout.write(`Transcript status: ${statusCode}
2115
+ `);
2116
+ printLocalTranscriptChunk(args);
2117
+ }
2118
+ }
2119
+
2120
+ // src/commands/chat.ts
2121
+ async function cmdChat(args, deps = {}) {
2122
+ const recall = deps.recall ?? makeRecallClient();
2123
+ const bid = botIdFromArgsOrState(args.bot_id);
2124
+ const resp = await recall.sendChat(bid, args.message ?? "");
2125
+ if (!resp.ok) {
2126
+ const body = await resp.text().catch(() => "");
2127
+ throw new Error(`send_chat_message failed: ${resp.status} ${body}`);
2128
+ }
2129
+ process.stdout.write(`Sent: ${args.message}
2130
+ `);
2131
+ }
2132
+
2133
+ // src/commands/frame.ts
2134
+ import { existsSync as existsSync8, readFileSync as readFileSync6, writeFileSync as writeFileSync5 } from "fs";
2135
+ import { dirname as dirname4, resolve as resolve3 } from "path";
2136
+ function defaultRun2(cmd) {
2137
+ const proc = Bun.spawnSync(cmd, { timeout: 15000 });
2138
+ return { returncode: proc.exitCode, stderr: proc.stderr };
2139
+ }
2140
+ function withFrameSource(url, source) {
2141
+ const key = normalizeFrameSource(source);
2142
+ if (!key)
2143
+ return url;
2144
+ const u = new URL(url);
2145
+ u.searchParams.set("source", source);
2146
+ return u.toString();
2147
+ }
2148
+ async function cmdFrame(args, deps = {}) {
2149
+ const recall = deps.recall ?? makeRecallClient();
2150
+ const fetchFn = deps.fetchFn ?? fetch;
2151
+ const run = deps.run ?? defaultRun2;
2152
+ const state = loadState();
2153
+ const archive = args.archive ?? false;
2154
+ const out = resolveFrameOutput(args.out, state);
2155
+ const rtmpLocalUrl = state.rtmp_local_url;
2156
+ if (typeof rtmpLocalUrl === "string" && rtmpLocalUrl) {
2157
+ let ffmpeg = "/opt/homebrew/bin/ffmpeg";
2158
+ if (!existsSync8(ffmpeg)) {
2159
+ ffmpeg = "ffmpeg";
2160
+ }
2161
+ const cmd = [
2162
+ ffmpeg,
2163
+ "-y",
2164
+ "-i",
2165
+ rtmpLocalUrl,
2166
+ "-vframes",
2167
+ "1",
2168
+ "-update",
2169
+ "1",
2170
+ "-q:v",
2171
+ "2",
2172
+ out
2173
+ ];
2174
+ const result = run(cmd);
2175
+ if (result.returncode === 0 && existsSync8(out)) {
2176
+ process.stdout.write(resolve3(out) + `
2177
+ `);
2178
+ return;
2179
+ }
2180
+ process.stderr.write(`FRAME_ERROR: ffmpeg failed to grab frame from ${rtmpLocalUrl}
2181
+ `);
2182
+ const errText = Buffer.from(result.stderr).toString("utf-8");
2183
+ process.stderr.write(errText.slice(-500) + `
2184
+ `);
2185
+ throw new ExitError(1);
2186
+ }
2187
+ const localFrameUrl = state.local_frame_url;
2188
+ if (typeof localFrameUrl === "string" && localFrameUrl) {
2189
+ const headers2 = {};
2190
+ if (typeof state.frame_token === "string" && state.frame_token) {
2191
+ headers2["X-Samograph-Frame-Token"] = state.frame_token;
2192
+ }
2193
+ let resp2;
2194
+ try {
2195
+ resp2 = await fetchFn(withFrameSource(localFrameUrl, args.frame_source), { headers: headers2 });
2196
+ } catch (e) {
2197
+ process.stderr.write(`FRAME_UNAVAILABLE: local WebSocket frame server is not reachable: ${e instanceof Error ? e.message : String(e)}
2198
+ `);
2199
+ throw new ExitError(1);
2200
+ }
2201
+ const contentType2 = resp2.headers.get("content-type") ?? "";
2202
+ if (resp2.status === 200 && contentType2.startsWith("image/")) {
2203
+ let metadata = {};
2204
+ const metadataUrl = state.local_frame_metadata_url;
2205
+ if (typeof metadataUrl === "string" && metadataUrl) {
2206
+ try {
2207
+ const metaResp = await fetchFn(withFrameSource(metadataUrl, args.frame_source), { headers: headers2 });
2208
+ if (metaResp.status === 200) {
2209
+ metadata = await metaResp.json();
2210
+ }
2211
+ } catch {
2212
+ metadata = {};
2213
+ }
2214
+ }
2215
+ const raw = new Uint8Array(await resp2.arrayBuffer());
2216
+ writeFrameFiles(out, raw, metadata);
2217
+ const output = archive && !args.out ? archiveFrameBytes(String(state.video_frame_dir ?? dirname4(out)), raw, metadata) : out;
2218
+ process.stdout.write(resolve3(output) + `
2219
+ `);
2220
+ return;
2221
+ }
2222
+ process.stderr.write(`FRAME_UNAVAILABLE: no WebSocket video frame received yet.
2223
+ `);
2224
+ process.stderr.write(`Wait for Recall to deliver video_separate_png.data, then retry.
2225
+ `);
2226
+ throw new ExitError(1);
2227
+ }
2228
+ const legacyFrameFile = state.video_frame_file;
2229
+ if (typeof legacyFrameFile === "string" && legacyFrameFile && existsSync8(legacyFrameFile)) {
2230
+ const output = archive && !args.out ? archiveExistingFrame(legacyFrameFile) : out;
2231
+ if (!(archive && !args.out)) {
2232
+ writeFileSync5(output, readFileSync6(legacyFrameFile));
2233
+ const metadataFile = frameMetadataPath(legacyFrameFile);
2234
+ if (existsSync8(metadataFile)) {
2235
+ writeFileSync5(frameMetadataPath(output), readFileSync6(metadataFile));
2236
+ }
2237
+ }
2238
+ process.stdout.write(resolve3(output) + `
2239
+ `);
2240
+ return;
2241
+ }
2242
+ const bid = botIdFromArgsOrState(args.bot_id);
2243
+ const resp = await recall.screenshot(bid);
2244
+ const contentType = resp.headers.get("content-type") ?? "";
2245
+ if (resp.status === 200 && contentType.startsWith("image/")) {
2246
+ const buf = new Uint8Array(await resp.arrayBuffer());
2247
+ writeFileSync5(out, buf);
2248
+ process.stdout.write(resolve3(out) + `
2249
+ `);
2250
+ return;
2251
+ }
2252
+ const meetingUrl = state.meeting_url ?? "";
2253
+ process.stderr.write(`FRAME_UNAVAILABLE: no RTMP stream configured and recall.ai live frame not available.
2254
+ `);
2255
+ process.stderr.write(`Options:
2256
+ `);
2257
+ process.stderr.write(` 1. Rejoin with --rtmp to enable RTMP frames via ngrok TCP (no VM needed; requires ngrok card on file)
2258
+ `);
2259
+ process.stderr.write(` 2. Rejoin with --rtmp-url rtmp://PUBLIC_IP:1935/live/call to enable RTMP frames via cloud VM
2260
+ `);
2261
+ process.stderr.write(` 3. Use browser tools to screenshot: ${meetingUrl}
2262
+ `);
2263
+ process.stderr.write(` 4. After call ends: samograph transcript
2264
+ `);
2265
+ throw new ExitError(1);
2266
+ }
2267
+
2268
+ // src/commands/frames.ts
2269
+ async function cmdFrames(deps = {}) {
2270
+ const fetchFn = deps.fetchFn ?? fetch;
2271
+ const state = loadState();
2272
+ const metadataUrl = state.local_frame_metadata_url;
2273
+ if (typeof metadataUrl !== "string" || !metadataUrl) {
2274
+ process.stderr.write(`FRAMES_UNAVAILABLE: WebSocket frame capture is not active.
2275
+ `);
2276
+ throw new ExitError(1);
2277
+ }
2278
+ const framesUrl = metadataUrl.replace(/\/frame\.json(?:\?.*)?$/, "/frames.json");
2279
+ const headers2 = {};
2280
+ if (typeof state.frame_token === "string" && state.frame_token) {
2281
+ headers2["X-Samograph-Frame-Token"] = state.frame_token;
2282
+ }
2283
+ let resp;
2284
+ try {
2285
+ resp = await fetchFn(framesUrl, { headers: headers2 });
2286
+ } catch (e) {
2287
+ process.stderr.write(`FRAMES_UNAVAILABLE: local WebSocket frame server is not reachable: ${e instanceof Error ? e.message : String(e)}
2288
+ `);
2289
+ throw new ExitError(1);
2290
+ }
2291
+ if (!resp.ok) {
2292
+ process.stderr.write(`FRAMES_UNAVAILABLE: local frame inventory returned ${resp.status}.
2293
+ `);
2294
+ throw new ExitError(1);
2295
+ }
2296
+ const data = await resp.json();
2297
+ const frames = data.frames ?? [];
2298
+ if (frames.length === 0) {
2299
+ process.stdout.write(`No WebSocket frames received yet.
2300
+ `);
2301
+ return;
2302
+ }
2303
+ for (const frame of frames) {
2304
+ const source = frame.source_key ?? "?";
2305
+ const type = frame.type ?? "?";
2306
+ const participant = frame.participant?.name ?? frame.participant?.id ?? "?";
2307
+ const at = frame.timestamp?.absolute ?? frame.updated_at ?? "?";
2308
+ const bytes = frame.raw_bytes === undefined ? "?" : String(frame.raw_bytes);
2309
+ const visual = frame.visual_status ?? "unknown";
2310
+ process.stdout.write(`${source} ${type} ${participant} ${at} ${bytes} bytes ${visual}
2311
+ `);
2312
+ }
2313
+ }
2314
+
2315
+ // src/commands/dicts.ts
2316
+ import { existsSync as existsSync9, readdirSync, readFileSync as readFileSync7 } from "fs";
2317
+ import { join as join6, basename } from "path";
2318
+ async function cmdDicts() {
2319
+ const dir = dictDir();
2320
+ if (!existsSync9(dir)) {
2321
+ process.stdout.write(`No dictionaries directory found.
2322
+ `);
2323
+ return;
2324
+ }
2325
+ const files = readdirSync(dir).filter((f) => f.endsWith(".txt")).sort().map((f) => join6(dir, f));
2326
+ if (!files.length) {
2327
+ process.stdout.write(`No dictionaries found.
2328
+ `);
2329
+ return;
2330
+ }
2331
+ process.stdout.write(`Available dictionaries:
2332
+ `);
2333
+ for (const f of files) {
2334
+ const terms = readFileSync7(f, "utf-8").split(/\r?\n/).map((l) => l.trim()).filter((l) => l.length > 0);
2335
+ const stem = basename(f, ".txt");
2336
+ process.stdout.write(` ${stem} (${terms.length} terms)
2337
+ `);
2338
+ }
2339
+ }
2340
+
2341
+ // src/commands/watch.ts
2342
+ async function cmdWatch() {
2343
+ await watch();
2344
+ }
2345
+
2346
+ // src/server.ts
2347
+ import { appendFileSync as appendFileSync2 } from "fs";
2348
+ import { readFileSync as readFileSync8 } from "fs";
2349
+ import { Buffer as Buffer3 } from "buffer";
2350
+ import { createHash, timingSafeEqual } from "crypto";
2351
+ var WEBHOOK_MAX_BYTES = 1024 * 1024;
2352
+ function tokensEqual(a, b) {
2353
+ if (!a || !b)
2354
+ return false;
2355
+ const ha = createHash("sha256").update(a).digest();
2356
+ const hb = createHash("sha256").update(b).digest();
2357
+ return timingSafeEqual(ha, hb);
2358
+ }
2359
+ async function handleWebhook(payload, transcriptPath) {
2360
+ const line = formatTranscriptLine(payload);
2361
+ if (line !== null) {
2362
+ appendFileSync2(transcriptPath, line + `
2363
+ `);
2364
+ }
2365
+ return line;
2366
+ }
2367
+ function selectedFrame(latest, bySource, source) {
2368
+ const key = normalizeFrameSource(source);
2369
+ return key ? bySource.get(key) ?? { raw: null, metadata: null } : latest;
2370
+ }
2371
+ function frameInventory(bySource) {
2372
+ const seen = new Set;
2373
+ const frames = [];
2374
+ for (const frame of bySource.values()) {
2375
+ const sourceKey = frame.metadata?.source_key;
2376
+ if (!frame.metadata || !sourceKey || seen.has(sourceKey))
2377
+ continue;
2378
+ seen.add(sourceKey);
2379
+ frames.push(frame.metadata);
2380
+ }
2381
+ frames.sort((a, b) => String(a.source_key).localeCompare(String(b.source_key)));
2382
+ return frames;
2383
+ }
2384
+ function callIdFromStateFile(path) {
2385
+ if (!path)
2386
+ return null;
2387
+ try {
2388
+ const state = JSON.parse(readFileSync8(path, "utf-8"));
2389
+ return typeof state.bot_id === "string" ? state.bot_id : null;
2390
+ } catch {
2391
+ return null;
2392
+ }
2393
+ }
2394
+ function serve(port, transcriptPath, options = {}) {
2395
+ const opts = typeof options === "string" || options === null ? { webhookToken: options } : options;
2396
+ const latestVideoFrame = { raw: null, metadata: null };
2397
+ let presence = newPresenceSnapshot();
2398
+ const framesBySource = new Map;
2399
+ const frameAuthorized = (req) => tokensEqual(req.headers.get("X-Samograph-Frame-Token"), opts.frameToken);
2400
+ const presencePageAuthorized = (req, url) => tokensEqual(req.headers.get("X-Samograph-Presence-Token"), opts.presenceToken) || tokensEqual(url.searchParams.get("token"), opts.presenceToken);
2401
+ const presenceJsonAuthorized = (req) => tokensEqual(req.headers.get("X-Samograph-Presence-Token"), opts.presenceToken);
2402
+ const presenceWriteAuthorized = (req) => tokensEqual(req.headers.get("X-Samograph-Presence-Token"), opts.presenceWriteToken);
2403
+ return Bun.serve({
2404
+ port,
2405
+ hostname: "127.0.0.1",
2406
+ maxRequestBodySize: WEBHOOK_MAX_BYTES,
2407
+ async fetch(req, server) {
2408
+ const url = new URL(req.url);
2409
+ if (req.method === "POST" && url.pathname === "/webhook") {
2410
+ if (!tokensEqual(url.searchParams.get("token"), opts.webhookToken)) {
2411
+ return Response.json({ error: "forbidden" }, { status: 403 });
2412
+ }
2413
+ const contentLength = req.headers.get("content-length");
2414
+ if (contentLength !== null && Number(contentLength) > WEBHOOK_MAX_BYTES) {
2415
+ return Response.json({ error: "payload too large" }, { status: 413 });
2416
+ }
2417
+ let payload = {};
2418
+ try {
2419
+ const body = await req.text();
2420
+ if (new TextEncoder().encode(body).byteLength > WEBHOOK_MAX_BYTES) {
2421
+ return Response.json({ error: "payload too large" }, { status: 413 });
2422
+ }
2423
+ payload = body ? JSON.parse(body) : {};
2424
+ } catch {
2425
+ payload = {};
2426
+ }
2427
+ const transcriptLine = await handleWebhook(payload, transcriptPath);
2428
+ if (transcriptLine !== null) {
2429
+ const activity = activityFromTranscriptLine(transcriptLine);
2430
+ if (activity !== null) {
2431
+ presence = appendPresenceActivity(presence, activity);
2432
+ }
2433
+ }
2434
+ return Response.json({ ok: true });
2435
+ }
2436
+ if (req.method === "GET" && url.pathname === "/frame") {
2437
+ if (!frameAuthorized(req)) {
2438
+ return new Response("", { status: 403 });
2439
+ }
2440
+ const frame = selectedFrame(latestVideoFrame, framesBySource, url.searchParams.get("source"));
2441
+ if (frame.raw === null) {
2442
+ return new Response("", { status: 404 });
2443
+ }
2444
+ return new Response(frame.raw, {
2445
+ headers: { "Content-Type": "image/png" }
2446
+ });
2447
+ }
2448
+ if (req.method === "GET" && url.pathname === "/frame.json") {
2449
+ if (!frameAuthorized(req)) {
2450
+ return Response.json({ error: "forbidden" }, { status: 403 });
2451
+ }
2452
+ const frame = selectedFrame(latestVideoFrame, framesBySource, url.searchParams.get("source"));
2453
+ if (frame.metadata === null) {
2454
+ return Response.json({ error: "no frame" }, { status: 404 });
2455
+ }
2456
+ return Response.json(frame.metadata);
2457
+ }
2458
+ if (req.method === "GET" && url.pathname === "/frames.json") {
2459
+ if (!frameAuthorized(req)) {
2460
+ return Response.json({ error: "forbidden" }, { status: 403 });
2461
+ }
2462
+ return Response.json({ frames: frameInventory(framesBySource) });
2463
+ }
2464
+ if (req.method === "GET" && url.pathname === "/presence") {
2465
+ if (!presencePageAuthorized(req, url)) {
2466
+ return new Response("", { status: 403 });
2467
+ }
2468
+ return new Response(presencePageHtml(), {
2469
+ headers: {
2470
+ "Content-Type": "text/html; charset=utf-8",
2471
+ "Cache-Control": "no-store"
2472
+ }
2473
+ });
2474
+ }
2475
+ if (req.method === "GET" && url.pathname === "/presence.json") {
2476
+ if (!presenceJsonAuthorized(req)) {
2477
+ return Response.json({ error: "forbidden" }, { status: 403 });
2478
+ }
2479
+ return Response.json(presence, {
2480
+ headers: { "Cache-Control": "no-store" }
2481
+ });
2482
+ }
2483
+ if (req.method === "POST" && url.pathname === "/presence") {
2484
+ if (!presenceWriteAuthorized(req)) {
2485
+ return Response.json({ error: "forbidden" }, { status: 403 });
2486
+ }
2487
+ const contentLength = req.headers.get("content-length");
2488
+ if (contentLength !== null && Number(contentLength) > WEBHOOK_MAX_BYTES) {
2489
+ return Response.json({ error: "payload too large" }, { status: 413 });
2490
+ }
2491
+ let payload = {};
2492
+ try {
2493
+ const body = await req.text();
2494
+ if (new TextEncoder().encode(body).byteLength > WEBHOOK_MAX_BYTES) {
2495
+ return Response.json({ error: "payload too large" }, { status: 413 });
2496
+ }
2497
+ payload = body ? JSON.parse(body) : {};
2498
+ } catch {
2499
+ payload = {};
2500
+ }
2501
+ const rawPayload = payload;
2502
+ const state = normalizePresenceState(rawPayload.state);
2503
+ if (state === null) {
2504
+ return Response.json({ error: "invalid presence state" }, { status: 400 });
2505
+ }
2506
+ const hasMessage = typeof rawPayload.message === "string" && sanitizePresenceText(rawPayload.message) !== "";
2507
+ const message = hasMessage ? sanitizePresenceMessage(rawPayload.message, state) : defaultPresenceMessage(state);
2508
+ if (hasMessage) {
2509
+ presence = appendPresenceActivity(presence, {
2510
+ kind: activityKindForState(state),
2511
+ label: labelForPresenceState(state),
2512
+ text: message
2513
+ });
2514
+ }
2515
+ presence = newPresenceSnapshot(state, message, presence.activities);
2516
+ return Response.json({ ok: true, presence });
2517
+ }
2518
+ if (url.pathname === "/video-ws") {
2519
+ if (!tokensEqual(url.searchParams.get("token"), opts.frameToken)) {
2520
+ return new Response("", { status: 403 });
2521
+ }
2522
+ const upgraded = server.upgrade(req);
2523
+ if (upgraded)
2524
+ return;
2525
+ return new Response("Upgrade Required", { status: 426 });
2526
+ }
2527
+ return new Response("Not Found", { status: 404 });
2528
+ },
2529
+ websocket: {
2530
+ message(_ws, message) {
2531
+ let payload;
2532
+ try {
2533
+ const text = typeof message === "string" ? message : Buffer3.from(message).toString("utf-8");
2534
+ payload = JSON.parse(text);
2535
+ } catch {
2536
+ return;
2537
+ }
2538
+ const decoded = decodeVideoSeparatePng(payload, opts.currentCallId?.() ?? null);
2539
+ if (decoded === null)
2540
+ return;
2541
+ latestVideoFrame.raw = decoded.raw;
2542
+ latestVideoFrame.metadata = decoded.metadata;
2543
+ const frame = { raw: decoded.raw, metadata: decoded.metadata };
2544
+ for (const alias of frameSourceAliases(decoded.metadata)) {
2545
+ framesBySource.set(alias, frame);
2546
+ }
2547
+ }
2548
+ }
2549
+ });
2550
+ }
2551
+
2552
+ // src/commands/serve.ts
2553
+ function resolveServeOptions(args, env = process.env) {
2554
+ return {
2555
+ webhookToken: args.webhook_token || env.SAMOGRAPH_WEBHOOK_TOKEN || "",
2556
+ frameToken: args.frame_token || env.SAMOGRAPH_FRAME_TOKEN || "",
2557
+ presenceToken: args.presence_token || env.SAMOGRAPH_PRESENCE_TOKEN || "",
2558
+ presenceWriteToken: args.presence_write_token || env.SAMOGRAPH_PRESENCE_WRITE_TOKEN || ""
2559
+ };
2560
+ }
2561
+ async function cmdServe(args) {
2562
+ const port = args.port || 8080;
2563
+ const transcriptPath = args.transcript_file;
2564
+ serve(port, transcriptPath, {
2565
+ ...resolveServeOptions(args),
2566
+ currentCallId: () => callIdFromStateFile(args.call_id_file)
2567
+ });
2568
+ await new Promise(() => {});
2569
+ }
2570
+
2571
+ // src/commands/doctor.ts
2572
+ import { existsSync as existsSync10 } from "fs";
2573
+ function commandVersion(command, args = ["--version"]) {
2574
+ try {
2575
+ const proc = Bun.spawnSync([command, ...args]);
2576
+ if (proc.exitCode !== 0) {
2577
+ const stderr = new TextDecoder().decode(proc.stderr).trim();
2578
+ return {
2579
+ ok: false,
2580
+ detail: stderr || `${command} --version exited ${proc.exitCode}`
2581
+ };
2582
+ }
2583
+ const stdout = new TextDecoder().decode(proc.stdout).trim();
2584
+ return {
2585
+ ok: true,
2586
+ detail: stdout.split(/\r?\n/)[0] ?? ""
2587
+ };
2588
+ } catch (e) {
2589
+ return {
2590
+ ok: false,
2591
+ detail: e instanceof Error ? e.message : String(e)
2592
+ };
2593
+ }
2594
+ }
2595
+ async function cmdDoctor() {
2596
+ const bunVersion = commandVersion("bun");
2597
+ const ngrokVersion = commandVersion("ngrok");
2598
+ const ffmpegVersion = commandVersion("ffmpeg", ["-version"]);
2599
+ const checks = [
2600
+ {
2601
+ name: "Bun",
2602
+ ok: bunVersion.ok,
2603
+ detail: bunVersion.detail || "not found in PATH"
2604
+ },
2605
+ {
2606
+ name: "RECALL_API_KEY",
2607
+ ok: Boolean(process.env.RECALL_API_KEY),
2608
+ detail: process.env.RECALL_API_KEY ? "set" : "missing"
2609
+ },
2610
+ {
2611
+ name: "ngrok",
2612
+ ok: ngrokVersion.ok,
2613
+ detail: ngrokVersion.detail || "not found in PATH"
2614
+ },
2615
+ {
2616
+ name: "ffmpeg",
2617
+ ok: ffmpegVersion.ok,
2618
+ detail: ffmpegVersion.detail || "not found in PATH"
2619
+ },
2620
+ {
2621
+ name: "state",
2622
+ ok: true,
2623
+ detail: existsSync10(stateFile()) ? `active state at ${stateFile()}` : "no active bot state"
2624
+ }
2625
+ ];
2626
+ process.stdout.write(`samograph doctor
2627
+
2628
+ `);
2629
+ for (const check of checks) {
2630
+ process.stdout.write(`${check.ok ? "OK" : "FAIL"} ${check.name}: ${check.detail}
2631
+ `);
2632
+ }
2633
+ if (checks.some((check) => !check.ok)) {
2634
+ process.exit(1);
2635
+ }
2636
+ }
2637
+
2638
+ // src/googleDocs.ts
2639
+ import { existsSync as existsSync11, readFileSync as readFileSync9 } from "fs";
2640
+ import { createSign } from "crypto";
2641
+ var DOCS_SCOPE = "https://www.googleapis.com/auth/documents";
2642
+ var TOKEN_URI = "https://oauth2.googleapis.com/token";
2643
+ var DOCS_API = "https://docs.googleapis.com/v1/documents";
2644
+ function base64url(input) {
2645
+ return Buffer.from(input).toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
2646
+ }
2647
+ function resolveGoogleDocId(argDocId) {
2648
+ const docId = argDocId ?? process.env.GOOGLE_DOC_ID ?? "";
2649
+ if (!docId) {
2650
+ process.stderr.write(`Error: pass --doc-id ID or set GOOGLE_DOC_ID.
2651
+ `);
2652
+ throw new ExitError(2);
2653
+ }
2654
+ const match = docId.match(/\/document\/d\/([^/?#]+)/);
2655
+ return match ? decodeURIComponent(match[1]) : docId;
2656
+ }
2657
+ function loadServiceAccountCredentials(path) {
2658
+ const rawPath = path ?? process.env.GOOGLE_APPLICATION_CREDENTIALS ?? "";
2659
+ if (!rawPath) {
2660
+ process.stderr.write(`Error: pass --credentials FILE or set GOOGLE_APPLICATION_CREDENTIALS.
2661
+ `);
2662
+ throw new ExitError(2);
2663
+ }
2664
+ if (!existsSync11(rawPath)) {
2665
+ throw new Error(`Google credentials file not found: ${rawPath}`);
2666
+ }
2667
+ const parsed = JSON.parse(readFileSync9(rawPath, "utf-8"));
2668
+ if (!parsed.client_email || !parsed.private_key) {
2669
+ throw new Error("Google credentials file must contain client_email and private_key");
2670
+ }
2671
+ return {
2672
+ client_email: parsed.client_email,
2673
+ private_key: parsed.private_key.replace(/\\n/g, `
2674
+ `),
2675
+ token_uri: parsed.token_uri
2676
+ };
2677
+ }
2678
+ function createJwtAssertion(credentials, nowSeconds = Math.floor(Date.now() / 1000)) {
2679
+ const header = { alg: "RS256", typ: "JWT" };
2680
+ const payload = {
2681
+ iss: credentials.client_email,
2682
+ scope: DOCS_SCOPE,
2683
+ aud: credentials.token_uri ?? TOKEN_URI,
2684
+ exp: nowSeconds + 3600,
2685
+ iat: nowSeconds
2686
+ };
2687
+ const unsigned = `${base64url(JSON.stringify(header))}.${base64url(JSON.stringify(payload))}`;
2688
+ const sig = createSign("RSA-SHA256").update(unsigned).sign(credentials.private_key);
2689
+ return `${unsigned}.${base64url(sig)}`;
2690
+ }
2691
+ async function getAccessToken(credentials, fetchFn = fetch) {
2692
+ const body = new URLSearchParams({
2693
+ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
2694
+ assertion: createJwtAssertion(credentials)
2695
+ });
2696
+ const res = await fetchFn(credentials.token_uri ?? TOKEN_URI, {
2697
+ method: "POST",
2698
+ headers: { "content-type": "application/x-www-form-urlencoded" },
2699
+ body
2700
+ });
2701
+ if (!res.ok) {
2702
+ throw new Error(`Google OAuth failed: HTTP ${res.status} ${await res.text()}`);
2703
+ }
2704
+ const json = await res.json();
2705
+ if (!json.access_token) {
2706
+ throw new Error("Google OAuth response did not include access_token");
2707
+ }
2708
+ return json.access_token;
2709
+ }
2710
+ function makeGoogleDocsClient(credentials, fetchFn = fetch) {
2711
+ let cachedToken = null;
2712
+ let cachedTokenUseUntil = 0;
2713
+ async function token() {
2714
+ if (!cachedToken || Date.now() >= cachedTokenUseUntil) {
2715
+ cachedToken = await getAccessToken(credentials, fetchFn);
2716
+ cachedTokenUseUntil = Date.now() + 50 * 60 * 1000;
2717
+ }
2718
+ return cachedToken;
2719
+ }
2720
+ async function request(url, init = {}) {
2721
+ const accessToken = await token();
2722
+ const headers2 = new Headers(init.headers);
2723
+ headers2.set("authorization", `Bearer ${accessToken}`);
2724
+ return fetchFn(url, { ...init, headers: headers2 });
2725
+ }
2726
+ async function getDoc(docId) {
2727
+ const encodedDocId = encodeURIComponent(docId);
2728
+ const docRes = await request(`${DOCS_API}/${encodedDocId}?fields=body(content(startIndex,endIndex,paragraph(paragraphStyle(namedStyleType),elements(textRun(content)))))`);
2729
+ if (!docRes.ok) {
2730
+ throw new Error(`Google Docs get failed: HTTP ${docRes.status} ${await docRes.text()}`);
2731
+ }
2732
+ return await docRes.json();
2733
+ }
2734
+ async function insertText(docId, index, text) {
2735
+ const encodedDocId = encodeURIComponent(docId);
2736
+ const updateRes = await request(`${DOCS_API}/${encodedDocId}:batchUpdate`, {
2737
+ method: "POST",
2738
+ headers: { "content-type": "application/json" },
2739
+ body: JSON.stringify({
2740
+ requests: [
2741
+ {
2742
+ insertText: {
2743
+ location: { index },
2744
+ text
2745
+ }
2746
+ }
2747
+ ]
2748
+ })
2749
+ });
2750
+ if (!updateRes.ok) {
2751
+ throw new Error(`Google Docs update failed: HTTP ${updateRes.status} ${await updateRes.text()}`);
2752
+ }
2753
+ }
2754
+ function endInsertionIndex(doc) {
2755
+ const content = doc.body?.content ?? [];
2756
+ const endIndex = content.length ? content[content.length - 1].endIndex ?? 1 : 1;
2757
+ return Math.max(1, endIndex - 1);
2758
+ }
2759
+ function paragraphText(block) {
2760
+ return (block.paragraph?.elements ?? []).map((e) => e.textRun?.content ?? "").join("").replace(/\s+/g, " ").trim();
2761
+ }
2762
+ function isHeading(block) {
2763
+ return Boolean(block.paragraph?.paragraphStyle?.namedStyleType?.startsWith("HEADING_"));
2764
+ }
2765
+ function sectionInsertionIndex(doc, heading) {
2766
+ const content = doc.body?.content ?? [];
2767
+ const wanted = heading.toLowerCase();
2768
+ const headingIdx = content.findIndex((block) => isHeading(block) && paragraphText(block).toLowerCase() === wanted);
2769
+ if (headingIdx === -1)
2770
+ return null;
2771
+ for (let i = headingIdx + 1;i < content.length; i++) {
2772
+ if (isHeading(content[i])) {
2773
+ return Math.max(1, (content[i].startIndex ?? content[i].endIndex ?? 1) - 1);
2774
+ }
2775
+ }
2776
+ return endInsertionIndex(doc);
2777
+ }
2778
+ return {
2779
+ async appendText(docId, text) {
2780
+ await insertText(docId, endInsertionIndex(await getDoc(docId)), text);
2781
+ },
2782
+ async appendToSection(docId, heading, text) {
2783
+ const doc = await getDoc(docId);
2784
+ const index = sectionInsertionIndex(doc, heading);
2785
+ if (index === null) {
2786
+ await insertText(docId, endInsertionIndex(doc), `
2787
+ ${heading}
2788
+ ${text}`);
2789
+ return;
2790
+ }
2791
+ await insertText(docId, index, text);
2792
+ }
2793
+ };
2794
+ }
2795
+
2796
+ // src/commands/notes.ts
2797
+ async function cmdNotes(args, deps = {}) {
2798
+ const docId = resolveGoogleDocId(args.doc_id);
2799
+ const docs = deps.docs ?? makeGoogleDocsClient(loadServiceAccountCredentials(args.credentials));
2800
+ const action = args.notes_action ?? "help";
2801
+ if (action === "init") {
2802
+ const title = args.title ?? "Meeting live doc";
2803
+ await docs.appendText(docId, template(title));
2804
+ process.stdout.write(`Initialized live meeting doc ${docId}
2805
+ `);
2806
+ return;
2807
+ }
2808
+ if (action === "point") {
2809
+ const text = requireText(args.message, "point");
2810
+ const section = sectionHeading(args.section ?? "important");
2811
+ const speaker = args.speaker ? `${args.speaker}: ` : "";
2812
+ await docs.appendToSection(docId, section, `1. ${speaker}${text}
2813
+ `);
2814
+ process.stdout.write(`Added note to ${section}
2815
+ `);
2816
+ return;
2817
+ }
2818
+ if (action === "decision") {
2819
+ const text = requireText(args.message, "decision");
2820
+ await docs.appendToSection(docId, "Decisions", `1. ${text}
2821
+ `);
2822
+ process.stdout.write(`Added decision
2823
+ `);
2824
+ return;
2825
+ }
2826
+ if (action === "action") {
2827
+ const text = requireText(args.message, "action");
2828
+ const owner = args.owner ? `Owner: ${args.owner}. ` : "";
2829
+ const due = args.due ? `Due: ${args.due}. ` : "";
2830
+ await docs.appendToSection(docId, "Next steps / action items", `1. ${owner}${due}${text}
2831
+ `);
2832
+ process.stdout.write(`Added action item
2833
+ `);
2834
+ return;
2835
+ }
2836
+ if (action !== "transcript") {
2837
+ process.stderr.write(`usage: samograph notes <init|point|decision|action|transcript> [options]
2838
+ `);
2839
+ return;
2840
+ }
2841
+ process.stdout.write(`Writing live notes to Google Doc ${docId}
2842
+ `);
2843
+ await streamTranscriptLines(async (line) => {
2844
+ await docs.appendText(docId, line + `
2845
+ `);
2846
+ process.stdout.write(line + `
2847
+ `);
2848
+ }, {
2849
+ ...deps.watch,
2850
+ fromStart: args.from_start === true
2851
+ });
2852
+ }
2853
+ function requireText(text, action) {
2854
+ if (!text?.trim()) {
2855
+ throw new Error(`notes ${action} requires text`);
2856
+ }
2857
+ return text.trim();
2858
+ }
2859
+ function sectionHeading(section) {
2860
+ const key = section.toLowerCase();
2861
+ const headings = {
2862
+ agenda: "Agenda / questions",
2863
+ question: "Agenda / questions",
2864
+ questions: "Agenda / questions",
2865
+ important: "Important points",
2866
+ points: "Important points",
2867
+ decision: "Decisions",
2868
+ decisions: "Decisions",
2869
+ action: "Next steps / action items",
2870
+ actions: "Next steps / action items",
2871
+ links: "Links / references",
2872
+ transcript: "Transcript excerpts"
2873
+ };
2874
+ return headings[key] ?? "Important points";
2875
+ }
2876
+ function template(title) {
2877
+ return `
2878
+ ${title}
2879
+
2880
+ Context
2881
+ 1. Goal:
2882
+ 2. Pre-work / references:
2883
+ 3. Expected outcome:
2884
+
2885
+ Agenda / questions
2886
+ 1.
2887
+
2888
+ Important points
2889
+
2890
+ Decisions
2891
+
2892
+ Next steps / action items
2893
+
2894
+ Links / references
2895
+
2896
+ Transcript excerpts
2897
+ `;
2898
+ }
2899
+
2900
+ // src/commands/presence.ts
2901
+ async function cmdPresence(args, deps = {}) {
2902
+ const fetchFn = deps.fetchFn ?? fetch;
2903
+ const stateName = normalizePresenceState(args.presence_state);
2904
+ if (stateName === null) {
2905
+ process.stderr.write(`Error: presence state must be one of: listening, thinking, speaking, acting, idle
2906
+ `);
2907
+ throw new ExitError(1);
2908
+ }
2909
+ const state = loadState();
2910
+ const updateUrl = state.local_presence_update_url;
2911
+ const token = state.presence_write_token;
2912
+ if (typeof updateUrl !== "string" || !updateUrl || typeof token !== "string" || !token) {
2913
+ process.stderr.write(`Error: no active dynamic presence server found. Run samograph join first.
2914
+ `);
2915
+ throw new ExitError(1);
2916
+ }
2917
+ const explicitMessage = args.message === undefined || sanitizePresenceText(args.message) === "" ? null : sanitizePresenceMessage(args.message, stateName);
2918
+ const message = explicitMessage ?? defaultPresenceMessage(stateName);
2919
+ try {
2920
+ const resp = await fetchFn(updateUrl, {
2921
+ method: "POST",
2922
+ headers: {
2923
+ "Content-Type": "application/json",
2924
+ "X-Samograph-Presence-Token": token
2925
+ },
2926
+ body: JSON.stringify(explicitMessage === null ? { state: stateName } : { state: stateName, message: explicitMessage })
2927
+ });
2928
+ if (!resp.ok) {
2929
+ const body = await resp.text();
2930
+ process.stderr.write(`Error: presence update failed: ${resp.status} ${body}
2931
+ `);
2932
+ throw new ExitError(1);
2933
+ }
2934
+ } catch (err) {
2935
+ if (err instanceof ExitError)
2936
+ throw err;
2937
+ const reason = err instanceof Error ? err.message : String(err);
2938
+ process.stderr.write(`Error: presence update failed: ${reason}
2939
+ `);
2940
+ throw new ExitError(1);
2941
+ }
2942
+ process.stdout.write(`Presence: ${stateName} - ${message}
2943
+ `);
2944
+ }
2945
+
2946
+ // src/cli.ts
2947
+ var USAGE = `usage: samograph <command> [options]
2948
+
2949
+ Put your AI agent in Zoom and Google Meet calls.
2950
+ samograph joins through Recall.ai, streams live transcript lines,
2951
+ captures call frames on demand, and sends explicit chat messages.
2952
+
2953
+ Requires: Bun, RECALL_API_KEY env var (get one at recall.ai), and ngrok (or an alternative tunnel via --webhook-base).
2954
+
2955
+ commands:
2956
+ join <url> [--name N] [--dict D] [--port P] [--transcript-dir DIR] [--rtmp-url URL] [--rtmp] [--no-ws-video] [--frame-dir DIR] [--webhook-base URL] [--variant web|web_4_core|web_gpu] [--no-presence] [--presence-bg MODE]
2957
+ leave [bot_id]
2958
+ status [bot_id]
2959
+ screenshot [--out FILE] [bot_id]
2960
+ chat <message> [--bot-id ID]
2961
+ presence <listening|thinking|speaking|acting|idle> [message]
2962
+ transcript [--local] [--file FILE] [--cursor N] [--limit N] [bot_id]
2963
+ dicts
2964
+ watch
2965
+ notes <init|point|decision|action|transcript> [options]
2966
+ frame [--source SOURCE] [--out FILE] [--archive] [bot_id]
2967
+ frames
2968
+ doctor
2969
+
2970
+ flags:
2971
+ -h, --help Show this help message
2972
+ -v, --version Show version number
2973
+ `;
2974
+ var COMMAND_HELP = {
2975
+ join: `usage: samograph join <url> [options]
2976
+
2977
+ Join a Zoom or Google Meet call as a Recall.ai bot.
2978
+ By default, samograph streams transcript events and receives call frames over WebSocket.
2979
+
2980
+ options:
2981
+ --name N Bot display name
2982
+ --dict D Deepgram keyword dictionary name (default: postgresfm)
2983
+ --port P Local callback server port (default: 8080)
2984
+ --transcript-dir DIR Directory for timestamped transcript files
2985
+ --frame-dir DIR Directory for on-demand frame output
2986
+ --no-ws-video Disable WebSocket call-frame capture
2987
+ --webhook-base URL Use an existing public tunnel URL instead of starting ngrok
2988
+ (e.g. localtunnel/cloudflared pointing at --port)
2989
+ --variant NAME Recall Output Media bot size: web|web_4_core|web_gpu
2990
+ (default: web_4_core; smoothest camera rendering)
2991
+ --no-presence Join without the presence camera page (skips the
2992
+ camera-page preflight entirely)
2993
+ --presence-bg MODE Presence camera look: robot|sphere|field|static|cycle
2994
+ (default: robot \u2014 static samoagent avatar image)
2995
+ --rtmp Use local RTMP path through ngrok TCP
2996
+ --rtmp-url URL Use an existing RTMP endpoint
2997
+
2998
+ examples:
2999
+ samograph join "https://meet.google.com/abc-defg-hij" --name Leo
3000
+ samograph join "https://zoom.us/j/123" --dict postgresfm
3001
+ samograph join "https://zoom.us/j/123" --variant web_4_core
3002
+ `,
3003
+ frame: `usage: samograph frame [--source SOURCE] [--out FILE] [--archive] [bot_id]
3004
+
3005
+ Write the latest call frame to disk.
3006
+ With the default WebSocket path, frames stay in memory until this command is run.
3007
+
3008
+ options:
3009
+ --source SOURCE Frame source: latest, screen, webcam, participant:<id>, type:<type>
3010
+ --out FILE Output path. Defaults to latest frame path from active state.
3011
+ --archive Also write a timestamped PNG+JSON archive copy.
3012
+
3013
+ examples:
3014
+ samograph frame
3015
+ samograph frame --source screen --out /tmp/screen.png
3016
+ samograph frame --out /tmp/current-call.png
3017
+ samograph frame --archive
3018
+ `,
3019
+ frames: `usage: samograph frames
3020
+
3021
+ List WebSocket frame sources currently buffered in memory.
3022
+ Use the source keys with: samograph frame --source SOURCE
3023
+ `,
3024
+ doctor: `usage: samograph doctor
3025
+
3026
+ Check local prerequisites for joining meetings:
3027
+ Bun, RECALL_API_KEY, ngrok, ffmpeg, and active samograph state.
3028
+ `,
3029
+ presence: `usage: samograph presence <state> [message]
3030
+
3031
+ Update the bot camera presence shown in the meeting.
3032
+ States: listening|thinking|speaking|acting|idle
3033
+
3034
+ Without a message, only the state changes (bare toggle): the camera shows the
3035
+ state's default label and nothing is added to the Comments lane. With a
3036
+ message, the state changes AND the message appears in the Comments lane.
3037
+
3038
+ examples:
3039
+ samograph presence listening
3040
+ samograph presence thinking "Checking the migration plan"
3041
+ samograph presence speaking "Answering in chat"
3042
+ `,
3043
+ notes: `usage: samograph notes <init|point|decision|action|transcript> [options]
3044
+
3045
+ Maintain a GitLab-style live meeting doc.
3046
+ Uses GOOGLE_DOC_ID and GOOGLE_APPLICATION_CREDENTIALS when flags are omitted.
3047
+
3048
+ options:
3049
+ --doc-id ID Google Doc document ID or URL
3050
+ --credentials FILE Google service-account JSON credentials
3051
+ --title TITLE Title for notes init
3052
+ --section NAME Section for notes point
3053
+ --speaker NAME Speaker prefix for notes point
3054
+ --owner NAME Action-item owner
3055
+ --due DATE Action-item due date
3056
+ --from-start For transcript: copy existing lines before tailing live lines
3057
+
3058
+ examples:
3059
+ samograph notes init --doc-id 1abc...
3060
+ samograph notes point "Customer is blocked on migration risk" --speaker Alice
3061
+ samograph notes decision "Use logical replication for phase 1"
3062
+ samograph notes action "Open migration checklist issue" --owner Nik --due 2026-06-07
3063
+ samograph notes transcript --from-start
3064
+ `,
3065
+ transcript: `usage: samograph transcript [--local] [--file FILE] [--cursor N] [--limit N] [bot_id]
3066
+
3067
+ Print a finished Recall.ai transcript, falling back to the local live transcript.
3068
+
3069
+ options:
3070
+ --cursor N Start at transcript line N (0-based)
3071
+ --file FILE Read a local transcript file instead of Recall
3072
+ --limit N Return at most N lines and print the next cursor
3073
+ --local Read the active/default local transcript instead of Recall
3074
+
3075
+ examples:
3076
+ samograph transcript
3077
+ samograph transcript --local --cursor 0 --limit 20
3078
+ samograph transcript --file ~/.samograph/20260604_022915_transcript.txt --cursor 0 --limit 20
3079
+ samograph transcript --cursor 0 --limit 20
3080
+ samograph transcript --cursor 20 --limit 20 <bot_id>
3081
+ `
3082
+ };
3083
+
3084
+ class ArgError extends Error {
3085
+ }
3086
+ function parseArgs(argv) {
3087
+ if (argv.length === 0) {
3088
+ throw new ArgError("the following arguments are required: command");
3089
+ }
3090
+ const command = argv[0];
3091
+ const rest = argv.slice(1);
3092
+ const positionals = [];
3093
+ const opts = {};
3094
+ const valueFlags = {
3095
+ join: new Set(["--name", "--dict", "--port", "--transcript-dir", "--rtmp-url", "--frame-dir", "--webhook-base", "--variant", "--presence-bg"]),
3096
+ leave: new Set,
3097
+ status: new Set,
3098
+ screenshot: new Set(["--out"]),
3099
+ chat: new Set(["--bot-id"]),
3100
+ presence: new Set,
3101
+ transcript: new Set(["--cursor", "--file", "--limit"]),
3102
+ dicts: new Set,
3103
+ watch: new Set,
3104
+ notes: new Set(["--doc-id", "--credentials", "--title", "--section", "--speaker", "--owner", "--due"]),
3105
+ frame: new Set(["--out", "--source"]),
3106
+ frames: new Set,
3107
+ doctor: new Set,
3108
+ _serve: new Set(["--port", "--transcript-file", "--webhook-token", "--call-id-file", "--frame-token", "--presence-token", "--presence-write-token"])
3109
+ };
3110
+ const boolFlags = {
3111
+ join: new Set(["--rtmp", "--no-ws-video", "--no-presence"]),
3112
+ leave: new Set,
3113
+ status: new Set,
3114
+ screenshot: new Set,
3115
+ chat: new Set,
3116
+ presence: new Set,
3117
+ transcript: new Set(["--local"]),
3118
+ dicts: new Set,
3119
+ watch: new Set,
3120
+ notes: new Set(["--from-start"]),
3121
+ frame: new Set(["--archive"]),
3122
+ frames: new Set,
3123
+ doctor: new Set,
3124
+ _serve: new Set
3125
+ };
3126
+ const knownCommands = Object.keys(valueFlags);
3127
+ if (!knownCommands.includes(command)) {
3128
+ throw new ArgError(`invalid choice: '${command}'`);
3129
+ }
3130
+ const vFlags = valueFlags[command];
3131
+ const bFlags = boolFlags[command];
3132
+ for (let i = 0;i < rest.length; i++) {
3133
+ const tok = rest[i];
3134
+ if (tok.startsWith("--")) {
3135
+ const eq = tok.indexOf("=");
3136
+ if (eq !== -1) {
3137
+ const flag = tok.slice(0, eq);
3138
+ const val = tok.slice(eq + 1);
3139
+ if (vFlags.has(flag)) {
3140
+ opts[flag] = val;
3141
+ } else {
3142
+ throw new ArgError(`unrecognized arguments: ${tok}`);
3143
+ }
3144
+ continue;
3145
+ }
3146
+ if (bFlags.has(tok)) {
3147
+ opts[tok] = true;
3148
+ continue;
3149
+ }
3150
+ if (vFlags.has(tok)) {
3151
+ const val = rest[i + 1];
3152
+ if (val === undefined) {
3153
+ throw new ArgError(`argument ${tok}: expected one argument`);
3154
+ }
3155
+ opts[tok] = val;
3156
+ i += 1;
3157
+ continue;
3158
+ }
3159
+ throw new ArgError(`unrecognized arguments: ${tok}`);
3160
+ } else {
3161
+ positionals.push(tok);
3162
+ }
3163
+ }
3164
+ const result = { command };
3165
+ switch (command) {
3166
+ case "join": {
3167
+ if (positionals.length < 1) {
3168
+ throw new ArgError("the following arguments are required: url");
3169
+ }
3170
+ result.url = positionals[0];
3171
+ result.name = opts["--name"] ?? null;
3172
+ result.dict = opts["--dict"] ?? "postgresfm";
3173
+ const rawPort = opts["--port"];
3174
+ if (rawPort !== undefined) {
3175
+ const p = Number(rawPort);
3176
+ if (!Number.isInteger(p) || p < 1 || p > 65535) {
3177
+ throw new ArgError(`argument --port: invalid port number: '${rawPort}'`);
3178
+ }
3179
+ result.port = p;
3180
+ } else {
3181
+ result.port = 8080;
3182
+ }
3183
+ result.transcript_dir = opts["--transcript-dir"] ?? null;
3184
+ result.rtmp_url = opts["--rtmp-url"] ?? null;
3185
+ result.rtmp = opts["--rtmp"] === true;
3186
+ result.ws_video = opts["--no-ws-video"] !== true;
3187
+ result.webhook_base = opts["--webhook-base"] ?? null;
3188
+ result.no_presence = opts["--no-presence"] === true;
3189
+ result.presence_bg = opts["--presence-bg"] ?? null;
3190
+ if (result.presence_bg !== null && !["robot", "sphere", "field", "static", "cycle"].includes(result.presence_bg)) {
3191
+ throw new ArgError(`argument --presence-bg: invalid choice: '${result.presence_bg}' (choose from robot, sphere, field, static, cycle)`);
3192
+ }
3193
+ result.frame_dir = opts["--frame-dir"] ?? null;
3194
+ result.variant = opts["--variant"] ?? "web_4_core";
3195
+ if (result.variant !== null && !["web", "web_4_core", "web_gpu"].includes(result.variant)) {
3196
+ throw new ArgError(`argument --variant: invalid choice: '${result.variant}' (choose from web, web_4_core, web_gpu)`);
3197
+ }
3198
+ break;
3199
+ }
3200
+ case "leave":
3201
+ case "status":
3202
+ case "transcript": {
3203
+ result.bot_id = positionals.length ? positionals[0] : null;
3204
+ result.transcript_local = opts["--local"] === true;
3205
+ result.transcript_file = opts["--file"] ?? undefined;
3206
+ const rawCursor = opts["--cursor"];
3207
+ if (rawCursor !== undefined) {
3208
+ const c = Number(rawCursor);
3209
+ if (!Number.isInteger(c) || c < 0) {
3210
+ throw new ArgError(`argument --cursor: invalid non-negative integer: '${rawCursor}'`);
3211
+ }
3212
+ result.transcript_cursor = c;
3213
+ }
3214
+ const rawLimit = opts["--limit"];
3215
+ if (rawLimit !== undefined) {
3216
+ const l = Number(rawLimit);
3217
+ if (!Number.isInteger(l) || l < 1) {
3218
+ throw new ArgError(`argument --limit: invalid positive integer: '${rawLimit}'`);
3219
+ }
3220
+ result.transcript_limit = l;
3221
+ }
3222
+ break;
3223
+ }
3224
+ case "screenshot": {
3225
+ result.out = opts["--out"] ?? "screenshot.png";
3226
+ result.bot_id = positionals.length ? positionals[0] : null;
3227
+ break;
3228
+ }
3229
+ case "frame": {
3230
+ result.out = opts["--out"] ?? null;
3231
+ result.archive = opts["--archive"] === true;
3232
+ result.frame_source = opts["--source"] ?? null;
3233
+ result.bot_id = positionals.length ? positionals[0] : null;
3234
+ break;
3235
+ }
3236
+ case "chat": {
3237
+ if (positionals.length < 1) {
3238
+ throw new ArgError("the following arguments are required: message");
3239
+ }
3240
+ result.message = positionals[0];
3241
+ result.bot_id = opts["--bot-id"] ?? null;
3242
+ break;
3243
+ }
3244
+ case "presence": {
3245
+ if (positionals.length < 1) {
3246
+ throw new ArgError("the following arguments are required: state");
3247
+ }
3248
+ if (normalizePresenceState(positionals[0]) === null) {
3249
+ throw new ArgError(`argument state: invalid choice: '${positionals[0]}' (choose from ${PRESENCE_STATES.join(", ")})`);
3250
+ }
3251
+ result.presence_state = positionals[0];
3252
+ result.message = positionals.slice(1).join(" ") || undefined;
3253
+ break;
3254
+ }
3255
+ case "dicts":
3256
+ case "watch":
3257
+ case "doctor":
3258
+ case "frames":
3259
+ break;
3260
+ case "notes": {
3261
+ result.doc_id = opts["--doc-id"] ?? null;
3262
+ result.credentials = opts["--credentials"] ?? null;
3263
+ result.from_start = opts["--from-start"] === true;
3264
+ result.notes_action = positionals[0] ?? "help";
3265
+ result.message = positionals.slice(1).join(" ") || undefined;
3266
+ result.title = opts["--title"] ?? null;
3267
+ result.section = opts["--section"] ?? null;
3268
+ result.speaker = opts["--speaker"] ?? null;
3269
+ result.owner = opts["--owner"] ?? null;
3270
+ result.due = opts["--due"] ?? null;
3271
+ break;
3272
+ }
3273
+ case "_serve": {
3274
+ const rawPort2 = opts["--port"];
3275
+ if (rawPort2 !== undefined) {
3276
+ const p2 = Number(rawPort2);
3277
+ if (!Number.isInteger(p2) || p2 < 1 || p2 > 65535) {
3278
+ throw new ArgError(`argument --port: invalid port number: '${rawPort2}'`);
3279
+ }
3280
+ result.port = p2;
3281
+ } else {
3282
+ result.port = 8080;
3283
+ }
3284
+ if (opts["--transcript-file"] === undefined) {
3285
+ throw new ArgError("the following arguments are required: --transcript-file");
3286
+ }
3287
+ result.transcript_file = opts["--transcript-file"];
3288
+ result.webhook_token = opts["--webhook-token"] ?? "";
3289
+ result.call_id_file = opts["--call-id-file"] ?? "";
3290
+ result.frame_token = opts["--frame-token"] ?? "";
3291
+ result.presence_token = opts["--presence-token"] ?? "";
3292
+ result.presence_write_token = opts["--presence-write-token"] ?? "";
3293
+ break;
3294
+ }
3295
+ }
3296
+ return result;
3297
+ }
3298
+ async function dispatch(args) {
3299
+ switch (args.command) {
3300
+ case "join":
3301
+ return cmdJoin(args);
3302
+ case "leave":
3303
+ return cmdLeave(args);
3304
+ case "status":
3305
+ return cmdStatus(args);
3306
+ case "screenshot":
3307
+ return cmdScreenshot(args);
3308
+ case "transcript":
3309
+ return cmdTranscript(args);
3310
+ case "chat":
3311
+ return cmdChat(args);
3312
+ case "presence":
3313
+ return cmdPresence(args);
3314
+ case "frame":
3315
+ return cmdFrame(args);
3316
+ case "frames":
3317
+ return cmdFrames();
3318
+ case "dicts":
3319
+ return cmdDicts();
3320
+ case "watch":
3321
+ return cmdWatch();
3322
+ case "notes":
3323
+ return cmdNotes(args);
3324
+ case "doctor":
3325
+ return cmdDoctor();
3326
+ case "_serve":
3327
+ return cmdServe(args);
3328
+ default:
3329
+ throw new ArgError(`invalid choice: '${args.command}'`);
3330
+ }
3331
+ }
3332
+ async function main() {
3333
+ const argv = process.argv.slice(2);
3334
+ if (argv.length === 0 || argv[0] === "--help" || argv[0] === "-h") {
3335
+ process.stdout.write(USAGE);
3336
+ process.exit(argv.length === 0 ? 2 : 0);
3337
+ }
3338
+ if (argv.length >= 2 && (argv[1] === "--help" || argv[1] === "-h")) {
3339
+ const help = COMMAND_HELP[argv[0]];
3340
+ process.stdout.write(help ?? USAGE);
3341
+ process.exit(help ? 0 : 2);
3342
+ }
3343
+ if (argv[0] === "--version" || argv[0] === "-v") {
3344
+ const pkg = await Promise.resolve().then(() => __toESM(require_package(), 1));
3345
+ process.stdout.write(`samograph ${pkg.version}
3346
+ `);
3347
+ process.exit(0);
3348
+ }
3349
+ let args;
3350
+ try {
3351
+ args = parseArgs(argv);
3352
+ } catch (e) {
3353
+ if (e instanceof ArgError) {
3354
+ process.stderr.write(`samograph: error: ${e.message}
3355
+ `);
3356
+ process.exit(2);
3357
+ }
3358
+ throw e;
3359
+ }
3360
+ try {
3361
+ await dispatch(args);
3362
+ } catch (e) {
3363
+ if (e instanceof ExitError) {
3364
+ process.exit(e.code);
3365
+ }
3366
+ process.stderr.write(`samograph: error: ${e instanceof Error ? e.message : String(e)}
3367
+ `);
3368
+ process.exit(1);
3369
+ }
3370
+ }
3371
+ if (import.meta.main) {
3372
+ main();
3373
+ }
3374
+ export {
3375
+ parseArgs
3376
+ };