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
|
@@ -15,4 +15,6 @@ export declare function refreshOriginCanaryStartupAwareness(content: string): st
|
|
|
15
15
|
export declare function refreshOriginCanaryCleanupAwareness(content: string): string;
|
|
16
16
|
/** Patch only the exact shipped sentence; retain custom instructions. */
|
|
17
17
|
export declare function refreshOriginCapacityAwareness(content: string): string;
|
|
18
|
+
/** a2a-single-agent-identity §4 (ACT-058) — the agent-awareness row. */
|
|
19
|
+
export declare function telegramOriginForwardAwareness(port: number): string;
|
|
18
20
|
//# sourceMappingURL=OriginAwareness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginAwareness.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginAwareness.ts"],"names":[],"mappings":"AAAA,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,wBAAgB,oCAAoC,IAAI,MAAM,CAE7D;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqC5D;AAED,2EAA2E;AAC3E,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED,mFAAmF;AACnF,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,yEAAyE;AACzE,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE"}
|
|
1
|
+
{"version":3,"file":"OriginAwareness.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginAwareness.ts"],"names":[],"mappings":"AAAA,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,wBAAgB,oCAAoC,IAAI,MAAM,CAE7D;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqC5D;AAED,2EAA2E;AAC3E,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED,mFAAmF;AACnF,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,yEAAyE;AACzE,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wEAAwE;AACxE,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE"}
|
|
@@ -79,4 +79,8 @@ export function refreshOriginCanaryCleanupAwareness(content) {
|
|
|
79
79
|
export function refreshOriginCapacityAwareness(content) {
|
|
80
80
|
return content.replace(/^Telegram capacity checks:[^\r\n]*$/gm, paragraph => paragraph.split('An unavailable or expired grant still holds the original message and consumes a charged attempt, even if no network call started; sustained capacity refusal can exhaust its original attempt limit.').join('A proven local capacity refusal retains the original message and its attempt audit without consuming a transport attempt. Retry pacing and the original deadline still bound recovery; a crash before that proof is recorded remains uncertain.'));
|
|
81
81
|
}
|
|
82
|
+
/** a2a-single-agent-identity §4 (ACT-058) — the agent-awareness row. */
|
|
83
|
+
export function telegramOriginForwardAwareness(port) {
|
|
84
|
+
return `**"Why was my reply delayed / why did a topic go quiet on my other machine?"** → on a machine that does not hold the serving lease, replies are forwarded to the holder (the lease is re-read for up to 15 s first, then ONE forward attempt runs inside the reply request; a refusal is retried twice more from the recovery tick at +10 s and +20 s, re-resolving the holder each time, then on the 15-minute schedule); a failed forward is a durable hold in \`GET http://localhost:${port}/telegram/origins/status\` (\`held[].hold_reason: lease-not-held\`, beside \`heldForward\` on the authed \`/health\`) with ONE attention item (\`telegram-origin-held:<topic>\`; three topics held on one machine within an hour collapse to one item) and the fixed notice "I have your message; my reply is delayed while it is routed through <holder>" sent through the holder — never a silent drop. Recovery re-forwards the SAME operation while the holder is unchanged; an attempt the holder never confirmed is resolved at that holder's receipt, never re-sent blind; after a lease move the old record is superseded (linked by operation id) and a new one bound to the new holder lands once; a hold that reaches its 6 h deadline is reported once with honest wording. \`destination-not-authorized\` still means a foreign chat and is never forwarded. The forward is switchable per agent (\`messaging[].config.messageOrigin.forwardToHolder.enabled\`, read live); the durable held state, its reason and the notice are not. Single-machine agents are a strict no-op. Audit: \`logs/telegram-origin-held.jsonl\`.\n`;
|
|
85
|
+
}
|
|
82
86
|
//# sourceMappingURL=OriginAwareness.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginAwareness.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginAwareness.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gCAAgC;IAC9C,OAAO,qeAAqe,CAAC;AAC/e,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,qqCAAqqC,CAAC;AAC/qC,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,yjBAAyjB,CAAC;AACnkB,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,OAAO,+4BAA+4B,CAAC;AACz5B,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,yjBAAyjB,CAAC;AACnkB,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,soBAAsoB,CAAC;AAChpB,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO,ifAAif,CAAC;AAC3f,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,2lBAA2lB,CAAC;AACrmB,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,uyBAAuyB,CAAC;AACjzB,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,kqBAAkqB,CAAC;AAC5qB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO;;;;;;;;;EASP,6BAA6B,EAAE;EAC/B,oCAAoC,EAAE;EACtC,4BAA4B,EAAE;EAC9B,gCAAgC,EAAE;EAClC,+BAA+B,EAAE;EACjC,+BAA+B,EAAE;EACjC,gCAAgC,EAAE;EAClC,+BAA+B,EAAE;EACjC,6BAA6B,EAAE;;;;;;;;;;;;qJAYoH,IAAI;;;;;;CAMxJ,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mCAAmC,CAAC,OAAe;IACjE,OAAO,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE,SAAS,CAAC,EAAE,CACxE,SAAS,CAAC,OAAO,CAAC,6FAA6F,EAAE,iPAAiP,CAAC,CAAC,CAAC;AACzW,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,mCAAmC,CAAC,OAAe;IACjE,OAAO,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE,SAAS,CAAC,EAAE,CACxE,SAAS,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,SAAS,CAAC,OAAO,CAAC,0DAA0D,EAC1E,uWAAuW,CAAC,CAAC,CAAC;AAClX,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,8BAA8B,CAAC,OAAe;IAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,uCAAuC,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,sMAAsM,CAAC,CAAC,IAAI,CAAC,iPAAiP,CAAC,CAAC,CAAC;AAChiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"OriginAwareness.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginAwareness.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gCAAgC;IAC9C,OAAO,qeAAqe,CAAC;AAC/e,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,qqCAAqqC,CAAC;AAC/qC,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,yjBAAyjB,CAAC;AACnkB,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,OAAO,+4BAA+4B,CAAC;AACz5B,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,yjBAAyjB,CAAC;AACnkB,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,soBAAsoB,CAAC;AAChpB,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO,ifAAif,CAAC;AAC3f,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,2lBAA2lB,CAAC;AACrmB,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,uyBAAuyB,CAAC;AACjzB,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,kqBAAkqB,CAAC;AAC5qB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO;;;;;;;;;EASP,6BAA6B,EAAE;EAC/B,oCAAoC,EAAE;EACtC,4BAA4B,EAAE;EAC9B,gCAAgC,EAAE;EAClC,+BAA+B,EAAE;EACjC,+BAA+B,EAAE;EACjC,gCAAgC,EAAE;EAClC,+BAA+B,EAAE;EACjC,6BAA6B,EAAE;;;;;;;;;;;;qJAYoH,IAAI;;;;;;CAMxJ,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mCAAmC,CAAC,OAAe;IACjE,OAAO,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE,SAAS,CAAC,EAAE,CACxE,SAAS,CAAC,OAAO,CAAC,6FAA6F,EAAE,iPAAiP,CAAC,CAAC,CAAC;AACzW,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,mCAAmC,CAAC,OAAe;IACjE,OAAO,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE,SAAS,CAAC,EAAE,CACxE,SAAS,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,SAAS,CAAC,OAAO,CAAC,0DAA0D,EAC1E,uWAAuW,CAAC,CAAC,CAAC;AAClX,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,8BAA8B,CAAC,OAAe;IAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,uCAAuC,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,sMAAsM,CAAC,CAAC,IAAI,CAAC,iPAAiP,CAAC,CAAC,CAAC;AAChiB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,OAAO,2dAA2d,IAAI,6kCAA6kC,CAAC;AACtjD,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export declare const ORIGIN_DETECTOR_CANARY_INTERVAL_MS = 3600000;
|
|
2
2
|
export declare function originDetectorCanaryInterval(origin: unknown): number;
|
|
3
3
|
export declare function originOutageNoticeEnabled(origin: unknown): boolean;
|
|
4
|
+
/** a2a-single-agent-identity §4.3 — forward-to-holder kill switch. Omitted
|
|
5
|
+
* means enabled (reachability is a safety floor; it ships live). Only the
|
|
6
|
+
* FORWARD is switchable: a hold stays durable and reported either way. */
|
|
7
|
+
export declare function originForwardToHolderEnabled(origin: unknown): boolean;
|
|
4
8
|
/** Add only missing presentation/notice defaults. Never changes an operator's false,
|
|
5
9
|
* creates an audit-off switch, or activates a writer without enrollment.
|
|
6
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginConfig.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginConfig.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kCAAkC,UAAY,CAAC;AAC5D,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAUpE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CASlE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"OriginConfig.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginConfig.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kCAAkC,UAAY,CAAC;AAC5D,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAUpE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CASlE;AAED;;0EAE0E;AAC1E,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CASrE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA2BrF"}
|
|
@@ -31,6 +31,24 @@ export function originOutageNoticeEnabled(origin) {
|
|
|
31
31
|
throw new Error('invalid-origin-notice-config');
|
|
32
32
|
return enabled ?? true;
|
|
33
33
|
}
|
|
34
|
+
/** a2a-single-agent-identity §4.3 — forward-to-holder kill switch. Omitted
|
|
35
|
+
* means enabled (reachability is a safety floor; it ships live). Only the
|
|
36
|
+
* FORWARD is switchable: a hold stays durable and reported either way. */
|
|
37
|
+
export function originForwardToHolderEnabled(origin) {
|
|
38
|
+
if (origin === undefined)
|
|
39
|
+
return true;
|
|
40
|
+
if (!origin || typeof origin !== 'object' || Array.isArray(origin))
|
|
41
|
+
throw new Error('invalid-origin-forward-config');
|
|
42
|
+
const forward = origin.forwardToHolder;
|
|
43
|
+
if (forward === undefined)
|
|
44
|
+
return true;
|
|
45
|
+
if (!forward || typeof forward !== 'object' || Array.isArray(forward))
|
|
46
|
+
throw new Error('invalid-origin-forward-config');
|
|
47
|
+
const enabled = forward.enabled;
|
|
48
|
+
if (enabled !== undefined && typeof enabled !== 'boolean')
|
|
49
|
+
throw new Error('invalid-origin-forward-config');
|
|
50
|
+
return enabled ?? true;
|
|
51
|
+
}
|
|
34
52
|
/** Add only missing presentation/notice defaults. Never changes an operator's false,
|
|
35
53
|
* creates an audit-off switch, or activates a writer without enrollment.
|
|
36
54
|
*/
|
|
@@ -64,6 +82,14 @@ export function migrateTelegramOriginDisplay(config) {
|
|
|
64
82
|
origin.outageNotice.enabled = true;
|
|
65
83
|
changed = true;
|
|
66
84
|
}
|
|
85
|
+
if (origin.forwardToHolder === undefined) {
|
|
86
|
+
origin.forwardToHolder = { enabled: true };
|
|
87
|
+
changed = true;
|
|
88
|
+
}
|
|
89
|
+
else if (origin.forwardToHolder && typeof origin.forwardToHolder === 'object' && !Array.isArray(origin.forwardToHolder) && origin.forwardToHolder.enabled === undefined) {
|
|
90
|
+
origin.forwardToHolder.enabled = true;
|
|
91
|
+
changed = true;
|
|
92
|
+
}
|
|
67
93
|
if (origin.display === undefined) {
|
|
68
94
|
origin.display = {};
|
|
69
95
|
changed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OriginConfig.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OriginConfig.js","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import type { OriginPreparedBotOperation } from './TelegramOriginService.js';
|
|
2
|
+
import type { OriginMeshCommand } from './OriginMesh.js';
|
|
3
|
+
import type { OriginSendPolicyDecision } from './OriginSendPolicy.js';
|
|
4
|
+
export type OriginSendPolicyRefusalDecision = Extract<OriginSendPolicyDecision, {
|
|
5
|
+
ok: false;
|
|
6
|
+
}>;
|
|
7
|
+
import type { HeldOperationRow } from './StoreTypes.js';
|
|
8
|
+
export declare const HOLD_REASON_LEASE_NOT_HELD = "lease-not-held";
|
|
9
|
+
/** Execution owner recorded on a hold taken while NO holder could be named.
|
|
10
|
+
* Never a real machine, so recovery always re-prepares for the holder it finds. */
|
|
11
|
+
export declare const UNRESOLVED_LEASE_HOLDER = "lease-holder-unresolved";
|
|
12
|
+
export declare const FORWARD_SETTLE_TIMEOUT_MS = 15000;
|
|
13
|
+
/** §4.2 — the reply request runs settle + ONE forward attempt inside this
|
|
14
|
+
* budget (≥ the holder's 10 s execute + 5 s margin, both RPCs sharing it),
|
|
15
|
+
* well under the route's 120 s so a caller never times out before the hold
|
|
16
|
+
* is written and re-runs with a NEW operation id. */
|
|
17
|
+
export declare const FORWARD_ATTEMPT_BUDGET_MS = 30000;
|
|
18
|
+
/** Per-RPC ceiling so `capabilities` + `submit` fit the attempt budget. */
|
|
19
|
+
export declare const FORWARD_RPC_TIMEOUT_MS = 15000;
|
|
20
|
+
/** §4.2 — the remaining attempts run from the recovery tick: a typed refusal
|
|
21
|
+
* that proves non-admission is retried 2× more at +10 s and +20 s, re-resolving
|
|
22
|
+
* the holder each time, then the 15-minute schedule takes over. */
|
|
23
|
+
export declare const FORWARD_LADDER: Readonly<{
|
|
24
|
+
delaysMs: readonly number[];
|
|
25
|
+
}>;
|
|
26
|
+
export interface ForwardLadderState {
|
|
27
|
+
attempts: number;
|
|
28
|
+
nextAt: number | null;
|
|
29
|
+
}
|
|
30
|
+
export declare function nextLadderState(previous: ForwardLadderState | undefined, now: number, delays?: readonly number[]): ForwardLadderState;
|
|
31
|
+
/** The fixed user template, sent THROUGH the holder (§4.2). Never free text. */
|
|
32
|
+
export declare function heldForwardNoticeText(holderNickname: string): string;
|
|
33
|
+
export interface ForwardLeaseView {
|
|
34
|
+
selfMachineId: string;
|
|
35
|
+
leaseHolder(): string | null;
|
|
36
|
+
holdsLease(): boolean;
|
|
37
|
+
isHolderHealthy(machineId: string): boolean;
|
|
38
|
+
}
|
|
39
|
+
export type LeaseRoute = {
|
|
40
|
+
kind: 'self';
|
|
41
|
+
} | {
|
|
42
|
+
kind: 'peer';
|
|
43
|
+
holder: string;
|
|
44
|
+
} | {
|
|
45
|
+
kind: 'settling';
|
|
46
|
+
reason: 'no-holder' | 'self-unconfirmed' | 'holder-unhealthy';
|
|
47
|
+
};
|
|
48
|
+
/** §4.2 `lease-settling` — the three states in which a lease read is not yet
|
|
49
|
+
* an answer: no holder named; self named but `holdsLease()` false (the seconds
|
|
50
|
+
* after a respawn); a named holder whose lease has expired (`currentHolder()`
|
|
51
|
+
* has no expiry check of its own). */
|
|
52
|
+
export declare function classifyLeaseRoute(view: ForwardLeaseView): LeaseRoute;
|
|
53
|
+
export type SettledRoute = {
|
|
54
|
+
kind: 'self';
|
|
55
|
+
} | {
|
|
56
|
+
kind: 'peer';
|
|
57
|
+
holder: string;
|
|
58
|
+
} | {
|
|
59
|
+
kind: 'unsettled';
|
|
60
|
+
reason: LeaseRoute extends {
|
|
61
|
+
reason: infer R;
|
|
62
|
+
} ? R : never;
|
|
63
|
+
};
|
|
64
|
+
/** Re-read the lease with backoff for at most `timeoutMs` BEFORE writing
|
|
65
|
+
* anything. A window that never settles is the ladder's problem, not a row. */
|
|
66
|
+
export declare function settleLeaseRoute(view: ForwardLeaseView, deps: {
|
|
67
|
+
sleep: (ms: number) => Promise<void>;
|
|
68
|
+
now: () => number;
|
|
69
|
+
timeoutMs?: number;
|
|
70
|
+
}): Promise<SettledRoute>;
|
|
71
|
+
export type HolderSubmitResult = {
|
|
72
|
+
ok: true;
|
|
73
|
+
messageId: number;
|
|
74
|
+
deliveryMachineId: string;
|
|
75
|
+
receiptJson: string;
|
|
76
|
+
} | {
|
|
77
|
+
ok: false;
|
|
78
|
+
reason: string;
|
|
79
|
+
outcome: 'held' | 'known-failed' | 'outcome-unknown';
|
|
80
|
+
retryable: boolean;
|
|
81
|
+
policyRefusal?: OriginSendPolicyRefusalDecision;
|
|
82
|
+
/** The holder took CUSTODY (admitted, memory-held or dispatched) before refusing: resolved at its `receipt`, never re-sent. */
|
|
83
|
+
admittedAtHolder?: boolean;
|
|
84
|
+
};
|
|
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 declare function submitOriginToHolder(input: {
|
|
89
|
+
operation: OriginPreparedBotOperation;
|
|
90
|
+
send: (command: OriginMeshCommand) => Promise<{
|
|
91
|
+
ok: boolean;
|
|
92
|
+
result?: unknown;
|
|
93
|
+
reason?: string;
|
|
94
|
+
}>;
|
|
95
|
+
/** When set, a holder answering a different execution owner is refused before submit. */
|
|
96
|
+
expectedOwner?: string;
|
|
97
|
+
}): Promise<HolderSubmitResult>;
|
|
98
|
+
/** `local-sent`: this machine started a LOCAL send of the held text (the lease
|
|
99
|
+
* came back here) — recorded BEFORE the send, so a crash or a failed resolve
|
|
100
|
+
* can never cause a second local send. */
|
|
101
|
+
export type ForwardLastAttempt = 'refused' | 'unreachable' | 'outcome-unknown' | 'unsettled' | 'local-sent';
|
|
102
|
+
/** Stored in the held row's `holdDetail`: what the recovery tick needs to
|
|
103
|
+
* re-forward the SAME operation (or re-prepare it for a new holder) without
|
|
104
|
+
* the original request. Never key material, never a receipt it did not get. */
|
|
105
|
+
export interface HeldForwardDetail {
|
|
106
|
+
kind: 'forward-to-holder';
|
|
107
|
+
lastAttempt: ForwardLastAttempt;
|
|
108
|
+
/** The machine the LAST submit went to (an `outcome-unknown` is resolved there, never re-sent). */
|
|
109
|
+
machineId: string | null;
|
|
110
|
+
topicId: number;
|
|
111
|
+
chatId: string;
|
|
112
|
+
text: string;
|
|
113
|
+
silent?: boolean;
|
|
114
|
+
formatMode?: string;
|
|
115
|
+
kindMetadata?: Record<string, unknown>;
|
|
116
|
+
reason: string;
|
|
117
|
+
at: number;
|
|
118
|
+
noticeDelivered: boolean;
|
|
119
|
+
/** Quick-retry ladder bookkeeping (§4.2); `nextAt: null` = exhausted, the 15-min schedule owns it. */
|
|
120
|
+
ladder: ForwardLadderState;
|
|
121
|
+
/** Set on an operation prepared to REPLACE one whose holder changed (§4.2 supersede). */
|
|
122
|
+
supersedes?: string;
|
|
123
|
+
}
|
|
124
|
+
export interface ForwardInput {
|
|
125
|
+
topicId: number;
|
|
126
|
+
chatId: string;
|
|
127
|
+
text: string;
|
|
128
|
+
silent?: boolean;
|
|
129
|
+
formatMode?: string;
|
|
130
|
+
kindMetadata?: Record<string, unknown>;
|
|
131
|
+
}
|
|
132
|
+
export interface ForwardDeps {
|
|
133
|
+
lease: ForwardLeaseView;
|
|
134
|
+
/** Prepare (and record intent for) an operation whose execution owner is `holder`. */
|
|
135
|
+
prepare: (holder: string, input: ForwardInput, operationId?: string) => Promise<OriginPreparedBotOperation>;
|
|
136
|
+
submit: (holder: string, operation: OriginPreparedBotOperation) => Promise<HolderSubmitResult>;
|
|
137
|
+
/** Make the hold DURABLE: admit locally + `recordOperationState('held', lease-not-held)`.
|
|
138
|
+
* Resolves false when the state writer refused (the row stays `admitted` and the
|
|
139
|
+
* ordinary local replay carries it) — audited, never silently assumed. */
|
|
140
|
+
hold: (operation: OriginPreparedBotOperation, detail: HeldForwardDetail) => Promise<boolean | void>;
|
|
141
|
+
/** The fixed template through the holder; resolves true when the holder accepted it. */
|
|
142
|
+
notify?: (holder: string, topicId: number) => Promise<boolean>;
|
|
143
|
+
audit?: (row: Record<string, unknown>) => void;
|
|
144
|
+
sleep: (ms: number) => Promise<void>;
|
|
145
|
+
now: () => number;
|
|
146
|
+
settleTimeoutMs?: number;
|
|
147
|
+
ladder?: {
|
|
148
|
+
delaysMs: readonly number[];
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
export type ForwardOutcome = {
|
|
152
|
+
kind: 'sent';
|
|
153
|
+
messageId: number;
|
|
154
|
+
holder: string;
|
|
155
|
+
operationId: string;
|
|
156
|
+
} | {
|
|
157
|
+
kind: 'local';
|
|
158
|
+
} | {
|
|
159
|
+
kind: 'held';
|
|
160
|
+
operationId: string;
|
|
161
|
+
holder: string | null;
|
|
162
|
+
lastAttempt: ForwardLastAttempt;
|
|
163
|
+
reason: string;
|
|
164
|
+
noticeDelivered: boolean;
|
|
165
|
+
};
|
|
166
|
+
/** §4.1 + §4.2 — settle, ONE forward attempt, then the durable hold. The
|
|
167
|
+
* remaining ladder steps belong to the recovery tick (`recoverForwardedHold`). */
|
|
168
|
+
export declare function forwardReplyToHolder(deps: ForwardDeps, input: ForwardInput): Promise<ForwardOutcome>;
|
|
169
|
+
export interface ForwardRecoveryDeps {
|
|
170
|
+
lease: ForwardLeaseView;
|
|
171
|
+
prepare: ForwardDeps['prepare'];
|
|
172
|
+
submit: ForwardDeps['submit'];
|
|
173
|
+
/** The old holder's `receipt` for the operation id: `accepted` resolves the
|
|
174
|
+
* hold; `owned-by-holder` (admitted/held there — its own recovery delivers)
|
|
175
|
+
* and `unreachable` keep it; only a definite non-accepted state (no record,
|
|
176
|
+
* never admitted, expired, failed) frees a re-forward. */
|
|
177
|
+
receipt: (machineId: string, operationId: string) => Promise<{
|
|
178
|
+
state: 'accepted';
|
|
179
|
+
receiptJson: string;
|
|
180
|
+
} | {
|
|
181
|
+
state: 'not-accepted';
|
|
182
|
+
} | {
|
|
183
|
+
state: 'owned-by-holder';
|
|
184
|
+
} | {
|
|
185
|
+
state: 'unreachable';
|
|
186
|
+
}>;
|
|
187
|
+
/** Resolve a local held row (the holder delivered or confirmed it). */
|
|
188
|
+
resolve: (operationId: string, deliveryMachineId: string, receiptJson: string) => Promise<boolean>;
|
|
189
|
+
/** Re-record the hold with an updated detail (same reason). */
|
|
190
|
+
rehold: (operationId: string, detail: HeldForwardDetail) => Promise<void>;
|
|
191
|
+
/** ATOMICALLY admit + hold the NEW operation and mark the old one superseded
|
|
192
|
+
* (terminal, linked by id) in ONE store transaction. False = the old row is no
|
|
193
|
+
* longer plainly held (a child left `queued` or an entry is claimed — it may
|
|
194
|
+
* be delivering), in which case the new operation is NOT admitted anywhere. */
|
|
195
|
+
supersede: (operationId: string, next: OriginPreparedBotOperation, detail: HeldForwardDetail) => Promise<boolean>;
|
|
196
|
+
/** This machine now holds the lease: deliver the authored text locally. */
|
|
197
|
+
sendLocal: (detail: HeldForwardDetail) => Promise<{
|
|
198
|
+
messageId: number;
|
|
199
|
+
}>;
|
|
200
|
+
audit?: (row: Record<string, unknown>) => void;
|
|
201
|
+
now: () => number;
|
|
202
|
+
ladder?: {
|
|
203
|
+
delaysMs: readonly number[];
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
export type ForwardRecoveryOutcome = 'resolved' | 'sent' | 'retained' | 'skipped';
|
|
207
|
+
/** §4.2 — recovery re-forwards the SAME operation while the holder is
|
|
208
|
+
* unchanged. An attempt the holder never confirmed is resolved at THAT
|
|
209
|
+
* holder's receipt first, never re-sent blind. On a holder change the old
|
|
210
|
+
* record is durably SUPERSEDED (linked by operation id) and a NEW record bound
|
|
211
|
+
* to the new owner is prepared and forwarded — a holder-side `submit` refuses
|
|
212
|
+
* a record owned by another machine before `authorize`, so the old record can
|
|
213
|
+
* never be replayed at the new owner. Each failed step advances the ladder. */
|
|
214
|
+
export declare function recoverForwardedHold(deps: ForwardRecoveryDeps, row: HeldOperationRow, operation: OriginPreparedBotOperation): Promise<ForwardRecoveryOutcome>;
|
|
215
|
+
/** §4.2 — three topics held on one standby within 1 h collapse to one item. */
|
|
216
|
+
export declare class HeldForwardItemCollapser {
|
|
217
|
+
#private;
|
|
218
|
+
private readonly deps;
|
|
219
|
+
constructor(deps: {
|
|
220
|
+
now: () => number;
|
|
221
|
+
windowMs?: number;
|
|
222
|
+
threshold?: number;
|
|
223
|
+
});
|
|
224
|
+
/** Returns the item id to raise for this topic, or the aggregate id once the
|
|
225
|
+
* threshold is crossed (and which per-topic ids the aggregate supersedes). */
|
|
226
|
+
record(topicId: number): {
|
|
227
|
+
itemId: string;
|
|
228
|
+
aggregate: boolean;
|
|
229
|
+
supersedes: string[];
|
|
230
|
+
};
|
|
231
|
+
topics(): number[];
|
|
232
|
+
clear(topicId: number): void;
|
|
233
|
+
}
|
|
234
|
+
/** Honest expiry wording (§4.2): a definite non-delivery vs an unknown one. */
|
|
235
|
+
export declare function expiredForwardWording(row: HeldOperationRow): string;
|
|
236
|
+
//# sourceMappingURL=OriginForwardToHolder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OriginForwardToHolder.d.ts","sourceRoot":"","sources":["../../../src/messaging/telegram-origin/OriginForwardToHolder.ts"],"names":[],"mappings":"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"}
|