@mindstudio-ai/agent 0.1.149 → 0.1.150
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/cli.js +12 -11
- package/dist/index.d.ts +38 -6
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/postinstall.js +12 -11
- package/llms.txt +19 -7
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -537,6 +537,15 @@ interface MindStudioModel {
|
|
|
537
537
|
maxResponseSize?: number;
|
|
538
538
|
/** Accepted input types for this model (text, imageUrl, videoUrl, etc.). */
|
|
539
539
|
inputs?: Record<string, unknown>[];
|
|
540
|
+
/**
|
|
541
|
+
* When the platform retires this model (`YYYY-MM-DD`, from 00:00 UTC). Until
|
|
542
|
+
* then it runs as itself; from then saved calls run on `replacedBy`.
|
|
543
|
+
*/
|
|
544
|
+
retiresOn?: string;
|
|
545
|
+
/** The model that runs in this one's place once it has retired. */
|
|
546
|
+
replacedBy?: string;
|
|
547
|
+
/** True once the model has retired: a call to it runs on `replacedBy`. */
|
|
548
|
+
retired?: boolean;
|
|
540
549
|
}
|
|
541
550
|
/** A lightweight AI model summary. */
|
|
542
551
|
interface MindStudioModelSummary {
|
|
@@ -547,6 +556,15 @@ interface MindStudioModelSummary {
|
|
|
547
556
|
type?: ModelType;
|
|
548
557
|
/** Comma-separated tags for the model. */
|
|
549
558
|
tags?: string;
|
|
559
|
+
/**
|
|
560
|
+
* When the platform retires this model (`YYYY-MM-DD`, from 00:00 UTC). Until
|
|
561
|
+
* then it runs as itself; from then saved calls run on `replacedBy`.
|
|
562
|
+
*/
|
|
563
|
+
retiresOn?: string;
|
|
564
|
+
/** The model that runs in this one's place once it has retired. */
|
|
565
|
+
replacedBy?: string;
|
|
566
|
+
/** True once the model has retired: a call to it runs on `replacedBy`. */
|
|
567
|
+
retired?: boolean;
|
|
550
568
|
}
|
|
551
569
|
/**
|
|
552
570
|
* Supported model type categories for filtering.
|
|
@@ -8551,6 +8569,8 @@ interface TranscribeAudioStepOutput {
|
|
|
8551
8569
|
language?: string;
|
|
8552
8570
|
/** Length of the transcribed audio, when the model reports it. */
|
|
8553
8571
|
durationSeconds?: number;
|
|
8572
|
+
/** The transcript as an SRT or WebVTT file, when `subtitles` was asked for in the model's config and the model returned segments to time it by. */
|
|
8573
|
+
subtitles?: string;
|
|
8554
8574
|
}
|
|
8555
8575
|
interface TrimMediaStepInput {
|
|
8556
8576
|
/** URL of the source audio or video file to trim */
|
|
@@ -11550,6 +11570,10 @@ interface StepMethods {
|
|
|
11550
11570
|
*
|
|
11551
11571
|
* @remarks
|
|
11552
11572
|
* - The text field contains the exact words to be spoken (not instructions).
|
|
11573
|
+
* - Voice, delivery and format are set through `speechModelOverride.config`, whose keys are the model's own (look a model up with its id). Delivery direction, where a model takes one, is never spoken: `styleInstruction` on gemini-3.8-flash-tts and gemini-3.8-flash-lite-tts, `instructions` on gpt-realtime-2.1-mini-tts, `voice_instruction` on seed-speech-tts-2.0, `emotion` on cartesia-sonic-3.6 and the MiniMax models.
|
|
11574
|
+
* - Tags in the text act at that point, in each vendor's own syntax: `[laughs]` or `[whispers]` on elevenlabs-tts with Eleven v4 or v3; `<laugh>`, `<sigh>` or `<whispers>` on the Gemini 3.8 models; `[laugh]`, `[pause]` or `<whisper>…</whisper>` on grok-voice-tts; `[laughter]` or `<emotion value="excited"/>` on cartesia-sonic-3.6; `[be happy and upbeat]` on inworld-tts-2.
|
|
11575
|
+
* - A dialogue between voices: set `$mode: 'dialogue'` and name each speaker (`speaker1_name`, `speaker1_voice`, `speaker2_name`, …), then write the text as a script, one `Name: line` per turn. Supported by elevenlabs-tts (Eleven v4 or v3, up to 4 speakers) and the Gemini 3.8 models (exactly 2).
|
|
11576
|
+
* - A text longer than a model takes in one request is spoken in pieces and joined, and then comes back as MP3 whatever format was asked for.
|
|
11553
11577
|
* - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.
|
|
11554
11578
|
*
|
|
11555
11579
|
* @example
|
|
@@ -11564,12 +11588,20 @@ interface StepMethods {
|
|
|
11564
11588
|
* Convert an audio file to text using a transcription model.
|
|
11565
11589
|
*
|
|
11566
11590
|
* @remarks
|
|
11567
|
-
* - The
|
|
11568
|
-
* -
|
|
11569
|
-
* -
|
|
11570
|
-
* - `
|
|
11571
|
-
* - `detectLanguage: 'yes'` — detect the
|
|
11572
|
-
* -
|
|
11591
|
+
* - The default model is elevenlabs-scribe-v2: speakers, word timings, key terms and redaction, at any length.
|
|
11592
|
+
* - The prompt field gives context (speaker names, domain) to OpenAI's and DeepInfra's models. Other models ignore it; give them `keyterms` instead.
|
|
11593
|
+
* - Options go in `transcriptionModelOverride.config`, and support varies by model:
|
|
11594
|
+
* - `language` — the spoken language as a code such as `en` or `es`; left out, the model detects it. Every model takes it. deepgram-nova-3 assumes `en` unless told, and also takes `multi` for speech that switches language (billed at its multilingual rate).
|
|
11595
|
+
* - `detectLanguage: 'yes'` — detect the language instead of assuming English (deepgram-nova-3 only).
|
|
11596
|
+
* - `includeSpeakers: 'yes'` — label each passage with a speaker. Supported by elevenlabs-scribe-v2, elevenlabs-scribe-v2-medical, deepgram-nova-3, grok-stt, voxtral-mini-transcribe-2 and gemini-3.5-transcribe; gpt-4o-transcribe-diarize always does. Scribe and Voxtral also switch `text` to a timestamped, speaker-labelled block format; Deepgram, Gemini and gpt-4o-transcribe-diarize to `Speaker N:` lines.
|
|
11597
|
+
* - `numSpeakers` — the most people talking, to help tell them apart (Scribe).
|
|
11598
|
+
* - `keyterms` — a list of names, products and terms the audio contains, so they're spelled right. Supported by gpt-transcribe, Scribe, deepgram-nova-3, grok-stt, voxtral-mini-transcribe-2 and gemini-3.5-transcribe. Billed as an add-on on Scribe and Deepgram.
|
|
11599
|
+
* - `redactPii: 'yes'` — replace names, phone numbers, addresses and other personal information with a label of what was there (Scribe, deepgram-nova-3). Billed as an add-on.
|
|
11600
|
+
* - `includeWordTimings: 'yes'` — add per-word timings and confidence inside each segment. Supported by Scribe, deepgram-nova-3, whisper-1, grok-stt, voxtral-mini-transcribe-2 and gemini-3.5-transcribe. Off by default because an hour of speech is roughly ten thousand words.
|
|
11601
|
+
* - `subtitles: 'srt' | 'vtt'` — also return the transcript as a subtitle file, in the `subtitles` output, timed by the segments. Any model that returns segments.
|
|
11602
|
+
* - gemini-3.5-transcribe can't take `keyterms` together with speakers, word timings or subtitles, and voxtral-mini-transcribe-2 can't take `language` together with word timings or subtitles; either asked for both is refused.
|
|
11603
|
+
* - The `segments` output carries timings, confidence and speakers as structured data, so there is no need to slice the audio up to recover them. It is populated by Scribe, deepgram-nova-3, grok-stt, whisper-1, gpt-4o-transcribe-diarize, voxtral-mini-transcribe-2 (unless given a language), gemini-3.5-transcribe (with word timings or subtitles) and the DeepInfra-served whisper and qwen models, and absent for models that return nothing but text (gpt-transcribe, gpt-4o-transcribe, gpt-4o-mini-transcribe, the DeepInfra-served voxtral models).
|
|
11604
|
+
* - A recording of any length can be transcribed. One longer than a model takes at once (OpenAI's and DeepInfra's models, Gemini) is transcribed in pieces and joined, its timings running from the start of the recording. Speakers can't be followed from one piece to the next, so with speakers on, such a recording is refused; Scribe and Deepgram label speakers at any length.
|
|
11573
11605
|
* - `confidence` is always 0..1 with higher meaning more confident, whichever model produced it.
|
|
11574
11606
|
*
|
|
11575
11607
|
* @example
|
package/dist/index.js
CHANGED
|
@@ -5107,16 +5107,16 @@ var stepMetadata = {
|
|
|
5107
5107
|
"textToSpeech": {
|
|
5108
5108
|
stepType: "textToSpeech",
|
|
5109
5109
|
description: "Generate an audio file from provided text using a speech model.",
|
|
5110
|
-
usageNotes: "- The text field contains the exact words to be spoken (not instructions).\n- In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.",
|
|
5110
|
+
usageNotes: "- The text field contains the exact words to be spoken (not instructions).\n- Voice, delivery and format are set through `speechModelOverride.config`, whose keys are the model's own (look a model up with its id). Delivery direction, where a model takes one, is never spoken: `styleInstruction` on gemini-3.8-flash-tts and gemini-3.8-flash-lite-tts, `instructions` on gpt-realtime-2.1-mini-tts, `voice_instruction` on seed-speech-tts-2.0, `emotion` on cartesia-sonic-3.6 and the MiniMax models.\n- Tags in the text act at that point, in each vendor's own syntax: `[laughs]` or `[whispers]` on elevenlabs-tts with Eleven v4 or v3; `<laugh>`, `<sigh>` or `<whispers>` on the Gemini 3.8 models; `[laugh]`, `[pause]` or `<whisper>\u2026</whisper>` on grok-voice-tts; `[laughter]` or `<emotion value=\"excited\"/>` on cartesia-sonic-3.6; `[be happy and upbeat]` on inworld-tts-2.\n- A dialogue between voices: set `$mode: 'dialogue'` and name each speaker (`speaker1_name`, `speaker1_voice`, `speaker2_name`, \u2026), then write the text as a script, one `Name: line` per turn. Supported by elevenlabs-tts (Eleven v4 or v3, up to 4 speakers) and the Gemini 3.8 models (exactly 2).\n- A text longer than a model takes in one request is spoken in pieces and joined, and then comes back as MP3 whatever format was asked for.\n- In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.",
|
|
5111
5111
|
inputSchema: { "type": "object", "properties": { "text": { "type": "string", "description": "The text to convert to speech" }, "intermediateAsset": { "type": "boolean" }, "speechModelOverride": { "type": "object", "properties": { "model": { "type": "string", "description": "Speech synthesis model identifier" }, "config": { "type": "object", "properties": {}, "required": [], "description": "Additional model-specific configuration" } }, "required": ["model"], "description": "Optional model configuration override. Uses the workflow's default speech model if not specified" } }, "required": ["text"] },
|
|
5112
5112
|
outputSchema: { "type": "object", "properties": { "audioUrl": { "type": "string", "description": "URL of the generated audio file" } }, "required": ["audioUrl"] }
|
|
5113
5113
|
},
|
|
5114
5114
|
"transcribeAudio": {
|
|
5115
5115
|
stepType: "transcribeAudio",
|
|
5116
5116
|
description: "Convert an audio file to text using a transcription model.",
|
|
5117
|
-
usageNotes: "- The
|
|
5117
|
+
usageNotes: "- The default model is elevenlabs-scribe-v2: speakers, word timings, key terms and redaction, at any length.\n- The prompt field gives context (speaker names, domain) to OpenAI's and DeepInfra's models. Other models ignore it; give them `keyterms` instead.\n- Options go in `transcriptionModelOverride.config`, and support varies by model:\n - `language` \u2014 the spoken language as a code such as `en` or `es`; left out, the model detects it. Every model takes it. deepgram-nova-3 assumes `en` unless told, and also takes `multi` for speech that switches language (billed at its multilingual rate).\n - `detectLanguage: 'yes'` \u2014 detect the language instead of assuming English (deepgram-nova-3 only).\n - `includeSpeakers: 'yes'` \u2014 label each passage with a speaker. Supported by elevenlabs-scribe-v2, elevenlabs-scribe-v2-medical, deepgram-nova-3, grok-stt, voxtral-mini-transcribe-2 and gemini-3.5-transcribe; gpt-4o-transcribe-diarize always does. Scribe and Voxtral also switch `text` to a timestamped, speaker-labelled block format; Deepgram, Gemini and gpt-4o-transcribe-diarize to `Speaker N:` lines.\n - `numSpeakers` \u2014 the most people talking, to help tell them apart (Scribe).\n - `keyterms` \u2014 a list of names, products and terms the audio contains, so they're spelled right. Supported by gpt-transcribe, Scribe, deepgram-nova-3, grok-stt, voxtral-mini-transcribe-2 and gemini-3.5-transcribe. Billed as an add-on on Scribe and Deepgram.\n - `redactPii: 'yes'` \u2014 replace names, phone numbers, addresses and other personal information with a label of what was there (Scribe, deepgram-nova-3). Billed as an add-on.\n - `includeWordTimings: 'yes'` \u2014 add per-word timings and confidence inside each segment. Supported by Scribe, deepgram-nova-3, whisper-1, grok-stt, voxtral-mini-transcribe-2 and gemini-3.5-transcribe. Off by default because an hour of speech is roughly ten thousand words.\n - `subtitles: 'srt' | 'vtt'` \u2014 also return the transcript as a subtitle file, in the `subtitles` output, timed by the segments. Any model that returns segments.\n- gemini-3.5-transcribe can't take `keyterms` together with speakers, word timings or subtitles, and voxtral-mini-transcribe-2 can't take `language` together with word timings or subtitles; either asked for both is refused.\n- The `segments` output carries timings, confidence and speakers as structured data, so there is no need to slice the audio up to recover them. It is populated by Scribe, deepgram-nova-3, grok-stt, whisper-1, gpt-4o-transcribe-diarize, voxtral-mini-transcribe-2 (unless given a language), gemini-3.5-transcribe (with word timings or subtitles) and the DeepInfra-served whisper and qwen models, and absent for models that return nothing but text (gpt-transcribe, gpt-4o-transcribe, gpt-4o-mini-transcribe, the DeepInfra-served voxtral models).\n- A recording of any length can be transcribed. One longer than a model takes at once (OpenAI's and DeepInfra's models, Gemini) is transcribed in pieces and joined, its timings running from the start of the recording. Speakers can't be followed from one piece to the next, so with speakers on, such a recording is refused; Scribe and Deepgram label speakers at any length.\n- `confidence` is always 0..1 with higher meaning more confident, whichever model produced it.",
|
|
5118
5118
|
inputSchema: { "type": "object", "properties": { "audioUrl": { "type": "string", "description": "URL of the audio file to transcribe" }, "prompt": { "type": "string", "description": "Optional context to improve transcription accuracy (e.g. language, speaker names, domain terms)" }, "transcriptionModelOverride": { "type": "object", "properties": { "model": { "type": "string", "description": "Audio transcription model identifier" }, "config": { "type": "object", "properties": {}, "required": [], "description": "Additional model-specific configuration" } }, "required": ["model"], "description": "Optional model configuration override. Uses the workflow's default transcription model if not specified" } }, "required": ["audioUrl", "prompt"] },
|
|
5119
|
-
outputSchema: { "type": "object", "properties": { "text": { "type": "string", "description": "The transcribed text from the audio file" }, "segments": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "number", "description": "Seconds from the start of the audio." }, "end": { "type": "number" }, "text": { "type": "string", "description": "The passage, spacing normalized." }, "confidence": { "type": "number", "description": "How sure the model was, always `0..1` with higher meaning more confident \u2014 whatever the provider reported.\n\nNormalizing this is the whole point of the type. Providers disagree on both the scale and the direction: Deepgram reports a probability in `0..1`, ElevenLabs and Whisper report a log probability in `(-inf, 0]`. Handing those through untouched would make `confidence < 0.5` mean opposite things depending on which model the caller happened to pick. Log probabilities are converted with `Math.exp`; probabilities pass through." }, "speaker": { "type": "string", "description": "Present only when diarization was asked for and the provider supports it." }, "language": { "type": "string", "description": "Present only for providers that report language per passage rather than per request. Most report it once for the whole audio \u2014 see `TranscriptionResponse.language`." }, "words": { "type": "array", "items": { "type": "object", "properties": { "text": { "type": "string" }, "start": { "type": "number", "description": "Seconds from the start of the audio." }, "end": { "type": "number" }, "confidence": { "type": "number", "description": "See the confidence convention on `TranscriptSegment`." }, "speaker": { "type": "string", "description": "Provider-assigned speaker id, present only when diarization was asked for." } }, "required": ["text"], "description": "One recognized token.\n\n`text` rather than `word` because an entry is not always a word \u2014 providers emit punctuation, spacing and non-speech audio events (laughter, footsteps) through the same channel." }, "description": "Word-level detail, when the caller asked for it (`includeWordTimings`). Off by default: an hour of speech is roughly ten thousand words, an order of magnitude more payload than the segments that contain them." } }, "required": ["start", "end", "text"], "description": "A contiguous passage of one speaker's speech, bounded in time.\n\nThe unit a review UI works in: short enough to seek to and highlight, coarse enough that an hour of audio is a few hundred entries rather than ten thousand." }, "description": "Timed passages with per-segment confidence, speaker attribution and optional word-level detail \u2014 see the step's usage notes for which models populate it. Absent for models that return nothing but text." }, "language": { "type": "string", "description": "Detected or declared language of the audio, when the model reports it." }, "durationSeconds": { "type": "number", "description": "Length of the transcribed audio, when the model reports it." } }, "required": ["text"] }
|
|
5119
|
+
outputSchema: { "type": "object", "properties": { "text": { "type": "string", "description": "The transcribed text from the audio file" }, "segments": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "number", "description": "Seconds from the start of the audio." }, "end": { "type": "number" }, "text": { "type": "string", "description": "The passage, spacing normalized." }, "confidence": { "type": "number", "description": "How sure the model was, always `0..1` with higher meaning more confident \u2014 whatever the provider reported.\n\nNormalizing this is the whole point of the type. Providers disagree on both the scale and the direction: Deepgram reports a probability in `0..1`, ElevenLabs and Whisper report a log probability in `(-inf, 0]`. Handing those through untouched would make `confidence < 0.5` mean opposite things depending on which model the caller happened to pick. Log probabilities are converted with `Math.exp`; probabilities pass through." }, "speaker": { "type": "string", "description": "Present only when diarization was asked for and the provider supports it." }, "language": { "type": "string", "description": "Present only for providers that report language per passage rather than per request. Most report it once for the whole audio \u2014 see `TranscriptionResponse.language`." }, "words": { "type": "array", "items": { "type": "object", "properties": { "text": { "type": "string" }, "start": { "type": "number", "description": "Seconds from the start of the audio." }, "end": { "type": "number" }, "confidence": { "type": "number", "description": "See the confidence convention on `TranscriptSegment`." }, "speaker": { "type": "string", "description": "Provider-assigned speaker id, present only when diarization was asked for." } }, "required": ["text"], "description": "One recognized token.\n\n`text` rather than `word` because an entry is not always a word \u2014 providers emit punctuation, spacing and non-speech audio events (laughter, footsteps) through the same channel." }, "description": "Word-level detail, when the caller asked for it (`includeWordTimings`). Off by default: an hour of speech is roughly ten thousand words, an order of magnitude more payload than the segments that contain them." } }, "required": ["start", "end", "text"], "description": "A contiguous passage of one speaker's speech, bounded in time.\n\nThe unit a review UI works in: short enough to seek to and highlight, coarse enough that an hour of audio is a few hundred entries rather than ten thousand." }, "description": "Timed passages with per-segment confidence, speaker attribution and optional word-level detail \u2014 see the step's usage notes for which models populate it. Absent for models that return nothing but text." }, "language": { "type": "string", "description": "Detected or declared language of the audio, when the model reports it." }, "durationSeconds": { "type": "number", "description": "Length of the transcribed audio, when the model reports it." }, "subtitles": { "type": "string", "description": "The transcript as an SRT or WebVTT file, when `subtitles` was asked for in the model's config and the model returned segments to time it by." } }, "required": ["text"] }
|
|
5120
5120
|
},
|
|
5121
5121
|
"trimMedia": {
|
|
5122
5122
|
stepType: "trimMedia",
|