@elevasis/core 0.7.0 → 0.8.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.
- package/package.json +3 -3
- package/src/README.md +41 -41
- package/src/__tests__/publish.test.ts +18 -18
- package/src/__tests__/{template-foundations-compatibility.test.ts → template-core-compatibility.test.ts} +99 -99
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +1135 -1131
- package/src/_gen/__tests__/scaffold-contracts.test.ts +53 -53
- package/src/_gen/scaffold-contracts.ts +45 -45
- package/src/auth/multi-tenancy/credentials/README.md +38 -38
- package/src/auth/multi-tenancy/credentials/index.ts +6 -6
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -39
- package/src/auth/multi-tenancy/credentials/server/service.ts +60 -60
- package/src/auth/multi-tenancy/index.ts +17 -17
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -107
- package/src/auth/multi-tenancy/invitations/index.ts +37 -37
- package/src/auth/multi-tenancy/invitations/invitation.ts +86 -86
- package/src/auth/multi-tenancy/invitations/server/index.ts +25 -25
- package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -24
- package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -24
- package/src/auth/multi-tenancy/invitations/supabase.ts +50 -50
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -126
- package/src/auth/multi-tenancy/memberships/index.ts +21 -21
- package/src/auth/multi-tenancy/memberships/membership.ts +138 -138
- package/src/auth/multi-tenancy/memberships/server/index.ts +15 -15
- package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -32
- package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -21
- package/src/auth/multi-tenancy/memberships/supabase.ts +46 -46
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -128
- package/src/auth/multi-tenancy/organizations/index.ts +23 -23
- package/src/auth/multi-tenancy/organizations/organization.ts +24 -24
- package/src/auth/multi-tenancy/organizations/server/index.ts +10 -10
- package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -35
- package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -20
- package/src/auth/multi-tenancy/types.ts +83 -83
- package/src/auth/multi-tenancy/users/api-schemas.ts +194 -194
- package/src/auth/multi-tenancy/users/index.ts +27 -27
- package/src/auth/multi-tenancy/users/server/index.ts +19 -19
- package/src/auth/multi-tenancy/users/server/transforms.ts +21 -21
- package/src/auth/multi-tenancy/users/server/workos.ts +16 -16
- package/src/auth/multi-tenancy/users/user.ts +65 -65
- package/src/business/README.md +52 -52
- package/src/business/__tests__/entities-published.test.ts +33 -33
- package/src/business/acquisition/api-schemas.ts +759 -759
- package/src/business/acquisition/index.ts +109 -109
- package/src/business/acquisition/types.ts +402 -402
- package/src/business/base-entities.test.ts +481 -481
- package/src/business/base-entities.ts +241 -241
- package/src/business/entities-published.ts +24 -24
- package/src/business/index.ts +15 -15
- package/src/business/pdf/browser/pdfmake-browser.ts +229 -229
- package/src/business/pdf/index.ts +10 -10
- package/src/business/pdf/server/index.ts +21 -21
- package/src/business/pdf/server/themes/default.ts +8 -8
- package/src/business/pdf/server/themes/index.ts +9 -9
- package/src/business/pdf/server/themes/types.ts +8 -8
- package/src/business/pdf/types.ts +272 -272
- package/src/business/projects/index.ts +2 -1
- package/src/business/projects/sse-events.ts +21 -0
- package/src/business/projects/types.ts +89 -89
- package/src/business/sales/api-schemas.ts +75 -75
- package/src/business/seo/__tests__/linking.test.ts +549 -549
- package/src/business/seo/__tests__/types.test.ts +404 -404
- package/src/business/seo/index.ts +2 -2
- package/src/business/seo/linking.ts +281 -281
- package/src/business/seo/types.ts +199 -199
- package/src/commands/queue/index.ts +3 -3
- package/src/commands/queue/schemas.test.ts +593 -593
- package/src/commands/queue/schemas.ts +125 -125
- package/src/commands/queue/sse-events.ts +61 -61
- package/src/commands/queue/types/action.ts +52 -52
- package/src/commands/queue/types/checkpoint.ts +44 -44
- package/src/commands/queue/types/index.ts +7 -7
- package/src/commands/queue/types/task.ts +116 -116
- package/src/commands/queue/types.ts +14 -14
- package/src/content/distribution-metadata.ts +61 -61
- package/src/content/index.ts +10 -10
- package/src/deployments/index.ts +22 -22
- package/src/execution/core/__tests__/archived-logs.test.ts +72 -72
- package/src/execution/core/index.ts +11 -11
- package/src/execution/core/runner-types.ts +80 -80
- package/src/execution/core/server/environment.ts +31 -31
- package/src/execution/core/sse-executions.ts +119 -119
- package/src/execution/core/types.ts +29 -29
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +4 -4
- package/src/execution/engine/__tests__/timeout.test.ts +565 -565
- package/src/execution/engine/agent/__tests__/errors.test.ts +508 -508
- package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -531
- package/src/execution/engine/agent/actions/executor.ts +205 -205
- package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -230
- package/src/execution/engine/agent/actions/processor.ts +116 -116
- package/src/execution/engine/agent/actions/types.ts +70 -70
- package/src/execution/engine/agent/core/agent.ts +810 -810
- package/src/execution/engine/agent/core/types.ts +155 -155
- package/src/execution/engine/agent/errors.ts +251 -251
- package/src/execution/engine/agent/index.ts +78 -78
- package/src/execution/engine/agent/knowledge-map/types.ts +106 -106
- package/src/execution/engine/agent/knowledge-map/utils.ts +101 -101
- package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -754
- package/src/execution/engine/agent/memory/domains.ts +99 -99
- package/src/execution/engine/agent/memory/manager.ts +365 -365
- package/src/execution/engine/agent/memory/processor.ts +66 -66
- package/src/execution/engine/agent/memory/types.ts +90 -90
- package/src/execution/engine/agent/memory/utils.ts +134 -134
- package/src/execution/engine/agent/observability/logging.ts +467 -467
- package/src/execution/engine/agent/observability/types.ts +64 -64
- package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -349
- package/src/execution/engine/agent/reasoning/processor.ts +92 -92
- package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -134
- package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -49
- package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -93
- package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -65
- package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -44
- package/src/execution/engine/agent/reasoning/request-builder.ts +169 -169
- package/src/execution/engine/agent/reasoning/types.ts +18 -18
- package/src/execution/engine/base/errors.ts +118 -118
- package/src/execution/engine/base/index.ts +2 -2
- package/src/execution/engine/base/logging.ts +31 -31
- package/src/execution/engine/base/serialization.ts +324 -324
- package/src/execution/engine/base/types.ts +126 -126
- package/src/execution/engine/base/utils.ts +41 -41
- package/src/execution/engine/index.ts +434 -434
- package/src/execution/engine/interface/index.ts +1 -1
- package/src/execution/engine/interface/types.ts +62 -62
- package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -50
- package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -321
- package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -115
- package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -375
- package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -463
- package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -177
- package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -722
- package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -376
- package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -551
- package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -563
- package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -105
- package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -537
- package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -147
- package/src/execution/engine/llm/adapters/index.ts +17 -17
- package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -116
- package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -130
- package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -137
- package/src/execution/engine/llm/adapters/server/google.ts +283 -283
- package/src/execution/engine/llm/adapters/server/index.ts +12 -12
- package/src/execution/engine/llm/adapters/server/openai.ts +206 -206
- package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -235
- package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -230
- package/src/execution/engine/llm/errors.ts +186 -186
- package/src/execution/engine/llm/model-info.ts +332 -332
- package/src/execution/engine/llm/response-schema-validator.ts +113 -113
- package/src/execution/engine/llm/types.ts +86 -86
- package/src/execution/engine/test-utils/index.ts +6 -6
- package/src/execution/engine/test-utils/mocks.ts +56 -56
- package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -50
- package/src/execution/engine/tools/integration/index.ts +53 -53
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -73
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -209
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -82
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -89
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -16
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -293
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -100
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -217
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -218
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +361 -361
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -162
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -594
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -214
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -152
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -141
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -105
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -118
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -165
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -96
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -156
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -220
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -140
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +146 -146
- package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -31
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -1189
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -641
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -18
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -289
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -154
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -325
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -153
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -107
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -85
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -91
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -195
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -113
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -155
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -196
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -189
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -112
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -76
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -98
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -126
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -193
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -99
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -621
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -29
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -178
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -1473
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -59
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -17
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -80
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -134
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -75
- package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -27
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -108
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -132
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -274
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -230
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -90
- package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -517
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -309
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -111
- package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -78
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -222
- package/src/execution/engine/tools/integration/server/index.ts +61 -61
- package/src/execution/engine/tools/integration/service.ts +161 -161
- package/src/execution/engine/tools/integration/tool.ts +253 -253
- package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -74
- package/src/execution/engine/tools/integration/types/apify.ts +92 -92
- package/src/execution/engine/tools/integration/types/index.ts +19 -19
- package/src/execution/engine/tools/integration/types/instantly.ts +557 -557
- package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -56
- package/src/execution/engine/tools/integration/types/stripe.ts +162 -162
- package/src/execution/engine/tools/integration/types/tomba.ts +94 -94
- package/src/execution/engine/tools/lead-service-types.ts +884 -884
- package/src/execution/engine/tools/llm/index.ts +11 -11
- package/src/execution/engine/tools/llm/server/index.ts +8 -8
- package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -118
- package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -441
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -248
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -319
- package/src/execution/engine/tools/platform/acquisition/index.ts +43 -43
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -148
- package/src/execution/engine/tools/platform/acquisition/types.ts +260 -260
- package/src/execution/engine/tools/platform/email/index.ts +122 -122
- package/src/execution/engine/tools/platform/email/types.ts +96 -96
- package/src/execution/engine/tools/platform/index.ts +157 -157
- package/src/execution/engine/tools/platform/notification.ts +81 -81
- package/src/execution/engine/tools/platform/pdf/index.ts +110 -110
- package/src/execution/engine/tools/platform/pdf/types.ts +77 -77
- package/src/execution/engine/tools/platform/scheduler.ts +87 -87
- package/src/execution/engine/tools/platform/storage/index.ts +370 -370
- package/src/execution/engine/tools/platform/types.ts +148 -148
- package/src/execution/engine/tools/registry.ts +700 -699
- package/src/execution/engine/tools/tool-maps.ts +786 -786
- package/src/execution/engine/tools/types.ts +233 -233
- package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -139
- package/src/execution/engine/workflow/errors.ts +63 -63
- package/src/execution/engine/workflow/helpers/index.ts +11 -11
- package/src/execution/engine/workflow/helpers/server/index.ts +8 -8
- package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -93
- package/src/execution/engine/workflow/index.ts +19 -19
- package/src/execution/engine/workflow/log-truncate.ts +26 -26
- package/src/execution/engine/workflow/logging.ts +191 -191
- package/src/execution/engine/workflow/types.ts +182 -182
- package/src/execution/engine/workflow/utils.ts +280 -280
- package/src/execution/engine/workflow/workflow.ts +168 -168
- package/src/execution/index.ts +3 -3
- package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -733
- package/src/execution/scheduler/__tests__/utils.test.ts +1009 -1009
- package/src/execution/scheduler/api-schemas.ts +296 -296
- package/src/execution/scheduler/index.ts +50 -50
- package/src/execution/scheduler/schemas.ts +264 -264
- package/src/execution/scheduler/types.ts +111 -111
- package/src/execution/scheduler/utils.ts +364 -364
- package/src/forms/index.ts +7 -7
- package/src/forms/schemas.ts +69 -69
- package/src/forms/types.ts +70 -70
- package/src/index.ts +71 -60
- package/src/integrations/credentials/__tests__/schemas.test.ts +82 -82
- package/src/integrations/credentials/__tests__/utils.test.ts +144 -144
- package/src/integrations/credentials/api-schemas.ts +143 -143
- package/src/integrations/credentials/index.ts +32 -32
- package/src/integrations/credentials/schemas.ts +164 -164
- package/src/integrations/credentials/utils.ts +59 -59
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -59
- package/src/integrations/oauth/api-schemas.ts +92 -92
- package/src/integrations/oauth/index.ts +19 -19
- package/src/integrations/oauth/provider-registry.ts +61 -61
- package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -183
- package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -577
- package/src/integrations/oauth/server/credentials.ts +39 -39
- package/src/integrations/oauth/server/refresh.ts +214 -214
- package/src/integrations/oauth/types.ts +34 -34
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -318
- package/src/integrations/webhook-endpoints/api-schemas.ts +102 -102
- package/src/integrations/webhook-endpoints/index.ts +28 -28
- package/src/integrations/webhook-endpoints/types.ts +51 -51
- package/src/operations/activities/api-schemas.ts +79 -79
- package/src/operations/activities/index.ts +9 -9
- package/src/operations/activities/sse-events.ts +30 -30
- package/src/operations/activities/types.ts +63 -63
- package/src/operations/debug-logs/client.ts +60 -60
- package/src/operations/debug-logs/debug-logger.ts +83 -83
- package/src/operations/debug-logs/index.ts +8 -8
- package/src/operations/debug-logs/server.ts +19 -19
- package/src/operations/debug-logs/types.ts +33 -33
- package/src/operations/index.ts +50 -50
- package/src/operations/notifications/api-schemas.ts +91 -91
- package/src/operations/notifications/index.ts +3 -3
- package/src/operations/notifications/sse-events.ts +21 -21
- package/src/operations/notifications/types.ts +47 -47
- package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -297
- package/src/operations/observability/__tests__/utils.test.ts +54 -54
- package/src/operations/observability/ai-usage-collector.ts +64 -64
- package/src/operations/observability/index.ts +13 -13
- package/src/operations/observability/metrics-collector.ts +49 -49
- package/src/operations/observability/schemas.ts +39 -39
- package/src/operations/observability/types.ts +463 -463
- package/src/operations/observability/utils.ts +77 -77
- package/src/operations/sessions/__tests__/manager.test.ts +821 -821
- package/src/operations/sessions/index.ts +26 -26
- package/src/operations/sessions/server/manager.ts +90 -90
- package/src/operations/sessions/server/session.ts +180 -180
- package/src/operations/sessions/types.ts +98 -98
- package/src/operations/triggers/index.ts +12 -12
- package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -44
- package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -51
- package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -49
- package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -54
- package/src/operations/triggers/webhook/index.ts +35 -35
- package/src/operations/triggers/webhook/types.ts +74 -74
- package/src/organization-model/README.md +97 -97
- package/src/organization-model/__tests__/defaults.test.ts +175 -175
- package/src/organization-model/__tests__/domains/customers.test.ts +295 -295
- package/src/organization-model/__tests__/domains/goals.test.ts +479 -479
- package/src/organization-model/__tests__/domains/identity.test.ts +279 -279
- package/src/organization-model/__tests__/domains/navigation.test.ts +212 -212
- package/src/organization-model/__tests__/domains/offerings.test.ts +419 -419
- package/src/organization-model/__tests__/domains/operations.test.ts +203 -203
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +362 -362
- package/src/organization-model/__tests__/domains/roles.test.ts +347 -347
- package/src/organization-model/__tests__/domains/statuses.test.ts +243 -243
- package/src/organization-model/__tests__/foundation.test.ts +105 -105
- package/src/organization-model/__tests__/graph.test.ts +894 -894
- package/src/organization-model/__tests__/resolve.test.ts +690 -690
- package/src/organization-model/__tests__/schema.test.ts +407 -407
- package/src/organization-model/contracts.ts +14 -14
- package/src/organization-model/defaults.ts +148 -148
- package/src/organization-model/domains/branding.ts +22 -22
- package/src/organization-model/domains/customers.ts +75 -75
- package/src/organization-model/domains/features.ts +22 -22
- package/src/organization-model/domains/goals.ts +80 -80
- package/src/organization-model/domains/identity.ts +94 -94
- package/src/organization-model/domains/navigation.ts +391 -391
- package/src/organization-model/domains/offerings.ts +66 -66
- package/src/organization-model/domains/operations.ts +85 -85
- package/src/organization-model/domains/projects.ts +48 -48
- package/src/organization-model/domains/prospecting.ts +33 -33
- package/src/organization-model/domains/roles.ts +55 -55
- package/src/organization-model/domains/sales.ts +94 -94
- package/src/organization-model/domains/shared.ts +62 -62
- package/src/organization-model/domains/statuses.ts +130 -130
- package/src/organization-model/foundation.ts +97 -97
- package/src/organization-model/graph/build.ts +399 -399
- package/src/organization-model/graph/index.ts +4 -4
- package/src/organization-model/graph/schema.ts +48 -48
- package/src/organization-model/graph/types.ts +40 -40
- package/src/organization-model/index.ts +13 -13
- package/src/organization-model/organization-graph.mdx +272 -272
- package/src/organization-model/organization-model.mdx +320 -320
- package/src/organization-model/published.ts +85 -85
- package/src/organization-model/resolve.ts +66 -66
- package/src/organization-model/schema.ts +287 -287
- package/src/organization-model/types.ts +46 -46
- package/src/platform/api/index.ts +1 -1
- package/src/platform/api/types.ts +35 -35
- package/src/platform/constants/http.ts +37 -37
- package/src/platform/constants/index.ts +5 -5
- package/src/platform/constants/limits.ts +32 -32
- package/src/platform/constants/resilience.ts +51 -51
- package/src/platform/constants/timeouts.ts +20 -20
- package/src/platform/constants/versions.ts +3 -3
- package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -347
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1028 -1028
- package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -393
- package/src/platform/registry/__tests__/resource-registry.test.ts +2005 -2005
- package/src/platform/registry/__tests__/serialization.test.ts +1127 -1127
- package/src/platform/registry/command-view.ts +180 -180
- package/src/platform/registry/domains.ts +165 -165
- package/src/platform/registry/index.ts +93 -93
- package/src/platform/registry/reserved.ts +24 -24
- package/src/platform/registry/resource-metadata.ts +59 -59
- package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -129
- package/src/platform/registry/resource-registry.ts +876 -876
- package/src/platform/registry/serialization.ts +273 -273
- package/src/platform/registry/serialized-types.ts +231 -231
- package/src/platform/registry/stats-types.ts +66 -66
- package/src/platform/registry/types.ts +404 -404
- package/src/platform/registry/validation.ts +513 -513
- package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -471
- package/src/platform/resilience/circuit-breaker.ts +164 -164
- package/src/platform/resilience/errors.ts +68 -68
- package/src/platform/resilience/http-error-mapper.ts +129 -129
- package/src/platform/resilience/index.ts +93 -93
- package/src/platform/resilience/rate-limiter-types.ts +46 -46
- package/src/platform/resilience/rate-limiter.ts +140 -140
- package/src/platform/resilience/retry.ts +89 -89
- package/src/platform/resilience/timeout.ts +63 -63
- package/src/platform/sse/events.ts +37 -34
- package/src/platform/sse/index.ts +7 -7
- package/src/platform/utils/__tests__/validation.test.ts +1083 -1083
- package/src/platform/utils/currency.ts +96 -96
- package/src/platform/utils/debounce.ts +52 -52
- package/src/platform/utils/error.ts +41 -41
- package/src/platform/utils/hmac.test.ts +97 -97
- package/src/platform/utils/index.ts +32 -32
- package/src/platform/utils/server/betterstack-logger.ts +210 -210
- package/src/platform/utils/server/hmac.ts +44 -44
- package/src/platform/utils/server/unsubscribe.ts +111 -111
- package/src/platform/utils/token-counter.ts +96 -96
- package/src/platform/utils/validation.ts +425 -425
- package/src/projects/api-schemas.ts +268 -268
- package/src/published.ts +1 -1
- package/src/reference/_generated/contracts.md +611 -607
- package/src/reference/glossary.md +105 -105
- package/src/requests/__tests__/api-schemas.test.ts +277 -277
- package/src/requests/api-schemas.ts +83 -83
- package/src/requests/index.ts +1 -1
- package/src/scaffold-registry/__tests__/index.test.ts +17 -0
- package/src/scaffold-registry/__tests__/schema.test.ts +329 -230
- package/src/scaffold-registry/index.ts +205 -189
- package/src/scaffold-registry/schema.ts +196 -128
- package/src/server.ts +272 -272
- package/src/supabase/database.types.ts +2719 -2719
- package/src/supabase/helpers.ts +20 -20
- package/src/supabase/index.ts +52 -52
- package/src/supabase/server/client.ts +58 -58
- package/src/test-utils/README.md +38 -38
- package/src/test-utils/browser-mocks.ts +54 -54
- package/src/test-utils/fixtures/api-keys.ts +52 -52
- package/src/test-utils/fixtures/index.ts +4 -4
- package/src/test-utils/fixtures/memberships.ts +80 -80
- package/src/test-utils/fixtures/organizations.ts +69 -69
- package/src/test-utils/fixtures/users.ts +79 -79
- package/src/test-utils/index.ts +11 -11
- package/src/test-utils/mocks/index.ts +2 -2
- package/src/test-utils/mocks/supabase.ts +142 -142
- package/src/test-utils/mocks/workos.ts +108 -108
- package/src/test-utils/rls/RLSTestContext.ts +556 -556
- package/src/test-utils/rls/index.ts +1 -1
|
@@ -1,467 +1,467 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent-specific logging types
|
|
3
|
-
* Simplified 2-event model: lifecycle, iteration
|
|
4
|
-
*
|
|
5
|
-
* Design Philosophy:
|
|
6
|
-
* - LIFECYCLE EVENTS: Structural checkpoints (initialization, iteration, completion)
|
|
7
|
-
* - ITERATION EVENTS: Execution activities (reasoning, actions during iterations)
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { ExecutionLogLevel } from '../../base/logging'
|
|
11
|
-
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// FORMAL TYPES
|
|
14
|
-
// ============================================================================
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Agent lifecycle stages
|
|
18
|
-
* Universal checkpoints that apply to all agent executions
|
|
19
|
-
*/
|
|
20
|
-
export type AgentLifecycle = 'initialization' | 'iteration' | 'completion'
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Lifecycle stage status
|
|
24
|
-
* Tracks progress through each lifecycle stage
|
|
25
|
-
*/
|
|
26
|
-
export type LifecycleStage = 'started' | 'completed' | 'failed'
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Iteration event types
|
|
30
|
-
* Activities that occur during agent iterations
|
|
31
|
-
*/
|
|
32
|
-
export type IterationEventType = 'reasoning' | 'action' | 'tool-call'
|
|
33
|
-
|
|
34
|
-
// ============================================================================
|
|
35
|
-
// LIFECYCLE EVENTS (Structural Checkpoints)
|
|
36
|
-
// ============================================================================
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Base fields shared by all lifecycle events
|
|
40
|
-
*/
|
|
41
|
-
interface AgentLifecycleEventBase {
|
|
42
|
-
type: 'agent'
|
|
43
|
-
agentId: string
|
|
44
|
-
lifecycle: AgentLifecycle
|
|
45
|
-
sessionId?: string // Optional: only present when agent runs in session context
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Lifecycle started event - emitted when a phase begins
|
|
50
|
-
* REQUIRED: startTime (phase has started, no end yet)
|
|
51
|
-
*/
|
|
52
|
-
export interface AgentLifecycleStartedEvent extends AgentLifecycleEventBase {
|
|
53
|
-
stage: 'started'
|
|
54
|
-
startTime: number // REQUIRED: Phase start timestamp
|
|
55
|
-
iteration?: number // Only for 'iteration' lifecycle
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Lifecycle completed event - emitted when a phase succeeds
|
|
60
|
-
* REQUIRED: startTime, endTime, duration (phase has finished successfully)
|
|
61
|
-
*/
|
|
62
|
-
export interface AgentLifecycleCompletedEvent extends AgentLifecycleEventBase {
|
|
63
|
-
stage: 'completed'
|
|
64
|
-
startTime: number // REQUIRED: Phase start timestamp
|
|
65
|
-
endTime: number // REQUIRED: Phase end timestamp
|
|
66
|
-
duration: number // REQUIRED: Calculated duration (endTime - startTime)
|
|
67
|
-
iteration?: number // Only for 'iteration' lifecycle
|
|
68
|
-
|
|
69
|
-
// Optional fields specific to certain lifecycles
|
|
70
|
-
attempts?: number // Only for 'completion' lifecycle (tracks output generation attempts: 1 or 2)
|
|
71
|
-
memorySize?: {
|
|
72
|
-
sessionMemoryKeys: number
|
|
73
|
-
historyEntries: number
|
|
74
|
-
} // Only for 'completion' lifecycle (memory snapshot metadata)
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Lifecycle failed event - emitted when a phase fails
|
|
79
|
-
* REQUIRED: startTime, endTime, duration, error (phase has finished with error)
|
|
80
|
-
*/
|
|
81
|
-
export interface AgentLifecycleFailedEvent extends AgentLifecycleEventBase {
|
|
82
|
-
stage: 'failed'
|
|
83
|
-
startTime: number // REQUIRED: Phase start timestamp
|
|
84
|
-
endTime: number // REQUIRED: Phase end timestamp
|
|
85
|
-
duration: number // REQUIRED: Calculated duration (endTime - startTime)
|
|
86
|
-
error: string // REQUIRED: Error message
|
|
87
|
-
iteration?: number // Only for 'iteration' lifecycle
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Union type for all lifecycle events
|
|
92
|
-
* Discriminated by 'stage' field for type narrowing
|
|
93
|
-
*/
|
|
94
|
-
export type AgentLifecycleEvent = AgentLifecycleStartedEvent | AgentLifecycleCompletedEvent | AgentLifecycleFailedEvent
|
|
95
|
-
|
|
96
|
-
// ============================================================================
|
|
97
|
-
// ITERATION EVENTS (Execution Activities)
|
|
98
|
-
// ============================================================================
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Placeholder data for MVP
|
|
102
|
-
* Will be typed per actionType in future
|
|
103
|
-
*/
|
|
104
|
-
export interface ActionPlaceholderData {
|
|
105
|
-
message: string
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Iteration event - captures activities during agent iterations
|
|
110
|
-
* Consolidates reasoning (LLM thought process) and actions (tool use, memory ops, etc.)
|
|
111
|
-
*/
|
|
112
|
-
export interface AgentIterationEvent {
|
|
113
|
-
type: 'agent'
|
|
114
|
-
agentId: string
|
|
115
|
-
lifecycle: 'iteration' // Always iteration
|
|
116
|
-
eventType: IterationEventType
|
|
117
|
-
iteration: number
|
|
118
|
-
sessionId?: string // Optional: only present when agent runs in session context
|
|
119
|
-
|
|
120
|
-
// Timeline timing fields (v2 - Clean Break)
|
|
121
|
-
startTime: number // Activity start timestamp
|
|
122
|
-
endTime: number // Activity end timestamp
|
|
123
|
-
duration: number // Calculated duration (endTime - startTime)
|
|
124
|
-
|
|
125
|
-
// Conditional fields based on eventType
|
|
126
|
-
output?: string // For reasoning events
|
|
127
|
-
actionType?: string // For action events (tool-use, delegate, memory-write, etc.)
|
|
128
|
-
data?: ActionPlaceholderData // For action events
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Tool call event - captures individual tool executions during iterations
|
|
133
|
-
* Provides granular timing for each tool invocation
|
|
134
|
-
*/
|
|
135
|
-
export interface AgentToolCallEvent {
|
|
136
|
-
type: 'agent'
|
|
137
|
-
agentId: string
|
|
138
|
-
lifecycle: 'iteration' // Always iteration
|
|
139
|
-
eventType: 'tool-call' // Specific event type for tool calls
|
|
140
|
-
iteration: number
|
|
141
|
-
sessionId?: string // Optional: only present when agent runs in session context
|
|
142
|
-
|
|
143
|
-
// Tool identification and timing
|
|
144
|
-
toolName: string // Tool identifier
|
|
145
|
-
startTime: number // Tool call start timestamp
|
|
146
|
-
endTime: number // Tool call end timestamp
|
|
147
|
-
duration: number // Calculated duration
|
|
148
|
-
|
|
149
|
-
// Execution results
|
|
150
|
-
success: boolean // Whether tool execution succeeded
|
|
151
|
-
error?: string // Error message if failed
|
|
152
|
-
input?: Record<string, unknown> // Tool input parameters
|
|
153
|
-
output?: unknown // Tool output result
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// ============================================================================
|
|
157
|
-
// UNION TYPES
|
|
158
|
-
// ============================================================================
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Union type for all agent log contexts
|
|
162
|
-
* 3 event types total (lifecycle, iteration, tool-call)
|
|
163
|
-
*/
|
|
164
|
-
export type AgentLogContext = AgentLifecycleEvent | AgentIterationEvent | AgentToolCallEvent
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Agent execution log message (UI-specific interface)
|
|
168
|
-
*/
|
|
169
|
-
export interface AgentLogMessage {
|
|
170
|
-
level: ExecutionLogLevel
|
|
171
|
-
message: string
|
|
172
|
-
timestamp: number
|
|
173
|
-
context?: AgentLogContext
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// ============================================================================
|
|
177
|
-
// TYPE GUARDS - Primary (2 total)
|
|
178
|
-
// ============================================================================
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Check if context is a lifecycle event
|
|
182
|
-
*/
|
|
183
|
-
export function isLifecycleEvent(ctx: AgentLogContext): ctx is AgentLifecycleEvent {
|
|
184
|
-
return 'stage' in ctx && ctx.stage !== undefined
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Check if context is an iteration event
|
|
189
|
-
*/
|
|
190
|
-
export function isIterationEvent(ctx: AgentLogContext): ctx is AgentIterationEvent {
|
|
191
|
-
return 'eventType' in ctx && ctx.eventType !== undefined
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// ============================================================================
|
|
195
|
-
// TYPE GUARDS - Helpers (optional convenience)
|
|
196
|
-
// ============================================================================
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Check if lifecycle event is initialization
|
|
200
|
-
*/
|
|
201
|
-
export function isInitialization(evt: AgentLifecycleEvent): boolean {
|
|
202
|
-
return evt.lifecycle === 'initialization'
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Check if lifecycle event is iteration
|
|
207
|
-
*/
|
|
208
|
-
export function isIteration(evt: AgentLifecycleEvent): boolean {
|
|
209
|
-
return evt.lifecycle === 'iteration'
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Check if lifecycle event is completion
|
|
214
|
-
*/
|
|
215
|
-
export function isCompletion(evt: AgentLifecycleEvent): boolean {
|
|
216
|
-
return evt.lifecycle === 'completion'
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Check if iteration event is reasoning
|
|
221
|
-
*/
|
|
222
|
-
export function isReasoningEvent(evt: AgentIterationEvent): boolean {
|
|
223
|
-
return evt.eventType === 'reasoning'
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Check if iteration event is action
|
|
228
|
-
*/
|
|
229
|
-
export function isActionEvent(evt: AgentIterationEvent): boolean {
|
|
230
|
-
return evt.eventType === 'action'
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Check if context is a tool call event
|
|
235
|
-
*/
|
|
236
|
-
export function isToolCallEvent(ctx: AgentLogContext): ctx is AgentToolCallEvent {
|
|
237
|
-
return 'eventType' in ctx && ctx.eventType === 'tool-call'
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Check if action is tool-use
|
|
242
|
-
*/
|
|
243
|
-
export function isToolUseAction(evt: AgentIterationEvent): boolean {
|
|
244
|
-
return evt.eventType === 'action' && evt.actionType === 'tool-use'
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Check if context has iteration information
|
|
249
|
-
*/
|
|
250
|
-
export function isIterationContext(ctx: AgentLogContext): boolean {
|
|
251
|
-
return 'iteration' in ctx && typeof ctx.iteration === 'number'
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
// ============================================================================
|
|
255
|
-
// LOGGING UTILITIES
|
|
256
|
-
// ============================================================================
|
|
257
|
-
|
|
258
|
-
import type { IExecutionLogger } from '../../base/logging'
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Data for lifecycle 'started' events
|
|
262
|
-
*/
|
|
263
|
-
export interface AgentLifecycleStartedData {
|
|
264
|
-
startTime: number
|
|
265
|
-
iteration?: number
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Data for lifecycle 'completed' events
|
|
270
|
-
*/
|
|
271
|
-
export interface AgentLifecycleCompletedData {
|
|
272
|
-
startTime: number
|
|
273
|
-
endTime: number
|
|
274
|
-
duration: number
|
|
275
|
-
iteration?: number
|
|
276
|
-
attempts?: number
|
|
277
|
-
memorySize?: {
|
|
278
|
-
sessionMemoryKeys: number
|
|
279
|
-
historyEntries: number
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
/**
|
|
284
|
-
* Data for lifecycle 'failed' events
|
|
285
|
-
*/
|
|
286
|
-
export interface AgentLifecycleFailedData {
|
|
287
|
-
startTime: number
|
|
288
|
-
endTime: number
|
|
289
|
-
duration: number
|
|
290
|
-
error: string
|
|
291
|
-
iteration?: number
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Scoped logger for agent execution
|
|
296
|
-
* Captures logger and agentId to eliminate repetitive parameter passing
|
|
297
|
-
*
|
|
298
|
-
* Type-safe lifecycle logging with stage-specific required fields
|
|
299
|
-
*/
|
|
300
|
-
export interface AgentScopedLogger {
|
|
301
|
-
lifecycle(lifecycle: AgentLifecycle, stage: 'started', data: AgentLifecycleStartedData): void
|
|
302
|
-
lifecycle(lifecycle: AgentLifecycle, stage: 'completed', data: AgentLifecycleCompletedData): void
|
|
303
|
-
lifecycle(lifecycle: AgentLifecycle, stage: 'failed', data: AgentLifecycleFailedData): void
|
|
304
|
-
reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void
|
|
305
|
-
action(
|
|
306
|
-
actionType: string,
|
|
307
|
-
message: string,
|
|
308
|
-
iteration: number,
|
|
309
|
-
startTime: number,
|
|
310
|
-
endTime: number,
|
|
311
|
-
duration: number
|
|
312
|
-
): void
|
|
313
|
-
toolCall(
|
|
314
|
-
toolName: string,
|
|
315
|
-
iteration: number,
|
|
316
|
-
startTime: number,
|
|
317
|
-
endTime: number,
|
|
318
|
-
duration: number,
|
|
319
|
-
success: boolean,
|
|
320
|
-
error?: string,
|
|
321
|
-
input?: unknown,
|
|
322
|
-
output?: unknown
|
|
323
|
-
): void
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* Create a scoped logger bound to specific agent and logger instance
|
|
328
|
-
* This eliminates the need to pass logger and agentId to every logging call
|
|
329
|
-
*
|
|
330
|
-
* @param logger - Execution logger instance
|
|
331
|
-
* @param agentId - Agent identifier
|
|
332
|
-
* @param sessionId - Optional session identifier (when agent runs in session context)
|
|
333
|
-
* @returns Scoped logger with simplified API
|
|
334
|
-
*/
|
|
335
|
-
export function createAgentLogger(logger: IExecutionLogger, agentId: string, sessionId?: string): AgentScopedLogger {
|
|
336
|
-
return {
|
|
337
|
-
lifecycle(
|
|
338
|
-
lifecycle: AgentLifecycle,
|
|
339
|
-
stage: LifecycleStage,
|
|
340
|
-
data: AgentLifecycleStartedData | AgentLifecycleCompletedData | AgentLifecycleFailedData
|
|
341
|
-
): void {
|
|
342
|
-
// Build stage-specific event using discriminated union
|
|
343
|
-
let event: AgentLifecycleEvent
|
|
344
|
-
|
|
345
|
-
if (stage === 'started') {
|
|
346
|
-
const startedData = data as AgentLifecycleStartedData
|
|
347
|
-
event = {
|
|
348
|
-
type: 'agent',
|
|
349
|
-
agentId,
|
|
350
|
-
lifecycle,
|
|
351
|
-
stage: 'started',
|
|
352
|
-
startTime: startedData.startTime,
|
|
353
|
-
...(sessionId && { sessionId }),
|
|
354
|
-
...(startedData.iteration !== undefined && { iteration: startedData.iteration })
|
|
355
|
-
}
|
|
356
|
-
} else if (stage === 'completed') {
|
|
357
|
-
const completedData = data as AgentLifecycleCompletedData
|
|
358
|
-
event = {
|
|
359
|
-
type: 'agent',
|
|
360
|
-
agentId,
|
|
361
|
-
lifecycle,
|
|
362
|
-
stage: 'completed',
|
|
363
|
-
startTime: completedData.startTime,
|
|
364
|
-
endTime: completedData.endTime,
|
|
365
|
-
duration: completedData.duration,
|
|
366
|
-
...(sessionId && { sessionId }),
|
|
367
|
-
...(completedData.iteration !== undefined && { iteration: completedData.iteration }),
|
|
368
|
-
...(completedData.attempts !== undefined && { attempts: completedData.attempts }),
|
|
369
|
-
...(completedData.memorySize && { memorySize: completedData.memorySize })
|
|
370
|
-
}
|
|
371
|
-
} else {
|
|
372
|
-
// stage === 'failed'
|
|
373
|
-
const failedData = data as AgentLifecycleFailedData
|
|
374
|
-
event = {
|
|
375
|
-
type: 'agent',
|
|
376
|
-
agentId,
|
|
377
|
-
lifecycle,
|
|
378
|
-
stage: 'failed',
|
|
379
|
-
startTime: failedData.startTime,
|
|
380
|
-
endTime: failedData.endTime,
|
|
381
|
-
duration: failedData.duration,
|
|
382
|
-
error: failedData.error,
|
|
383
|
-
...(sessionId && { sessionId }),
|
|
384
|
-
...(failedData.iteration !== undefined && { iteration: failedData.iteration })
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
const level = stage === 'failed' ? 'error' : 'info'
|
|
389
|
-
const iterationText = 'iteration' in event && event.iteration ? ` (iteration ${event.iteration})` : ''
|
|
390
|
-
const message = `${lifecycle} ${stage}${iterationText}`
|
|
391
|
-
logger[level](message, event)
|
|
392
|
-
},
|
|
393
|
-
|
|
394
|
-
reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void {
|
|
395
|
-
const event: AgentIterationEvent = {
|
|
396
|
-
type: 'agent',
|
|
397
|
-
agentId,
|
|
398
|
-
lifecycle: 'iteration',
|
|
399
|
-
eventType: 'reasoning',
|
|
400
|
-
iteration,
|
|
401
|
-
output,
|
|
402
|
-
startTime,
|
|
403
|
-
endTime,
|
|
404
|
-
duration,
|
|
405
|
-
...(sessionId && { sessionId }) // Include sessionId if present
|
|
406
|
-
}
|
|
407
|
-
logger.info('reasoning', event)
|
|
408
|
-
},
|
|
409
|
-
|
|
410
|
-
action(
|
|
411
|
-
actionType: string,
|
|
412
|
-
message: string,
|
|
413
|
-
iteration: number,
|
|
414
|
-
startTime: number,
|
|
415
|
-
endTime: number,
|
|
416
|
-
duration: number
|
|
417
|
-
): void {
|
|
418
|
-
const event: AgentIterationEvent = {
|
|
419
|
-
type: 'agent',
|
|
420
|
-
agentId,
|
|
421
|
-
lifecycle: 'iteration',
|
|
422
|
-
eventType: 'action',
|
|
423
|
-
iteration,
|
|
424
|
-
actionType,
|
|
425
|
-
startTime,
|
|
426
|
-
endTime,
|
|
427
|
-
duration,
|
|
428
|
-
data: { message },
|
|
429
|
-
...(sessionId && { sessionId }) // Include sessionId if present
|
|
430
|
-
}
|
|
431
|
-
logger.info('action', event)
|
|
432
|
-
},
|
|
433
|
-
|
|
434
|
-
toolCall(
|
|
435
|
-
toolName: string,
|
|
436
|
-
iteration: number,
|
|
437
|
-
startTime: number,
|
|
438
|
-
endTime: number,
|
|
439
|
-
duration: number,
|
|
440
|
-
success: boolean,
|
|
441
|
-
error?: string,
|
|
442
|
-
input?: unknown,
|
|
443
|
-
output?: unknown
|
|
444
|
-
): void {
|
|
445
|
-
const event: AgentToolCallEvent = {
|
|
446
|
-
type: 'agent',
|
|
447
|
-
agentId,
|
|
448
|
-
lifecycle: 'iteration',
|
|
449
|
-
eventType: 'tool-call',
|
|
450
|
-
iteration,
|
|
451
|
-
toolName,
|
|
452
|
-
startTime,
|
|
453
|
-
endTime,
|
|
454
|
-
duration,
|
|
455
|
-
success,
|
|
456
|
-
...(error && { error }),
|
|
457
|
-
...(input !== undefined &&
|
|
458
|
-
input !== null &&
|
|
459
|
-
typeof input === 'object' &&
|
|
460
|
-
!Array.isArray(input) && { input: input as Record<string, unknown> }),
|
|
461
|
-
...(output !== undefined && { output }),
|
|
462
|
-
...(sessionId && { sessionId }) // Include sessionId if present
|
|
463
|
-
}
|
|
464
|
-
logger.info(`tool-call: ${toolName}`, event)
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Agent-specific logging types
|
|
3
|
+
* Simplified 2-event model: lifecycle, iteration
|
|
4
|
+
*
|
|
5
|
+
* Design Philosophy:
|
|
6
|
+
* - LIFECYCLE EVENTS: Structural checkpoints (initialization, iteration, completion)
|
|
7
|
+
* - ITERATION EVENTS: Execution activities (reasoning, actions during iterations)
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ExecutionLogLevel } from '../../base/logging'
|
|
11
|
+
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// FORMAL TYPES
|
|
14
|
+
// ============================================================================
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Agent lifecycle stages
|
|
18
|
+
* Universal checkpoints that apply to all agent executions
|
|
19
|
+
*/
|
|
20
|
+
export type AgentLifecycle = 'initialization' | 'iteration' | 'completion'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Lifecycle stage status
|
|
24
|
+
* Tracks progress through each lifecycle stage
|
|
25
|
+
*/
|
|
26
|
+
export type LifecycleStage = 'started' | 'completed' | 'failed'
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Iteration event types
|
|
30
|
+
* Activities that occur during agent iterations
|
|
31
|
+
*/
|
|
32
|
+
export type IterationEventType = 'reasoning' | 'action' | 'tool-call'
|
|
33
|
+
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// LIFECYCLE EVENTS (Structural Checkpoints)
|
|
36
|
+
// ============================================================================
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Base fields shared by all lifecycle events
|
|
40
|
+
*/
|
|
41
|
+
interface AgentLifecycleEventBase {
|
|
42
|
+
type: 'agent'
|
|
43
|
+
agentId: string
|
|
44
|
+
lifecycle: AgentLifecycle
|
|
45
|
+
sessionId?: string // Optional: only present when agent runs in session context
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Lifecycle started event - emitted when a phase begins
|
|
50
|
+
* REQUIRED: startTime (phase has started, no end yet)
|
|
51
|
+
*/
|
|
52
|
+
export interface AgentLifecycleStartedEvent extends AgentLifecycleEventBase {
|
|
53
|
+
stage: 'started'
|
|
54
|
+
startTime: number // REQUIRED: Phase start timestamp
|
|
55
|
+
iteration?: number // Only for 'iteration' lifecycle
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Lifecycle completed event - emitted when a phase succeeds
|
|
60
|
+
* REQUIRED: startTime, endTime, duration (phase has finished successfully)
|
|
61
|
+
*/
|
|
62
|
+
export interface AgentLifecycleCompletedEvent extends AgentLifecycleEventBase {
|
|
63
|
+
stage: 'completed'
|
|
64
|
+
startTime: number // REQUIRED: Phase start timestamp
|
|
65
|
+
endTime: number // REQUIRED: Phase end timestamp
|
|
66
|
+
duration: number // REQUIRED: Calculated duration (endTime - startTime)
|
|
67
|
+
iteration?: number // Only for 'iteration' lifecycle
|
|
68
|
+
|
|
69
|
+
// Optional fields specific to certain lifecycles
|
|
70
|
+
attempts?: number // Only for 'completion' lifecycle (tracks output generation attempts: 1 or 2)
|
|
71
|
+
memorySize?: {
|
|
72
|
+
sessionMemoryKeys: number
|
|
73
|
+
historyEntries: number
|
|
74
|
+
} // Only for 'completion' lifecycle (memory snapshot metadata)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Lifecycle failed event - emitted when a phase fails
|
|
79
|
+
* REQUIRED: startTime, endTime, duration, error (phase has finished with error)
|
|
80
|
+
*/
|
|
81
|
+
export interface AgentLifecycleFailedEvent extends AgentLifecycleEventBase {
|
|
82
|
+
stage: 'failed'
|
|
83
|
+
startTime: number // REQUIRED: Phase start timestamp
|
|
84
|
+
endTime: number // REQUIRED: Phase end timestamp
|
|
85
|
+
duration: number // REQUIRED: Calculated duration (endTime - startTime)
|
|
86
|
+
error: string // REQUIRED: Error message
|
|
87
|
+
iteration?: number // Only for 'iteration' lifecycle
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Union type for all lifecycle events
|
|
92
|
+
* Discriminated by 'stage' field for type narrowing
|
|
93
|
+
*/
|
|
94
|
+
export type AgentLifecycleEvent = AgentLifecycleStartedEvent | AgentLifecycleCompletedEvent | AgentLifecycleFailedEvent
|
|
95
|
+
|
|
96
|
+
// ============================================================================
|
|
97
|
+
// ITERATION EVENTS (Execution Activities)
|
|
98
|
+
// ============================================================================
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Placeholder data for MVP
|
|
102
|
+
* Will be typed per actionType in future
|
|
103
|
+
*/
|
|
104
|
+
export interface ActionPlaceholderData {
|
|
105
|
+
message: string
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Iteration event - captures activities during agent iterations
|
|
110
|
+
* Consolidates reasoning (LLM thought process) and actions (tool use, memory ops, etc.)
|
|
111
|
+
*/
|
|
112
|
+
export interface AgentIterationEvent {
|
|
113
|
+
type: 'agent'
|
|
114
|
+
agentId: string
|
|
115
|
+
lifecycle: 'iteration' // Always iteration
|
|
116
|
+
eventType: IterationEventType
|
|
117
|
+
iteration: number
|
|
118
|
+
sessionId?: string // Optional: only present when agent runs in session context
|
|
119
|
+
|
|
120
|
+
// Timeline timing fields (v2 - Clean Break)
|
|
121
|
+
startTime: number // Activity start timestamp
|
|
122
|
+
endTime: number // Activity end timestamp
|
|
123
|
+
duration: number // Calculated duration (endTime - startTime)
|
|
124
|
+
|
|
125
|
+
// Conditional fields based on eventType
|
|
126
|
+
output?: string // For reasoning events
|
|
127
|
+
actionType?: string // For action events (tool-use, delegate, memory-write, etc.)
|
|
128
|
+
data?: ActionPlaceholderData // For action events
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Tool call event - captures individual tool executions during iterations
|
|
133
|
+
* Provides granular timing for each tool invocation
|
|
134
|
+
*/
|
|
135
|
+
export interface AgentToolCallEvent {
|
|
136
|
+
type: 'agent'
|
|
137
|
+
agentId: string
|
|
138
|
+
lifecycle: 'iteration' // Always iteration
|
|
139
|
+
eventType: 'tool-call' // Specific event type for tool calls
|
|
140
|
+
iteration: number
|
|
141
|
+
sessionId?: string // Optional: only present when agent runs in session context
|
|
142
|
+
|
|
143
|
+
// Tool identification and timing
|
|
144
|
+
toolName: string // Tool identifier
|
|
145
|
+
startTime: number // Tool call start timestamp
|
|
146
|
+
endTime: number // Tool call end timestamp
|
|
147
|
+
duration: number // Calculated duration
|
|
148
|
+
|
|
149
|
+
// Execution results
|
|
150
|
+
success: boolean // Whether tool execution succeeded
|
|
151
|
+
error?: string // Error message if failed
|
|
152
|
+
input?: Record<string, unknown> // Tool input parameters
|
|
153
|
+
output?: unknown // Tool output result
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// ============================================================================
|
|
157
|
+
// UNION TYPES
|
|
158
|
+
// ============================================================================
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Union type for all agent log contexts
|
|
162
|
+
* 3 event types total (lifecycle, iteration, tool-call)
|
|
163
|
+
*/
|
|
164
|
+
export type AgentLogContext = AgentLifecycleEvent | AgentIterationEvent | AgentToolCallEvent
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Agent execution log message (UI-specific interface)
|
|
168
|
+
*/
|
|
169
|
+
export interface AgentLogMessage {
|
|
170
|
+
level: ExecutionLogLevel
|
|
171
|
+
message: string
|
|
172
|
+
timestamp: number
|
|
173
|
+
context?: AgentLogContext
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// ============================================================================
|
|
177
|
+
// TYPE GUARDS - Primary (2 total)
|
|
178
|
+
// ============================================================================
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Check if context is a lifecycle event
|
|
182
|
+
*/
|
|
183
|
+
export function isLifecycleEvent(ctx: AgentLogContext): ctx is AgentLifecycleEvent {
|
|
184
|
+
return 'stage' in ctx && ctx.stage !== undefined
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Check if context is an iteration event
|
|
189
|
+
*/
|
|
190
|
+
export function isIterationEvent(ctx: AgentLogContext): ctx is AgentIterationEvent {
|
|
191
|
+
return 'eventType' in ctx && ctx.eventType !== undefined
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// TYPE GUARDS - Helpers (optional convenience)
|
|
196
|
+
// ============================================================================
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Check if lifecycle event is initialization
|
|
200
|
+
*/
|
|
201
|
+
export function isInitialization(evt: AgentLifecycleEvent): boolean {
|
|
202
|
+
return evt.lifecycle === 'initialization'
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Check if lifecycle event is iteration
|
|
207
|
+
*/
|
|
208
|
+
export function isIteration(evt: AgentLifecycleEvent): boolean {
|
|
209
|
+
return evt.lifecycle === 'iteration'
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Check if lifecycle event is completion
|
|
214
|
+
*/
|
|
215
|
+
export function isCompletion(evt: AgentLifecycleEvent): boolean {
|
|
216
|
+
return evt.lifecycle === 'completion'
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Check if iteration event is reasoning
|
|
221
|
+
*/
|
|
222
|
+
export function isReasoningEvent(evt: AgentIterationEvent): boolean {
|
|
223
|
+
return evt.eventType === 'reasoning'
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Check if iteration event is action
|
|
228
|
+
*/
|
|
229
|
+
export function isActionEvent(evt: AgentIterationEvent): boolean {
|
|
230
|
+
return evt.eventType === 'action'
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Check if context is a tool call event
|
|
235
|
+
*/
|
|
236
|
+
export function isToolCallEvent(ctx: AgentLogContext): ctx is AgentToolCallEvent {
|
|
237
|
+
return 'eventType' in ctx && ctx.eventType === 'tool-call'
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Check if action is tool-use
|
|
242
|
+
*/
|
|
243
|
+
export function isToolUseAction(evt: AgentIterationEvent): boolean {
|
|
244
|
+
return evt.eventType === 'action' && evt.actionType === 'tool-use'
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Check if context has iteration information
|
|
249
|
+
*/
|
|
250
|
+
export function isIterationContext(ctx: AgentLogContext): boolean {
|
|
251
|
+
return 'iteration' in ctx && typeof ctx.iteration === 'number'
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// ============================================================================
|
|
255
|
+
// LOGGING UTILITIES
|
|
256
|
+
// ============================================================================
|
|
257
|
+
|
|
258
|
+
import type { IExecutionLogger } from '../../base/logging'
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Data for lifecycle 'started' events
|
|
262
|
+
*/
|
|
263
|
+
export interface AgentLifecycleStartedData {
|
|
264
|
+
startTime: number
|
|
265
|
+
iteration?: number
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Data for lifecycle 'completed' events
|
|
270
|
+
*/
|
|
271
|
+
export interface AgentLifecycleCompletedData {
|
|
272
|
+
startTime: number
|
|
273
|
+
endTime: number
|
|
274
|
+
duration: number
|
|
275
|
+
iteration?: number
|
|
276
|
+
attempts?: number
|
|
277
|
+
memorySize?: {
|
|
278
|
+
sessionMemoryKeys: number
|
|
279
|
+
historyEntries: number
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Data for lifecycle 'failed' events
|
|
285
|
+
*/
|
|
286
|
+
export interface AgentLifecycleFailedData {
|
|
287
|
+
startTime: number
|
|
288
|
+
endTime: number
|
|
289
|
+
duration: number
|
|
290
|
+
error: string
|
|
291
|
+
iteration?: number
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Scoped logger for agent execution
|
|
296
|
+
* Captures logger and agentId to eliminate repetitive parameter passing
|
|
297
|
+
*
|
|
298
|
+
* Type-safe lifecycle logging with stage-specific required fields
|
|
299
|
+
*/
|
|
300
|
+
export interface AgentScopedLogger {
|
|
301
|
+
lifecycle(lifecycle: AgentLifecycle, stage: 'started', data: AgentLifecycleStartedData): void
|
|
302
|
+
lifecycle(lifecycle: AgentLifecycle, stage: 'completed', data: AgentLifecycleCompletedData): void
|
|
303
|
+
lifecycle(lifecycle: AgentLifecycle, stage: 'failed', data: AgentLifecycleFailedData): void
|
|
304
|
+
reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void
|
|
305
|
+
action(
|
|
306
|
+
actionType: string,
|
|
307
|
+
message: string,
|
|
308
|
+
iteration: number,
|
|
309
|
+
startTime: number,
|
|
310
|
+
endTime: number,
|
|
311
|
+
duration: number
|
|
312
|
+
): void
|
|
313
|
+
toolCall(
|
|
314
|
+
toolName: string,
|
|
315
|
+
iteration: number,
|
|
316
|
+
startTime: number,
|
|
317
|
+
endTime: number,
|
|
318
|
+
duration: number,
|
|
319
|
+
success: boolean,
|
|
320
|
+
error?: string,
|
|
321
|
+
input?: unknown,
|
|
322
|
+
output?: unknown
|
|
323
|
+
): void
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Create a scoped logger bound to specific agent and logger instance
|
|
328
|
+
* This eliminates the need to pass logger and agentId to every logging call
|
|
329
|
+
*
|
|
330
|
+
* @param logger - Execution logger instance
|
|
331
|
+
* @param agentId - Agent identifier
|
|
332
|
+
* @param sessionId - Optional session identifier (when agent runs in session context)
|
|
333
|
+
* @returns Scoped logger with simplified API
|
|
334
|
+
*/
|
|
335
|
+
export function createAgentLogger(logger: IExecutionLogger, agentId: string, sessionId?: string): AgentScopedLogger {
|
|
336
|
+
return {
|
|
337
|
+
lifecycle(
|
|
338
|
+
lifecycle: AgentLifecycle,
|
|
339
|
+
stage: LifecycleStage,
|
|
340
|
+
data: AgentLifecycleStartedData | AgentLifecycleCompletedData | AgentLifecycleFailedData
|
|
341
|
+
): void {
|
|
342
|
+
// Build stage-specific event using discriminated union
|
|
343
|
+
let event: AgentLifecycleEvent
|
|
344
|
+
|
|
345
|
+
if (stage === 'started') {
|
|
346
|
+
const startedData = data as AgentLifecycleStartedData
|
|
347
|
+
event = {
|
|
348
|
+
type: 'agent',
|
|
349
|
+
agentId,
|
|
350
|
+
lifecycle,
|
|
351
|
+
stage: 'started',
|
|
352
|
+
startTime: startedData.startTime,
|
|
353
|
+
...(sessionId && { sessionId }),
|
|
354
|
+
...(startedData.iteration !== undefined && { iteration: startedData.iteration })
|
|
355
|
+
}
|
|
356
|
+
} else if (stage === 'completed') {
|
|
357
|
+
const completedData = data as AgentLifecycleCompletedData
|
|
358
|
+
event = {
|
|
359
|
+
type: 'agent',
|
|
360
|
+
agentId,
|
|
361
|
+
lifecycle,
|
|
362
|
+
stage: 'completed',
|
|
363
|
+
startTime: completedData.startTime,
|
|
364
|
+
endTime: completedData.endTime,
|
|
365
|
+
duration: completedData.duration,
|
|
366
|
+
...(sessionId && { sessionId }),
|
|
367
|
+
...(completedData.iteration !== undefined && { iteration: completedData.iteration }),
|
|
368
|
+
...(completedData.attempts !== undefined && { attempts: completedData.attempts }),
|
|
369
|
+
...(completedData.memorySize && { memorySize: completedData.memorySize })
|
|
370
|
+
}
|
|
371
|
+
} else {
|
|
372
|
+
// stage === 'failed'
|
|
373
|
+
const failedData = data as AgentLifecycleFailedData
|
|
374
|
+
event = {
|
|
375
|
+
type: 'agent',
|
|
376
|
+
agentId,
|
|
377
|
+
lifecycle,
|
|
378
|
+
stage: 'failed',
|
|
379
|
+
startTime: failedData.startTime,
|
|
380
|
+
endTime: failedData.endTime,
|
|
381
|
+
duration: failedData.duration,
|
|
382
|
+
error: failedData.error,
|
|
383
|
+
...(sessionId && { sessionId }),
|
|
384
|
+
...(failedData.iteration !== undefined && { iteration: failedData.iteration })
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
const level = stage === 'failed' ? 'error' : 'info'
|
|
389
|
+
const iterationText = 'iteration' in event && event.iteration ? ` (iteration ${event.iteration})` : ''
|
|
390
|
+
const message = `${lifecycle} ${stage}${iterationText}`
|
|
391
|
+
logger[level](message, event)
|
|
392
|
+
},
|
|
393
|
+
|
|
394
|
+
reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void {
|
|
395
|
+
const event: AgentIterationEvent = {
|
|
396
|
+
type: 'agent',
|
|
397
|
+
agentId,
|
|
398
|
+
lifecycle: 'iteration',
|
|
399
|
+
eventType: 'reasoning',
|
|
400
|
+
iteration,
|
|
401
|
+
output,
|
|
402
|
+
startTime,
|
|
403
|
+
endTime,
|
|
404
|
+
duration,
|
|
405
|
+
...(sessionId && { sessionId }) // Include sessionId if present
|
|
406
|
+
}
|
|
407
|
+
logger.info('reasoning', event)
|
|
408
|
+
},
|
|
409
|
+
|
|
410
|
+
action(
|
|
411
|
+
actionType: string,
|
|
412
|
+
message: string,
|
|
413
|
+
iteration: number,
|
|
414
|
+
startTime: number,
|
|
415
|
+
endTime: number,
|
|
416
|
+
duration: number
|
|
417
|
+
): void {
|
|
418
|
+
const event: AgentIterationEvent = {
|
|
419
|
+
type: 'agent',
|
|
420
|
+
agentId,
|
|
421
|
+
lifecycle: 'iteration',
|
|
422
|
+
eventType: 'action',
|
|
423
|
+
iteration,
|
|
424
|
+
actionType,
|
|
425
|
+
startTime,
|
|
426
|
+
endTime,
|
|
427
|
+
duration,
|
|
428
|
+
data: { message },
|
|
429
|
+
...(sessionId && { sessionId }) // Include sessionId if present
|
|
430
|
+
}
|
|
431
|
+
logger.info('action', event)
|
|
432
|
+
},
|
|
433
|
+
|
|
434
|
+
toolCall(
|
|
435
|
+
toolName: string,
|
|
436
|
+
iteration: number,
|
|
437
|
+
startTime: number,
|
|
438
|
+
endTime: number,
|
|
439
|
+
duration: number,
|
|
440
|
+
success: boolean,
|
|
441
|
+
error?: string,
|
|
442
|
+
input?: unknown,
|
|
443
|
+
output?: unknown
|
|
444
|
+
): void {
|
|
445
|
+
const event: AgentToolCallEvent = {
|
|
446
|
+
type: 'agent',
|
|
447
|
+
agentId,
|
|
448
|
+
lifecycle: 'iteration',
|
|
449
|
+
eventType: 'tool-call',
|
|
450
|
+
iteration,
|
|
451
|
+
toolName,
|
|
452
|
+
startTime,
|
|
453
|
+
endTime,
|
|
454
|
+
duration,
|
|
455
|
+
success,
|
|
456
|
+
...(error && { error }),
|
|
457
|
+
...(input !== undefined &&
|
|
458
|
+
input !== null &&
|
|
459
|
+
typeof input === 'object' &&
|
|
460
|
+
!Array.isArray(input) && { input: input as Record<string, unknown> }),
|
|
461
|
+
...(output !== undefined && { output }),
|
|
462
|
+
...(sessionId && { sessionId }) // Include sessionId if present
|
|
463
|
+
}
|
|
464
|
+
logger.info(`tool-call: ${toolName}`, event)
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|