akari-video 0.1.1 → 0.1.2
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akari-video",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "AKARI Video launcher CLI — start an AI-edited video project from any directory: scaffold, connection check, then hand over to Claude Code (or opencode). AKARI Video を opencode や Claude Code で、どのディレクトリからでも始めるための `akari` ランチャー CLI。接続確認(doctor)→ 未セットアップならプロジェクト雛形を作成 → AI エージェントを起動する。外部 npm 依存ゼロ(Node.js 組み込みモジュールのみ)。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -95,6 +95,16 @@
|
|
|
95
95
|
"$comment": "drop-folder タイトル正規化照合の来歴フィールド(2026-07-22 導入)。将来の照合経路追加時は enum を拡張する。",
|
|
96
96
|
"enum": ["title-normalized"]
|
|
97
97
|
},
|
|
98
|
+
"version": {
|
|
99
|
+
"$comment": "素材の版(2026-07-30 導入。data-contract-versioning 契約 §3 の宿題を果たすもの)。初版は 1。ツマミの削除・改名・type/unit 変更・範囲の縮小、クラス構造やスロットの変更は破壊的変更として bump する。ラベル・説明・tags・ai_usage の更新では上げない。harness/knob-diff.mjs が bump 漏れを検出する。",
|
|
100
|
+
"type": "integer",
|
|
101
|
+
"minimum": 1
|
|
102
|
+
},
|
|
103
|
+
"min_app_version": {
|
|
104
|
+
"$comment": "この素材が要求する AKARI Video の最低版(任意)。古い版で開いたら推測せず正直に止まるための宣言(versioning 契約 原則 3 と同型)。特定版を要求しない素材では省略する。",
|
|
105
|
+
"type": "string",
|
|
106
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
107
|
+
},
|
|
98
108
|
"remote": {
|
|
99
109
|
"type": "boolean",
|
|
100
110
|
"description": "true の場合、このエントリはカタログ上のみに存在し実体ファイルを持たない。source ブロックが実体の代わりになる(2026-07-14 追記・任意フィールド)。"
|
|
@@ -68,9 +68,9 @@ function validateMeta(value) {
|
|
|
68
68
|
"license",
|
|
69
69
|
"price",
|
|
70
70
|
];
|
|
71
|
-
// source / remote / matched_by は任意フィールド。
|
|
72
|
-
//
|
|
73
|
-
const optionalFields = ["source", "remote", "matched_by"];
|
|
71
|
+
// source / remote / matched_by / version / min_app_version は任意フィールド。
|
|
72
|
+
// 後方互換のため必須フィールドには加えない(version は 2026-07-30 導入で、既存エントリは未設定)。
|
|
73
|
+
const optionalFields = ["source", "remote", "matched_by", "version", "min_app_version"];
|
|
74
74
|
const allowedFields = [...requiredFields, ...optionalFields];
|
|
75
75
|
for (const field of requiredFields) {
|
|
76
76
|
if (!hasOwn(value, field)) fail(`必須フィールドがありません: ${field}`);
|
|
@@ -104,6 +104,16 @@ function validateMeta(value) {
|
|
|
104
104
|
fail("price は null または 0 以上の有限数である必要があります");
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
if (hasOwn(value, "version")) {
|
|
108
|
+
if (!Number.isInteger(value.version) || value.version < 1) {
|
|
109
|
+
fail("version は 1 以上の整数である必要があります");
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (hasOwn(value, "min_app_version") && !/^\d+\.\d+\.\d+$/.test(String(value.min_app_version))) {
|
|
114
|
+
fail("min_app_version は x.y.z 形式である必要があります");
|
|
115
|
+
}
|
|
116
|
+
|
|
107
117
|
const matchedByValues = new Set(["title-normalized"]);
|
|
108
118
|
if (hasOwn(value, "matched_by") && !matchedByValues.has(value.matched_by)) {
|
|
109
119
|
fail(`matched_by は ${[...matchedByValues].join(" / ")} のいずれかである必要があります`);
|