@open-everywhere/provider-discord 0.8.0 → 0.9.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/agent/approvals/discord-admin.ts +5 -4
- package/agent/approvals/discord-flow.ts +2 -1
- package/agent/channels/discord-backscroll.ts +2 -1
- package/agent/channels/discord-bot-name.ts +2 -1
- package/agent/channels/discord-channel-info.ts +3 -1
- package/agent/channels/discord-credentials.ts +41 -0
- package/agent/channels/discord-directory.ts +2 -1
- package/agent/channels/discord-events.ts +3 -3
- package/agent/channels/discord-front.ts +37 -3
- package/agent/channels/discord-gateway.ts +10 -9
- package/agent/channels/discord-invite.ts +2 -1
- package/agent/channels/discord-message-ops.ts +6 -5
- package/agent/channels/discord-post.ts +10 -9
- package/agent/channels/discord-read.ts +2 -1
- package/agent/channels/discord.ts +11 -4
- package/agent/commands/discord-command-sync.ts +13 -10
- package/agent/docs-generated.ts +55 -34
- package/agent/ops.ts +9 -4
- package/agent/register.ts +8 -4
- package/dist/agent/approvals/discord-admin.d.ts.map +1 -1
- package/dist/agent/approvals/discord-admin.js +5 -4
- package/dist/agent/approvals/discord-admin.js.map +1 -1
- package/dist/agent/approvals/discord-flow.d.ts.map +1 -1
- package/dist/agent/approvals/discord-flow.js +2 -1
- package/dist/agent/approvals/discord-flow.js.map +1 -1
- package/dist/agent/channels/discord-backscroll.d.ts.map +1 -1
- package/dist/agent/channels/discord-backscroll.js +2 -1
- package/dist/agent/channels/discord-backscroll.js.map +1 -1
- package/dist/agent/channels/discord-bot-name.d.ts.map +1 -1
- package/dist/agent/channels/discord-bot-name.js +2 -1
- package/dist/agent/channels/discord-bot-name.js.map +1 -1
- package/dist/agent/channels/discord-channel-info.d.ts.map +1 -1
- package/dist/agent/channels/discord-channel-info.js +2 -1
- package/dist/agent/channels/discord-channel-info.js.map +1 -1
- package/dist/agent/channels/discord-credentials.d.ts +13 -0
- package/dist/agent/channels/discord-credentials.d.ts.map +1 -0
- package/dist/agent/channels/discord-credentials.js +38 -0
- package/dist/agent/channels/discord-credentials.js.map +1 -0
- package/dist/agent/channels/discord-directory.d.ts.map +1 -1
- package/dist/agent/channels/discord-directory.js +2 -1
- package/dist/agent/channels/discord-directory.js.map +1 -1
- package/dist/agent/channels/discord-events.d.ts +1 -1
- package/dist/agent/channels/discord-events.d.ts.map +1 -1
- package/dist/agent/channels/discord-events.js +2 -2
- package/dist/agent/channels/discord-events.js.map +1 -1
- package/dist/agent/channels/discord-front.d.ts +18 -1
- package/dist/agent/channels/discord-front.d.ts.map +1 -1
- package/dist/agent/channels/discord-front.js +33 -2
- package/dist/agent/channels/discord-front.js.map +1 -1
- package/dist/agent/channels/discord-gateway.d.ts +3 -3
- package/dist/agent/channels/discord-gateway.d.ts.map +1 -1
- package/dist/agent/channels/discord-gateway.js +10 -9
- package/dist/agent/channels/discord-gateway.js.map +1 -1
- package/dist/agent/channels/discord-invite.d.ts.map +1 -1
- package/dist/agent/channels/discord-invite.js +2 -1
- package/dist/agent/channels/discord-invite.js.map +1 -1
- package/dist/agent/channels/discord-message-ops.d.ts.map +1 -1
- package/dist/agent/channels/discord-message-ops.js +6 -5
- package/dist/agent/channels/discord-message-ops.js.map +1 -1
- package/dist/agent/channels/discord-post.d.ts.map +1 -1
- package/dist/agent/channels/discord-post.js +10 -9
- package/dist/agent/channels/discord-post.js.map +1 -1
- package/dist/agent/channels/discord-read.d.ts.map +1 -1
- package/dist/agent/channels/discord-read.js +2 -1
- package/dist/agent/channels/discord-read.js.map +1 -1
- package/dist/agent/channels/discord.js +11 -4
- package/dist/agent/channels/discord.js.map +1 -1
- package/dist/agent/commands/discord-command-sync.d.ts +8 -7
- package/dist/agent/commands/discord-command-sync.d.ts.map +1 -1
- package/dist/agent/commands/discord-command-sync.js +13 -10
- package/dist/agent/commands/discord-command-sync.js.map +1 -1
- package/dist/agent/docs-generated.d.ts.map +1 -1
- package/dist/agent/docs-generated.js +55 -34
- package/dist/agent/docs-generated.js.map +1 -1
- package/dist/agent/ops.d.ts.map +1 -1
- package/dist/agent/ops.js +9 -4
- package/dist/agent/ops.js.map +1 -1
- package/dist/agent/register.d.ts.map +1 -1
- package/dist/agent/register.js +7 -5
- package/dist/agent/register.js.map +1 -1
- package/package.json +6 -2
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
import { assertSurfaceAllowed, bindFrom, resolvePartition, refutedReadAuthorIds, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
12
12
|
import { linesFromDiscordMessages } from "./discord-backscroll.js";
|
|
13
13
|
import { discordAuthorRoles } from "../approvals/discord-admin.js";
|
|
14
|
+
import { discordBotToken } from "./discord-credentials.js";
|
|
14
15
|
const DISCORD_CHANNEL_DEFAULT_LIMIT = 50;
|
|
15
16
|
const DISCORD_THREAD_DEFAULT_LIMIT = 100;
|
|
16
17
|
const DISCORD_MAX_PAGE = 100;
|
|
17
18
|
const liveDiscordRead = async (channelId, limit) => {
|
|
18
|
-
const token =
|
|
19
|
+
const token = await discordBotToken();
|
|
19
20
|
if (!token)
|
|
20
21
|
throw new Error("read: DISCORD_BOT_TOKEN is not set — the Discord read tools need the bot token.");
|
|
21
22
|
const qs = new URLSearchParams({ limit: String(Math.min(limit, DISCORD_MAX_PAGE)) }).toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord-read.js","sourceRoot":"","sources":["../../../agent/channels/discord-read.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,qGAAqG;AACrG,qGAAqG;AACrG,mFAAmF;AACnF,+FAA+F;AAC/F,0FAA0F;AAC1F,sFAAsF;AACtF,EAAE;AACF,gGAAgG;AAChG,6FAA6F;AAE7F,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,GAIrB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAyB,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"discord-read.js","sourceRoot":"","sources":["../../../agent/channels/discord-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
// derives a thinner, guild-scoped auth). Kept MINIMAL for launch — identity binding +
|
|
18
18
|
// dispatch only; no status-UX / onboarding extras (cf. slack.ts).
|
|
19
19
|
//
|
|
20
|
-
// Credentials:
|
|
21
|
-
//
|
|
22
|
-
//
|
|
20
|
+
// Credentials: the application id and the public key come from the `discord.applicationId` and
|
|
21
|
+
// `discord.publicKey` settings, and the bot token from `discordBotTokenForEve` (the DISCORD_BOT_TOKEN
|
|
22
|
+
// operator secret, ./discord-credentials.ts) — all OPE-2650, all passed below so eve never falls back
|
|
23
|
+
// to its own env names for them. Capturing the channel type / guild presence is a
|
|
23
24
|
// RAW-fact job; the security-critical interpretation (fail-closed to private) lives in
|
|
24
25
|
// the binding (discordVisibility).
|
|
25
26
|
//
|
|
@@ -36,8 +37,9 @@ import { discordChannel, } from "eve/channels/discord";
|
|
|
36
37
|
import { buildDiscordAuth, threadParentFromRawChannel, discordMemberPendingFromRaw } from "./discord-identity.js";
|
|
37
38
|
import { finalMessageActionForTurn, NO_REPLY_SENTINEL_REASON, auditNoReplySentinelObserved, isBareStop, consumeRepliedThisTurn, dropClosingProse, resolvePartition, authPrincipalId, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
38
39
|
import { withEndsTurnFinalChannel } from "@open-everywhere/core/agent/adapter-api.js";
|
|
39
|
-
import { frontDiscordChannel, INTERNAL_DISCORD_ROUTE } from "./discord-front.js";
|
|
40
|
+
import { discordAppCredentials, frontDiscordChannel, INTERNAL_DISCORD_ROUTE } from "./discord-front.js";
|
|
40
41
|
import { withDiscordEventsRoute } from "./discord-events.js";
|
|
42
|
+
import { discordBotTokenForEve } from "./discord-credentials.js";
|
|
41
43
|
// The audit partition for a terminal event, rebuilt from the LIVE session state the same
|
|
42
44
|
// way slack.ts rebuilds its own (the completion handler has no auth context): guild →
|
|
43
45
|
// workspace, channel → surface, via the REAL identity seam so rows land exactly where the
|
|
@@ -94,6 +96,11 @@ function authFromInteraction(interaction) {
|
|
|
94
96
|
const discordInteractionChannel = discordChannel({
|
|
95
97
|
// Internal mount — the public URL is the approval-click front (frontDiscordChannel below).
|
|
96
98
|
route: INTERNAL_DISCORD_ROUTE,
|
|
99
|
+
// 🔴 EVE MUST BE HANDED EVERY FIELD (OPE-2650). With a field missing, eve's `mergeCredentials` falls
|
|
100
|
+
// back to its own env read (DISCORD_APPLICATION_ID, DISCORD_PUBLIC_KEY, DISCORD_BOT_TOKEN) and never
|
|
101
|
+
// sees a setting or a value `oe secret set` stored. Functions, not values: a value read at module
|
|
102
|
+
// load would pin whatever was true at boot.
|
|
103
|
+
credentials: { ...discordAppCredentials(), botToken: discordBotTokenForEve },
|
|
97
104
|
// 🔴 QUEUE, NEVER STEER (OPE-412) — eve's default `steer` cancels the turn in flight when a
|
|
98
105
|
// message arrives. Same reasoning as the Slack channel; see slack.ts for the full note.
|
|
99
106
|
turnPolicy: "queue",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../../agent/channels/discord.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yFAAyF;AACzF,oFAAoF;AACpF,qFAAqF;AACrF,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,oFAAoF;AACpF,mFAAmF;AACnF,iFAAiF;AACjF,mFAAmF;AACnF,gFAAgF;AAChF,iFAAiF;AACjF,sFAAsF;AACtF,kEAAkE;AAClE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../../agent/channels/discord.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yFAAyF;AACzF,oFAAoF;AACpF,qFAAqF;AACrF,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,oFAAoF;AACpF,mFAAmF;AACnF,iFAAiF;AACjF,mFAAmF;AACnF,gFAAgF;AAChF,iFAAiF;AACjF,sFAAsF;AACtF,kEAAkE;AAClE,EAAE;AACF,+FAA+F;AAC/F,sGAAsG;AACtG,sGAAsG;AACtG,kFAAkF;AAClF,uFAAuF;AACvF,mCAAmC;AACnC,EAAE;AACF,yFAAyF;AACzF,4FAA4F;AAC5F,2FAA2F;AAC3F,2FAA2F;AAC3F,+FAA+F;AAC/F,EAAE;AACF,6FAA6F;AAC7F,6FAA6F;AAC7F,uFAAuF;AAEvF,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,2BAA2B,EAAkC,MAAM,uBAAuB,CAAC;AAClJ,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,UAAU,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAEhB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,yFAAyF;AACzF,sFAAsF;AACtF,0FAA0F;AAC1F,uFAAuF;AACvF,kFAAkF;AAClF,SAAS,sBAAsB,CAAC,KAA2D;IACzF,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC;YACtB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;SAClI,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,wFAAwF;AACxF,yFAAyF;AACzF,yFAAyF;AACzF,4EAA4E;AAC5E,SAAS,kBAAkB,CAAC,GAA4B;IACtD,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1B,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,GAAI,EAA8B,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sFAAsF;AACtF,kFAAkF;AAClF,wFAAwF;AACxF,wFAAwF;AACxF,wFAAwF;AACxF,mBAAmB;AACnB,SAAS,mBAAmB,CAAC,WAAsC;IACjE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,CAAC,mBAAmB;IAC5D,OAAO,gBAAgB,CAAC;QACtB,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC;QAChD,eAAe,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAAG,CAAC;QAC5D,0FAA0F;QAC1F,2FAA2F;QAC3F,sFAAsF;QACtF,aAAa,EAAE,2BAA2B,CAAC,WAAW,CAAC,GAAG,CAAC;KAC5D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,yBAAyB,GAAG,cAAc,CAAC;IAC/C,2FAA2F;IAC3F,KAAK,EAAE,sBAAsB;IAC7B,qGAAqG;IACrG,qGAAqG;IACrG,kGAAkG;IAClG,4CAA4C;IAC5C,WAAW,EAAE,EAAE,GAAG,qBAAqB,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IAC5E,4FAA4F;IAC5F,wFAAwF;IACxF,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,KAAK,EAAE,GAAmB,EAAE,WAAsC,EAAE,EAAE;QAC/E,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,mDAAmD;QACnF,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,EAAE;QACN,wFAAwF;QACxF,oFAAoF;QACpF,6FAA6F;QAC7F,qEAAqE;QACrE,EAAE;QACF,+EAA+E;QAC/E,qFAAqF;QACrF,8FAA8F;QAC9F,6FAA6F;QAC7F,8FAA8F;QAC9F,6FAA6F;QAC7F,4FAA4F;QAC5F,+FAA+F;QAC/F,cAAc;QACd,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC5C,sFAAsF;YACtF,gFAAgF;YAC/E,OAAO,CAAC,KAA4C,CAAC,kBAAkB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAChG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC;QACD,+EAA+E;QAC/E,8EAA8E;QAC9E,8EAA8E;QAC9E,qEAAqE;QACrE,+EAA+E;QAC/E,+EAA+E;QAC/E,sEAAsE;QACtE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAChD,MAAM,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,iEAAiE;YACrG,6FAA6F;YAC7F,8FAA8F;YAC9F,iBAAiB;YACjB,6FAA6F;YAC7F,2FAA2F;YAC3F,8FAA8F;YAC9F,+FAA+F;YAC/F,MAAM,MAAM,GAAI,GAA2D,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YAC/F,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClF,uFAAuF;YACvF,wFAAwF;YACxF,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB;gBAAE,OAAO;YACjD,mFAAmF;YACnF,mFAAmF;YACnF,0FAA0F;YAC1F,+DAA+D;YAC/D,MAAM,eAAe,GAAG,sBAAsB,CAAE,GAA2D,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAChI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,8EAA8E;gBAC9E,gFAAgF;gBAChF,oBAAoB;gBACpB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;oBACxE,OAAO,CAAC,GAAG,CAAC,6CAA6C,MAAM,CAAC,MAAM,+BAA+B,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,GAAG,CAAC,CAAC;gBAC1I,CAAC;gBACD,yFAAyF;gBACzF,0FAA0F;gBAC1F,4FAA4F;gBAC5F,EAAE;gBACF,wFAAwF;gBACxF,4FAA4F;gBAC5F,2FAA2F;gBAC3F,yFAAyF;gBACzF,sFAAsF;gBACtF,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,wBAAwB,EAAE,CAAC;oBAC3E,MAAM,CAAC,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAChD,IAAI,CAAC;wBAAE,MAAM,4BAA4B,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACjF,CAAC;gBACD,8EAA8E;gBAC9E,0EAA0E;gBAC1E,kFAAkF;gBAClF,gFAAgF;gBAChF,iFAAiF;gBACjF,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;oBACpE,OAAO,CAAC,IAAI,CACV,2FAA2F,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,6EAA6E,CACvM,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YACD,wFAAwF;YACxF,gGAAgG;YAChG,2FAA2F;YAC3F,8FAA8F;YAC9F,kEAAkE;YAClE,wFAAwF;YACxF,2FAA2F;YAC3F,6FAA6F;YAC7F,4FAA4F;YAC5F,CAAC;gBACC,MAAM,CAAC,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,CAAC,EAAE,CAAC;oBACN,MAAM,gBAAgB,CAAC;wBACrB,GAAG,EAAE;4BACH,GAAG,EAAE,CAAC,CAAC,GAAG;4BACV,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,SAAS,EAAE,CAAC,CAAC,SAAS;4BACtB,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,WAAW,EAAG,OAAO,CAAC,KAA4C,CAAC,kBAAwC;yBAC5G;wBACD,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;wBACzB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnC,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;wBACtD,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,aAAa,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,GAAG,CAAC;qBACvG,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,4FAA4F;oBAC5F,2FAA2F;oBAC3F,mCAAmC;oBACnC,OAAO,CAAC,IAAI,CACV,oDAAoD,MAAM,CAAC,IAAI,CAAC,MAAM,oEAAoE,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,GAAG,CAC5K,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;KACF;CACF,CAAC,CAAC;AAEH,+FAA+F;AAC/F,kGAAkG;AAClG,oFAAoF;AACpF,wGAAwG;AACxG,+FAA+F;AAC/F,eAAe,wBAAwB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -53,14 +53,15 @@ export interface DiscordCommandSyncDeps {
|
|
|
53
53
|
/**
|
|
54
54
|
* THE RECONCILER the discord bundle registers with core's command plane.
|
|
55
55
|
*
|
|
56
|
-
* Runs at boot, so it is gated on BOTH
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
56
|
+
* Runs at boot, so it is gated on BOTH halves being present: the `discord.applicationId` setting says
|
|
57
|
+
* which app this is and `DISCORD_BOT_TOKEN` authenticates the call. Either missing ⇒ `skipped`, which
|
|
58
|
+
* is the correct reading of a deployment that carries the bundle but no Discord app — and it is also
|
|
59
|
+
* what keeps every offline test tier network-free, since no test sets the bot token.
|
|
60
60
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* in `agent/commands/discord-commands.ts` and
|
|
61
|
+
* The application id is a setting since OPE-2650: which app this deployment is, is a tracked fact.
|
|
62
|
+
* The bot token is an operator secret (OPE-2650): `oe secret set DISCORD_BOT_TOKEN`, with the env var
|
|
63
|
+
* as its on-ramp. The GUILD ids are tracked literals in `agent/commands/discord-commands.ts` and
|
|
64
|
+
* arrive here as the declared scope.
|
|
64
65
|
*/
|
|
65
66
|
export declare function reconcileDiscordCommands(scope: SurfaceCommandScope, deps?: DiscordCommandSyncDeps): Promise<SurfaceCommandOutcome>;
|
|
66
67
|
//# sourceMappingURL=discord-command-sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord-command-sync.d.ts","sourceRoot":"","sources":["../../../agent/commands/discord-command-sync.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAe,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAC1H,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"discord-command-sync.d.ts","sourceRoot":"","sources":["../../../agent/commands/discord-command-sync.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAe,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAC1H,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAmClF,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAWzE;AAQD,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,mBAAmB,CAgBzF;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AA6DD;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAsB5I"}
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
// `agent/commands/discord-commands.ts`.
|
|
34
34
|
import { discordFetch } from "../channels/discord-rest.js";
|
|
35
35
|
import { buildOeDiscordCommandDefinition } from "./discord-commands.js";
|
|
36
|
+
import { discordApplicationId } from "../channels/discord-front.js";
|
|
37
|
+
import { discordBotToken } from "../channels/discord-credentials.js";
|
|
36
38
|
/**
|
|
37
39
|
* 🔴 NO 429 BACKOFF AT ALL — the reconcile sits on the FIRST REQUEST's latency path.
|
|
38
40
|
*
|
|
@@ -188,22 +190,23 @@ async function reconcileOneGuild(guildId, applicationId, botToken, deps, msLeft)
|
|
|
188
190
|
/**
|
|
189
191
|
* THE RECONCILER the discord bundle registers with core's command plane.
|
|
190
192
|
*
|
|
191
|
-
* Runs at boot, so it is gated on BOTH
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
193
|
+
* Runs at boot, so it is gated on BOTH halves being present: the `discord.applicationId` setting says
|
|
194
|
+
* which app this is and `DISCORD_BOT_TOKEN` authenticates the call. Either missing ⇒ `skipped`, which
|
|
195
|
+
* is the correct reading of a deployment that carries the bundle but no Discord app — and it is also
|
|
196
|
+
* what keeps every offline test tier network-free, since no test sets the bot token.
|
|
195
197
|
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
* in `agent/commands/discord-commands.ts` and
|
|
198
|
+
* The application id is a setting since OPE-2650: which app this deployment is, is a tracked fact.
|
|
199
|
+
* The bot token is an operator secret (OPE-2650): `oe secret set DISCORD_BOT_TOKEN`, with the env var
|
|
200
|
+
* as its on-ramp. The GUILD ids are tracked literals in `agent/commands/discord-commands.ts` and
|
|
201
|
+
* arrive here as the declared scope.
|
|
199
202
|
*/
|
|
200
203
|
export async function reconcileDiscordCommands(scope, deps = {}) {
|
|
201
|
-
const applicationId = deps.applicationId ??
|
|
202
|
-
const botToken = deps.botToken ??
|
|
204
|
+
const applicationId = deps.applicationId ?? discordApplicationId();
|
|
205
|
+
const botToken = deps.botToken ?? (await discordBotToken());
|
|
203
206
|
if (!applicationId || !botToken) {
|
|
204
207
|
return {
|
|
205
208
|
status: "skipped",
|
|
206
|
-
detail: "
|
|
209
|
+
detail: "the discord.applicationId setting and DISCORD_BOT_TOKEN must both be set for this deployment to register its own commands.",
|
|
207
210
|
};
|
|
208
211
|
}
|
|
209
212
|
const deadline = Date.now() + (deps.budgetMs ?? RECONCILE_BUDGET_MS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord-command-sync.js","sourceRoot":"","sources":["../../../agent/commands/discord-command-sync.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,qEAAqE;AACrE,EAAE;AACF,qGAAqG;AACrG,kGAAkG;AAClG,mGAAmG;AACnG,8BAA8B;AAC9B,EAAE;AACF,mGAAmG;AACnG,6FAA6F;AAC7F,sGAAsG;AACtG,sGAAsG;AACtG,sGAAsG;AACtG,oGAAoG;AACpG,0FAA0F;AAC1F,EAAE;AACF,sGAAsG;AACtG,qGAAqG;AACrG,iGAAiG;AACjG,iGAAiG;AACjG,6EAA6E;AAC7E,wFAAwF;AACxF,EAAE;AACF,oGAAoG;AACpG,sGAAsG;AACtG,uGAAuG;AACvG,iGAAiG;AACjG,mFAAmF;AACnF,EAAE;AACF,qGAAqG;AACrG,uGAAuG;AACvG,uFAAuF;AACvF,wCAAwC;AAGxC,OAAO,EAAE,YAAY,EAAyB,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"discord-command-sync.js","sourceRoot":"","sources":["../../../agent/commands/discord-command-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-generated.d.ts","sourceRoot":"","sources":["../../agent/docs-generated.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAE3E,eAAO,MAAM,aAAa,EAAE,SAAS,QAAQ,
|
|
1
|
+
{"version":3,"file":"docs-generated.d.ts","sourceRoot":"","sources":["../../agent/docs-generated.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAE3E,eAAO,MAAM,aAAa,EAAE,SAAS,QAAQ,EAohB5C,CAAC"}
|
|
@@ -147,8 +147,8 @@ export const PROVIDER_DOCS = [
|
|
|
147
147
|
"## Step 1 — Create the Discord application + bot",
|
|
148
148
|
"",
|
|
149
149
|
"1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) → **New Application**. Name it (e.g. `Open Everywhere`). Upload [`brand/png/mark-square-1024.png`](../../../brand/png/mark-square-1024.png), the project mark, as the **App Icon** on **General Information** and as the bot's **Icon** on the **Bot** tab. Skip this when you set [`identity.name`](../configuration-reference.md) and chose your own icon: with no name configured the agent presents as the project, so the project mark is its default avatar.",
|
|
150
|
-
"2. On **General Information**, copy the **Application ID** — this is `
|
|
151
|
-
"3. Still on **General Information**, copy the **Public Key** — this is `
|
|
150
|
+
"2. On **General Information**, copy the **Application ID** — this is the `discord.applicationId` setting.",
|
|
151
|
+
"3. Still on **General Information**, copy the **Public Key** — this is the `discord.publicKey` setting. It verifies the Ed25519 signature on every inbound interaction POST.",
|
|
152
152
|
"4. Go to the **Bot** tab → **Reset Token** → copy the token — this is `DISCORD_BOT_TOKEN`. (Treat it like a password; it's shown once.)",
|
|
153
153
|
"5. Set the **Interactions Endpoint URL** (on **General Information**) to:",
|
|
154
154
|
"",
|
|
@@ -156,7 +156,7 @@ export const PROVIDER_DOCS = [
|
|
|
156
156
|
" https://<your-deploy-url>/eve/v1/discord",
|
|
157
157
|
" ```",
|
|
158
158
|
"",
|
|
159
|
-
" When you save this, Discord immediately POSTs a `PING` (interaction type `1`) and expects a signed `PONG` back. **Your instance must already be deployed, running, and reachable with `
|
|
159
|
+
" When you save this, Discord immediately POSTs a `PING` (interaction type `1`) and expects a signed `PONG` back. **Your instance must already be deployed, running, and reachable with `discord.publicKey` configured** (Step 4) or Discord rejects the URL. Set it first, deploy, *then* save this field.",
|
|
160
160
|
"",
|
|
161
161
|
" > ⚠️ **Use your STABLE production domain here** (e.g. `your-app.vercel.app`), never a",
|
|
162
162
|
" > deployment-specific URL (`your-app-<hash>-team.vercel.app`). Deployment URLs stay alive",
|
|
@@ -172,7 +172,7 @@ export const PROVIDER_DOCS = [
|
|
|
172
172
|
"",
|
|
173
173
|
" and subscribe to **`APPLICATION_AUTHORIZED`** and **`APPLICATION_DEAUTHORIZED`**. This is a",
|
|
174
174
|
" **different URL** from the Interactions Endpoint above — Discord configures the two separately —",
|
|
175
|
-
" but it is verified with the **same** `
|
|
175
|
+
" but it is verified with the **same** `discord.publicKey`, so there is nothing new to set.",
|
|
176
176
|
"",
|
|
177
177
|
" It gives OE an install/uninstall audit trail: each event writes a `surface.app_installed` /",
|
|
178
178
|
" `surface.app_uninstalled` row (guild as the workspace, the authorizing user as the principal),",
|
|
@@ -190,11 +190,13 @@ export const PROVIDER_DOCS = [
|
|
|
190
190
|
"",
|
|
191
191
|
"Register with the Discord API (no helper script ships today). **Guild** commands appear **instantly** in that one server; **global** commands can take **up to an hour** to propagate — use a guild command while testing.",
|
|
192
192
|
"",
|
|
193
|
-
"Guild-scoped (instant, recommended for setup)
|
|
193
|
+
"Guild-scoped (instant, recommended for setup). `APPLICATION_ID` is a plain shell variable that holds",
|
|
194
|
+
"the Application ID from Step 1.2:",
|
|
194
195
|
"",
|
|
195
196
|
"```bash",
|
|
197
|
+
"APPLICATION_ID=… # the Application ID from Step 1.2",
|
|
196
198
|
"curl -X POST \\",
|
|
197
|
-
" \"https://discord.com/api/v10/applications/$
|
|
199
|
+
" \"https://discord.com/api/v10/applications/$APPLICATION_ID/guilds/$GUILD_ID/commands\" \\",
|
|
198
200
|
" -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\",
|
|
199
201
|
" -H \"Content-Type: application/json\" \\",
|
|
200
202
|
" -d '{",
|
|
@@ -211,7 +213,7 @@ export const PROVIDER_DOCS = [
|
|
|
211
213
|
"",
|
|
212
214
|
"```bash",
|
|
213
215
|
"curl -X POST \\",
|
|
214
|
-
" \"https://discord.com/api/v10/applications/$
|
|
216
|
+
" \"https://discord.com/api/v10/applications/$APPLICATION_ID/commands\" \\",
|
|
215
217
|
" -H \"Authorization: Bot $DISCORD_BOT_TOKEN\" \\",
|
|
216
218
|
" -H \"Content-Type: application/json\" \\",
|
|
217
219
|
" -d '{ \"name\": \"ask\", \"type\": 1, \"description\": \"Ask Open Everywhere to do something\",",
|
|
@@ -234,21 +236,40 @@ export const PROVIDER_DOCS = [
|
|
|
234
236
|
"",
|
|
235
237
|
"## Step 4 — Configure the environment",
|
|
236
238
|
"",
|
|
237
|
-
"
|
|
239
|
+
"The Application ID and the Public Key are public, so they are settings in Git. Put them in your",
|
|
240
|
+
"app's `agent/settings/settings.ts` (they were `DISCORD_APPLICATION_ID` and `DISCORD_PUBLIC_KEY` until",
|
|
241
|
+
"OPE-2650):",
|
|
242
|
+
"",
|
|
243
|
+
"```ts",
|
|
244
|
+
"// agent/settings/settings.ts",
|
|
245
|
+
"export const SETTINGS_OVERRIDES = defineSettings({",
|
|
246
|
+
" discord: {",
|
|
247
|
+
" applicationId: \"…\", // Application ID from Step 1.2",
|
|
248
|
+
" publicKey: \"…\", // Public Key from Step 1.3 (verifies signed interaction POSTs)",
|
|
249
|
+
" },",
|
|
250
|
+
"});",
|
|
251
|
+
"```",
|
|
252
|
+
"",
|
|
253
|
+
"The bot token is an **operator secret** (OPE-2650). Store it in the deployment's encrypted credential",
|
|
254
|
+
"store from your own terminal, with the same `DATABASE_URL` and `OE_CREDENTIAL_ENCRYPTION_KEY` the",
|
|
255
|
+
"deployment reads. If you run the Gateway relay, store its shared secret the same way:",
|
|
238
256
|
"",
|
|
239
257
|
"```bash",
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"DISCORD_BOT_TOKEN=… # Bot token from Step 1.4",
|
|
258
|
+
"npx oe secret set DISCORD_BOT_TOKEN # Bot token from Step 1.4 (value on stdin)",
|
|
259
|
+
"npx oe secret set OE_RELAY_SECRET # only with the relay: the same value the relay holds",
|
|
243
260
|
"```",
|
|
244
261
|
"",
|
|
262
|
+
"A `DISCORD_BOT_TOKEN` env var on the deployment still works as the on-ramp: the deployment reads it only",
|
|
263
|
+
"when nothing is stored under that name.",
|
|
264
|
+
"",
|
|
245
265
|
"Optional, but relevant to the silo model:",
|
|
246
266
|
"",
|
|
247
267
|
"```bash",
|
|
248
|
-
"OE_MEMORY_PROVIDER=git # memory backend — git | sqlite",
|
|
249
268
|
"OE_MEMORY_DIR=/abs/path/to/store",
|
|
250
269
|
"```",
|
|
251
270
|
"",
|
|
271
|
+
"The memory backend (`git` | `sqlite`) is the `memory.provider` setting in `agent/settings/settings.ts`, not an env var.",
|
|
272
|
+
"",
|
|
252
273
|
"**Identity binds automatically.** You do **not** set workspace, surface, mode, or visibility by hand. The Discord channel reads the guild/channel/user ids and the channel `type` straight off each inbound interaction into the session auth context (`buildDiscordAuth`), and `bindDiscord` derives workspace = the guild, surface = the channel, plus mode and visibility. The `deploymentIdentity.workspace` / `.surface` declaration in `agent/identity/surfaces.ts` is only the `eve dev` gap-filler — once Discord is wired it is ignored.",
|
|
253
274
|
"",
|
|
254
275
|
"## Step 5 — Invoke it",
|
|
@@ -263,12 +284,12 @@ export const PROVIDER_DOCS = [
|
|
|
263
284
|
"## Rotating the bot token",
|
|
264
285
|
"",
|
|
265
286
|
"**Reset Token** in the Developer Portal (Step 1.4) invalidates the old token immediately. Two",
|
|
266
|
-
"**deployed** stores hold that token. Each one needs its own update
|
|
267
|
-
"
|
|
287
|
+
"**deployed** stores hold that token. Each one needs its own update: the relay picks the new value up",
|
|
288
|
+
"only at a redeploy, and the deployment only once you store it.",
|
|
268
289
|
"",
|
|
269
290
|
"| Store | What holds the token | How the new value takes effect |",
|
|
270
291
|
"| --- | --- | --- |",
|
|
271
|
-
"|
|
|
292
|
+
"| The deployment's credential store | the `DISCORD_BOT_TOKEN` operator secret | `oe secret set DISCORD_BOT_TOKEN`, then up to thirty seconds — no redeploy |",
|
|
272
293
|
"| Railway | `DISCORD_BOT_TOKEN` on the always-on relay ([`deploy/discord-relay/`](../../../deploy/discord-relay/README.md)) | a relay redeploy |",
|
|
273
294
|
"",
|
|
274
295
|
"A rotation that reaches only the deployment leaves the relay dead. That failure is quiet: the slash",
|
|
@@ -277,24 +298,25 @@ export const PROVIDER_DOCS = [
|
|
|
277
298
|
"A local checkout keeps its own copy — `deploy/discord-relay/.env`, and the repo-root `.env`. Those",
|
|
278
299
|
"are operator copies, not deployed stores. Update one the next time you run it locally.",
|
|
279
300
|
"",
|
|
280
|
-
"### The
|
|
301
|
+
"### The deployment half",
|
|
281
302
|
"",
|
|
282
|
-
"
|
|
303
|
+
"The deployment reads the token as an operator secret (OPE-2650), so the rotation is one command, run in",
|
|
304
|
+
"your own terminal with the deployment's `DATABASE_URL` and `OE_CREDENTIAL_ENCRYPTION_KEY`:",
|
|
283
305
|
"",
|
|
284
306
|
"```bash",
|
|
285
|
-
"
|
|
286
|
-
"vercel env add DISCORD_BOT_TOKEN production",
|
|
287
|
-
"vercel deploy --prod",
|
|
307
|
+
"npx oe secret set DISCORD_BOT_TOKEN # the new token, on stdin",
|
|
288
308
|
"```",
|
|
289
309
|
"",
|
|
290
|
-
"
|
|
291
|
-
"
|
|
292
|
-
"
|
|
310
|
+
"A warm instance picks the new value up within thirty seconds. If the deployment still holds the token",
|
|
311
|
+
"only as its env var on-ramp, store it as above and then delete the env var: a stored value wins.",
|
|
312
|
+
"",
|
|
313
|
+
"`deploy:census` does **not** prove this half works. Prove it by hand instead: run `/ask …` in a guild",
|
|
314
|
+
"channel (Step 5). A dead token fails every Discord API call the deployment makes.",
|
|
293
315
|
"",
|
|
294
316
|
"### The Railway half",
|
|
295
317
|
"",
|
|
296
|
-
"**The relay reads the token ONCE, at boot.** `deploy/discord-relay/index.js` reads",
|
|
297
|
-
"`
|
|
318
|
+
"**The relay reads the token ONCE, at boot.** `deploy/discord-relay/index.js` reads its own",
|
|
319
|
+
"`DISCORD_BOT_TOKEN` env var at module load, then logs in with that value. A variable change alone",
|
|
298
320
|
"changes nothing on a running relay. The process holds the dead token until it restarts.",
|
|
299
321
|
"",
|
|
300
322
|
"```bash",
|
|
@@ -453,9 +475,9 @@ export const PROVIDER_DOCS = [
|
|
|
453
475
|
"```",
|
|
454
476
|
"",
|
|
455
477
|
"A guild id is **tracked config**, not an environment variable — it lives in Git and changes by pull",
|
|
456
|
-
"request, like every other room key ([Config-as-code](../../how-it-works/config-as-code.md)). The
|
|
457
|
-
"
|
|
458
|
-
"deployment speaks as
|
|
478
|
+
"request, like every other room key ([Config-as-code](../../how-it-works/config-as-code.md)). The",
|
|
479
|
+
"reconcile needs two values. The `discord.applicationId` setting (Step 1.2) says which application this",
|
|
480
|
+
"deployment speaks as. The `DISCORD_BOT_TOKEN` env var (Step 1.4) authenticates the call. Either one absent and",
|
|
459
481
|
"the reconcile reports `skipped` in the boot log and registers nothing — it never fails the boot, and",
|
|
460
482
|
"neither does a Discord outage: the worst outcome is the command list you already had.",
|
|
461
483
|
"",
|
|
@@ -471,7 +493,7 @@ export const PROVIDER_DOCS = [
|
|
|
471
493
|
"",
|
|
472
494
|
"Declare no guild and the deployment registers nothing and makes no Discord call at all.",
|
|
473
495
|
"",
|
|
474
|
-
"⚠️ **Every process holding both
|
|
496
|
+
"⚠️ **Every process holding both values reconciles — a local `eve dev`/`eve start` included, and",
|
|
475
497
|
"it writes the command shape of the checkout that is running.** Do not run a branch that changes the",
|
|
476
498
|
"`/oe` command set against the deployment's own `DISCORD_BOT_TOKEN`: your server will show that",
|
|
477
499
|
"branch's `/oe` until the deployment's next cold start writes it back. Develop such a branch against a",
|
|
@@ -482,10 +504,9 @@ export const PROVIDER_DOCS = [
|
|
|
482
504
|
"`npm run register:discord-commands` still ships, for the one thing the deployment does not do:",
|
|
483
505
|
"registering `/oe` **globally** (every server the app is in). A global command takes up to an hour to",
|
|
484
506
|
"propagate, which no boot-time check can prove landed, so it stays a deliberate operator step. It",
|
|
485
|
-
"reads:",
|
|
507
|
+
"reads the `discord.applicationId` setting (Step 1.2) from the app's settings, and these env vars:",
|
|
486
508
|
"",
|
|
487
509
|
"```bash",
|
|
488
|
-
"DISCORD_APPLICATION_ID=… # from Step 1.2",
|
|
489
510
|
"DISCORD_BOT_TOKEN=… # from Step 1.4",
|
|
490
511
|
"DISCORD_GUILD_ID=… # optional: guild-scoped (instant) instead of global (~1h propagation)",
|
|
491
512
|
"```",
|
|
@@ -503,12 +524,12 @@ export const PROVIDER_DOCS = [
|
|
|
503
524
|
"## Gotchas",
|
|
504
525
|
"",
|
|
505
526
|
"- **Slash command vs. mention.** The **interaction** channel documented here is slash-command-only — a plain `@mention` does nothing on that path. Ambient `@mention` messages (and the [auto-thread](#auto-thread-mention-conversations) behaviour) are served by the separate **Gateway** ingestion surface, which needs the always-on relay configured. If `/ask` doesn't appear, the command isn't registered for that scope, or a global command hasn't propagated yet.",
|
|
506
|
-
"- **Public Key verification.** Every inbound interaction POST is Ed25519-verified against `
|
|
507
|
-
"- **PING handshake needs the endpoint live first.** Saving the Interactions Endpoint URL triggers an immediate `PING` (type `1`); your instance must already be running with the public key set so it can return the signed `PONG`. Set
|
|
527
|
+
"- **Public Key verification.** Every inbound interaction POST is Ed25519-verified against the `discord.publicKey` setting. If it's wrong or unset, Discord requests are rejected (including the initial PING), the **Interactions Endpoint URL** won't save, and the bot stays silent — check this first.",
|
|
528
|
+
"- **PING handshake needs the endpoint live first.** Saving the Interactions Endpoint URL triggers an immediate `PING` (type `1`); your instance must already be running with the public key set so it can return the signed `PONG`. Set the key → deploy → *then* save the URL.",
|
|
508
529
|
"- **3-second ack / deferred response.** Discord requires an interaction acknowledgement within 3 seconds. Open Everywhere handles this for you (deferred ack, then edits the original response), so the agent can take as long as it needs — no extra wiring required.",
|
|
509
530
|
"- **Global vs guild propagation.** Guild commands are instant; global commands can take up to an hour to appear. Register a guild command for setup and testing.",
|
|
510
531
|
"- **No domain/org memory until the guild is vouched.** Every guild starts `external` (no membership check exists yet — see [Trust is unverified by default](#how-the-silo-model-maps) above), so a fresh guild channel's memory stays wherever the `public` pseudo-domain reaches at most, regardless of whether Discord could confirm the channel `@everyone`-readable. Vouch the guild (`identity.blanketTrust: \"internal\"` or `surfaces.ts`) to unlock an explicit domain's or the org's memory.",
|
|
511
|
-
"- **Webhook Events *do* need a separate URL.** The one exception to \"Discord has only one public endpoint per app\": install/uninstall events (Step 1.6) are configured on the **Webhooks** tab with their own URL (`/eve/v1/discord/events`), not the Interactions Endpoint. They share `
|
|
532
|
+
"- **Webhook Events *do* need a separate URL.** The one exception to \"Discord has only one public endpoint per app\": install/uninstall events (Step 1.6) are configured on the **Webhooks** tab with their own URL (`/eve/v1/discord/events`), not the Interactions Endpoint. They share `discord.publicKey`, and they carry **no chat messages** — the feature name misleads; ambient content stays Gateway-only.",
|
|
512
533
|
"- **`/oe` needs no separate URL.** It rides the SAME Interactions Endpoint URL as everything else in Step 1.5 — Discord has only the one public endpoint per app, so there's nothing extra to configure beyond registering the command itself ([above](#register-oe)).",
|
|
513
534
|
"",
|
|
514
535
|
].join("\n"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-generated.js","sourceRoot":"","sources":["../../agent/docs-generated.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,wFAAwF;AACxF,6FAA6F;AAC7F,sFAAsF;AAItF,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD;QACE,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE,wMAAwM;QACjN,QAAQ,EAAE;YACR,WAAW;YACX,EAAE;YACF,wMAAwM;YACxM,EAAE;YACF,4ZAA4Z;YAC5Z,EAAE;YACF,imBAAimB;YACjmB,EAAE;YACF,4BAA4B;YAC5B,EAAE;YACF,8FAA8F;YAC9F,gGAAgG;YAChG,8FAA8F;YAC9F,gGAAgG;YAChG,uDAAuD;YACvD,EAAE;YACF,6CAA6C;YAC7C,eAAe;YACf,2HAA2H;YAC3H,+EAA+E;YAC/E,qFAAqF;YACrF,kHAAkH;YAClH,8GAA8G;YAC9G,EAAE;YACF,8FAA8F;YAC9F,oFAAoF;YACpF,+FAA+F;YAC/F,sFAAsF;YACtF,4FAA4F;YAC5F,iEAAiE;YACjE,EAAE;YACF,4FAA4F;YAC5F,4FAA4F;YAC5F,+FAA+F;YAC/F,0GAA0G;YAC1G,uFAAuF;YACvF,sFAAsF;YACtF,6IAA6I;YAC7I,iGAAiG;YACjG,wFAAwF;YACxF,+FAA+F;YAC/F,4CAA4C;YAC5C,EAAE;YACF,+FAA+F;YAC/F,2FAA2F;YAC3F,8FAA8F;YAC9F,2EAA2E;YAC3E,EAAE;YACF,wCAAwC;YACxC,EAAE;YACF,iTAAiT;YACjT,EAAE;YACF,yCAAyC;YACzC,eAAe;YACf,kWAAkW;YAClW,uGAAuG;YACvG,qFAAqF;YACrF,wGAAwG;YACxG,EAAE;YACF,sRAAsR;YACtR,EAAE;YACF,+wBAA+wB;YAC/wB,EAAE;YACF,2QAA2Q;YAC3Q,EAAE;YACF,OAAO;YACP,+BAA+B;YAC/B,iCAAiC;YACjC,6FAA6F;YAC7F,KAAK;YACL,KAAK;YACL,EAAE;YACF,qUAAqU;YACrU,EAAE;YACF,2TAA2T;YAC3T,EAAE;YACF,s6DAAs6D;YACt6D,EAAE;YACF,2BAA2B;YAC3B,EAAE;YACF,2GAA2G;YAC3G,EAAE;YACF,01BAA01B;YAC11B,uZAAuZ;YACvZ,EAAE;YACF,4CAA4C;YAC5C,EAAE;YACF,gGAAgG;YAChG,mGAAmG;YACnG,qFAAqF;YACrF,EAAE;YACF,gGAAgG;YAChG,oGAAoG;YACpG,kEAAkE;YAClE,qFAAqF;YACrF,EAAE;YACF,kGAAkG;YAClG,kGAAkG;YAClG,yFAAyF;YACzF,EAAE;YACF,kGAAkG;YAClG,iGAAiG;YACjG,iGAAiG;YACjG,4DAA4D;YAC5D,EAAE;YACF,oCAAoC;YACpC,EAAE;YACF,kIAAkI;YAClI,EAAE;YACF,+HAA+H;YAC/H,oLAAoL;YACpL,gcAAgc;YAChc,4VAA4V;YAC5V,EAAE;YACF,sVAAsV;YACtV,EAAE;YACF,0CAA0C;YAC1C,EAAE;YACF,ysBAAysB;YACzsB,EAAE;YACF,wqBAAwqB;YACxqB,EAAE;YACF,gBAAgB;YAChB,EAAE;YACF,uUAAuU;YACvU,EAAE;YACF,olBAAolB;YACplB,EAAE;YACF,4xBAA4xB;YAC5xB,EAAE;YACF,kBAAkB;YAClB,EAAE;YACF,qJAAqJ;YACrJ,oaAAoa;YACpa,0JAA0J;YAC1J,EAAE;YACF,kDAAkD;YAClD,EAAE;YACF,yhBAAyhB;YACzhB,
|
|
1
|
+
{"version":3,"file":"docs-generated.js","sourceRoot":"","sources":["../../agent/docs-generated.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/ops.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../agent/ops.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../agent/ops.ts"],"names":[],"mappings":"AAcA,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
package/dist/agent/ops.js
CHANGED
|
@@ -4,10 +4,15 @@
|
|
|
4
4
|
// no agent boot) can register it without pulling the whole channel graph — the same split slack
|
|
5
5
|
// and teams use.
|
|
6
6
|
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
|
|
7
|
+
// 🔴 THE PROBE LEFT THIS FILE WITH OPE-2650. DISCORD_BOT_TOKEN is an operator secret now, so the probe
|
|
8
|
+
// reads the credential store, and this light-door half cannot reach the store (the same reason Slack's
|
|
9
|
+
// probe lives in its register.ts). `registerDiscordProvider` registers the probe; the heartbeat runs
|
|
10
|
+
// only in the agent runtime, so the standalone ops MCP server loses nothing. This function stays as the
|
|
11
|
+
// ops arm's hook: it registers the bundle's operator-secret names, which the light door can reach.
|
|
12
|
+
import { registerOperatorSecretNames } from "@open-everywhere/core/agent/adapter-api-ops.js";
|
|
10
13
|
export function registerDiscordOps() {
|
|
11
|
-
|
|
14
|
+
// The bot token and the relay secret are operator secrets (OPE-2650): `scaffold_env` marks them.
|
|
15
|
+
// Literals, not the constants of ./channels/discord-credentials.ts: that module reaches the main barrel.
|
|
16
|
+
registerOperatorSecretNames(["DISCORD_BOT_TOKEN", "OE_RELAY_SECRET"]);
|
|
12
17
|
}
|
|
13
18
|
//# sourceMappingURL=ops.js.map
|
package/dist/agent/ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../../agent/ops.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,6FAA6F;AAC7F,4FAA4F;AAC5F,gGAAgG;AAChG,iBAAiB;AACjB,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../../agent/ops.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,6FAA6F;AAC7F,4FAA4F;AAC5F,gGAAgG;AAChG,iBAAiB;AACjB,EAAE;AACF,uGAAuG;AACvG,uGAAuG;AACvG,qGAAqG;AACrG,wGAAwG;AACxG,mGAAmG;AAEnG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,MAAM,UAAU,kBAAkB;IAChC,iGAAiG;IACjG,yGAAyG;IACzG,2BAA2B,CAAC,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../agent/register.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../agent/register.ts"],"names":[],"mappings":"AA+EA;;8DAE8D;AAC9D,wBAAgB,uBAAuB,IAAI,IAAI,CA6F9C"}
|
package/dist/agent/register.js
CHANGED
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
// • bot display-name arm — discordBotDisplayName (GET /users/@me, OPE-610; a HANDLE, not identity)
|
|
28
28
|
// • command reconciler — reconcileDiscordCommands (OPE-1687; the deployment registers its own
|
|
29
29
|
// "/oe" command at boot, into the guilds the app's config declares)
|
|
30
|
-
import { registerIdentityMapper, registerCapabilityManifest, registerSurfaceParity, registerProviderEvents, registerPostArm, registerWakeOriginCodec, registerReadAdapter, registerSeatCatchUp, registerReactionSurface, registerSurfaceMessageOps, registerCardPoster, registerJudgeLiftNoticePoster, registerRoutineDispatch, registerNativeAdminCheck, registerNativeMemberCheck, registerScopeLabelResolver, registerMeetingInviteResolver, registerBotDisplayName, registerAccountDirectory, registerProviderDocs, registerSurfaceCommandReconciler, registerFriendlyNameResolver, registerAccountDisplayName, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
30
|
+
import { registerIdentityMapper, registerCapabilityManifest, registerSurfaceParity, registerProviderEvents, registerPostArm, registerWakeOriginCodec, registerReadAdapter, registerSeatCatchUp, registerReactionSurface, registerSurfaceMessageOps, registerCardPoster, registerJudgeLiftNoticePoster, registerRoutineDispatch, registerNativeAdminCheck, registerNativeMemberCheck, registerScopeLabelResolver, registerMeetingInviteResolver, registerBotDisplayName, registerAccountDirectory, registerProviderDocs, registerSurfaceCommandReconciler, registerFriendlyNameResolver, registerAccountDisplayName, registerSurfaceCredentialProbe, operatorSecretConfigured, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
31
|
+
import { DISCORD_BOT_TOKEN_NAME } from "./channels/discord-credentials.js";
|
|
31
32
|
import { fetchDiscordInfo } from "./channels/discord-channel-info.js";
|
|
32
33
|
import { discordFriendlyNameResolver } from "./channels/discord-friendly-names.js";
|
|
33
34
|
import { PROVIDER_DOCS } from "./docs-generated.js";
|
|
@@ -138,10 +139,11 @@ export function registerDiscordProvider() {
|
|
|
138
139
|
// reaches Discord only when an operator runs `npm run register:discord-commands` by hand, which is
|
|
139
140
|
// a step nobody could take: the bot token lives with the deployment, not the operator.
|
|
140
141
|
registerSurfaceCommandReconciler("discord", (scope) => reconcileDiscordCommands(scope));
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
|
|
142
|
+
// The telemetry heartbeat's credential-presence probe (OPE-495). HERE and not in ./ops.js since
|
|
143
|
+
// OPE-2650: DISCORD_BOT_TOKEN is an operator secret, so the probe reads the credential store, which
|
|
144
|
+
// the light door cannot reach — the same reason Slack's probe lives in its register.ts.
|
|
145
|
+
registerSurfaceCredentialProbe("discord", () => operatorSecretConfigured(DISCORD_BOT_TOKEN_NAME));
|
|
146
|
+
// Ops plane: the light-door half the standalone ops MCP entry (repo-root scripts/ops-mcp.ts) loads.
|
|
145
147
|
registerDiscordOps();
|
|
146
148
|
}
|
|
147
149
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../agent/register.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,kGAAkG;AAClG,gGAAgG;AAChG,mGAAmG;AACnG,oGAAoG;AACpG,gGAAgG;AAChG,iGAAiG;AACjG,EAAE;AACF,0BAA0B;AAC1B,qGAAqG;AACrG,mGAAmG;AACnG,gFAAgF;AAChF,wGAAwG;AACxG,sEAAsE;AACtE,8FAA8F;AAC9F,+FAA+F;AAC/F,uFAAuF;AACvF,kFAAkF;AAClF,4FAA4F;AAC5F,yFAAyF;AACzF,4GAA4G;AAC5G,mGAAmG;AACnG,8FAA8F;AAC9F,qFAAqF;AACrF,sGAAsG;AACtG,iGAAiG;AACjG,yGAAyG;AACzG,sGAAsG;AACtG,oGAAoG;AAEpG,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EAChC,4BAA4B,EAC5B,0BAA0B,
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../agent/register.ts"],"names":[],"mappings":"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"}
|