@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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aikdna/kdna-cli",
3
- "version": "0.26.3",
4
- "description": "KDNA CLI — runtime control plane for verifying, installing, loading, comparing, publishing, and auditing existing .kdna assets.",
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",
@@ -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 non-trusted .kdna bundle
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: Must be locked
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 locked. Human Lock required before publish.`);
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; trusted assets come from Studio-compatible
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('trusted assets require authoring.conformance.spec_version');
731
+ issues.push('release-evidence assets require authoring.conformance.spec_version');
732
732
  }
733
733
  }
734
- if (highTrust && !authoring.compiler) issues.push('trusted assets require authoring.compiler');
734
+ if (highTrust && !authoring.compiler) issues.push('release-evidence assets require authoring.compiler');
735
735
  if (highTrust && !authoring.compiler_version) {
736
- issues.push('trusted assets require authoring.compiler_version');
736
+ issues.push('release-evidence assets require authoring.compiler_version');
737
737
  }
738
738
  if (highTrust && !authoring.compiled_at)
739
- issues.push('trusted assets require authoring.compiled_at');
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(`trusted assets require ${field} in authoring provenance or manifest`);
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('trusted assets require authoring.human_confirmed = true');
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('trusted assets require authoring.human_lock_count');
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('trusted assets require at least one Human Lock');
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
  }