Repository navigation
Expand file tree
/
Copy pathtoc-95692568.js
More file actions
455 lines (416 loc) · 90.6 KB
/
Copy pathtoc-95692568.js
File metadata and controls
455 lines (416 loc) · 90.6 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
// Populate the sidebar
//
// This is a script, and not included directly in the page, to control the total size of the book.
// The TOC contains an entry for each page, so if each page includes a copy of the TOC,
// the total size of the page becomes O(n**2).
class MDBookSidebarScrollbox extends HTMLElement {
constructor() {
super();
}
connectedCallback() {
this.innerHTML = '<ol class="chapter"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="introduction.html"><strong aria-hidden="true">1.</strong> Introduction</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="architecture.html"><strong aria-hidden="true">2.</strong> Architecture</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design.html"><strong aria-hidden="true">3.</strong> Design</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-db/ci.html"><strong aria-hidden="true">3.1.</strong> Portal DB CI</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view.html"><strong aria-hidden="true">3.2.</strong> Portal View</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/multiple-environment.html"><strong aria-hidden="true">3.2.1.</strong> Mutliple Environment</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/mcp-registry.html"><strong aria-hidden="true">3.2.2.</strong> MCP Registry</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/too-many-pages-forms.html"><strong aria-hidden="true">3.2.3.</strong> Too Many Pages/Forms</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/action-menu.html"><strong aria-hidden="true">3.2.4.</strong> Action Menu and Expanded Buttons</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/config-update-page.html"><strong aria-hidden="true">3.2.5.</strong> Config Update Page</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/config-snapshot-output-comparison.html"><strong aria-hidden="true">3.2.6.</strong> Config Snapshot Output and Comparison</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/rust-controller-logging.html"><strong aria-hidden="true">3.2.7.</strong> Rust Controller Logging</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/human-task-ui.html"><strong aria-hidden="true">3.2.8.</strong> Human Task UI</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/user-filter.html"><strong aria-hidden="true">3.2.9.</strong> User Filter</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/contextual-help-links.html"><strong aria-hidden="true">3.2.10.</strong> Contextual Help Links</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/event-processing-notifications.html"><strong aria-hidden="true">3.2.11.</strong> Event Processing Notifications</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/api-marketplace-catalog.html"><strong aria-hidden="true">3.2.12.</strong> API Marketplace Catalog</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/agent-registration.html"><strong aria-hidden="true">3.2.13.</strong> AI Agent Registration</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-view/portable-signed-runtime-configuration.html"><strong aria-hidden="true">3.2.14.</strong> Portable Signed Artifact and Runtime Configuration</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/oauth-kafka.html"><strong aria-hidden="true">3.3.</strong> OAuth Kafka</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/oauth-kafka/token-exchange.html"><strong aria-hidden="true">3.3.1.</strong> Token Exchange</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-oauth.html"><strong aria-hidden="true">3.4.</strong> Light OAuth</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-oauth/ipv6-support.html"><strong aria-hidden="true">3.4.1.</strong> IPv6 Support</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-oauth/device-authorization.html"><strong aria-hidden="true">3.4.2.</strong> CLI Device Authorization</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-controller.html"><strong aria-hidden="true">3.5.</strong> Light Controller</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-controller/ipv6-support.html"><strong aria-hidden="true">3.5.1.</strong> IPv6 Support</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-controller/webtransport-rkyv.html"><strong aria-hidden="true">3.5.2.</strong> Controller Transport and Codec Profiles</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/rust-product-inventory.html"><strong aria-hidden="true">3.6.</strong> Rust Product And Portal Service Inventory</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/agent-skill-tool-discovery.html"><strong aria-hidden="true">3.7.</strong> Agent Skill And API Endpoint Discovery</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/agent-api-compose.html"><strong aria-hidden="true">3.8.</strong> Agent API Compose And Multi-Agent Workflow</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/agent-memory-event-refactor.html"><strong aria-hidden="true">3.9.</strong> Agent Memory Event Refactor</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/tool-description-embedding.html"><strong aria-hidden="true">3.10.</strong> Tool Description Embedding Population</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/workflow-editor.html"><strong aria-hidden="true">3.11.</strong> Workflow Editor</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/catalog-scope.html"><strong aria-hidden="true">3.12.</strong> Portal Catalog Scope</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/oauth-audit.html"><strong aria-hidden="true">3.13.</strong> OAuth Audit</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/multi-tenant.html"><strong aria-hidden="true">3.14.</strong> Multi-Tenant</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/system-integration.html"><strong aria-hidden="true">3.15.</strong> System Integration</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/portal-event.html"><strong aria-hidden="true">3.16.</strong> Portal Event</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/reference_table.html"><strong aria-hidden="true">3.17.</strong> Reference Table</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/authentication-authorization.html"><strong aria-hidden="true">3.18.</strong> Authentication Authorization</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/fine-grained-authorization.html"><strong aria-hidden="true">3.19.</strong> Fine-Grained Authorization</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal-fga.html"><strong aria-hidden="true">3.20.</strong> Light Portal Fine-Grained Authorization</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal.html"><strong aria-hidden="true">3.21.</strong> Light Portal</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/production-deployment.html"><strong aria-hidden="true">3.21.1.</strong> Production Deployment: An Independent Control Plane</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/llm-gateway-topology.html"><strong aria-hidden="true">3.21.2.</strong> LLM Gateway Topology Per Host And Environment</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/enterprise-llm-inference-options.html"><strong aria-hidden="true">3.21.3.</strong> Enterprise LLM Inference Options And Mac Studio Business Case</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/control-plane-policy-config-server.html"><strong aria-hidden="true">3.21.4.</strong> Control-Plane Policy Publication Through Config Server</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/development-database-topology.html"><strong aria-hidden="true">3.21.5.</strong> Operational Storage Registration And Development PostgreSQL Topology</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/operational-storage-registration-plan.html"><strong aria-hidden="true">3.21.5.1.</strong> Implementation Plan</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/global-tenant-entity-scope.html"><strong aria-hidden="true">3.21.6.</strong> Global And Tenant Entity Scope</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/knowledge-base.html"><strong aria-hidden="true">3.21.7.</strong> Global And Tenant Knowledge Bases For Shared Agent Retrieval</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-knowledge/portal-operational-query-boundary.html"><strong aria-hidden="true">3.21.7.1.</strong> Portal Operational Access Boundary</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-knowledge/portal-operational-query-boundary-runbook.html"><strong aria-hidden="true">3.21.7.1.1.</strong> Operations Runbook</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/workflow-version-publication.html"><strong aria-hidden="true">3.21.8.</strong> Workflow Version and Publication</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/endpoint-tool-workflow-access.html"><strong aria-hidden="true">3.21.9.</strong> Endpoint Tools and Workflow Access</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/api-version-gateway-publication.html"><strong aria-hidden="true">3.21.10.</strong> API Version Publication To Gateway</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/portal-managed-gateway-regression.html"><strong aria-hidden="true">3.21.11.</strong> Portal-Managed Light Gateway Regression</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/event-replay-direct-execution.html"><strong aria-hidden="true">3.21.12.</strong> Direct Event Replay Execution</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/database-recreation-event-bootstrap.html"><strong aria-hidden="true">3.21.13.</strong> Fast Snapshot-Derived Database Bootstrap</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/composable-multi-host-snapshot-export.html"><strong aria-hidden="true">3.21.14.</strong> Composable Multi-Host Snapshot Export And Bootstrap</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/portal-service-rust-consolidation.html"><strong aria-hidden="true">3.21.15.</strong> Portal Service Consolidation Into Rust</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal/portal-java-monorepo.html"><strong aria-hidden="true">3.21.15.1.</strong> Phase 0: Portal Java Monorepo</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-gateway.html"><strong aria-hidden="true">3.22.</strong> Light Gateway</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-gateway/outbound-tls-trust.html"><strong aria-hidden="true">3.22.1.</strong> Outbound TLS Trust For Public And Enterprise APIs</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-gateway/local-model-provider-transport.html"><strong aria-hidden="true">3.22.2.</strong> Local Model Provider Transport For LLM Gateway</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-workflow/workflow-tool-access-approval.html"><strong aria-hidden="true">3.23.</strong> Light Workflow Tool Access Approval</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/claim-org-role-bootstrap.html"><strong aria-hidden="true">3.24.</strong> Claim Org Role Bootstrap</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/master-oauth-host-tenant-login.html"><strong aria-hidden="true">3.25.</strong> Master OAuth Host Tenant Login</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/schema-registry.html"><strong aria-hidden="true">3.26.</strong> Schema Registry</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/json-schema-registry.html"><strong aria-hidden="true">3.27.</strong> JSON Schema Registry</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/yaml-rule-registry.html"><strong aria-hidden="true">3.28.</strong> YAML Rule Registry</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/react-schema-form.html"><strong aria-hidden="true">3.29.</strong> React Schema Form</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/user-management.html"><strong aria-hidden="true">3.30.</strong> User Management</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/private-messages.html"><strong aria-hidden="true">3.31.</strong> Private Messages</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/config-server.html"><strong aria-hidden="true">3.32.</strong> Config Server</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/sid-host-verification.html"><strong aria-hidden="true">3.33.</strong> SID and Host Verification</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/instance-clone.html"><strong aria-hidden="true">3.34.</strong> Instance Clone</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/instance-file.html"><strong aria-hidden="true">3.35.</strong> Instance File Config Phase</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/deployment.html"><strong aria-hidden="true">3.36.</strong> Deployment</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-portal-install.html"><strong aria-hidden="true">3.37.</strong> Light Portal Install</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/timestamp.html"><strong aria-hidden="true">3.38.</strong> Timestamp</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/tag.html"><strong aria-hidden="true">3.39.</strong> Tag</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/uuid.html"><strong aria-hidden="true">3.40.</strong> UUID</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/entity-creation-uniqueness.html"><strong aria-hidden="true">3.41.</strong> Entity Creation Uniqueness</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/composite-surrogate.html"><strong aria-hidden="true">3.42.</strong> Composit key vs Surrogate UUID key</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/atomic-composite.html"><strong aria-hidden="true">3.43.</strong> Atomic Events vs Composite Events</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/database-concurrency.html"><strong aria-hidden="true">3.44.</strong> Database Concurrency</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/msal-light-oauth.html"><strong aria-hidden="true">3.45.</strong> MSAL Light OAuth Integration</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/registration-onboarding.html"><strong aria-hidden="true">3.46.</strong> User Registration and Onboarding</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/google-identity-services-sign-in.html"><strong aria-hidden="true">3.47.</strong> Google Identity Services Sign-In and Account Linking</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/optimistic-pessimistic-ui.html"><strong aria-hidden="true">3.48.</strong> Optimistic vs Pessimistic UI</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/soft-hard-delete.html"><strong aria-hidden="true">3.49.</strong> Soft Delete vs Hard Delete</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/tenant-migration.html"><strong aria-hidden="true">3.50.</strong> Tenant Migration</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/product-version-config.html"><strong aria-hidden="true">3.51.</strong> Product Version Config</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/pv-config-mapping.html"><strong aria-hidden="true">3.52.</strong> Product Version Config Mapping Automation</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/product-upgrade-runtime-contract.html"><strong aria-hidden="true">3.53.</strong> Product Upgrade Runtime Contract</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/release-workflow.html"><strong aria-hidden="true">3.54.</strong> Release Workflow</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/optimistic-concurrency-control.html"><strong aria-hidden="true">3.55.</strong> Optimistic Concurrency Control</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/cascade-soft-delete.html"><strong aria-hidden="true">3.56.</strong> Policy-Driven Cascade Delete</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/query-active-rows.html"><strong aria-hidden="true">3.57.</strong> Query Active Rows</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/distributed-scheduler.html"><strong aria-hidden="true">3.58.</strong> Distributed Scheduler</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/postgres-pubsub.html"><strong aria-hidden="true">3.59.</strong> Postgres Pub/Sub</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/coordination-comparison.html"><strong aria-hidden="true">3.60.</strong> Coordination Comparison</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/kafka-event-processor.html"><strong aria-hidden="true">3.61.</strong> Kafka Event Processor</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/importer-rust.html"><strong aria-hidden="true">3.62.</strong> Rust Event Importer</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/event-replay.html"><strong aria-hidden="true">3.63.</strong> Event Replay</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/event-replay-operations-runbook.html"><strong aria-hidden="true">3.63.1.</strong> Operations Runbook</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/event-replay-rollout-runbook.html"><strong aria-hidden="true">3.63.2.</strong> Backfill and Rollout Runbook</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/config-snapshot.html"><strong aria-hidden="true">3.64.</strong> Config Snapshot</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/config-clone.html"><strong aria-hidden="true">3.65.</strong> Config Clone</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/oauth-state.html"><strong aria-hidden="true">3.66.</strong> OAuth State</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/auth-client-secret-regeneration.html"><strong aria-hidden="true">3.67.</strong> Auth Client Secret Regeneration</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/event-promotion.html"><strong aria-hidden="true">3.68.</strong> Event Promotion</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/deployment-workflow.html"><strong aria-hidden="true">3.69.</strong> Deployment Workflow</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/release-signing-key-management.html"><strong aria-hidden="true">3.70.</strong> Release Signing Key Management and Rotation</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/enterprise-ai-assisted-bootstrap-eks.html"><strong aria-hidden="true">3.71.</strong> Enterprise AI-Assisted Bootstrap and EKS Deployment</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/light-oauth-agentcore-oidc-discovery.html"><strong aria-hidden="true">3.72.</strong> OAuth OIDC Discovery</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="design/openapi-endpoint.html"><strong aria-hidden="true">3.73.</strong> OpenAPI Endpoint Parameter Mapping</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/index.html"><strong aria-hidden="true">4.</strong> Help</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/index.html"><strong aria-hidden="true">4.1.</strong> Pages</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/task-center.html"><strong aria-hidden="true">4.1.1.</strong> Task Center</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/ref-table-admin.html"><strong aria-hidden="true">4.1.2.</strong> Reference Table Admin</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/list-rule.html"><strong aria-hidden="true">4.1.3.</strong> List Rule</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/rule-admin.html"><strong aria-hidden="true">4.1.4.</strong> Rule Admin</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/user-session.html"><strong aria-hidden="true">4.1.5.</strong> User Session</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/api-catalog.html"><strong aria-hidden="true">4.1.6.</strong> API Catalog</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/service-endpoint.html"><strong aria-hidden="true">4.1.7.</strong> Service Endpoint</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/workflow-catalog.html"><strong aria-hidden="true">4.1.8.</strong> Workflow Catalog</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/schema-catalog.html"><strong aria-hidden="true">4.1.9.</strong> Schema Catalog</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/llm-model-control-plane.html"><strong aria-hidden="true">4.1.10.</strong> LLM Model Control Plane</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/knowledge-bases.html"><strong aria-hidden="true">4.1.11.</strong> Knowledge Bases</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/genai-chat.html"><strong aria-hidden="true">4.1.12.</strong> GenAI Chat</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/create-llm-model.html"><strong aria-hidden="true">4.1.13.</strong> Create LLM Model</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/skill-workspace.html"><strong aria-hidden="true">4.1.14.</strong> Skill Workspace</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/api-admin.html"><strong aria-hidden="true">4.1.15.</strong> API Admin</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/api-detail.html"><strong aria-hidden="true">4.1.16.</strong> API Detail</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/app-admin.html"><strong aria-hidden="true">4.1.17.</strong> App Admin</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/oauth-client.html"><strong aria-hidden="true">4.1.18.</strong> OAuth Client</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/oauth-client-token.html"><strong aria-hidden="true">4.1.19.</strong> OAuth Client Token</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/instance-admin.html"><strong aria-hidden="true">4.1.20.</strong> Instance Admin</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/operational-storage.html"><strong aria-hidden="true">4.1.21.</strong> Operational Storage</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/instance-clone.html"><strong aria-hidden="true">4.1.22.</strong> Clone an Instance</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/runtime-instance.html"><strong aria-hidden="true">4.1.23.</strong> Runtime Instance</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/instance-api.html"><strong aria-hidden="true">4.1.24.</strong> Instance API</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/instance-api-path-prefix.html"><strong aria-hidden="true">4.1.25.</strong> Instance API Path Prefix</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/instance-app.html"><strong aria-hidden="true">4.1.26.</strong> Instance App</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/instance-app-api.html"><strong aria-hidden="true">4.1.27.</strong> Instance App API</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/schedule-admin.html"><strong aria-hidden="true">4.1.28.</strong> Schedule Admin</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/workflow-definition.html"><strong aria-hidden="true">4.1.29.</strong> Workflow Definition</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/pages/workflow-editor.html"><strong aria-hidden="true">4.1.30.</strong> Workflow Editor</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/index.html"><strong aria-hidden="true">4.2.</strong> Forms</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-provider-account.html"><strong aria-hidden="true">4.2.1.</strong> Create Provider Account</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-llm-network-zone.html"><strong aria-hidden="true">4.2.2.</strong> Create Network Zone</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-llm-network-zone.html"><strong aria-hidden="true">4.2.3.</strong> Update Network Zone</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-llm-provider-endpoint.html"><strong aria-hidden="true">4.2.4.</strong> Create Provider Endpoint</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-llm-provider-endpoint.html"><strong aria-hidden="true">4.2.5.</strong> Update Provider Endpoint</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-provider-deployment.html"><strong aria-hidden="true">4.2.6.</strong> Create Provider Deployment</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-provider-development.html"><strong aria-hidden="true">4.2.7.</strong> Update Provider Deployment</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-provider-credential.html"><strong aria-hidden="true">4.2.8.</strong> Create Provider Credential</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-provider-credential.html"><strong aria-hidden="true">4.2.9.</strong> Update Provider Credential</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-public-alias.html"><strong aria-hidden="true">4.2.10.</strong> Create Public Alias</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-public-alias.html"><strong aria-hidden="true">4.2.11.</strong> Update Public Alias</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-alias-route.html"><strong aria-hidden="true">4.2.12.</strong> Create Alias Route</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-alias-route.html"><strong aria-hidden="true">4.2.13.</strong> Update Alias Route</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-pricing-version.html"><strong aria-hidden="true">4.2.14.</strong> Create Pricing Version</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-pricing-version.html"><strong aria-hidden="true">4.2.15.</strong> Update Pricing Version</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-model-policy.html"><strong aria-hidden="true">4.2.16.</strong> Create Model Policy</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-model-policy.html"><strong aria-hidden="true">4.2.17.</strong> Update Model Policy</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-policy-binding.html"><strong aria-hidden="true">4.2.18.</strong> Create Policy Binding</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-policy-binding.html"><strong aria-hidden="true">4.2.19.</strong> Update Policy Binding</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-api.html"><strong aria-hidden="true">4.2.20.</strong> Create API</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-api.html"><strong aria-hidden="true">4.2.21.</strong> Update API</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-api-version.html"><strong aria-hidden="true">4.2.22.</strong> Create API Version</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-api-version.html"><strong aria-hidden="true">4.2.23.</strong> Update API Version</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-app.html"><strong aria-hidden="true">4.2.24.</strong> Create App</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-app.html"><strong aria-hidden="true">4.2.25.</strong> Update App</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-client.html"><strong aria-hidden="true">4.2.26.</strong> Create Client</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-client.html"><strong aria-hidden="true">4.2.27.</strong> Update Client</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-client-token.html"><strong aria-hidden="true">4.2.28.</strong> Create Client Token</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-instance.html"><strong aria-hidden="true">4.2.29.</strong> Create Instance</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-instance.html"><strong aria-hidden="true">4.2.30.</strong> Update Instance</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-instance-api.html"><strong aria-hidden="true">4.2.31.</strong> Create Instance API</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-instance-api-path-prefix.html"><strong aria-hidden="true">4.2.32.</strong> Create Instance API Path Prefix</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-instance-api-path-prefix.html"><strong aria-hidden="true">4.2.33.</strong> Update Instance API Path Prefix</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-instance-app.html"><strong aria-hidden="true">4.2.34.</strong> Create Instance App</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-instance-app-api.html"><strong aria-hidden="true">4.2.35.</strong> Create Instance App API</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-runtime-instance.html"><strong aria-hidden="true">4.2.36.</strong> Create Runtime Instance</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-runtime-instance.html"><strong aria-hidden="true">4.2.37.</strong> Update Runtime Instance</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-schedule.html"><strong aria-hidden="true">4.2.38.</strong> Create Schedule</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-schedule.html"><strong aria-hidden="true">4.2.39.</strong> Update Schedule</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/create-wf-definition.html"><strong aria-hidden="true">4.2.40.</strong> Create Workflow Definition</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/forms/update-wf-definition.html"><strong aria-hidden="true">4.2.41.</strong> Update Workflow Definition</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/index.html"><strong aria-hidden="true">4.3.</strong> Tasks</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/mcp-onboard-api.html"><strong aria-hidden="true">4.3.1.</strong> Onboard API to MCP Gateway</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/register-standalone-mcp-server.html"><strong aria-hidden="true">4.3.2.</strong> Register Standalone MCP Server</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/publish-api.html"><strong aria-hidden="true">4.3.3.</strong> Publish API</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/register-ai-agent.html"><strong aria-hidden="true">4.3.4.</strong> Register AI Agent</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/validate-llm-embeddings.html"><strong aria-hidden="true">4.3.5.</strong> Validate LLM Embeddings</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/manage-instance.html"><strong aria-hidden="true">4.3.6.</strong> Manage Instance</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/manage-client-app.html"><strong aria-hidden="true">4.3.7.</strong> Manage Client App</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/tasks/manage-workflow.html"><strong aria-hidden="true">4.3.8.</strong> Manage Workflow</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/index.html"><strong aria-hidden="true">4.4.</strong> Configs</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/access-control/index.html"><strong aria-hidden="true">4.4.1.</strong> Access Control</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/access-control/enabled.html"><strong aria-hidden="true">4.4.1.1.</strong> Access Control Enabled</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/access-control/access-rule-logic.html"><strong aria-hidden="true">4.4.1.2.</strong> Access Control Access Rule Logic</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/access-control/default-deny.html"><strong aria-hidden="true">4.4.1.3.</strong> Access Control Default Deny</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/access-control/default-include.html"><strong aria-hidden="true">4.4.1.4.</strong> Access Control Default Include</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/access-control/skip-path-prefixes.html"><strong aria-hidden="true">4.4.1.5.</strong> Access Control Skip Path Prefixes</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/access-control/claim-mappings.html"><strong aria-hidden="true">4.4.1.6.</strong> Access Control Claim Mappings</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/logging/filter.html"><strong aria-hidden="true">4.4.2.</strong> Logging Filter</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/cookie-same-site.html"><strong aria-hidden="true">4.4.3.</strong> MSAL Auth Cookie SameSite</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/enabled.html"><strong aria-hidden="true">4.4.4.</strong> MSAL Auth Enabled</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/login-path.html"><strong aria-hidden="true">4.4.5.</strong> MSAL Auth Login Path</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/logout-path.html"><strong aria-hidden="true">4.4.6.</strong> MSAL Auth Logout Path</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/cookie-domain.html"><strong aria-hidden="true">4.4.7.</strong> MSAL Auth Cookie Domain</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/cookie-path.html"><strong aria-hidden="true">4.4.8.</strong> MSAL Auth Cookie Path</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/cookie-secure.html"><strong aria-hidden="true">4.4.9.</strong> MSAL Auth Cookie Secure</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/msal-auth/session-timeout.html"><strong aria-hidden="true">4.4.10.</strong> MSAL Auth Session Timeout</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/handler/index.html"><strong aria-hidden="true">4.4.11.</strong> Handler Config</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/handler/paths.html"><strong aria-hidden="true">4.4.11.1.</strong> Handler Path</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/index.html"><strong aria-hidden="true">4.4.12.</strong> Router</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/http2-enabled.html"><strong aria-hidden="true">4.4.12.1.</strong> Router http2Enabled</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/https-enabled.html"><strong aria-hidden="true">4.4.12.2.</strong> Router httpsEnabled</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/max-request-time.html"><strong aria-hidden="true">4.4.12.3.</strong> Router maxRequestTime</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/path-prefix-max-request-time.html"><strong aria-hidden="true">4.4.12.4.</strong> Router pathPrefixMaxRequestTime</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/stream-response-content-types.html"><strong aria-hidden="true">4.4.12.5.</strong> Router streamResponseContentTypes</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/stream-request-accept-types.html"><strong aria-hidden="true">4.4.12.6.</strong> Router streamRequestAcceptTypes</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/stream-path-prefixes.html"><strong aria-hidden="true">4.4.12.7.</strong> Router streamPathPrefixes</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/stream-max-request-time.html"><strong aria-hidden="true">4.4.12.8.</strong> Router streamMaxRequestTime</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/stream-idle-timeout.html"><strong aria-hidden="true">4.4.12.9.</strong> Router streamIdleTimeout</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/stream-response-header-overwrite.html"><strong aria-hidden="true">4.4.12.10.</strong> Router streamResponseHeaderOverwrite</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/connections-per-thread.html"><strong aria-hidden="true">4.4.12.11.</strong> Router connectionsPerThread</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/max-queue-size.html"><strong aria-hidden="true">4.4.12.12.</strong> Router maxQueueSize</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/soft-max-connections-per-thread.html"><strong aria-hidden="true">4.4.12.13.</strong> Router softMaxConnectionsPerThread</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/rewrite-host-header.html"><strong aria-hidden="true">4.4.12.14.</strong> Router rewriteHostHeader</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/reuse-xforwarded.html"><strong aria-hidden="true">4.4.12.15.</strong> Router reuseXForwarded</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/max-connection-retries.html"><strong aria-hidden="true">4.4.12.16.</strong> Router maxConnectionRetries</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/pre-resolve-fqdn2-ip.html"><strong aria-hidden="true">4.4.12.17.</strong> Router preResolveFQDN2IP</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/host-whitelist.html"><strong aria-hidden="true">4.4.12.18.</strong> Router hostWhitelist</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/service-id-query-parameter.html"><strong aria-hidden="true">4.4.12.19.</strong> Router serviceIdQueryParameter</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/url-rewrite-rules.html"><strong aria-hidden="true">4.4.12.20.</strong> Router urlRewriteRules</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/method-rewrite-rules.html"><strong aria-hidden="true">4.4.12.21.</strong> Router methodRewriteRules</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/query-param-rewrite-rules.html"><strong aria-hidden="true">4.4.12.22.</strong> Router queryParamRewriteRules</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/header-rewrite-rules.html"><strong aria-hidden="true">4.4.12.23.</strong> Router headerRewriteRules</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/metrics-injection.html"><strong aria-hidden="true">4.4.12.24.</strong> Router metricsInjection</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/router/metrics-name.html"><strong aria-hidden="true">4.4.12.25.</strong> Router metricsName</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/index.html"><strong aria-hidden="true">4.4.13.</strong> WebSocket Router</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/defaultProtocol.html"><strong aria-hidden="true">4.4.13.1.</strong> WebSocket Default Protocol</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/defaultEnvTag.html"><strong aria-hidden="true">4.4.13.2.</strong> WebSocket Default Env Tag</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/pathPrefixService.html"><strong aria-hidden="true">4.4.13.3.</strong> WebSocket Path Prefix Service</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/originAllowlist.html"><strong aria-hidden="true">4.4.13.4.</strong> WebSocket Origin Allowlist</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/applicationProtocols.html"><strong aria-hidden="true">4.4.13.5.</strong> WebSocket Application Protocols</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/preserveRoutingHeaders.html"><strong aria-hidden="true">4.4.13.6.</strong> WebSocket Preserve Routing Headers</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/idleTimeoutMs.html"><strong aria-hidden="true">4.4.13.7.</strong> WebSocket Idle Timeout</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/maxConnectionDurationMs.html"><strong aria-hidden="true">4.4.13.8.</strong> WebSocket Maximum Connection Duration</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/maxActiveConnections.html"><strong aria-hidden="true">4.4.13.9.</strong> WebSocket Maximum Active Connections</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/websocket-router/maxUpgradeRequestsPerSecond.html"><strong aria-hidden="true">4.4.13.10.</strong> WebSocket Maximum Upgrade Rate</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/index.html"><strong aria-hidden="true">4.4.14.</strong> MCP Router</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/enabled.html"><strong aria-hidden="true">4.4.14.1.</strong> MCP Enabled Flags</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/path.html"><strong aria-hidden="true">4.4.14.2.</strong> MCP Path</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-sessions.html"><strong aria-hidden="true">4.4.14.3.</strong> MCP Maximum Sessions</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-sessions-per-client.html"><strong aria-hidden="true">4.4.14.4.</strong> MCP Maximum Sessions Per Client</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-request-body-bytes.html"><strong aria-hidden="true">4.4.14.5.</strong> MCP Maximum Request Body</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-response-body-bytes.html"><strong aria-hidden="true">4.4.14.6.</strong> MCP Maximum Response Body</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-json-depth.html"><strong aria-hidden="true">4.4.14.7.</strong> MCP Maximum JSON Depth</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/origin-allowlist.html"><strong aria-hidden="true">4.4.14.8.</strong> MCP Origin Allowlist</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/default-dialect.html"><strong aria-hidden="true">4.4.14.9.</strong> MCP Schema Default Dialect</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/allow-external-refs.html"><strong aria-hidden="true">4.4.14.10.</strong> MCP Schema External References</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-schema-bytes.html"><strong aria-hidden="true">4.4.14.11.</strong> MCP Maximum Schema Bytes</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-depth.html"><strong aria-hidden="true">4.4.14.12.</strong> MCP Maximum Schema Depth</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-subschemas.html"><strong aria-hidden="true">4.4.14.13.</strong> MCP Maximum Subschemas</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-concurrent-validations.html"><strong aria-hidden="true">4.4.14.14.</strong> MCP Concurrent Schema Validations</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/validation-watchdog-ms.html"><strong aria-hidden="true">4.4.14.15.</strong> MCP Schema Validation Watchdog</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/versions.html"><strong aria-hidden="true">4.4.14.16.</strong> MCP Protocol Versions</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/discover-ttl-ms.html"><strong aria-hidden="true">4.4.14.17.</strong> MCP Discover TTL</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/discover-cache-scope.html"><strong aria-hidden="true">4.4.14.18.</strong> MCP Discover Cache Scope</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/tools-list-ttl-ms.html"><strong aria-hidden="true">4.4.14.19.</strong> MCP Tools List TTL</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/tools-list-cache-scope.html"><strong aria-hidden="true">4.4.14.20.</strong> MCP Tools List Cache Scope</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-discover-cache-entries.html"><strong aria-hidden="true">4.4.14.21.</strong> MCP Maximum Discover Cache Entries</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-tools-list-cache-entries.html"><strong aria-hidden="true">4.4.14.22.</strong> MCP Maximum Tools List Cache Entries</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-tools-list-items.html"><strong aria-hidden="true">4.4.14.23.</strong> MCP Maximum Tools List Items</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-concurrent-requests.html"><strong aria-hidden="true">4.4.14.24.</strong> MCP Maximum Concurrent Requests</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-concurrent-requests-per-principal.html"><strong aria-hidden="true">4.4.14.25.</strong> MCP Concurrent Requests Per Principal</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-concurrent-backend-calls-per-target.html"><strong aria-hidden="true">4.4.14.26.</strong> MCP Concurrent Backend Calls Per Target</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-subscriptions.html"><strong aria-hidden="true">4.4.14.27.</strong> MCP Maximum Subscriptions</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-subscriptions-per-principal.html"><strong aria-hidden="true">4.4.14.28.</strong> MCP Subscriptions Per Principal</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/max-subscription-duration-ms.html"><strong aria-hidden="true">4.4.14.29.</strong> MCP Maximum Subscription Duration</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/stateless-to-legacy-bridge.html"><strong aria-hidden="true">4.4.14.30.</strong> MCP Stateless To Legacy Bridge</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/mcp-router/tools.html"><strong aria-hidden="true">4.4.14.31.</strong> MCP Tools</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/direct-registry/index.html"><strong aria-hidden="true">4.4.15.</strong> Direct Registry</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/configs/direct-registry/direct-urls.html"><strong aria-hidden="true">4.4.15.1.</strong> Direct Registry Direct Urls</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/concepts/index.html"><strong aria-hidden="true">4.5.</strong> Concepts</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/concepts/ownership-and-positions.html"><strong aria-hidden="true">4.5.1.</strong> Ownership And Positions</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/concepts/hosts-and-user-hosts.html"><strong aria-hidden="true">4.5.2.</strong> Hosts And User Hosts</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/concepts/api-versioning.html"><strong aria-hidden="true">4.5.3.</strong> API Versioning</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="help/portal-view/concepts/oauth-client-ownership.html"><strong aria-hidden="true">4.5.4.</strong> OAuth Client Ownership</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="implementation.html"><strong aria-hidden="true">5.</strong> Implementation</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="implementation/local-portal-setup.html"><strong aria-hidden="true">5.1.</strong> Local Portal Setup</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="implementation/signin.html"><strong aria-hidden="true">5.2.</strong> Sign In</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="implementation/login-view.html"><strong aria-hidden="true">5.3.</strong> Login View</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="implementation/services.html"><strong aria-hidden="true">5.4.</strong> Services</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="implementation/portal-view.html"><strong aria-hidden="true">5.5.</strong> Portal View</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="implementation/portal-view/oauth-state-verification.html"><strong aria-hidden="true">5.5.1.</strong> OAuth State Verification</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="configuration.html"><strong aria-hidden="true">6.</strong> Configuration</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="config/light-gateway.html"><strong aria-hidden="true">6.1.</strong> light-gateway</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="config/light-reference.html"><strong aria-hidden="true">6.2.</strong> light-reference</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations.html"><strong aria-hidden="true">7.</strong> Operations</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="devops/rust-image-build-speed.html"><strong aria-hidden="true">7.1.</strong> Faster Local Rust Image Builds</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/product-upgrade-rollback.html"><strong aria-hidden="true">7.2.</strong> Product Upgrade and Rollback</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose.html"><strong aria-hidden="true">7.3.</strong> Docker Compose Deployments</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/portal-config-loc.html"><strong aria-hidden="true">7.3.1.</strong> portal-config-loc</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/portal-config-dev.html"><strong aria-hidden="true">7.3.2.</strong> portal-config-dev</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/portal-config-bootstrap.html"><strong aria-hidden="true">7.3.3.</strong> portal-config-bootstrap</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/portal-config-bootstrap-podman.html"><strong aria-hidden="true">7.3.4.</strong> portal-config-bootstrap on Podman</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/light-portal-install.html"><strong aria-hidden="true">7.3.5.</strong> light-portal-install</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services.html"><strong aria-hidden="true">7.3.6.</strong> Compose Service Catalog</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/postgres.html"><strong aria-hidden="true">7.3.6.1.</strong> PostgreSQL And Bootstrap Jobs</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/light-oauth.html"><strong aria-hidden="true">7.3.6.2.</strong> Light OAuth</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/controller.html"><strong aria-hidden="true">7.3.6.3.</strong> Controller</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/config-server.html"><strong aria-hidden="true">7.3.6.4.</strong> Config Server</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/hybrid-services.html"><strong aria-hidden="true">7.3.6.5.</strong> Hybrid Command And Query</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/portal-service.html"><strong aria-hidden="true">7.3.6.6.</strong> Portal Service</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/light-gateway.html"><strong aria-hidden="true">7.3.6.7.</strong> Light Gateway</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/llm-gateway.html"><strong aria-hidden="true">7.3.6.8.</strong> LLM Gateway</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/light-workflow.html"><strong aria-hidden="true">7.3.6.9.</strong> Light Workflow</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/light-agent.html"><strong aria-hidden="true">7.3.6.10.</strong> Light Agent</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/light-knowledge.html"><strong aria-hidden="true">7.3.6.11.</strong> Light Knowledge</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/light-a2a.html"><strong aria-hidden="true">7.3.6.12.</strong> Light A2A</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/demo-services.html"><strong aria-hidden="true">7.3.6.13.</strong> Demo Services</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="operations/docker-compose/services/portal-bff-sso.html"><strong aria-hidden="true">7.3.6.14.</strong> Enterprise Portal BFF</a></span></li></ol></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="test.html"><strong aria-hidden="true">8.</strong> Test</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="test/integration-test.html"><strong aria-hidden="true">8.1.</strong> Integration Test</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial.html"><strong aria-hidden="true">9.</strong> Tutorial</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-gateway.html"><strong aria-hidden="true">9.1.</strong> light-gateway</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-gateway/llm-gateway.html"><strong aria-hidden="true">9.1.1.</strong> llm-gateway</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-gateway/retire-model.html"><strong aria-hidden="true">9.1.2.</strong> Retire an LLM model</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-gateway/workflow-mcp-smoke.html"><strong aria-hidden="true">9.1.3.</strong> workflow-mcp-smoke</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-gateway/customer-360-workflow-mcp.html"><strong aria-hidden="true">9.1.4.</strong> Customer 360 workflow MCP</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-a2a.html"><strong aria-hidden="true">9.2.</strong> light-a2a sidecar</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-agent.html"><strong aria-hidden="true">9.3.</strong> light-agent</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-agent/codex-personal.html"><strong aria-hidden="true">9.3.1.</strong> codex-personal</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-knowledge.html"><strong aria-hidden="true">9.4.</strong> light-knowledge</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-knowledge/light-fabric-document-ingest.html"><strong aria-hidden="true">9.4.1.</strong> light-fabric-document-ingest</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/light-knowledge/light-fabric-rag-search.html"><strong aria-hidden="true">9.4.2.</strong> light-fabric-rag-search</a></span></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/workspace.html"><strong aria-hidden="true">9.5.</strong> workspace</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/workspace/local-agent-setup.html"><strong aria-hidden="true">9.5.1.</strong> local-agent-setup</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/workspace/shared-task-workspaces.html"><strong aria-hidden="true">9.5.2.</strong> shared-task-workspaces</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="tutorial/workspace/codebase-memory-mcp.html"><strong aria-hidden="true">9.5.3.</strong> codebase-memory-mcp</a></span></li></ol></li></ol><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="license.html"><strong aria-hidden="true">10.</strong> License</a></span><ol class="section"><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="license/bronze.html"><strong aria-hidden="true">10.1.</strong> Bronze</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="license/silver.html"><strong aria-hidden="true">10.2.</strong> Silver</a></span></li><li class="chapter-item expanded "><span class="chapter-link-wrapper"><a href="license/gold.html"><strong aria-hidden="true">10.3.</strong> Gold</a></span></li></ol></li></ol>';
// Set the current, active page, and reveal it if it's hidden
let current_page = document.location.href.toString().split('#')[0].split('?')[0];
if (current_page.endsWith('/')) {
current_page += 'index.html';
}
const links = Array.prototype.slice.call(this.querySelectorAll('a'));
const l = links.length;
for (let i = 0; i < l; ++i) {
const link = links[i];
const href = link.getAttribute('href');
if (href && !href.startsWith('#') && !/^(?:[a-z+]+:)?\/\//.test(href)) {
link.href = path_to_root + href;
}
// The 'index' page is supposed to alias the first chapter in the book.
// Check both with and without the '.html' suffix to be robust against pretty URLs
if (link.href.replace(/\.html$/, '') === current_page.replace(/\.html$/, '')
|| i === 0
&& path_to_root === ''
&& current_page.endsWith('/index.html')) {
link.classList.add('active');
let parent = link.parentElement;
while (parent) {
if (parent.tagName === 'LI' && parent.classList.contains('chapter-item')) {
parent.classList.add('expanded');
}
parent = parent.parentElement;
}
}
}
// Track and set sidebar scroll position
this.addEventListener('click', e => {
if (e.target.tagName === 'A') {
const clientRect = e.target.getBoundingClientRect();
const sidebarRect = this.getBoundingClientRect();
sessionStorage.setItem('sidebar-scroll-offset', clientRect.top - sidebarRect.top);
}
}, { passive: true });
const sidebarScrollOffset = sessionStorage.getItem('sidebar-scroll-offset');
sessionStorage.removeItem('sidebar-scroll-offset');
if (sidebarScrollOffset !== null) {
// preserve sidebar scroll position when navigating via links within sidebar
const activeSection = this.querySelector('.active');
if (activeSection) {
const clientRect = activeSection.getBoundingClientRect();
const sidebarRect = this.getBoundingClientRect();
const currentOffset = clientRect.top - sidebarRect.top;
this.scrollTop += currentOffset - parseFloat(sidebarScrollOffset);
}
} else {
// scroll sidebar to current active section when navigating via
// 'next/previous chapter' buttons
const activeSection = document.querySelector('#mdbook-sidebar .active');
if (activeSection) {
activeSection.scrollIntoView({ block: 'center' });
}
}
// Toggle buttons
const sidebarAnchorToggles = document.querySelectorAll('.chapter-fold-toggle');
function toggleSection(ev) {
ev.currentTarget.parentElement.parentElement.classList.toggle('expanded');
}
Array.from(sidebarAnchorToggles).forEach(el => {
el.addEventListener('click', toggleSection);
});
}
}
window.customElements.define('mdbook-sidebar-scrollbox', MDBookSidebarScrollbox);
// ---------------------------------------------------------------------------
// Support for dynamically adding headers to the sidebar.
(function() {
// This is used to detect which direction the page has scrolled since the
// last scroll event.
let lastKnownScrollPosition = 0;
// This is the threshold in px from the top of the screen where it will
// consider a header the "current" header when scrolling down.
const defaultDownThreshold = 150;
// Same as defaultDownThreshold, except when scrolling up.
const defaultUpThreshold = 300;
// The threshold is a virtual horizontal line on the screen where it
// considers the "current" header to be above the line. The threshold is
// modified dynamically to handle headers that are near the bottom of the
// screen, and to slightly offset the behavior when scrolling up vs down.
let threshold = defaultDownThreshold;
// This is used to disable updates while scrolling. This is needed when
// clicking the header in the sidebar, which triggers a scroll event. It
// is somewhat finicky to detect when the scroll has finished, so this
// uses a relatively dumb system of disabling scroll updates for a short
// time after the click.
let disableScroll = false;
// Array of header elements on the page.
let headers;
// Array of li elements that are initially collapsed headers in the sidebar.
// I'm not sure why eslint seems to have a false positive here.
// eslint-disable-next-line prefer-const
let headerToggles = [];
// This is a debugging tool for the threshold which you can enable in the console.
let thresholdDebug = false;
// Updates the threshold based on the scroll position.
function updateThreshold() {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
const windowHeight = window.innerHeight;
const documentHeight = document.documentElement.scrollHeight;
// The number of pixels below the viewport, at most documentHeight.
// This is used to push the threshold down to the bottom of the page
// as the user scrolls towards the bottom.
const pixelsBelow = Math.max(0, documentHeight - (scrollTop + windowHeight));
// The number of pixels above the viewport, at least defaultDownThreshold.
// Similar to pixelsBelow, this is used to push the threshold back towards
// the top when reaching the top of the page.
const pixelsAbove = Math.max(0, defaultDownThreshold - scrollTop);
// How much the threshold should be offset once it gets close to the
// bottom of the page.
const bottomAdd = Math.max(0, windowHeight - pixelsBelow - defaultDownThreshold);
let adjustedBottomAdd = bottomAdd;
// Adjusts bottomAdd for a small document. The calculation above
// assumes the document is at least twice the windowheight in size. If
// it is less than that, then bottomAdd needs to be shrunk
// proportional to the difference in size.
if (documentHeight < windowHeight * 2) {
const maxPixelsBelow = documentHeight - windowHeight;
const t = 1 - pixelsBelow / Math.max(1, maxPixelsBelow);
const clamp = Math.max(0, Math.min(1, t));
adjustedBottomAdd *= clamp;
}
let scrollingDown = true;
if (scrollTop < lastKnownScrollPosition) {
scrollingDown = false;
}
if (scrollingDown) {
// When scrolling down, move the threshold up towards the default
// downwards threshold position. If near the bottom of the page,
// adjustedBottomAdd will offset the threshold towards the bottom
// of the page.
const amountScrolledDown = scrollTop - lastKnownScrollPosition;
const adjustedDefault = defaultDownThreshold + adjustedBottomAdd;
threshold = Math.max(adjustedDefault, threshold - amountScrolledDown);
} else {
// When scrolling up, move the threshold down towards the default
// upwards threshold position. If near the bottom of the page,
// quickly transition the threshold back up where it normally
// belongs.
const amountScrolledUp = lastKnownScrollPosition - scrollTop;
const adjustedDefault = defaultUpThreshold - pixelsAbove
+ Math.max(0, adjustedBottomAdd - defaultDownThreshold);
threshold = Math.min(adjustedDefault, threshold + amountScrolledUp);
}
if (documentHeight <= windowHeight) {
threshold = 0;
}
if (thresholdDebug) {
const id = 'mdbook-threshold-debug-data';
let data = document.getElementById(id);
if (data === null) {
data = document.createElement('div');
data.id = id;
data.style.cssText = `
position: fixed;
top: 50px;
right: 10px;
background-color: 0xeeeeee;
z-index: 9999;
pointer-events: none;
`;
document.body.appendChild(data);
}
data.innerHTML = `
<table>
<tr><td>documentHeight</td><td>${documentHeight.toFixed(1)}</td></tr>
<tr><td>windowHeight</td><td>${windowHeight.toFixed(1)}</td></tr>
<tr><td>scrollTop</td><td>${scrollTop.toFixed(1)}</td></tr>
<tr><td>pixelsAbove</td><td>${pixelsAbove.toFixed(1)}</td></tr>
<tr><td>pixelsBelow</td><td>${pixelsBelow.toFixed(1)}</td></tr>
<tr><td>bottomAdd</td><td>${bottomAdd.toFixed(1)}</td></tr>
<tr><td>adjustedBottomAdd</td><td>${adjustedBottomAdd.toFixed(1)}</td></tr>
<tr><td>scrollingDown</td><td>${scrollingDown}</td></tr>
<tr><td>threshold</td><td>${threshold.toFixed(1)}</td></tr>
</table>
`;
drawDebugLine();
}
lastKnownScrollPosition = scrollTop;
}
function drawDebugLine() {
if (!document.body) {
return;
}
const id = 'mdbook-threshold-debug-line';
const existingLine = document.getElementById(id);
if (existingLine) {
existingLine.remove();
}
const line = document.createElement('div');
line.id = id;
line.style.cssText = `
position: fixed;
top: ${threshold}px;
left: 0;
width: 100vw;
height: 2px;
background-color: red;
z-index: 9999;
pointer-events: none;
`;
document.body.appendChild(line);
}
function mdbookEnableThresholdDebug() {
thresholdDebug = true;
updateThreshold();
drawDebugLine();
}
window.mdbookEnableThresholdDebug = mdbookEnableThresholdDebug;
// Updates which headers in the sidebar should be expanded. If the current
// header is inside a collapsed group, then it, and all its parents should
// be expanded.
function updateHeaderExpanded(currentA) {
// Add expanded to all header-item li ancestors.
let current = currentA.parentElement;
while (current) {
if (current.tagName === 'LI' && current.classList.contains('header-item')) {
current.classList.add('expanded');
}
current = current.parentElement;
}
}
// Updates which header is marked as the "current" header in the sidebar.
// This is done with a virtual Y threshold, where headers at or below
// that line will be considered the current one.
function updateCurrentHeader() {
if (!headers || !headers.length) {
return;
}
// Reset the classes, which will be rebuilt below.
const els = document.getElementsByClassName('current-header');
for (const el of els) {
el.classList.remove('current-header');
}
for (const toggle of headerToggles) {
toggle.classList.remove('expanded');
}
// Find the last header that is above the threshold.
let lastHeader = null;
for (const header of headers) {
const rect = header.getBoundingClientRect();
if (rect.top <= threshold) {
lastHeader = header;
} else {
break;
}
}
if (lastHeader === null) {
lastHeader = headers[0];
const rect = lastHeader.getBoundingClientRect();
const windowHeight = window.innerHeight;
if (rect.top >= windowHeight) {
return;
}
}
// Get the anchor in the summary.
const href = '#' + lastHeader.id;
const a = [...document.querySelectorAll('.header-in-summary')]
.find(element => element.getAttribute('href') === href);
if (!a) {
return;
}
a.classList.add('current-header');
updateHeaderExpanded(a);
}
// Updates which header is "current" based on the threshold line.
function reloadCurrentHeader() {
if (disableScroll) {
return;
}
updateThreshold();
updateCurrentHeader();
}
// When clicking on a header in the sidebar, this adjusts the threshold so
// that it is located next to the header. This is so that header becomes
// "current".
function headerThresholdClick(event) {
// See disableScroll description why this is done.
disableScroll = true;
setTimeout(() => {
disableScroll = false;
}, 100);
// requestAnimationFrame is used to delay the update of the "current"
// header until after the scroll is done, and the header is in the new
// position.
requestAnimationFrame(() => {
requestAnimationFrame(() => {
// Closest is needed because if it has child elements like <code>.
const a = event.target.closest('a');
const href = a.getAttribute('href');
const targetId = href.substring(1);
const targetElement = document.getElementById(targetId);
if (targetElement) {
threshold = targetElement.getBoundingClientRect().bottom;
updateCurrentHeader();
}
});
});
}
// Takes the nodes from the given head and copies them over to the
// destination, along with some filtering.
function filterHeader(source, dest) {
const clone = source.cloneNode(true);
clone.querySelectorAll('mark').forEach(mark => {
mark.replaceWith(...mark.childNodes);
});
dest.append(...clone.childNodes);
}
// Scans page for headers and adds them to the sidebar.
document.addEventListener('DOMContentLoaded', function() {
const activeSection = document.querySelector('#mdbook-sidebar .active');
if (activeSection === null) {
return;
}
const main = document.getElementsByTagName('main')[0];
headers = Array.from(main.querySelectorAll('h2, h3, h4, h5, h6'))
.filter(h => h.id !== '' && h.children.length && h.children[0].tagName === 'A');
if (headers.length === 0) {
return;
}
// Build a tree of headers in the sidebar.
const stack = [];
const firstLevel = parseInt(headers[0].tagName.charAt(1));
for (let i = 1; i < firstLevel; i++) {
const ol = document.createElement('ol');
ol.classList.add('section');
if (stack.length > 0) {
stack[stack.length - 1].ol.appendChild(ol);
}
stack.push({level: i + 1, ol: ol});
}
// The level where it will start folding deeply nested headers.
const foldLevel = 3;
for (let i = 0; i < headers.length; i++) {
const header = headers[i];
const level = parseInt(header.tagName.charAt(1));
const currentLevel = stack[stack.length - 1].level;
if (level > currentLevel) {
// Begin nesting to this level.
for (let nextLevel = currentLevel + 1; nextLevel <= level; nextLevel++) {
const ol = document.createElement('ol');
ol.classList.add('section');
const last = stack[stack.length - 1];
const lastChild = last.ol.lastChild;
// Handle the case where jumping more than one nesting
// level, which doesn't have a list item to place this new
// list inside of.
if (lastChild) {
lastChild.appendChild(ol);
} else {
last.ol.appendChild(ol);
}
stack.push({level: nextLevel, ol: ol});
}
} else if (level < currentLevel) {
while (stack.length > 1 && stack[stack.length - 1].level > level) {
stack.pop();
}
}
const li = document.createElement('li');
li.classList.add('header-item');
li.classList.add('expanded');
if (level < foldLevel) {
li.classList.add('expanded');
}
const span = document.createElement('span');
span.classList.add('chapter-link-wrapper');
const a = document.createElement('a');
span.appendChild(a);
a.href = '#' + header.id;
a.classList.add('header-in-summary');
filterHeader(header.children[0], a);
a.addEventListener('click', headerThresholdClick);
const nextHeader = headers[i + 1];
if (nextHeader !== undefined) {
const nextLevel = parseInt(nextHeader.tagName.charAt(1));
if (nextLevel > level && level >= foldLevel) {
const toggle = document.createElement('a');
toggle.classList.add('chapter-fold-toggle');
toggle.classList.add('header-toggle');
toggle.addEventListener('click', () => {
li.classList.toggle('expanded');
});
const toggleDiv = document.createElement('div');
toggleDiv.textContent = '❱';
toggle.appendChild(toggleDiv);
span.appendChild(toggle);
headerToggles.push(li);
}
}
li.appendChild(span);
const currentParent = stack[stack.length - 1];
currentParent.ol.appendChild(li);
}
const onThisPage = document.createElement('div');
onThisPage.classList.add('on-this-page');
onThisPage.append(stack[0].ol);
const activeItemSpan = activeSection.parentElement;
activeItemSpan.after(onThisPage);
});
document.addEventListener('DOMContentLoaded', reloadCurrentHeader);
document.addEventListener('scroll', reloadCurrentHeader, { passive: true });
})();