reactor-effect-client 0.3.0-rc.0 → 0.3.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.
- package/README.md +10 -4
- package/dist/SessionTypes.d.ts +4 -0
- package/dist/SessionTypes.d.ts.map +1 -1
- package/dist/SessionTypes.js.map +1 -1
- package/dist/h3/_internal/client.d.ts.map +1 -1
- package/dist/h3/_internal/client.js +125 -68
- package/dist/h3/_internal/client.js.map +1 -1
- package/dist/h3/_internal/contracts.d.ts +13 -0
- package/dist/h3/_internal/contracts.d.ts.map +1 -1
- package/dist/h3/_internal/contracts.js +10 -0
- package/dist/h3/_internal/contracts.js.map +1 -1
- package/dist/h3/_internal/deployment.d.ts.map +1 -1
- package/dist/h3/_internal/deployment.js +21 -5
- package/dist/h3/_internal/deployment.js.map +1 -1
- package/dist/h3/_internal/operations.d.ts +13 -3
- package/dist/h3/_internal/operations.d.ts.map +1 -1
- package/dist/h3/_internal/operations.js +72 -34
- package/dist/h3/_internal/operations.js.map +1 -1
- package/dist/h3/_internal/references.d.ts +9 -3
- package/dist/h3/_internal/references.d.ts.map +1 -1
- package/dist/h3/_internal/references.js +134 -6
- package/dist/h3/_internal/references.js.map +1 -1
- package/dist/h3/_internal/request.d.ts +9 -4
- package/dist/h3/_internal/request.d.ts.map +1 -1
- package/dist/h3/_internal/request.js +28 -10
- package/dist/h3/_internal/request.js.map +1 -1
- package/dist/h3/index.d.ts +3 -3
- package/dist/h3/index.d.ts.map +1 -1
- package/dist/h3/index.js +2 -2
- package/dist/h3/index.js.map +1 -1
- package/dist/h3/profile.d.ts +37 -0
- package/dist/h3/profile.d.ts.map +1 -1
- package/dist/h3/profile.js +44 -0
- package/dist/h3/profile.js.map +1 -1
- package/dist/h3/types.d.ts +41 -10
- package/dist/h3/types.d.ts.map +1 -1
- package/dist/orchestration/h3-source.d.ts.map +1 -1
- package/dist/orchestration/h3-source.js +7 -4
- package/dist/orchestration/h3-source.js.map +1 -1
- package/dist/orchestration/index.d.ts +1 -1
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +1 -1
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/request.d.ts +13 -0
- package/dist/orchestration/request.d.ts.map +1 -1
- package/dist/orchestration/request.js +15 -0
- package/dist/orchestration/request.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +5 -1
- package/dist/session.js.map +1 -1
- package/dist/simulation/_internal/source.d.ts.map +1 -1
- package/dist/simulation/_internal/source.js +13 -1
- package/dist/simulation/_internal/source.js.map +1 -1
- package/dist/stats.d.ts +19 -0
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +75 -3
- package/dist/stats.js.map +1 -1
- package/dist/testing/Wav.d.ts +14 -0
- package/dist/testing/Wav.d.ts.map +1 -0
- package/dist/testing/Wav.js +37 -0
- package/dist/testing/Wav.js.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -0
- package/dist/testing/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/h3/_internal/contracts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/h3/_internal/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/h3/_internal/deployment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/h3/_internal/deployment.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAc5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,QAoJnD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Predicate from "effect/Predicate";
|
|
2
2
|
import { ReactorError } from "../../errors.js";
|
|
3
3
|
import { jsonObject } from "../../json.js";
|
|
4
|
-
import { documentedVersion, modelName, referenceLimits, source } from "../profile.js";
|
|
4
|
+
import { audioReferenceLimits, documentedVersion, modelName, referenceLimits, source, } from "../profile.js";
|
|
5
5
|
import { deploymentCommands, messageShapes } from "./contracts.js";
|
|
6
6
|
const incompatible = (location) => {
|
|
7
7
|
throw ReactorError.fromCode("UnsupportedCapability", `Deployment does not structurally support H3 ${documentedVersion}: ${location}`, { operation: "H3 schema", outcome: "not-submitted" });
|
|
@@ -61,10 +61,15 @@ export const validateDeployment = (input) => {
|
|
|
61
61
|
if (expected.nullable !== true && nullable)
|
|
62
62
|
return incompatible(`${location} nullability`);
|
|
63
63
|
if (expected.type === "array") {
|
|
64
|
-
|
|
64
|
+
const counted = location === "command enqueue.reference_images"
|
|
65
|
+
? referenceLimits.maxImages
|
|
66
|
+
: location === "command enqueue.reference_audios"
|
|
67
|
+
? audioReferenceLimits.maxAudio
|
|
68
|
+
: undefined;
|
|
69
|
+
if (counted !== undefined &&
|
|
65
70
|
((typeof actual.minItems === "number" && actual.minItems > 0) ||
|
|
66
|
-
(typeof actual.maxItems === "number" && actual.maxItems <
|
|
67
|
-
return incompatible(
|
|
71
|
+
(typeof actual.maxItems === "number" && actual.maxItems < counted)))
|
|
72
|
+
return incompatible(`${location} count bounds`);
|
|
68
73
|
if (expected.items !== undefined)
|
|
69
74
|
check(actual.items, expected.items, `${location} items`, depth + 1);
|
|
70
75
|
}
|
|
@@ -94,13 +99,23 @@ export const validateDeployment = (input) => {
|
|
|
94
99
|
check(schema, shape, `message ${name}`);
|
|
95
100
|
messageSchemas.set(name, schema);
|
|
96
101
|
}
|
|
102
|
+
const declared = new Set();
|
|
97
103
|
for (const command of deploymentCommands) {
|
|
98
104
|
const { name } = command;
|
|
99
105
|
const post = record(record(paths[`/events/${name}`], `command ${name}`).post, `command ${name}`);
|
|
100
106
|
if (post.operationId !== name)
|
|
101
107
|
return incompatible(`command ${name} operationId`);
|
|
102
108
|
const args = bodySchema(post.requestBody, `command ${name}`);
|
|
103
|
-
|
|
109
|
+
// A capability argument the deployment leaves undeclared is not checked;
|
|
110
|
+
// the contract records that requests may not use it.
|
|
111
|
+
const properties = resolve(args, `command ${name}`).properties;
|
|
112
|
+
const present = command.capabilities.filter((argument) => Predicate.isObject(properties) && Object.hasOwn(properties, argument));
|
|
113
|
+
for (const argument of present)
|
|
114
|
+
declared.add(`${name}.${argument}`);
|
|
115
|
+
check(args, {
|
|
116
|
+
...command.args,
|
|
117
|
+
fields: Object.fromEntries(Object.entries(command.args.fields ?? {}).filter(([field]) => !command.capabilities.includes(field) || present.includes(field))),
|
|
118
|
+
}, `command ${name}`);
|
|
104
119
|
const required = resolve(args, `command ${name}`).required ?? [];
|
|
105
120
|
if (!Array.isArray(required) || required.some((key) => !command.supplied.includes(String(key))))
|
|
106
121
|
return incompatible(`command ${name} unsupported required argument`);
|
|
@@ -124,6 +139,7 @@ export const validateDeployment = (input) => {
|
|
|
124
139
|
documentedVersion,
|
|
125
140
|
source,
|
|
126
141
|
subset: "prompt-and-images",
|
|
142
|
+
referenceAudio: declared.has("enqueue.reference_audios"),
|
|
127
143
|
deployment: Object.freeze({
|
|
128
144
|
title: typeof info.title === "string" ? info.title : null,
|
|
129
145
|
version: typeof info.version === "string" ? info.version : null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../src/h3/_internal/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../src/h3/_internal/deployment.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,9 @@ import type { Acceptance, ClipOperation } from "../types.js";
|
|
|
8
8
|
import type { AcceptanceIdentity } from "./evidence.js";
|
|
9
9
|
/**
|
|
10
10
|
* Clip operations keyed by submission: a retained, bounded projection of the
|
|
11
|
-
*
|
|
12
|
-
* reads it back: it is neither the provider's acceptance authority nor
|
|
13
|
-
* clip state.
|
|
11
|
+
* provider's evidence, written only synchronously, on the provider's own paths.
|
|
12
|
+
* Nothing reads it back: it is neither the provider's acceptance authority nor
|
|
13
|
+
* its clip state.
|
|
14
14
|
*/
|
|
15
15
|
export declare class Operations {
|
|
16
16
|
private readonly capacity;
|
|
@@ -26,8 +26,16 @@ export declare class Operations {
|
|
|
26
26
|
abandon(id: string): void;
|
|
27
27
|
/** The enqueue's own result: a definite failure decides the operation without a clip. */
|
|
28
28
|
settle(id: string, exit: Exit.Exit<Acceptance, unknown>): void;
|
|
29
|
+
/**
|
|
30
|
+
* Evidence the provider holds until the enqueue's reply decides the
|
|
31
|
+
* acceptance: the clip's facts are recorded meanwhile, and resolve once the
|
|
32
|
+
* acceptance does.
|
|
33
|
+
*/
|
|
34
|
+
identify(acceptance: Acceptance): void;
|
|
29
35
|
/** The acceptance the provider recorded, on the same path that records it. */
|
|
30
36
|
accept(acceptance: Acceptance): void;
|
|
37
|
+
/** Stop following a record's clip. */
|
|
38
|
+
private forget;
|
|
31
39
|
/**
|
|
32
40
|
* A clip carrying a submission's exact metadata and prompt, after its pending
|
|
33
41
|
* acceptance expired or in a later transport generation of the same session.
|
|
@@ -39,6 +47,8 @@ export declare class Operations {
|
|
|
39
47
|
private fact;
|
|
40
48
|
private advance;
|
|
41
49
|
private end;
|
|
50
|
+
/** Resolve what a record established, once its acceptance is decided. */
|
|
51
|
+
private publish;
|
|
42
52
|
/** The provider retired: what evidence did not decide is Indeterminate. */
|
|
43
53
|
retire(): void;
|
|
44
54
|
private release;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/h3/_internal/operations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,EAA6B,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAY,aAAa,EAA6B,MAAM,aAAa,CAAC;AAClG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/h3/_internal/operations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,EAA6B,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAY,aAAa,EAA6B,MAAM,aAAa,CAAC;AAClG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAiCxD;;;;;GAKG;AACH,qBAAa,UAAU;IAIT,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAE7D,YAA6B,QAAQ,EAAE,MAAM,EAAI;IAEjD;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CA6B1C;IAED,yDAAyD;IACzD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGxB;IAED,yFAAyF;IACzF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,IAAI,CAgB7D;IAED;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAKrC;IAED,8EAA8E;IAC9E,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAOnC;IAED,sCAAsC;IACtC,OAAO,CAAC,MAAM;IAKd;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAiB/D;IAED,6DAA6D;IAC7D,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA8B3D;IAED,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,GAAG;IAOX,yEAAyE;IACzE,OAAO,CAAC,OAAO;IAwBf,2EAA2E;IAC3E,MAAM,IAAI,IAAI,CAQb;IAED,OAAO,CAAC,OAAO;IAKf,wFAAwF;IACxF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CA8C1E;CACF"}
|
|
@@ -2,15 +2,18 @@ import * as Deferred from "effect/Deferred";
|
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import * as Exit from "effect/Exit";
|
|
4
4
|
import { ClipEnded, CommandFailure, ReactorError } from "../../errors.js";
|
|
5
|
-
|
|
5
|
+
/** Nothing more can change it: its clip ended once accepted, or it was decided without one. */
|
|
6
|
+
const settledRecord = (record) => (record.ended !== undefined && record.acceptance !== undefined) ||
|
|
7
|
+
record.indeterminate ||
|
|
8
|
+
record.rejected;
|
|
6
9
|
const indeterminate = () => ReactorError.fromCode("Indeterminate", "H3 provider retired before the clip's evidence", {
|
|
7
10
|
operation: "clip operation",
|
|
8
11
|
});
|
|
9
12
|
/**
|
|
10
13
|
* Clip operations keyed by submission: a retained, bounded projection of the
|
|
11
|
-
*
|
|
12
|
-
* reads it back: it is neither the provider's acceptance authority nor
|
|
13
|
-
* clip state.
|
|
14
|
+
* provider's evidence, written only synchronously, on the provider's own paths.
|
|
15
|
+
* Nothing reads it back: it is neither the provider's acceptance authority nor
|
|
16
|
+
* its clip state.
|
|
14
17
|
*/
|
|
15
18
|
export class Operations {
|
|
16
19
|
capacity;
|
|
@@ -41,6 +44,7 @@ export class Operations {
|
|
|
41
44
|
this.records.set(identity.id, {
|
|
42
45
|
identity,
|
|
43
46
|
acceptance: undefined,
|
|
47
|
+
clipId: undefined,
|
|
44
48
|
generated: undefined,
|
|
45
49
|
started: undefined,
|
|
46
50
|
ended: undefined,
|
|
@@ -70,19 +74,42 @@ export class Operations {
|
|
|
70
74
|
if (failure.success.context.outcome === "unknown")
|
|
71
75
|
return;
|
|
72
76
|
record.rejected = true;
|
|
73
|
-
|
|
77
|
+
this.forget(record);
|
|
78
|
+
// No clip will ever carry this submission: every fact fails with the enqueue's
|
|
79
|
+
// failure, and what a clip showed before the refusal is not its fact.
|
|
80
|
+
record.generated = undefined;
|
|
81
|
+
record.started = undefined;
|
|
82
|
+
record.ended = undefined;
|
|
74
83
|
Deferred.doneUnsafe(record.accepted, Effect.fail(failure.success));
|
|
75
84
|
for (const deferred of [record.reachedGenerated, record.reachedStarted, record.finished])
|
|
76
85
|
Deferred.doneUnsafe(deferred, Effect.fail(failure.success));
|
|
77
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Evidence the provider holds until the enqueue's reply decides the
|
|
89
|
+
* acceptance: the clip's facts are recorded meanwhile, and resolve once the
|
|
90
|
+
* acceptance does.
|
|
91
|
+
*/
|
|
92
|
+
identify(acceptance) {
|
|
93
|
+
const record = this.records.get(acceptance.submissionId);
|
|
94
|
+
if (record === undefined || record.clipId !== undefined || record.rejected)
|
|
95
|
+
return;
|
|
96
|
+
record.clipId = acceptance.clip.clip_id;
|
|
97
|
+
this.byClip.set(record.clipId, record);
|
|
98
|
+
}
|
|
78
99
|
/** The acceptance the provider recorded, on the same path that records it. */
|
|
79
100
|
accept(acceptance) {
|
|
80
101
|
const record = this.records.get(acceptance.submissionId);
|
|
81
102
|
if (record === undefined || record.acceptance !== undefined)
|
|
82
103
|
return;
|
|
83
104
|
record.acceptance = acceptance;
|
|
84
|
-
this.
|
|
105
|
+
this.identify(acceptance);
|
|
85
106
|
Deferred.doneUnsafe(record.accepted, Effect.succeed(acceptance));
|
|
107
|
+
this.publish(record);
|
|
108
|
+
}
|
|
109
|
+
/** Stop following a record's clip. */
|
|
110
|
+
forget(record) {
|
|
111
|
+
if (record.clipId !== undefined && this.byClip.get(record.clipId) === record)
|
|
112
|
+
this.byClip.delete(record.clipId);
|
|
86
113
|
}
|
|
87
114
|
/**
|
|
88
115
|
* A clip carrying a submission's exact metadata and prompt, after its pending
|
|
@@ -148,38 +175,46 @@ export class Operations {
|
|
|
148
175
|
return;
|
|
149
176
|
const fact = this.fact(clipId, message, source);
|
|
150
177
|
// Started implies generated: every implied phase completes with the first evidence.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if (rank === 2 && record.started === undefined) {
|
|
156
|
-
record.started = fact;
|
|
157
|
-
Deferred.doneUnsafe(record.reachedStarted, Effect.succeed(fact));
|
|
158
|
-
}
|
|
178
|
+
record.generated ??= fact;
|
|
179
|
+
if (rank === 2)
|
|
180
|
+
record.started ??= fact;
|
|
181
|
+
this.publish(record);
|
|
159
182
|
}
|
|
160
183
|
end(clipId, message, source) {
|
|
161
184
|
const record = this.byClip.get(clipId);
|
|
162
185
|
if (record === undefined || record.ended !== undefined || record.indeterminate)
|
|
163
186
|
return;
|
|
164
|
-
|
|
165
|
-
record
|
|
166
|
-
|
|
167
|
-
|
|
187
|
+
record.ended = this.fact(clipId, message, source);
|
|
188
|
+
this.publish(record);
|
|
189
|
+
}
|
|
190
|
+
/** Resolve what a record established, once its acceptance is decided. */
|
|
191
|
+
publish(record) {
|
|
192
|
+
if (record.acceptance === undefined)
|
|
193
|
+
return;
|
|
194
|
+
const { generated, started, ended } = record;
|
|
195
|
+
if (generated !== undefined)
|
|
196
|
+
Deferred.doneUnsafe(record.reachedGenerated, Effect.succeed(generated));
|
|
197
|
+
if (started !== undefined)
|
|
198
|
+
Deferred.doneUnsafe(record.reachedStarted, Effect.succeed(started));
|
|
199
|
+
if (ended === undefined)
|
|
200
|
+
return;
|
|
201
|
+
if (ended.message === "clip_failed" || ended.message === "clip_popped") {
|
|
202
|
+
const error = new ReactorError({
|
|
168
203
|
reason: new ClipEnded({
|
|
169
|
-
message: `clip ended by ${message}`,
|
|
170
|
-
clipId,
|
|
171
|
-
lifecycle: message,
|
|
172
|
-
transportGeneration:
|
|
204
|
+
message: `clip ended by ${ended.message}`,
|
|
205
|
+
clipId: ended.clipId,
|
|
206
|
+
lifecycle: ended.message,
|
|
207
|
+
transportGeneration: ended.transportGeneration,
|
|
173
208
|
}),
|
|
174
209
|
context: { operation: "clip operation" },
|
|
175
210
|
});
|
|
176
211
|
// A phase that was not reached never will be.
|
|
177
|
-
if (
|
|
178
|
-
Deferred.doneUnsafe(record.reachedGenerated, Effect.fail(
|
|
179
|
-
if (
|
|
180
|
-
Deferred.doneUnsafe(record.reachedStarted, Effect.fail(
|
|
212
|
+
if (generated === undefined)
|
|
213
|
+
Deferred.doneUnsafe(record.reachedGenerated, Effect.fail(error));
|
|
214
|
+
if (started === undefined)
|
|
215
|
+
Deferred.doneUnsafe(record.reachedStarted, Effect.fail(error));
|
|
181
216
|
}
|
|
182
|
-
Deferred.doneUnsafe(record.finished, Effect.succeed(
|
|
217
|
+
Deferred.doneUnsafe(record.finished, Effect.succeed(ended));
|
|
183
218
|
}
|
|
184
219
|
/** The provider retired: what evidence did not decide is Indeterminate. */
|
|
185
220
|
retire() {
|
|
@@ -195,9 +230,7 @@ export class Operations {
|
|
|
195
230
|
}
|
|
196
231
|
release(id, record) {
|
|
197
232
|
this.records.delete(id);
|
|
198
|
-
|
|
199
|
-
this.byClip.get(record.acceptance.clip.clip_id) === record)
|
|
200
|
-
this.byClip.delete(record.acceptance.clip.clip_id);
|
|
233
|
+
this.forget(record);
|
|
201
234
|
}
|
|
202
235
|
/** A scoped view; releasing the last holder acknowledges and releases the operation. */
|
|
203
236
|
attach(id) {
|
|
@@ -216,12 +249,17 @@ export class Operations {
|
|
|
216
249
|
accepted: Deferred.await(record.accepted),
|
|
217
250
|
reached: (phase) => Deferred.await(phase === "generated" ? record.reachedGenerated : record.reachedStarted),
|
|
218
251
|
ended: Deferred.await(record.finished),
|
|
252
|
+
// A clip's facts are the operation's once its acceptance is decided.
|
|
219
253
|
facts: Effect.sync(() => Object.freeze({
|
|
220
254
|
submissionId: id,
|
|
221
|
-
...(record.acceptance === undefined
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
255
|
+
...(record.acceptance === undefined
|
|
256
|
+
? {}
|
|
257
|
+
: {
|
|
258
|
+
acceptance: record.acceptance,
|
|
259
|
+
...(record.generated === undefined ? {} : { generated: record.generated }),
|
|
260
|
+
...(record.started === undefined ? {} : { started: record.started }),
|
|
261
|
+
...(record.ended === undefined ? {} : { ended: record.ended }),
|
|
262
|
+
}),
|
|
225
263
|
indeterminate: record.indeterminate,
|
|
226
264
|
})),
|
|
227
265
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/h3/_internal/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/h3/_internal/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import { ReactorError } from "../../errors.js";
|
|
3
3
|
import type { UploadReference } from "../../wire.generated.js";
|
|
4
|
-
import type { Reference, ValidatedReference } from "../types.js";
|
|
4
|
+
import type { Reference, ValidatedAudioReference, ValidatedReference } from "../types.js";
|
|
5
5
|
export type Material = {
|
|
6
6
|
readonly _tag: "Bytes";
|
|
7
7
|
readonly bytes: Uint8Array<ArrayBuffer>;
|
|
@@ -11,8 +11,14 @@ export type Material = {
|
|
|
11
11
|
};
|
|
12
12
|
export declare const plain: (input: unknown, allowed: readonly string[]) => Record<string, unknown>;
|
|
13
13
|
/** Validates wire identity and a safe JSON size projection without inventing upload provenance. */
|
|
14
|
-
export declare const checkedUpload: (input: unknown) => UploadReference;
|
|
14
|
+
export declare const checkedUpload: (input: unknown, kind?: "image" | "audio") => UploadReference;
|
|
15
15
|
export declare const captureReference: (input: Reference | ValidatedReference) => ValidatedReference;
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const captureAudioReference: (input: Reference | ValidatedAudioReference) => ValidatedAudioReference;
|
|
17
|
+
export declare const referenceMaterial: (reference: ValidatedReference | ValidatedAudioReference) => Material;
|
|
17
18
|
export declare const validateReference: (input: Reference) => Effect.Effect<ValidatedReference, ReactorError>;
|
|
19
|
+
/**
|
|
20
|
+
* Validate an audio reference once: its container, and for WAV and FLAC its
|
|
21
|
+
* length and channels, so a request can reuse it without checking it again.
|
|
22
|
+
*/
|
|
23
|
+
export declare const validateAudioReference: (input: Reference) => Effect.Effect<ValidatedAudioReference, ReactorError>;
|
|
18
24
|
//# sourceMappingURL=references.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../src/h3/_internal/references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAe,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../src/h3/_internal/references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAe,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO/D,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAO1F,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAiMlE,eAAO,MAAM,KAAK,UAAW,OAAO,WAAW,SAAS,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAgBxF,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,aAAa,UACjB,OAAO,SACR,OAAO,GAAG,OAAO,KACtB,eAyBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,SAAS,GAAG,kBAAkB,KAAG,kBAyCxE,CAAC;AAEF,eAAO,MAAM,qBAAqB,UACzB,SAAS,GAAG,uBAAuB,KACzC,uBA8CF,CAAC;AAEF,eAAO,MAAM,iBAAiB,cACjB,kBAAkB,GAAG,uBAAuB,KACtD,QAA8E,CAAC;AAClF,eAAO,MAAM,iBAAiB,UACrB,SAAS,KACf,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,YAAY,CACW,CAAC;AAC7D;;;GAGG;AACH,eAAO,MAAM,sBAAsB,UAC1B,SAAS,KACf,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CACW,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import { parsedInput, ReactorError } from "../../errors.js";
|
|
3
|
-
import { imageMimeTypes, referenceLimits } from "../profile.js";
|
|
3
|
+
import { audioMimeTypes, audioReferenceLimits, imageMimeTypes, referenceLimits, } from "../profile.js";
|
|
4
4
|
const materials = new WeakMap();
|
|
5
5
|
const invalid = (message) => {
|
|
6
6
|
throw ReactorError.fromCode("InvalidInput", message, {
|
|
@@ -104,6 +104,80 @@ const inspectImage = (bytes) => {
|
|
|
104
104
|
}
|
|
105
105
|
return invalid("Reference must contain a supported PNG, JPEG, or WebP image");
|
|
106
106
|
};
|
|
107
|
+
/** A WAV's length and channels, from its `fmt ` chunk and the data it holds. */
|
|
108
|
+
const inspectWav = (bytes) => {
|
|
109
|
+
if (le32(bytes, 4) + 8 > bytes.length)
|
|
110
|
+
return invalid("WAV is truncated");
|
|
111
|
+
let offset = 12, channels, byteRate, data;
|
|
112
|
+
while (offset + 8 <= bytes.length) {
|
|
113
|
+
const id = ascii(bytes, offset, 4), size = le32(bytes, offset + 4), body = offset + 8;
|
|
114
|
+
if (id === "fmt ") {
|
|
115
|
+
if (size < 16 || body + 16 > bytes.length)
|
|
116
|
+
return invalid("WAV format chunk is truncated");
|
|
117
|
+
channels = le16(bytes, body + 2);
|
|
118
|
+
byteRate = le32(bytes, body + 8);
|
|
119
|
+
}
|
|
120
|
+
else if (id === "data") {
|
|
121
|
+
// A streaming writer may leave the size at its maximum: count what is there.
|
|
122
|
+
data = Math.min(size, bytes.length - body);
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
offset = body + size + (size % 2);
|
|
126
|
+
}
|
|
127
|
+
if (channels === undefined || byteRate === undefined || data === undefined)
|
|
128
|
+
return invalid("WAV has no format or data chunk");
|
|
129
|
+
if (channels === 0 || byteRate === 0)
|
|
130
|
+
return invalid("WAV format is invalid");
|
|
131
|
+
return { mimeType: "audio/wav", seconds: data / byteRate, channels };
|
|
132
|
+
};
|
|
133
|
+
/** A FLAC's length and channels, from its STREAMINFO block; an unknown length stays null. */
|
|
134
|
+
const inspectFlac = (bytes) => {
|
|
135
|
+
const info = 8;
|
|
136
|
+
if (bytes.length < info + 34 || (bytes[4] & 127) !== 0)
|
|
137
|
+
return invalid("FLAC has no stream info");
|
|
138
|
+
if (uint16(bytes, 5) * 256 + bytes[7] < 34)
|
|
139
|
+
return invalid("FLAC stream info is truncated");
|
|
140
|
+
const rate = bytes[info + 10] * 4096 + bytes[info + 11] * 16 + (bytes[info + 12] >> 4);
|
|
141
|
+
const channels = ((bytes[info + 12] >> 1) & 7) + 1;
|
|
142
|
+
const samples = (bytes[info + 13] & 15) * 0x100000000 + uint32(bytes, info + 14);
|
|
143
|
+
if (rate === 0)
|
|
144
|
+
return invalid("FLAC sample rate is invalid");
|
|
145
|
+
return { mimeType: "audio/flac", seconds: samples === 0 ? null : samples / rate, channels };
|
|
146
|
+
};
|
|
147
|
+
/** An Ogg stream's channels from its first page's Opus or Vorbis header; its length stays null. */
|
|
148
|
+
const inspectOgg = (bytes) => {
|
|
149
|
+
const payload = bytes.length > 26 ? 27 + bytes[26] : bytes.length;
|
|
150
|
+
const channels = ascii(bytes, payload, 8) === "OpusHead"
|
|
151
|
+
? bytes[payload + 9]
|
|
152
|
+
: bytes[payload] === 1 && ascii(bytes, payload + 1, 6) === "vorbis"
|
|
153
|
+
? bytes[payload + 11]
|
|
154
|
+
: undefined;
|
|
155
|
+
return { mimeType: "audio/ogg", seconds: null, channels: channels ?? null };
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* The only audio-container identification used by the provider and its loaders.
|
|
159
|
+
* WAV and FLAC headers give a length and channel count that are checked here;
|
|
160
|
+
* the other formats are recognized by their container and checked by H3.
|
|
161
|
+
*/
|
|
162
|
+
const inspectAudio = (bytes) => {
|
|
163
|
+
if (bytes.length >= 12 && ascii(bytes, 0, 4) === "RIFF" && ascii(bytes, 8, 4) === "WAVE")
|
|
164
|
+
return inspectWav(bytes);
|
|
165
|
+
if (bytes.length >= 4 && ascii(bytes, 0, 4) === "fLaC")
|
|
166
|
+
return inspectFlac(bytes);
|
|
167
|
+
if (bytes.length >= 4 && ascii(bytes, 0, 4) === "OggS")
|
|
168
|
+
return inspectOgg(bytes);
|
|
169
|
+
if (bytes.length >= 12 && ascii(bytes, 4, 4) === "ftyp")
|
|
170
|
+
return { mimeType: "audio/mp4", seconds: null, channels: null };
|
|
171
|
+
if (bytes.length >= 4 && uint32(bytes, 0) === 0x1a45dfa3)
|
|
172
|
+
return { mimeType: "audio/webm", seconds: null, channels: null };
|
|
173
|
+
if (bytes.length >= 3 && ascii(bytes, 0, 3) === "ID3")
|
|
174
|
+
return { mimeType: "audio/mpeg", seconds: null, channels: null };
|
|
175
|
+
if (bytes.length >= 2 && bytes[0] === 255 && (bytes[1] & 246) === 240)
|
|
176
|
+
return { mimeType: "audio/aac", seconds: null, channels: null };
|
|
177
|
+
if (bytes.length >= 2 && bytes[0] === 255 && (bytes[1] & 224) === 224 && (bytes[1] & 6) !== 0)
|
|
178
|
+
return { mimeType: "audio/mpeg", seconds: null, channels: null };
|
|
179
|
+
return invalid("Audio reference must be WAV, MP3, AAC/M4A, OGG/Opus, FLAC or WebM");
|
|
180
|
+
};
|
|
107
181
|
export const plain = (input, allowed) => {
|
|
108
182
|
if (input === null ||
|
|
109
183
|
typeof input !== "object" ||
|
|
@@ -120,17 +194,20 @@ export const plain = (input, allowed) => {
|
|
|
120
194
|
return output;
|
|
121
195
|
};
|
|
122
196
|
/** Validates wire identity and a safe JSON size projection without inventing upload provenance. */
|
|
123
|
-
export const checkedUpload = (input) => {
|
|
197
|
+
export const checkedUpload = (input, kind = "image") => {
|
|
198
|
+
const [mimeTypes, maxBytes] = kind === "image"
|
|
199
|
+
? [imageMimeTypes, referenceLimits.maxBytes]
|
|
200
|
+
: [audioMimeTypes, audioReferenceLimits.maxBytes];
|
|
124
201
|
const file = plain(input, ["upload_id", "name", "mime_type", "size", "_unknown"]);
|
|
125
202
|
if (typeof file.upload_id !== "string" ||
|
|
126
203
|
!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(file.upload_id) ||
|
|
127
204
|
typeof file.name !== "string" ||
|
|
128
205
|
file.name.length === 0 ||
|
|
129
206
|
file.name.length > 1024 ||
|
|
130
|
-
!
|
|
207
|
+
!mimeTypes.includes(String(file.mime_type)) ||
|
|
131
208
|
typeof file.size !== "bigint" ||
|
|
132
209
|
file.size <= 0n ||
|
|
133
|
-
file.size > BigInt(
|
|
210
|
+
file.size > BigInt(maxBytes)) {
|
|
134
211
|
return invalid("Uploaded reference has invalid identity, type, or size");
|
|
135
212
|
}
|
|
136
213
|
return Object.freeze({
|
|
@@ -141,7 +218,10 @@ export const checkedUpload = (input) => {
|
|
|
141
218
|
});
|
|
142
219
|
};
|
|
143
220
|
export const captureReference = (input) => {
|
|
144
|
-
if (input !== null &&
|
|
221
|
+
if (input !== null &&
|
|
222
|
+
typeof input === "object" &&
|
|
223
|
+
materials.has(input) &&
|
|
224
|
+
input._tag === "ValidatedReference")
|
|
145
225
|
return input;
|
|
146
226
|
const object = plain(input, ["_tag", "bytes", "file"]);
|
|
147
227
|
let material, facts;
|
|
@@ -171,11 +251,59 @@ export const captureReference = (input) => {
|
|
|
171
251
|
};
|
|
172
252
|
}
|
|
173
253
|
else
|
|
174
|
-
return invalid("Reference must be Bytes or Uploaded
|
|
254
|
+
return invalid("Reference must be Bytes or Uploaded");
|
|
255
|
+
const validated = Object.freeze(facts);
|
|
256
|
+
materials.set(validated, material);
|
|
257
|
+
return validated;
|
|
258
|
+
};
|
|
259
|
+
export const captureAudioReference = (input) => {
|
|
260
|
+
if (input !== null &&
|
|
261
|
+
typeof input === "object" &&
|
|
262
|
+
materials.has(input) &&
|
|
263
|
+
input._tag === "ValidatedAudioReference")
|
|
264
|
+
return input;
|
|
265
|
+
const object = plain(input, ["_tag", "bytes", "file"]);
|
|
266
|
+
let material, facts;
|
|
267
|
+
if (object._tag === "Bytes" && object.bytes instanceof Uint8Array && object.file === undefined) {
|
|
268
|
+
if (object.bytes.byteLength === 0 || object.bytes.byteLength > audioReferenceLimits.maxBytes)
|
|
269
|
+
return invalid("Audio exceeds the 25 MiB bound");
|
|
270
|
+
const bytes = new Uint8Array(object.bytes), audio = inspectAudio(bytes);
|
|
271
|
+
if (audio.channels !== null &&
|
|
272
|
+
(audio.channels < 1 || audio.channels > audioReferenceLimits.maxChannels))
|
|
273
|
+
return invalid("Audio must be mono or stereo");
|
|
274
|
+
if (audio.seconds !== null &&
|
|
275
|
+
(audio.seconds < audioReferenceLimits.minSeconds ||
|
|
276
|
+
audio.seconds > audioReferenceLimits.maxSeconds))
|
|
277
|
+
return invalid("Audio must be 2 to 15 seconds long");
|
|
278
|
+
material = { _tag: "Bytes", bytes };
|
|
279
|
+
facts = {
|
|
280
|
+
_tag: "ValidatedAudioReference",
|
|
281
|
+
...audio,
|
|
282
|
+
size: bytes.length,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
else if (object._tag === "Uploaded" && object.bytes === undefined) {
|
|
286
|
+
const file = checkedUpload(object.file, "audio");
|
|
287
|
+
material = { _tag: "Uploaded", file };
|
|
288
|
+
facts = {
|
|
289
|
+
_tag: "ValidatedAudioReference",
|
|
290
|
+
mimeType: file.mime_type,
|
|
291
|
+
size: Number(file.size),
|
|
292
|
+
seconds: null,
|
|
293
|
+
channels: null,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
else
|
|
297
|
+
return invalid("Audio reference must be Bytes or Uploaded");
|
|
175
298
|
const validated = Object.freeze(facts);
|
|
176
299
|
materials.set(validated, material);
|
|
177
300
|
return validated;
|
|
178
301
|
};
|
|
179
302
|
export const referenceMaterial = (reference) => materials.get(reference) ?? invalid("Unknown validated reference");
|
|
180
303
|
export const validateReference = (input) => parsedInput(() => captureReference(input), "H3 reference");
|
|
304
|
+
/**
|
|
305
|
+
* Validate an audio reference once: its container, and for WAV and FLAC its
|
|
306
|
+
* length and channels, so a request can reuse it without checking it again.
|
|
307
|
+
*/
|
|
308
|
+
export const validateAudioReference = (input) => parsedInput(() => captureAudioReference(input), "H3 reference");
|
|
181
309
|
//# sourceMappingURL=references.js.map
|