mova-claude-import 0.1.2 → 0.1.3

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
@@ -15,7 +15,7 @@
15
15
  Стало (минимальный срез):
16
16
 
17
17
  ```
18
- <project>/
18
+ .\project\
19
19
  CLAUDE.md
20
20
  .claude/
21
21
  settings.json
@@ -33,64 +33,65 @@
33
33
 
34
34
  ## Быстрый старт
35
35
 
36
- ### Recommended flow (control_v0)
37
-
38
- ```
39
- npx mova-claude-import init --out <dir>
40
- npx mova-claude-import control prefill --project <dir> --out <dir>
41
- npx mova-claude-import control apply --project <dir> --profile <dir>/mova/control_v0.json --mode apply
42
- npx mova-claude-import control check --project <dir> --profile <dir>/mova/control_v0.json
43
- ```
44
-
45
- ### У меня уже есть папка Claude Code‑проекта
46
-
47
- ```
48
- npx mova-claude-import --project <in> --out <out> --zip
49
- ```
50
-
51
- ### Quick start (existing Claude folder + preset)
52
-
53
- ```
54
- npx -y mova-claude-import@<version> preset list
55
- npx -y mova-claude-import@<version> control apply --preset safe_observable_v0 --project . --mode overlay
56
- ```
36
+ ### Recommended flow (control_v0)
37
+
38
+ ```
39
+ mkdir .\claude_profile -Force
40
+ npx -y mova-claude-import@latest init --out .\claude_profile
41
+ npx -y mova-claude-import@latest control prefill --project .\claude_profile --out .\prefill_out
42
+ npx -y mova-claude-import@latest control apply --project .\claude_profile --profile .\claude_profile\mova\control_v0.json --mode apply
43
+ npx -y mova-claude-import@latest control check --project .\claude_profile --profile .\claude_profile\mova\control_v0.json
44
+ ```
45
+
46
+ ### У меня уже есть папка Claude Code‑проекта
47
+
48
+ ```
49
+ npx -y mova-claude-import@latest --project .\claude_profile --out .\out --zip
50
+ ```
51
+
52
+ ### Quick start (existing Claude folder + preset)
53
+
54
+ ```
55
+ npx -y mova-claude-import@latest preset list
56
+ npx -y mova-claude-import@latest control apply --preset safe_observable_v0 --project . --mode overlay
57
+ ```
57
58
 
58
59
  Дальше используйте единый контрольный файл и выполните rebuild/import:
59
60
 
60
- ```
61
- <out>/mova/control_v0.json
62
- npx mova-claude-import --project <in> --out <out> --zip
63
- ```
61
+ ```
62
+ .\out\mova\control_v0.json
63
+ npx -y mova-claude-import@latest --project .\claude_project --out .\out --zip
64
+ ```
64
65
 
65
- ### Я хочу создать эталонный профиль с нуля (init)
66
-
67
- ```
68
- npx mova-claude-import init --out <dir> --zip
69
- ```
66
+ ### Я хочу создать эталонный профиль с нуля (init)
67
+
68
+ ```
69
+ npx -y mova-claude-import@latest init --out .\claude_profile --zip
70
+ ```
70
71
 
71
72
  Заполните единый контрольный файл:
72
73
 
73
- ```
74
- <dir>/mova/control_v0.json
75
- ```
74
+ ```
75
+ .\claude_profile\mova\control_v0.json
76
+ ```
76
77
 
77
78
  Затем выполните rebuild/import:
78
79
 
79
- ```
80
- npx mova-claude-import --project <dir> --out <out> --zip
81
- ```
82
-
83
- ### Контроль (preview по умолчанию)
80
+ ```
81
+ npx -y mova-claude-import@latest --project .\claude_profile --out .\out --zip
82
+ ```
84
83
 
85
- ```
86
- npx mova-claude-import control apply --project <in> --profile <out>/claude_control_profile_v0.json --mode apply
87
- ```
84
+ ### Контроль (preview по умолчанию)
85
+
86
+ ```
87
+ npx -y mova-claude-import@latest control apply --project .\claude_profile --profile .\prefill_out\claude_control_profile_v0.json --mode apply
88
+ ```
88
89
 
89
90
  ## Демо (60 секунд)
90
91
 
91
- ```
92
- npm run demo
93
- ```
92
+ ```
93
+ npm run demo
94
+ ```
94
95
 
95
96
  ## Где настраивается контроль
96
97
 
@@ -108,14 +109,14 @@ Schema: `schemas/mova.control_v0.schema.json`.
108
109
  - `mova/claude_import/v0/*` — отчёты импорта и контроля качества
109
110
  - `mova/claude_control/v0/runs/*` — планы/отчёты control‑команд
110
111
  - `.mova/episodes/index.jsonl` — индекс наблюдаемости
111
- - `.mova/episodes/<run_id>/summary.json` — краткая сводка последнего прогона
112
+ - `.mova/episodes/run_.../summary.json` — краткая сводка последнего прогона
112
113
 
113
114
  ## Наблюдаемость (Observability Writer)
114
115
 
115
116
  Writer включается из `mova/control_v0.json` и через hooks пишет эпизоды:
116
117
 
117
- - события в `.mova/episodes/<run_id>/events.jsonl`
118
- - сводка в `.mova/episodes/<run_id>/summary.json`
118
+ - события в `.mova/episodes/run_.../events.jsonl`
119
+ - сводка в `.mova/episodes/run_.../summary.json`
119
120
  - индекс прогонов в `.mova/episodes/index.jsonl`
120
121
 
121
122
  Отключить можно через `observability.enable=false` в `mova/control_v0.json`.
@@ -123,9 +124,10 @@ Writer включается из `mova/control_v0.json` и через hooks пи
123
124
  Минимальные команды:
124
125
 
125
126
  ```
126
- npx mova-claude-import observe list --project <dir>
127
- npx mova-claude-import observe tail --project <dir> --run <id>
128
- npx mova-claude-import observe summary --project <dir> --run <id>
127
+ npx -y mova-claude-import@latest observe list --project .\claude_profile
128
+ $run = (Get-ChildItem .\claude_profile\.mova\episodes -Directory | Sort-Object Name -Descending | Select-Object -First 1).Name
129
+ npx -y mova-claude-import@latest observe tail --project .\claude_profile --run $run
130
+ npx -y mova-claude-import@latest observe summary --project .\claude_profile --run $run
129
131
  ```
130
132
 
131
133
  ## Для автоматизации
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
3
4
  async function exists(p) {
4
5
  try {
5
6
  await fs.stat(p);
@@ -10,7 +11,9 @@ async function exists(p) {
10
11
  }
11
12
  }
12
13
  export function getPresetsRoot() {
13
- return path.join(process.cwd(), "presets");
14
+ const here = path.dirname(fileURLToPath(import.meta.url));
15
+ const pkgRoot = path.resolve(here, "..");
16
+ return path.join(pkgRoot, "presets");
14
17
  }
15
18
  export async function listPresets() {
16
19
  const root = getPresetsRoot();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mova-claude-import",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "node --test",
package/src/presets_v0.ts CHANGED
@@ -1,5 +1,6 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
3
4
 
4
5
  type PresetInfo = {
5
6
  name: string;
@@ -17,9 +18,11 @@ async function exists(p: string): Promise<boolean> {
17
18
  }
18
19
  }
19
20
 
20
- export function getPresetsRoot(): string {
21
- return path.join(process.cwd(), "presets");
22
- }
21
+ export function getPresetsRoot(): string {
22
+ const here = path.dirname(fileURLToPath(import.meta.url));
23
+ const pkgRoot = path.resolve(here, "..");
24
+ return path.join(pkgRoot, "presets");
25
+ }
23
26
 
24
27
  export async function listPresets(): Promise<string[]> {
25
28
  const root = getPresetsRoot();