@pasko70/pibo 3.3.0 → 3.4.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-runtime/capabilities.js +5 -0
- package/dist/agent-runtime/contract.js +2 -0
- package/dist/agent-runtime/routed-session.js +68 -11
- package/dist/agent-runtimes/codex-native/adapter.js +3 -0
- package/dist/agent-runtimes/codex-native/thread.js +26 -4
- package/dist/agent-runtimes/omp/adapter.js +1 -0
- package/dist/agent-runtimes/pi/adapter.js +4 -0
- package/dist/agent-runtimes/pi/routed-session.js +53 -5
- package/dist/apps/chat/chat-api-routes.js +11 -37
- package/dist/apps/chat/chat-request-normalizers.js +8 -48
- package/dist/apps/chat/data/legacy-project-migration.js +492 -0
- package/dist/apps/chat/data/room-service.js +2 -2
- package/dist/apps/chat/data/workflow-session-model.js +1 -0
- package/dist/apps/chat/data/workflow-session-service.js +352 -0
- package/dist/apps/chat/rooms.js +1 -1
- package/dist/apps/chat/types/rooms.js +30 -0
- package/dist/apps/chat/web-app.js +264 -647
- package/dist/apps/chat/workflow-catalog.js +18 -18
- package/dist/apps/chat/{project-workflow-human-actions.js → workflow-human-actions.js} +14 -14
- package/dist/apps/chat/workflow-manual-trigger-runtime.js +5 -1
- package/dist/apps/chat/workflow-persistence.js +20 -28
- package/dist/apps/chat/{project-workflow-sessions.js → workflow-sessions.js} +18 -17
- package/dist/apps/chat-ui/assets/{dist-Kc3zbvQi.js → dist-AhtdAETR.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CcAkJ8iv.js → dist-Bk_L1qbJ.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-BbCjOLiw.js → dist-Dyp6sLQn.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-Bd9gWCbk.js → dist-jVaiGXFD.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-C9a0_446.js → dist-t25moyJS.js} +1 -1
- package/dist/apps/chat-ui/assets/index-CZjNw-aK.js +228 -0
- package/dist/apps/chat-ui/assets/index-CcEjFITM.css +1 -0
- package/dist/apps/chat-ui/index.html +2 -2
- package/dist/apps/chat-vscode-web/assets/index-Spj6M0tn.js +43 -0
- package/dist/apps/chat-vscode-web/index.html +1 -1
- package/dist/compute/pool/cli.js +1 -1
- package/dist/compute/pool/seeds.js +2 -3
- package/dist/config/config.js +1 -1
- package/dist/core/session-router.js +7 -4
- package/dist/previews/cli.js +154 -79
- package/dist/previews/compute-worker.js +37 -0
- package/dist/previews/config.js +2 -1
- package/dist/previews/migrations/session-ownership.js +7 -0
- package/dist/previews/proxy.js +4 -2
- package/dist/previews/public-setup.js +108 -0
- package/dist/previews/store.js +20 -13
- package/dist/previews/web-app.js +12 -2
- package/dist/sessions/workflow-session-kind.js +0 -3
- package/npm-shrinkwrap.json +7 -6
- package/package.json +6 -2
- package/packages/workflows/README.md +21 -0
- package/packages/workflows/dist/api/index.d.ts +48 -0
- package/packages/workflows/dist/api/index.d.ts.map +1 -0
- package/packages/workflows/dist/api/index.js +96 -0
- package/packages/workflows/dist/api/index.js.map +1 -0
- package/packages/workflows/dist/definition-hash.d.ts +4 -0
- package/packages/workflows/dist/definition-hash.d.ts.map +1 -0
- package/packages/workflows/dist/definition-hash.js +27 -0
- package/packages/workflows/dist/definition-hash.js.map +1 -0
- package/packages/workflows/dist/fixtures/index.d.ts +39 -0
- package/packages/workflows/dist/fixtures/index.d.ts.map +1 -0
- package/packages/workflows/dist/fixtures/index.js +608 -0
- package/packages/workflows/dist/fixtures/index.js.map +1 -0
- package/packages/workflows/dist/index.d.ts +16 -0
- package/packages/workflows/dist/index.d.ts.map +1 -0
- package/packages/workflows/dist/index.js +10 -0
- package/packages/workflows/dist/index.js.map +1 -0
- package/packages/workflows/dist/inspection/index.d.ts +47 -0
- package/packages/workflows/dist/inspection/index.d.ts.map +1 -0
- package/packages/workflows/dist/inspection/index.js +131 -0
- package/packages/workflows/dist/inspection/index.js.map +1 -0
- package/packages/workflows/dist/registry/index.d.ts +30 -0
- package/packages/workflows/dist/registry/index.d.ts.map +1 -0
- package/packages/workflows/dist/registry/index.js +161 -0
- package/packages/workflows/dist/registry/index.js.map +1 -0
- package/packages/workflows/dist/runtime/adapter-node.d.ts +28 -0
- package/packages/workflows/dist/runtime/adapter-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/adapter-node.js +172 -0
- package/packages/workflows/dist/runtime/adapter-node.js.map +1 -0
- package/packages/workflows/dist/runtime/agent-node.d.ts +32 -0
- package/packages/workflows/dist/runtime/agent-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/agent-node.js +231 -0
- package/packages/workflows/dist/runtime/agent-node.js.map +1 -0
- package/packages/workflows/dist/runtime/agent-runtime.d.ts +25 -0
- package/packages/workflows/dist/runtime/agent-runtime.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/agent-runtime.js +111 -0
- package/packages/workflows/dist/runtime/agent-runtime.js.map +1 -0
- package/packages/workflows/dist/runtime/code-node.d.ts +31 -0
- package/packages/workflows/dist/runtime/code-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/code-node.js +223 -0
- package/packages/workflows/dist/runtime/code-node.js.map +1 -0
- package/packages/workflows/dist/runtime/dispatch-failures.d.ts +36 -0
- package/packages/workflows/dist/runtime/dispatch-failures.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/dispatch-failures.js +80 -0
- package/packages/workflows/dist/runtime/dispatch-failures.js.map +1 -0
- package/packages/workflows/dist/runtime/edge-payloads.d.ts +3 -0
- package/packages/workflows/dist/runtime/edge-payloads.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/edge-payloads.js +11 -0
- package/packages/workflows/dist/runtime/edge-payloads.js.map +1 -0
- package/packages/workflows/dist/runtime/edge-transfer.d.ts +39 -0
- package/packages/workflows/dist/runtime/edge-transfer.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/edge-transfer.js +356 -0
- package/packages/workflows/dist/runtime/edge-transfer.js.map +1 -0
- package/packages/workflows/dist/runtime/human-action.d.ts +43 -0
- package/packages/workflows/dist/runtime/human-action.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/human-action.js +231 -0
- package/packages/workflows/dist/runtime/human-action.js.map +1 -0
- package/packages/workflows/dist/runtime/human-node.d.ts +27 -0
- package/packages/workflows/dist/runtime/human-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/human-node.js +126 -0
- package/packages/workflows/dist/runtime/human-node.js.map +1 -0
- package/packages/workflows/dist/runtime/ids.d.ts +2 -0
- package/packages/workflows/dist/runtime/ids.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/ids.js +4 -0
- package/packages/workflows/dist/runtime/ids.js.map +1 -0
- package/packages/workflows/dist/runtime/index.d.ts +23 -0
- package/packages/workflows/dist/runtime/index.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/index.js +12 -0
- package/packages/workflows/dist/runtime/index.js.map +1 -0
- package/packages/workflows/dist/runtime/manual-trigger.d.ts +51 -0
- package/packages/workflows/dist/runtime/manual-trigger.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/manual-trigger.js +403 -0
- package/packages/workflows/dist/runtime/manual-trigger.js.map +1 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.d.ts +48 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.js +246 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.js.map +1 -0
- package/packages/workflows/dist/runtime/one-node-agent.d.ts +34 -0
- package/packages/workflows/dist/runtime/one-node-agent.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/one-node-agent.js +334 -0
- package/packages/workflows/dist/runtime/one-node-agent.js.map +1 -0
- package/packages/workflows/dist/runtime/persistence.d.ts +9 -0
- package/packages/workflows/dist/runtime/persistence.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/persistence.js +67 -0
- package/packages/workflows/dist/runtime/persistence.js.map +1 -0
- package/packages/workflows/dist/runtime/pibo-routing.d.ts +126 -0
- package/packages/workflows/dist/runtime/pibo-routing.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/pibo-routing.js +96 -0
- package/packages/workflows/dist/runtime/pibo-routing.js.map +1 -0
- package/packages/workflows/dist/runtime/prompts.d.ts +20 -0
- package/packages/workflows/dist/runtime/prompts.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/prompts.js +235 -0
- package/packages/workflows/dist/runtime/prompts.js.map +1 -0
- package/packages/workflows/dist/runtime/retry.d.ts +35 -0
- package/packages/workflows/dist/runtime/retry.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/retry.js +80 -0
- package/packages/workflows/dist/runtime/retry.js.map +1 -0
- package/packages/workflows/dist/runtime/state.d.ts +14 -0
- package/packages/workflows/dist/runtime/state.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/state.js +139 -0
- package/packages/workflows/dist/runtime/state.js.map +1 -0
- package/packages/workflows/dist/runtime/time.d.ts +6 -0
- package/packages/workflows/dist/runtime/time.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/time.js +42 -0
- package/packages/workflows/dist/runtime/time.js.map +1 -0
- package/packages/workflows/dist/store/catalog-records.d.ts +18 -0
- package/packages/workflows/dist/store/catalog-records.d.ts.map +1 -0
- package/packages/workflows/dist/store/catalog-records.js +59 -0
- package/packages/workflows/dist/store/catalog-records.js.map +1 -0
- package/packages/workflows/dist/store/contracts.d.ts +149 -0
- package/packages/workflows/dist/store/contracts.d.ts.map +1 -0
- package/packages/workflows/dist/store/contracts.js +2 -0
- package/packages/workflows/dist/store/contracts.js.map +1 -0
- package/packages/workflows/dist/store/draft-writes.d.ts +7 -0
- package/packages/workflows/dist/store/draft-writes.d.ts.map +1 -0
- package/packages/workflows/dist/store/draft-writes.js +18 -0
- package/packages/workflows/dist/store/draft-writes.js.map +1 -0
- package/packages/workflows/dist/store/index.d.ts +55 -0
- package/packages/workflows/dist/store/index.d.ts.map +1 -0
- package/packages/workflows/dist/store/index.js +650 -0
- package/packages/workflows/dist/store/index.js.map +1 -0
- package/packages/workflows/dist/store/list-query.d.ts +13 -0
- package/packages/workflows/dist/store/list-query.d.ts.map +1 -0
- package/packages/workflows/dist/store/list-query.js +20 -0
- package/packages/workflows/dist/store/list-query.js.map +1 -0
- package/packages/workflows/dist/store/row-mappers.d.ts +206 -0
- package/packages/workflows/dist/store/row-mappers.d.ts.map +1 -0
- package/packages/workflows/dist/store/row-mappers.js +262 -0
- package/packages/workflows/dist/store/row-mappers.js.map +1 -0
- package/packages/workflows/dist/store/schema.d.ts +13 -0
- package/packages/workflows/dist/store/schema.d.ts.map +1 -0
- package/packages/workflows/dist/store/schema.js +458 -0
- package/packages/workflows/dist/store/schema.js.map +1 -0
- package/packages/workflows/dist/store/write-values.d.ts +18 -0
- package/packages/workflows/dist/store/write-values.d.ts.map +1 -0
- package/packages/workflows/dist/store/write-values.js +227 -0
- package/packages/workflows/dist/store/write-values.js.map +1 -0
- package/packages/workflows/dist/types/index.d.ts +1202 -0
- package/packages/workflows/dist/types/index.d.ts.map +1 -0
- package/packages/workflows/dist/types/index.js +8 -0
- package/packages/workflows/dist/types/index.js.map +1 -0
- package/packages/workflows/dist/validation/diagnostics.d.ts +27 -0
- package/packages/workflows/dist/validation/diagnostics.d.ts.map +1 -0
- package/packages/workflows/dist/validation/diagnostics.js +104 -0
- package/packages/workflows/dist/validation/diagnostics.js.map +1 -0
- package/packages/workflows/dist/validation/graph-cycles.d.ts +4 -0
- package/packages/workflows/dist/validation/graph-cycles.d.ts.map +1 -0
- package/packages/workflows/dist/validation/graph-cycles.js +130 -0
- package/packages/workflows/dist/validation/graph-cycles.js.map +1 -0
- package/packages/workflows/dist/validation/graph-edges.d.ts +5 -0
- package/packages/workflows/dist/validation/graph-edges.d.ts.map +1 -0
- package/packages/workflows/dist/validation/graph-edges.js +48 -0
- package/packages/workflows/dist/validation/graph-edges.js.map +1 -0
- package/packages/workflows/dist/validation/graph-ports.d.ts +5 -0
- package/packages/workflows/dist/validation/graph-ports.d.ts.map +1 -0
- package/packages/workflows/dist/validation/graph-ports.js +55 -0
- package/packages/workflows/dist/validation/graph-ports.js.map +1 -0
- package/packages/workflows/dist/validation/index.d.ts +18 -0
- package/packages/workflows/dist/validation/index.d.ts.map +1 -0
- package/packages/workflows/dist/validation/index.js +175 -0
- package/packages/workflows/dist/validation/index.js.map +1 -0
- package/packages/workflows/dist/validation/json-schema.d.ts +12 -0
- package/packages/workflows/dist/validation/json-schema.d.ts.map +1 -0
- package/packages/workflows/dist/validation/json-schema.js +556 -0
- package/packages/workflows/dist/validation/json-schema.js.map +1 -0
- package/packages/workflows/dist/validation/registry-refs.d.ts +21 -0
- package/packages/workflows/dist/validation/registry-refs.d.ts.map +1 -0
- package/packages/workflows/dist/validation/registry-refs.js +283 -0
- package/packages/workflows/dist/validation/registry-refs.js.map +1 -0
- package/packages/workflows/dist/validation/retry-policy.d.ts +3 -0
- package/packages/workflows/dist/validation/retry-policy.d.ts.map +1 -0
- package/packages/workflows/dist/validation/retry-policy.js +114 -0
- package/packages/workflows/dist/validation/retry-policy.js.map +1 -0
- package/packages/workflows/dist/validation/schema-declarations.d.ts +5 -0
- package/packages/workflows/dist/validation/schema-declarations.d.ts.map +1 -0
- package/packages/workflows/dist/validation/schema-declarations.js +36 -0
- package/packages/workflows/dist/validation/schema-declarations.js.map +1 -0
- package/packages/workflows/dist/validation/state-access.d.ts +4 -0
- package/packages/workflows/dist/validation/state-access.d.ts.map +1 -0
- package/packages/workflows/dist/validation/state-access.js +121 -0
- package/packages/workflows/dist/validation/state-access.js.map +1 -0
- package/packages/workflows/dist/xstate/index.d.ts +73 -0
- package/packages/workflows/dist/xstate/index.d.ts.map +1 -0
- package/packages/workflows/dist/xstate/index.js +728 -0
- package/packages/workflows/dist/xstate/index.js.map +1 -0
- package/packages/workflows/package.json +23 -0
- package/dist/apps/chat/data/project-service.js +0 -1029
- package/dist/apps/chat-ui/assets/index-DWJnUye8.css +0 -1
- package/dist/apps/chat-ui/assets/index-exohEOUE.js +0 -228
- package/dist/apps/chat-vscode-web/assets/index-D1bpAUkR.js +0 -43
package/dist/previews/store.js
CHANGED
|
@@ -5,7 +5,8 @@ import { DatabaseSync } from "node:sqlite";
|
|
|
5
5
|
import { ensurePrivatePiboHomeForPath, piboHomePath } from "../core/pibo-home.js";
|
|
6
6
|
import { protectPrivateFileSync } from "../core/private-path.js";
|
|
7
7
|
import { loadPreviewConfig } from "./config.js";
|
|
8
|
-
|
|
8
|
+
import { migratePreviewSessionOwnership } from "./migrations/session-ownership.js";
|
|
9
|
+
export const PREVIEW_SCHEMA_VERSION = 6;
|
|
9
10
|
export const MAX_ACTIVE_PREVIEW_EXPOSURES = 256;
|
|
10
11
|
export const MAX_ACTIVE_PREVIEW_EXPOSURES_PER_SESSION = 16;
|
|
11
12
|
export const MAX_OUTSTANDING_PREVIEW_TICKETS = 32;
|
|
@@ -52,8 +53,6 @@ function validateExposureInput(input) {
|
|
|
52
53
|
throw new Error("Pibo Session id is invalid");
|
|
53
54
|
if (!input.label.trim() || input.label.length > 120)
|
|
54
55
|
throw new Error("Preview label must contain 1 to 120 characters");
|
|
55
|
-
if (input.projectId && input.projectId.length > 256)
|
|
56
|
-
throw new Error("Preview Project id is too long");
|
|
57
56
|
if (!input.workspace || input.workspace.length > 4_096)
|
|
58
57
|
throw new Error("Preview workspace is invalid");
|
|
59
58
|
if (!Number.isInteger(input.targetPort) || input.targetPort < 1024 || input.targetPort > 65535) {
|
|
@@ -66,13 +65,15 @@ function validateExposureInput(input) {
|
|
|
66
65
|
if ((input.managementMode ?? "external") === "managed" && !input.startCommand) {
|
|
67
66
|
throw new Error("Managed Preview definitions require a start command");
|
|
68
67
|
}
|
|
68
|
+
if (input.proxyMode !== undefined && input.proxyMode !== "standard" && input.proxyMode !== "pibo-compute-dev-auth") {
|
|
69
|
+
throw new Error("Preview proxy mode is invalid");
|
|
70
|
+
}
|
|
69
71
|
}
|
|
70
72
|
function exposureFromRow(row) {
|
|
71
73
|
const managementMode = row.management_mode === "managed" ? "managed" : "external";
|
|
72
74
|
return {
|
|
73
75
|
id: row.id,
|
|
74
76
|
piboSessionId: row.pibo_session_id,
|
|
75
|
-
projectId: row.project_id ?? undefined,
|
|
76
77
|
label: row.label,
|
|
77
78
|
targetHost: row.target_host,
|
|
78
79
|
targetPort: row.target_port,
|
|
@@ -80,6 +81,7 @@ function exposureFromRow(row) {
|
|
|
80
81
|
targetProcessStartTicks: row.target_process_start_ticks ?? undefined,
|
|
81
82
|
workspace: row.workspace,
|
|
82
83
|
managementMode,
|
|
84
|
+
proxyMode: row.proxy_mode === "pibo-compute-dev-auth" ? "pibo-compute-dev-auth" : "standard",
|
|
83
85
|
startCommand: row.start_command ?? undefined,
|
|
84
86
|
serverState: managementMode === "managed" && row.server_state !== "external" ? row.server_state : undefined,
|
|
85
87
|
serverGeneration: row.server_generation ?? undefined,
|
|
@@ -107,6 +109,7 @@ function sameAuthorizationExposure(first, second) {
|
|
|
107
109
|
return first.id === second.id &&
|
|
108
110
|
first.createdAt === second.createdAt &&
|
|
109
111
|
first.managementMode === second.managementMode &&
|
|
112
|
+
first.proxyMode === second.proxyMode &&
|
|
110
113
|
first.serverGeneration === second.serverGeneration &&
|
|
111
114
|
first.targetHost === second.targetHost &&
|
|
112
115
|
first.targetPort === second.targetPort &&
|
|
@@ -165,7 +168,6 @@ export class PreviewStore {
|
|
|
165
168
|
CREATE TABLE IF NOT EXISTS preview_exposures (
|
|
166
169
|
id TEXT PRIMARY KEY,
|
|
167
170
|
pibo_session_id TEXT NOT NULL,
|
|
168
|
-
project_id TEXT,
|
|
169
171
|
label TEXT NOT NULL,
|
|
170
172
|
target_host TEXT NOT NULL CHECK (target_host IN ('127.0.0.1', '::1')),
|
|
171
173
|
target_port INTEGER NOT NULL CHECK (target_port BETWEEN 1024 AND 65535),
|
|
@@ -173,6 +175,7 @@ export class PreviewStore {
|
|
|
173
175
|
target_process_start_ticks TEXT,
|
|
174
176
|
workspace TEXT NOT NULL,
|
|
175
177
|
management_mode TEXT NOT NULL DEFAULT 'external' CHECK (management_mode IN ('external', 'managed')),
|
|
178
|
+
proxy_mode TEXT NOT NULL DEFAULT 'standard' CHECK (proxy_mode IN ('standard', 'pibo-compute-dev-auth')),
|
|
176
179
|
start_command TEXT,
|
|
177
180
|
server_state TEXT NOT NULL DEFAULT 'external' CHECK (server_state IN ('external', 'stopped', 'starting', 'running', 'stopping', 'error')),
|
|
178
181
|
server_generation TEXT,
|
|
@@ -217,6 +220,7 @@ export class PreviewStore {
|
|
|
217
220
|
["target_process_id", "INTEGER"],
|
|
218
221
|
["target_process_start_ticks", "TEXT"],
|
|
219
222
|
["management_mode", "TEXT NOT NULL DEFAULT 'external'"],
|
|
223
|
+
["proxy_mode", "TEXT NOT NULL DEFAULT 'standard' CHECK (proxy_mode IN ('standard', 'pibo-compute-dev-auth'))"],
|
|
220
224
|
["start_command", "TEXT"],
|
|
221
225
|
["server_state", "TEXT NOT NULL DEFAULT 'external'"],
|
|
222
226
|
["server_generation", "TEXT"],
|
|
@@ -244,7 +248,6 @@ export class PreviewStore {
|
|
|
244
248
|
CREATE TABLE preview_exposures (
|
|
245
249
|
id TEXT PRIMARY KEY,
|
|
246
250
|
pibo_session_id TEXT NOT NULL,
|
|
247
|
-
project_id TEXT,
|
|
248
251
|
label TEXT NOT NULL,
|
|
249
252
|
target_host TEXT NOT NULL CHECK (target_host IN ('127.0.0.1', '::1')),
|
|
250
253
|
target_port INTEGER NOT NULL CHECK (target_port BETWEEN 1024 AND 65535),
|
|
@@ -252,6 +255,7 @@ export class PreviewStore {
|
|
|
252
255
|
target_process_start_ticks TEXT,
|
|
253
256
|
workspace TEXT NOT NULL,
|
|
254
257
|
management_mode TEXT NOT NULL DEFAULT 'external' CHECK (management_mode IN ('external', 'managed')),
|
|
258
|
+
proxy_mode TEXT NOT NULL DEFAULT 'standard' CHECK (proxy_mode IN ('standard', 'pibo-compute-dev-auth')),
|
|
255
259
|
start_command TEXT,
|
|
256
260
|
server_state TEXT NOT NULL DEFAULT 'external' CHECK (server_state IN ('external', 'stopped', 'starting', 'running', 'stopping', 'error')),
|
|
257
261
|
server_generation TEXT,
|
|
@@ -268,17 +272,17 @@ export class PreviewStore {
|
|
|
268
272
|
closed_at TEXT
|
|
269
273
|
);
|
|
270
274
|
INSERT INTO preview_exposures (
|
|
271
|
-
id, pibo_session_id,
|
|
275
|
+
id, pibo_session_id, label, target_host, target_port,
|
|
272
276
|
target_process_id, target_process_start_ticks, workspace,
|
|
273
|
-
management_mode, start_command, server_state, server_generation,
|
|
277
|
+
management_mode, proxy_mode, start_command, server_state, server_generation,
|
|
274
278
|
server_started_at, server_stop_at, server_stopped_at, server_error,
|
|
275
279
|
manager_kind, manager_id, manager_pid, manager_process_start_ticks,
|
|
276
280
|
created_at, expires_at, closed_at
|
|
277
281
|
)
|
|
278
282
|
SELECT
|
|
279
|
-
id, pibo_session_id,
|
|
283
|
+
id, pibo_session_id, label, target_host, target_port,
|
|
280
284
|
target_process_id, target_process_start_ticks, workspace,
|
|
281
|
-
management_mode, start_command, server_state, server_generation,
|
|
285
|
+
management_mode, proxy_mode, start_command, server_state, server_generation,
|
|
282
286
|
server_started_at, server_stop_at, server_stopped_at, server_error,
|
|
283
287
|
manager_kind, manager_id, manager_pid, manager_process_start_ticks,
|
|
284
288
|
created_at, expires_at, closed_at
|
|
@@ -292,6 +296,8 @@ export class PreviewStore {
|
|
|
292
296
|
CREATE INDEX IF NOT EXISTS preview_exposures_managed_state_idx
|
|
293
297
|
ON preview_exposures (management_mode, server_state, expires_at)
|
|
294
298
|
`);
|
|
299
|
+
if (currentVersion < 5)
|
|
300
|
+
migratePreviewSessionOwnership(this.db);
|
|
295
301
|
this.db.exec(`PRAGMA user_version = ${PREVIEW_SCHEMA_VERSION}`);
|
|
296
302
|
this.db.exec("COMMIT");
|
|
297
303
|
}
|
|
@@ -314,6 +320,7 @@ export class PreviewStore {
|
|
|
314
320
|
createExposure(input) {
|
|
315
321
|
validateExposureInput(input);
|
|
316
322
|
const managementMode = input.managementMode ?? "external";
|
|
323
|
+
const proxyMode = input.proxyMode ?? "standard";
|
|
317
324
|
const serverState = managementMode === "managed" ? input.serverState ?? "stopped" : "external";
|
|
318
325
|
this.db.exec("BEGIN IMMEDIATE");
|
|
319
326
|
try {
|
|
@@ -327,12 +334,12 @@ export class PreviewStore {
|
|
|
327
334
|
}
|
|
328
335
|
this.db.prepare(`
|
|
329
336
|
INSERT INTO preview_exposures (
|
|
330
|
-
id, pibo_session_id,
|
|
337
|
+
id, pibo_session_id, label, target_host, target_port,
|
|
331
338
|
target_process_id, target_process_start_ticks, workspace,
|
|
332
|
-
management_mode, start_command, server_state,
|
|
339
|
+
management_mode, proxy_mode, start_command, server_state,
|
|
333
340
|
created_at, expires_at, closed_at
|
|
334
341
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NULL)
|
|
335
|
-
`).run(input.id, input.piboSessionId, input.
|
|
342
|
+
`).run(input.id, input.piboSessionId, input.label, input.targetHost, input.targetPort, input.targetProcessId ?? null, input.targetProcessStartTicks ?? null, input.workspace, managementMode, proxyMode, input.startCommand ?? null, serverState, input.createdAt, input.expiresAt);
|
|
336
343
|
const exposure = this.requireExposure(input.id);
|
|
337
344
|
this.db.exec("COMMIT");
|
|
338
345
|
return exposure;
|
package/dist/previews/web-app.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { loadPiboConfig } from "../config/config.js";
|
|
2
2
|
import { PiboWebHttpError, responseHtml, responseJson } from "../web/http.js";
|
|
3
|
-
import { DEFAULT_PREVIEW_SESSION_TTL_MINUTES, DEFAULT_PREVIEW_TICKET_TTL_SECONDS, previewIdFromHostname, previewPublicURL, requirePreviewBaseURL, } from "./config.js";
|
|
3
|
+
import { DEFAULT_PREVIEW_SESSION_TTL_MINUTES, DEFAULT_PREVIEW_TICKET_TTL_SECONDS, PREVIEW_TLS_AUTHORIZATION_PATH, previewIdFromHostname, previewPublicURL, requirePreviewBaseURL, } from "./config.js";
|
|
4
4
|
import { createDefaultPreviewProcessController, reconcileManagedPreviews, startManagedPreview, stopManagedPreview, } from "./manager.js";
|
|
5
5
|
import { isPreviewTargetProcessCurrent, probePreviewTarget } from "./network.js";
|
|
6
6
|
import { cookieValue, DEFAULT_MAX_PREVIEW_PROXY_CONNECTIONS, DEFAULT_MAX_PREVIEW_PROXY_CONNECTIONS_PER_PREVIEW, PreviewProxyLimiter, previewSessionCookieName, proxyPreviewHttp, proxyPreviewWebSocket, } from "./proxy.js";
|
|
@@ -59,7 +59,7 @@ async function exposureHealth(exposure) {
|
|
|
59
59
|
return online ? "online" : "offline";
|
|
60
60
|
}
|
|
61
61
|
async function publicExposure(exposure, baseURL) {
|
|
62
|
-
const { workspace: _workspace, startCommand: _startCommand, targetHost: _targetHost, targetPort: _targetPort, managementMode: _managementMode, targetProcessId: _targetProcessId, targetProcessStartTicks: _targetProcessStartTicks, serverError: _serverError, serverGeneration: _serverGeneration, managerKind: _managerKind, managerId: _managerId, managerPid: _managerPid, managerProcessStartTicks: _managerProcessStartTicks, ...publicFields } = exposure;
|
|
62
|
+
const { workspace: _workspace, startCommand: _startCommand, targetHost: _targetHost, targetPort: _targetPort, managementMode: _managementMode, proxyMode: _proxyMode, targetProcessId: _targetProcessId, targetProcessStartTicks: _targetProcessStartTicks, serverError: _serverError, serverGeneration: _serverGeneration, managerKind: _managerKind, managerId: _managerId, managerPid: _managerPid, managerProcessStartTicks: _managerProcessStartTicks, ...publicFields } = exposure;
|
|
63
63
|
return {
|
|
64
64
|
...publicFields,
|
|
65
65
|
managed: exposure.managementMode === "managed",
|
|
@@ -250,6 +250,16 @@ export function createPreviewWebApp(options = {}) {
|
|
|
250
250
|
const url = new URL(request.url);
|
|
251
251
|
if (!url.pathname.startsWith(PREVIEW_WEB_API_PREFIX))
|
|
252
252
|
return undefined;
|
|
253
|
+
if (url.pathname === PREVIEW_TLS_AUTHORIZATION_PATH) {
|
|
254
|
+
if (request.method !== "GET")
|
|
255
|
+
return new Response(null, { status: 405, headers: { allow: "GET", "cache-control": "no-store" } });
|
|
256
|
+
const previewId = baseURL ? previewIdFromHostname(url.searchParams.get("domain") ?? "", baseURL) : undefined;
|
|
257
|
+
const allowed = previewId ? withStore(databasePath, (store) => {
|
|
258
|
+
const exposure = store.getExposure(previewId);
|
|
259
|
+
return Boolean(exposure && previewExposureState(exposure) === "active");
|
|
260
|
+
}) : false;
|
|
261
|
+
return new Response(null, { status: allowed ? 200 : 403, headers: { "cache-control": "no-store" } });
|
|
262
|
+
}
|
|
253
263
|
await context.requireSession({ request });
|
|
254
264
|
if (url.pathname === PREVIEW_WEB_API_PREFIX && request.method === "GET") {
|
|
255
265
|
const piboSessionId = url.searchParams.get("piboSessionId")?.trim();
|
|
@@ -7,9 +7,6 @@ export function workflowSessionKindFromMetadata(metadata) {
|
|
|
7
7
|
const value = metadata?.[PIBO_WORKFLOW_SESSION_KIND_METADATA_KEY];
|
|
8
8
|
if (isPiboWorkflowSessionKind(value))
|
|
9
9
|
return value;
|
|
10
|
-
// Backfill the initial Project workflow metadata shape used before the stable enum.
|
|
11
|
-
if (metadata?.projectSessionKind === "main")
|
|
12
|
-
return "main_workflow";
|
|
13
10
|
return undefined;
|
|
14
11
|
}
|
|
15
12
|
export function withWorkflowSessionKind(metadata, workflowSessionKind) {
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pasko70/pibo",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@pasko70/pibo",
|
|
9
|
-
"version": "3.
|
|
9
|
+
"version": "3.4.0",
|
|
10
10
|
"workspaces": [
|
|
11
11
|
"packages/workflows"
|
|
12
12
|
],
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
"react-virtuoso": "^4.18.6",
|
|
40
40
|
"remark-gfm": "^4.0.1",
|
|
41
41
|
"tailwindcss": "^4.2.4",
|
|
42
|
-
"typebox": "1.1.38"
|
|
42
|
+
"typebox": "1.1.38",
|
|
43
|
+
"xstate": "5.31.1"
|
|
43
44
|
},
|
|
44
45
|
"bin": {
|
|
45
46
|
"pibo": "dist/bin/pibo.js",
|
|
@@ -11501,7 +11502,7 @@
|
|
|
11501
11502
|
"license": "MIT",
|
|
11502
11503
|
"peer": true,
|
|
11503
11504
|
"funding": {
|
|
11504
|
-
"type": "GitHub Sponsors
|
|
11505
|
+
"type": "GitHub Sponsors \u2764",
|
|
11505
11506
|
"url": "https://github.com/sponsors/dmonad"
|
|
11506
11507
|
}
|
|
11507
11508
|
},
|
|
@@ -11780,7 +11781,7 @@
|
|
|
11780
11781
|
"node": ">=16"
|
|
11781
11782
|
},
|
|
11782
11783
|
"funding": {
|
|
11783
|
-
"type": "GitHub Sponsors
|
|
11784
|
+
"type": "GitHub Sponsors \u2764",
|
|
11784
11785
|
"url": "https://github.com/sponsors/dmonad"
|
|
11785
11786
|
}
|
|
11786
11787
|
},
|
|
@@ -17131,7 +17132,7 @@
|
|
|
17131
17132
|
"npm": ">=8.0.0"
|
|
17132
17133
|
},
|
|
17133
17134
|
"funding": {
|
|
17134
|
-
"type": "GitHub Sponsors
|
|
17135
|
+
"type": "GitHub Sponsors \u2764",
|
|
17135
17136
|
"url": "https://github.com/sponsors/dmonad"
|
|
17136
17137
|
}
|
|
17137
17138
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pasko70/pibo",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
"description": "Minimal TypeScript wrapper around Pi Coding Agent.",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
+
"packages/workflows/dist",
|
|
14
|
+
"!packages/workflows/dist/testing/**",
|
|
15
|
+
"packages/workflows/package.json",
|
|
13
16
|
"!dist/apps/vscode-artifacts/**",
|
|
14
17
|
"context",
|
|
15
18
|
"skills/builtin/**",
|
|
@@ -106,7 +109,8 @@
|
|
|
106
109
|
"react-virtuoso": "^4.18.6",
|
|
107
110
|
"remark-gfm": "^4.0.1",
|
|
108
111
|
"tailwindcss": "^4.2.4",
|
|
109
|
-
"typebox": "1.1.38"
|
|
112
|
+
"typebox": "1.1.38",
|
|
113
|
+
"xstate": "5.31.1"
|
|
110
114
|
},
|
|
111
115
|
"overrides": {
|
|
112
116
|
"esbuild": "$esbuild",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Pibo Workflows
|
|
2
|
+
|
|
3
|
+
Initial package boundary for the Pibo Workflow System V1 framework.
|
|
4
|
+
|
|
5
|
+
The package is organized around the PRD-required internal submodules:
|
|
6
|
+
|
|
7
|
+
- `src/api` — public authoring helpers, builder API, object definition normalization
|
|
8
|
+
- `src/registry` — workflow registry and implementation lookup
|
|
9
|
+
- `src/types` — workflow IR, runtime, store, diagnostics, events, and utility types
|
|
10
|
+
- `src/validation` — definition, schema, graph, registry, capability, state, and loop validation
|
|
11
|
+
- `src/graph` — reserved for Pibo-owned graph indices and reusable traversal primitives
|
|
12
|
+
- `src/compiler` — reserved for validated definitions, execution plans, and projection metadata
|
|
13
|
+
- `src/runtime` — Pibo-owned deterministic scheduling, attempts, retries, waits, commands, events, and persistence
|
|
14
|
+
- `src/store` — `pibo-workflows.sqlite` schema/store and persistence API
|
|
15
|
+
- `src/xstate` — XState projection, snapshots, and inspection helpers
|
|
16
|
+
- `src/fixtures` — workflow fixtures for tests and manual validation
|
|
17
|
+
- `src/testing` — test harnesses, fake providers, and restart helpers
|
|
18
|
+
|
|
19
|
+
The workflow IR and persisted Pibo runtime facts are the execution contract and source of truth. External graph frameworks may serve as design references, but the package does not delegate scheduling or persistence to them.
|
|
20
|
+
|
|
21
|
+
The V1 JSON port schema subset is documented in `../../docs/specs/changes/pibo-workflow-system-v1/structured-outputs-json-schema-subset.md` and implemented by `src/validation`.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { AdapterRef, AgentProfileSelection, EdgeAdapterDefinition, JsonSchema, JsonWorkflowPort, PromptBuilderRef, RegistryRefId, SelectionPolicy, TextWorkflowPort, WorkflowPort } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create a text workflow port.
|
|
4
|
+
*
|
|
5
|
+
* Text ports carry plain strings across workflow, node, and adapter boundaries.
|
|
6
|
+
*/
|
|
7
|
+
export declare function text(description?: string): TextWorkflowPort;
|
|
8
|
+
/**
|
|
9
|
+
* Create a JSON workflow port backed by a V1 JSON Schema subset contract.
|
|
10
|
+
*
|
|
11
|
+
* The schema is intentionally preserved as part of the workflow IR so validators,
|
|
12
|
+
* compilers, runtime checks, and inspection surfaces all see the same contract.
|
|
13
|
+
*/
|
|
14
|
+
export declare function json(schema: JsonSchema, description?: string): JsonWorkflowPort;
|
|
15
|
+
export declare function isTextPort(port: WorkflowPort): port is TextWorkflowPort;
|
|
16
|
+
export declare function isJsonPort(port: WorkflowPort): port is JsonWorkflowPort;
|
|
17
|
+
/**
|
|
18
|
+
* Reference a registered deterministic TypeScript adapter by id.
|
|
19
|
+
*
|
|
20
|
+
* Adapter refs are stored in workflow IR for both edge adapters and visible adapter nodes;
|
|
21
|
+
* the Workflow Registry owns the executable TypeScript handler behind the id.
|
|
22
|
+
*/
|
|
23
|
+
export declare function adapterRef(id: RegistryRefId): AdapterRef;
|
|
24
|
+
export declare function isAdapterRef(value: unknown): value is AdapterRef;
|
|
25
|
+
export declare function adapterRefId(ref: AdapterRef): RegistryRefId;
|
|
26
|
+
export declare function edgeAdapter(transform: AdapterRef, output: WorkflowPort): EdgeAdapterDefinition;
|
|
27
|
+
/**
|
|
28
|
+
* Reference a registered TypeScript prompt builder by id.
|
|
29
|
+
*
|
|
30
|
+
* Prompt builder refs are stored in workflow IR; the Workflow Registry owns
|
|
31
|
+
* the executable handler that turns workflow input/state/edge data into the
|
|
32
|
+
* final prompt text sent to a Pibo Runtime-backed agent node.
|
|
33
|
+
*/
|
|
34
|
+
export declare function promptBuilderRef(id: RegistryRefId): PromptBuilderRef;
|
|
35
|
+
export declare function isPromptBuilderRef(value: unknown): value is Exclude<PromptBuilderRef, string>;
|
|
36
|
+
export declare function promptBuilderRefId(ref: PromptBuilderRef): RegistryRefId;
|
|
37
|
+
/**
|
|
38
|
+
* Select a fixed Agent Designer profile for a Pibo Runtime-backed agent node.
|
|
39
|
+
*
|
|
40
|
+
* V1 intentionally supports only fixed profile selection so workflow runs are
|
|
41
|
+
* predictable and can record the exact profile requested by each agent node.
|
|
42
|
+
*/
|
|
43
|
+
export declare function fixedProfile(id: RegistryRefId): AgentProfileSelection;
|
|
44
|
+
export declare function inheritSelection(): SelectionPolicy;
|
|
45
|
+
export declare function onlySelection(ids: RegistryRefId[]): SelectionPolicy;
|
|
46
|
+
export declare function excludeSelection(ids: RegistryRefId[]): SelectionPolicy;
|
|
47
|
+
export declare function extendSelection(ids: RegistryRefId[]): SelectionPolicy;
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAE/E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,IAAI,gBAAgB,CAEvE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,IAAI,gBAAgB,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,UAAU,CAExD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAQhE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAE3D;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,qBAAqB,CAE9F;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,gBAAgB,CAEpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAQ7F;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,aAAa,GAAG,qBAAqB,CAErE;AAED,wBAAgB,gBAAgB,IAAI,eAAe,CAElD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,eAAe,CAEnE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,eAAe,CAEtE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,eAAe,CAErE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a text workflow port.
|
|
3
|
+
*
|
|
4
|
+
* Text ports carry plain strings across workflow, node, and adapter boundaries.
|
|
5
|
+
*/
|
|
6
|
+
export function text(description) {
|
|
7
|
+
return withOptionalDescription({ kind: "text" }, description);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Create a JSON workflow port backed by a V1 JSON Schema subset contract.
|
|
11
|
+
*
|
|
12
|
+
* The schema is intentionally preserved as part of the workflow IR so validators,
|
|
13
|
+
* compilers, runtime checks, and inspection surfaces all see the same contract.
|
|
14
|
+
*/
|
|
15
|
+
export function json(schema, description) {
|
|
16
|
+
return withOptionalDescription({ kind: "json", schema }, description);
|
|
17
|
+
}
|
|
18
|
+
export function isTextPort(port) {
|
|
19
|
+
return port.kind === "text";
|
|
20
|
+
}
|
|
21
|
+
export function isJsonPort(port) {
|
|
22
|
+
return port.kind === "json";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Reference a registered deterministic TypeScript adapter by id.
|
|
26
|
+
*
|
|
27
|
+
* Adapter refs are stored in workflow IR for both edge adapters and visible adapter nodes;
|
|
28
|
+
* the Workflow Registry owns the executable TypeScript handler behind the id.
|
|
29
|
+
*/
|
|
30
|
+
export function adapterRef(id) {
|
|
31
|
+
return { kind: "adapter", language: "typescript", id };
|
|
32
|
+
}
|
|
33
|
+
export function isAdapterRef(value) {
|
|
34
|
+
return (isRecord(value) &&
|
|
35
|
+
value.kind === "adapter" &&
|
|
36
|
+
value.language === "typescript" &&
|
|
37
|
+
typeof value.id === "string" &&
|
|
38
|
+
value.id.length > 0);
|
|
39
|
+
}
|
|
40
|
+
export function adapterRefId(ref) {
|
|
41
|
+
return ref.id;
|
|
42
|
+
}
|
|
43
|
+
export function edgeAdapter(transform, output) {
|
|
44
|
+
return { kind: "edgeAdapter", transform, output };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Reference a registered TypeScript prompt builder by id.
|
|
48
|
+
*
|
|
49
|
+
* Prompt builder refs are stored in workflow IR; the Workflow Registry owns
|
|
50
|
+
* the executable handler that turns workflow input/state/edge data into the
|
|
51
|
+
* final prompt text sent to a Pibo Runtime-backed agent node.
|
|
52
|
+
*/
|
|
53
|
+
export function promptBuilderRef(id) {
|
|
54
|
+
return { kind: "promptBuilder", language: "typescript", id };
|
|
55
|
+
}
|
|
56
|
+
export function isPromptBuilderRef(value) {
|
|
57
|
+
return (isRecord(value) &&
|
|
58
|
+
value.kind === "promptBuilder" &&
|
|
59
|
+
value.language === "typescript" &&
|
|
60
|
+
typeof value.id === "string" &&
|
|
61
|
+
value.id.length > 0);
|
|
62
|
+
}
|
|
63
|
+
export function promptBuilderRefId(ref) {
|
|
64
|
+
return typeof ref === "string" ? ref : ref.id;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Select a fixed Agent Designer profile for a Pibo Runtime-backed agent node.
|
|
68
|
+
*
|
|
69
|
+
* V1 intentionally supports only fixed profile selection so workflow runs are
|
|
70
|
+
* predictable and can record the exact profile requested by each agent node.
|
|
71
|
+
*/
|
|
72
|
+
export function fixedProfile(id) {
|
|
73
|
+
return { kind: "fixed", id };
|
|
74
|
+
}
|
|
75
|
+
export function inheritSelection() {
|
|
76
|
+
return { kind: "inherit" };
|
|
77
|
+
}
|
|
78
|
+
export function onlySelection(ids) {
|
|
79
|
+
return { kind: "only", ids: [...ids] };
|
|
80
|
+
}
|
|
81
|
+
export function excludeSelection(ids) {
|
|
82
|
+
return { kind: "exclude", ids: [...ids] };
|
|
83
|
+
}
|
|
84
|
+
export function extendSelection(ids) {
|
|
85
|
+
return { kind: "extend", ids: [...ids] };
|
|
86
|
+
}
|
|
87
|
+
function withOptionalDescription(port, description) {
|
|
88
|
+
if (description === undefined) {
|
|
89
|
+
return port;
|
|
90
|
+
}
|
|
91
|
+
return { ...port, description };
|
|
92
|
+
}
|
|
93
|
+
function isRecord(value) {
|
|
94
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkflowDefinition } from "./types/index.js";
|
|
2
|
+
export declare function hashWorkflowDefinition(definition: WorkflowDefinition): string;
|
|
3
|
+
export declare function canonicalWorkflowDefinitionJson(definition: WorkflowDefinition): string;
|
|
4
|
+
//# sourceMappingURL=definition-hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-hash.d.ts","sourceRoot":"","sources":["../src/definition-hash.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAE7E;AAED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAEtF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
export function hashWorkflowDefinition(definition) {
|
|
3
|
+
return `sha256:${createHash("sha256").update(canonicalWorkflowDefinitionJson(definition)).digest("hex")}`;
|
|
4
|
+
}
|
|
5
|
+
export function canonicalWorkflowDefinitionJson(definition) {
|
|
6
|
+
return JSON.stringify(normalizeForCanonicalJson(definition));
|
|
7
|
+
}
|
|
8
|
+
function normalizeForCanonicalJson(value) {
|
|
9
|
+
if (Array.isArray(value)) {
|
|
10
|
+
return value.map((item) => (item === undefined ? null : normalizeForCanonicalJson(item)));
|
|
11
|
+
}
|
|
12
|
+
if (value && typeof value === "object") {
|
|
13
|
+
const input = value;
|
|
14
|
+
const output = {};
|
|
15
|
+
for (const key of Object.keys(input).sort()) {
|
|
16
|
+
const normalized = normalizeForCanonicalJson(input[key]);
|
|
17
|
+
if (normalized !== undefined)
|
|
18
|
+
output[key] = normalized;
|
|
19
|
+
}
|
|
20
|
+
return output;
|
|
21
|
+
}
|
|
22
|
+
if (value === undefined || typeof value === "function" || typeof value === "symbol") {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=definition-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-hash.js","sourceRoot":"","sources":["../src/definition-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,sBAAsB,CAAC,UAA8B;IACnE,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,UAA8B;IAC5E,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,KAAgC,CAAC;QAC/C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { WorkflowDefinition, WorkflowProviders, WorkflowSetupOptions } from "../types/index.js";
|
|
2
|
+
export declare const workflowFixtureRegistryRefs: {
|
|
3
|
+
readonly handlers: {
|
|
4
|
+
readonly makePlan: "fixture.handlers.makePlan";
|
|
5
|
+
readonly reviseDraft: "fixture.handlers.reviseDraft";
|
|
6
|
+
readonly summarizeDecision: "fixture.handlers.summarizeDecision";
|
|
7
|
+
};
|
|
8
|
+
readonly adapters: {
|
|
9
|
+
readonly textToTopic: "fixture.adapters.textToTopic";
|
|
10
|
+
readonly draftToSummary: "fixture.adapters.draftToSummary";
|
|
11
|
+
readonly decisionToSummary: "fixture.adapters.decisionToSummary";
|
|
12
|
+
};
|
|
13
|
+
readonly guards: {
|
|
14
|
+
readonly approved: "fixture.guards.approved";
|
|
15
|
+
readonly needsRevision: "fixture.guards.needsRevision";
|
|
16
|
+
};
|
|
17
|
+
readonly promptBuilders: {
|
|
18
|
+
readonly draftPrompt: "fixture.promptBuilders.draftPrompt";
|
|
19
|
+
};
|
|
20
|
+
readonly humanActions: {
|
|
21
|
+
readonly approve: "fixture.humanActions.approve";
|
|
22
|
+
readonly reject: "fixture.humanActions.reject";
|
|
23
|
+
readonly resume: "fixture.humanActions.resume";
|
|
24
|
+
readonly cancel: "fixture.humanActions.cancel";
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare const minimalOneNodePiboAgentWorkflowFixture: WorkflowDefinition;
|
|
28
|
+
export declare const adapterWorkflowFixture: WorkflowDefinition;
|
|
29
|
+
export declare const humanWaitWorkflowFixture: WorkflowDefinition;
|
|
30
|
+
export declare const nestedChildWorkflowFixture: WorkflowDefinition;
|
|
31
|
+
export declare const nestedWorkflowFixture: WorkflowDefinition;
|
|
32
|
+
export declare const mixedNodeWorkflowFixture: WorkflowDefinition;
|
|
33
|
+
export declare const debugSerializationWorkflowFixture: WorkflowDefinition;
|
|
34
|
+
export declare const boundedReviewLoopWorkflowFixture: WorkflowDefinition;
|
|
35
|
+
export declare const requiredWorkflowFixtures: readonly WorkflowDefinition[];
|
|
36
|
+
export declare const workflowFixtureDefinitionsById: Readonly<Record<string, WorkflowDefinition>>;
|
|
37
|
+
export declare const workflowFixtureProviders: WorkflowProviders;
|
|
38
|
+
export declare const workflowFixtureSetupOptions: WorkflowSetupOptions;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixtures/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,kBAAkB,EAElB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AA8F3B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;CAwB9B,CAAC;AAEX,eAAO,MAAM,sCAAsC,EAAE,kBAwBpD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAsCpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBA6BtC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAsBxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,kBAuBnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBA0FtC,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,kBA0C/C,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,kBAqF9C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,SAAS,kBAAkB,EASjE,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAEvF,CAAC;AAuDF,eAAO,MAAM,wBAAwB,EAAE,iBA0BtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,oBAUzC,CAAC"}
|