@vodmal/vdx-cli 0.23.0 → 0.25.0

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 CHANGED
@@ -75,11 +75,13 @@ vdx init --stack node
75
75
  vdx test # → mise run test (which calls `vitest run` or whatever was detected)
76
76
 
77
77
  # 3. Ship a new minor release of a Node lib
78
- vdx publish minor # npm login if expired → bump package.json + lock → npm publish (OTP) → commit + tag → push → wait for the registry
78
+ vdx publish minor # npm login if expired → bump package.json + lock → npm publish (OTP or browser) → commit + tag → push → wait for the registry
79
79
 
80
- # 4. Start the agent here, continuing its last conversation (--new: a new one;
81
- # another machine's conversation is continued on that machine);
82
- # re-run to attach, --restart to apply a changed profile
80
+ # 4. Start the agent here, continuing its last conversation (--new: a new one,
81
+ # next to a running agent; another machine's conversation is continued on
82
+ # that machine);
83
+ # re-run to attach; an agent without the profile's flags is a question:
84
+ # Enter attaches as is, r restarts it; --restart applies a changed profile
83
85
  vdx ai
84
86
 
85
87
  # 5. The same on another machine (an ssh host with vdx), attaching from here
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vodmal/vdx-cli",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "vdx — unified lifecycle interface (up/down/build/test/check/fix) + versioned maturity audit with drift detection. Pairs with the vdx Claude Code plugin.",
5
5
  "keywords": [
6
6
  "vdx",
@@ -39,6 +39,9 @@
39
39
  "audit": "tsx src/index.ts audit",
40
40
  "smoke": "bash smoke.sh",
41
41
  "typecheck": "tsc --noEmit",
42
+ "format:check": "prettier --check .",
43
+ "check": "npm run typecheck && npm run format:check",
44
+ "fix": "prettier --write .",
42
45
  "test": "vitest run",
43
46
  "test:unit": "vitest run tests/unit",
44
47
  "coverage": "vitest run --coverage"
@@ -58,6 +61,7 @@
58
61
  "@types/marked-terminal": "^6.1.1",
59
62
  "@types/node": "^22.0.0",
60
63
  "@vitest/coverage-v8": "^4.1.7",
64
+ "prettier": "^3.9.10",
61
65
  "typescript": "^5.6.0",
62
66
  "vitest": "^4.1.7"
63
67
  },
@@ -11,7 +11,7 @@ schema_version: "0.3"
11
11
 
12
12
  metadata:
13
13
  name: vdx-rubric-vodmal
14
- version: "1.2.0"
14
+ version: "1.4.0"
15
15
  description: "Personal maturity rubric for multi-stack projects (vodmal)"
16
16
  owner: vodmal
17
17
  homepage: "https://github.com/vodmal/vdx-rubric"
@@ -35,7 +35,7 @@ axes:
35
35
 
36
36
  - id: lifecycle-interface
37
37
  class: critical
38
- description: "Стандартный словарь глаголов up/down/build/test/check/fix"
38
+ description: "Стандартный словарь глаголов up/down/build/test/check/fix (up/down — не у библиотек)"
39
39
  storage: level
40
40
  default_target: L4
41
41
  fact_sources: [mise.toml, composer.json, package.json, Makefile]
@@ -59,14 +59,39 @@ axes:
59
59
  - has_task: check
60
60
  - has_task: fix
61
61
  L3:
62
+ # v1.4.0: up/down — глаголы приложения. Библиотека (lib-intent, D12)
63
+ # выпускается, а не поднимается: от неё L3 требует только остальные четыре.
62
64
  requires:
63
65
  all_of:
64
- - has_task: up
65
- - has_task: down
66
66
  - has_task: build
67
67
  - has_task: test
68
68
  - has_task: check
69
69
  - has_task: fix
70
+ - any_of:
71
+ # lib-intent — проект заявляет, что публикует артефакт (O35).
72
+ # Одно определение на сет: release-artifact.applies_when — ссылка сюда.
73
+ - &lib_intent
74
+ any_of:
75
+ # Node-сторона: НЕ private И есть хоть один entry-point/publish-signal.
76
+ - all_of:
77
+ - has_file: package.json
78
+ - not:
79
+ config_value: { path: package.json, jsonpath: "private", equals: true }
80
+ - any_of:
81
+ - config_value: { path: package.json, jsonpath: "publishConfig", op: present }
82
+ - config_value: { path: package.json, jsonpath: "bin", op: present }
83
+ - config_value: { path: package.json, jsonpath: "main", op: present }
84
+ - config_value: { path: package.json, jsonpath: "exports", op: present }
85
+ - config_value: { path: package.json, jsonpath: "module", op: present }
86
+ # PHP-сторона: composer.json есть, name задан, type ≠ project (project = app).
87
+ - all_of:
88
+ - has_file: composer.json
89
+ - config_value: { path: composer.json, jsonpath: "name", op: present }
90
+ - not:
91
+ config_value: { path: composer.json, jsonpath: "type", op: equals, equals: "project" }
92
+ - all_of:
93
+ - has_task: up
94
+ - has_task: down
70
95
  L4:
71
96
  requires:
72
97
  any_of:
@@ -564,26 +589,9 @@ axes:
564
589
  applies_to: [node, php, ruby, python]
565
590
  # O35 (v0.3.1): ось применяется только если проект декларирует намерение
566
591
  # публиковать артефакт. Чистые app'ы (private:true в package.json или
567
- # composer type:project) → excluded.
568
- applies_when:
569
- any_of:
570
- # Node-сторона: НЕ private И есть хоть один entry-point/publish-signal.
571
- - all_of:
572
- - has_file: package.json
573
- - not:
574
- config_value: { path: package.json, jsonpath: "private", equals: true }
575
- - any_of:
576
- - config_value: { path: package.json, jsonpath: "publishConfig", op: present }
577
- - config_value: { path: package.json, jsonpath: "bin", op: present }
578
- - config_value: { path: package.json, jsonpath: "main", op: present }
579
- - config_value: { path: package.json, jsonpath: "exports", op: present }
580
- - config_value: { path: package.json, jsonpath: "module", op: present }
581
- # PHP-сторона: composer.json есть, name задан, type ≠ project (project = app).
582
- - all_of:
583
- - has_file: composer.json
584
- - config_value: { path: composer.json, jsonpath: "name", op: present }
585
- - not:
586
- config_value: { path: composer.json, jsonpath: "type", op: equals, equals: "project" }
592
+ # composer type:project) → excluded. Определение lib-intent — в
593
+ # lifecycle-interface.L3 (якорь, v1.4.0).
594
+ applies_when: *lib_intent
587
595
  storage: level
588
596
  default_target: L4
589
597
  fact_sources: