apcore-js 0.10.0 → 0.12.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 (119) hide show
  1. package/README.md +58 -2
  2. package/dist/cancel.d.ts +2 -1
  3. package/dist/cancel.d.ts.map +1 -1
  4. package/dist/cancel.js +3 -2
  5. package/dist/cancel.js.map +1 -1
  6. package/dist/client.d.ts +37 -2
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +85 -4
  9. package/dist/client.js.map +1 -1
  10. package/dist/errors.d.ts +12 -1
  11. package/dist/errors.d.ts.map +1 -1
  12. package/dist/errors.js +25 -8
  13. package/dist/errors.js.map +1 -1
  14. package/dist/events/emitter.d.ts +30 -0
  15. package/dist/events/emitter.d.ts.map +1 -0
  16. package/dist/events/emitter.js +67 -0
  17. package/dist/events/emitter.js.map +1 -0
  18. package/dist/events/index.d.ts +4 -0
  19. package/dist/events/index.d.ts.map +1 -0
  20. package/dist/events/index.js +3 -0
  21. package/dist/events/index.js.map +1 -0
  22. package/dist/events/subscribers.d.ts +32 -0
  23. package/dist/events/subscribers.d.ts.map +1 -0
  24. package/dist/events/subscribers.js +132 -0
  25. package/dist/events/subscribers.js.map +1 -0
  26. package/dist/executor.d.ts +5 -5
  27. package/dist/executor.d.ts.map +1 -1
  28. package/dist/executor.js +29 -7
  29. package/dist/executor.js.map +1 -1
  30. package/dist/index.d.ts +13 -4
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +10 -3
  33. package/dist/index.js.map +1 -1
  34. package/dist/middleware/error-history.d.ts +16 -0
  35. package/dist/middleware/error-history.d.ts.map +1 -0
  36. package/dist/middleware/error-history.js +23 -0
  37. package/dist/middleware/error-history.js.map +1 -0
  38. package/dist/middleware/index.d.ts +2 -0
  39. package/dist/middleware/index.d.ts.map +1 -1
  40. package/dist/middleware/index.js +2 -0
  41. package/dist/middleware/index.js.map +1 -1
  42. package/dist/middleware/logging.js +2 -2
  43. package/dist/middleware/logging.js.map +1 -1
  44. package/dist/middleware/platform-notify.d.ts +30 -0
  45. package/dist/middleware/platform-notify.d.ts.map +1 -0
  46. package/dist/middleware/platform-notify.js +84 -0
  47. package/dist/middleware/platform-notify.js.map +1 -0
  48. package/dist/middleware/retry.d.ts +2 -2
  49. package/dist/middleware/retry.d.ts.map +1 -1
  50. package/dist/middleware/retry.js +3 -3
  51. package/dist/middleware/retry.js.map +1 -1
  52. package/dist/module.d.ts +12 -0
  53. package/dist/module.d.ts.map +1 -1
  54. package/dist/module.js.map +1 -1
  55. package/dist/observability/context-logger.js +4 -4
  56. package/dist/observability/context-logger.js.map +1 -1
  57. package/dist/observability/error-history.d.ts +33 -0
  58. package/dist/observability/error-history.d.ts.map +1 -0
  59. package/dist/observability/error-history.js +96 -0
  60. package/dist/observability/error-history.js.map +1 -0
  61. package/dist/observability/index.d.ts +5 -1
  62. package/dist/observability/index.d.ts.map +1 -1
  63. package/dist/observability/index.js +3 -1
  64. package/dist/observability/index.js.map +1 -1
  65. package/dist/observability/metrics-utils.d.ts +30 -0
  66. package/dist/observability/metrics-utils.d.ts.map +1 -0
  67. package/dist/observability/metrics-utils.js +71 -0
  68. package/dist/observability/metrics-utils.js.map +1 -0
  69. package/dist/observability/metrics.js +4 -4
  70. package/dist/observability/metrics.js.map +1 -1
  71. package/dist/observability/tracing.js +10 -10
  72. package/dist/observability/tracing.js.map +1 -1
  73. package/dist/observability/usage.d.ts +66 -0
  74. package/dist/observability/usage.d.ts.map +1 -0
  75. package/dist/observability/usage.js +216 -0
  76. package/dist/observability/usage.js.map +1 -0
  77. package/dist/registry/registry.d.ts +5 -0
  78. package/dist/registry/registry.d.ts.map +1 -1
  79. package/dist/registry/registry.js +32 -0
  80. package/dist/registry/registry.js.map +1 -1
  81. package/dist/registry/schema-export.d.ts.map +1 -1
  82. package/dist/registry/schema-export.js.map +1 -1
  83. package/dist/schema/exporter.js +1 -1
  84. package/dist/schema/exporter.js.map +1 -1
  85. package/dist/schema/strict.d.ts +1 -1
  86. package/dist/schema/strict.d.ts.map +1 -1
  87. package/dist/schema/strict.js +4 -4
  88. package/dist/schema/strict.js.map +1 -1
  89. package/dist/sys-modules/control.d.ts +39 -0
  90. package/dist/sys-modules/control.d.ts.map +1 -0
  91. package/dist/sys-modules/control.js +105 -0
  92. package/dist/sys-modules/control.js.map +1 -0
  93. package/dist/sys-modules/health.d.ts +45 -0
  94. package/dist/sys-modules/health.d.ts.map +1 -0
  95. package/dist/sys-modules/health.js +115 -0
  96. package/dist/sys-modules/health.js.map +1 -0
  97. package/dist/sys-modules/index.d.ts +8 -0
  98. package/dist/sys-modules/index.d.ts.map +1 -0
  99. package/dist/sys-modules/index.js +7 -0
  100. package/dist/sys-modules/index.js.map +1 -0
  101. package/dist/sys-modules/manifest.d.ts +38 -0
  102. package/dist/sys-modules/manifest.d.ts.map +1 -0
  103. package/dist/sys-modules/manifest.js +91 -0
  104. package/dist/sys-modules/manifest.js.map +1 -0
  105. package/dist/sys-modules/registration.d.ts +35 -0
  106. package/dist/sys-modules/registration.d.ts.map +1 -0
  107. package/dist/sys-modules/registration.js +132 -0
  108. package/dist/sys-modules/registration.js.map +1 -0
  109. package/dist/sys-modules/toggle.d.ts +44 -0
  110. package/dist/sys-modules/toggle.d.ts.map +1 -0
  111. package/dist/sys-modules/toggle.js +82 -0
  112. package/dist/sys-modules/toggle.js.map +1 -0
  113. package/dist/sys-modules/usage.d.ts +35 -0
  114. package/dist/sys-modules/usage.d.ts.map +1 -0
  115. package/dist/sys-modules/usage.js +105 -0
  116. package/dist/sys-modules/usage.js.map +1 -0
  117. package/dist/trace-context.js +1 -1
  118. package/dist/trace-context.js.map +1 -1
  119. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -15,15 +15,19 @@ export { Config } from './config.js';
15
15
  // Approval
16
16
  export { createApprovalRequest, createApprovalResult, AlwaysDenyHandler, AutoApproveHandler, CallbackApprovalHandler, } from './approval.js';
17
17
  // Errors
18
- export { ModuleError, ConfigNotFoundError, ConfigError, ACLRuleError, ACLDeniedError, ApprovalError, ApprovalDeniedError, ApprovalTimeoutError, ApprovalPendingError, ModuleNotFoundError, ModuleTimeoutError, SchemaValidationError, SchemaNotFoundError, SchemaParseError, SchemaCircularRefError, CallDepthExceededError, CircularCallError, CallFrequencyExceededError, InvalidInputError, FuncMissingTypeHintError, FuncMissingReturnTypeError, BindingInvalidTargetError, BindingModuleNotFoundError, BindingCallableNotFoundError, BindingNotCallableError, BindingSchemaMissingError, BindingFileInvalidError, CircularDependencyError, DependencyNotFoundError, NotImplementedError, ModuleLoadError, ModuleExecuteError, InternalError, ErrorCodes, } from './errors.js';
18
+ export { ModuleError, ConfigNotFoundError, ConfigError, ACLRuleError, ACLDeniedError, ApprovalError, ApprovalDeniedError, ApprovalTimeoutError, ApprovalPendingError, ModuleNotFoundError, ModuleDisabledError, ModuleTimeoutError, SchemaValidationError, SchemaNotFoundError, SchemaParseError, SchemaCircularRefError, CallDepthExceededError, CircularCallError, CallFrequencyExceededError, InvalidInputError, FuncMissingTypeHintError, FuncMissingReturnTypeError, BindingInvalidTargetError, BindingModuleNotFoundError, BindingCallableNotFoundError, BindingNotCallableError, BindingSchemaMissingError, BindingFileInvalidError, CircularDependencyError, DependencyNotFoundError, FeatureNotImplementedError, ModuleLoadError, ReloadFailedError, ModuleExecuteError, InternalError, ErrorCodes, } from './errors.js';
19
19
  // ACL
20
20
  export { ACL } from './acl.js';
21
21
  // Middleware
22
- export { Middleware, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware, RetryMiddleware, CTX_RETRY_COUNT_PREFIX, CTX_RETRY_DELAY_PREFIX } from './middleware/index.js';
22
+ export { Middleware, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware, RetryMiddleware, CTX_RETRY_COUNT_PREFIX, CTX_RETRY_DELAY_PREFIX, ErrorHistoryMiddleware, PlatformNotifyMiddleware } from './middleware/index.js';
23
23
  // Decorator
24
24
  export { module, FunctionModule, normalizeResult, makeAutoId } from './decorator.js';
25
25
  // Extensions
26
26
  export { ExtensionManager } from './extensions.js';
27
+ // Events
28
+ export { EventEmitter, createEvent, WebhookSubscriber, A2ASubscriber } from './events/index.js';
29
+ // System Modules
30
+ export { registerSysModules, registerSubscriberType, unregisterSubscriberType, resetSubscriberRegistry, ToggleState, ToggleFeatureModule, defaultToggleState, isModuleDisabled, checkModuleDisabled, HealthSummaryModule, HealthModuleModule, classifyHealthStatus, ManifestModuleModule, ManifestFullModule, UpdateConfigModule, ReloadModuleModule, UsageSummaryModule, UsageModuleModule, } from './sys-modules/index.js';
27
31
  // Async tasks
28
32
  export { AsyncTaskManager, TaskStatus } from './async-task.js';
29
33
  // Bindings
@@ -48,7 +52,10 @@ export { toStrictSchema, applyLlmDescriptions, stripExtensions } from './schema/
48
52
  export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan } from './observability/tracing.js';
49
53
  export { MetricsCollector, MetricsMiddleware } from './observability/metrics.js';
50
54
  export { ContextLogger, ObsLoggingMiddleware } from './observability/context-logger.js';
55
+ export { ErrorHistory } from './observability/error-history.js';
56
+ export { UsageCollector, UsageMiddleware, bucketKey } from './observability/usage.js';
57
+ export { computeModuleErrorRate, estimateP99FromHistogram, matchesModuleId, METRIC_CALLS_TOTAL, METRIC_DURATION_SECONDS } from './observability/metrics-utils.js';
51
58
  // Trace Context
52
59
  export { TraceContext } from './trace-context.js';
53
- export const VERSION = '0.10.0';
60
+ export const VERSION = '0.12.0';
54
61
  //# 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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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Middleware that records ModuleError details into ErrorHistory.
3
+ */
4
+ import type { Context } from '../context.js';
5
+ import { Middleware } from './base.js';
6
+ import type { ErrorHistory } from '../observability/error-history.js';
7
+ /**
8
+ * Records ModuleError instances into ErrorHistory on every onError() call.
9
+ * Generic exceptions are ignored. This middleware never recovers from errors.
10
+ */
11
+ export declare class ErrorHistoryMiddleware extends Middleware {
12
+ private readonly _errorHistory;
13
+ constructor(errorHistory: ErrorHistory);
14
+ onError(moduleId: string, _inputs: Record<string, unknown>, error: Error, _context: Context): Record<string, unknown> | null;
15
+ }
16
+ //# sourceMappingURL=error-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-history.d.ts","sourceRoot":"","sources":["../../src/middleware/error-history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAEjC,YAAY,EAAE,YAAY;IAK7B,OAAO,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAMlC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Middleware that records ModuleError details into ErrorHistory.
3
+ */
4
+ import { ModuleError } from '../errors.js';
5
+ import { Middleware } from './base.js';
6
+ /**
7
+ * Records ModuleError instances into ErrorHistory on every onError() call.
8
+ * Generic exceptions are ignored. This middleware never recovers from errors.
9
+ */
10
+ export class ErrorHistoryMiddleware extends Middleware {
11
+ _errorHistory;
12
+ constructor(errorHistory) {
13
+ super();
14
+ this._errorHistory = errorHistory;
15
+ }
16
+ onError(moduleId, _inputs, error, _context) {
17
+ if (error instanceof ModuleError) {
18
+ this._errorHistory.record(moduleId, error);
19
+ }
20
+ return null;
21
+ }
22
+ }
23
+ //# sourceMappingURL=error-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-history.js","sourceRoot":"","sources":["../../src/middleware/error-history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACnC,aAAa,CAAe;IAE7C,YAAY,YAA0B;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAEQ,OAAO,CACd,QAAgB,EAChB,OAAgC,EAChC,KAAY,EACZ,QAAiB;QAEjB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -6,4 +6,6 @@ export { LoggingMiddleware } from './logging.js';
6
6
  export type { Logger } from './logging.js';
7
7
  export { RetryMiddleware, CTX_RETRY_COUNT_PREFIX, CTX_RETRY_DELAY_PREFIX } from './retry.js';
8
8
  export type { RetryConfig } from './retry.js';
9
+ export { ErrorHistoryMiddleware } from './error-history.js';
10
+ export { PlatformNotifyMiddleware } from './platform-notify.js';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7F,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7F,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -3,4 +3,6 @@ export { MiddlewareManager, MiddlewareChainError } from './manager.js';
3
3
  export { BeforeMiddleware, AfterMiddleware } from './adapters.js';
4
4
  export { LoggingMiddleware } from './logging.js';
5
5
  export { RetryMiddleware, CTX_RETRY_COUNT_PREFIX, CTX_RETRY_DELAY_PREFIX } from './retry.js';
6
+ export { ErrorHistoryMiddleware } from './error-history.js';
7
+ export { PlatformNotifyMiddleware } from './platform-notify.js';
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -23,7 +23,7 @@ export class LoggingMiddleware extends Middleware {
23
23
  this._logErrors = options?.logErrors ?? true;
24
24
  }
25
25
  before(moduleId, inputs, context) {
26
- context.data['_logging_mw_start'] = performance.now();
26
+ context.data['_apcore.mw.logging.start_time'] = performance.now();
27
27
  if (this._logInputs) {
28
28
  const redacted = context.redactedInputs ?? inputs;
29
29
  this._logger.info(`[${context.traceId}] START ${moduleId}`, {
@@ -36,7 +36,7 @@ export class LoggingMiddleware extends Middleware {
36
36
  return null;
37
37
  }
38
38
  after(moduleId, _inputs, output, context) {
39
- const startTime = context.data['_logging_mw_start'] ?? performance.now();
39
+ const startTime = context.data['_apcore.mw.logging.start_time'] ?? performance.now();
40
40
  const durationMs = performance.now() - startTime;
41
41
  if (this._logOutputs) {
42
42
  this._logger.info(`[${context.traceId}] END ${moduleId} (${durationMs.toFixed(2)}ms)`, {
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/middleware/logging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,MAAM,aAAa,GAAW;IAC5B,IAAI,CAAC,OAAe,EAAE,KAA+B;QACnD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,KAA+B;QACpD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;CACF,CAAC;AAEF,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IACvC,OAAO,CAAS;IAChB,UAAU,CAAU;IACpB,WAAW,CAAU;IACrB,UAAU,CAAU;IAE5B,YAAY,OAKX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,IAAI,aAAa,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IAC/C,CAAC;IAEQ,MAAM,CACb,QAAgB,EAChB,MAA+B,EAC/B,OAAgB;QAEhB,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,WAAW,QAAQ,EAAE,EAAE;gBAC1D,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CACZ,QAAgB,EAChB,OAAgC,EAChC,MAA+B,EAC/B,OAAgB;QAEhB,MAAM,SAAS,GAAI,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAY,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;QACrF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,OAAO,CAAC,OAAO,SAAS,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EACnE;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,UAAU;gBACV,MAAM;aACP,CACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,OAAO,CACd,QAAgB,EAChB,MAA+B,EAC/B,KAAY,EACZ,OAAgB;QAEhB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,WAAW,QAAQ,KAAK,KAAK,EAAE,EAAE;gBACrE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/middleware/logging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,MAAM,aAAa,GAAW;IAC5B,IAAI,CAAC,OAAe,EAAE,KAA+B;QACnD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,KAA+B;QACpD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;CACF,CAAC;AAEF,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IACvC,OAAO,CAAS;IAChB,UAAU,CAAU;IACpB,WAAW,CAAU;IACrB,UAAU,CAAU;IAE5B,YAAY,OAKX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,IAAI,aAAa,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IAC/C,CAAC;IAEQ,MAAM,CACb,QAAgB,EAChB,MAA+B,EAC/B,OAAgB;QAEhB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAElE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,WAAW,QAAQ,EAAE,EAAE;gBAC1D,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CACZ,QAAgB,EAChB,OAAgC,EAChC,MAA+B,EAC/B,OAAgB;QAEhB,MAAM,SAAS,GAAI,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAY,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;QACjG,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,OAAO,CAAC,OAAO,SAAS,QAAQ,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EACnE;gBACE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,UAAU;gBACV,MAAM;aACP,CACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,OAAO,CACd,QAAgB,EAChB,MAA+B,EAC/B,KAAY,EACZ,OAAgB;QAEhB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,WAAW,QAAQ,KAAK,KAAK,EAAE,EAAE;gBACrE,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * PlatformNotifyMiddleware -- threshold sensor with hysteresis.
3
+ *
4
+ * Monitors error rates and latency, emits threshold events with hysteresis.
5
+ * Emits error_threshold_exceeded when a module's error rate crosses the
6
+ * configured threshold, latency_threshold_exceeded when p99 latency
7
+ * exceeds the limit, and module_health_changed when a previously alerted
8
+ * module recovers below threshold * 0.5.
9
+ */
10
+ import type { Context } from '../context.js';
11
+ import type { EventEmitter } from '../events/emitter.js';
12
+ import type { MetricsCollector } from '../observability/metrics.js';
13
+ import { Middleware } from './base.js';
14
+ export declare class PlatformNotifyMiddleware extends Middleware {
15
+ private readonly _emitter;
16
+ private readonly _metricsCollector;
17
+ private readonly _errorRateThreshold;
18
+ private readonly _latencyP99ThresholdMs;
19
+ private readonly _alerted;
20
+ constructor(eventEmitter: EventEmitter, metricsCollector?: MetricsCollector | null, errorRateThreshold?: number, latencyP99ThresholdMs?: number);
21
+ after(moduleId: string, _inputs: Record<string, unknown>, _output: Record<string, unknown>, _context: Context): Record<string, unknown> | null;
22
+ onError(moduleId: string, _inputs: Record<string, unknown>, _error: Error, _context: Context): Record<string, unknown> | null;
23
+ private _getAlerted;
24
+ private _computeErrorRate;
25
+ private _checkErrorRateThreshold;
26
+ private _checkLatencyThreshold;
27
+ private _estimateP99Ms;
28
+ private _checkErrorRecovery;
29
+ }
30
+ //# sourceMappingURL=platform-notify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-notify.d.ts","sourceRoot":"","sources":["../../src/middleware/platform-notify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,UAAU;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;gBAG9D,YAAY,EAAE,YAAY,EAC1B,gBAAgB,GAAE,gBAAgB,GAAG,IAAW,EAChD,kBAAkB,GAAE,MAAY,EAChC,qBAAqB,GAAE,MAAa;IAS7B,KAAK,CACZ,QAAQ,EAAE,MAAM,EAChB,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;IAMxB,OAAO,CACd,QAAQ,EAAE,MAAM,EAChB,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;IAKjC,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,mBAAmB;CAe5B"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * PlatformNotifyMiddleware -- threshold sensor with hysteresis.
3
+ *
4
+ * Monitors error rates and latency, emits threshold events with hysteresis.
5
+ * Emits error_threshold_exceeded when a module's error rate crosses the
6
+ * configured threshold, latency_threshold_exceeded when p99 latency
7
+ * exceeds the limit, and module_health_changed when a previously alerted
8
+ * module recovers below threshold * 0.5.
9
+ */
10
+ import { createEvent } from '../events/emitter.js';
11
+ import { computeModuleErrorRate, estimateP99FromHistogram } from '../observability/metrics-utils.js';
12
+ import { Middleware } from './base.js';
13
+ export class PlatformNotifyMiddleware extends Middleware {
14
+ _emitter;
15
+ _metricsCollector;
16
+ _errorRateThreshold;
17
+ _latencyP99ThresholdMs;
18
+ _alerted = new Map();
19
+ constructor(eventEmitter, metricsCollector = null, errorRateThreshold = 0.1, latencyP99ThresholdMs = 5000) {
20
+ super();
21
+ this._emitter = eventEmitter;
22
+ this._metricsCollector = metricsCollector;
23
+ this._errorRateThreshold = errorRateThreshold;
24
+ this._latencyP99ThresholdMs = latencyP99ThresholdMs;
25
+ }
26
+ after(moduleId, _inputs, _output, _context) {
27
+ this._checkLatencyThreshold(moduleId);
28
+ this._checkErrorRecovery(moduleId);
29
+ return null;
30
+ }
31
+ onError(moduleId, _inputs, _error, _context) {
32
+ this._checkErrorRateThreshold(moduleId);
33
+ return null;
34
+ }
35
+ _getAlerted(moduleId) {
36
+ let set = this._alerted.get(moduleId);
37
+ if (!set) {
38
+ set = new Set();
39
+ this._alerted.set(moduleId, set);
40
+ }
41
+ return set;
42
+ }
43
+ _computeErrorRate(moduleId) {
44
+ if (!this._metricsCollector)
45
+ return 0;
46
+ return computeModuleErrorRate(this._metricsCollector, moduleId).errorRate;
47
+ }
48
+ _checkErrorRateThreshold(moduleId) {
49
+ const errorRate = this._computeErrorRate(moduleId);
50
+ const alerted = this._getAlerted(moduleId);
51
+ if (errorRate >= this._errorRateThreshold && !alerted.has('error_rate')) {
52
+ this._emitter.emit(createEvent('error_threshold_exceeded', moduleId, 'warning', { error_rate: errorRate, threshold: this._errorRateThreshold }));
53
+ alerted.add('error_rate');
54
+ }
55
+ }
56
+ _checkLatencyThreshold(moduleId) {
57
+ if (!this._metricsCollector)
58
+ return;
59
+ const alerted = this._getAlerted(moduleId);
60
+ if (alerted.has('latency'))
61
+ return;
62
+ const p99Ms = this._estimateP99Ms(moduleId);
63
+ if (p99Ms >= this._latencyP99ThresholdMs) {
64
+ this._emitter.emit(createEvent('latency_threshold_exceeded', moduleId, 'warning', { p99_latency_ms: p99Ms, threshold_ms: this._latencyP99ThresholdMs }));
65
+ alerted.add('latency');
66
+ }
67
+ }
68
+ _estimateP99Ms(moduleId) {
69
+ if (!this._metricsCollector)
70
+ return 0;
71
+ return estimateP99FromHistogram(this._metricsCollector, moduleId).p99LatencyMs;
72
+ }
73
+ _checkErrorRecovery(moduleId) {
74
+ const alerted = this._alerted.get(moduleId);
75
+ if (!alerted || !alerted.has('error_rate'))
76
+ return;
77
+ const errorRate = this._computeErrorRate(moduleId);
78
+ if (errorRate < this._errorRateThreshold * 0.5) {
79
+ this._emitter.emit(createEvent('module_health_changed', moduleId, 'info', { status: 'recovered', error_rate: errorRate }));
80
+ alerted.delete('error_rate');
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=platform-notify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-notify.js","sourceRoot":"","sources":["../../src/middleware/platform-notify.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  import type { Context } from '../context.js';
5
5
  import { Middleware } from './base.js';
6
6
  /** Well-known context.data key prefixes for retry state. */
7
- export declare const CTX_RETRY_COUNT_PREFIX = "_retry_count_";
8
- export declare const CTX_RETRY_DELAY_PREFIX = "_retry_delay_ms_";
7
+ export declare const CTX_RETRY_COUNT_PREFIX = "_apcore.mw.retry.count.";
8
+ export declare const CTX_RETRY_DELAY_PREFIX = "_apcore.mw.retry.delay_ms.";
9
9
  export interface RetryConfig {
10
10
  maxRetries: number;
11
11
  strategy: 'exponential' | 'fixed';
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/middleware/retry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD;;;;;;;;GAQG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAO,CAAC,OAAO,CAAc;gBAEjB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAKhC,OAAO,CACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgCjC,OAAO,CAAC,eAAe;CAkBxB"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/middleware/retry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAChE,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD;;;;;;;;GAQG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAO,CAAC,OAAO,CAAc;gBAEjB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAKhC,OAAO,CACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgCjC,OAAO,CAAC,eAAe;CAkBxB"}
@@ -3,8 +3,8 @@
3
3
  */
4
4
  import { Middleware } from './base.js';
5
5
  /** Well-known context.data key prefixes for retry state. */
6
- export const CTX_RETRY_COUNT_PREFIX = '_retry_count_';
7
- export const CTX_RETRY_DELAY_PREFIX = '_retry_delay_ms_';
6
+ export const CTX_RETRY_COUNT_PREFIX = '_apcore.mw.retry.count.';
7
+ export const CTX_RETRY_DELAY_PREFIX = '_apcore.mw.retry.delay_ms.';
8
8
  const DEFAULT_RETRY_CONFIG = {
9
9
  maxRetries: 3,
10
10
  strategy: 'exponential',
@@ -39,7 +39,7 @@ export class RetryMiddleware extends Middleware {
39
39
  }
40
40
  const delayMs = this._calculateDelay(retryCount);
41
41
  context.data[retryKey] = retryCount + 1;
42
- console.info(`[apcore:retry] Retrying module '${moduleId}' (attempt ${retryCount + 1}/${this._config.maxRetries}) after ${Math.round(delayMs)}ms`);
42
+ console.warn(`[apcore:retry] Retrying module '${moduleId}' (attempt ${retryCount + 1}/${this._config.maxRetries}) after ${Math.round(delayMs)}ms`);
43
43
  // Synchronous onError cannot await -- schedule sleep externally.
44
44
  // In JS, the MiddlewareManager runs onError synchronously, so we block
45
45
  // via a busy wait only if strictly needed, but the better approach is
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/middleware/retry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAUzD,MAAM,oBAAoB,GAAgB;IACxC,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IACrC,OAAO,CAAc;IAE7B,YAAY,MAA6B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAAC;IACxD,CAAC;IAEQ,OAAO,CACd,QAAgB,EAChB,MAA+B,EAC/B,KAAY,EACZ,OAAgB;QAEhB,MAAM,SAAS,GAAI,KAAqB,CAAC,SAAS,CAAC;QACnD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,QAAQ,GAAG,GAAG,sBAAsB,GAAG,QAAQ,EAAE,CAAC;QACxD,MAAM,UAAU,GAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAY,IAAI,CAAC,CAAC;QAE3D,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CACV,+BAA+B,IAAI,CAAC,OAAO,CAAC,UAAU,0BAA0B,QAAQ,GAAG,CAC5F,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;QAExC,OAAO,CAAC,IAAI,CACV,mCAAmC,QAAQ,cAAc,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACrI,CAAC;QAEF,iEAAiE;QACjE,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,mEAAmE;QACnE,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,GAAG,sBAAsB,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;QAE/D,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,IAAI,KAAa,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACtC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,6DAA6D;YAC7D,KAAK,GAAG,IAAI,CAAC,GAAG,CACd,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CACxB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc;QAC9C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/middleware/retry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AAUnE,MAAM,oBAAoB,GAAgB;IACxC,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IACrC,OAAO,CAAc;IAE7B,YAAY,MAA6B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAAC;IACxD,CAAC;IAEQ,OAAO,CACd,QAAgB,EAChB,MAA+B,EAC/B,KAAY,EACZ,OAAgB;QAEhB,MAAM,SAAS,GAAI,KAAqB,CAAC,SAAS,CAAC;QACnD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,QAAQ,GAAG,GAAG,sBAAsB,GAAG,QAAQ,EAAE,CAAC;QACxD,MAAM,UAAU,GAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAY,IAAI,CAAC,CAAC;QAE3D,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CACV,+BAA+B,IAAI,CAAC,OAAO,CAAC,UAAU,0BAA0B,QAAQ,GAAG,CAC5F,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;QAExC,OAAO,CAAC,IAAI,CACV,mCAAmC,QAAQ,cAAc,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACrI,CAAC;QAEF,iEAAiE;QACjE,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,mEAAmE;QACnE,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,GAAG,sBAAsB,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;QAE/D,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;IACvB,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,IAAI,KAAa,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACtC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,6DAA6D;YAC7D,KAAK,GAAG,IAAI,CAAC,GAAG,CACd,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CACxB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc;QAC9C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
package/dist/module.d.ts CHANGED
@@ -26,6 +26,7 @@ export interface PreflightCheckResult {
26
26
  readonly check: string;
27
27
  readonly passed: boolean;
28
28
  readonly error?: Record<string, unknown>;
29
+ readonly warnings?: string[];
29
30
  }
30
31
  export interface PreflightResult {
31
32
  readonly valid: boolean;
@@ -43,9 +44,20 @@ export interface Module {
43
44
  stream?(inputs: Record<string, unknown>, context: Context): AsyncGenerator<Record<string, unknown>>;
44
45
  /** Optional: Custom input validation without execution. */
45
46
  validate?(inputs: Record<string, unknown>): ValidationResult | Promise<ValidationResult>;
47
+ /** Optional: Domain-specific pre-execution warnings (called by Executor.validate() Check 7). Advisory only — warnings do NOT block execution. */
48
+ preflight?(inputs: Record<string, unknown>, context: Context): string[] | Promise<string[]>;
49
+ /** Optional: Return module description for LLM/AI tool discovery. */
50
+ describe?(): ModuleDescription | Promise<ModuleDescription>;
46
51
  /** Optional: Called when module is loaded into the registry. */
47
52
  onLoad?(): void | Promise<void>;
48
53
  /** Optional: Called when module is unloaded from the registry. */
49
54
  onUnload?(): void | Promise<void>;
50
55
  }
56
+ export interface ModuleDescription {
57
+ readonly description: string;
58
+ readonly inputSchema: Record<string, unknown>;
59
+ readonly outputSchema: Record<string, unknown>;
60
+ readonly annotations: ModuleAnnotations;
61
+ readonly examples: ModuleExample[];
62
+ }
51
63
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAOhC,CAAC;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACjD;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,gBAAgB,GAAE,OAAe,GAChC,eAAe,CAMjB;AAED,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvH,qDAAqD;IACrD,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpG,2DAA2D;IAC3D,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzF,gEAAgE;IAChE,MAAM,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,MAAM,CAAC,MAAM,mBAAmB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAClE,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AA2BH,MAAM,UAAU,qBAAqB,CACnC,MAA8B,EAC9B,mBAA4B,KAAK;IAEjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IACtB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,MAAM,CAAC,MAAM,mBAAmB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAClE,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AA4BH,MAAM,UAAU,qBAAqB,CACnC,MAA8B,EAC9B,mBAA4B,KAAK;IAEjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IACtB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;AACrD,CAAC"}
@@ -104,9 +104,9 @@ export class ObsLoggingMiddleware extends Middleware {
104
104
  this._logOutputs = options?.logOutputs ?? true;
105
105
  }
106
106
  before(moduleId, inputs, context) {
107
- const starts = context.data['_obs_logging_starts'] ?? [];
107
+ const starts = context.data['_apcore.mw.logging.obs_starts'] ?? [];
108
108
  starts.push(performance.now());
109
- context.data['_obs_logging_starts'] = starts;
109
+ context.data['_apcore.mw.logging.obs_starts'] = starts;
110
110
  const extra = {
111
111
  module_id: moduleId,
112
112
  caller_id: context.callerId,
@@ -118,7 +118,7 @@ export class ObsLoggingMiddleware extends Middleware {
118
118
  return null;
119
119
  }
120
120
  after(moduleId, _inputs, output, context) {
121
- const starts = context.data['_obs_logging_starts'];
121
+ const starts = context.data['_apcore.mw.logging.obs_starts'];
122
122
  if (!starts || starts.length === 0)
123
123
  return null;
124
124
  const startTime = starts.pop();
@@ -134,7 +134,7 @@ export class ObsLoggingMiddleware extends Middleware {
134
134
  return null;
135
135
  }
136
136
  onError(moduleId, _inputs, error, context) {
137
- const starts = context.data['_obs_logging_starts'];
137
+ const starts = context.data['_apcore.mw.logging.obs_starts'];
138
138
  if (!starts || starts.length === 0)
139
139
  return null;
140
140
  const startTime = starts.pop();
@@ -1 +1 @@
1
- {"version":3,"file":"context-logger.js","sourceRoot":"","sources":["../../src/observability/context-logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,GAA2B;IACrC,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAMlC,MAAM,OAAO,aAAa;IAChB,KAAK,CAAS;IACd,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,WAAW,CAAS;IACpB,gBAAgB,CAAU;IAC1B,OAAO,CAAiB;IACxB,QAAQ,GAAkB,IAAI,CAAC;IAC/B,SAAS,GAAkB,IAAI,CAAC;IAChC,SAAS,GAAkB,IAAI,CAAC;IAExC,YAAY,OAMX;QACC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC;QACzD,oFAAoF;QACpF,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAyB,EAAE,IAAY,EAAE,OAK3D;QACC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAClC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzG,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,SAAiB,EAAE,OAAe,EAAE,KAAsC;QACtF,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW;YAAE,OAAO;QAE1C,IAAI,aAAa,GAAG,KAAK,IAAI,IAAI,CAAC;QAClC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,aAAa,GAAG,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,aAAyC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAA4B;YACrC,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,SAAS;YAChB,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,KAAK;YAClB,KAAK,EAAE,aAAa;SACrB,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACtE,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;YACrC,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,aAAa,EAAE,CAAC;gBAClB,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzF,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG,YAAY,KAAK,aAAa,GAAG,KAAK,OAAO,GAAG,SAAS,IAAI,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAA+B;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAA+B;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,KAA+B;QACnD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,KAA+B;QACnD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAA+B;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAA+B;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAC1C,OAAO,CAAgB;IACvB,UAAU,CAAU;IACpB,WAAW,CAAU;IAE7B,YAAY,OAIX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;IACjD,CAAC;IAEQ,MAAM,CACb,QAAgB,EAChB,MAA+B,EAC/B,OAAgB;QAEhB,MAAM,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAc,IAAI,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC;QAE7C,MAAM,KAAK,GAA4B;YACrC,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,OAAO,CAAC,QAAQ;SAC5B,CAAC;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CACZ,QAAgB,EAChB,OAAgC,EAChC,MAA+B,EAC/B,OAAgB;QAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAyB,CAAC;QAC3E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAG,CAAC;QAChC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEjD,MAAM,KAAK,GAA4B;YACrC,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,UAAU;SACxB,CAAC;QACF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,OAAO,CACd,QAAgB,EAChB,OAAgC,EAChC,KAAY,EACZ,OAAgB;QAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAyB,CAAC;QAC3E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAG,CAAC;QAChC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEjD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACvC,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,UAAU;YACvB,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;YAClC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC;SAC7B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"context-logger.js","sourceRoot":"","sources":["../../src/observability/context-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Error history with ring-buffer eviction and deduplication.
3
+ */
4
+ import { ModuleError } from '../errors.js';
5
+ export interface ErrorEntry {
6
+ readonly moduleId: string;
7
+ readonly code: string;
8
+ readonly message: string;
9
+ readonly aiGuidance: string | null;
10
+ readonly timestamp: string;
11
+ count: number;
12
+ firstOccurred: string;
13
+ lastOccurred: string;
14
+ }
15
+ /**
16
+ * Ring buffer storing recent error details per module.
17
+ * Supports deduplication by (code, message) within each module,
18
+ * per-module eviction, and global total eviction.
19
+ */
20
+ export declare class ErrorHistory {
21
+ private readonly _maxEntriesPerModule;
22
+ private readonly _maxTotalEntries;
23
+ private readonly _entries;
24
+ constructor(maxEntriesPerModule?: number, maxTotalEntries?: number);
25
+ record(moduleId: string, error: ModuleError): void;
26
+ get(moduleId: string, limit?: number): ErrorEntry[];
27
+ clear(): void;
28
+ clearModule(moduleId: string): void;
29
+ getAll(limit?: number): ErrorEntry[];
30
+ private _evictModule;
31
+ private _evictTotal;
32
+ }
33
+ //# sourceMappingURL=error-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-history.d.ts","sourceRoot":"","sources":["../../src/observability/error-history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;gBAErD,mBAAmB,GAAE,MAAW,EAAE,eAAe,GAAE,MAAa;IAK5E,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAgClD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAMnD,KAAK,IAAI,IAAI;IAIb,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IASpC,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;CA0BpB"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Error history with ring-buffer eviction and deduplication.
3
+ */
4
+ /**
5
+ * Ring buffer storing recent error details per module.
6
+ * Supports deduplication by (code, message) within each module,
7
+ * per-module eviction, and global total eviction.
8
+ */
9
+ export class ErrorHistory {
10
+ _maxEntriesPerModule;
11
+ _maxTotalEntries;
12
+ _entries = new Map();
13
+ constructor(maxEntriesPerModule = 50, maxTotalEntries = 1000) {
14
+ this._maxEntriesPerModule = maxEntriesPerModule;
15
+ this._maxTotalEntries = maxTotalEntries;
16
+ }
17
+ record(moduleId, error) {
18
+ const now = new Date().toISOString();
19
+ let moduleEntries = this._entries.get(moduleId);
20
+ if (!moduleEntries) {
21
+ moduleEntries = [];
22
+ this._entries.set(moduleId, moduleEntries);
23
+ }
24
+ const existing = moduleEntries.find((e) => e.code === error.code && e.message === error.message);
25
+ if (existing) {
26
+ existing.count++;
27
+ existing.lastOccurred = now;
28
+ return;
29
+ }
30
+ const entry = {
31
+ moduleId,
32
+ code: error.code,
33
+ message: error.message,
34
+ aiGuidance: error.aiGuidance,
35
+ timestamp: now,
36
+ count: 1,
37
+ firstOccurred: now,
38
+ lastOccurred: now,
39
+ };
40
+ moduleEntries.push(entry);
41
+ this._evictModule(moduleEntries);
42
+ this._evictTotal();
43
+ }
44
+ get(moduleId, limit) {
45
+ const moduleEntries = this._entries.get(moduleId) ?? [];
46
+ const result = [...moduleEntries].reverse();
47
+ return limit !== undefined ? result.slice(0, limit) : result;
48
+ }
49
+ clear() {
50
+ this._entries.clear();
51
+ }
52
+ clearModule(moduleId) {
53
+ this._entries.delete(moduleId);
54
+ }
55
+ getAll(limit) {
56
+ const all = [];
57
+ for (const entries of this._entries.values()) {
58
+ all.push(...entries);
59
+ }
60
+ all.sort((a, b) => (a.lastOccurred > b.lastOccurred ? -1 : 1));
61
+ return limit !== undefined ? all.slice(0, limit) : all;
62
+ }
63
+ _evictModule(moduleEntries) {
64
+ while (moduleEntries.length > this._maxEntriesPerModule) {
65
+ moduleEntries.shift();
66
+ }
67
+ }
68
+ _evictTotal() {
69
+ let total = 0;
70
+ for (const entries of this._entries.values()) {
71
+ total += entries.length;
72
+ }
73
+ while (total > this._maxTotalEntries) {
74
+ let oldestEntry = null;
75
+ let oldestModuleId = null;
76
+ for (const [mid, entries] of this._entries) {
77
+ if (entries.length > 0) {
78
+ const candidate = entries[0];
79
+ if (oldestEntry === null || candidate.lastOccurred < oldestEntry.lastOccurred) {
80
+ oldestEntry = candidate;
81
+ oldestModuleId = mid;
82
+ }
83
+ }
84
+ }
85
+ if (oldestModuleId === null)
86
+ break;
87
+ const entries = this._entries.get(oldestModuleId);
88
+ entries.shift();
89
+ if (entries.length === 0) {
90
+ this._entries.delete(oldestModuleId);
91
+ }
92
+ total--;
93
+ }
94
+ }
95
+ }
96
+ //# sourceMappingURL=error-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-history.js","sourceRoot":"","sources":["../../src/observability/error-history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACN,oBAAoB,CAAS;IAC7B,gBAAgB,CAAS;IACzB,QAAQ,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEjE,YAAY,sBAA8B,EAAE,EAAE,kBAA0B,IAAI;QAC1E,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,QAAgB,EAAE,KAAkB;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAC5D,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAe;YACxB,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,GAAG;YAClB,YAAY,EAAE,GAAG;SAClB,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,QAAgB,EAAE,KAAc;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,KAAc;QACnB,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD,CAAC;IAEO,YAAY,CAAC,aAA2B;QAC9C,OAAO,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACxD,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrC,IAAI,WAAW,GAAsB,IAAI,CAAC;YAC1C,IAAI,cAAc,GAAkB,IAAI,CAAC;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,WAAW,KAAK,IAAI,IAAI,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;wBAC9E,WAAW,GAAG,SAAS,CAAC;wBACxB,cAAc,GAAG,GAAG,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,cAAc,KAAK,IAAI;gBAAE,MAAM;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;YACnD,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACvC,CAAC;YACD,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,9 @@
1
- export { TracingMiddleware, StdoutExporter, InMemoryExporter, createSpan } from './tracing.js';
1
+ export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan } from './tracing.js';
2
2
  export type { Span, SpanExporter } from './tracing.js';
3
3
  export { MetricsCollector, MetricsMiddleware } from './metrics.js';
4
4
  export { ContextLogger, ObsLoggingMiddleware } from './context-logger.js';
5
+ export { ErrorHistory } from './error-history.js';
6
+ export type { ErrorEntry } from './error-history.js';
7
+ export { UsageCollector, UsageMiddleware, bucketKey } from './usage.js';
8
+ export type { UsageRecord, CallerUsageSummary, HourlyBucket, ModuleUsageSummary, ModuleUsageDetail } from './usage.js';
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/F,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7G,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}