@tiangong-lca/cli 0.0.5 → 0.0.7
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 +73 -30
- package/dist/src/cli.js +913 -113
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/dataset-local.js +231 -0
- package/dist/src/lib/dataset-local.js.map +1 -0
- package/dist/src/lib/dataset-references-rewrite.js +214 -0
- package/dist/src/lib/dataset-references-rewrite.js.map +1 -0
- package/dist/src/lib/dataset-validate.js +191 -0
- package/dist/src/lib/dataset-validate.js.map +1 -0
- package/dist/src/lib/flow-regen-product.js +2 -10
- package/dist/src/lib/flow-regen-product.js.map +1 -1
- package/dist/src/lib/flow-remediate.js +4 -8
- package/dist/src/lib/flow-remediate.js.map +1 -1
- package/dist/src/lib/lifecyclemodel-auto-build.js +11 -8
- package/dist/src/lib/lifecyclemodel-auto-build.js.map +1 -1
- package/dist/src/lib/lifecyclemodel-bundle-save.js +468 -0
- package/dist/src/lib/lifecyclemodel-bundle-save.js.map +1 -0
- package/dist/src/lib/lifecyclemodel-graph.js +248 -0
- package/dist/src/lib/lifecyclemodel-graph.js.map +1 -0
- package/dist/src/lib/lifecyclemodel-publish-build.js +3 -1
- package/dist/src/lib/lifecyclemodel-publish-build.js.map +1 -1
- package/dist/src/lib/lifecyclemodel-save-draft-run.js +245 -0
- package/dist/src/lib/lifecyclemodel-save-draft-run.js.map +1 -0
- package/dist/src/lib/lifecyclemodel-validate-build.js +1 -1
- package/dist/src/lib/lifecyclemodel-validate-build.js.map +1 -1
- package/dist/src/lib/process-auto-build.js +11 -8
- package/dist/src/lib/process-auto-build.js.map +1 -1
- package/dist/src/lib/process-batch-build.js +6 -3
- package/dist/src/lib/process-batch-build.js.map +1 -1
- package/dist/src/lib/process-dedup-review.js +870 -0
- package/dist/src/lib/process-dedup-review.js.map +1 -0
- package/dist/src/lib/process-payload-validation.js +50 -0
- package/dist/src/lib/process-payload-validation.js.map +1 -0
- package/dist/src/lib/process-publish-build.js +4 -6
- package/dist/src/lib/process-publish-build.js.map +1 -1
- package/dist/src/lib/process-refresh-references.js +1028 -0
- package/dist/src/lib/process-refresh-references.js.map +1 -0
- package/dist/src/lib/process-resume-build.js +4 -6
- package/dist/src/lib/process-resume-build.js.map +1 -1
- package/dist/src/lib/process-save-draft-run.js +31 -12
- package/dist/src/lib/process-save-draft-run.js.map +1 -1
- package/dist/src/lib/process-scope-statistics.js +859 -0
- package/dist/src/lib/process-scope-statistics.js.map +1 -0
- package/dist/src/lib/process-verify-rows.js +250 -0
- package/dist/src/lib/process-verify-rows.js.map +1 -0
- package/dist/src/lib/publish.js +54 -4
- package/dist/src/lib/publish.js.map +1 -1
- package/dist/src/lib/remote.js +4 -4
- package/dist/src/lib/remote.js.map +1 -1
- package/dist/src/lib/review-lifecyclemodel.js +2 -2
- package/dist/src/lib/review-lifecyclemodel.js.map +1 -1
- package/dist/src/lib/tidas-sdk-package-validator.js +28 -9
- package/dist/src/lib/tidas-sdk-package-validator.js.map +1 -1
- package/dist/src/lib/tidas-sdk-validation.js +96 -0
- package/dist/src/lib/tidas-sdk-validation.js.map +1 -0
- package/dist/src/lib/user-api-key.js +1 -1
- package/dist/src/lib/user-api-key.js.map +1 -1
- package/package.json +4 -4
- /package/bin/{tiangong.d.ts → tiangong-lca.d.ts} +0 -0
- /package/bin/{tiangong.js → tiangong-lca.js} +0 -0
package/dist/src/cli.js
CHANGED
|
@@ -8,14 +8,20 @@ import { runLifecyclemodelBuildResultingProcess, } from './lib/lifecyclemodel-re
|
|
|
8
8
|
import { runLifecyclemodelPublishResultingProcess, } from './lib/lifecyclemodel-publish-resulting-process.js';
|
|
9
9
|
import { runLifecyclemodelValidateBuild, } from './lib/lifecyclemodel-validate-build.js';
|
|
10
10
|
import { runLifecyclemodelPublishBuild, } from './lib/lifecyclemodel-publish-build.js';
|
|
11
|
+
import { runLifecyclemodelSaveDraft, } from './lib/lifecyclemodel-save-draft-run.js';
|
|
12
|
+
import { runLifecyclemodelGraph, } from './lib/lifecyclemodel-graph.js';
|
|
11
13
|
import { runLifecyclemodelOrchestrate, } from './lib/lifecyclemodel-orchestrate.js';
|
|
12
14
|
import { runProcessAutoBuild, } from './lib/process-auto-build.js';
|
|
13
15
|
import { runProcessGet, } from './lib/process-get.js';
|
|
14
16
|
import { runProcessList, } from './lib/process-list.js';
|
|
15
17
|
import { runProcessBatchBuild, } from './lib/process-batch-build.js';
|
|
18
|
+
import { runProcessScopeStatistics, } from './lib/process-scope-statistics.js';
|
|
19
|
+
import { runProcessRefreshReferences, } from './lib/process-refresh-references.js';
|
|
20
|
+
import { runProcessDedupReview, } from './lib/process-dedup-review.js';
|
|
16
21
|
import { runProcessResumeBuild, } from './lib/process-resume-build.js';
|
|
17
22
|
import { runProcessPublishBuild, } from './lib/process-publish-build.js';
|
|
18
23
|
import { runProcessSaveDraft, } from './lib/process-save-draft-run.js';
|
|
24
|
+
import { runProcessVerifyRows, } from './lib/process-verify-rows.js';
|
|
19
25
|
import { runPublish } from './lib/publish.js';
|
|
20
26
|
import { runProcessReview, } from './lib/review-process.js';
|
|
21
27
|
import { runFlowReview, } from './lib/review-flow.js';
|
|
@@ -31,6 +37,8 @@ import { runFlowBuildAliasMap, } from './lib/flow-build-alias-map.js';
|
|
|
31
37
|
import { runFlowApplyProcessFlowRepairs, runFlowPlanProcessFlowRepairs, runFlowRegenProduct, runFlowScanProcessFlowRefs, runFlowValidateProcesses, } from './lib/flow-regen-product.js';
|
|
32
38
|
import { executeRemoteCommand, getRemoteCommandHelp } from './lib/remote.js';
|
|
33
39
|
import { runValidation, } from './lib/validation.js';
|
|
40
|
+
import { runDatasetValidate, } from './lib/dataset-validate.js';
|
|
41
|
+
import { runDatasetReferencesRewrite, } from './lib/dataset-references-rewrite.js';
|
|
34
42
|
function renderMainHelp(dotEnvStatus) {
|
|
35
43
|
return `TianGong LCA CLI
|
|
36
44
|
|
|
@@ -43,15 +51,16 @@ Design principles:
|
|
|
43
51
|
- file-first input and JSON-first output
|
|
44
52
|
|
|
45
53
|
Usage:
|
|
46
|
-
tiangong <command> [subcommand] [options]
|
|
54
|
+
tiangong-lca <command> [subcommand] [options]
|
|
47
55
|
|
|
48
56
|
Commands:
|
|
49
57
|
Implemented Commands:
|
|
50
58
|
doctor show environment diagnostics
|
|
51
59
|
search flow | process | lifecyclemodel
|
|
52
|
-
process get | list | auto-build | resume-build | publish-build | save-draft | batch-build
|
|
60
|
+
process get | list | scope-statistics | dedup-review | auto-build | resume-build | publish-build | save-draft | batch-build | refresh-references | verify-rows
|
|
61
|
+
dataset validate | references rewrite
|
|
53
62
|
flow get | list | fetch-rows | materialize-decisions | remediate | publish-version | publish-reviewed-data | build-alias-map | scan-process-flow-refs | plan-process-flow-repairs | apply-process-flow-repairs | regen-product | validate-processes
|
|
54
|
-
lifecyclemodel auto-build | validate-build | publish-build | build-resulting-process | publish-resulting-process | orchestrate
|
|
63
|
+
lifecyclemodel auto-build | validate-build | publish-build | save-draft | graph | build-resulting-process | publish-resulting-process | orchestrate
|
|
55
64
|
review process | flow | lifecyclemodel
|
|
56
65
|
publish run
|
|
57
66
|
validation run
|
|
@@ -64,40 +73,48 @@ Planned Surface (not implemented yet):
|
|
|
64
73
|
Planned commands currently print an explicit "not implemented yet" message and exit with code 2.
|
|
65
74
|
|
|
66
75
|
Examples:
|
|
67
|
-
tiangong doctor
|
|
68
|
-
tiangong search flow --input ./request.json
|
|
69
|
-
tiangong search process --input ./request.json --dry-run
|
|
70
|
-
tiangong process get --id <process-id>
|
|
71
|
-
tiangong process list --state-code 100 --limit 20
|
|
72
|
-
tiangong process
|
|
73
|
-
tiangong process
|
|
74
|
-
tiangong process
|
|
75
|
-
tiangong process
|
|
76
|
-
tiangong process
|
|
77
|
-
tiangong
|
|
78
|
-
tiangong
|
|
79
|
-
tiangong
|
|
80
|
-
tiangong
|
|
81
|
-
tiangong
|
|
82
|
-
tiangong
|
|
83
|
-
tiangong
|
|
84
|
-
tiangong
|
|
85
|
-
tiangong
|
|
86
|
-
tiangong
|
|
87
|
-
tiangong
|
|
88
|
-
tiangong
|
|
89
|
-
tiangong flow
|
|
90
|
-
tiangong flow
|
|
91
|
-
tiangong flow
|
|
92
|
-
tiangong flow
|
|
93
|
-
tiangong flow
|
|
94
|
-
tiangong
|
|
95
|
-
tiangong
|
|
96
|
-
tiangong
|
|
97
|
-
tiangong
|
|
98
|
-
tiangong
|
|
99
|
-
tiangong
|
|
100
|
-
tiangong
|
|
76
|
+
tiangong-lca doctor
|
|
77
|
+
tiangong-lca search flow --input ./request.json
|
|
78
|
+
tiangong-lca search process --input ./request.json --dry-run
|
|
79
|
+
tiangong-lca process get --id <process-id>
|
|
80
|
+
tiangong-lca process list --state-code 100 --limit 20
|
|
81
|
+
tiangong-lca process scope-statistics --out-dir /abs/path/to/process-scope --state-code 0 --state-code 100
|
|
82
|
+
tiangong-lca process dedup-review --input ./duplicate-groups.json --out-dir /abs/path/to/process-dedup
|
|
83
|
+
tiangong-lca process auto-build --input ./pff-request.json --out-dir /abs/path/to/process-run
|
|
84
|
+
tiangong-lca process resume-build --run-dir /abs/path/to/process-run
|
|
85
|
+
tiangong-lca process publish-build --run-dir /abs/path/to/process-run
|
|
86
|
+
tiangong-lca process save-draft --input ./patched-processes.jsonl --out-dir /abs/path/to/process-save-draft --dry-run
|
|
87
|
+
tiangong-lca process batch-build --input ./batch-request.json --out-dir /abs/path/to/process-batch
|
|
88
|
+
tiangong-lca process refresh-references --out-dir /abs/path/to/process-refresh --dry-run
|
|
89
|
+
tiangong-lca process verify-rows --rows-file ./process-list-report.json --out-dir /abs/path/to/process-verify
|
|
90
|
+
tiangong-lca dataset validate --input ./rows.jsonl --type auto --out-dir /abs/path/to/dataset-validate
|
|
91
|
+
tiangong-lca dataset references rewrite --input ./rows.jsonl --from flow:<old-id>@<old-version> --to flow:<new-id>@<new-version> --out-dir /abs/path/to/dataset-rewrite
|
|
92
|
+
tiangong-lca lifecyclemodel auto-build --input ./lifecyclemodel-auto-build.request.json --out-dir /abs/path/to/lifecyclemodel-run
|
|
93
|
+
tiangong-lca lifecyclemodel validate-build --run-dir /abs/path/to/lifecyclemodel-run
|
|
94
|
+
tiangong-lca lifecyclemodel publish-build --run-dir /abs/path/to/lifecyclemodel-run
|
|
95
|
+
tiangong-lca lifecyclemodel save-draft --input ./lifecyclemodels.jsonl --out-dir /abs/path/to/lifecyclemodel-save-draft --dry-run
|
|
96
|
+
tiangong-lca lifecyclemodel graph --input ./lifecyclemodels.jsonl --out-dir /abs/path/to/lifecyclemodel-graph --format all
|
|
97
|
+
tiangong-lca lifecyclemodel orchestrate plan --input ./lifecyclemodel-orchestrate.request.json --out-dir /abs/path/to/lifecyclemodel-recursive-run
|
|
98
|
+
tiangong-lca flow get --id <flow-id> --version <version>
|
|
99
|
+
tiangong-lca flow list --id <flow-id> --state-code 100 --limit 20
|
|
100
|
+
tiangong-lca flow fetch-rows --refs-file ./flow-refs.json --out-dir ./flow-fetch
|
|
101
|
+
tiangong-lca flow materialize-decisions --decision-file ./approved-decisions.json --flow-rows-file ./review-input-rows.jsonl --out-dir ./flow-decisions
|
|
102
|
+
tiangong-lca flow remediate --input-file ./invalid-flows.jsonl --out-dir ./flow-remediation
|
|
103
|
+
tiangong-lca flow publish-version --input-file ./ready-flows.jsonl --out-dir ./flow-publish --commit
|
|
104
|
+
tiangong-lca flow publish-reviewed-data --flow-rows-file ./reviewed-flows.jsonl --original-flow-rows-file ./original-flows.jsonl --out-dir ./flow-publish-review
|
|
105
|
+
tiangong-lca flow build-alias-map --old-flow-file ./old-flows.jsonl --new-flow-file ./new-flows.jsonl --out-dir ./flow-alias-map
|
|
106
|
+
tiangong-lca flow scan-process-flow-refs --processes-file ./processes.jsonl --scope-flow-file ./flows.jsonl --out-dir ./flow-scan
|
|
107
|
+
tiangong-lca flow plan-process-flow-repairs --processes-file ./processes.jsonl --scope-flow-file ./flows.jsonl --out-dir ./flow-repair-plan
|
|
108
|
+
tiangong-lca flow apply-process-flow-repairs --processes-file ./processes.jsonl --scope-flow-file ./flows.jsonl --out-dir ./flow-repair-apply
|
|
109
|
+
tiangong-lca flow regen-product --processes-file ./processes.jsonl --scope-flow-file ./flows.jsonl --out-dir ./flow-regeneration --apply
|
|
110
|
+
tiangong-lca flow validate-processes --original-processes-file ./before.jsonl --patched-processes-file ./after.jsonl --scope-flow-file ./flows.jsonl --out-dir ./flow-validation
|
|
111
|
+
tiangong-lca review process --rows-file ./processes.jsonl --out-dir ./review
|
|
112
|
+
tiangong-lca review process --run-root /abs/path/to/process-run --run-id <run_id> --out-dir ./review
|
|
113
|
+
tiangong-lca review flow --rows-file ./flows.json --out-dir ./review
|
|
114
|
+
tiangong-lca review lifecyclemodel --run-dir /abs/path/to/lifecyclemodel-run --out-dir ./lifecyclemodel-review
|
|
115
|
+
tiangong-lca publish run --input ./publish-request.json --dry-run
|
|
116
|
+
tiangong-lca validation run --input-dir ./package --engine auto
|
|
117
|
+
tiangong-lca admin embedding-run --input ./jobs.json
|
|
101
118
|
|
|
102
119
|
Environment:
|
|
103
120
|
.env loaded: ${dotEnvStatus.loaded ? `yes (${dotEnvStatus.path}, ${dotEnvStatus.count} keys)` : 'no'}
|
|
@@ -105,7 +122,7 @@ Environment:
|
|
|
105
122
|
}
|
|
106
123
|
function renderDoctorHelp() {
|
|
107
124
|
return `Usage:
|
|
108
|
-
tiangong doctor [--json]
|
|
125
|
+
tiangong-lca doctor [--json]
|
|
109
126
|
|
|
110
127
|
Options:
|
|
111
128
|
--json Print structured environment diagnostics
|
|
@@ -114,7 +131,7 @@ Options:
|
|
|
114
131
|
}
|
|
115
132
|
function renderSearchHelp() {
|
|
116
133
|
return `Usage:
|
|
117
|
-
tiangong search <flow|process|lifecyclemodel> --input <file> [options]
|
|
134
|
+
tiangong-lca search <flow|process|lifecyclemodel> --input <file> [options]
|
|
118
135
|
|
|
119
136
|
Options:
|
|
120
137
|
--input <file> JSON request file
|
|
@@ -139,7 +156,7 @@ Runtime note:
|
|
|
139
156
|
}
|
|
140
157
|
function renderAdminHelp() {
|
|
141
158
|
return `Usage:
|
|
142
|
-
tiangong admin embedding-run --input <file> [options]
|
|
159
|
+
tiangong-lca admin embedding-run --input <file> [options]
|
|
143
160
|
|
|
144
161
|
Options:
|
|
145
162
|
--input <file> JSON request file
|
|
@@ -162,7 +179,7 @@ Runtime note:
|
|
|
162
179
|
}
|
|
163
180
|
function renderPublishHelp() {
|
|
164
181
|
return `Usage:
|
|
165
|
-
tiangong publish run --input <file> [options]
|
|
182
|
+
tiangong-lca publish run --input <file> [options]
|
|
166
183
|
|
|
167
184
|
Options:
|
|
168
185
|
--input <file> JSON publish request file
|
|
@@ -178,7 +195,7 @@ Path rule:
|
|
|
178
195
|
}
|
|
179
196
|
function renderValidationHelp() {
|
|
180
197
|
return `Usage:
|
|
181
|
-
tiangong validation run --input-dir <dir> [options]
|
|
198
|
+
tiangong-lca validation run --input-dir <dir> [options]
|
|
182
199
|
|
|
183
200
|
Options:
|
|
184
201
|
--input-dir <dir> TIDAS package directory
|
|
@@ -188,9 +205,67 @@ Options:
|
|
|
188
205
|
-h, --help
|
|
189
206
|
`.trim();
|
|
190
207
|
}
|
|
208
|
+
function renderDatasetHelp() {
|
|
209
|
+
return `Usage:
|
|
210
|
+
tiangong-lca dataset <subcommand> [options]
|
|
211
|
+
|
|
212
|
+
Implemented Subcommands:
|
|
213
|
+
validate Validate local flow / process / lifecyclemodel rows with the TIDAS SDK
|
|
214
|
+
references rewrite Rewrite flow references in local process and lifecyclemodel rows
|
|
215
|
+
|
|
216
|
+
Examples:
|
|
217
|
+
tiangong-lca dataset validate --input ./rows.jsonl --type auto --out-dir ./dataset-validate --help
|
|
218
|
+
tiangong-lca dataset references rewrite --input ./rows.jsonl --from flow:<old-id>@<old-version> --to flow:<new-id>@<new-version> --out-dir ./dataset-rewrite --help
|
|
219
|
+
`.trim();
|
|
220
|
+
}
|
|
221
|
+
function renderDatasetValidateHelp() {
|
|
222
|
+
return `Usage:
|
|
223
|
+
tiangong-lca dataset validate --input <file> [options]
|
|
224
|
+
|
|
225
|
+
Options:
|
|
226
|
+
--input <file> Local rows as JSON or JSONL; objects with rows[] are also accepted
|
|
227
|
+
--type <type> auto | flow | process | lifecyclemodel (default: auto)
|
|
228
|
+
--out-dir <dir> Optional artifact directory for validation report and row splits
|
|
229
|
+
--json Print compact JSON
|
|
230
|
+
-h, --help
|
|
231
|
+
|
|
232
|
+
Outputs written under --out-dir:
|
|
233
|
+
- outputs/validation-report.json
|
|
234
|
+
- outputs/valid-rows.jsonl
|
|
235
|
+
- outputs/invalid-rows.jsonl
|
|
236
|
+
`.trim();
|
|
237
|
+
}
|
|
238
|
+
function renderDatasetReferencesHelp() {
|
|
239
|
+
return `Usage:
|
|
240
|
+
tiangong-lca dataset references rewrite --input <file> --from flow:<id>[@<version>] --to flow:<id>[@<version>] [options]
|
|
241
|
+
|
|
242
|
+
Options:
|
|
243
|
+
--input <file> Local rows as JSON or JSONL; process and lifecyclemodel rows are supported
|
|
244
|
+
--from <ref> Source flow reference, for example flow:<old-id>@01.00.000
|
|
245
|
+
--to <ref> Target flow reference, for example flow:<new-id>@01.01.000
|
|
246
|
+
--type <type> Repeatable row type filter: process | lifecyclemodel (default: both)
|
|
247
|
+
--types <csv> Comma-separated alias for one or more row types
|
|
248
|
+
--scope <label> Optional artifact label for the already-frozen input scope
|
|
249
|
+
--out-dir <dir> Artifact directory for rewrite plan and patched rows
|
|
250
|
+
--commit Execute state-aware save-draft writes for patched rows
|
|
251
|
+
--dry-run Keep the command local-only (default)
|
|
252
|
+
--json Print compact JSON
|
|
253
|
+
-h, --help
|
|
254
|
+
|
|
255
|
+
Environment:
|
|
256
|
+
none for local dry-run
|
|
257
|
+
TIANGONG_LCA_API_BASE_URL, TIANGONG_LCA_API_KEY, and TIANGONG_LCA_SUPABASE_PUBLISHABLE_KEY
|
|
258
|
+
when --commit executes remote writes
|
|
259
|
+
|
|
260
|
+
Outputs written under --out-dir:
|
|
261
|
+
- outputs/patched-rows.jsonl
|
|
262
|
+
- outputs/rewrite-plan.json
|
|
263
|
+
- outputs/summary.json
|
|
264
|
+
`.trim();
|
|
265
|
+
}
|
|
191
266
|
function renderFlowHelp() {
|
|
192
267
|
return `Usage:
|
|
193
|
-
tiangong flow <subcommand> [options]
|
|
268
|
+
tiangong-lca flow <subcommand> [options]
|
|
194
269
|
|
|
195
270
|
Implemented Subcommands:
|
|
196
271
|
get Load one flow dataset by identifier through direct Supabase access
|
|
@@ -208,25 +283,25 @@ Implemented Subcommands:
|
|
|
208
283
|
validate-processes Validate locally patched process rows against allowed flow-reference-only changes
|
|
209
284
|
|
|
210
285
|
Examples:
|
|
211
|
-
tiangong flow --help
|
|
212
|
-
tiangong flow get --help
|
|
213
|
-
tiangong flow list --help
|
|
214
|
-
tiangong flow fetch-rows --help
|
|
215
|
-
tiangong flow materialize-decisions --help
|
|
216
|
-
tiangong flow remediate --help
|
|
217
|
-
tiangong flow publish-version --help
|
|
218
|
-
tiangong flow publish-reviewed-data --help
|
|
219
|
-
tiangong flow build-alias-map --help
|
|
220
|
-
tiangong flow scan-process-flow-refs --help
|
|
221
|
-
tiangong flow plan-process-flow-repairs --help
|
|
222
|
-
tiangong flow apply-process-flow-repairs --help
|
|
223
|
-
tiangong flow regen-product --help
|
|
224
|
-
tiangong flow validate-processes --help
|
|
286
|
+
tiangong-lca flow --help
|
|
287
|
+
tiangong-lca flow get --help
|
|
288
|
+
tiangong-lca flow list --help
|
|
289
|
+
tiangong-lca flow fetch-rows --help
|
|
290
|
+
tiangong-lca flow materialize-decisions --help
|
|
291
|
+
tiangong-lca flow remediate --help
|
|
292
|
+
tiangong-lca flow publish-version --help
|
|
293
|
+
tiangong-lca flow publish-reviewed-data --help
|
|
294
|
+
tiangong-lca flow build-alias-map --help
|
|
295
|
+
tiangong-lca flow scan-process-flow-refs --help
|
|
296
|
+
tiangong-lca flow plan-process-flow-repairs --help
|
|
297
|
+
tiangong-lca flow apply-process-flow-repairs --help
|
|
298
|
+
tiangong-lca flow regen-product --help
|
|
299
|
+
tiangong-lca flow validate-processes --help
|
|
225
300
|
`.trim();
|
|
226
301
|
}
|
|
227
302
|
function renderFlowGetHelp() {
|
|
228
303
|
return `Usage:
|
|
229
|
-
tiangong flow get --id <flow-id> [options]
|
|
304
|
+
tiangong-lca flow get --id <flow-id> [options]
|
|
230
305
|
|
|
231
306
|
Options:
|
|
232
307
|
--id <flow-id> Flow UUID
|
|
@@ -248,7 +323,7 @@ Runtime note:
|
|
|
248
323
|
}
|
|
249
324
|
function renderFlowListHelp() {
|
|
250
325
|
return `Usage:
|
|
251
|
-
tiangong flow list [options]
|
|
326
|
+
tiangong-lca flow list [options]
|
|
252
327
|
|
|
253
328
|
Options:
|
|
254
329
|
--id <flow-id> Repeatable exact flow UUID filter
|
|
@@ -276,7 +351,7 @@ Runtime note:
|
|
|
276
351
|
}
|
|
277
352
|
function renderFlowRemediateHelp() {
|
|
278
353
|
return `Usage:
|
|
279
|
-
tiangong flow remediate --input-file <file> --out-dir <dir> [options]
|
|
354
|
+
tiangong-lca flow remediate --input-file <file> --out-dir <dir> [options]
|
|
280
355
|
|
|
281
356
|
Options:
|
|
282
357
|
--input-file <file> Invalid flow rows as JSON or JSONL
|
|
@@ -295,7 +370,7 @@ Outputs written under --out-dir:
|
|
|
295
370
|
}
|
|
296
371
|
function renderFlowFetchRowsHelp() {
|
|
297
372
|
return `Usage:
|
|
298
|
-
tiangong flow fetch-rows --refs-file <file> --out-dir <dir> [options]
|
|
373
|
+
tiangong-lca flow fetch-rows --refs-file <file> --out-dir <dir> [options]
|
|
299
374
|
|
|
300
375
|
Options:
|
|
301
376
|
--refs-file <file> Flow refs as JSON or JSONL
|
|
@@ -320,7 +395,7 @@ Outputs written under --out-dir:
|
|
|
320
395
|
}
|
|
321
396
|
function renderFlowMaterializeDecisionsHelp() {
|
|
322
397
|
return `Usage:
|
|
323
|
-
tiangong flow materialize-decisions --decision-file <file> --flow-rows-file <file> --out-dir <dir> [options]
|
|
398
|
+
tiangong-lca flow materialize-decisions --decision-file <file> --flow-rows-file <file> --out-dir <dir> [options]
|
|
324
399
|
|
|
325
400
|
Options:
|
|
326
401
|
--decision-file <file> Approved cluster decisions as JSON or JSONL
|
|
@@ -339,7 +414,7 @@ Outputs written under --out-dir:
|
|
|
339
414
|
}
|
|
340
415
|
function renderFlowPublishVersionHelp() {
|
|
341
416
|
return `Usage:
|
|
342
|
-
tiangong flow publish-version --input-file <file> --out-dir <dir> [options]
|
|
417
|
+
tiangong-lca flow publish-version --input-file <file> --out-dir <dir> [options]
|
|
343
418
|
|
|
344
419
|
Options:
|
|
345
420
|
--input-file <file> Ready-for-publish flow rows as JSON or JSONL
|
|
@@ -365,7 +440,7 @@ Outputs written under --out-dir:
|
|
|
365
440
|
}
|
|
366
441
|
function renderFlowPublishReviewedDataHelp() {
|
|
367
442
|
return `Usage:
|
|
368
|
-
tiangong flow publish-reviewed-data --out-dir <dir> [--flow-rows-file <file>] [--process-rows-file <file>] [options]
|
|
443
|
+
tiangong-lca flow publish-reviewed-data --out-dir <dir> [--flow-rows-file <file>] [--process-rows-file <file>] [options]
|
|
369
444
|
|
|
370
445
|
Options:
|
|
371
446
|
--flow-rows-file <file> Reviewed flow rows as JSON or JSONL
|
|
@@ -400,7 +475,7 @@ Outputs written under --out-dir:
|
|
|
400
475
|
}
|
|
401
476
|
function renderFlowBuildAliasMapHelp() {
|
|
402
477
|
return `Usage:
|
|
403
|
-
tiangong flow build-alias-map --old-flow-file <file> --new-flow-file <file> --out-dir <dir> [options]
|
|
478
|
+
tiangong-lca flow build-alias-map --old-flow-file <file> --new-flow-file <file> --out-dir <dir> [options]
|
|
404
479
|
|
|
405
480
|
Options:
|
|
406
481
|
--old-flow-file <file> Repeatable pre-governance flow snapshot as JSON or JSONL
|
|
@@ -420,7 +495,7 @@ Outputs written under --out-dir:
|
|
|
420
495
|
}
|
|
421
496
|
function renderFlowScanProcessFlowRefsHelp() {
|
|
422
497
|
return `Usage:
|
|
423
|
-
tiangong flow scan-process-flow-refs --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
498
|
+
tiangong-lca flow scan-process-flow-refs --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
424
499
|
|
|
425
500
|
Options:
|
|
426
501
|
--processes-file <file> Process rows as JSON or JSONL
|
|
@@ -441,7 +516,7 @@ Outputs written under --out-dir:
|
|
|
441
516
|
}
|
|
442
517
|
function renderFlowPlanProcessFlowRepairsHelp() {
|
|
443
518
|
return `Usage:
|
|
444
|
-
tiangong flow plan-process-flow-repairs --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
519
|
+
tiangong-lca flow plan-process-flow-repairs --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
445
520
|
|
|
446
521
|
Options:
|
|
447
522
|
--processes-file <file> Process rows as JSON or JSONL
|
|
@@ -462,7 +537,7 @@ Outputs written under --out-dir:
|
|
|
462
537
|
}
|
|
463
538
|
function renderFlowApplyProcessFlowRepairsHelp() {
|
|
464
539
|
return `Usage:
|
|
465
|
-
tiangong flow apply-process-flow-repairs --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
540
|
+
tiangong-lca flow apply-process-flow-repairs --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
466
541
|
|
|
467
542
|
Options:
|
|
468
543
|
--processes-file <file> Process rows as JSON or JSONL
|
|
@@ -486,7 +561,7 @@ Outputs written under --out-dir:
|
|
|
486
561
|
}
|
|
487
562
|
function renderFlowRegenProductHelp() {
|
|
488
563
|
return `Usage:
|
|
489
|
-
tiangong flow regen-product --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
564
|
+
tiangong-lca flow regen-product --processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
490
565
|
|
|
491
566
|
Options:
|
|
492
567
|
--processes-file <file> Process rows as JSON or JSONL
|
|
@@ -512,7 +587,7 @@ Outputs written under --out-dir:
|
|
|
512
587
|
}
|
|
513
588
|
function renderFlowValidateProcessesHelp() {
|
|
514
589
|
return `Usage:
|
|
515
|
-
tiangong flow validate-processes --original-processes-file <file> --patched-processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
590
|
+
tiangong-lca flow validate-processes --original-processes-file <file> --patched-processes-file <file> --scope-flow-file <file> --out-dir <dir> [options]
|
|
516
591
|
|
|
517
592
|
Options:
|
|
518
593
|
--original-processes-file <file> Original process rows before repair as JSON or JSONL
|
|
@@ -530,7 +605,7 @@ Outputs written under --out-dir:
|
|
|
530
605
|
}
|
|
531
606
|
function renderReviewHelp() {
|
|
532
607
|
return `Usage:
|
|
533
|
-
tiangong review <subcommand> [options]
|
|
608
|
+
tiangong-lca review <subcommand> [options]
|
|
534
609
|
|
|
535
610
|
Implemented Subcommands:
|
|
536
611
|
process Review process build runs or rows-file snapshots and emit artifact-first findings
|
|
@@ -538,15 +613,15 @@ Implemented Subcommands:
|
|
|
538
613
|
lifecyclemodel Review one local lifecyclemodel build run and emit artifact-first findings
|
|
539
614
|
|
|
540
615
|
Examples:
|
|
541
|
-
tiangong review --help
|
|
542
|
-
tiangong review process --help
|
|
543
|
-
tiangong review flow --help
|
|
544
|
-
tiangong review lifecyclemodel --help
|
|
616
|
+
tiangong-lca review --help
|
|
617
|
+
tiangong-lca review process --help
|
|
618
|
+
tiangong-lca review flow --help
|
|
619
|
+
tiangong-lca review lifecyclemodel --help
|
|
545
620
|
`.trim();
|
|
546
621
|
}
|
|
547
622
|
function renderReviewProcessHelp() {
|
|
548
623
|
return `Usage:
|
|
549
|
-
tiangong review process (--rows-file <file> | --run-root <dir>) --out-dir <dir> [options]
|
|
624
|
+
tiangong-lca review process (--rows-file <file> | --run-root <dir>) --out-dir <dir> [options]
|
|
550
625
|
|
|
551
626
|
Options:
|
|
552
627
|
--rows-file <file> Process rows JSON/JSONL file; full process list reports with rows[] are also accepted
|
|
@@ -565,7 +640,7 @@ Options:
|
|
|
565
640
|
}
|
|
566
641
|
function renderReviewFlowHelp() {
|
|
567
642
|
return `Usage:
|
|
568
|
-
tiangong review flow (--rows-file <file> | --flows-dir <dir> | --run-root <dir>) --out-dir <dir> [options]
|
|
643
|
+
tiangong-lca review flow (--rows-file <file> | --flows-dir <dir> | --run-root <dir>) --out-dir <dir> [options]
|
|
569
644
|
|
|
570
645
|
Options:
|
|
571
646
|
--rows-file <file> Flow rows JSON / JSONL file; the CLI materializes review-input/flows automatically
|
|
@@ -588,7 +663,7 @@ Options:
|
|
|
588
663
|
}
|
|
589
664
|
function renderReviewLifecyclemodelHelp() {
|
|
590
665
|
return `Usage:
|
|
591
|
-
tiangong review lifecyclemodel --run-dir <dir> --out-dir <dir> [options]
|
|
666
|
+
tiangong-lca review lifecyclemodel --run-dir <dir> --out-dir <dir> [options]
|
|
592
667
|
|
|
593
668
|
Options:
|
|
594
669
|
--run-dir <dir> Existing lifecyclemodel auto-build run directory
|
|
@@ -607,7 +682,7 @@ This command:
|
|
|
607
682
|
}
|
|
608
683
|
function renderLifecyclemodelBuildResultingProcessHelp() {
|
|
609
684
|
return `Usage:
|
|
610
|
-
tiangong lifecyclemodel build-resulting-process --input <file> [options]
|
|
685
|
+
tiangong-lca lifecyclemodel build-resulting-process --input <file> [options]
|
|
611
686
|
|
|
612
687
|
Options:
|
|
613
688
|
--input <file> JSON request file
|
|
@@ -623,7 +698,7 @@ Remote lookup env (only when process_sources.allow_remote_lookup=true):
|
|
|
623
698
|
}
|
|
624
699
|
function renderLifecyclemodelPublishResultingProcessHelp() {
|
|
625
700
|
return `Usage:
|
|
626
|
-
tiangong lifecyclemodel publish-resulting-process --run-dir <dir> [options]
|
|
701
|
+
tiangong-lca lifecyclemodel publish-resulting-process --run-dir <dir> [options]
|
|
627
702
|
|
|
628
703
|
Options:
|
|
629
704
|
--run-dir <dir> Existing lifecyclemodel resulting-process run directory
|
|
@@ -633,30 +708,83 @@ Options:
|
|
|
633
708
|
-h, --help
|
|
634
709
|
`.trim();
|
|
635
710
|
}
|
|
711
|
+
function renderLifecyclemodelSaveDraftHelp() {
|
|
712
|
+
return `Usage:
|
|
713
|
+
tiangong-lca lifecyclemodel save-draft --input <file> [options]
|
|
714
|
+
|
|
715
|
+
Options:
|
|
716
|
+
--input <file> Lifecyclemodel rows JSON/JSONL file or publish-request.json
|
|
717
|
+
--out-dir <dir> Run root written relative to cwd when a relative path is passed
|
|
718
|
+
--commit Execute remote save-draft writes
|
|
719
|
+
--dry-run Keep the command local-only (default)
|
|
720
|
+
--json Print compact JSON
|
|
721
|
+
-h, --help
|
|
722
|
+
|
|
723
|
+
Environment:
|
|
724
|
+
none for local dry-run
|
|
725
|
+
TIANGONG_LCA_API_BASE_URL, TIANGONG_LCA_API_KEY, and TIANGONG_LCA_SUPABASE_PUBLISHABLE_KEY
|
|
726
|
+
when --commit executes remote writes
|
|
727
|
+
|
|
728
|
+
Local gate:
|
|
729
|
+
canonical lifecyclemodel payloads are validated against LifeCycleModelSchema before any remote write;
|
|
730
|
+
schema-invalid rows stay in failures.jsonl instead of being committed
|
|
731
|
+
|
|
732
|
+
Outputs written under --out-dir:
|
|
733
|
+
- inputs/normalized-input.json
|
|
734
|
+
- outputs/save-draft-bundle/selected-lifecyclemodels.jsonl
|
|
735
|
+
- outputs/save-draft-bundle/progress.jsonl
|
|
736
|
+
- outputs/save-draft-bundle/failures.jsonl
|
|
737
|
+
- outputs/save-draft-bundle/summary.json
|
|
738
|
+
`.trim();
|
|
739
|
+
}
|
|
740
|
+
function renderLifecyclemodelGraphHelp() {
|
|
741
|
+
return `Usage:
|
|
742
|
+
tiangong-lca lifecyclemodel graph --input <file> [options]
|
|
743
|
+
|
|
744
|
+
Options:
|
|
745
|
+
--input <file> Lifecyclemodel rows JSON/JSONL file
|
|
746
|
+
--out-dir <dir> Artifact directory for graph files and findings
|
|
747
|
+
--format <format> json | dot | svg | all (default: all)
|
|
748
|
+
--check-connections Fail when process-instance links are missing or unresolved
|
|
749
|
+
--json Print compact JSON
|
|
750
|
+
-h, --help
|
|
751
|
+
|
|
752
|
+
Outputs written under --out-dir:
|
|
753
|
+
- outputs/graph-report.json
|
|
754
|
+
- outputs/findings.jsonl
|
|
755
|
+
- graphs/*.json
|
|
756
|
+
- graphs/*.dot
|
|
757
|
+
- graphs/*.svg
|
|
758
|
+
`.trim();
|
|
759
|
+
}
|
|
636
760
|
function renderLifecyclemodelHelp() {
|
|
637
761
|
return `Usage:
|
|
638
|
-
tiangong lifecyclemodel <subcommand> [options]
|
|
762
|
+
tiangong-lca lifecyclemodel <subcommand> [options]
|
|
639
763
|
|
|
640
764
|
Implemented Subcommands:
|
|
641
765
|
auto-build Build native lifecyclemodel json_ordered artifacts from local process run exports
|
|
642
766
|
validate-build Re-run local validation on one lifecyclemodel build run
|
|
643
767
|
publish-build Prepare lifecyclemodel publish handoff artifacts from one local build run
|
|
768
|
+
save-draft Save canonical lifecyclemodel datasets through the bundle save path
|
|
769
|
+
graph Derive lifecyclemodel graph artifacts and connection findings
|
|
644
770
|
build-resulting-process Deterministically aggregate a lifecycle model into a resulting process bundle
|
|
645
771
|
publish-resulting-process Prepare publish-bundle.json and publish-intent.json from a prior resulting-process run
|
|
646
772
|
orchestrate Plan, execute, or publish a recursive lifecyclemodel assembly run
|
|
647
773
|
|
|
648
774
|
Examples:
|
|
649
|
-
tiangong lifecyclemodel --help
|
|
650
|
-
tiangong lifecyclemodel auto-build --help
|
|
651
|
-
tiangong lifecyclemodel validate-build --help
|
|
652
|
-
tiangong lifecyclemodel publish-build --help
|
|
653
|
-
tiangong lifecyclemodel
|
|
654
|
-
tiangong lifecyclemodel
|
|
775
|
+
tiangong-lca lifecyclemodel --help
|
|
776
|
+
tiangong-lca lifecyclemodel auto-build --help
|
|
777
|
+
tiangong-lca lifecyclemodel validate-build --help
|
|
778
|
+
tiangong-lca lifecyclemodel publish-build --help
|
|
779
|
+
tiangong-lca lifecyclemodel save-draft --help
|
|
780
|
+
tiangong-lca lifecyclemodel graph --help
|
|
781
|
+
tiangong-lca lifecyclemodel build-resulting-process --help
|
|
782
|
+
tiangong-lca lifecyclemodel orchestrate --help
|
|
655
783
|
`.trim();
|
|
656
784
|
}
|
|
657
785
|
function renderLifecyclemodelOrchestrateHelp() {
|
|
658
786
|
return `Usage:
|
|
659
|
-
tiangong lifecyclemodel orchestrate <plan|execute|publish> [options]
|
|
787
|
+
tiangong-lca lifecyclemodel orchestrate <plan|execute|publish> [options]
|
|
660
788
|
|
|
661
789
|
Plan / execute options:
|
|
662
790
|
--input <file> JSON request file
|
|
@@ -682,11 +810,11 @@ This command:
|
|
|
682
810
|
}
|
|
683
811
|
function renderLifecyclemodelAutoBuildHelp() {
|
|
684
812
|
return `Usage:
|
|
685
|
-
tiangong lifecyclemodel auto-build --input <file> [options]
|
|
813
|
+
tiangong-lca lifecyclemodel auto-build --input <file> [options]
|
|
686
814
|
|
|
687
815
|
Options:
|
|
688
816
|
--input <file> JSON request file
|
|
689
|
-
--out-dir <dir>
|
|
817
|
+
--out-dir <dir> Explicit run root; otherwise request.out_dir is required
|
|
690
818
|
--json Print compact JSON
|
|
691
819
|
-h, --help
|
|
692
820
|
|
|
@@ -696,6 +824,7 @@ Minimal request contract:
|
|
|
696
824
|
}
|
|
697
825
|
|
|
698
826
|
This first CLI slice is local-only and read-only:
|
|
827
|
+
- applies no implicit repo-local ./artifacts fallback; callers must provide a run root
|
|
699
828
|
- loads local process build run directories
|
|
700
829
|
- infers the process graph from shared flow UUIDs
|
|
701
830
|
- emits native lifecyclemodel json_ordered artifacts
|
|
@@ -704,7 +833,7 @@ This first CLI slice is local-only and read-only:
|
|
|
704
833
|
}
|
|
705
834
|
function renderLifecyclemodelValidateBuildHelp() {
|
|
706
835
|
return `Usage:
|
|
707
|
-
tiangong lifecyclemodel validate-build --run-dir <dir> [options]
|
|
836
|
+
tiangong-lca lifecyclemodel validate-build --run-dir <dir> [options]
|
|
708
837
|
|
|
709
838
|
Options:
|
|
710
839
|
--run-dir <dir> Existing lifecyclemodel auto-build run directory
|
|
@@ -720,7 +849,7 @@ This command:
|
|
|
720
849
|
}
|
|
721
850
|
function renderLifecyclemodelPublishBuildHelp() {
|
|
722
851
|
return `Usage:
|
|
723
|
-
tiangong lifecyclemodel publish-build --run-dir <dir> [options]
|
|
852
|
+
tiangong-lca lifecyclemodel publish-build --run-dir <dir> [options]
|
|
724
853
|
|
|
725
854
|
Options:
|
|
726
855
|
--run-dir <dir> Existing lifecyclemodel auto-build run directory
|
|
@@ -730,23 +859,26 @@ Options:
|
|
|
730
859
|
This command:
|
|
731
860
|
- collects native lifecyclemodel json_ordered payloads from one local build run
|
|
732
861
|
- writes publish-bundle.json, publish-request.json, and publish-intent.json
|
|
733
|
-
- keeps actual dry-run / commit execution in tiangong publish run
|
|
862
|
+
- keeps actual dry-run / commit execution in tiangong-lca publish run
|
|
863
|
+
- routes lifecyclemodel commit through save_lifecycle_model_bundle internally
|
|
734
864
|
`.trim();
|
|
735
865
|
}
|
|
736
866
|
function renderProcessAutoBuildHelp() {
|
|
737
867
|
return `Usage:
|
|
738
|
-
tiangong process auto-build --input <file> [options]
|
|
868
|
+
tiangong-lca process auto-build --input <file> [options]
|
|
739
869
|
|
|
740
870
|
Options:
|
|
741
871
|
--input <file> JSON request file
|
|
742
|
-
--out-dir <dir>
|
|
872
|
+
--out-dir <dir> Explicit run root; otherwise request.workspace_run_root is required
|
|
743
873
|
--json Print compact JSON
|
|
744
874
|
-h, --help
|
|
875
|
+
|
|
876
|
+
This command applies no implicit repo-local ./artifacts fallback.
|
|
745
877
|
`.trim();
|
|
746
878
|
}
|
|
747
879
|
function renderProcessGetHelp() {
|
|
748
880
|
return `Usage:
|
|
749
|
-
tiangong process get --id <process-id> [options]
|
|
881
|
+
tiangong-lca process get --id <process-id> [options]
|
|
750
882
|
|
|
751
883
|
Options:
|
|
752
884
|
--id <process-id> Process UUID
|
|
@@ -766,7 +898,7 @@ Runtime note:
|
|
|
766
898
|
}
|
|
767
899
|
function renderProcessListHelp() {
|
|
768
900
|
return `Usage:
|
|
769
|
-
tiangong process list [options]
|
|
901
|
+
tiangong-lca process list [options]
|
|
770
902
|
|
|
771
903
|
Options:
|
|
772
904
|
--id <process-id> Repeatable exact process UUID filter
|
|
@@ -791,31 +923,102 @@ Runtime note:
|
|
|
791
923
|
and authenticates that client with the resolved user access token.
|
|
792
924
|
`.trim();
|
|
793
925
|
}
|
|
926
|
+
function renderProcessScopeStatisticsHelp() {
|
|
927
|
+
return `Usage:
|
|
928
|
+
tiangong-lca process scope-statistics --out-dir <dir> [options]
|
|
929
|
+
|
|
930
|
+
Options:
|
|
931
|
+
--out-dir <dir> Artifact root to write inputs/outputs/reports
|
|
932
|
+
--scope <name> visible | current-user (default: visible)
|
|
933
|
+
--state-code <code> Repeatable non-negative integer state code filter
|
|
934
|
+
--state-codes <csv> Comma-separated alias for one or more state codes
|
|
935
|
+
--page-size <n> Remote page size (default: 200)
|
|
936
|
+
--reuse-snapshot Reuse inputs/processes.snapshot.rows.jsonl instead of refetching
|
|
937
|
+
--json Print compact JSON
|
|
938
|
+
-h, --help
|
|
939
|
+
|
|
940
|
+
Outputs written under --out-dir:
|
|
941
|
+
- inputs/processes.snapshot.manifest.json
|
|
942
|
+
- inputs/processes.snapshot.rows.jsonl
|
|
943
|
+
- outputs/process-scope-summary.json
|
|
944
|
+
- outputs/domain-summary.json
|
|
945
|
+
- outputs/craft-summary.json
|
|
946
|
+
- outputs/product-summary.json
|
|
947
|
+
- outputs/type-of-dataset-summary.json
|
|
948
|
+
- reports/process-scope-statistics.md
|
|
949
|
+
- reports/process-scope-statistics.zh-CN.md
|
|
950
|
+
`.trim();
|
|
951
|
+
}
|
|
952
|
+
function renderProcessDedupReviewHelp() {
|
|
953
|
+
return `Usage:
|
|
954
|
+
tiangong-lca process dedup-review --input <file> --out-dir <dir> [options]
|
|
955
|
+
|
|
956
|
+
Options:
|
|
957
|
+
--input <file> Grouped duplicate-candidate JSON input
|
|
958
|
+
--out-dir <dir> Artifact root to write inputs/outputs
|
|
959
|
+
--skip-remote Skip optional TianGong remote enrichment and reference scans
|
|
960
|
+
--json Print compact JSON
|
|
961
|
+
-h, --help
|
|
962
|
+
|
|
963
|
+
Input contract:
|
|
964
|
+
{
|
|
965
|
+
"source_label": "duplicate-processes-export",
|
|
966
|
+
"groups": [
|
|
967
|
+
{
|
|
968
|
+
"group_id": 1,
|
|
969
|
+
"processes": [
|
|
970
|
+
{
|
|
971
|
+
"process_id": "proc-1",
|
|
972
|
+
"version": "01.00.000",
|
|
973
|
+
"name_en": "Example",
|
|
974
|
+
"name_zh": "示例",
|
|
975
|
+
"sheet_exchange_rows": [
|
|
976
|
+
{
|
|
977
|
+
"flow_id": "flow-1",
|
|
978
|
+
"direction": "Input",
|
|
979
|
+
"mean_amount": "1",
|
|
980
|
+
"resulting_amount": "1"
|
|
981
|
+
}
|
|
982
|
+
]
|
|
983
|
+
}
|
|
984
|
+
]
|
|
985
|
+
}
|
|
986
|
+
]
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
Outputs written under --out-dir:
|
|
990
|
+
- inputs/dedup-input.manifest.json
|
|
991
|
+
- inputs/processes.remote-metadata.json (when remote enrichment succeeds)
|
|
992
|
+
- outputs/duplicate-groups.json
|
|
993
|
+
- outputs/delete-plan.json
|
|
994
|
+
- outputs/current-user-reference-scan.json (when reference scan succeeds)
|
|
995
|
+
`.trim();
|
|
996
|
+
}
|
|
794
997
|
function renderProcessResumeBuildHelp() {
|
|
795
998
|
return `Usage:
|
|
796
|
-
tiangong process resume-build
|
|
999
|
+
tiangong-lca process resume-build --run-dir <dir> [options]
|
|
797
1000
|
|
|
798
1001
|
Options:
|
|
799
|
-
--run-id <id> Existing process build run id
|
|
800
1002
|
--run-dir <dir> Existing process build run directory
|
|
1003
|
+
--run-id <id> Optional run id consistency check
|
|
801
1004
|
--json Print compact JSON
|
|
802
1005
|
-h, --help
|
|
803
1006
|
`.trim();
|
|
804
1007
|
}
|
|
805
1008
|
function renderProcessPublishBuildHelp() {
|
|
806
1009
|
return `Usage:
|
|
807
|
-
tiangong process publish-build
|
|
1010
|
+
tiangong-lca process publish-build --run-dir <dir> [options]
|
|
808
1011
|
|
|
809
1012
|
Options:
|
|
810
|
-
--run-id <id> Existing process build run id
|
|
811
1013
|
--run-dir <dir> Existing process build run directory
|
|
1014
|
+
--run-id <id> Optional run id consistency check
|
|
812
1015
|
--json Print compact JSON
|
|
813
1016
|
-h, --help
|
|
814
1017
|
`.trim();
|
|
815
1018
|
}
|
|
816
1019
|
function renderProcessSaveDraftHelp() {
|
|
817
1020
|
return `Usage:
|
|
818
|
-
tiangong process save-draft --input <file> [options]
|
|
1021
|
+
tiangong-lca process save-draft --input <file> [options]
|
|
819
1022
|
|
|
820
1023
|
Options:
|
|
821
1024
|
--input <file> Process rows JSON/JSONL file or publish-request.json
|
|
@@ -830,6 +1033,10 @@ Environment:
|
|
|
830
1033
|
TIANGONG_LCA_API_BASE_URL, TIANGONG_LCA_API_KEY, and TIANGONG_LCA_SUPABASE_PUBLISHABLE_KEY
|
|
831
1034
|
when --commit executes remote writes
|
|
832
1035
|
|
|
1036
|
+
Local gate:
|
|
1037
|
+
canonical process payloads are validated against ProcessSchema before any remote write;
|
|
1038
|
+
schema-invalid rows stay in failures.jsonl instead of being committed
|
|
1039
|
+
|
|
833
1040
|
Outputs written under --out-dir:
|
|
834
1041
|
- inputs/normalized-input.json
|
|
835
1042
|
- outputs/save-draft-rpc/selected-processes.jsonl
|
|
@@ -838,39 +1045,99 @@ Outputs written under --out-dir:
|
|
|
838
1045
|
- outputs/save-draft-rpc/summary.json
|
|
839
1046
|
`.trim();
|
|
840
1047
|
}
|
|
1048
|
+
function renderProcessRefreshReferencesHelp() {
|
|
1049
|
+
return `Usage:
|
|
1050
|
+
tiangong-lca process refresh-references --out-dir <dir> [options]
|
|
1051
|
+
|
|
1052
|
+
Options:
|
|
1053
|
+
--out-dir <dir> Artifact root for manifest, progress, blockers, and reports
|
|
1054
|
+
--apply Commit state-aware draft writes after local validation passes
|
|
1055
|
+
--dry-run Refresh references locally only (default)
|
|
1056
|
+
--reuse-manifest Reuse inputs/processes.manifest.json instead of refetching the owner snapshot
|
|
1057
|
+
--limit <n> Process at most n manifest rows
|
|
1058
|
+
--page-size <n> Snapshot page size (default: 500)
|
|
1059
|
+
--concurrency <n> Parallel row workers (default: 1, max: 8)
|
|
1060
|
+
--json Print compact JSON
|
|
1061
|
+
-h, --help
|
|
1062
|
+
|
|
1063
|
+
Required env:
|
|
1064
|
+
TIANGONG_LCA_API_BASE_URL
|
|
1065
|
+
TIANGONG_LCA_API_KEY
|
|
1066
|
+
TIANGONG_LCA_SUPABASE_PUBLISHABLE_KEY
|
|
1067
|
+
|
|
1068
|
+
Guardrails:
|
|
1069
|
+
- refresh only the current authenticated user's process snapshot
|
|
1070
|
+
- skip rows with state_code >= 20 instead of forcing an unsupported write path
|
|
1071
|
+
- block remote writes when ProcessSchema validation fails or references stay unresolved
|
|
1072
|
+
- never requires raw SUPABASE_EMAIL / SUPABASE_PASSWORD in the skill layer
|
|
1073
|
+
|
|
1074
|
+
Outputs written under --out-dir:
|
|
1075
|
+
- inputs/processes.manifest.json
|
|
1076
|
+
- outputs/progress.jsonl
|
|
1077
|
+
- outputs/errors.jsonl
|
|
1078
|
+
- outputs/validation-blockers.jsonl
|
|
1079
|
+
- outputs/summary.json
|
|
1080
|
+
- reports/process-refresh-references.md
|
|
1081
|
+
`.trim();
|
|
1082
|
+
}
|
|
1083
|
+
function renderProcessVerifyRowsHelp() {
|
|
1084
|
+
return `Usage:
|
|
1085
|
+
tiangong-lca process verify-rows --rows-file <file> --out-dir <dir> [options]
|
|
1086
|
+
|
|
1087
|
+
Options:
|
|
1088
|
+
--rows-file <file> Raw process rows JSON/JSONL file; full process list reports with rows[] are also accepted
|
|
1089
|
+
--out-dir <dir> Output directory for summary and verification JSONL artifacts
|
|
1090
|
+
--json Print compact JSON
|
|
1091
|
+
-h, --help
|
|
1092
|
+
|
|
1093
|
+
Outputs written under --out-dir:
|
|
1094
|
+
- outputs/summary.json
|
|
1095
|
+
- outputs/verification.jsonl
|
|
1096
|
+
`.trim();
|
|
1097
|
+
}
|
|
841
1098
|
function renderProcessBatchBuildHelp() {
|
|
842
1099
|
return `Usage:
|
|
843
|
-
tiangong process batch-build --input <file> [options]
|
|
1100
|
+
tiangong-lca process batch-build --input <file> [options]
|
|
844
1101
|
|
|
845
1102
|
Options:
|
|
846
1103
|
--input <file> JSON batch manifest file
|
|
847
|
-
--out-dir <dir>
|
|
1104
|
+
--out-dir <dir> Explicit batch root; otherwise request.out_dir is required
|
|
848
1105
|
--json Print compact JSON
|
|
849
1106
|
-h, --help
|
|
1107
|
+
|
|
1108
|
+
This command applies no implicit repo-local ./artifacts fallback.
|
|
850
1109
|
`.trim();
|
|
851
1110
|
}
|
|
852
1111
|
function renderProcessHelp() {
|
|
853
1112
|
return `Usage:
|
|
854
|
-
tiangong process <subcommand> [options]
|
|
1113
|
+
tiangong-lca process <subcommand> [options]
|
|
855
1114
|
|
|
856
1115
|
Implemented Subcommands:
|
|
857
1116
|
get Load one process dataset by identifier through direct Supabase access
|
|
858
1117
|
list List visible process rows through direct Supabase access
|
|
1118
|
+
scope-statistics Count repeatable coverage statistics from visible or owner-filtered process snapshots
|
|
1119
|
+
dedup-review Review grouped duplicate process candidates and emit keep/delete evidence
|
|
859
1120
|
auto-build Prepare a local process-from-flow run scaffold and artifact workspace
|
|
860
1121
|
resume-build Prepare a local resume handoff from one existing process build run
|
|
861
1122
|
publish-build Prepare publish handoff artifacts from one existing process build run
|
|
862
1123
|
save-draft Save canonical process datasets through the state-aware draft-maintenance path
|
|
863
1124
|
batch-build Run multiple process auto-build requests through one batch-oriented CLI surface
|
|
1125
|
+
refresh-references Refresh current-user process references to the latest reachable dataset versions
|
|
1126
|
+
verify-rows Re-validate fetched process rows and required naming fields locally
|
|
864
1127
|
|
|
865
1128
|
Examples:
|
|
866
|
-
tiangong process --help
|
|
867
|
-
tiangong process get --id <process-id>
|
|
868
|
-
tiangong process list --state-code 100 --limit 20 --help
|
|
869
|
-
tiangong process
|
|
870
|
-
tiangong process
|
|
871
|
-
tiangong process
|
|
872
|
-
tiangong process
|
|
873
|
-
tiangong process
|
|
1129
|
+
tiangong-lca process --help
|
|
1130
|
+
tiangong-lca process get --id <process-id>
|
|
1131
|
+
tiangong-lca process list --state-code 100 --limit 20 --help
|
|
1132
|
+
tiangong-lca process scope-statistics --out-dir ./process-scope --state-code 0 --state-code 100 --help
|
|
1133
|
+
tiangong-lca process dedup-review --input ./duplicate-groups.json --out-dir ./process-dedup --help
|
|
1134
|
+
tiangong-lca process auto-build --help
|
|
1135
|
+
tiangong-lca process resume-build --run-dir /abs/path/to/process-run --help
|
|
1136
|
+
tiangong-lca process publish-build --run-dir /abs/path/to/process-run --help
|
|
1137
|
+
tiangong-lca process save-draft --input ./patched-processes.jsonl --help
|
|
1138
|
+
tiangong-lca process batch-build --input ./batch-request.json --help
|
|
1139
|
+
tiangong-lca process refresh-references --out-dir ./process-refresh --help
|
|
1140
|
+
tiangong-lca process verify-rows --rows-file ./process-list-report.json --out-dir ./process-verify --help
|
|
874
1141
|
`.trim();
|
|
875
1142
|
}
|
|
876
1143
|
function renderDoctorText(report) {
|
|
@@ -1078,6 +1345,89 @@ function parseValidationFlags(args) {
|
|
|
1078
1345
|
reportFile: typeof values['report-file'] === 'string' ? values['report-file'] : null,
|
|
1079
1346
|
};
|
|
1080
1347
|
}
|
|
1348
|
+
function parseDatasetValidateFlags(args) {
|
|
1349
|
+
let values;
|
|
1350
|
+
try {
|
|
1351
|
+
({ values } = parseArgs({
|
|
1352
|
+
args,
|
|
1353
|
+
allowPositionals: false,
|
|
1354
|
+
strict: true,
|
|
1355
|
+
options: {
|
|
1356
|
+
help: { type: 'boolean', short: 'h' },
|
|
1357
|
+
json: { type: 'boolean' },
|
|
1358
|
+
input: { type: 'string' },
|
|
1359
|
+
type: { type: 'string' },
|
|
1360
|
+
'out-dir': { type: 'string' },
|
|
1361
|
+
},
|
|
1362
|
+
}));
|
|
1363
|
+
}
|
|
1364
|
+
catch (error) {
|
|
1365
|
+
throw new CliError(String(error), {
|
|
1366
|
+
code: 'INVALID_ARGS',
|
|
1367
|
+
exitCode: 2,
|
|
1368
|
+
});
|
|
1369
|
+
}
|
|
1370
|
+
return {
|
|
1371
|
+
help: Boolean(values.help),
|
|
1372
|
+
json: Boolean(values.json),
|
|
1373
|
+
inputPath: typeof values.input === 'string' ? values.input : '',
|
|
1374
|
+
type: typeof values.type === 'string' ? values.type : undefined,
|
|
1375
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : null,
|
|
1376
|
+
};
|
|
1377
|
+
}
|
|
1378
|
+
function parseDatasetReferencesRewriteFlags(args) {
|
|
1379
|
+
let values;
|
|
1380
|
+
try {
|
|
1381
|
+
({ values } = parseArgs({
|
|
1382
|
+
args,
|
|
1383
|
+
allowPositionals: false,
|
|
1384
|
+
strict: true,
|
|
1385
|
+
options: {
|
|
1386
|
+
help: { type: 'boolean', short: 'h' },
|
|
1387
|
+
json: { type: 'boolean' },
|
|
1388
|
+
input: { type: 'string' },
|
|
1389
|
+
from: { type: 'string' },
|
|
1390
|
+
to: { type: 'string' },
|
|
1391
|
+
type: { type: 'string', multiple: true },
|
|
1392
|
+
types: { type: 'string', multiple: true },
|
|
1393
|
+
scope: { type: 'string' },
|
|
1394
|
+
'out-dir': { type: 'string' },
|
|
1395
|
+
commit: { type: 'boolean' },
|
|
1396
|
+
'dry-run': { type: 'boolean' },
|
|
1397
|
+
},
|
|
1398
|
+
}));
|
|
1399
|
+
}
|
|
1400
|
+
catch (error) {
|
|
1401
|
+
throw new CliError(String(error), {
|
|
1402
|
+
code: 'INVALID_ARGS',
|
|
1403
|
+
exitCode: 2,
|
|
1404
|
+
});
|
|
1405
|
+
}
|
|
1406
|
+
if (values.commit && values['dry-run']) {
|
|
1407
|
+
throw new CliError('Cannot pass both --commit and --dry-run.', {
|
|
1408
|
+
code: 'DATASET_REFERENCES_REWRITE_MODE_CONFLICT',
|
|
1409
|
+
exitCode: 2,
|
|
1410
|
+
});
|
|
1411
|
+
}
|
|
1412
|
+
return {
|
|
1413
|
+
help: Boolean(values.help),
|
|
1414
|
+
json: Boolean(values.json),
|
|
1415
|
+
inputPath: typeof values.input === 'string' ? values.input : '',
|
|
1416
|
+
from: typeof values.from === 'string' ? values.from : '',
|
|
1417
|
+
to: typeof values.to === 'string' ? values.to : '',
|
|
1418
|
+
types: [
|
|
1419
|
+
...(Array.isArray(values.type)
|
|
1420
|
+
? values.type.filter((value) => typeof value === 'string')
|
|
1421
|
+
: []),
|
|
1422
|
+
...(Array.isArray(values.types)
|
|
1423
|
+
? values.types.filter((value) => typeof value === 'string')
|
|
1424
|
+
: []),
|
|
1425
|
+
],
|
|
1426
|
+
scope: typeof values.scope === 'string' ? values.scope : null,
|
|
1427
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : '',
|
|
1428
|
+
commit: Boolean(values.commit),
|
|
1429
|
+
};
|
|
1430
|
+
}
|
|
1081
1431
|
function parseFlowRemediateFlags(args) {
|
|
1082
1432
|
let values;
|
|
1083
1433
|
try {
|
|
@@ -1997,6 +2347,75 @@ function parseLifecyclemodelPublishBuildFlags(args) {
|
|
|
1997
2347
|
runDir: typeof values['run-dir'] === 'string' ? values['run-dir'] : '',
|
|
1998
2348
|
};
|
|
1999
2349
|
}
|
|
2350
|
+
function parseLifecyclemodelSaveDraftFlags(args) {
|
|
2351
|
+
let values;
|
|
2352
|
+
try {
|
|
2353
|
+
({ values } = parseArgs({
|
|
2354
|
+
args,
|
|
2355
|
+
allowPositionals: false,
|
|
2356
|
+
strict: true,
|
|
2357
|
+
options: {
|
|
2358
|
+
help: { type: 'boolean', short: 'h' },
|
|
2359
|
+
json: { type: 'boolean' },
|
|
2360
|
+
input: { type: 'string' },
|
|
2361
|
+
'out-dir': { type: 'string' },
|
|
2362
|
+
commit: { type: 'boolean' },
|
|
2363
|
+
'dry-run': { type: 'boolean' },
|
|
2364
|
+
},
|
|
2365
|
+
}));
|
|
2366
|
+
}
|
|
2367
|
+
catch (error) {
|
|
2368
|
+
throw new CliError(String(error), {
|
|
2369
|
+
code: 'INVALID_ARGS',
|
|
2370
|
+
exitCode: 2,
|
|
2371
|
+
});
|
|
2372
|
+
}
|
|
2373
|
+
if (values.commit && values['dry-run']) {
|
|
2374
|
+
throw new CliError('Cannot pass both --commit and --dry-run.', {
|
|
2375
|
+
code: 'INVALID_LIFECYCLEMODEL_SAVE_DRAFT_MODE',
|
|
2376
|
+
exitCode: 2,
|
|
2377
|
+
});
|
|
2378
|
+
}
|
|
2379
|
+
return {
|
|
2380
|
+
help: Boolean(values.help),
|
|
2381
|
+
json: Boolean(values.json),
|
|
2382
|
+
inputPath: typeof values.input === 'string' ? values.input : '',
|
|
2383
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : null,
|
|
2384
|
+
commit: Boolean(values.commit),
|
|
2385
|
+
};
|
|
2386
|
+
}
|
|
2387
|
+
function parseLifecyclemodelGraphFlags(args) {
|
|
2388
|
+
let values;
|
|
2389
|
+
try {
|
|
2390
|
+
({ values } = parseArgs({
|
|
2391
|
+
args,
|
|
2392
|
+
allowPositionals: false,
|
|
2393
|
+
strict: true,
|
|
2394
|
+
options: {
|
|
2395
|
+
help: { type: 'boolean', short: 'h' },
|
|
2396
|
+
json: { type: 'boolean' },
|
|
2397
|
+
input: { type: 'string' },
|
|
2398
|
+
'out-dir': { type: 'string' },
|
|
2399
|
+
format: { type: 'string' },
|
|
2400
|
+
'check-connections': { type: 'boolean' },
|
|
2401
|
+
},
|
|
2402
|
+
}));
|
|
2403
|
+
}
|
|
2404
|
+
catch (error) {
|
|
2405
|
+
throw new CliError(String(error), {
|
|
2406
|
+
code: 'INVALID_ARGS',
|
|
2407
|
+
exitCode: 2,
|
|
2408
|
+
});
|
|
2409
|
+
}
|
|
2410
|
+
return {
|
|
2411
|
+
help: Boolean(values.help),
|
|
2412
|
+
json: Boolean(values.json),
|
|
2413
|
+
inputPath: typeof values.input === 'string' ? values.input : '',
|
|
2414
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : '',
|
|
2415
|
+
format: typeof values.format === 'string' ? values.format : undefined,
|
|
2416
|
+
checkConnections: Boolean(values['check-connections']),
|
|
2417
|
+
};
|
|
2418
|
+
}
|
|
2000
2419
|
function parseLifecyclemodelBuildFlags(args) {
|
|
2001
2420
|
let values;
|
|
2002
2421
|
try {
|
|
@@ -2213,6 +2632,111 @@ function parseProcessListFlags(args) {
|
|
|
2213
2632
|
order: typeof values.order === 'string' ? values.order : null,
|
|
2214
2633
|
};
|
|
2215
2634
|
}
|
|
2635
|
+
function parseProcessScopeStatisticsFlags(args) {
|
|
2636
|
+
let values;
|
|
2637
|
+
try {
|
|
2638
|
+
({ values } = parseArgs({
|
|
2639
|
+
args,
|
|
2640
|
+
allowPositionals: false,
|
|
2641
|
+
strict: true,
|
|
2642
|
+
options: {
|
|
2643
|
+
help: { type: 'boolean', short: 'h' },
|
|
2644
|
+
json: { type: 'boolean' },
|
|
2645
|
+
'out-dir': { type: 'string' },
|
|
2646
|
+
scope: { type: 'string' },
|
|
2647
|
+
'state-code': { type: 'string', multiple: true },
|
|
2648
|
+
'state-codes': { type: 'string' },
|
|
2649
|
+
'page-size': { type: 'string' },
|
|
2650
|
+
'reuse-snapshot': { type: 'boolean' },
|
|
2651
|
+
},
|
|
2652
|
+
}));
|
|
2653
|
+
}
|
|
2654
|
+
catch (error) {
|
|
2655
|
+
throw new CliError(String(error), {
|
|
2656
|
+
code: 'INVALID_ARGS',
|
|
2657
|
+
exitCode: 2,
|
|
2658
|
+
});
|
|
2659
|
+
}
|
|
2660
|
+
const parseStateCode = (value) => {
|
|
2661
|
+
const parsed = Number.parseInt(value, 10);
|
|
2662
|
+
if (!Number.isInteger(parsed) || parsed < 0) {
|
|
2663
|
+
throw new CliError('Expected --state-code to be a non-negative integer.', {
|
|
2664
|
+
code: 'INVALID_PROCESS_SCOPE_STATE_CODE',
|
|
2665
|
+
exitCode: 2,
|
|
2666
|
+
});
|
|
2667
|
+
}
|
|
2668
|
+
return parsed;
|
|
2669
|
+
};
|
|
2670
|
+
const stateCodes = [
|
|
2671
|
+
...(Array.isArray(values['state-code'])
|
|
2672
|
+
? values['state-code'].map((value) => parseStateCode(String(value)))
|
|
2673
|
+
: []),
|
|
2674
|
+
...(typeof values['state-codes'] === 'string' ? values['state-codes'].split(',') : [])
|
|
2675
|
+
.map((value) => value.trim())
|
|
2676
|
+
.filter(Boolean)
|
|
2677
|
+
.map((value) => parseStateCode(value)),
|
|
2678
|
+
];
|
|
2679
|
+
let pageSize = null;
|
|
2680
|
+
if (typeof values['page-size'] === 'string') {
|
|
2681
|
+
const parsed = Number.parseInt(values['page-size'], 10);
|
|
2682
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
2683
|
+
throw new CliError('Expected --page-size to be a positive integer.', {
|
|
2684
|
+
code: 'INVALID_PROCESS_SCOPE_PAGE_SIZE',
|
|
2685
|
+
exitCode: 2,
|
|
2686
|
+
});
|
|
2687
|
+
}
|
|
2688
|
+
pageSize = parsed;
|
|
2689
|
+
}
|
|
2690
|
+
let scope;
|
|
2691
|
+
if (typeof values.scope === 'string') {
|
|
2692
|
+
if (values.scope !== 'visible' && values.scope !== 'current-user') {
|
|
2693
|
+
throw new CliError("Expected --scope to be either 'visible' or 'current-user'.", {
|
|
2694
|
+
code: 'INVALID_PROCESS_SCOPE_SCOPE',
|
|
2695
|
+
exitCode: 2,
|
|
2696
|
+
});
|
|
2697
|
+
}
|
|
2698
|
+
scope = values.scope;
|
|
2699
|
+
}
|
|
2700
|
+
return {
|
|
2701
|
+
help: Boolean(values.help),
|
|
2702
|
+
json: Boolean(values.json),
|
|
2703
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : '',
|
|
2704
|
+
scope,
|
|
2705
|
+
stateCodes,
|
|
2706
|
+
pageSize,
|
|
2707
|
+
reuseSnapshot: Boolean(values['reuse-snapshot']),
|
|
2708
|
+
};
|
|
2709
|
+
}
|
|
2710
|
+
function parseProcessDedupReviewFlags(args) {
|
|
2711
|
+
let values;
|
|
2712
|
+
try {
|
|
2713
|
+
({ values } = parseArgs({
|
|
2714
|
+
args,
|
|
2715
|
+
allowPositionals: false,
|
|
2716
|
+
strict: true,
|
|
2717
|
+
options: {
|
|
2718
|
+
help: { type: 'boolean', short: 'h' },
|
|
2719
|
+
json: { type: 'boolean' },
|
|
2720
|
+
input: { type: 'string' },
|
|
2721
|
+
'out-dir': { type: 'string' },
|
|
2722
|
+
'skip-remote': { type: 'boolean' },
|
|
2723
|
+
},
|
|
2724
|
+
}));
|
|
2725
|
+
}
|
|
2726
|
+
catch (error) {
|
|
2727
|
+
throw new CliError(String(error), {
|
|
2728
|
+
code: 'INVALID_ARGS',
|
|
2729
|
+
exitCode: 2,
|
|
2730
|
+
});
|
|
2731
|
+
}
|
|
2732
|
+
return {
|
|
2733
|
+
help: Boolean(values.help),
|
|
2734
|
+
json: Boolean(values.json),
|
|
2735
|
+
inputPath: typeof values.input === 'string' ? values.input : '',
|
|
2736
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : '',
|
|
2737
|
+
skipRemote: Boolean(values['skip-remote']),
|
|
2738
|
+
};
|
|
2739
|
+
}
|
|
2216
2740
|
function parseProcessResumeBuildFlags(args) {
|
|
2217
2741
|
let values;
|
|
2218
2742
|
try {
|
|
@@ -2306,6 +2830,90 @@ function parseProcessSaveDraftFlags(args) {
|
|
|
2306
2830
|
commit: Boolean(values.commit),
|
|
2307
2831
|
};
|
|
2308
2832
|
}
|
|
2833
|
+
function parseProcessRefreshReferencesFlags(args) {
|
|
2834
|
+
let values;
|
|
2835
|
+
try {
|
|
2836
|
+
({ values } = parseArgs({
|
|
2837
|
+
args,
|
|
2838
|
+
allowPositionals: false,
|
|
2839
|
+
strict: true,
|
|
2840
|
+
options: {
|
|
2841
|
+
help: { type: 'boolean', short: 'h' },
|
|
2842
|
+
json: { type: 'boolean' },
|
|
2843
|
+
'out-dir': { type: 'string' },
|
|
2844
|
+
apply: { type: 'boolean' },
|
|
2845
|
+
'dry-run': { type: 'boolean' },
|
|
2846
|
+
'reuse-manifest': { type: 'boolean' },
|
|
2847
|
+
limit: { type: 'string' },
|
|
2848
|
+
'page-size': { type: 'string' },
|
|
2849
|
+
concurrency: { type: 'string' },
|
|
2850
|
+
},
|
|
2851
|
+
}));
|
|
2852
|
+
}
|
|
2853
|
+
catch (error) {
|
|
2854
|
+
throw new CliError(String(error), {
|
|
2855
|
+
code: 'INVALID_ARGS',
|
|
2856
|
+
exitCode: 2,
|
|
2857
|
+
});
|
|
2858
|
+
}
|
|
2859
|
+
if (values.apply && values['dry-run']) {
|
|
2860
|
+
throw new CliError('Cannot pass both --apply and --dry-run.', {
|
|
2861
|
+
code: 'PROCESS_REFRESH_MODE_CONFLICT',
|
|
2862
|
+
exitCode: 2,
|
|
2863
|
+
});
|
|
2864
|
+
}
|
|
2865
|
+
const parseOptionalPositiveIntegerFlag = (value, label, code) => {
|
|
2866
|
+
if (typeof value !== 'string') {
|
|
2867
|
+
return null;
|
|
2868
|
+
}
|
|
2869
|
+
const parsed = Number.parseInt(value, 10);
|
|
2870
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
2871
|
+
throw new CliError(`Expected ${label} to be a positive integer.`, {
|
|
2872
|
+
code,
|
|
2873
|
+
exitCode: 2,
|
|
2874
|
+
});
|
|
2875
|
+
}
|
|
2876
|
+
return parsed;
|
|
2877
|
+
};
|
|
2878
|
+
return {
|
|
2879
|
+
help: Boolean(values.help),
|
|
2880
|
+
json: Boolean(values.json),
|
|
2881
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : '',
|
|
2882
|
+
apply: Boolean(values.apply),
|
|
2883
|
+
reuseManifest: Boolean(values['reuse-manifest']),
|
|
2884
|
+
limit: parseOptionalPositiveIntegerFlag(values.limit, '--limit', 'INVALID_PROCESS_REFRESH_LIMIT'),
|
|
2885
|
+
pageSize: parseOptionalPositiveIntegerFlag(values['page-size'], '--page-size', 'INVALID_PROCESS_REFRESH_PAGE_SIZE'),
|
|
2886
|
+
concurrency: parseOptionalPositiveIntegerFlag(values.concurrency, '--concurrency', 'INVALID_PROCESS_REFRESH_CONCURRENCY'),
|
|
2887
|
+
};
|
|
2888
|
+
}
|
|
2889
|
+
function parseProcessVerifyRowsFlags(args) {
|
|
2890
|
+
let values;
|
|
2891
|
+
try {
|
|
2892
|
+
({ values } = parseArgs({
|
|
2893
|
+
args,
|
|
2894
|
+
allowPositionals: false,
|
|
2895
|
+
strict: true,
|
|
2896
|
+
options: {
|
|
2897
|
+
help: { type: 'boolean', short: 'h' },
|
|
2898
|
+
json: { type: 'boolean' },
|
|
2899
|
+
'rows-file': { type: 'string' },
|
|
2900
|
+
'out-dir': { type: 'string' },
|
|
2901
|
+
},
|
|
2902
|
+
}));
|
|
2903
|
+
}
|
|
2904
|
+
catch (error) {
|
|
2905
|
+
throw new CliError(String(error), {
|
|
2906
|
+
code: 'INVALID_ARGS',
|
|
2907
|
+
exitCode: 2,
|
|
2908
|
+
});
|
|
2909
|
+
}
|
|
2910
|
+
return {
|
|
2911
|
+
help: Boolean(values.help),
|
|
2912
|
+
json: Boolean(values.json),
|
|
2913
|
+
rowsFile: typeof values['rows-file'] === 'string' ? values['rows-file'] : '',
|
|
2914
|
+
outDir: typeof values['out-dir'] === 'string' ? values['out-dir'] : '',
|
|
2915
|
+
};
|
|
2916
|
+
}
|
|
2309
2917
|
function parseProcessBatchBuildFlags(args) {
|
|
2310
2918
|
let values;
|
|
2311
2919
|
try {
|
|
@@ -2361,14 +2969,20 @@ export async function executeCli(argv, deps) {
|
|
|
2361
2969
|
const lifecyclemodelPublishImpl = deps.runLifecyclemodelPublishResultingProcessImpl ?? runLifecyclemodelPublishResultingProcess;
|
|
2362
2970
|
const lifecyclemodelValidateImpl = deps.runLifecyclemodelValidateBuildImpl ?? runLifecyclemodelValidateBuild;
|
|
2363
2971
|
const lifecyclemodelPublishBuildImpl = deps.runLifecyclemodelPublishBuildImpl ?? runLifecyclemodelPublishBuild;
|
|
2972
|
+
const lifecyclemodelSaveDraftImpl = deps.runLifecyclemodelSaveDraftImpl ?? runLifecyclemodelSaveDraft;
|
|
2973
|
+
const lifecyclemodelGraphImpl = deps.runLifecyclemodelGraphImpl ?? runLifecyclemodelGraph;
|
|
2364
2974
|
const lifecyclemodelOrchestrateImpl = deps.runLifecyclemodelOrchestrateImpl ?? runLifecyclemodelOrchestrate;
|
|
2365
2975
|
const processGetImpl = deps.runProcessGetImpl ?? runProcessGet;
|
|
2366
2976
|
const processListImpl = deps.runProcessListImpl ?? runProcessList;
|
|
2367
2977
|
const processAutoBuildImpl = deps.runProcessAutoBuildImpl ?? runProcessAutoBuild;
|
|
2368
2978
|
const processBatchBuildImpl = deps.runProcessBatchBuildImpl ?? runProcessBatchBuild;
|
|
2979
|
+
const processScopeStatisticsImpl = deps.runProcessScopeStatisticsImpl ?? runProcessScopeStatistics;
|
|
2980
|
+
const processRefreshReferencesImpl = deps.runProcessRefreshReferencesImpl ?? runProcessRefreshReferences;
|
|
2981
|
+
const processDedupReviewImpl = deps.runProcessDedupReviewImpl ?? runProcessDedupReview;
|
|
2369
2982
|
const processResumeBuildImpl = deps.runProcessResumeBuildImpl ?? runProcessResumeBuild;
|
|
2370
2983
|
const processPublishBuildImpl = deps.runProcessPublishBuildImpl ?? runProcessPublishBuild;
|
|
2371
2984
|
const processSaveDraftImpl = deps.runProcessSaveDraftImpl ?? runProcessSaveDraft;
|
|
2985
|
+
const processVerifyRowsImpl = deps.runProcessVerifyRowsImpl ?? runProcessVerifyRows;
|
|
2372
2986
|
const processReviewImpl = deps.runProcessReviewImpl ?? runProcessReview;
|
|
2373
2987
|
const flowReviewImpl = deps.runFlowReviewImpl ?? runFlowReview;
|
|
2374
2988
|
const lifecyclemodelReviewImpl = deps.runLifecyclemodelReviewImpl ?? runLifecyclemodelReview;
|
|
@@ -2385,6 +2999,8 @@ export async function executeCli(argv, deps) {
|
|
|
2385
2999
|
const flowApplyProcessFlowRepairsImpl = deps.runFlowApplyProcessFlowRepairsImpl ?? runFlowApplyProcessFlowRepairs;
|
|
2386
3000
|
const flowRegenProductImpl = deps.runFlowRegenProductImpl ?? runFlowRegenProduct;
|
|
2387
3001
|
const flowValidateProcessesImpl = deps.runFlowValidateProcessesImpl ?? runFlowValidateProcesses;
|
|
3002
|
+
const datasetValidateImpl = deps.runDatasetValidateImpl ?? runDatasetValidate;
|
|
3003
|
+
const datasetReferencesRewriteImpl = deps.runDatasetReferencesRewriteImpl ?? runDatasetReferencesRewrite;
|
|
2388
3004
|
if (flags.version) {
|
|
2389
3005
|
return { exitCode: 0, stdout: `${loadCliPackageVersion(import.meta.url)}\n`, stderr: '' };
|
|
2390
3006
|
}
|
|
@@ -2427,6 +3043,57 @@ export async function executeCli(argv, deps) {
|
|
|
2427
3043
|
stderr: '',
|
|
2428
3044
|
};
|
|
2429
3045
|
}
|
|
3046
|
+
if (command === 'dataset' && !subcommand) {
|
|
3047
|
+
return { exitCode: 0, stdout: `${renderDatasetHelp()}\n`, stderr: '' };
|
|
3048
|
+
}
|
|
3049
|
+
if (command === 'dataset' && subcommand === 'validate') {
|
|
3050
|
+
const datasetFlags = parseDatasetValidateFlags(commandArgs);
|
|
3051
|
+
if (datasetFlags.help) {
|
|
3052
|
+
return { exitCode: 0, stdout: `${renderDatasetValidateHelp()}\n`, stderr: '' };
|
|
3053
|
+
}
|
|
3054
|
+
const report = await datasetValidateImpl({
|
|
3055
|
+
inputPath: datasetFlags.inputPath,
|
|
3056
|
+
type: datasetFlags.type,
|
|
3057
|
+
outDir: datasetFlags.outDir,
|
|
3058
|
+
});
|
|
3059
|
+
return {
|
|
3060
|
+
exitCode: report.counts.invalid > 0 ? 1 : 0,
|
|
3061
|
+
stdout: stringifyJson(report, datasetFlags.json),
|
|
3062
|
+
stderr: '',
|
|
3063
|
+
};
|
|
3064
|
+
}
|
|
3065
|
+
if (command === 'dataset' && subcommand === 'references') {
|
|
3066
|
+
const action = commandArgs[0] ?? '';
|
|
3067
|
+
if (!action || action === '--help' || action === '-h') {
|
|
3068
|
+
return { exitCode: 0, stdout: `${renderDatasetReferencesHelp()}\n`, stderr: '' };
|
|
3069
|
+
}
|
|
3070
|
+
if (action !== 'rewrite') {
|
|
3071
|
+
throw new CliError("dataset references action must be 'rewrite'.", {
|
|
3072
|
+
code: 'INVALID_ARGS',
|
|
3073
|
+
exitCode: 2,
|
|
3074
|
+
});
|
|
3075
|
+
}
|
|
3076
|
+
const datasetFlags = parseDatasetReferencesRewriteFlags(commandArgs.slice(1));
|
|
3077
|
+
if (datasetFlags.help) {
|
|
3078
|
+
return { exitCode: 0, stdout: `${renderDatasetReferencesHelp()}\n`, stderr: '' };
|
|
3079
|
+
}
|
|
3080
|
+
const report = await datasetReferencesRewriteImpl({
|
|
3081
|
+
inputPath: datasetFlags.inputPath,
|
|
3082
|
+
from: datasetFlags.from,
|
|
3083
|
+
to: datasetFlags.to,
|
|
3084
|
+
types: datasetFlags.types,
|
|
3085
|
+
scope: datasetFlags.scope,
|
|
3086
|
+
outDir: datasetFlags.outDir,
|
|
3087
|
+
commit: datasetFlags.commit,
|
|
3088
|
+
env: deps.env,
|
|
3089
|
+
fetchImpl: deps.fetchImpl,
|
|
3090
|
+
});
|
|
3091
|
+
return {
|
|
3092
|
+
exitCode: report.status === 'completed_with_failures' ? 1 : 0,
|
|
3093
|
+
stdout: stringifyJson(report, datasetFlags.json),
|
|
3094
|
+
stderr: '',
|
|
3095
|
+
};
|
|
3096
|
+
}
|
|
2430
3097
|
if (command === 'lifecyclemodel' && !subcommand) {
|
|
2431
3098
|
return { exitCode: 0, stdout: `${renderLifecyclemodelHelp()}\n`, stderr: '' };
|
|
2432
3099
|
}
|
|
@@ -2530,6 +3197,49 @@ export async function executeCli(argv, deps) {
|
|
|
2530
3197
|
stderr: '',
|
|
2531
3198
|
};
|
|
2532
3199
|
}
|
|
3200
|
+
if (command === 'lifecyclemodel' && subcommand === 'save-draft') {
|
|
3201
|
+
const lifecyclemodelFlags = parseLifecyclemodelSaveDraftFlags(commandArgs);
|
|
3202
|
+
if (lifecyclemodelFlags.help) {
|
|
3203
|
+
return {
|
|
3204
|
+
exitCode: 0,
|
|
3205
|
+
stdout: `${renderLifecyclemodelSaveDraftHelp()}\n`,
|
|
3206
|
+
stderr: '',
|
|
3207
|
+
};
|
|
3208
|
+
}
|
|
3209
|
+
const report = await lifecyclemodelSaveDraftImpl({
|
|
3210
|
+
inputPath: lifecyclemodelFlags.inputPath,
|
|
3211
|
+
outDir: lifecyclemodelFlags.outDir,
|
|
3212
|
+
commit: lifecyclemodelFlags.commit,
|
|
3213
|
+
env: deps.env,
|
|
3214
|
+
fetchImpl: deps.fetchImpl,
|
|
3215
|
+
});
|
|
3216
|
+
return {
|
|
3217
|
+
exitCode: report.status === 'completed_with_failures' ? 1 : 0,
|
|
3218
|
+
stdout: stringifyJson(report, lifecyclemodelFlags.json),
|
|
3219
|
+
stderr: '',
|
|
3220
|
+
};
|
|
3221
|
+
}
|
|
3222
|
+
if (command === 'lifecyclemodel' && subcommand === 'graph') {
|
|
3223
|
+
const lifecyclemodelFlags = parseLifecyclemodelGraphFlags(commandArgs);
|
|
3224
|
+
if (lifecyclemodelFlags.help) {
|
|
3225
|
+
return {
|
|
3226
|
+
exitCode: 0,
|
|
3227
|
+
stdout: `${renderLifecyclemodelGraphHelp()}\n`,
|
|
3228
|
+
stderr: '',
|
|
3229
|
+
};
|
|
3230
|
+
}
|
|
3231
|
+
const report = await lifecyclemodelGraphImpl({
|
|
3232
|
+
inputPath: lifecyclemodelFlags.inputPath,
|
|
3233
|
+
outDir: lifecyclemodelFlags.outDir,
|
|
3234
|
+
format: lifecyclemodelFlags.format,
|
|
3235
|
+
checkConnections: lifecyclemodelFlags.checkConnections,
|
|
3236
|
+
});
|
|
3237
|
+
return {
|
|
3238
|
+
exitCode: report.status === 'completed_with_findings' ? 1 : 0,
|
|
3239
|
+
stdout: stringifyJson(report, lifecyclemodelFlags.json),
|
|
3240
|
+
stderr: '',
|
|
3241
|
+
};
|
|
3242
|
+
}
|
|
2533
3243
|
if (command === 'lifecyclemodel' && subcommand === 'orchestrate') {
|
|
2534
3244
|
const lifecyclemodelFlags = parseLifecyclemodelOrchestrateFlags(commandArgs);
|
|
2535
3245
|
if (lifecyclemodelFlags.help || !lifecyclemodelFlags.action) {
|
|
@@ -2617,6 +3327,52 @@ export async function executeCli(argv, deps) {
|
|
|
2617
3327
|
stderr: '',
|
|
2618
3328
|
};
|
|
2619
3329
|
}
|
|
3330
|
+
if (command === 'process' && subcommand === 'scope-statistics') {
|
|
3331
|
+
const processFlags = parseProcessScopeStatisticsFlags(commandArgs);
|
|
3332
|
+
if (processFlags.help) {
|
|
3333
|
+
return {
|
|
3334
|
+
exitCode: 0,
|
|
3335
|
+
stdout: `${renderProcessScopeStatisticsHelp()}\n`,
|
|
3336
|
+
stderr: '',
|
|
3337
|
+
};
|
|
3338
|
+
}
|
|
3339
|
+
const report = await processScopeStatisticsImpl({
|
|
3340
|
+
outDir: processFlags.outDir,
|
|
3341
|
+
scope: processFlags.scope,
|
|
3342
|
+
stateCodes: processFlags.stateCodes,
|
|
3343
|
+
pageSize: processFlags.pageSize,
|
|
3344
|
+
reuseSnapshot: processFlags.reuseSnapshot,
|
|
3345
|
+
env: deps.env,
|
|
3346
|
+
fetchImpl: deps.fetchImpl,
|
|
3347
|
+
});
|
|
3348
|
+
return {
|
|
3349
|
+
exitCode: 0,
|
|
3350
|
+
stdout: stringifyJson(report, processFlags.json),
|
|
3351
|
+
stderr: '',
|
|
3352
|
+
};
|
|
3353
|
+
}
|
|
3354
|
+
if (command === 'process' && subcommand === 'dedup-review') {
|
|
3355
|
+
const processFlags = parseProcessDedupReviewFlags(commandArgs);
|
|
3356
|
+
if (processFlags.help) {
|
|
3357
|
+
return {
|
|
3358
|
+
exitCode: 0,
|
|
3359
|
+
stdout: `${renderProcessDedupReviewHelp()}\n`,
|
|
3360
|
+
stderr: '',
|
|
3361
|
+
};
|
|
3362
|
+
}
|
|
3363
|
+
const report = await processDedupReviewImpl({
|
|
3364
|
+
inputPath: processFlags.inputPath,
|
|
3365
|
+
outDir: processFlags.outDir,
|
|
3366
|
+
skipRemote: processFlags.skipRemote,
|
|
3367
|
+
env: deps.env,
|
|
3368
|
+
fetchImpl: deps.fetchImpl,
|
|
3369
|
+
});
|
|
3370
|
+
return {
|
|
3371
|
+
exitCode: 0,
|
|
3372
|
+
stdout: stringifyJson(report, processFlags.json),
|
|
3373
|
+
stderr: '',
|
|
3374
|
+
};
|
|
3375
|
+
}
|
|
2620
3376
|
if (command === 'process' && subcommand === 'auto-build') {
|
|
2621
3377
|
const processFlags = parseProcessAutoBuildFlags(commandArgs);
|
|
2622
3378
|
if (processFlags.help) {
|
|
@@ -2696,6 +3452,50 @@ export async function executeCli(argv, deps) {
|
|
|
2696
3452
|
stderr: '',
|
|
2697
3453
|
};
|
|
2698
3454
|
}
|
|
3455
|
+
if (command === 'process' && subcommand === 'refresh-references') {
|
|
3456
|
+
const processFlags = parseProcessRefreshReferencesFlags(commandArgs);
|
|
3457
|
+
if (processFlags.help) {
|
|
3458
|
+
return {
|
|
3459
|
+
exitCode: 0,
|
|
3460
|
+
stdout: `${renderProcessRefreshReferencesHelp()}\n`,
|
|
3461
|
+
stderr: '',
|
|
3462
|
+
};
|
|
3463
|
+
}
|
|
3464
|
+
const report = await processRefreshReferencesImpl({
|
|
3465
|
+
outDir: processFlags.outDir,
|
|
3466
|
+
apply: processFlags.apply,
|
|
3467
|
+
reuseManifest: processFlags.reuseManifest,
|
|
3468
|
+
limit: processFlags.limit,
|
|
3469
|
+
pageSize: processFlags.pageSize,
|
|
3470
|
+
concurrency: processFlags.concurrency,
|
|
3471
|
+
env: deps.env,
|
|
3472
|
+
fetchImpl: deps.fetchImpl,
|
|
3473
|
+
});
|
|
3474
|
+
return {
|
|
3475
|
+
exitCode: report.status === 'completed_process_reference_refresh_with_errors' ? 1 : 0,
|
|
3476
|
+
stdout: stringifyJson(report, processFlags.json),
|
|
3477
|
+
stderr: '',
|
|
3478
|
+
};
|
|
3479
|
+
}
|
|
3480
|
+
if (command === 'process' && subcommand === 'verify-rows') {
|
|
3481
|
+
const processFlags = parseProcessVerifyRowsFlags(commandArgs);
|
|
3482
|
+
if (processFlags.help) {
|
|
3483
|
+
return {
|
|
3484
|
+
exitCode: 0,
|
|
3485
|
+
stdout: `${renderProcessVerifyRowsHelp()}\n`,
|
|
3486
|
+
stderr: '',
|
|
3487
|
+
};
|
|
3488
|
+
}
|
|
3489
|
+
const report = await processVerifyRowsImpl({
|
|
3490
|
+
rowsFile: processFlags.rowsFile,
|
|
3491
|
+
outDir: processFlags.outDir,
|
|
3492
|
+
});
|
|
3493
|
+
return {
|
|
3494
|
+
exitCode: report.invalid_count > 0 ? 1 : 0,
|
|
3495
|
+
stdout: stringifyJson(report, processFlags.json),
|
|
3496
|
+
stderr: '',
|
|
3497
|
+
};
|
|
3498
|
+
}
|
|
2699
3499
|
if (command === 'process' && subcommand === 'batch-build') {
|
|
2700
3500
|
const processFlags = parseProcessBatchBuildFlags(commandArgs);
|
|
2701
3501
|
if (processFlags.help) {
|