@osolmaz/pi-workflows 0.16.4 → 0.16.6
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 +5 -5
- package/dist/builtins/autoimplement.workflow.d.ts +5 -1
- package/dist/builtins/autoimplement.workflow.js +29 -10
- package/dist/builtins/autoimplement.workflow.js.map +1 -1
- package/dist/client/client.js +3 -1
- package/dist/client/client.js.map +1 -1
- package/dist/client/protocol.d.ts +1 -1
- package/dist/client/protocol.js +18 -1
- package/dist/client/protocol.js.map +1 -1
- package/dist/client/view.d.ts +7 -5
- package/dist/extension/index.d.ts +2 -1
- package/dist/extension/index.js +115 -165
- package/dist/extension/index.js.map +1 -1
- package/dist/extension/recorder.d.ts +1 -1
- package/dist/extension/recorder.js +2 -2
- package/dist/extension/recorder.js.map +1 -1
- package/dist/extension/step-message.d.ts +1 -1
- package/dist/extension/step-message.js +4 -4
- package/dist/extension/step-message.js.map +1 -1
- package/dist/extension/workflow-message-coordinator.d.ts +12 -1
- package/dist/extension/workflow-message-coordinator.js +65 -54
- package/dist/extension/workflow-message-coordinator.js.map +1 -1
- package/dist/resource-managers/index.d.ts +1 -2
- package/dist/resource-managers/index.js +1 -2
- package/dist/resource-managers/index.js.map +1 -1
- package/dist/resource-managers/sqlite.d.ts +2 -295
- package/dist/resource-managers/sqlite.js +71 -1528
- package/dist/resource-managers/sqlite.js.map +1 -1
- package/dist/resource-managers/types.d.ts +2 -7
- package/dist/server/resource-runner-entry.js +2 -6
- package/dist/server/resource-runner-entry.js.map +1 -1
- package/dist/server/rpc-bridge.js +1 -1
- package/dist/server/rpc-bridge.js.map +1 -1
- package/dist/server/rpc-executor.js +2 -4
- package/dist/server/rpc-executor.js.map +1 -1
- package/dist/server/server-entry.js +3 -0
- package/dist/server/server-entry.js.map +1 -1
- package/dist/server/server.d.ts +22 -8
- package/dist/server/server.js +498 -543
- package/dist/server/server.js.map +1 -1
- package/dist/server/state.d.ts +16 -29
- package/dist/server/state.js +105 -319
- package/dist/server/state.js.map +1 -1
- package/dist/server/view.d.ts +4 -5
- package/dist/server/view.js +51 -51
- package/dist/server/view.js.map +1 -1
- package/dist/server/workflow-runner-entry.d.ts +1 -1
- package/dist/server/workflow-runner-entry.js +1 -49
- package/dist/server/workflow-runner-entry.js.map +1 -1
- package/dist/server/workflow-runner-protocol.d.ts +2 -7
- package/dist/server/workflow-runner-protocol.js +5 -10
- package/dist/server/workflow-runner-protocol.js.map +1 -1
- package/dist/server/workflow-runner-store.d.ts +5 -6
- package/dist/server/workflow-runner-store.js +7 -14
- package/dist/server/workflow-runner-store.js.map +1 -1
- package/dist/state/attempt-time.d.ts +21 -0
- package/dist/state/attempt-time.js +95 -0
- package/dist/state/attempt-time.js.map +1 -0
- package/dist/state/json.d.ts +2 -1
- package/dist/state/json.js.map +1 -1
- package/dist/state/project-store.d.ts +39 -0
- package/dist/state/project-store.js +154 -0
- package/dist/state/project-store.js.map +1 -0
- package/dist/state/prune.d.ts +28 -0
- package/dist/state/prune.js +278 -83
- package/dist/state/prune.js.map +1 -1
- package/dist/state/schema.js +23 -23
- package/dist/state/workflow-messages.d.ts +1 -1
- package/dist/state/workflow-messages.js +3 -1
- package/dist/state/workflow-messages.js.map +1 -1
- package/dist/viewer/backup.js +5 -0
- package/dist/viewer/backup.js.map +1 -1
- package/dist/workflows/diagnostics.d.ts +8 -0
- package/dist/workflows/diagnostics.js +61 -0
- package/dist/workflows/diagnostics.js.map +1 -0
- package/dist/workflows/engine.d.ts +2 -15
- package/dist/workflows/engine.js +125 -245
- package/dist/workflows/engine.js.map +1 -1
- package/dist/workflows/human-decision.d.ts +3 -7
- package/dist/workflows/human-decision.js +2 -56
- package/dist/workflows/human-decision.js.map +1 -1
- package/dist/workflows/index.d.ts +2 -1
- package/dist/workflows/index.js +1 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/queue.d.ts +267 -0
- package/dist/workflows/queue.js +1248 -0
- package/dist/workflows/queue.js.map +1 -0
- package/dist/workflows/requests.d.ts +47 -0
- package/dist/workflows/requests.js +158 -0
- package/dist/workflows/requests.js.map +1 -0
- package/dist/workflows/schema.js +2 -4
- package/dist/workflows/schema.js.map +1 -1
- package/dist/workflows/store.d.ts +11 -16
- package/dist/workflows/store.js +174 -169
- package/dist/workflows/store.js.map +1 -1
- package/dist/workflows/tool-input.d.ts +6 -9
- package/dist/workflows/tool-input.js +15 -12
- package/dist/workflows/tool-input.js.map +1 -1
- package/dist/workflows/transitions.d.ts +38 -0
- package/dist/workflows/transitions.js +276 -0
- package/dist/workflows/transitions.js.map +1 -0
- package/dist/workflows/types.d.ts +9 -42
- package/dist/workflows/workflow-message-content.d.ts +7 -1
- package/dist/workflows/workflow-message-content.js +22 -4
- package/dist/workflows/workflow-message-content.js.map +1 -1
- package/docs/2026-08-25-workflow-follow-ups.md +5 -5
- package/docs/2026-09-02-unify-workflow-messages-plan.md +2 -0
- package/docs/2026-09-04-workflow-run-state-plan.md +2 -0
- package/docs/2026-09-06-durable-execution-plan.md +176 -0
- package/docs/DEFERRED_TURNS.md +84 -105
- package/docs/HUMAN_DECISIONS.md +17 -19
- package/docs/HUMAN_DECISION_PRESENTATIONS.md +1 -1
- package/docs/SQLITE_STATE.md +87 -30
- package/docs/WORKFLOW_SERVER.md +50 -11
- package/docs/WORKFLOW_STEP_MESSAGES.md +72 -54
- package/docs/plans/2026-08-04-controller-runtime-plan.md +2 -0
- package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +2 -0
- package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +2 -0
- package/docs/plans/2026-09-04-automatic-state-retention-plan.md +283 -0
- package/docs/workflows.md +109 -44
- package/examples/workflows/autoresearch.workflow.ts +0 -2
- package/examples/workflows/branch.workflow.ts +0 -4
- package/examples/workflows/echo.workflow.ts +0 -2
- package/examples/workflows/live-settings.workflow.ts +0 -2
- package/examples/workflows/two-turn.workflow.ts +0 -2
- package/herdr-plugin.toml +1 -1
- package/package.json +1 -1
- package/protocol/fixtures/client-v1.json +1 -1
- package/skills/pi-workflows/SKILL.md +8 -7
- package/src/builtins/autoimplement.workflow.ts +31 -10
- package/src/client/client.ts +3 -1
- package/src/client/protocol.ts +21 -1
- package/src/client/view.ts +9 -5
- package/src/extension/index.ts +117 -189
- package/src/extension/recorder.ts +2 -2
- package/src/extension/step-message.ts +4 -4
- package/src/extension/workflow-message-coordinator.ts +78 -50
- package/src/resource-managers/index.ts +1 -9
- package/src/resource-managers/sqlite.ts +330 -2655
- package/src/resource-managers/types.ts +2 -3
- package/src/server/resource-runner-entry.ts +2 -7
- package/src/server/rpc-bridge.ts +1 -1
- package/src/server/rpc-executor.ts +4 -9
- package/src/server/server-entry.ts +3 -0
- package/src/server/server.ts +568 -644
- package/src/server/state.ts +122 -466
- package/src/server/view.ts +56 -60
- package/src/server/workflow-runner-entry.ts +2 -55
- package/src/server/workflow-runner-protocol.ts +5 -15
- package/src/server/workflow-runner-store.ts +12 -27
- package/src/state/attempt-time.ts +122 -0
- package/src/state/json.ts +2 -1
- package/src/state/project-store.ts +218 -0
- package/src/state/prune.ts +408 -95
- package/src/state/schema.ts +23 -23
- package/src/state/workflow-messages.ts +4 -2
- package/src/viewer/backup.ts +7 -0
- package/src/workflows/diagnostics.ts +78 -0
- package/src/workflows/engine.ts +133 -291
- package/src/workflows/human-decision.ts +3 -81
- package/src/workflows/index.ts +8 -2
- package/src/workflows/queue.ts +2091 -0
- package/src/workflows/requests.ts +283 -0
- package/src/workflows/schema.ts +2 -6
- package/src/workflows/store.ts +223 -231
- package/src/workflows/tool-input.ts +20 -12
- package/src/workflows/transitions.ts +330 -0
- package/src/workflows/types.ts +9 -46
- package/src/workflows/workflow-message-content.ts +28 -4
- package/dist/resource-managers/runtime.d.ts +0 -59
- package/dist/resource-managers/runtime.js +0 -423
- package/dist/resource-managers/runtime.js.map +0 -1
- package/src/resource-managers/runtime.ts +0 -576
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import type { JsonObject } from "../state/json.js";
|
|
1
2
|
import type { JsonPatch } from "../workflows/json-patch.js";
|
|
2
3
|
|
|
4
|
+
export type { JsonPrimitive, JsonValue, JsonObject } from "../state/json.js";
|
|
3
5
|
export type MaybePromise<T> = T | Promise<T>;
|
|
4
|
-
export type JsonPrimitive = string | number | boolean | null;
|
|
5
|
-
export type JsonValue = JsonPrimitive | JsonValue[] | { [key: string]: JsonValue };
|
|
6
|
-
export type JsonObject = { [key: string]: JsonValue };
|
|
7
6
|
|
|
8
7
|
export type ManagedResourceConditionStatus = true | false | "unknown";
|
|
9
8
|
|
|
@@ -145,7 +145,7 @@ class ServerBackedResourceManagerEffects implements ResourceManagerEffects {
|
|
|
145
145
|
try {
|
|
146
146
|
applied = await definition.apply(this.signal);
|
|
147
147
|
} catch (error) {
|
|
148
|
-
applied = { state: "indeterminate", error:
|
|
148
|
+
applied = { state: "indeterminate", error: errorMessage(error) };
|
|
149
149
|
}
|
|
150
150
|
return await this.transport.request<EffectRecord>("effect.settle", {
|
|
151
151
|
key: definition.key,
|
|
@@ -246,7 +246,7 @@ export async function runResourceRunner(): Promise<number> {
|
|
|
246
246
|
validateResult(result);
|
|
247
247
|
await transport.request("runner.finished", result as unknown as JsonValue);
|
|
248
248
|
} catch (error) {
|
|
249
|
-
await transport.request("runner.failed", { error:
|
|
249
|
+
await transport.request("runner.failed", { error: errorMessage(error) });
|
|
250
250
|
} finally {
|
|
251
251
|
clearTimeout(timer);
|
|
252
252
|
}
|
|
@@ -296,11 +296,6 @@ function raceWithAbort<T>(operation: Promise<T>, signal: AbortSignal): Promise<T
|
|
|
296
296
|
});
|
|
297
297
|
}
|
|
298
298
|
|
|
299
|
-
function boundedError(error: unknown): string {
|
|
300
|
-
const message = errorMessage(error);
|
|
301
|
-
return message.length <= 8_192 ? message : `${message.slice(0, 8_192)}…`;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
299
|
async function main(): Promise<void> {
|
|
305
300
|
try {
|
|
306
301
|
process.exitCode = await runResourceRunner();
|
package/src/server/rpc-bridge.ts
CHANGED
|
@@ -19,7 +19,7 @@ export default function piWorkflowsRpcBridge(pi: ExtensionAPI) {
|
|
|
19
19
|
description: [
|
|
20
20
|
"Publish an update or submit the output for the pending workflow step.",
|
|
21
21
|
"Only call this tool when a workflow step contract in the conversation asks you to.",
|
|
22
|
-
"Pass the exact
|
|
22
|
+
"Pass the exact requestId from the contract.",
|
|
23
23
|
].join(" "),
|
|
24
24
|
parameters: WorkflowSubmissionToolParameters,
|
|
25
25
|
async execute(toolCallId, rawParams) {
|
|
@@ -18,15 +18,13 @@ const DEFAULT_ABORT_GRACE_MS = 3_000;
|
|
|
18
18
|
|
|
19
19
|
type StepSubmission = {
|
|
20
20
|
action: "submit";
|
|
21
|
-
|
|
22
|
-
attempt: string;
|
|
21
|
+
requestId: string;
|
|
23
22
|
output: unknown;
|
|
24
23
|
};
|
|
25
24
|
|
|
26
25
|
type StepUpdate = {
|
|
27
26
|
action: "update";
|
|
28
|
-
|
|
29
|
-
attempt: string;
|
|
27
|
+
requestId: string;
|
|
30
28
|
update: { type: string; key: string; data: Record<string, unknown> };
|
|
31
29
|
idempotencyKey?: string;
|
|
32
30
|
};
|
|
@@ -203,8 +201,7 @@ export class RpcStepExecutor implements AgentStepExecutor {
|
|
|
203
201
|
const parsed = JSON.parse(line.slice(RPC_SUBMISSION_PREFIX.length)) as StepAction;
|
|
204
202
|
if (
|
|
205
203
|
(parsed.action === "submit" || parsed.action === "update") &&
|
|
206
|
-
typeof parsed.
|
|
207
|
-
typeof parsed.attempt === "string"
|
|
204
|
+
typeof parsed.requestId === "string"
|
|
208
205
|
) {
|
|
209
206
|
this.actions.push(parsed);
|
|
210
207
|
}
|
|
@@ -289,9 +286,7 @@ export class RpcStepExecutor implements AgentStepExecutor {
|
|
|
289
286
|
|
|
290
287
|
private takeMatchingAction(request: AgentStepRequest): StepAction | undefined {
|
|
291
288
|
const index = this.actions.findIndex(
|
|
292
|
-
(candidate) =>
|
|
293
|
-
candidate.step === request.contract.nodeId &&
|
|
294
|
-
candidate.attempt === request.contract.attemptId,
|
|
289
|
+
(candidate) => candidate.requestId === request.contract.requestId,
|
|
295
290
|
);
|
|
296
291
|
return index === -1 ? undefined : (this.actions.splice(index, 1)[0] as StepAction);
|
|
297
292
|
}
|
|
@@ -7,6 +7,9 @@ async function main(): Promise<void> {
|
|
|
7
7
|
const databasePath = databaseIndex < 0 ? undefined : process.argv[databaseIndex + 1];
|
|
8
8
|
const server = new WorkflowServer({
|
|
9
9
|
...(databasePath === undefined ? {} : { databasePath }),
|
|
10
|
+
...(process.env.PI_WORKFLOWS_MAX_WORKERS === undefined
|
|
11
|
+
? {}
|
|
12
|
+
: { maxWorkers: Number(process.env.PI_WORKFLOWS_MAX_WORKERS) }),
|
|
10
13
|
onLog: (message) => process.stderr.write(`[pi-workflows server] ${message}\n`),
|
|
11
14
|
});
|
|
12
15
|
const shutdown = () => void server.stop();
|