@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,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace retirement preparation
|
|
3
|
+
* Zones: telegram, workspace identity, lifecycle
|
|
4
|
+
* Owns fail-closed protection composition, pressure selection, exact-intent admission,
|
|
5
|
+
* successor adoption, and gated mocked deletion with durable retirement commit.
|
|
6
|
+
*/
|
|
7
|
+
import type { TelegramTarget } from "./target.ts";
|
|
8
|
+
import type { TelegramTopicTargetStore, TelegramWorkspaceExternalProtectionEvidence, TelegramWorkspaceRetirementIntent, TelegramWorkspaceProtectionState, TelegramWorkspaceThreadBinding } from "./threads.ts";
|
|
9
|
+
import { type TelegramWorkspaceAdmissionLedger, type TelegramWorkspaceAdmissionScope, type TelegramWorkspaceDeletionPermit } from "./workspace-admission.ts";
|
|
10
|
+
export interface TelegramWorkspaceOperationGate {
|
|
11
|
+
runExclusive: <T>(operation: () => Promise<T>) => Promise<T>;
|
|
12
|
+
}
|
|
13
|
+
export declare function createTelegramWorkspaceOperationGate(): TelegramWorkspaceOperationGate;
|
|
14
|
+
export type TelegramWorkspaceOperationRunner = <T>(input: {
|
|
15
|
+
operationId: string;
|
|
16
|
+
operationKind: string;
|
|
17
|
+
scopes: readonly TelegramWorkspaceAdmissionScope[];
|
|
18
|
+
}, operation: () => Promise<T>) => Promise<T>;
|
|
19
|
+
export interface TelegramWorkspaceOperationRuntime extends TelegramWorkspaceOperationGate {
|
|
20
|
+
run: TelegramWorkspaceOperationRunner;
|
|
21
|
+
}
|
|
22
|
+
export declare function createTelegramWorkspaceOperationRuntime(input?: {
|
|
23
|
+
getWorkspaceAdmission?: () => Pick<TelegramWorkspaceAdmissionLedger, "acquireAdmission" | "releaseAdmission"> | undefined;
|
|
24
|
+
onReleaseError?: (error: unknown, operationKind: string) => void;
|
|
25
|
+
}): TelegramWorkspaceOperationRuntime;
|
|
26
|
+
export interface TelegramWorkspaceJournalProtectionCapture {
|
|
27
|
+
sources: TelegramWorkspaceJournalProtectionSource[];
|
|
28
|
+
complete: boolean;
|
|
29
|
+
}
|
|
30
|
+
interface TelegramWorkspaceJournalReader {
|
|
31
|
+
recoveryKey?: string;
|
|
32
|
+
journal: {
|
|
33
|
+
read: () => {
|
|
34
|
+
entries: readonly {
|
|
35
|
+
update: unknown;
|
|
36
|
+
}[];
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export declare function captureTelegramWorkspaceJournalProtectionSources(input: {
|
|
41
|
+
binding: TelegramWorkspaceThreadBinding;
|
|
42
|
+
resolveLeader: () => TelegramWorkspaceJournalReader | undefined;
|
|
43
|
+
createFollowerResolver: (journalBindingKey: string) => () => TelegramWorkspaceJournalReader | undefined;
|
|
44
|
+
withJournalReference?: <T>(binding: TelegramWorkspaceJournalReader, operation: () => T) => T;
|
|
45
|
+
discovery?: {
|
|
46
|
+
paths: readonly string[];
|
|
47
|
+
complete: boolean;
|
|
48
|
+
createResolver: (path: string) => () => TelegramWorkspaceJournalReader | undefined;
|
|
49
|
+
};
|
|
50
|
+
}): TelegramWorkspaceJournalProtectionCapture;
|
|
51
|
+
export type TelegramWorkspaceJournalProtectionSource = {
|
|
52
|
+
kind: "available";
|
|
53
|
+
scope: {
|
|
54
|
+
kind: "shared";
|
|
55
|
+
} | {
|
|
56
|
+
kind: "binding";
|
|
57
|
+
bindingKey: string;
|
|
58
|
+
journalBindingKey: string;
|
|
59
|
+
} | {
|
|
60
|
+
kind: "discovered";
|
|
61
|
+
path: string;
|
|
62
|
+
};
|
|
63
|
+
entries: readonly {
|
|
64
|
+
update: unknown;
|
|
65
|
+
}[];
|
|
66
|
+
} | {
|
|
67
|
+
kind: "unknown";
|
|
68
|
+
scope: {
|
|
69
|
+
kind: "shared";
|
|
70
|
+
} | {
|
|
71
|
+
kind: "binding";
|
|
72
|
+
bindingKey: string;
|
|
73
|
+
journalBindingKey: string;
|
|
74
|
+
} | {
|
|
75
|
+
kind: "discovered";
|
|
76
|
+
path: string;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
export declare function resolveTelegramWorkspaceAcceptedWorkProtection(input: {
|
|
80
|
+
binding: TelegramWorkspaceThreadBinding;
|
|
81
|
+
localAcceptedTargets: readonly {
|
|
82
|
+
chatId: number;
|
|
83
|
+
threadId?: number;
|
|
84
|
+
}[];
|
|
85
|
+
journalSources: readonly TelegramWorkspaceJournalProtectionSource[];
|
|
86
|
+
sourcesComplete: boolean;
|
|
87
|
+
}): TelegramWorkspaceProtectionState;
|
|
88
|
+
export type TelegramWorkspaceJournalPruneResult = {
|
|
89
|
+
kind: "committed";
|
|
90
|
+
binding: TelegramWorkspaceThreadBinding;
|
|
91
|
+
removedKeys: string[];
|
|
92
|
+
} | {
|
|
93
|
+
kind: "blocked";
|
|
94
|
+
reason: "incomplete-evidence" | "writer-not-quiescent" | "state-changed";
|
|
95
|
+
};
|
|
96
|
+
export declare function pruneTelegramWorkspaceJournalEvidence(input: {
|
|
97
|
+
store: Pick<TelegramTopicTargetStore, "commitWorkspaceJournalEvidence" | "persist">;
|
|
98
|
+
binding: TelegramWorkspaceThreadBinding;
|
|
99
|
+
capture: TelegramWorkspaceJournalProtectionCapture;
|
|
100
|
+
getJournalWriterProtection: (journalBindingKey: string) => TelegramWorkspaceProtectionState;
|
|
101
|
+
getLeaderEpoch: () => number | string | undefined;
|
|
102
|
+
getProfileKey: () => string;
|
|
103
|
+
admission: Pick<TelegramWorkspaceAdmissionLedger, "acquireAdmission" | "releaseAdmission">;
|
|
104
|
+
isCurrent?: () => boolean;
|
|
105
|
+
onAdmissionReleaseError?: (error: unknown) => void;
|
|
106
|
+
}): Promise<TelegramWorkspaceJournalPruneResult>;
|
|
107
|
+
export declare function captureTelegramWorkspaceExternalProtection(input: {
|
|
108
|
+
binding: TelegramWorkspaceThreadBinding;
|
|
109
|
+
getLiveOwnerProtection: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceProtectionState;
|
|
110
|
+
getLocalAcceptedTargets: (binding: TelegramWorkspaceThreadBinding) => {
|
|
111
|
+
targets: readonly TelegramTarget[];
|
|
112
|
+
complete: boolean;
|
|
113
|
+
};
|
|
114
|
+
captureJournalSources: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceJournalProtectionCapture;
|
|
115
|
+
getDeliveryAuthorityProtection?: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceProtectionState;
|
|
116
|
+
}): TelegramWorkspaceExternalProtectionEvidence;
|
|
117
|
+
export declare function createTelegramWorkspaceExternalProtectionCapture(deps: {
|
|
118
|
+
listFollowers: () => readonly {
|
|
119
|
+
target?: TelegramTarget;
|
|
120
|
+
}[];
|
|
121
|
+
getActiveTurnTarget: () => TelegramTarget | undefined;
|
|
122
|
+
getQueuedItems: () => readonly {
|
|
123
|
+
chatId: number;
|
|
124
|
+
target?: TelegramTarget;
|
|
125
|
+
}[];
|
|
126
|
+
resolveLeaderJournal: () => TelegramWorkspaceJournalReader | undefined;
|
|
127
|
+
createFollowerJournalResolver: (journalBindingKey: string) => () => TelegramWorkspaceJournalReader | undefined;
|
|
128
|
+
discoverFollowerJournals?: () => {
|
|
129
|
+
paths: readonly string[];
|
|
130
|
+
complete: boolean;
|
|
131
|
+
};
|
|
132
|
+
createJournalPathResolver?: (path: string) => () => TelegramWorkspaceJournalReader | undefined;
|
|
133
|
+
withJournalReference?: <T>(binding: TelegramWorkspaceJournalReader, operation: () => T) => T;
|
|
134
|
+
getJournalWriterProtection?: (journalBindingKey: string) => TelegramWorkspaceProtectionState;
|
|
135
|
+
getDeliveryAuthorityProtection?: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceProtectionState;
|
|
136
|
+
}): (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceExternalProtectionEvidence;
|
|
137
|
+
export type TelegramWorkspaceRetirementAdoption = {
|
|
138
|
+
kind: "adopted";
|
|
139
|
+
intent: TelegramWorkspaceRetirementIntent;
|
|
140
|
+
} | {
|
|
141
|
+
kind: "blocked";
|
|
142
|
+
reason: "intent-conflict" | "profile-changed" | "binding-changed" | "protection-changed" | "commit-rejected";
|
|
143
|
+
};
|
|
144
|
+
export declare function adoptTelegramWorkspaceRetirementIntent(input: {
|
|
145
|
+
store: Pick<TelegramTopicTargetStore, "captureWorkspaceSlotOccupancy" | "listWorkspaceBindings" | "listWorkspaceRetirementIntents" | "replaceWorkspaceRetirementIntent">;
|
|
146
|
+
intent: TelegramWorkspaceRetirementIntent;
|
|
147
|
+
getExternalProtection: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceExternalProtectionEvidence;
|
|
148
|
+
getLeaderEpoch: () => number | string | undefined;
|
|
149
|
+
getProfileKey: () => string;
|
|
150
|
+
isCurrent?: () => boolean;
|
|
151
|
+
runExclusive: <T>(operation: () => Promise<T>) => Promise<T>;
|
|
152
|
+
}): Promise<TelegramWorkspaceRetirementAdoption>;
|
|
153
|
+
export type TelegramWorkspaceRetirementExecution = {
|
|
154
|
+
kind: "retired";
|
|
155
|
+
bindingKey: string;
|
|
156
|
+
slot: string;
|
|
157
|
+
} | {
|
|
158
|
+
kind: "retained";
|
|
159
|
+
reason: "stale-intent" | "protection-changed" | "admission-active" | "fence-conflict" | "delete-unconfirmed" | "authority-changed" | "commit-rejected" | "fence-release-unconfirmed";
|
|
160
|
+
};
|
|
161
|
+
export type TelegramWorkspaceRetirementAbsence = "absent" | "present" | "unknown";
|
|
162
|
+
export declare function executeTelegramWorkspaceRetirement(input: {
|
|
163
|
+
store: Pick<TelegramTopicTargetStore, "captureWorkspaceSlotOccupancy" | "listWorkspaceBindings" | "listWorkspaceRetirementIntents" | "commitWorkspaceRetirement">;
|
|
164
|
+
admission: Pick<TelegramWorkspaceAdmissionLedger, "getOwner" | "read" | "acquireRetirementFence" | "adoptRetirementFence" | "issueDeletionPermit" | "confirmRetirementAbsence" | "releaseUnissuedRetirementFence" | "completeRetirementFence">;
|
|
165
|
+
intent: TelegramWorkspaceRetirementIntent;
|
|
166
|
+
getExternalProtection: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceExternalProtectionEvidence;
|
|
167
|
+
getLeaderEpoch: () => number | string | undefined;
|
|
168
|
+
getProfileKey: () => string;
|
|
169
|
+
isCurrent?: () => boolean;
|
|
170
|
+
runExclusive: <T>(operation: () => Promise<T>) => Promise<T>;
|
|
171
|
+
deleteForumTopic: (permit: TelegramWorkspaceDeletionPermit, body: {
|
|
172
|
+
chat_id: number;
|
|
173
|
+
message_thread_id: number;
|
|
174
|
+
}, options: {
|
|
175
|
+
maxAttempts: 1;
|
|
176
|
+
}) => Promise<unknown>;
|
|
177
|
+
confirmTargetAbsent?: (target: TelegramTarget & {
|
|
178
|
+
threadId: number;
|
|
179
|
+
}) => Promise<TelegramWorkspaceRetirementAbsence>;
|
|
180
|
+
}): Promise<TelegramWorkspaceRetirementExecution>;
|
|
181
|
+
export type TelegramWorkspaceRetirementPreparation = {
|
|
182
|
+
kind: "ready";
|
|
183
|
+
intent: TelegramWorkspaceRetirementIntent;
|
|
184
|
+
} | {
|
|
185
|
+
kind: "not-needed";
|
|
186
|
+
reason: "free-capacity";
|
|
187
|
+
} | {
|
|
188
|
+
kind: "blocked";
|
|
189
|
+
reason: "invalid-state" | "protected-capacity" | "state-changed" | "existing-intent-conflict" | "stale-intent";
|
|
190
|
+
};
|
|
191
|
+
export interface TelegramWorkspaceRetirementPreparationDeps {
|
|
192
|
+
store: Pick<TelegramTopicTargetStore, "captureWorkspaceSlotOccupancy" | "listWorkspaceBindings" | "listWorkspaceRetirementIntents" | "upsertWorkspaceRetirementIntent" | "removeWorkspaceRetirementIntent" | "persist">;
|
|
193
|
+
getExternalProtection: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceExternalProtectionEvidence;
|
|
194
|
+
getLeaderEpoch: () => number | string | undefined;
|
|
195
|
+
getProfileKey: () => string;
|
|
196
|
+
isCurrent?: () => boolean;
|
|
197
|
+
getNowMs?: () => number;
|
|
198
|
+
}
|
|
199
|
+
export declare function prepareTelegramWorkspaceRetirement(deps: TelegramWorkspaceRetirementPreparationDeps): Promise<TelegramWorkspaceRetirementPreparation>;
|
|
200
|
+
export type TelegramWorkspaceRetirementLifecycleResult = TelegramWorkspaceRetirementExecution | Extract<TelegramWorkspaceRetirementPreparation, {
|
|
201
|
+
kind: "not-needed";
|
|
202
|
+
}> | {
|
|
203
|
+
kind: "blocked";
|
|
204
|
+
stage: "preparation" | "adoption";
|
|
205
|
+
reason: string;
|
|
206
|
+
};
|
|
207
|
+
export declare function runTelegramWorkspaceRetirementLifecycle(input: {
|
|
208
|
+
store: TelegramWorkspaceRetirementPreparationDeps["store"] & Pick<TelegramTopicTargetStore, "replaceWorkspaceRetirementIntent" | "commitWorkspaceRetirement">;
|
|
209
|
+
getExternalProtection: (binding: TelegramWorkspaceThreadBinding) => TelegramWorkspaceExternalProtectionEvidence;
|
|
210
|
+
getLeaderEpoch: () => number | string | undefined;
|
|
211
|
+
getProfileKey: () => string;
|
|
212
|
+
isCurrent?: () => boolean;
|
|
213
|
+
getNowMs?: () => number;
|
|
214
|
+
runExclusive: <T>(operation: () => Promise<T>) => Promise<T>;
|
|
215
|
+
admission: Parameters<typeof executeTelegramWorkspaceRetirement>[0]["admission"];
|
|
216
|
+
deleteForumTopic: Parameters<typeof executeTelegramWorkspaceRetirement>[0]["deleteForumTopic"];
|
|
217
|
+
confirmTargetAbsent?: Parameters<typeof executeTelegramWorkspaceRetirement>[0]["confirmTargetAbsent"];
|
|
218
|
+
}): Promise<TelegramWorkspaceRetirementLifecycleResult>;
|
|
219
|
+
export {};
|