@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,161 @@
1
+ /**
2
+ * ontologie doctor -- diagnostics and environment checks
3
+ */
4
+ import * as fs from 'node:fs';
5
+ import * as path from 'node:path';
6
+ import * as os from 'node:os';
7
+ import { resolveConfig, maskApiKey } from '../config.js';
8
+ import { getExitCode } from '../output/errors.js';
9
+ import { createDfClient } from '../client.js';
10
+ import { cacheStats } from '../cache/store.js';
11
+ import { output } from '../output/formatter.js';
12
+ import { buildCliMeta } from '../output/meta.js';
13
+ export function registerDoctor(program) {
14
+ program
15
+ .command('doctor')
16
+ .description('Run diagnostics on CLI configuration and connectivity')
17
+ .action(async () => {
18
+ const flags = program.opts();
19
+ const checks = [];
20
+ // 1. Config resolution
21
+ try {
22
+ const config = resolveConfig(flags);
23
+ checks.push({
24
+ name: 'config',
25
+ status: 'ok',
26
+ message: `Profile "${config.profile}" resolved`,
27
+ detail: `api_url=${config.apiUrl}, workspace=${config.workspaceId}, api_key=${maskApiKey(config.apiKey)}`,
28
+ });
29
+ // 2. RC file check
30
+ const rcPath = path.join(os.homedir(), '.ontologierc');
31
+ const legacyRcPath = path.join(os.homedir(), '.dfrc');
32
+ if (fs.existsSync(rcPath)) {
33
+ checks.push({ name: 'rc_file', status: 'ok', message: `~/.ontologierc found` });
34
+ }
35
+ else if (fs.existsSync(legacyRcPath)) {
36
+ checks.push({
37
+ name: 'rc_file',
38
+ status: 'warn',
39
+ message: '~/.dfrc found (deprecated)',
40
+ detail: 'Rename to ~/.ontologierc',
41
+ });
42
+ }
43
+ else {
44
+ checks.push({
45
+ name: 'rc_file',
46
+ status: 'warn',
47
+ message: 'No RC file found',
48
+ detail: 'Config resolved from env/flags only',
49
+ });
50
+ }
51
+ // 3. Legacy env vars
52
+ const legacyEnvs = ['DF_API_URL', 'DF_API_KEY', 'DF_WORKSPACE_ID', 'DF_ESPACE_ID', 'DF_PROFILE'];
53
+ const foundLegacy = legacyEnvs.filter(e => process.env[e]);
54
+ if (foundLegacy.length > 0) {
55
+ checks.push({
56
+ name: 'env_vars',
57
+ status: 'warn',
58
+ message: `Legacy DF_* env vars detected: ${foundLegacy.join(', ')}`,
59
+ detail: 'Migrate to ONTOLOGIE_* equivalents',
60
+ });
61
+ }
62
+ else {
63
+ checks.push({ name: 'env_vars', status: 'ok', message: 'No deprecated DF_* env vars' });
64
+ }
65
+ // 4. API connectivity
66
+ try {
67
+ const client = createDfClient(config);
68
+ const start = Date.now();
69
+ const health = await client.admin.getSystemHealth();
70
+ const latency = Date.now() - start;
71
+ checks.push({
72
+ name: 'api_connectivity',
73
+ status: 'ok',
74
+ message: `API reachable (${latency}ms)`,
75
+ detail: `status=${health.status || 'ok'}`,
76
+ });
77
+ }
78
+ catch (err) {
79
+ const msg = err instanceof Error ? err.message : String(err);
80
+ checks.push({
81
+ name: 'api_connectivity',
82
+ status: 'error',
83
+ message: 'API unreachable',
84
+ detail: msg,
85
+ });
86
+ }
87
+ }
88
+ catch {
89
+ checks.push({
90
+ name: 'config',
91
+ status: 'error',
92
+ message: 'Config resolution failed',
93
+ detail: 'Missing API key or workspace ID',
94
+ });
95
+ }
96
+ // 5. Cache stats
97
+ const stats = cacheStats();
98
+ checks.push({
99
+ name: 'cache',
100
+ status: 'ok',
101
+ message: `${stats.count} entries, ${formatBytes(stats.size)}`,
102
+ detail: `Location: ~/.ontologie/cache/`,
103
+ });
104
+ // 6. Old cache migration
105
+ const oldCacheDir = path.join(os.homedir(), '.df', 'cache');
106
+ if (fs.existsSync(oldCacheDir)) {
107
+ checks.push({
108
+ name: 'cache_migration',
109
+ status: 'warn',
110
+ message: 'Old cache at ~/.df/cache/ still exists',
111
+ detail: 'Run: rm -rf ~/.df/cache/',
112
+ });
113
+ }
114
+ // 7. Node.js version
115
+ const nodeVersion = process.version;
116
+ const major = parseInt(nodeVersion.slice(1), 10);
117
+ checks.push({
118
+ name: 'node_version',
119
+ status: major >= 18 ? 'ok' : 'warn',
120
+ message: `Node.js ${nodeVersion}`,
121
+ detail: major < 18 ? 'Recommended: Node.js >= 18' : undefined,
122
+ });
123
+ // Output
124
+ if (process.stdout.isTTY && !flags.format) {
125
+ outputDoctorTTY(checks);
126
+ }
127
+ else {
128
+ const meta = buildCliMeta({ command: 'doctor', workspaceId: null, apiUrl: null });
129
+ output(checks, meta, flags, ['name', 'status', 'message', 'detail']);
130
+ }
131
+ // Exit code: 1 if any error
132
+ const hasError = checks.some(c => c.status === 'error');
133
+ if (hasError)
134
+ process.exit(getExitCode('INTERNAL_ERROR'));
135
+ });
136
+ }
137
+ function outputDoctorTTY(checks) {
138
+ const w = process.stdout.write.bind(process.stdout);
139
+ w('\n ontologie doctor\n');
140
+ w(' ================\n\n');
141
+ for (const check of checks) {
142
+ const icon = check.status === 'ok' ? '\x1b[32mOK\x1b[0m' :
143
+ check.status === 'warn' ? '\x1b[33mWARN\x1b[0m' :
144
+ '\x1b[31mERROR\x1b[0m';
145
+ w(` [${icon}] ${check.name}: ${check.message}\n`);
146
+ if (check.detail) {
147
+ w(` ${check.detail}\n`);
148
+ }
149
+ }
150
+ const errors = checks.filter(c => c.status === 'error').length;
151
+ const warns = checks.filter(c => c.status === 'warn').length;
152
+ w(`\n ${checks.length} checks: ${checks.length - errors - warns} ok, ${warns} warnings, ${errors} errors\n\n`);
153
+ }
154
+ function formatBytes(bytes) {
155
+ if (bytes < 1024)
156
+ return `${bytes}B`;
157
+ if (bytes < 1024 * 1024)
158
+ return `${(bytes / 1024).toFixed(1)}KB`;
159
+ return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
160
+ }
161
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * dataforge generate — delegates to @dataforge/sdk-generator
3
+ * @since 3.4.0
4
+ */
5
+ import type { Command } from 'commander';
6
+ export declare function registerGenerate(program: Command): void;
7
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoCvD"}
@@ -0,0 +1,36 @@
1
+ import { withErrorHandler, getGlobalFlags } from './shared.js';
2
+ import { resolveConfig } from '../config.js';
3
+ import { CliUsageError } from '../output/errors.js';
4
+ const ALLOWED_LANGUAGES = ['typescript', 'python', 'go'];
5
+ export function registerGenerate(program) {
6
+ const getFormat = () => {
7
+ const f = getGlobalFlags(program);
8
+ return f.format === 'json' ? 'json' : f.format === 'jsonl' ? 'jsonl' : 'text';
9
+ };
10
+ program
11
+ .command('generate')
12
+ .description('Fetch ontology manifest and generate TypeScript types')
13
+ .option('--espace-id <id>', 'Espace UUID')
14
+ .option('--output <dir>', 'Output directory', './src/generated')
15
+ .option('--language <lang>', 'Target language: typescript|python|go', 'typescript')
16
+ .option('--watch', 'Watch for ontology changes and regenerate')
17
+ .action(async (opts) => withErrorHandler(async () => {
18
+ const flags = getGlobalFlags(program);
19
+ const config = resolveConfig(flags);
20
+ // Validate --language
21
+ if (!ALLOWED_LANGUAGES.includes(opts.language)) {
22
+ throw new CliUsageError(`--language must be one of: ${ALLOWED_LANGUAGES.join(', ')}. Got "${opts.language}"`, { allowed: [...ALLOWED_LANGUAGES], value: opts.language });
23
+ }
24
+ const { runGenerate } = await import('@dataforge/sdk-generator');
25
+ await runGenerate({
26
+ apiUrl: config.apiUrl,
27
+ apiKey: config.apiKey,
28
+ workspaceId: config.workspaceId,
29
+ espaceId: opts.espaceId ?? config.spaceId,
30
+ output: opts.output,
31
+ language: opts.language,
32
+ watch: opts.watch,
33
+ });
34
+ }, getFormat)());
35
+ }
36
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAU,CAAC;AAElE,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,SAAS,GAAG,GAA8B,EAAE;QAChD,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,CAAC,CAAC;IAEF,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC;SACzC,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;SAC/D,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,YAAY,CAAC;SAClF,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAEpC,sBAAsB;QACtB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAA4C,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,aAAa,CACrB,8BAA8B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,GAAG,EACpF,EAAE,OAAO,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACjE,MAAM,WAAW,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * ontologie graph -- graph traversal and path finding
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function clampTraverseDepth(raw: number | string): number;
6
+ export declare function clampNeighborsDepth(raw: number | string): number;
7
+ export declare function clampPathMaxHops(raw: number | string): number;
8
+ export declare function registerGraph(program: Command): void;
9
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE7D;AAcD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkIpD"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * ontologie graph -- graph traversal and path finding
3
+ */
4
+ import { resolveConfig } from '../config.js';
5
+ import { createDfClient } from '../client.js';
6
+ import { buildCliMeta } from '../output/meta.js';
7
+ import { output } from '../output/formatter.js';
8
+ import { CliUsageError } from '../output/errors.js';
9
+ import { readStdinIds } from '../stdin.js';
10
+ import { withErrorHandler, getGlobalFlags } from './shared.js';
11
+ // ---------------------------------------------------------------------------
12
+ // Exported pure clamp functions — testable without API mocking
13
+ // ---------------------------------------------------------------------------
14
+ const MAX_TRAVERSE_DEPTH = 5;
15
+ const MAX_NEIGHBORS_DEPTH = 2;
16
+ const MAX_PATH_HOPS = 10;
17
+ export function clampTraverseDepth(raw) {
18
+ return Math.max(1, Math.min(Number(raw) || 2, MAX_TRAVERSE_DEPTH));
19
+ }
20
+ export function clampNeighborsDepth(raw) {
21
+ return Math.max(1, Math.min(Number(raw) || 1, MAX_NEIGHBORS_DEPTH));
22
+ }
23
+ export function clampPathMaxHops(raw) {
24
+ return Math.max(1, Math.min(Number(raw) || 5, MAX_PATH_HOPS));
25
+ }
26
+ const ALLOWED_DIRECTIONS = ['outbound', 'inbound', 'any'];
27
+ function validateDirection(dir) {
28
+ if (!ALLOWED_DIRECTIONS.includes(dir)) {
29
+ throw new CliUsageError(`--direction must be one of: ${ALLOWED_DIRECTIONS.join(', ')}. Got "${dir}"`, { allowed: [...ALLOWED_DIRECTIONS], value: dir });
30
+ }
31
+ return dir;
32
+ }
33
+ export function registerGraph(program) {
34
+ const graph = program
35
+ .command('graph')
36
+ .description('Graph operations -- traverse, neighbors, paths');
37
+ const getFormat = () => {
38
+ const f = getGlobalFlags(program);
39
+ return f.format === 'json' ? 'json' : f.format === 'jsonl' ? 'jsonl' : 'text';
40
+ };
41
+ // -----------------------------------------------------------------------
42
+ // graph traverse <id> -- Stable V1 verb (ROADMAP §5).
43
+ // Wraps `client.graph.traverse(id, opts)` -> `POST /api/v1/graph/traverse`.
44
+ // -----------------------------------------------------------------------
45
+ graph
46
+ .command('traverse <id>')
47
+ .description('N-hop traversal from a starting node (V1 stable)')
48
+ .option('--depth <n>', 'Max traversal depth (1-5)', '2')
49
+ .option('--direction <dir>', 'Direction: outbound, inbound, any', 'any')
50
+ .option('--edge-types <types>', 'Comma-separated edge types')
51
+ .action(async (id, opts) => withErrorHandler(async () => {
52
+ const flags = getGlobalFlags(program);
53
+ const config = resolveConfig(flags);
54
+ const client = createDfClient(config);
55
+ const depth = clampTraverseDepth(opts.depth);
56
+ const direction = validateDirection(opts.direction);
57
+ const result = await client.graph.traverse(id, {
58
+ maxDepth: depth,
59
+ direction,
60
+ edgeTypes: opts.edgeTypes?.split(','),
61
+ });
62
+ const meta = buildCliMeta({
63
+ command: 'graph.traverse',
64
+ workspaceId: config.workspaceId,
65
+ apiUrl: config.apiUrl,
66
+ });
67
+ output(result, meta, flags);
68
+ }, getFormat)());
69
+ graph
70
+ .command('neighbors [id]')
71
+ .description('Get 1-hop neighbours of a node (V1 stable)')
72
+ .option('--depth <n>', 'Max depth (1-2)', '1')
73
+ .option('--direction <dir>', 'Direction: outbound, inbound, any', 'any')
74
+ .option('--edge-types <types>', 'Comma-separated edge types')
75
+ .option('--node-types <types>', 'Comma-separated node types')
76
+ .option('--ids-only', 'Output only neighbor IDs')
77
+ .option('--stdin', 'Read IDs from stdin (pipe)')
78
+ .action(async (id, opts) => withErrorHandler(async () => {
79
+ const flags = getGlobalFlags(program);
80
+ const config = resolveConfig(flags);
81
+ const client = createDfClient(config);
82
+ let ids = [];
83
+ if (opts.stdin) {
84
+ ids = await readStdinIds();
85
+ }
86
+ else if (id) {
87
+ ids = [id];
88
+ }
89
+ else {
90
+ throw new CliUsageError('Provide a node ID or use --stdin');
91
+ }
92
+ const depth = clampNeighborsDepth(opts.depth);
93
+ const direction = validateDirection(opts.direction);
94
+ const allNeighbors = [];
95
+ for (const nodeId of ids) {
96
+ // maxDepth accepted by the backend API but not yet in the SDK type
97
+ const result = await client.graph.neighbors(nodeId, {
98
+ direction,
99
+ edgeTypes: opts.edgeTypes?.split(','),
100
+ nodeTypes: opts.nodeTypes?.split(','),
101
+ limit: Number(flags.limit) || 50,
102
+ ...(depth > 1 ? { maxDepth: depth } : {}),
103
+ });
104
+ for (const n of result.neighbors) {
105
+ allNeighbors.push({ sourceId: nodeId, ...n });
106
+ }
107
+ }
108
+ if (opts.idsOnly) {
109
+ const seen = new Set();
110
+ for (const n of allNeighbors) {
111
+ const nId = String(n.id || n.nodeId || '');
112
+ if (nId && !seen.has(nId)) {
113
+ seen.add(nId);
114
+ process.stdout.write(nId + '\n');
115
+ }
116
+ }
117
+ return;
118
+ }
119
+ const meta = buildCliMeta({
120
+ command: 'graph.neighbors',
121
+ workspaceId: config.workspaceId,
122
+ apiUrl: config.apiUrl,
123
+ });
124
+ output(allNeighbors, meta, flags, ['sourceId', 'id', 'name', 'type', 'edgeType', 'direction']);
125
+ }, getFormat)());
126
+ // graph path <from> <to> -- Stable V1 (single shortest path).
127
+ graph
128
+ .command('path <from> <to>')
129
+ .description('Find shortest path between two nodes (V1 stable)')
130
+ .option('--max-hops <n>', 'Maximum path length in hops (1-10)', '5')
131
+ .option('--edge-types <types>', 'Comma-separated edge types')
132
+ .action(async (from, to, opts) => withErrorHandler(async () => {
133
+ const flags = getGlobalFlags(program);
134
+ const config = resolveConfig(flags);
135
+ const client = createDfClient(config);
136
+ const maxHops = clampPathMaxHops(opts.maxHops);
137
+ const result = await client.graph.shortestPath(from, to, {
138
+ maxDepth: maxHops,
139
+ edgeTypes: opts.edgeTypes?.split(','),
140
+ });
141
+ const meta = buildCliMeta({
142
+ command: 'graph.path',
143
+ workspaceId: config.workspaceId,
144
+ apiUrl: config.apiUrl,
145
+ });
146
+ output(result, meta, flags);
147
+ }, getFormat)());
148
+ }
149
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ontologie import -- import data from CSV/JSON/JSONL files into ObjectType instances
3
+ */
4
+ import { Command } from 'commander';
5
+ type InputFormat = 'csv' | 'json' | 'jsonl';
6
+ export declare function detectFormat(filePath: string, explicit?: string): InputFormat;
7
+ /**
8
+ * Parse a CSV field, handling quoted values with embedded commas and escaped quotes.
9
+ */
10
+ export declare function parseCsvLine(line: string): string[];
11
+ export declare function parseCsv(content: string): Record<string, unknown>[];
12
+ export declare function parseJson(content: string): Record<string, unknown>[];
13
+ export declare function parseJsonl(content: string): Record<string, unknown>[];
14
+ export declare function parseFile(filePath: string, format: InputFormat, encoding: BufferEncoding): Record<string, unknown>[];
15
+ export declare function dedupRows(rows: Record<string, unknown>[], keyField: string): Record<string, unknown>[];
16
+ export declare function chunk<T>(arr: T[], size: number): T[][];
17
+ export declare function registerImport(program: Command): void;
18
+ export {};
19
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5C,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,CAyB7E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAkCnD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAmBnE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAOpE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAcrE;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAWpH;AAMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAiBtG;AAMD,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAMtD;AAMD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2MrD"}