@llblab/pi-telegram 0.46.0 → 0.47.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/BACKLOG.md +0 -1
- package/CHANGELOG.md +8 -0
- package/README.md +2 -2
- package/dist/api/activity.d.ts +6 -0
- package/dist/api/activity.js +6 -0
- package/dist/api/commands.d.ts +6 -0
- package/dist/api/commands.js +6 -0
- package/dist/api/delivery.d.ts +6 -0
- package/dist/api/delivery.js +6 -0
- package/dist/api/inbound.d.ts +6 -0
- package/dist/api/inbound.js +6 -0
- package/dist/api/keyboard.d.ts +6 -0
- package/dist/api/keyboard.js +6 -0
- package/dist/api/outbound.d.ts +6 -0
- package/dist/api/outbound.js +6 -0
- package/dist/api/sections.d.ts +7 -0
- package/dist/api/sections.js +6 -0
- package/dist/api/status.d.ts +6 -0
- package/dist/api/status.js +6 -0
- package/dist/api/updates.d.ts +6 -0
- package/dist/api/updates.js +6 -0
- package/dist/api/voice.d.ts +6 -0
- package/dist/api/voice.js +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/lib/activity-verbosity.d.ts +52 -0
- package/dist/lib/activity-verbosity.js +596 -0
- package/dist/lib/activity.d.ts +220 -0
- package/dist/lib/activity.js +574 -0
- package/dist/lib/agent-messages.d.ts +28 -0
- package/dist/lib/agent-messages.js +86 -0
- package/dist/lib/bindings.d.ts +250 -0
- package/dist/lib/bindings.js +936 -0
- package/dist/lib/bus-api.d.ts +18 -0
- package/dist/lib/bus-api.js +254 -0
- package/dist/lib/bus-follower.d.ts +464 -0
- package/dist/lib/bus-follower.js +1686 -0
- package/dist/lib/bus-leader.d.ts +292 -0
- package/dist/lib/bus-leader.js +2242 -0
- package/dist/lib/bus-transport.d.ts +64 -0
- package/dist/lib/bus-transport.js +140 -0
- package/dist/lib/bus.d.ts +518 -0
- package/dist/lib/bus.js +2055 -0
- package/dist/lib/channel-posts.d.ts +170 -0
- package/dist/lib/channel-posts.js +611 -0
- package/dist/lib/command-templates.d.ts +70 -0
- package/dist/lib/command-templates.js +744 -0
- package/dist/lib/commands.d.ts +541 -0
- package/dist/lib/commands.js +1155 -0
- package/dist/lib/config.d.ts +252 -0
- package/dist/lib/config.js +889 -0
- package/dist/lib/delivery.d.ts +163 -0
- package/dist/lib/delivery.js +542 -0
- package/dist/lib/extension.d.ts +7 -0
- package/dist/lib/extension.js +1608 -0
- package/dist/lib/generative-app-worker.mjs +104 -0
- package/dist/lib/generative-apps.d.ts +212 -0
- package/dist/lib/generative-apps.js +1006 -0
- package/dist/lib/inbound.d.ts +91 -0
- package/dist/lib/inbound.js +502 -0
- package/dist/lib/journal.d.ts +665 -0
- package/dist/lib/journal.js +3701 -0
- package/dist/lib/keyboard.d.ts +23 -0
- package/dist/lib/keyboard.js +37 -0
- package/dist/lib/lifecycle.d.ts +157 -0
- package/dist/lib/lifecycle.js +395 -0
- package/dist/lib/locks.d.ts +164 -0
- package/dist/lib/locks.js +1208 -0
- package/dist/lib/logging.d.ts +50 -0
- package/dist/lib/logging.js +274 -0
- package/dist/lib/media.d.ts +181 -0
- package/dist/lib/media.js +602 -0
- package/dist/lib/menu-model.d.ts +217 -0
- package/dist/lib/menu-model.js +663 -0
- package/dist/lib/menu-queue.d.ts +37 -0
- package/dist/lib/menu-queue.js +408 -0
- package/dist/lib/menu-settings.d.ts +116 -0
- package/dist/lib/menu-settings.js +595 -0
- package/dist/lib/menu-status.d.ts +32 -0
- package/dist/lib/menu-status.js +112 -0
- package/dist/lib/menu-thinking.d.ts +29 -0
- package/dist/lib/menu-thinking.js +82 -0
- package/dist/lib/menu.d.ts +171 -0
- package/dist/lib/menu.js +323 -0
- package/dist/lib/model.d.ts +127 -0
- package/dist/lib/model.js +409 -0
- package/dist/lib/outbound-attachments.d.ts +241 -0
- package/dist/lib/outbound-attachments.js +639 -0
- package/dist/lib/outbound-buttons.d.ts +69 -0
- package/dist/lib/outbound-buttons.js +248 -0
- package/dist/lib/outbound-markup.d.ts +42 -0
- package/dist/lib/outbound-markup.js +678 -0
- package/dist/lib/outbound-voice.d.ts +55 -0
- package/dist/lib/outbound-voice.js +152 -0
- package/dist/lib/outbound.d.ts +185 -0
- package/dist/lib/outbound.js +516 -0
- package/dist/lib/ownership.d.ts +77 -0
- package/dist/lib/ownership.js +174 -0
- package/dist/lib/paths.d.ts +40 -0
- package/dist/lib/paths.js +94 -0
- package/dist/lib/pi.d.ts +72 -0
- package/dist/lib/pi.js +121 -0
- package/dist/lib/polling.d.ts +351 -0
- package/dist/lib/polling.js +1196 -0
- package/dist/lib/preview.d.ts +192 -0
- package/dist/lib/preview.js +614 -0
- package/dist/lib/prompt-templates.d.ts +24 -0
- package/dist/lib/prompt-templates.js +118 -0
- package/dist/lib/prompts.d.ts +57 -0
- package/dist/lib/prompts.js +167 -0
- package/dist/lib/queue.d.ts +766 -0
- package/dist/lib/queue.js +1965 -0
- package/dist/lib/recovery.d.ts +86 -0
- package/dist/lib/recovery.js +285 -0
- package/dist/lib/rendering.d.ts +20 -0
- package/dist/lib/rendering.js +983 -0
- package/dist/lib/replies.d.ts +214 -0
- package/dist/lib/replies.js +737 -0
- package/dist/lib/routing.d.ts +207 -0
- package/dist/lib/routing.js +2282 -0
- package/dist/lib/runtime.d.ts +172 -0
- package/dist/lib/runtime.js +402 -0
- package/dist/lib/sections.d.ts +165 -0
- package/dist/lib/sections.js +327 -0
- package/dist/lib/setup.d.ts +82 -0
- package/dist/lib/setup.js +150 -0
- package/dist/lib/skills.d.ts +8 -0
- package/dist/lib/skills.js +12 -0
- package/dist/lib/status.d.ts +442 -0
- package/dist/lib/status.js +1006 -0
- package/dist/lib/sync.d.ts +179 -0
- package/dist/lib/sync.js +782 -0
- package/dist/lib/target.d.ts +20 -0
- package/dist/lib/target.js +27 -0
- package/dist/lib/telegram-api.d.ts +541 -0
- package/dist/lib/telegram-api.js +1159 -0
- package/dist/lib/text-groups.d.ts +89 -0
- package/dist/lib/text-groups.js +317 -0
- package/dist/lib/thread-cleanup-manager.d.ts +288 -0
- package/dist/lib/thread-cleanup-manager.js +560 -0
- package/dist/lib/thread-display.d.ts +46 -0
- package/dist/lib/thread-display.js +257 -0
- package/dist/lib/thread-naming.d.ts +46 -0
- package/dist/lib/thread-naming.js +78 -0
- package/dist/lib/thread-reconciler.d.ts +239 -0
- package/dist/lib/thread-reconciler.js +644 -0
- package/dist/lib/threads.d.ts +621 -0
- package/dist/lib/threads.js +3679 -0
- package/dist/lib/time-injection.d.ts +15 -0
- package/dist/lib/time-injection.js +56 -0
- package/dist/lib/turns.d.ts +109 -0
- package/dist/lib/turns.js +500 -0
- package/dist/lib/updates.d.ts +1290 -0
- package/dist/lib/updates.js +3634 -0
- package/dist/lib/voice.d.ts +117 -0
- package/dist/lib/voice.js +174 -0
- package/dist/lib/workspace-admission.d.ts +264 -0
- package/dist/lib/workspace-admission.js +1136 -0
- package/dist/lib/workspace-retirement.d.ts +219 -0
- package/dist/lib/workspace-retirement.js +587 -0
- package/dist/lib/workspace-slots.d.ts +30 -0
- package/dist/lib/workspace-slots.js +54 -0
- package/dist/package.json +126 -0
- package/dist/pi-telegram/index.js +1 -0
- package/dist/skills/generated-control-surface/SKILL.md +107 -0
- package/dist/skills/generated-control-surface/references/capability-adapters.md +27 -0
- package/dist/skills/generated-control-surface/references/layout-and-state.md +37 -0
- package/dist/skills/generative-apps/SKILL.md +115 -0
- package/dist/skills/show-me/SKILL.md +166 -0
- package/dist/skills/show-me/references/telegram-surfaces.md +43 -0
- package/dist/skills/telegram-bridge/SKILL.md +129 -0
- package/dist/skills/telegram-bridge/references/configuration.md +15 -0
- package/dist/skills/telegram-bridge/references/delivery-and-threads.md +27 -0
- package/dist/skills/telegram-bridge/references/diagnosis.md +18 -0
- package/docs/architecture.md +1 -1
- package/docs/compact-matrix-literal.md +10 -3
- package/docs/generative-apps.md +15 -13
- package/docs/multi-instance-bus.md +4 -2
- package/docs/outbound.md +1 -1
- package/docs/public-api.md +2 -2
- package/lib/bindings.ts +89 -6
- package/lib/bus-follower.ts +7 -3
- package/lib/bus-leader.ts +44 -19
- package/lib/bus.ts +4 -1
- package/lib/commands.ts +2 -2
- package/lib/config.ts +14 -7
- package/lib/delivery.ts +38 -6
- package/lib/extension.ts +19 -0
- package/lib/generative-apps.ts +379 -13
- package/lib/menu-settings.ts +21 -5
- package/lib/outbound-markup.ts +16 -7
- package/lib/telegram-api.ts +12 -1
- package/lib/thread-display.ts +96 -18
- package/package.json +56 -13
- package/scripts/build-dist.mjs +44 -0
- package/scripts/measure-bus.mjs +8 -1
- package/scripts/measure-workspace.mjs +8 -1
- package/skills/generative-apps/SKILL.md +1 -1
- package/skills/telegram-bridge/SKILL.md +1 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram singleton lock helpers
|
|
3
|
+
* Zones: telegram ownership, filesystem, transport authority
|
|
4
|
+
* Owns extension-local owners.json access and Telegram bridge ownership semantics
|
|
5
|
+
*/
|
|
6
|
+
import { renameSync } from "node:fs";
|
|
7
|
+
export declare const TELEGRAM_LOCK_KEY = "default";
|
|
8
|
+
export declare const TELEGRAM_BUS_LEADER_STALE_HEARTBEAT_MS = 8000;
|
|
9
|
+
export declare const TELEGRAM_OWNERSHIP_CHECK_MS = 1000;
|
|
10
|
+
export declare const TELEGRAM_OWNERSHIP_REFRESH_MS = 2000;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the extension-local owner slot for the active Telegram profile.
|
|
13
|
+
* Default profile → default
|
|
14
|
+
* Named profile → the validated profile name
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveTelegramLockKey(activeProfile?: string): string;
|
|
17
|
+
export interface TelegramActiveProfileGetter {
|
|
18
|
+
getActiveProfileName: () => string | undefined;
|
|
19
|
+
}
|
|
20
|
+
export declare function createTelegramLockKeyResolver(activeProfile: TelegramActiveProfileGetter): () => string;
|
|
21
|
+
export interface TelegramLockEntry {
|
|
22
|
+
pid: number;
|
|
23
|
+
cwd?: string;
|
|
24
|
+
instanceId?: string;
|
|
25
|
+
heartbeatMs?: number;
|
|
26
|
+
leaderEpoch?: number | string;
|
|
27
|
+
runtimeGeneration?: number;
|
|
28
|
+
busSocketPath?: string;
|
|
29
|
+
busSecret?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface TelegramLockContext {
|
|
32
|
+
cwd: string;
|
|
33
|
+
}
|
|
34
|
+
export type TelegramLockState = {
|
|
35
|
+
kind: "inactive";
|
|
36
|
+
} | {
|
|
37
|
+
kind: "active-here";
|
|
38
|
+
lock: TelegramLockEntry;
|
|
39
|
+
} | {
|
|
40
|
+
kind: "active-elsewhere";
|
|
41
|
+
lock: TelegramLockEntry;
|
|
42
|
+
} | {
|
|
43
|
+
kind: "stale";
|
|
44
|
+
lock: TelegramLockEntry;
|
|
45
|
+
};
|
|
46
|
+
export interface TelegramLockAcquireOptions {
|
|
47
|
+
force?: boolean;
|
|
48
|
+
expectedOwner?: TelegramLockEntry;
|
|
49
|
+
election?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export type TelegramLockAcquireResult = {
|
|
52
|
+
ok: true;
|
|
53
|
+
lock: TelegramLockEntry;
|
|
54
|
+
replacedStale: boolean;
|
|
55
|
+
} | {
|
|
56
|
+
ok: false;
|
|
57
|
+
lock: TelegramLockEntry;
|
|
58
|
+
};
|
|
59
|
+
export interface TelegramLockRuntime<TContext extends TelegramLockContext> {
|
|
60
|
+
acquire: (ctx: TContext, options?: TelegramLockAcquireOptions) => TelegramLockAcquireResult;
|
|
61
|
+
release: () => TelegramLockState;
|
|
62
|
+
getState: () => TelegramLockState;
|
|
63
|
+
getStatusLabel: () => string;
|
|
64
|
+
getOwnedLeaderEpoch: () => number | string | undefined;
|
|
65
|
+
owns: (ctx?: TelegramLockContext) => boolean;
|
|
66
|
+
commitIfOwned: (commit: () => void) => boolean;
|
|
67
|
+
refresh: (ctx?: TelegramLockContext) => boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface TelegramLockOwnershipGuard<TContext extends TelegramLockContext> {
|
|
70
|
+
ownsContext: (ctx: TContext) => boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface TelegramLockContextStore<TContext extends TelegramLockContext> {
|
|
73
|
+
get: () => TContext | undefined;
|
|
74
|
+
}
|
|
75
|
+
export interface TelegramLockRuntimeOptions {
|
|
76
|
+
key?: string | (() => string | undefined);
|
|
77
|
+
locksPath?: string;
|
|
78
|
+
pid?: number;
|
|
79
|
+
isProcessAlive?: (pid: number) => boolean;
|
|
80
|
+
instanceId?: string;
|
|
81
|
+
busSocketPath?: string;
|
|
82
|
+
busSecret?: string;
|
|
83
|
+
getNowMs?: () => number;
|
|
84
|
+
mintLeaderEpoch?: () => number | string;
|
|
85
|
+
runtimeGeneration?: number;
|
|
86
|
+
staleHeartbeatMs?: number;
|
|
87
|
+
}
|
|
88
|
+
export declare function readLocks(path?: string): Record<string, unknown>;
|
|
89
|
+
export interface TelegramRenameRetryOptions {
|
|
90
|
+
rename?: typeof renameSync;
|
|
91
|
+
attempts?: number;
|
|
92
|
+
retryDelayMs?: number;
|
|
93
|
+
}
|
|
94
|
+
/** Rename one Telegram runtime artifact with bounded Windows sharing retries. */
|
|
95
|
+
export declare function renameTelegramPathWithRetry(sourcePath: string, destinationPath: string, options?: TelegramRenameRetryOptions): boolean;
|
|
96
|
+
export interface TelegramFileTransactionOptions {
|
|
97
|
+
recoveryRename?: typeof renameSync;
|
|
98
|
+
publishRename?: typeof renameSync;
|
|
99
|
+
attempts?: number;
|
|
100
|
+
retryDelayMs?: number;
|
|
101
|
+
}
|
|
102
|
+
export declare function withTelegramFileTransaction<T>(transactionPath: string, operation: () => T, options?: TelegramFileTransactionOptions): T;
|
|
103
|
+
export declare function writeLocks(path: string, locks: Record<string, unknown>): void;
|
|
104
|
+
export declare function parseTelegramLockEntry(value: unknown): TelegramLockEntry | undefined;
|
|
105
|
+
export declare function isProcessAlive(pid: number): boolean;
|
|
106
|
+
export declare function formatTelegramLockEntry(lock: TelegramLockEntry): string;
|
|
107
|
+
export declare function createTelegramLockRuntime<TContext extends TelegramLockContext>(options?: TelegramLockRuntimeOptions): TelegramLockRuntime<TContext>;
|
|
108
|
+
export declare function createTelegramLockOwnershipGuard<TContext extends TelegramLockContext>(lock: TelegramLockRuntime<TContext>): TelegramLockOwnershipGuard<TContext>;
|
|
109
|
+
export declare function createTelegramDirectDeliveryOwnershipChecker<TContext extends TelegramLockContext>(deps: {
|
|
110
|
+
lock: TelegramLockRuntime<TContext>;
|
|
111
|
+
contextStore: TelegramLockContextStore<TContext>;
|
|
112
|
+
}): () => boolean;
|
|
113
|
+
export interface TelegramLockedPollingStartOptions {
|
|
114
|
+
force?: boolean;
|
|
115
|
+
forceFreshLeaderThread?: boolean;
|
|
116
|
+
requestedThreadName?: string;
|
|
117
|
+
election?: {
|
|
118
|
+
expectedOwner?: TelegramLockEntry;
|
|
119
|
+
};
|
|
120
|
+
onAcquired?: () => Promise<void> | void;
|
|
121
|
+
}
|
|
122
|
+
export type TelegramLockedPollingStartResult = {
|
|
123
|
+
ok: true;
|
|
124
|
+
message?: string;
|
|
125
|
+
canTakeover?: false;
|
|
126
|
+
} | {
|
|
127
|
+
ok: false;
|
|
128
|
+
message: string;
|
|
129
|
+
canTakeover?: boolean;
|
|
130
|
+
owner?: string;
|
|
131
|
+
};
|
|
132
|
+
export interface TelegramLockedPollingRuntime<TContext extends TelegramLockContext> {
|
|
133
|
+
start: (ctx: TContext, options?: TelegramLockedPollingStartOptions) => Promise<TelegramLockedPollingStartResult>;
|
|
134
|
+
stop: () => Promise<string>;
|
|
135
|
+
suspend: () => Promise<void>;
|
|
136
|
+
onPersistentConflict: (ctx: TContext, count: number) => Promise<void>;
|
|
137
|
+
onSessionStart: (_event: unknown, ctx: TContext) => Promise<void>;
|
|
138
|
+
registerFollowerWithOwner?: (ctx: TContext, owner: TelegramLockEntry) => boolean | undefined | Promise<boolean | undefined>;
|
|
139
|
+
restoreFollowerWithOwner?: (ctx: TContext, owner: TelegramLockEntry) => boolean | undefined | Promise<boolean | undefined>;
|
|
140
|
+
stopFollowerRegistration?: () => void;
|
|
141
|
+
}
|
|
142
|
+
export interface TelegramLockedPollingRuntimeDeps<TContext extends TelegramLockContext> {
|
|
143
|
+
lock: TelegramLockRuntime<TContext>;
|
|
144
|
+
hasBotToken: () => boolean;
|
|
145
|
+
getBotTokenDiagnostic?: () => string | undefined;
|
|
146
|
+
canStartPolling?: (ctx: TContext) => boolean;
|
|
147
|
+
isContextCurrent?: (ctx: TContext) => boolean;
|
|
148
|
+
formatStartBlockedMessage?: (ctx: TContext) => string;
|
|
149
|
+
startPolling: (ctx: TContext, options?: TelegramLockedPollingStartOptions) => void | Promise<void>;
|
|
150
|
+
stopPolling: () => Promise<void>;
|
|
151
|
+
registerFollowerWithOwner?: (ctx: TContext, owner: TelegramLockEntry) => boolean | undefined | Promise<boolean | undefined>;
|
|
152
|
+
restoreFollowerWithOwner?: (ctx: TContext, owner: TelegramLockEntry) => boolean | undefined | Promise<boolean | undefined>;
|
|
153
|
+
stopFollowerRegistration?: () => void;
|
|
154
|
+
onTransportAvailabilityChanged?: () => void;
|
|
155
|
+
transportMonitor?: {
|
|
156
|
+
start: (ctx: TContext) => void;
|
|
157
|
+
stop: () => void;
|
|
158
|
+
};
|
|
159
|
+
updateStatus: (ctx: TContext) => void;
|
|
160
|
+
recordRuntimeEvent?: (category: string, error: unknown, details?: Record<string, unknown>) => void;
|
|
161
|
+
ownershipCheckMs?: number;
|
|
162
|
+
ownershipRefreshMs?: number;
|
|
163
|
+
}
|
|
164
|
+
export declare function createTelegramLockedPollingRuntime<TContext extends TelegramLockContext>(deps: TelegramLockedPollingRuntimeDeps<TContext>): TelegramLockedPollingRuntime<TContext>;
|