@fungi.computer/oyster 0.7.0 → 0.8.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/README.md +9 -8
- package/dist/agent-schedules.d.ts +11 -0
- package/dist/agent-schedules.js +2 -0
- package/dist/boot-host-script.js +1 -1
- package/dist/build/candidate-cli.mjs +11 -1
- package/dist/build/local-build.d.ts +7 -1
- package/dist/host.js +3 -3
- package/dist/installation-execution.js +4 -0
- package/dist/page-script.js +2 -2
- package/dist/standalone/agents.d.ts +30 -1
- package/dist/standalone/agents.js +19 -2
- package/dist/standalone/workflow-binding.d.ts +4 -2
- package/dist/standalone/workflow-binding.js +9 -1
- package/dist/standalone/workflow-schedules.d.ts +19 -1
- package/dist/standalone/workflow-schedules.js +8 -1
- package/dist/standalone/workflows.d.ts +18 -0
- package/dist/standalone/workflows.js +3 -0
- package/dist/workflows.d.ts +2 -0
- package/dist/workflows.js +1 -0
- package/docs/api/agent-schedules.md +1 -0
- package/docs/api/build.md +4 -3
- package/docs/api/workers.md +13 -13
- package/package.json +18 -18
|
@@ -135,7 +135,7 @@ export declare abstract class StandaloneAgentBase<Env extends StandaloneAgentEnv
|
|
|
135
135
|
/** One admitted Agent's bounded native schedule page; this is not a directory scan. */
|
|
136
136
|
readSchedules(directory: typeof policyDirectorySchema.Type, input: AppAgentScheduleListInput): Promise<AgentSchedulePage>;
|
|
137
137
|
/** Manage authority returns native identity/state only, never schedule content. */
|
|
138
|
-
controlSchedule(directory: typeof policyDirectorySchema.Type, input: AgentScheduleTarget, action: "pause" | "delete"): Promise<AgentScheduleControlReceipt>;
|
|
138
|
+
controlSchedule(directory: typeof policyDirectorySchema.Type, input: AgentScheduleTarget, action: "pause" | "resume" | "delete"): Promise<AgentScheduleControlReceipt>;
|
|
139
139
|
/** Listeners from live codemode acquisitions, told when the server list changes. */
|
|
140
140
|
private readonly mcpInvalidations;
|
|
141
141
|
private storedMcpServers;
|
|
@@ -421,6 +421,35 @@ export declare const agentFrameMethods: {
|
|
|
421
421
|
id: string;
|
|
422
422
|
};
|
|
423
423
|
};
|
|
424
|
+
resumeSchedule: {
|
|
425
|
+
decodeArgs: (raw: readonly unknown[]) => [{
|
|
426
|
+
kind: "almanac";
|
|
427
|
+
agentId: string;
|
|
428
|
+
scheduleId: string;
|
|
429
|
+
} | {
|
|
430
|
+
kind: "loop";
|
|
431
|
+
agentId: string;
|
|
432
|
+
sessionId: string;
|
|
433
|
+
loopId: string;
|
|
434
|
+
}];
|
|
435
|
+
decodeResult: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => {
|
|
436
|
+
readonly agentId: string;
|
|
437
|
+
readonly kind: "almanac";
|
|
438
|
+
readonly scheduleId: string;
|
|
439
|
+
readonly state: "active" | "paused" | "cancelled" | "finished";
|
|
440
|
+
} | {
|
|
441
|
+
readonly agentId: string;
|
|
442
|
+
readonly kind: "loop";
|
|
443
|
+
readonly sessionId: string;
|
|
444
|
+
readonly loopId: string;
|
|
445
|
+
readonly state: "active" | "failed" | "paused" | "cancelled" | "finished";
|
|
446
|
+
};
|
|
447
|
+
requiredOperations: () => string[];
|
|
448
|
+
requestedResource: (raw: readonly unknown[]) => {
|
|
449
|
+
kind: string;
|
|
450
|
+
id: string;
|
|
451
|
+
};
|
|
452
|
+
};
|
|
424
453
|
deleteSchedule: {
|
|
425
454
|
decodeArgs: (raw: readonly unknown[]) => [{
|
|
426
455
|
kind: "almanac";
|
|
@@ -40,7 +40,8 @@ import { z } from "zod";
|
|
|
40
40
|
import {} from "../cloudflare.js";
|
|
41
41
|
import { AppInstanceError } from "../index.js";
|
|
42
42
|
import { agentScheduleBindingArgs, appAgentScheduleListInputSchema, agentSchedulePageSchema, agentScheduleControlReceiptSchema, } from "../agent-schedules.js";
|
|
43
|
-
import { readAgentSchedulePage, controlAgentSchedule,
|
|
43
|
+
import { readAgentSchedulePage, controlAgentSchedule, } from "@fungi.computer/shiitake-extensions/schedules/client";
|
|
44
|
+
import { agentScheduleTargetSchema } from "@fungi.computer/shiitake-extensions/schedules";
|
|
44
45
|
import { createAgentAvatarStore, } from "../agent-avatars.js";
|
|
45
46
|
import { defineIdFamily } from "@fungi.computer/cairn";
|
|
46
47
|
import { agentIds, createAgentDirectory, createFleetSessions, commandSettlementSchema, DirectoryError, } from "@fungi.computer/shiitake/fleet";
|
|
@@ -1782,6 +1783,17 @@ export const agentFrameMethods = {
|
|
|
1782
1783
|
id: agentScheduleBindingArgs.pauseSchedule.parse(raw)[0].agentId,
|
|
1783
1784
|
}),
|
|
1784
1785
|
},
|
|
1786
|
+
resumeSchedule: {
|
|
1787
|
+
decodeArgs: (raw) => agentScheduleBindingArgs.resumeSchedule.parse(raw),
|
|
1788
|
+
decodeResult: Schema.decodeUnknownSync(agentScheduleControlReceiptSchema, {
|
|
1789
|
+
onExcessProperty: "error",
|
|
1790
|
+
}),
|
|
1791
|
+
requiredOperations: () => ["resumeSchedule"],
|
|
1792
|
+
requestedResource: (raw) => ({
|
|
1793
|
+
kind: "agent",
|
|
1794
|
+
id: agentScheduleBindingArgs.resumeSchedule.parse(raw)[0].agentId,
|
|
1795
|
+
}),
|
|
1796
|
+
},
|
|
1785
1797
|
deleteSchedule: {
|
|
1786
1798
|
decodeArgs: (raw) => agentScheduleBindingArgs.deleteSchedule.parse(raw),
|
|
1787
1799
|
decodeResult: Schema.decodeUnknownSync(agentScheduleControlReceiptSchema, {
|
|
@@ -1845,6 +1857,7 @@ export async function dispatchAgentBinding(env, scope, frame, props, method, arg
|
|
|
1845
1857
|
else if (props.binding === "AGENTS" &&
|
|
1846
1858
|
(method === "schedules" ||
|
|
1847
1859
|
method === "pauseSchedule" ||
|
|
1860
|
+
method === "resumeSchedule" ||
|
|
1848
1861
|
method === "deleteSchedule")) {
|
|
1849
1862
|
const [input] = agentScheduleBindingArgs[method].parse(args);
|
|
1850
1863
|
if (!(await directory.has(input.agentId)))
|
|
@@ -1864,7 +1877,11 @@ export async function dispatchAgentBinding(env, scope, frame, props, method, arg
|
|
|
1864
1877
|
result = await agent.readSchedules(pin, agentScheduleBindingArgs.schedules.parse(args)[0]);
|
|
1865
1878
|
}
|
|
1866
1879
|
else {
|
|
1867
|
-
result = await agent.controlSchedule(pin, agentScheduleBindingArgs[method].parse(args)[0], method === "pauseSchedule"
|
|
1880
|
+
result = await agent.controlSchedule(pin, agentScheduleBindingArgs[method].parse(args)[0], method === "pauseSchedule"
|
|
1881
|
+
? "pause"
|
|
1882
|
+
: method === "resumeSchedule"
|
|
1883
|
+
? "resume"
|
|
1884
|
+
: "delete");
|
|
1868
1885
|
}
|
|
1869
1886
|
}
|
|
1870
1887
|
else {
|
|
@@ -48,7 +48,7 @@ export type TriggerArmTarget = z.output<typeof triggerArmTargetSchema>;
|
|
|
48
48
|
export type ScheduleDisarmInput = z.output<typeof scheduleDisarmInputSchema>;
|
|
49
49
|
export type EventDisarmInput = z.output<typeof eventDisarmInputSchema>;
|
|
50
50
|
/** The frame gate needs only these run-owner calls; it re-decodes each reply with the method's owner schema. */
|
|
51
|
-
export type WorkflowRunCalls = Pick<StandaloneWorkflowRunsBase, "admitWorkflowGit" | "catalog" | "start" | "status" | "cancel" | "answerReview" | "armSchedule" | "pauseSchedule" | "disarmSchedule" | "schedules" | "armEventTrigger" | "disarmEventTrigger" | "eventTriggers" | "runs">;
|
|
51
|
+
export type WorkflowRunCalls = Pick<StandaloneWorkflowRunsBase, "admitWorkflowGit" | "catalog" | "start" | "status" | "cancel" | "answerReview" | "armSchedule" | "pauseSchedule" | "resumeSchedule" | "disarmSchedule" | "schedules" | "armEventTrigger" | "disarmEventTrigger" | "eventTriggers" | "runs">;
|
|
52
52
|
export type WorkflowBindingEnv = Readonly<{
|
|
53
53
|
WORKFLOW_RUNS: Readonly<{
|
|
54
54
|
getByName(installationId: string): WorkflowRunCalls;
|
|
@@ -132,6 +132,8 @@ export declare const workflowFrameMethods: {
|
|
|
132
132
|
scheduleId: string;
|
|
133
133
|
}]) | ((args: unknown) => [{
|
|
134
134
|
scheduleId: string;
|
|
135
|
+
}]) | ((args: unknown) => [{
|
|
136
|
+
scheduleId: string;
|
|
135
137
|
}]) | ((args: unknown) => [{
|
|
136
138
|
limit: number;
|
|
137
139
|
after?: string | undefined;
|
|
@@ -155,7 +157,7 @@ export declare const workflowFrameMethods: {
|
|
|
155
157
|
workflowId?: string | undefined;
|
|
156
158
|
}]);
|
|
157
159
|
decodeResult: (value: unknown) => z.core.util.JSONType;
|
|
158
|
-
requiredOperations: () => ("catalog" | "runGraph" | "armSchedule" | "disarmSchedule" | "pauseSchedule" | "schedules" | "armEventTrigger" | "disarmEventTrigger" | "eventTriggers" | "cancel" | "answerReview" | "graphStatus" | "runs")[];
|
|
160
|
+
requiredOperations: () => ("catalog" | "runGraph" | "armSchedule" | "disarmSchedule" | "pauseSchedule" | "resumeSchedule" | "schedules" | "armEventTrigger" | "disarmEventTrigger" | "eventTriggers" | "cancel" | "answerReview" | "graphStatus" | "runs")[];
|
|
159
161
|
};
|
|
160
162
|
};
|
|
161
163
|
};
|
|
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { graphReviewSchema, reviewAnswerSchema } from "@fungi.computer/braid";
|
|
4
4
|
import { graphStartRequestSchema, workflowTriggerTargetSchema, } from "@fungi.computer/braid/runtime";
|
|
5
|
-
import { runReply, answerReviewReply, catalogReplySchema, statusReply, cancelReplySchema, runsReplySchema, runsInputSchema, eventArmReplySchema, eventDisarmInputSchema, eventTriggersReplySchema, scheduleArmReplySchema, scheduleDisarmInputSchema, schedulePauseInputSchema, schedulePauseReplySchema, scheduleListInputSchema, schedulesReplySchema, triggerDisarmReplySchema, triggerListInputSchema, } from "@fungi.computer/workflows-wire";
|
|
5
|
+
import { runReply, answerReviewReply, catalogReplySchema, statusReply, cancelReplySchema, runsReplySchema, runsInputSchema, eventArmReplySchema, eventDisarmInputSchema, eventTriggersReplySchema, scheduleArmReplySchema, scheduleDisarmInputSchema, schedulePauseInputSchema, schedulePauseReplySchema, scheduleResumeInputSchema, scheduleResumeReplySchema, scheduleListInputSchema, schedulesReplySchema, triggerDisarmReplySchema, triggerListInputSchema, } from "@fungi.computer/workflows-wire";
|
|
6
6
|
import { workflowAttestationSchema } from "@fungi.computer/puffball/app-method-runtime";
|
|
7
7
|
import { appEventFactSchema, } from "@fungi.computer/puffball/app-event-facts";
|
|
8
8
|
import { AppInstanceError } from "../index.js";
|
|
@@ -27,6 +27,7 @@ const workflowArgs = {
|
|
|
27
27
|
armSchedule: (args) => z.tuple([triggerArmTargetSchema]).parse(args),
|
|
28
28
|
disarmSchedule: (args) => z.tuple([scheduleDisarmInputSchema]).parse(args),
|
|
29
29
|
pauseSchedule: (args) => z.tuple([schedulePauseInputSchema]).parse(args),
|
|
30
|
+
resumeSchedule: (args) => z.tuple([scheduleResumeInputSchema]).parse(args),
|
|
30
31
|
schedules: (args) => z.tuple([scheduleListInputSchema]).parse(args),
|
|
31
32
|
armEventTrigger: (args) => z.tuple([triggerArmTargetSchema]).parse(args),
|
|
32
33
|
disarmEventTrigger: (args) => z.tuple([eventDisarmInputSchema]).parse(args),
|
|
@@ -42,6 +43,7 @@ const workflowResults = {
|
|
|
42
43
|
armSchedule: scheduleArmReplySchema,
|
|
43
44
|
disarmSchedule: triggerDisarmReplySchema,
|
|
44
45
|
pauseSchedule: schedulePauseReplySchema,
|
|
46
|
+
resumeSchedule: scheduleResumeReplySchema,
|
|
45
47
|
schedules: schedulesReplySchema,
|
|
46
48
|
armEventTrigger: eventArmReplySchema,
|
|
47
49
|
disarmEventTrigger: triggerDisarmReplySchema,
|
|
@@ -56,6 +58,7 @@ const workflowMethod = z.enum([
|
|
|
56
58
|
"answerReview",
|
|
57
59
|
"armSchedule",
|
|
58
60
|
"pauseSchedule",
|
|
61
|
+
"resumeSchedule",
|
|
59
62
|
"disarmSchedule",
|
|
60
63
|
"schedules",
|
|
61
64
|
"armEventTrigger",
|
|
@@ -192,6 +195,11 @@ export async function dispatchWorkflowBinding(env, frame, props, method, args) {
|
|
|
192
195
|
result = await runs.pauseSchedule(frame.facts, input);
|
|
193
196
|
break;
|
|
194
197
|
}
|
|
198
|
+
case "resumeSchedule": {
|
|
199
|
+
const [input] = workflowArgs.resumeSchedule(args);
|
|
200
|
+
result = await runs.resumeSchedule(frame.facts, input);
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
195
203
|
case "schedules": {
|
|
196
204
|
const [input] = workflowArgs.schedules(args);
|
|
197
205
|
result = await runs.schedules(frame.facts, input);
|
|
@@ -11,7 +11,7 @@ export type TriggerAdmission = Readonly<{
|
|
|
11
11
|
/** The admitted frame's selection and verified artifact, pinned on arm. */
|
|
12
12
|
installationAuthority: WorkflowInstallationAuthority;
|
|
13
13
|
}>;
|
|
14
|
-
export type ScheduleOperation = "armSchedule" | "pauseSchedule" | "disarmSchedule" | "schedules";
|
|
14
|
+
export type ScheduleOperation = "armSchedule" | "pauseSchedule" | "resumeSchedule" | "disarmSchedule" | "schedules";
|
|
15
15
|
/** Host controls and alarm delivery compose the shared schedule owner unchanged. */
|
|
16
16
|
export declare function createStandaloneWorkflowSchedules<Frame>(options: Parameters<typeof createWorkflowSchedules>[0] & {
|
|
17
17
|
admitInvocation(frame: Frame, operation: ScheduleOperation): Promise<TriggerAdmission>;
|
|
@@ -47,12 +47,30 @@ export declare function createStandaloneWorkflowSchedules<Frame>(options: Parame
|
|
|
47
47
|
} | {
|
|
48
48
|
error: string;
|
|
49
49
|
}>;
|
|
50
|
+
resume(frame: Frame, raw: {
|
|
51
|
+
scheduleId: string;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
kind: "not_found";
|
|
54
|
+
reason?: never;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "refused";
|
|
57
|
+
reason: string;
|
|
58
|
+
} | {
|
|
59
|
+
kind: "resumed";
|
|
60
|
+
reason?: never;
|
|
61
|
+
} | {
|
|
62
|
+
error: string;
|
|
63
|
+
}>;
|
|
50
64
|
list(frame: Frame, raw: ScheduleListInput): Promise<{
|
|
51
65
|
schedules: {
|
|
52
66
|
scheduleId: string;
|
|
53
67
|
installationId: string;
|
|
54
68
|
workflowId: string;
|
|
55
69
|
triggerId: string;
|
|
70
|
+
cron: {
|
|
71
|
+
expression: string;
|
|
72
|
+
timeZone: string;
|
|
73
|
+
};
|
|
56
74
|
nextDueAt: number;
|
|
57
75
|
state: "active" | "finished" | "paused" | "cancelled";
|
|
58
76
|
lastError: string | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createWorkflowSchedules, } from "@fungi.computer/braid/runtime";
|
|
2
|
-
import { scheduleDisarmInputSchema, schedulePauseInputSchema, scheduleListInputSchema, } from "@fungi.computer/workflows-wire";
|
|
2
|
+
import { scheduleDisarmInputSchema, schedulePauseInputSchema, scheduleResumeInputSchema, scheduleListInputSchema, } from "@fungi.computer/workflows-wire";
|
|
3
3
|
import { triggerArmTargetSchema, } from "./workflow-binding.js";
|
|
4
4
|
/** Host controls and alarm delivery compose the shared schedule owner unchanged. */
|
|
5
5
|
export function createStandaloneWorkflowSchedules(options) {
|
|
@@ -34,6 +34,13 @@ export function createStandaloneWorkflowSchedules(options) {
|
|
|
34
34
|
return { error: "not_granted" };
|
|
35
35
|
return schedules.pause(authority.principal, libraryId, scheduleId);
|
|
36
36
|
},
|
|
37
|
+
async resume(frame, raw) {
|
|
38
|
+
const { scheduleId } = scheduleResumeInputSchema.parse(raw);
|
|
39
|
+
const { libraryId, authority } = await options.admitInvocation(frame, "resumeSchedule");
|
|
40
|
+
if (authority === null)
|
|
41
|
+
return { error: "not_granted" };
|
|
42
|
+
return schedules.resume(authority.principal, libraryId, scheduleId);
|
|
43
|
+
},
|
|
37
44
|
async list(frame, raw) {
|
|
38
45
|
const input = scheduleListInputSchema.parse(raw);
|
|
39
46
|
const { libraryId, authority } = await options.admitInvocation(frame, "schedules");
|
|
@@ -95,12 +95,30 @@ export declare abstract class StandaloneWorkflowRunsBase<Env extends StandaloneW
|
|
|
95
95
|
} | {
|
|
96
96
|
error: string;
|
|
97
97
|
}>;
|
|
98
|
+
resumeSchedule(facts: InvocationFacts, input: {
|
|
99
|
+
scheduleId: string;
|
|
100
|
+
}): Promise<{
|
|
101
|
+
kind: "not_found";
|
|
102
|
+
reason?: never;
|
|
103
|
+
} | {
|
|
104
|
+
kind: "refused";
|
|
105
|
+
reason: string;
|
|
106
|
+
} | {
|
|
107
|
+
kind: "resumed";
|
|
108
|
+
reason?: never;
|
|
109
|
+
} | {
|
|
110
|
+
error: string;
|
|
111
|
+
}>;
|
|
98
112
|
schedules(facts: InvocationFacts, input: ScheduleListInput): Promise<{
|
|
99
113
|
schedules: {
|
|
100
114
|
scheduleId: string;
|
|
101
115
|
installationId: string;
|
|
102
116
|
workflowId: string;
|
|
103
117
|
triggerId: string;
|
|
118
|
+
cron: {
|
|
119
|
+
expression: string;
|
|
120
|
+
timeZone: string;
|
|
121
|
+
};
|
|
104
122
|
nextDueAt: number;
|
|
105
123
|
state: "active" | "finished" | "paused" | "cancelled";
|
|
106
124
|
lastError: string | null;
|
|
@@ -406,6 +406,9 @@ export class StandaloneWorkflowRunsBase extends DurableObject {
|
|
|
406
406
|
async pauseSchedule(facts, input) {
|
|
407
407
|
return (await this.library(facts, "pauseSchedule")).schedules.pause(facts, input);
|
|
408
408
|
}
|
|
409
|
+
async resumeSchedule(facts, input) {
|
|
410
|
+
return (await this.library(facts, "resumeSchedule")).schedules.resume(facts, input);
|
|
411
|
+
}
|
|
409
412
|
async schedules(facts, input) {
|
|
410
413
|
return (await this.library(facts, "schedules")).schedules.list(facts, input);
|
|
411
414
|
}
|
package/dist/workflows.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare const agentWorkflowOperationSchema: z.ZodEnum<{
|
|
|
11
11
|
armSchedule: "armSchedule";
|
|
12
12
|
disarmSchedule: "disarmSchedule";
|
|
13
13
|
pauseSchedule: "pauseSchedule";
|
|
14
|
+
resumeSchedule: "resumeSchedule";
|
|
14
15
|
schedules: "schedules";
|
|
15
16
|
armEventTrigger: "armEventTrigger";
|
|
16
17
|
disarmEventTrigger: "disarmEventTrigger";
|
|
@@ -28,6 +29,7 @@ export declare const agentAppWorkflowRequestSchema: z.ZodObject<{
|
|
|
28
29
|
armSchedule: "armSchedule";
|
|
29
30
|
disarmSchedule: "disarmSchedule";
|
|
30
31
|
pauseSchedule: "pauseSchedule";
|
|
32
|
+
resumeSchedule: "resumeSchedule";
|
|
31
33
|
schedules: "schedules";
|
|
32
34
|
armEventTrigger: "armEventTrigger";
|
|
33
35
|
disarmEventTrigger: "disarmEventTrigger";
|
package/dist/workflows.js
CHANGED
|
@@ -93,6 +93,7 @@ Both hosts decode the ordinary AGENTS packet with the native owner's grammar.
|
|
|
93
93
|
| ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
94
94
|
| <a id="property-schedules"></a> `schedules` | `ZodTuple`\<\[`ZodObject`\<\{ `agentId`: `ZodString`; `after`: `ZodOptional`\<`ZodObject`\<\{ `agentId`: `ZodString`; `kind`: `ZodUnion`\<readonly \[`ZodLiteral`\<...\>, `ZodLiteral`\<...\>\]\>; `after`: `ZodOptional`\<`ZodString`\>; \}, `$strict`\>\>; `limit`: `ZodDefault`\<`ZodNumber`\>; \}, `$strict`\>\], `null`\> | One bounded content-bearing read, admitted independently of manage. |
|
|
95
95
|
| <a id="property-pauseschedule"></a> `pauseSchedule` | `ZodTuple`\<\[`ZodDiscriminatedUnion`\<\[`ZodObject`\<\{ `kind`: `ZodLiteral`\<`"almanac"`\>; `agentId`: `ZodString`; `scheduleId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; \}, `$strict`\>, `ZodObject`\<\{ `kind`: `ZodLiteral`\<`"loop"`\>; `agentId`: `ZodString`; `sessionId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; `loopId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; \}, `$strict`\>\], `"kind"`\>\], `null`\> | Pause the exact listed schedule, retaining future resume and accepted work. |
|
|
96
|
+
| <a id="property-resumeschedule"></a> `resumeSchedule` | `ZodTuple`\<\[`ZodDiscriminatedUnion`\<\[`ZodObject`\<\{ `kind`: `ZodLiteral`\<`"almanac"`\>; `agentId`: `ZodString`; `scheduleId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; \}, `$strict`\>, `ZodObject`\<\{ `kind`: `ZodLiteral`\<`"loop"`\>; `agentId`: `ZodString`; `sessionId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; `loopId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; \}, `$strict`\>\], `"kind"`\>\], `null`\> | Resume the exact listed schedule through its native owner. |
|
|
96
97
|
| <a id="property-deleteschedule"></a> `deleteSchedule` | `ZodTuple`\<\[`ZodDiscriminatedUnion`\<\[`ZodObject`\<\{ `kind`: `ZodLiteral`\<`"almanac"`\>; `agentId`: `ZodString`; `scheduleId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; \}, `$strict`\>, `ZodObject`\<\{ `kind`: `ZodLiteral`\<`"loop"`\>; `agentId`: `ZodString`; `sessionId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; `loopId`: `ZodString` & `ZodType`\<`string`, `string`, `$ZodTypeInternals`\<`string`, `string`\>\>; \}, `$strict`\>\], `"kind"`\>\], `null`\> | Cancel future occurrences of the exact identity without erasing history. |
|
|
97
98
|
|
|
98
99
|
---
|
package/docs/api/build.md
CHANGED
|
@@ -584,9 +584,10 @@ type LocalBuildExecutorOptions = Readonly<{
|
|
|
584
584
|
}>;
|
|
585
585
|
```
|
|
586
586
|
|
|
587
|
-
How one build executor is composed; never part of a recipe or request.
|
|
588
|
-
|
|
589
|
-
|
|
587
|
+
How one build executor is composed; never part of a recipe or request. Build-log
|
|
588
|
+
stdout/stderr are interleaved in arrival order and unlabelled. The job log is
|
|
589
|
+
credential-bearing by design; it must never flow to diagnostics, Releases, agent
|
|
590
|
+
surfaces, or support bundles without a recorded decision.
|
|
590
591
|
|
|
591
592
|
---
|
|
592
593
|
|
package/docs/api/workers.md
CHANGED
|
@@ -241,13 +241,13 @@ approvalGet(
|
|
|
241
241
|
| null;
|
|
242
242
|
reason: | "pending"
|
|
243
243
|
| "expired"
|
|
244
|
-
| "not-granted"
|
|
245
244
|
| "not-found"
|
|
246
245
|
| "not-eligible"
|
|
247
246
|
| "already-answered"
|
|
248
247
|
| "stale-revision"
|
|
249
248
|
| "declined"
|
|
250
249
|
| "fenced"
|
|
250
|
+
| "not-granted"
|
|
251
251
|
| "read-only"
|
|
252
252
|
| "in-flight"
|
|
253
253
|
| "outcome-unknown"
|
|
@@ -287,8 +287,8 @@ Read one member-scoped view; the native home resolves membership again.
|
|
|
287
287
|
\| `"applied"` \| `"requested"` \| `"approved"` \| `"claimed"` \|
|
|
288
288
|
`"outcome_unknown"`; `by`: \| \{ `kind`: `"human"`; `memberId`: `string`; \} \|
|
|
289
289
|
\{ `kind`: `"policy"`; \} \| `null`; `reason`: \| `"pending"` \| `"expired"` \|
|
|
290
|
-
`"not-
|
|
291
|
-
`"
|
|
290
|
+
`"not-found"` \| `"not-eligible"` \| `"already-answered"` \| `"stale-revision"`
|
|
291
|
+
\| `"declined"` \| `"fenced"` \| `"not-granted"` \| `"read-only"` \|
|
|
292
292
|
`"in-flight"` \| `"outcome-unknown"` \| `"identity-conflict"` \| `null`;
|
|
293
293
|
`denialNote?`: `string`; `requestedAt`: `number`; `expiresAt`: `number`;
|
|
294
294
|
`updatedAt`: `number`; `revision`: `number`; \}; `canAnswer`: `boolean`;
|
|
@@ -342,13 +342,13 @@ approvalAnswer(
|
|
|
342
342
|
| null;
|
|
343
343
|
reason: | "pending"
|
|
344
344
|
| "expired"
|
|
345
|
-
| "not-granted"
|
|
346
345
|
| "not-found"
|
|
347
346
|
| "not-eligible"
|
|
348
347
|
| "already-answered"
|
|
349
348
|
| "stale-revision"
|
|
350
349
|
| "declined"
|
|
351
350
|
| "fenced"
|
|
351
|
+
| "not-granted"
|
|
352
352
|
| "read-only"
|
|
353
353
|
| "in-flight"
|
|
354
354
|
| "outcome-unknown"
|
|
@@ -368,13 +368,13 @@ approvalAnswer(
|
|
|
368
368
|
kind: "refused";
|
|
369
369
|
reason: | "pending"
|
|
370
370
|
| "expired"
|
|
371
|
-
| "not-granted"
|
|
372
371
|
| "not-found"
|
|
373
372
|
| "not-eligible"
|
|
374
373
|
| "already-answered"
|
|
375
374
|
| "stale-revision"
|
|
376
375
|
| "declined"
|
|
377
376
|
| "fenced"
|
|
377
|
+
| "not-granted"
|
|
378
378
|
| "read-only"
|
|
379
379
|
| "in-flight"
|
|
380
380
|
| "outcome-unknown"
|
|
@@ -409,15 +409,15 @@ Persist an eligible answer and attempt its native decision work once.
|
|
|
409
409
|
\| `"pending"` \| `"expired"` \| `"denied"` \| `"applied"` \| `"requested"` \|
|
|
410
410
|
`"approved"` \| `"claimed"` \| `"outcome_unknown"`; `by`: \| \{ `kind`:
|
|
411
411
|
`"human"`; `memberId`: `string`; \} \| \{ `kind`: `"policy"`; \} \| `null`;
|
|
412
|
-
`reason`: \| `"pending"` \| `"expired"` \| `"not-
|
|
413
|
-
`"
|
|
414
|
-
|
|
412
|
+
`reason`: \| `"pending"` \| `"expired"` \| `"not-found"` \| `"not-eligible"` \|
|
|
413
|
+
`"already-answered"` \| `"stale-revision"` \| `"declined"` \| `"fenced"` \|
|
|
414
|
+
`"not-granted"` \| `"read-only"` \| `"in-flight"` \| `"outcome-unknown"` \|
|
|
415
415
|
`"identity-conflict"` \| `null`; `denialNote?`: `string`; `requestedAt`:
|
|
416
416
|
`number`; `expiresAt`: `number`; `updatedAt`: `number`; `revision`: `number`;
|
|
417
417
|
\}; `canAnswer`: `boolean`; `canSetAutoApprove`: `boolean`; \}; \}\> \|
|
|
418
418
|
`Readonly`\<\{ `kind`: `"refused"`; `reason`: \| `"pending"` \| `"expired"` \|
|
|
419
|
-
`"not-
|
|
420
|
-
`"
|
|
419
|
+
`"not-found"` \| `"not-eligible"` \| `"already-answered"` \| `"stale-revision"`
|
|
420
|
+
\| `"declined"` \| `"fenced"` \| `"not-granted"` \| `"read-only"` \|
|
|
421
421
|
`"in-flight"` \| `"outcome-unknown"` \| `"identity-conflict"`; `denialNote?`:
|
|
422
422
|
`string`; \}\>\>
|
|
423
423
|
|
|
@@ -433,13 +433,13 @@ approvalSetAutoApprove(
|
|
|
433
433
|
kind: "refused";
|
|
434
434
|
reason: | "pending"
|
|
435
435
|
| "expired"
|
|
436
|
-
| "not-granted"
|
|
437
436
|
| "not-found"
|
|
438
437
|
| "not-eligible"
|
|
439
438
|
| "already-answered"
|
|
440
439
|
| "stale-revision"
|
|
441
440
|
| "declined"
|
|
442
441
|
| "fenced"
|
|
442
|
+
| "not-granted"
|
|
443
443
|
| "read-only"
|
|
444
444
|
| "in-flight"
|
|
445
445
|
| "outcome-unknown"
|
|
@@ -481,8 +481,8 @@ it.
|
|
|
481
481
|
###### Returns
|
|
482
482
|
|
|
483
483
|
`Promise`\< \| `Readonly`\<\{ `kind`: `"refused"`; `reason`: \| `"pending"` \|
|
|
484
|
-
`"expired"` \| `"not-
|
|
485
|
-
`"
|
|
484
|
+
`"expired"` \| `"not-found"` \| `"not-eligible"` \| `"already-answered"` \|
|
|
485
|
+
`"stale-revision"` \| `"declined"` \| `"fenced"` \| `"not-granted"` \|
|
|
486
486
|
`"read-only"` \| `"in-flight"` \| `"outcome-unknown"` \| `"identity-conflict"`;
|
|
487
487
|
`denialNote?`: `string`; \}\> \| `Readonly`\<\{ `kind`: `"updated"`; `rule`: \{
|
|
488
488
|
`scope`: \{ `agentId`: `string` \| `null`; \}; `family`: \{ `module`: `string`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fungi.computer/oyster",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"author": "Levi <levi@technomancy.dev>",
|
|
5
5
|
"description": "Run your own Apps on Cloudflare Workers or celld: installable App Releases, each with its own Durable Object, SQLite database and declared bindings",
|
|
6
6
|
"type": "module",
|
|
@@ -308,35 +308,35 @@
|
|
|
308
308
|
"dependencies": {
|
|
309
309
|
"@cfworker/json-schema": "4.1.1",
|
|
310
310
|
"@earendil-works/pi-ai": "1.3.0",
|
|
311
|
-
"@fungi.computer/agar": "0.6.
|
|
311
|
+
"@fungi.computer/agar": "0.6.1",
|
|
312
312
|
"@fungi.computer/bird-dog": "0.3.1",
|
|
313
|
-
"@fungi.computer/braid": "0.
|
|
313
|
+
"@fungi.computer/braid": "0.4.0",
|
|
314
314
|
"@fungi.computer/burrow": "0.2.0",
|
|
315
315
|
"@fungi.computer/cairn": "0.1.0",
|
|
316
316
|
"@fungi.computer/capnweb": "0.12.0",
|
|
317
|
-
"@fungi.computer/caps": "0.
|
|
317
|
+
"@fungi.computer/caps": "0.6.0",
|
|
318
318
|
"@fungi.computer/carrier": "0.2.0",
|
|
319
|
-
"@fungi.computer/computer": "0.4.
|
|
320
|
-
"@fungi.computer/computer-contract": "0.0.
|
|
321
|
-
"@fungi.computer/darkroom": "0.4.
|
|
319
|
+
"@fungi.computer/computer": "0.4.1",
|
|
320
|
+
"@fungi.computer/computer-contract": "0.0.7",
|
|
321
|
+
"@fungi.computer/darkroom": "0.4.1",
|
|
322
322
|
"@fungi.computer/ear-tag": "0.1.0",
|
|
323
|
-
"@fungi.computer/forage": "0.2.
|
|
323
|
+
"@fungi.computer/forage": "0.2.2",
|
|
324
324
|
"@fungi.computer/gills": "0.2.0",
|
|
325
|
-
"@fungi.computer/knapsack": "0.4.
|
|
326
|
-
"@fungi.computer/mycelium": "0.3.
|
|
327
|
-
"@fungi.computer/nacre": "0.1.
|
|
328
|
-
"@fungi.computer/puffball": "0.
|
|
325
|
+
"@fungi.computer/knapsack": "0.4.2",
|
|
326
|
+
"@fungi.computer/mycelium": "0.3.1",
|
|
327
|
+
"@fungi.computer/nacre": "0.1.2",
|
|
328
|
+
"@fungi.computer/puffball": "0.4.0",
|
|
329
329
|
"@fungi.computer/seam": "0.2.0",
|
|
330
|
-
"@fungi.computer/shiitake": "0.
|
|
331
|
-
"@fungi.computer/shiitake-extensions": "0.
|
|
332
|
-
"@fungi.computer/sigils": "0.2.
|
|
330
|
+
"@fungi.computer/shiitake": "0.8.0",
|
|
331
|
+
"@fungi.computer/shiitake-extensions": "0.6.0",
|
|
332
|
+
"@fungi.computer/sigils": "0.2.1",
|
|
333
333
|
"@fungi.computer/sprite": "0.2.0",
|
|
334
334
|
"@fungi.computer/sprite-zdog": "0.3.0",
|
|
335
|
-
"@fungi.computer/veil": "0.
|
|
335
|
+
"@fungi.computer/veil": "0.3.0",
|
|
336
336
|
"@fungi.computer/watchdog": "0.1.0",
|
|
337
337
|
"@fungi.computer/whistle": "0.3.0",
|
|
338
|
-
"@fungi.computer/workflows-wire": "0.
|
|
339
|
-
"@fungi.computer/zookeeper": "0.0.
|
|
338
|
+
"@fungi.computer/workflows-wire": "0.4.0",
|
|
339
|
+
"@fungi.computer/zookeeper": "0.0.7",
|
|
340
340
|
"@modelcontextprotocol/server": "2.0.0",
|
|
341
341
|
"@pnpm/lockfile.fs": "1100.2.13",
|
|
342
342
|
"@pnpm/lockfile.pruner": "1100.0.27",
|