@ue-shed/protocol 0.1.0-rc.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.
Files changed (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +35 -0
  3. package/contracts/asset-audits/v1/texture-preview.schema.json +74 -0
  4. package/contracts/authoring/README.md +25 -0
  5. package/contracts/authoring/v1/apply-request.schema.json +568 -0
  6. package/contracts/authoring/v1/apply-result.schema.json +1165 -0
  7. package/contracts/authoring/v1/save-request.schema.json +53 -0
  8. package/contracts/authoring/v1/save-result.schema.json +77 -0
  9. package/contracts/authoring/v1/table-list.schema.json +48 -0
  10. package/contracts/authoring/v1/table-snapshot.schema.json +497 -0
  11. package/contracts/authoring/v2/table-snapshot.schema.json +950 -0
  12. package/contracts/cameras/review/v1/README.md +39 -0
  13. package/contracts/cameras/review/v1/capture-request.schema.json +92 -0
  14. package/contracts/cameras/review/v1/capture-response.schema.json +158 -0
  15. package/contracts/cameras/review/v1/fixtures/capture-failure.json +13 -0
  16. package/contracts/cameras/review/v1/fixtures/capture-legacy.json +17 -0
  17. package/contracts/cameras/review/v1/fixtures/capture-projected.json +33 -0
  18. package/contracts/cameras/review/v1/fixtures/capture-request-valid.json +21 -0
  19. package/contracts/cameras/review/v1/fixtures/capture-unprojectable.json +22 -0
  20. package/contracts/cameras/review/v1/fixtures/invalid-capture-request-bad-fov.json +21 -0
  21. package/contracts/cameras/review/v1/fixtures/invalid-capture-response-projected-without-margins.json +27 -0
  22. package/contracts/cameras/review/v1/fixtures/invalid-selection-unknown-code.json +11 -0
  23. package/contracts/cameras/review/v1/fixtures/selection-selected.json +15 -0
  24. package/contracts/cameras/review/v1/fixtures/selection-subject-not-found.json +11 -0
  25. package/contracts/cameras/review/v1/selection-response.schema.json +103 -0
  26. package/contracts/cameras/v1/README.md +33 -0
  27. package/contracts/editor-session/v1/README.md +11 -0
  28. package/contracts/editor-session/v1/command-response.schema.json +44 -0
  29. package/contracts/editor-session/v1/fixtures/command-accepted.json +6 -0
  30. package/contracts/editor-session/v1/fixtures/command-already-satisfied.json +6 -0
  31. package/contracts/editor-session/v1/fixtures/command-rejected.json +9 -0
  32. package/contracts/editor-session/v1/fixtures/state-paused.json +4 -0
  33. package/contracts/editor-session/v1/fixtures/state-running.json +4 -0
  34. package/contracts/editor-session/v1/fixtures/state-starting.json +4 -0
  35. package/contracts/editor-session/v1/fixtures/state-stopped.json +4 -0
  36. package/contracts/editor-session/v1/fixtures/state-stopping.json +4 -0
  37. package/contracts/editor-session/v1/state-response.schema.json +64 -0
  38. package/contracts/observatory/v1/README.md +78 -0
  39. package/contracts/observatory/v1/fixtures/bad-magic-then-valid.bin +0 -0
  40. package/contracts/observatory/v1/fixtures/fragmented-concat.bin +0 -0
  41. package/contracts/observatory/v1/fixtures/heartbeat.bin +0 -0
  42. package/contracts/observatory/v1/fixtures/mismatched-payload-length.bin +0 -0
  43. package/contracts/observatory/v1/fixtures/oversized-record-count.bin +0 -0
  44. package/contracts/observatory/v1/fixtures/reset.bin +0 -0
  45. package/contracts/observatory/v1/fixtures/truncated.bin +0 -0
  46. package/contracts/observatory/v1/fixtures/two-records.bin +0 -0
  47. package/contracts/observatory/v1/fixtures/unsupported-version.bin +0 -0
  48. package/dist/authoring-review.d.ts +679 -0
  49. package/dist/authoring-review.d.ts.map +1 -0
  50. package/dist/authoring-review.js +90 -0
  51. package/dist/authoring-review.js.map +1 -0
  52. package/dist/authoring.d.ts +889 -0
  53. package/dist/authoring.d.ts.map +1 -0
  54. package/dist/authoring.js +350 -0
  55. package/dist/authoring.js.map +1 -0
  56. package/dist/cameras.d.ts +184 -0
  57. package/dist/cameras.d.ts.map +1 -0
  58. package/dist/cameras.js +72 -0
  59. package/dist/cameras.js.map +1 -0
  60. package/dist/companion.d.ts +33 -0
  61. package/dist/companion.d.ts.map +1 -0
  62. package/dist/companion.js +18 -0
  63. package/dist/companion.js.map +1 -0
  64. package/dist/editor-play-session.d.ts +278 -0
  65. package/dist/editor-play-session.d.ts.map +1 -0
  66. package/dist/editor-play-session.js +56 -0
  67. package/dist/editor-play-session.js.map +1 -0
  68. package/dist/index.d.ts +146 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +106 -0
  71. package/dist/index.js.map +1 -0
  72. package/package.json +45 -0
package/dist/index.js ADDED
@@ -0,0 +1,106 @@
1
+ import { Effect, Schema } from "effect";
2
+ export const IdentifierKind = Schema.Literals([
3
+ "actor",
4
+ "capability",
5
+ "producer",
6
+ "session",
7
+ "world"
8
+ ]);
9
+ export class IdentifierValidationError extends Schema.TaggedErrorClass()("IdentifierValidationError", {
10
+ kind: IdentifierKind,
11
+ input: Schema.String,
12
+ recovery: Schema.String
13
+ }) {
14
+ }
15
+ const IdentifierString = Schema.Trim.check(Schema.isNonEmpty());
16
+ export const ActorId = IdentifierString.pipe(Schema.brand("ActorId"));
17
+ export const CapabilityId = IdentifierString.pipe(Schema.brand("CapabilityId"));
18
+ export const ProducerId = IdentifierString.pipe(Schema.brand("ProducerId"));
19
+ export const SessionId = IdentifierString.pipe(Schema.brand("SessionId"));
20
+ export const WorldId = IdentifierString.pipe(Schema.brand("WorldId"));
21
+ function identifierError(kind, input) {
22
+ return new IdentifierValidationError({
23
+ kind,
24
+ input,
25
+ recovery: `Provide a non-empty ${kind} identifier.`
26
+ });
27
+ }
28
+ function decodeIdentifier(schema, kind, input) {
29
+ return Schema.decodeUnknownEffect(schema)(input).pipe(Effect.mapError(() => identifierError(kind, typeof input === "string" ? input : String(input))));
30
+ }
31
+ function createIdentifier(schema, kind, input) {
32
+ try {
33
+ return Schema.decodeUnknownSync(schema)(input);
34
+ }
35
+ catch {
36
+ throw identifierError(kind, input);
37
+ }
38
+ }
39
+ export const decodeActorId = (input) => decodeIdentifier(ActorId, "actor", input);
40
+ export const decodeCapabilityId = (input) => decodeIdentifier(CapabilityId, "capability", input);
41
+ export const decodeProducerId = (input) => decodeIdentifier(ProducerId, "producer", input);
42
+ export const decodeSessionId = (input) => decodeIdentifier(SessionId, "session", input);
43
+ export const decodeWorldId = (input) => decodeIdentifier(WorldId, "world", input);
44
+ export function createActorId(input) {
45
+ return createIdentifier(ActorId, "actor", input);
46
+ }
47
+ export function createCapabilityId(input) {
48
+ return createIdentifier(CapabilityId, "capability", input);
49
+ }
50
+ export function createProducerId(input) {
51
+ return createIdentifier(ProducerId, "producer", input);
52
+ }
53
+ export function createSessionId(input) {
54
+ return createIdentifier(SessionId, "session", input);
55
+ }
56
+ export function createWorldId(input) {
57
+ return createIdentifier(WorldId, "world", input);
58
+ }
59
+ export const ProtocolVersion = Schema.Struct({
60
+ major: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
61
+ minor: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))
62
+ });
63
+ export const CURRENT_PROTOCOL_VERSION = ProtocolVersion.make({ major: 0, minor: 1 });
64
+ export const TransportKind = Schema.Literals([
65
+ "remote-control-http",
66
+ "remote-control-websocket",
67
+ "named-pipe"
68
+ ]);
69
+ export const CapabilityDescriptor = Schema.Struct({
70
+ id: CapabilityId,
71
+ version: ProtocolVersion,
72
+ transports: Schema.Array(TransportKind)
73
+ });
74
+ export const CapabilityManifest = Schema.Struct({
75
+ producerId: ProducerId,
76
+ displayName: Schema.String,
77
+ capabilities: Schema.Array(CapabilityDescriptor)
78
+ });
79
+ export const ConnectionState = Schema.Union([
80
+ Schema.Struct({ status: Schema.Literal("disconnected") }),
81
+ Schema.Struct({ status: Schema.Literal("connecting"), endpoint: Schema.String }),
82
+ Schema.Struct({
83
+ status: Schema.Literal("connected"),
84
+ sessionId: SessionId,
85
+ manifest: CapabilityManifest
86
+ }),
87
+ Schema.Struct({
88
+ status: Schema.Literal("recovering"),
89
+ sessionId: SessionId,
90
+ reason: Schema.String
91
+ }),
92
+ Schema.Struct({
93
+ status: Schema.Literal("ended"),
94
+ sessionId: SessionId,
95
+ reason: Schema.Literals(["requested", "producer-exited", "transport-lost"])
96
+ }),
97
+ Schema.Struct({ status: Schema.Literal("error"), message: Schema.String })
98
+ ]);
99
+ export const decodeCapabilityManifest = Schema.decodeUnknownEffect(CapabilityManifest);
100
+ export const decodeConnectionState = Schema.decodeUnknownEffect(ConnectionState);
101
+ export * from "./authoring.js";
102
+ export * from "./authoring-review.js";
103
+ export * from "./companion.js";
104
+ export * from "./cameras.js";
105
+ export * from "./editor-play-session.js";
106
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@ue-shed/protocol",
3
+ "version": "0.1.0-rc.1",
4
+ "description": "Runtime schemas and versioned wire contracts for UE Shed integrations.",
5
+ "homepage": "https://github.com/ue-shed/ue-shed#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/ue-shed/ue-shed/issues"
8
+ },
9
+ "license": "MIT",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/ue-shed/ue-shed.git",
13
+ "directory": "packages/protocol"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "contracts",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "type": "module",
22
+ "sideEffects": false,
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js"
29
+ }
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "dependencies": {
35
+ "effect": "4.0.0-beta.98"
36
+ },
37
+ "engines": {
38
+ "node": ">=22.14.0"
39
+ },
40
+ "scripts": {
41
+ "build": "tsc -p tsconfig.build.json",
42
+ "contract:check": "tsx scripts/check-authoring-contract.ts",
43
+ "typecheck": "tsc --noEmit"
44
+ }
45
+ }