@norskvideo/norsk-studio-alpha 1.27.0-2025-09-07-cf101e3f → 1.27.0-2025-09-17-ca470951

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.
Files changed (89) hide show
  1. package/client/info.js +2043 -30121
  2. package/client/style.css +22 -92
  3. package/lib/index.js +1 -1
  4. package/lib/index.js.map +1 -1
  5. package/lib/info.js +7 -17
  6. package/lib/info.js.map +1 -1
  7. package/lib/output.player/info.d.ts +8 -0
  8. package/lib/output.player/info.js +65 -0
  9. package/lib/output.player/info.js.map +1 -0
  10. package/lib/output.player/runtime.d.ts +42 -0
  11. package/lib/output.player/runtime.js +205 -0
  12. package/lib/output.player/runtime.js.map +1 -0
  13. package/lib/output.player/summary-view.d.ts +7 -0
  14. package/lib/output.player/summary-view.js +20 -0
  15. package/lib/output.player/summary-view.js.map +1 -0
  16. package/lib/{input.ndi → output.player}/types.d.ts +24 -5
  17. package/lib/{input.ndi → output.player}/types.js.map +1 -1
  18. package/lib/output.player/types.yaml +87 -0
  19. package/lib/output.recorder/runtime.js +1 -1
  20. package/lib/output.recorder/runtime.js.map +1 -1
  21. package/package.json +4 -4
  22. package/lib/input.decklink/info.d.ts +0 -3
  23. package/lib/input.decklink/info.js +0 -51
  24. package/lib/input.decklink/info.js.map +0 -1
  25. package/lib/input.decklink/runtime.d.ts +0 -12
  26. package/lib/input.decklink/runtime.js +0 -22
  27. package/lib/input.decklink/runtime.js.map +0 -1
  28. package/lib/input.decklink/types.d.ts +0 -23
  29. package/lib/input.decklink/types.js.map +0 -1
  30. package/lib/input.decklink/types.yaml +0 -32
  31. package/lib/input.ndi/info.d.ts +0 -3
  32. package/lib/input.ndi/info.js +0 -52
  33. package/lib/input.ndi/info.js.map +0 -1
  34. package/lib/input.ndi/runtime.d.ts +0 -24
  35. package/lib/input.ndi/runtime.js +0 -60
  36. package/lib/input.ndi/runtime.js.map +0 -1
  37. package/lib/input.ndi/source-selection.d.ts +0 -10
  38. package/lib/input.ndi/source-selection.js +0 -84
  39. package/lib/input.ndi/source-selection.js.map +0 -1
  40. package/lib/input.ndi/types.js +0 -3
  41. package/lib/input.ndi/types.yaml +0 -37
  42. package/lib/output.ndi/info.d.ts +0 -16
  43. package/lib/output.ndi/info.js +0 -63
  44. package/lib/output.ndi/info.js.map +0 -1
  45. package/lib/output.ndi/inline-view.d.ts +0 -6
  46. package/lib/output.ndi/inline-view.js +0 -12
  47. package/lib/output.ndi/inline-view.js.map +0 -1
  48. package/lib/output.ndi/runtime.d.ts +0 -14
  49. package/lib/output.ndi/runtime.js +0 -35
  50. package/lib/output.ndi/runtime.js.map +0 -1
  51. package/lib/output.ndi/types.d.ts +0 -56
  52. package/lib/output.ndi/types.js +0 -3
  53. package/lib/output.ndi/types.js.map +0 -1
  54. package/lib/output.ndi/types.source.yaml +0 -72
  55. package/lib/output.ndi/types.yaml +0 -77
  56. package/lib/processor.gemini-poc/info.d.ts +0 -8
  57. package/lib/processor.gemini-poc/info.js +0 -59
  58. package/lib/processor.gemini-poc/info.js.map +0 -1
  59. package/lib/processor.gemini-poc/runtime.d.ts +0 -38
  60. package/lib/processor.gemini-poc/runtime.js +0 -132
  61. package/lib/processor.gemini-poc/runtime.js.map +0 -1
  62. package/lib/processor.gemini-poc/types.d.ts +0 -23
  63. package/lib/processor.gemini-poc/types.js +0 -3
  64. package/lib/processor.gemini-poc/types.js.map +0 -1
  65. package/lib/processor.gemini-poc/types.yaml +0 -43
  66. package/lib/processor.mixMinus/info.d.ts +0 -7
  67. package/lib/processor.mixMinus/info.js +0 -40
  68. package/lib/processor.mixMinus/info.js.map +0 -1
  69. package/lib/processor.mixMinus/runtime.d.ts +0 -23
  70. package/lib/processor.mixMinus/runtime.js +0 -85
  71. package/lib/processor.mixMinus/runtime.js.map +0 -1
  72. package/lib/processor.mixMinus/types.d.ts +0 -18
  73. package/lib/processor.mixMinus/types.js +0 -3
  74. package/lib/processor.mixMinus/types.js.map +0 -1
  75. package/lib/processor.mixMinus/types.yaml +0 -19
  76. package/lib/processor.monetise/info.d.ts +0 -3
  77. package/lib/processor.monetise/info.js +0 -72
  78. package/lib/processor.monetise/info.js.map +0 -1
  79. package/lib/processor.monetise/runtime.d.ts +0 -62
  80. package/lib/processor.monetise/runtime.js +0 -219
  81. package/lib/processor.monetise/runtime.js.map +0 -1
  82. package/lib/processor.monetise/summary.d.ts +0 -7
  83. package/lib/processor.monetise/summary.js +0 -40
  84. package/lib/processor.monetise/summary.js.map +0 -1
  85. package/lib/processor.monetise/types.d.ts +0 -16
  86. package/lib/processor.monetise/types.js +0 -3
  87. package/lib/processor.monetise/types.js.map +0 -1
  88. package/lib/processor.monetise/types.yaml +0 -9
  89. /package/lib/{input.decklink → output.player}/types.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-selection.js","sourceRoot":"","sources":["../../src/input.ndi/source-selection.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1,37 +0,0 @@
1
- openapi: 3.0.0
2
- info:
3
- title: NDI Ingests
4
- version: 1.0.0
5
-
6
- paths:
7
- # Static paths (available at runtime and design time)
8
- /sources:
9
- get:
10
- summary: Return the currently available NDI sources
11
- description: Returns all discovered NDI sources
12
- x-route-type: static
13
- responses:
14
- 200:
15
- description: Successful operation
16
- content:
17
- application/json:
18
- schema:
19
- type: array
20
- description: A list of the sources available
21
- items:
22
- $ref: "#/components/schemas/ndiSource"
23
- components:
24
- schemas:
25
- ndiSource:
26
- type: object
27
- properties:
28
- name:
29
- type: string
30
- description: NDI Name
31
- url:
32
- type: string
33
- description: NDI Url
34
- required:
35
- - name
36
- - url
37
-
@@ -1,16 +0,0 @@
1
- import type { NdiOutputSettings } from "./runtime";
2
- import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
3
- export default function (R: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<NdiOutputSettings, {
4
- jitterBuffer: {
5
- target: number;
6
- value: number;
7
- percentage: number;
8
- };
9
- }, Record<string, never>, {
10
- type: "jitter-buffer-updated";
11
- buffer: {
12
- target: number;
13
- value: number;
14
- percentage: number;
15
- };
16
- }>;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = default_1;
7
- const jitter_buffer_inline_1 = require("@norskvideo/norsk-studio-built-ins/lib/shared/jitter-buffer-inline");
8
- const jitter_buffer_config_1 = __importDefault(require("@norskvideo/norsk-studio-built-ins/lib/shared/jitter-buffer-config"));
9
- const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
10
- const inline_view_1 = __importDefault(require("./inline-view"));
11
- function default_1(R) {
12
- const { defineComponent, All, } = R;
13
- return defineComponent({
14
- identifier: 'output.ndi',
15
- category: 'output',
16
- name: "NDI Egest",
17
- description: "This component outputs a single video and/or audio stream over NDI.",
18
- subscription: {
19
- accepts: {
20
- type: 'dynamic-streams',
21
- mode: 'any',
22
- streams: () => All.map((media) => ({ media }))
23
- },
24
- },
25
- runtime: {
26
- initialState: () => ({
27
- jitterBuffer: (0, jitter_buffer_inline_1.initialJitterBufferState)()
28
- }),
29
- handleEvent(ev, state) {
30
- const evType = ev.type;
31
- switch (evType) {
32
- case 'jitter-buffer-updated':
33
- state.jitterBuffer = ev.buffer;
34
- break;
35
- default:
36
- (0, util_1.assertUnreachable)(evType);
37
- }
38
- return { ...state };
39
- },
40
- inline: inline_view_1.default,
41
- metrics: []
42
- },
43
- display: (desc) => {
44
- return {
45
- name: desc.config.name,
46
- groups: desc.config.groups?.toString() ?? 'none',
47
- bufferDelayMs: desc.config.jitterBuffer?.bufferDelayMs?.toString() ?? 'none'
48
- };
49
- },
50
- configForm: {
51
- form: {
52
- name: { help: "The NDI name announced for this output", hint: { type: 'text' } },
53
- groups: { help: "The NDI groups that this output is a member of", hint: { type: 'text' } },
54
- jitterBuffer: (0, jitter_buffer_config_1.default)(R),
55
- notes: {
56
- help: "Additional notes about this component",
57
- hint: { type: 'text', optional: true }
58
- },
59
- }
60
- }
61
- });
62
- }
63
- //# sourceMappingURL=info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/output.ndi/info.ts"],"names":[],"mappings":";;;;;AAOA,4BA2DC;AAlED,6GAA8G;AAC9G,8HAAkG;AAGlG,mEAA6E;AAC7E,gEAAuC;AAEvC,mBAAwB,CAAe;IACrC,MAAM,EACJ,eAAe,EACf,GAAG,GACJ,GAAG,CAAC,CAAC;IACN,OAAO,eAAe,CAAoD;QACxE,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qEAAqE;QAElF,YAAY,EAAE;YAGZ,OAAO,EAAE;gBACP,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aAC/C;SACF;QACD,OAAO,EAAE;YACP,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBACnB,YAAY,EAAE,IAAA,+CAAwB,GAAE;aACzC,CAAC;YACF,WAAW,CAAC,EAAE,EAAE,KAAK;gBACnB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;gBACvB,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,uBAAuB;wBAC1B,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC;wBAC/B,MAAM;oBACR;wBACE,IAAA,wBAAiB,EAAC,MAAM,CAAC,CAAA;gBAC7B,CAAC;gBACD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;YACtB,CAAC;YACD,MAAM,EAAE,qBAAU;YAClB,OAAO,EAAE,EAER;SACF;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,MAAM;gBAChD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,MAAM;aAC7E,CAAA;QACH,CAAC;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,gDAAgD,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC1F,YAAY,EAAE,IAAA,8BAAgB,EAAC,CAAC,CAAC;gBACjC,KAAK,EAAE;oBACL,IAAI,EAAE,uCAAuC;oBAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACvC;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- import React from "react";
2
- import { NdiState } from "./runtime";
3
- declare function InlineView({ state }: {
4
- state: NdiState;
5
- }): React.JSX.Element;
6
- export default InlineView;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const jsx_runtime_1 = require("react/jsx-runtime");
7
- const jitter_buffer_inline_1 = __importDefault(require("@norskvideo/norsk-studio-built-ins/lib/shared/jitter-buffer-inline"));
8
- function InlineView({ state }) {
9
- return ((0, jsx_runtime_1.jsx)("div", { className: "srt-output", children: (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(jitter_buffer_inline_1.default, { ...state.jitterBuffer }) }) }));
10
- }
11
- exports.default = InlineView;
12
- //# sourceMappingURL=inline-view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inline-view.js","sourceRoot":"","sources":["../../src/output.ndi/inline-view.tsx"],"names":[],"mappings":";;;;;;AAEA,8HAAoG;AAEpG,SAAS,UAAU,CAAC,EAAE,KAAK,EAAuB;IAChD,OAAO,CACL,gCAAK,SAAS,EAAC,YAAY,YACzB,0CACE,uBAAC,8BAAkB,OAAK,KAAK,CAAC,YAAY,GAAI,GAC1C,GACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,UAAU,CAAC"}
@@ -1,14 +0,0 @@
1
- import { Norsk, NdiOutputSettings as SdkSettings } from '@norskvideo/norsk-sdk';
2
- import { OnCreated, ServerComponentDefinition, ServerComponentSchemas, StudioRuntime } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
- import { SimpleSinkWrapper } from '@norskvideo/norsk-studio/lib/extension/base-nodes';
4
- import type { components } from './types';
5
- export type NdiOutputSettings = components['schemas']['Config'] & Pick<SdkSettings, 'name' | 'groups'>;
6
- export type NdiState = components['schemas']['State'];
7
- export type NdiCommand = components['schemas']['Commands'];
8
- export type NdiEvent = components['schemas']['Events'];
9
- export type NdiComponent = SimpleSinkWrapper<NdiState, NdiCommand, NdiEvent>;
10
- export default class NdiOutputDefinition implements ServerComponentDefinition<NdiOutputSettings, NdiComponent, NdiState, NdiCommand, NdiEvent> {
11
- create(norsk: Norsk, cfg: NdiOutputSettings, cb: OnCreated<NdiComponent>, runtime: StudioRuntime<NdiState, NdiCommand, NdiEvent>): Promise<void>;
12
- handleMetricsUpdate(c: NdiComponent): Promise<void>;
13
- schemas(): Promise<ServerComponentSchemas>;
14
- }
@@ -1,35 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const base_nodes_1 = require("@norskvideo/norsk-studio/lib/extension/base-nodes");
7
- const jitter_buffer_inline_1 = require("@norskvideo/norsk-studio-built-ins/lib/shared/jitter-buffer-inline");
8
- const schemas_1 = require("../shared/schemas");
9
- const path_1 = __importDefault(require("path"));
10
- class NdiOutputDefinition {
11
- async create(norsk, cfg, cb, runtime) {
12
- const wrapper = new base_nodes_1.SimpleSinkWrapper(cfg.id, async () => {
13
- return await norsk.output.ndi(cfg);
14
- }, runtime.updates);
15
- await wrapper.initialised;
16
- cb(wrapper);
17
- }
18
- async handleMetricsUpdate(c) {
19
- const latest = c._updates?.latestMetrics();
20
- if (!latest)
21
- return;
22
- c._updates?.raiseEvent({
23
- type: 'jitter-buffer-updated',
24
- buffer: (0, jitter_buffer_inline_1.extractJitterBufferFromMetrics)(latest)
25
- });
26
- }
27
- async schemas() {
28
- return (0, schemas_1.schemaFromTypes)(path_1.default.join(__dirname, 'types.yaml'), {
29
- config: 'Config',
30
- state: 'State'
31
- });
32
- }
33
- }
34
- exports.default = NdiOutputDefinition;
35
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/output.ndi/runtime.ts"],"names":[],"mappings":";;;;;AAEA,kFAAsF;AACtF,6GAAoH;AACpH,+CAAoD;AACpD,gDAAwB;AAaxB,MAAqB,mBAAmB;IACtC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAAsB,EAAE,EAA2B,EAAE,OAAsD;QACpI,MAAM,OAAO,GAAG,IAAI,8BAAiB,CAAiC,GAAG,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YACvF,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACnB,MAAM,OAAO,CAAC,WAAW,CAAC;QAC1B,EAAE,CAAC,OAAO,CAAC,CAAC;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,CAAe;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC;YACrB,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,IAAA,qDAA8B,EAAC,MAAM,CAAC;SAC/C,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAA,yBAAe,EAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE;YACzD,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;CACF;AAxBD,sCAwBC"}
@@ -1,56 +0,0 @@
1
- export type paths = Record<string, never>;
2
- export type webhooks = Record<string, never>;
3
- export interface components {
4
- schemas: {
5
- Config: {
6
- id: string;
7
- displayName: string;
8
- notes?: string;
9
- name: string;
10
- groups?: string[];
11
- jitterBuffer?: {
12
- bufferDelayMs?: number;
13
- minPeriodMs?: number;
14
- maxPeriodMs?: number;
15
- windowDuration?: number;
16
- maxSlope?: number;
17
- };
18
- };
19
- State: {
20
- jitterBuffer: {
21
- target: number;
22
- value: number;
23
- percentage: number;
24
- };
25
- };
26
- JitterBufferState: {
27
- target: number;
28
- value: number;
29
- percentage: number;
30
- };
31
- Commands: Record<string, never>;
32
- Events: {
33
- type: "jitter-buffer-updated";
34
- buffer: {
35
- target: number;
36
- value: number;
37
- percentage: number;
38
- };
39
- };
40
- JitterBufferUpdatedEvent: {
41
- type: "jitter-buffer-updated";
42
- buffer: {
43
- target: number;
44
- value: number;
45
- percentage: number;
46
- };
47
- };
48
- };
49
- responses: never;
50
- parameters: never;
51
- requestBodies: never;
52
- headers: never;
53
- pathItems: never;
54
- }
55
- export type $defs = Record<string, never>;
56
- export type operations = Record<string, never>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/output.ndi/types.ts"],"names":[],"mappings":""}
@@ -1,72 +0,0 @@
1
- openapi: 3.0.0
2
- info:
3
- title: NDI Output
4
- version: 1.0.0
5
-
6
- paths: {}
7
-
8
- components:
9
- schemas:
10
- Config:
11
- type: object
12
- required:
13
- - id
14
- - displayName
15
- - name
16
- properties:
17
- id:
18
- type: string
19
- displayName:
20
- type: string
21
- notes:
22
- type: string
23
- name:
24
- type: string
25
- groups:
26
- type: array
27
- items:
28
- type: string
29
- jitterBuffer:
30
- $ref: '../../../core/src/types.yaml#/components/schemas/JitterBufferConfig'
31
-
32
- State:
33
- type: object
34
- required:
35
- - jitterBuffer
36
- properties:
37
- jitterBuffer:
38
- $ref: '#/components/schemas/JitterBufferState'
39
-
40
- JitterBufferState:
41
- type: object
42
- required:
43
- - target
44
- - value
45
- - percentage
46
- properties:
47
- target:
48
- type: number
49
- value:
50
- type: number
51
- percentage:
52
- type: number
53
-
54
- Commands:
55
- type: object
56
- additionalProperties: false
57
-
58
- Events:
59
- oneOf:
60
- - $ref: '#/components/schemas/JitterBufferUpdatedEvent'
61
-
62
- JitterBufferUpdatedEvent:
63
- type: object
64
- required:
65
- - type
66
- - buffer
67
- properties:
68
- type:
69
- type: string
70
- enum: ['jitter-buffer-updated']
71
- buffer:
72
- $ref: '#/components/schemas/JitterBufferState'
@@ -1,77 +0,0 @@
1
- # This file has been generated, please edit types.source.yaml instead
2
-
3
- openapi: 3.0.0
4
- info:
5
- title: NDI Output
6
- version: 1.0.0
7
- paths: {}
8
- components:
9
- schemas:
10
- Config:
11
- type: object
12
- required:
13
- - id
14
- - displayName
15
- - name
16
- properties:
17
- id:
18
- type: string
19
- displayName:
20
- type: string
21
- notes:
22
- type: string
23
- name:
24
- type: string
25
- groups:
26
- type: array
27
- items:
28
- type: string
29
- jitterBuffer:
30
- type: object
31
- properties:
32
- bufferDelayMs:
33
- type: number
34
- minPeriodMs:
35
- type: number
36
- maxPeriodMs:
37
- type: number
38
- windowDuration:
39
- type: number
40
- maxSlope:
41
- type: number
42
- State:
43
- type: object
44
- required:
45
- - jitterBuffer
46
- properties:
47
- jitterBuffer: &a1
48
- type: object
49
- required:
50
- - target
51
- - value
52
- - percentage
53
- properties:
54
- target:
55
- type: number
56
- value:
57
- type: number
58
- percentage:
59
- type: number
60
- JitterBufferState: *a1
61
- Commands:
62
- type: object
63
- additionalProperties: false
64
- Events:
65
- oneOf:
66
- - &a2
67
- type: object
68
- required:
69
- - type
70
- - buffer
71
- properties:
72
- type:
73
- type: string
74
- enum:
75
- - jitter-buffer-updated
76
- buffer: *a1
77
- JitterBufferUpdatedEvent: *a2
@@ -1,8 +0,0 @@
1
- import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
2
- export default function ({ defineComponent, }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<{
3
- id: string;
4
- displayName: string;
5
- systemInstruction: string;
6
- api: "live" | "traditional";
7
- notes?: string;
8
- }, object, object, object>;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- function default_1({ defineComponent, }) {
5
- return defineComponent({
6
- identifier: 'processor.gemini-poc',
7
- category: 'processor',
8
- name: "Gemini AI",
9
- description: "This component is a proof-of-concept of integrating Google Gemini AI into Norsk workflows.",
10
- subscription: {
11
- accepts: {
12
- type: 'simple-stream',
13
- audio: true,
14
- video: true
15
- },
16
- produces: {
17
- type: 'simple-stream',
18
- audio: true,
19
- video: true
20
- }
21
- },
22
- extraValidation: function (ctx) {
23
- const video = ctx.videoInputs();
24
- const audio = ctx.audioInputs();
25
- if (video.length > 1) {
26
- ctx.addError("Gemini AI cannot process multiple video streams");
27
- }
28
- if (audio.length > 1) {
29
- ctx.addError("Gemini AI cannot process multiple audio streams");
30
- }
31
- },
32
- display: (_desc) => {
33
- return {};
34
- },
35
- configForm: {
36
- form: {
37
- systemInstruction: {
38
- help: "The Gemini system instruction",
39
- hint: {
40
- type: 'text',
41
- defaultValue: "You are a sports commentator. I will send you video from a soccer match, and you are to commentate on it. When you have commentary, call the test_response function with the text."
42
- }
43
- },
44
- api: {
45
- help: "Use the Live or Traditional Gemini API. Live is better for streaming, but traditional gives more accurate timing information on events",
46
- hint: {
47
- type: "select",
48
- options: ["live", "traditional"].map((api) => { return { value: api, display: api }; }),
49
- }
50
- },
51
- notes: {
52
- help: "Notes about this component",
53
- hint: { type: 'text', optional: true }
54
- },
55
- }
56
- }
57
- });
58
- }
59
- //# sourceMappingURL=info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.gemini-poc/info.ts"],"names":[],"mappings":";;AAIA,4BA6DC;AA7DD,mBAAwB,EACtB,eAAe,GACF;IACb,OAAO,eAAe,CAAiB;QACrC,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,4FAA4F;QACzG,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACZ;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACZ;SACF;QACD,eAAe,EAAE,UAAS,GAAG;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAA;YACjE,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,EAIN,CAAA;QACH,CAAC;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,iBAAiB,EAAE;oBACjB,IAAI,EAAE,+BAA+B;oBACrC,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,YAAY,EAAE,sLAAsL;qBACrM;iBACF;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,yIAAyI;oBAC/I,IAAI,EACJ;wBACE,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAqD,EAAE,OAAO,EAAE,GAAa,EAAE,CAAA,CAAC,CAAC,CAAC;qBACnJ;iBACF;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,4BAA4B;oBAClC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACvC;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,38 +0,0 @@
1
- import { FunctionCallMetadata, GeminiProcessorNode, GeminiServerContent, Norsk } from '@norskvideo/norsk-sdk';
2
- import { CreatedMediaNode, OnCreated, RelatedMediaNodes, ServerComponentDefinition, ServerComponentSchemas, StudioComponentInputStream, StudioRuntime } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
- import { components } from './types';
4
- export type GeminiAIConfig = components['schemas']['GeminiAIConfig'];
5
- export type GeminiAIState = components['schemas']['GeminiAIState'];
6
- export type GeminiAICommand = components['schemas']['GeminiAICommands'];
7
- export type GeminiAIEvent = components['schemas']['GeminiAIEvents'];
8
- export default class GeminiAIDefinition implements ServerComponentDefinition<GeminiAIConfig, GeminiAINode, GeminiAIState, GeminiAICommand, GeminiAIEvent> {
9
- schemas(): Promise<ServerComponentSchemas>;
10
- create(norsk: Norsk, cfg: GeminiAIConfig, cb: OnCreated<GeminiAINode>, runtime: StudioRuntime<GeminiAIState, GeminiAICommand, GeminiAIEvent>): Promise<void>;
11
- }
12
- declare class GeminiAINode implements CreatedMediaNode {
13
- norsk: Norsk;
14
- cfg: GeminiAIConfig;
15
- initialised: Promise<void>;
16
- logger: GeminiLogger;
17
- gemini?: GeminiProcessorNode;
18
- runtime: StudioRuntime<GeminiAIState, GeminiAICommand, GeminiAIEvent>;
19
- t0: Date;
20
- constructor(norsk: Norsk, cfg: GeminiAIConfig, runtime: StudioRuntime<GeminiAIState, GeminiAICommand, GeminiAIEvent>);
21
- get id(): string;
22
- relatedMediaNodes: RelatedMediaNodes;
23
- textDetected(_callMetadata: FunctionCallMetadata, text: string): Promise<void>;
24
- jsonDetected(_callMetadata: FunctionCallMetadata, jsonString: string): Promise<void>;
25
- initialise(): Promise<void>;
26
- subscribe(sources: StudioComponentInputStream[]): Promise<void>;
27
- }
28
- export declare class GeminiLogger {
29
- id: string;
30
- t0: Date;
31
- inTurn: boolean;
32
- currentStr: string;
33
- runtime: StudioRuntime<GeminiAIState, GeminiAICommand, GeminiAIEvent>;
34
- constructor(id: string, runtime: StudioRuntime<GeminiAIState, GeminiAICommand, GeminiAIEvent>);
35
- logContent(content: GeminiServerContent): void;
36
- }
37
- export declare function exhaustiveCheck(a: never): never;
38
- export {};