apcore-js 0.5.0 → 0.7.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 (319) hide show
  1. package/README.md +1 -1
  2. package/dist/acl.d.ts +27 -0
  3. package/dist/acl.d.ts.map +1 -0
  4. package/dist/acl.js +175 -0
  5. package/dist/acl.js.map +1 -0
  6. package/dist/approval.d.ts +85 -0
  7. package/dist/approval.d.ts.map +1 -0
  8. package/dist/approval.js +73 -0
  9. package/dist/approval.js.map +1 -0
  10. package/dist/async-task.d.ts +90 -0
  11. package/dist/async-task.d.ts.map +1 -0
  12. package/dist/async-task.js +215 -0
  13. package/dist/async-task.js.map +1 -0
  14. package/dist/bindings.d.ts +12 -0
  15. package/dist/bindings.d.ts.map +1 -0
  16. package/dist/bindings.js +185 -0
  17. package/dist/bindings.js.map +1 -0
  18. package/dist/cancel.d.ts +14 -0
  19. package/dist/cancel.d.ts.map +1 -0
  20. package/dist/cancel.js +27 -0
  21. package/dist/cancel.js.map +1 -0
  22. package/dist/config.d.ts +9 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +23 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/context.d.ts +50 -0
  27. package/dist/context.d.ts.map +1 -0
  28. package/dist/context.js +87 -0
  29. package/dist/context.js.map +1 -0
  30. package/dist/decorator.d.ts +57 -0
  31. package/dist/decorator.d.ts.map +1 -0
  32. package/dist/decorator.js +74 -0
  33. package/dist/decorator.js.map +1 -0
  34. package/dist/errors.d.ts +204 -0
  35. package/dist/errors.d.ts.map +1 -0
  36. package/dist/errors.js +364 -0
  37. package/dist/errors.js.map +1 -0
  38. package/dist/executor.d.ts +82 -0
  39. package/dist/executor.d.ts.map +1 -0
  40. package/dist/executor.js +489 -0
  41. package/dist/executor.js.map +1 -0
  42. package/dist/extensions.d.ts +58 -0
  43. package/dist/extensions.d.ts.map +1 -0
  44. package/dist/extensions.js +239 -0
  45. package/dist/extensions.js.map +1 -0
  46. package/{src/index.ts → dist/index.d.ts} +6 -63
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +45 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/middleware/adapters.d.ts +18 -0
  51. package/dist/middleware/adapters.d.ts.map +1 -0
  52. package/dist/middleware/adapters.js +25 -0
  53. package/dist/middleware/adapters.js.map +1 -0
  54. package/dist/middleware/base.d.ts +10 -0
  55. package/dist/middleware/base.d.ts.map +1 -0
  56. package/dist/middleware/base.js +15 -0
  57. package/dist/middleware/base.js.map +1 -0
  58. package/{src/middleware/index.ts → dist/middleware/index.d.ts} +1 -0
  59. package/dist/middleware/index.d.ts.map +1 -0
  60. package/dist/middleware/index.js +5 -0
  61. package/dist/middleware/index.js.map +1 -0
  62. package/dist/middleware/logging.d.ts +25 -0
  63. package/dist/middleware/logging.d.ts.map +1 -0
  64. package/dist/middleware/logging.js +64 -0
  65. package/dist/middleware/logging.js.map +1 -0
  66. package/dist/middleware/manager.d.ts +21 -0
  67. package/dist/middleware/manager.d.ts.map +1 -0
  68. package/dist/middleware/manager.js +77 -0
  69. package/dist/middleware/manager.js.map +1 -0
  70. package/dist/module.d.ts +31 -0
  71. package/dist/module.d.ts.map +1 -0
  72. package/dist/module.js +12 -0
  73. package/dist/module.js.map +1 -0
  74. package/dist/observability/context-logger.d.ts +54 -0
  75. package/dist/observability/context-logger.d.ts.map +1 -0
  76. package/dist/observability/context-logger.js +151 -0
  77. package/dist/observability/context-logger.js.map +1 -0
  78. package/{src/observability/index.ts → dist/observability/index.d.ts} +1 -0
  79. package/dist/observability/index.d.ts.map +1 -0
  80. package/dist/observability/index.js +4 -0
  81. package/dist/observability/index.js.map +1 -0
  82. package/dist/observability/metrics.d.ts +30 -0
  83. package/dist/observability/metrics.d.ts.map +1 -0
  84. package/dist/observability/metrics.js +177 -0
  85. package/dist/observability/metrics.js.map +1 -0
  86. package/dist/observability/tracing.d.ts +62 -0
  87. package/dist/observability/tracing.d.ts.map +1 -0
  88. package/dist/observability/tracing.js +184 -0
  89. package/dist/observability/tracing.js.map +1 -0
  90. package/dist/registry/dependencies.d.ts +6 -0
  91. package/dist/registry/dependencies.d.ts.map +1 -0
  92. package/dist/registry/dependencies.js +83 -0
  93. package/dist/registry/dependencies.js.map +1 -0
  94. package/dist/registry/entry-point.d.ts +6 -0
  95. package/dist/registry/entry-point.d.ts.map +1 -0
  96. package/dist/registry/entry-point.js +55 -0
  97. package/dist/registry/entry-point.js.map +1 -0
  98. package/{src/registry/index.ts → dist/registry/index.d.ts} +1 -0
  99. package/dist/registry/index.d.ts.map +1 -0
  100. package/dist/registry/index.js +8 -0
  101. package/dist/registry/index.js.map +1 -0
  102. package/dist/registry/metadata.d.ts +9 -0
  103. package/dist/registry/metadata.d.ts.map +1 -0
  104. package/dist/registry/metadata.js +105 -0
  105. package/dist/registry/metadata.js.map +1 -0
  106. package/dist/registry/registry.d.ts +102 -0
  107. package/dist/registry/registry.d.ts.map +1 -0
  108. package/dist/registry/registry.js +534 -0
  109. package/dist/registry/registry.js.map +1 -0
  110. package/dist/registry/scanner.d.ts +7 -0
  111. package/dist/registry/scanner.d.ts.map +1 -0
  112. package/dist/registry/scanner.js +164 -0
  113. package/dist/registry/scanner.js.map +1 -0
  114. package/dist/registry/schema-export.d.ts +9 -0
  115. package/dist/registry/schema-export.d.ts.map +1 -0
  116. package/dist/registry/schema-export.js +132 -0
  117. package/dist/registry/schema-export.js.map +1 -0
  118. package/dist/registry/types.d.ts +29 -0
  119. package/dist/registry/types.d.ts.map +1 -0
  120. package/dist/registry/types.js +5 -0
  121. package/dist/registry/types.js.map +1 -0
  122. package/dist/registry/validation.d.ts +9 -0
  123. package/dist/registry/validation.d.ts.map +1 -0
  124. package/dist/registry/validation.js +33 -0
  125. package/dist/registry/validation.js.map +1 -0
  126. package/dist/schema/annotations.d.ts +8 -0
  127. package/dist/schema/annotations.d.ts.map +1 -0
  128. package/dist/schema/annotations.js +52 -0
  129. package/dist/schema/annotations.js.map +1 -0
  130. package/dist/schema/exporter.d.ts +13 -0
  131. package/dist/schema/exporter.d.ts.map +1 -0
  132. package/dist/schema/exporter.js +71 -0
  133. package/dist/schema/exporter.js.map +1 -0
  134. package/dist/schema/index.d.ts +9 -0
  135. package/dist/schema/index.d.ts.map +1 -0
  136. package/{src/schema/index.ts → dist/schema/index.js} +1 -7
  137. package/dist/schema/index.js.map +1 -0
  138. package/dist/schema/loader.d.ts +30 -0
  139. package/dist/schema/loader.d.ts.map +1 -0
  140. package/dist/schema/loader.js +260 -0
  141. package/dist/schema/loader.js.map +1 -0
  142. package/dist/schema/ref-resolver.d.ts +19 -0
  143. package/dist/schema/ref-resolver.d.ts.map +1 -0
  144. package/dist/schema/ref-resolver.js +212 -0
  145. package/dist/schema/ref-resolver.js.map +1 -0
  146. package/dist/schema/strict.d.ts +7 -0
  147. package/dist/schema/strict.d.ts.map +1 -0
  148. package/dist/schema/strict.js +127 -0
  149. package/dist/schema/strict.js.map +1 -0
  150. package/dist/schema/types.d.ts +53 -0
  151. package/dist/schema/types.d.ts.map +1 -0
  152. package/dist/schema/types.js +31 -0
  153. package/dist/schema/types.js.map +1 -0
  154. package/dist/schema/validator.d.ts +16 -0
  155. package/dist/schema/validator.d.ts.map +1 -0
  156. package/dist/schema/validator.js +71 -0
  157. package/dist/schema/validator.js.map +1 -0
  158. package/dist/trace-context.d.ts +35 -0
  159. package/dist/trace-context.d.ts.map +1 -0
  160. package/dist/trace-context.js +86 -0
  161. package/dist/trace-context.js.map +1 -0
  162. package/dist/utils/index.d.ts +11 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +32 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/pattern.d.ts +5 -0
  167. package/dist/utils/pattern.d.ts.map +1 -0
  168. package/dist/utils/pattern.js +31 -0
  169. package/dist/utils/pattern.js.map +1 -0
  170. package/package.json +24 -3
  171. package/.claude/settings.local.json +0 -12
  172. package/.github/workflows/ci.yml +0 -39
  173. package/.gitmessage +0 -60
  174. package/.pre-commit-config.yaml +0 -28
  175. package/CHANGELOG.md +0 -214
  176. package/CLAUDE.md +0 -68
  177. package/apcore-logo.svg +0 -79
  178. package/planning/acl-system/overview.md +0 -54
  179. package/planning/acl-system/plan.md +0 -92
  180. package/planning/acl-system/state.json +0 -76
  181. package/planning/acl-system/tasks/acl-core.md +0 -226
  182. package/planning/acl-system/tasks/acl-rule.md +0 -92
  183. package/planning/acl-system/tasks/conditional-rules.md +0 -259
  184. package/planning/acl-system/tasks/pattern-matching.md +0 -152
  185. package/planning/acl-system/tasks/yaml-loading.md +0 -271
  186. package/planning/core-executor/overview.md +0 -53
  187. package/planning/core-executor/plan.md +0 -88
  188. package/planning/core-executor/state.json +0 -76
  189. package/planning/core-executor/tasks/async-support.md +0 -106
  190. package/planning/core-executor/tasks/execution-pipeline.md +0 -113
  191. package/planning/core-executor/tasks/redaction.md +0 -85
  192. package/planning/core-executor/tasks/safety-checks.md +0 -65
  193. package/planning/core-executor/tasks/setup.md +0 -75
  194. package/planning/decorator-bindings/overview.md +0 -62
  195. package/planning/decorator-bindings/plan.md +0 -104
  196. package/planning/decorator-bindings/state.json +0 -87
  197. package/planning/decorator-bindings/tasks/binding-directory.md +0 -79
  198. package/planning/decorator-bindings/tasks/binding-loader.md +0 -148
  199. package/planning/decorator-bindings/tasks/explicit-schemas.md +0 -85
  200. package/planning/decorator-bindings/tasks/function-module.md +0 -127
  201. package/planning/decorator-bindings/tasks/module-factory.md +0 -89
  202. package/planning/decorator-bindings/tasks/schema-modes.md +0 -142
  203. package/planning/middleware-system/overview.md +0 -48
  204. package/planning/middleware-system/plan.md +0 -102
  205. package/planning/middleware-system/state.json +0 -65
  206. package/planning/middleware-system/tasks/adapters.md +0 -170
  207. package/planning/middleware-system/tasks/base.md +0 -115
  208. package/planning/middleware-system/tasks/logging-middleware.md +0 -304
  209. package/planning/middleware-system/tasks/manager.md +0 -313
  210. package/planning/observability/overview.md +0 -53
  211. package/planning/observability/plan.md +0 -119
  212. package/planning/observability/state.json +0 -98
  213. package/planning/observability/tasks/context-logger.md +0 -201
  214. package/planning/observability/tasks/exporters.md +0 -121
  215. package/planning/observability/tasks/metrics-collector.md +0 -162
  216. package/planning/observability/tasks/metrics-middleware.md +0 -141
  217. package/planning/observability/tasks/obs-logging-middleware.md +0 -179
  218. package/planning/observability/tasks/span-model.md +0 -120
  219. package/planning/observability/tasks/tracing-middleware.md +0 -179
  220. package/planning/overview.md +0 -81
  221. package/planning/registry-system/overview.md +0 -57
  222. package/planning/registry-system/plan.md +0 -114
  223. package/planning/registry-system/state.json +0 -109
  224. package/planning/registry-system/tasks/dependencies.md +0 -157
  225. package/planning/registry-system/tasks/entry-point.md +0 -148
  226. package/planning/registry-system/tasks/metadata.md +0 -198
  227. package/planning/registry-system/tasks/registry-core.md +0 -323
  228. package/planning/registry-system/tasks/scanner.md +0 -172
  229. package/planning/registry-system/tasks/schema-export.md +0 -261
  230. package/planning/registry-system/tasks/types.md +0 -124
  231. package/planning/registry-system/tasks/validation.md +0 -177
  232. package/planning/schema-system/overview.md +0 -56
  233. package/planning/schema-system/plan.md +0 -121
  234. package/planning/schema-system/state.json +0 -98
  235. package/planning/schema-system/tasks/exporter.md +0 -153
  236. package/planning/schema-system/tasks/loader.md +0 -106
  237. package/planning/schema-system/tasks/ref-resolver.md +0 -133
  238. package/planning/schema-system/tasks/strict-mode.md +0 -140
  239. package/planning/schema-system/tasks/typebox-generation.md +0 -133
  240. package/planning/schema-system/tasks/types-and-annotations.md +0 -160
  241. package/planning/schema-system/tasks/validator.md +0 -149
  242. package/src/acl.ts +0 -200
  243. package/src/async-task.ts +0 -267
  244. package/src/bindings.ts +0 -207
  245. package/src/cancel.ts +0 -32
  246. package/src/config.ts +0 -24
  247. package/src/context.ts +0 -160
  248. package/src/decorator.ts +0 -110
  249. package/src/errors.ts +0 -429
  250. package/src/executor.ts +0 -493
  251. package/src/extensions.ts +0 -265
  252. package/src/middleware/adapters.ts +0 -54
  253. package/src/middleware/base.ts +0 -33
  254. package/src/middleware/logging.ts +0 -103
  255. package/src/middleware/manager.ts +0 -105
  256. package/src/module.ts +0 -43
  257. package/src/observability/context-logger.ts +0 -203
  258. package/src/observability/metrics.ts +0 -214
  259. package/src/observability/tracing.ts +0 -252
  260. package/src/registry/dependencies.ts +0 -99
  261. package/src/registry/entry-point.ts +0 -64
  262. package/src/registry/metadata.ts +0 -111
  263. package/src/registry/registry.ts +0 -580
  264. package/src/registry/scanner.ts +0 -168
  265. package/src/registry/schema-export.ts +0 -181
  266. package/src/registry/types.ts +0 -32
  267. package/src/registry/validation.ts +0 -38
  268. package/src/schema/annotations.ts +0 -68
  269. package/src/schema/exporter.ts +0 -90
  270. package/src/schema/loader.ts +0 -273
  271. package/src/schema/ref-resolver.ts +0 -244
  272. package/src/schema/strict.ts +0 -136
  273. package/src/schema/types.ts +0 -73
  274. package/src/schema/validator.ts +0 -82
  275. package/src/trace-context.ts +0 -102
  276. package/src/utils/index.ts +0 -5
  277. package/src/utils/pattern.ts +0 -30
  278. package/tests/async-task.test.ts +0 -335
  279. package/tests/helpers.ts +0 -30
  280. package/tests/integration/test-acl-safety.test.ts +0 -269
  281. package/tests/integration/test-binding-executor.test.ts +0 -194
  282. package/tests/integration/test-e2e-flow.test.ts +0 -117
  283. package/tests/integration/test-error-propagation.test.ts +0 -259
  284. package/tests/integration/test-middleware-chain.test.ts +0 -120
  285. package/tests/integration/test-observability-integration.test.ts +0 -438
  286. package/tests/observability/test-context-logger.test.ts +0 -123
  287. package/tests/observability/test-metrics.test.ts +0 -186
  288. package/tests/observability/test-tracing.test.ts +0 -303
  289. package/tests/registry/test-dependencies.test.ts +0 -70
  290. package/tests/registry/test-entry-point.test.ts +0 -133
  291. package/tests/registry/test-metadata.test.ts +0 -265
  292. package/tests/registry/test-registry.test.ts +0 -1397
  293. package/tests/registry/test-scanner.test.ts +0 -257
  294. package/tests/registry/test-schema-export.test.ts +0 -355
  295. package/tests/registry/test-validation.test.ts +0 -75
  296. package/tests/schema/test-annotations.test.ts +0 -137
  297. package/tests/schema/test-exporter.test.ts +0 -172
  298. package/tests/schema/test-loader.test.ts +0 -461
  299. package/tests/schema/test-ref-resolver.test.ts +0 -530
  300. package/tests/schema/test-strict.test.ts +0 -348
  301. package/tests/schema/test-validator.test.ts +0 -64
  302. package/tests/test-acl.test.ts +0 -423
  303. package/tests/test-bindings.test.ts +0 -227
  304. package/tests/test-cancel.test.ts +0 -71
  305. package/tests/test-config.test.ts +0 -76
  306. package/tests/test-context.test.ts +0 -266
  307. package/tests/test-decorator.test.ts +0 -173
  308. package/tests/test-errors.test.ts +0 -647
  309. package/tests/test-executor-stream.test.ts +0 -208
  310. package/tests/test-executor.test.ts +0 -252
  311. package/tests/test-extensions.test.ts +0 -310
  312. package/tests/test-logging-middleware.test.ts +0 -150
  313. package/tests/test-middleware-manager.test.ts +0 -185
  314. package/tests/test-middleware.test.ts +0 -86
  315. package/tests/test-trace-context.test.ts +0 -251
  316. package/tests/utils/test-pattern.test.ts +0 -109
  317. package/tsconfig.build.json +0 -8
  318. package/tsconfig.json +0 -20
  319. package/vitest.config.ts +0 -18
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Extension point framework for apcore.
3
+ *
4
+ * Provides a centralized mechanism to register, query, and wire custom
5
+ * extensions (discoverers, middleware, ACL providers, span exporters, and
6
+ * module validators) into the apcore runtime.
7
+ */
8
+ import { TracingMiddleware } from './observability/tracing.js';
9
+ /**
10
+ * Delegates span export to multiple underlying exporters.
11
+ */
12
+ class CompositeExporter {
13
+ _exporters;
14
+ constructor(exporters) {
15
+ this._exporters = exporters;
16
+ }
17
+ export(span) {
18
+ for (const exp of this._exporters) {
19
+ try {
20
+ exp.export(span);
21
+ }
22
+ catch (e) {
23
+ console.warn('[apcore:extensions] Span exporter failed:', e);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ /** Type guard: checks if value has a `discover` method. */
29
+ function isDiscoverer(value) {
30
+ return typeof value === 'object' && value !== null && typeof value['discover'] === 'function';
31
+ }
32
+ /** Type guard: checks if value has a `validate` method. */
33
+ function isModuleValidator(value) {
34
+ return typeof value === 'object' && value !== null && typeof value['validate'] === 'function';
35
+ }
36
+ /** Type guard: checks if value has at least one middleware method (before, after, onError). */
37
+ function isMiddleware(value) {
38
+ if (typeof value !== 'object' || value === null)
39
+ return false;
40
+ const obj = value;
41
+ return typeof obj['before'] === 'function' || typeof obj['after'] === 'function' || typeof obj['onError'] === 'function';
42
+ }
43
+ /** Type guard: checks if value has a `check` method (ACL). */
44
+ function isACL(value) {
45
+ return typeof value === 'object' && value !== null && typeof value['check'] === 'function';
46
+ }
47
+ /** Type guard: checks if value has an `export` method (SpanExporter). */
48
+ function isSpanExporter(value) {
49
+ return typeof value === 'object' && value !== null && typeof value['export'] === 'function';
50
+ }
51
+ /** Type guard: checks if value has requestApproval and checkApproval methods. */
52
+ function isApprovalHandler(value) {
53
+ if (typeof value !== 'object' || value === null)
54
+ return false;
55
+ const obj = value;
56
+ return typeof obj['requestApproval'] === 'function' && typeof obj['checkApproval'] === 'function';
57
+ }
58
+ function builtInPoints() {
59
+ return new Map([
60
+ ['discoverer', {
61
+ name: 'discoverer',
62
+ description: 'Custom module discovery strategy',
63
+ multiple: false,
64
+ typeCheck: isDiscoverer,
65
+ typeName: 'Discoverer',
66
+ }],
67
+ ['middleware', {
68
+ name: 'middleware',
69
+ description: 'Execution middleware',
70
+ multiple: true,
71
+ typeCheck: isMiddleware,
72
+ typeName: 'Middleware',
73
+ }],
74
+ ['acl', {
75
+ name: 'acl',
76
+ description: 'Access control provider',
77
+ multiple: false,
78
+ typeCheck: isACL,
79
+ typeName: 'ACL',
80
+ }],
81
+ ['span_exporter', {
82
+ name: 'span_exporter',
83
+ description: 'Tracing span exporter',
84
+ multiple: true,
85
+ typeCheck: isSpanExporter,
86
+ typeName: 'SpanExporter',
87
+ }],
88
+ ['module_validator', {
89
+ name: 'module_validator',
90
+ description: 'Custom module validation',
91
+ multiple: false,
92
+ typeCheck: isModuleValidator,
93
+ typeName: 'ModuleValidator',
94
+ }],
95
+ ['approval_handler', {
96
+ name: 'approval_handler',
97
+ description: 'Approval handler for Step 4.5 gate',
98
+ multiple: false,
99
+ typeCheck: isApprovalHandler,
100
+ typeName: 'ApprovalHandler',
101
+ }],
102
+ ]);
103
+ }
104
+ /**
105
+ * Manages extension points and their registered implementations.
106
+ *
107
+ * Pre-registers six built-in extension points: discoverer, middleware,
108
+ * acl, span_exporter, module_validator, and approval_handler.
109
+ */
110
+ export class ExtensionManager {
111
+ _points;
112
+ _extensions;
113
+ constructor() {
114
+ this._points = builtInPoints();
115
+ this._extensions = new Map();
116
+ for (const name of this._points.keys()) {
117
+ this._extensions.set(name, []);
118
+ }
119
+ }
120
+ /**
121
+ * Register an extension for the given extension point.
122
+ *
123
+ * @throws Error if point_name is unknown.
124
+ * @throws Error if extension does not satisfy the type constraint.
125
+ */
126
+ register(pointName, extension) {
127
+ const point = this._points.get(pointName);
128
+ if (point === undefined) {
129
+ throw new Error(`Unknown extension point: '${pointName}'. Available: ${[...this._points.keys()].sort().join(', ')}`);
130
+ }
131
+ if (!point.typeCheck(extension)) {
132
+ throw new TypeError(`Extension for '${pointName}' must satisfy the ${point.typeName} interface`);
133
+ }
134
+ if (point.multiple) {
135
+ this._extensions.get(pointName).push(extension);
136
+ }
137
+ else {
138
+ this._extensions.set(pointName, [extension]);
139
+ }
140
+ }
141
+ /**
142
+ * Return the single extension for a non-multiple point, or null.
143
+ */
144
+ get(pointName) {
145
+ if (!this._points.has(pointName)) {
146
+ throw new Error(`Unknown extension point: '${pointName}'`);
147
+ }
148
+ const exts = this._extensions.get(pointName);
149
+ return exts.length > 0 ? exts[0] : null;
150
+ }
151
+ /**
152
+ * Return all extensions for a multiple-type point.
153
+ */
154
+ getAll(pointName) {
155
+ if (!this._points.has(pointName)) {
156
+ throw new Error(`Unknown extension point: '${pointName}'`);
157
+ }
158
+ return [...this._extensions.get(pointName)];
159
+ }
160
+ /**
161
+ * Remove a specific extension from an extension point.
162
+ * Returns true if found and removed, false otherwise.
163
+ */
164
+ unregister(pointName, extension) {
165
+ if (!this._points.has(pointName)) {
166
+ throw new Error(`Unknown extension point: '${pointName}'`);
167
+ }
168
+ const exts = this._extensions.get(pointName);
169
+ const idx = exts.indexOf(extension);
170
+ if (idx === -1)
171
+ return false;
172
+ exts.splice(idx, 1);
173
+ return true;
174
+ }
175
+ /**
176
+ * Return all registered extension points.
177
+ */
178
+ listPoints() {
179
+ return [...this._points.values()].map(({ name, description, multiple }) => ({
180
+ name,
181
+ description,
182
+ multiple,
183
+ }));
184
+ }
185
+ /**
186
+ * Wire all registered extensions into the given registry and executor.
187
+ */
188
+ apply(registry, executor) {
189
+ // Discoverer
190
+ const discoverer = this.get('discoverer');
191
+ if (discoverer !== null) {
192
+ registry.setDiscoverer(discoverer);
193
+ }
194
+ // Module validator
195
+ const validator = this.get('module_validator');
196
+ if (validator !== null) {
197
+ registry.setValidator(validator);
198
+ }
199
+ // ACL
200
+ const acl = this.get('acl');
201
+ if (acl !== null) {
202
+ executor.setAcl(acl);
203
+ }
204
+ // Approval handler
205
+ const approvalHandler = this.get('approval_handler');
206
+ if (approvalHandler !== null) {
207
+ executor.setApprovalHandler(approvalHandler);
208
+ }
209
+ // Middleware
210
+ for (const mw of this.getAll('middleware')) {
211
+ executor.use(mw);
212
+ }
213
+ // Span exporters: find existing TracingMiddleware and set exporter(s)
214
+ const exporters = this.getAll('span_exporter');
215
+ if (exporters.length > 0) {
216
+ const tracingMw = this._findTracingMiddleware(executor);
217
+ if (tracingMw !== null) {
218
+ if (exporters.length === 1) {
219
+ tracingMw.setExporter(exporters[0]);
220
+ }
221
+ else {
222
+ tracingMw.setExporter(new CompositeExporter(exporters));
223
+ }
224
+ }
225
+ else {
226
+ console.warn('[apcore:extensions] span_exporter extensions registered but no TracingMiddleware found in executor middleware chain');
227
+ }
228
+ }
229
+ }
230
+ _findTracingMiddleware(executor) {
231
+ for (const mw of executor.middlewares) {
232
+ if (mw instanceof TracingMiddleware) {
233
+ return mw;
234
+ }
235
+ }
236
+ return null;
237
+ }
238
+ }
239
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAI/D;;GAEG;AACH,MAAM,iBAAiB;IACb,UAAU,CAAiB;IAEnC,YAAY,SAAyB;QACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,IAAU;QACf,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAWD,2DAA2D;AAC3D,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAQ,KAAiC,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC;AAC7H,CAAC;AAED,2DAA2D;AAC3D,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAQ,KAAiC,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC;AAC7H,CAAC;AAED,+FAA+F;AAC/F,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC;AAC3H,CAAC;AAED,8DAA8D;AAC9D,SAAS,KAAK,CAAC,KAAc;IAC3B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAQ,KAAiC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC;AAC1H,CAAC;AAED,yEAAyE;AACzE,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAQ,KAAiC,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC;AAC3H,CAAC;AAED,iFAAiF;AACjF,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,OAAO,GAAG,CAAC,iBAAiB,CAAC,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,UAAU,CAAC;AACpG,CAAC;AASD,SAAS,aAAa;IACpB,OAAO,IAAI,GAAG,CAAiC;QAC7C,CAAC,YAAY,EAAE;gBACb,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,kCAAkC;gBAC/C,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,YAAY;gBACvB,QAAQ,EAAE,YAAY;aACvB,CAAC;QACF,CAAC,YAAY,EAAE;gBACb,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,sBAAsB;gBACnC,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,YAAY;gBACvB,QAAQ,EAAE,YAAY;aACvB,CAAC;QACF,CAAC,KAAK,EAAE;gBACN,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,yBAAyB;gBACtC,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,KAAK;aAChB,CAAC;QACF,CAAC,eAAe,EAAE;gBAChB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,uBAAuB;gBACpC,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,cAAc;gBACzB,QAAQ,EAAE,cAAc;aACzB,CAAC;QACF,CAAC,kBAAkB,EAAE;gBACnB,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,0BAA0B;gBACvC,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,iBAAiB;aAC5B,CAAC;QACF,CAAC,kBAAkB,EAAE;gBACnB,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,oCAAoC;gBACjD,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ,EAAE,iBAAiB;aAC5B,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACnB,OAAO,CAAsC;IAC7C,WAAW,CAAyB;IAE5C;QACE,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,SAAiB,EAAE,SAAkB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,iBAAiB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CACjB,kBAAkB,SAAS,sBAAsB,KAAK,CAAC,QAAQ,YAAY,CAC5E,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAiB;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,SAAiB,EAAE,SAAkB;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1E,IAAI;YACJ,WAAW;YACX,QAAQ;SACT,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAkB,EAAE,QAAkB;QAC1C,aAAa;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAsB,CAAC;QAC/D,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QAED,mBAAmB;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAA2B,CAAC;QACzE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAED,MAAM;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAe,CAAC;QAC1C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,mBAAmB;QACnB,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAA2B,CAAC;QAC/E,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,QAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QAED,aAAa;QACb,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,GAAG,CAAC,EAAgB,CAAC,CAAC;QACjC,CAAC;QAED,sEAAsE;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAmB,CAAC;QACjE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,WAAW,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CACV,qHAAqH,CACtH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,QAAkB;QAC/C,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,EAAE,YAAY,iBAAiB,EAAE,CAAC;gBACpC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,80 +1,29 @@
1
1
  /**
2
2
  * apcore - Schema-driven module development framework.
3
3
  */
4
-
5
- // Core
6
4
  export { CancelToken, ExecutionCancelledError } from './cancel.js';
7
5
  export { Context, createIdentity } from './context.js';
8
6
  export type { Identity, ContextFactory } from './context.js';
9
7
  export { Registry, REGISTRY_EVENTS, MODULE_ID_PATTERN, MAX_MODULE_ID_LENGTH, RESERVED_WORDS } from './registry/registry.js';
10
8
  export type { Discoverer, ModuleValidator } from './registry/registry.js';
11
9
  export { Executor, redactSensitive, REDACTED_VALUE } from './executor.js';
12
-
13
- // Module types
14
10
  export { DEFAULT_ANNOTATIONS } from './module.js';
15
11
  export type { ModuleAnnotations, ModuleExample, ValidationResult, Module } from './module.js';
16
-
17
- // Config
18
12
  export { Config } from './config.js';
19
-
20
- // Errors
21
- export {
22
- ModuleError,
23
- ConfigNotFoundError,
24
- ConfigError,
25
- ACLRuleError,
26
- ACLDeniedError,
27
- ModuleNotFoundError,
28
- ModuleTimeoutError,
29
- SchemaValidationError,
30
- SchemaNotFoundError,
31
- SchemaParseError,
32
- SchemaCircularRefError,
33
- CallDepthExceededError,
34
- CircularCallError,
35
- CallFrequencyExceededError,
36
- InvalidInputError,
37
- FuncMissingTypeHintError,
38
- FuncMissingReturnTypeError,
39
- BindingInvalidTargetError,
40
- BindingModuleNotFoundError,
41
- BindingCallableNotFoundError,
42
- BindingNotCallableError,
43
- BindingSchemaMissingError,
44
- BindingFileInvalidError,
45
- CircularDependencyError,
46
- ModuleLoadError,
47
- ModuleExecuteError,
48
- InternalError,
49
- ErrorCodes,
50
- } from './errors.js';
51
- export type { ErrorCode } from './errors.js';
52
-
53
- // ACL
13
+ export { createApprovalRequest, createApprovalResult, AlwaysDenyHandler, AutoApproveHandler, CallbackApprovalHandler, } from './approval.js';
14
+ export type { ApprovalRequest, ApprovalResult, ApprovalHandler } from './approval.js';
15
+ 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, ModuleLoadError, ModuleExecuteError, InternalError, ErrorCodes, } from './errors.js';
16
+ export type { ErrorCode, ErrorOptions } from './errors.js';
54
17
  export { ACL } from './acl.js';
55
18
  export type { ACLRule } from './acl.js';
56
-
57
- // Middleware
58
19
  export { Middleware, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware } from './middleware/index.js';
59
-
60
- // Decorator
61
20
  export { module, FunctionModule, normalizeResult, makeAutoId } from './decorator.js';
62
-
63
- // Extensions
64
21
  export { ExtensionManager } from './extensions.js';
65
22
  export type { ExtensionPoint } from './extensions.js';
66
-
67
- // Async tasks
68
23
  export { AsyncTaskManager, TaskStatus } from './async-task.js';
69
24
  export type { TaskInfo } from './async-task.js';
70
-
71
- // Bindings
72
25
  export { BindingLoader } from './bindings.js';
73
-
74
- // Utils
75
26
  export { matchPattern } from './utils/pattern.js';
76
-
77
- // Schema
78
27
  export { SchemaLoader, jsonSchemaToTypeBox } from './schema/loader.js';
79
28
  export { SchemaValidator } from './schema/validator.js';
80
29
  export { SchemaExporter } from './schema/exporter.js';
@@ -82,18 +31,12 @@ export { SchemaStrategy, ExportProfile } from './schema/types.js';
82
31
  export type { SchemaDefinition, ResolvedSchema, SchemaValidationErrorDetail, SchemaValidationResult } from './schema/types.js';
83
32
  export { RefResolver } from './schema/ref-resolver.js';
84
33
  export { toStrictSchema, applyLlmDescriptions, stripExtensions } from './schema/strict.js';
85
-
86
- // Registry types
87
34
  export type { ModuleDescriptor, DiscoveredModule, DependencyInfo } from './registry/types.js';
88
-
89
- // Observability
90
35
  export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan } from './observability/tracing.js';
91
36
  export type { Span, SpanExporter } from './observability/tracing.js';
92
37
  export { MetricsCollector, MetricsMiddleware } from './observability/metrics.js';
93
38
  export { ContextLogger, ObsLoggingMiddleware } from './observability/context-logger.js';
94
-
95
- // Trace Context
96
39
  export { TraceContext } from './trace-context.js';
97
40
  export type { TraceParent } from './trace-context.js';
98
-
99
- export const VERSION = '0.3.0';
41
+ export declare const VERSION = "0.7.0";
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
1
+ /**
2
+ * apcore - Schema-driven module development framework.
3
+ */
4
+ // Core
5
+ export { CancelToken, ExecutionCancelledError } from './cancel.js';
6
+ export { Context, createIdentity } from './context.js';
7
+ export { Registry, REGISTRY_EVENTS, MODULE_ID_PATTERN, MAX_MODULE_ID_LENGTH, RESERVED_WORDS } from './registry/registry.js';
8
+ export { Executor, redactSensitive, REDACTED_VALUE } from './executor.js';
9
+ // Module types
10
+ export { DEFAULT_ANNOTATIONS } from './module.js';
11
+ // Config
12
+ export { Config } from './config.js';
13
+ // Approval
14
+ export { createApprovalRequest, createApprovalResult, AlwaysDenyHandler, AutoApproveHandler, CallbackApprovalHandler, } from './approval.js';
15
+ // Errors
16
+ 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, ModuleLoadError, ModuleExecuteError, InternalError, ErrorCodes, } from './errors.js';
17
+ // ACL
18
+ export { ACL } from './acl.js';
19
+ // Middleware
20
+ export { Middleware, MiddlewareManager, MiddlewareChainError, BeforeMiddleware, AfterMiddleware, LoggingMiddleware } from './middleware/index.js';
21
+ // Decorator
22
+ export { module, FunctionModule, normalizeResult, makeAutoId } from './decorator.js';
23
+ // Extensions
24
+ export { ExtensionManager } from './extensions.js';
25
+ // Async tasks
26
+ export { AsyncTaskManager, TaskStatus } from './async-task.js';
27
+ // Bindings
28
+ export { BindingLoader } from './bindings.js';
29
+ // Utils
30
+ export { matchPattern } from './utils/pattern.js';
31
+ // Schema
32
+ export { SchemaLoader, jsonSchemaToTypeBox } from './schema/loader.js';
33
+ export { SchemaValidator } from './schema/validator.js';
34
+ export { SchemaExporter } from './schema/exporter.js';
35
+ export { SchemaStrategy, ExportProfile } from './schema/types.js';
36
+ export { RefResolver } from './schema/ref-resolver.js';
37
+ export { toStrictSchema, applyLlmDescriptions, stripExtensions } from './schema/strict.js';
38
+ // Observability
39
+ export { TracingMiddleware, StdoutExporter, InMemoryExporter, OTLPExporter, createSpan } from './observability/tracing.js';
40
+ export { MetricsCollector, MetricsMiddleware } from './observability/metrics.js';
41
+ export { ContextLogger, ObsLoggingMiddleware } from './observability/context-logger.js';
42
+ // Trace Context
43
+ export { TraceContext } from './trace-context.js';
44
+ export const VERSION = '0.7.0';
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Function adapter classes for the middleware system.
3
+ */
4
+ import type { Context } from '../context.js';
5
+ import { Middleware } from './base.js';
6
+ export type BeforeCallback = (moduleId: string, inputs: Record<string, unknown>, context: Context) => Record<string, unknown> | null;
7
+ export type AfterCallback = (moduleId: string, inputs: Record<string, unknown>, output: Record<string, unknown>, context: Context) => Record<string, unknown> | null;
8
+ export declare class BeforeMiddleware extends Middleware {
9
+ private _callback;
10
+ constructor(callback: BeforeCallback);
11
+ before(moduleId: string, inputs: Record<string, unknown>, context: Context): Record<string, unknown> | null;
12
+ }
13
+ export declare class AfterMiddleware extends Middleware {
14
+ private _callback;
15
+ constructor(callback: AfterCallback);
16
+ after(moduleId: string, inputs: Record<string, unknown>, output: Record<string, unknown>, context: Context): Record<string, unknown> | null;
17
+ }
18
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/middleware/adapters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,MAAM,cAAc,GAAG,CAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,OAAO,KACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,OAAO,KACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;AAEpC,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,OAAO,CAAC,SAAS,CAAiB;gBAEtB,QAAQ,EAAE,cAAc;IAK3B,MAAM,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlC;AAED,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAO,CAAC,SAAS,CAAgB;gBAErB,QAAQ,EAAE,aAAa;IAK1B,KAAK,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Function adapter classes for the middleware system.
3
+ */
4
+ import { Middleware } from './base.js';
5
+ export class BeforeMiddleware extends Middleware {
6
+ _callback;
7
+ constructor(callback) {
8
+ super();
9
+ this._callback = callback;
10
+ }
11
+ before(moduleId, inputs, context) {
12
+ return this._callback(moduleId, inputs, context);
13
+ }
14
+ }
15
+ export class AfterMiddleware extends Middleware {
16
+ _callback;
17
+ constructor(callback) {
18
+ super();
19
+ this._callback = callback;
20
+ }
21
+ after(moduleId, inputs, output, context) {
22
+ return this._callback(moduleId, inputs, output, context);
23
+ }
24
+ }
25
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/middleware/adapters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAevC,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IACtC,SAAS,CAAiB;IAElC,YAAY,QAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEQ,MAAM,CACb,QAAgB,EAChB,MAA+B,EAC/B,OAAgB;QAEhB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IACrC,SAAS,CAAgB;IAEjC,YAAY,QAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEQ,KAAK,CACZ,QAAgB,EAChB,MAA+B,EAC/B,MAA+B,EAC/B,OAAgB;QAEhB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Middleware base class for apcore.
3
+ */
4
+ import type { Context } from '../context.js';
5
+ export declare class Middleware {
6
+ before(_moduleId: string, _inputs: Record<string, unknown>, _context: Context): Record<string, unknown> | null;
7
+ after(_moduleId: string, _inputs: Record<string, unknown>, _output: Record<string, unknown>, _context: Context): Record<string, unknown> | null;
8
+ onError(_moduleId: string, _inputs: Record<string, unknown>, _error: Error, _context: Context): Record<string, unknown> | null;
9
+ }
10
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/middleware/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,qBAAa,UAAU;IACrB,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjC,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjC,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,KAAK,EACb,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Middleware base class for apcore.
3
+ */
4
+ export class Middleware {
5
+ before(_moduleId, _inputs, _context) {
6
+ return null;
7
+ }
8
+ after(_moduleId, _inputs, _output, _context) {
9
+ return null;
10
+ }
11
+ onError(_moduleId, _inputs, _error, _context) {
12
+ return null;
13
+ }
14
+ }
15
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/middleware/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,UAAU;IACrB,MAAM,CACJ,SAAiB,EACjB,OAAgC,EAChC,QAAiB;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CACH,SAAiB,EACjB,OAAgC,EAChC,OAAgC,EAChC,QAAiB;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,SAAiB,EACjB,OAAgC,EAChC,MAAa,EACb,QAAiB;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -4,3 +4,4 @@ export { BeforeMiddleware, AfterMiddleware } from './adapters.js';
4
4
  export type { BeforeCallback, AfterCallback } from './adapters.js';
5
5
  export { LoggingMiddleware } from './logging.js';
6
6
  export type { Logger } from './logging.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ export { Middleware } from './base.js';
2
+ export { MiddlewareManager, MiddlewareChainError } from './manager.js';
3
+ export { BeforeMiddleware, AfterMiddleware } from './adapters.js';
4
+ export { LoggingMiddleware } from './logging.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * LoggingMiddleware for structured module call logging.
3
+ */
4
+ import type { Context } from '../context.js';
5
+ import { Middleware } from './base.js';
6
+ export interface Logger {
7
+ info(message: string, extra?: Record<string, unknown>): void;
8
+ error(message: string, extra?: Record<string, unknown>): void;
9
+ }
10
+ export declare class LoggingMiddleware extends Middleware {
11
+ private _logger;
12
+ private _logInputs;
13
+ private _logOutputs;
14
+ private _logErrors;
15
+ constructor(options?: {
16
+ logger?: Logger;
17
+ logInputs?: boolean;
18
+ logOutputs?: boolean;
19
+ logErrors?: boolean;
20
+ });
21
+ before(moduleId: string, inputs: Record<string, unknown>, context: Context): null;
22
+ after(moduleId: string, _inputs: Record<string, unknown>, output: Record<string, unknown>, context: Context): null;
23
+ onError(moduleId: string, inputs: Record<string, unknown>, error: Error, context: Context): null;
24
+ }
25
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/middleware/logging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/D;AAWD,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,UAAU,CAAU;gBAEhB,OAAO,CAAC,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB;IAQQ,MAAM,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,IAAI;IAgBE,KAAK,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,OAAO,GACf,IAAI;IAmBE,OAAO,CACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GACf,IAAI;CAaR"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * LoggingMiddleware for structured module call logging.
3
+ */
4
+ import { Middleware } from './base.js';
5
+ const defaultLogger = {
6
+ info(message, extra) {
7
+ console.info(message, extra ?? '');
8
+ },
9
+ error(message, extra) {
10
+ console.error(message, extra ?? '');
11
+ },
12
+ };
13
+ export class LoggingMiddleware extends Middleware {
14
+ _logger;
15
+ _logInputs;
16
+ _logOutputs;
17
+ _logErrors;
18
+ constructor(options) {
19
+ super();
20
+ this._logger = options?.logger ?? defaultLogger;
21
+ this._logInputs = options?.logInputs ?? true;
22
+ this._logOutputs = options?.logOutputs ?? true;
23
+ this._logErrors = options?.logErrors ?? true;
24
+ }
25
+ before(moduleId, inputs, context) {
26
+ context.data['_logging_mw_start'] = performance.now();
27
+ if (this._logInputs) {
28
+ const redacted = context.redactedInputs ?? inputs;
29
+ this._logger.info(`[${context.traceId}] START ${moduleId}`, {
30
+ traceId: context.traceId,
31
+ moduleId,
32
+ callerId: context.callerId,
33
+ inputs: redacted,
34
+ });
35
+ }
36
+ return null;
37
+ }
38
+ after(moduleId, _inputs, output, context) {
39
+ const startTime = context.data['_logging_mw_start'] ?? performance.now();
40
+ const durationMs = performance.now() - startTime;
41
+ if (this._logOutputs) {
42
+ this._logger.info(`[${context.traceId}] END ${moduleId} (${durationMs.toFixed(2)}ms)`, {
43
+ traceId: context.traceId,
44
+ moduleId,
45
+ durationMs,
46
+ output,
47
+ });
48
+ }
49
+ return null;
50
+ }
51
+ onError(moduleId, inputs, error, context) {
52
+ if (this._logErrors) {
53
+ const redacted = context.redactedInputs ?? inputs;
54
+ this._logger.error(`[${context.traceId}] ERROR ${moduleId}: ${error}`, {
55
+ traceId: context.traceId,
56
+ moduleId,
57
+ error: String(error),
58
+ inputs: redacted,
59
+ });
60
+ }
61
+ return null;
62
+ }
63
+ }
64
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +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"}