@ontologie/cli 0.1.0-preview.1

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 (266) hide show
  1. package/README.md +492 -0
  2. package/dist/cache/keys.d.ts +11 -0
  3. package/dist/cache/keys.d.ts.map +1 -0
  4. package/dist/cache/keys.js +14 -0
  5. package/dist/cache/keys.js.map +1 -0
  6. package/dist/cache/store.d.ts +23 -0
  7. package/dist/cache/store.d.ts.map +1 -0
  8. package/dist/cache/store.js +160 -0
  9. package/dist/cache/store.js.map +1 -0
  10. package/dist/cli-compat.d.ts +6 -0
  11. package/dist/cli-compat.d.ts.map +1 -0
  12. package/dist/cli-compat.js +11 -0
  13. package/dist/cli-compat.js.map +1 -0
  14. package/dist/cli.d.ts +30 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +119 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/client.d.ts +7 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +15 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/commands/actions.d.ts +22 -0
  23. package/dist/commands/actions.d.ts.map +1 -0
  24. package/dist/commands/actions.js +211 -0
  25. package/dist/commands/actions.js.map +1 -0
  26. package/dist/commands/agent-files.d.ts +27 -0
  27. package/dist/commands/agent-files.d.ts.map +1 -0
  28. package/dist/commands/agent-files.js +167 -0
  29. package/dist/commands/agent-files.js.map +1 -0
  30. package/dist/commands/agent.d.ts +23 -0
  31. package/dist/commands/agent.d.ts.map +1 -0
  32. package/dist/commands/agent.js +314 -0
  33. package/dist/commands/agent.js.map +1 -0
  34. package/dist/commands/audit.d.ts +11 -0
  35. package/dist/commands/audit.d.ts.map +1 -0
  36. package/dist/commands/audit.js +94 -0
  37. package/dist/commands/audit.js.map +1 -0
  38. package/dist/commands/cache.d.ts +8 -0
  39. package/dist/commands/cache.d.ts.map +1 -0
  40. package/dist/commands/cache.js +40 -0
  41. package/dist/commands/cache.js.map +1 -0
  42. package/dist/commands/capabilities.d.ts +56 -0
  43. package/dist/commands/capabilities.d.ts.map +1 -0
  44. package/dist/commands/capabilities.js +304 -0
  45. package/dist/commands/capabilities.js.map +1 -0
  46. package/dist/commands/check.d.ts +7 -0
  47. package/dist/commands/check.d.ts.map +1 -0
  48. package/dist/commands/check.js +16 -0
  49. package/dist/commands/check.js.map +1 -0
  50. package/dist/commands/config.d.ts +6 -0
  51. package/dist/commands/config.d.ts.map +1 -0
  52. package/dist/commands/config.js +133 -0
  53. package/dist/commands/config.js.map +1 -0
  54. package/dist/commands/context.d.ts +6 -0
  55. package/dist/commands/context.d.ts.map +1 -0
  56. package/dist/commands/context.js +226 -0
  57. package/dist/commands/context.js.map +1 -0
  58. package/dist/commands/dev.d.ts +15 -0
  59. package/dist/commands/dev.d.ts.map +1 -0
  60. package/dist/commands/dev.js +62 -0
  61. package/dist/commands/dev.js.map +1 -0
  62. package/dist/commands/docs-alias.d.ts +14 -0
  63. package/dist/commands/docs-alias.d.ts.map +1 -0
  64. package/dist/commands/docs-alias.js +28 -0
  65. package/dist/commands/docs-alias.js.map +1 -0
  66. package/dist/commands/docs.d.ts +6 -0
  67. package/dist/commands/docs.d.ts.map +1 -0
  68. package/dist/commands/docs.js +67 -0
  69. package/dist/commands/docs.js.map +1 -0
  70. package/dist/commands/doctor.d.ts +6 -0
  71. package/dist/commands/doctor.d.ts.map +1 -0
  72. package/dist/commands/doctor.js +161 -0
  73. package/dist/commands/doctor.js.map +1 -0
  74. package/dist/commands/generate.d.ts +7 -0
  75. package/dist/commands/generate.d.ts.map +1 -0
  76. package/dist/commands/generate.js +36 -0
  77. package/dist/commands/generate.js.map +1 -0
  78. package/dist/commands/graph.d.ts +9 -0
  79. package/dist/commands/graph.d.ts.map +1 -0
  80. package/dist/commands/graph.js +149 -0
  81. package/dist/commands/graph.js.map +1 -0
  82. package/dist/commands/import.d.ts +19 -0
  83. package/dist/commands/import.d.ts.map +1 -0
  84. package/dist/commands/import.js +330 -0
  85. package/dist/commands/import.js.map +1 -0
  86. package/dist/commands/index.d.ts +80 -0
  87. package/dist/commands/index.d.ts.map +1 -0
  88. package/dist/commands/index.js +345 -0
  89. package/dist/commands/index.js.map +1 -0
  90. package/dist/commands/init.d.ts +7 -0
  91. package/dist/commands/init.d.ts.map +1 -0
  92. package/dist/commands/init.js +101 -0
  93. package/dist/commands/init.js.map +1 -0
  94. package/dist/commands/instances.d.ts +7 -0
  95. package/dist/commands/instances.d.ts.map +1 -0
  96. package/dist/commands/instances.js +418 -0
  97. package/dist/commands/instances.js.map +1 -0
  98. package/dist/commands/keys.d.ts +6 -0
  99. package/dist/commands/keys.d.ts.map +1 -0
  100. package/dist/commands/keys.js +113 -0
  101. package/dist/commands/keys.js.map +1 -0
  102. package/dist/commands/knowledge.d.ts +6 -0
  103. package/dist/commands/knowledge.d.ts.map +1 -0
  104. package/dist/commands/knowledge.js +76 -0
  105. package/dist/commands/knowledge.js.map +1 -0
  106. package/dist/commands/model.d.ts +3 -0
  107. package/dist/commands/model.d.ts.map +1 -0
  108. package/dist/commands/model.js +40 -0
  109. package/dist/commands/model.js.map +1 -0
  110. package/dist/commands/nodes.d.ts +6 -0
  111. package/dist/commands/nodes.d.ts.map +1 -0
  112. package/dist/commands/nodes.js +111 -0
  113. package/dist/commands/nodes.js.map +1 -0
  114. package/dist/commands/openapi.d.ts +7 -0
  115. package/dist/commands/openapi.d.ts.map +1 -0
  116. package/dist/commands/openapi.js +17 -0
  117. package/dist/commands/openapi.js.map +1 -0
  118. package/dist/commands/plan.d.ts +19 -0
  119. package/dist/commands/plan.d.ts.map +1 -0
  120. package/dist/commands/plan.js +563 -0
  121. package/dist/commands/plan.js.map +1 -0
  122. package/dist/commands/process.d.ts +3 -0
  123. package/dist/commands/process.d.ts.map +1 -0
  124. package/dist/commands/process.js +67 -0
  125. package/dist/commands/process.js.map +1 -0
  126. package/dist/commands/query.d.ts +26 -0
  127. package/dist/commands/query.d.ts.map +1 -0
  128. package/dist/commands/query.js +253 -0
  129. package/dist/commands/query.js.map +1 -0
  130. package/dist/commands/schema.d.ts +24 -0
  131. package/dist/commands/schema.d.ts.map +1 -0
  132. package/dist/commands/schema.js +933 -0
  133. package/dist/commands/schema.js.map +1 -0
  134. package/dist/commands/search.d.ts +10 -0
  135. package/dist/commands/search.d.ts.map +1 -0
  136. package/dist/commands/search.js +74 -0
  137. package/dist/commands/search.js.map +1 -0
  138. package/dist/commands/shared.d.ts +32 -0
  139. package/dist/commands/shared.d.ts.map +1 -0
  140. package/dist/commands/shared.js +63 -0
  141. package/dist/commands/shared.js.map +1 -0
  142. package/dist/commands/usage.d.ts +6 -0
  143. package/dist/commands/usage.d.ts.map +1 -0
  144. package/dist/commands/usage.js +86 -0
  145. package/dist/commands/usage.js.map +1 -0
  146. package/dist/commands/validators.d.ts +30 -0
  147. package/dist/commands/validators.d.ts.map +1 -0
  148. package/dist/commands/validators.js +93 -0
  149. package/dist/commands/validators.js.map +1 -0
  150. package/dist/commands/whoami.d.ts +6 -0
  151. package/dist/commands/whoami.d.ts.map +1 -0
  152. package/dist/commands/whoami.js +48 -0
  153. package/dist/commands/whoami.js.map +1 -0
  154. package/dist/config.d.ts +47 -0
  155. package/dist/config.d.ts.map +1 -0
  156. package/dist/config.js +127 -0
  157. package/dist/config.js.map +1 -0
  158. package/dist/credentials.d.ts +9 -0
  159. package/dist/credentials.d.ts.map +1 -0
  160. package/dist/credentials.js +79 -0
  161. package/dist/credentials.js.map +1 -0
  162. package/dist/keychain.d.ts +9 -0
  163. package/dist/keychain.d.ts.map +1 -0
  164. package/dist/keychain.js +51 -0
  165. package/dist/keychain.js.map +1 -0
  166. package/dist/output/csv.d.ts +5 -0
  167. package/dist/output/csv.d.ts.map +1 -0
  168. package/dist/output/csv.js +22 -0
  169. package/dist/output/csv.js.map +1 -0
  170. package/dist/output/envelope.schema.d.ts +1053 -0
  171. package/dist/output/envelope.schema.d.ts.map +1 -0
  172. package/dist/output/envelope.schema.js +256 -0
  173. package/dist/output/envelope.schema.js.map +1 -0
  174. package/dist/output/errors.d.ts +58 -0
  175. package/dist/output/errors.d.ts.map +1 -0
  176. package/dist/output/errors.js +339 -0
  177. package/dist/output/errors.js.map +1 -0
  178. package/dist/output/formatter.d.ts +27 -0
  179. package/dist/output/formatter.d.ts.map +1 -0
  180. package/dist/output/formatter.js +80 -0
  181. package/dist/output/formatter.js.map +1 -0
  182. package/dist/output/json.d.ts +41 -0
  183. package/dist/output/json.d.ts.map +1 -0
  184. package/dist/output/json.js +215 -0
  185. package/dist/output/json.js.map +1 -0
  186. package/dist/output/markdown.d.ts +6 -0
  187. package/dist/output/markdown.d.ts.map +1 -0
  188. package/dist/output/markdown.js +51 -0
  189. package/dist/output/markdown.js.map +1 -0
  190. package/dist/output/meta.d.ts +49 -0
  191. package/dist/output/meta.d.ts.map +1 -0
  192. package/dist/output/meta.js +96 -0
  193. package/dist/output/meta.js.map +1 -0
  194. package/dist/output/plain.d.ts +6 -0
  195. package/dist/output/plain.d.ts.map +1 -0
  196. package/dist/output/plain.js +51 -0
  197. package/dist/output/plain.js.map +1 -0
  198. package/dist/output/table.d.ts +5 -0
  199. package/dist/output/table.d.ts.map +1 -0
  200. package/dist/output/table.js +54 -0
  201. package/dist/output/table.js.map +1 -0
  202. package/dist/output/types.d.ts +54 -0
  203. package/dist/output/types.d.ts.map +1 -0
  204. package/dist/output/types.js +80 -0
  205. package/dist/output/types.js.map +1 -0
  206. package/dist/output/warnings.d.ts +15 -0
  207. package/dist/output/warnings.d.ts.map +1 -0
  208. package/dist/output/warnings.js +46 -0
  209. package/dist/output/warnings.js.map +1 -0
  210. package/dist/output/yaml.d.ts +6 -0
  211. package/dist/output/yaml.d.ts.map +1 -0
  212. package/dist/output/yaml.js +9 -0
  213. package/dist/output/yaml.js.map +1 -0
  214. package/dist/schema/breaking-changes.d.ts +17 -0
  215. package/dist/schema/breaking-changes.d.ts.map +1 -0
  216. package/dist/schema/breaking-changes.js +108 -0
  217. package/dist/schema/breaking-changes.js.map +1 -0
  218. package/dist/schema/helpers.d.ts +18 -0
  219. package/dist/schema/helpers.d.ts.map +1 -0
  220. package/dist/schema/helpers.js +48 -0
  221. package/dist/schema/helpers.js.map +1 -0
  222. package/dist/schema/load-schema-file.d.ts +13 -0
  223. package/dist/schema/load-schema-file.d.ts.map +1 -0
  224. package/dist/schema/load-schema-file.js +88 -0
  225. package/dist/schema/load-schema-file.js.map +1 -0
  226. package/dist/schema/lockfile.d.ts +6 -0
  227. package/dist/schema/lockfile.d.ts.map +1 -0
  228. package/dist/schema/lockfile.js +34 -0
  229. package/dist/schema/lockfile.js.map +1 -0
  230. package/dist/schema/manifest-client.d.ts +31 -0
  231. package/dist/schema/manifest-client.d.ts.map +1 -0
  232. package/dist/schema/manifest-client.js +282 -0
  233. package/dist/schema/manifest-client.js.map +1 -0
  234. package/dist/schema/output.d.ts +38 -0
  235. package/dist/schema/output.d.ts.map +1 -0
  236. package/dist/schema/output.js +95 -0
  237. package/dist/schema/output.js.map +1 -0
  238. package/dist/stdin.d.ts +8 -0
  239. package/dist/stdin.d.ts.map +1 -0
  240. package/dist/stdin.js +21 -0
  241. package/dist/stdin.js.map +1 -0
  242. package/dist/templates/basic.d.ts +6 -0
  243. package/dist/templates/basic.d.ts.map +1 -0
  244. package/dist/templates/basic.js +90 -0
  245. package/dist/templates/basic.js.map +1 -0
  246. package/dist/templates/contract-review.d.ts +9 -0
  247. package/dist/templates/contract-review.d.ts.map +1 -0
  248. package/dist/templates/contract-review.js +172 -0
  249. package/dist/templates/contract-review.js.map +1 -0
  250. package/dist/templates/customer-onboarding.d.ts +9 -0
  251. package/dist/templates/customer-onboarding.d.ts.map +1 -0
  252. package/dist/templates/customer-onboarding.js +176 -0
  253. package/dist/templates/customer-onboarding.js.map +1 -0
  254. package/dist/templates/index.d.ts +11 -0
  255. package/dist/templates/index.d.ts.map +1 -0
  256. package/dist/templates/index.js +16 -0
  257. package/dist/templates/index.js.map +1 -0
  258. package/dist/templates/react-dashboard.d.ts +6 -0
  259. package/dist/templates/react-dashboard.d.ts.map +1 -0
  260. package/dist/templates/react-dashboard.js +146 -0
  261. package/dist/templates/react-dashboard.js.map +1 -0
  262. package/dist/templates/vendor-risk.d.ts +9 -0
  263. package/dist/templates/vendor-risk.d.ts.map +1 -0
  264. package/dist/templates/vendor-risk.js +186 -0
  265. package/dist/templates/vendor-risk.js.map +1 -0
  266. package/package.json +47 -0
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Schema file loading — dynamic import with WeakSet deduplication
3
+ * and clear TypeScript loader error messages.
4
+ */
5
+ import * as fs from 'node:fs';
6
+ import * as path from 'node:path';
7
+ import { pathToFileURL } from 'node:url';
8
+ import { isRecord } from './helpers.js';
9
+ export async function loadParseNodeProperties() {
10
+ const { parseNodeProperties } = await import('@dataforge/types');
11
+ return parseNodeProperties;
12
+ }
13
+ // ---------------------------------------------------------------------------
14
+ // Schema file loading — dedup via WeakSet, clear TS import error
15
+ // ---------------------------------------------------------------------------
16
+ function isObjectTypeDefinition(value) {
17
+ if (!isRecord(value) || value._kind !== 'objectType')
18
+ return false;
19
+ if (typeof value.apiName !== 'string' || value.apiName.length === 0)
20
+ return false;
21
+ return true;
22
+ }
23
+ function isActionDefinition(value) {
24
+ if (!isRecord(value) || value._kind !== 'action')
25
+ return false;
26
+ if (typeof value.apiName !== 'string' && typeof value.key !== 'string')
27
+ return false;
28
+ return true;
29
+ }
30
+ function collectSchemaDefinition(value, objectTypes, actions, seen) {
31
+ if (!value || typeof value !== 'object')
32
+ return;
33
+ if (seen.has(value))
34
+ return;
35
+ seen.add(value);
36
+ if (Array.isArray(value)) {
37
+ for (const item of value) {
38
+ collectSchemaDefinition(item, objectTypes, actions, seen);
39
+ }
40
+ return;
41
+ }
42
+ if (isObjectTypeDefinition(value)) {
43
+ objectTypes.push(value);
44
+ return;
45
+ }
46
+ if (isActionDefinition(value)) {
47
+ actions.push(value);
48
+ return;
49
+ }
50
+ }
51
+ async function importSchemaModule(fileUrl) {
52
+ try {
53
+ return await import(fileUrl);
54
+ }
55
+ catch (error) {
56
+ const message = error instanceof Error ? error.message : String(error);
57
+ throw new Error([
58
+ `Could not import schema file: ${fileUrl}`,
59
+ '',
60
+ 'If this is a TypeScript schema file, make sure the CLI is running with a TypeScript loader',
61
+ 'or compile the schema before importing it.',
62
+ '',
63
+ `Original error: ${message}`,
64
+ ].join('\n'));
65
+ }
66
+ }
67
+ export async function loadSchemaFile(schemaPath) {
68
+ const abs = path.resolve(schemaPath);
69
+ if (!fs.existsSync(abs)) {
70
+ throw new Error(`Schema file not found: ${abs}`);
71
+ }
72
+ const fileUrl = pathToFileURL(abs).href;
73
+ const mod = await importSchemaModule(fileUrl);
74
+ const objectTypes = [];
75
+ const actions = [];
76
+ const seen = new WeakSet();
77
+ for (const [exportName, value] of Object.entries(mod)) {
78
+ if (exportName === 'default')
79
+ continue;
80
+ collectSchemaDefinition(value, objectTypes, actions, seen);
81
+ }
82
+ collectSchemaDefinition(mod.default, objectTypes, actions, seen);
83
+ if (objectTypes.length === 0) {
84
+ throw new Error(`No objectType definitions found in ${schemaPath}`);
85
+ }
86
+ return { objectTypes, actions };
87
+ }
88
+ //# sourceMappingURL=load-schema-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-schema-file.js","sourceRoot":"","sources":["../../src/schema/load-schema-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Lockfile path resolution and atomic file writes.
3
+ */
4
+ export declare function resolveLockfilePath(schemaPath: string): string;
5
+ export declare function writeTextFileAtomic(filePath: string, content: string): Promise<void>;
6
+ //# sourceMappingURL=lockfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/schema/lockfile.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B1F"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Lockfile path resolution and atomic file writes.
3
+ */
4
+ import * as fs from 'node:fs';
5
+ import * as path from 'node:path';
6
+ const DEFAULT_LOCK_FILE = 'dataforge.lock';
7
+ export function resolveLockfilePath(schemaPath) {
8
+ return path.join(path.dirname(path.resolve(schemaPath)), DEFAULT_LOCK_FILE);
9
+ }
10
+ export async function writeTextFileAtomic(filePath, content) {
11
+ const abs = path.resolve(filePath);
12
+ const dir = path.dirname(abs);
13
+ const base = path.basename(abs);
14
+ const tmp = path.join(dir, `.${base}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}.tmp`);
15
+ await fs.promises.mkdir(dir, { recursive: true });
16
+ try {
17
+ await fs.promises.writeFile(tmp, content, 'utf-8');
18
+ // Windows: fs.rename fails if target exists — unlink first
19
+ if (process.platform === 'win32') {
20
+ await fs.promises.unlink(abs).catch(() => { });
21
+ }
22
+ await fs.promises.rename(tmp, abs);
23
+ }
24
+ catch (error) {
25
+ try {
26
+ await fs.promises.unlink(tmp);
27
+ }
28
+ catch {
29
+ // Ignore cleanup failure
30
+ }
31
+ throw error;
32
+ }
33
+ }
34
+ //# sourceMappingURL=lockfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../src/schema/lockfile.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAE3C,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB,EAAE,OAAe;IACzE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CACnB,GAAG,EACH,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CACnF,CAAC;IAEF,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,2DAA2D;QAC3D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Manifest fetching — primary endpoint with fallback to node reconstruction.
3
+ *
4
+ * Pagination-safe, numeric ID tolerant, interface-aware, normalized output.
5
+ */
6
+ import type { OntologyManifest } from '@dataforge/sdk-types';
7
+ import type { createDfClient } from '../client.js';
8
+ export type RawOntologyNode = Record<string, unknown>;
9
+ type ClientInstance = ReturnType<typeof createDfClient>;
10
+ export interface ManifestConfig {
11
+ workspaceId: string;
12
+ spaceId?: string;
13
+ }
14
+ export declare function isEndpointUnavailable(error: unknown): boolean;
15
+ export declare function normalizeManifest(manifest: OntologyManifest): OntologyManifest;
16
+ export declare function fetchAllNodes(client: ClientInstance, config: {
17
+ spaceId?: string;
18
+ }): Promise<RawOntologyNode[]>;
19
+ export declare function fetchAllNodesWithHeaders(client: ClientInstance, config: {
20
+ spaceId?: string;
21
+ }): Promise<{
22
+ nodes: RawOntologyNode[];
23
+ headers: Record<string, string>;
24
+ }>;
25
+ export declare function fetchRemoteManifest(client: ClientInstance, config: ManifestConfig): Promise<OntologyManifest>;
26
+ export declare function fetchFullManifest(client: ClientInstance, config: ManifestConfig): Promise<OntologyManifest>;
27
+ export declare function fetchManifestVersion(client: ClientInstance, config: {
28
+ spaceId?: string;
29
+ }): Promise<string>;
30
+ export {};
31
+ //# sourceMappingURL=manifest-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-client.d.ts","sourceRoot":"","sources":["../../src/schema/manifest-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAKjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AASnD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG7D;AA8BD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CAe9E;AA4DD,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC,CAqB5B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAqBxE;AAmCD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAuG3B;AAMD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAoB3B;AAMD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,CAUjB"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Manifest fetching — primary endpoint with fallback to node reconstruction.
3
+ *
4
+ * Pagination-safe, numeric ID tolerant, interface-aware, normalized output.
5
+ */
6
+ import { readString, readId, readRecord } from './helpers.js';
7
+ import { loadParseNodeProperties } from './load-schema-file.js';
8
+ import { addWarning } from '../output/warnings.js';
9
+ // ---------------------------------------------------------------------------
10
+ // HTTP status helpers
11
+ // ---------------------------------------------------------------------------
12
+ function getHttpStatus(error) {
13
+ if (!error || typeof error !== 'object')
14
+ return undefined;
15
+ const err = error;
16
+ const status = err.status ?? err.statusCode ?? err.response?.status;
17
+ return typeof status === 'number' ? status : undefined;
18
+ }
19
+ export function isEndpointUnavailable(error) {
20
+ const status = getHttpStatus(error);
21
+ return status === 404 || status === 405 || status === 501 || status === 502 || status === 503;
22
+ }
23
+ // ---------------------------------------------------------------------------
24
+ // Manifest validation & normalization
25
+ // ---------------------------------------------------------------------------
26
+ function validateManifest(value) {
27
+ if (!value || typeof value !== 'object') {
28
+ throw new Error('Invalid ontology manifest: expected object');
29
+ }
30
+ const manifest = value;
31
+ if (!Array.isArray(manifest.objectTypes)) {
32
+ throw new Error('Invalid ontology manifest: objectTypes must be an array');
33
+ }
34
+ if (!Array.isArray(manifest.linkTypes)) {
35
+ throw new Error('Invalid ontology manifest: linkTypes must be an array');
36
+ }
37
+ if (manifest.actions !== undefined && !Array.isArray(manifest.actions)) {
38
+ throw new Error('Invalid ontology manifest: actions must be an array');
39
+ }
40
+ if (manifest.interfaces !== undefined && !Array.isArray(manifest.interfaces)) {
41
+ throw new Error('Invalid ontology manifest: interfaces must be an array');
42
+ }
43
+ }
44
+ const _collator = new Intl.Collator('en', { sensitivity: 'base' });
45
+ function byApiName(a, b) {
46
+ return _collator.compare(a.apiName ?? a.name ?? '', b.apiName ?? b.name ?? '');
47
+ }
48
+ export function normalizeManifest(manifest) {
49
+ return {
50
+ ...manifest,
51
+ objectTypes: [...(manifest.objectTypes ?? [])].map((type) => ({
52
+ ...type,
53
+ properties: [...(type.properties ?? [])].sort(byApiName),
54
+ interfaces: [...(type.interfaces ?? [])].sort(),
55
+ })).sort(byApiName),
56
+ linkTypes: [...(manifest.linkTypes ?? [])].sort(byApiName),
57
+ interfaces: [...(manifest.interfaces ?? [])].map((iface) => ({
58
+ ...iface,
59
+ sharedProperties: [...(iface.sharedProperties ?? [])].sort(byApiName),
60
+ })).sort(byApiName),
61
+ actions: [...(manifest.actions ?? [])].sort(byApiName),
62
+ };
63
+ }
64
+ // ---------------------------------------------------------------------------
65
+ // Node fetching — paginated with infinite-loop protection
66
+ // ---------------------------------------------------------------------------
67
+ const NODES_PAGE_LIMIT = 1000;
68
+ const NODES_MAX_PAGES = 100;
69
+ /**
70
+ * Shared pagination engine for node fetching.
71
+ * Throws when maxPages is reached (manifest may be incomplete).
72
+ * Uses JSON.stringify for page keys to avoid false collisions from IDs containing '|'.
73
+ */
74
+ async function paginateNodes(fetcher) {
75
+ let offset = 0;
76
+ const all = [];
77
+ let firstHeaders = {};
78
+ const seenPageKeys = new Set();
79
+ for (let pageIndex = 0; pageIndex < NODES_MAX_PAGES; pageIndex += 1) {
80
+ const result = await fetcher(offset);
81
+ if (pageIndex === 0 && result.headers) {
82
+ firstHeaders = result.headers;
83
+ }
84
+ const pageKey = JSON.stringify(result.nodes.map((node) => String(node.id ?? '')));
85
+ if (pageKey !== '[]' && seenPageKeys.has(pageKey)) {
86
+ throw new Error('Pagination did not advance while fetching ontology nodes');
87
+ }
88
+ seenPageKeys.add(pageKey);
89
+ all.push(...result.nodes);
90
+ if (result.nodes.length < NODES_PAGE_LIMIT)
91
+ break;
92
+ offset += NODES_PAGE_LIMIT;
93
+ }
94
+ // Throw if we exhausted maxPages — manifest may be incomplete
95
+ if (all.length > 0 && all.length % NODES_PAGE_LIMIT === 0 && all.length / NODES_PAGE_LIMIT >= NODES_MAX_PAGES) {
96
+ throw new Error(`Pagination limit reached (${NODES_MAX_PAGES} pages, ${all.length} nodes). ` +
97
+ `Manifest may be incomplete. Contact support if your ontology exceeds ${NODES_MAX_PAGES * NODES_PAGE_LIMIT} nodes.`);
98
+ }
99
+ return { nodes: all, firstHeaders };
100
+ }
101
+ export async function fetchAllNodes(client, config) {
102
+ const { nodes } = await paginateNodes(async (offset) => {
103
+ const page = await client.transport.request({
104
+ method: 'GET',
105
+ path: '/api/v2/queries/nodes',
106
+ query: {
107
+ status: 'active',
108
+ limit: NODES_PAGE_LIMIT,
109
+ offset,
110
+ ...(config.spaceId ? { espaceId: config.spaceId } : {}),
111
+ },
112
+ });
113
+ if (!Array.isArray(page)) {
114
+ throw new Error('Invalid nodes response: expected an array');
115
+ }
116
+ return { nodes: page };
117
+ });
118
+ return nodes;
119
+ }
120
+ export async function fetchAllNodesWithHeaders(client, config) {
121
+ const { nodes, firstHeaders } = await paginateNodes(async (offset) => {
122
+ const response = await client.transport.requestWithHeaders({
123
+ method: 'GET',
124
+ path: '/api/v2/queries/nodes',
125
+ query: {
126
+ status: 'active',
127
+ limit: NODES_PAGE_LIMIT,
128
+ offset,
129
+ ...(config.spaceId ? { espaceId: config.spaceId } : {}),
130
+ },
131
+ });
132
+ if (!Array.isArray(response.data)) {
133
+ throw new Error('Invalid nodes response: expected an array');
134
+ }
135
+ return { nodes: response.data, headers: response.headers };
136
+ });
137
+ return { nodes, headers: firstHeaders };
138
+ }
139
+ // ---------------------------------------------------------------------------
140
+ // Node accessors (numeric ID tolerant)
141
+ // ---------------------------------------------------------------------------
142
+ function getNodeId(node) {
143
+ const id = readId(node.id);
144
+ if (!id)
145
+ throw new Error('Ontology node is missing id');
146
+ return id;
147
+ }
148
+ function getNodeApiName(node) {
149
+ const apiName = readString(node.api_name) ??
150
+ readString(node.apiName) ??
151
+ readString(node.name);
152
+ if (!apiName) {
153
+ throw new Error(`Ontology node ${String(node.id ?? '<unknown>')} is missing apiName/name`);
154
+ }
155
+ return apiName;
156
+ }
157
+ function getNodeDisplayName(node) {
158
+ return (readString(node.displayName) ??
159
+ readString(node.name) ??
160
+ getNodeApiName(node));
161
+ }
162
+ // ---------------------------------------------------------------------------
163
+ // fetchRemoteManifest — fallback when /manifest endpoint unavailable
164
+ // ---------------------------------------------------------------------------
165
+ export async function fetchRemoteManifest(client, config) {
166
+ const normalizeProps = await loadParseNodeProperties();
167
+ const nodes = await fetchAllNodes(client, config);
168
+ const objectTypeNodes = nodes.filter((node) => node.type === 'ObjectType');
169
+ const linkTypeNodes = nodes.filter((node) => node.type === 'LinkType');
170
+ const interfaceNodes = nodes.filter((node) => node.type === 'Interface');
171
+ const objectApiNameById = new Map();
172
+ for (const node of objectTypeNodes) {
173
+ objectApiNameById.set(getNodeId(node), getNodeApiName(node));
174
+ }
175
+ const objectTypes = objectTypeNodes.map((node) => ({
176
+ id: getNodeId(node),
177
+ apiName: getNodeApiName(node),
178
+ displayName: getNodeDisplayName(node),
179
+ description: readString(node.description),
180
+ status: 'active',
181
+ properties: normalizeProps(node.properties),
182
+ interfaces: [],
183
+ primaryKey: readString(node.primaryKey) ??
184
+ readString(node.primary_key),
185
+ }));
186
+ const linkTypes = linkTypeNodes.map((node) => {
187
+ const props = readRecord(node.properties);
188
+ const sourceId = readId(node.sourceId) ??
189
+ readId(node.source_id) ??
190
+ readId(props.sourceId) ??
191
+ readId(props.source_id);
192
+ const targetId = readId(node.targetId) ??
193
+ readId(node.target_id) ??
194
+ readId(props.targetId) ??
195
+ readId(props.target_id);
196
+ const sourceTypeApiName = readString(props.sourceTypeApiName) ??
197
+ readString(node.sourceTypeApiName) ??
198
+ (sourceId ? objectApiNameById.get(sourceId) : undefined);
199
+ const targetTypeApiName = readString(props.targetTypeApiName) ??
200
+ readString(node.targetTypeApiName) ??
201
+ (targetId ? objectApiNameById.get(targetId) : undefined);
202
+ if (!sourceTypeApiName || !targetTypeApiName) {
203
+ throw new Error(`LinkType ${getNodeApiName(node)} is missing sourceTypeApiName or targetTypeApiName`);
204
+ }
205
+ return {
206
+ id: getNodeId(node),
207
+ apiName: getNodeApiName(node),
208
+ sourceTypeApiName,
209
+ targetTypeApiName,
210
+ relationshipType: readString(props.relationshipType) ??
211
+ readString(node.relationshipType) ??
212
+ readString(node.name) ??
213
+ getNodeApiName(node),
214
+ cardinality: readString(props.cardinality) ??
215
+ readString(node.cardinality) ??
216
+ 'N:1',
217
+ label: readString(node.label) ??
218
+ readString(props.label),
219
+ inverseName: readString(props.inverseName),
220
+ properties: [],
221
+ };
222
+ });
223
+ const interfaces = interfaceNodes.map((node) => ({
224
+ id: getNodeId(node),
225
+ apiName: getNodeApiName(node),
226
+ displayName: getNodeDisplayName(node),
227
+ description: readString(node.description),
228
+ sharedProperties: normalizeProps(node.properties),
229
+ }));
230
+ return normalizeManifest({
231
+ version: '1.0',
232
+ // Use empty string for generatedAt to prevent lockfile churn on every fetch —
233
+ // the lockfile should only change when the ontology itself changes.
234
+ generatedAt: '',
235
+ workspaceId: config.workspaceId,
236
+ espaceId: config.spaceId ?? '',
237
+ objectTypes,
238
+ linkTypes,
239
+ interfaces,
240
+ actions: [],
241
+ });
242
+ }
243
+ // ---------------------------------------------------------------------------
244
+ // fetchFullManifest — primary endpoint with fallback
245
+ // ---------------------------------------------------------------------------
246
+ export async function fetchFullManifest(client, config) {
247
+ try {
248
+ const manifest = await client.transport.request({
249
+ method: 'GET',
250
+ path: '/api/v1/ontology/manifest',
251
+ query: config.spaceId ? { espaceId: config.spaceId } : undefined,
252
+ });
253
+ validateManifest(manifest);
254
+ return normalizeManifest(manifest);
255
+ }
256
+ catch (error) {
257
+ if (!isEndpointUnavailable(error)) {
258
+ throw error;
259
+ }
260
+ addWarning({
261
+ code: 'MANIFEST_FALLBACK',
262
+ message: 'Manifest endpoint unavailable — actions are not available in fallback mode.',
263
+ severity: 'warning',
264
+ });
265
+ return fetchRemoteManifest(client, config);
266
+ }
267
+ }
268
+ // ---------------------------------------------------------------------------
269
+ // fetchManifestVersion — strict for CI
270
+ // ---------------------------------------------------------------------------
271
+ export async function fetchManifestVersion(client, config) {
272
+ const result = await client.transport.request({
273
+ method: 'GET',
274
+ path: '/api/v1/ontology/manifest/version',
275
+ query: config.spaceId ? { espaceId: config.spaceId } : undefined,
276
+ });
277
+ if (!result.version) {
278
+ throw new Error('Remote manifest version response is missing version');
279
+ }
280
+ return result.version;
281
+ }
282
+ //# sourceMappingURL=manifest-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-client.js","sourceRoot":"","sources":["../../src/schema/manifest-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Schema-specific output helpers.
3
+ *
4
+ * Handles structured format detection, error envelope formatting
5
+ * (json, jsonl, yaml, csv), and command name extraction from CQRS payloads.
6
+ */
7
+ import { type FormatOptions } from '../output/formatter.js';
8
+ import type { CliError } from '../output/types.js';
9
+ import type { buildCliMeta } from '../output/meta.js';
10
+ type CliMeta = ReturnType<typeof buildCliMeta>;
11
+ export declare function isStructuredFormat(flags: FormatOptions): boolean;
12
+ /**
13
+ * Write a CliError envelope respecting the requested output format.
14
+ * - json: pretty-printed JSON
15
+ * - jsonl: single-line JSON
16
+ * - yaml/csv: delegated to output()
17
+ */
18
+ export declare function writeErrorEnvelope(cliError: CliError, meta: CliMeta, flags: FormatOptions): void;
19
+ /**
20
+ * Extract a human-readable name from a CQRS command payload.
21
+ * Searches both top-level fields and nested node/edge/action sub-objects.
22
+ */
23
+ export declare function readCommandName(payload: unknown): string;
24
+ /**
25
+ * Build a label string from a CQRS command: "CREATE_NODE:Company".
26
+ */
27
+ export declare function readCommandLabel(command: {
28
+ type: string;
29
+ payload: unknown;
30
+ }): string;
31
+ /**
32
+ * Write a structured CLI error and set the exit code.
33
+ * Handles both structured (json/jsonl/yaml/csv) and text output.
34
+ * Use this instead of mixing output() + process.exitCode for error cases.
35
+ */
36
+ export declare function failCli(error: CliError, meta: CliMeta, flags: FormatOptions): void;
37
+ export {};
38
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/schema/output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGhG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAE/C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,aAAa,GACnB,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA8BxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAGpF;AAMD;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,aAAa,GACnB,IAAI,CAcN"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Schema-specific output helpers.
3
+ *
4
+ * Handles structured format detection, error envelope formatting
5
+ * (json, jsonl, yaml, csv), and command name extraction from CQRS payloads.
6
+ */
7
+ import { resolveFormat, output as cliOutput } from '../output/formatter.js';
8
+ // See also: output/errors.ts:buildErrorEnvelope (canonical builder)
9
+ import { buildErrorEnvelope, getExitCode } from '../output/errors.js';
10
+ import { isRecord, readString, readRecord } from './helpers.js';
11
+ export function isStructuredFormat(flags) {
12
+ const format = resolveFormat(flags);
13
+ return format === 'json' || format === 'jsonl' || format === 'yaml' || format === 'csv';
14
+ }
15
+ /**
16
+ * Write a CliError envelope respecting the requested output format.
17
+ * - json: pretty-printed JSON
18
+ * - jsonl: single-line JSON
19
+ * - yaml/csv: delegated to output()
20
+ */
21
+ export function writeErrorEnvelope(cliError, meta, flags) {
22
+ const envelope = buildErrorEnvelope(cliError, meta);
23
+ const format = resolveFormat(flags);
24
+ if (format === 'jsonl') {
25
+ process.stdout.write(JSON.stringify(envelope) + '\n');
26
+ return;
27
+ }
28
+ if (format === 'json') {
29
+ process.stdout.write(JSON.stringify(envelope, null, 2) + '\n');
30
+ return;
31
+ }
32
+ // yaml, csv, or other structured formats
33
+ cliOutput(envelope, meta, flags);
34
+ }
35
+ /**
36
+ * Extract a human-readable name from a CQRS command payload.
37
+ * Searches both top-level fields and nested node/edge/action sub-objects.
38
+ */
39
+ export function readCommandName(payload) {
40
+ if (!isRecord(payload))
41
+ return 'unknown';
42
+ const direct = readString(payload.name) ??
43
+ readString(payload.apiName) ??
44
+ readString(payload.api_name) ??
45
+ readString(payload.displayName) ??
46
+ readString(payload.display_name) ??
47
+ readString(payload.id);
48
+ if (direct)
49
+ return direct;
50
+ for (const key of ['node', 'edge', 'action', 'updates']) {
51
+ const nested = readRecord(payload[key]);
52
+ const nestedName = readString(nested.name) ??
53
+ readString(nested.apiName) ??
54
+ readString(nested.api_name) ??
55
+ readString(nested.displayName) ??
56
+ readString(nested.display_name) ??
57
+ readString(nested.relationshipType) ??
58
+ readString(nested.object_type_api_name) ??
59
+ readString(nested.id);
60
+ if (nestedName)
61
+ return nestedName;
62
+ }
63
+ return 'unknown';
64
+ }
65
+ /**
66
+ * Build a label string from a CQRS command: "CREATE_NODE:Company".
67
+ */
68
+ export function readCommandLabel(command) {
69
+ const name = readCommandName(command.payload);
70
+ return name === 'unknown' ? command.type : `${command.type}:${name}`;
71
+ }
72
+ // ---------------------------------------------------------------------------
73
+ // failCli — unified error output for commands
74
+ // ---------------------------------------------------------------------------
75
+ /**
76
+ * Write a structured CLI error and set the exit code.
77
+ * Handles both structured (json/jsonl/yaml/csv) and text output.
78
+ * Use this instead of mixing output() + process.exitCode for error cases.
79
+ */
80
+ export function failCli(error, meta, flags) {
81
+ if (isStructuredFormat(flags)) {
82
+ writeErrorEnvelope(error, meta, flags);
83
+ }
84
+ else {
85
+ process.stderr.write(`Error [${error.code}]: ${error.message}\n`);
86
+ if (error.details && typeof error.details === 'object') {
87
+ const hint = error.details.hint;
88
+ if (typeof hint === 'string') {
89
+ process.stderr.write(`${hint}\n`);
90
+ }
91
+ }
92
+ }
93
+ process.exitCode = getExitCode(error.code);
94
+ }
95
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/schema/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Stdin ID reader -- reads IDs line-by-line for pipe composition.
3
+ * Skips empty lines and # comments.
4
+ *
5
+ * Usage: ontologie nodes search "Client" --ids-only | ontologie graph neighbors --stdin
6
+ */
7
+ export declare function readStdinIds(): Promise<string[]>;
8
+ //# sourceMappingURL=stdin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../src/stdin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAatD"}