Home / 開発者
For developers

仕様は OpenAPI。
約束はテストで。

manifest でシステムを説明し、hooks をつなぎ、52 項目の適合性テストで確かめる。ソースは GitHub で公開しています。

Quick start

5 分で動かす

terminal
# Node 22.19+ · pnpm 10
git clone https://github.com/ITC-cloud-soft/biz-ai.git
cd biz-ai
pnpm install
pnpm test        # every workspace package
pnpm validate    # OpenAPI lint + bundled manifests

# the sample business system (PostgreSQL)
pnpm --filter @dsh-bridge/example-equipment-inspection start
→ http://127.0.0.1:19730
server.mjs
import { createBridgeApp, createPool, createPostgresStore } from '@dsh-bridge/server-kit'

const store = createPostgresStore({ pool: await createPool(DB_URL) })
await store.migrate()                 // bridge_* tables
const bridge = await createBridgeApp({
  manifest: { file: './bridge.manifest.yaml' },
  store, serviceToken, bffSecret,
  hooks: { employees, authenticate, isSessionLive,
           recipientsFor, approvals, proposalKinds,
           reports, piiScan },
})
createServer(bridge.handler).listen(8080)
Hooks

業務システムが書くのは hooks だけ

hook返すもの・守ること
employees{ id, role, active }。無効にした職員はすべてのトークンを即時に失う
authenticate既存のセッション → { user: { id, role }, sessionId }。別のログインは作らない
recipientsFornull / { stale } / { users, paramsFor, link, dedupeKey }。範囲を決め、1 人ずつ Web の認可で確かめる
approvalsget・approvers・card・mayDecide・decide。Web とチャットで同じ規則
proposalKinds{ roles, validate, apply }。apply は人が採用したときだけ、同じトランザクションで
reportscompute(viewer) → 件数だけのセクション
piiScan名簿の名前に当たれば区分だけを返す(文字列は返さない)
API reference · Bridge v1

エンドポイント

すべての応答に bridge-protocol: 1。エラーは { ok: false, error: <lower_snake_case> }。v1 の中では足すだけ。

区分操作主体
基本GET /health · GET /manifest— · サービス
身元GET /identity · POST /identities/link · /me/link-codes · /me/identitiesサービス · 本人
委託POST /delegations · /assistant/tickets · /assistant/delegationsサービス · BFF
event・通知GET /events?after= · /notifications/for-event/{id} · /notifications/deliveriesサービス
承認/approvals/{id}/deliveries · /approvals/{id}/im-decision · /approvals/im-decisionsサービス
提案POST /proposals · /proposals/{id}/accept · /reject委託 · 本人
報告GET /reports/latest · POST /reports/run本人 · 委託
任意/help/* · /pii-scan · /ai-profile · /document-reads · /connectors/*—
Conformance suite

5 つの不変条件から、52 項目

不変条件項目
1 本人だけが連携するL2–L9 · B1–B4 · N3
2 委託 = 許可リスト ∩ 役割L1 · D1–D7 · S1–S5 · R2
3 AI は提案、人が決めるD3 · D5 · PR1–PR3 · A2–A4 · R3
4 個人情報を載せないE1–E4 · N1 · N2 · A1 · R2 · L10
5 身元は業務システムからL3 · D1 · D2 · S2 · A2 · N3
プロトコルの作法P1–P6 · M1–M3
terminal — conformance
BRIDGE_BASE_URL=http://127.0.0.1:8080 \
BRIDGE_FIXTURES=./test/fixtures.mjs \
BRIDGE_MANIFEST_FILE=./bridge.manifest.yaml \
node --test packages/protocol/conformance/http.test.mjs

  52 passed, 0 known gaps, 0 skipped

mutation test:不変条件をわざと壊したモックでは、該当の項目が落ちることも確かめています。

Packages

パッケージ

@dsh-bridge/protocol

OpenAPI・JSON Schema・検証・bridge-validate・適合性テスト

@dsh-bridge/server-kit

業務システム側の Bridge v1 実装(Node.js・PostgreSQL)

@dsh-bridge/dsh-core

AI 面の中核:アプリの登録・委託・ツール・文面の枠

plugins/* (9)

identity・tools・events・notify・approvals・assistant・memory・persona・reader

@dsh-bridge/web-kit

React の画面部品:SNS 連携・通知設定・AI 社員の設定・外部連携

@dsh-bridge/gateway

BFF から AI 面への認証付きゲートウェイ(RPC は許可リスト)

分からないことは、コミュニティで。