space-data-module-sdk 0.2.0 → 0.2.5

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 (104) hide show
  1. package/README.md +74 -2
  2. package/package.json +10 -3
  3. package/schemas/PluginInvokeRequest.fbs +18 -0
  4. package/schemas/PluginInvokeResponse.fbs +30 -0
  5. package/schemas/PluginManifest.fbs +7 -0
  6. package/schemas/TypedArenaBuffer.fbs +23 -2
  7. package/src/bundle/codec.js +24 -0
  8. package/src/compiler/compileModule.js +274 -106
  9. package/src/compiler/emceptionNode.js +217 -0
  10. package/src/compiler/flatcSupport.js +66 -0
  11. package/src/compiler/invokeGlue.js +884 -0
  12. package/src/compliance/pluginCompliance.js +241 -1
  13. package/src/generated/orbpro/invoke/plugin-invoke-request.d.ts +51 -0
  14. package/src/generated/orbpro/invoke/plugin-invoke-request.d.ts.map +1 -0
  15. package/src/generated/orbpro/invoke/plugin-invoke-request.js +131 -0
  16. package/src/generated/orbpro/invoke/plugin-invoke-request.js.map +1 -0
  17. package/src/generated/orbpro/invoke/plugin-invoke-request.ts +173 -0
  18. package/src/generated/orbpro/invoke/plugin-invoke-response.d.ts +76 -0
  19. package/src/generated/orbpro/invoke/plugin-invoke-response.d.ts.map +1 -0
  20. package/src/generated/orbpro/invoke/plugin-invoke-response.js +184 -0
  21. package/src/generated/orbpro/invoke/plugin-invoke-response.js.map +1 -0
  22. package/src/generated/orbpro/invoke/plugin-invoke-response.ts +243 -0
  23. package/src/generated/orbpro/invoke.d.ts +3 -0
  24. package/src/generated/orbpro/invoke.d.ts.map +1 -0
  25. package/src/generated/orbpro/invoke.js +5 -0
  26. package/src/generated/orbpro/invoke.js.map +1 -0
  27. package/src/generated/orbpro/invoke.ts +6 -0
  28. package/src/generated/orbpro/manifest/accepted-type-set.d.ts +4 -4
  29. package/src/generated/orbpro/manifest/accepted-type-set.d.ts.map +1 -1
  30. package/src/generated/orbpro/manifest/accepted-type-set.js +18 -11
  31. package/src/generated/orbpro/manifest/accepted-type-set.js.map +1 -1
  32. package/src/generated/orbpro/manifest/build-artifact.d.ts +1 -1
  33. package/src/generated/orbpro/manifest/build-artifact.d.ts.map +1 -1
  34. package/src/generated/orbpro/manifest/build-artifact.js +28 -15
  35. package/src/generated/orbpro/manifest/build-artifact.js.map +1 -1
  36. package/src/generated/orbpro/manifest/capability-kind.d.ts +1 -1
  37. package/src/generated/orbpro/manifest/capability-kind.d.ts.map +1 -1
  38. package/src/generated/orbpro/manifest/capability-kind.js +1 -1
  39. package/src/generated/orbpro/manifest/capability-kind.js.map +1 -1
  40. package/src/generated/orbpro/manifest/drain-policy.d.ts.map +1 -1
  41. package/src/generated/orbpro/manifest/drain-policy.js.map +1 -1
  42. package/src/generated/orbpro/manifest/host-capability.d.ts +2 -2
  43. package/src/generated/orbpro/manifest/host-capability.d.ts.map +1 -1
  44. package/src/generated/orbpro/manifest/host-capability.js +19 -11
  45. package/src/generated/orbpro/manifest/host-capability.js.map +1 -1
  46. package/src/generated/orbpro/manifest/invoke-surface.d.ts +8 -0
  47. package/src/generated/orbpro/manifest/invoke-surface.d.ts.map +1 -0
  48. package/src/generated/orbpro/manifest/invoke-surface.js +11 -0
  49. package/src/generated/orbpro/manifest/invoke-surface.js.map +1 -0
  50. package/src/generated/orbpro/manifest/invoke-surface.ts +11 -0
  51. package/src/generated/orbpro/manifest/method-manifest.d.ts +6 -6
  52. package/src/generated/orbpro/manifest/method-manifest.d.ts.map +1 -1
  53. package/src/generated/orbpro/manifest/method-manifest.js +33 -16
  54. package/src/generated/orbpro/manifest/method-manifest.js.map +1 -1
  55. package/src/generated/orbpro/manifest/plugin-family.d.ts.map +1 -1
  56. package/src/generated/orbpro/manifest/plugin-family.js.map +1 -1
  57. package/src/generated/orbpro/manifest/plugin-manifest.d.ts +10 -2
  58. package/src/generated/orbpro/manifest/plugin-manifest.d.ts.map +1 -1
  59. package/src/generated/orbpro/manifest/plugin-manifest.js +48 -9
  60. package/src/generated/orbpro/manifest/plugin-manifest.js.map +1 -1
  61. package/src/generated/orbpro/manifest/plugin-manifest.ts +322 -491
  62. package/src/generated/orbpro/manifest/port-manifest.d.ts +4 -4
  63. package/src/generated/orbpro/manifest/port-manifest.d.ts.map +1 -1
  64. package/src/generated/orbpro/manifest/port-manifest.js +26 -13
  65. package/src/generated/orbpro/manifest/port-manifest.js.map +1 -1
  66. package/src/generated/orbpro/manifest/protocol-spec.d.ts +1 -1
  67. package/src/generated/orbpro/manifest/protocol-spec.d.ts.map +1 -1
  68. package/src/generated/orbpro/manifest/protocol-spec.js +28 -15
  69. package/src/generated/orbpro/manifest/protocol-spec.js.map +1 -1
  70. package/src/generated/orbpro/manifest/timer-spec.d.ts +1 -1
  71. package/src/generated/orbpro/manifest/timer-spec.d.ts.map +1 -1
  72. package/src/generated/orbpro/manifest/timer-spec.js +27 -16
  73. package/src/generated/orbpro/manifest/timer-spec.js.map +1 -1
  74. package/src/generated/orbpro/manifest.d.ts +13 -0
  75. package/src/generated/orbpro/manifest.d.ts.map +1 -0
  76. package/src/generated/orbpro/manifest.js +1 -0
  77. package/src/generated/orbpro/manifest.js.map +1 -0
  78. package/src/generated/orbpro/manifest.ts +16 -0
  79. package/src/generated/orbpro/stream/buffer-mutability.d.ts.map +1 -1
  80. package/src/generated/orbpro/stream/buffer-mutability.js.map +1 -1
  81. package/src/generated/orbpro/stream/buffer-ownership.d.ts.map +1 -1
  82. package/src/generated/orbpro/stream/buffer-ownership.js.map +1 -1
  83. package/src/generated/orbpro/stream/flat-buffer-type-ref.d.ts +22 -5
  84. package/src/generated/orbpro/stream/flat-buffer-type-ref.d.ts.map +1 -1
  85. package/src/generated/orbpro/stream/flat-buffer-type-ref.js +107 -17
  86. package/src/generated/orbpro/stream/flat-buffer-type-ref.js.map +1 -1
  87. package/src/generated/orbpro/stream/flat-buffer-type-ref.ts +126 -2
  88. package/src/generated/orbpro/stream/payload-wire-format.d.ts +8 -0
  89. package/src/generated/orbpro/stream/payload-wire-format.d.ts.map +1 -0
  90. package/src/generated/orbpro/stream/payload-wire-format.js +11 -0
  91. package/src/generated/orbpro/stream/payload-wire-format.js.map +1 -0
  92. package/src/generated/orbpro/stream/payload-wire-format.ts +11 -0
  93. package/src/generated/orbpro/stream/typed-arena-buffer.d.ts +4 -4
  94. package/src/generated/orbpro/stream/typed-arena-buffer.d.ts.map +1 -1
  95. package/src/generated/orbpro/stream/typed-arena-buffer.js +42 -24
  96. package/src/generated/orbpro/stream/typed-arena-buffer.js.map +1 -1
  97. package/src/index.d.ts +83 -5
  98. package/src/index.js +3 -0
  99. package/src/invoke/codec.js +278 -0
  100. package/src/invoke/index.js +9 -0
  101. package/src/manifest/codec.js +10 -2
  102. package/src/manifest/index.js +5 -2
  103. package/src/manifest/normalize.js +58 -0
  104. package/src/runtime/constants.js +12 -0
@@ -2,10 +2,12 @@ import { access, readFile, readdir } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
 
4
4
  import {
5
+ DefaultInvokeExports,
5
6
  DefaultManifestExports,
6
7
  DrainPolicy,
7
8
  ExternalInterfaceDirection,
8
9
  ExternalInterfaceKind,
10
+ InvokeSurface,
9
11
  RuntimeTarget,
10
12
  } from "../runtime/constants.js";
11
13
 
@@ -52,6 +54,7 @@ const RecommendedCapabilitySet = new Set(RecommendedCapabilityIds);
52
54
  const RecommendedRuntimeTargets = Object.freeze(Object.values(RuntimeTarget));
53
55
  const RecommendedRuntimeTargetSet = new Set(RecommendedRuntimeTargets);
54
56
  const DrainPolicySet = new Set(Object.values(DrainPolicy));
57
+ const InvokeSurfaceSet = new Set(Object.values(InvokeSurface));
55
58
  const ExternalInterfaceDirectionSet = new Set(
56
59
  Object.values(ExternalInterfaceDirection),
57
60
  );
@@ -104,6 +107,42 @@ function isNonEmptyString(value) {
104
107
  return typeof value === "string" && value.trim().length > 0;
105
108
  }
106
109
 
110
+ function hasNonEmptyByteSequence(value) {
111
+ if (typeof value === "string") {
112
+ return value.trim().length > 0;
113
+ }
114
+ if (Array.isArray(value)) {
115
+ return value.length > 0;
116
+ }
117
+ if (ArrayBuffer.isView(value)) {
118
+ return value.byteLength > 0;
119
+ }
120
+ return false;
121
+ }
122
+
123
+ function normalizePayloadWireFormatName(value) {
124
+ if (value === undefined || value === null || value === "") {
125
+ return "flatbuffer";
126
+ }
127
+ if (value === 0) {
128
+ return "flatbuffer";
129
+ }
130
+ if (value === 1) {
131
+ return "aligned-binary";
132
+ }
133
+ const normalized = String(value)
134
+ .trim()
135
+ .toLowerCase()
136
+ .replace(/_/g, "-");
137
+ if (normalized === "flatbuffer") {
138
+ return "flatbuffer";
139
+ }
140
+ if (normalized === "aligned-binary") {
141
+ return "aligned-binary";
142
+ }
143
+ return null;
144
+ }
145
+
107
146
  function validateStringField(issues, value, location, label) {
108
147
  if (!isNonEmptyString(value)) {
109
148
  pushIssue(issues, "error", "missing-string", `${label} must be a non-empty string.`, location);
@@ -130,18 +169,93 @@ function validateIntegerField(issues, value, location, label, { min = null } = {
130
169
  return true;
131
170
  }
132
171
 
172
+ function validateOptionalIntegerField(
173
+ issues,
174
+ value,
175
+ location,
176
+ label,
177
+ options = {},
178
+ ) {
179
+ if (value === undefined || value === null) {
180
+ return true;
181
+ }
182
+ return validateIntegerField(issues, value, location, label, options);
183
+ }
184
+
133
185
  function validateAllowedType(type, issues, location) {
134
186
  if (!type || typeof type !== "object" || Array.isArray(type)) {
135
187
  pushIssue(issues, "error", "invalid-type-record", "Allowed type entries must be objects.", location);
136
188
  return;
137
189
  }
190
+ const wireFormat = normalizePayloadWireFormatName(type.wireFormat);
191
+ if (wireFormat === null) {
192
+ pushIssue(
193
+ issues,
194
+ "error",
195
+ "invalid-wire-format",
196
+ 'Allowed type wireFormat must be "flatbuffer" or "aligned-binary".',
197
+ `${location}.wireFormat`,
198
+ );
199
+ return;
200
+ }
201
+ if (wireFormat === "aligned-binary") {
202
+ if (type.acceptsAnyFlatbuffer === true) {
203
+ pushIssue(
204
+ issues,
205
+ "error",
206
+ "accepts-any-flatbuffer-format-conflict",
207
+ "acceptsAnyFlatbuffer can only be used with flatbuffer wireFormat.",
208
+ `${location}.acceptsAnyFlatbuffer`,
209
+ );
210
+ }
211
+ if (!isNonEmptyString(type.schemaName)) {
212
+ pushIssue(
213
+ issues,
214
+ "error",
215
+ "missing-aligned-schema-name",
216
+ "Aligned-binary allowed types must declare schemaName.",
217
+ `${location}.schemaName`,
218
+ );
219
+ }
220
+ if (!isNonEmptyString(type.rootTypeName)) {
221
+ pushIssue(
222
+ issues,
223
+ "error",
224
+ "missing-aligned-root-type-name",
225
+ "Aligned-binary allowed types must declare rootTypeName.",
226
+ `${location}.rootTypeName`,
227
+ );
228
+ }
229
+ validateOptionalIntegerField(
230
+ issues,
231
+ type.fixedStringLength,
232
+ `${location}.fixedStringLength`,
233
+ "Allowed type fixedStringLength",
234
+ { min: 0 },
235
+ );
236
+ validateIntegerField(
237
+ issues,
238
+ type.byteLength,
239
+ `${location}.byteLength`,
240
+ "Aligned-binary allowed type byteLength",
241
+ { min: 1 },
242
+ );
243
+ validateIntegerField(
244
+ issues,
245
+ type.requiredAlignment,
246
+ `${location}.requiredAlignment`,
247
+ "Aligned-binary allowed type requiredAlignment",
248
+ { min: 1 },
249
+ );
250
+ return;
251
+ }
138
252
  if (type.acceptsAnyFlatbuffer === true) {
139
253
  return;
140
254
  }
141
255
  if (
142
256
  !isNonEmptyString(type.schemaName) &&
143
257
  !isNonEmptyString(type.fileIdentifier) &&
144
- !isNonEmptyString(type.schemaHash)
258
+ !hasNonEmptyByteSequence(type.schemaHash)
145
259
  ) {
146
260
  pushIssue(
147
261
  issues,
@@ -151,6 +265,27 @@ function validateAllowedType(type, issues, location) {
151
265
  location,
152
266
  );
153
267
  }
268
+ validateOptionalIntegerField(
269
+ issues,
270
+ type.fixedStringLength,
271
+ `${location}.fixedStringLength`,
272
+ "Allowed type fixedStringLength",
273
+ { min: 0 },
274
+ );
275
+ validateOptionalIntegerField(
276
+ issues,
277
+ type.byteLength,
278
+ `${location}.byteLength`,
279
+ "Allowed type byteLength",
280
+ { min: 0 },
281
+ );
282
+ validateOptionalIntegerField(
283
+ issues,
284
+ type.requiredAlignment,
285
+ `${location}.requiredAlignment`,
286
+ "Allowed type requiredAlignment",
287
+ { min: 0 },
288
+ );
154
289
  }
155
290
 
156
291
  function validateAcceptedTypeSet(typeSet, issues, location) {
@@ -523,6 +658,60 @@ function validateRuntimeTargets(runtimeTargets, declaredCapabilities, issues, so
523
658
  }
524
659
  }
525
660
 
661
+ function validateInvokeSurfaces(invokeSurfaces, issues, sourceName) {
662
+ if (invokeSurfaces === undefined) {
663
+ return [];
664
+ }
665
+ if (!Array.isArray(invokeSurfaces)) {
666
+ pushIssue(
667
+ issues,
668
+ "error",
669
+ "invalid-invoke-surfaces",
670
+ "manifest.invokeSurfaces must be an array of non-empty strings when present.",
671
+ `${sourceName}.invokeSurfaces`,
672
+ );
673
+ return [];
674
+ }
675
+
676
+ const seen = new Set();
677
+ const normalized = [];
678
+ for (const surface of invokeSurfaces) {
679
+ if (!isNonEmptyString(surface)) {
680
+ pushIssue(
681
+ issues,
682
+ "error",
683
+ "invalid-invoke-surface",
684
+ "Invoke surface entries must be non-empty strings.",
685
+ `${sourceName}.invokeSurfaces`,
686
+ );
687
+ continue;
688
+ }
689
+ if (!InvokeSurfaceSet.has(surface)) {
690
+ pushIssue(
691
+ issues,
692
+ "error",
693
+ "unknown-invoke-surface",
694
+ `Invoke surface "${surface}" is invalid.`,
695
+ `${sourceName}.invokeSurfaces`,
696
+ );
697
+ continue;
698
+ }
699
+ if (seen.has(surface)) {
700
+ pushIssue(
701
+ issues,
702
+ "warning",
703
+ "duplicate-invoke-surface",
704
+ `Invoke surface "${surface}" is declared more than once.`,
705
+ `${sourceName}.invokeSurfaces`,
706
+ );
707
+ continue;
708
+ }
709
+ seen.add(surface);
710
+ normalized.push(surface);
711
+ }
712
+ return normalized;
713
+ }
714
+
526
715
  export function validatePluginManifest(manifest, options = {}) {
527
716
  const { sourceName = "manifest" } = options;
528
717
  const issues = [];
@@ -592,6 +781,7 @@ export function validatePluginManifest(manifest, options = {}) {
592
781
  issues,
593
782
  sourceName,
594
783
  );
784
+ validateInvokeSurfaces(manifest.invokeSurfaces, issues, sourceName);
595
785
 
596
786
  if (!Array.isArray(manifest.externalInterfaces)) {
597
787
  pushIssue(
@@ -732,6 +922,24 @@ export function validatePluginManifest(manifest, options = {}) {
732
922
  }
733
923
  }
734
924
 
925
+ if (manifest.schemasUsed !== undefined && !Array.isArray(manifest.schemasUsed)) {
926
+ pushIssue(
927
+ issues,
928
+ "error",
929
+ "invalid-schemas-used-array",
930
+ "manifest.schemasUsed must be an array when present.",
931
+ `${sourceName}.schemasUsed`,
932
+ );
933
+ } else if (Array.isArray(manifest.schemasUsed)) {
934
+ manifest.schemasUsed.forEach((typeRef, index) => {
935
+ validateAllowedType(
936
+ typeRef,
937
+ issues,
938
+ `${sourceName}.schemasUsed[${index}]`,
939
+ );
940
+ });
941
+ }
942
+
735
943
  return buildComplianceReport({
736
944
  sourceName,
737
945
  manifest,
@@ -775,6 +983,9 @@ export async function validatePluginArtifact(options) {
775
983
  const issues = [...report.issues];
776
984
  let resolvedExportNames = [];
777
985
  let checkedArtifact = false;
986
+ const declaredInvokeSurfaces = Array.isArray(manifest?.invokeSurfaces)
987
+ ? manifest.invokeSurfaces.filter((surface) => InvokeSurfaceSet.has(surface))
988
+ : [];
778
989
 
779
990
  if (Array.isArray(exportNames)) {
780
991
  resolvedExportNames = [...exportNames];
@@ -799,6 +1010,35 @@ export async function validatePluginArtifact(options) {
799
1010
  );
800
1011
  }
801
1012
  }
1013
+ if (declaredInvokeSurfaces.includes(InvokeSurface.DIRECT)) {
1014
+ for (const symbol of [
1015
+ DefaultInvokeExports.invokeSymbol,
1016
+ DefaultInvokeExports.allocSymbol,
1017
+ DefaultInvokeExports.freeSymbol,
1018
+ ]) {
1019
+ if (!resolvedExportNames.includes(symbol)) {
1020
+ pushIssue(
1021
+ issues,
1022
+ "error",
1023
+ "missing-plugin-invoke-export",
1024
+ `Plugin artifact is missing required direct invoke export "${symbol}".`,
1025
+ wasmPath ?? sourceName,
1026
+ );
1027
+ }
1028
+ }
1029
+ }
1030
+ if (
1031
+ declaredInvokeSurfaces.includes(InvokeSurface.COMMAND) &&
1032
+ !resolvedExportNames.includes(DefaultInvokeExports.commandSymbol)
1033
+ ) {
1034
+ pushIssue(
1035
+ issues,
1036
+ "error",
1037
+ "missing-plugin-command-export",
1038
+ `Plugin artifact is missing required command export "${DefaultInvokeExports.commandSymbol}".`,
1039
+ wasmPath ?? sourceName,
1040
+ );
1041
+ }
802
1042
  } else {
803
1043
  pushIssue(
804
1044
  issues,
@@ -0,0 +1,51 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ import { TypedArenaBuffer, TypedArenaBufferT } from '../../orbpro/stream/typed-arena-buffer.js';
3
+ /**
4
+ * Canonical invoke envelope consumed by direct ABI and command-mode execution.
5
+ */
6
+ export declare class PluginInvokeRequest implements flatbuffers.IUnpackableObject<PluginInvokeRequestT> {
7
+ bb: flatbuffers.ByteBuffer | null;
8
+ bb_pos: number;
9
+ __init(i: number, bb: flatbuffers.ByteBuffer): PluginInvokeRequest;
10
+ static getRootAsPluginInvokeRequest(bb: flatbuffers.ByteBuffer, obj?: PluginInvokeRequest): PluginInvokeRequest;
11
+ static getSizePrefixedRootAsPluginInvokeRequest(bb: flatbuffers.ByteBuffer, obj?: PluginInvokeRequest): PluginInvokeRequest;
12
+ static bufferHasIdentifier(bb: flatbuffers.ByteBuffer): boolean;
13
+ /**
14
+ * Stable method identifier from PluginManifest.methods.
15
+ */
16
+ methodId(): string | null;
17
+ methodId(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
18
+ /**
19
+ * Input frames for the invocation, routed by TypedArenaBuffer.port_id.
20
+ */
21
+ inputFrames(index: number, obj?: TypedArenaBuffer): TypedArenaBuffer | null;
22
+ inputFramesLength(): number;
23
+ /**
24
+ * Arena backing all input frame payload bytes.
25
+ */
26
+ payloadArena(index: number): number | null;
27
+ payloadArenaLength(): number;
28
+ payloadArenaArray(): Uint8Array | null;
29
+ static startPluginInvokeRequest(builder: flatbuffers.Builder): void;
30
+ static addMethodId(builder: flatbuffers.Builder, methodIdOffset: flatbuffers.Offset): void;
31
+ static addInputFrames(builder: flatbuffers.Builder, inputFramesOffset: flatbuffers.Offset): void;
32
+ static createInputFramesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
33
+ static startInputFramesVector(builder: flatbuffers.Builder, numElems: number): void;
34
+ static addPayloadArena(builder: flatbuffers.Builder, payloadArenaOffset: flatbuffers.Offset): void;
35
+ static createPayloadArenaVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
36
+ static startPayloadArenaVector(builder: flatbuffers.Builder, numElems: number): void;
37
+ static endPluginInvokeRequest(builder: flatbuffers.Builder): flatbuffers.Offset;
38
+ static finishPluginInvokeRequestBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
39
+ static finishSizePrefixedPluginInvokeRequestBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
40
+ static createPluginInvokeRequest(builder: flatbuffers.Builder, methodIdOffset: flatbuffers.Offset, inputFramesOffset: flatbuffers.Offset, payloadArenaOffset: flatbuffers.Offset): flatbuffers.Offset;
41
+ unpack(): PluginInvokeRequestT;
42
+ unpackTo(_o: PluginInvokeRequestT): void;
43
+ }
44
+ export declare class PluginInvokeRequestT implements flatbuffers.IGeneratedObject {
45
+ methodId: string | Uint8Array | null;
46
+ inputFrames: (TypedArenaBufferT)[];
47
+ payloadArena: (number)[];
48
+ constructor(methodId?: string | Uint8Array | null, inputFrames?: (TypedArenaBufferT)[], payloadArena?: (number)[]);
49
+ pack(builder: flatbuffers.Builder): flatbuffers.Offset;
50
+ }
51
+ //# sourceMappingURL=plugin-invoke-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-invoke-request.d.ts","sourceRoot":"","sources":["plugin-invoke-request.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAGhG;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;IAC7F,EAAE,EAAE,WAAW,CAAC,UAAU,GAAC,IAAI,CAAQ;IACvC,MAAM,SAAK;IACX,MAAM,CAAC,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,WAAW,CAAC,UAAU,GAAE,mBAAmB;IAMjE,MAAM,CAAC,4BAA4B,CAAC,EAAE,EAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,EAAC,mBAAmB,GAAE,mBAAmB;IAI5G,MAAM,CAAC,wCAAwC,CAAC,EAAE,EAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,EAAC,mBAAmB,GAAE,mBAAmB;IAKxH,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAC,WAAW,CAAC,UAAU,GAAE,OAAO;IAI7D;;OAEG;IACH,QAAQ,IAAG,MAAM,GAAC,IAAI;IACtB,QAAQ,CAAC,gBAAgB,EAAC,WAAW,CAAC,QAAQ,GAAE,MAAM,GAAC,UAAU,GAAC,IAAI;IAMtE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAC,gBAAgB,GAAE,gBAAgB,GAAC,IAAI;IAKvE,iBAAiB,IAAG,MAAM;IAK1B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAE,MAAM,GAAC,IAAI;IAKvC,kBAAkB,IAAG,MAAM;IAK3B,iBAAiB,IAAG,UAAU,GAAC,IAAI;IAKnC,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO;IAI3D,MAAM,CAAC,WAAW,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,cAAc,EAAC,WAAW,CAAC,MAAM;IAIjF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAC,WAAW,CAAC,MAAM;IAIvF,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAC,WAAW,CAAC,MAAM,EAAE,GAAE,WAAW,CAAC,MAAM;IAQzG,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAC,MAAM;IAI1E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAC,WAAW,CAAC,MAAM;IAIzF,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAC,MAAM,EAAE,GAAC,UAAU,GAAE,WAAW,CAAC,MAAM;IAQzG,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAC,MAAM;IAI3E,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,GAAE,WAAW,CAAC,MAAM;IAM7E,MAAM,CAAC,+BAA+B,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAC,WAAW,CAAC,MAAM;IAI7F,MAAM,CAAC,2CAA2C,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAC,WAAW,CAAC,MAAM;IAIzG,MAAM,CAAC,yBAAyB,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,EAAE,cAAc,EAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAC,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAC,WAAW,CAAC,MAAM,GAAE,WAAW,CAAC,MAAM;IAQhM,MAAM,IAAI,oBAAoB;IAS9B,QAAQ,CAAC,EAAE,EAAE,oBAAoB,GAAG,IAAI;CAKvC;AAED,qBAAa,oBAAqB,YAAW,WAAW,CAAC,gBAAgB;IAEhE,QAAQ,EAAE,MAAM,GAAC,UAAU,GAAC,IAAI;IAChC,WAAW,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAClC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE;gBAFxB,QAAQ,GAAE,MAAM,GAAC,UAAU,GAAC,IAAW,EACvC,WAAW,GAAE,CAAC,iBAAiB,CAAC,EAAO,EACvC,YAAY,GAAE,CAAC,MAAM,CAAC,EAAO;IAItC,IAAI,CAAC,OAAO,EAAC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM;CAWpD"}
@@ -0,0 +1,131 @@
1
+ // automatically generated by the FlatBuffers compiler, do not modify
2
+ /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
3
+ import * as flatbuffers from 'flatbuffers';
4
+ import { TypedArenaBuffer } from '../../orbpro/stream/typed-arena-buffer.js';
5
+ /**
6
+ * Canonical invoke envelope consumed by direct ABI and command-mode execution.
7
+ */
8
+ export class PluginInvokeRequest {
9
+ bb = null;
10
+ bb_pos = 0;
11
+ __init(i, bb) {
12
+ this.bb_pos = i;
13
+ this.bb = bb;
14
+ return this;
15
+ }
16
+ static getRootAsPluginInvokeRequest(bb, obj) {
17
+ return (obj || new PluginInvokeRequest()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
18
+ }
19
+ static getSizePrefixedRootAsPluginInvokeRequest(bb, obj) {
20
+ bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
21
+ return (obj || new PluginInvokeRequest()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
22
+ }
23
+ static bufferHasIdentifier(bb) {
24
+ return bb.__has_identifier('PINQ');
25
+ }
26
+ methodId(optionalEncoding) {
27
+ const offset = this.bb.__offset(this.bb_pos, 4);
28
+ return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
29
+ }
30
+ /**
31
+ * Input frames for the invocation, routed by TypedArenaBuffer.port_id.
32
+ */
33
+ inputFrames(index, obj) {
34
+ const offset = this.bb.__offset(this.bb_pos, 6);
35
+ return offset ? (obj || new TypedArenaBuffer()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;
36
+ }
37
+ inputFramesLength() {
38
+ const offset = this.bb.__offset(this.bb_pos, 6);
39
+ return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
40
+ }
41
+ /**
42
+ * Arena backing all input frame payload bytes.
43
+ */
44
+ payloadArena(index) {
45
+ const offset = this.bb.__offset(this.bb_pos, 8);
46
+ return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
47
+ }
48
+ payloadArenaLength() {
49
+ const offset = this.bb.__offset(this.bb_pos, 8);
50
+ return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
51
+ }
52
+ payloadArenaArray() {
53
+ const offset = this.bb.__offset(this.bb_pos, 8);
54
+ return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
55
+ }
56
+ static startPluginInvokeRequest(builder) {
57
+ builder.startObject(3);
58
+ }
59
+ static addMethodId(builder, methodIdOffset) {
60
+ builder.addFieldOffset(0, methodIdOffset, 0);
61
+ }
62
+ static addInputFrames(builder, inputFramesOffset) {
63
+ builder.addFieldOffset(1, inputFramesOffset, 0);
64
+ }
65
+ static createInputFramesVector(builder, data) {
66
+ builder.startVector(4, data.length, 4);
67
+ for (let i = data.length - 1; i >= 0; i--) {
68
+ builder.addOffset(data[i]);
69
+ }
70
+ return builder.endVector();
71
+ }
72
+ static startInputFramesVector(builder, numElems) {
73
+ builder.startVector(4, numElems, 4);
74
+ }
75
+ static addPayloadArena(builder, payloadArenaOffset) {
76
+ builder.addFieldOffset(2, payloadArenaOffset, 0);
77
+ }
78
+ static createPayloadArenaVector(builder, data) {
79
+ builder.startVector(1, data.length, 1);
80
+ for (let i = data.length - 1; i >= 0; i--) {
81
+ builder.addInt8(data[i]);
82
+ }
83
+ return builder.endVector();
84
+ }
85
+ static startPayloadArenaVector(builder, numElems) {
86
+ builder.startVector(1, numElems, 1);
87
+ }
88
+ static endPluginInvokeRequest(builder) {
89
+ const offset = builder.endObject();
90
+ builder.requiredField(offset, 4); // method_id
91
+ return offset;
92
+ }
93
+ static finishPluginInvokeRequestBuffer(builder, offset) {
94
+ builder.finish(offset, 'PINQ');
95
+ }
96
+ static finishSizePrefixedPluginInvokeRequestBuffer(builder, offset) {
97
+ builder.finish(offset, 'PINQ', true);
98
+ }
99
+ static createPluginInvokeRequest(builder, methodIdOffset, inputFramesOffset, payloadArenaOffset) {
100
+ PluginInvokeRequest.startPluginInvokeRequest(builder);
101
+ PluginInvokeRequest.addMethodId(builder, methodIdOffset);
102
+ PluginInvokeRequest.addInputFrames(builder, inputFramesOffset);
103
+ PluginInvokeRequest.addPayloadArena(builder, payloadArenaOffset);
104
+ return PluginInvokeRequest.endPluginInvokeRequest(builder);
105
+ }
106
+ unpack() {
107
+ return new PluginInvokeRequestT(this.methodId(), this.bb.createObjList(this.inputFrames.bind(this), this.inputFramesLength()), this.bb.createScalarList(this.payloadArena.bind(this), this.payloadArenaLength()));
108
+ }
109
+ unpackTo(_o) {
110
+ _o.methodId = this.methodId();
111
+ _o.inputFrames = this.bb.createObjList(this.inputFrames.bind(this), this.inputFramesLength());
112
+ _o.payloadArena = this.bb.createScalarList(this.payloadArena.bind(this), this.payloadArenaLength());
113
+ }
114
+ }
115
+ export class PluginInvokeRequestT {
116
+ methodId;
117
+ inputFrames;
118
+ payloadArena;
119
+ constructor(methodId = null, inputFrames = [], payloadArena = []) {
120
+ this.methodId = methodId;
121
+ this.inputFrames = inputFrames;
122
+ this.payloadArena = payloadArena;
123
+ }
124
+ pack(builder) {
125
+ const methodId = (this.methodId !== null ? builder.createString(this.methodId) : 0);
126
+ const inputFrames = PluginInvokeRequest.createInputFramesVector(builder, builder.createObjectOffsetList(this.inputFrames));
127
+ const payloadArena = PluginInvokeRequest.createPayloadArenaVector(builder, this.payloadArena);
128
+ return PluginInvokeRequest.createPluginInvokeRequest(builder, methodId, inputFrames, payloadArena);
129
+ }
130
+ }
131
+ //# sourceMappingURL=plugin-invoke-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-invoke-request.js","sourceRoot":"","sources":["plugin-invoke-request.ts"],"names":[],"mappings":"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"}