@adonis-agora/durable 1.0.0-rc.12 → 1.0.0-rc.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/assets/spa/assets/index-DlaQG-kn.js +16 -0
  3. package/dist/assets/spa/assets/index-DlaQG-kn.js.map +1 -0
  4. package/dist/assets/spa/assets/index-oUo7_8ab.css +1 -0
  5. package/dist/assets/spa/index.html +2 -2
  6. package/dist/commands/agora_doctor.d.ts +23 -0
  7. package/dist/commands/agora_doctor.d.ts.map +1 -0
  8. package/dist/commands/agora_doctor.js +110 -0
  9. package/dist/commands/agora_doctor.js.map +1 -0
  10. package/dist/commands/durable_doctor.d.ts +8 -0
  11. package/dist/commands/durable_doctor.d.ts.map +1 -0
  12. package/dist/commands/durable_doctor.js +8 -0
  13. package/dist/commands/durable_doctor.js.map +1 -0
  14. package/dist/commands/main.d.ts +4 -3
  15. package/dist/commands/main.d.ts.map +1 -1
  16. package/dist/commands/main.js +5 -1
  17. package/dist/commands/main.js.map +1 -1
  18. package/dist/providers/dashboard_provider.d.ts +31 -0
  19. package/dist/providers/dashboard_provider.d.ts.map +1 -1
  20. package/dist/providers/dashboard_provider.js +304 -14
  21. package/dist/providers/dashboard_provider.js.map +1 -1
  22. package/dist/providers/durable_provider.d.ts.map +1 -1
  23. package/dist/providers/durable_provider.js +16 -1
  24. package/dist/providers/durable_provider.js.map +1 -1
  25. package/dist/src/dashboard/console_authorize.d.ts +22 -0
  26. package/dist/src/dashboard/console_authorize.d.ts.map +1 -1
  27. package/dist/src/dashboard/console_authorize.js +63 -1
  28. package/dist/src/dashboard/console_authorize.js.map +1 -1
  29. package/dist/src/dashboard/console_switcher.d.ts +121 -0
  30. package/dist/src/dashboard/console_switcher.d.ts.map +1 -0
  31. package/dist/src/dashboard/console_switcher.js +201 -0
  32. package/dist/src/dashboard/console_switcher.js.map +1 -0
  33. package/dist/src/dashboard/define_config.d.ts +4 -2
  34. package/dist/src/dashboard/define_config.d.ts.map +1 -1
  35. package/dist/src/dashboard/define_config.js.map +1 -1
  36. package/dist/src/dashboard/dev_tools.d.ts +102 -0
  37. package/dist/src/dashboard/dev_tools.d.ts.map +1 -0
  38. package/dist/src/dashboard/dev_tools.js +491 -0
  39. package/dist/src/dashboard/dev_tools.js.map +1 -0
  40. package/dist/src/dashboard/handlers.d.ts.map +1 -1
  41. package/dist/src/dashboard/handlers.js +2 -0
  42. package/dist/src/dashboard/handlers.js.map +1 -1
  43. package/dist/src/dashboard/index.d.ts +6 -2
  44. package/dist/src/dashboard/index.d.ts.map +1 -1
  45. package/dist/src/dashboard/index.js +6 -2
  46. package/dist/src/dashboard/index.js.map +1 -1
  47. package/dist/src/dashboard/spa.d.ts +12 -1
  48. package/dist/src/dashboard/spa.d.ts.map +1 -1
  49. package/dist/src/dashboard/spa.js +6 -2
  50. package/dist/src/dashboard/spa.js.map +1 -1
  51. package/dist/src/dashboard/tenant_scope.d.ts +38 -0
  52. package/dist/src/dashboard/tenant_scope.d.ts.map +1 -0
  53. package/dist/src/dashboard/tenant_scope.js +166 -0
  54. package/dist/src/dashboard/tenant_scope.js.map +1 -0
  55. package/dist/src/define_config.d.ts +9 -0
  56. package/dist/src/define_config.d.ts.map +1 -1
  57. package/dist/src/define_config.js.map +1 -1
  58. package/dist/src/doctor/agora_doctor.d.ts +116 -0
  59. package/dist/src/doctor/agora_doctor.d.ts.map +1 -0
  60. package/dist/src/doctor/agora_doctor.js +685 -0
  61. package/dist/src/doctor/agora_doctor.js.map +1 -0
  62. package/dist/src/doctor/checks.d.ts +22 -0
  63. package/dist/src/doctor/checks.d.ts.map +1 -0
  64. package/dist/src/doctor/checks.js +197 -0
  65. package/dist/src/doctor/checks.js.map +1 -0
  66. package/dist/src/doctor/index.d.ts +9 -0
  67. package/dist/src/doctor/index.d.ts.map +1 -0
  68. package/dist/src/doctor/index.js +16 -0
  69. package/dist/src/doctor/index.js.map +1 -0
  70. package/dist/src/engine.d.ts +35 -0
  71. package/dist/src/engine.d.ts.map +1 -1
  72. package/dist/src/engine.js +182 -31
  73. package/dist/src/engine.js.map +1 -1
  74. package/dist/src/index.d.ts +5 -2
  75. package/dist/src/index.d.ts.map +1 -1
  76. package/dist/src/index.js +4 -2
  77. package/dist/src/index.js.map +1 -1
  78. package/dist/src/interfaces.d.ts +29 -1
  79. package/dist/src/interfaces.d.ts.map +1 -1
  80. package/dist/src/interfaces.js.map +1 -1
  81. package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
  82. package/dist/src/run-gateway/proxy-run-gateway.js +3 -0
  83. package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
  84. package/dist/src/run-gateway/run-request-responder.d.ts +5 -0
  85. package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
  86. package/dist/src/run-gateway/run-request-responder.js +28 -3
  87. package/dist/src/run-gateway/run-request-responder.js.map +1 -1
  88. package/dist/src/run-gateway/tenant-scoped-gateway.d.ts +10 -0
  89. package/dist/src/run-gateway/tenant-scoped-gateway.d.ts.map +1 -0
  90. package/dist/src/run-gateway/tenant-scoped-gateway.js +107 -0
  91. package/dist/src/run-gateway/tenant-scoped-gateway.js.map +1 -0
  92. package/dist/src/run-value-facets.d.ts +1 -1
  93. package/dist/src/run-value-facets.d.ts.map +1 -1
  94. package/dist/src/run-value-facets.js +5 -1
  95. package/dist/src/run-value-facets.js.map +1 -1
  96. package/dist/src/schedules.d.ts +16 -1
  97. package/dist/src/schedules.d.ts.map +1 -1
  98. package/dist/src/schedules.js +29 -4
  99. package/dist/src/schedules.js.map +1 -1
  100. package/dist/src/stores/lucid-mappers.d.ts +3 -0
  101. package/dist/src/stores/lucid-mappers.d.ts.map +1 -1
  102. package/dist/src/stores/lucid-mappers.js +12 -0
  103. package/dist/src/stores/lucid-mappers.js.map +1 -1
  104. package/dist/src/stores/lucid-schema.d.ts +1 -1
  105. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  106. package/dist/src/stores/lucid-schema.js +24 -1
  107. package/dist/src/stores/lucid-schema.js.map +1 -1
  108. package/dist/src/stores/lucid.d.ts.map +1 -1
  109. package/dist/src/stores/lucid.js +31 -2
  110. package/dist/src/stores/lucid.js.map +1 -1
  111. package/dist/src/tenancy.d.ts +104 -0
  112. package/dist/src/tenancy.d.ts.map +1 -0
  113. package/dist/src/tenancy.js +91 -0
  114. package/dist/src/tenancy.js.map +1 -0
  115. package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
  116. package/dist/src/testing/in-memory-state-store.js +6 -0
  117. package/dist/src/testing/in-memory-state-store.js.map +1 -1
  118. package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
  119. package/dist/src/testing-kit/state-store-conformance.js +46 -0
  120. package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
  121. package/package.json +10 -4
  122. package/skills/durable-cluster/SKILL.md +2 -1
  123. package/dist/assets/spa/assets/index-B2kIfzsc.css +0 -1
  124. package/dist/assets/spa/assets/index-Bgf_8IJ0.js +0 -16
  125. package/dist/assets/spa/assets/index-Bgf_8IJ0.js.map +0 -1
@@ -4,15 +4,21 @@ import { PassThrough } from 'node:stream';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { resolveAccessDeniedPage, } from '../src/dashboard/access_denied_page.js';
6
6
  import { compat, enumerateLiveFleet, mergeFleets, } from '../src/dashboard/compat.js';
7
+ import { durableConsoleSearch, listVisibleConsoles, otherConsoles, readAgoraConsoles, registerAgoraConsole, searchConsoles, } from '../src/dashboard/console_switcher.js';
7
8
  import { NO_AUTHORIZE_WARNING, resolveConfig, } from '../src/dashboard/define_config.js';
9
+ import { registerDurableDevTools } from '../src/dashboard/dev_tools.js';
8
10
  import { BlockedDiagnosticsRecorder } from '../src/dashboard/diagnostics-recorder.js';
9
11
  import { dashboardEngineForTopology } from '../src/dashboard/gateway-adapter.js';
10
12
  import { bulkAction, cancelRun, completeTaskRun, continueRun, deliverWebhook, failTaskRun, getFanMembers, getRun, getRunEvent, health, listRuns, listSchedules, metricsText, redispatchPendingRun, republishLifecycleRun, retryRun, retryWithInputRun, runValues, scheduleAction, signalRun, topology, updateRun, workers, workflowLifecycle, } from '../src/dashboard/handlers.js';
11
13
  import { openApiDocument } from '../src/dashboard/openapi.js';
12
14
  import { contentTypeFor, renderIndexHtml } from '../src/dashboard/spa.js';
15
+ import { resolveConsoleTenantScope, scopedDashboardEngine, } from '../src/dashboard/tenant_scope.js';
16
+ import { registerDoctorChecks } from '../src/doctor/agora_doctor.js';
17
+ import { durableConsoleDoctorChecks } from '../src/doctor/checks.js';
13
18
  import { WorkflowEngine } from '../src/index.js';
14
19
  import { collectMetrics } from '../src/metrics.js';
15
20
  import { DURABLE_TRANSPORT } from '../src/role_bindings.js';
21
+ import { tenancyEnabled, tenancySlot } from '../src/tenancy.js';
16
22
  /**
17
23
  * Directory of the built SPA (`dist/spa`, copied in by `copy:stubs` — see `package.json`), relative to
18
24
  * this compiled provider (`dist/providers`). Resolved lazily (not at module scope) for the same reason
@@ -20,6 +26,8 @@ import { DURABLE_TRANSPORT } from '../src/role_bindings.js';
20
26
  * on any non-`file:` `import.meta.url`, which would make this provider unimportable under a test
21
27
  * runner that doesn't use real file URLs.
22
28
  */
29
+ /** This console's id in the app's `'agora.consoles'` registry. */
30
+ const CONSOLE_ID = 'durable';
23
31
  let spaDir;
24
32
  function spaDirectory() {
25
33
  spaDir ??= fileURLToPath(new URL('../assets/spa/', import.meta.url));
@@ -57,6 +65,8 @@ function spaDirectory() {
57
65
  * - `GET /api/workers` -> worker-group health (full heartbeats; SPA)
58
66
  * - `GET /api/topology` -> this deployment's durable topology
59
67
  * - `GET /api/compat` -> fleet health / protocol-compatibility panel
68
+ * - `GET /api/consoles` -> the other Agora consoles this viewer may open (switcher)
69
+ * - `GET /api/consoles/search?q=` -> search across those consoles (and this one)
60
70
  * - `GET /api/openapi.json` -> the machine-readable API contract (OpenAPI 3.1)
61
71
  */
62
72
  export default class DashboardProvider {
@@ -65,6 +75,10 @@ export default class DashboardProvider {
65
75
  this.app = app;
66
76
  }
67
77
  warnedOnAuthorizeThrow = false;
78
+ /** Each request's `authorize` verdict, read again for the console's tenant scope. */
79
+ decisions = new WeakMap();
80
+ /** Each request's resolved tenant scope. */
81
+ scopes = new WeakMap();
68
82
  /** SSE connections currently open, per client address (and in total) — see streamRun. */
69
83
  sseByAddress = new Map();
70
84
  sseTotal = 0;
@@ -83,12 +97,19 @@ export default class DashboardProvider {
83
97
  return this.app.config.get('durable', {}).topology ?? 'standalone';
84
98
  }
85
99
  async boot() {
100
+ await registerDoctorChecks(this.app.container, durableConsoleDoctorChecks).catch(() => undefined);
86
101
  const config = resolveConfig(this.app.config.get('durable_dashboard', {}), { inProduction: this.app.inProduction });
87
102
  if (!config.enabled)
88
103
  return;
89
104
  if (!config.authorizeConfigured)
90
105
  await this.warnNoAuthorize();
91
106
  const durableTopology = this.durableTopology();
107
+ // Developer tools on the app's dev MCP endpoint, when `@adonis-agora/agent/mcp_provider` bound
108
+ // its hub (its `register()` ran before any `boot()`). Gated by this console's own `authorize`.
109
+ await this.registerDevTools(config, durableTopology);
110
+ // The console switcher: this console joins the app's `'agora.consoles'` registry so the other
111
+ // Agora consoles can link to it (and search it), and it can link to them.
112
+ await this.registerConsole(config, durableTopology);
92
113
  // Route registration can't happen synchronously in `boot()` — see the long-standing note this
93
114
  // provider always carried: the router singleton isn't committed until the app's "booted" hooks
94
115
  // run, which fire strictly AFTER every provider's own `boot()`.
@@ -98,6 +119,182 @@ export default class DashboardProvider {
98
119
  await this.attachDiagnostics(durableTopology);
99
120
  });
100
121
  }
122
+ /**
123
+ * The console's read/control port, resolved per request (see {@link registerRoutes}). With tenancy
124
+ * on and a request at hand, it is confined to the tenants this viewer may see (see
125
+ * {@link consoleTenantScope}); the process counters, which span every tenant, are then left out
126
+ * unless the viewer sees every tenant.
127
+ */
128
+ consoleDeps(config, durableTopology) {
129
+ return async (ctx) => {
130
+ const base = await dashboardEngineForTopology(durableTopology, this.app.container, WorkflowEngine);
131
+ const scope = ctx ? await this.consoleTenantScope(config, ctx) : undefined;
132
+ const slot = scope ? tenancySlot() : undefined;
133
+ const engine = scope
134
+ ? scopedDashboardEngine(base, scope.ids, slot ? (fn) => slot.allTenants(fn) : undefined)
135
+ : base;
136
+ const metrics = scope && scope.ids !== undefined ? undefined : this.metricsCollector;
137
+ return {
138
+ engine,
139
+ ...(config.redact ? { redact: config.redact } : {}),
140
+ ...(metrics ? { metrics } : {}),
141
+ };
142
+ };
143
+ }
144
+ /** Whether tenancy is on for durable (config/durable.ts `tenancy`, else config/context.ts). */
145
+ tenancyOn() {
146
+ return tenancyEnabled(this.app.config.get('durable', {}).tenancy);
147
+ }
148
+ /**
149
+ * The tenants this viewer may see in the console, once per request, or `undefined` with tenancy
150
+ * off. `authorize` may grant `tenants` (`'*'` or a list); otherwise it is the viewer's own active
151
+ * tenant. A `?tenant=` pick outside the grant is answered with nothing and audited.
152
+ */
153
+ async consoleTenantScope(config, ctx) {
154
+ if (!this.tenancyOn())
155
+ return undefined;
156
+ const known = this.scopes.get(ctx);
157
+ if (known)
158
+ return known;
159
+ let decision = this.decisions.get(ctx);
160
+ if (decision === undefined) {
161
+ decision = await config.authorize(ctx);
162
+ this.decisions.set(ctx, decision);
163
+ }
164
+ const granted = decision.allowed ? decision.tenants : undefined;
165
+ const slot = tenancySlot();
166
+ const option = this.app.config.get('durable', {}).tenancy;
167
+ const kinds = typeof option === 'object' ? option.kinds : undefined;
168
+ // `tenancy.required` makes a missing tenant throw: in the console that is just "no organization".
169
+ let filter;
170
+ try {
171
+ filter = slot?.tenantFilter(kinds ? { kinds } : undefined);
172
+ }
173
+ catch {
174
+ filter = undefined;
175
+ }
176
+ const own = filter?.mode === 'tenant'
177
+ ? filter.tenant
178
+ : undefined;
179
+ const picked = ctx.request.qs().tenant;
180
+ const scope = resolveConsoleTenantScope({
181
+ granted,
182
+ own: own ? { id: own.id, kind: own.kind, slug: own.slug } : undefined,
183
+ selected: typeof picked === 'string' ? picked : undefined,
184
+ });
185
+ if (scope.forged) {
186
+ this.recordAudit(config, {
187
+ at: new Date(),
188
+ actor: auditActor(ctx),
189
+ method: 'TENANT',
190
+ path: `${ctx.request.url(false)} outside scope: tenant=${scope.selected ?? ''}`,
191
+ });
192
+ }
193
+ this.scopes.set(ctx, scope);
194
+ return scope;
195
+ }
196
+ async registerDevTools(config, durableTopology) {
197
+ const deps = this.consoleDeps(config, durableTopology);
198
+ // An auxiliary feature: a hub that throws must not take the app's boot down with it.
199
+ try {
200
+ await this.registerDurableDevToolsInto(config, deps);
201
+ }
202
+ catch (error) {
203
+ try {
204
+ const logger = await this.app.container.make('logger');
205
+ logger.warn(`[durable_dashboard] could not register the developer tools: ${error instanceof Error ? error.message : String(error)}`);
206
+ }
207
+ catch {
208
+ /* logging must never break boot */
209
+ }
210
+ }
211
+ }
212
+ async registerDurableDevToolsInto(config, deps) {
213
+ await registerDurableDevTools(this.app.container, {
214
+ authorize: config.authorize,
215
+ deps,
216
+ audit: (entry) => this.recordAudit(config, {
217
+ at: new Date(),
218
+ actor: entry.actor,
219
+ method: 'MCP',
220
+ path: `${entry.tool} ${entry.target}`,
221
+ }),
222
+ compat: async () => {
223
+ const result = await compat(await this.compatSource((await deps()).engine));
224
+ return result.body;
225
+ },
226
+ });
227
+ }
228
+ async registerConsole(config, durableTopology) {
229
+ const deps = this.consoleDeps(config, durableTopology);
230
+ let logger;
231
+ try {
232
+ logger = await this.app.container.make('logger');
233
+ }
234
+ catch {
235
+ logger = undefined;
236
+ }
237
+ await registerAgoraConsole(this.app.container, {
238
+ id: CONSOLE_ID,
239
+ title: 'Workflows',
240
+ package: '@adonis-agora/durable',
241
+ icon: 'workflow',
242
+ path: config.path === '' ? '/' : config.path,
243
+ order: 10,
244
+ authorize: config.authorize,
245
+ search: durableConsoleSearch(async (ctx) => {
246
+ const d = await deps(ctx);
247
+ return {
248
+ getRun: (id) => d.engine.getRun(id),
249
+ workflows: async (q, limit) => {
250
+ const res = await runValues(d, {
251
+ params: {},
252
+ query: { field: 'workflow', search: q, limit: String(limit) },
253
+ });
254
+ return res.status === 200
255
+ ? res.body
256
+ : [];
257
+ },
258
+ };
259
+ }, config.path),
260
+ }, logger);
261
+ }
262
+ /**
263
+ * What the console's "Organization" control shows: off (tenancy off), `none` (a viewer with no
264
+ * tenant), `fixed` (one tenant), or `pick` (several, or every tenant with `all`).
265
+ */
266
+ async tenantPicker(config, ctx) {
267
+ const scope = await this.consoleTenantScope(config, ctx);
268
+ if (!scope)
269
+ return { mode: 'off', all: false, selected: null, tenants: [] };
270
+ if (scope.authorized === 'none')
271
+ return { mode: 'none', all: false, selected: null, tenants: [] };
272
+ let ids;
273
+ if (scope.authorized === '*') {
274
+ // Every tenant that has runs, read across tenants.
275
+ const base = await dashboardEngineForTopology(this.durableTopology(), this.app.container, WorkflowEngine);
276
+ const slot = tenancySlot();
277
+ // Paged: every organization that has runs, not only the first page of them.
278
+ ids = [];
279
+ const facets = base.runValueFacets?.bind(base);
280
+ for (let offset = 0; facets && offset < 10_000; offset += 200) {
281
+ const page = () => facets({ field: 'tenant' }, {}, { limit: 200, offset });
282
+ const rows = (await (slot ? slot.allTenants(page) : page())) ?? [];
283
+ for (const row of rows)
284
+ if (typeof row.value === 'string')
285
+ ids.push(row.value);
286
+ if (rows.length < 200)
287
+ break;
288
+ }
289
+ }
290
+ else {
291
+ ids = scope.authorized;
292
+ }
293
+ const labels = await tenantLabelsFor(ids, scope.own);
294
+ const tenants = ids.map((id) => ({ id, label: labels[id] ?? id }));
295
+ const mode = scope.authorized === '*' || ids.length > 1 ? 'pick' : 'fixed';
296
+ return { mode, all: scope.authorized === '*', selected: scope.selected ?? null, tenants };
297
+ }
101
298
  async attachDiagnostics(durableTopology) {
102
299
  if (durableTopology === 'tenant')
103
300
  return;
@@ -122,12 +319,7 @@ export default class DashboardProvider {
122
319
  // Resolve the dashboard's read/control port lazily per request, branched by topology (design §5/§8):
123
320
  // a store topology adapts the engine (built by @adonis-agora/durable's provider); a store-less `tenant`
124
321
  // pod resolves the DURABLE_RUN_GATEWAY token (a ProxyRunGateway) and adapts it — NO engine, NO store.
125
- const resolveEngine = () => dashboardEngineForTopology(durableTopology, this.app.container, WorkflowEngine);
126
- const deps = async () => ({
127
- engine: await resolveEngine(),
128
- ...(config.redact ? { redact: config.redact } : {}),
129
- ...(this.metricsCollector ? { metrics: this.metricsCollector } : {}),
130
- });
322
+ const deps = this.consoleDeps(config, durableTopology);
131
323
  this.registerSpaRoutes(router, config, apiBase);
132
324
  // JSON API.
133
325
  const json = (handler) => {
@@ -139,7 +331,7 @@ export default class DashboardProvider {
139
331
  if (isMutatingMethod(ctx))
140
332
  this.audit(config, ctx);
141
333
  try {
142
- const result = await handler(await deps(), toApiRequest(ctx));
334
+ const result = await handler(await deps(ctx), toApiRequest(ctx));
143
335
  for (const [name, value] of Object.entries(result.headers ?? {})) {
144
336
  ctx.response.header(name, value);
145
337
  }
@@ -207,7 +399,7 @@ export default class DashboardProvider {
207
399
  if (!(await this.enforce(config, ctx, 'api')))
208
400
  return;
209
401
  try {
210
- const text = await metricsText(await deps());
402
+ const text = await metricsText(await deps(ctx));
211
403
  ctx.response.header('Content-Type', 'text/plain; version=0.0.4; charset=utf-8');
212
404
  return ctx.response.status(200).send(text);
213
405
  }
@@ -232,6 +424,60 @@ export default class DashboardProvider {
232
424
  .post(`${apiBase}/schedules/:key/:action`, json(scheduleAction))
233
425
  .as('durable_dashboard.schedules.action');
234
426
  router.post(`${apiBase}/bulk/:action`, json(bulkAction)).as('durable_dashboard.bulk');
427
+ // Tenancy: which organizations this viewer may pick, and an audited record of a switch.
428
+ router
429
+ .get(`${apiBase}/tenants`, async (ctx) => {
430
+ if (!(await this.enforce(config, ctx, 'api')))
431
+ return;
432
+ ctx.response.header('cache-control', 'private, no-store');
433
+ try {
434
+ return ctx.response.status(200).json(await this.tenantPicker(config, ctx));
435
+ }
436
+ catch (error) {
437
+ void this.logServerError(error);
438
+ return ctx.response.status(500).json({ error: 'internal error' });
439
+ }
440
+ })
441
+ .as('durable_dashboard.tenants');
442
+ router
443
+ .post(`${apiBase}/tenants/:id/select`, async (ctx) => {
444
+ if (!(await this.enforce(config, ctx, 'api')))
445
+ return;
446
+ // The audit line (actor, `POST …/tenants/<id>/select`) is the record of the switch.
447
+ this.audit(config, ctx);
448
+ const scope = await this.consoleTenantScope(config, ctx);
449
+ const id = String(ctx.params.id);
450
+ const allowed = scope === undefined ||
451
+ id === '*' ||
452
+ scope.authorized === '*' ||
453
+ (Array.isArray(scope.authorized) && scope.authorized.includes(id));
454
+ return ctx.response
455
+ .status(allowed ? 200 : 404)
456
+ .json(allowed ? { tenant: id } : { error: 'not found' });
457
+ })
458
+ .as('durable_dashboard.tenants.select');
459
+ // The console switcher: the other Agora consoles this viewer may open, and a search across them.
460
+ router
461
+ .get(`${apiBase}/consoles`, async (ctx) => {
462
+ if (!(await this.enforce(config, ctx, 'api')))
463
+ return;
464
+ const registry = await readAgoraConsoles(this.app.container);
465
+ ctx.response.header('cache-control', 'private, no-store');
466
+ return ctx.response.status(200).json(await listVisibleConsoles(registry, CONSOLE_ID, ctx));
467
+ })
468
+ .as('durable_dashboard.consoles');
469
+ router
470
+ .get(`${apiBase}/consoles/search`, async (ctx) => {
471
+ if (!(await this.enforce(config, ctx, 'api')))
472
+ return;
473
+ const registry = await readAgoraConsoles(this.app.container);
474
+ const q = ctx.request.qs().q;
475
+ ctx.response.header('cache-control', 'private, no-store');
476
+ return ctx.response
477
+ .status(200)
478
+ .json(await searchConsoles(registry, CONSOLE_ID, ctx, typeof q === 'string' ? q : ''));
479
+ })
480
+ .as('durable_dashboard.consoles.search');
235
481
  router
236
482
  .get(`${apiBase}/health`, json((d) => health(d)))
237
483
  .as('durable_dashboard.health');
@@ -257,7 +503,11 @@ export default class DashboardProvider {
257
503
  if (!(await this.enforce(config, ctx, 'api')))
258
504
  return;
259
505
  const id = ctx.params.id;
260
- const engine = await resolveEngine();
506
+ const { engine } = await deps(ctx);
507
+ // A run outside the viewer's tenants streams nothing: answer like an unknown run.
508
+ if ((await engine.getRun(id)) === null && this.tenancyOn()) {
509
+ return ctx.response.status(404).json({ error: `run ${id} not found` });
510
+ }
261
511
  await this.streamRun(ctx, engine, id);
262
512
  })
263
513
  .as('durable_dashboard.runs.stream');
@@ -268,7 +518,7 @@ export default class DashboardProvider {
268
518
  if (!(await this.enforce(config, ctx, 'api')))
269
519
  return;
270
520
  try {
271
- const result = await compat(await this.compatSource(await resolveEngine()));
521
+ const result = await compat(await this.compatSource((await deps(ctx)).engine));
272
522
  return ctx.response.status(result.status).json(result.body);
273
523
  }
274
524
  catch (error) {
@@ -297,7 +547,12 @@ export default class DashboardProvider {
297
547
  return ctx.response
298
548
  .header('content-type', 'text/html; charset=utf-8')
299
549
  .header('cache-control', 'no-store, must-revalidate')
300
- .send(renderIndexHtml(html, config.path, apiBase));
550
+ .send(renderIndexHtml(html, config.path, apiBase, {
551
+ switcher: {
552
+ endpoint: `${apiBase}/consoles`,
553
+ others: otherConsoles(await readAgoraConsoles(this.app.container), CONSOLE_ID),
554
+ },
555
+ }));
301
556
  })
302
557
  .as('durable_dashboard.index');
303
558
  router
@@ -396,12 +651,20 @@ export default class DashboardProvider {
396
651
  /** Record one mutating console action (see DashboardAuditEntry). Never throws into the request. */
397
652
  audit(config, ctx) {
398
653
  try {
399
- const entry = {
654
+ this.recordAudit(config, {
400
655
  at: new Date(),
401
656
  actor: auditActor(ctx),
402
657
  method: ctx.request.method().toUpperCase(),
403
658
  path: ctx.request.url(false),
404
- };
659
+ });
660
+ }
661
+ catch {
662
+ /* auditing must never break the action */
663
+ }
664
+ }
665
+ /** Hand one audit entry to the host's sink, or the default logger line. Never throws. */
666
+ recordAudit(config, entry) {
667
+ try {
405
668
  if (config.audit) {
406
669
  // Typed `void`, but an async hook is assignable to it: catch its rejection too.
407
670
  const pending = config.audit(entry);
@@ -472,6 +735,7 @@ export default class DashboardProvider {
472
735
  }
473
736
  // The resolved gate never throws: a throwing `authorize` comes back as a 403 carrying the error.
474
737
  const decision = await config.authorize(ctx);
738
+ this.decisions.set(ctx, decision);
475
739
  if (decision.allowed)
476
740
  return true;
477
741
  if (decision.error !== undefined)
@@ -601,9 +865,35 @@ export function auditActor(ctx) {
601
865
  function toApiRequest(ctx) {
602
866
  return {
603
867
  params: ctx.params,
604
- query: ctx.request.qs(),
868
+ // `tenant` picks the console's organization (see consoleTenantScope); it is not a run filter.
869
+ query: withoutTenantParam(ctx.request.qs()),
605
870
  body: ctx.request.body(),
606
871
  headers: { 'if-none-match': ctx.request.header('if-none-match') },
607
872
  };
608
873
  }
874
+ function withoutTenantParam(query) {
875
+ if (!('tenant' in query))
876
+ return query;
877
+ const { tenant: _tenant, ...rest } = query;
878
+ return rest;
879
+ }
880
+ /**
881
+ * Display labels for tenant ids: the viewer's own tenant by its slug, the rest through context's
882
+ * label resolver (`tenancy.label` in config/context.ts, or the one authkit installs), else the id.
883
+ */
884
+ async function tenantLabelsFor(ids, own) {
885
+ const labels = {};
886
+ const slot = tenancySlot();
887
+ if (slot?.tenantLabels && ids.length > 0) {
888
+ try {
889
+ Object.assign(labels, await slot.tenantLabels(ids));
890
+ }
891
+ catch {
892
+ /* labels are cosmetic: fall back to ids */
893
+ }
894
+ }
895
+ if (own?.slug && labels[own.id] === undefined)
896
+ labels[own.id] = own.slug;
897
+ return labels;
898
+ }
609
899
  //# sourceMappingURL=dashboard_provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard_provider.js","sourceRoot":"","sources":["../../providers/dashboard_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard_provider.js","sourceRoot":"","sources":["../../providers/dashboard_provider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"durable_provider.d.ts","sourceRoot":"","sources":["../../providers/durable_provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAsG/D,MAAM,CAAC,OAAO,OAAO,eAAe;;IAkBtB,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAA7C,YAAsB,GAAG,EAAE,kBAAkB,EAAI;IAEjD,QAAQ,SAkBP;IA6UD;;;;;;;;;;;OAWG;IACG,IAAI,kBA0BT;IAuUD;;;;;;;OAOG;IACG,KAAK,kBAWV;IAEK,QAAQ,kBAkCb;CACF"}
1
+ {"version":3,"file":"durable_provider.d.ts","sourceRoot":"","sources":["../../providers/durable_provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA0G/D,MAAM,CAAC,OAAO,OAAO,eAAe;;IAkBtB,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAA7C,YAAsB,GAAG,EAAE,kBAAkB,EAAI;IAEjD,QAAQ,SAkBP;IAoVD;;;;;;;;;;;OAWG;IACG,IAAI,kBA6BT;IAuUD;;;;;;;OAOG;IACG,KAAK,kBAWV;IAEK,QAAQ,kBAkCb;CACF"}
@@ -2,12 +2,16 @@ import { pathToFileURL } from 'node:url';
2
2
  import { mergeSchedules, runWorkerLoop } from '../src/commands/worker.js';
3
3
  import { stopDiagnosticsDeliveries } from '../src/diagnostics/transport.js';
4
4
  import { discoveryRoots } from '../src/discovery-roots.js';
5
+ import { registerDoctorChecks } from '../src/doctor/agora_doctor.js';
6
+ import { durableDoctorChecks } from '../src/doctor/checks.js';
5
7
  import { parseDuration } from '../src/duration.js';
6
8
  import { attachEventTriggerBridge } from '../src/event-trigger-bridge.js';
7
9
  import { attachDurableDiagnostics, InMemoryStateStore, InMemoryTransport, ProxyRunGateway, RunRequestResponder, registerStepsFromBarrel, registerStepsFromDir, registerWorkflowsFromBarrel, registerWorkflowsFromDir, resolveTenantToken, resolveTenantVerifier, StoreRunGateway, WorkflowEngine, } from '../src/index.js';
8
10
  import { DURABLE_RUN_GATEWAY, DURABLE_RUN_REQUEST_RESPONDER, DURABLE_TRANSPORT, DURABLE_WORKER_RUNTIME, descriptorRedisFrom, hasProxyCapability, hasResponderCapability, NOOP_RUN_DISPATCHER, } from '../src/role_bindings.js';
11
+ import { tenantScopedGateway } from '../src/run-gateway/tenant-scoped-gateway.js';
9
12
  import { resolveSchedules } from '../src/scheduler.js';
10
13
  import { setBootedApp } from '../src/services/booted_app.js';
14
+ import { contextEngineTenancy, tenancyEnabled } from '../src/tenancy.js';
11
15
  import { NoopWorkerRegistry, RedisWorkerRegistry, WorkerRuntime, } from '../src/worker-runtime/index.js';
12
16
  const CONTEXT_ACCESSOR = Symbol.for('@agora/context:accessor');
13
17
  /**
@@ -283,6 +287,9 @@ export default class DurableProvider {
283
287
  // carrier through verbatim. The carrier is producer-owned and shape-opaque; the worker's
284
288
  // scope slot round-trips the whole snapshot via Context.run, so no field-picking is needed.
285
289
  ...(accessor ? { context: () => accessor.get() } : {}),
290
+ // Tenancy (off unless config/context.ts or `tenancy` turns it on): which tenant's runs an
291
+ // app-facing call sees, and the tenant a resumed run gets back.
292
+ ...(config.tenancy !== false ? { tenancy: contextEngineTenancy(config.tenancy) } : {}),
286
293
  // Trace continuation on dispatched remote tasks. An explicit `config.traceparent` wins;
287
294
  // otherwise best-effort from @adonis-agora/diagnostics-otel's global slot (no hard dep).
288
295
  ...(config.traceparent
@@ -320,7 +327,7 @@ export default class DurableProvider {
320
327
  if (!hasProxyCapability(transport)) {
321
328
  throw new Error(`@agora/durable: topology 'tenant' needs a transport with the P4 store-less methods (dispatchStartRun/dispatchRunRequest/onRunReply/onTenantEvent); the selected transport ("${config.transport}") does not expose them.`);
322
329
  }
323
- return new ProxyRunGateway(transport, {
330
+ const proxy = new ProxyRunGateway(transport, {
324
331
  partition: config.partition,
325
332
  ...(config.tenant?.token !== undefined
326
333
  ? {
@@ -331,6 +338,11 @@ export default class DurableProvider {
331
338
  ? { requestTimeoutMs: config.requestTimeoutMs }
332
339
  : {}),
333
340
  });
341
+ // Tenancy on the pod side: new runs carry the active tenant, reads see that tenant's runs.
342
+ if (!tenancyEnabled(config.tenancy))
343
+ return proxy;
344
+ const tenancy = contextEngineTenancy(config.tenancy);
345
+ return tenancy ? tenantScopedGateway(proxy, tenancy) : proxy;
334
346
  });
335
347
  this.app.container.singleton(DURABLE_WORKER_RUNTIME, async () => {
336
348
  const transport = await this.#tenantTransport(config);
@@ -397,6 +409,9 @@ export default class DurableProvider {
397
409
  * container-bound {@link WorkerRuntime} from the `durable:worker` command instead).
398
410
  */
399
411
  async boot() {
412
+ // `node ace agora:doctor` reads these after boot. Registered here rather than in `register()`,
413
+ // which AdonisJS does not await.
414
+ await registerDoctorChecks(this.app.container, durableDoctorChecks).catch(() => undefined);
400
415
  // A warmed-up app (`node ace codegen` & co. — `app.boot()` + `app.warmUp()`, then `terminate()`)
401
416
  // never starts, so its providers' `shutdown()` never runs. Resolving the engine here would build
402
417
  // the transport and store — opening the broker / Redis / database connections nothing would ever