instar 0.28.77 → 0.28.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dashboard/index.html +184 -4
  2. package/dist/commands/server.d.ts.map +1 -1
  3. package/dist/commands/server.js +46 -2
  4. package/dist/commands/server.js.map +1 -1
  5. package/dist/monitoring/TokenLedger.d.ts +39 -0
  6. package/dist/monitoring/TokenLedger.d.ts.map +1 -1
  7. package/dist/monitoring/TokenLedger.js +110 -13
  8. package/dist/monitoring/TokenLedger.js.map +1 -1
  9. package/dist/monitoring/TokenLedgerPoller.d.ts.map +1 -1
  10. package/dist/monitoring/TokenLedgerPoller.js +8 -8
  11. package/dist/monitoring/TokenLedgerPoller.js.map +1 -1
  12. package/dist/server/AgentServer.d.ts +4 -0
  13. package/dist/server/AgentServer.d.ts.map +1 -1
  14. package/dist/server/AgentServer.js +14 -1
  15. package/dist/server/AgentServer.js.map +1 -1
  16. package/dist/server/routes.d.ts +8 -1
  17. package/dist/server/routes.d.ts.map +1 -1
  18. package/dist/server/routes.js +98 -0
  19. package/dist/server/routes.js.map +1 -1
  20. package/dist/threadline/BackfillCore.d.ts +70 -0
  21. package/dist/threadline/BackfillCore.d.ts.map +1 -0
  22. package/dist/threadline/BackfillCore.js +117 -0
  23. package/dist/threadline/BackfillCore.js.map +1 -0
  24. package/dist/threadline/ListenerSessionManager.d.ts +35 -0
  25. package/dist/threadline/ListenerSessionManager.d.ts.map +1 -1
  26. package/dist/threadline/ListenerSessionManager.js +41 -0
  27. package/dist/threadline/ListenerSessionManager.js.map +1 -1
  28. package/dist/threadline/TelegramBridge.d.ts +140 -0
  29. package/dist/threadline/TelegramBridge.d.ts.map +1 -0
  30. package/dist/threadline/TelegramBridge.js +224 -0
  31. package/dist/threadline/TelegramBridge.js.map +1 -0
  32. package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
  33. package/dist/threadline/ThreadlineMCPServer.js +5 -0
  34. package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
  35. package/dist/threadline/ThreadlineObservability.d.ts +95 -0
  36. package/dist/threadline/ThreadlineObservability.d.ts.map +1 -0
  37. package/dist/threadline/ThreadlineObservability.js +310 -0
  38. package/dist/threadline/ThreadlineObservability.js.map +1 -0
  39. package/package.json +1 -1
  40. package/scripts/threadline-bridge-backfill.mjs +379 -0
  41. package/src/data/builtin-manifest.json +47 -47
  42. package/upgrades/0.28.78.md +90 -0
  43. package/upgrades/side-effects/threadline-bridge-backfill.md +203 -0
  44. package/upgrades/side-effects/threadline-observability-tab.md +206 -0
  45. package/upgrades/side-effects/threadline-tg-bridge-module.md +196 -0
  46. package/upgrades/side-effects/token-ledger-bounded-scan.md +230 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * BackfillCore — pure helpers shared with scripts/threadline-bridge-backfill.mjs.
3
+ *
4
+ * Kept in src/ so they're TypeScript-checked and unit-testable. The
5
+ * script imports the compiled .mjs versions or duplicates the logic
6
+ * inline (the script is a one-shot CLI; it doesn't need a TS build
7
+ * step). This module is the source of truth for the documented
8
+ * contract; the script's own copies must stay in sync.
9
+ */
10
+ export declare const TOPIC_NAME_MAX = 96;
11
+ export declare const MAX_BODY_CHARS = 3800;
12
+ export interface BackfillMessage {
13
+ id?: string;
14
+ direction: 'in' | 'out';
15
+ timestamp?: string;
16
+ remoteAgent?: string;
17
+ remoteAgentName?: string;
18
+ text: string;
19
+ outcome?: string;
20
+ }
21
+ export interface InboxRow {
22
+ id?: string;
23
+ threadId?: string;
24
+ timestamp?: string;
25
+ from?: string;
26
+ senderName?: string;
27
+ text?: string;
28
+ }
29
+ export interface OutboxRow {
30
+ id?: string;
31
+ threadId?: string;
32
+ timestamp?: string;
33
+ to?: string;
34
+ recipientName?: string;
35
+ text?: string;
36
+ outcome?: string;
37
+ }
38
+ export interface SeedRow {
39
+ id?: string;
40
+ threadId?: string;
41
+ direction?: 'in' | 'out';
42
+ timestamp?: string;
43
+ remoteAgent?: string;
44
+ remoteAgentName?: string;
45
+ text?: string;
46
+ }
47
+ /**
48
+ * Build a topic name in the documented `local↔remote — subject` shape,
49
+ * truncating the subject to fit Telegram's 128-char limit (we cap at 96
50
+ * for headroom).
51
+ */
52
+ export declare function buildTopicName(localAgent: string, remoteName: string, subject?: string): string;
53
+ /** Chunk a body string into Telegram-safe pieces (<= 3800 chars each). */
54
+ export declare function chunkBody(body: string): string[];
55
+ /**
56
+ * Combine inbox / outbox / seed rows into a per-thread chronological
57
+ * map. Direction is preserved; missing fields are tolerated. Empty
58
+ * threadIds are dropped.
59
+ */
60
+ export declare function groupByThread(inbox: InboxRow[], outbox: OutboxRow[], seed?: SeedRow[]): Map<string, BackfillMessage[]>;
61
+ /** Pick the counterparty for a thread: first inbound's sender, else first outbound's recipient. */
62
+ export declare function pickCounterparty(messages: BackfillMessage[]): {
63
+ id: string;
64
+ name: string;
65
+ };
66
+ /** Stable key for the idempotency ledger. */
67
+ export declare function ledgerKey(m: BackfillMessage): string;
68
+ /** Compose the per-message body the backfill script posts. */
69
+ export declare function formatBackfillMessage(m: BackfillMessage, localAgentName: string): string;
70
+ //# sourceMappingURL=BackfillCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackfillCore.d.ts","sourceRoot":"","sources":["../../src/threadline/BackfillCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAS/F;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,SAAS,EAAE,EACnB,IAAI,GAAE,OAAO,EAAO,GACnB,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CA4ChC;AAED,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAY1F;AAED,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAEpD;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAOxF"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * BackfillCore — pure helpers shared with scripts/threadline-bridge-backfill.mjs.
3
+ *
4
+ * Kept in src/ so they're TypeScript-checked and unit-testable. The
5
+ * script imports the compiled .mjs versions or duplicates the logic
6
+ * inline (the script is a one-shot CLI; it doesn't need a TS build
7
+ * step). This module is the source of truth for the documented
8
+ * contract; the script's own copies must stay in sync.
9
+ */
10
+ export const TOPIC_NAME_MAX = 96;
11
+ export const MAX_BODY_CHARS = 3800;
12
+ /**
13
+ * Build a topic name in the documented `local↔remote — subject` shape,
14
+ * truncating the subject to fit Telegram's 128-char limit (we cap at 96
15
+ * for headroom).
16
+ */
17
+ export function buildTopicName(localAgent, remoteName, subject) {
18
+ const baseSubject = (subject || 'thread').trim().replace(/\s+/g, ' ');
19
+ const head = `${localAgent}↔${remoteName}`;
20
+ const sep = ' — ';
21
+ const remaining = TOPIC_NAME_MAX - head.length - sep.length;
22
+ const trimmedSubject = remaining > 4 && baseSubject.length > remaining
23
+ ? baseSubject.slice(0, remaining - 1) + '…'
24
+ : baseSubject;
25
+ return `${head}${sep}${trimmedSubject}`.slice(0, TOPIC_NAME_MAX);
26
+ }
27
+ /** Chunk a body string into Telegram-safe pieces (<= 3800 chars each). */
28
+ export function chunkBody(body) {
29
+ if (body.length <= MAX_BODY_CHARS)
30
+ return [body];
31
+ const chunks = [];
32
+ for (let i = 0; i < body.length; i += MAX_BODY_CHARS) {
33
+ chunks.push(body.slice(i, i + MAX_BODY_CHARS));
34
+ }
35
+ return chunks;
36
+ }
37
+ /**
38
+ * Combine inbox / outbox / seed rows into a per-thread chronological
39
+ * map. Direction is preserved; missing fields are tolerated. Empty
40
+ * threadIds are dropped.
41
+ */
42
+ export function groupByThread(inbox, outbox, seed = []) {
43
+ const map = new Map();
44
+ const push = (threadId, msg) => {
45
+ if (!threadId)
46
+ return;
47
+ if (!map.has(threadId))
48
+ map.set(threadId, []);
49
+ map.get(threadId).push(msg);
50
+ };
51
+ for (const e of inbox) {
52
+ push(e.threadId, {
53
+ id: e.id,
54
+ direction: 'in',
55
+ timestamp: e.timestamp,
56
+ remoteAgent: e.from,
57
+ remoteAgentName: e.senderName || e.from?.slice(0, 8) || '(unknown)',
58
+ text: e.text ?? '',
59
+ });
60
+ }
61
+ for (const e of outbox) {
62
+ push(e.threadId, {
63
+ id: e.id,
64
+ direction: 'out',
65
+ timestamp: e.timestamp,
66
+ remoteAgent: e.to,
67
+ remoteAgentName: e.recipientName || e.to?.slice(0, 8) || '(unknown)',
68
+ text: e.text ?? '',
69
+ outcome: e.outcome,
70
+ });
71
+ }
72
+ for (const e of seed) {
73
+ if (!e.threadId)
74
+ continue;
75
+ push(e.threadId, {
76
+ id: e.id ?? `seed-${e.timestamp ?? ''}`,
77
+ direction: e.direction === 'out' ? 'out' : 'in',
78
+ timestamp: e.timestamp,
79
+ remoteAgent: e.remoteAgent,
80
+ remoteAgentName: e.remoteAgentName ?? e.remoteAgent?.slice(0, 8) ?? '(unknown)',
81
+ text: e.text ?? '',
82
+ });
83
+ }
84
+ // Sort each thread chronologically.
85
+ for (const arr of map.values()) {
86
+ arr.sort((a, b) => (a.timestamp ?? '').localeCompare(b.timestamp ?? ''));
87
+ }
88
+ return map;
89
+ }
90
+ /** Pick the counterparty for a thread: first inbound's sender, else first outbound's recipient. */
91
+ export function pickCounterparty(messages) {
92
+ for (const m of messages) {
93
+ if (m.direction === 'in') {
94
+ return { id: m.remoteAgent ?? '(unknown)', name: m.remoteAgentName ?? '(unknown)' };
95
+ }
96
+ }
97
+ for (const m of messages) {
98
+ if (m.direction === 'out') {
99
+ return { id: m.remoteAgent ?? '(unknown)', name: m.remoteAgentName ?? '(unknown)' };
100
+ }
101
+ }
102
+ return { id: '(unknown)', name: '(unknown)' };
103
+ }
104
+ /** Stable key for the idempotency ledger. */
105
+ export function ledgerKey(m) {
106
+ return m.id || `${m.direction}:${m.timestamp ?? ''}:${m.text.slice(0, 32)}`;
107
+ }
108
+ /** Compose the per-message body the backfill script posts. */
109
+ export function formatBackfillMessage(m, localAgentName) {
110
+ const arrow = m.direction === 'in' ? '📥' : '📤';
111
+ const head = m.direction === 'in'
112
+ ? `${arrow} ${m.remoteAgentName ?? '(unknown)'} → ${localAgentName}`
113
+ : `${arrow} ${localAgentName} → ${m.remoteAgentName ?? '(unknown)'}`;
114
+ const meta = m.timestamp ? `\n${m.timestamp}` : '';
115
+ return `${head}${meta}\n${m.text}`;
116
+ }
117
+ //# sourceMappingURL=BackfillCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackfillCore.js","sourceRoot":"","sources":["../../src/threadline/BackfillCore.ts"],"names":[],"mappings":"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"}
@@ -80,6 +80,14 @@ export declare class ListenerSessionManager {
80
80
  * observability tab and the threadline → telegram bridge.
81
81
  */
82
82
  get canonicalInboxPath(): string;
83
+ /**
84
+ * Path to the canonical threadline outbox — every outbound threadline
85
+ * message sent via `/threadline/relay-send` is appended here, regardless
86
+ * of delivery path (local-delivery or relay-delivery). Read by the
87
+ * dashboard observability tab so the conversation view can render BOTH
88
+ * sides of an agent-to-agent thread.
89
+ */
90
+ get canonicalOutboxPath(): string;
83
91
  /**
84
92
  * Append an HMAC-signed entry to the canonical threadline inbox at
85
93
  * `.instar/threadline/inbox.jsonl.active`. Called once at relay-ingest before
@@ -98,6 +106,33 @@ export declare class ListenerSessionManager {
98
106
  text: string;
99
107
  messageId?: string;
100
108
  }): InboxEntry;
109
+ /**
110
+ * Append an HMAC-signed entry to the canonical threadline outbox at
111
+ * `.instar/threadline/outbox.jsonl.active`. Mirror of
112
+ * `appendCanonicalInboxEntry` — same shape, same key, written from the
113
+ * `/threadline/relay-send` route on every successful outbound delivery
114
+ * (local or relay) so the dashboard observability tab can render both
115
+ * sides of a conversation.
116
+ */
117
+ appendCanonicalOutboxEntry(opts: {
118
+ /** This agent's identifier (the sender). */
119
+ from: string;
120
+ /** Display name of this agent. */
121
+ senderName: string;
122
+ /** Target agent fingerprint or name. */
123
+ to: string;
124
+ /** Display name of the target. */
125
+ recipientName: string;
126
+ threadId: string;
127
+ text: string;
128
+ messageId?: string;
129
+ /** Delivery outcome from /threadline/relay-send (e.g. "accepted", "queued (no live session)"). */
130
+ outcome?: string;
131
+ }): InboxEntry & {
132
+ to: string;
133
+ recipientName: string;
134
+ outcome?: string;
135
+ };
101
136
  /**
102
137
  * Write a message to the inbox file.
103
138
  * Called by the server process when a message is routed to the warm listener.
@@ -1 +1 @@
1
- {"version":3,"file":"ListenerSessionManager.d.ts","sourceRoot":"","sources":["../../src/threadline/ListenerSessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListenerSessionManager.d.ts","sourceRoot":"","sources":["../../src/threadline/ListenerSessionManager.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,16 @@ export class ListenerSessionManager {
70
70
  get canonicalInboxPath() {
71
71
  return path.join(this.stateDir, 'threadline', 'inbox.jsonl.active');
72
72
  }
73
+ /**
74
+ * Path to the canonical threadline outbox — every outbound threadline
75
+ * message sent via `/threadline/relay-send` is appended here, regardless
76
+ * of delivery path (local-delivery or relay-delivery). Read by the
77
+ * dashboard observability tab so the conversation view can render BOTH
78
+ * sides of an agent-to-agent thread.
79
+ */
80
+ get canonicalOutboxPath() {
81
+ return path.join(this.stateDir, 'threadline', 'outbox.jsonl.active');
82
+ }
73
83
  // ── Write to Inbox ───────────────────────────────────────────────
74
84
  /**
75
85
  * Append an HMAC-signed entry to the canonical threadline inbox at
@@ -101,6 +111,37 @@ export class ListenerSessionManager {
101
111
  fs.appendFileSync(inboxPath, JSON.stringify(fullEntry) + '\n', { mode: 0o600 });
102
112
  return fullEntry;
103
113
  }
114
+ /**
115
+ * Append an HMAC-signed entry to the canonical threadline outbox at
116
+ * `.instar/threadline/outbox.jsonl.active`. Mirror of
117
+ * `appendCanonicalInboxEntry` — same shape, same key, written from the
118
+ * `/threadline/relay-send` route on every successful outbound delivery
119
+ * (local or relay) so the dashboard observability tab can render both
120
+ * sides of a conversation.
121
+ */
122
+ appendCanonicalOutboxEntry(opts) {
123
+ const entryData = {
124
+ id: opts.messageId || crypto.randomUUID(),
125
+ timestamp: new Date().toISOString(),
126
+ from: opts.from,
127
+ senderName: opts.senderName,
128
+ trustLevel: 'self',
129
+ threadId: opts.threadId,
130
+ text: opts.text,
131
+ to: opts.to,
132
+ recipientName: opts.recipientName,
133
+ outcome: opts.outcome,
134
+ };
135
+ const hmac = this.computeHMAC(entryData);
136
+ const fullEntry = { ...entryData, hmac };
137
+ const outboxPath = this.canonicalOutboxPath;
138
+ const outboxDir = path.dirname(outboxPath);
139
+ if (!fs.existsSync(outboxDir)) {
140
+ fs.mkdirSync(outboxDir, { recursive: true });
141
+ }
142
+ fs.appendFileSync(outboxPath, JSON.stringify(fullEntry) + '\n', { mode: 0o600 });
143
+ return fullEntry;
144
+ }
104
145
  /**
105
146
  * Write a message to the inbox file.
106
147
  * Called by the server process when a message is routed to the warm listener.
@@ -1 +1 @@
1
- {"version":3,"file":"ListenerSessionManager.js","sourceRoot":"","sources":["../../src/threadline/ListenerSessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListenerSessionManager.js","sourceRoot":"","sources":["../../src/threadline/ListenerSessionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * TelegramBridge — mirrors threadline messages into per-thread Telegram topics.
3
+ *
4
+ * The bridge gives Justin visibility into agent-to-agent conversations:
5
+ * every inbound and outbound threadline message gets relayed into a
6
+ * dedicated Telegram topic so he can watch the exchange in real time.
7
+ *
8
+ * **Relay-only.** The bridge is a pure observer — it never blocks, gates,
9
+ * or vetoes a message. The blocking authority lives in TelegramBridgeConfig
10
+ * (the dashboard toggles + allow/deny list). The bridge simply asks the
11
+ * config "should I post?" and, if yes, posts.
12
+ *
13
+ * **No double-fire.** The bridge does NOT use the existing `telegram-reply`
14
+ * pipeline (which is for agent → user replies). It writes directly through
15
+ * the TelegramAdapter primitives `findOrCreateForumTopic` + `sendToTopic`,
16
+ * and persists thread → topic bindings in
17
+ * `.instar/threadline/telegram-bridge-bindings.json`.
18
+ *
19
+ * **Does NOT replace spawn-session.** The relay handler in server.ts still
20
+ * spawns Claude Code sessions for inbound messages. The bridge runs
21
+ * alongside that path; it's purely additive for user visibility.
22
+ *
23
+ * Topic naming: `{localAgent}↔{remoteAgentName} — {subject}` (truncated to
24
+ * Telegram's 128-char limit). Subject defaults to the first ~40 chars of
25
+ * the inbound message when no explicit subject is supplied.
26
+ */
27
+ import type { TelegramBridgeConfig } from './TelegramBridgeConfig.js';
28
+ export declare const MAX_BRIDGE_MESSAGE_BODY = 3800;
29
+ export interface TelegramBridgeBinding {
30
+ threadId: string;
31
+ topicId: number;
32
+ remoteAgent: string;
33
+ topicName: string;
34
+ createdAt: string;
35
+ lastMessageAt: string;
36
+ }
37
+ export interface TelegramBridgeBindingsFile {
38
+ version: 1;
39
+ bindings: TelegramBridgeBinding[];
40
+ }
41
+ /** Subset of TelegramAdapter the bridge needs — keeps tests easy to mock. */
42
+ export interface TelegramSink {
43
+ findOrCreateForumTopic(name: string, iconColor?: number): Promise<{
44
+ topicId: number;
45
+ name: string;
46
+ reused: boolean;
47
+ }>;
48
+ sendToTopic(topicId: number, text: string, options?: {
49
+ silent?: boolean;
50
+ skipStallClear?: boolean;
51
+ }): Promise<{
52
+ ok: boolean;
53
+ messageId?: number;
54
+ reason?: string;
55
+ } | unknown>;
56
+ }
57
+ export interface BridgeInboundEvent {
58
+ threadId: string;
59
+ remoteAgent: string;
60
+ remoteAgentName?: string;
61
+ text: string;
62
+ subject?: string;
63
+ messageId?: string;
64
+ timestamp?: string;
65
+ }
66
+ export interface BridgeOutboundEvent {
67
+ threadId: string;
68
+ remoteAgent: string;
69
+ remoteAgentName?: string;
70
+ text: string;
71
+ messageId?: string;
72
+ timestamp?: string;
73
+ /** Optional preview of the agent reply being mirrored (e.g. truncated body). */
74
+ outcome?: string;
75
+ }
76
+ export interface TelegramBridgeOptions {
77
+ stateDir: string;
78
+ localAgentName: string;
79
+ config: TelegramBridgeConfig;
80
+ telegram: TelegramSink;
81
+ /** Optional override for the bindings filename (testing). */
82
+ bindingsFilename?: string;
83
+ /** Logger; defaults to console. */
84
+ log?: {
85
+ info: (msg: string) => void;
86
+ warn: (msg: string) => void;
87
+ error: (msg: string) => void;
88
+ };
89
+ }
90
+ export declare class TelegramBridge {
91
+ private readonly stateDir;
92
+ private readonly bindingsPath;
93
+ private readonly localAgentName;
94
+ private readonly cfg;
95
+ private readonly telegram;
96
+ private readonly log;
97
+ private bindings;
98
+ constructor(opts: TelegramBridgeOptions);
99
+ private loadBindings;
100
+ private persistBindings;
101
+ /** Public for inspection (dashboard, observability tab). */
102
+ getBindings(): TelegramBridgeBinding[];
103
+ /** Public for the observability tab to query a single binding. */
104
+ getBindingForThread(threadId: string): TelegramBridgeBinding | null;
105
+ /** Build the topic name for a thread — used at create time. Exposed for tests. */
106
+ buildTopicName(remoteAgentName: string, subject?: string): string;
107
+ /**
108
+ * Mirror an inbound threadline message into Telegram.
109
+ *
110
+ * Decision tree:
111
+ * 1. If the bridge config disallows mirroring AND no existing topic
112
+ * → no-op.
113
+ * 2. If a topic exists for this thread → post (subject to mirrorExisting).
114
+ * 3. Else (no existing topic) → check shouldAutoCreateTopic; if yes,
115
+ * create + post; else no-op.
116
+ *
117
+ * Failure-tolerant — never throws. Returns `{posted, topicId}` for
118
+ * observability.
119
+ */
120
+ mirrorInbound(evt: BridgeInboundEvent): Promise<{
121
+ posted: boolean;
122
+ topicId?: number;
123
+ reason?: string;
124
+ }>;
125
+ /**
126
+ * Mirror an outbound threadline message (sent via threadline_send) into
127
+ * the corresponding Telegram topic. Outbound mirroring requires an
128
+ * existing binding — outbound traffic alone never auto-creates topics
129
+ * (the user opted in via inbound or by manual action).
130
+ */
131
+ mirrorOutbound(evt: BridgeOutboundEvent): Promise<{
132
+ posted: boolean;
133
+ topicId?: number;
134
+ reason?: string;
135
+ }>;
136
+ private formatInboundBody;
137
+ private formatOutboundBody;
138
+ private postSafe;
139
+ }
140
+ //# sourceMappingURL=TelegramBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelegramBridge.d.ts","sourceRoot":"","sources":["../../src/threadline/TelegramBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAKtE,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,sBAAsB,CACpB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/D,WAAW,CACT,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GACvD,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC;IACvB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CAClG;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4C;IAChE,OAAO,CAAC,QAAQ,CAA4C;gBAEhD,IAAI,EAAE,qBAAqB;IAoBvC,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,eAAe;IAcvB,4DAA4D;IAC5D,WAAW,IAAI,qBAAqB,EAAE;IAItC,kEAAkE;IAClE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAMnE,kFAAkF;IAClF,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAajE;;;;;;;;;;;;OAYG;IACG,aAAa,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuD7G;;;;;OAKG;IACG,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAc/G,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,kBAAkB;YAUZ,QAAQ;CAYvB"}