Bifrost/tools
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens c063f27014 Route Idunn operator alarms through the Bifrost Discord gate
operator-notification.mjs invented gamecult.operator_dm_request.v1 and
hand-rolled its document definitions, while the gate's own vocabulary and an
exported definition helper sat in the same tools/ directory. Nothing consumed
the invented type, so a published alarm sat pending forever with no receipt and
no way to notice. Two command vocabularies for one crossing, one of them
unreadable.

Publish bifrost.bridge.discord_post_command.v1 instead, via
discordPostCommandDefinition, as a discord-dm command carrying the operator
recipient and the alarm text. gamecult.operator_dm_request is gone, along with
the four unrelated Eve/VoidBot document definitions the publisher registered to
open somebody else's store. The default store is now the gate's own
.bifrost/provider-store.cc, which is what the bridge command pump reads.
Per AGENTS.md, Bifrost owns the Discord crossing; this tool only asks.

The bridge command route was discord-post only, so teach it the verb the
command document already carries:

- resolveBridgeVerb accepts discord-post and discord-dm and rejects anything
  else before the command is marked running;
- discord-dm passes --recipient-id, discord-post keeps --channel-id, and the
  persona/reply options stay post-only;
- listCommandRecords selects on the supported verb set instead of hardcoding
  discord-post, so a discord-dm command is actually picked up;
- receipts record the verb that ran rather than a literal "discord-post".

Two changes exist because of how this bug hid rather than what it was:

- --dry-run now builds the runtime and definitions before returning. The old
  dry run skipped CultMesh entirely, which is why a publisher that could never
  publish looked healthy in every check anyone ran.
- A receipt reporting a failed crossing sets a non-zero exit code. Printing
  ok:false and exiting 0 would hand Idunn a success it would act on.

--wait-seconds is opt-in; without it the tool returns at publish and says the
delivery is unconfirmed rather than implying it landed.

Verified end to end against a throwaway store: the command is published, the
pump claims it, dispatches discord-dm, and writes back a typed receipt. With no
bot token present the receipt reads "Set BIFROST_DISCORD_BOT_TOKEN or
DISCORD_BOT_TOKEN before sending a Discord DM" and the publisher exits 1. The
missing credential is now a reported failure instead of silence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 02:49:42 +02:00
..
git-gate Tighten dispatched gh gate parsing 2026-06-17 10:34:38 +01:00
git-hooks Enforce bridge-owned GitHub pushes in dispatch turns 2026-06-17 06:51:08 +01:00
agent-transport.mjs Move public crossings onto typed Bifrost transport 2026-07-15 22:16:07 +01:00
bifrost-bridge.mjs Gate deployments with typed release authority 2026-07-16 18:28:13 +01:00
bifrost-crossing-documents.mjs Load CultLib entrypoints without workspace links 2026-07-15 22:20:03 +01:00
bifrost-discord-command-documents.mjs Move public crossings onto typed Bifrost transport 2026-07-15 22:16:07 +01:00
bifrost-discord-persona-ingress.mjs Own native Persona Discord transport 2026-07-22 00:34:04 +01:00
bifrost-feedback-identity.mjs Sign Persona feedback provider health 2026-07-19 21:41:50 +01:00
bifrost-repository-release-authority.mjs Gate deployments with typed release authority 2026-07-16 18:28:13 +01:00
bifrost-signed-identity.mjs Own native Persona Discord transport 2026-07-22 00:34:04 +01:00
cultmesh-bridge-commands.mjs Route Idunn operator alarms through the Bifrost Discord gate 2026-09-04 02:49:42 +02:00
dispatch-agent-requests.mjs Move public crossings onto typed Bifrost transport 2026-07-15 22:16:07 +01:00
governance-threads.mjs Move public crossings onto typed Bifrost transport 2026-07-15 22:16:07 +01:00
install-agent-dispatch-task.ps1 Hide agent dispatch scheduled task 2026-05-20 18:05:16 +01:00
operator-notification.mjs Route Idunn operator alarms through the Bifrost Discord gate 2026-09-04 02:49:42 +02:00
persona-discord-delivery-documents.mjs persona: add typed cross-host delivery nerve 2026-08-08 20:10:23 +01:00
persona-discord-delivery.mjs persona: receipt Discord bridge commands 2026-08-08 21:26:13 +01:00
persona-discord-permit.mjs persona: align permit bodies with Rust wire tuples 2026-08-08 21:15:57 +01:00
persona-discord-rudp.mjs persona: add typed cross-host delivery nerve 2026-08-08 20:10:23 +01:00
persona-feedback-documents.mjs Own native Persona Discord transport 2026-07-22 00:34:04 +01:00
persona-feedback-idunn-health.mjs Prove signed health transport identity 2026-07-22 02:53:44 +01:00
persona-feedback.mjs persona: split receipt and permit requester identities 2026-08-08 20:22:22 +01:00
provider-advertisement.mjs Delete Epiphany operator bridge 2026-08-22 06:16:39 +02:00
run-agent-dispatch-hidden.vbs Hide agent dispatch scheduled task 2026-05-20 18:05:16 +01:00
verify-persona-feedback-release-authority.mjs Gate organizational Persona feedback 2026-07-18 20:32:10 +01:00