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.
- package/README.md +110 -9
- package/dist/acl.d.ts +18 -0
- package/dist/acl.d.ts.map +1 -1
- package/dist/acl.js +54 -17
- package/dist/acl.js.map +1 -1
- package/dist/async-task.d.ts +70 -16
- package/dist/async-task.d.ts.map +1 -1
- package/dist/async-task.js +212 -72
- package/dist/async-task.js.map +1 -1
- package/dist/builtin-steps.d.ts +16 -5
- package/dist/builtin-steps.d.ts.map +1 -1
- package/dist/builtin-steps.js +45 -28
- package/dist/builtin-steps.js.map +1 -1
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +163 -33
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +12 -1
- package/dist/context.js.map +1 -1
- package/dist/errors.d.ts +32 -10
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +55 -16
- package/dist/errors.js.map +1 -1
- package/dist/events/circuit-breaker.d.ts +45 -0
- package/dist/events/circuit-breaker.d.ts.map +1 -0
- package/dist/events/circuit-breaker.js +115 -0
- package/dist/events/circuit-breaker.js.map +1 -0
- package/dist/events/emitter.d.ts +22 -1
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +66 -2
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/index.d.ts +4 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +3 -2
- package/dist/events/index.js.map +1 -1
- package/dist/events/subscribers.d.ts +33 -1
- package/dist/events/subscribers.d.ts.map +1 -1
- package/dist/events/subscribers.js +124 -1
- package/dist/events/subscribers.js.map +1 -1
- package/dist/executor.d.ts +10 -2
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +134 -51
- package/dist/executor.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +35 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -17
- package/dist/index.js.map +1 -1
- package/dist/middleware/base.d.ts +25 -3
- package/dist/middleware/base.d.ts.map +1 -1
- package/dist/middleware/base.js +24 -0
- package/dist/middleware/base.js.map +1 -1
- package/dist/middleware/circuit-breaker.d.ts +54 -0
- package/dist/middleware/circuit-breaker.d.ts.map +1 -0
- package/dist/middleware/circuit-breaker.js +168 -0
- package/dist/middleware/circuit-breaker.js.map +1 -0
- package/dist/middleware/context-namespace.d.ts +30 -0
- package/dist/middleware/context-namespace.d.ts.map +1 -0
- package/dist/middleware/context-namespace.js +38 -0
- package/dist/middleware/context-namespace.js.map +1 -0
- package/dist/middleware/index.d.ts +7 -1
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +4 -1
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/manager.d.ts +11 -4
- package/dist/middleware/manager.d.ts.map +1 -1
- package/dist/middleware/manager.js +25 -9
- package/dist/middleware/manager.js.map +1 -1
- package/dist/middleware/platform-notify.d.ts +8 -4
- package/dist/middleware/platform-notify.d.ts.map +1 -1
- package/dist/middleware/platform-notify.js +11 -7
- package/dist/middleware/platform-notify.js.map +1 -1
- package/dist/middleware/tracing.d.ts +50 -0
- package/dist/middleware/tracing.d.ts.map +1 -0
- package/dist/middleware/tracing.js +89 -0
- package/dist/middleware/tracing.js.map +1 -0
- package/dist/observability/batch-span-processor.d.ts +48 -0
- package/dist/observability/batch-span-processor.d.ts.map +1 -0
- package/dist/observability/batch-span-processor.js +89 -0
- package/dist/observability/batch-span-processor.js.map +1 -0
- package/dist/observability/context-logger.d.ts +54 -1
- package/dist/observability/context-logger.d.ts.map +1 -1
- package/dist/observability/context-logger.js +270 -6
- package/dist/observability/context-logger.js.map +1 -1
- package/dist/observability/error-history.d.ts +36 -7
- package/dist/observability/error-history.d.ts.map +1 -1
- package/dist/observability/error-history.js +169 -50
- package/dist/observability/error-history.js.map +1 -1
- package/dist/observability/index.d.ts +16 -5
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +8 -3
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/metrics.d.ts +14 -1
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +23 -2
- package/dist/observability/metrics.js.map +1 -1
- package/dist/observability/prometheus-exporter.d.ts +37 -0
- package/dist/observability/prometheus-exporter.d.ts.map +1 -0
- package/dist/observability/prometheus-exporter.js +135 -0
- package/dist/observability/prometheus-exporter.js.map +1 -0
- package/dist/observability/storage.d.ts +43 -0
- package/dist/observability/storage.d.ts.map +1 -0
- package/dist/observability/storage.js +58 -0
- package/dist/observability/storage.js.map +1 -0
- package/dist/observability/store.d.ts +29 -0
- package/dist/observability/store.d.ts.map +1 -0
- package/dist/observability/store.js +36 -0
- package/dist/observability/store.js.map +1 -0
- package/dist/observability/usage-exporter.d.ts +58 -0
- package/dist/observability/usage-exporter.d.ts.map +1 -0
- package/dist/observability/usage-exporter.js +86 -0
- package/dist/observability/usage-exporter.js.map +1 -0
- package/dist/observability/usage.d.ts +18 -1
- package/dist/observability/usage.d.ts.map +1 -1
- package/dist/observability/usage.js +25 -3
- package/dist/observability/usage.js.map +1 -1
- package/dist/pipeline-config.d.ts +11 -0
- package/dist/pipeline-config.d.ts.map +1 -1
- package/dist/pipeline-config.js +36 -10
- package/dist/pipeline-config.js.map +1 -1
- package/dist/pipeline.d.ts +123 -2
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +249 -50
- package/dist/pipeline.js.map +1 -1
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -0
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/multi-class.d.ts +57 -0
- package/dist/registry/multi-class.d.ts.map +1 -0
- package/dist/registry/multi-class.js +120 -0
- package/dist/registry/multi-class.js.map +1 -0
- package/dist/registry/registry.d.ts +91 -3
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +181 -11
- package/dist/registry/registry.js.map +1 -1
- package/dist/schema/constants.d.ts +9 -0
- package/dist/schema/constants.d.ts.map +1 -0
- package/dist/schema/constants.js +9 -0
- package/dist/schema/constants.js.map +1 -0
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/loader.d.ts +27 -3
- package/dist/schema/loader.d.ts.map +1 -1
- package/dist/schema/loader.js +137 -32
- package/dist/schema/loader.js.map +1 -1
- package/dist/schema/types.d.ts +4 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js.map +1 -1
- package/dist/schema/validator.d.ts +9 -0
- package/dist/schema/validator.d.ts.map +1 -1
- package/dist/schema/validator.js +153 -4
- package/dist/schema/validator.js.map +1 -1
- package/dist/sys-modules/audit.d.ts +50 -0
- package/dist/sys-modules/audit.d.ts.map +1 -0
- package/dist/sys-modules/audit.js +89 -0
- package/dist/sys-modules/audit.js.map +1 -0
- package/dist/sys-modules/control.d.ts +32 -4
- package/dist/sys-modules/control.d.ts.map +1 -1
- package/dist/sys-modules/control.js +196 -25
- package/dist/sys-modules/control.js.map +1 -1
- package/dist/sys-modules/index.d.ts +7 -2
- package/dist/sys-modules/index.d.ts.map +1 -1
- package/dist/sys-modules/index.js +3 -1
- package/dist/sys-modules/index.js.map +1 -1
- package/dist/sys-modules/overrides.d.ts +58 -0
- package/dist/sys-modules/overrides.d.ts.map +1 -0
- package/dist/sys-modules/overrides.js +106 -0
- package/dist/sys-modules/overrides.js.map +1 -0
- package/dist/sys-modules/registration.d.ts +17 -12
- package/dist/sys-modules/registration.d.ts.map +1 -1
- package/dist/sys-modules/registration.js +115 -23
- package/dist/sys-modules/registration.js.map +1 -1
- package/dist/sys-modules/toggle.d.ts +7 -2
- package/dist/sys-modules/toggle.d.ts.map +1 -1
- package/dist/sys-modules/toggle.js +61 -5
- package/dist/sys-modules/toggle.js.map +1 -1
- package/dist/trace-context.d.ts +47 -9
- package/dist/trace-context.d.ts.map +1 -1
- package/dist/trace-context.js +139 -16
- package/dist/trace-context.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-span-processor.js","sourceRoot":"","sources":["../../src/observability/batch-span-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Structured logging: ContextLogger and ObsLoggingMiddleware.
|
|
2
|
+
* Structured logging: ContextLogger, RedactionConfig, and ObsLoggingMiddleware.
|
|
3
3
|
*/
|
|
4
|
+
import type { Config } from '../config.js';
|
|
4
5
|
import type { Context } from '../context.js';
|
|
5
6
|
import { Middleware } from '../middleware/base.js';
|
|
7
|
+
/**
|
|
8
|
+
* Default sensitive field patterns (Issue #45 §3 — canonical superset
|
|
9
|
+
* promoted from #43 §5). Used when no `redaction.sensitive_keys`
|
|
10
|
+
* (canonical) / `redaction.field_patterns` (legacy) is configured.
|
|
11
|
+
* Wildcards follow apcore's `matchPattern` semantics (segment-aware globs).
|
|
12
|
+
*
|
|
13
|
+
* Aligned with apcore-python's authoritative list (Python is the canonical
|
|
14
|
+
* superset because broader default redaction is safer than narrower).
|
|
15
|
+
* `apiKey` is kept alongside `api_key` / `apikey` for camelCase parity
|
|
16
|
+
* because TypeScript's `matchPattern` is case-sensitive.
|
|
17
|
+
*/
|
|
18
|
+
export declare const DEFAULT_REDACTION_FIELD_PATTERNS: readonly string[];
|
|
19
|
+
/**
|
|
20
|
+
* Runtime-configurable redaction rules for ObsLoggingMiddleware.
|
|
21
|
+
* Applied in addition to schema-level x-sensitive annotations.
|
|
22
|
+
*/
|
|
23
|
+
export declare class RedactionConfig {
|
|
24
|
+
readonly fieldPatterns: readonly string[];
|
|
25
|
+
readonly valuePatterns: readonly (RegExp | string)[];
|
|
26
|
+
readonly replacement: string;
|
|
27
|
+
constructor(options?: {
|
|
28
|
+
fieldPatterns?: string[];
|
|
29
|
+
valuePatterns?: (RegExp | string)[];
|
|
30
|
+
replacement?: string;
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Build a RedactionConfig from an apcore {@link Config}.
|
|
34
|
+
*
|
|
35
|
+
* Reads canonical keys first (sync finding CRITICAL #4 — aligns with
|
|
36
|
+
* apcore-python / apcore-rust):
|
|
37
|
+
* - `obs.redaction.sensitive_keys` (string[])
|
|
38
|
+
* - `obs.redaction.regex_patterns` (string[]; compiled case-insensitively)
|
|
39
|
+
* - `obs.redaction.replacement` (string)
|
|
40
|
+
*
|
|
41
|
+
* For backwards compatibility, falls back to legacy keys (Issue #43 §5)
|
|
42
|
+
* when the canonical key is unset, and emits a one-shot deprecation
|
|
43
|
+
* warning the first time a legacy key is read:
|
|
44
|
+
* - `observability.redaction.field_patterns` (legacy of sensitive_keys)
|
|
45
|
+
* - `observability.redaction.value_patterns` (legacy of regex_patterns)
|
|
46
|
+
* - `observability.redaction.replacement` (legacy of replacement)
|
|
47
|
+
*
|
|
48
|
+
* Falls back to {@link DEFAULT_REDACTION_FIELD_PATTERNS} when no sensitive
|
|
49
|
+
* keys are configured so `_secret_*` and standard sensitive keys (apiKey,
|
|
50
|
+
* api_key, token, authorization, password) remain redacted out of the box.
|
|
51
|
+
*/
|
|
52
|
+
static fromConfig(config: Config): RedactionConfig;
|
|
53
|
+
/** Apply redaction rules to a flat object of field name → value. */
|
|
54
|
+
apply(obj: Record<string, unknown>): Record<string, unknown>;
|
|
55
|
+
private _shouldRedact;
|
|
56
|
+
}
|
|
6
57
|
interface WritableOutput {
|
|
7
58
|
write(s: string): void;
|
|
8
59
|
}
|
|
@@ -41,10 +92,12 @@ export declare class ObsLoggingMiddleware extends Middleware {
|
|
|
41
92
|
private _logger;
|
|
42
93
|
private _logInputs;
|
|
43
94
|
private _logOutputs;
|
|
95
|
+
private _redactionConfig;
|
|
44
96
|
constructor(options?: {
|
|
45
97
|
logger?: ContextLogger;
|
|
46
98
|
logInputs?: boolean;
|
|
47
99
|
logOutputs?: boolean;
|
|
100
|
+
redactionConfig?: RedactionConfig | null;
|
|
48
101
|
});
|
|
49
102
|
before(moduleId: string, inputs: Record<string, unknown>, context: Context): null;
|
|
50
103
|
after(moduleId: string, _inputs: Record<string, unknown>, output: Record<string, unknown>, context: Context): null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-logger.d.ts","sourceRoot":"","sources":["../../src/observability/context-logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"context-logger.d.ts","sourceRoot":"","sources":["../../src/observability/context-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,253 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Structured logging: ContextLogger and ObsLoggingMiddleware.
|
|
2
|
+
* Structured logging: ContextLogger, RedactionConfig, and ObsLoggingMiddleware.
|
|
3
3
|
*/
|
|
4
4
|
import { Middleware } from '../middleware/base.js';
|
|
5
|
+
// matchPattern intentionally not imported — sensitive_keys uses
|
|
6
|
+
// fnmatch-style globs against lowercased keys, not apcore's segment-aware
|
|
7
|
+
// pattern matcher (which is case-sensitive and segment-anchored).
|
|
8
|
+
/**
|
|
9
|
+
* Default sensitive field patterns (Issue #45 §3 — canonical superset
|
|
10
|
+
* promoted from #43 §5). Used when no `redaction.sensitive_keys`
|
|
11
|
+
* (canonical) / `redaction.field_patterns` (legacy) is configured.
|
|
12
|
+
* Wildcards follow apcore's `matchPattern` semantics (segment-aware globs).
|
|
13
|
+
*
|
|
14
|
+
* Aligned with apcore-python's authoritative list (Python is the canonical
|
|
15
|
+
* superset because broader default redaction is safer than narrower).
|
|
16
|
+
* `apiKey` is kept alongside `api_key` / `apikey` for camelCase parity
|
|
17
|
+
* because TypeScript's `matchPattern` is case-sensitive.
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_REDACTION_FIELD_PATTERNS = [
|
|
20
|
+
'_secret_*',
|
|
21
|
+
'password',
|
|
22
|
+
'passwd',
|
|
23
|
+
'secret',
|
|
24
|
+
'token',
|
|
25
|
+
'api_key',
|
|
26
|
+
'apikey',
|
|
27
|
+
'apiKey',
|
|
28
|
+
'access_key',
|
|
29
|
+
'private_key',
|
|
30
|
+
'authorization',
|
|
31
|
+
'auth',
|
|
32
|
+
'credential',
|
|
33
|
+
'cookie',
|
|
34
|
+
'session',
|
|
35
|
+
'bearer',
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* One-shot deprecation warning bookkeeping for legacy
|
|
39
|
+
* `observability.redaction.*` keys (sync finding CRITICAL #4). Mirrors the
|
|
40
|
+
* cross-language pattern — warn once per process when legacy keys are read,
|
|
41
|
+
* pointing migrators at the canonical `obs.redaction.*` namespace.
|
|
42
|
+
*/
|
|
43
|
+
const _REDACTION_LEGACY_DEPRECATION_EMITTED = { value: false };
|
|
44
|
+
function _emitRedactionLegacyDeprecation(legacyKeys) {
|
|
45
|
+
if (_REDACTION_LEGACY_DEPRECATION_EMITTED.value)
|
|
46
|
+
return;
|
|
47
|
+
_REDACTION_LEGACY_DEPRECATION_EMITTED.value = true;
|
|
48
|
+
console.warn(`[apcore] Config keys ${legacyKeys.join(', ')} are deprecated; ` +
|
|
49
|
+
'use obs.redaction.sensitive_keys / obs.redaction.regex_patterns / obs.redaction.replacement instead. ' +
|
|
50
|
+
'Legacy keys will be removed in a future release.');
|
|
51
|
+
}
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// RedactionConfig
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
const PROTECTED_LOG_FIELDS = new Set([
|
|
56
|
+
'trace_id',
|
|
57
|
+
'caller_id',
|
|
58
|
+
'target_id',
|
|
59
|
+
'module_id',
|
|
60
|
+
'span_id',
|
|
61
|
+
]);
|
|
62
|
+
/**
|
|
63
|
+
* Normalize a field name for substring matching: lowercase + collapse
|
|
64
|
+
* hyphens / spaces to underscores. Mirrors apcore-python's
|
|
65
|
+
* `_normalize_key_for_match` so `X-API-Key` matches `api_key`.
|
|
66
|
+
*/
|
|
67
|
+
function _normalizeKeyForMatch(s) {
|
|
68
|
+
return s.toLowerCase().replace(/[- ]/g, '_');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Compact normalization: lowercase with hyphen / underscore / space
|
|
72
|
+
* stripped entirely. Mirrors apcore-python's `_compact_for_match` so
|
|
73
|
+
* camelCase keys like `AccessKey` substring-match the `access_key` pattern
|
|
74
|
+
* (D-54 canonical default expectation).
|
|
75
|
+
*/
|
|
76
|
+
function _compactKeyForMatch(s) {
|
|
77
|
+
return s.toLowerCase().replace(/[-_ ]/g, '');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Compile a sensitive_keys glob into a case-insensitive RegExp matching the
|
|
81
|
+
* full lowercase key. Mirrors fnmatch semantics: `*` -> `.*`, `?` -> `.`,
|
|
82
|
+
* `[abc]` is treated as a character class as-is.
|
|
83
|
+
*/
|
|
84
|
+
function _globToRegExp(pattern) {
|
|
85
|
+
let out = '';
|
|
86
|
+
for (let i = 0; i < pattern.length; i++) {
|
|
87
|
+
const ch = pattern[i];
|
|
88
|
+
if (ch === '*')
|
|
89
|
+
out += '.*';
|
|
90
|
+
else if (ch === '?')
|
|
91
|
+
out += '.';
|
|
92
|
+
else if (ch === '[') {
|
|
93
|
+
const close = pattern.indexOf(']', i + 1);
|
|
94
|
+
if (close === -1) {
|
|
95
|
+
out += '\\[';
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
out += pattern.slice(i, close + 1);
|
|
99
|
+
i = close;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else if ('\\^$.|+(){}'.includes(ch)) {
|
|
103
|
+
out += '\\' + ch;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
out += ch;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return new RegExp(`^${out}$`, 'i');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Runtime-configurable redaction rules for ObsLoggingMiddleware.
|
|
113
|
+
* Applied in addition to schema-level x-sensitive annotations.
|
|
114
|
+
*/
|
|
115
|
+
export class RedactionConfig {
|
|
116
|
+
fieldPatterns;
|
|
117
|
+
valuePatterns;
|
|
118
|
+
replacement;
|
|
119
|
+
constructor(options = {}) {
|
|
120
|
+
this.fieldPatterns = options.fieldPatterns ?? [];
|
|
121
|
+
this.valuePatterns = options.valuePatterns ?? [];
|
|
122
|
+
this.replacement = options.replacement ?? '***REDACTED***';
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Build a RedactionConfig from an apcore {@link Config}.
|
|
126
|
+
*
|
|
127
|
+
* Reads canonical keys first (sync finding CRITICAL #4 — aligns with
|
|
128
|
+
* apcore-python / apcore-rust):
|
|
129
|
+
* - `obs.redaction.sensitive_keys` (string[])
|
|
130
|
+
* - `obs.redaction.regex_patterns` (string[]; compiled case-insensitively)
|
|
131
|
+
* - `obs.redaction.replacement` (string)
|
|
132
|
+
*
|
|
133
|
+
* For backwards compatibility, falls back to legacy keys (Issue #43 §5)
|
|
134
|
+
* when the canonical key is unset, and emits a one-shot deprecation
|
|
135
|
+
* warning the first time a legacy key is read:
|
|
136
|
+
* - `observability.redaction.field_patterns` (legacy of sensitive_keys)
|
|
137
|
+
* - `observability.redaction.value_patterns` (legacy of regex_patterns)
|
|
138
|
+
* - `observability.redaction.replacement` (legacy of replacement)
|
|
139
|
+
*
|
|
140
|
+
* Falls back to {@link DEFAULT_REDACTION_FIELD_PATTERNS} when no sensitive
|
|
141
|
+
* keys are configured so `_secret_*` and standard sensitive keys (apiKey,
|
|
142
|
+
* api_key, token, authorization, password) remain redacted out of the box.
|
|
143
|
+
*/
|
|
144
|
+
static fromConfig(config) {
|
|
145
|
+
const legacyKeysUsed = [];
|
|
146
|
+
// --- sensitive_keys (formerly field_patterns) ---
|
|
147
|
+
let rawFields = config.get('obs.redaction.sensitive_keys');
|
|
148
|
+
if (rawFields === undefined || rawFields === null) {
|
|
149
|
+
const legacyFields = config.get('observability.redaction.field_patterns');
|
|
150
|
+
if (legacyFields !== undefined && legacyFields !== null) {
|
|
151
|
+
rawFields = legacyFields;
|
|
152
|
+
legacyKeysUsed.push('observability.redaction.field_patterns');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// --- regex_patterns (formerly value_patterns) ---
|
|
156
|
+
let rawValues = config.get('obs.redaction.regex_patterns');
|
|
157
|
+
if (rawValues === undefined || rawValues === null) {
|
|
158
|
+
const legacyValues = config.get('observability.redaction.value_patterns');
|
|
159
|
+
if (legacyValues !== undefined && legacyValues !== null) {
|
|
160
|
+
rawValues = legacyValues;
|
|
161
|
+
legacyKeysUsed.push('observability.redaction.value_patterns');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// --- replacement ---
|
|
165
|
+
let replacement = config.get('obs.redaction.replacement');
|
|
166
|
+
if (replacement === undefined || replacement === null) {
|
|
167
|
+
const legacyReplacement = config.get('observability.redaction.replacement');
|
|
168
|
+
if (legacyReplacement !== undefined && legacyReplacement !== null) {
|
|
169
|
+
replacement = legacyReplacement;
|
|
170
|
+
legacyKeysUsed.push('observability.redaction.replacement');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (legacyKeysUsed.length > 0) {
|
|
174
|
+
_emitRedactionLegacyDeprecation(legacyKeysUsed);
|
|
175
|
+
}
|
|
176
|
+
const fieldPatterns = Array.isArray(rawFields) && rawFields.length > 0
|
|
177
|
+
? rawFields.filter((p) => typeof p === 'string')
|
|
178
|
+
: [...DEFAULT_REDACTION_FIELD_PATTERNS];
|
|
179
|
+
const valueStrings = Array.isArray(rawValues)
|
|
180
|
+
? rawValues.filter((p) => typeof p === 'string')
|
|
181
|
+
: [];
|
|
182
|
+
const valuePatterns = valueStrings.map((p) => {
|
|
183
|
+
try {
|
|
184
|
+
return new RegExp(p, 'i');
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Drop invalid patterns rather than throwing at logger init.
|
|
188
|
+
return /(?!)/; // never matches
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return new RedactionConfig({
|
|
192
|
+
fieldPatterns,
|
|
193
|
+
valuePatterns,
|
|
194
|
+
replacement: typeof replacement === 'string' ? replacement : undefined,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
/** Apply redaction rules to a flat object of field name → value. */
|
|
198
|
+
apply(obj) {
|
|
199
|
+
const result = {};
|
|
200
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
201
|
+
if (this._shouldRedact(k, v)) {
|
|
202
|
+
result[k] = this.replacement;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
result[k] = v;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
210
|
+
_shouldRedact(fieldName, value) {
|
|
211
|
+
if (PROTECTED_LOG_FIELDS.has(fieldName))
|
|
212
|
+
return false;
|
|
213
|
+
const lowerKey = fieldName.toLowerCase();
|
|
214
|
+
const normKey = _normalizeKeyForMatch(fieldName);
|
|
215
|
+
const compactKey = _compactKeyForMatch(fieldName);
|
|
216
|
+
for (const pattern of this.fieldPatterns) {
|
|
217
|
+
if (!pattern)
|
|
218
|
+
continue;
|
|
219
|
+
const lowerPat = pattern.toLowerCase();
|
|
220
|
+
const isGlob = /[*?[]/.test(lowerPat);
|
|
221
|
+
if (isGlob) {
|
|
222
|
+
if (_globToRegExp(lowerPat).test(lowerKey))
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// Plain case-insensitive substring match with hyphen/space ↔ underscore
|
|
227
|
+
// equivalence (apcore-python behavioral parity).
|
|
228
|
+
const normPat = _normalizeKeyForMatch(pattern);
|
|
229
|
+
if (normKey.includes(normPat))
|
|
230
|
+
return true;
|
|
231
|
+
// Also try the compact (separator-stripped) form so that camelCase
|
|
232
|
+
// keys like "AccessKey" match the "access_key" canonical pattern.
|
|
233
|
+
const compactPat = _compactKeyForMatch(pattern);
|
|
234
|
+
if (compactKey.includes(compactPat))
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (typeof value === 'string') {
|
|
239
|
+
for (const pattern of this.valuePatterns) {
|
|
240
|
+
const re = pattern instanceof RegExp ? pattern : new RegExp(pattern);
|
|
241
|
+
if (re.test(value))
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// ---------------------------------------------------------------------------
|
|
249
|
+
// ContextLogger
|
|
250
|
+
// ---------------------------------------------------------------------------
|
|
5
251
|
const LEVELS = {
|
|
6
252
|
trace: 0,
|
|
7
253
|
debug: 10,
|
|
@@ -45,7 +291,8 @@ export class ContextLogger {
|
|
|
45
291
|
static fromContext(context, name, options) {
|
|
46
292
|
const logger = new ContextLogger({ name, ...options });
|
|
47
293
|
logger._traceId = context.traceId;
|
|
48
|
-
logger._moduleId =
|
|
294
|
+
logger._moduleId =
|
|
295
|
+
context.callChain.length > 0 ? context.callChain[context.callChain.length - 1] : null;
|
|
49
296
|
logger._callerId = context.callerId;
|
|
50
297
|
return logger;
|
|
51
298
|
}
|
|
@@ -72,13 +319,20 @@ export class ContextLogger {
|
|
|
72
319
|
this._output.write(JSON.stringify(entry) + '\n');
|
|
73
320
|
}
|
|
74
321
|
else {
|
|
75
|
-
const ts = now
|
|
322
|
+
const ts = now
|
|
323
|
+
.toISOString()
|
|
324
|
+
.replace('T', ' ')
|
|
325
|
+
.replace(/\.\d+Z$/, '');
|
|
76
326
|
const lvl = levelName.toUpperCase();
|
|
77
327
|
const trace = this._traceId ?? 'none';
|
|
78
328
|
const mod = this._moduleId ?? 'none';
|
|
79
329
|
let extrasStr = '';
|
|
80
330
|
if (redactedExtra) {
|
|
81
|
-
extrasStr =
|
|
331
|
+
extrasStr =
|
|
332
|
+
' ' +
|
|
333
|
+
Object.entries(redactedExtra)
|
|
334
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
335
|
+
.join(' ');
|
|
82
336
|
}
|
|
83
337
|
this._output.write(`${ts} [${lvl}] [trace=${trace}] [module=${mod}] ${message}${extrasStr}\n`);
|
|
84
338
|
}
|
|
@@ -106,11 +360,13 @@ export class ObsLoggingMiddleware extends Middleware {
|
|
|
106
360
|
_logger;
|
|
107
361
|
_logInputs;
|
|
108
362
|
_logOutputs;
|
|
363
|
+
_redactionConfig;
|
|
109
364
|
constructor(options) {
|
|
110
365
|
super();
|
|
111
366
|
this._logger = options?.logger ?? new ContextLogger({ name: 'apcore.obs_logging' });
|
|
112
367
|
this._logInputs = options?.logInputs ?? true;
|
|
113
368
|
this._logOutputs = options?.logOutputs ?? true;
|
|
369
|
+
this._redactionConfig = options?.redactionConfig ?? null;
|
|
114
370
|
}
|
|
115
371
|
before(moduleId, inputs, context) {
|
|
116
372
|
const starts = context.data['_apcore.mw.logging.obs_starts'] ?? [];
|
|
@@ -121,7 +377,11 @@ export class ObsLoggingMiddleware extends Middleware {
|
|
|
121
377
|
caller_id: context.callerId,
|
|
122
378
|
};
|
|
123
379
|
if (this._logInputs) {
|
|
124
|
-
|
|
380
|
+
let loggableInputs = (context.redactedInputs ?? inputs);
|
|
381
|
+
if (this._redactionConfig !== null) {
|
|
382
|
+
loggableInputs = this._redactionConfig.apply(loggableInputs);
|
|
383
|
+
}
|
|
384
|
+
extra['inputs'] = loggableInputs;
|
|
125
385
|
}
|
|
126
386
|
this._logger.info('Module call started', extra);
|
|
127
387
|
return null;
|
|
@@ -141,7 +401,11 @@ export class ObsLoggingMiddleware extends Middleware {
|
|
|
141
401
|
// fields (API keys, tokens) do not leak into logs. The executor has
|
|
142
402
|
// already applied the schema; falling back to `output` preserves
|
|
143
403
|
// behavior for callers invoking the middleware outside the pipeline.
|
|
144
|
-
|
|
404
|
+
let loggableOutput = (context.redactedOutput ?? output);
|
|
405
|
+
if (this._redactionConfig !== null) {
|
|
406
|
+
loggableOutput = this._redactionConfig.apply(loggableOutput);
|
|
407
|
+
}
|
|
408
|
+
extra['output'] = loggableOutput;
|
|
145
409
|
}
|
|
146
410
|
this._logger.info('Module call completed', extra);
|
|
147
411
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-logger.js","sourceRoot":"","sources":["../../src/observability/context-logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-logger.js","sourceRoot":"","sources":["../../src/observability/context-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Error history with
|
|
2
|
+
* Error history with SHA-256 fingerprinting, min-heap O(log N) eviction,
|
|
3
|
+
* and pluggable observability storage.
|
|
3
4
|
*/
|
|
4
5
|
import { ModuleError } from '../errors.js';
|
|
6
|
+
import { type ObservabilityStore } from './store.js';
|
|
7
|
+
import { type StorageBackend } from './storage.js';
|
|
5
8
|
export interface ErrorEntry {
|
|
6
9
|
readonly moduleId: string;
|
|
7
10
|
readonly code: string;
|
|
8
11
|
readonly message: string;
|
|
9
12
|
readonly aiGuidance: string | null;
|
|
10
13
|
readonly timestamp: string;
|
|
14
|
+
readonly fingerprint: string;
|
|
11
15
|
count: number;
|
|
12
16
|
firstOccurred: string;
|
|
13
17
|
lastOccurred: string;
|
|
14
18
|
}
|
|
19
|
+
/** Replace ephemeral values with placeholders before fingerprint hashing. */
|
|
20
|
+
export declare function normalizeMessage(msg: string): string;
|
|
21
|
+
/** Compute SHA-256(error_code:module_id:normalized_message) as 64-char hex. */
|
|
22
|
+
export declare function computeFingerprint(errorCode: string, moduleId: string, message: string): string;
|
|
23
|
+
export interface ErrorHistoryOptions {
|
|
24
|
+
maxEntriesPerModule?: number;
|
|
25
|
+
maxTotalEntries?: number;
|
|
26
|
+
store?: ObservabilityStore;
|
|
27
|
+
/** Pluggable key/value storage backend (Issue #43 §1). Optional. */
|
|
28
|
+
storage?: StorageBackend;
|
|
29
|
+
}
|
|
15
30
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
31
|
+
* Thread-safe error tracker with min-heap O(log N) eviction and SHA-256 deduplication.
|
|
32
|
+
*
|
|
33
|
+
* Data structures:
|
|
34
|
+
* _fpIndex: fingerprint → ErrorEntry O(1) dedup lookup
|
|
35
|
+
* _moduleIndex: module_id → ErrorEntry[] O(1) module lookup
|
|
36
|
+
* _heap: min-heap keyed on (lastOccurred, seq) O(log N) eviction of oldest
|
|
37
|
+
*
|
|
38
|
+
* Lazy deletion: stale heap items (from dedup timestamp refreshes) are skipped on pop.
|
|
19
39
|
*/
|
|
20
40
|
export declare class ErrorHistory {
|
|
21
41
|
private readonly _maxEntriesPerModule;
|
|
22
42
|
private readonly _maxTotalEntries;
|
|
23
|
-
private readonly
|
|
24
|
-
|
|
43
|
+
private readonly _store;
|
|
44
|
+
private readonly _storage;
|
|
45
|
+
private readonly _fpIndex;
|
|
46
|
+
private readonly _moduleIndex;
|
|
47
|
+
private readonly _heap;
|
|
48
|
+
private _seq;
|
|
49
|
+
constructor(options?: ErrorHistoryOptions);
|
|
50
|
+
get store(): ObservabilityStore;
|
|
51
|
+
/** The pluggable storage backend (Issue #43 §1). */
|
|
52
|
+
get storage(): StorageBackend;
|
|
25
53
|
record(moduleId: string, error: ModuleError): void;
|
|
26
54
|
get(moduleId: string, limit?: number): ErrorEntry[];
|
|
55
|
+
getAll(limit?: number): ErrorEntry[];
|
|
27
56
|
clear(): void;
|
|
28
57
|
clearModule(moduleId: string): void;
|
|
29
|
-
getAll(limit?: number): ErrorEntry[];
|
|
30
58
|
private _evictModule;
|
|
31
59
|
private _evictTotal;
|
|
60
|
+
private _popOldest;
|
|
32
61
|
}
|
|
33
62
|
//# sourceMappingURL=error-history.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-history.d.ts","sourceRoot":"","sources":["../../src/observability/error-history.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"error-history.d.ts","sourceRoot":"","sources":["../../src/observability/error-history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAA8B,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE3E,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,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAcpD;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI/F;AAsED,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,oEAAoE;IACpE,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IACrE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,IAAI,CAAK;gBAEL,OAAO,GAAE,mBAAwB;IAO7C,IAAI,KAAK,IAAI,kBAAkB,CAE9B;IAED,oDAAoD;IACpD,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAyClD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAMnD,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAMpC,KAAK,IAAI,IAAI;IAMb,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUnC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;CAmBnB"}
|