Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Dependency graph

Workspace packages by ring (deeper = more abstract; an edge points at what a package depends on). The layering rules that keep it this shape are in scripts/quality/layers.ts and docs/quality.md.

flowchart BT
  subgraph ring_kernel["ring 0 · kernel"]
    kernel["@sms/kernel"]
  end
  subgraph ring_contracts["ring 1 · contracts"]
    contracts["@sms/contracts"]
  end
  subgraph ring_plugin_sdk["ring 1 · plugin-sdk"]
    plugin_sdk["@sms/plugin-sdk"]
  end
  subgraph ring_driver["ring 2 · drivers"]
    executor_node["@sms/executor-node"]
    executor_quickjs["@sms/executor-quickjs"]
    host_cloudflare["@sms/host-cloudflare"]
    host_fastify["@sms/host-fastify"]
    host_node["@sms/host-node"]
    model_claude["@sms/model-claude"]
    model_claude_api["@sms/model-claude-api"]
    model_gpt["@sms/model-gpt"]
    model_gpt_api["@sms/model-gpt-api"]
    model_gpt_oauth["@sms/model-gpt-oauth"]
    model_openrouter["@sms/model-openrouter"]
    objects_r2["@sms/objects-r2"]
    objects_s3["@sms/objects-s3"]
    store_d1["@sms/store-d1"]
    store_do["@sms/store-do"]
    store_postgres["@sms/store-postgres"]
    store_sql["@sms/store-sql"]
    store_sqlite["@sms/store-sqlite"]
  end
  subgraph ring_plugin["ring 2 · plugins"]
    plugin_admin_api["@sms/plugin-admin-api"]
    plugin_agent_loop["@sms/plugin-agent-loop"]
    plugin_audit["@sms/plugin-audit"]
    plugin_auth["@sms/plugin-auth"]
    plugin_automation["@sms/plugin-automation"]
    plugin_collections["@sms/plugin-collections"]
    plugin_http["@sms/plugin-http"]
    plugin_judge["@sms/plugin-judge"]
    plugin_meta["@sms/plugin-meta"]
    plugin_orm["@sms/plugin-orm"]
    plugin_rbac["@sms/plugin-rbac"]
    plugin_rpc["@sms/plugin-rpc"]
    plugin_scheduler["@sms/plugin-scheduler"]
  end
  subgraph ring_baseline["ring 3 · baseline"]
    baseline["@sms/baseline"]
  end
  subgraph ring_app["ring 4 · apps"]
    example_cloudflare_worker["@sms/example-cloudflare-worker"]
    example_erp_fastify_postgres["@sms/example-erp-fastify-postgres"]
    example_reference_node_sqlite["@sms/example-reference-node-sqlite"]
  end
  contracts --> kernel
  executor_node --> kernel
  executor_node --> plugin_sdk
  executor_quickjs --> kernel
  host_cloudflare --> contracts
  host_cloudflare --> store_do
  host_fastify --> contracts
  host_fastify --> host_node
  host_node --> contracts
  model_claude --> contracts
  model_claude --> kernel
  model_claude_api --> contracts
  model_claude_api --> kernel
  model_gpt --> contracts
  model_gpt --> kernel
  model_gpt_api --> contracts
  model_gpt_api --> kernel
  model_gpt_oauth --> contracts
  model_gpt_oauth --> kernel
  model_openrouter --> contracts
  model_openrouter --> kernel
  objects_r2 --> contracts
  objects_s3 --> contracts
  store_d1 --> contracts
  store_d1 --> store_sql
  store_do --> contracts
  store_do --> store_sql
  store_postgres --> contracts
  store_postgres --> store_sql
  store_sql --> contracts
  store_sql --> kernel
  store_sqlite --> contracts
  store_sqlite --> store_sql
  plugin_admin_api --> kernel
  plugin_admin_api --> plugin_agent_loop
  plugin_admin_api --> plugin_auth
  plugin_admin_api --> plugin_collections
  plugin_admin_api --> plugin_http
  plugin_admin_api --> plugin_judge
  plugin_admin_api --> plugin_scheduler
  plugin_agent_loop --> contracts
  plugin_agent_loop --> kernel
  plugin_agent_loop --> plugin_judge
  plugin_audit --> kernel
  plugin_audit --> plugin_http
  plugin_audit --> plugin_orm
  plugin_auth --> contracts
  plugin_auth --> kernel
  plugin_auth --> plugin_http
  plugin_automation --> contracts
  plugin_automation --> kernel
  plugin_automation --> plugin_audit
  plugin_automation --> plugin_orm
  plugin_collections --> contracts
  plugin_collections --> kernel
  plugin_collections --> plugin_http
  plugin_http --> kernel
  plugin_judge --> kernel
  plugin_meta --> kernel
  plugin_meta --> plugin_orm
  plugin_orm --> contracts
  plugin_orm --> kernel
  plugin_orm --> plugin_http
  plugin_rbac --> contracts
  plugin_rbac --> kernel
  plugin_rbac --> plugin_auth
  plugin_rbac --> plugin_http
  plugin_rpc --> kernel
  plugin_rpc --> plugin_auth
  plugin_rpc --> plugin_http
  plugin_rpc --> plugin_meta
  plugin_rpc --> plugin_orm
  plugin_rpc --> plugin_rbac
  plugin_scheduler --> contracts
  plugin_scheduler --> kernel
  baseline --> contracts
  baseline --> executor_node
  baseline --> kernel
  baseline --> plugin_admin_api
  baseline --> plugin_agent_loop
  baseline --> plugin_auth
  baseline --> plugin_collections
  baseline --> plugin_http
  baseline --> plugin_judge
  baseline --> plugin_meta
  baseline --> plugin_orm
  baseline --> plugin_rbac
  baseline --> plugin_rpc
  baseline --> plugin_scheduler
  baseline --> plugin_sdk
  baseline --> store_sql
  baseline --> store_sqlite
  example_cloudflare_worker --> baseline
  example_cloudflare_worker --> executor_quickjs
  example_cloudflare_worker --> host_cloudflare
  example_cloudflare_worker --> model_claude_api
  example_cloudflare_worker --> model_gpt_api
  example_cloudflare_worker --> model_gpt_oauth
  example_cloudflare_worker --> model_openrouter
  example_cloudflare_worker --> objects_r2
  example_cloudflare_worker --> store_d1
  example_cloudflare_worker --> store_do
  example_erp_fastify_postgres --> baseline
  example_erp_fastify_postgres --> executor_quickjs
  example_erp_fastify_postgres --> host_fastify
  example_erp_fastify_postgres --> model_claude
  example_erp_fastify_postgres --> store_postgres
  example_reference_node_sqlite --> baseline
  example_reference_node_sqlite --> executor_node
  example_reference_node_sqlite --> host_node
  example_reference_node_sqlite --> model_claude
  example_reference_node_sqlite --> model_claude_api
  example_reference_node_sqlite --> model_gpt
  example_reference_node_sqlite --> model_gpt_api
  example_reference_node_sqlite --> model_gpt_oauth
  example_reference_node_sqlite --> model_openrouter
  example_reference_node_sqlite --> store_sqlite
PackageRingDepends on
@sms/kernelring 0 · kernel
@sms/contractsring 1 · contracts@sms/kernel
@sms/plugin-sdkring 1 · plugin-sdk
@sms/executor-nodering 2 · drivers@sms/kernel, @sms/plugin-sdk
@sms/executor-quickjsring 2 · drivers@sms/kernel
@sms/host-cloudflarering 2 · drivers@sms/contracts, @sms/store-do
@sms/host-fastifyring 2 · drivers@sms/contracts, @sms/host-node
@sms/host-nodering 2 · drivers@sms/contracts
@sms/model-claudering 2 · drivers@sms/contracts, @sms/kernel
@sms/model-claude-apiring 2 · drivers@sms/contracts, @sms/kernel
@sms/model-gptring 2 · drivers@sms/contracts, @sms/kernel
@sms/model-gpt-apiring 2 · drivers@sms/contracts, @sms/kernel
@sms/model-gpt-oauthring 2 · drivers@sms/contracts, @sms/kernel
@sms/model-openrouterring 2 · drivers@sms/contracts, @sms/kernel
@sms/objects-r2ring 2 · drivers@sms/contracts
@sms/objects-s3ring 2 · drivers@sms/contracts
@sms/store-d1ring 2 · drivers@sms/contracts, @sms/store-sql
@sms/store-doring 2 · drivers@sms/contracts, @sms/store-sql
@sms/store-postgresring 2 · drivers@sms/contracts, @sms/store-sql
@sms/store-sqlring 2 · drivers@sms/contracts, @sms/kernel
@sms/store-sqlitering 2 · drivers@sms/contracts, @sms/store-sql
@sms/plugin-admin-apiring 2 · plugins@sms/kernel, @sms/plugin-agent-loop, @sms/plugin-auth, @sms/plugin-collections, @sms/plugin-http, @sms/plugin-judge, @sms/plugin-scheduler
@sms/plugin-agent-loopring 2 · plugins@sms/contracts, @sms/kernel, @sms/plugin-judge
@sms/plugin-auditring 2 · plugins@sms/kernel, @sms/plugin-http, @sms/plugin-orm
@sms/plugin-authring 2 · plugins@sms/contracts, @sms/kernel, @sms/plugin-http
@sms/plugin-automationring 2 · plugins@sms/contracts, @sms/kernel, @sms/plugin-audit, @sms/plugin-orm
@sms/plugin-collectionsring 2 · plugins@sms/contracts, @sms/kernel, @sms/plugin-http
@sms/plugin-httpring 2 · plugins@sms/kernel
@sms/plugin-judgering 2 · plugins@sms/kernel
@sms/plugin-metaring 2 · plugins@sms/kernel, @sms/plugin-orm
@sms/plugin-ormring 2 · plugins@sms/contracts, @sms/kernel, @sms/plugin-http
@sms/plugin-rbacring 2 · plugins@sms/contracts, @sms/kernel, @sms/plugin-auth, @sms/plugin-http
@sms/plugin-rpcring 2 · plugins@sms/kernel, @sms/plugin-auth, @sms/plugin-http, @sms/plugin-meta, @sms/plugin-orm, @sms/plugin-rbac
@sms/plugin-schedulerring 2 · plugins@sms/contracts, @sms/kernel
@sms/baselinering 3 · baseline@sms/contracts, @sms/executor-node, @sms/kernel, @sms/plugin-admin-api, @sms/plugin-agent-loop, @sms/plugin-auth, @sms/plugin-collections, @sms/plugin-http, @sms/plugin-judge, @sms/plugin-meta, @sms/plugin-orm, @sms/plugin-rbac, @sms/plugin-rpc, @sms/plugin-scheduler, @sms/plugin-sdk, @sms/store-sql, @sms/store-sqlite
@sms/example-cloudflare-workerring 4 · apps@sms/baseline, @sms/executor-quickjs, @sms/host-cloudflare, @sms/model-claude-api, @sms/model-gpt-api, @sms/model-gpt-oauth, @sms/model-openrouter, @sms/objects-r2, @sms/store-d1, @sms/store-do
@sms/example-erp-fastify-postgresring 4 · apps@sms/baseline, @sms/executor-quickjs, @sms/host-fastify, @sms/model-claude, @sms/store-postgres
@sms/example-reference-node-sqlitering 4 · apps@sms/baseline, @sms/executor-node, @sms/host-node, @sms/model-claude, @sms/model-claude-api, @sms/model-gpt, @sms/model-gpt-api, @sms/model-gpt-oauth, @sms/model-openrouter, @sms/store-sqlite