@open-everywhere/provider-discord 0.5.0 → 0.6.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.
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
// that already ran, carrying the one "This should not have run" button and never a decision one.
|
|
20
20
|
|
|
21
21
|
import type { CardOptionTone, PendingActionRow } from "@open-everywhere/core/agent/adapter-api.js";
|
|
22
|
-
import { approvalLabel, pendingCardLayout, plainSummaryForRow } from "@open-everywhere/core/agent/adapter-api.js";
|
|
22
|
+
import { approvalLabel, optionsWithoutConfirm, pendingCardLayout, plainSummaryForRow } from "@open-everywhere/core/agent/adapter-api.js";
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Every approval button custom_id this feature owns starts with this. Deliberately distinct
|
|
@@ -120,12 +120,13 @@ const OPTION_STYLE: Record<CardOptionTone, number> = { primary: BUTTON_STYLE_SUC
|
|
|
120
120
|
|
|
121
121
|
/**
|
|
122
122
|
* The card for a still-pending action: the plain sentence, the summary, "requested by / expires", and one button per layout option, each carrying the pending id + org in its custom_id (see the file header for why the org rides the custom_id on Discord). Mirrors card.ts's pendingCardBlocks.
|
|
123
|
-
* The OPTIONS come from core's card layout (OPE-53, OPE-2363: only a ROUTINE's card gets the middle grant button), so Slack, Teams and Discord can never disagree
|
|
123
|
+
* The OPTIONS come from core's card layout (OPE-53, OPE-2363: only a ROUTINE's card gets the middle grant button), so Slack, Teams and Discord can never disagree. OPE-2456's rule option needs a confirmation before the click, which a Discord button cannot show, so it is left out.
|
|
124
124
|
*/
|
|
125
125
|
export function pendingDiscordCard(row: PendingActionRow, summaryLines: readonly string[]): DiscordCardMessage {
|
|
126
126
|
const layout = pendingCardLayout(row, summaryLines);
|
|
127
127
|
const content = cardBody(row, summaryLines, `-# Requested by <@${layout.requestedBy}> · ${layout.expiry}`);
|
|
128
|
-
|
|
128
|
+
// A Discord button sends its click with no confirmation first, so the rule option (OPE-2456) is left out here.
|
|
129
|
+
const buttons: DiscordComponent[] = optionsWithoutConfirm(layout.options).map((o) => ({
|
|
129
130
|
type: COMPONENT_BUTTON,
|
|
130
131
|
style: OPTION_STYLE[o.tone],
|
|
131
132
|
label: o.label,
|
|
@@ -52,7 +52,7 @@ export declare function parseDiscordApprovalCustomId(customId: string): {
|
|
|
52
52
|
} | null;
|
|
53
53
|
/**
|
|
54
54
|
* The card for a still-pending action: the plain sentence, the summary, "requested by / expires", and one button per layout option, each carrying the pending id + org in its custom_id (see the file header for why the org rides the custom_id on Discord). Mirrors card.ts's pendingCardBlocks.
|
|
55
|
-
* The OPTIONS come from core's card layout (OPE-53, OPE-2363: only a ROUTINE's card gets the middle grant button), so Slack, Teams and Discord can never disagree
|
|
55
|
+
* The OPTIONS come from core's card layout (OPE-53, OPE-2363: only a ROUTINE's card gets the middle grant button), so Slack, Teams and Discord can never disagree. OPE-2456's rule option needs a confirmation before the click, which a Discord button cannot show, so it is left out.
|
|
56
56
|
*/
|
|
57
57
|
export declare function pendingDiscordCard(row: PendingActionRow, summaryLines: readonly string[]): DiscordCardMessage;
|
|
58
58
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord-card.d.ts","sourceRoot":"","sources":["../../../agent/approvals/discord-card.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAGnG;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AAEzD,uHAAuH;AACvH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAYzC;4FAC4F;AAC5F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,6FAA6F;AAC7F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAClD;AAED;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,GAAG,YAAY,CAAC;AAM9F;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,uBAAuB,GAAG,MAAM,CAQ7G;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAcpI;AASD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"discord-card.d.ts","sourceRoot":"","sources":["../../../agent/approvals/discord-card.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAGnG;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AAEzD,uHAAuH;AACvH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAYzC;4FAC4F;AAC5F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,6FAA6F;AAC7F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAClD;AAED;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,GAAG,YAAY,CAAC;AAM9F;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,uBAAuB,GAAG,MAAM,CAQ7G;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAcpI;AASD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CAW7G;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAkB1I;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAalI;AAKD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAOlE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGvF"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
// THREE renders live here, and only the first two are a card: the PENDING card (Approve/Reject), the
|
|
18
18
|
// DECIDED card (no buttons), and the JUDGE-LIFT NOTICE (OPE-1103) — a review surface for an action
|
|
19
19
|
// that already ran, carrying the one "This should not have run" button and never a decision one.
|
|
20
|
-
import { approvalLabel, pendingCardLayout, plainSummaryForRow } from "@open-everywhere/core/agent/adapter-api.js";
|
|
20
|
+
import { approvalLabel, optionsWithoutConfirm, pendingCardLayout, plainSummaryForRow } from "@open-everywhere/core/agent/adapter-api.js";
|
|
21
21
|
/**
|
|
22
22
|
* Every approval button custom_id this feature owns starts with this. Deliberately distinct
|
|
23
23
|
* from BOTH the Slack action_id prefix ("oe_approval:" — a different wire format, keeping
|
|
@@ -90,12 +90,13 @@ function cardBody(row, summaryLines, footer) {
|
|
|
90
90
|
const OPTION_STYLE = { primary: BUTTON_STYLE_SUCCESS, danger: BUTTON_STYLE_DANGER, neutral: BUTTON_STYLE_SECONDARY };
|
|
91
91
|
/**
|
|
92
92
|
* The card for a still-pending action: the plain sentence, the summary, "requested by / expires", and one button per layout option, each carrying the pending id + org in its custom_id (see the file header for why the org rides the custom_id on Discord). Mirrors card.ts's pendingCardBlocks.
|
|
93
|
-
* The OPTIONS come from core's card layout (OPE-53, OPE-2363: only a ROUTINE's card gets the middle grant button), so Slack, Teams and Discord can never disagree
|
|
93
|
+
* The OPTIONS come from core's card layout (OPE-53, OPE-2363: only a ROUTINE's card gets the middle grant button), so Slack, Teams and Discord can never disagree. OPE-2456's rule option needs a confirmation before the click, which a Discord button cannot show, so it is left out.
|
|
94
94
|
*/
|
|
95
95
|
export function pendingDiscordCard(row, summaryLines) {
|
|
96
96
|
const layout = pendingCardLayout(row, summaryLines);
|
|
97
97
|
const content = cardBody(row, summaryLines, `-# Requested by <@${layout.requestedBy}> · ${layout.expiry}`);
|
|
98
|
-
|
|
98
|
+
// A Discord button sends its click with no confirmation first, so the rule option (OPE-2456) is left out here.
|
|
99
|
+
const buttons = optionsWithoutConfirm(layout.options).map((o) => ({
|
|
99
100
|
type: COMPONENT_BUTTON,
|
|
100
101
|
style: OPTION_STYLE[o.tone],
|
|
101
102
|
label: o.label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord-card.js","sourceRoot":"","sources":["../../../agent/approvals/discord-card.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,uFAAuF;AACvF,yFAAyF;AACzF,yFAAyF;AACzF,4EAA4E;AAC5E,EAAE;AACF,0FAA0F;AAC1F,2FAA2F;AAC3F,kFAAkF;AAClF,8CAA8C;AAC9C,2FAA2F;AAC3F,2FAA2F;AAC3F,wFAAwF;AACxF,yFAAyF;AACzF,+EAA+E;AAC/E,EAAE;AACF,qGAAqG;AACrG,mGAAmG;AACnG,iGAAiG;AAGjG,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"discord-card.js","sourceRoot":"","sources":["../../../agent/approvals/discord-card.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-everywhere/provider-discord",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Open Everywhere Discord provider — Discord channel and DM surfaces, gateway wiring, identity mapping and approval cards.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
"test": "echo 'provider-discord: its test suite runs at the APP TIER (root scripts/) because the discord surface composes deeply with core internals (a custom gateway, admin approval cards, guild-admin bypass, routine dispatch) — see the root test chain (test:discord*, test:scenarios*, test:oe-commands, and the read/dispatch/audit/wake integration tests). This keeps the core adapter-api barrel a small port surface rather than exporting test-only internals.'"
|
|
169
169
|
},
|
|
170
170
|
"dependencies": {
|
|
171
|
-
"@open-everywhere/core": "0.
|
|
171
|
+
"@open-everywhere/core": "0.6.0",
|
|
172
172
|
"zod": "4.5.4"
|
|
173
173
|
},
|
|
174
174
|
"peerDependencies": {
|