cli-jaw 2.2.25 → 2.3.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/README.md +5 -2
- package/dist/bin/cli-jaw.js +6 -1
- package/dist/bin/cli-jaw.js.map +1 -1
- package/dist/bin/commands/doctor.js +39 -18
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +82 -23
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/messaging.js +262 -0
- package/dist/bin/commands/messaging.js.map +1 -0
- package/dist/server.js +30 -6
- package/dist/server.js.map +1 -1
- package/dist/src/cli/commands.js +6 -2
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers/remote-session-commands.js +94 -0
- package/dist/src/cli/handlers/remote-session-commands.js.map +1 -0
- package/dist/src/command-contract/catalog.js +1 -1
- package/dist/src/command-contract/catalog.js.map +1 -1
- package/dist/src/core/chat-sessions.js +4 -0
- package/dist/src/core/chat-sessions.js.map +1 -1
- package/dist/src/core/config.js +63 -22
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +6 -0
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/dispatch-approval-ingress.js +45 -3
- package/dist/src/core/dispatch-approval-ingress.js.map +1 -1
- package/dist/src/core/dispatch-approval.js +46 -0
- package/dist/src/core/dispatch-approval.js.map +1 -1
- package/dist/src/core/logger.js +67 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/session-generation.js +74 -0
- package/dist/src/core/session-generation.js.map +1 -0
- package/dist/src/discord/bot.js +91 -5
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/commands.js +34 -1
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/discord/forwarder.js +4 -1
- package/dist/src/discord/forwarder.js.map +1 -1
- package/dist/src/discord/send-only-client.js +14 -7
- package/dist/src/discord/send-only-client.js.map +1 -1
- package/dist/src/messaging/access-policy.js +26 -0
- package/dist/src/messaging/access-policy.js.map +1 -0
- package/dist/src/messaging/approval-presentation.js +89 -0
- package/dist/src/messaging/approval-presentation.js.map +1 -0
- package/dist/src/messaging/channel-adapter.js +47 -0
- package/dist/src/messaging/channel-adapter.js.map +1 -0
- package/dist/src/messaging/channel-capabilities.js +47 -15
- package/dist/src/messaging/channel-capabilities.js.map +1 -1
- package/dist/src/messaging/channel-health.js +23 -3
- package/dist/src/messaging/channel-health.js.map +1 -1
- package/dist/src/messaging/delivery-outcome.js +12 -0
- package/dist/src/messaging/delivery-outcome.js.map +1 -1
- package/dist/src/messaging/durable-ingress.js +458 -0
- package/dist/src/messaging/durable-ingress.js.map +1 -0
- package/dist/src/messaging/effect-once.js +204 -0
- package/dist/src/messaging/effect-once.js.map +1 -0
- package/dist/src/messaging/inbound-envelope.js +168 -0
- package/dist/src/messaging/inbound-envelope.js.map +1 -0
- package/dist/src/messaging/ingress-audit.js +41 -0
- package/dist/src/messaging/ingress-audit.js.map +1 -0
- package/dist/src/messaging/ingress-generation.js +22 -0
- package/dist/src/messaging/ingress-generation.js.map +1 -0
- package/dist/src/messaging/metrics.js +69 -0
- package/dist/src/messaging/metrics.js.map +1 -0
- package/dist/src/messaging/outbound-outbox.js +184 -0
- package/dist/src/messaging/outbound-outbox.js.map +1 -0
- package/dist/src/messaging/remote-command-context.js +30 -0
- package/dist/src/messaging/remote-command-context.js.map +1 -0
- package/dist/src/messaging/retry.js +11 -2
- package/dist/src/messaging/retry.js.map +1 -1
- package/dist/src/messaging/runtime.js +129 -30
- package/dist/src/messaging/runtime.js.map +1 -1
- package/dist/src/messaging/send.js +31 -6
- package/dist/src/messaging/send.js.map +1 -1
- package/dist/src/messaging/trace-context.js +56 -0
- package/dist/src/messaging/trace-context.js.map +1 -0
- package/dist/src/messaging/types.js +39 -1
- package/dist/src/messaging/types.js.map +1 -1
- package/dist/src/routes/orchestrate.js +10 -3
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/settings.js +26 -1
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/slack/bot.js +182 -70
- package/dist/src/slack/bot.js.map +1 -1
- package/dist/src/slack/commands.js +16 -1
- package/dist/src/slack/commands.js.map +1 -1
- package/dist/src/slack/format.js +4 -1
- package/dist/src/slack/format.js.map +1 -1
- package/dist/src/slack/manifest.js +5 -0
- package/dist/src/slack/manifest.js.map +1 -1
- package/dist/src/slack/send-handler.js +26 -4
- package/dist/src/slack/send-handler.js.map +1 -1
- package/dist/src/slack/send-only-client.js +26 -2
- package/dist/src/slack/send-only-client.js.map +1 -1
- package/dist/src/slack/socket.js +36 -13
- package/dist/src/slack/socket.js.map +1 -1
- package/dist/src/telegram/bot.js +122 -14
- package/dist/src/telegram/bot.js.map +1 -1
- package/package.json +4 -1
- package/public/dist/assets/ChannelEnablementControl-Da_t_jq6.js +1 -0
- package/public/dist/assets/ChannelsDiscord-kNjCCJcA.js +1 -0
- package/public/dist/assets/ChannelsSlack-BOuoCfeN.js +1 -0
- package/public/dist/assets/ChannelsTelegram-DBIFDz4R.js +1 -0
- package/public/dist/assets/{app-DUbf-v7B.js → app-TWwXw3iD.js} +4 -4
- package/public/dist/assets/bgtask-badge-BhzSqQHG.js +1 -0
- package/public/dist/assets/{bgtask-badge-jIH69Dp3.js → bgtask-badge-DaAUnoKD.js} +1 -1
- package/public/dist/assets/{employees-BNy8a6XX.js → employees-BFKkaVAe.js} +1 -1
- package/public/dist/assets/iframe-renderer-BxEzdKIA.js +1 -0
- package/public/dist/assets/{iframe-renderer-C6Zwg9w4.js → iframe-renderer-CvnKi77F.js} +2 -2
- package/public/dist/assets/{manager-DzCR6Pam.js → manager-BTpvAFwX.js} +1 -1
- package/public/dist/assets/memory-DHOtCiw5.js +1 -0
- package/public/dist/assets/{memory-C4O44HMr.js → memory-db_s-38T.js} +1 -1
- package/public/dist/assets/{message-history-DCxD21J1.js → message-history-BX9shNKA.js} +1 -1
- package/public/dist/assets/message-history-DaSxkyy0.js +1 -0
- package/public/dist/assets/{render-A--hkukv.js → render-DZnFK8Kv.js} +1 -1
- package/public/dist/assets/{settings-3ZdoKHIf.js → settings-BuFMKcQ-.js} +1 -1
- package/public/dist/assets/settings-DotRDITm.js +1 -0
- package/public/dist/assets/{settings-core-CQe1uP6x.js → settings-core-3fj0DVoa.js} +17 -17
- package/public/dist/assets/settings-core-DohSnMad.js +1 -0
- package/public/dist/assets/{sidebar-DxFp_449.js → sidebar-D5TP7TCO.js} +3 -3
- package/public/dist/assets/{skills-BU4q8Q8n.js → skills-CQzHFYJS.js} +1 -1
- package/public/dist/assets/skills-DZHEvl1x.js +1 -0
- package/public/dist/assets/{slash-commands-BiXOgZ5B.js → slash-commands-BWEWWf-c.js} +1 -1
- package/public/dist/assets/slash-commands-CuJdloNC.js +1 -0
- package/public/dist/assets/{trace-drawer-2BTQCor6.js → trace-drawer-CBR-PZB4.js} +1 -1
- package/public/dist/assets/ui-CWl27eMl.js +1 -0
- package/public/dist/assets/{ui-Csy42uNW.js → ui-Ca1Q-VFQ.js} +1 -1
- package/public/dist/index.html +1 -1
- package/public/dist/manager/index.html +1 -1
- package/public/js/features/settings-channel.ts +35 -5
- package/public/js/features/settings-types.ts +7 -0
- package/public/js/features/transport-status-row.ts +23 -4
- package/public/manager/src/settings/pages/ChannelsDiscord.tsx +39 -11
- package/public/manager/src/settings/pages/ChannelsSlack.tsx +24 -7
- package/public/manager/src/settings/pages/ChannelsTelegram.tsx +38 -10
- package/public/manager/src/settings/pages/components/ChannelEnablementControl.tsx +98 -0
- package/public/manager/src/settings/pages/components/TransportStatusChips.tsx +23 -2
- package/scripts/docs/extract-commands.mts +3 -0
- package/scripts/generate-channel-capability-table.mts +161 -0
- package/scripts/promote-to-main.sh +175 -0
- package/scripts/release-gates.mjs +57 -3
- package/scripts/release-preview.sh +19 -0
- package/scripts/require-release-evidence.mjs +35 -1
- package/scripts/validate-messaging-certification.mts +83 -0
- package/scripts/write-messaging-certification.mts +65 -0
- package/public/dist/assets/ChannelsDiscord-D4fD-9hP.js +0 -1
- package/public/dist/assets/ChannelsSlack-_KBwRonM.js +0 -1
- package/public/dist/assets/ChannelsTelegram-tihzSWVE.js +0 -1
- package/public/dist/assets/TransportStatusChips-B0NR0ljO.js +0 -1
- package/public/dist/assets/bgtask-badge-B8KhuBa7.js +0 -1
- package/public/dist/assets/iframe-renderer-DBmV8gCQ.js +0 -1
- package/public/dist/assets/memory-Dt_Ji6aP.js +0 -1
- package/public/dist/assets/message-history-DyISauiv.js +0 -1
- package/public/dist/assets/settings-C6Pku2GC.js +0 -1
- package/public/dist/assets/settings-core-DqwLJkgP.js +0 -1
- package/public/dist/assets/skills-x2gH-1Ry.js +0 -1
- package/public/dist/assets/slash-commands-s8eR7Kd1.js +0 -1
- package/public/dist/assets/ui-CB0L33o0.js +0 -1
- package/scripts/release.sh +0 -224
- /package/public/dist/assets/{HealthBadge-CUaJ1PQH.js → HealthBadge-CiNMS-1k.js} +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Approval keyboards for operator DMs.
|
|
2
|
+
// Telegram: inline keyboard callback_data `appr:<uuid>` / `aprd:<uuid>` (64-byte cap).
|
|
3
|
+
// Discord: action-row buttons with the same custom_id prefix (100-byte cap).
|
|
4
|
+
// Slack operator DMs: Block Kit actions with the same action_id prefix.
|
|
5
|
+
// Generic ChannelSendRequest keyboard is still unsupported.
|
|
6
|
+
//
|
|
7
|
+
// Ids never embed jti or digest.
|
|
8
|
+
import { dispatchApprovalStore } from '../core/dispatch-approval.js';
|
|
9
|
+
const APPROVE_PREFIX = 'appr:';
|
|
10
|
+
const DENY_PREFIX = 'aprd:';
|
|
11
|
+
export function parseApprovalCallbackData(data) {
|
|
12
|
+
if (data.startsWith(APPROVE_PREFIX))
|
|
13
|
+
return { action: 'approve', opaqueId: data.slice(APPROVE_PREFIX.length) };
|
|
14
|
+
if (data.startsWith(DENY_PREFIX))
|
|
15
|
+
return { action: 'deny', opaqueId: data.slice(DENY_PREFIX.length) };
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
function issuePair(record, operator) {
|
|
19
|
+
const sessionGeneration = operator.sessionGeneration ?? 0;
|
|
20
|
+
const approveId = dispatchApprovalStore.issueApprovalCallback(record.jti, {
|
|
21
|
+
actorId: operator.actorId,
|
|
22
|
+
conversationKey: operator.conversationKey,
|
|
23
|
+
sessionGeneration,
|
|
24
|
+
action: 'approve',
|
|
25
|
+
});
|
|
26
|
+
const denyId = dispatchApprovalStore.issueApprovalCallback(record.jti, {
|
|
27
|
+
actorId: operator.actorId,
|
|
28
|
+
conversationKey: operator.conversationKey,
|
|
29
|
+
sessionGeneration,
|
|
30
|
+
action: 'deny',
|
|
31
|
+
});
|
|
32
|
+
if (!approveId || !denyId)
|
|
33
|
+
return null;
|
|
34
|
+
return { approveData: APPROVE_PREFIX + approveId, denyData: DENY_PREFIX + denyId };
|
|
35
|
+
}
|
|
36
|
+
export function presentTelegramApproval(record, operator, text) {
|
|
37
|
+
const pair = issuePair(record, operator);
|
|
38
|
+
if (!pair || pair.approveData.length > 64 || pair.denyData.length > 64) {
|
|
39
|
+
return { text, telegramKeyboard: null, discordComponents: null, slackBlocks: null };
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
text,
|
|
43
|
+
telegramKeyboard: {
|
|
44
|
+
inline_keyboard: [[
|
|
45
|
+
{ text: 'Approve', callback_data: pair.approveData },
|
|
46
|
+
{ text: 'Deny', callback_data: pair.denyData },
|
|
47
|
+
]],
|
|
48
|
+
},
|
|
49
|
+
discordComponents: null,
|
|
50
|
+
slackBlocks: null,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function presentDiscordApproval(record, operator, text) {
|
|
54
|
+
const pair = issuePair(record, operator);
|
|
55
|
+
if (!pair || pair.approveData.length > 100 || pair.denyData.length > 100) {
|
|
56
|
+
return { text, telegramKeyboard: null, discordComponents: null, slackBlocks: null };
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
text,
|
|
60
|
+
telegramKeyboard: null,
|
|
61
|
+
discordComponents: [{
|
|
62
|
+
type: 1,
|
|
63
|
+
components: [
|
|
64
|
+
{ type: 2, style: 3, custom_id: pair.approveData, label: 'Approve' },
|
|
65
|
+
{ type: 2, style: 4, custom_id: pair.denyData, label: 'Deny' },
|
|
66
|
+
],
|
|
67
|
+
}],
|
|
68
|
+
slackBlocks: null,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function presentSlackApproval(record, operator, text) {
|
|
72
|
+
const pair = issuePair(record, operator);
|
|
73
|
+
if (!pair || pair.approveData.length > 255 || pair.denyData.length > 255) {
|
|
74
|
+
return { text, telegramKeyboard: null, discordComponents: null, slackBlocks: null };
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
text,
|
|
78
|
+
telegramKeyboard: null,
|
|
79
|
+
discordComponents: null,
|
|
80
|
+
slackBlocks: [{
|
|
81
|
+
type: 'actions',
|
|
82
|
+
elements: [
|
|
83
|
+
{ type: 'button', text: { type: 'plain_text', text: 'Approve' }, action_id: pair.approveData, style: 'primary' },
|
|
84
|
+
{ type: 'button', text: { type: 'plain_text', text: 'Deny' }, action_id: pair.denyData, style: 'danger' },
|
|
85
|
+
],
|
|
86
|
+
}],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=approval-presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-presentation.js","sourceRoot":"","sources":["../../../src/messaging/approval-presentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// ─── Channel Adapter Contract ────────────────────────
|
|
2
|
+
// The closed port every messaging transport is reached through. It lists the whole
|
|
3
|
+
// callable surface: no method bag, no vendor client handed out, no capability
|
|
4
|
+
// inferred from object shape. A method whose capability is false still exists and
|
|
5
|
+
// answers with an `unsupported` receipt, so a caller can never probe
|
|
6
|
+
// `if (adapter.editText)` and get a different answer than the declaration gives.
|
|
7
|
+
import { unsupportedReceipt } from './delivery-outcome.js';
|
|
8
|
+
/** Capability key -> operation. The key names a feature, the method names an action,
|
|
9
|
+
* and this is the one place that says which pairs with which. The conformance suite
|
|
10
|
+
* walks it, so a new capability without an operation fails there rather than drifting. */
|
|
11
|
+
export const CAPABILITY_OPERATIONS = {
|
|
12
|
+
sendText: 'sendText',
|
|
13
|
+
editText: 'editText',
|
|
14
|
+
deleteMessage: 'deleteMessage',
|
|
15
|
+
reaction: 'reaction',
|
|
16
|
+
typing: 'typing',
|
|
17
|
+
fileUpload: 'fileUpload',
|
|
18
|
+
voice: 'voice',
|
|
19
|
+
interactiveActions: 'interactiveActions',
|
|
20
|
+
};
|
|
21
|
+
/** Capability keys that describe a property rather than a callable operation. */
|
|
22
|
+
export const PROPERTY_CAPABILITY_KEYS = [
|
|
23
|
+
'threads',
|
|
24
|
+
'durableIngress',
|
|
25
|
+
'replayableTransport',
|
|
26
|
+
'maxMessageChars',
|
|
27
|
+
];
|
|
28
|
+
/** Adapter method for each operation capability. Lets a test call the real method
|
|
29
|
+
* from the declaration instead of hand-maintaining a second list. */
|
|
30
|
+
export const CAPABILITY_METHODS = {
|
|
31
|
+
sendText: 'sendText',
|
|
32
|
+
editText: 'editText',
|
|
33
|
+
deleteMessage: 'deleteMessage',
|
|
34
|
+
reaction: 'addReaction',
|
|
35
|
+
typing: 'setTyping',
|
|
36
|
+
fileUpload: 'uploadFile',
|
|
37
|
+
voice: 'sendVoice',
|
|
38
|
+
interactiveActions: 'sendInteractive',
|
|
39
|
+
};
|
|
40
|
+
/** Guard an operation against its own declaration. An adapter calls this first so a
|
|
41
|
+
* false capability can never reach a vendor request. */
|
|
42
|
+
export function refuseUndeclared(adapter, key) {
|
|
43
|
+
if (adapter.capabilities[key])
|
|
44
|
+
return null;
|
|
45
|
+
return unsupportedReceipt(adapter.channel, adapter.accountId, CAPABILITY_OPERATIONS[key]);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=channel-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-adapter.js","sourceRoot":"","sources":["../../../src/messaging/channel-adapter.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,mFAAmF;AACnF,8EAA8E;AAC9E,kFAAkF;AAClF,qEAAqE;AACrE,iFAAiF;AAIjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA2E3D;;2FAE2F;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,kBAAkB,EAAE,oBAAoB;CACS,CAAC;AAItD,iFAAiF;AACjF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,SAAS;IACT,gBAAgB;IAChB,qBAAqB;IACrB,iBAAiB;CACX,CAAC;AAEX;sEACsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,WAAW;IAClB,kBAAkB,EAAE,iBAAiB;CACgC,CAAC;AAE1E;yDACyD;AACzD,MAAM,UAAU,gBAAgB,CAC5B,OAAuE,EACvE,GAA2B;IAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9F,CAAC"}
|
|
@@ -1,30 +1,62 @@
|
|
|
1
|
+
// Kept as literals rather than imported from the chunkers: this module is
|
|
2
|
+
// dependency-light on purpose, and importing src/discord/forwarder.ts would drag
|
|
3
|
+
// discord.js in behind it. `capability-limits.test.ts` asserts these against the
|
|
4
|
+
// constants the chunkers actually use, so the two cannot drift apart silently.
|
|
5
|
+
export const TELEGRAM_MAX_MESSAGE_CHARS = 32_000;
|
|
6
|
+
export const DISCORD_MAX_MESSAGE_CHARS = 2_000;
|
|
7
|
+
export const SLACK_MAX_MESSAGE_CHARS = 3_900;
|
|
1
8
|
const CAPABILITIES = {
|
|
2
9
|
telegram: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
10
|
+
sendText: true,
|
|
11
|
+
editText: true,
|
|
12
|
+
deleteMessage: true,
|
|
13
|
+
reaction: false,
|
|
14
|
+
typing: true,
|
|
6
15
|
fileUpload: true,
|
|
7
|
-
|
|
8
|
-
|
|
16
|
+
voice: true,
|
|
17
|
+
threads: true,
|
|
18
|
+
interactiveActions: true,
|
|
19
|
+
durableIngress: true,
|
|
20
|
+
replayableTransport: true,
|
|
21
|
+
maxMessageChars: TELEGRAM_MAX_MESSAGE_CHARS,
|
|
9
22
|
},
|
|
10
23
|
discord: {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
24
|
+
sendText: true,
|
|
25
|
+
editText: false,
|
|
26
|
+
deleteMessage: false,
|
|
27
|
+
reaction: false,
|
|
28
|
+
typing: true,
|
|
14
29
|
fileUpload: true,
|
|
15
|
-
|
|
16
|
-
|
|
30
|
+
voice: true,
|
|
31
|
+
threads: true,
|
|
32
|
+
interactiveActions: false,
|
|
33
|
+
durableIngress: true,
|
|
34
|
+
replayableTransport: true,
|
|
35
|
+
maxMessageChars: DISCORD_MAX_MESSAGE_CHARS,
|
|
17
36
|
},
|
|
18
37
|
slack: {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
38
|
+
sendText: true,
|
|
39
|
+
editText: true,
|
|
40
|
+
deleteMessage: true,
|
|
41
|
+
reaction: false,
|
|
42
|
+
typing: false,
|
|
22
43
|
fileUpload: true,
|
|
23
|
-
|
|
24
|
-
|
|
44
|
+
voice: true,
|
|
45
|
+
threads: true,
|
|
46
|
+
interactiveActions: false,
|
|
47
|
+
durableIngress: true,
|
|
48
|
+
replayableTransport: true,
|
|
49
|
+
maxMessageChars: SLACK_MAX_MESSAGE_CHARS,
|
|
25
50
|
},
|
|
26
51
|
};
|
|
52
|
+
/** Every key of the closed set, in declaration order. The conformance suite uses
|
|
53
|
+
* this to prove a channel declares all of them and nothing else. */
|
|
54
|
+
export const CHANNEL_CAPABILITY_KEYS = Object.keys(CAPABILITIES.telegram);
|
|
27
55
|
export function capabilitiesFor(channel) {
|
|
28
56
|
return CAPABILITIES[channel];
|
|
29
57
|
}
|
|
58
|
+
/** Read-only view for the matrix generator, which must not reach into module state. */
|
|
59
|
+
export function allChannelCapabilities() {
|
|
60
|
+
return CAPABILITIES;
|
|
61
|
+
}
|
|
30
62
|
//# sourceMappingURL=channel-capabilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-capabilities.js","sourceRoot":"","sources":["../../../src/messaging/channel-capabilities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel-capabilities.js","sourceRoot":"","sources":["../../../src/messaging/channel-capabilities.ts"],"names":[],"mappings":"AA8BA,0EAA0E;AAC1E,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C,MAAM,YAAY,GAAG;IACjB,QAAQ,EAAE;QACN,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,0BAA0B;KAC9C;IACD,OAAO,EAAE;QACL,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,KAAK;QACzB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,yBAAyB;KAC7C;IACD,KAAK,EAAE;QACH,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,KAAK;QACzB,cAAc,EAAE,IAAI;QACpB,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,uBAAuB;KAC3C;CAC6D,CAAC;AAEnE;qEACqE;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAA6C,CAAC;AAEtH,MAAM,UAAU,eAAe,CAAC,OAAyB;IACrD,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,sBAAsB;IAClC,OAAO,YAAY,CAAC;AACxB,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { settings } from '../core/config.js';
|
|
2
2
|
import { shouldAttachSlack } from '../slack/events.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getHomeChannel, getRunningMessagingTransports, isMessagingTransportRunning, } from './runtime.js';
|
|
4
|
+
import { getIngressJournal } from './durable-ingress.js';
|
|
5
|
+
import { snapshotMetrics } from './metrics.js';
|
|
4
6
|
function telegramHasSendTarget() {
|
|
5
7
|
const tg = settings["telegram"];
|
|
6
8
|
if (tg?.allowedChatIds?.length)
|
|
@@ -29,7 +31,7 @@ function slackHasSendTarget() {
|
|
|
29
31
|
return Boolean(slackLast?.targetId);
|
|
30
32
|
}
|
|
31
33
|
export function getTransportCapability(channel) {
|
|
32
|
-
const activeInbound =
|
|
34
|
+
const activeInbound = isMessagingTransportRunning(channel);
|
|
33
35
|
if (channel === 'telegram') {
|
|
34
36
|
const tg = settings["telegram"];
|
|
35
37
|
const token = typeof tg?.token === 'string' ? tg.token.trim() : '';
|
|
@@ -81,12 +83,30 @@ export function getTransportCapability(channel) {
|
|
|
81
83
|
}
|
|
82
84
|
return { configured: true, activeInbound, sendCapable: true };
|
|
83
85
|
}
|
|
86
|
+
const EMPTY_INGRESS = {
|
|
87
|
+
received: 0, processing: 0, completed: 0, dead_letter: 0, oldestOpenReceivedAt: null,
|
|
88
|
+
};
|
|
89
|
+
export function buildIngressHealthSnapshot(journal = getIngressJournal()) {
|
|
90
|
+
if (!journal)
|
|
91
|
+
return { ...EMPTY_INGRESS };
|
|
92
|
+
const counts = journal.counts();
|
|
93
|
+
return {
|
|
94
|
+
received: counts.received,
|
|
95
|
+
processing: counts.processing,
|
|
96
|
+
completed: counts.completed,
|
|
97
|
+
dead_letter: counts.dead_letter,
|
|
98
|
+
oldestOpenReceivedAt: journal.oldestOpenReceivedAt(),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
84
101
|
export function buildChannelHealthSnapshot() {
|
|
85
102
|
return {
|
|
86
|
-
activeInbound:
|
|
103
|
+
activeInbound: getHomeChannel(),
|
|
104
|
+
activeInboundChannels: getRunningMessagingTransports(),
|
|
87
105
|
telegram: getTransportCapability('telegram'),
|
|
88
106
|
discord: getTransportCapability('discord'),
|
|
89
107
|
slack: getTransportCapability('slack'),
|
|
108
|
+
ingress: buildIngressHealthSnapshot(),
|
|
109
|
+
metrics: snapshotMetrics(),
|
|
90
110
|
};
|
|
91
111
|
}
|
|
92
112
|
//# sourceMappingURL=channel-health.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-health.js","sourceRoot":"","sources":["../../../src/messaging/channel-health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"channel-health.js","sourceRoot":"","sources":["../../../src/messaging/channel-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { classifySendFailure, retryAfterMs, } from './retry.js';
|
|
2
|
+
/** A refusal issued before any vendor call. Not a delivery failure: nothing was
|
|
3
|
+
* dispatched, so `ambiguous` is false and no `DeliveryFailure` is attached. */
|
|
4
|
+
export function unsupportedReceipt(channel, accountId, operation, reason = 'capability_not_declared') {
|
|
5
|
+
return {
|
|
6
|
+
channel,
|
|
7
|
+
accountId,
|
|
8
|
+
platformMessageId: null,
|
|
9
|
+
status: 'unsupported',
|
|
10
|
+
ambiguous: false,
|
|
11
|
+
unsupported: { operation, reason },
|
|
12
|
+
};
|
|
13
|
+
}
|
|
2
14
|
function errorInput(err, channel) {
|
|
3
15
|
const record = err && typeof err === 'object'
|
|
4
16
|
? err
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-outcome.js","sourceRoot":"","sources":["../../../src/messaging/delivery-outcome.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,YAAY,GAEf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery-outcome.js","sourceRoot":"","sources":["../../../src/messaging/delivery-outcome.ts"],"names":[],"mappings":"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"}
|