akari-video 0.1.64 → 0.1.66
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 +1 -1
- package/vendor/.akari-capability-sources.json +2 -0
- package/vendor/docs/contract-2026-08-02-preview-parity.md +6 -0
- package/vendor/packages/akari-launcher/package.json +1 -1
- package/vendor/packages/edit-lint/src/edit-lint.mjs +5 -1
- package/vendor/packages/edit-store/lib/caption-display.d.ts +22 -0
- package/vendor/packages/edit-store/lib/caption-display.js +397 -93
- package/vendor/packages/edit-store/lib/caption-store.d.ts +16 -0
- package/vendor/packages/edit-store/lib/caption-store.js +89 -2
- package/vendor/packages/edit-store/lib/caption-window.d.ts +7 -1
- package/vendor/packages/edit-store/lib/caption-window.js +31 -3
- package/vendor/packages/edit-store/lib/generated/textstyle-catalog.js +1 -1
- package/vendor/packages/edit-store/lib/generation-meta-node.d.ts +11 -0
- package/vendor/packages/edit-store/lib/generation-meta-node.js +101 -0
- package/vendor/packages/edit-store/lib/generation-meta.d.ts +42 -0
- package/vendor/packages/edit-store/lib/generation-meta.js +33 -0
- package/vendor/packages/edit-store/lib/index.d.ts +1 -0
- package/vendor/packages/edit-store/lib/index.js +1 -0
- package/vendor/packages/edit-store/lib/webview-kernel.d.ts +1 -1
- package/vendor/packages/edit-store/lib/webview-kernel.js +268 -3
- package/vendor/packages/edit-store/package.json +1 -0
- package/vendor/packages/generate/README.md +12 -0
- package/vendor/packages/generate/package.json +11 -0
- package/vendor/packages/schemas/bin/refresh-gen-models-openapi.mjs +118 -0
- package/vendor/packages/schemas/bin/validate-captions.mjs +13 -1
- package/vendor/packages/schemas/bin/validate-gen-models.mjs +145 -0
- package/vendor/packages/schemas/bin/validate-generation-meta.mjs +75 -0
- package/vendor/packages/schemas/captions.schema.json +9 -2
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_grok-imagine-i2v.json +414 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_h3-i2v.json +401 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_h3-ref.json +421 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_kling-v3-pro-i2v.json +578 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_kling-v3-standard-i2v.json +578 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_nano-banana-pro-edit.json +463 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_seedance-2.0-i2v.json +406 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_seedance-2.0-ref.json +418 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_seedance-2.5-i2v.json +412 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_veo-3.1-flf.json +403 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_veo-3.1-ref.json +368 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_vidu-q3-i2v.json +360 -0
- package/vendor/packages/schemas/fixtures/gen-models/openapi/fal_wan-2.7-i2v.json +533 -0
- package/vendor/packages/schemas/fixtures/generation-meta/done.json +80 -0
- package/vendor/packages/schemas/fixtures/generation-meta/failed.json +18 -0
- package/vendor/packages/schemas/fixtures/generation-meta/generating.json +18 -0
- package/vendor/packages/schemas/fixtures/generation-meta/planned.json +25 -0
- package/vendor/packages/schemas/fixtures/generation-meta/stale.json +18 -0
- package/vendor/packages/schemas/fixtures/generation-meta/still.json +20 -0
- package/vendor/packages/schemas/gen-models.json +425 -0
- package/vendor/packages/schemas/gen-models.schema.json +207 -0
- package/vendor/packages/schemas/generation-meta.schema.json +170 -0
- package/vendor/packages/schemas/test/gen-models-drift.test.mjs +286 -0
- package/vendor/packages/schemas/test/gen-models.test.mjs +84 -0
- package/vendor/packages/schemas/test/generation-meta.test.mjs +72 -0
- package/vendor/packages/schemas/test/validate-captions.test.mjs +24 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akari-video",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.66",
|
|
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": {
|
|
@@ -91,6 +91,8 @@
|
|
|
91
91
|
"packages/frame-engine/package.json",
|
|
92
92
|
"packages/frame-engine/README.ja.md",
|
|
93
93
|
"packages/frame-engine/README.md",
|
|
94
|
+
"packages/generate/package.json",
|
|
95
|
+
"packages/generate/README.md",
|
|
94
96
|
"packages/gpu-export/package.json",
|
|
95
97
|
"packages/gpu-export/README.ja.md",
|
|
96
98
|
"packages/gpu-export/README.md",
|
|
@@ -137,6 +137,12 @@ finalFrameNumber **239**、lookahead hits **8**を要求する。
|
|
|
137
137
|
shell のプレビューでは DOM 層として提示し、書き出しでは同じ DOM 規約から overlay sheet を構成する。
|
|
138
138
|
器専用の字幕 HTML や出口専用の再レイアウトを持たない。
|
|
139
139
|
|
|
140
|
+
行用 `style_vars` は `packages/edit-store/src/caption-display.ts` の
|
|
141
|
+
`resolveCaptionLineStyleVars` / `mergeCaptionLineTextStyles` をカーネル単一定義とし、shell、Web UI、
|
|
142
|
+
render-cut、`display_policy` の 4 面が同じ関数を呼ぶ。`display_policy` 経路の stroke も
|
|
143
|
+
`-webkit-text-stroke` として `width_px × 2` を出し、`paint-order: stroke fill` で描く
|
|
144
|
+
(2026-09-13 裁定)。
|
|
145
|
+
|
|
140
146
|
active cue の判定は両プレビューとも**出力秒**で行う。source 秒の cue(`time_domain: "source"` と未宣言の
|
|
141
147
|
legacy)は共有カーネル `packages/edit-store/src/caption-clock.ts` の `normalizeCaptionClock` が cut map
|
|
142
148
|
で出力秒へ射影し、削除区間をまたぐ cue は 1 本ずつに分割する(`<id>-output-<n>`、元 id は
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akari-video",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.66",
|
|
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 組み込みモジュールのみ)。 [akari-video npm vendor: bin/akari.mjs is reference-only. These CLI entrypoints are not included in the akari-video npm package. Use `akari doctor --json` and run the path reported in `render_cut.path`. Full installations provide it in a monorepo checkout, ~/.akari/app, /Applications/AKARI Video.app/Contents/Resources/packages, or %LOCALAPPDATA%\\Programs\\@akari-videoshell\\resources\\packages.]",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -4086,7 +4086,7 @@ function validateCaptions(captions, edit, analysis, findings, paths, cutsEndSeco
|
|
|
4086
4086
|
continue;
|
|
4087
4087
|
}
|
|
4088
4088
|
const required = ["id", "start", "end", "text", "speaker", "sourceRef", "edited"];
|
|
4089
|
-
const optional = ["src", "time_domain", "words", "unrecognized", "style", "display_text", "display_fragments", "style_preset", "text_style"];
|
|
4089
|
+
const optional = ["src", "time_domain", "words", "unrecognized", "style", "display_text", "display_fragments", "display_timing", "style_preset", "text_style"];
|
|
4090
4090
|
for (const field of required) {
|
|
4091
4091
|
if (!Object.hasOwn(caption, field)) {
|
|
4092
4092
|
captionFinding(findings, "captions.schema", `${field} is required`, itemPath);
|
|
@@ -4180,6 +4180,10 @@ function validateCaptions(captions, edit, analysis, findings, paths, cutsEndSeco
|
|
|
4180
4180
|
if (Object.hasOwn(caption, "display_fragments") && !Array.isArray(caption.display_fragments)) {
|
|
4181
4181
|
captionFinding(findings, "captions.schema", "display_fragments must be an array when present", itemPath);
|
|
4182
4182
|
}
|
|
4183
|
+
if (Object.hasOwn(caption, "display_timing")
|
|
4184
|
+
&& caption.display_timing !== "full" && caption.display_timing !== "speech-tight") {
|
|
4185
|
+
captionFinding(findings, "captions.schema", 'display_timing must be "full" or "speech-tight" when present', itemPath);
|
|
4186
|
+
}
|
|
4183
4187
|
if (Object.hasOwn(caption, "style_preset")) {
|
|
4184
4188
|
if (typeof caption.style_preset !== "string"
|
|
4185
4189
|
|| !/^[a-z0-9][a-z0-9-]*$/.test(caption.style_preset)) {
|
|
@@ -43,6 +43,11 @@ export interface CaptionDisplayCue {
|
|
|
43
43
|
layout?: ResolvedCaptionLayout;
|
|
44
44
|
words?: CaptionDisplayWord[];
|
|
45
45
|
word_styles?: CaptionDisplayWordStyle[];
|
|
46
|
+
overflow?: CaptionDisplayOverflow;
|
|
47
|
+
}
|
|
48
|
+
export interface CaptionDisplayOverflow {
|
|
49
|
+
code: 'NO_WORD_BOUNDARY_SPLIT' | 'INVALID_MANUAL_FRAGMENTS';
|
|
50
|
+
units: number;
|
|
46
51
|
}
|
|
47
52
|
export interface CaptionDisplayWord {
|
|
48
53
|
start: number;
|
|
@@ -117,6 +122,13 @@ export declare class CaptionDisplayError extends Error {
|
|
|
117
122
|
constructor(code: string, message: string);
|
|
118
123
|
}
|
|
119
124
|
export declare function measureCaptionUnits(text: string): number;
|
|
125
|
+
export interface CaptionWordSpan {
|
|
126
|
+
start: number;
|
|
127
|
+
end: number;
|
|
128
|
+
wordLike: boolean;
|
|
129
|
+
}
|
|
130
|
+
/** 自動分割で採用してはいけない、Latin/数字または Segmenter 語の内部境界を判定する。 */
|
|
131
|
+
export declare function captionBreakBoundaryBlocked(text: string, boundary: number, wordSpans: readonly CaptionWordSpan[]): boolean;
|
|
120
132
|
export declare function joinCaptionLines(lines: string[], locale: string): string;
|
|
121
133
|
export declare function validateCaptionDisplayPolicy(value: unknown): CaptionDisplayPolicy;
|
|
122
134
|
export declare function resolveCaptionDisplay(captionsRoot: unknown, edit: UnknownRecord, options?: {
|
|
@@ -152,6 +164,7 @@ export declare function dedupeCaptionOccurrences<T extends {
|
|
|
152
164
|
export declare function splitCaptionFragments(text: string, policy: CaptionDisplayPolicy): {
|
|
153
165
|
fragments: string[];
|
|
154
166
|
boundaries: number[];
|
|
167
|
+
overflow?: CaptionDisplayOverflow;
|
|
155
168
|
};
|
|
156
169
|
export declare function foldCaptionLines(text: string, maxLineUnits: number, lines: number, locale?: string): string[];
|
|
157
170
|
export declare function scheduleCaptionFragments(start: number, end: number, fragments: string[], minimumSeconds: number): Array<{
|
|
@@ -160,6 +173,10 @@ export declare function scheduleCaptionFragments(start: number, end: number, fra
|
|
|
160
173
|
text: string;
|
|
161
174
|
}>;
|
|
162
175
|
export declare function mergeCaptionDisplayStyles(base: unknown, override: unknown): UnknownRecord | undefined;
|
|
176
|
+
/** Merge the snake_case captions.json line style vocabulary used by every renderer. */
|
|
177
|
+
export declare function mergeCaptionLineTextStyles(base: unknown, override: unknown): UnknownRecord | null;
|
|
178
|
+
export declare function usesPercentageBackground(background: unknown): boolean;
|
|
179
|
+
export declare function usesExtendedPerLineBackground(background: unknown): boolean;
|
|
163
180
|
/**
|
|
164
181
|
* zone 方式の px 系フィールドに掛ける scale(issue #40 §2)。`reference_height_px` が無ければ 1
|
|
165
182
|
* (既存出力はバイト同一)。あれば output.height / reference_height_px — 基準は高さ(文字サイズは
|
|
@@ -186,6 +203,11 @@ export declare function scaleCaptionPx(value: number, scale: number): number;
|
|
|
186
203
|
* 不正な anchor / vertical_align は未宣言として無視する(書き込み時検証済みが前提の防御)。
|
|
187
204
|
*/
|
|
188
205
|
export declare function captionAnchorPositionVars(anchorValue: unknown, positionValue: unknown, verticalAlignValue: unknown): Record<string, string>;
|
|
206
|
+
/** Resolve the complete snake_case captions.json line style vocabulary to CSS variables. */
|
|
207
|
+
export declare function resolveCaptionLineStyleVars(style: UnknownRecord | null | undefined, output: {
|
|
208
|
+
width: number;
|
|
209
|
+
height: number;
|
|
210
|
+
} | undefined): Record<string, string>;
|
|
189
211
|
export declare function resolveCaptionStyleForOutput(style: UnknownRecord, output: {
|
|
190
212
|
width: number;
|
|
191
213
|
height: number;
|