@fungi.computer/agar 0.4.0 → 0.6.0
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/dist/agent-message-meta.d.ts +12 -0
- package/dist/agent-message-meta.js +16 -0
- package/dist/agents.js +10 -1
- package/dist/backend-declaration.js +4 -5
- package/dist/backend-definition.d.ts +0 -2
- package/dist/backend-definition.js +0 -2
- package/dist/backend.d.ts +1 -2
- package/dist/backend.js +1 -2
- package/dist/errors.d.ts +6 -14
- package/dist/errors.js +16 -10
- package/dist/internal/media-diagnostic.d.ts +18 -0
- package/dist/internal/media-diagnostic.js +31 -5
- package/dist/internal/schemas.js +2 -0
- package/dist/media-json.d.ts +5 -2
- package/dist/media.d.ts +4 -1
- package/dist/media.js +4 -0
- package/dist/ui.d.ts +4 -0
- package/docs/api/backend-definition.md +3 -4
- package/docs/api/backend.md +1 -2
- package/docs/api/errors.md +14 -27
- package/docs/api/index.md +33 -7
- package/docs/api/media-json.md +6 -2
- package/package.json +3 -3
|
@@ -24,6 +24,11 @@ export declare const FungiDelegationReplySchema: z.ZodLazy<z.ZodObject<{
|
|
|
24
24
|
outcome_unknown: "outcome_unknown";
|
|
25
25
|
}>;
|
|
26
26
|
diagnostic: z.ZodOptional<z.ZodString>;
|
|
27
|
+
waitingOnYou: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
28
|
+
itemId: z.ZodLazy<z.ZodString>;
|
|
29
|
+
kind: z.ZodString;
|
|
30
|
+
summary: z.ZodString;
|
|
31
|
+
}, z.core.$strict>>>;
|
|
27
32
|
}, z.core.$strict>>;
|
|
28
33
|
/** A delegated Agent's reply as the admitting host authenticated it. */
|
|
29
34
|
export type FungiDelegationReply = z.infer<typeof FungiDelegationReplySchema>;
|
|
@@ -41,6 +46,8 @@ export declare const FungiMessageMetaSchema: z.ZodObject<{
|
|
|
41
46
|
delegation: z.ZodOptional<z.ZodObject<{
|
|
42
47
|
ancestors: z.ZodArray<z.ZodLazy<z.ZodString>>;
|
|
43
48
|
maxDepth: z.ZodNumber;
|
|
49
|
+
steer: z.ZodOptional<z.ZodLiteral<true>>;
|
|
50
|
+
goal: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
44
51
|
reply: z.ZodOptional<z.ZodLazy<z.ZodObject<{
|
|
45
52
|
agentId: z.ZodLazy<z.ZodString>;
|
|
46
53
|
sessionId: z.ZodLazy<z.ZodString>;
|
|
@@ -53,6 +60,11 @@ export declare const FungiMessageMetaSchema: z.ZodObject<{
|
|
|
53
60
|
outcome_unknown: "outcome_unknown";
|
|
54
61
|
}>;
|
|
55
62
|
diagnostic: z.ZodOptional<z.ZodString>;
|
|
63
|
+
waitingOnYou: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
64
|
+
itemId: z.ZodLazy<z.ZodString>;
|
|
65
|
+
kind: z.ZodString;
|
|
66
|
+
summary: z.ZodString;
|
|
67
|
+
}, z.core.$strict>>>;
|
|
56
68
|
}, z.core.$strict>>>;
|
|
57
69
|
}, z.core.$strict>>;
|
|
58
70
|
}, z.core.$strict>;
|
|
@@ -30,6 +30,16 @@ export const FungiDelegationReplySchema = z.lazy(() => z.strictObject({
|
|
|
30
30
|
]),
|
|
31
31
|
/** Bounded, single-line terminal diagnostic for work that did not complete. */
|
|
32
32
|
diagnostic: z.string().min(1).max(200).optional(),
|
|
33
|
+
/** Open items of the replying Session that now wait on the recipient. */
|
|
34
|
+
waitingOnYou: z
|
|
35
|
+
.array(z.strictObject({
|
|
36
|
+
itemId: identifier,
|
|
37
|
+
kind: z.string().min(1).max(64),
|
|
38
|
+
summary: z.string().min(1).max(200),
|
|
39
|
+
}))
|
|
40
|
+
.min(1)
|
|
41
|
+
.max(8)
|
|
42
|
+
.optional(),
|
|
33
43
|
}));
|
|
34
44
|
/**
|
|
35
45
|
* The metadata the host attaches to every prompt and operator line it admits.
|
|
@@ -44,6 +54,12 @@ export const FungiMessageMetaSchema = z.strictObject({
|
|
|
44
54
|
.strictObject({
|
|
45
55
|
ancestors: z.array(identifier).max(8),
|
|
46
56
|
maxDepth: z.number().int().min(1).max(8),
|
|
57
|
+
/** The sender asked to steer the recipient's running turn, not queue behind it. */
|
|
58
|
+
steer: z.literal(true).optional(),
|
|
59
|
+
/** A new recipient Session's objective; false opts out of an automatic goal. */
|
|
60
|
+
goal: z
|
|
61
|
+
.union([z.string().min(1).max(4_000), z.literal(false)])
|
|
62
|
+
.optional(),
|
|
47
63
|
/**
|
|
48
64
|
* Present only on a line the host admitted as an authenticated reply;
|
|
49
65
|
* a line's text never sets it.
|
package/dist/agents.js
CHANGED
|
@@ -150,13 +150,22 @@ async function openOperationHandles(openRead, openWrite) {
|
|
|
150
150
|
return {
|
|
151
151
|
fetch: async (request) => {
|
|
152
152
|
ensureOpen();
|
|
153
|
+
request.signal.throwIfAborted();
|
|
153
154
|
const handle = request.method === "GET" ||
|
|
154
155
|
request.method === "HEAD" ||
|
|
155
156
|
openRead === openWrite
|
|
156
157
|
? read
|
|
157
158
|
: await (write ??= openWrite());
|
|
158
159
|
ensureOpen();
|
|
159
|
-
|
|
160
|
+
request.signal.throwIfAborted();
|
|
161
|
+
const response = decodeResponse(await handle.fetch(request));
|
|
162
|
+
if (response.body === null)
|
|
163
|
+
return response;
|
|
164
|
+
// Request signals do not cross Cap'n Web. Cancelling the local response
|
|
165
|
+
// pipeline cancels its remote body, including EventSource's locked reader.
|
|
166
|
+
return new Response(response.body.pipeThrough(new TransformStream(), {
|
|
167
|
+
signal: request.signal,
|
|
168
|
+
}), response);
|
|
160
169
|
},
|
|
161
170
|
close: () => {
|
|
162
171
|
if (!closing) {
|
|
@@ -3,7 +3,7 @@ import * as Schema from "effect/Schema";
|
|
|
3
3
|
import { appApiSchema, appDeclarationSchema, } from "@fungi.computer/puffball/app";
|
|
4
4
|
/** Build-only API projection from the schemas used by runtime calls. */
|
|
5
5
|
export function buildAppApi(backend) {
|
|
6
|
-
|
|
6
|
+
const api = {
|
|
7
7
|
methods: Object.fromEntries(Object.entries(backend.methods).map(([name, method]) => [
|
|
8
8
|
name,
|
|
9
9
|
{
|
|
@@ -14,8 +14,7 @@ export function buildAppApi(backend) {
|
|
|
14
14
|
])),
|
|
15
15
|
};
|
|
16
16
|
if (backend.events !== undefined)
|
|
17
|
-
api
|
|
18
|
-
...api,
|
|
17
|
+
Object.assign(api, {
|
|
19
18
|
events: Object.fromEntries(Object.entries(backend.events).map(([name, event]) => [
|
|
20
19
|
name,
|
|
21
20
|
{
|
|
@@ -23,9 +22,9 @@ export function buildAppApi(backend) {
|
|
|
23
22
|
payload: z.toJSONSchema(event.payload, { io: "output" }),
|
|
24
23
|
},
|
|
25
24
|
])),
|
|
26
|
-
};
|
|
25
|
+
});
|
|
27
26
|
if (backend.toolFamily !== undefined)
|
|
28
|
-
api
|
|
27
|
+
Object.assign(api, { toolFamily: backend.toolFamily });
|
|
29
28
|
return Schema.decodeUnknownSync(appApiSchema)(api);
|
|
30
29
|
}
|
|
31
30
|
/** Strict build-only declaration generation; Workers never import this module. */
|
|
@@ -23,8 +23,6 @@ export type MethodPolicy = Readonly<{
|
|
|
23
23
|
requires: readonly AppCapabilityId[];
|
|
24
24
|
/** Omit this method from Workflow and tool discovery; direct calls keep their validators. */
|
|
25
25
|
hidden?: true;
|
|
26
|
-
/** Request anonymous read admission; hosts still require explicit installer approval. */
|
|
27
|
-
anonymous?: true;
|
|
28
26
|
/** Allow the shared Pending result while this method is still working. */
|
|
29
27
|
pending?: true;
|
|
30
28
|
/** Past tense for timelines ("made", "wrote"); the row itself comes from {@link MethodPresentation}. */
|
|
@@ -26,8 +26,6 @@ export function defineAppMethod(method) {
|
|
|
26
26
|
policy = { ...policy, pending: true };
|
|
27
27
|
if (method.hidden === true)
|
|
28
28
|
policy = { ...policy, hidden: true };
|
|
29
|
-
if (method.anonymous === true)
|
|
30
|
-
policy = { ...policy, anonymous: true };
|
|
31
29
|
const call = async (rawInput, context, rawCaller) => {
|
|
32
30
|
const caller = parseAppMethodCallContext(rawCaller);
|
|
33
31
|
const parsed = method.input.parse(rawInput);
|
package/dist/backend.d.ts
CHANGED
|
@@ -10,8 +10,7 @@ export declare const appBackend: CapabilityContract<{
|
|
|
10
10
|
/**
|
|
11
11
|
* Call one of this App's declared, typed methods through its host. Unlike
|
|
12
12
|
* `appBackend`, the host knows which method is called, so it can apply the
|
|
13
|
-
* method's declared effect
|
|
14
|
-
* visitor of a public App).
|
|
13
|
+
* method's declared effect.
|
|
15
14
|
*/
|
|
16
15
|
export declare const appMethods: CapabilityContract<{
|
|
17
16
|
/** Call the named method with JSON-encoded `input`; resolves with its JSON result. */
|
package/dist/backend.js
CHANGED
|
@@ -9,8 +9,7 @@ export const appBackend = defineCapability("app.backend", 1, z.lazy(() => rpcHan
|
|
|
9
9
|
/**
|
|
10
10
|
* Call one of this App's declared, typed methods through its host. Unlike
|
|
11
11
|
* `appBackend`, the host knows which method is called, so it can apply the
|
|
12
|
-
* method's declared effect
|
|
13
|
-
* visitor of a public App).
|
|
12
|
+
* method's declared effect.
|
|
14
13
|
*/
|
|
15
14
|
export const appMethods = defineCapability("app.methods", 1, z.lazy(() => rpcHandleSchema({
|
|
16
15
|
call: rpcMethod(rpcDataSchema(z.unknown().transform((value) => parseJsonValue(value)))),
|
package/dist/errors.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type MediaProviderDiagnostic = Readonly<{
|
|
|
5
5
|
category: "InferenceUpstreamError" | "AiInternalError" | "TypeError" | "AbortError" | "TimeoutError" | "Error";
|
|
6
6
|
/** Four- or five-digit provider prefix, or null when absent. */
|
|
7
7
|
code: number | null;
|
|
8
|
+
/** Host-classified provider refusal, independent of public error prose. */
|
|
9
|
+
reason?: "credits_exhausted";
|
|
8
10
|
}> | Readonly<{
|
|
9
11
|
/** A completed video result could not be downloaded. */
|
|
10
12
|
category: "result_download";
|
|
@@ -15,25 +17,15 @@ export type MediaProviderDiagnostic = Readonly<{
|
|
|
15
17
|
export declare function decodeMediaProviderDiagnostic(input: unknown): MediaProviderDiagnostic;
|
|
16
18
|
/**
|
|
17
19
|
* Documentable wire projection of the canonical diagnostic grammar.
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
+
* Its owner supplies the native Zod dialect so output declarations remain
|
|
21
|
+
* documentable without transforms, coercions or an unchecked type assertion.
|
|
20
22
|
*/
|
|
21
|
-
export declare const mediaProviderDiagnosticWireSchema: z.
|
|
22
|
-
/** Allowlisted Workers AI category; never a provider message. */
|
|
23
|
-
category: "InferenceUpstreamError" | "AiInternalError" | "TypeError" | "AbortError" | "TimeoutError" | "Error";
|
|
24
|
-
/** Four- or five-digit provider prefix, or null when absent. */
|
|
25
|
-
code: number | null;
|
|
26
|
-
}> | Readonly<{
|
|
27
|
-
/** A completed video result could not be downloaded. */
|
|
28
|
-
category: "result_download";
|
|
29
|
-
/** Native Response status, including zero. */
|
|
30
|
-
status: number;
|
|
31
|
-
}>, unknown>>;
|
|
23
|
+
export declare const mediaProviderDiagnosticWireSchema: z.ZodType<MediaProviderDiagnostic>;
|
|
32
24
|
/** Decode an ordinary Error name without retaining arbitrary upstream text. */
|
|
33
25
|
export declare function decodeMediaProviderErrorCategory(input: string | undefined): Exclude<MediaProviderDiagnostic["category"], "result_download">;
|
|
34
26
|
/** The closed set of reasons an AppError can state; every SDK and
|
|
35
27
|
* host-reported failure is tagged with exactly one of these codes. */
|
|
36
|
-
export declare const appErrorCodes: readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "COMMAND_NOT_DECLARED", "CONFLICT", "DELIVERY_PENDING", "DISCONNECTED", "FILE_TOO_LARGE", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "PROTOCOL", "SAFETY_FILTER_REFUSED", "SELECTION_CHANGED", "TIMEOUT"];
|
|
28
|
+
export declare const appErrorCodes: readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "COMMAND_NOT_DECLARED", "CONFLICT", "DELIVERY_PENDING", "DISCONNECTED", "FILE_TOO_LARGE", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "MEDIA_PROVIDER_FAILURE", "MEDIA_PROVIDER_FAILURE_UNCHARGED", "PROTOCOL", "SAFETY_FILTER_REFUSED", "SELECTION_CHANGED", "TIMEOUT"];
|
|
37
29
|
/** One closed App error code from `appErrorCodes`. */
|
|
38
30
|
export type AppErrorCode = (typeof appErrorCodes)[number];
|
|
39
31
|
/** One pending-delivery refusal shared by admission and the shell. */
|
package/dist/errors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
2
|
import * as Option from "effect/Option";
|
|
3
3
|
import * as z from "zod";
|
|
4
|
-
import { mediaProviderDiagnosticSchema, mediaProviderErrorCategorySchema, } from "./internal/media-diagnostic.js";
|
|
4
|
+
import { mediaProviderDiagnosticSchema, mediaProviderDiagnosticZodSchema, mediaProviderErrorCategorySchema, } from "./internal/media-diagnostic.js";
|
|
5
5
|
/** Decode only safe provider facts, rejecting unmodeled private fields. */
|
|
6
6
|
export function decodeMediaProviderDiagnostic(input) {
|
|
7
7
|
// Bidirectional projection check, erased from the Promise declaration graph.
|
|
@@ -11,14 +11,10 @@ export function decodeMediaProviderDiagnostic(input) {
|
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* Documentable wire projection of the canonical diagnostic grammar.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* Its owner supplies the native Zod dialect so output declarations remain
|
|
15
|
+
* documentable without transforms, coercions or an unchecked type assertion.
|
|
16
16
|
*/
|
|
17
|
-
export const mediaProviderDiagnosticWireSchema =
|
|
18
|
-
.fromJSONSchema(Schema.toJsonSchemaDocument(mediaProviderDiagnosticSchema, {
|
|
19
|
-
onExcessProperty: "error",
|
|
20
|
-
}).schema)
|
|
21
|
-
.transform(decodeMediaProviderDiagnostic);
|
|
17
|
+
export const mediaProviderDiagnosticWireSchema = mediaProviderDiagnosticZodSchema;
|
|
22
18
|
/** Decode an ordinary Error name without retaining arbitrary upstream text. */
|
|
23
19
|
export function decodeMediaProviderErrorCategory(input) {
|
|
24
20
|
return (Option.getOrUndefined(Schema.decodeUnknownOption(mediaProviderErrorCategorySchema)(input)) ?? "Error");
|
|
@@ -38,6 +34,8 @@ export const appErrorCodes = [
|
|
|
38
34
|
"IDENTITY",
|
|
39
35
|
"INSUFFICIENT_CREDIT",
|
|
40
36
|
"INVALID_ARGUMENT",
|
|
37
|
+
"MEDIA_PROVIDER_FAILURE",
|
|
38
|
+
"MEDIA_PROVIDER_FAILURE_UNCHARGED",
|
|
41
39
|
"PROTOCOL",
|
|
42
40
|
"SAFETY_FILTER_REFUSED",
|
|
43
41
|
"SELECTION_CHANGED",
|
|
@@ -116,13 +114,21 @@ const errorCopy = {
|
|
|
116
114
|
title: "Request not accepted",
|
|
117
115
|
message: "The App couldn't use the details in this request.",
|
|
118
116
|
},
|
|
117
|
+
MEDIA_PROVIDER_FAILURE: {
|
|
118
|
+
title: "Generation failed",
|
|
119
|
+
message: "The model couldn't complete this generation. Change the prompt or model and send again.",
|
|
120
|
+
},
|
|
121
|
+
MEDIA_PROVIDER_FAILURE_UNCHARGED: {
|
|
122
|
+
title: "Generation failed",
|
|
123
|
+
message: "The model couldn't complete this generation. You weren't charged. Change the prompt or model and send again.",
|
|
124
|
+
},
|
|
119
125
|
PROTOCOL: {
|
|
120
126
|
title: "Couldn't read the response",
|
|
121
127
|
message: "The App received a response it couldn't use.",
|
|
122
128
|
},
|
|
123
129
|
SAFETY_FILTER_REFUSED: {
|
|
124
|
-
title: "
|
|
125
|
-
message: "The model
|
|
130
|
+
title: "Generation refused",
|
|
131
|
+
message: "The model refused this generation. Change the prompt or reference image and send again.",
|
|
126
132
|
},
|
|
127
133
|
SELECTION_CHANGED: {
|
|
128
134
|
title: "Selection changed",
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
|
+
import * as z from "zod";
|
|
2
3
|
/** Names emitted by the maintained Workers AI boundary, never arbitrary names. */
|
|
3
4
|
export declare const mediaProviderErrorCategorySchema: Schema.Literals<readonly ["InferenceUpstreamError", "AiInternalError", "TypeError", "AbortError", "TimeoutError", "Error"]>;
|
|
4
5
|
/** One canonical grammar for safe provider facts across Media transports. */
|
|
5
6
|
export declare const mediaProviderDiagnosticSchema: Schema.Union<readonly [Schema.Struct<{
|
|
6
7
|
readonly category: Schema.Literals<readonly ["InferenceUpstreamError", "AiInternalError", "TypeError", "AbortError", "TimeoutError", "Error"]>;
|
|
7
8
|
readonly code: Schema.NullOr<Schema.Int>;
|
|
9
|
+
readonly reason: Schema.optionalKey<Schema.Literal<"credits_exhausted">>;
|
|
8
10
|
}>, Schema.Struct<{
|
|
9
11
|
readonly category: Schema.Literal<"result_download">;
|
|
10
12
|
readonly status: Schema.Int;
|
|
11
13
|
}>]>;
|
|
14
|
+
/** Documentable Promise transport grammar; this module owns both schema dialects. */
|
|
15
|
+
export declare const mediaProviderDiagnosticZodSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
16
|
+
category: z.ZodEnum<{
|
|
17
|
+
InferenceUpstreamError: "InferenceUpstreamError";
|
|
18
|
+
AiInternalError: "AiInternalError";
|
|
19
|
+
TypeError: "TypeError";
|
|
20
|
+
AbortError: "AbortError";
|
|
21
|
+
TimeoutError: "TimeoutError";
|
|
22
|
+
Error: "Error";
|
|
23
|
+
}>;
|
|
24
|
+
code: z.ZodNullable<z.ZodNumber>;
|
|
25
|
+
reason: z.ZodOptional<z.ZodLiteral<"credits_exhausted">>;
|
|
26
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
27
|
+
category: z.ZodLiteral<"result_download">;
|
|
28
|
+
status: z.ZodNumber;
|
|
29
|
+
}, z.core.$strict>]>;
|
|
@@ -1,21 +1,47 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import * as z from "zod";
|
|
3
|
+
const categories = [
|
|
4
4
|
"InferenceUpstreamError",
|
|
5
5
|
"AiInternalError",
|
|
6
6
|
"TypeError",
|
|
7
7
|
"AbortError",
|
|
8
8
|
"TimeoutError",
|
|
9
9
|
"Error",
|
|
10
|
-
]
|
|
10
|
+
];
|
|
11
|
+
const providerCodeBounds = { minimum: 0, maximum: 99_999 };
|
|
12
|
+
const responseStatusBounds = { minimum: 0, maximum: 599 };
|
|
13
|
+
/** Names emitted by the maintained Workers AI boundary, never arbitrary names. */
|
|
14
|
+
export const mediaProviderErrorCategorySchema = Schema.Literals(categories);
|
|
11
15
|
/** One canonical grammar for safe provider facts across Media transports. */
|
|
12
16
|
export const mediaProviderDiagnosticSchema = Schema.Union([
|
|
13
17
|
Schema.Struct({
|
|
14
18
|
category: mediaProviderErrorCategorySchema,
|
|
15
|
-
code: Schema.NullOr(Schema.Int.check(Schema.isBetween(
|
|
19
|
+
code: Schema.NullOr(Schema.Int.check(Schema.isBetween(providerCodeBounds))),
|
|
20
|
+
reason: Schema.optionalKey(Schema.Literal("credits_exhausted")),
|
|
16
21
|
}),
|
|
17
22
|
Schema.Struct({
|
|
18
23
|
category: Schema.Literal("result_download"),
|
|
19
|
-
status: Schema.Int.check(Schema.isBetween(
|
|
24
|
+
status: Schema.Int.check(Schema.isBetween(responseStatusBounds)),
|
|
25
|
+
}),
|
|
26
|
+
]);
|
|
27
|
+
/** Documentable Promise transport grammar; this module owns both schema dialects. */
|
|
28
|
+
export const mediaProviderDiagnosticZodSchema = z.union([
|
|
29
|
+
z.strictObject({
|
|
30
|
+
category: z.enum(categories),
|
|
31
|
+
code: z
|
|
32
|
+
.number()
|
|
33
|
+
.int()
|
|
34
|
+
.min(providerCodeBounds.minimum)
|
|
35
|
+
.max(providerCodeBounds.maximum)
|
|
36
|
+
.nullable(),
|
|
37
|
+
reason: z.literal("credits_exhausted").optional(),
|
|
38
|
+
}),
|
|
39
|
+
z.strictObject({
|
|
40
|
+
category: z.literal("result_download"),
|
|
41
|
+
status: z
|
|
42
|
+
.number()
|
|
43
|
+
.int()
|
|
44
|
+
.min(responseStatusBounds.minimum)
|
|
45
|
+
.max(responseStatusBounds.maximum),
|
|
20
46
|
}),
|
|
21
47
|
]);
|
package/dist/internal/schemas.js
CHANGED
|
@@ -123,6 +123,8 @@ const statusItemsSchema = Schema.Array(Schema.Union([
|
|
|
123
123
|
kind: Schema.Literal("button"),
|
|
124
124
|
icon: Schema.optionalKey(Schema.Literals(["folder", "ports", "processes", "access"])),
|
|
125
125
|
count: statusCount,
|
|
126
|
+
tone: Schema.optionalKey(Schema.Literals(["neutral", "success", "warning", "error"])),
|
|
127
|
+
busy: Schema.optionalKey(Schema.Boolean),
|
|
126
128
|
title: Schema.optionalKey(statusText(1_024)),
|
|
127
129
|
disabled: Schema.optionalKey(Schema.Boolean),
|
|
128
130
|
opens: Schema.optionalKey(Schema.Literal("dialog")),
|
package/dist/media-json.d.ts
CHANGED
|
@@ -75,6 +75,7 @@ export declare const mediaGenerationJsonRequestSchema: Schema.Struct<{
|
|
|
75
75
|
readonly aspectRatio: Schema.optional<Schema.Literals<readonly ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "9:21"]>>;
|
|
76
76
|
readonly generateAudio: Schema.optional<Schema.Boolean>;
|
|
77
77
|
readonly references: Schema.optional<Schema.$Array<Schema.Struct<{
|
|
78
|
+
readonly computerId: Schema.optional<Schema.String>;
|
|
78
79
|
readonly path: Schema.String;
|
|
79
80
|
readonly role: Schema.optional<Schema.Literals<readonly ["first-frame", "last-frame", "reference"]>>;
|
|
80
81
|
}>>>;
|
|
@@ -115,11 +116,12 @@ export declare const mediaGenerationJsonOutcomeSchema: Schema.Union<readonly [Sc
|
|
|
115
116
|
readonly provider: Schema.optional<Schema.Union<readonly [Schema.Struct<{
|
|
116
117
|
readonly category: Schema.Literals<readonly ["InferenceUpstreamError", "AiInternalError", "TypeError", "AbortError", "TimeoutError", "Error"]>;
|
|
117
118
|
readonly code: Schema.NullOr<Schema.Int>;
|
|
119
|
+
readonly reason: Schema.optionalKey<Schema.Literal<"credits_exhausted">>;
|
|
118
120
|
}>, Schema.Struct<{
|
|
119
121
|
readonly category: Schema.Literal<"result_download">;
|
|
120
122
|
readonly status: Schema.Int;
|
|
121
123
|
}>]>>;
|
|
122
|
-
readonly code: Schema.Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
124
|
+
readonly code: Schema.Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "MEDIA_PROVIDER_FAILURE", "MEDIA_PROVIDER_FAILURE_UNCHARGED", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
123
125
|
readonly retryable: Schema.Boolean;
|
|
124
126
|
}>;
|
|
125
127
|
}>]>;
|
|
@@ -151,11 +153,12 @@ export declare const mediaGenerationJsonReplySchema: Schema.Union<readonly [Sche
|
|
|
151
153
|
readonly provider: Schema.optional<Schema.Union<readonly [Schema.Struct<{
|
|
152
154
|
readonly category: Schema.Literals<readonly ["InferenceUpstreamError", "AiInternalError", "TypeError", "AbortError", "TimeoutError", "Error"]>;
|
|
153
155
|
readonly code: Schema.NullOr<Schema.Int>;
|
|
156
|
+
readonly reason: Schema.optionalKey<Schema.Literal<"credits_exhausted">>;
|
|
154
157
|
}>, Schema.Struct<{
|
|
155
158
|
readonly category: Schema.Literal<"result_download">;
|
|
156
159
|
readonly status: Schema.Int;
|
|
157
160
|
}>]>>;
|
|
158
|
-
readonly code: Schema.Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
161
|
+
readonly code: Schema.Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "MEDIA_PROVIDER_FAILURE", "MEDIA_PROVIDER_FAILURE_UNCHARGED", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
159
162
|
readonly retryable: Schema.Boolean;
|
|
160
163
|
}>;
|
|
161
164
|
}>]>, Schema.declare<Readonly<{
|
package/dist/media.d.ts
CHANGED
|
@@ -278,6 +278,8 @@ export declare const mediaGenerationSelectionSchema: Schema.Struct<{
|
|
|
278
278
|
readonly aspectRatio: Schema.optional<Schema.Literals<readonly ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "9:21"]>>;
|
|
279
279
|
readonly generateAudio: Schema.optional<Schema.Boolean>;
|
|
280
280
|
readonly references: Schema.optional<Schema.$Array<Schema.Struct<{
|
|
281
|
+
/** Omit for the selected Computer; a named Computer requires its own authorization. */
|
|
282
|
+
readonly computerId: Schema.optional<Schema.String>;
|
|
281
283
|
readonly path: Schema.String;
|
|
282
284
|
readonly role: Schema.optional<Schema.Literals<readonly ["first-frame", "last-frame", "reference"]>>;
|
|
283
285
|
}>>>;
|
|
@@ -357,11 +359,12 @@ export declare const mediaGenerationFailureSchema: Schema.Struct<{
|
|
|
357
359
|
readonly provider: Schema.optional<Schema.Union<readonly [Schema.Struct<{
|
|
358
360
|
readonly category: Schema.Literals<readonly ["InferenceUpstreamError", "AiInternalError", "TypeError", "AbortError", "TimeoutError", "Error"]>;
|
|
359
361
|
readonly code: Schema.NullOr<Schema.Int>;
|
|
362
|
+
readonly reason: Schema.optionalKey<Schema.Literal<"credits_exhausted">>;
|
|
360
363
|
}>, Schema.Struct<{
|
|
361
364
|
readonly category: Schema.Literal<"result_download">;
|
|
362
365
|
readonly status: Schema.Int;
|
|
363
366
|
}>]>>;
|
|
364
|
-
readonly code: Schema.Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
367
|
+
readonly code: Schema.Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "MEDIA_PROVIDER_FAILURE", "MEDIA_PROVIDER_FAILURE_UNCHARGED", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
365
368
|
readonly retryable: Schema.Boolean;
|
|
366
369
|
}>;
|
|
367
370
|
/** Capability contract for generating Media (images or video). Apps
|
package/dist/media.js
CHANGED
|
@@ -109,6 +109,8 @@ export const mediaVideoAspectRatioSchema = Schema.Literals([
|
|
|
109
109
|
"9:21",
|
|
110
110
|
]);
|
|
111
111
|
const referenceSchema = Schema.Struct({
|
|
112
|
+
/** Omit for the selected Computer; a named Computer requires its own authorization. */
|
|
113
|
+
computerId: Schema.optional(text(256)),
|
|
112
114
|
path: text(4_096),
|
|
113
115
|
role: Schema.optional(mediaVideoReferenceRoleSchema),
|
|
114
116
|
});
|
|
@@ -297,6 +299,8 @@ export const mediaGenerationFailureSchema = Schema.Struct({
|
|
|
297
299
|
"IDENTITY",
|
|
298
300
|
"INSUFFICIENT_CREDIT",
|
|
299
301
|
"INVALID_ARGUMENT",
|
|
302
|
+
"MEDIA_PROVIDER_FAILURE",
|
|
303
|
+
"MEDIA_PROVIDER_FAILURE_UNCHARGED",
|
|
300
304
|
"PROTOCOL",
|
|
301
305
|
"SAFETY_FILTER_REFUSED",
|
|
302
306
|
"TIMEOUT",
|
package/dist/ui.d.ts
CHANGED
|
@@ -74,6 +74,10 @@ export type AppStatusItem = Readonly<{
|
|
|
74
74
|
icon?: AppStatusIcon;
|
|
75
75
|
/** A positive count after the label; zero is hidden. */
|
|
76
76
|
count?: number;
|
|
77
|
+
/** A small status light before the label; omitted draws none. */
|
|
78
|
+
tone?: AppStatusTone;
|
|
79
|
+
/** Work is under way: the light pulses (neutral tone when none is set). */
|
|
80
|
+
busy?: boolean;
|
|
77
81
|
/** A longer description, such as a full folder path. */
|
|
78
82
|
title?: string;
|
|
79
83
|
disabled?: boolean;
|
|
@@ -28,7 +28,6 @@ type MethodPolicy = Readonly<{
|
|
|
28
28
|
effect: "read" | "write" | "external";
|
|
29
29
|
requires: readonly AppCapabilityId[];
|
|
30
30
|
hidden?: true;
|
|
31
|
-
anonymous?: true;
|
|
32
31
|
pending?: true;
|
|
33
32
|
present?: Readonly<{
|
|
34
33
|
verb: string;
|
|
@@ -229,9 +228,9 @@ Define a typed method once; neither discovery nor builds execute its handler.
|
|
|
229
228
|
|
|
230
229
|
#### Parameters
|
|
231
230
|
|
|
232
|
-
| Parameter | Type
|
|
233
|
-
| --------- |
|
|
234
|
-
| `method` | `Omit`\<`Readonly`\<\{ `description`: `string`; `effect`: `"external"` \| `"read"` \| `"write"`; `requires`: readonly ( \| `"agent.list"` \| `"agent.manage"` \| `"agent.read"` \| `"agent.send"` \| `"computer.list"` \| `"computer.readFile"` \| `"computer.writeFile"` \| `"computer.execute"` \| `"agent.rename"` \| `"agent.avatar"` \| `"agent.toolPolicy"` \| `"approvals"` \| `"apps.open"` \| `"apps.call"` \| `"llm.generation"` \| `"media.generation"` \| `"games:servers"` \| `"git.repository"` \| `"app.storage"` \| `"app.events.emit"` \| `"team.workbenchHost"` \| `"marketplace.browse"` \| `"marketplace.purchase"` \| `"workflow.run"` \| `"workflow.publish"` \| `"workflow.arm"` \| `"world"` \| `"channels.read"` \| `"channels.personal.manage"`)[]; `hidden?`: `true`; `
|
|
231
|
+
| Parameter | Type |
|
|
232
|
+
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
233
|
+
| `method` | `Omit`\<`Readonly`\<\{ `description`: `string`; `effect`: `"external"` \| `"read"` \| `"write"`; `requires`: readonly ( \| `"agent.list"` \| `"agent.manage"` \| `"agent.read"` \| `"agent.send"` \| `"computer.list"` \| `"computer.readFile"` \| `"computer.writeFile"` \| `"computer.execute"` \| `"agent.rename"` \| `"agent.avatar"` \| `"agent.toolPolicy"` \| `"approvals"` \| `"apps.open"` \| `"apps.call"` \| `"llm.generation"` \| `"media.generation"` \| `"games:servers"` \| `"git.repository"` \| `"app.storage"` \| `"app.events.emit"` \| `"team.workbenchHost"` \| `"marketplace.browse"` \| `"marketplace.purchase"` \| `"workflow.run"` \| `"workflow.publish"` \| `"workflow.arm"` \| `"world"` \| `"channels.read"` \| `"channels.personal.manage"`)[]; `hidden?`: `true`; `pending?`: `true`; `present?`: `Readonly`\<\{ `verb`: `string`; \}\>; \}\>, `"present"`\> & \{ input: I; output: O; present?: Readonly\<\{ verb: string; row: (call: Readonly\<\{ input: output\<I\>; output: output\<O\>; \}\>) =\> \{ readonly id: string; readonly title: string; ... 4 more ...; readonly media?: \{ ...; \} \| undefined; \}; rows: Readonly\<...\>; \}\> \| undefined; \} & (\{ ...; \} \| \{ ...; \}) |
|
|
235
234
|
|
|
236
235
|
#### Returns
|
|
237
236
|
|
package/docs/api/backend.md
CHANGED
|
@@ -135,8 +135,7 @@ const appMethods: CapabilityContract<{
|
|
|
135
135
|
|
|
136
136
|
Call one of this App's declared, typed methods through its host. Unlike
|
|
137
137
|
`appBackend`, the host knows which method is called, so it can apply the
|
|
138
|
-
method's declared effect
|
|
139
|
-
a public App).
|
|
138
|
+
method's declared effect.
|
|
140
139
|
|
|
141
140
|
---
|
|
142
141
|
|
package/docs/api/errors.md
CHANGED
|
@@ -63,6 +63,8 @@ readonly code:
|
|
|
63
63
|
| "IDENTITY"
|
|
64
64
|
| "INSUFFICIENT_CREDIT"
|
|
65
65
|
| "INVALID_ARGUMENT"
|
|
66
|
+
| "MEDIA_PROVIDER_FAILURE"
|
|
67
|
+
| "MEDIA_PROVIDER_FAILURE_UNCHARGED"
|
|
66
68
|
| "PROTOCOL"
|
|
67
69
|
| "SAFETY_FILTER_REFUSED"
|
|
68
70
|
| "SELECTION_CHANGED"
|
|
@@ -90,6 +92,7 @@ type MediaProviderDiagnostic =
|
|
|
90
92
|
| "TimeoutError"
|
|
91
93
|
| "Error";
|
|
92
94
|
code: number | null;
|
|
95
|
+
reason?: "credits_exhausted";
|
|
93
96
|
}>
|
|
94
97
|
| Readonly<{
|
|
95
98
|
category: "result_download";
|
|
@@ -186,31 +189,13 @@ automatically.
|
|
|
186
189
|
### mediaProviderDiagnosticWireSchema
|
|
187
190
|
|
|
188
191
|
```ts
|
|
189
|
-
const mediaProviderDiagnosticWireSchema:
|
|
190
|
-
|
|
191
|
-
ZodTransform<
|
|
192
|
-
| Readonly<{
|
|
193
|
-
category:
|
|
194
|
-
| "InferenceUpstreamError"
|
|
195
|
-
| "AiInternalError"
|
|
196
|
-
| "TypeError"
|
|
197
|
-
| "AbortError"
|
|
198
|
-
| "TimeoutError"
|
|
199
|
-
| "Error";
|
|
200
|
-
code: number | null;
|
|
201
|
-
}>
|
|
202
|
-
| Readonly<{
|
|
203
|
-
category: "result_download";
|
|
204
|
-
status: number;
|
|
205
|
-
}>,
|
|
206
|
-
unknown
|
|
207
|
-
>
|
|
208
|
-
>;
|
|
192
|
+
const mediaProviderDiagnosticWireSchema: z.ZodType<MediaProviderDiagnostic> =
|
|
193
|
+
mediaProviderDiagnosticZodSchema;
|
|
209
194
|
```
|
|
210
195
|
|
|
211
|
-
Documentable wire projection of the canonical diagnostic grammar.
|
|
212
|
-
|
|
213
|
-
|
|
196
|
+
Documentable wire projection of the canonical diagnostic grammar. Its owner
|
|
197
|
+
supplies the native Zod dialect so output declarations remain documentable
|
|
198
|
+
without transforms, coercions or an unchecked type assertion.
|
|
214
199
|
|
|
215
200
|
---
|
|
216
201
|
|
|
@@ -230,6 +215,8 @@ const appErrorCodes: readonly [
|
|
|
230
215
|
"IDENTITY",
|
|
231
216
|
"INSUFFICIENT_CREDIT",
|
|
232
217
|
"INVALID_ARGUMENT",
|
|
218
|
+
"MEDIA_PROVIDER_FAILURE",
|
|
219
|
+
"MEDIA_PROVIDER_FAILURE_UNCHARGED",
|
|
233
220
|
"PROTOCOL",
|
|
234
221
|
"SAFETY_FILTER_REFUSED",
|
|
235
222
|
"SELECTION_CHANGED",
|
|
@@ -303,10 +290,10 @@ prerequisites, so they can accompany a non-retryable operation.
|
|
|
303
290
|
|
|
304
291
|
#### Parameters
|
|
305
292
|
|
|
306
|
-
| Parameter | Type
|
|
307
|
-
| ------------ |
|
|
308
|
-
| `cause` | `unknown`
|
|
309
|
-
| `overrides?` | `Partial`\<`Record`\< \| `"CANCELLED"` \| `"CAPABILITY_DENIED"` \| `"CAPABILITY_REVOKED"` \| `"COMMAND_NOT_DECLARED"` \| `"CONFLICT"` \| `"DELIVERY_PENDING"` \| `"DISCONNECTED"` \| `"FILE_TOO_LARGE"` \| `"HOST_FAILURE"` \| `"IDENTITY"` \| `"INSUFFICIENT_CREDIT"` \| `"INVALID_ARGUMENT"` \| `"PROTOCOL"` \| `"SAFETY_FILTER_REFUSED"` \| `"SELECTION_CHANGED"` \| `"TIMEOUT"`, `Readonly`\<\{ `title`: `string`; `message`: `string`; \}\>\>\> |
|
|
293
|
+
| Parameter | Type |
|
|
294
|
+
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
295
|
+
| `cause` | `unknown` |
|
|
296
|
+
| `overrides?` | `Partial`\<`Record`\< \| `"CANCELLED"` \| `"CAPABILITY_DENIED"` \| `"CAPABILITY_REVOKED"` \| `"COMMAND_NOT_DECLARED"` \| `"CONFLICT"` \| `"DELIVERY_PENDING"` \| `"DISCONNECTED"` \| `"FILE_TOO_LARGE"` \| `"HOST_FAILURE"` \| `"IDENTITY"` \| `"INSUFFICIENT_CREDIT"` \| `"INVALID_ARGUMENT"` \| `"MEDIA_PROVIDER_FAILURE"` \| `"MEDIA_PROVIDER_FAILURE_UNCHARGED"` \| `"PROTOCOL"` \| `"SAFETY_FILTER_REFUSED"` \| `"SELECTION_CHANGED"` \| `"TIMEOUT"`, `Readonly`\<\{ `title`: `string`; `message`: `string`; \}\>\>\> |
|
|
310
297
|
|
|
311
298
|
#### Returns
|
|
312
299
|
|
package/docs/api/index.md
CHANGED
|
@@ -1627,6 +1627,8 @@ type AppStatusItem =
|
|
|
1627
1627
|
kind: "button";
|
|
1628
1628
|
icon?: AppStatusIcon;
|
|
1629
1629
|
count?: number;
|
|
1630
|
+
tone?: AppStatusTone;
|
|
1631
|
+
busy?: boolean;
|
|
1630
1632
|
title?: string;
|
|
1631
1633
|
disabled?: boolean;
|
|
1632
1634
|
opens?: "dialog";
|
|
@@ -2071,6 +2073,18 @@ const FungiDelegationReplySchema: ZodLazy<
|
|
|
2071
2073
|
outcome_unknown: "outcome_unknown";
|
|
2072
2074
|
}>;
|
|
2073
2075
|
diagnostic: ZodOptional<ZodString>;
|
|
2076
|
+
waitingOnYou: ZodOptional<
|
|
2077
|
+
ZodArray<
|
|
2078
|
+
ZodObject<
|
|
2079
|
+
{
|
|
2080
|
+
itemId: ZodLazy<ZodString>;
|
|
2081
|
+
kind: ZodString;
|
|
2082
|
+
summary: ZodString;
|
|
2083
|
+
},
|
|
2084
|
+
$strict
|
|
2085
|
+
>
|
|
2086
|
+
>
|
|
2087
|
+
>;
|
|
2074
2088
|
},
|
|
2075
2089
|
$strict
|
|
2076
2090
|
>
|
|
@@ -2096,6 +2110,8 @@ const FungiMessageMetaSchema: ZodObject<{
|
|
|
2096
2110
|
delegation: ZodOptional<ZodObject<{
|
|
2097
2111
|
ancestors: ZodArray<ZodLazy<ZodString>>;
|
|
2098
2112
|
maxDepth: ZodNumber;
|
|
2113
|
+
steer: ZodOptional<ZodLiteral<true>>;
|
|
2114
|
+
goal: ZodOptional<ZodUnion<readonly [ZodString, ZodLiteral<false>]>>;
|
|
2099
2115
|
reply: ZodOptional<ZodLazy<ZodObject<{
|
|
2100
2116
|
agentId: ZodLazy<ZodString>;
|
|
2101
2117
|
sessionId: ZodLazy<ZodString>;
|
|
@@ -2108,6 +2124,7 @@ const FungiMessageMetaSchema: ZodObject<{
|
|
|
2108
2124
|
outcome_unknown: ...;
|
|
2109
2125
|
}>;
|
|
2110
2126
|
diagnostic: ZodOptional<ZodString>;
|
|
2127
|
+
waitingOnYou: ZodOptional<ZodArray<...>>;
|
|
2111
2128
|
}, $strict>>>;
|
|
2112
2129
|
}, $strict>>;
|
|
2113
2130
|
}, $strict>;
|
|
@@ -2607,6 +2624,7 @@ const mediaModelSchema: Struct<{
|
|
|
2607
2624
|
defaultWidth: Number;
|
|
2608
2625
|
dimensions: Literals<readonly ["none", "own"]>;
|
|
2609
2626
|
maxDimension: NullOr<Number>;
|
|
2627
|
+
maxDimensionDocumented: Boolean;
|
|
2610
2628
|
maxReferences: Number;
|
|
2611
2629
|
maxSteps: NullOr<Number>;
|
|
2612
2630
|
referenceField: NullOr<String>;
|
|
@@ -2644,6 +2662,7 @@ const mediaModelSchema: Struct<{
|
|
|
2644
2662
|
defaultAspectRatio: Literals<
|
|
2645
2663
|
readonly ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "9:21"]
|
|
2646
2664
|
>;
|
|
2665
|
+
supportsAudio: Boolean;
|
|
2647
2666
|
defaultGenerateAudio: NullOr<Boolean>;
|
|
2648
2667
|
referenceRoles: $Array<
|
|
2649
2668
|
Literals<readonly ["first-frame", "last-frame", "reference"]>
|
|
@@ -2690,6 +2709,7 @@ const mediaGenerationSelectionSchema: Struct<{
|
|
|
2690
2709
|
references: optional<
|
|
2691
2710
|
$Array<
|
|
2692
2711
|
Struct<{
|
|
2712
|
+
computerId: optional<String>;
|
|
2693
2713
|
path: String;
|
|
2694
2714
|
role: optional<
|
|
2695
2715
|
Literals<readonly ["first-frame", "last-frame", "reference"]>
|
|
@@ -2743,6 +2763,7 @@ const mediaGenerationFailureSchema: Struct<{
|
|
|
2743
2763
|
]
|
|
2744
2764
|
>;
|
|
2745
2765
|
code: NullOr<Int>;
|
|
2766
|
+
reason: optionalKey<Literal<"credits_exhausted">>;
|
|
2746
2767
|
}>,
|
|
2747
2768
|
Struct<{
|
|
2748
2769
|
category: Literal<"result_download">;
|
|
@@ -2761,6 +2782,8 @@ const mediaGenerationFailureSchema: Struct<{
|
|
|
2761
2782
|
"IDENTITY",
|
|
2762
2783
|
"INSUFFICIENT_CREDIT",
|
|
2763
2784
|
"INVALID_ARGUMENT",
|
|
2785
|
+
"MEDIA_PROVIDER_FAILURE",
|
|
2786
|
+
"MEDIA_PROVIDER_FAILURE_UNCHARGED",
|
|
2764
2787
|
"PROTOCOL",
|
|
2765
2788
|
"SAFETY_FILTER_REFUSED",
|
|
2766
2789
|
"TIMEOUT",
|
|
@@ -3055,6 +3078,7 @@ function messageDelegationReply(meta):
|
|
|
3055
3078
|
| "cancelled"
|
|
3056
3079
|
| "outcome_unknown";
|
|
3057
3080
|
diagnostic?: string;
|
|
3081
|
+
waitingOnYou?: object[];
|
|
3058
3082
|
}
|
|
3059
3083
|
| undefined;
|
|
3060
3084
|
```
|
|
@@ -3079,16 +3103,18 @@ other line, including text that merely looks like a reply.
|
|
|
3079
3103
|
commandId: string;
|
|
3080
3104
|
outcome: "completed" | "failed" | "interrupted" | "cancelled" | "outcome_unknown";
|
|
3081
3105
|
diagnostic?: string;
|
|
3106
|
+
waitingOnYou?: object[];
|
|
3082
3107
|
}
|
|
3083
3108
|
```
|
|
3084
3109
|
|
|
3085
|
-
| Name
|
|
3086
|
-
|
|
|
3087
|
-
| `agentId`
|
|
3088
|
-
| `sessionId`
|
|
3089
|
-
| `commandId`
|
|
3090
|
-
| `outcome`
|
|
3091
|
-
| `diagnostic?`
|
|
3110
|
+
| Name | Type | Default value | Description |
|
|
3111
|
+
| --------------- | -------------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------ |
|
|
3112
|
+
| `agentId` | `string` | `identifier` | - |
|
|
3113
|
+
| `sessionId` | `string` | `identifier` | - |
|
|
3114
|
+
| `commandId` | `string` | `identifier` | - |
|
|
3115
|
+
| `outcome` | `"completed"` \| `"failed"` \| `"interrupted"` \| `"cancelled"` \| `"outcome_unknown"` | - | The exact settlement outcome; failures are never collapsed. |
|
|
3116
|
+
| `diagnostic?` | `string` | - | Bounded, single-line terminal diagnostic for work that did not complete. |
|
|
3117
|
+
| `waitingOnYou?` | `object`[] | - | Open items of the replying Session that now wait on the recipient. |
|
|
3092
3118
|
|
|
3093
3119
|
---
|
|
3094
3120
|
|
package/docs/api/media-json.md
CHANGED
|
@@ -323,6 +323,7 @@ const mediaGenerationDescriptionSchema: Struct<{
|
|
|
323
323
|
defaultWidth: Number;
|
|
324
324
|
dimensions: Literals<readonly ["none", "own"]>;
|
|
325
325
|
maxDimension: NullOr<Number>;
|
|
326
|
+
maxDimensionDocumented: Boolean;
|
|
326
327
|
maxReferences: Number;
|
|
327
328
|
maxSteps: NullOr<Number>;
|
|
328
329
|
referenceField: NullOr<String>;
|
|
@@ -349,6 +350,7 @@ const mediaGenerationDescriptionSchema: Struct<{
|
|
|
349
350
|
}>>;
|
|
350
351
|
defaultResolution: Literals<readonly ["480p", "720p", "768p", "1080p", "4k"]>;
|
|
351
352
|
defaultAspectRatio: Literals<readonly ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "9:21"]>;
|
|
353
|
+
supportsAudio: Boolean;
|
|
352
354
|
defaultGenerateAudio: NullOr<Boolean>;
|
|
353
355
|
referenceRoles: $Array<Literals<readonly [..., ..., ...]>>;
|
|
354
356
|
maxReferenceImages: Number;
|
|
@@ -383,6 +385,7 @@ const mediaGenerationJsonRequestSchema: Struct<{
|
|
|
383
385
|
aspectRatio: optional<Literals<readonly ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "9:21"]>>;
|
|
384
386
|
generateAudio: optional<Boolean>;
|
|
385
387
|
references: optional<$Array<Struct<{
|
|
388
|
+
computerId: optional<String>;
|
|
386
389
|
path: String;
|
|
387
390
|
role: optional<Literals<readonly [..., ..., ...]>>;
|
|
388
391
|
}>>>;
|
|
@@ -423,11 +426,12 @@ const mediaGenerationJsonOutcomeSchema: Union<readonly [Struct<{
|
|
|
423
426
|
provider: optional<Union<readonly [Struct<{
|
|
424
427
|
category: ...;
|
|
425
428
|
code: ...;
|
|
429
|
+
reason: ...;
|
|
426
430
|
}>, Struct<{
|
|
427
431
|
category: ...;
|
|
428
432
|
status: ...;
|
|
429
433
|
}>]>>;
|
|
430
|
-
code: Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
434
|
+
code: Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "MEDIA_PROVIDER_FAILURE", "MEDIA_PROVIDER_FAILURE_UNCHARGED", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
431
435
|
retryable: Boolean;
|
|
432
436
|
}>;
|
|
433
437
|
}>]>;
|
|
@@ -461,7 +465,7 @@ const mediaGenerationJsonReplySchema: Union<readonly [Union<readonly [Struct<{
|
|
|
461
465
|
message: String;
|
|
462
466
|
stage: optional<Literals<readonly [..., ..., ..., ..., ..., ..., ..., ..., ..., ..., ...]>>;
|
|
463
467
|
provider: optional<Union<readonly [..., ...]>>;
|
|
464
|
-
code: Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
468
|
+
code: Literals<readonly ["CANCELLED", "CAPABILITY_DENIED", "CAPABILITY_REVOKED", "DISCONNECTED", "HOST_FAILURE", "IDENTITY", "INSUFFICIENT_CREDIT", "INVALID_ARGUMENT", "MEDIA_PROVIDER_FAILURE", "MEDIA_PROVIDER_FAILURE_UNCHARGED", "PROTOCOL", "SAFETY_FILTER_REFUSED", "TIMEOUT"]>;
|
|
465
469
|
retryable: Boolean;
|
|
466
470
|
}>;
|
|
467
471
|
}>]>, declare<Readonly<{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fungi.computer/agar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"author": "Levi <levi@technomancy.dev>",
|
|
5
5
|
"description": "App contract for fungi.computer: typed backend methods, host capabilities and the App frontend connection",
|
|
6
6
|
"type": "module",
|
|
@@ -168,8 +168,8 @@
|
|
|
168
168
|
}
|
|
169
169
|
},
|
|
170
170
|
"dependencies": {
|
|
171
|
-
"@fungi.computer/puffball": "0.
|
|
172
|
-
"@fungi.computer/whistle": "0.
|
|
171
|
+
"@fungi.computer/puffball": "0.3.0",
|
|
172
|
+
"@fungi.computer/whistle": "0.3.0",
|
|
173
173
|
"@opentui/keymap": "0.5.10",
|
|
174
174
|
"@fungi.computer/capnweb": "0.12.0",
|
|
175
175
|
"effect": "4.0.2",
|