aienvmp 0.1.62 → 0.1.63

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/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.63
4
+
5
+ - Compressed plain `aienvmp status` output into a 5-line AI/human decision view.
6
+ - Added `aienvmp status --verbose` for detailed command hints without cluttering the default path.
7
+ - Added a reusable `renderStatusText` helper for stable status text formatting.
8
+ - Kept JSON/status artifacts unchanged so AI consumers retain the full preflight contract.
9
+ - Updated CLI help to explain the compact default and verbose detail mode.
10
+ - Updated README command guidance for default, artifact, and verbose status usage.
11
+ - Added regression tests for compact default output, verbose output, and exact status text shape.
12
+
3
13
  ## 0.1.62
4
14
 
5
15
  - Added a compact `collaboration` block to the shared preflight/status contract for multi-agent environment coordination.
package/README.md CHANGED
@@ -82,7 +82,9 @@ Snippets point each AI to `status`, `summary.md`, `context --json`, intent, and
82
82
 
83
83
  ```bash
84
84
  aienvmp sync # update env map, status, summary, SBOM, dashboard
85
- aienvmp status --write # refresh compact AI status
85
+ aienvmp status # 5-line env decision
86
+ aienvmp status --write # refresh compact AI status artifact
87
+ aienvmp status --verbose # show command details
86
88
  aienvmp summary --write # refresh compact Markdown summary
87
89
  aienvmp context --json # AI decision contract
88
90
  aienvmp sbom --json # standalone light SBOM
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aienvmp",
3
- "version": "0.1.62",
3
+ "version": "0.1.63",
4
4
  "description": "AI-first environment maps and lightweight runtime SBOMs for shared development machines.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/cli.js CHANGED
@@ -112,7 +112,7 @@ function printUsage() {
112
112
  Usage:
113
113
  aienvmp sync [--dir .] [--json] [--quiet] [--deep] [--security]
114
114
  aienvmp context [--dir .] [--json]
115
- aienvmp status [--dir .] [--json] [--write] [--quiet]
115
+ aienvmp status [--dir .] [--json] [--write] [--quiet] [--verbose]
116
116
  aienvmp handoff [--dir .] [--json] [--record --actor agent:id]
117
117
  aienvmp checkpoint [--dir .] --actor agent:id --summary "what changed" [--target dependency] [--json]
118
118
  aienvmp plan [--dir .] [--json] [--write]
@@ -122,7 +122,7 @@ Usage:
122
122
 
123
123
  Common:
124
124
  aienvmp sync update AIENV.md, manifest, status, summary, SBOM, ledger, intents, and dashboard
125
- aienvmp status print one simple environment decision; --write saves .aienvmp/status.json
125
+ aienvmp status print a 5-line AI/human environment decision; --verbose shows command details
126
126
  aienvmp context print the AI preflight brief
127
127
  aienvmp handoff print the next-agent handoff summary
128
128
  aienvmp checkpoint record, sync, status, and handoff after an env change
@@ -21,16 +21,7 @@ export async function statusWorkspace(args) {
21
21
  if (args.json) {
22
22
  console.log(JSON.stringify(output, null, 2));
23
23
  } else if (!args.quiet) {
24
- console.log(`${output.state}: ${output.summary}`);
25
- console.log(`ai-readiness: ${output.aiReadiness?.level || "unknown"} - ${output.aiReadiness?.next || "Run aienvmp context --json for details."}`);
26
- console.log(`collaboration: ${output.collaboration?.status || "unknown"} - ${output.collaboration?.nextCommand || "aienvmp status --json"}`);
27
- console.log(`next: ${output.nextCommand}`);
28
- console.log(`ai: ${output.quickstart.readFirst} -> ${output.quickstart.detailCommand}`);
29
- console.log(`intent: ${output.intentTargets[0]?.command || output.commands.recordIntent}`);
30
- console.log(`checkpoint: ${output.commands.checkpoint}`);
31
- console.log(`handoff: ${output.nextAgent.handoffCommand}`);
32
- console.log(`strict: ${output.enforcement.recommendedCommand}`);
33
- if (artifact) console.log(`status: ${artifact}`);
24
+ console.log(renderStatusText(output, { verbose: args.verbose === true, artifact }));
34
25
  }
35
26
  return output;
36
27
  }
@@ -45,3 +36,37 @@ export async function writeStatusArtifact(dir, status) {
45
36
  export function buildStatus(manifest = {}, warnings = [], intents = [], timeline = []) {
46
37
  return buildPreflight(manifest, warnings, intents, timeline);
47
38
  }
39
+
40
+ export function renderStatusText(output = {}, options = {}) {
41
+ const counts = output.counts || {};
42
+ const readiness = output.aiReadiness?.level || "unknown";
43
+ const collaboration = output.collaboration?.status || "unknown";
44
+ const sbomRisk = output.sbomRisk?.level || "unknown";
45
+ const sbomScore = valueOrZero(output.sbomRisk?.score);
46
+ const detail = output.quickstart?.detailCommand || "aienvmp context --json";
47
+ const summary = output.artifacts?.summary || ".aienvmp/summary.md";
48
+ const lines = [
49
+ `${output.state || "unknown"}: ${output.summary || "Run aienvmp context --json for details."}`,
50
+ `ready: ${readiness} | collaboration: ${collaboration}`,
51
+ `sbom: ${sbomRisk} (${sbomScore}) | warnings: ${valueOrZero(counts.warnings)} | intents: ${valueOrZero(counts.openIntents)}`,
52
+ `next: ${output.nextCommand || "aienvmp status --json"}`,
53
+ `details: ${detail} | summary: ${summary}`
54
+ ];
55
+
56
+ if (options.verbose) {
57
+ lines.push(
58
+ `ai: ${output.quickstart?.readFirst || "aienvmp status --write"} -> ${detail}`,
59
+ `intent: ${output.intentTargets?.[0]?.command || output.commands?.recordIntent || "aienvmp intent --actor agent:id --action planned-change"}`,
60
+ `checkpoint: ${output.commands?.checkpoint || "aienvmp checkpoint --actor agent:id --summary what-changed --target environment"}`,
61
+ `handoff: ${output.nextAgent?.handoffCommand || "aienvmp handoff --record --actor agent:id"}`,
62
+ `strict: ${output.enforcement?.recommendedCommand || "aienvmp doctor --strict all"}`
63
+ );
64
+ }
65
+
66
+ if (options.artifact || output.artifact) lines.push(`status: ${options.artifact || output.artifact}`);
67
+ return lines.join("\n");
68
+ }
69
+
70
+ function valueOrZero(value) {
71
+ return Number.isFinite(Number(value)) ? Number(value) : 0;
72
+ }