instar 1.3.1339 → 1.3.1341
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/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +323 -15
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +15 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/BackupManager.d.ts.map +1 -1
- package/dist/core/BackupManager.js +8 -0
- package/dist/core/BackupManager.js.map +1 -1
- package/dist/core/FileClassifier.d.ts.map +1 -1
- package/dist/core/FileClassifier.js +6 -0
- package/dist/core/FileClassifier.js.map +1 -1
- package/dist/core/MachineIdentity.d.ts.map +1 -1
- package/dist/core/MachineIdentity.js +3 -0
- package/dist/core/MachineIdentity.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +58 -2
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +6 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/keyMaterialPaths.d.ts +73 -0
- package/dist/core/keyMaterialPaths.d.ts.map +1 -0
- package/dist/core/keyMaterialPaths.js +139 -0
- package/dist/core/keyMaterialPaths.js.map +1 -0
- package/dist/core/types.d.ts +20 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/messaging/TelegramAdapter.d.ts +19 -0
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js +47 -9
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginAwareness.d.ts +2 -0
- package/dist/messaging/telegram-origin/OriginAwareness.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginAwareness.js +4 -0
- package/dist/messaging/telegram-origin/OriginAwareness.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginConfig.d.ts +4 -0
- package/dist/messaging/telegram-origin/OriginConfig.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginConfig.js +26 -0
- package/dist/messaging/telegram-origin/OriginConfig.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginForwardToHolder.d.ts +236 -0
- package/dist/messaging/telegram-origin/OriginForwardToHolder.d.ts.map +1 -0
- package/dist/messaging/telegram-origin/OriginForwardToHolder.js +337 -0
- package/dist/messaging/telegram-origin/OriginForwardToHolder.js.map +1 -0
- package/dist/messaging/telegram-origin/OriginMesh.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginMesh.js +17 -2
- package/dist/messaging/telegram-origin/OriginMesh.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginMeshRelay.d.ts +7 -0
- package/dist/messaging/telegram-origin/OriginMeshRelay.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginMeshRelay.js +15 -15
- package/dist/messaging/telegram-origin/OriginMeshRelay.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginStore.d.ts +38 -1
- package/dist/messaging/telegram-origin/OriginStore.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginStore.js +8 -1
- package/dist/messaging/telegram-origin/OriginStore.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginStore.worker.js +1 -1
- package/dist/messaging/telegram-origin/OriginStore.worker.js.map +1 -1
- package/dist/messaging/telegram-origin/OriginStoreBackend.d.ts +58 -1
- package/dist/messaging/telegram-origin/OriginStoreBackend.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/OriginStoreBackend.js +209 -23
- package/dist/messaging/telegram-origin/OriginStoreBackend.js.map +1 -1
- package/dist/messaging/telegram-origin/StoreTypes.d.ts +24 -0
- package/dist/messaging/telegram-origin/StoreTypes.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginBoot.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginBoot.js +7 -0
- package/dist/messaging/telegram-origin/TelegramOriginBoot.js.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.d.ts +49 -7
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.js +178 -2
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.js.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginService.d.ts +8 -0
- package/dist/messaging/telegram-origin/TelegramOriginService.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginService.js +19 -3
- package/dist/messaging/telegram-origin/TelegramOriginService.js.map +1 -1
- package/dist/messaging/telegram-origin/types.d.ts +12 -0
- package/dist/messaging/telegram-origin/types.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/types.js +6 -0
- package/dist/messaging/telegram-origin/types.js.map +1 -1
- package/dist/monitoring/A2ARedeliverySentinel.d.ts +145 -6
- package/dist/monitoring/A2ARedeliverySentinel.d.ts.map +1 -1
- package/dist/monitoring/A2ARedeliverySentinel.js +451 -11
- package/dist/monitoring/A2ARedeliverySentinel.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +7 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/fileRoutes.d.ts +26 -0
- package/dist/server/fileRoutes.d.ts.map +1 -1
- package/dist/server/fileRoutes.js +204 -56
- package/dist/server/fileRoutes.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +103 -9
- package/dist/server/routes.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +128 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/dist/threadline/A2ADeliveryTracker.d.ts +55 -1
- package/dist/threadline/A2ADeliveryTracker.d.ts.map +1 -1
- package/dist/threadline/A2ADeliveryTracker.js +97 -5
- package/dist/threadline/A2ADeliveryTracker.js.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts +15 -0
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.js +3 -0
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
- package/dist/threadline/client/ThreadlineClient.d.ts +47 -0
- package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -1
- package/dist/threadline/client/ThreadlineClient.js +93 -0
- package/dist/threadline/client/ThreadlineClient.js.map +1 -1
- package/dist/threadline/mcp-http-client.d.ts.map +1 -1
- package/dist/threadline/mcp-http-client.js +2 -0
- package/dist/threadline/mcp-http-client.js.map +1 -1
- package/dist/threadline/peerDark.d.ts +165 -0
- package/dist/threadline/peerDark.d.ts.map +1 -0
- package/dist/threadline/peerDark.js +204 -0
- package/dist/threadline/peerDark.js.map +1 -0
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +64 -64
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +7 -1
- package/upgrades/1.3.1340.md +32 -0
- package/upgrades/1.3.1341.md +94 -0
- package/upgrades/side-effects/a2a-peer-dark-reporting.md +149 -0
- package/upgrades/side-effects/files-never-serve-key-material.md +399 -0
- package/upgrades/side-effects/telegram-origin-forward-to-holder.md +151 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { ORIGIN_MESH_PROTOCOL } from './OriginMesh.js';
|
|
2
|
+
import { OriginSendPolicyRefusal } from './OriginSendPolicy.js';
|
|
3
|
+
export const HOLD_REASON_LEASE_NOT_HELD = 'lease-not-held';
|
|
4
|
+
/** Execution owner recorded on a hold taken while NO holder could be named.
|
|
5
|
+
* Never a real machine, so recovery always re-prepares for the holder it finds. */
|
|
6
|
+
export const UNRESOLVED_LEASE_HOLDER = 'lease-holder-unresolved';
|
|
7
|
+
export const FORWARD_SETTLE_TIMEOUT_MS = 15_000;
|
|
8
|
+
/** §4.2 — the reply request runs settle + ONE forward attempt inside this
|
|
9
|
+
* budget (≥ the holder's 10 s execute + 5 s margin, both RPCs sharing it),
|
|
10
|
+
* well under the route's 120 s so a caller never times out before the hold
|
|
11
|
+
* is written and re-runs with a NEW operation id. */
|
|
12
|
+
export const FORWARD_ATTEMPT_BUDGET_MS = 30_000;
|
|
13
|
+
/** Per-RPC ceiling so `capabilities` + `submit` fit the attempt budget. */
|
|
14
|
+
export const FORWARD_RPC_TIMEOUT_MS = 15_000;
|
|
15
|
+
/** §4.2 — the remaining attempts run from the recovery tick: a typed refusal
|
|
16
|
+
* that proves non-admission is retried 2× more at +10 s and +20 s, re-resolving
|
|
17
|
+
* the holder each time, then the 15-minute schedule takes over. */
|
|
18
|
+
export const FORWARD_LADDER = Object.freeze({ delaysMs: Object.freeze([10_000, 20_000]) });
|
|
19
|
+
export function nextLadderState(previous, now, delays = FORWARD_LADDER.delaysMs) {
|
|
20
|
+
const attempts = previous ? previous.attempts + 1 : 0;
|
|
21
|
+
return { attempts, nextAt: attempts < delays.length ? now + delays[attempts] : null };
|
|
22
|
+
}
|
|
23
|
+
/** The fixed user template, sent THROUGH the holder (§4.2). Never free text. */
|
|
24
|
+
export function heldForwardNoticeText(holderNickname) {
|
|
25
|
+
return `I have your message; my reply is delayed while it is routed through ${holderNickname}.`;
|
|
26
|
+
}
|
|
27
|
+
/** §4.2 `lease-settling` — the three states in which a lease read is not yet
|
|
28
|
+
* an answer: no holder named; self named but `holdsLease()` false (the seconds
|
|
29
|
+
* after a respawn); a named holder whose lease has expired (`currentHolder()`
|
|
30
|
+
* has no expiry check of its own). */
|
|
31
|
+
export function classifyLeaseRoute(view) {
|
|
32
|
+
let holder = null;
|
|
33
|
+
try {
|
|
34
|
+
holder = view.leaseHolder();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
holder = null;
|
|
38
|
+
}
|
|
39
|
+
let held = false;
|
|
40
|
+
try {
|
|
41
|
+
held = view.holdsLease();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
held = false;
|
|
45
|
+
}
|
|
46
|
+
if (held)
|
|
47
|
+
return { kind: 'self' };
|
|
48
|
+
if (!holder)
|
|
49
|
+
return { kind: 'settling', reason: 'no-holder' };
|
|
50
|
+
if (holder === view.selfMachineId)
|
|
51
|
+
return { kind: 'settling', reason: 'self-unconfirmed' };
|
|
52
|
+
let healthy = false;
|
|
53
|
+
try {
|
|
54
|
+
healthy = view.isHolderHealthy(holder);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
healthy = false;
|
|
58
|
+
}
|
|
59
|
+
if (!healthy)
|
|
60
|
+
return { kind: 'settling', reason: 'holder-unhealthy' };
|
|
61
|
+
return { kind: 'peer', holder };
|
|
62
|
+
}
|
|
63
|
+
/** Re-read the lease with backoff for at most `timeoutMs` BEFORE writing
|
|
64
|
+
* anything. A window that never settles is the ladder's problem, not a row. */
|
|
65
|
+
export async function settleLeaseRoute(view, deps) {
|
|
66
|
+
const timeoutMs = deps.timeoutMs ?? FORWARD_SETTLE_TIMEOUT_MS;
|
|
67
|
+
const started = deps.now();
|
|
68
|
+
let delay = 250;
|
|
69
|
+
let last = classifyLeaseRoute(view);
|
|
70
|
+
while (last.kind === 'settling') {
|
|
71
|
+
const elapsed = deps.now() - started;
|
|
72
|
+
if (elapsed >= timeoutMs)
|
|
73
|
+
return { kind: 'unsettled', reason: last.reason };
|
|
74
|
+
await deps.sleep(Math.min(delay, Math.max(1, timeoutMs - elapsed)));
|
|
75
|
+
delay = Math.min(delay * 2, 2000);
|
|
76
|
+
last = classifyLeaseRoute(view);
|
|
77
|
+
}
|
|
78
|
+
return last;
|
|
79
|
+
}
|
|
80
|
+
/** Refusals after which re-resolving the holder and trying again is sound:
|
|
81
|
+
* the holder is not (or no longer) the lease holder, is booting, or could not
|
|
82
|
+
* be reached BEFORE a submit was sent. An `outcome-unknown` is never in it. */
|
|
83
|
+
const RETRYABLE_REASONS = new Set(['not-lease-holder', 'origin-peer-unreachable', 'origin-runtime-unavailable', 'origin-peer-protocol-unavailable',
|
|
84
|
+
'execution-owner-mismatch', 'origin-credential-owner-required', 'origin-peer-unavailable']);
|
|
85
|
+
/** The single holder transport: `capabilities` then `submit`, never throwing.
|
|
86
|
+
* Shared by the request-time forward, the recovery re-forward and
|
|
87
|
+
* `relayOriginBot`, so the three cannot drift on what a refusal means. */
|
|
88
|
+
export async function submitOriginToHolder(input) {
|
|
89
|
+
const base = { type: 'telegram-origin', protocol: ORIGIN_MESH_PROTOCOL };
|
|
90
|
+
let capabilities;
|
|
91
|
+
try {
|
|
92
|
+
capabilities = await input.send({ ...base, action: 'capabilities' });
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return { ok: false, reason: 'origin-peer-unreachable', outcome: 'held', retryable: true };
|
|
96
|
+
}
|
|
97
|
+
const cap = capabilities.result;
|
|
98
|
+
if (!capabilities.ok && capabilities.reason === 'origin-runtime-unavailable')
|
|
99
|
+
return { ok: false, reason: 'origin-runtime-unavailable', outcome: 'held', retryable: true };
|
|
100
|
+
if (!capabilities.ok || !cap?.ok || cap.protocol !== ORIGIN_MESH_PROTOCOL || !cap.credentialOwner || typeof cap.accountId !== 'string' ||
|
|
101
|
+
typeof cap.executionOwnerMachineId !== 'string' || !cap.executionOwnerMachineId || cap.executionOwnerMachineId.length > 128) {
|
|
102
|
+
return { ok: false, reason: 'origin-peer-protocol-unavailable', outcome: 'held', retryable: true };
|
|
103
|
+
}
|
|
104
|
+
if (input.expectedOwner !== undefined && cap.executionOwnerMachineId !== input.expectedOwner) {
|
|
105
|
+
return { ok: false, reason: 'execution-owner-mismatch', outcome: 'held', retryable: true };
|
|
106
|
+
}
|
|
107
|
+
let result;
|
|
108
|
+
try {
|
|
109
|
+
result = await input.send({ ...base, action: 'submit', operation: input.operation });
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return { ok: false, reason: 'origin-relay-acceptance-unknown', outcome: 'outcome-unknown', retryable: false };
|
|
113
|
+
}
|
|
114
|
+
const response = result.result;
|
|
115
|
+
const policyRefusal = response?.policyRefusal;
|
|
116
|
+
if (policyRefusal && policyRefusal.ok === false) {
|
|
117
|
+
return { ok: false, reason: response?.reason ?? 'send-policy-refused', outcome: 'held', retryable: false, policyRefusal };
|
|
118
|
+
}
|
|
119
|
+
if (result.ok && response?.ok && response.originId === input.operation.record.originId &&
|
|
120
|
+
Number.isSafeInteger(response.messageId) && Number(response.messageId) > 0 && response.originReceiptConfirmed === true) {
|
|
121
|
+
return { ok: true, messageId: response.messageId, deliveryMachineId: typeof response.deliveryMachineId === 'string' ? response.deliveryMachineId : cap.executionOwnerMachineId,
|
|
122
|
+
receiptJson: JSON.stringify({ messageId: response.messageId, deliveryMachineId: response.deliveryMachineId ?? cap.executionOwnerMachineId,
|
|
123
|
+
forwardedFromMachine: input.operation.record.originMachineId, originId: response.originId }) };
|
|
124
|
+
}
|
|
125
|
+
const reason = response?.reason ?? (result.ok ? 'origin-relay-acceptance-unknown' : result.reason ?? 'origin-relay-acceptance-unknown');
|
|
126
|
+
// A refusal that names OUR operation id came from inside the holder's
|
|
127
|
+
// execution (its `admit` ran, or its outbox/credential refused AFTER it):
|
|
128
|
+
// the holder's own recovery owns that row now. Treat it exactly like an
|
|
129
|
+
// unknown outcome — ask that holder's `receipt`, never forward again.
|
|
130
|
+
if (response?.ok === false && response.operationId === input.operation.record.operationId) {
|
|
131
|
+
return { ok: false, reason, outcome: 'outcome-unknown', retryable: false, admittedAtHolder: true };
|
|
132
|
+
}
|
|
133
|
+
// A dispatcher-level refusal (no handler, peer booting) never reached the
|
|
134
|
+
// holder's outbox: it is a definite, retryable refusal, not an unknown.
|
|
135
|
+
const dispatcherRefusal = !result.ok && response === undefined;
|
|
136
|
+
const outcome = dispatcherRefusal ? 'held'
|
|
137
|
+
: response?.outcome === 'held' || response?.outcome === 'known-failed' ? response.outcome
|
|
138
|
+
: response?.ok === false && response.outcome === undefined && typeof response.reason === 'string' ? 'held' : 'outcome-unknown';
|
|
139
|
+
return { ok: false, reason, outcome,
|
|
140
|
+
retryable: outcome !== 'outcome-unknown' && (response?.retryable === true || RETRYABLE_REASONS.has(reason) || dispatcherRefusal) };
|
|
141
|
+
}
|
|
142
|
+
/** §4.1 + §4.2 — settle, ONE forward attempt, then the durable hold. The
|
|
143
|
+
* remaining ladder steps belong to the recovery tick (`recoverForwardedHold`). */
|
|
144
|
+
export async function forwardReplyToHolder(deps, input) {
|
|
145
|
+
const delays = deps.ladder?.delaysMs ?? FORWARD_LADDER.delaysMs;
|
|
146
|
+
const audit = (row) => { try {
|
|
147
|
+
deps.audit?.({ ts: deps.now(), topicId: input.topicId, ...row });
|
|
148
|
+
}
|
|
149
|
+
catch { /* audit is observability only */ } };
|
|
150
|
+
const settled = await settleLeaseRoute(deps.lease, { sleep: deps.sleep, now: deps.now, timeoutMs: deps.settleTimeoutMs });
|
|
151
|
+
if (settled.kind === 'self')
|
|
152
|
+
return { kind: 'local' };
|
|
153
|
+
let operation = null;
|
|
154
|
+
let lastHolder = null;
|
|
155
|
+
let lastAttempt = 'unsettled';
|
|
156
|
+
let lastReason = settled.kind === 'unsettled' ? `lease-settling-${settled.reason}` : 'not-attempted';
|
|
157
|
+
if (settled.kind === 'unsettled')
|
|
158
|
+
audit({ phase: 'settle-timeout', reason: settled.reason });
|
|
159
|
+
else {
|
|
160
|
+
const holder = settled.holder;
|
|
161
|
+
operation = await deps.prepare(holder, input);
|
|
162
|
+
lastHolder = holder;
|
|
163
|
+
const result = await deps.submit(holder, operation);
|
|
164
|
+
if (result.ok) {
|
|
165
|
+
audit({ phase: 'sent', attempt: 0, holder, operationId: operation.record.operationId, messageId: result.messageId });
|
|
166
|
+
return { kind: 'sent', messageId: result.messageId, holder, operationId: operation.record.operationId };
|
|
167
|
+
}
|
|
168
|
+
if (result.policyRefusal)
|
|
169
|
+
throw new OriginSendPolicyRefusal(result.policyRefusal, operation.record.operationId);
|
|
170
|
+
lastReason = result.reason;
|
|
171
|
+
audit({ phase: 'refused', attempt: 0, holder, operationId: operation.record.operationId, reason: result.reason, outcome: result.outcome, retryable: result.retryable });
|
|
172
|
+
lastAttempt = result.outcome === 'outcome-unknown' ? 'outcome-unknown' : result.reason === 'origin-peer-unreachable' ? 'unreachable' : 'refused';
|
|
173
|
+
}
|
|
174
|
+
// forward-to-holder-failed → the durable hold.
|
|
175
|
+
if (!operation)
|
|
176
|
+
operation = await deps.prepare(lastHolder ?? UNRESOLVED_LEASE_HOLDER, input);
|
|
177
|
+
const now = deps.now();
|
|
178
|
+
const detail = { kind: 'forward-to-holder', lastAttempt, machineId: lastHolder, topicId: input.topicId, chatId: input.chatId,
|
|
179
|
+
text: input.text, ...(input.silent === undefined ? {} : { silent: input.silent }), ...(input.formatMode === undefined ? {} : { formatMode: input.formatMode }),
|
|
180
|
+
...(input.kindMetadata === undefined ? {} : { kindMetadata: input.kindMetadata }), reason: lastReason, at: now, noticeDelivered: false,
|
|
181
|
+
ladder: nextLadderState(undefined, now, delays) };
|
|
182
|
+
const recorded = await deps.hold(operation, detail);
|
|
183
|
+
audit({ phase: recorded === false ? 'hold-not-recorded' : 'held', holder: lastHolder, operationId: operation.record.operationId, lastAttempt, reason: lastReason, ladderNextAt: detail.ladder.nextAt });
|
|
184
|
+
let noticeDelivered = false;
|
|
185
|
+
// The notice is never attempted at a holder whose last answer was unknown:
|
|
186
|
+
// that machine may be mid-send of the very reply the notice would precede.
|
|
187
|
+
if (deps.notify && lastHolder && lastAttempt !== 'outcome-unknown') {
|
|
188
|
+
try {
|
|
189
|
+
noticeDelivered = await deps.notify(lastHolder, input.topicId);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
noticeDelivered = false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
audit({ phase: noticeDelivered ? 'notice-sent' : 'notice-not-sent', holder: lastHolder, operationId: operation.record.operationId });
|
|
196
|
+
return { kind: 'held', operationId: operation.record.operationId, holder: lastHolder, lastAttempt, reason: lastReason, noticeDelivered };
|
|
197
|
+
}
|
|
198
|
+
function attemptKind(result) {
|
|
199
|
+
return result.outcome === 'outcome-unknown' ? 'outcome-unknown' : result.reason === 'origin-peer-unreachable' ? 'unreachable' : 'refused';
|
|
200
|
+
}
|
|
201
|
+
/** §4.2 — recovery re-forwards the SAME operation while the holder is
|
|
202
|
+
* unchanged. An attempt the holder never confirmed is resolved at THAT
|
|
203
|
+
* holder's receipt first, never re-sent blind. On a holder change the old
|
|
204
|
+
* record is durably SUPERSEDED (linked by operation id) and a NEW record bound
|
|
205
|
+
* to the new owner is prepared and forwarded — a holder-side `submit` refuses
|
|
206
|
+
* a record owned by another machine before `authorize`, so the old record can
|
|
207
|
+
* never be replayed at the new owner. Each failed step advances the ladder. */
|
|
208
|
+
export async function recoverForwardedHold(deps, row, operation) {
|
|
209
|
+
const operationId = row.operationId;
|
|
210
|
+
const delays = deps.ladder?.delaysMs ?? FORWARD_LADDER.delaysMs;
|
|
211
|
+
const audit = (r) => { try {
|
|
212
|
+
deps.audit?.({ ts: deps.now(), phase: 'recovery', operationId, topicId: row.destination.topicId, ...r });
|
|
213
|
+
}
|
|
214
|
+
catch { /* observability only */ } };
|
|
215
|
+
const raw = row.holdDetail;
|
|
216
|
+
const detail = raw && raw.kind === 'forward-to-holder' && typeof raw.text === 'string' && typeof raw.chatId === 'string' && Number.isSafeInteger(raw.topicId)
|
|
217
|
+
? { ...raw, ladder: raw.ladder && Number.isSafeInteger(raw.ladder.attempts) ? raw.ladder : { attempts: delays.length, nextAt: null } } : null;
|
|
218
|
+
const retain = async (next) => {
|
|
219
|
+
if (!detail)
|
|
220
|
+
return;
|
|
221
|
+
await deps.rehold(operationId, { ...detail, ...next, at: deps.now(), ladder: nextLadderState(detail.ladder, deps.now(), delays) });
|
|
222
|
+
};
|
|
223
|
+
if (detail?.lastAttempt === 'outcome-unknown' && detail.machineId) {
|
|
224
|
+
const answer = await deps.receipt(detail.machineId, operationId);
|
|
225
|
+
if (answer.state === 'accepted') {
|
|
226
|
+
await deps.resolve(operationId, detail.machineId, answer.receiptJson);
|
|
227
|
+
audit({ outcome: 'resolved-by-receipt', machineId: detail.machineId });
|
|
228
|
+
return 'resolved';
|
|
229
|
+
}
|
|
230
|
+
if (answer.state === 'unreachable' || answer.state === 'owned-by-holder') {
|
|
231
|
+
await retain({});
|
|
232
|
+
audit({ outcome: answer.state === 'unreachable' ? 'retained-outcome-unknown' : 'retained-owned-by-holder', machineId: detail.machineId });
|
|
233
|
+
return 'retained';
|
|
234
|
+
}
|
|
235
|
+
// Definitely not accepted there: safe to forward again.
|
|
236
|
+
audit({ outcome: 'outcome-unknown-cleared', machineId: detail.machineId });
|
|
237
|
+
}
|
|
238
|
+
const route = classifyLeaseRoute(deps.lease);
|
|
239
|
+
if (route.kind === 'settling') {
|
|
240
|
+
await retain({ reason: `lease-settling-${route.reason}` });
|
|
241
|
+
audit({ outcome: 'retained-settling', reason: route.reason });
|
|
242
|
+
return 'retained';
|
|
243
|
+
}
|
|
244
|
+
if (detail?.lastAttempt === 'local-sent') {
|
|
245
|
+
// A local send was STARTED and its resolve did not land (crash, store
|
|
246
|
+
// refusal). The user may already have it: never send again; the row rides to
|
|
247
|
+
// its deadline and expires with the honest "may or may not" wording.
|
|
248
|
+
audit({ outcome: 'retained-local-sent-unconfirmed' });
|
|
249
|
+
return 'retained';
|
|
250
|
+
}
|
|
251
|
+
if (route.kind === 'self') {
|
|
252
|
+
if (!detail) {
|
|
253
|
+
audit({ outcome: 'retained-no-detail' });
|
|
254
|
+
return 'retained';
|
|
255
|
+
}
|
|
256
|
+
// Mark BEFORE sending: the marker, not the send, is what makes a second
|
|
257
|
+
// local send structurally impossible.
|
|
258
|
+
await deps.rehold(operationId, { ...detail, lastAttempt: 'local-sent', machineId: deps.lease.selfMachineId, at: deps.now(), ladder: nextLadderState(detail.ladder, deps.now(), delays) });
|
|
259
|
+
const sent = await deps.sendLocal(detail);
|
|
260
|
+
const resolved = await deps.resolve(operationId, deps.lease.selfMachineId, JSON.stringify({ messageId: sent.messageId, deliveryMachineId: deps.lease.selfMachineId, supersededLocally: true }));
|
|
261
|
+
audit({ outcome: resolved ? 'sent-locally' : 'sent-locally-resolve-refused', messageId: sent.messageId });
|
|
262
|
+
return 'sent';
|
|
263
|
+
}
|
|
264
|
+
const holder = route.holder;
|
|
265
|
+
if (operation.record.executionOwnerMachineId === holder) {
|
|
266
|
+
const result = await deps.submit(holder, operation);
|
|
267
|
+
if (result.ok) {
|
|
268
|
+
await deps.resolve(operationId, result.deliveryMachineId, result.receiptJson);
|
|
269
|
+
audit({ outcome: 'sent', holder, messageId: result.messageId });
|
|
270
|
+
return 'sent';
|
|
271
|
+
}
|
|
272
|
+
await retain({ machineId: holder, reason: result.reason, lastAttempt: attemptKind(result) });
|
|
273
|
+
audit({ outcome: 'retained', holder, reason: result.reason, resultOutcome: result.outcome });
|
|
274
|
+
return 'retained';
|
|
275
|
+
}
|
|
276
|
+
// Holder changed (or was never resolved): supersede with a NEW operation
|
|
277
|
+
// bound to the new owner. The new row is made durable FIRST, then the old
|
|
278
|
+
// one is retired, then the forward runs — at every instant exactly one
|
|
279
|
+
// durable row carries the reply, so a crash between steps loses nothing.
|
|
280
|
+
if (!detail) {
|
|
281
|
+
audit({ outcome: 'retained-holder-changed-no-detail', holder });
|
|
282
|
+
return 'retained';
|
|
283
|
+
}
|
|
284
|
+
const now = deps.now();
|
|
285
|
+
const next = await deps.prepare(holder, { topicId: detail.topicId, chatId: detail.chatId, text: detail.text, silent: detail.silent, formatMode: detail.formatMode, kindMetadata: detail.kindMetadata });
|
|
286
|
+
const nextDetail = { ...detail, machineId: holder, lastAttempt: 'refused', reason: 'not-attempted', at: now, supersedes: operationId,
|
|
287
|
+
ladder: nextLadderState(detail.ladder, now, delays) };
|
|
288
|
+
// ONE store transaction admits + holds the new row and retires the old one. A
|
|
289
|
+
// refused supersede means the old row is no longer plainly held (it may be
|
|
290
|
+
// delivering): the new operation is then admitted NOWHERE and nothing is sent.
|
|
291
|
+
const superseded = await deps.supersede(operationId, next, nextDetail);
|
|
292
|
+
audit({ outcome: superseded ? 'superseded' : 'supersede-refused', holder, previousOwner: operation.record.executionOwnerMachineId, supersededBy: next.record.operationId });
|
|
293
|
+
if (!superseded)
|
|
294
|
+
return 'retained';
|
|
295
|
+
const result = await deps.submit(holder, next);
|
|
296
|
+
if (result.ok) {
|
|
297
|
+
await deps.resolve(next.record.operationId, result.deliveryMachineId, result.receiptJson);
|
|
298
|
+
audit({ outcome: 'sent-superseding', holder, operationId: next.record.operationId, messageId: result.messageId });
|
|
299
|
+
return 'sent';
|
|
300
|
+
}
|
|
301
|
+
await deps.rehold(next.record.operationId, { ...nextDetail, reason: result.reason, lastAttempt: attemptKind(result), at: deps.now() });
|
|
302
|
+
audit({ outcome: 'retained-superseding', holder, operationId: next.record.operationId, reason: result.reason, resultOutcome: result.outcome });
|
|
303
|
+
return 'retained';
|
|
304
|
+
}
|
|
305
|
+
/** §4.2 — three topics held on one standby within 1 h collapse to one item. */
|
|
306
|
+
export class HeldForwardItemCollapser {
|
|
307
|
+
deps;
|
|
308
|
+
#held = new Map();
|
|
309
|
+
constructor(deps) {
|
|
310
|
+
this.deps = deps;
|
|
311
|
+
}
|
|
312
|
+
/** Returns the item id to raise for this topic, or the aggregate id once the
|
|
313
|
+
* threshold is crossed (and which per-topic ids the aggregate supersedes). */
|
|
314
|
+
record(topicId) {
|
|
315
|
+
const now = this.deps.now(), windowMs = this.deps.windowMs ?? 3_600_000, threshold = this.deps.threshold ?? 3;
|
|
316
|
+
for (const [topic, at] of this.#held)
|
|
317
|
+
if (now - at > windowMs)
|
|
318
|
+
this.#held.delete(topic);
|
|
319
|
+
this.#held.set(topicId, now);
|
|
320
|
+
if (this.#held.size >= threshold) {
|
|
321
|
+
return { itemId: 'telegram-origin-held:aggregate', aggregate: true, supersedes: [...this.#held.keys()].map(t => `telegram-origin-held:${t}`) };
|
|
322
|
+
}
|
|
323
|
+
return { itemId: `telegram-origin-held:${topicId}`, aggregate: false, supersedes: [] };
|
|
324
|
+
}
|
|
325
|
+
topics() { return [...this.#held.keys()]; }
|
|
326
|
+
clear(topicId) { this.#held.delete(topicId); }
|
|
327
|
+
}
|
|
328
|
+
/** Honest expiry wording (§4.2): a definite non-delivery vs an unknown one. */
|
|
329
|
+
export function expiredForwardWording(row) {
|
|
330
|
+
const detail = row.holdDetail;
|
|
331
|
+
const topic = row.destination.topicId ?? 'the topic';
|
|
332
|
+
const hours = Math.max(1, Math.round((row.deadlineAt - row.preparedAt) / 3_600_000));
|
|
333
|
+
return detail?.lastAttempt === 'outcome-unknown' || detail?.lastAttempt === 'local-sent'
|
|
334
|
+
? `My reply to topic ${topic} may or may not have been delivered; the sending machine did not confirm within ${hours} h.`
|
|
335
|
+
: `I could not deliver my reply to topic ${topic} within ${hours} h.`;
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=OriginForwardToHolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OriginForwardToHolder.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginForwardToHolder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginMesh.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMesh.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAK1E,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAIlG,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,OAAO,oBAAoB,CAAA;CAAE,GAAG,CACnG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC3H;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,0BAA0B,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAC9I;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AAEpE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,OAAO,EAAE,qBAAqB,CAAC;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,qBAAqB,GAAG,IAAI,CAAC;CACjE,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"OriginMesh.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMesh.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAK1E,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAIlG,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,OAAO,oBAAoB,CAAA;CAAE,GAAG,CACnG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC3H;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,0BAA0B,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAC9I;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AAEpE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,OAAO,EAAE,qBAAqB,CAAC;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,qBAAqB,GAAG,IAAI,CAAC;CACjE,GAAG,OAAO,CAAC,OAAO,CAAC,CAoHnB"}
|
|
@@ -39,8 +39,13 @@ export async function handleOriginMesh(options) {
|
|
|
39
39
|
const live = activeKey();
|
|
40
40
|
if (!live || live.publicKey !== authorized.publicKey || live.keyEpoch !== authorized.keyEpoch)
|
|
41
41
|
return { ok: false, reason: 'origin-peer-unavailable' };
|
|
42
|
+
// A verified peer asking about an id this machine never saw gets a
|
|
43
|
+
// DISTINCT answer from a store failure: `no-record` is a definite
|
|
44
|
+
// non-admission (a forwarding standby may re-forward); `origin-receipt-
|
|
45
|
+
// unavailable` is an unknown (it must keep waiting).
|
|
42
46
|
if (!audit)
|
|
43
|
-
return { ok:
|
|
47
|
+
return { ok: true, operationId: command.operationId, state: 'no-record', originReceiptConfirmed: false,
|
|
48
|
+
executionOwnerMachineId: runtime.options.identity.originMachineId };
|
|
44
49
|
const record = JSON.parse(audit.record.envelopeJson);
|
|
45
50
|
if (record.originMachineId !== options.authenticatedSender || record.agentId !== runtime.options.identity.agentId ||
|
|
46
51
|
record.operationId !== command.operationId || record.originId !== audit.record.originId ||
|
|
@@ -117,6 +122,15 @@ export async function handleOriginMesh(options) {
|
|
|
117
122
|
if (record.executionOwnerMachineId !== runtime.options.identity.originMachineId) {
|
|
118
123
|
return { ok: false, reason: 'execution-owner-mismatch', outcome: 'held' };
|
|
119
124
|
}
|
|
125
|
+
// a2a-single-agent-identity §4.1 — the holder-side submit runs the SAME lease
|
|
126
|
+
// check the direct path runs (it used to execute unchecked). A typed,
|
|
127
|
+
// retryable refusal lets the forwarding standby re-resolve the holder.
|
|
128
|
+
if (runtime.options.holdsLease && !runtime.options.holdsLease()) {
|
|
129
|
+
// No `operationId` here on purpose: a refusal naming the operation id means
|
|
130
|
+
// this machine took custody of it; this one never did.
|
|
131
|
+
return { ok: false, reason: 'not-lease-holder', outcome: 'held', retryable: true,
|
|
132
|
+
executionOwnerMachineId: runtime.options.identity.originMachineId };
|
|
133
|
+
}
|
|
120
134
|
const operation = command.operation;
|
|
121
135
|
if (!validOriginAdmission(operation) || canonicalOrigin(operation.record) !== stored.envelopeJson || operation.admission.operationId !== record.operationId ||
|
|
122
136
|
record.destination.transport !== 'bot-api' || record.destination.accountId !== runtime.options.bot.accountId) {
|
|
@@ -129,7 +143,8 @@ export async function handleOriginMesh(options) {
|
|
|
129
143
|
const response = await telegramFetch(`https://api.telegram.org/bot${runtime.options.bot.token}/${request.method}`, { method: 'POST', headers: { 'Content-Type': request.contentType }, body: request.body,
|
|
130
144
|
networkTimeoutMs: 10_000 }, undefined, operation);
|
|
131
145
|
const body = await response.json();
|
|
132
|
-
return { ok: true, originId: record.originId, messageId: body.result?.message_id, originReceiptConfirmed: true
|
|
146
|
+
return { ok: true, originId: record.originId, messageId: body.result?.message_id, originReceiptConfirmed: true,
|
|
147
|
+
deliveryMachineId: runtime.options.identity.originMachineId, forwardedFromMachine: record.originMachineId };
|
|
133
148
|
}
|
|
134
149
|
catch (error) {
|
|
135
150
|
if (error instanceof OriginSendPolicyRefusal)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginMesh.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAKjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAA0B,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAKhE,MAAM,CAAC,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CAAC,KAAsB;IACxD,OAAO,yBAAyB,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAKtC;IACC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,oBAAoB;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC3G,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAC9G,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9E,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,OAAO,CAAC,mBAAmB,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAC7G,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrG,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;QACzE,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QACpK,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;YACvJ,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAyB,CAAC;YAC7E,IAAI,MAAM,CAAC,eAAe,KAAK,OAAO,CAAC,mBAAmB,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAC/G,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ;gBACvF,MAAM,CAAC,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACvJ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;YAC7D,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;gBACzH,uBAAuB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,cAAc;gBAClH,sBAAsB,EAAE,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB;YACtF,uBAAuB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe;YACjE,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9H,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC5C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,aAAa;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;QACtH,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,uBAAuB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YACxK,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,mBAAmB;YACtG,yBAAyB,EAAE,OAAO,CAAC,EAAE;gBACnC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1D,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;oBAClH,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YAC5E,CAAC;YACD,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC3H,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACjH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,aAAa,EAAE,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;YACvH,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG;YAClH,SAAS,CAAC,GAAG,IAAI,GAAG;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;QAChF,OAAO,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;IAC/G,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1I,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,IAAI;QAC3G,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,cAAc;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACrH,IAAI,MAA4B,CAAC;IACjC,IAAI,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAAC,CAAC;IACjD,MAAM,CAAC;QAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAAC,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAClE,IAAI,MAAM,CAAC,aAAa,KAAK,oBAAoB,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;QACtF,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;QAClG,eAAe,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,YAAY;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAC3G,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7I,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACnE,MAAM,YAAY,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe;QACvH,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU;QACpH,qBAAqB,EAAE,QAAiB,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC3I,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IAChI,IAAI,MAAM,CAAC,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,YAAY,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW;QACzJ,MAAM,CAAC,WAAW,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/G,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC1E,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,+BAA+B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAC/G,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI;YACpF,gBAAgB,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0C,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC;IACnH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,uBAAuB;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM;gBACrG,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnE,IAAI,KAAK,YAAY,uBAAuB;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QACjJ,yEAAyE;QACzE,yEAAyE;QACzE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAC9H,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"OriginMesh.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMesh.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { FormatMode } from '../TelegramMarkdownFormatter.js';
|
|
2
2
|
import type { OriginMeshCommand } from './OriginMesh.js';
|
|
3
3
|
import type { TelegramOriginRuntime } from './TelegramOriginRuntime.js';
|
|
4
|
+
import type { OriginPreparedBotOperation } from './TelegramOriginService.js';
|
|
4
5
|
export declare function relayOriginBot(input: {
|
|
5
6
|
runtime: TelegramOriginRuntime;
|
|
6
7
|
topicId: number;
|
|
@@ -13,9 +14,15 @@ export declare function relayOriginBot(input: {
|
|
|
13
14
|
ok: boolean;
|
|
14
15
|
result?: unknown;
|
|
15
16
|
}>;
|
|
17
|
+
/** §4.1 — pin the execution owner to a resolved holder (defaults to whatever answers `capabilities`). */
|
|
18
|
+
executionOwnerMachineId?: string;
|
|
19
|
+
/** Reuse an operation id across holders (the holder dedupes on it). */
|
|
20
|
+
operationId?: string;
|
|
21
|
+
onPrepared?: (operation: OriginPreparedBotOperation) => void;
|
|
16
22
|
}): Promise<{
|
|
17
23
|
messageId: number;
|
|
18
24
|
topicId: number;
|
|
19
25
|
destinationStoreConfirmed: true;
|
|
26
|
+
operationId: string;
|
|
20
27
|
}>;
|
|
21
28
|
//# sourceMappingURL=OriginMeshRelay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginMeshRelay.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMeshRelay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAIlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"OriginMeshRelay.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMeshRelay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAIlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAI7E,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,OAAO,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAChG,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,yGAAyG;IACzG,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,0BAA0B,KAAK,IAAI,CAAC;CAC9D,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,yBAAyB,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA8CxG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { applyTelegramFormatter } from '../TelegramAdapter.js';
|
|
2
2
|
import { TelegramOriginHoldError } from './types.js';
|
|
3
3
|
import { ORIGIN_MESH_PROTOCOL } from './OriginMesh.js';
|
|
4
|
+
import { submitOriginToHolder } from './OriginForwardToHolder.js';
|
|
4
5
|
import { OriginSendPolicyRefusal } from './OriginSendPolicy.js';
|
|
5
6
|
export async function relayOriginBot(input) {
|
|
6
7
|
const base = { type: 'telegram-origin', protocol: ORIGIN_MESH_PROTOCOL };
|
|
@@ -19,8 +20,11 @@ export async function relayOriginBot(input) {
|
|
|
19
20
|
const params = applyTelegramFormatter('sendMessage', { chat_id: input.chatId, text: input.text, parse_mode: 'Markdown',
|
|
20
21
|
...(input.topicId > 1 ? { message_thread_id: input.topicId } : {}), ...(input.silent ? { disable_notification: true } : {}) }, input.formatMode).outgoingParams;
|
|
21
22
|
const service = input.runtime.service;
|
|
23
|
+
if (input.executionOwnerMachineId !== undefined && cap.executionOwnerMachineId !== input.executionOwnerMachineId) {
|
|
24
|
+
throw new TelegramOriginHoldError('execution-owner-mismatch');
|
|
25
|
+
}
|
|
22
26
|
const prepare = () => service.prepareBot({ method: 'sendMessage', accountId: cap.accountId, params,
|
|
23
|
-
executionOwnerMachineId: cap.executionOwnerMachineId,
|
|
27
|
+
executionOwnerMachineId: cap.executionOwnerMachineId, ...(input.operationId === undefined ? {} : { operationId: input.operationId }),
|
|
24
28
|
policyInput: service.currentSendPolicyInput(input.text, input.kindMetadata) });
|
|
25
29
|
const operation = service.hasProducerContext() ? prepare() : service.runAsUnboundAutomation('telegram-server', prepare);
|
|
26
30
|
if (service.hasLogicalSendContext()) {
|
|
@@ -39,21 +43,17 @@ export async function relayOriginBot(input) {
|
|
|
39
43
|
service.authorizeSendPolicyDispatch(operation.record);
|
|
40
44
|
await service.recordIntent(operation);
|
|
41
45
|
service.authorizeSendPolicyDispatch(operation.record);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (response?.policyRefusal && response.policyRefusal.ok === false)
|
|
51
|
-
throw new OriginSendPolicyRefusal(response.policyRefusal, operation.record.operationId);
|
|
52
|
-
if (!result.ok || !response?.ok || response.originId !== operation.record.originId ||
|
|
53
|
-
!Number.isSafeInteger(response.messageId) || Number(response.messageId) <= 0 || response.originReceiptConfirmed !== true) {
|
|
54
|
-
throw new TelegramOriginHoldError(response?.reason ?? 'origin-relay-acceptance-unknown', operation.record.operationId, response?.outcome === 'held' || response?.outcome === 'known-failed' ? response.outcome : 'outcome-unknown');
|
|
46
|
+
input.onPrepared?.(operation);
|
|
47
|
+
// One holder transport for the request-time relay and the §4.2 recovery
|
|
48
|
+
// re-forward (OriginForwardToHolder.ts), so a refusal means one thing.
|
|
49
|
+
const submitted = await submitOriginToHolder({ operation, send: input.send, expectedOwner: cap.executionOwnerMachineId });
|
|
50
|
+
if (!submitted.ok) {
|
|
51
|
+
if (submitted.policyRefusal)
|
|
52
|
+
throw new OriginSendPolicyRefusal(submitted.policyRefusal, operation.record.operationId);
|
|
53
|
+
throw new TelegramOriginHoldError(submitted.reason, operation.record.operationId, submitted.outcome);
|
|
55
54
|
}
|
|
55
|
+
const response = { messageId: submitted.messageId };
|
|
56
56
|
// The credential owner's origin outbox has committed a correlated receipt.
|
|
57
|
-
return { messageId: response.messageId, topicId: input.topicId, destinationStoreConfirmed: true };
|
|
57
|
+
return { messageId: response.messageId, topicId: input.topicId, destinationStoreConfirmed: true, operationId: operation.record.operationId };
|
|
58
58
|
}
|
|
59
59
|
//# sourceMappingURL=OriginMeshRelay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginMeshRelay.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMeshRelay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"OriginMeshRelay.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginMeshRelay.ts"],"names":[],"mappings":"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"}
|