@aalis/api-media 0.13.0 → 0.13.1

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/dist/index.d.ts CHANGED
@@ -48,7 +48,7 @@ export interface DescribeInput {
48
48
  /**
49
49
  * 追加约束提示(可选):在 base prompt 与 context 之后追加,
50
50
  * 语义是"再加一条要求",例如 "请重点描述左上角"。
51
- * ⚠️ 不要把另一段完整 prompt 塞进 hint,会与 base 冲突;那种场景请用 basePrompt。
51
+ * ⚠️ 不要把另一段完整 prompt 放入 hint,会与 base 冲突;那种场景请用 basePrompt。
52
52
  */
53
53
  hint?: string;
54
54
  /**
@@ -92,6 +92,8 @@ export interface TranscribeInput {
92
92
  context?: string;
93
93
  /** 音频所在的会话:转写的模型调用按它记账(api-llm 的 ChatModelRequest.sessionId);不在会话里转写时不填 */
94
94
  sessionId?: string;
95
+ /** 中止信号:交给转写前的转码与转写(模型调用或 asr 的转写),中止时转写随之停下 */
96
+ signal?: AbortSignal;
95
97
  }
96
98
  export interface TranscribeResult {
97
99
  /** 完整文本 */
@@ -117,7 +119,7 @@ export interface MediaService {
117
119
  listProcessors(cap?: MediaCapability): MediaProcessor[];
118
120
  /** 描述:根据每个 attachment 的 kind/mime 自动选 processor */
119
121
  describe(attachments: MessageAttachment[], opts?: DescribeOptions): Promise<Array<string | undefined>>;
120
- /** 转写:单条音频 */
122
+ /** 转写:单条音频。转不出时为 undefined;调用方中止、提供方停用或停机时抛中止原因 */
121
123
  transcribe(attachment: MessageAttachment, opts?: TranscribeOptions): Promise<string | undefined>;
122
124
  /**
123
125
  * 一站式:处理整条 IncomingMessage 的所有 attachments,
@@ -183,15 +185,21 @@ export interface DescribeVideoOptions {
183
185
  hint?: string;
184
186
  /** 本地缓存路径(避免重新下载) */
185
187
  localPath?: string;
188
+ /** 中止信号:调用方不再要结果时(停用、回合中止等)下载、抽帧、转写与识别随之停下 */
189
+ signal?: AbortSignal;
186
190
  }
187
191
  export interface DescribeOptions {
188
192
  hint?: string;
189
193
  maxTokens?: number;
190
194
  /** 强制使用某个 processor(processor name 或 LLM ModelRef) */
191
195
  prefer?: string | ModelRef;
196
+ /** 中止信号:调用方不再要结果时识别随之停下 */
197
+ signal?: AbortSignal;
192
198
  }
193
199
  export interface TranscribeOptions {
194
200
  language?: string;
201
+ /** 中止信号:调用方不再要结果时下载、转码与转写随之停下 */
202
+ signal?: AbortSignal;
195
203
  }
196
204
  export interface MediaProcessReport {
197
205
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,4DAA4D;AAC5D,MAAM,MAAM,eAAe;AACzB,qBAAqB;AACnB,QAAQ;AACV;;;;;GAKG;GACD,OAAO;AACT,0CAA0C;GACxC,mBAAmB;AACrB,0BAA0B;GACxB,gBAAgB,CAAC;AAErB,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACzD;;;OAGG;IACH,UAAU,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB;IACnB,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAID,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,IAAI,CAAC;IACjD,uBAAuB;IACvB,cAAc,CAAC,GAAG,CAAC,EAAE,eAAe,GAAG,cAAc,EAAE,CAAC;IAExD,mDAAmD;IACnD,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACvG,cAAc;IACd,UAAU,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEjG;;;;;;OAMG;IACH,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAIlE;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9E;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9E;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnD;;;;;;OAMG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;IAC9D,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAChC,GAAG,CAAC,EAAE,eAAe,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAID,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,WAAW;QACnB;;;WAGG;QACH,iBAAiB,EAAE,CAAC,IAAI,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,kBAAkB,CAAA;SAAE,CAAC,CAAC;KAC9E;CACF;AAGD,eAAO,MAAM,KAAK,qEAAuC,CAAC;AAE1D,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+BAA+B;AAC/B,EAAE;AACF,2CAA2C;AAC3C,8CAA8C;AAC9C,qDAAqD;AACrD,qFAAqF;AACrF,4CAA4C;AAC5C,uEAAuE;AACvE,4BAA4B;AAC5B,EAAE;AACF,sEAAsE;AACtE,qGAAqG;AACrG,+DAA+D;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuO5C,oCAAoC;AACpC,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAe,OAAO,CAAC,CAAC;AAE1D,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+BAA+B;AAC/B,EAAE;AACF,2CAA2C;AAC3C,8CAA8C;AAC9C,qDAAqD;AACrD,qFAAqF;AACrF,4CAA4C;AAC5C,uEAAuE;AACvE,4BAA4B;AAC5B,EAAE;AACF,sEAAsE;AACtE,qGAAqG;AACrG,+DAA+D;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA+O5C,oCAAoC;AACpC,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAe,OAAO,CAAC,CAAC;AAE1D,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/api-media",
3
- "version": "0.13.0",
3
+ "version": "0.13.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,7 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@types/node": "^22.0.0",
31
31
  "typescript": "^5.7.0",
32
- "@aalis/core": "0.21.0"
32
+ "@aalis/core": "0.21.1"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "@aalis/core": ">=0.21.0 <1.0.0"