elsabro 2.3.0 → 3.7.0

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 (67) hide show
  1. package/README.md +668 -20
  2. package/bin/install.js +0 -0
  3. package/flows/development-flow.json +452 -0
  4. package/flows/quick-flow.json +118 -0
  5. package/package.json +3 -2
  6. package/references/SYSTEM_INDEX.md +379 -5
  7. package/references/agent-marketplace.md +2274 -0
  8. package/references/agent-protocol.md +1126 -0
  9. package/references/ai-code-suggestions.md +2413 -0
  10. package/references/checkpointing.md +595 -0
  11. package/references/collaboration-patterns.md +851 -0
  12. package/references/collaborative-sessions.md +1081 -0
  13. package/references/configuration-management.md +1810 -0
  14. package/references/cost-tracking.md +1095 -0
  15. package/references/enterprise-sso.md +2001 -0
  16. package/references/error-contracts-v2.md +968 -0
  17. package/references/event-driven.md +1031 -0
  18. package/references/flow-orchestration.md +940 -0
  19. package/references/flow-visualization.md +1557 -0
  20. package/references/ide-integrations.md +3513 -0
  21. package/references/interrupt-system.md +681 -0
  22. package/references/kubernetes-deployment.md +3099 -0
  23. package/references/memory-system.md +683 -0
  24. package/references/mobile-companion.md +3236 -0
  25. package/references/multi-llm-providers.md +2494 -0
  26. package/references/multi-project-memory.md +1182 -0
  27. package/references/observability.md +793 -0
  28. package/references/output-schemas.md +858 -0
  29. package/references/performance-profiler.md +955 -0
  30. package/references/plugin-system.md +1526 -0
  31. package/references/prompt-management.md +292 -0
  32. package/references/sandbox-execution.md +303 -0
  33. package/references/security-system.md +1253 -0
  34. package/references/streaming.md +696 -0
  35. package/references/testing-framework.md +1151 -0
  36. package/references/time-travel.md +802 -0
  37. package/references/tool-registry.md +886 -0
  38. package/references/voice-commands.md +3296 -0
  39. package/templates/agent-marketplace-config.json +220 -0
  40. package/templates/agent-protocol-config.json +136 -0
  41. package/templates/ai-suggestions-config.json +100 -0
  42. package/templates/checkpoint-state.json +61 -0
  43. package/templates/collaboration-config.json +157 -0
  44. package/templates/collaborative-sessions-config.json +153 -0
  45. package/templates/configuration-config.json +245 -0
  46. package/templates/cost-tracking-config.json +148 -0
  47. package/templates/enterprise-sso-config.json +438 -0
  48. package/templates/events-config.json +148 -0
  49. package/templates/flow-visualization-config.json +196 -0
  50. package/templates/ide-integrations-config.json +442 -0
  51. package/templates/kubernetes-config.json +764 -0
  52. package/templates/memory-state.json +84 -0
  53. package/templates/mobile-companion-config.json +600 -0
  54. package/templates/multi-llm-config.json +544 -0
  55. package/templates/multi-project-memory-config.json +145 -0
  56. package/templates/observability-config.json +109 -0
  57. package/templates/performance-profiler-config.json +125 -0
  58. package/templates/plugin-config.json +170 -0
  59. package/templates/prompt-management-config.json +86 -0
  60. package/templates/sandbox-config.json +185 -0
  61. package/templates/schemas-config.json +65 -0
  62. package/templates/security-config.json +120 -0
  63. package/templates/streaming-config.json +72 -0
  64. package/templates/testing-config.json +81 -0
  65. package/templates/timetravel-config.json +62 -0
  66. package/templates/tool-registry-config.json +109 -0
  67. package/templates/voice-commands-config.json +658 -0
@@ -0,0 +1,438 @@
1
+ {
2
+ "sso": {
3
+ "enabled": true,
4
+ "version": "3.6.0",
5
+
6
+ "manager": {
7
+ "defaultProvider": null,
8
+ "sessionTimeout": 28800,
9
+ "singleLogout": true,
10
+ "mfaRequired": false,
11
+ "allowedDomains": [],
12
+ "ipAllowlist": []
13
+ },
14
+
15
+ "tokenEncryption": {
16
+ "algorithm": "RS256",
17
+ "publicKeyPath": ".elsabro/keys/sso-public.pem",
18
+ "privateKeyPath": ".elsabro/keys/sso-private.pem",
19
+ "keyRotationDays": 90,
20
+ "issuer": "elsabro",
21
+ "audience": "elsabro-app"
22
+ },
23
+
24
+ "tokens": {
25
+ "accessTokenTTL": 3600,
26
+ "refreshTokenTTL": 604800,
27
+ "idTokenTTL": 3600,
28
+ "encryptSensitiveTokens": true
29
+ },
30
+
31
+ "sessions": {
32
+ "maxConcurrentPerUser": 5,
33
+ "absoluteTimeout": 86400,
34
+ "inactivityTimeout": 28800,
35
+ "bindToIP": false,
36
+ "bindToUserAgent": false,
37
+ "persistSessions": true,
38
+ "sessionStorePath": ".elsabro/sessions"
39
+ },
40
+
41
+ "mfa": {
42
+ "enabled": false,
43
+ "required": false,
44
+ "allowedMethods": ["totp", "sms", "email", "push", "webauthn"],
45
+ "rememberDevice": true,
46
+ "rememberDeviceDays": 30,
47
+ "requireForSensitiveActions": true,
48
+ "sensitiveActions": [
49
+ "settings.update",
50
+ "password.change",
51
+ "mfa.disable",
52
+ "api-key.create",
53
+ "user.delete"
54
+ ]
55
+ },
56
+
57
+ "providers": {
58
+ "okta": {
59
+ "enabled": false,
60
+ "type": "oidc",
61
+ "name": "Okta",
62
+ "clientId": "${OKTA_CLIENT_ID}",
63
+ "clientSecret": "${OKTA_CLIENT_SECRET}",
64
+ "issuer": "https://${OKTA_DOMAIN}/oauth2/default",
65
+ "scopes": ["openid", "profile", "email", "groups"],
66
+ "responseType": "code",
67
+ "usePKCE": true,
68
+ "redirectUri": "${APP_URL}/api/auth/callback/okta",
69
+ "postLogoutRedirectUri": "${APP_URL}",
70
+ "attributeMapping": {
71
+ "email": "email",
72
+ "name": "name",
73
+ "firstName": "given_name",
74
+ "lastName": "family_name",
75
+ "groups": "groups"
76
+ },
77
+ "roleMapping": {
78
+ "Everyone": "user",
79
+ "Engineering": "developer",
80
+ "Admins": "admin",
81
+ "Security": "security-admin"
82
+ },
83
+ "clockTolerance": 120
84
+ },
85
+
86
+ "azure-ad": {
87
+ "enabled": false,
88
+ "type": "oidc",
89
+ "name": "Azure AD",
90
+ "clientId": "${AZURE_CLIENT_ID}",
91
+ "clientSecret": "${AZURE_CLIENT_SECRET}",
92
+ "issuer": "https://login.microsoftonline.com/${AZURE_TENANT_ID}/v2.0",
93
+ "scopes": ["openid", "profile", "email", "User.Read", "GroupMember.Read.All"],
94
+ "responseType": "code",
95
+ "usePKCE": true,
96
+ "redirectUri": "${APP_URL}/api/auth/callback/azure",
97
+ "postLogoutRedirectUri": "${APP_URL}",
98
+ "attributeMapping": {
99
+ "email": "email",
100
+ "name": "name",
101
+ "firstName": "given_name",
102
+ "lastName": "family_name",
103
+ "groups": "groups",
104
+ "customClaims": {
105
+ "department": "department",
106
+ "jobTitle": "jobTitle",
107
+ "officeLocation": "officeLocation"
108
+ }
109
+ },
110
+ "roleMapping": {
111
+ "Global Administrators": "admin",
112
+ "Application Administrators": "app-admin",
113
+ "Developers": "developer",
114
+ "Users": "user"
115
+ },
116
+ "clockTolerance": 120
117
+ },
118
+
119
+ "google": {
120
+ "enabled": false,
121
+ "type": "oidc",
122
+ "name": "Google Workspace",
123
+ "clientId": "${GOOGLE_CLIENT_ID}",
124
+ "clientSecret": "${GOOGLE_CLIENT_SECRET}",
125
+ "issuer": "https://accounts.google.com",
126
+ "scopes": [
127
+ "openid",
128
+ "profile",
129
+ "email",
130
+ "https://www.googleapis.com/auth/admin.directory.group.readonly"
131
+ ],
132
+ "responseType": "code",
133
+ "usePKCE": true,
134
+ "redirectUri": "${APP_URL}/api/auth/callback/google",
135
+ "postLogoutRedirectUri": "${APP_URL}",
136
+ "hostedDomain": null,
137
+ "attributeMapping": {
138
+ "email": "email",
139
+ "name": "name",
140
+ "firstName": "given_name",
141
+ "lastName": "family_name",
142
+ "customClaims": {
143
+ "picture": "picture",
144
+ "hostedDomain": "hd"
145
+ }
146
+ },
147
+ "clockTolerance": 120
148
+ },
149
+
150
+ "auth0": {
151
+ "enabled": false,
152
+ "type": "oidc",
153
+ "name": "Auth0",
154
+ "clientId": "${AUTH0_CLIENT_ID}",
155
+ "clientSecret": "${AUTH0_CLIENT_SECRET}",
156
+ "issuer": "https://${AUTH0_DOMAIN}/",
157
+ "scopes": ["openid", "profile", "email"],
158
+ "responseType": "code",
159
+ "usePKCE": true,
160
+ "redirectUri": "${APP_URL}/api/auth/callback/auth0",
161
+ "postLogoutRedirectUri": "${APP_URL}",
162
+ "attributeMapping": {
163
+ "email": "email",
164
+ "name": "name",
165
+ "firstName": "given_name",
166
+ "lastName": "family_name",
167
+ "roles": "https://app.example.com/roles",
168
+ "customClaims": {
169
+ "permissions": "https://app.example.com/permissions"
170
+ }
171
+ },
172
+ "clockTolerance": 120
173
+ },
174
+
175
+ "keycloak": {
176
+ "enabled": false,
177
+ "type": "oidc",
178
+ "name": "Keycloak",
179
+ "clientId": "${KEYCLOAK_CLIENT_ID}",
180
+ "clientSecret": "${KEYCLOAK_CLIENT_SECRET}",
181
+ "issuer": "${KEYCLOAK_URL}/realms/${KEYCLOAK_REALM}",
182
+ "scopes": ["openid", "profile", "email", "roles"],
183
+ "responseType": "code",
184
+ "usePKCE": true,
185
+ "redirectUri": "${APP_URL}/api/auth/callback/keycloak",
186
+ "postLogoutRedirectUri": "${APP_URL}",
187
+ "attributeMapping": {
188
+ "email": "email",
189
+ "name": "name",
190
+ "firstName": "given_name",
191
+ "lastName": "family_name",
192
+ "groups": "groups",
193
+ "roles": "realm_access.roles"
194
+ },
195
+ "roleMapping": {
196
+ "realm-admin": "admin",
197
+ "realm-user": "user",
198
+ "app-developer": "developer"
199
+ },
200
+ "clockTolerance": 120
201
+ },
202
+
203
+ "generic-saml": {
204
+ "enabled": false,
205
+ "type": "saml",
206
+ "name": "Corporate SAML IdP",
207
+ "entityId": "${APP_URL}/saml/metadata",
208
+ "assertionConsumerServiceUrl": "${APP_URL}/api/auth/callback/saml",
209
+ "singleLogoutServiceUrl": "${APP_URL}/api/auth/logout/saml",
210
+ "certificatePath": ".elsabro/certs/saml-sp.crt",
211
+ "privateKeyPath": ".elsabro/certs/saml-sp.key",
212
+ "signAuthnRequests": true,
213
+ "wantAssertionsSigned": true,
214
+ "wantResponseSigned": true,
215
+ "signatureAlgorithm": "sha256",
216
+ "identityProviderMetadataUrl": "${IDP_METADATA_URL}",
217
+ "identityProviderMetadata": null,
218
+ "attributeMapping": {
219
+ "email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
220
+ "name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
221
+ "firstName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
222
+ "lastName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
223
+ "groups": "http://schemas.xmlsoap.org/claims/Group",
224
+ "customMappings": {
225
+ "department": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/department",
226
+ "employeeId": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/employeeid"
227
+ }
228
+ },
229
+ "roleMapping": {
230
+ "Administrators": "admin",
231
+ "Developers": "developer",
232
+ "Users": "user"
233
+ },
234
+ "allowedClockSkewSeconds": 120
235
+ },
236
+
237
+ "generic-oidc": {
238
+ "enabled": false,
239
+ "type": "oidc",
240
+ "name": "Custom OIDC Provider",
241
+ "clientId": "${OIDC_CLIENT_ID}",
242
+ "clientSecret": "${OIDC_CLIENT_SECRET}",
243
+ "issuer": "${OIDC_ISSUER}",
244
+ "authorizationEndpoint": null,
245
+ "tokenEndpoint": null,
246
+ "userInfoEndpoint": null,
247
+ "jwksUri": null,
248
+ "endSessionEndpoint": null,
249
+ "scopes": ["openid", "profile", "email"],
250
+ "responseType": "code",
251
+ "responseMode": "query",
252
+ "usePKCE": true,
253
+ "redirectUri": "${APP_URL}/api/auth/callback/oidc",
254
+ "postLogoutRedirectUri": "${APP_URL}",
255
+ "attributeMapping": {
256
+ "email": "email",
257
+ "name": "name",
258
+ "firstName": "given_name",
259
+ "lastName": "family_name",
260
+ "groups": "groups",
261
+ "roles": "roles"
262
+ },
263
+ "clockTolerance": 120
264
+ }
265
+ },
266
+
267
+ "scim": {
268
+ "enabled": false,
269
+ "endpoint": "${SCIM_ENDPOINT}",
270
+ "bearerToken": "${SCIM_BEARER_TOKEN}",
271
+ "syncInterval": 3600000,
272
+ "provisionOnSync": true,
273
+ "deprovisionOnSync": false,
274
+ "userSchema": "urn:ietf:params:scim:schemas:core:2.0:User",
275
+ "groupSchema": "urn:ietf:params:scim:schemas:core:2.0:Group",
276
+ "pageSize": 100,
277
+ "retryAttempts": 3,
278
+ "retryDelay": 5000
279
+ },
280
+
281
+ "authorization": {
282
+ "jitProvisioning": true,
283
+ "defaultRole": "user",
284
+ "syncGroupsOnLogin": true,
285
+ "removeStaleGroups": false,
286
+ "groupAttribute": "groups",
287
+ "roleAttribute": "roles",
288
+ "roleMappingStrategy": "merge",
289
+ "adminGroups": ["Administrators", "Admins", "admin"],
290
+ "customRoleMappings": {}
291
+ },
292
+
293
+ "security": {
294
+ "stateTokenTTL": 600,
295
+ "nonceTTL": 600,
296
+ "csrfProtection": true,
297
+ "httpOnly": true,
298
+ "secure": true,
299
+ "sameSite": "lax",
300
+ "allowedRedirectDomains": [],
301
+ "blocklistTokens": true,
302
+ "revokeOnLogout": true
303
+ },
304
+
305
+ "audit": {
306
+ "enabled": true,
307
+ "logPath": ".elsabro/logs/sso-audit.log",
308
+ "logLevel": "info",
309
+ "includeTokenDetails": false,
310
+ "retentionDays": 90,
311
+ "events": {
312
+ "auth.initiated": true,
313
+ "auth.completed": true,
314
+ "auth.failed": true,
315
+ "auth.ip_blocked": true,
316
+ "auth.domain_blocked": true,
317
+ "session.created": true,
318
+ "session.refreshed": true,
319
+ "session.terminated": true,
320
+ "logout": true,
321
+ "mfa.required": true,
322
+ "mfa.verified": true,
323
+ "mfa.failed": true,
324
+ "provider.registered": true,
325
+ "provider.updated": true,
326
+ "scim.sync.started": true,
327
+ "scim.sync.completed": true,
328
+ "scim.user.created": true,
329
+ "scim.user.updated": true,
330
+ "scim.user.deactivated": true
331
+ },
332
+ "alerts": {
333
+ "enabled": true,
334
+ "multipleAuthFailures": {
335
+ "enabled": true,
336
+ "threshold": 5,
337
+ "windowMinutes": 5
338
+ },
339
+ "unusualLoginLocation": {
340
+ "enabled": false,
341
+ "trustedCountries": []
342
+ },
343
+ "afterHoursLogin": {
344
+ "enabled": false,
345
+ "startHour": 8,
346
+ "endHour": 18,
347
+ "timezone": "UTC"
348
+ }
349
+ }
350
+ },
351
+
352
+ "ui": {
353
+ "loginPath": "/login",
354
+ "callbackPath": "/api/auth/callback",
355
+ "logoutPath": "/api/auth/logout",
356
+ "errorPath": "/auth/error",
357
+ "selectProviderPath": "/auth/select-provider",
358
+ "showProviderSelector": true,
359
+ "rememberLastProvider": true,
360
+ "brandingEnabled": true,
361
+ "customLogoUrl": null,
362
+ "customCss": null
363
+ },
364
+
365
+ "cli": {
366
+ "commands": {
367
+ "configure": {
368
+ "enabled": true,
369
+ "interactive": true
370
+ },
371
+ "status": {
372
+ "enabled": true,
373
+ "showSecrets": false
374
+ },
375
+ "test": {
376
+ "enabled": true,
377
+ "timeout": 30000
378
+ },
379
+ "sessions": {
380
+ "enabled": true,
381
+ "maxDisplay": 100
382
+ },
383
+ "scim": {
384
+ "enabled": true,
385
+ "dryRun": false
386
+ },
387
+ "metadata": {
388
+ "enabled": true,
389
+ "formats": ["xml", "json"]
390
+ },
391
+ "certs": {
392
+ "enabled": true,
393
+ "autoRotate": false
394
+ },
395
+ "audit": {
396
+ "enabled": true,
397
+ "exportFormats": ["json", "csv"]
398
+ }
399
+ }
400
+ },
401
+
402
+ "integration": {
403
+ "rbacManager": {
404
+ "enabled": true,
405
+ "syncRolesOnLogin": true
406
+ },
407
+ "auditLogger": {
408
+ "enabled": true,
409
+ "logAllEvents": true
410
+ },
411
+ "secretsVault": {
412
+ "enabled": true,
413
+ "storeTokens": false
414
+ },
415
+ "eventBus": {
416
+ "enabled": true,
417
+ "publishEvents": true
418
+ }
419
+ },
420
+
421
+ "advanced": {
422
+ "debug": false,
423
+ "traceRequests": false,
424
+ "mockProviders": false,
425
+ "bypassForDevelopment": false,
426
+ "developmentEmails": [],
427
+ "customMiddleware": [],
428
+ "hooks": {
429
+ "beforeAuth": null,
430
+ "afterAuth": null,
431
+ "beforeLogout": null,
432
+ "afterLogout": null,
433
+ "onProvisionUser": null,
434
+ "onUpdateUser": null
435
+ }
436
+ }
437
+ }
438
+ }
@@ -0,0 +1,148 @@
1
+ {
2
+ "events": {
3
+ "enabled": true,
4
+ "version": "1.0.0",
5
+
6
+ "bus": {
7
+ "maxListeners": 100,
8
+ "defaultTimeout": 30000,
9
+ "errorHandling": "log",
10
+ "asyncDelivery": true
11
+ },
12
+
13
+ "store": {
14
+ "enabled": true,
15
+ "backend": "file",
16
+ "path": ".elsabro/events",
17
+ "retention": {
18
+ "maxEvents": 10000,
19
+ "maxAge": "30d"
20
+ },
21
+ "snapshots": {
22
+ "enabled": true,
23
+ "frequency": 100
24
+ },
25
+ "deadLetterQueue": {
26
+ "enabled": true,
27
+ "maxSize": 1000,
28
+ "retentionDays": 7
29
+ },
30
+ "indexing": {
31
+ "enabled": true,
32
+ "fields": ["topic", "correlationId", "timestamp"]
33
+ }
34
+ },
35
+
36
+ "webhooks": {
37
+ "enabled": true,
38
+ "endpoints": [],
39
+ "signing": {
40
+ "enabled": true,
41
+ "algorithm": "sha256",
42
+ "header": "X-ELSABRO-Signature"
43
+ },
44
+ "retry": {
45
+ "maxAttempts": 3,
46
+ "backoff": "exponential",
47
+ "initialDelay": 1000,
48
+ "maxDelay": 30000
49
+ },
50
+ "timeout": 30000,
51
+ "maxPayloadSize": 1048576
52
+ },
53
+
54
+ "topics": {
55
+ "agent": {
56
+ "started": { "retention": "7d", "indexed": true },
57
+ "completed": { "retention": "30d", "indexed": true },
58
+ "failed": { "retention": "90d", "indexed": true }
59
+ },
60
+ "flow": {
61
+ "started": { "retention": "7d", "indexed": true },
62
+ "node.entered": { "retention": "3d", "indexed": false },
63
+ "node.exited": { "retention": "3d", "indexed": false },
64
+ "completed": { "retention": "30d", "indexed": true },
65
+ "failed": { "retention": "90d", "indexed": true }
66
+ },
67
+ "task": {
68
+ "created": { "retention": "30d", "indexed": true },
69
+ "status.changed": { "retention": "30d", "indexed": true },
70
+ "completed": { "retention": "30d", "indexed": true }
71
+ },
72
+ "checkpoint": {
73
+ "created": { "retention": "90d", "indexed": true },
74
+ "restored": { "retention": "90d", "indexed": true }
75
+ },
76
+ "memory": {
77
+ "stored": { "retention": "7d", "indexed": false },
78
+ "retrieved": { "retention": "3d", "indexed": false },
79
+ "expired": { "retention": "7d", "indexed": false }
80
+ },
81
+ "sandbox": {
82
+ "started": { "retention": "7d", "indexed": true },
83
+ "completed": { "retention": "7d", "indexed": true },
84
+ "failed": { "retention": "30d", "indexed": true }
85
+ },
86
+ "interrupt": {
87
+ "triggered": { "retention": "30d", "indexed": true },
88
+ "resolved": { "retention": "30d", "indexed": true }
89
+ }
90
+ },
91
+
92
+ "subscriptions": {
93
+ "defaults": {
94
+ "ack": "auto",
95
+ "maxRetries": 3,
96
+ "retryDelay": 1000,
97
+ "timeout": 30000
98
+ },
99
+ "queues": {
100
+ "enabled": false,
101
+ "maxSize": 10000,
102
+ "persistence": "memory"
103
+ }
104
+ },
105
+
106
+ "projections": {
107
+ "enabled": true,
108
+ "autoRebuild": true,
109
+ "definitions": [
110
+ {
111
+ "name": "task-summary",
112
+ "events": ["task.*"],
113
+ "handler": "projections/task-summary.js"
114
+ },
115
+ {
116
+ "name": "agent-metrics",
117
+ "events": ["agent.*"],
118
+ "handler": "projections/agent-metrics.js"
119
+ },
120
+ {
121
+ "name": "flow-history",
122
+ "events": ["flow.*"],
123
+ "handler": "projections/flow-history.js"
124
+ }
125
+ ]
126
+ },
127
+
128
+ "monitoring": {
129
+ "enabled": true,
130
+ "metrics": {
131
+ "eventRate": true,
132
+ "deliveryLatency": true,
133
+ "errorRate": true,
134
+ "queueDepth": true
135
+ },
136
+ "alerts": {
137
+ "highErrorRate": {
138
+ "threshold": 0.1,
139
+ "window": "5m"
140
+ },
141
+ "highLatency": {
142
+ "threshold": 5000,
143
+ "window": "1m"
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }