@juspay/neurolink 13.4.1 → 13.4.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/CHANGELOG.md CHANGED
@@ -1,8 +1,8 @@
1
- ## [13.4.1](https://github.com/juspay/neurolink/compare/v13.4.0...v13.4.1) (2026-10-18)
1
+ ## [13.4.3](https://github.com/juspay/neurolink/compare/v13.4.2...v13.4.3) (2026-10-18)
2
2
 
3
3
  ### Bug Fixes
4
4
 
5
- - **(decide):** cap OpenAI Decisions at its documented 200 questions ([bd95ea3](https://github.com/juspay/neurolink/commit/bd95ea3fbcd2d1647812df1d917f9de169ea709f))
5
+ - **(auth):** annotate the auth provider emitter so declarations stay valid on newer @types/node ([fbd53a3](https://github.com/juspay/neurolink/commit/fbd53a37317e71bf79e1fb59063bf3521464510f)), closes [#1999](https://github.com/juspay/neurolink/issues/1999)
6
6
 
7
7
  ## [11.2.3](https://github.com/juspay/neurolink/compare/v11.2.2...v11.2.3) (2026-08-19)
8
8
 
package/README.md CHANGED
@@ -928,7 +928,7 @@ const batcher = new RequestBatcher({ maxBatchSize: 10, maxWaitMs: 50 });
928
928
  | **Config** | `.env`, `.ini`, `.toml`, `.cfg` | Secure parsing |
929
929
  | **Media** | Images (PNG, JPEG, WebP, GIF), PDFs, CSV | Provider-specific formatting |
930
930
  | **Audio** | `.mp3`, `.wav`, `.m4a`, `.ogg`, `.flac`, `.webm` | Automatic transcription + duration metadata |
931
- | **Video** | `.mp4`, `.webm`, `.mov`, `.mkv`, `.avi` | Keyframe extraction, metadata, embedded subtitles |
931
+ | **Video** | `.mp4`, `.webm`, `.mov`, `.mkv`, `.avi` | Native to Gemini (up to 14 MB); else keyframes, metadata, subtitles |
932
932
  | **Archive** | `.zip`, `.tar`, `.gz`, `.tgz`, `.bz2`, `.tbz2`, `.jar`, `.xz`, `.txz`, `.zst`, `.tzst` | Entry listing, nested text extraction |
933
933
 
934
934
  ```typescript
@@ -950,8 +950,20 @@ const result = await neurolink.generate({
950
950
  ```
951
951
 
952
952
  Audio and video attach the same way. Audio is transcribed automatically before
953
- the model sees it; video is reduced to keyframes plus metadata and any embedded
954
- subtitle track:
953
+ the model sees it. Video takes one of two routes, depending on the provider:
954
+
955
+ - **Gemini (Google AI Studio and Vertex AI):** the clip itself goes into the
956
+ request, audio track included, so the model sees the motion and hears the
957
+ speech. The ceiling is 14 MB of source bytes for the whole request, shared
958
+ with every other inline image, PDF and audio part. A clip over that, in a
959
+ container Gemini does not read inline (MKV, for one), or longer than an hour
960
+ falls back to the keyframe route; `--debug` shows the reason. The clip has to
961
+ be a local path or a `Buffer`: a URL is fetched for keyframes only, without a
962
+ warning.
963
+ - **Every other provider:** the video is reduced to timestamped keyframes plus
964
+ metadata and any embedded subtitle track. Add `--transcribe-audio`
965
+ (`videoOptions.transcribeAudio`) to include a transcript of the speech. Leave
966
+ it off for Gemini, which hears the clip itself.
955
967
 
956
968
  ```typescript
957
969
  const result = await neurolink.generate({
@@ -959,22 +971,35 @@ const result = await neurolink.generate({
959
971
  text: "What was decided in this meeting, and who owns each action item?",
960
972
  files: [
961
973
  "./standup.mp3", // transcribed, then folded into the prompt
962
- "./demo.mp4", // keyframes + duration/codec metadata + subtitles
974
+ "./demo.mp4", // whole clip on Gemini; keyframes + metadata + subtitles elsewhere
963
975
  "./deck.pptx", // slides and speaker notes
964
976
  ],
965
977
  },
978
+ // Keyframe knobs; the clip itself is sent unchanged on Gemini.
979
+ videoOptions: {
980
+ frames: 16,
981
+ quality: 90,
982
+ format: "jpeg",
983
+ },
966
984
  });
967
985
  ```
968
986
 
969
987
  ```bash
970
988
  # Same thing from the CLI
971
989
  neurolink generate "Summarize this recording" --file ./standup.mp3
972
- neurolink generate "Describe what happens" --file ./demo.mp4
990
+ neurolink generate "Describe what happens" --file ./demo.mp4 --provider google-ai
991
+
992
+ # --video is the explicit flag; the others tune keyframes and the transcript
993
+ neurolink generate "What is said, and what is shown?" --video ./demo.mp4 \
994
+ --provider openai --video-frames 16 --video-quality 90 --transcribe-audio
973
995
  ```
974
996
 
975
- > Audio transcription needs a provider with a speech model configured (OpenAI
976
- > Whisper by default). Video keyframe extraction requires `ffmpeg` — install it
977
- > separately or rely on the bundled `ffmpeg-static`.
997
+ > Transcription runs on whichever speech-to-text engine is configured: OpenAI
998
+ > Whisper when `OPENAI_API_KEY` is set, another hosted engine, or the built-in
999
+ > local one (see the [transcribe guide](docs/features/transcribe.md)).
1000
+ > Keyframe extraction and `--transcribe-audio` need `ffmpeg`, from the optional
1001
+ > `ffmpeg-static` dependency or your `PATH`. Native Gemini delivery does not.
1002
+ > Full reference: **[Video Analysis guide](docs/features/video-analysis.md)**.
978
1003
 
979
1004
  **Key Features:**
980
1005
 
@@ -87,7 +87,7 @@ export declare abstract class BaseAuthProvider implements AuthProvider {
87
87
  protected sessionStorage: SessionStorage;
88
88
  protected sessionConfig: SessionConfig;
89
89
  protected rbacConfig: RBACConfig;
90
- protected emitter: EventEmitter<[never]>;
90
+ protected emitter: EventEmitter;
91
91
  constructor(config: AuthProviderConfig);
92
92
  /**
93
93
  * Validate and authenticate a token