@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,160 @@
1
+ /**
2
+ * File-based cache -- ~/.ontologie/cache/
3
+ *
4
+ * Key: SHA256 of { workspace, space, command, params }
5
+ * Layout: ~/.ontologie/cache/{workspace_prefix_8chars}/{hash}.json
6
+ * Default TTL: 60s, configurable per command
7
+ */
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ import * as os from 'node:os';
11
+ import { cacheKey } from './keys.js';
12
+ const CACHE_BASE = path.join(os.homedir(), '.ontologie', 'cache');
13
+ const OLD_CACHE_DIR = path.join(os.homedir(), '.df', 'cache');
14
+ /** Warn once if old cache dir exists */
15
+ let migrationWarned = false;
16
+ function checkMigration() {
17
+ if (migrationWarned)
18
+ return;
19
+ migrationWarned = true;
20
+ if (fs.existsSync(OLD_CACHE_DIR) && !fs.existsSync(CACHE_BASE)) {
21
+ process.stderr.write('\x1b[33m\u26a0 Old cache at ~/.df/cache/ detected. ' +
22
+ 'New cache location: ~/.ontologie/cache/\n' +
23
+ ' Run: rm -rf ~/.df/cache/ (old entries will be re-created)\x1b[0m\n');
24
+ }
25
+ }
26
+ function workspaceCacheDir(workspace) {
27
+ return path.join(CACHE_BASE, workspace.slice(0, 8));
28
+ }
29
+ function ensureCacheDir(workspace) {
30
+ const dir = workspace ? workspaceCacheDir(workspace) : CACHE_BASE;
31
+ if (!fs.existsSync(dir)) {
32
+ fs.mkdirSync(dir, { recursive: true });
33
+ }
34
+ }
35
+ function cachePath(key, workspace) {
36
+ const dir = workspace ? workspaceCacheDir(workspace) : CACHE_BASE;
37
+ return path.join(dir, `${key}.json`);
38
+ }
39
+ /** Parse TTL string like "60s", "5m", "1h" to seconds */
40
+ export function parseTtl(ttl) {
41
+ const match = ttl.match(/^(\d+)(s|m|h)?$/);
42
+ if (!match)
43
+ return 60;
44
+ const value = parseInt(match[1], 10);
45
+ const unit = match[2] || 's';
46
+ switch (unit) {
47
+ case 'm': return value * 60;
48
+ case 'h': return value * 3600;
49
+ default: return value;
50
+ }
51
+ }
52
+ export function cacheGet(params) {
53
+ checkMigration();
54
+ const key = cacheKey(params);
55
+ const file = cachePath(key, params.workspace);
56
+ if (!fs.existsSync(file)) {
57
+ // Try flat path for backward compat
58
+ const flatFile = path.join(CACHE_BASE, `${key}.json`);
59
+ if (!fs.existsSync(flatFile))
60
+ return null;
61
+ try {
62
+ const raw = fs.readFileSync(flatFile, 'utf-8');
63
+ const entry = JSON.parse(raw);
64
+ if (Date.now() > entry.expiresAt) {
65
+ fs.unlinkSync(flatFile);
66
+ return null;
67
+ }
68
+ return entry.data;
69
+ }
70
+ catch {
71
+ return null;
72
+ }
73
+ }
74
+ try {
75
+ const raw = fs.readFileSync(file, 'utf-8');
76
+ const entry = JSON.parse(raw);
77
+ if (Date.now() > entry.expiresAt) {
78
+ fs.unlinkSync(file);
79
+ return null;
80
+ }
81
+ return entry.data;
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ }
87
+ export function cacheSet(params, data, ttlSeconds = 60) {
88
+ checkMigration();
89
+ ensureCacheDir(params.workspace);
90
+ const key = cacheKey(params);
91
+ const file = cachePath(key, params.workspace);
92
+ const entry = {
93
+ data,
94
+ expiresAt: Date.now() + ttlSeconds * 1000,
95
+ command: params.command,
96
+ createdAt: Date.now(),
97
+ workspace: params.workspace,
98
+ };
99
+ fs.writeFileSync(file, JSON.stringify(entry), 'utf-8');
100
+ }
101
+ export function cacheClear() {
102
+ if (!fs.existsSync(CACHE_BASE))
103
+ return { count: 0, size: 0 };
104
+ let count = 0;
105
+ let size = 0;
106
+ function clearDir(dir) {
107
+ if (!fs.existsSync(dir))
108
+ return;
109
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
110
+ for (const entry of entries) {
111
+ const fullPath = path.join(dir, entry.name);
112
+ if (entry.isDirectory()) {
113
+ clearDir(fullPath);
114
+ fs.rmdirSync(fullPath);
115
+ }
116
+ else if (entry.name.endsWith('.json')) {
117
+ const stat = fs.statSync(fullPath);
118
+ size += stat.size;
119
+ fs.unlinkSync(fullPath);
120
+ count++;
121
+ }
122
+ }
123
+ }
124
+ clearDir(CACHE_BASE);
125
+ return { count, size };
126
+ }
127
+ export function cacheStats() {
128
+ if (!fs.existsSync(CACHE_BASE))
129
+ return { count: 0, size: 0 };
130
+ let count = 0;
131
+ let size = 0;
132
+ let oldest = Infinity;
133
+ let newest = 0;
134
+ function scanDir(dir) {
135
+ if (!fs.existsSync(dir))
136
+ return;
137
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
138
+ for (const entry of entries) {
139
+ const fullPath = path.join(dir, entry.name);
140
+ if (entry.isDirectory()) {
141
+ scanDir(fullPath);
142
+ }
143
+ else if (entry.name.endsWith('.json')) {
144
+ const stat = fs.statSync(fullPath);
145
+ size += stat.size;
146
+ oldest = Math.min(oldest, stat.mtimeMs);
147
+ newest = Math.max(newest, stat.mtimeMs);
148
+ count++;
149
+ }
150
+ }
151
+ }
152
+ scanDir(CACHE_BASE);
153
+ return {
154
+ count,
155
+ size,
156
+ oldest: count > 0 ? new Date(oldest) : undefined,
157
+ newest: count > 0 ? new Date(newest) : undefined,
158
+ };
159
+ }
160
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * df -- deprecated compatibility shim for ontologie CLI.
4
+ * Will be removed after 4 weeks (2026-04-23).
5
+ */
6
+ //# sourceMappingURL=cli-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-compat.d.ts","sourceRoot":"","sources":["../src/cli-compat.ts"],"names":[],"mappings":";AACA;;;GAGG"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * df -- deprecated compatibility shim for ontologie CLI.
5
+ * Will be removed after 4 weeks (2026-04-23).
6
+ */
7
+ process.stderr.write('\x1b[33m\u26a0 "df" is deprecated. Use "ontologie" instead.\x1b[0m\n' +
8
+ ' Install: npm i -g @dataforge/cli && ontologie --help\n\n');
9
+ // Delegate to main CLI
10
+ import('./cli.js');
11
+ //# sourceMappingURL=cli-compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-compat.js","sourceRoot":"","sources":["../src/cli-compat.ts"],"names":[],"mappings":";;AACA;;;GAGG;AAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sEAAsE;IACtE,4DAA4D,CAC7D,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,UAAU,CAAC,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * dataforge — unified CLI for the Digital Twin platform
4
+ *
5
+ * Merges the former `ontologie`/`df` CLI and `dataforge-sdk` CLI into a single
6
+ * `dataforge` command. Legacy binary names (`ontologie`, `df`) are kept for
7
+ * backwards compatibility.
8
+ *
9
+ * Usage:
10
+ * dataforge whoami -- connection info + health
11
+ * dataforge nodes list --type ObjectType -- list ontology nodes
12
+ * dataforge nodes search "Client" --ids-only -- search with pipe support
13
+ * dataforge knowledge search "RGPD" -- knowledge base search
14
+ * dataforge graph neighbors <id> --depth 2 -- graph traversal
15
+ * dataforge schema export --format yaml -- full schema export
16
+ * dataforge context pack "politique RGPD" -- LLM-ready context assembly
17
+ * dataforge doctor -- diagnostics
18
+ * dataforge generate --api-url URL --api-key KEY --workspace-id ID
19
+ * dataforge check --api-url URL --api-key KEY --workspace-id ID
20
+ * dataforge openapi --api-url URL --api-key KEY --workspace-id ID
21
+ * dataforge init [directory] -- scaffold a new project
22
+ *
23
+ * Pipe composition:
24
+ * dataforge nodes search "Client" --ids-only | dataforge graph neighbors --stdin --depth 2
25
+ *
26
+ * @since 3.4.0 (unified CLI)
27
+ * @since 0.2.0 (original ontologie CLI)
28
+ */
29
+ export {};
30
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
package/dist/cli.js ADDED
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * dataforge — unified CLI for the Digital Twin platform
4
+ *
5
+ * Merges the former `ontologie`/`df` CLI and `dataforge-sdk` CLI into a single
6
+ * `dataforge` command. Legacy binary names (`ontologie`, `df`) are kept for
7
+ * backwards compatibility.
8
+ *
9
+ * Usage:
10
+ * dataforge whoami -- connection info + health
11
+ * dataforge nodes list --type ObjectType -- list ontology nodes
12
+ * dataforge nodes search "Client" --ids-only -- search with pipe support
13
+ * dataforge knowledge search "RGPD" -- knowledge base search
14
+ * dataforge graph neighbors <id> --depth 2 -- graph traversal
15
+ * dataforge schema export --format yaml -- full schema export
16
+ * dataforge context pack "politique RGPD" -- LLM-ready context assembly
17
+ * dataforge doctor -- diagnostics
18
+ * dataforge generate --api-url URL --api-key KEY --workspace-id ID
19
+ * dataforge check --api-url URL --api-key KEY --workspace-id ID
20
+ * dataforge openapi --api-url URL --api-key KEY --workspace-id ID
21
+ * dataforge init [directory] -- scaffold a new project
22
+ *
23
+ * Pipe composition:
24
+ * dataforge nodes search "Client" --ids-only | dataforge graph neighbors --stdin --depth 2
25
+ *
26
+ * @since 3.4.0 (unified CLI)
27
+ * @since 0.2.0 (original ontologie CLI)
28
+ */
29
+ import { Command } from 'commander';
30
+ import { registerAllCommands } from './commands/index.js';
31
+ import { classifyError, getExitCode, handleCliError, CliUsageError } from './output/errors.js';
32
+ import { buildCliMeta } from './output/meta.js';
33
+ import { resolveFormat } from './output/formatter.js';
34
+ import { addWarning, clearWarnings, DEPRECATION_ESPACE } from './output/warnings.js';
35
+ const program = new Command();
36
+ program.storeOptionsAsProperties(false);
37
+ program
38
+ .name('dataforge')
39
+ .description('dataforge — unified CLI for the Digital Twin platform (formerly ontologie)')
40
+ .version('3.4.0')
41
+ // Global options
42
+ .option('-w, --workspace <id>', 'Workspace ID')
43
+ .option('-s, --space <id>', 'Space ID')
44
+ .option('--espace <id>', 'Space ID (deprecated alias for --space)')
45
+ .option('--api-url <url>', 'API base URL')
46
+ .option('--api-key <key>', 'API key')
47
+ .option('--profile <name>', 'Config profile name (default: "default")')
48
+ .option('-f, --format <fmt>', 'Output format: json|table|csv|yaml|markdown|jsonl|raw')
49
+ .option('--raw', 'Omit _meta envelope (alias for --format raw)')
50
+ .option('-n, --limit <n>', 'Maximum number of results', (v) => {
51
+ const n = parseInt(v, 10);
52
+ if (isNaN(n) || n < 0)
53
+ throw new CliUsageError('--limit must be a non-negative integer', { value: v });
54
+ return n;
55
+ })
56
+ .option('-q, --quiet', 'Suppress stderr diagnostics')
57
+ .option('-v, --verbose', 'Show verbose diagnostics on stderr')
58
+ .option('--no-cache', 'Bypass local cache')
59
+ .option('--cache-ttl <ttl>', 'Cache TTL (e.g., 60s, 5m, 1h)')
60
+ .option('--keychain', 'Force keychain credential resolution')
61
+ .option('--no-color', 'Disable ANSI colors');
62
+ // Register every command from the canonical SOT.
63
+ // SOT: `./commands/index.ts` — `CANONICAL_CLI_COMMANDS` array.
64
+ // Adding/removing commands MUST go through that array, never here directly.
65
+ // (The previous direct `registerQuery/registerInstances/...` calls were folded
66
+ // into the SOT on 2026-04-27 — they were drift-prone and bypassed CLI-CONFORM-01.)
67
+ registerAllCommands(program);
68
+ // Structured deprecation warnings + global flag wiring (injected into CliMeta.warnings).
69
+ // Commander 6 is still present in some local workspaces and does not expose hook().
70
+ if (typeof program.hook === 'function') {
71
+ program.hook('preAction', () => {
72
+ const flags = program.opts();
73
+ if (flags.espace) {
74
+ addWarning(DEPRECATION_ESPACE);
75
+ }
76
+ // C3: Wire --quiet globally — suppress stderr diagnostics
77
+ if (flags.quiet) {
78
+ const noop = () => true;
79
+ process.stderr.write = noop;
80
+ }
81
+ // C4: Wire --verbose as env var
82
+ if (flags.verbose) {
83
+ process.env.DATAFORGE_CLI_VERBOSE = '1';
84
+ }
85
+ // C5: Wire --no-color
86
+ if (flags.color === false) {
87
+ process.env.NO_COLOR = '1';
88
+ }
89
+ });
90
+ // Clear warnings after each command to prevent accumulation across chained invocations
91
+ program.hook('postAction', () => {
92
+ clearWarnings();
93
+ });
94
+ }
95
+ // Error handling
96
+ program.exitOverride((err) => {
97
+ if (err.code === 'commander.helpDisplayed' || err.code === 'commander.version') {
98
+ process.exit(0);
99
+ }
100
+ });
101
+ // Parse and execute
102
+ program.parseAsync(process.argv).catch((err) => {
103
+ const flags = program.opts();
104
+ const fmt = resolveFormat(flags);
105
+ if (fmt === 'json' || fmt === 'jsonl') {
106
+ const meta = buildCliMeta({
107
+ command: 'unknown',
108
+ workspaceId: flags.workspace ?? null,
109
+ apiUrl: flags.apiUrl ?? null,
110
+ });
111
+ handleCliError(err, meta, fmt);
112
+ }
113
+ else {
114
+ const classified = classifyError(err);
115
+ process.stderr.write(`Error [${classified.code}]: ${classified.message}\n`);
116
+ process.exit(getExitCode(classified.code));
117
+ }
118
+ });
119
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Client factory -- thin wrapper around @dataforge/sdk-client
3
+ */
4
+ import { type DataForgeClientFull } from '@dataforge/sdk-client/experimental';
5
+ import type { OntologieConfig } from './config.js';
6
+ export declare function createDfClient(config: OntologieConfig): DataForgeClientFull;
7
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAA4B,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAS3E"}
package/dist/client.js ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Client factory -- thin wrapper around @dataforge/sdk-client
3
+ */
4
+ import { createExperimentalClient } from '@dataforge/sdk-client/experimental';
5
+ export function createDfClient(config) {
6
+ return createExperimentalClient({
7
+ baseUrl: config.apiUrl,
8
+ apiKey: config.apiKey,
9
+ workspaceId: config.workspaceId,
10
+ espaceId: config.spaceId,
11
+ timeout: 30_000,
12
+ retry: { maxAttempts: 2, baseDelayMs: 500 },
13
+ });
14
+ }
15
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAA4B,MAAM,oCAAoC,CAAC;AAGxG,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,OAAO,wBAAwB,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,MAAM,CAAC,OAAO;QACxB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;KAC5C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ontologie actions -- list, describe, run ontology actions
3
+ *
4
+ * Agent flow: describe -> run --dry-run -> run --apply-plan --plan-hash --idempotency-key
5
+ */
6
+ import { Command } from 'commander';
7
+ export interface RunInputOpts {
8
+ inputJson?: string;
9
+ input?: string[];
10
+ params?: string;
11
+ }
12
+ export declare function resolveInputData(opts: RunInputOpts): Record<string, unknown>;
13
+ export interface RunGuardOpts {
14
+ dryRun?: boolean;
15
+ applyPlan?: string;
16
+ planHash?: string;
17
+ idempotencyKey?: string;
18
+ yes?: boolean;
19
+ }
20
+ export declare function validateRunGuards(opts: RunGuardOpts): void;
21
+ export declare function registerActions(program: Command): void;
22
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/commands/actions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsC5E;AAMD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAmC1D;AAMD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiLtD"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * ontologie actions -- list, describe, run ontology actions
3
+ *
4
+ * Agent flow: describe -> run --dry-run -> run --apply-plan --plan-hash --idempotency-key
5
+ */
6
+ import { resolveConfig } from '../config.js';
7
+ import { createDfClient } from '../client.js';
8
+ import { buildCliMeta, extractMetaFromHeaders } from '../output/meta.js';
9
+ import { output } from '../output/formatter.js';
10
+ import { withErrorHandler, getGlobalFlags } from './shared.js';
11
+ import { addWarning } from '../output/warnings.js';
12
+ import { DEPRECATION_PARAMS } from '../output/warnings.js';
13
+ import { resolveMutationMode, parseJsonObject } from './validators.js';
14
+ export function resolveInputData(opts) {
15
+ const sources = [];
16
+ if (opts.inputJson)
17
+ sources.push('--input-json');
18
+ if (opts.input && opts.input.length > 0)
19
+ sources.push('--input');
20
+ if (opts.params)
21
+ sources.push('--params');
22
+ if (sources.length > 1) {
23
+ throw Object.assign(new Error(`Only one input source allowed, got: ${sources.join(', ')}`), { statusCode: 400 });
24
+ }
25
+ if (opts.inputJson) {
26
+ return parseJsonObject(opts.inputJson, '--input-json');
27
+ }
28
+ if (opts.input && opts.input.length > 0) {
29
+ const result = {};
30
+ for (const pair of opts.input) {
31
+ const eqIdx = pair.indexOf('=');
32
+ if (eqIdx < 1) {
33
+ throw Object.assign(new Error(`Invalid --input format: "${pair}". Expected key=value.`), { statusCode: 400 });
34
+ }
35
+ result[pair.slice(0, eqIdx)] = pair.slice(eqIdx + 1);
36
+ }
37
+ return result;
38
+ }
39
+ if (opts.params) {
40
+ addWarning(DEPRECATION_PARAMS);
41
+ return JSON.parse(opts.params);
42
+ }
43
+ return {};
44
+ }
45
+ export function validateRunGuards(opts) {
46
+ if (opts.dryRun && opts.applyPlan) {
47
+ throw Object.assign(new Error('--dry-run and --apply-plan are mutually exclusive'), { statusCode: 400 });
48
+ }
49
+ if (opts.applyPlan && !opts.idempotencyKey) {
50
+ throw Object.assign(new Error('--apply-plan requires --idempotency-key for safe retries'), { statusCode: 412 });
51
+ }
52
+ if (opts.applyPlan && !opts.planHash) {
53
+ throw Object.assign(new Error('--apply-plan requires --plan-hash for plan integrity verification'), { statusCode: 412 });
54
+ }
55
+ if (opts.yes) {
56
+ throw Object.assign(new Error('--yes is not supported for ontology actions. Use --dry-run, then --apply-plan.'), { code: 'CONFIRMATION_REQUIRED', statusCode: 412 });
57
+ }
58
+ if (!opts.dryRun && !opts.applyPlan) {
59
+ throw Object.assign(new Error('Mutation requires --dry-run or --apply-plan. Direct action execution is not supported.'), { code: 'CONFIRMATION_REQUIRED', statusCode: 412 });
60
+ }
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Registration
64
+ // ---------------------------------------------------------------------------
65
+ export function registerActions(program) {
66
+ const actions = program
67
+ .command('actions')
68
+ .description('Action operations');
69
+ const getFormat = () => {
70
+ const f = getGlobalFlags(program);
71
+ return f.format === 'json' ? 'json' : f.format === 'jsonl' ? 'jsonl' : 'text';
72
+ };
73
+ // --- actions list ---
74
+ actions
75
+ .command('list')
76
+ .description('List all actions')
77
+ .option('--type <actionType>', 'Filter by action type (WORKFLOW|NOTIFY|TRANSFORM|AGGREGATE|VALIDATE)')
78
+ .option('--entity <entityId>', 'Filter by entity ID')
79
+ .option('--ids-only', 'Output only IDs (one per line)')
80
+ .action(async (opts) => withErrorHandler(async () => {
81
+ const flags = getGlobalFlags(program);
82
+ const config = resolveConfig(flags);
83
+ const client = createDfClient(config);
84
+ const query = {
85
+ type: opts.type,
86
+ entityId: opts.entity,
87
+ limit: flags.limit ?? 100,
88
+ };
89
+ const response = await client.transport.requestWithHeaders({
90
+ method: 'GET',
91
+ path: '/api/v1/actions',
92
+ query,
93
+ });
94
+ const items = response.data || [];
95
+ const pagination = response.metadata?.pagination;
96
+ const limit = Number(flags.limit) || 100;
97
+ const page = pagination && pagination.total != null && pagination.total > limit
98
+ ? { limit, nextCursor: null, hasMore: (pagination.offset ?? 0) + limit < pagination.total }
99
+ : null;
100
+ if (opts.idsOnly) {
101
+ for (const item of items) {
102
+ process.stdout.write(String(item.id) + '\n');
103
+ }
104
+ return;
105
+ }
106
+ const headerMeta = extractMetaFromHeaders(response.headers);
107
+ const meta = buildCliMeta({
108
+ command: 'actions.list',
109
+ workspaceId: config.workspaceId,
110
+ apiUrl: config.apiUrl,
111
+ ...headerMeta,
112
+ });
113
+ output(items, meta, flags, ['id', 'name', 'displayName', 'actionType', 'trigger', 'isActive', 'entityId'], page);
114
+ }, getFormat)());
115
+ // --- actions describe ---
116
+ actions
117
+ .command('describe <actionKey>')
118
+ .description('Describe an action\'s contract (preconditions, effects, parameters, limits)')
119
+ .action(async (actionKey) => withErrorHandler(async () => {
120
+ const flags = getGlobalFlags(program);
121
+ const config = resolveConfig(flags);
122
+ const client = createDfClient(config);
123
+ let actionData;
124
+ // V1 SOT (action SOT wedge, 2026-04-29): /api/v1/actions/:key/describe
125
+ // wraps the result in a V1 envelope `{ data: { action, diagnostics }, meta }`
126
+ // (locked by ratchet `ACTION-ENVELOPE-V1-01`). The previous silent 404
127
+ // fallback to `/api/actions/action/:key` is banned by ratchet
128
+ // `ACTION-CLI-NO-FALLBACK-01` — loud refusal over silent degradation.
129
+ const response = await client.transport.requestWithHeaders({
130
+ method: 'GET',
131
+ path: `/api/v1/actions/${actionKey}/describe`,
132
+ });
133
+ const descriptor = response.data?.data?.action;
134
+ if (!descriptor) {
135
+ throw Object.assign(new Error(`Malformed V1 envelope from /api/v1/actions/${actionKey}/describe — ` +
136
+ `expected response.data.data.action to be an object`), { statusCode: 502 });
137
+ }
138
+ actionData = descriptor;
139
+ const headerMeta = extractMetaFromHeaders(response.headers);
140
+ const meta = buildCliMeta({
141
+ command: 'actions.describe',
142
+ workspaceId: config.workspaceId,
143
+ apiUrl: config.apiUrl,
144
+ ...headerMeta,
145
+ });
146
+ output(actionData, meta, flags);
147
+ }, getFormat)());
148
+ // --- actions run ---
149
+ actions
150
+ .command('run <actionKey> [targetId]')
151
+ .description('Execute an action (use --dry-run first, then --apply-plan)')
152
+ .option('--input-json <json>', 'Action input as JSON string')
153
+ .option('-i, --input <pair>', 'Action input as key=value (repeatable)', (v, arr) => [...arr, v], [])
154
+ .option('--params <json>', 'Action parameters as JSON string (deprecated, use --input-json)')
155
+ .option('--dry-run', 'Preview the execution plan without applying')
156
+ .option('--apply-plan <planId>', 'Apply a previously generated dry-run plan')
157
+ .option('--plan-hash <hash>', 'Plan hash from dry-run (required with --apply-plan)')
158
+ .option('--idempotency-key <key>', 'Idempotency key for safe retries')
159
+ .action(async (actionKey, targetId, opts) => withErrorHandler(async () => {
160
+ const flags = getGlobalFlags(program);
161
+ const config = resolveConfig(flags);
162
+ const client = createDfClient(config);
163
+ // Guards — only --dry-run and --apply-plan are valid
164
+ validateRunGuards(opts);
165
+ resolveMutationMode(opts);
166
+ // Input resolution
167
+ const inputData = resolveInputData(opts);
168
+ // Merge targetId into body when provided
169
+ const baseBody = {
170
+ ...inputData,
171
+ ...(targetId ? { targetId } : {}),
172
+ };
173
+ // Dry-run path
174
+ if (opts.dryRun) {
175
+ const response = await client.transport.requestWithHeaders({
176
+ method: 'POST',
177
+ path: `/api/v1/actions/${actionKey}/dry-run`,
178
+ body: baseBody,
179
+ });
180
+ const headerMeta = extractMetaFromHeaders(response.headers);
181
+ const meta = buildCliMeta({
182
+ command: 'actions.run',
183
+ workspaceId: config.workspaceId,
184
+ apiUrl: config.apiUrl,
185
+ ...headerMeta,
186
+ });
187
+ output(response.data, meta, flags);
188
+ return;
189
+ }
190
+ // Apply-plan path (mode === 'apply-plan' guaranteed by resolveMutationMode)
191
+ const body = {
192
+ planId: opts.applyPlan,
193
+ ...(opts.planHash ? { planHash: opts.planHash } : {}),
194
+ };
195
+ const response = await client.transport.requestWithHeaders({
196
+ method: 'POST',
197
+ path: `/api/v1/actions/${actionKey}/invoke`,
198
+ body,
199
+ idempotencyKey: opts.idempotencyKey,
200
+ });
201
+ const headerMeta = extractMetaFromHeaders(response.headers);
202
+ const meta = buildCliMeta({
203
+ command: 'actions.run',
204
+ workspaceId: config.workspaceId,
205
+ apiUrl: config.apiUrl,
206
+ ...headerMeta,
207
+ });
208
+ output(response.data, meta, flags);
209
+ }, getFormat)());
210
+ }
211
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/commands/actions.ts"],"names":[],"mappings":"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"}