@aikdna/kdna-cli 0.26.3 → 0.26.4
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/package.json +2 -2
- package/src/cmds/_common.js +1 -1
- package/src/cmds/demo.js +3 -0
- package/src/publish.js +13 -13
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aikdna/kdna-cli",
|
|
3
|
-
"version": "0.26.
|
|
4
|
-
"description": "KDNA CLI — runtime control plane for
|
|
3
|
+
"version": "0.26.4",
|
|
4
|
+
"description": "KDNA CLI — runtime control plane for inspecting, validating, planning, packing, unpacking, and loading local .kdna assets.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"bin": {
|
|
7
7
|
"kdna": "src/cli.js",
|
package/src/cmds/_common.js
CHANGED
|
@@ -57,7 +57,7 @@ Usage:
|
|
|
57
57
|
kdna init <name> Deprecated alias for kdna dev scaffold <name>
|
|
58
58
|
kdna dev scaffold <name> Scaffold a non-canonical dev source workspace
|
|
59
59
|
kdna dev validate <path> Validate a dev source directory
|
|
60
|
-
kdna dev pack <path> Build a dev-only
|
|
60
|
+
kdna dev pack <path> Build a dev-only diagnostic .kdna bundle
|
|
61
61
|
kdna dev unpack <path> Unpack .kdna into a dev source directory
|
|
62
62
|
kdna dev inspect <path> Inspect a dev source directory
|
|
63
63
|
kdna dev card <path> Display KDNA Card from a dev source directory
|
package/src/cmds/demo.js
CHANGED
|
@@ -52,6 +52,9 @@ function cmdDemo(args) {
|
|
|
52
52
|
process.stdout.write(` kdna inspect ${dest}\n`);
|
|
53
53
|
process.stdout.write(` kdna validate ${dest}\n`);
|
|
54
54
|
process.stdout.write(` kdna pack ${dest} ${dest}.kdna\n`);
|
|
55
|
+
process.stdout.write(` kdna validate ${dest}.kdna\n`);
|
|
56
|
+
process.stdout.write(` kdna plan-load ${dest}.kdna\n`);
|
|
57
|
+
process.stdout.write(` kdna load ${dest}.kdna --profile=compact --as=prompt\n`);
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
module.exports = { cmdDemo };
|
package/src/publish.js
CHANGED
|
@@ -175,9 +175,9 @@ function checkHumanLock(domainPath) {
|
|
|
175
175
|
if (cards.length === 0) return { passed: true, issues: [] };
|
|
176
176
|
|
|
177
177
|
for (const card of cards) {
|
|
178
|
-
// Rule 1:
|
|
178
|
+
// Rule 1: Legacy publish evidence requires Studio approval.
|
|
179
179
|
if (!card.status || !['locked', 'tested', 'published'].includes(card.status)) {
|
|
180
|
-
issues.push(`${card.type} "${card.id}" is not
|
|
180
|
+
issues.push(`${card.type} "${card.id}" is not approved for legacy publish evidence.`);
|
|
181
181
|
continue;
|
|
182
182
|
}
|
|
183
183
|
// Rule 2: Must have human_lock record
|
|
@@ -607,15 +607,15 @@ function publicKeyToScopeFormat(publicKeyPem) {
|
|
|
607
607
|
* kdna publish <file.kdna> — Publish an existing Studio-compiled asset.
|
|
608
608
|
*
|
|
609
609
|
* Publishing no longer packs arbitrary source directories. Source directories
|
|
610
|
-
* are non-canonical dev workspaces;
|
|
611
|
-
* compile/export pipelines.
|
|
610
|
+
* are non-canonical dev workspaces; release-evidence assets come from
|
|
611
|
+
* Studio-compatible compile/export pipelines.
|
|
612
612
|
*/
|
|
613
613
|
function cmdPublish(assetPath, args = []) {
|
|
614
614
|
const abs = path.resolve(assetPath);
|
|
615
615
|
if (!fs.existsSync(abs)) error(`Path not found: ${abs}`, EXIT.INPUT_ERROR);
|
|
616
616
|
if (fs.statSync(abs).isDirectory()) {
|
|
617
617
|
error(
|
|
618
|
-
'kdna publish only accepts existing .kdna assets. Source directories are non-canonical; use KDNA Studio compile/export, then run kdna publish <file.kdna
|
|
618
|
+
'kdna publish only accepts existing .kdna assets. Source directories are non-canonical; use KDNA Studio compile/export, then run kdna publish <file.kdna> for legacy publish compatibility.',
|
|
619
619
|
EXIT.INPUT_ERROR,
|
|
620
620
|
);
|
|
621
621
|
}
|
|
@@ -728,28 +728,28 @@ function validateAuthoringProvenance(manifest) {
|
|
|
728
728
|
);
|
|
729
729
|
}
|
|
730
730
|
if (!conformance || !conformance.spec_version) {
|
|
731
|
-
issues.push('
|
|
731
|
+
issues.push('release-evidence assets require authoring.conformance.spec_version');
|
|
732
732
|
}
|
|
733
733
|
}
|
|
734
|
-
if (highTrust && !authoring.compiler) issues.push('
|
|
734
|
+
if (highTrust && !authoring.compiler) issues.push('release-evidence assets require authoring.compiler');
|
|
735
735
|
if (highTrust && !authoring.compiler_version) {
|
|
736
|
-
issues.push('
|
|
736
|
+
issues.push('release-evidence assets require authoring.compiler_version');
|
|
737
737
|
}
|
|
738
738
|
if (highTrust && !authoring.compiled_at)
|
|
739
|
-
issues.push('
|
|
739
|
+
issues.push('release-evidence assets require authoring.compiled_at');
|
|
740
740
|
for (const field of ['asset_uid', 'project_uid', 'build_id', 'domain_id', 'content_digest']) {
|
|
741
741
|
if (highTrust && !authoring[field] && !manifest[field]) {
|
|
742
|
-
issues.push(`
|
|
742
|
+
issues.push(`release-evidence assets require ${field} in authoring provenance or manifest`);
|
|
743
743
|
}
|
|
744
744
|
}
|
|
745
745
|
if (highTrust && authoring.human_confirmed !== true) {
|
|
746
|
-
issues.push('
|
|
746
|
+
issues.push('release-evidence assets require authoring.human_confirmed = true');
|
|
747
747
|
}
|
|
748
748
|
if (highTrust && !Number.isInteger(authoring.human_lock_count)) {
|
|
749
|
-
issues.push('
|
|
749
|
+
issues.push('release-evidence assets require authoring.human_lock_count');
|
|
750
750
|
}
|
|
751
751
|
if (highTrust && Number.isInteger(authoring.human_lock_count) && authoring.human_lock_count < 1) {
|
|
752
|
-
issues.push('
|
|
752
|
+
issues.push('release-evidence assets require at least one Human Lock when that claim is made');
|
|
753
753
|
}
|
|
754
754
|
return issues;
|
|
755
755
|
}
|