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 +53 -51
- package/dist/presets_v0.js +4 -1
- package/package.json +1 -1
- package/src/presets_v0.ts +8 -5
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
Стало (минимальный срез):
|
|
16
16
|
|
|
17
17
|
```
|
|
18
|
-
|
|
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
|
-
|
|
40
|
-
npx mova-claude-import
|
|
41
|
-
npx mova-claude-import control
|
|
42
|
-
npx mova-claude-import control
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
npx -y mova-claude-import
|
|
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
|
-
|
|
62
|
-
npx mova-claude-import --project
|
|
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
|
|
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
|
-
|
|
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
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Контроль (preview по умолчанию)
|
|
80
|
+
```
|
|
81
|
+
npx -y mova-claude-import@latest --project .\claude_profile --out .\out --zip
|
|
82
|
+
```
|
|
84
83
|
|
|
85
|
-
|
|
86
|
-
|
|
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
|
|
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
|
|
118
|
-
- сводка в `.mova/episodes
|
|
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
|
|
127
|
-
|
|
128
|
-
npx mova-claude-import observe
|
|
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
|
## Для автоматизации
|
package/dist/presets_v0.js
CHANGED
|
@@ -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
|
-
|
|
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
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
|
-
|
|
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();
|