apcore-js 0.5.0 → 0.6.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 (314) hide show
  1. package/dist/acl.d.ts +27 -0
  2. package/dist/acl.d.ts.map +1 -0
  3. package/dist/acl.js +175 -0
  4. package/dist/acl.js.map +1 -0
  5. package/dist/async-task.d.ts +90 -0
  6. package/dist/async-task.d.ts.map +1 -0
  7. package/dist/async-task.js +215 -0
  8. package/dist/async-task.js.map +1 -0
  9. package/dist/bindings.d.ts +12 -0
  10. package/dist/bindings.d.ts.map +1 -0
  11. package/dist/bindings.js +185 -0
  12. package/dist/bindings.js.map +1 -0
  13. package/dist/cancel.d.ts +14 -0
  14. package/dist/cancel.d.ts.map +1 -0
  15. package/dist/cancel.js +27 -0
  16. package/dist/cancel.js.map +1 -0
  17. package/dist/config.d.ts +9 -0
  18. package/dist/config.d.ts.map +1 -0
  19. package/dist/config.js +23 -0
  20. package/dist/config.js.map +1 -0
  21. package/dist/context.d.ts +50 -0
  22. package/dist/context.d.ts.map +1 -0
  23. package/dist/context.js +87 -0
  24. package/dist/context.js.map +1 -0
  25. package/dist/decorator.d.ts +57 -0
  26. package/dist/decorator.d.ts.map +1 -0
  27. package/dist/decorator.js +74 -0
  28. package/dist/decorator.js.map +1 -0
  29. package/dist/errors.d.ts +215 -0
  30. package/dist/errors.d.ts.map +1 -0
  31. package/dist/errors.js +246 -0
  32. package/dist/errors.js.map +1 -0
  33. package/dist/executor.d.ts +67 -0
  34. package/dist/executor.d.ts.map +1 -0
  35. package/dist/executor.js +372 -0
  36. package/dist/executor.js.map +1 -0
  37. package/dist/extensions.d.ts +58 -0
  38. package/dist/extensions.d.ts.map +1 -0
  39. package/dist/extensions.js +220 -0
  40. package/dist/extensions.js.map +1 -0
  41. package/{src/index.ts → dist/index.d.ts} +3 -62
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +43 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/middleware/adapters.d.ts +18 -0
  46. package/dist/middleware/adapters.d.ts.map +1 -0
  47. package/dist/middleware/adapters.js +25 -0
  48. package/dist/middleware/adapters.js.map +1 -0
  49. package/dist/middleware/base.d.ts +10 -0
  50. package/dist/middleware/base.d.ts.map +1 -0
  51. package/dist/middleware/base.js +15 -0
  52. package/dist/middleware/base.js.map +1 -0
  53. package/{src/middleware/index.ts → dist/middleware/index.d.ts} +1 -0
  54. package/dist/middleware/index.d.ts.map +1 -0
  55. package/dist/middleware/index.js +5 -0
  56. package/dist/middleware/index.js.map +1 -0
  57. package/dist/middleware/logging.d.ts +25 -0
  58. package/dist/middleware/logging.d.ts.map +1 -0
  59. package/dist/middleware/logging.js +64 -0
  60. package/dist/middleware/logging.js.map +1 -0
  61. package/dist/middleware/manager.d.ts +21 -0
  62. package/dist/middleware/manager.d.ts.map +1 -0
  63. package/dist/middleware/manager.js +77 -0
  64. package/dist/middleware/manager.js.map +1 -0
  65. package/dist/module.d.ts +31 -0
  66. package/dist/module.d.ts.map +1 -0
  67. package/dist/module.js +12 -0
  68. package/dist/module.js.map +1 -0
  69. package/dist/observability/context-logger.d.ts +54 -0
  70. package/dist/observability/context-logger.d.ts.map +1 -0
  71. package/dist/observability/context-logger.js +151 -0
  72. package/dist/observability/context-logger.js.map +1 -0
  73. package/{src/observability/index.ts → dist/observability/index.d.ts} +1 -0
  74. package/dist/observability/index.d.ts.map +1 -0
  75. package/dist/observability/index.js +4 -0
  76. package/dist/observability/index.js.map +1 -0
  77. package/dist/observability/metrics.d.ts +30 -0
  78. package/dist/observability/metrics.d.ts.map +1 -0
  79. package/dist/observability/metrics.js +177 -0
  80. package/dist/observability/metrics.js.map +1 -0
  81. package/dist/observability/tracing.d.ts +62 -0
  82. package/dist/observability/tracing.d.ts.map +1 -0
  83. package/dist/observability/tracing.js +184 -0
  84. package/dist/observability/tracing.js.map +1 -0
  85. package/dist/registry/dependencies.d.ts +6 -0
  86. package/dist/registry/dependencies.d.ts.map +1 -0
  87. package/dist/registry/dependencies.js +83 -0
  88. package/dist/registry/dependencies.js.map +1 -0
  89. package/dist/registry/entry-point.d.ts +6 -0
  90. package/dist/registry/entry-point.d.ts.map +1 -0
  91. package/dist/registry/entry-point.js +55 -0
  92. package/dist/registry/entry-point.js.map +1 -0
  93. package/{src/registry/index.ts → dist/registry/index.d.ts} +1 -0
  94. package/dist/registry/index.d.ts.map +1 -0
  95. package/dist/registry/index.js +8 -0
  96. package/dist/registry/index.js.map +1 -0
  97. package/dist/registry/metadata.d.ts +9 -0
  98. package/dist/registry/metadata.d.ts.map +1 -0
  99. package/dist/registry/metadata.js +105 -0
  100. package/dist/registry/metadata.js.map +1 -0
  101. package/dist/registry/registry.d.ts +102 -0
  102. package/dist/registry/registry.d.ts.map +1 -0
  103. package/dist/registry/registry.js +534 -0
  104. package/dist/registry/registry.js.map +1 -0
  105. package/dist/registry/scanner.d.ts +7 -0
  106. package/dist/registry/scanner.d.ts.map +1 -0
  107. package/dist/registry/scanner.js +164 -0
  108. package/dist/registry/scanner.js.map +1 -0
  109. package/dist/registry/schema-export.d.ts +9 -0
  110. package/dist/registry/schema-export.d.ts.map +1 -0
  111. package/dist/registry/schema-export.js +132 -0
  112. package/dist/registry/schema-export.js.map +1 -0
  113. package/dist/registry/types.d.ts +29 -0
  114. package/dist/registry/types.d.ts.map +1 -0
  115. package/dist/registry/types.js +5 -0
  116. package/dist/registry/types.js.map +1 -0
  117. package/dist/registry/validation.d.ts +9 -0
  118. package/dist/registry/validation.d.ts.map +1 -0
  119. package/dist/registry/validation.js +33 -0
  120. package/dist/registry/validation.js.map +1 -0
  121. package/dist/schema/annotations.d.ts +8 -0
  122. package/dist/schema/annotations.d.ts.map +1 -0
  123. package/dist/schema/annotations.js +52 -0
  124. package/dist/schema/annotations.js.map +1 -0
  125. package/dist/schema/exporter.d.ts +13 -0
  126. package/dist/schema/exporter.d.ts.map +1 -0
  127. package/dist/schema/exporter.js +71 -0
  128. package/dist/schema/exporter.js.map +1 -0
  129. package/dist/schema/index.d.ts +9 -0
  130. package/dist/schema/index.d.ts.map +1 -0
  131. package/{src/schema/index.ts → dist/schema/index.js} +1 -7
  132. package/dist/schema/index.js.map +1 -0
  133. package/dist/schema/loader.d.ts +30 -0
  134. package/dist/schema/loader.d.ts.map +1 -0
  135. package/dist/schema/loader.js +260 -0
  136. package/dist/schema/loader.js.map +1 -0
  137. package/dist/schema/ref-resolver.d.ts +19 -0
  138. package/dist/schema/ref-resolver.d.ts.map +1 -0
  139. package/dist/schema/ref-resolver.js +212 -0
  140. package/dist/schema/ref-resolver.js.map +1 -0
  141. package/dist/schema/strict.d.ts +7 -0
  142. package/dist/schema/strict.d.ts.map +1 -0
  143. package/dist/schema/strict.js +127 -0
  144. package/dist/schema/strict.js.map +1 -0
  145. package/dist/schema/types.d.ts +53 -0
  146. package/dist/schema/types.d.ts.map +1 -0
  147. package/dist/schema/types.js +31 -0
  148. package/dist/schema/types.js.map +1 -0
  149. package/dist/schema/validator.d.ts +16 -0
  150. package/dist/schema/validator.d.ts.map +1 -0
  151. package/dist/schema/validator.js +71 -0
  152. package/dist/schema/validator.js.map +1 -0
  153. package/dist/trace-context.d.ts +35 -0
  154. package/dist/trace-context.d.ts.map +1 -0
  155. package/dist/trace-context.js +86 -0
  156. package/dist/trace-context.js.map +1 -0
  157. package/dist/utils/index.d.ts +11 -0
  158. package/dist/utils/index.d.ts.map +1 -0
  159. package/dist/utils/index.js +32 -0
  160. package/dist/utils/index.js.map +1 -0
  161. package/dist/utils/pattern.d.ts +5 -0
  162. package/dist/utils/pattern.d.ts.map +1 -0
  163. package/dist/utils/pattern.js +31 -0
  164. package/dist/utils/pattern.js.map +1 -0
  165. package/package.json +8 -2
  166. package/.claude/settings.local.json +0 -12
  167. package/.github/workflows/ci.yml +0 -39
  168. package/.gitmessage +0 -60
  169. package/.pre-commit-config.yaml +0 -28
  170. package/CHANGELOG.md +0 -214
  171. package/CLAUDE.md +0 -68
  172. package/apcore-logo.svg +0 -79
  173. package/planning/acl-system/overview.md +0 -54
  174. package/planning/acl-system/plan.md +0 -92
  175. package/planning/acl-system/state.json +0 -76
  176. package/planning/acl-system/tasks/acl-core.md +0 -226
  177. package/planning/acl-system/tasks/acl-rule.md +0 -92
  178. package/planning/acl-system/tasks/conditional-rules.md +0 -259
  179. package/planning/acl-system/tasks/pattern-matching.md +0 -152
  180. package/planning/acl-system/tasks/yaml-loading.md +0 -271
  181. package/planning/core-executor/overview.md +0 -53
  182. package/planning/core-executor/plan.md +0 -88
  183. package/planning/core-executor/state.json +0 -76
  184. package/planning/core-executor/tasks/async-support.md +0 -106
  185. package/planning/core-executor/tasks/execution-pipeline.md +0 -113
  186. package/planning/core-executor/tasks/redaction.md +0 -85
  187. package/planning/core-executor/tasks/safety-checks.md +0 -65
  188. package/planning/core-executor/tasks/setup.md +0 -75
  189. package/planning/decorator-bindings/overview.md +0 -62
  190. package/planning/decorator-bindings/plan.md +0 -104
  191. package/planning/decorator-bindings/state.json +0 -87
  192. package/planning/decorator-bindings/tasks/binding-directory.md +0 -79
  193. package/planning/decorator-bindings/tasks/binding-loader.md +0 -148
  194. package/planning/decorator-bindings/tasks/explicit-schemas.md +0 -85
  195. package/planning/decorator-bindings/tasks/function-module.md +0 -127
  196. package/planning/decorator-bindings/tasks/module-factory.md +0 -89
  197. package/planning/decorator-bindings/tasks/schema-modes.md +0 -142
  198. package/planning/middleware-system/overview.md +0 -48
  199. package/planning/middleware-system/plan.md +0 -102
  200. package/planning/middleware-system/state.json +0 -65
  201. package/planning/middleware-system/tasks/adapters.md +0 -170
  202. package/planning/middleware-system/tasks/base.md +0 -115
  203. package/planning/middleware-system/tasks/logging-middleware.md +0 -304
  204. package/planning/middleware-system/tasks/manager.md +0 -313
  205. package/planning/observability/overview.md +0 -53
  206. package/planning/observability/plan.md +0 -119
  207. package/planning/observability/state.json +0 -98
  208. package/planning/observability/tasks/context-logger.md +0 -201
  209. package/planning/observability/tasks/exporters.md +0 -121
  210. package/planning/observability/tasks/metrics-collector.md +0 -162
  211. package/planning/observability/tasks/metrics-middleware.md +0 -141
  212. package/planning/observability/tasks/obs-logging-middleware.md +0 -179
  213. package/planning/observability/tasks/span-model.md +0 -120
  214. package/planning/observability/tasks/tracing-middleware.md +0 -179
  215. package/planning/overview.md +0 -81
  216. package/planning/registry-system/overview.md +0 -57
  217. package/planning/registry-system/plan.md +0 -114
  218. package/planning/registry-system/state.json +0 -109
  219. package/planning/registry-system/tasks/dependencies.md +0 -157
  220. package/planning/registry-system/tasks/entry-point.md +0 -148
  221. package/planning/registry-system/tasks/metadata.md +0 -198
  222. package/planning/registry-system/tasks/registry-core.md +0 -323
  223. package/planning/registry-system/tasks/scanner.md +0 -172
  224. package/planning/registry-system/tasks/schema-export.md +0 -261
  225. package/planning/registry-system/tasks/types.md +0 -124
  226. package/planning/registry-system/tasks/validation.md +0 -177
  227. package/planning/schema-system/overview.md +0 -56
  228. package/planning/schema-system/plan.md +0 -121
  229. package/planning/schema-system/state.json +0 -98
  230. package/planning/schema-system/tasks/exporter.md +0 -153
  231. package/planning/schema-system/tasks/loader.md +0 -106
  232. package/planning/schema-system/tasks/ref-resolver.md +0 -133
  233. package/planning/schema-system/tasks/strict-mode.md +0 -140
  234. package/planning/schema-system/tasks/typebox-generation.md +0 -133
  235. package/planning/schema-system/tasks/types-and-annotations.md +0 -160
  236. package/planning/schema-system/tasks/validator.md +0 -149
  237. package/src/acl.ts +0 -200
  238. package/src/async-task.ts +0 -267
  239. package/src/bindings.ts +0 -207
  240. package/src/cancel.ts +0 -32
  241. package/src/config.ts +0 -24
  242. package/src/context.ts +0 -160
  243. package/src/decorator.ts +0 -110
  244. package/src/errors.ts +0 -429
  245. package/src/executor.ts +0 -493
  246. package/src/extensions.ts +0 -265
  247. package/src/middleware/adapters.ts +0 -54
  248. package/src/middleware/base.ts +0 -33
  249. package/src/middleware/logging.ts +0 -103
  250. package/src/middleware/manager.ts +0 -105
  251. package/src/module.ts +0 -43
  252. package/src/observability/context-logger.ts +0 -203
  253. package/src/observability/metrics.ts +0 -214
  254. package/src/observability/tracing.ts +0 -252
  255. package/src/registry/dependencies.ts +0 -99
  256. package/src/registry/entry-point.ts +0 -64
  257. package/src/registry/metadata.ts +0 -111
  258. package/src/registry/registry.ts +0 -580
  259. package/src/registry/scanner.ts +0 -168
  260. package/src/registry/schema-export.ts +0 -181
  261. package/src/registry/types.ts +0 -32
  262. package/src/registry/validation.ts +0 -38
  263. package/src/schema/annotations.ts +0 -68
  264. package/src/schema/exporter.ts +0 -90
  265. package/src/schema/loader.ts +0 -273
  266. package/src/schema/ref-resolver.ts +0 -244
  267. package/src/schema/strict.ts +0 -136
  268. package/src/schema/types.ts +0 -73
  269. package/src/schema/validator.ts +0 -82
  270. package/src/trace-context.ts +0 -102
  271. package/src/utils/index.ts +0 -5
  272. package/src/utils/pattern.ts +0 -30
  273. package/tests/async-task.test.ts +0 -335
  274. package/tests/helpers.ts +0 -30
  275. package/tests/integration/test-acl-safety.test.ts +0 -269
  276. package/tests/integration/test-binding-executor.test.ts +0 -194
  277. package/tests/integration/test-e2e-flow.test.ts +0 -117
  278. package/tests/integration/test-error-propagation.test.ts +0 -259
  279. package/tests/integration/test-middleware-chain.test.ts +0 -120
  280. package/tests/integration/test-observability-integration.test.ts +0 -438
  281. package/tests/observability/test-context-logger.test.ts +0 -123
  282. package/tests/observability/test-metrics.test.ts +0 -186
  283. package/tests/observability/test-tracing.test.ts +0 -303
  284. package/tests/registry/test-dependencies.test.ts +0 -70
  285. package/tests/registry/test-entry-point.test.ts +0 -133
  286. package/tests/registry/test-metadata.test.ts +0 -265
  287. package/tests/registry/test-registry.test.ts +0 -1397
  288. package/tests/registry/test-scanner.test.ts +0 -257
  289. package/tests/registry/test-schema-export.test.ts +0 -355
  290. package/tests/registry/test-validation.test.ts +0 -75
  291. package/tests/schema/test-annotations.test.ts +0 -137
  292. package/tests/schema/test-exporter.test.ts +0 -172
  293. package/tests/schema/test-loader.test.ts +0 -461
  294. package/tests/schema/test-ref-resolver.test.ts +0 -530
  295. package/tests/schema/test-strict.test.ts +0 -348
  296. package/tests/schema/test-validator.test.ts +0 -64
  297. package/tests/test-acl.test.ts +0 -423
  298. package/tests/test-bindings.test.ts +0 -227
  299. package/tests/test-cancel.test.ts +0 -71
  300. package/tests/test-config.test.ts +0 -76
  301. package/tests/test-context.test.ts +0 -266
  302. package/tests/test-decorator.test.ts +0 -173
  303. package/tests/test-errors.test.ts +0 -647
  304. package/tests/test-executor-stream.test.ts +0 -208
  305. package/tests/test-executor.test.ts +0 -252
  306. package/tests/test-extensions.test.ts +0 -310
  307. package/tests/test-logging-middleware.test.ts +0 -150
  308. package/tests/test-middleware-manager.test.ts +0 -185
  309. package/tests/test-middleware.test.ts +0 -86
  310. package/tests/test-trace-context.test.ts +0 -251
  311. package/tests/utils/test-pattern.test.ts +0 -109
  312. package/tsconfig.build.json +0 -8
  313. package/tsconfig.json +0 -20
  314. package/vitest.config.ts +0 -18
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Directory scanner for discovering TypeScript/JavaScript extension modules.
3
+ */
4
+ import { ConfigError, ConfigNotFoundError } from '../errors.js';
5
+ // Lazy-load Node.js built-in modules for browser compatibility
6
+ let _nodeFs = null;
7
+ let _nodePath = null;
8
+ try {
9
+ _nodeFs = await import('node:fs');
10
+ }
11
+ catch { /* browser environment */ }
12
+ try {
13
+ _nodePath = await import('node:path');
14
+ }
15
+ catch { /* browser environment */ }
16
+ const SKIP_DIR_NAMES = new Set(['node_modules', '__pycache__']);
17
+ const VALID_EXTENSIONS = new Set(['.ts', '.js']);
18
+ const SKIP_SUFFIXES = ['.d.ts', '.test.ts', '.test.js', '.spec.ts', '.spec.js'];
19
+ function existsAndIsDir(p) {
20
+ try {
21
+ return _nodeFs.statSync(p).isDirectory();
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ export function scanExtensions(root, maxDepth = 8, followSymlinks = false) {
28
+ const { readdirSync, statSync, lstatSync, realpathSync } = _nodeFs;
29
+ const { resolve, relative, join, extname, basename, sep } = _nodePath;
30
+ const rootResolved = resolve(root);
31
+ if (!existsAndIsDir(rootResolved)) {
32
+ throw new ConfigNotFoundError(rootResolved);
33
+ }
34
+ const visitedRealPaths = new Set([realpathSync(rootResolved)]);
35
+ const results = [];
36
+ const seenIds = new Map();
37
+ const seenIdsLower = new Map();
38
+ function scanDir(dirPath, depth) {
39
+ if (depth > maxDepth) {
40
+ console.warn(`[apcore:scanner] Max depth ${maxDepth} exceeded at: ${dirPath}`);
41
+ return;
42
+ }
43
+ let entries;
44
+ try {
45
+ entries = readdirSync(dirPath);
46
+ }
47
+ catch {
48
+ console.warn(`[apcore:scanner] Cannot read directory: ${dirPath}`);
49
+ return;
50
+ }
51
+ for (const name of entries) {
52
+ if (name.startsWith('.') || name.startsWith('_'))
53
+ continue;
54
+ if (SKIP_DIR_NAMES.has(name))
55
+ continue;
56
+ const entryPath = join(dirPath, name);
57
+ let lstat;
58
+ try {
59
+ lstat = lstatSync(entryPath);
60
+ }
61
+ catch {
62
+ console.warn(`[apcore:scanner] Cannot stat entry: ${entryPath}`);
63
+ continue;
64
+ }
65
+ const isSymlink = lstat.isSymbolicLink();
66
+ let isDir;
67
+ let isFile;
68
+ if (isSymlink) {
69
+ if (!followSymlinks)
70
+ continue;
71
+ const real = realpathSync(entryPath);
72
+ if (visitedRealPaths.has(real))
73
+ continue;
74
+ visitedRealPaths.add(real);
75
+ // Resolve the symlink target to check if it's a dir or file
76
+ let targetStat;
77
+ try {
78
+ targetStat = statSync(entryPath);
79
+ }
80
+ catch {
81
+ console.warn(`[apcore:scanner] Cannot resolve symlink target: ${entryPath}`);
82
+ continue;
83
+ }
84
+ isDir = targetStat.isDirectory();
85
+ isFile = targetStat.isFile();
86
+ }
87
+ else {
88
+ isDir = lstat.isDirectory();
89
+ isFile = lstat.isFile();
90
+ }
91
+ if (isDir) {
92
+ scanDir(entryPath, depth + 1);
93
+ }
94
+ else if (isFile) {
95
+ const ext = extname(name);
96
+ if (!VALID_EXTENSIONS.has(ext))
97
+ continue;
98
+ if (SKIP_SUFFIXES.some((s) => name.endsWith(s)))
99
+ continue;
100
+ const rel = relative(rootResolved, entryPath);
101
+ const canonicalId = rel
102
+ .replace(new RegExp(`\\${sep}`, 'g'), '.')
103
+ .replace(/\.(ts|js)$/, '');
104
+ if (seenIds.has(canonicalId)) {
105
+ console.warn(`[apcore:scanner] Duplicate module ID '${canonicalId}', skipping: ${entryPath}`);
106
+ continue;
107
+ }
108
+ const lowerId = canonicalId.toLowerCase();
109
+ if (seenIdsLower.has(lowerId) && seenIdsLower.get(lowerId) !== canonicalId) {
110
+ console.warn(`[apcore:scanner] Case collision: '${canonicalId}' vs '${seenIdsLower.get(lowerId)}'`);
111
+ }
112
+ // Check for companion metadata file
113
+ const stem = basename(entryPath, ext);
114
+ const metaPath = join(dirPath, stem + '_meta.yaml');
115
+ let metaPathResult = null;
116
+ try {
117
+ if (statSync(metaPath).isFile())
118
+ metaPathResult = metaPath;
119
+ }
120
+ catch {
121
+ // no meta file
122
+ }
123
+ seenIds.set(canonicalId, entryPath);
124
+ seenIdsLower.set(lowerId, canonicalId);
125
+ results.push({
126
+ filePath: entryPath,
127
+ canonicalId,
128
+ metaPath: metaPathResult,
129
+ namespace: null,
130
+ });
131
+ }
132
+ }
133
+ }
134
+ scanDir(rootResolved, 1);
135
+ return results;
136
+ }
137
+ export function scanMultiRoot(roots, maxDepth = 8, followSymlinks = false) {
138
+ const { basename } = _nodePath;
139
+ const allResults = [];
140
+ const seenNamespaces = new Set();
141
+ const resolved = [];
142
+ for (const entry of roots) {
143
+ const rootPath = entry['root'];
144
+ const namespace = entry['namespace'] || basename(rootPath);
145
+ if (seenNamespaces.has(namespace)) {
146
+ throw new ConfigError(`Duplicate namespace: '${namespace}'`);
147
+ }
148
+ seenNamespaces.add(namespace);
149
+ resolved.push([rootPath, namespace]);
150
+ }
151
+ for (const [rootPath, namespace] of resolved) {
152
+ const modules = scanExtensions(rootPath, maxDepth, followSymlinks);
153
+ for (const m of modules) {
154
+ allResults.push({
155
+ filePath: m.filePath,
156
+ canonicalId: `${namespace}.${m.canonicalId}`,
157
+ metaPath: m.metaPath,
158
+ namespace,
159
+ });
160
+ }
161
+ }
162
+ return allResults;
163
+ }
164
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/registry/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Schema query and export functions for the registry system.
3
+ */
4
+ import type { Registry } from './registry.js';
5
+ export declare function getSchema(registry: Registry, moduleId: string): Record<string, unknown> | null;
6
+ export declare function exportSchema(registry: Registry, moduleId: string, format?: string, strict?: boolean, compact?: boolean, profile?: string | null): string;
7
+ export declare function getAllSchemas(registry: Registry): Record<string, Record<string, unknown>>;
8
+ export declare function exportAllSchemas(registry: Registry, format?: string, strict?: boolean, compact?: boolean, profile?: string | null): string;
9
+ //# sourceMappingURL=schema-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-export.d.ts","sourceRoot":"","sources":["../../src/registry/schema-export.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA8B9F;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAe,EACvB,MAAM,GAAE,OAAe,EACvB,OAAO,GAAE,OAAe,EACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAoBR;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASzF;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,MAAe,EACvB,MAAM,GAAE,OAAe,EACvB,OAAO,GAAE,OAAe,EACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAiBR"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Schema query and export functions for the registry system.
3
+ */
4
+ import yaml from 'js-yaml';
5
+ import { InvalidInputError, ModuleNotFoundError } from '../errors.js';
6
+ import { deepCopy } from '../utils/index.js';
7
+ import { SchemaExporter } from '../schema/exporter.js';
8
+ import { stripExtensions, toStrictSchema } from '../schema/strict.js';
9
+ import { ExportProfile } from '../schema/types.js';
10
+ export function getSchema(registry, moduleId) {
11
+ const module = registry.get(moduleId);
12
+ if (module === null)
13
+ return null;
14
+ const mod = module;
15
+ // TypeBox schemas are already JSON Schema
16
+ const inputSchemaDict = mod['inputSchema'] ?? {};
17
+ const outputSchemaDict = mod['outputSchema'] ?? {};
18
+ const annotations = mod['annotations'];
19
+ let annotationsDict = null;
20
+ if (annotations) {
21
+ annotationsDict = { ...annotations };
22
+ }
23
+ const examplesRaw = mod['examples'] ?? [];
24
+ const examplesList = examplesRaw.map((ex) => ({ ...ex }));
25
+ return {
26
+ module_id: moduleId,
27
+ name: mod['name'] ?? null,
28
+ description: mod['description'] ?? '',
29
+ version: mod['version'] ?? '1.0.0',
30
+ tags: [...(mod['tags'] ?? [])],
31
+ input_schema: inputSchemaDict,
32
+ output_schema: outputSchemaDict,
33
+ annotations: annotationsDict,
34
+ examples: examplesList,
35
+ };
36
+ }
37
+ export function exportSchema(registry, moduleId, format = 'json', strict = false, compact = false, profile) {
38
+ const schemaDict = getSchema(registry, moduleId);
39
+ if (schemaDict === null) {
40
+ throw new ModuleNotFoundError(moduleId);
41
+ }
42
+ if (profile != null) {
43
+ return exportWithProfile(registry, moduleId, schemaDict, profile, format);
44
+ }
45
+ const result = deepCopy(schemaDict);
46
+ if (strict) {
47
+ result['input_schema'] = toStrictSchema(result['input_schema']);
48
+ result['output_schema'] = toStrictSchema(result['output_schema']);
49
+ }
50
+ else if (compact) {
51
+ applyCompact(result);
52
+ }
53
+ return serialize(result, format);
54
+ }
55
+ export function getAllSchemas(registry) {
56
+ const result = {};
57
+ for (const moduleId of registry.moduleIds) {
58
+ const schema = getSchema(registry, moduleId);
59
+ if (schema !== null) {
60
+ result[moduleId] = schema;
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ export function exportAllSchemas(registry, format = 'json', strict = false, compact = false, profile) {
66
+ const allSchemas = getAllSchemas(registry);
67
+ if (strict || compact) {
68
+ for (const [moduleId, schema] of Object.entries(allSchemas)) {
69
+ const result = deepCopy(schema);
70
+ if (strict) {
71
+ result['input_schema'] = toStrictSchema(result['input_schema']);
72
+ result['output_schema'] = toStrictSchema(result['output_schema']);
73
+ }
74
+ else if (compact) {
75
+ applyCompact(result);
76
+ }
77
+ allSchemas[moduleId] = result;
78
+ }
79
+ }
80
+ return serialize(allSchemas, format);
81
+ }
82
+ function exportWithProfile(registry, moduleId, schemaDict, profile, format) {
83
+ const schemaDef = {
84
+ moduleId,
85
+ description: schemaDict['description'],
86
+ inputSchema: schemaDict['input_schema'],
87
+ outputSchema: schemaDict['output_schema'],
88
+ definitions: {},
89
+ version: schemaDict['version'] ?? '1.0.0',
90
+ };
91
+ const module = registry.get(moduleId);
92
+ const annotations = module ? module['annotations'] : undefined;
93
+ const examples = module ? module['examples'] ?? [] : [];
94
+ const name = module ? module['name'] : undefined;
95
+ const validProfiles = new Set(Object.values(ExportProfile));
96
+ if (!validProfiles.has(profile)) {
97
+ throw new InvalidInputError(`Invalid export profile: '${profile}'. Must be one of: ${[...validProfiles].join(', ')}`);
98
+ }
99
+ const exported = new SchemaExporter().export(schemaDef, profile, annotations, examples, name);
100
+ return serialize(exported, format);
101
+ }
102
+ function applyCompact(schemaDict) {
103
+ const desc = schemaDict['description'];
104
+ if (desc) {
105
+ schemaDict['description'] = truncateDescription(desc);
106
+ }
107
+ stripExtensions(schemaDict['input_schema'] ?? {});
108
+ stripExtensions(schemaDict['output_schema'] ?? {});
109
+ delete schemaDict['documentation'];
110
+ delete schemaDict['examples'];
111
+ }
112
+ function truncateDescription(description) {
113
+ const dotSpace = description.indexOf('. ');
114
+ const newline = description.indexOf('\n');
115
+ const candidates = [];
116
+ if (dotSpace >= 0)
117
+ candidates.push(dotSpace + 1);
118
+ if (newline >= 0)
119
+ candidates.push(newline);
120
+ if (candidates.length > 0) {
121
+ const cut = Math.min(...candidates);
122
+ return description.slice(0, cut).trimEnd();
123
+ }
124
+ return description;
125
+ }
126
+ function serialize(data, format) {
127
+ if (format === 'yaml') {
128
+ return yaml.dump(data, { flowLevel: -1 });
129
+ }
130
+ return JSON.stringify(data, null, 2);
131
+ }
132
+ //# sourceMappingURL=schema-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-export.js","sourceRoot":"","sources":["../../src/registry/schema-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Registry types: ModuleDescriptor, DiscoveredModule, DependencyInfo.
3
+ */
4
+ import type { ModuleAnnotations, ModuleExample } from '../module.js';
5
+ export interface ModuleDescriptor {
6
+ moduleId: string;
7
+ name: string | null;
8
+ description: string;
9
+ documentation: string | null;
10
+ inputSchema: Record<string, unknown>;
11
+ outputSchema: Record<string, unknown>;
12
+ version: string;
13
+ tags: string[];
14
+ annotations: ModuleAnnotations | null;
15
+ examples: ModuleExample[];
16
+ metadata: Record<string, unknown>;
17
+ }
18
+ export interface DiscoveredModule {
19
+ filePath: string;
20
+ canonicalId: string;
21
+ metaPath: string | null;
22
+ namespace: string | null;
23
+ }
24
+ export interface DependencyInfo {
25
+ moduleId: string;
26
+ version: string | null;
27
+ optional: boolean;
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Registry types: ModuleDescriptor, DiscoveredModule, DependencyInfo.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Module validation for the registry system.
3
+ *
4
+ * In TypeScript, modules use TypeBox TSchema (which are plain objects) instead of
5
+ * Pydantic BaseModel classes. Duck-type checks validate that the module has
6
+ * inputSchema, outputSchema, description, and execute.
7
+ */
8
+ export declare function validateModule(moduleOrClass: unknown): string[];
9
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/registry/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,cAAc,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,EAAE,CA6B/D"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Module validation for the registry system.
3
+ *
4
+ * In TypeScript, modules use TypeBox TSchema (which are plain objects) instead of
5
+ * Pydantic BaseModel classes. Duck-type checks validate that the module has
6
+ * inputSchema, outputSchema, description, and execute.
7
+ */
8
+ export function validateModule(moduleOrClass) {
9
+ const errors = [];
10
+ const obj = moduleOrClass;
11
+ // Check inputSchema
12
+ const inputSchema = obj['inputSchema'] ?? obj.constructor?.['inputSchema'];
13
+ if (inputSchema == null || typeof inputSchema !== 'object') {
14
+ errors.push('Missing or invalid inputSchema: must be a TSchema object');
15
+ }
16
+ // Check outputSchema
17
+ const outputSchema = obj['outputSchema'] ?? obj.constructor?.['outputSchema'];
18
+ if (outputSchema == null || typeof outputSchema !== 'object') {
19
+ errors.push('Missing or invalid outputSchema: must be a TSchema object');
20
+ }
21
+ // Check description
22
+ const description = obj['description'];
23
+ if (!description || typeof description !== 'string') {
24
+ errors.push('Missing or empty description');
25
+ }
26
+ // Check execute
27
+ const execute = obj['execute'];
28
+ if (execute == null || typeof execute !== 'function') {
29
+ errors.push('Missing execute method');
30
+ }
31
+ return errors;
32
+ }
33
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/registry/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,cAAc,CAAC,aAAsB;IACnD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,aAAwC,CAAC;IAErD,oBAAoB;IACpB,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,IAAK,GAAG,CAAC,WAAkD,EAAE,CAAC,aAAa,CAAC,CAAC;IACnH,IAAI,WAAW,IAAI,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,GAAG,CAAC,cAAc,CAAC,IAAK,GAAG,CAAC,WAAkD,EAAE,CAAC,cAAc,CAAC,CAAC;IACtH,IAAI,YAAY,IAAI,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC3E,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAED,gBAAgB;IAChB,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Annotation conflict resolution — merge YAML and code metadata.
3
+ */
4
+ import type { ModuleAnnotations, ModuleExample } from '../module.js';
5
+ export declare function mergeAnnotations(yamlAnnotations: Record<string, unknown> | null | undefined, codeAnnotations: ModuleAnnotations | null | undefined): ModuleAnnotations;
6
+ export declare function mergeExamples(yamlExamples: Array<Record<string, unknown>> | null | undefined, codeExamples: ModuleExample[] | null | undefined): ModuleExample[];
7
+ export declare function mergeMetadata(yamlMetadata: Record<string, unknown> | null | undefined, codeMetadata: Record<string, unknown> | null | undefined): Record<string, unknown>;
8
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/schema/annotations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAYrE,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3D,eAAe,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GACpD,iBAAiB,CAqBnB;AAED,wBAAgB,aAAa,CAC3B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/D,YAAY,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/C,aAAa,EAAE,CAWjB;AAED,wBAAgB,aAAa,CAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACxD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACvD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Annotation conflict resolution — merge YAML and code metadata.
3
+ */
4
+ import { DEFAULT_ANNOTATIONS } from '../module.js';
5
+ const ANNOTATION_FIELDS = [
6
+ 'readonly',
7
+ 'destructive',
8
+ 'idempotent',
9
+ 'requiresApproval',
10
+ 'openWorld',
11
+ 'streaming',
12
+ ];
13
+ export function mergeAnnotations(yamlAnnotations, codeAnnotations) {
14
+ const values = {};
15
+ for (const f of ANNOTATION_FIELDS) {
16
+ values[f] = DEFAULT_ANNOTATIONS[f];
17
+ }
18
+ if (codeAnnotations != null) {
19
+ for (const f of ANNOTATION_FIELDS) {
20
+ values[f] = codeAnnotations[f];
21
+ }
22
+ }
23
+ if (yamlAnnotations != null) {
24
+ for (const [key, val] of Object.entries(yamlAnnotations)) {
25
+ if (ANNOTATION_FIELDS.includes(key)) {
26
+ values[key] = val;
27
+ }
28
+ }
29
+ }
30
+ return values;
31
+ }
32
+ export function mergeExamples(yamlExamples, codeExamples) {
33
+ if (yamlExamples != null) {
34
+ return yamlExamples.map((d) => ({
35
+ title: d['title'],
36
+ inputs: d['inputs'] ?? {},
37
+ output: d['output'] ?? {},
38
+ description: d['description'],
39
+ }));
40
+ }
41
+ if (codeExamples != null)
42
+ return codeExamples;
43
+ return [];
44
+ }
45
+ export function mergeMetadata(yamlMetadata, codeMetadata) {
46
+ const result = codeMetadata != null ? { ...codeMetadata } : {};
47
+ if (yamlMetadata != null) {
48
+ Object.assign(result, yamlMetadata);
49
+ }
50
+ return result;
51
+ }
52
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/schema/annotations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,iBAAiB,GAA2C;IAChE,UAAU;IACV,aAAa;IACb,YAAY;IACZ,kBAAkB;IAClB,WAAW;IACX,WAAW;CACZ,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,eAA2D,EAC3D,eAAqD;IAErD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,MAAM,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACzD,IAAK,iBAAuC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAsC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,YAA+D,EAC/D,YAAgD;IAEhD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,CAAC,CAAC,OAAO,CAAW;YAC3B,MAAM,EAAG,CAAC,CAAC,QAAQ,CAA6B,IAAI,EAAE;YACtD,MAAM,EAAG,CAAC,CAAC,QAAQ,CAA6B,IAAI,EAAE;YACtD,WAAW,EAAE,CAAC,CAAC,aAAa,CAAuB;SACpD,CAAC,CAAC,CAAC;IACN,CAAC;IACD,IAAI,YAAY,IAAI,IAAI;QAAE,OAAO,YAAY,CAAC;IAC9C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,YAAwD,EACxD,YAAwD;IAExD,MAAM,MAAM,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * SchemaExporter — converts schemas to platform-specific export formats.
3
+ */
4
+ import type { ModuleAnnotations, ModuleExample } from '../module.js';
5
+ import { ExportProfile, type SchemaDefinition } from './types.js';
6
+ export declare class SchemaExporter {
7
+ export(schemaDef: SchemaDefinition, profile: ExportProfile, annotations?: ModuleAnnotations | null, examples?: ModuleExample[] | null, name?: string | null): Record<string, unknown>;
8
+ exportMcp(schemaDef: SchemaDefinition, annotations?: ModuleAnnotations | null, name?: string | null): Record<string, unknown>;
9
+ exportOpenai(schemaDef: SchemaDefinition): Record<string, unknown>;
10
+ exportAnthropic(schemaDef: SchemaDefinition, examples?: ModuleExample[] | null): Record<string, unknown>;
11
+ exportGeneric(schemaDef: SchemaDefinition): Record<string, unknown>;
12
+ }
13
+ //# sourceMappingURL=exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/schema/exporter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElE,qBAAa,cAAc;IACzB,MAAM,CACJ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,aAAa,EACtB,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,EACtC,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,EACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAa1B,SAAS,CACP,SAAS,EAAE,gBAAgB,EAC3B,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,EACtC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAc1B,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAelE,eAAe,CACb,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAe1B,aAAa,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASpE"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * SchemaExporter — converts schemas to platform-specific export formats.
3
+ */
4
+ import { deepCopy } from '../utils/index.js';
5
+ import { applyLlmDescriptions, stripExtensions, toStrictSchema } from './strict.js';
6
+ import { ExportProfile } from './types.js';
7
+ export class SchemaExporter {
8
+ export(schemaDef, profile, annotations, examples, name) {
9
+ if (profile === ExportProfile.MCP) {
10
+ return this.exportMcp(schemaDef, annotations, name);
11
+ }
12
+ if (profile === ExportProfile.OpenAI) {
13
+ return this.exportOpenai(schemaDef);
14
+ }
15
+ if (profile === ExportProfile.Anthropic) {
16
+ return this.exportAnthropic(schemaDef, examples);
17
+ }
18
+ return this.exportGeneric(schemaDef);
19
+ }
20
+ exportMcp(schemaDef, annotations, name) {
21
+ return {
22
+ name: name ?? schemaDef.moduleId,
23
+ description: schemaDef.description,
24
+ inputSchema: schemaDef.inputSchema,
25
+ annotations: {
26
+ readOnlyHint: annotations?.readonly ?? false,
27
+ destructiveHint: annotations?.destructive ?? false,
28
+ idempotentHint: annotations?.idempotent ?? false,
29
+ openWorldHint: annotations?.openWorld ?? true,
30
+ },
31
+ };
32
+ }
33
+ exportOpenai(schemaDef) {
34
+ const schema = deepCopy(schemaDef.inputSchema);
35
+ applyLlmDescriptions(schema);
36
+ const strictSchema = toStrictSchema(schema);
37
+ return {
38
+ type: 'function',
39
+ function: {
40
+ name: schemaDef.moduleId.replace(/\./g, '_'),
41
+ description: schemaDef.description,
42
+ parameters: strictSchema,
43
+ strict: true,
44
+ },
45
+ };
46
+ }
47
+ exportAnthropic(schemaDef, examples) {
48
+ const schema = deepCopy(schemaDef.inputSchema);
49
+ applyLlmDescriptions(schema);
50
+ stripExtensions(schema);
51
+ const result = {
52
+ name: schemaDef.moduleId.replace(/\./g, '_'),
53
+ description: schemaDef.description,
54
+ input_schema: schema,
55
+ };
56
+ if (examples && examples.length > 0) {
57
+ result['input_examples'] = examples.map((ex) => ex.inputs);
58
+ }
59
+ return result;
60
+ }
61
+ exportGeneric(schemaDef) {
62
+ return {
63
+ module_id: schemaDef.moduleId,
64
+ description: schemaDef.description,
65
+ input_schema: schemaDef.inputSchema,
66
+ output_schema: schemaDef.outputSchema,
67
+ definitions: schemaDef.definitions,
68
+ };
69
+ }
70
+ }
71
+ //# sourceMappingURL=exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../src/schema/exporter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAyB,MAAM,YAAY,CAAC;AAElE,MAAM,OAAO,cAAc;IACzB,MAAM,CACJ,SAA2B,EAC3B,OAAsB,EACtB,WAAsC,EACtC,QAAiC,EACjC,IAAoB;QAEpB,IAAI,OAAO,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,SAAS,CACP,SAA2B,EAC3B,WAAsC,EACtC,IAAoB;QAEpB,OAAO;YACL,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ;YAChC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,WAAW,EAAE;gBACX,YAAY,EAAE,WAAW,EAAE,QAAQ,IAAI,KAAK;gBAC5C,eAAe,EAAE,WAAW,EAAE,WAAW,IAAI,KAAK;gBAClD,cAAc,EAAE,WAAW,EAAE,UAAU,IAAI,KAAK;gBAChD,aAAa,EAAE,WAAW,EAAE,SAAS,IAAI,IAAI;aAC9C;SACF,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,SAA2B;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;gBAC5C,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,UAAU,EAAE,YAAY;gBACxB,MAAM,EAAE,IAAI;aACb;SACF,CAAC;IACJ,CAAC;IAED,eAAe,CACb,SAA2B,EAC3B,QAAiC;QAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,MAAM,GAA4B;YACtC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YAC5C,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,SAA2B;QACvC,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,QAAQ;YAC7B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,YAAY,EAAE,SAAS,CAAC,WAAW;YACnC,aAAa,EAAE,SAAS,CAAC,YAAY;YACrC,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ export { SchemaStrategy, ExportProfile, validationResultToError } from './types.js';
2
+ export type { SchemaDefinition, ResolvedSchema, SchemaValidationErrorDetail, SchemaValidationResult, LLMExtensions, } from './types.js';
3
+ export { RefResolver } from './ref-resolver.js';
4
+ export { toStrictSchema, applyLlmDescriptions, stripExtensions } from './strict.js';
5
+ export { mergeAnnotations, mergeExamples, mergeMetadata } from './annotations.js';
6
+ export { SchemaLoader, jsonSchemaToTypeBox } from './loader.js';
7
+ export { SchemaValidator } from './validator.js';
8
+ export { SchemaExporter } from './exporter.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACpF,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -1,14 +1,8 @@
1
1
  export { SchemaStrategy, ExportProfile, validationResultToError } from './types.js';
2
- export type {
3
- SchemaDefinition,
4
- ResolvedSchema,
5
- SchemaValidationErrorDetail,
6
- SchemaValidationResult,
7
- LLMExtensions,
8
- } from './types.js';
9
2
  export { RefResolver } from './ref-resolver.js';
10
3
  export { toStrictSchema, applyLlmDescriptions, stripExtensions } from './strict.js';
11
4
  export { mergeAnnotations, mergeExamples, mergeMetadata } from './annotations.js';
12
5
  export { SchemaLoader, jsonSchemaToTypeBox } from './loader.js';
13
6
  export { SchemaValidator } from './validator.js';
14
7
  export { SchemaExporter } from './exporter.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQpF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}