apcore-js 0.19.0 → 0.20.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 (186) hide show
  1. package/README.md +110 -9
  2. package/dist/acl.d.ts +18 -0
  3. package/dist/acl.d.ts.map +1 -1
  4. package/dist/acl.js +54 -17
  5. package/dist/acl.js.map +1 -1
  6. package/dist/async-task.d.ts +70 -16
  7. package/dist/async-task.d.ts.map +1 -1
  8. package/dist/async-task.js +212 -72
  9. package/dist/async-task.js.map +1 -1
  10. package/dist/builtin-steps.d.ts +16 -5
  11. package/dist/builtin-steps.d.ts.map +1 -1
  12. package/dist/builtin-steps.js +45 -28
  13. package/dist/builtin-steps.js.map +1 -1
  14. package/dist/config.d.ts +38 -0
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +163 -33
  17. package/dist/config.js.map +1 -1
  18. package/dist/context.d.ts.map +1 -1
  19. package/dist/context.js +12 -1
  20. package/dist/context.js.map +1 -1
  21. package/dist/errors.d.ts +32 -10
  22. package/dist/errors.d.ts.map +1 -1
  23. package/dist/errors.js +55 -16
  24. package/dist/errors.js.map +1 -1
  25. package/dist/events/circuit-breaker.d.ts +45 -0
  26. package/dist/events/circuit-breaker.d.ts.map +1 -0
  27. package/dist/events/circuit-breaker.js +115 -0
  28. package/dist/events/circuit-breaker.js.map +1 -0
  29. package/dist/events/emitter.d.ts +22 -1
  30. package/dist/events/emitter.d.ts.map +1 -1
  31. package/dist/events/emitter.js +66 -2
  32. package/dist/events/emitter.js.map +1 -1
  33. package/dist/events/index.d.ts +4 -2
  34. package/dist/events/index.d.ts.map +1 -1
  35. package/dist/events/index.js +3 -2
  36. package/dist/events/index.js.map +1 -1
  37. package/dist/events/subscribers.d.ts +33 -1
  38. package/dist/events/subscribers.d.ts.map +1 -1
  39. package/dist/events/subscribers.js +124 -1
  40. package/dist/events/subscribers.js.map +1 -1
  41. package/dist/executor.d.ts +10 -2
  42. package/dist/executor.d.ts.map +1 -1
  43. package/dist/executor.js +134 -51
  44. package/dist/executor.js.map +1 -1
  45. package/dist/generated/version.d.ts +1 -1
  46. package/dist/generated/version.js +1 -1
  47. package/dist/index.d.ts +35 -25
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +23 -17
  50. package/dist/index.js.map +1 -1
  51. package/dist/middleware/base.d.ts +25 -3
  52. package/dist/middleware/base.d.ts.map +1 -1
  53. package/dist/middleware/base.js +24 -0
  54. package/dist/middleware/base.js.map +1 -1
  55. package/dist/middleware/circuit-breaker.d.ts +54 -0
  56. package/dist/middleware/circuit-breaker.d.ts.map +1 -0
  57. package/dist/middleware/circuit-breaker.js +168 -0
  58. package/dist/middleware/circuit-breaker.js.map +1 -0
  59. package/dist/middleware/context-namespace.d.ts +30 -0
  60. package/dist/middleware/context-namespace.d.ts.map +1 -0
  61. package/dist/middleware/context-namespace.js +38 -0
  62. package/dist/middleware/context-namespace.js.map +1 -0
  63. package/dist/middleware/index.d.ts +7 -1
  64. package/dist/middleware/index.d.ts.map +1 -1
  65. package/dist/middleware/index.js +4 -1
  66. package/dist/middleware/index.js.map +1 -1
  67. package/dist/middleware/manager.d.ts +11 -4
  68. package/dist/middleware/manager.d.ts.map +1 -1
  69. package/dist/middleware/manager.js +25 -9
  70. package/dist/middleware/manager.js.map +1 -1
  71. package/dist/middleware/platform-notify.d.ts +8 -4
  72. package/dist/middleware/platform-notify.d.ts.map +1 -1
  73. package/dist/middleware/platform-notify.js +11 -7
  74. package/dist/middleware/platform-notify.js.map +1 -1
  75. package/dist/middleware/tracing.d.ts +50 -0
  76. package/dist/middleware/tracing.d.ts.map +1 -0
  77. package/dist/middleware/tracing.js +89 -0
  78. package/dist/middleware/tracing.js.map +1 -0
  79. package/dist/observability/batch-span-processor.d.ts +48 -0
  80. package/dist/observability/batch-span-processor.d.ts.map +1 -0
  81. package/dist/observability/batch-span-processor.js +89 -0
  82. package/dist/observability/batch-span-processor.js.map +1 -0
  83. package/dist/observability/context-logger.d.ts +54 -1
  84. package/dist/observability/context-logger.d.ts.map +1 -1
  85. package/dist/observability/context-logger.js +270 -6
  86. package/dist/observability/context-logger.js.map +1 -1
  87. package/dist/observability/error-history.d.ts +36 -7
  88. package/dist/observability/error-history.d.ts.map +1 -1
  89. package/dist/observability/error-history.js +169 -50
  90. package/dist/observability/error-history.js.map +1 -1
  91. package/dist/observability/index.d.ts +16 -5
  92. package/dist/observability/index.d.ts.map +1 -1
  93. package/dist/observability/index.js +8 -3
  94. package/dist/observability/index.js.map +1 -1
  95. package/dist/observability/metrics.d.ts +14 -1
  96. package/dist/observability/metrics.d.ts.map +1 -1
  97. package/dist/observability/metrics.js +23 -2
  98. package/dist/observability/metrics.js.map +1 -1
  99. package/dist/observability/prometheus-exporter.d.ts +37 -0
  100. package/dist/observability/prometheus-exporter.d.ts.map +1 -0
  101. package/dist/observability/prometheus-exporter.js +135 -0
  102. package/dist/observability/prometheus-exporter.js.map +1 -0
  103. package/dist/observability/storage.d.ts +43 -0
  104. package/dist/observability/storage.d.ts.map +1 -0
  105. package/dist/observability/storage.js +58 -0
  106. package/dist/observability/storage.js.map +1 -0
  107. package/dist/observability/store.d.ts +29 -0
  108. package/dist/observability/store.d.ts.map +1 -0
  109. package/dist/observability/store.js +36 -0
  110. package/dist/observability/store.js.map +1 -0
  111. package/dist/observability/usage-exporter.d.ts +58 -0
  112. package/dist/observability/usage-exporter.d.ts.map +1 -0
  113. package/dist/observability/usage-exporter.js +86 -0
  114. package/dist/observability/usage-exporter.js.map +1 -0
  115. package/dist/observability/usage.d.ts +18 -1
  116. package/dist/observability/usage.d.ts.map +1 -1
  117. package/dist/observability/usage.js +25 -3
  118. package/dist/observability/usage.js.map +1 -1
  119. package/dist/pipeline-config.d.ts +11 -0
  120. package/dist/pipeline-config.d.ts.map +1 -1
  121. package/dist/pipeline-config.js +36 -10
  122. package/dist/pipeline-config.js.map +1 -1
  123. package/dist/pipeline.d.ts +123 -2
  124. package/dist/pipeline.d.ts.map +1 -1
  125. package/dist/pipeline.js +249 -50
  126. package/dist/pipeline.js.map +1 -1
  127. package/dist/registry/index.d.ts +2 -0
  128. package/dist/registry/index.d.ts.map +1 -1
  129. package/dist/registry/index.js +1 -0
  130. package/dist/registry/index.js.map +1 -1
  131. package/dist/registry/multi-class.d.ts +57 -0
  132. package/dist/registry/multi-class.d.ts.map +1 -0
  133. package/dist/registry/multi-class.js +120 -0
  134. package/dist/registry/multi-class.js.map +1 -0
  135. package/dist/registry/registry.d.ts +91 -3
  136. package/dist/registry/registry.d.ts.map +1 -1
  137. package/dist/registry/registry.js +181 -11
  138. package/dist/registry/registry.js.map +1 -1
  139. package/dist/schema/constants.d.ts +9 -0
  140. package/dist/schema/constants.d.ts.map +1 -0
  141. package/dist/schema/constants.js +9 -0
  142. package/dist/schema/constants.js.map +1 -0
  143. package/dist/schema/index.d.ts +1 -1
  144. package/dist/schema/index.d.ts.map +1 -1
  145. package/dist/schema/index.js +1 -1
  146. package/dist/schema/index.js.map +1 -1
  147. package/dist/schema/loader.d.ts +27 -3
  148. package/dist/schema/loader.d.ts.map +1 -1
  149. package/dist/schema/loader.js +137 -32
  150. package/dist/schema/loader.js.map +1 -1
  151. package/dist/schema/types.d.ts +4 -0
  152. package/dist/schema/types.d.ts.map +1 -1
  153. package/dist/schema/types.js.map +1 -1
  154. package/dist/schema/validator.d.ts +9 -0
  155. package/dist/schema/validator.d.ts.map +1 -1
  156. package/dist/schema/validator.js +153 -4
  157. package/dist/schema/validator.js.map +1 -1
  158. package/dist/sys-modules/audit.d.ts +50 -0
  159. package/dist/sys-modules/audit.d.ts.map +1 -0
  160. package/dist/sys-modules/audit.js +89 -0
  161. package/dist/sys-modules/audit.js.map +1 -0
  162. package/dist/sys-modules/control.d.ts +32 -4
  163. package/dist/sys-modules/control.d.ts.map +1 -1
  164. package/dist/sys-modules/control.js +196 -25
  165. package/dist/sys-modules/control.js.map +1 -1
  166. package/dist/sys-modules/index.d.ts +7 -2
  167. package/dist/sys-modules/index.d.ts.map +1 -1
  168. package/dist/sys-modules/index.js +3 -1
  169. package/dist/sys-modules/index.js.map +1 -1
  170. package/dist/sys-modules/overrides.d.ts +58 -0
  171. package/dist/sys-modules/overrides.d.ts.map +1 -0
  172. package/dist/sys-modules/overrides.js +106 -0
  173. package/dist/sys-modules/overrides.js.map +1 -0
  174. package/dist/sys-modules/registration.d.ts +17 -12
  175. package/dist/sys-modules/registration.d.ts.map +1 -1
  176. package/dist/sys-modules/registration.js +115 -23
  177. package/dist/sys-modules/registration.js.map +1 -1
  178. package/dist/sys-modules/toggle.d.ts +7 -2
  179. package/dist/sys-modules/toggle.d.ts.map +1 -1
  180. package/dist/sys-modules/toggle.js +61 -5
  181. package/dist/sys-modules/toggle.js.map +1 -1
  182. package/dist/trace-context.d.ts +47 -9
  183. package/dist/trace-context.d.ts.map +1 -1
  184. package/dist/trace-context.js +139 -16
  185. package/dist/trace-context.js.map +1 -1
  186. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -20,63 +20,73 @@ export { Context, createIdentity } from './context.js';
20
20
  export { ContextKey } from './context-key.js';
21
21
  export { TRACING_SPANS, TRACING_SAMPLED, METRICS_STARTS, LOGGING_START, REDACTED_OUTPUT, RETRY_COUNT_BASE, } from './context-keys.js';
22
22
  export type { Identity, ContextFactory } from './context.js';
23
- export { Registry, REGISTRY_EVENTS, MODULE_ID_PATTERN, MAX_MODULE_ID_LENGTH, RESERVED_WORDS } from './registry/registry.js';
23
+ export { Registry, REGISTRY_EVENTS, MODULE_ID_PATTERN, MAX_MODULE_ID_LENGTH, RESERVED_WORDS, } from './registry/registry.js';
24
24
  export type { Discoverer, ModuleValidator } from './registry/registry.js';
25
- export { Executor, redactSensitive, REDACTED_VALUE, CTX_GLOBAL_DEADLINE, CTX_TRACING_SPANS } from './executor.js';
26
- export { DEFAULT_ANNOTATIONS, createAnnotations, annotationsToJSON, annotationsFromJSON, createPreflightResult } from './module.js';
27
- export type { ModuleAnnotations, ModuleExample, ModuleDescription, ValidationResult, PreflightCheckResult, PreflightResult, Module } from './module.js';
25
+ export { Executor, redactSensitive, REDACTED_VALUE, CTX_GLOBAL_DEADLINE, CTX_TRACING_SPANS, } from './executor.js';
26
+ export { DEFAULT_ANNOTATIONS, createAnnotations, annotationsToJSON, annotationsFromJSON, createPreflightResult, } from './module.js';
27
+ export type { ModuleAnnotations, ModuleExample, ModuleDescription, ValidationResult, PreflightCheckResult, PreflightResult, Module, } from './module.js';
28
28
  export { Config, discoverConfigFile } from './config.js';
29
29
  export { ErrorFormatterRegistry } from './error-formatter.js';
30
30
  export type { ErrorFormatter } from './error-formatter.js';
31
31
  export { createApprovalRequest, createApprovalResult, AlwaysDenyHandler, AutoApproveHandler, CallbackApprovalHandler, } from './approval.js';
32
32
  export type { ApprovalRequest, ApprovalResult, ApprovalHandler } from './approval.js';
33
- export { ModuleError, ConfigNotFoundError, ConfigError, ACLRuleError, ACLDeniedError, ApprovalError, ApprovalDeniedError, ApprovalTimeoutError, ApprovalPendingError, ModuleNotFoundError, ModuleDisabledError, ModuleTimeoutError, SchemaValidationError, SchemaNotFoundError, SchemaParseError, SchemaCircularRefError, CallDepthExceededError, CircularCallError, CallFrequencyExceededError, InvalidInputError, BindingInvalidTargetError, BindingModuleNotFoundError, BindingCallableNotFoundError, BindingNotCallableError, BindingSchemaMissingError, BindingSchemaInferenceFailedError, BindingSchemaModeConflictError, BindingStrictSchemaIncompatibleError, BindingPolicyViolationError, BindingFileInvalidError, FuncMissingTypeHintError, FuncMissingReturnTypeError, CircularDependencyError, DependencyNotFoundError, DependencyVersionMismatchError, ModuleLoadError, ReloadFailedError, ModuleExecuteError, InternalError, ConfigNamespaceDuplicateError, ConfigNamespaceReservedError, ConfigEnvPrefixConflictError, ConfigEnvMapConflictError, ConfigMountError, ConfigBindError, ErrorFormatterDuplicateError, TaskLimitExceededError, VersionConstraintError, ErrorCodes, } from './errors.js';
33
+ export { ModuleError, ConfigNotFoundError, ConfigError, ACLRuleError, ACLDeniedError, ApprovalError, ApprovalDeniedError, ApprovalTimeoutError, ApprovalPendingError, ModuleNotFoundError, ModuleDisabledError, ModuleTimeoutError, SchemaValidationError, SchemaNotFoundError, SchemaParseError, SchemaCircularRefError, CallDepthExceededError, CircularCallError, CallFrequencyExceededError, InvalidInputError, BindingInvalidTargetError, BindingModuleNotFoundError, BindingCallableNotFoundError, BindingNotCallableError, BindingSchemaMissingError, BindingSchemaInferenceFailedError, BindingSchemaModeConflictError, BindingStrictSchemaIncompatibleError, BindingFileInvalidError, FuncMissingTypeHintError, FuncMissingReturnTypeError, CircularDependencyError, DependencyNotFoundError, DependencyVersionMismatchError, ModuleLoadError, ReloadFailedError, ModuleExecuteError, InternalError, ConfigNamespaceDuplicateError, ConfigNamespaceReservedError, ConfigEnvPrefixConflictError, ConfigEnvMapConflictError, ConfigMountError, ConfigBindError, ErrorFormatterDuplicateError, TaskLimitExceededError, VersionConstraintError, ModuleIdConflictError, InvalidSegmentError, IdTooLongError, CircuitBreakerOpenError, ModuleReloadConflictError, SysModuleRegistrationError, ErrorCodes, } from './errors.js';
34
34
  export type { ErrorCode, ErrorOptions } from './errors.js';
35
35
  export { ACL } from './acl.js';
36
36
  export type { ACLRule, AuditEntry, AuditLogger } from './acl.js';
37
- export { Middleware, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware, RetryHintMiddleware, RetryMiddleware, ErrorHistoryMiddleware, PlatformNotifyMiddleware } from './middleware/index.js';
38
- export type { RetryConfig } from './middleware/index.js';
37
+ export { Middleware, RetrySignal, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware, RetryHintMiddleware, RetryMiddleware, ErrorHistoryMiddleware, PlatformNotifyMiddleware, CircuitBreakerMiddleware, MiddlewareCircuitState, CTX_CIRCUIT_STATE, CTX_TRACING_SPAN_ID, validateContextKey, isAsyncHandler, } from './middleware/index.js';
38
+ export type { RetryConfig, CircuitBreakerOptions, OtelTracer, OtelSpan, TracingMiddlewareOptions, ContextKeyWriter, ContextKeyValidation, } from './middleware/index.js';
39
39
  export { module, FunctionModule } from './decorator.js';
40
40
  export { ExtensionManager } from './extensions.js';
41
41
  export type { ExtensionPoint } from './extensions.js';
42
- export { EventEmitter, createEvent, WebhookSubscriber, A2ASubscriber } from './events/index.js';
43
- export type { ApCoreEvent, EventSubscriber } from './events/index.js';
44
- export { registerSysModules, registerSubscriberType, unregisterSubscriberType, resetSubscriberRegistry, ToggleState, DEFAULT_TOGGLE_STATE, isModuleDisabled, checkModuleDisabled, classifyHealthStatus, UpdateConfigModule, ReloadModule, HealthModule, HealthSummaryModule, ManifestModule, ManifestFullModule, UsageModule, UsageSummaryModule, ToggleFeatureModule, } from './sys-modules/index.js';
45
- export type { SysModulesContext } from './sys-modules/index.js';
46
- export { AsyncTaskManager, TaskStatus } from './async-task.js';
47
- export type { TaskInfo } from './async-task.js';
42
+ export { EventEmitter, createEvent, emitWithLegacy, WebhookSubscriber, A2ASubscriber, FileSubscriber, StdoutSubscriber, FilterSubscriber, CircuitBreakerWrapper, CircuitState, } from './events/index.js';
43
+ export type { ApCoreEvent, EventSubscriber, CircuitBreakerConfig } from './events/index.js';
44
+ export { registerSysModules, registerSubscriberType, unregisterSubscriberType, resetSubscriberRegistry, createSubscriberFromConfig, ToggleState, DEFAULT_TOGGLE_STATE, isModuleDisabled, checkModuleDisabled, classifyHealthStatus, UpdateConfigModule, ReloadModule, HealthModule, HealthSummaryModule, ManifestModule, ManifestFullModule, UsageModule, UsageSummaryModule, ToggleFeatureModule, InMemoryAuditStore, FileOverridesStore, InMemoryOverridesStore, } from './sys-modules/index.js';
45
+ export type { SysModulesContext, OverridesStore } from './sys-modules/index.js';
46
+ export { AsyncTaskManager, TaskStatus, InMemoryTaskStore, RetryConfig as AsyncRetryConfig, } from './async-task.js';
47
+ export type { TaskInfo, TaskStore, ReaperHandle } from './async-task.js';
48
48
  export { BindingLoader } from './bindings.js';
49
49
  export { matchPattern, calculateSpecificity } from './utils/pattern.js';
50
50
  export { normalizeToCanonicalId } from './utils/normalize.js';
51
- export { guardCallChain, DEFAULT_MAX_CALL_DEPTH, DEFAULT_MAX_MODULE_REPEAT } from './utils/call-chain.js';
51
+ export { guardCallChain, DEFAULT_MAX_CALL_DEPTH, DEFAULT_MAX_MODULE_REPEAT, } from './utils/call-chain.js';
52
52
  export { propagateError } from './utils/error-propagation.js';
53
- export { ErrorCodeRegistry, ErrorCodeCollisionError, FRAMEWORK_ERROR_CODE_PREFIXES } from './error-code-registry.js';
53
+ export { classNameToSegment, discoverMultiClass } from './registry/multi-class.js';
54
+ export type { ClassDescriptor, MultiClassEntry } from './registry/multi-class.js';
55
+ export { ErrorCodeRegistry, ErrorCodeCollisionError, FRAMEWORK_ERROR_CODE_PREFIXES, } from './error-code-registry.js';
54
56
  export { negotiateVersion, VersionIncompatibleError } from './version.js';
55
- export { SchemaLoader, jsonSchemaToTypeBox } from './schema/loader.js';
57
+ export { SchemaLoader, jsonSchemaToTypeBox, contentHash, contentHashAsync, } from './schema/loader.js';
56
58
  export { SchemaValidator } from './schema/validator.js';
57
59
  export { SchemaExporter } from './schema/exporter.js';
58
60
  export { SchemaStrategy, ExportProfile } from './schema/types.js';
59
- export type { SchemaDefinition, ResolvedSchema, SchemaValidationErrorDetail, SchemaValidationResult } from './schema/types.js';
61
+ export type { SchemaDefinition, ResolvedSchema, SchemaValidationErrorDetail, SchemaValidationResult, } from './schema/types.js';
60
62
  export { RefResolver } from './schema/ref-resolver.js';
61
63
  export { toStrictSchema } from './schema/strict.js';
62
64
  export type { ModuleDescriptor, DiscoveredModule, DependencyInfo } from './registry/types.js';
63
65
  export { detectIdConflicts } from './registry/conflicts.js';
64
66
  export type { ConflictResult, ConflictType, ConflictSeverity } from './registry/conflicts.js';
65
- export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan } from './observability/tracing.js';
67
+ export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan, } from './observability/tracing.js';
66
68
  export type { Span, SpanExporter } from './observability/tracing.js';
67
69
  export { MetricsCollector, MetricsMiddleware } from './observability/metrics.js';
68
- export { ContextLogger, ObsLoggingMiddleware } from './observability/context-logger.js';
69
- export { ErrorHistory } from './observability/error-history.js';
70
+ export { ContextLogger, ObsLoggingMiddleware, RedactionConfig, DEFAULT_REDACTION_FIELD_PATTERNS, } from './observability/context-logger.js';
71
+ export { ErrorHistory, computeFingerprint, normalizeMessage, } from './observability/error-history.js';
70
72
  export type { ErrorEntry } from './observability/error-history.js';
71
73
  export { UsageCollector, UsageMiddleware } from './observability/usage.js';
72
- export { computeModuleErrorRate, estimateP99FromHistogram, matchesModuleId, METRIC_CALLS_TOTAL, METRIC_DURATION_SECONDS } from './observability/metrics-utils.js';
73
- export type { UsageRecord, CallerUsageSummary, HourlyBucket, ModuleUsageSummary, ModuleUsageDetail } from './observability/usage.js';
74
+ export { NoopUsageExporter, PeriodicUsageExporter, } from './observability/usage-exporter.js';
75
+ export type { UsageExporter } from './observability/usage-exporter.js';
76
+ export { computeModuleErrorRate, estimateP99FromHistogram, matchesModuleId, METRIC_CALLS_TOTAL, METRIC_DURATION_SECONDS, } from './observability/metrics-utils.js';
77
+ export type { UsageRecord, CallerUsageSummary, HourlyBucket, ModuleUsageSummary, ModuleUsageDetail, UsageCollectorOptions, } from './observability/usage.js';
78
+ export { InMemoryStorageBackend } from './observability/storage.js';
79
+ export type { StorageBackend } from './observability/storage.js';
80
+ export { BatchSpanProcessor, SimpleSpanProcessor } from './observability/batch-span-processor.js';
81
+ export type { SpanProcessor, BatchSpanProcessorOptions, } from './observability/batch-span-processor.js';
82
+ export { PrometheusExporter } from './observability/prometheus-exporter.js';
83
+ export type { PrometheusExporterStartOptions } from './observability/prometheus-exporter.js';
74
84
  export { TraceContext } from './trace-context.js';
75
85
  export type { TraceParent } from './trace-context.js';
76
- export { ExecutionStrategy, PipelineEngine, PipelineAbortError, StepNotFoundError, StepNotRemovableError, StepNotReplaceableError, StepNameDuplicateError, StrategyNotFoundError } from './pipeline.js';
77
- export type { Step, StepResult, PipelineContext, StepTrace, PipelineTrace, StrategyInfo } from './pipeline.js';
86
+ export { ExecutionStrategy, PipelineEngine, PipelineAbortError, StepNotFoundError, StepNotRemovableError, StepNotReplaceableError, StepNameDuplicateError, StrategyNotFoundError, PipelineStepError, PipelineStepNotFoundError, PipelineDependencyError, } from './pipeline.js';
87
+ export type { Step, StepResult, PipelineContext, PipelineState, StepTrace, PipelineTrace, StrategyInfo, StepMiddleware, } from './pipeline.js';
78
88
  export { BuiltinContextCreation, BuiltinCallChainGuard, BuiltinModuleLookup, BuiltinACLCheck, BuiltinApprovalGate, BuiltinInputValidation, BuiltinMiddlewareBefore, BuiltinExecute, BuiltinOutputValidation, BuiltinMiddlewareAfter, BuiltinReturnResult, buildStandardStrategy, buildInternalStrategy, buildTestingStrategy, buildPerformanceStrategy, buildMinimalStrategy, } from './builtin-steps.js';
79
89
  export type { StandardStrategyDeps } from './builtin-steps.js';
80
- export { registerStepType, unregisterStepType, registeredStepTypes, buildStrategyFromConfig } from './pipeline-config.js';
90
+ export { registerStepType, unregisterStepType, registeredStepTypes, buildStrategyFromConfig, ConfigurationError, } from './pipeline-config.js';
81
91
  export { VERSION } from './generated/version.js';
82
92
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,10 +20,10 @@ export { CancelToken, ExecutionCancelledError } from './cancel.js';
20
20
  export { Context, createIdentity } from './context.js';
21
21
  export { ContextKey } from './context-key.js';
22
22
  export { TRACING_SPANS, TRACING_SAMPLED, METRICS_STARTS, LOGGING_START, REDACTED_OUTPUT, RETRY_COUNT_BASE, } from './context-keys.js';
23
- export { Registry, REGISTRY_EVENTS, MODULE_ID_PATTERN, MAX_MODULE_ID_LENGTH, RESERVED_WORDS } from './registry/registry.js';
24
- export { Executor, redactSensitive, REDACTED_VALUE, CTX_GLOBAL_DEADLINE, CTX_TRACING_SPANS } from './executor.js';
23
+ export { Registry, REGISTRY_EVENTS, MODULE_ID_PATTERN, MAX_MODULE_ID_LENGTH, RESERVED_WORDS, } from './registry/registry.js';
24
+ export { Executor, redactSensitive, REDACTED_VALUE, CTX_GLOBAL_DEADLINE, CTX_TRACING_SPANS, } from './executor.js';
25
25
  // Module types
26
- export { DEFAULT_ANNOTATIONS, createAnnotations, annotationsToJSON, annotationsFromJSON, createPreflightResult } from './module.js';
26
+ export { DEFAULT_ANNOTATIONS, createAnnotations, annotationsToJSON, annotationsFromJSON, createPreflightResult, } from './module.js';
27
27
  // Config
28
28
  export { Config, discoverConfigFile } from './config.js';
29
29
  // Error Formatter
@@ -31,34 +31,36 @@ export { ErrorFormatterRegistry } from './error-formatter.js';
31
31
  // Approval
32
32
  export { createApprovalRequest, createApprovalResult, AlwaysDenyHandler, AutoApproveHandler, CallbackApprovalHandler, } from './approval.js';
33
33
  // Errors
34
- export { ModuleError, ConfigNotFoundError, ConfigError, ACLRuleError, ACLDeniedError, ApprovalError, ApprovalDeniedError, ApprovalTimeoutError, ApprovalPendingError, ModuleNotFoundError, ModuleDisabledError, ModuleTimeoutError, SchemaValidationError, SchemaNotFoundError, SchemaParseError, SchemaCircularRefError, CallDepthExceededError, CircularCallError, CallFrequencyExceededError, InvalidInputError, BindingInvalidTargetError, BindingModuleNotFoundError, BindingCallableNotFoundError, BindingNotCallableError, BindingSchemaMissingError, BindingSchemaInferenceFailedError, BindingSchemaModeConflictError, BindingStrictSchemaIncompatibleError, BindingPolicyViolationError, BindingFileInvalidError, FuncMissingTypeHintError, FuncMissingReturnTypeError, CircularDependencyError, DependencyNotFoundError, DependencyVersionMismatchError, ModuleLoadError, ReloadFailedError, ModuleExecuteError, InternalError, ConfigNamespaceDuplicateError, ConfigNamespaceReservedError, ConfigEnvPrefixConflictError, ConfigEnvMapConflictError, ConfigMountError, ConfigBindError, ErrorFormatterDuplicateError, TaskLimitExceededError, VersionConstraintError, ErrorCodes, } from './errors.js';
34
+ export { ModuleError, ConfigNotFoundError, ConfigError, ACLRuleError, ACLDeniedError, ApprovalError, ApprovalDeniedError, ApprovalTimeoutError, ApprovalPendingError, ModuleNotFoundError, ModuleDisabledError, ModuleTimeoutError, SchemaValidationError, SchemaNotFoundError, SchemaParseError, SchemaCircularRefError, CallDepthExceededError, CircularCallError, CallFrequencyExceededError, InvalidInputError, BindingInvalidTargetError, BindingModuleNotFoundError, BindingCallableNotFoundError, BindingNotCallableError, BindingSchemaMissingError, BindingSchemaInferenceFailedError, BindingSchemaModeConflictError, BindingStrictSchemaIncompatibleError, BindingFileInvalidError, FuncMissingTypeHintError, FuncMissingReturnTypeError, CircularDependencyError, DependencyNotFoundError, DependencyVersionMismatchError, ModuleLoadError, ReloadFailedError, ModuleExecuteError, InternalError, ConfigNamespaceDuplicateError, ConfigNamespaceReservedError, ConfigEnvPrefixConflictError, ConfigEnvMapConflictError, ConfigMountError, ConfigBindError, ErrorFormatterDuplicateError, TaskLimitExceededError, VersionConstraintError, ModuleIdConflictError, InvalidSegmentError, IdTooLongError, CircuitBreakerOpenError, ModuleReloadConflictError, SysModuleRegistrationError, ErrorCodes, } from './errors.js';
35
35
  // ACL
36
36
  export { ACL } from './acl.js';
37
37
  // Middleware
38
- export { Middleware, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware, RetryHintMiddleware, RetryMiddleware, ErrorHistoryMiddleware, PlatformNotifyMiddleware } from './middleware/index.js';
38
+ export { Middleware, RetrySignal, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware, RetryHintMiddleware, RetryMiddleware, ErrorHistoryMiddleware, PlatformNotifyMiddleware, CircuitBreakerMiddleware, MiddlewareCircuitState, CTX_CIRCUIT_STATE, CTX_TRACING_SPAN_ID, validateContextKey, isAsyncHandler, } from './middleware/index.js';
39
39
  // Decorator
40
40
  export { module, FunctionModule } from './decorator.js';
41
41
  // Extensions
42
42
  export { ExtensionManager } from './extensions.js';
43
43
  // Events
44
- export { EventEmitter, createEvent, WebhookSubscriber, A2ASubscriber } from './events/index.js';
44
+ export { EventEmitter, createEvent, emitWithLegacy, WebhookSubscriber, A2ASubscriber, FileSubscriber, StdoutSubscriber, FilterSubscriber, CircuitBreakerWrapper, CircuitState, } from './events/index.js';
45
45
  // System Modules
46
- export { registerSysModules, registerSubscriberType, unregisterSubscriberType, resetSubscriberRegistry, ToggleState, DEFAULT_TOGGLE_STATE, isModuleDisabled, checkModuleDisabled, classifyHealthStatus, UpdateConfigModule, ReloadModule, HealthModule, HealthSummaryModule, ManifestModule, ManifestFullModule, UsageModule, UsageSummaryModule, ToggleFeatureModule, } from './sys-modules/index.js';
46
+ export { registerSysModules, registerSubscriberType, unregisterSubscriberType, resetSubscriberRegistry, createSubscriberFromConfig, ToggleState, DEFAULT_TOGGLE_STATE, isModuleDisabled, checkModuleDisabled, classifyHealthStatus, UpdateConfigModule, ReloadModule, HealthModule, HealthSummaryModule, ManifestModule, ManifestFullModule, UsageModule, UsageSummaryModule, ToggleFeatureModule, InMemoryAuditStore, FileOverridesStore, InMemoryOverridesStore, } from './sys-modules/index.js';
47
47
  // Async tasks
48
- export { AsyncTaskManager, TaskStatus } from './async-task.js';
48
+ export { AsyncTaskManager, TaskStatus, InMemoryTaskStore, RetryConfig as AsyncRetryConfig, } from './async-task.js';
49
49
  // Bindings
50
50
  export { BindingLoader } from './bindings.js';
51
51
  // Utils
52
52
  export { matchPattern, calculateSpecificity } from './utils/pattern.js';
53
53
  export { normalizeToCanonicalId } from './utils/normalize.js';
54
- export { guardCallChain, DEFAULT_MAX_CALL_DEPTH, DEFAULT_MAX_MODULE_REPEAT } from './utils/call-chain.js';
54
+ export { guardCallChain, DEFAULT_MAX_CALL_DEPTH, DEFAULT_MAX_MODULE_REPEAT, } from './utils/call-chain.js';
55
55
  export { propagateError } from './utils/error-propagation.js';
56
+ // Multi-class discovery
57
+ export { classNameToSegment, discoverMultiClass } from './registry/multi-class.js';
56
58
  // Error Code Registry
57
- export { ErrorCodeRegistry, ErrorCodeCollisionError, FRAMEWORK_ERROR_CODE_PREFIXES } from './error-code-registry.js';
59
+ export { ErrorCodeRegistry, ErrorCodeCollisionError, FRAMEWORK_ERROR_CODE_PREFIXES, } from './error-code-registry.js';
58
60
  // Version
59
61
  export { negotiateVersion, VersionIncompatibleError } from './version.js';
60
62
  // Schema
61
- export { SchemaLoader, jsonSchemaToTypeBox } from './schema/loader.js';
63
+ export { SchemaLoader, jsonSchemaToTypeBox, contentHash, contentHashAsync, } from './schema/loader.js';
62
64
  export { SchemaValidator } from './schema/validator.js';
63
65
  export { SchemaExporter } from './schema/exporter.js';
64
66
  export { SchemaStrategy, ExportProfile } from './schema/types.js';
@@ -67,19 +69,23 @@ export { toStrictSchema } from './schema/strict.js';
67
69
  // Registry conflicts
68
70
  export { detectIdConflicts } from './registry/conflicts.js';
69
71
  // Observability
70
- export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan } from './observability/tracing.js';
72
+ export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan, } from './observability/tracing.js';
71
73
  export { MetricsCollector, MetricsMiddleware } from './observability/metrics.js';
72
- export { ContextLogger, ObsLoggingMiddleware } from './observability/context-logger.js';
73
- export { ErrorHistory } from './observability/error-history.js';
74
+ export { ContextLogger, ObsLoggingMiddleware, RedactionConfig, DEFAULT_REDACTION_FIELD_PATTERNS, } from './observability/context-logger.js';
75
+ export { ErrorHistory, computeFingerprint, normalizeMessage, } from './observability/error-history.js';
74
76
  export { UsageCollector, UsageMiddleware } from './observability/usage.js';
75
- export { computeModuleErrorRate, estimateP99FromHistogram, matchesModuleId, METRIC_CALLS_TOTAL, METRIC_DURATION_SECONDS } from './observability/metrics-utils.js';
77
+ export { NoopUsageExporter, PeriodicUsageExporter, } from './observability/usage-exporter.js';
78
+ export { computeModuleErrorRate, estimateP99FromHistogram, matchesModuleId, METRIC_CALLS_TOTAL, METRIC_DURATION_SECONDS, } from './observability/metrics-utils.js';
79
+ export { InMemoryStorageBackend } from './observability/storage.js';
80
+ export { BatchSpanProcessor, SimpleSpanProcessor } from './observability/batch-span-processor.js';
81
+ export { PrometheusExporter } from './observability/prometheus-exporter.js';
76
82
  // Trace Context
77
83
  export { TraceContext } from './trace-context.js';
78
84
  // Pipeline
79
- export { ExecutionStrategy, PipelineEngine, PipelineAbortError, StepNotFoundError, StepNotRemovableError, StepNotReplaceableError, StepNameDuplicateError, StrategyNotFoundError } from './pipeline.js';
85
+ export { ExecutionStrategy, PipelineEngine, PipelineAbortError, StepNotFoundError, StepNotRemovableError, StepNotReplaceableError, StepNameDuplicateError, StrategyNotFoundError, PipelineStepError, PipelineStepNotFoundError, PipelineDependencyError, } from './pipeline.js';
80
86
  // Built-in Steps
81
87
  export { BuiltinContextCreation, BuiltinCallChainGuard, BuiltinModuleLookup, BuiltinACLCheck, BuiltinApprovalGate, BuiltinInputValidation, BuiltinMiddlewareBefore, BuiltinExecute, BuiltinOutputValidation, BuiltinMiddlewareAfter, BuiltinReturnResult, buildStandardStrategy, buildInternalStrategy, buildTestingStrategy, buildPerformanceStrategy, buildMinimalStrategy, } from './builtin-steps.js';
82
88
  // Pipeline Configuration
83
- export { registerStepType, unregisterStepType, registeredStepTypes, buildStrategyFromConfig } from './pipeline-config.js';
89
+ export { registerStepType, unregisterStepType, registeredStepTypes, buildStrategyFromConfig, ConfigurationError, } from './pipeline-config.js';
84
90
  export { VERSION } from './generated/version.js';
85
91
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,21 @@
2
2
  * Middleware base class for apcore.
3
3
  */
4
4
  import type { Context } from '../context.js';
5
+ /**
6
+ * Return value from `Middleware.onError` requesting a retry.
7
+ *
8
+ * Distinct from returning a plain object — a plain object is interpreted by
9
+ * `MiddlewareManager` as the *final recovery output* of the call. A
10
+ * `RetrySignal` instead asks the executor to re-run the module with the
11
+ * given inputs; no recovery output is produced.
12
+ *
13
+ * Cross-language parity with apcore-python `apcore.middleware.RetrySignal`
14
+ * and apcore-rust `apcore::middleware::RetrySignal` (sync finding A-D-017).
15
+ */
16
+ export declare class RetrySignal {
17
+ readonly inputs: Record<string, unknown>;
18
+ constructor(inputs: Record<string, unknown>);
19
+ }
5
20
  export declare class Middleware {
6
21
  /**
7
22
  * Execution priority (0-1000). Higher priority executes first.
@@ -9,8 +24,15 @@ export declare class Middleware {
9
24
  */
10
25
  readonly priority: number;
11
26
  constructor(priority?: number);
12
- before(_moduleId: string, _inputs: Record<string, unknown>, _context: Context): Record<string, unknown> | null;
13
- after(_moduleId: string, _inputs: Record<string, unknown>, _output: Record<string, unknown>, _context: Context): Record<string, unknown> | null;
14
- onError(_moduleId: string, _inputs: Record<string, unknown>, _error: Error, _context: Context): Record<string, unknown> | null;
27
+ /**
28
+ * Hooks may return either a synchronous value or a Promise. The
29
+ * MiddlewareManager always awaits the return value (Issue #42), so async
30
+ * middleware (`async before()`, higher-order Promise-returning wrappers,
31
+ * thenables) work transparently — no leaked Promises into currentInputs /
32
+ * currentOutput / recovery values.
33
+ */
34
+ before(_moduleId: string, _inputs: Record<string, unknown>, _context: Context): Record<string, unknown> | null | Promise<Record<string, unknown> | null | undefined> | undefined;
35
+ after(_moduleId: string, _inputs: Record<string, unknown>, _output: Record<string, unknown>, _context: Context): Record<string, unknown> | null | Promise<Record<string, unknown> | null | undefined> | undefined;
36
+ onError(_moduleId: string, _inputs: Record<string, unknown>, _error: Error, _context: Context): Record<string, unknown> | RetrySignal | null | Promise<Record<string, unknown> | RetrySignal | null | undefined> | undefined;
15
37
  }
16
38
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/middleware/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,qBAAa,UAAU;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,GAAE,MAAY;IASlC,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjC,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjC,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,KAAK,EACb,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/middleware/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG5C;AAED,qBAAa,UAAU;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,GAAE,MAAY;IAOlC;;;;;;OAMG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,OAAO,GAEf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,IAAI,GACJ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GACnD,SAAS;IAIb,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,OAAO,GAEf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,IAAI,GACJ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GACnD,SAAS;IAIb,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,KAAK,EACb,QAAQ,EAAE,OAAO,GAEf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,WAAW,GACX,IAAI,GACJ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,GACjE,SAAS;CAGd"}
@@ -1,6 +1,23 @@
1
1
  /**
2
2
  * Middleware base class for apcore.
3
3
  */
4
+ /**
5
+ * Return value from `Middleware.onError` requesting a retry.
6
+ *
7
+ * Distinct from returning a plain object — a plain object is interpreted by
8
+ * `MiddlewareManager` as the *final recovery output* of the call. A
9
+ * `RetrySignal` instead asks the executor to re-run the module with the
10
+ * given inputs; no recovery output is produced.
11
+ *
12
+ * Cross-language parity with apcore-python `apcore.middleware.RetrySignal`
13
+ * and apcore-rust `apcore::middleware::RetrySignal` (sync finding A-D-017).
14
+ */
15
+ export class RetrySignal {
16
+ inputs;
17
+ constructor(inputs) {
18
+ this.inputs = inputs;
19
+ }
20
+ }
4
21
  export class Middleware {
5
22
  /**
6
23
  * Execution priority (0-1000). Higher priority executes first.
@@ -13,6 +30,13 @@ export class Middleware {
13
30
  }
14
31
  this.priority = priority;
15
32
  }
33
+ /**
34
+ * Hooks may return either a synchronous value or a Promise. The
35
+ * MiddlewareManager always awaits the return value (Issue #42), so async
36
+ * middleware (`async before()`, higher-order Promise-returning wrappers,
37
+ * thenables) work transparently — no leaked Promises into currentInputs /
38
+ * currentOutput / recovery values.
39
+ */
16
40
  before(_moduleId, _inputs, _context) {
17
41
  return null;
18
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/middleware/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,UAAU;IACrB;;;OAGG;IACM,QAAQ,CAAS;IAE1B,YAAY,WAAmB,GAAG;QAChC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAClB,4CAA4C,QAAQ,EAAE,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CACJ,SAAiB,EACjB,OAAgC,EAChC,QAAiB;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CACH,SAAiB,EACjB,OAAgC,EAChC,OAAgC,EAChC,QAAiB;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,SAAiB,EACjB,OAAgC,EAChC,MAAa,EACb,QAAiB;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/middleware/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;;GAUG;AACH,MAAM,OAAO,WAAW;IACb,MAAM,CAA0B;IAEzC,YAAY,MAA+B;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IACrB;;;OAGG;IACM,QAAQ,CAAS;IAE1B,YAAY,WAAmB,GAAG;QAChC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CACJ,SAAiB,EACjB,OAAgC,EAChC,QAAiB;QAMjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CACH,SAAiB,EACjB,OAAgC,EAChC,OAAgC,EAChC,QAAiB;QAMjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,SAAiB,EACjB,OAAgC,EAChC,MAAa,EACb,QAAiB;QAOjB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * CircuitBreakerMiddleware — per-(module_id, caller_id) rolling-window circuit breaker (Issue #42).
3
+ *
4
+ * State machine:
5
+ * CLOSED → (error_rate >= open_threshold, window full) → OPEN
6
+ * OPEN → (recovery_window_ms elapsed) → HALF_OPEN
7
+ * HALF_OPEN → (probe success) → CLOSED (emits apcore.circuit.closed)
8
+ * HALF_OPEN → (probe failure) → OPEN (emits apcore.circuit.opened)
9
+ */
10
+ import type { Context } from '../context.js';
11
+ import type { ApCoreEvent } from '../events/emitter.js';
12
+ import { Middleware } from './base.js';
13
+ export declare const CTX_CIRCUIT_STATE = "_apcore.mw.circuit.state";
14
+ export declare enum CircuitState {
15
+ CLOSED = "CLOSED",
16
+ OPEN = "OPEN",
17
+ HALF_OPEN = "HALF_OPEN"
18
+ }
19
+ export interface CircuitBreakerOptions {
20
+ /** Error rate in [0,1] at which the circuit opens. Default: 0.5 */
21
+ openThreshold?: number;
22
+ /** Milliseconds before OPEN transitions to HALF_OPEN. Default: 30000 */
23
+ recoveryWindowMs?: number;
24
+ /** Number of recent calls tracked in the rolling window. Default: 10 */
25
+ windowSize?: number;
26
+ /** Optional EventEmitter to receive circuit state-change events. */
27
+ emitter?: {
28
+ emit(event: ApCoreEvent): void;
29
+ };
30
+ /** Middleware priority (0–1000). Default: 100 */
31
+ priority?: number;
32
+ }
33
+ export declare class CircuitBreakerMiddleware extends Middleware {
34
+ private readonly _openThreshold;
35
+ private readonly _recoveryWindowMs;
36
+ private readonly _windowSize;
37
+ private readonly _emitter;
38
+ private readonly _circuits;
39
+ constructor(options?: CircuitBreakerOptions);
40
+ private _key;
41
+ private _getRecord;
42
+ private _maybeHalfOpen;
43
+ private _openCircuit;
44
+ private _closeCircuit;
45
+ private _emit;
46
+ before(moduleId: string, _inputs: Record<string, unknown>, context: Context): Record<string, unknown> | null;
47
+ after(moduleId: string, _inputs: Record<string, unknown>, _output: Record<string, unknown>, context: Context): Record<string, unknown> | null;
48
+ onError(moduleId: string, _inputs: Record<string, unknown>, error: Error, context: Context): Record<string, unknown> | null;
49
+ /** Return the current circuit state for a given (moduleId, callerId) pair. */
50
+ getState(moduleId: string, callerId?: string | null): CircuitState;
51
+ /** Manually reset the circuit to CLOSED (e.g., for operator override or tests). */
52
+ reset(moduleId: string, callerId?: string | null): void;
53
+ }
54
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/middleware/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAE5D,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAwCD,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7C,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,wBAAyB,SAAQ,UAAU;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;IACrE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;gBAElD,OAAO,GAAE,qBAA0B;IAQ/C,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,KAAK;IAcJ,MAAM,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqBxB,KAAK,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAcxB,OAAO,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0BjC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,YAAY;IAMxE,mFAAmF;IACnF,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;CAG9D"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * CircuitBreakerMiddleware — per-(module_id, caller_id) rolling-window circuit breaker (Issue #42).
3
+ *
4
+ * State machine:
5
+ * CLOSED → (error_rate >= open_threshold, window full) → OPEN
6
+ * OPEN → (recovery_window_ms elapsed) → HALF_OPEN
7
+ * HALF_OPEN → (probe success) → CLOSED (emits apcore.circuit.closed)
8
+ * HALF_OPEN → (probe failure) → OPEN (emits apcore.circuit.opened)
9
+ */
10
+ import { CircuitBreakerOpenError } from '../errors.js';
11
+ import { createEvent } from '../events/emitter.js';
12
+ import { Middleware } from './base.js';
13
+ export const CTX_CIRCUIT_STATE = '_apcore.mw.circuit.state';
14
+ export var CircuitState;
15
+ (function (CircuitState) {
16
+ CircuitState["CLOSED"] = "CLOSED";
17
+ CircuitState["OPEN"] = "OPEN";
18
+ CircuitState["HALF_OPEN"] = "HALF_OPEN";
19
+ })(CircuitState || (CircuitState = {}));
20
+ class RollingWindow {
21
+ _cap;
22
+ _buf;
23
+ _head = 0;
24
+ _len = 0;
25
+ _errors = 0;
26
+ constructor(_cap) {
27
+ this._cap = _cap;
28
+ this._buf = new Array(_cap).fill(false);
29
+ }
30
+ record(isError) {
31
+ if (this._len < this._cap) {
32
+ this._buf[this._len++] = isError;
33
+ }
34
+ else {
35
+ const evicted = this._buf[this._head];
36
+ this._buf[this._head] = isError;
37
+ this._head = (this._head + 1) % this._cap;
38
+ if (evicted)
39
+ this._errors--;
40
+ }
41
+ if (isError)
42
+ this._errors++;
43
+ }
44
+ get errorRate() {
45
+ return this._len === 0 ? 0 : this._errors / this._len;
46
+ }
47
+ get length() {
48
+ return this._len;
49
+ }
50
+ }
51
+ export class CircuitBreakerMiddleware extends Middleware {
52
+ _openThreshold;
53
+ _recoveryWindowMs;
54
+ _windowSize;
55
+ _emitter;
56
+ _circuits = new Map();
57
+ constructor(options = {}) {
58
+ super(options.priority ?? 100);
59
+ this._openThreshold = options.openThreshold ?? 0.5;
60
+ this._recoveryWindowMs = options.recoveryWindowMs ?? 30000;
61
+ this._windowSize = options.windowSize ?? 10;
62
+ this._emitter = options.emitter ?? null;
63
+ }
64
+ _key(moduleId, callerId) {
65
+ return `${moduleId}:${callerId ?? ''}`;
66
+ }
67
+ _getRecord(moduleId, callerId) {
68
+ const key = this._key(moduleId, callerId);
69
+ if (!this._circuits.has(key)) {
70
+ this._circuits.set(key, {
71
+ state: CircuitState.CLOSED,
72
+ window: new RollingWindow(this._windowSize),
73
+ openedAt: null,
74
+ probeInFlight: false,
75
+ });
76
+ }
77
+ return this._circuits.get(key);
78
+ }
79
+ _maybeHalfOpen(record) {
80
+ if (record.state === CircuitState.OPEN && record.openedAt !== null) {
81
+ if (Date.now() - record.openedAt >= this._recoveryWindowMs) {
82
+ record.state = CircuitState.HALF_OPEN;
83
+ record.probeInFlight = false;
84
+ }
85
+ }
86
+ }
87
+ _openCircuit(moduleId, callerId, record) {
88
+ record.state = CircuitState.OPEN;
89
+ record.openedAt = Date.now();
90
+ record.probeInFlight = false;
91
+ console.warn(`[apcore:middleware] Circuit OPEN for module '${moduleId}' (caller: ${callerId ?? 'unknown'})`);
92
+ this._emit('apcore.circuit.opened', moduleId, callerId, 'warn');
93
+ }
94
+ _closeCircuit(moduleId, callerId, record) {
95
+ record.state = CircuitState.CLOSED;
96
+ record.openedAt = null;
97
+ record.probeInFlight = false;
98
+ console.warn(`[apcore:middleware] Circuit CLOSED for module '${moduleId}' (caller: ${callerId ?? 'unknown'})`);
99
+ this._emit('apcore.circuit.closed', moduleId, callerId, 'info');
100
+ }
101
+ _emit(eventType, moduleId, callerId, severity) {
102
+ if (!this._emitter)
103
+ return;
104
+ try {
105
+ this._emitter.emit(createEvent(eventType, moduleId, severity, { callerId: callerId ?? null }));
106
+ }
107
+ catch (err) {
108
+ console.warn(`[apcore:middleware] Circuit event emission failed for '${eventType}':`, err);
109
+ }
110
+ }
111
+ before(moduleId, _inputs, context) {
112
+ const callerId = context.callerId;
113
+ const record = this._getRecord(moduleId, callerId);
114
+ this._maybeHalfOpen(record);
115
+ context.data[CTX_CIRCUIT_STATE] = record.state;
116
+ if (record.state === CircuitState.OPEN) {
117
+ throw new CircuitBreakerOpenError(moduleId, callerId);
118
+ }
119
+ if (record.state === CircuitState.HALF_OPEN) {
120
+ if (record.probeInFlight) {
121
+ throw new CircuitBreakerOpenError(moduleId, callerId);
122
+ }
123
+ record.probeInFlight = true;
124
+ }
125
+ return null;
126
+ }
127
+ after(moduleId, _inputs, _output, context) {
128
+ const callerId = context.callerId;
129
+ const record = this._getRecord(moduleId, callerId);
130
+ record.window.record(false);
131
+ if (record.state === CircuitState.HALF_OPEN) {
132
+ this._closeCircuit(moduleId, callerId, record);
133
+ context.data[CTX_CIRCUIT_STATE] = CircuitState.CLOSED;
134
+ }
135
+ return null;
136
+ }
137
+ onError(moduleId, _inputs, error, context) {
138
+ if (error instanceof CircuitBreakerOpenError) {
139
+ return null;
140
+ }
141
+ const callerId = context.callerId;
142
+ const record = this._getRecord(moduleId, callerId);
143
+ record.window.record(true);
144
+ if (record.state === CircuitState.HALF_OPEN) {
145
+ this._openCircuit(moduleId, callerId, record);
146
+ context.data[CTX_CIRCUIT_STATE] = CircuitState.OPEN;
147
+ }
148
+ else if (record.state === CircuitState.CLOSED) {
149
+ if (record.window.length >= this._windowSize &&
150
+ record.window.errorRate >= this._openThreshold) {
151
+ this._openCircuit(moduleId, callerId, record);
152
+ context.data[CTX_CIRCUIT_STATE] = CircuitState.OPEN;
153
+ }
154
+ }
155
+ return null;
156
+ }
157
+ /** Return the current circuit state for a given (moduleId, callerId) pair. */
158
+ getState(moduleId, callerId = null) {
159
+ const record = this._getRecord(moduleId, callerId);
160
+ this._maybeHalfOpen(record);
161
+ return record.state;
162
+ }
163
+ /** Manually reset the circuit to CLOSED (e.g., for operator override or tests). */
164
+ reset(moduleId, callerId = null) {
165
+ this._circuits.delete(this._key(moduleId, callerId));
166
+ }
167
+ }
168
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/middleware/circuit-breaker.ts"],"names":[],"mappings":"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"}