@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.
- package/README.md +492 -0
- package/dist/cache/keys.d.ts +11 -0
- package/dist/cache/keys.d.ts.map +1 -0
- package/dist/cache/keys.js +14 -0
- package/dist/cache/keys.js.map +1 -0
- package/dist/cache/store.d.ts +23 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +160 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cli-compat.d.ts +6 -0
- package/dist/cli-compat.d.ts.map +1 -0
- package/dist/cli-compat.js +11 -0
- package/dist/cli-compat.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +119 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +7 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +15 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/actions.d.ts +22 -0
- package/dist/commands/actions.d.ts.map +1 -0
- package/dist/commands/actions.js +211 -0
- package/dist/commands/actions.js.map +1 -0
- package/dist/commands/agent-files.d.ts +27 -0
- package/dist/commands/agent-files.d.ts.map +1 -0
- package/dist/commands/agent-files.js +167 -0
- package/dist/commands/agent-files.js.map +1 -0
- package/dist/commands/agent.d.ts +23 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +314 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/audit.d.ts +11 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +94 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/cache.d.ts +8 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +40 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/capabilities.d.ts +56 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +304 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/check.d.ts +7 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +16 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +133 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/context.d.ts +6 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +226 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/dev.d.ts +15 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +62 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs-alias.d.ts +14 -0
- package/dist/commands/docs-alias.d.ts.map +1 -0
- package/dist/commands/docs-alias.js +28 -0
- package/dist/commands/docs-alias.js.map +1 -0
- package/dist/commands/docs.d.ts +6 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +67 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +161 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/generate.d.ts +7 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +36 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/graph.d.ts +9 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +149 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/import.d.ts +19 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +330 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/index.d.ts +80 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +345 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +101 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/instances.d.ts +7 -0
- package/dist/commands/instances.d.ts.map +1 -0
- package/dist/commands/instances.js +418 -0
- package/dist/commands/instances.js.map +1 -0
- package/dist/commands/keys.d.ts +6 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +113 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/knowledge.d.ts +6 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +76 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/model.d.ts +3 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +40 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/nodes.d.ts +6 -0
- package/dist/commands/nodes.d.ts.map +1 -0
- package/dist/commands/nodes.js +111 -0
- package/dist/commands/nodes.js.map +1 -0
- package/dist/commands/openapi.d.ts +7 -0
- package/dist/commands/openapi.d.ts.map +1 -0
- package/dist/commands/openapi.js +17 -0
- package/dist/commands/openapi.js.map +1 -0
- package/dist/commands/plan.d.ts +19 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +563 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/process.d.ts +3 -0
- package/dist/commands/process.d.ts.map +1 -0
- package/dist/commands/process.js +67 -0
- package/dist/commands/process.js.map +1 -0
- package/dist/commands/query.d.ts +26 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +253 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/schema.d.ts +24 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +933 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/search.d.ts +10 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +74 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/shared.d.ts +32 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +63 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/usage.d.ts +6 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +86 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/validators.d.ts +30 -0
- package/dist/commands/validators.d.ts.map +1 -0
- package/dist/commands/validators.js +93 -0
- package/dist/commands/validators.js.map +1 -0
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +48 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +127 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.d.ts +9 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +79 -0
- package/dist/credentials.js.map +1 -0
- package/dist/keychain.d.ts +9 -0
- package/dist/keychain.d.ts.map +1 -0
- package/dist/keychain.js +51 -0
- package/dist/keychain.js.map +1 -0
- package/dist/output/csv.d.ts +5 -0
- package/dist/output/csv.d.ts.map +1 -0
- package/dist/output/csv.js +22 -0
- package/dist/output/csv.js.map +1 -0
- package/dist/output/envelope.schema.d.ts +1053 -0
- package/dist/output/envelope.schema.d.ts.map +1 -0
- package/dist/output/envelope.schema.js +256 -0
- package/dist/output/envelope.schema.js.map +1 -0
- package/dist/output/errors.d.ts +58 -0
- package/dist/output/errors.d.ts.map +1 -0
- package/dist/output/errors.js +339 -0
- package/dist/output/errors.js.map +1 -0
- package/dist/output/formatter.d.ts +27 -0
- package/dist/output/formatter.d.ts.map +1 -0
- package/dist/output/formatter.js +80 -0
- package/dist/output/formatter.js.map +1 -0
- package/dist/output/json.d.ts +41 -0
- package/dist/output/json.d.ts.map +1 -0
- package/dist/output/json.js +215 -0
- package/dist/output/json.js.map +1 -0
- package/dist/output/markdown.d.ts +6 -0
- package/dist/output/markdown.d.ts.map +1 -0
- package/dist/output/markdown.js +51 -0
- package/dist/output/markdown.js.map +1 -0
- package/dist/output/meta.d.ts +49 -0
- package/dist/output/meta.d.ts.map +1 -0
- package/dist/output/meta.js +96 -0
- package/dist/output/meta.js.map +1 -0
- package/dist/output/plain.d.ts +6 -0
- package/dist/output/plain.d.ts.map +1 -0
- package/dist/output/plain.js +51 -0
- package/dist/output/plain.js.map +1 -0
- package/dist/output/table.d.ts +5 -0
- package/dist/output/table.d.ts.map +1 -0
- package/dist/output/table.js +54 -0
- package/dist/output/table.js.map +1 -0
- package/dist/output/types.d.ts +54 -0
- package/dist/output/types.d.ts.map +1 -0
- package/dist/output/types.js +80 -0
- package/dist/output/types.js.map +1 -0
- package/dist/output/warnings.d.ts +15 -0
- package/dist/output/warnings.d.ts.map +1 -0
- package/dist/output/warnings.js +46 -0
- package/dist/output/warnings.js.map +1 -0
- package/dist/output/yaml.d.ts +6 -0
- package/dist/output/yaml.d.ts.map +1 -0
- package/dist/output/yaml.js +9 -0
- package/dist/output/yaml.js.map +1 -0
- package/dist/schema/breaking-changes.d.ts +17 -0
- package/dist/schema/breaking-changes.d.ts.map +1 -0
- package/dist/schema/breaking-changes.js +108 -0
- package/dist/schema/breaking-changes.js.map +1 -0
- package/dist/schema/helpers.d.ts +18 -0
- package/dist/schema/helpers.d.ts.map +1 -0
- package/dist/schema/helpers.js +48 -0
- package/dist/schema/helpers.js.map +1 -0
- package/dist/schema/load-schema-file.d.ts +13 -0
- package/dist/schema/load-schema-file.d.ts.map +1 -0
- package/dist/schema/load-schema-file.js +88 -0
- package/dist/schema/load-schema-file.js.map +1 -0
- package/dist/schema/lockfile.d.ts +6 -0
- package/dist/schema/lockfile.d.ts.map +1 -0
- package/dist/schema/lockfile.js +34 -0
- package/dist/schema/lockfile.js.map +1 -0
- package/dist/schema/manifest-client.d.ts +31 -0
- package/dist/schema/manifest-client.d.ts.map +1 -0
- package/dist/schema/manifest-client.js +282 -0
- package/dist/schema/manifest-client.js.map +1 -0
- package/dist/schema/output.d.ts +38 -0
- package/dist/schema/output.d.ts.map +1 -0
- package/dist/schema/output.js +95 -0
- package/dist/schema/output.js.map +1 -0
- package/dist/stdin.d.ts +8 -0
- package/dist/stdin.d.ts.map +1 -0
- package/dist/stdin.js +21 -0
- package/dist/stdin.js.map +1 -0
- package/dist/templates/basic.d.ts +6 -0
- package/dist/templates/basic.d.ts.map +1 -0
- package/dist/templates/basic.js +90 -0
- package/dist/templates/basic.js.map +1 -0
- package/dist/templates/contract-review.d.ts +9 -0
- package/dist/templates/contract-review.d.ts.map +1 -0
- package/dist/templates/contract-review.js +172 -0
- package/dist/templates/contract-review.js.map +1 -0
- package/dist/templates/customer-onboarding.d.ts +9 -0
- package/dist/templates/customer-onboarding.d.ts.map +1 -0
- package/dist/templates/customer-onboarding.js +176 -0
- package/dist/templates/customer-onboarding.js.map +1 -0
- package/dist/templates/index.d.ts +11 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +16 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/react-dashboard.d.ts +6 -0
- package/dist/templates/react-dashboard.d.ts.map +1 -0
- package/dist/templates/react-dashboard.js +146 -0
- package/dist/templates/react-dashboard.js.map +1 -0
- package/dist/templates/vendor-risk.d.ts +9 -0
- package/dist/templates/vendor-risk.d.ts.map +1 -0
- package/dist/templates/vendor-risk.js +186 -0
- package/dist/templates/vendor-risk.js.map +1 -0
- 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 @@
|
|
|
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"}
|