1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
--- @module assay.engine
--- @description Convenience umbrella for the assay-engine clients (core, auth, workflow, vault). One `engine.connect()` call returns all four sharing a base URL + admin key. Prefer requiring the individual submodules directly (`assay.engine.core`, etc.) if you only need one.
--- @keywords engine, assay, core, auth, workflow, vault, secrets, idp, oidc, zanzibar, scheduler
--- @quickref engine.core — engine-core admin (info, modules, instances, audit, config)
--- @quickref engine.auth — auth (login, passkey, OIDC client + provider, biscuit, zanzibar, admin)
--- @quickref engine.workflow — workflow (CRUD, schedules, namespaces, workers, queues; worker mode via :register_* + :listen)
--- @quickref engine.vault — vault (KV v2, transit, share, dynamic creds, sealing)
--- @quickref engine.connect(url|opts, api_key?) -> {core, auth, workflow, vault} | Build all clients in one call
local core = require
local auth = require
local workflow = require
local vault = require
local M =
--- Build the full client trio against one assay-engine.
---
--- Two call shapes:
---
--- engine.connect("http://localhost:8420")
--- engine.connect("http://localhost:8420", "admin-key")
--- engine.connect({ engine_url = "...", api_key = "...", session_cookie = "..." })
---
--- Returns a record `{ core, auth, workflow }`. Each entry is the
--- corresponding submodule's `client(opts)` result, sharing the same
--- engine URL + bearer token + session cookie. Falls back to the
--- environment for unset fields:
---
--- ASSAY_ENGINE_URL → engine_url
--- ASSAY_ADMIN_KEY → api_key
return M