@skaile/workspaces 3.2.1 → 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/CHANGELOG.md +168 -0
- package/dist/{asset-feeds-SEYSNNEM.js → asset-feeds-CBY723RG.js} +11 -11
- package/dist/{asset-feeds-SEYSNNEM.js.map → asset-feeds-CBY723RG.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +7 -7
- package/dist/asset-manager/index.js +10 -10
- package/dist/asset-manager/installer.js +7 -7
- package/dist/bridge/drivers/claude-sdk.js +8 -8
- package/dist/bridge/drivers/codex.js +3 -3
- package/dist/bridge/drivers/continue.js +4 -4
- package/dist/bridge/drivers/echo.js +3 -3
- package/dist/bridge/drivers/gemini.js +5 -5
- package/dist/bridge/drivers/goose.js +4 -4
- package/dist/bridge/drivers/omp.js +3 -3
- package/dist/bridge/drivers/opencode.js +4 -4
- package/dist/bridge/drivers/qwen.js +5 -5
- package/dist/bridge/index.js +9 -9
- package/dist/{chunk-57RFYEVM.js → chunk-2Y2AWWWM.js} +4 -10
- package/dist/chunk-2Y2AWWWM.js.map +1 -0
- package/dist/{chunk-O6B3ZZ5S.js → chunk-3A3ETJFD.js} +4 -4
- package/dist/{chunk-O6B3ZZ5S.js.map → chunk-3A3ETJFD.js.map} +1 -1
- package/dist/{chunk-7GOCNYUV.js → chunk-3A5IKBHQ.js} +47 -47
- package/dist/{chunk-7GOCNYUV.js.map → chunk-3A5IKBHQ.js.map} +1 -1
- package/dist/{chunk-I7S6DFRU.js → chunk-3Q7JDLLH.js} +46 -6
- package/dist/chunk-3Q7JDLLH.js.map +1 -0
- package/dist/{chunk-PTAUN5CY.js → chunk-3UGP7I2Y.js} +3 -3
- package/dist/{chunk-PTAUN5CY.js.map → chunk-3UGP7I2Y.js.map} +1 -1
- package/dist/{chunk-CZZRDYT4.js → chunk-4VTBZ2MF.js} +4 -4
- package/dist/{chunk-CZZRDYT4.js.map → chunk-4VTBZ2MF.js.map} +1 -1
- package/dist/{chunk-U5POE4BA.js → chunk-5Q7HA4JP.js} +3 -3
- package/dist/{chunk-U5POE4BA.js.map → chunk-5Q7HA4JP.js.map} +1 -1
- package/dist/{chunk-P43HBWKK.js → chunk-6BV24JPZ.js} +36 -7
- package/dist/chunk-6BV24JPZ.js.map +1 -0
- package/dist/{chunk-AM5LFRXJ.js → chunk-A7XP4C7C.js} +3 -3
- package/dist/{chunk-AM5LFRXJ.js.map → chunk-A7XP4C7C.js.map} +1 -1
- package/dist/{chunk-ZNIHTT22.js → chunk-AXFOJ2UG.js} +5 -5
- package/dist/{chunk-ZNIHTT22.js.map → chunk-AXFOJ2UG.js.map} +1 -1
- package/dist/{chunk-PKEAYYEJ.js → chunk-BCXI27BH.js} +219 -4
- package/dist/chunk-BCXI27BH.js.map +1 -0
- package/dist/{chunk-3HVASHBF.js → chunk-BJ7QIUBM.js} +6 -15
- package/dist/chunk-BJ7QIUBM.js.map +1 -0
- package/dist/{chunk-CH3UTJBT.js → chunk-BYPQHEI4.js} +6 -6
- package/dist/{chunk-CH3UTJBT.js.map → chunk-BYPQHEI4.js.map} +1 -1
- package/dist/{chunk-NWFZUQPF.js → chunk-DFZ6QENJ.js} +18 -18
- package/dist/{chunk-NWFZUQPF.js.map → chunk-DFZ6QENJ.js.map} +1 -1
- package/dist/{chunk-F5VREBV2.js → chunk-ELPR5XBG.js} +40 -3
- package/dist/chunk-ELPR5XBG.js.map +1 -0
- package/dist/{chunk-MWFYXUFK.js → chunk-G2CXWUO5.js} +4 -4
- package/dist/{chunk-MWFYXUFK.js.map → chunk-G2CXWUO5.js.map} +1 -1
- package/dist/{chunk-BEAIJRVF.js → chunk-GHWJHOYX.js} +4 -4
- package/dist/{chunk-BEAIJRVF.js.map → chunk-GHWJHOYX.js.map} +1 -1
- package/dist/{chunk-FLBDLF3I.js → chunk-HGFKNJA5.js} +6 -4
- package/dist/chunk-HGFKNJA5.js.map +1 -0
- package/dist/{chunk-BK3WL3QK.js → chunk-JAHHMZWG.js} +3 -3
- package/dist/{chunk-BK3WL3QK.js.map → chunk-JAHHMZWG.js.map} +1 -1
- package/dist/{chunk-UFY2HFLO.js → chunk-KBXYT5HD.js} +4 -4
- package/dist/{chunk-UFY2HFLO.js.map → chunk-KBXYT5HD.js.map} +1 -1
- package/dist/{chunk-DNYE3SSL.js → chunk-MR3LQTGA.js} +4 -4
- package/dist/{chunk-DNYE3SSL.js.map → chunk-MR3LQTGA.js.map} +1 -1
- package/dist/{chunk-HCNVX34E.js → chunk-OI36ITDV.js} +8 -8
- package/dist/{chunk-HCNVX34E.js.map → chunk-OI36ITDV.js.map} +1 -1
- package/dist/{chunk-BEA7RXI3.js → chunk-P6V5GORE.js} +230 -41
- package/dist/chunk-P6V5GORE.js.map +1 -0
- package/dist/{chunk-2OCYS5EP.js → chunk-PEGIQ67F.js} +4 -4
- package/dist/{chunk-2OCYS5EP.js.map → chunk-PEGIQ67F.js.map} +1 -1
- package/dist/{chunk-I7MKEZ6J.js → chunk-PHJ2DU6D.js} +3 -3
- package/dist/{chunk-I7MKEZ6J.js.map → chunk-PHJ2DU6D.js.map} +1 -1
- package/dist/{chunk-NLZYBWVH.js → chunk-POYF2P7E.js} +10 -10
- package/dist/{chunk-NLZYBWVH.js.map → chunk-POYF2P7E.js.map} +1 -1
- package/dist/{chunk-NU4E7C5I.js → chunk-PW4SJE3X.js} +3 -3
- package/dist/{chunk-NU4E7C5I.js.map → chunk-PW4SJE3X.js.map} +1 -1
- package/dist/{chunk-Q26C5GLO.js → chunk-RD6MMBHQ.js} +3 -3
- package/dist/{chunk-Q26C5GLO.js.map → chunk-RD6MMBHQ.js.map} +1 -1
- package/dist/{chunk-46LE3GNY.js → chunk-RUFTB7QN.js} +3 -3
- package/dist/{chunk-46LE3GNY.js.map → chunk-RUFTB7QN.js.map} +1 -1
- package/dist/{chunk-BKUANJB7.js → chunk-S5N33NGZ.js} +50 -64
- package/dist/chunk-S5N33NGZ.js.map +1 -0
- package/dist/{chunk-IAIHZRG7.js → chunk-SJQ7544V.js} +7 -7
- package/dist/{chunk-IAIHZRG7.js.map → chunk-SJQ7544V.js.map} +1 -1
- package/dist/{chunk-VT6HDD2L.js → chunk-SUGDZOYZ.js} +3 -3
- package/dist/{chunk-VT6HDD2L.js.map → chunk-SUGDZOYZ.js.map} +1 -1
- package/dist/{chunk-XVIFPGYH.js → chunk-U2KIY532.js} +3 -3
- package/dist/{chunk-XVIFPGYH.js.map → chunk-U2KIY532.js.map} +1 -1
- package/dist/{chunk-HWEW3VII.js → chunk-VFL4STB7.js} +3 -3
- package/dist/{chunk-HWEW3VII.js.map → chunk-VFL4STB7.js.map} +1 -1
- package/dist/{chunk-DYMWJAL4.js → chunk-VQ4P7UYE.js} +3 -3
- package/dist/{chunk-DYMWJAL4.js.map → chunk-VQ4P7UYE.js.map} +1 -1
- package/dist/{chunk-KPZZI2KG.js → chunk-ZCIK44M7.js} +3 -3
- package/dist/{chunk-KPZZI2KG.js.map → chunk-ZCIK44M7.js.map} +1 -1
- package/dist/cli/index.js +396 -409
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/complete-resolvers.d.ts +4 -0
- package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
- package/dist/cli/src/commands/flow.d.ts +8 -4
- package/dist/cli/src/commands/flow.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/flow-discovery.d.ts +31 -15
- package/dist/cli/src/flow-discovery.d.ts.map +1 -1
- package/dist/cli/src/paths.d.ts +9 -19
- package/dist/cli/src/paths.d.ts.map +1 -1
- package/dist/connectors/config.js +7 -7
- package/dist/connectors/index.js +14 -14
- package/dist/core/index.js +6 -6
- package/dist/core/logging.js +2 -2
- package/dist/core/manifest.js +2 -2
- package/dist/core/runtime-assets.js +4 -4
- package/dist/core/src/asset-roots.d.ts +74 -0
- package/dist/core/src/asset-roots.d.ts.map +1 -0
- package/dist/core/src/index.d.ts +1 -0
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/workspace-config.js +3 -3
- package/dist/deploy/index.js +6 -6
- package/dist/discovery/index.js +3 -3
- package/dist/{ensure-sources-IM3JMW2L.js → ensure-sources-O6AWQXAY.js} +13 -13
- package/dist/{ensure-sources-IM3JMW2L.js.map → ensure-sources-O6AWQXAY.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +14 -14
- package/dist/factory-assets/connectors/deploy.js +14 -14
- package/dist/factory-assets/connectors/devserver.js +14 -14
- package/dist/factory-assets/connectors/flow/CONNECTOR.md +42 -9
- package/dist/factory-assets/connectors/flow/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +14 -14
- package/dist/factory-assets/connectors/flow/engine/index.d.ts +2 -0
- package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine/locate.d.ts +75 -0
- package/dist/factory-assets/connectors/flow/engine/locate.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts +56 -0
- package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +8 -8
- package/dist/factory-assets/connectors/flow/index.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/node-executor.d.ts +23 -3
- package/dist/factory-assets/connectors/flow/node-executor.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +4 -0
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/prompt-fragments.js +2 -2
- package/dist/factory-assets/connectors/flow/run-flow.d.ts +9 -1
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +16 -16
- package/dist/factory-assets/connectors/flow.js +14 -14
- package/dist/factory-assets/connectors/git.js +14 -14
- package/dist/factory-assets/connectors/gmail.js +14 -14
- package/dist/factory-assets/connectors/googledrive.js +14 -14
- package/dist/factory-assets/connectors/local.js +14 -14
- package/dist/factory-assets/connectors/mattermost.js +14 -14
- package/dist/factory-assets/connectors/memory.js +14 -14
- package/dist/factory-assets/connectors/minio.js +14 -14
- package/dist/factory-assets/connectors/postgres.js +14 -14
- package/dist/factory-assets/connectors/s3.js +14 -14
- package/dist/factory-assets/connectors/sharepoint.js +14 -14
- package/dist/factory-assets/connectors/sqlite.js +14 -14
- package/dist/factory-assets/connectors/static-server.js +14 -14
- package/dist/factory-assets/connectors/tunnel.js +14 -14
- package/dist/factory-assets/connectors/webdav.js +14 -14
- package/dist/factory-assets/connectors/xstate-store.js +14 -14
- package/dist/factory-assets/connectors/xstate.js +14 -14
- package/dist/flows-66NOT5N6.js +20 -0
- package/dist/{flows-PBNW6BEH.js.map → flows-66NOT5N6.js.map} +1 -1
- package/dist/{helpers-LJFOH4RB.js → helpers-QUGRH2MW.js} +13 -13
- package/dist/{helpers-LJFOH4RB.js.map → helpers-QUGRH2MW.js.map} +1 -1
- package/dist/library/index.js +8 -8
- package/dist/library/install.js +6 -6
- package/dist/library/src/config.d.ts +6 -6
- package/dist/library/src/config.d.ts.map +1 -1
- package/dist/{library-publish-BEFA7OCS.js → library-publish-TCT652H4.js} +18 -18
- package/dist/{library-publish-BEFA7OCS.js.map → library-publish-TCT652H4.js.map} +1 -1
- package/dist/open-library-6OSZX2O6.js +32 -0
- package/dist/{open-library-WJ7P7B4N.js.map → open-library-6OSZX2O6.js.map} +1 -1
- package/dist/paths-ESJHWGBR.js +16 -0
- package/dist/{paths-2ZZMB7HU.js.map → paths-ESJHWGBR.js.map} +1 -1
- package/dist/{plugin-store-EOP3S7OU.js → plugin-store-3BYOBKYT.js} +8 -8
- package/dist/{plugin-store-EOP3S7OU.js.map → plugin-store-3BYOBKYT.js.map} +1 -1
- package/dist/{project-6RXDBSRV.js → project-5RGSHTZ7.js} +14 -14
- package/dist/{project-6RXDBSRV.js.map → project-5RGSHTZ7.js.map} +1 -1
- package/dist/resolver/index.js +7 -7
- package/dist/runner/index.js +19 -19
- package/dist/sdk/asset-manager.js +10 -10
- package/dist/sdk/bridge.js +9 -9
- package/dist/sdk/core.js +6 -6
- package/dist/sdk/flow.js +8 -8
- package/dist/sdk/index.js +19 -19
- package/dist/sdk/resolver.js +7 -7
- package/dist/sdk/runner.js +19 -19
- package/dist/sdk/session.js +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/src/dispatcher.d.ts +15 -0
- package/dist/session/src/dispatcher.d.ts.map +1 -1
- package/dist/session/src/workspace-change-digest.d.ts +34 -0
- package/dist/session/src/workspace-change-digest.d.ts.map +1 -0
- package/dist/{setup-XI7TCIGF.js → setup-X2T3NW7P.js} +11 -11
- package/dist/{setup-XI7TCIGF.js.map → setup-X2T3NW7P.js.map} +1 -1
- package/dist/skills-TYMTW4V4.js +20 -0
- package/dist/{skills-5PJ6YVM7.js.map → skills-TYMTW4V4.js.map} +1 -1
- package/dist/{source-TJ457ZRQ.js → source-JS3G5P6Z.js} +17 -17
- package/dist/{source-TJ457ZRQ.js.map → source-JS3G5P6Z.js.map} +1 -1
- package/dist/{source-manifest-publish-R3Q4MT5W.js → source-manifest-publish-Y7BOFFO4.js} +19 -19
- package/dist/{source-manifest-publish-R3Q4MT5W.js.map → source-manifest-publish-Y7BOFFO4.js.map} +1 -1
- package/dist/tui/index.js +19 -19
- package/dist/workspace-plugin/adapters/mcp.js +11 -11
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-3HVASHBF.js.map +0 -1
- package/dist/chunk-57RFYEVM.js.map +0 -1
- package/dist/chunk-BEA7RXI3.js.map +0 -1
- package/dist/chunk-BKUANJB7.js.map +0 -1
- package/dist/chunk-F5VREBV2.js.map +0 -1
- package/dist/chunk-FLBDLF3I.js.map +0 -1
- package/dist/chunk-I7S6DFRU.js.map +0 -1
- package/dist/chunk-P43HBWKK.js.map +0 -1
- package/dist/chunk-PKEAYYEJ.js.map +0 -1
- package/dist/flows-PBNW6BEH.js +0 -20
- package/dist/open-library-WJ7P7B4N.js +0 -32
- package/dist/paths-2ZZMB7HU.js +0 -22
- package/dist/skills-5PJ6YVM7.js +0 -20
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { resolveAuthRef } from './chunk-
|
|
2
|
-
import { EventNormalizer } from './chunk-
|
|
1
|
+
import { resolveAuthRef } from './chunk-AXFOJ2UG.js';
|
|
2
|
+
import { EventNormalizer } from './chunk-ZCIK44M7.js';
|
|
3
3
|
import { resolveModelTier } from './chunk-V34ZEXSE.js';
|
|
4
|
-
import { createDriver } from './chunk-
|
|
4
|
+
import { createDriver } from './chunk-SUGDZOYZ.js';
|
|
5
5
|
import { pluginRegistry } from './chunk-6E6PKKAD.js';
|
|
6
6
|
import { computeStimulus } from './chunk-IFGTRL2I.js';
|
|
7
|
-
import { resolveNodeBindings, getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, interpolateNodeInstruction, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-
|
|
7
|
+
import { resolveNodeBindings, getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, interpolateNodeInstruction, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-3Q7JDLLH.js';
|
|
8
8
|
import { parseFlowDefinition } from './chunk-B4J6TV4G.js';
|
|
9
|
-
import { renderSubpromptPrompt, renderStimulusPrompt } from './chunk-
|
|
10
|
-
import { deterministicNodeKindLabel, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, nodeInstruction, isRouterNode, isActiveRuntimeNode, nodeIsOptional, nodeLabel, nodeAssets } from './chunk-
|
|
11
|
-
import { portableSpawn } from './chunk-
|
|
12
|
-
import { withFsDeadline, tryWithFsDeadline, FsDeadlineError, fsDeadlineMs } from './chunk-
|
|
13
|
-
import { createLogger } from './chunk-
|
|
9
|
+
import { renderSubpromptPrompt, renderStimulusPrompt } from './chunk-HGFKNJA5.js';
|
|
10
|
+
import { deterministicNodeKindLabel, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, nodeInstruction, isRouterNode, isActiveRuntimeNode, nodeIsOptional, nodeLabel, nodeAssets } from './chunk-ELPR5XBG.js';
|
|
11
|
+
import { portableSpawn } from './chunk-6BV24JPZ.js';
|
|
12
|
+
import { withFsDeadline, tryWithFsDeadline, FsDeadlineError, fsDeadlineMs } from './chunk-VQ4P7UYE.js';
|
|
13
|
+
import { createLogger } from './chunk-3A5IKBHQ.js';
|
|
14
14
|
import { resolve, relative, sep, isAbsolute, join, dirname } from 'path';
|
|
15
15
|
import { mkdir, rename, writeFile, readFile, stat, cp, readdir, chmod, realpath } from 'fs/promises';
|
|
16
16
|
import * as z4 from 'zod';
|
|
@@ -346,6 +346,28 @@ function commandFor(node) {
|
|
|
346
346
|
return ["python3", "-c", node.run.command];
|
|
347
347
|
}
|
|
348
348
|
}
|
|
349
|
+
var ABORT_SIGKILL_GRACE_MS = 2e3;
|
|
350
|
+
function abortError(nodeLabel2) {
|
|
351
|
+
const error = new Error(`${nodeLabel2} was aborted`);
|
|
352
|
+
error.name = "AbortError";
|
|
353
|
+
return error;
|
|
354
|
+
}
|
|
355
|
+
var liveDetachedChildren = /* @__PURE__ */ new Set();
|
|
356
|
+
var shutdownSweepInstalled = false;
|
|
357
|
+
function sweepOnShutdown(child) {
|
|
358
|
+
liveDetachedChildren.add(child);
|
|
359
|
+
void child.exited.then(() => liveDetachedChildren.delete(child));
|
|
360
|
+
if (shutdownSweepInstalled) return;
|
|
361
|
+
shutdownSweepInstalled = true;
|
|
362
|
+
globalThis.process.once("exit", () => {
|
|
363
|
+
for (const live of liveDetachedChildren) {
|
|
364
|
+
try {
|
|
365
|
+
live.kill("SIGKILL");
|
|
366
|
+
} catch {
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
349
371
|
var SessionNodeExecutor = class {
|
|
350
372
|
workspaceDir;
|
|
351
373
|
/** Creates an executor scoped to one already-materialized session workspace. */
|
|
@@ -353,7 +375,7 @@ var SessionNodeExecutor = class {
|
|
|
353
375
|
this.workspaceDir = resolve(options.workspaceDir);
|
|
354
376
|
}
|
|
355
377
|
/** Runs one function or check node process with session environment and binding overrides. */
|
|
356
|
-
async execute(request) {
|
|
378
|
+
async execute(request, options) {
|
|
357
379
|
const nodeLabel2 = `${deterministicNodeKindLabel(request.node.run.kind)} node ${request.node.id}`;
|
|
358
380
|
const cwd = resolve(this.workspaceDir, request.node.run.cwd ?? ".");
|
|
359
381
|
const workspaceRelative = relative(this.workspaceDir, cwd);
|
|
@@ -366,16 +388,35 @@ var SessionNodeExecutor = class {
|
|
|
366
388
|
serializeEnvironmentInput(name, value, nodeLabel2)
|
|
367
389
|
])
|
|
368
390
|
);
|
|
391
|
+
const signal = options?.signal;
|
|
392
|
+
if (signal?.aborted) throw abortError(nodeLabel2);
|
|
369
393
|
const process2 = portableSpawn(commandFor(request.node), {
|
|
370
394
|
cwd,
|
|
371
|
-
env: { ...globalThis.process.env, ...boundEnvironment }
|
|
395
|
+
env: { ...globalThis.process.env, ...boundEnvironment },
|
|
396
|
+
detached: true
|
|
372
397
|
});
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
398
|
+
sweepOnShutdown(process2);
|
|
399
|
+
let aborted = false;
|
|
400
|
+
let escalation;
|
|
401
|
+
const onAbort = () => {
|
|
402
|
+
aborted = true;
|
|
403
|
+
process2.kill("SIGTERM");
|
|
404
|
+
escalation = setTimeout(() => process2.kill("SIGKILL"), ABORT_SIGKILL_GRACE_MS);
|
|
405
|
+
escalation.unref?.();
|
|
406
|
+
};
|
|
407
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
408
|
+
try {
|
|
409
|
+
const [stdout, stderr, exitStatus] = await Promise.all([
|
|
410
|
+
new Response(process2.stdout).text(),
|
|
411
|
+
new Response(process2.stderr).text(),
|
|
412
|
+
process2.exited
|
|
413
|
+
]);
|
|
414
|
+
if (aborted) throw abortError(nodeLabel2);
|
|
415
|
+
return { exitStatus, stdout, stderr };
|
|
416
|
+
} finally {
|
|
417
|
+
if (escalation) clearTimeout(escalation);
|
|
418
|
+
signal?.removeEventListener("abort", onAbort);
|
|
419
|
+
}
|
|
379
420
|
}
|
|
380
421
|
};
|
|
381
422
|
|
|
@@ -7584,6 +7625,18 @@ function raceWithTimeout(promise, ms, timeoutMessage) {
|
|
|
7584
7625
|
);
|
|
7585
7626
|
});
|
|
7586
7627
|
}
|
|
7628
|
+
var ABORTED_ATTEMPT_SETTLE_MS = ABORT_SIGKILL_GRACE_MS + 1e3;
|
|
7629
|
+
function settleWithin(promise, ms) {
|
|
7630
|
+
return new Promise((resolve6) => {
|
|
7631
|
+
const timer = setTimeout(resolve6, ms);
|
|
7632
|
+
timer.unref?.();
|
|
7633
|
+
const settled = () => {
|
|
7634
|
+
clearTimeout(timer);
|
|
7635
|
+
resolve6();
|
|
7636
|
+
};
|
|
7637
|
+
promise.then(settled, settled);
|
|
7638
|
+
});
|
|
7639
|
+
}
|
|
7587
7640
|
function mergeInteractionHistory(history, interaction) {
|
|
7588
7641
|
if (!interaction) return history;
|
|
7589
7642
|
const next = [...history];
|
|
@@ -8799,6 +8852,7 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
8799
8852
|
}
|
|
8800
8853
|
async drainAvailableRuntimeNodes(handle, includeRoutersAndGates) {
|
|
8801
8854
|
const advancedSubFlows = /* @__PURE__ */ new Set();
|
|
8855
|
+
let abortedAttempt;
|
|
8802
8856
|
while (true) {
|
|
8803
8857
|
const state = this.s(handle);
|
|
8804
8858
|
if (state.execution.status === "cancelled" || state.execution.status === "failed") break;
|
|
@@ -8874,7 +8928,7 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
8874
8928
|
state.flowInputOrigins
|
|
8875
8929
|
);
|
|
8876
8930
|
subFlowInputOrigins = resolved.origins;
|
|
8877
|
-
const
|
|
8931
|
+
const runPromise2 = runner.run({
|
|
8878
8932
|
node,
|
|
8879
8933
|
flowId: node.run.flow,
|
|
8880
8934
|
inputs: resolved.values,
|
|
@@ -8892,10 +8946,10 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
8892
8946
|
}
|
|
8893
8947
|
});
|
|
8894
8948
|
result = remainingMs !== void 0 ? await raceWithTimeout(
|
|
8895
|
-
|
|
8949
|
+
runPromise2,
|
|
8896
8950
|
Math.max(0, remainingMs),
|
|
8897
8951
|
`Sub-flow node ${node.id} timed out after ${timeoutSec}s`
|
|
8898
|
-
) : await
|
|
8952
|
+
) : await runPromise2;
|
|
8899
8953
|
} catch (error) {
|
|
8900
8954
|
if (error instanceof NodeTimeoutError) {
|
|
8901
8955
|
const target = state.inlineOperationTargets.get(node.id);
|
|
@@ -9015,17 +9069,17 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
9015
9069
|
interpolateNodeInstruction(instruction, resolved.values),
|
|
9016
9070
|
outputSchema
|
|
9017
9071
|
);
|
|
9018
|
-
const
|
|
9072
|
+
const runPromise2 = runner.execute({
|
|
9019
9073
|
node,
|
|
9020
9074
|
prompt,
|
|
9021
9075
|
inputs: resolved.values,
|
|
9022
9076
|
inputOrigins: resolved.origins
|
|
9023
9077
|
});
|
|
9024
9078
|
const result = subpromptRemainingMs !== void 0 ? await raceWithTimeout(
|
|
9025
|
-
|
|
9079
|
+
runPromise2,
|
|
9026
9080
|
Math.max(0, subpromptRemainingMs),
|
|
9027
9081
|
`Subprompt node ${node.id} timed out after ${subpromptTimeoutSec}s`
|
|
9028
|
-
) : await
|
|
9082
|
+
) : await runPromise2;
|
|
9029
9083
|
subpromptOutput = subpromptNodeOutput(node, result.text);
|
|
9030
9084
|
const validation = validateConsumedNodeOutput(
|
|
9031
9085
|
state.flowDef,
|
|
@@ -9099,6 +9153,12 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
9099
9153
|
continue;
|
|
9100
9154
|
}
|
|
9101
9155
|
if (!isFunctionNode(node) && !isCheckNode(node)) continue;
|
|
9156
|
+
if (abortedAttempt) {
|
|
9157
|
+
const settling = abortedAttempt;
|
|
9158
|
+
abortedAttempt = void 0;
|
|
9159
|
+
await settleWithin(settling, ABORTED_ATTEMPT_SETTLE_MS);
|
|
9160
|
+
continue;
|
|
9161
|
+
}
|
|
9102
9162
|
this.mutate(
|
|
9103
9163
|
handle,
|
|
9104
9164
|
(current) => {
|
|
@@ -9129,6 +9189,8 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
9129
9189
|
let capturedInputOrigins;
|
|
9130
9190
|
let checkEvidence;
|
|
9131
9191
|
let deterministicOutcome;
|
|
9192
|
+
const deterministicAbort = new AbortController();
|
|
9193
|
+
let runPromise;
|
|
9132
9194
|
try {
|
|
9133
9195
|
const executor = state.nodeExecutor;
|
|
9134
9196
|
if (!executor)
|
|
@@ -9140,11 +9202,10 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
9140
9202
|
state.flowInputOrigins
|
|
9141
9203
|
);
|
|
9142
9204
|
capturedInputOrigins = resolved.origins;
|
|
9143
|
-
|
|
9144
|
-
node,
|
|
9145
|
-
|
|
9146
|
-
|
|
9147
|
-
});
|
|
9205
|
+
runPromise = executor.execute(
|
|
9206
|
+
{ node, inputs: resolved.values, inputOrigins: resolved.origins },
|
|
9207
|
+
{ signal: deterministicAbort.signal }
|
|
9208
|
+
);
|
|
9148
9209
|
const result = deterministicRemainingMs !== void 0 ? await raceWithTimeout(
|
|
9149
9210
|
runPromise,
|
|
9150
9211
|
Math.max(0, deterministicRemainingMs),
|
|
@@ -9193,12 +9254,21 @@ var FlowAdapter = class extends AbstractConnector {
|
|
|
9193
9254
|
deterministicOutcome = { kind: "success" };
|
|
9194
9255
|
}
|
|
9195
9256
|
} catch (error) {
|
|
9196
|
-
|
|
9197
|
-
|
|
9198
|
-
|
|
9199
|
-
|
|
9257
|
+
if (error instanceof NodeTimeoutError) {
|
|
9258
|
+
deterministicAbort.abort();
|
|
9259
|
+
abortedAttempt = runPromise;
|
|
9260
|
+
deterministicOutcome = { kind: "failure", message: error.message };
|
|
9261
|
+
} else {
|
|
9262
|
+
deterministicOutcome = {
|
|
9263
|
+
kind: "failure",
|
|
9264
|
+
message: `${deterministicKindLabel} node ${node.id} failed: ${error instanceof Error ? error.message : String(error)}`
|
|
9265
|
+
};
|
|
9266
|
+
}
|
|
9267
|
+
}
|
|
9268
|
+
if (this.s(handle).executionGeneration !== deterministicExecutionGeneration) {
|
|
9269
|
+
deterministicAbort.abort();
|
|
9270
|
+
break;
|
|
9200
9271
|
}
|
|
9201
|
-
if (this.s(handle).executionGeneration !== deterministicExecutionGeneration) break;
|
|
9202
9272
|
if (deterministicOutcome.kind === "success") {
|
|
9203
9273
|
this.mutate(
|
|
9204
9274
|
handle,
|
|
@@ -9717,6 +9787,7 @@ ${targetExecution.outputCorrection.issues.map((issue) => `- ${issue}`).join("\n"
|
|
|
9717
9787
|
${assets.map((asset) => `- ${asset}`).join("\n")}`);
|
|
9718
9788
|
}
|
|
9719
9789
|
const deps = flowPredecessors(s.flowDef, nodeId);
|
|
9790
|
+
const supplied = suppliedProducerFields(resolved);
|
|
9720
9791
|
const handoff = [];
|
|
9721
9792
|
for (const depId of deps) {
|
|
9722
9793
|
const exec = s.execution.nodes[depId];
|
|
@@ -9729,8 +9800,9 @@ Concerns: ${output.concerns.join("; ")}` : "";
|
|
|
9729
9800
|
const predecessor = s.flowDef.nodes.find((n) => n.id === depId);
|
|
9730
9801
|
const label = predecessor ? nodeLabel(predecessor) : depId;
|
|
9731
9802
|
const summary = predecessor && isRouterNode(predecessor) ? routerSelectionHandoffSummary(predecessor, exec) ?? output.summary : output.summary;
|
|
9803
|
+
const fields = exec?.status === "complete" ? upstreamFieldsBlock(predecessor, output, supplied) : "";
|
|
9732
9804
|
handoff.push(`### ${label} (${exec?.status})
|
|
9733
|
-
${summary}${artifacts}${concerns}`);
|
|
9805
|
+
${summary}${fields}${artifacts}${concerns}`);
|
|
9734
9806
|
}
|
|
9735
9807
|
sections.push(
|
|
9736
9808
|
`## Upstream handoff
|
|
@@ -9748,6 +9820,62 @@ function routerSelectionHandoffSummary(router, execution) {
|
|
|
9748
9820
|
if (!selection) return void 0;
|
|
9749
9821
|
return selection.selectedTarget === null ? "Router completed without selecting a target." : `Router selected ${selection.selectedTarget}.`;
|
|
9750
9822
|
}
|
|
9823
|
+
var HANDOFF_FIELD_VALUE_MAX_CHARS = 500;
|
|
9824
|
+
var HANDOFF_FIELD_MAX_COUNT = 20;
|
|
9825
|
+
function declaredOutputFieldNames(node) {
|
|
9826
|
+
const schema = node?.contract?.output?.fields;
|
|
9827
|
+
if (!schema || typeof schema !== "object" || Array.isArray(schema)) return [];
|
|
9828
|
+
const properties = schema.properties;
|
|
9829
|
+
if (!properties || typeof properties !== "object" || Array.isArray(properties)) return [];
|
|
9830
|
+
return Object.keys(properties);
|
|
9831
|
+
}
|
|
9832
|
+
function suppliedProducerFields(resolved) {
|
|
9833
|
+
const supplied = /* @__PURE__ */ new Set();
|
|
9834
|
+
for (const [name, originList] of Object.entries(resolved.origins)) {
|
|
9835
|
+
const serialized = JSON.stringify(resolved.values[name]);
|
|
9836
|
+
if (serialized === void 0) continue;
|
|
9837
|
+
for (const origin of originList) {
|
|
9838
|
+
if (origin.source !== "node-output") continue;
|
|
9839
|
+
const root = origin.path.split(".")[4];
|
|
9840
|
+
if (root) supplied.add(`${origin.nodeId} ${root} ${serialized}`);
|
|
9841
|
+
}
|
|
9842
|
+
}
|
|
9843
|
+
return supplied;
|
|
9844
|
+
}
|
|
9845
|
+
function upstreamFieldsBlock(predecessor, output, supplied) {
|
|
9846
|
+
const fields = output.fields;
|
|
9847
|
+
if (!predecessor || !fields) return "";
|
|
9848
|
+
const renderable = [];
|
|
9849
|
+
let suppressed = 0;
|
|
9850
|
+
for (const name of declaredOutputFieldNames(predecessor)) {
|
|
9851
|
+
if (!Object.hasOwn(fields, name)) continue;
|
|
9852
|
+
const serialized = JSON.stringify(fields[name]) ?? "null";
|
|
9853
|
+
if (supplied.has(`${predecessor.id} ${name} ${serialized}`)) {
|
|
9854
|
+
suppressed += 1;
|
|
9855
|
+
continue;
|
|
9856
|
+
}
|
|
9857
|
+
renderable.push([name, serialized]);
|
|
9858
|
+
}
|
|
9859
|
+
if (renderable.length === 0) return "";
|
|
9860
|
+
const lines = renderable.slice(0, HANDOFF_FIELD_MAX_COUNT).map(([name, serialized]) => {
|
|
9861
|
+
const value = serialized.length > HANDOFF_FIELD_VALUE_MAX_CHARS ? `${serialized.slice(0, HANDOFF_FIELD_VALUE_MAX_CHARS)} \u2026 [truncated from ${serialized.length} chars]` : serialized;
|
|
9862
|
+
return `- ${name}: ${value}`;
|
|
9863
|
+
});
|
|
9864
|
+
const overflow = renderable.length - lines.length;
|
|
9865
|
+
if (overflow > 0) {
|
|
9866
|
+
lines.push(
|
|
9867
|
+
`- \u2026 ${overflow} more declared field(s) not shown (${HANDOFF_FIELD_MAX_COUNT}-field cap)`
|
|
9868
|
+
);
|
|
9869
|
+
}
|
|
9870
|
+
if (suppressed > 0) {
|
|
9871
|
+
lines.push(
|
|
9872
|
+
`- (${suppressed} declared field(s) omitted \u2014 already shown under "Supplied bindings")`
|
|
9873
|
+
);
|
|
9874
|
+
}
|
|
9875
|
+
return `
|
|
9876
|
+
Fields:
|
|
9877
|
+
${lines.join("\n")}`;
|
|
9878
|
+
}
|
|
9751
9879
|
function deterministicNodeOutput(node, result, passed) {
|
|
9752
9880
|
const kindLabel = deterministicNodeKindLabel(node.run.kind);
|
|
9753
9881
|
const capturedFields = [];
|
|
@@ -9770,19 +9898,80 @@ function deterministicNodeOutput(node, result, passed) {
|
|
|
9770
9898
|
...Object.keys(fields).length > 0 ? { fields } : {}
|
|
9771
9899
|
};
|
|
9772
9900
|
}
|
|
9901
|
+
function findSoleJsonSpan(text) {
|
|
9902
|
+
const spans = [];
|
|
9903
|
+
const stack = [];
|
|
9904
|
+
let spanStart = null;
|
|
9905
|
+
let inString = false;
|
|
9906
|
+
let escaped = false;
|
|
9907
|
+
for (let i = 0; i < text.length; i++) {
|
|
9908
|
+
const char = text[i];
|
|
9909
|
+
if (inString) {
|
|
9910
|
+
if (escaped) escaped = false;
|
|
9911
|
+
else if (char === "\\") escaped = true;
|
|
9912
|
+
else if (char === '"') inString = false;
|
|
9913
|
+
continue;
|
|
9914
|
+
}
|
|
9915
|
+
if (stack.length > 0 && char === '"') {
|
|
9916
|
+
inString = true;
|
|
9917
|
+
} else if (char === "{" || char === "[") {
|
|
9918
|
+
if (stack.length === 0) spanStart = i;
|
|
9919
|
+
stack.push(char === "{" ? "}" : "]");
|
|
9920
|
+
} else if (char === "}" || char === "]") {
|
|
9921
|
+
if (stack.length === 0) {
|
|
9922
|
+
return { ambiguity: "a closing bracket appears outside any JSON structure" };
|
|
9923
|
+
}
|
|
9924
|
+
if (stack.pop() !== char) return { ambiguity: "mismatched bracket" };
|
|
9925
|
+
if (stack.length === 0 && spanStart !== null) {
|
|
9926
|
+
spans.push({ text: text.slice(spanStart, i + 1), end: i + 1 });
|
|
9927
|
+
spanStart = null;
|
|
9928
|
+
}
|
|
9929
|
+
}
|
|
9930
|
+
}
|
|
9931
|
+
if (stack.length > 0 || inString) return { ambiguity: "unterminated JSON structure" };
|
|
9932
|
+
if (spans.length > 1) {
|
|
9933
|
+
return {
|
|
9934
|
+
ambiguity: `found ${spans.length} candidate JSON values; refusing to guess which is the answer`
|
|
9935
|
+
};
|
|
9936
|
+
}
|
|
9937
|
+
const sole = spans[0];
|
|
9938
|
+
if (!sole) return {};
|
|
9939
|
+
const afterSpan = text.slice(sole.end);
|
|
9940
|
+
const lineBreak = afterSpan.indexOf("\n");
|
|
9941
|
+
const restOfLine = lineBreak === -1 ? afterSpan : afterSpan.slice(0, lineBreak);
|
|
9942
|
+
if (restOfLine.trim() !== "") {
|
|
9943
|
+
return { ambiguity: "the candidate JSON value is embedded mid-sentence" };
|
|
9944
|
+
}
|
|
9945
|
+
return { span: sole.text };
|
|
9946
|
+
}
|
|
9773
9947
|
function extractSubpromptJsonPayload(text) {
|
|
9948
|
+
const parses = (value) => {
|
|
9949
|
+
try {
|
|
9950
|
+
JSON.parse(value);
|
|
9951
|
+
return true;
|
|
9952
|
+
} catch {
|
|
9953
|
+
return false;
|
|
9954
|
+
}
|
|
9955
|
+
};
|
|
9774
9956
|
const trimmed = text.trim();
|
|
9775
9957
|
const fenceMatch = /^```(?:json)?\s*([\s\S]*?)\s*```$/.exec(trimmed);
|
|
9776
|
-
|
|
9958
|
+
const direct = fenceMatch?.[1] ?? trimmed;
|
|
9959
|
+
if (parses(direct)) return { payload: direct };
|
|
9960
|
+
const scan = findSoleJsonSpan(direct);
|
|
9961
|
+
if (scan.span !== void 0) {
|
|
9962
|
+
if (parses(scan.span)) return { payload: scan.span };
|
|
9963
|
+
return { payload: direct, ambiguity: "the sole candidate JSON value did not parse" };
|
|
9964
|
+
}
|
|
9965
|
+
return scan.ambiguity ? { payload: direct, ambiguity: scan.ambiguity } : { payload: direct };
|
|
9777
9966
|
}
|
|
9778
9967
|
function subpromptNodeOutput(node, text) {
|
|
9779
9968
|
const outputSchema = node.contract?.output?.fields;
|
|
9780
9969
|
if (!outputSchema) return { summary: text.trim(), artifacts: [] };
|
|
9781
|
-
const
|
|
9970
|
+
const extracted = extractSubpromptJsonPayload(text);
|
|
9971
|
+
const parsed = safeParseFields(extracted.payload);
|
|
9782
9972
|
if (!parsed.fields) {
|
|
9783
|
-
|
|
9784
|
-
|
|
9785
|
-
);
|
|
9973
|
+
const detail = extracted.ambiguity ? `${parsed.issues.join("; ")} (${extracted.ambiguity})` : parsed.issues.join("; ");
|
|
9974
|
+
throw new Error(`Subprompt node ${node.id} response is not valid JSON: ${detail}`);
|
|
9786
9975
|
}
|
|
9787
9976
|
return {
|
|
9788
9977
|
summary: text.trim(),
|
|
@@ -9859,5 +10048,5 @@ function createConnector() {
|
|
|
9859
10048
|
}
|
|
9860
10049
|
|
|
9861
10050
|
export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, PortPool, PostgresConnector, S3Connector, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, buildSdkFlowTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
|
|
9862
|
-
//# sourceMappingURL=chunk-
|
|
9863
|
-
//# sourceMappingURL=chunk-
|
|
10051
|
+
//# sourceMappingURL=chunk-P6V5GORE.js.map
|
|
10052
|
+
//# sourceMappingURL=chunk-P6V5GORE.js.map
|