apcore-js 0.7.1 → 0.9.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 (80) hide show
  1. package/README.md +11 -2
  2. package/dist/acl.d.ts +18 -1
  3. package/dist/acl.d.ts.map +1 -1
  4. package/dist/acl.js +46 -5
  5. package/dist/acl.js.map +1 -1
  6. package/dist/config.d.ts +34 -1
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +251 -9
  9. package/dist/config.js.map +1 -1
  10. package/dist/context.d.ts +7 -10
  11. package/dist/context.d.ts.map +1 -1
  12. package/dist/context.js +8 -11
  13. package/dist/context.js.map +1 -1
  14. package/dist/error-code-registry.d.ts +26 -0
  15. package/dist/error-code-registry.d.ts.map +1 -0
  16. package/dist/error-code-registry.js +91 -0
  17. package/dist/error-code-registry.js.map +1 -0
  18. package/dist/errors.d.ts +2 -0
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +5 -3
  21. package/dist/errors.js.map +1 -1
  22. package/dist/executor.d.ts +17 -4
  23. package/dist/executor.d.ts.map +1 -1
  24. package/dist/executor.js +133 -58
  25. package/dist/executor.js.map +1 -1
  26. package/dist/index.d.ts +13 -7
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +12 -5
  29. package/dist/index.js.map +1 -1
  30. package/dist/middleware/index.d.ts +2 -0
  31. package/dist/middleware/index.d.ts.map +1 -1
  32. package/dist/middleware/index.js +1 -0
  33. package/dist/middleware/index.js.map +1 -1
  34. package/dist/middleware/manager.d.ts +1 -0
  35. package/dist/middleware/manager.d.ts.map +1 -1
  36. package/dist/middleware/manager.js +1 -0
  37. package/dist/middleware/manager.js.map +1 -1
  38. package/dist/middleware/retry.d.ts +31 -0
  39. package/dist/middleware/retry.d.ts.map +1 -0
  40. package/dist/middleware/retry.js +67 -0
  41. package/dist/middleware/retry.js.map +1 -0
  42. package/dist/module.d.ts +12 -0
  43. package/dist/module.d.ts.map +1 -1
  44. package/dist/module.js +7 -0
  45. package/dist/module.js.map +1 -1
  46. package/dist/observability/context-logger.d.ts +1 -1
  47. package/dist/observability/context-logger.d.ts.map +1 -1
  48. package/dist/observability/context-logger.js.map +1 -1
  49. package/dist/registry/registry.d.ts +49 -0
  50. package/dist/registry/registry.d.ts.map +1 -1
  51. package/dist/registry/registry.js +122 -0
  52. package/dist/registry/registry.js.map +1 -1
  53. package/dist/schema/exporter.d.ts.map +1 -1
  54. package/dist/schema/exporter.js +1 -0
  55. package/dist/schema/exporter.js.map +1 -1
  56. package/dist/utils/call-chain.d.ts +23 -0
  57. package/dist/utils/call-chain.d.ts.map +1 -0
  58. package/dist/utils/call-chain.js +50 -0
  59. package/dist/utils/call-chain.js.map +1 -0
  60. package/dist/utils/error-propagation.d.ts +18 -0
  61. package/dist/utils/error-propagation.d.ts.map +1 -0
  62. package/dist/utils/error-propagation.js +35 -0
  63. package/dist/utils/error-propagation.js.map +1 -0
  64. package/dist/utils/index.d.ts +4 -1
  65. package/dist/utils/index.d.ts.map +1 -1
  66. package/dist/utils/index.js +4 -1
  67. package/dist/utils/index.js.map +1 -1
  68. package/dist/utils/normalize.d.ts +18 -0
  69. package/dist/utils/normalize.d.ts.map +1 -0
  70. package/dist/utils/normalize.js +61 -0
  71. package/dist/utils/normalize.js.map +1 -0
  72. package/dist/utils/pattern.d.ts +15 -0
  73. package/dist/utils/pattern.d.ts.map +1 -1
  74. package/dist/utils/pattern.js +31 -0
  75. package/dist/utils/pattern.js.map +1 -1
  76. package/dist/version.d.ts +27 -0
  77. package/dist/version.d.ts.map +1 -0
  78. package/dist/version.js +104 -0
  79. package/dist/version.js.map +1 -0
  80. package/package.json +3 -3
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <div align="center">
2
- <img src="https://raw.githubusercontent.com/aipartnerup/apcore-typescript/main/apcore-logo.svg" alt="apcore logo" width="200"/>
2
+ <img src="https://raw.githubusercontent.com/aipartnerup/apcore/main/apcore-logo.svg" alt="apcore logo" width="200"/>
3
3
  </div>
4
4
 
5
5
  # apcore
@@ -20,6 +20,11 @@ apcore provides a unified task orchestration framework with schema validation, a
20
20
  - **Observability** — Tracing (spans + exporters), metrics (counters + histograms + Prometheus export), structured logging with redaction
21
21
  - **Schema export** — JSON/YAML schema export with strict and compact modes
22
22
 
23
+ ## Documentation
24
+
25
+ For full documentation, including Quick Start guides for both Python and TypeScript, visit:
26
+ **[https://aipartnerup.github.io/apcore/getting-started.html](https://aipartnerup.github.io/apcore/getting-started.html)**
27
+
23
28
  ## Requirements
24
29
 
25
30
  - Node.js >= 18.0.0
@@ -65,10 +70,14 @@ src/
65
70
  config.ts # Dot-path configuration accessor
66
71
  acl.ts # Access control with pattern matching
67
72
  approval.ts # Pluggable approval gate (handlers, request/result types)
73
+ async-task.ts # Async task manager
74
+ cancel.ts # Cancellation token support
68
75
  decorator.ts # FunctionModule class and helpers
69
76
  bindings.ts # YAML binding loader
70
- errors.ts # Error hierarchy (20+ typed errors)
77
+ errors.ts # Error hierarchy (30+ typed errors)
78
+ extensions.ts # Extension manager
71
79
  module.ts # Module types and annotations
80
+ trace-context.ts # W3C trace context (inject/extract)
72
81
  middleware/
73
82
  base.ts # Middleware base class
74
83
  manager.ts # MiddlewareManager (onion model)
package/dist/acl.d.ts CHANGED
@@ -9,14 +9,31 @@ export interface ACLRule {
9
9
  description: string;
10
10
  conditions?: Record<string, unknown> | null;
11
11
  }
12
+ /** Structured record of an ACL check decision. */
13
+ export interface AuditEntry {
14
+ readonly timestamp: string;
15
+ readonly callerId: string;
16
+ readonly targetId: string;
17
+ readonly decision: string;
18
+ readonly reason: string;
19
+ readonly matchedRule: string | null;
20
+ readonly matchedRuleIndex: number | null;
21
+ readonly identityType: string | null;
22
+ readonly roles: readonly string[];
23
+ readonly callDepth: number | null;
24
+ readonly traceId: string | null;
25
+ }
26
+ export type AuditLogger = (entry: AuditEntry) => void;
12
27
  export declare class ACL {
13
28
  private _rules;
14
29
  private _defaultEffect;
15
30
  private _yamlPath;
31
+ private _auditLogger;
16
32
  debug: boolean;
17
- constructor(rules: ACLRule[], defaultEffect?: string);
33
+ constructor(rules: ACLRule[], defaultEffect?: string, auditLogger?: AuditLogger | null);
18
34
  static load(yamlPath: string): ACL;
19
35
  check(callerId: string | null, targetId: string, context?: Context | null): boolean;
36
+ private _buildAuditEntry;
20
37
  private _matchPattern;
21
38
  private _matchesRule;
22
39
  private _checkConditions;
package/dist/acl.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAsCD,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,KAAK,EAAE,OAAO,CAAS;gBAEX,KAAK,EAAE,OAAO,EAAE,EAAE,aAAa,GAAE,MAAe;IAQ5D,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IAqClC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO;IAYnF,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI5B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO;IAczD,MAAM,IAAI,IAAI;CAQf"}
1
+ {"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAsCtD,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAA4B;IAChD,KAAK,EAAE,OAAO,CAAS;gBAEX,KAAK,EAAE,OAAO,EAAE,EAAE,aAAa,GAAE,MAAe,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAS9F,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IAqClC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO;IA6BnF,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI5B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO;IAczD,MAAM,IAAI,IAAI;CASf"}
package/dist/acl.js CHANGED
@@ -44,13 +44,15 @@ export class ACL {
44
44
  _rules;
45
45
  _defaultEffect;
46
46
  _yamlPath = null;
47
+ _auditLogger = null;
47
48
  debug = false;
48
- constructor(rules, defaultEffect = 'deny') {
49
+ constructor(rules, defaultEffect = 'deny', auditLogger) {
49
50
  if (defaultEffect !== 'allow' && defaultEffect !== 'deny') {
50
51
  throw new ACLRuleError(`Invalid default_effect '${defaultEffect}', must be 'allow' or 'deny'`);
51
52
  }
52
53
  this._rules = [...rules];
53
54
  this._defaultEffect = defaultEffect;
55
+ this._auditLogger = auditLogger ?? null;
54
56
  }
55
57
  static load(yamlPath) {
56
58
  const { existsSync, readFileSync } = _nodeFs;
@@ -86,12 +88,50 @@ export class ACL {
86
88
  }
87
89
  check(callerId, targetId, context) {
88
90
  const effectiveCaller = callerId === null ? '@external' : callerId;
89
- for (const rule of this._rules) {
90
- if (this._matchesRule(rule, effectiveCaller, targetId, context ?? null)) {
91
- return rule.effect === 'allow';
91
+ const ctx = context ?? null;
92
+ for (let idx = 0; idx < this._rules.length; idx++) {
93
+ const rule = this._rules[idx];
94
+ if (this._matchesRule(rule, effectiveCaller, targetId, ctx)) {
95
+ const decision = rule.effect === 'allow';
96
+ if (this._auditLogger) {
97
+ this._auditLogger(this._buildAuditEntry(effectiveCaller, targetId, decision ? 'allow' : 'deny', 'rule_match', rule, idx, ctx));
98
+ }
99
+ return decision;
92
100
  }
93
101
  }
94
- return this._defaultEffect === 'allow';
102
+ const defaultDecision = this._defaultEffect === 'allow';
103
+ if (this._auditLogger) {
104
+ const reason = this._rules.length === 0 ? 'no_rules' : 'default_effect';
105
+ this._auditLogger(this._buildAuditEntry(effectiveCaller, targetId, defaultDecision ? 'allow' : 'deny', reason, null, null, ctx));
106
+ }
107
+ return defaultDecision;
108
+ }
109
+ _buildAuditEntry(callerId, targetId, decision, reason, matchedRule, matchedRuleIndex, context) {
110
+ let identityType = null;
111
+ let roles = [];
112
+ let callDepth = null;
113
+ let traceId = null;
114
+ if (context !== null) {
115
+ traceId = context.traceId;
116
+ callDepth = context.callChain.length;
117
+ if (context.identity !== null) {
118
+ identityType = context.identity.type;
119
+ roles = context.identity.roles;
120
+ }
121
+ }
122
+ return {
123
+ timestamp: new Date().toISOString(),
124
+ callerId,
125
+ targetId,
126
+ decision,
127
+ reason,
128
+ matchedRule: matchedRule?.description ?? null,
129
+ matchedRuleIndex,
130
+ identityType,
131
+ roles,
132
+ callDepth,
133
+ traceId,
134
+ };
95
135
  }
96
136
  _matchPattern(pattern, value, context) {
97
137
  if (pattern === '@external')
@@ -170,6 +210,7 @@ export class ACL {
170
210
  const reloaded = ACL.load(this._yamlPath);
171
211
  this._rules = reloaded._rules;
172
212
  this._defaultEffect = reloaded._defaultEffect;
213
+ // Preserve auditLogger — reload only refreshes rules and default effect
173
214
  }
174
215
  }
175
216
  //# sourceMappingURL=acl.js.map
package/dist/acl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"acl.js","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acl.js","sourceRoot":"","sources":["../src/acl.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,9 +1,42 @@
1
1
  /**
2
- * Configuration accessor with dot-path key support.
2
+ * Configuration loading, validation, and environment variable overrides (Algorithm A12).
3
+ */
4
+ /**
5
+ * Configuration system with YAML loading, env overrides, and validation.
6
+ *
7
+ * Merge priority (highest wins): environment variables > config file > defaults.
8
+ *
9
+ * Backward compatible: `new Config(data)` still works for in-memory configuration.
3
10
  */
4
11
  export declare class Config {
5
12
  private _data;
13
+ private _yamlPath;
6
14
  constructor(data?: Record<string, unknown>);
15
+ /**
16
+ * Load configuration from a YAML file with env overrides.
17
+ */
18
+ static load(yamlPath: string, options?: {
19
+ validate?: boolean;
20
+ }): Config;
21
+ /** Create a Config from default values with env overrides applied. */
22
+ static fromDefaults(): Config;
23
+ /** Get a configuration value by dot-path key. */
7
24
  get(key: string, defaultValue?: unknown): unknown;
25
+ /** Set a configuration value by dot-path key. */
26
+ set(key: string, value: unknown): void;
27
+ /** Return a deep copy of the raw config data. */
28
+ get data(): Record<string, unknown>;
29
+ /**
30
+ * Validate the configuration per Algorithm A12.
31
+ *
32
+ * Checks required fields, type constraints, and semantic rules.
33
+ * Collects all errors before raising.
34
+ */
35
+ validate(): void;
36
+ /**
37
+ * Re-read configuration from the original YAML file.
38
+ * Only works if the Config was created via Config.load().
39
+ */
40
+ reload(): void;
8
41
  }
9
42
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAA0B;gBAE3B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO;CAYlD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsKH;;;;;;GAMG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1C;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAoCvE,sEAAsE;IACtE,MAAM,CAAC,YAAY,IAAI,MAAM;IAK7B,iDAAiD;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO;IAIjD,iDAAiD;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC,iDAAiD;IACjD,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElC;IAED;;;;;OAKG;IACH,QAAQ,IAAI,IAAI;IA2BhB;;;OAGG;IACH,MAAM,IAAI,IAAI;CAOf"}
package/dist/config.js CHANGED
@@ -1,23 +1,265 @@
1
1
  /**
2
- * Configuration accessor with dot-path key support.
2
+ * Configuration loading, validation, and environment variable overrides (Algorithm A12).
3
+ */
4
+ import yaml from 'js-yaml';
5
+ import { ConfigError, ConfigNotFoundError } from './errors.js';
6
+ // Lazy-load Node.js built-in modules for browser compatibility
7
+ let _nodeFs = null;
8
+ try {
9
+ _nodeFs = await import('node:fs');
10
+ }
11
+ catch { /* browser environment */ }
12
+ let _nodeProcess = null;
13
+ try {
14
+ _nodeProcess = await import('node:process');
15
+ }
16
+ catch { /* browser environment */ }
17
+ /** Environment variable prefix for overrides. */
18
+ const ENV_PREFIX = 'APCORE_';
19
+ /** Required configuration fields (dot-paths). */
20
+ const REQUIRED_FIELDS = [
21
+ 'version',
22
+ 'extensions.root',
23
+ 'schema.root',
24
+ 'acl.root',
25
+ 'acl.default_effect',
26
+ 'project.name',
27
+ ];
28
+ /** Field constraints: field -> [validator, errorMessage]. */
29
+ const CONSTRAINTS = {
30
+ 'acl.default_effect': [
31
+ (v) => v === 'allow' || v === 'deny',
32
+ "must be 'allow' or 'deny'",
33
+ ],
34
+ 'observability.tracing.sampling_rate': [
35
+ (v) => typeof v === 'number' && v >= 0.0 && v <= 1.0,
36
+ 'must be a number in [0.0, 1.0]',
37
+ ],
38
+ 'extensions.max_depth': [
39
+ (v) => typeof v === 'number' && Number.isInteger(v) && v >= 1 && v <= 16,
40
+ 'must be an integer in [1, 16]',
41
+ ],
42
+ 'executor.default_timeout': [
43
+ (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0,
44
+ 'must be a non-negative integer (milliseconds)',
45
+ ],
46
+ 'executor.global_timeout': [
47
+ (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0,
48
+ 'must be a non-negative integer (milliseconds)',
49
+ ],
50
+ 'executor.max_call_depth': [
51
+ (v) => typeof v === 'number' && Number.isInteger(v) && v >= 1,
52
+ 'must be a positive integer',
53
+ ],
54
+ 'executor.max_module_repeat': [
55
+ (v) => typeof v === 'number' && Number.isInteger(v) && v >= 1,
56
+ 'must be a positive integer',
57
+ ],
58
+ };
59
+ /** Default configuration values. */
60
+ const DEFAULTS = {
61
+ version: '0.8.0',
62
+ extensions: {
63
+ root: './extensions',
64
+ auto_discover: true,
65
+ max_depth: 8,
66
+ follow_symlinks: false,
67
+ },
68
+ schema: {
69
+ root: './schemas',
70
+ strategy: 'yaml_first',
71
+ max_ref_depth: 32,
72
+ },
73
+ acl: {
74
+ root: './acl',
75
+ default_effect: 'deny',
76
+ },
77
+ executor: {
78
+ default_timeout: 30000,
79
+ global_timeout: 60000,
80
+ max_call_depth: 32,
81
+ max_module_repeat: 3,
82
+ },
83
+ observability: {
84
+ tracing: {
85
+ enabled: false,
86
+ sampling_rate: 1.0,
87
+ },
88
+ metrics: {
89
+ enabled: false,
90
+ },
91
+ },
92
+ project: {
93
+ name: 'apcore',
94
+ },
95
+ };
96
+ function deepMergeDicts(base, override) {
97
+ const result = { ...base };
98
+ for (const [key, value] of Object.entries(override)) {
99
+ if (key in result &&
100
+ typeof result[key] === 'object' && result[key] !== null && !Array.isArray(result[key]) &&
101
+ typeof value === 'object' && value !== null && !Array.isArray(value)) {
102
+ result[key] = deepMergeDicts(result[key], value);
103
+ }
104
+ else {
105
+ result[key] = value;
106
+ }
107
+ }
108
+ return result;
109
+ }
110
+ function getNested(data, dotPath, defaultValue) {
111
+ const parts = dotPath.split('.');
112
+ let current = data;
113
+ for (const part of parts) {
114
+ if (current !== null && typeof current === 'object' && part in current) {
115
+ current = current[part];
116
+ }
117
+ else {
118
+ return defaultValue;
119
+ }
120
+ }
121
+ return current;
122
+ }
123
+ function setNested(data, dotPath, value) {
124
+ const parts = dotPath.split('.');
125
+ let current = data;
126
+ for (const part of parts.slice(0, -1)) {
127
+ if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {
128
+ current[part] = {};
129
+ }
130
+ current = current[part];
131
+ }
132
+ current[parts[parts.length - 1]] = value;
133
+ }
134
+ function coerceEnvValue(value) {
135
+ if (value.toLowerCase() === 'true')
136
+ return true;
137
+ if (value.toLowerCase() === 'false')
138
+ return false;
139
+ const asInt = parseInt(value, 10);
140
+ if (!isNaN(asInt) && String(asInt) === value)
141
+ return asInt;
142
+ const asFloat = parseFloat(value);
143
+ if (!isNaN(asFloat) && String(asFloat) === value)
144
+ return asFloat;
145
+ return value;
146
+ }
147
+ function applyEnvOverrides(data) {
148
+ const result = JSON.parse(JSON.stringify(data));
149
+ const env = _nodeProcess?.env ?? {};
150
+ for (const [envKey, envValue] of Object.entries(env)) {
151
+ if (!envKey.startsWith(ENV_PREFIX) || envValue === undefined)
152
+ continue;
153
+ const suffix = envKey.slice(ENV_PREFIX.length);
154
+ if (!suffix)
155
+ continue;
156
+ // Convert: single _ -> . (separator), double __ -> literal _
157
+ const dotPath = suffix.toLowerCase().replace(/__/g, '\x00').replace(/_/g, '.').replace(/\x00/g, '_');
158
+ setNested(result, dotPath, coerceEnvValue(envValue));
159
+ }
160
+ return result;
161
+ }
162
+ /**
163
+ * Configuration system with YAML loading, env overrides, and validation.
164
+ *
165
+ * Merge priority (highest wins): environment variables > config file > defaults.
166
+ *
167
+ * Backward compatible: `new Config(data)` still works for in-memory configuration.
3
168
  */
4
169
  export class Config {
5
170
  _data;
171
+ _yamlPath = null;
6
172
  constructor(data) {
7
173
  this._data = data ?? {};
8
174
  }
175
+ /**
176
+ * Load configuration from a YAML file with env overrides.
177
+ */
178
+ static load(yamlPath, options) {
179
+ const { existsSync, readFileSync } = _nodeFs;
180
+ if (!existsSync(yamlPath)) {
181
+ throw new ConfigNotFoundError(yamlPath);
182
+ }
183
+ let fileData;
184
+ try {
185
+ const content = readFileSync(yamlPath, 'utf-8');
186
+ fileData = yaml.load(content);
187
+ }
188
+ catch (e) {
189
+ if (e instanceof ConfigNotFoundError)
190
+ throw e;
191
+ throw new ConfigError(`Invalid YAML in ${yamlPath}: ${e}`);
192
+ }
193
+ if (fileData === null || fileData === undefined) {
194
+ fileData = {};
195
+ }
196
+ if (typeof fileData !== 'object' || Array.isArray(fileData)) {
197
+ throw new ConfigError(`Config file must be a mapping, got ${typeof fileData}`);
198
+ }
199
+ // Merge: defaults < file < env
200
+ let merged = deepMergeDicts(DEFAULTS, fileData);
201
+ merged = applyEnvOverrides(merged);
202
+ const config = new Config(merged);
203
+ config._yamlPath = yamlPath;
204
+ if (options?.validate !== false) {
205
+ config.validate();
206
+ }
207
+ return config;
208
+ }
209
+ /** Create a Config from default values with env overrides applied. */
210
+ static fromDefaults() {
211
+ const data = applyEnvOverrides({ ...DEFAULTS });
212
+ return new Config(data);
213
+ }
214
+ /** Get a configuration value by dot-path key. */
9
215
  get(key, defaultValue) {
10
- const parts = key.split('.');
11
- let current = this._data;
12
- for (const part of parts) {
13
- if (current !== null && typeof current === 'object' && part in current) {
14
- current = current[part];
216
+ return getNested(this._data, key, defaultValue);
217
+ }
218
+ /** Set a configuration value by dot-path key. */
219
+ set(key, value) {
220
+ setNested(this._data, key, value);
221
+ }
222
+ /** Return a deep copy of the raw config data. */
223
+ get data() {
224
+ return JSON.parse(JSON.stringify(this._data));
225
+ }
226
+ /**
227
+ * Validate the configuration per Algorithm A12.
228
+ *
229
+ * Checks required fields, type constraints, and semantic rules.
230
+ * Collects all errors before raising.
231
+ */
232
+ validate() {
233
+ const errors = [];
234
+ // 1. Required field check
235
+ for (const field of REQUIRED_FIELDS) {
236
+ const value = getNested(this._data, field);
237
+ if (value === undefined || value === null) {
238
+ errors.push(`Missing required field: '${field}'`);
15
239
  }
16
- else {
17
- return defaultValue;
240
+ }
241
+ // 2. Constraint validation
242
+ for (const [field, [checkFn, errMsg]] of Object.entries(CONSTRAINTS)) {
243
+ const value = getNested(this._data, field);
244
+ if (value !== undefined && value !== null && !checkFn(value)) {
245
+ errors.push(`Invalid value for '${field}': ${errMsg} (got ${JSON.stringify(value)})`);
18
246
  }
19
247
  }
20
- return current;
248
+ if (errors.length > 0) {
249
+ throw new ConfigError(`Configuration validation failed (${errors.length} error(s)):\n` +
250
+ errors.map((e) => ` - ${e}`).join('\n'));
251
+ }
252
+ }
253
+ /**
254
+ * Re-read configuration from the original YAML file.
255
+ * Only works if the Config was created via Config.load().
256
+ */
257
+ reload() {
258
+ if (this._yamlPath === null) {
259
+ throw new ConfigError('Cannot reload: Config was not loaded from a YAML file');
260
+ }
261
+ const reloaded = Config.load(this._yamlPath);
262
+ this._data = reloaded._data;
21
263
  }
22
264
  }
23
265
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,MAAM;IACT,KAAK,CAA0B;IAEvC,YAAY,IAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,YAAsB;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAK,OAAmC,EAAE,CAAC;gBACpG,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { CancelToken } from './cancel.js';
2
2
  import type { TraceParent } from './trace-context.js';
3
+ import { ContextLogger } from './observability/context-logger.js';
3
4
  /**
4
5
  * Execution context, identity, and context creation.
5
6
  */
@@ -10,7 +11,7 @@ export interface Identity {
10
11
  readonly attrs: Readonly<Record<string, unknown>>;
11
12
  }
12
13
  export declare function createIdentity(id: string, type?: string, roles?: string[], attrs?: Record<string, unknown>): Identity;
13
- export declare class Context {
14
+ export declare class Context<T = null> {
14
15
  readonly traceId: string;
15
16
  readonly callerId: string | null;
16
17
  readonly callChain: readonly string[];
@@ -18,8 +19,9 @@ export declare class Context {
18
19
  readonly identity: Identity | null;
19
20
  redactedInputs: Record<string, unknown> | null;
20
21
  readonly data: Record<string, unknown>;
22
+ readonly services: T;
21
23
  readonly cancelToken: CancelToken | null;
22
- constructor(traceId: string, callerId?: string | null, callChain?: string[], executor?: unknown, identity?: Identity | null, redactedInputs?: Record<string, unknown> | null, data?: Record<string, unknown>, cancelToken?: CancelToken | null);
24
+ constructor(traceId: string, callerId?: string | null, callChain?: string[], executor?: unknown, identity?: Identity | null, redactedInputs?: Record<string, unknown> | null, data?: Record<string, unknown>, cancelToken?: CancelToken | null, services?: T);
23
25
  /**
24
26
  * Create a new top-level Context with a generated UUID v4 traceId.
25
27
  *
@@ -27,16 +29,11 @@ export declare class Context {
27
29
  * converted to UUID format (8-4-4-4-12) and used instead of generating
28
30
  * a new one.
29
31
  */
30
- static create(executor?: unknown, identity?: Identity | null, data?: Record<string, unknown>, traceParent?: TraceParent | null): Context;
32
+ static create<S = null>(executor?: unknown, identity?: Identity | null, data?: Record<string, unknown>, traceParent?: TraceParent | null, services?: S): Context<S>;
31
33
  toJSON(): Record<string, unknown>;
32
34
  static fromJSON(data: Record<string, unknown>, executor?: unknown): Context;
33
- get logger(): {
34
- debug: (...args: unknown[]) => void;
35
- info: (...args: unknown[]) => void;
36
- warn: (...args: unknown[]) => void;
37
- error: (...args: unknown[]) => void;
38
- };
39
- child(targetModuleId: string): Context;
35
+ get logger(): ContextLogger;
36
+ child(targetModuleId: string): Context<T>;
40
37
  }
41
38
  /**
42
39
  * Interface for creating Context from framework-specific requests.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAe,EACrB,KAAK,GAAE,MAAM,EAAO,EACpB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAClC,QAAQ,CAEV;AAED,qBAAa,OAAO;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;gBAGvC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,SAAS,GAAE,MAAM,EAAO,EACxB,QAAQ,GAAE,OAAc,EACxB,QAAQ,GAAE,QAAQ,GAAG,IAAW,EAChC,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,EACrD,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,WAAW,GAAE,WAAW,GAAG,IAAW;IAYxC;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CACX,QAAQ,GAAE,OAAc,EACxB,QAAQ,GAAE,QAAQ,GAAG,IAAW,EAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,GAC/B,OAAO;IAmBV,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAsBjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;IAmB3E,IAAI,MAAM,IAAI;QAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAQjK;IAED,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;CAYvC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CAC1C"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAe,EACrB,KAAK,GAAE,MAAM,EAAO,EACpB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAClC,QAAQ,CAEV;AAED,qBAAa,OAAO,CAAC,CAAC,GAAG,IAAI;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;gBAGvC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,SAAS,GAAE,MAAM,EAAO,EACxB,QAAQ,GAAE,OAAc,EACxB,QAAQ,GAAE,QAAQ,GAAG,IAAW,EAChC,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAW,EACrD,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,WAAW,GAAE,WAAW,GAAG,IAAW,EACtC,QAAQ,GAAE,CAAa;IAazB;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EACpB,QAAQ,GAAE,OAAc,EACxB,QAAQ,GAAE,QAAQ,GAAG,IAAW,EAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,EAChC,QAAQ,CAAC,EAAE,CAAC,GACX,OAAO,CAAC,CAAC,CAAC;IAqBb,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAsBjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO;IAmB3E,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAa1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CAC1C"}