@osolmaz/pi-workflows 0.13.4 → 0.15.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 +146 -160
- package/dist/builtins/autoimplement.workflow.js +3 -1
- package/dist/builtins/autoimplement.workflow.js.map +1 -1
- package/dist/builtins/change-verification.workflow.js +7 -2
- package/dist/builtins/change-verification.workflow.js.map +1 -1
- package/dist/builtins/metadata.d.ts +22 -0
- package/dist/builtins/metadata.js +10 -0
- package/dist/builtins/metadata.js.map +1 -0
- package/dist/builtins/monitor.workflow.js +4 -1
- package/dist/builtins/monitor.workflow.js.map +1 -1
- package/dist/builtins/sanity-check.workflow.js +4 -1
- package/dist/builtins/sanity-check.workflow.js.map +1 -1
- package/dist/builtins/workspace-preparation.workflow.js +3 -1
- package/dist/builtins/workspace-preparation.workflow.js.map +1 -1
- package/dist/controllers/index.d.ts +1 -2
- package/dist/controllers/index.js +0 -1
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/sqlite.d.ts +85 -31
- package/dist/controllers/sqlite.js +541 -126
- package/dist/controllers/sqlite.js.map +1 -1
- package/dist/controllers/store.d.ts +1 -0
- package/dist/extension/controller-command.d.ts +22 -0
- package/dist/extension/controller-command.js +32 -0
- package/dist/extension/controller-command.js.map +1 -0
- package/dist/extension/index.d.ts +2 -9
- package/dist/extension/index.js +876 -2928
- package/dist/extension/index.js.map +1 -1
- package/dist/extension/message-card.d.ts +13 -0
- package/dist/extension/message-card.js +46 -0
- package/dist/extension/message-card.js.map +1 -0
- package/dist/extension/step-message.d.ts +5 -6
- package/dist/extension/step-message.js +41 -52
- package/dist/extension/step-message.js.map +1 -1
- package/dist/host/child-worker-supervisor.d.ts +50 -0
- package/dist/host/child-worker-supervisor.js +159 -0
- package/dist/host/child-worker-supervisor.js.map +1 -0
- package/dist/host/client.d.ts +48 -0
- package/dist/host/client.js +216 -0
- package/dist/host/client.js.map +1 -0
- package/dist/host/controller-worker-entry.d.ts +2 -0
- package/dist/host/controller-worker-entry.js +244 -0
- package/dist/host/controller-worker-entry.js.map +1 -0
- package/dist/host/controller-worker-protocol.d.ts +36 -0
- package/dist/host/controller-worker-protocol.js +49 -0
- package/dist/host/controller-worker-protocol.js.map +1 -0
- package/dist/host/controller-worker-supervisor.d.ts +21 -0
- package/dist/host/controller-worker-supervisor.js +54 -0
- package/dist/host/controller-worker-supervisor.js.map +1 -0
- package/dist/host/host-entry.d.ts +2 -0
- package/dist/host/host-entry.js +23 -0
- package/dist/host/host-entry.js.map +1 -0
- package/dist/host/processes.d.ts +17 -12
- package/dist/host/processes.js +154 -50
- package/dist/host/processes.js.map +1 -1
- package/dist/host/protocol.d.ts +38 -0
- package/dist/host/protocol.js +156 -0
- package/dist/host/protocol.js.map +1 -0
- package/dist/host/resolver-entry.d.ts +49 -0
- package/dist/host/resolver-entry.js +149 -0
- package/dist/host/resolver-entry.js.map +1 -0
- package/dist/host/rpc-executor.d.ts +14 -3
- package/dist/host/rpc-executor.js +63 -30
- package/dist/host/rpc-executor.js.map +1 -1
- package/dist/host/runner.d.ts +95 -29
- package/dist/host/runner.js +2311 -348
- package/dist/host/runner.js.map +1 -1
- package/dist/host/state.d.ts +174 -0
- package/dist/host/state.js +689 -0
- package/dist/host/state.js.map +1 -0
- package/dist/host/worker-entry.d.ts +10 -0
- package/dist/host/worker-entry.js +446 -0
- package/dist/host/worker-entry.js.map +1 -0
- package/dist/host/worker-protocol.d.ts +31 -0
- package/dist/host/worker-protocol.js +122 -0
- package/dist/host/worker-protocol.js.map +1 -0
- package/dist/host/worker-store.d.ts +80 -0
- package/dist/host/worker-store.js +91 -0
- package/dist/host/worker-store.js.map +1 -0
- package/dist/host/worker-supervisor.d.ts +22 -0
- package/dist/host/worker-supervisor.js +54 -0
- package/dist/host/worker-supervisor.js.map +1 -0
- package/dist/render/canvas.d.ts +2 -1
- package/dist/render/canvas.js +40 -15
- package/dist/render/canvas.js.map +1 -1
- package/dist/render/graph-render.d.ts +7 -3
- package/dist/render/graph-render.js +125 -74
- package/dist/render/graph-render.js.map +1 -1
- package/dist/state/database.js +3 -1
- package/dist/state/database.js.map +1 -1
- package/dist/state/index.d.ts +1 -0
- package/dist/state/index.js +1 -0
- package/dist/state/index.js.map +1 -1
- package/dist/state/prune.js +36 -10
- package/dist/state/prune.js.map +1 -1
- package/dist/state/schema.d.ts +1 -1
- package/dist/state/schema.js +171 -3
- package/dist/state/schema.js.map +1 -1
- package/dist/state/viewer.d.ts +46 -0
- package/dist/state/viewer.js +249 -0
- package/dist/state/viewer.js.map +1 -0
- package/dist/viewer/cli.d.ts +1 -1
- package/dist/viewer/cli.js +47 -18
- package/dist/viewer/cli.js.map +1 -1
- package/dist/workflows/composition.js +25 -2
- package/dist/workflows/composition.js.map +1 -1
- package/dist/workflows/definition.d.ts +3 -1
- package/dist/workflows/definition.js +25 -0
- package/dist/workflows/definition.js.map +1 -1
- package/dist/workflows/engine.d.ts +1 -0
- package/dist/workflows/engine.js +157 -42
- package/dist/workflows/engine.js.map +1 -1
- package/dist/workflows/errors.d.ts +3 -1
- package/dist/workflows/errors.js +4 -7
- package/dist/workflows/errors.js.map +1 -1
- package/dist/workflows/human-decision.d.ts +3 -0
- package/dist/workflows/human-decision.js +31 -0
- package/dist/workflows/human-decision.js.map +1 -1
- package/dist/workflows/index.d.ts +1 -1
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/schema.js +17 -6
- package/dist/workflows/schema.js.map +1 -1
- package/dist/{viewer → workflows}/session-reducer.d.ts +3 -1
- package/dist/{viewer → workflows}/session-reducer.js +4 -0
- package/dist/workflows/session-reducer.js.map +1 -0
- package/dist/workflows/store.d.ts +87 -1
- package/dist/workflows/store.js +892 -93
- package/dist/workflows/store.js.map +1 -1
- package/dist/workflows/tool-input.d.ts +0 -22
- package/dist/workflows/tool-input.js +1 -44
- package/dist/workflows/tool-input.js.map +1 -1
- package/dist/workflows/types.d.ts +36 -4
- package/docs/2026-08-25-workflow-follow-ups.md +8 -6
- package/docs/2026-08-30-out-of-process-workflow-host-plan.md +353 -0
- package/docs/CONTROLLERS.md +11 -11
- package/docs/DEFERRED_TURNS.md +61 -27
- package/docs/HUMAN_DECISIONS.md +12 -4
- package/docs/SQLITE_STATE.md +42 -8
- package/docs/WORKFLOW_HOST.md +452 -0
- package/docs/development.md +46 -30
- package/docs/live-replay-protocol.md +129 -100
- package/docs/plans/2026-08-19-human-decision-gates-plan.md +34 -8
- package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +399 -0
- package/docs/plans/2026-08-28-piw-incremental-viewer-plan.md +293 -0
- package/docs/plans/piw-viewer-experience-implementation-plan.md +11 -1
- package/docs/plans/tui-viewer-implementation-plan.md +5 -0
- package/docs/tui-viewer.md +18 -3
- package/docs/workflows.md +164 -156
- package/examples/workflows/command-batch.workflow.ts +2 -0
- package/examples/workflows/shell.workflow.ts +2 -1
- package/herdr-plugin.toml +1 -1
- package/package.json +1 -1
- package/skills/autodoc/SKILL.md +1 -1
- package/skills/autoimplement/SKILL.md +1 -1
- package/skills/autoplan/SKILL.md +1 -1
- package/skills/pi-workflows/SKILL.md +2 -0
- package/src/builtins/autoimplement.workflow.ts +3 -0
- package/src/builtins/change-verification.workflow.ts +7 -2
- package/src/builtins/metadata.ts +9 -0
- package/src/builtins/monitor.workflow.ts +4 -0
- package/src/builtins/sanity-check.workflow.ts +4 -0
- package/src/builtins/workspace-preparation.workflow.ts +3 -1
- package/src/controllers/index.ts +3 -5
- package/src/controllers/sqlite.ts +929 -225
- package/src/controllers/store.ts +1 -0
- package/src/extension/controller-command.ts +45 -0
- package/src/extension/index.ts +948 -3506
- package/src/extension/message-card.ts +61 -0
- package/src/extension/step-message.ts +58 -63
- package/src/host/child-worker-supervisor.ts +183 -0
- package/src/host/client.ts +293 -0
- package/src/host/controller-worker-entry.ts +311 -0
- package/src/host/controller-worker-protocol.ts +104 -0
- package/src/host/controller-worker-supervisor.ts +79 -0
- package/src/host/host-entry.ts +23 -0
- package/src/host/processes.ts +171 -54
- package/src/host/protocol.ts +196 -0
- package/src/host/resolver-entry.ts +241 -0
- package/src/host/rpc-executor.ts +76 -34
- package/src/host/runner.ts +2813 -422
- package/src/host/state.ts +1160 -0
- package/src/host/worker-entry.ts +533 -0
- package/src/host/worker-protocol.ts +165 -0
- package/src/host/worker-store.ts +229 -0
- package/src/host/worker-supervisor.ts +74 -0
- package/src/render/canvas.ts +44 -10
- package/src/render/graph-render.ts +145 -90
- package/src/state/database.ts +2 -1
- package/src/state/index.ts +14 -0
- package/src/state/prune.ts +35 -9
- package/src/state/schema.ts +171 -3
- package/src/state/viewer.ts +356 -0
- package/src/viewer/cli.ts +49 -17
- package/src/workflows/composition.ts +36 -2
- package/src/workflows/definition.ts +32 -0
- package/src/workflows/engine.ts +157 -54
- package/src/workflows/errors.ts +11 -2
- package/src/workflows/human-decision.ts +49 -0
- package/src/workflows/index.ts +2 -0
- package/src/workflows/schema.ts +19 -6
- package/src/{viewer → workflows}/session-reducer.ts +11 -1
- package/src/workflows/store.ts +1316 -108
- package/src/workflows/tool-input.ts +2 -60
- package/src/workflows/types.ts +32 -4
- package/dist/controllers/workflow-engine-scheduler.d.ts +0 -29
- package/dist/controllers/workflow-engine-scheduler.js +0 -175
- package/dist/controllers/workflow-engine-scheduler.js.map +0 -1
- package/dist/extension/controller-host.d.ts +0 -48
- package/dist/extension/controller-host.js +0 -110
- package/dist/extension/controller-host.js.map +0 -1
- package/dist/extension/deferred-turn-coordinator.d.ts +0 -32
- package/dist/extension/deferred-turn-coordinator.js +0 -143
- package/dist/extension/deferred-turn-coordinator.js.map +0 -1
- package/dist/extension/deferred-turn.d.ts +0 -44
- package/dist/extension/deferred-turn.js +0 -110
- package/dist/extension/deferred-turn.js.map +0 -1
- package/dist/extension/executor.d.ts +0 -86
- package/dist/extension/executor.js +0 -311
- package/dist/extension/executor.js.map +0 -1
- package/dist/extension/follow-up-coordinator.d.ts +0 -27
- package/dist/extension/follow-up-coordinator.js +0 -131
- package/dist/extension/follow-up-coordinator.js.map +0 -1
- package/dist/extension/recorder.d.ts +0 -84
- package/dist/extension/recorder.js +0 -528
- package/dist/extension/recorder.js.map +0 -1
- package/dist/extension/session-events.d.ts +0 -133
- package/dist/extension/session-events.js +0 -61
- package/dist/extension/session-events.js.map +0 -1
- package/dist/viewer/session-reducer.js.map +0 -1
- package/src/controllers/workflow-engine-scheduler.ts +0 -246
- package/src/extension/controller-host.ts +0 -167
- package/src/extension/deferred-turn-coordinator.ts +0 -171
- package/src/extension/deferred-turn.ts +0 -166
- package/src/extension/executor.ts +0 -411
- package/src/extension/follow-up-coordinator.ts +0 -151
- package/src/extension/recorder.ts +0 -655
- package/src/extension/session-events.ts +0 -121
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
type CommandBatchItemResult,
|
|
12
12
|
type CommandBatchResult,
|
|
13
13
|
} from "../workflows/command-batch.js";
|
|
14
|
-
import { action, agent, compute, defineWorkflow } from "../workflows/definition.js";
|
|
14
|
+
import { action, agent, compute, defineWorkflow, manualEffect } from "../workflows/definition.js";
|
|
15
15
|
import type { WorkflowActionContext, WorkflowNodeContext } from "../workflows/types.js";
|
|
16
16
|
import { validateVerificationCommandSafety } from "./autoimplement-command-batches.js";
|
|
17
17
|
import {
|
|
@@ -1027,16 +1027,21 @@ export const changeVerificationWorkflow = defineWorkflow({
|
|
|
1027
1027
|
validate: parsePlannedChecks,
|
|
1028
1028
|
}),
|
|
1029
1029
|
runCandidate: action({
|
|
1030
|
+
effect: manualEffect("pi-workflows.change-verification.candidate"),
|
|
1030
1031
|
run: async (context) =>
|
|
1031
1032
|
await runCandidate(context, checksForContext(context as unknown as WorkflowNodeContext)),
|
|
1032
1033
|
}),
|
|
1033
1034
|
runBase: action({
|
|
1035
|
+
effect: manualEffect("pi-workflows.change-verification.base"),
|
|
1034
1036
|
run: async (context) =>
|
|
1035
1037
|
await runBase(context, checksForContext(context as unknown as WorkflowNodeContext)),
|
|
1036
1038
|
}),
|
|
1037
1039
|
classify: compute({ run: latestClassification }),
|
|
1038
1040
|
repairGuard: compute({ run: repairGuard }),
|
|
1039
|
-
mechanicalRepair: action({
|
|
1041
|
+
mechanicalRepair: action({
|
|
1042
|
+
effect: manualEffect("pi-workflows.change-verification.mechanical-repair"),
|
|
1043
|
+
run: runMechanicalRepair,
|
|
1044
|
+
}),
|
|
1040
1045
|
semanticRepair: agent({
|
|
1041
1046
|
prompt: (context) => {
|
|
1042
1047
|
const input = context.input as ChangeVerificationInput;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const BUILTIN_WORKFLOW_METADATA = [
|
|
2
|
+
{ id: "plain-summary", revision: "3" },
|
|
3
|
+
{ id: "autoplan", revision: "6" },
|
|
4
|
+
{ id: "autodoc", revision: "2" },
|
|
5
|
+
{ id: "autoimplement", revision: "11" },
|
|
6
|
+
{ id: "plan-approval", revision: "4" },
|
|
7
|
+
{ id: "sanity-check", revision: "6" },
|
|
8
|
+
{ id: "monitor", revision: "11" },
|
|
9
|
+
] as const;
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
agent,
|
|
4
4
|
compute,
|
|
5
5
|
defineWorkflow,
|
|
6
|
+
idempotentEffect,
|
|
6
7
|
includeWorkflow,
|
|
7
8
|
includedResult,
|
|
8
9
|
notify,
|
|
@@ -855,6 +856,7 @@ const monitorWorkflow: WorkflowDefinition = defineWorkflow({
|
|
|
855
856
|
guard: compute({ run: guardObservation }),
|
|
856
857
|
estimate: compute({ run: ({ outputs }) => estimateTracks(outputs) }),
|
|
857
858
|
publish_progress: action({
|
|
859
|
+
effect: idempotentEffect("pi-workflows.monitor.publish-progress"),
|
|
858
860
|
statusDetail: "publishing monitor progress",
|
|
859
861
|
run: async ({ outputs, publishUpdate, signal }) => {
|
|
860
862
|
const observation = currentObservation(outputs);
|
|
@@ -944,6 +946,7 @@ const monitorWorkflow: WorkflowDefinition = defineWorkflow({
|
|
|
944
946
|
},
|
|
945
947
|
}),
|
|
946
948
|
schedule: action({
|
|
949
|
+
effect: idempotentEffect("pi-workflows.monitor.schedule"),
|
|
947
950
|
statusDetail: "scheduling next monitor observation",
|
|
948
951
|
run: async ({ outputs, publishUpdate }) => {
|
|
949
952
|
const config = configFrom(outputs);
|
|
@@ -965,6 +968,7 @@ const monitorWorkflow: WorkflowDefinition = defineWorkflow({
|
|
|
965
968
|
},
|
|
966
969
|
}),
|
|
967
970
|
sleep: shell({
|
|
971
|
+
effect: idempotentEffect("pi-workflows.monitor.sleep"),
|
|
968
972
|
statusDetail: "waiting for next monitor observation",
|
|
969
973
|
timeoutMs: MAX_INTERVAL_MINUTES * 60_000 + NODE_TIMEOUT_MARGIN_MS,
|
|
970
974
|
exec: ({ outputs }) => {
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
compute,
|
|
11
11
|
defineWorkflow,
|
|
12
12
|
includeWorkflow,
|
|
13
|
+
manualEffect,
|
|
13
14
|
} from "../workflows/definition.js";
|
|
14
15
|
import { extractJsonValue } from "../workflows/json.js";
|
|
15
16
|
import type { WorkflowActionContext, WorkflowProgressStatus } from "../workflows/types.js";
|
|
@@ -780,6 +781,7 @@ export const sanityCheckWorkflow = defineWorkflow({
|
|
|
780
781
|
run: ({ input }) => input as SanityCheckConfig,
|
|
781
782
|
}),
|
|
782
783
|
collectEvidence: action({
|
|
784
|
+
effect: manualEffect("pi-workflows.sanity-check.collect-evidence"),
|
|
783
785
|
statusDetail: "collecting contribution evidence",
|
|
784
786
|
timeoutMs: 2 * 60_000,
|
|
785
787
|
run: async ({ outputs, signal }) =>
|
|
@@ -790,11 +792,13 @@ export const sanityCheckWorkflow = defineWorkflow({
|
|
|
790
792
|
),
|
|
791
793
|
}),
|
|
792
794
|
review: action({
|
|
795
|
+
effect: manualEffect("pi-workflows.sanity-check.review"),
|
|
793
796
|
statusDetail: "reviewing contribution",
|
|
794
797
|
timeoutMs: REVIEW_TIMEOUT_MS,
|
|
795
798
|
run: runReviews,
|
|
796
799
|
}),
|
|
797
800
|
verify: action({
|
|
801
|
+
effect: manualEffect("pi-workflows.sanity-check.verify"),
|
|
798
802
|
statusDetail: "verifying findings",
|
|
799
803
|
timeoutMs: REVIEW_TIMEOUT_MS,
|
|
800
804
|
run: verifyReviews,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
|
-
import { action, agent, compute, defineWorkflow } from "../workflows/definition.js";
|
|
4
|
+
import { action, agent, compute, defineWorkflow, manualEffect } from "../workflows/definition.js";
|
|
5
5
|
|
|
6
6
|
const execFileAsync = promisify(execFile);
|
|
7
7
|
|
|
@@ -625,6 +625,7 @@ export const workspacePreparationWorkflow = defineWorkflow({
|
|
|
625
625
|
},
|
|
626
626
|
nodes: {
|
|
627
627
|
inspect: action({
|
|
628
|
+
effect: manualEffect("pi-workflows.workspace-preparation.inspect"),
|
|
628
629
|
run: async ({ input }) => await inspectWorkspace(input as WorkspacePreparationInput),
|
|
629
630
|
}),
|
|
630
631
|
propose: agent({
|
|
@@ -638,6 +639,7 @@ export const workspacePreparationWorkflow = defineWorkflow({
|
|
|
638
639
|
validate: parseProposal,
|
|
639
640
|
}),
|
|
640
641
|
apply: action({
|
|
642
|
+
effect: manualEffect("pi-workflows.workspace-preparation.apply"),
|
|
641
643
|
run: async ({ input, outputs }) =>
|
|
642
644
|
await prepareWorkspace(
|
|
643
645
|
input as WorkspacePreparationInput,
|
package/src/controllers/index.ts
CHANGED
|
@@ -24,7 +24,10 @@ export {
|
|
|
24
24
|
SqliteControllerStore,
|
|
25
25
|
type RunEventRecord,
|
|
26
26
|
type WorkflowNotificationRecord,
|
|
27
|
+
type WorkflowRunClaimOptions,
|
|
28
|
+
type WorkflowRunPreparationResult,
|
|
27
29
|
type WorkflowRunQueueRecord,
|
|
30
|
+
type WorkflowRunReservationOptions,
|
|
28
31
|
} from "./sqlite.js";
|
|
29
32
|
export {
|
|
30
33
|
type ControllerStore,
|
|
@@ -42,11 +45,6 @@ export {
|
|
|
42
45
|
loadDiscoveredControllers,
|
|
43
46
|
type DiscoveredController,
|
|
44
47
|
} from "./loader.js";
|
|
45
|
-
export {
|
|
46
|
-
WorkflowEngineScheduler,
|
|
47
|
-
type ResolvedChildWorkflow,
|
|
48
|
-
type WorkflowEngineSchedulerOptions,
|
|
49
|
-
} from "./workflow-engine-scheduler.js";
|
|
50
48
|
export {
|
|
51
49
|
ControllerWorkflowCoordinator,
|
|
52
50
|
type ControllerWorkflowControlRequest,
|