tomato·bazeldocs v0 · latest
Docs/Reference/Modules/meridian_chat

meridian_chat

The conversation / agent-chat renderer of the meridian design language — renders a modality-neutral meridian.ui.v1 Conversation stream (the neutral promotion of botnoc chat.v1) over SSE+POST. Vanilla <m-assistant-panel> web component + React <Conversation>. Private.

Latest0.1.0
Versions1
CategoryModules & tooling
MaintainersMatt Marshall
Registryhttps://registry.tbzl.dev/modules/meridian_chat/
Sourcegithub.com/meridian-ux/meridian-chat
MODULE.bazelstarlark
bazel_dep(name = "meridian_chat", version = "0.1.0")

View source & releases on GitHub ↗

The conversation / agent-chat renderer of the meridian renderer family. It renders a modality-neutral meridian.ui.v1.Conversation stream (conversation.proto in meridian-schemas — the neutral promotion of botnoc’s chat.v1): a turn-based transcript of composable blocks (a meridian-native block kit) + a transient status, over SSE + POST.

Two renderer tiers, one wire:

tierentrydepsconsumer
vanilla <m-assistant-panel>@savvifi/meridian-chat/web + the Bazel //:browser_bundlenone (framework-free, ~11 KB)botnoc’s static frontend
React <Conversation>@savvifi/meridian-chatreact (optional peer)aion/web + React hosts

The wire types (src/wire.ts) are structural (the proto3-JSON of ConversationEvent), so the runtime has no protobuf-es dependency and the bundle stays tiny; a conformance test feeds real toJson(ConversationEventSchema,…) frames through the model to keep them aligned to the canonical proto.

Transport

  • sse-url (default /api/noc-agent/view) — SSE of ConversationEvent frames, deduped by seq, blocks upserted by blockId (a tool block flips running→ok in place).
  • turn-url (default /api/noc-agent/turn) — POST { message }.

React usage

import { Conversation, CONVERSATION_CSS } from "@savvifi/meridian-chat";

<style>{CONVERSATION_CSS}</style>
<Conversation sseUrl="/api/noc-agent/view" turnUrl="/api/noc-agent/turn" />

Vanilla usage (bundler-free host)

<m-assistant-panel sse-url="/api/noc-agent/view" turn-url="/api/noc-agent/turn"></m-assistant-panel>
<script type="module">
  import { registerAssistantPanel, ASSISTANT_PANEL_CSS } from "/meridian/meridian_chat.bundle.js";
  document.head.append(Object.assign(document.createElement("style"), { textContent: ASSISTANT_PANEL_CSS }));
  registerAssistantPanel();
</script>

The DOM (form.asst-input / input.asst-text) is preserved so a host driving the composer externally (e.g. botnoc’s voice layer) keeps working; a cleaner imperative panel.submit(text?) is also provided.

Development

pnpm install
pnpm test               # vitest: model + renderers + proto conformance
bazel build //:pkg //:browser_bundle

Conformance#

1 finding across 1 invariant. 17 contested atoms. See how gating works or the full report.

D3 a repo name CHOSEN on a SHARED extension must be namespaced why this matters ↗
repoextension
npm@aspect_rules_js//npm:extensions.bzl

Contested atoms

Third-party modules where this module resolves a different version than others do. Not a violation of anything this module did — it is the actionable form of a registry-level convergence finding, and the sentence a maintainer can act on.

AtomResolved hereElsewhere
apple_support 1.24.2 2.2.0 ×1
aspect_bazel_lib 2.22.5 2.8.1 ×1
aspect_rules_js 3.1.2 2.1.3 ×1
bazel_lib 3.2.2 3.0.0 ×12
bazel_skylib 1.8.2 1.9.0 ×2
gawk 5.3.2.bcr.3 5.3.2.bcr.1 ×12
jq.bzl 0.4.0 0.1.0 ×12
nlohmann_json 3.6.1 3.12.0.bcr.1 ×1
package_metadata 0.0.2 0.0.5 ×3
protobuf 33.4 34.0.bcr.1 ×2
rules_jvm_external 6.7 6.8 ×4
rules_nodejs 6.7.4 6.3.0 ×16.7.3 ×1
rules_python 1.7.0 2.0.1 ×1
rules_swift 3.1.2 3.6.1 ×1
tar.bzl 0.10.4 0.5.1 ×110.6.0 ×1
upb 0.0.0-20220923-a547704 0.0.0-20230516-61a97ef ×1
yq.bzl 0.3.4 0.1.1 ×12

Dependencies#

meridian_chat in the registry graph — what it depends on (left) and what depends on it (right).

Depends on

aspect_rules_js3.1.2aspect_rules_ts3.8.9rules_nodejs6.7.4bazel_skylib1.8.2aspect_rules_esbuild0.26.0rules_vite0.1.0dev

Versions#

1 published version, newest first. Each resolves to an immutable, integrity-checked archive.

VersionIntegrity (sha256)Source archive
0.1.0 latest KKwhTNO/5lTLud/v… tag archive ↗

← All modules