@skaile/workspaces 2.2.0 → 2.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 +24 -0
- package/README.md +35 -12
- package/dist/{asset-feeds-D2LOXTOS.js → asset-feeds-4AWAT5PW.js} +6 -6
- package/dist/{asset-feeds-D2LOXTOS.js.map → asset-feeds-4AWAT5PW.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +1 -1
- package/dist/asset-manager/index.js +5 -5
- package/dist/asset-manager/installer.js +2 -2
- package/dist/bridge/drivers/claude-sdk.js +5 -2
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +1 -1
- package/dist/bridge/drivers/continue.js +2 -2
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +3 -3
- package/dist/bridge/drivers/goose.js +2 -2
- package/dist/bridge/drivers/omp.js +1 -1
- package/dist/bridge/drivers/opencode.js +2 -2
- package/dist/bridge/drivers/qwen.js +3 -3
- package/dist/bridge/index.js +2 -2
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/{chunk-CERGXDGG.js → chunk-2OCYS5EP.js} +3 -3
- package/dist/{chunk-CERGXDGG.js.map → chunk-2OCYS5EP.js.map} +1 -1
- package/dist/{chunk-TQIU4HQG.js → chunk-2QVPCZTL.js} +101 -40
- package/dist/chunk-2QVPCZTL.js.map +1 -0
- package/dist/{chunk-A67FJ4YT.js → chunk-3HVASHBF.js} +3 -3
- package/dist/{chunk-A67FJ4YT.js.map → chunk-3HVASHBF.js.map} +1 -1
- package/dist/chunk-4O2RAXKJ.js +446 -0
- package/dist/chunk-4O2RAXKJ.js.map +1 -0
- package/dist/chunk-4QROZZ5Z.js +50 -0
- package/dist/chunk-4QROZZ5Z.js.map +1 -0
- package/dist/{chunk-VSSAJYFK.js → chunk-57RFYEVM.js} +3 -3
- package/dist/{chunk-VSSAJYFK.js.map → chunk-57RFYEVM.js.map} +1 -1
- package/dist/{chunk-SZJCUC52.js → chunk-6BV5NAPD.js} +156 -28
- package/dist/chunk-6BV5NAPD.js.map +1 -0
- package/dist/{chunk-MAIKGYFR.js → chunk-AKVAZ5CB.js} +2 -2
- package/dist/{chunk-MAIKGYFR.js.map → chunk-AKVAZ5CB.js.map} +1 -1
- package/dist/{chunk-BFIK6NPZ.js → chunk-AM5LFRXJ.js} +3 -3
- package/dist/{chunk-BFIK6NPZ.js.map → chunk-AM5LFRXJ.js.map} +1 -1
- package/dist/{chunk-6QSGCHE5.js → chunk-EEHOMCRU.js} +1071 -123
- package/dist/chunk-EEHOMCRU.js.map +1 -0
- package/dist/{chunk-6I5VRIX3.js → chunk-ENBTXMPL.js} +7 -7
- package/dist/{chunk-6I5VRIX3.js.map → chunk-ENBTXMPL.js.map} +1 -1
- package/dist/{chunk-Y662DNQQ.js → chunk-FKBQRV4J.js} +68 -24
- package/dist/chunk-FKBQRV4J.js.map +1 -0
- package/dist/{chunk-BUPFJFGP.js → chunk-G5V6YCHF.js} +3 -3
- package/dist/{chunk-BUPFJFGP.js.map → chunk-G5V6YCHF.js.map} +1 -1
- package/dist/{chunk-KGIVZOLU.js → chunk-GM2X24Q6.js} +2 -2
- package/dist/{chunk-KGIVZOLU.js.map → chunk-GM2X24Q6.js.map} +1 -1
- package/dist/{chunk-5BH6ZEGC.js → chunk-IHX2SN35.js} +9 -9
- package/dist/{chunk-5BH6ZEGC.js.map → chunk-IHX2SN35.js.map} +1 -1
- package/dist/{chunk-6HPTB6KT.js → chunk-JAFEMG7W.js} +4 -4
- package/dist/{chunk-6HPTB6KT.js.map → chunk-JAFEMG7W.js.map} +1 -1
- package/dist/{chunk-I5ESMJMW.js → chunk-MADO7PH5.js} +2 -2
- package/dist/{chunk-I5ESMJMW.js.map → chunk-MADO7PH5.js.map} +1 -1
- package/dist/{chunk-BCTU4TN7.js → chunk-MWFYXUFK.js} +3 -3
- package/dist/{chunk-BCTU4TN7.js.map → chunk-MWFYXUFK.js.map} +1 -1
- package/dist/{chunk-MAN7AGQJ.js → chunk-NU4E7C5I.js} +25 -6
- package/dist/chunk-NU4E7C5I.js.map +1 -0
- package/dist/{chunk-RKMXBOIO.js → chunk-O7ROIKTF.js} +3 -3
- package/dist/{chunk-RKMXBOIO.js.map → chunk-O7ROIKTF.js.map} +1 -1
- package/dist/chunk-OEGHKO5N.js +1236 -0
- package/dist/chunk-OEGHKO5N.js.map +1 -0
- package/dist/{chunk-63ZPKREA.js → chunk-P43HBWKK.js} +11 -4
- package/dist/chunk-P43HBWKK.js.map +1 -0
- package/dist/{chunk-IR6VPAVH.js → chunk-PJ6INYDD.js} +3 -3
- package/dist/{chunk-IR6VPAVH.js.map → chunk-PJ6INYDD.js.map} +1 -1
- package/dist/{chunk-DHGMYXOY.js → chunk-UGKOWIRP.js} +4 -4
- package/dist/{chunk-DHGMYXOY.js.map → chunk-UGKOWIRP.js.map} +1 -1
- package/dist/{chunk-WA7ADYSA.js → chunk-UZYTSIX6.js} +6 -6
- package/dist/{chunk-WA7ADYSA.js.map → chunk-UZYTSIX6.js.map} +1 -1
- package/dist/chunk-V4ZLZJFN.js +86 -0
- package/dist/chunk-V4ZLZJFN.js.map +1 -0
- package/dist/{chunk-GPMIXOJJ.js → chunk-WSARNOPP.js} +5 -5
- package/dist/{chunk-GPMIXOJJ.js.map → chunk-WSARNOPP.js.map} +1 -1
- package/dist/cli/index.js +49 -46
- package/dist/cli/index.js.map +1 -1
- package/dist/connectors/config.js +1 -1
- package/dist/connectors/index.js +6 -4
- package/dist/core/index.js +1 -1
- package/dist/core/src/subprocess.d.ts +5 -1
- package/dist/core/src/subprocess.d.ts.map +1 -1
- package/dist/deploy/index.js +1 -1
- package/dist/discovery/index.js +1 -1
- package/dist/discovery/src/requires-graph.d.ts +1 -1
- package/dist/discovery/src/requires-graph.d.ts.map +1 -1
- package/dist/{ensure-sources-6QMXRI6D.js → ensure-sources-QF72HVUM.js} +8 -8
- package/dist/{ensure-sources-6QMXRI6D.js.map → ensure-sources-QF72HVUM.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +6 -4
- package/dist/factory-assets/connectors/deploy.js +6 -4
- package/dist/factory-assets/connectors/devserver.js +6 -4
- package/dist/factory-assets/connectors/flow/CONNECTOR.md +63 -10
- package/dist/factory-assets/connectors/flow/adapter.d.ts +79 -36
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +6 -4
- package/dist/factory-assets/connectors/flow/contract/expression.d.ts +55 -0
- package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract/flow.v2.schema.json +61 -134
- package/dist/factory-assets/connectors/flow/contract/index.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/contract/index.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract/normalize.d.ts +4 -1
- package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract/schema.d.ts +20 -8
- package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract.js +2 -1024
- package/dist/factory-assets/connectors/flow/contract.js.map +1 -1
- package/dist/factory-assets/connectors/flow/engine/bindings.d.ts +9 -0
- package/dist/factory-assets/connectors/flow/engine/bindings.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/engine.d.ts +11 -6
- package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
- 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/loader.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts +42 -0
- package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +18 -0
- package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/types.d.ts +67 -33
- package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +4 -2
- package/dist/factory-assets/connectors/flow/index.d.ts +3 -0
- package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts +48 -0
- package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/node-executor.d.ts +45 -0
- package/dist/factory-assets/connectors/flow/node-executor.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +5 -6
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/prompt-fragments.js +2 -1
- package/dist/factory-assets/connectors/flow/run-flow.d.ts +10 -9
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +7 -5
- package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts +73 -0
- package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow.js +6 -4
- package/dist/factory-assets/connectors/git.js +6 -4
- package/dist/factory-assets/connectors/gmail.js +6 -4
- package/dist/factory-assets/connectors/googledrive.js +6 -4
- package/dist/factory-assets/connectors/local.js +6 -4
- package/dist/factory-assets/connectors/mattermost.js +6 -4
- package/dist/factory-assets/connectors/memory.js +6 -4
- package/dist/factory-assets/connectors/minio.js +6 -4
- package/dist/factory-assets/connectors/postgres.js +6 -4
- package/dist/factory-assets/connectors/s3.js +6 -4
- package/dist/factory-assets/connectors/sharepoint.js +6 -4
- package/dist/factory-assets/connectors/sqlite.js +6 -4
- package/dist/factory-assets/connectors/static-server.js +6 -4
- package/dist/factory-assets/connectors/tunnel.js +6 -4
- package/dist/factory-assets/connectors/webdav.js +6 -4
- package/dist/factory-assets/connectors/xstate-store.js +6 -4
- package/dist/factory-assets/connectors/xstate.js +6 -4
- package/dist/{flows-TDDBCLNF.js → flows-YIW4HL3L.js} +4 -4
- package/dist/{flows-TDDBCLNF.js.map → flows-YIW4HL3L.js.map} +1 -1
- package/dist/{helpers-COQ7TDD4.js → helpers-LURCZHA4.js} +8 -8
- package/dist/{helpers-COQ7TDD4.js.map → helpers-LURCZHA4.js.map} +1 -1
- package/dist/library/index.js +3 -3
- package/dist/library/install.js +1 -1
- package/dist/{library-publish-SNPER6PO.js → library-publish-2GMJM3NZ.js} +14 -12
- package/dist/library-publish-2GMJM3NZ.js.map +1 -0
- package/dist/{open-library-VH2VEYQ7.js → open-library-POFOXZWH.js} +12 -10
- package/dist/{open-library-VH2VEYQ7.js.map → open-library-POFOXZWH.js.map} +1 -1
- package/dist/{paths-XZA22IB4.js → paths-ZLX4ITAQ.js} +6 -6
- package/dist/{paths-XZA22IB4.js.map → paths-ZLX4ITAQ.js.map} +1 -1
- package/dist/{plugin-store-CYSNVZIX.js → plugin-store-YIMNH2FH.js} +3 -3
- package/dist/{plugin-store-CYSNVZIX.js.map → plugin-store-YIMNH2FH.js.map} +1 -1
- package/dist/{project-FKL7PMJV.js → project-GVOPZEJZ.js} +9 -9
- package/dist/{project-FKL7PMJV.js.map → project-GVOPZEJZ.js.map} +1 -1
- package/dist/resolver/index.js +1 -1
- package/dist/runner/index.js +14 -8
- package/dist/runner/src/serve.d.ts +3 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +5 -5
- package/dist/sdk/bridge.js +2 -2
- package/dist/sdk/core.js +1 -1
- package/dist/sdk/flow.js +4 -2
- package/dist/sdk/index.js +14 -8
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +1 -1
- package/dist/sdk/runner.js +14 -8
- package/dist/{setup-BM6HMYJJ.js → setup-TJYLYT2A.js} +5 -5
- package/dist/{setup-BM6HMYJJ.js.map → setup-TJYLYT2A.js.map} +1 -1
- package/dist/{skills-LHS4TOKK.js → skills-HGVH6UTA.js} +5 -5
- package/dist/{skills-LHS4TOKK.js.map → skills-HGVH6UTA.js.map} +1 -1
- package/dist/{source-JIUBJC4F.js → source-FB3T4IHP.js} +13 -11
- package/dist/{source-JIUBJC4F.js.map → source-FB3T4IHP.js.map} +1 -1
- package/dist/{source-manifest-publish-TLH6UWWU.js → source-manifest-publish-XTRDVPSC.js} +15 -13
- package/dist/source-manifest-publish-XTRDVPSC.js.map +1 -0
- package/dist/tui/index.js +14 -8
- package/dist/tui/index.js.map +1 -1
- package/dist/types/src/flow.d.ts +26 -0
- package/dist/types/src/flow.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +4 -4
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-63ZPKREA.js.map +0 -1
- package/dist/chunk-6QSGCHE5.js.map +0 -1
- package/dist/chunk-HPGV54O4.js +0 -301
- package/dist/chunk-HPGV54O4.js.map +0 -1
- package/dist/chunk-MAN7AGQJ.js.map +0 -1
- package/dist/chunk-SZJCUC52.js.map +0 -1
- package/dist/chunk-TQIU4HQG.js.map +0 -1
- package/dist/chunk-Y662DNQQ.js.map +0 -1
- package/dist/library-publish-SNPER6PO.js.map +0 -1
- package/dist/source-manifest-publish-TLH6UWWU.js.map +0 -1
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { WorkspacePlugin } from './chunk-
|
|
1
|
+
import { WorkspacePlugin } from './chunk-AKVAZ5CB.js';
|
|
2
2
|
import { assembleSystemPrompt, buildCapabilitiesPromptSection } from './chunk-W3UDISS2.js';
|
|
3
3
|
import { WebSocketServerTransport } from './chunk-WQ7DE5UC.js';
|
|
4
|
-
import { EventNormalizer } from './chunk-
|
|
4
|
+
import { EventNormalizer } from './chunk-O7ROIKTF.js';
|
|
5
5
|
import { SUPPORTED_CLOUDS, CLOUD_SECRET_ENV_KEYS } from './chunk-ISQWMBKD.js';
|
|
6
6
|
import { classifyClaudeSdkError } from './chunk-GAH4YRCI.js';
|
|
7
|
-
import { createDriver } from './chunk-
|
|
7
|
+
import { createDriver } from './chunk-GM2X24Q6.js';
|
|
8
|
+
import { resolveFlowPath } from './chunk-6BV5NAPD.js';
|
|
8
9
|
import { findAiAssetsRoot, deployCatalogEntry, undeployCatalogEntry } from './chunk-BEAIJRVF.js';
|
|
9
|
-
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools, buildSdkFlowTools } from './chunk-
|
|
10
|
+
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools, SessionNodeExecutor, SessionInlineSubFlowRunner, buildSdkFlowTools } from './chunk-EEHOMCRU.js';
|
|
10
11
|
import { loadConnectorDeclarations, SecretProviderChain, PreMintedSecretProvider, InMemorySecretProvider, resolvedConfigToDeclarations, isKnownSecretRef, deriveSingleMaterializedConnectorDeclaration } from './chunk-ZNIHTT22.js';
|
|
11
|
-
import {
|
|
12
|
+
import { loadFlow } from './chunk-4O2RAXKJ.js';
|
|
13
|
+
import { parseFlowDefinition } from './chunk-OEGHKO5N.js';
|
|
14
|
+
import { renderStimulusPrompt, buildOrchestratorPrompt } from './chunk-FKBQRV4J.js';
|
|
12
15
|
import { PROTOCOL_VERSION } from './chunk-RDE43ORT.js';
|
|
13
|
-
import { resolveSettings, resolveApiKey, providerEnvKey } from './chunk-
|
|
16
|
+
import { resolveSettings, resolveApiKey, providerEnvKey } from './chunk-P43HBWKK.js';
|
|
14
17
|
import { resolveDriverPaths } from './chunk-K5GBV4SA.js';
|
|
15
18
|
import { resolveRuntimeAssets } from './chunk-UFY2HFLO.js';
|
|
16
19
|
import { resolveSkWorkspaceConfig, resolveAgentDir, cloudConfigFromProfile, stageMaterializedSkills, loadMcpServerDeclarations, COMPACTION_DEFAULTS, validateAssetRecipeAttr, deriveSingleMaterializedMcpDeclaration } from './chunk-Q26C5GLO.js';
|
|
@@ -4443,26 +4446,36 @@ function buildConnectorTokenMediator(deps) {
|
|
|
4443
4446
|
}
|
|
4444
4447
|
};
|
|
4445
4448
|
}
|
|
4449
|
+
function normalizeFlowMutateDefinition(authored) {
|
|
4450
|
+
const parsed = parseFlowDefinition(authored);
|
|
4451
|
+
if (parsed.ok) return { ok: true, flowDef: parsed.data };
|
|
4452
|
+
const details = parsed.errors.map((issue) => `${issue.path || "<root>"}: ${issue.message}`).join("; ");
|
|
4453
|
+
return { ok: false, reason: `invalid flow definition: ${details}` };
|
|
4454
|
+
}
|
|
4446
4455
|
function planFlowMutate(cmd, ctx) {
|
|
4447
4456
|
const isBareFlowId = cmd.id === "flow";
|
|
4448
4457
|
const flowIntercept = ctx.isExistingFlow || isBareFlowId;
|
|
4449
4458
|
const payload = cmd.payload ?? {};
|
|
4450
4459
|
if (cmd.op === "start" && flowIntercept) {
|
|
4451
|
-
const
|
|
4460
|
+
const authoredFlow = payload.flow;
|
|
4452
4461
|
const seed = payload.seed;
|
|
4453
|
-
if (!
|
|
4462
|
+
if (!authoredFlow || !seed?.runId || !seed?.startedBy) {
|
|
4454
4463
|
return {
|
|
4455
4464
|
kind: "reject",
|
|
4456
4465
|
reason: "flow.start payload missing required fields (need payload.flow.id, payload.seed.runId, payload.seed.startedBy)"
|
|
4457
4466
|
};
|
|
4458
4467
|
}
|
|
4468
|
+
const normalized = normalizeFlowMutateDefinition(authoredFlow);
|
|
4469
|
+
if (!normalized.ok) {
|
|
4470
|
+
return { kind: "reject", reason: `flow.start ${normalized.reason}` };
|
|
4471
|
+
}
|
|
4459
4472
|
if (ctx.hasRunningFlow) {
|
|
4460
4473
|
return {
|
|
4461
4474
|
kind: "reject",
|
|
4462
4475
|
reason: "flow.start ignored: a flow is still running (one active flow per session; cancel it, then start the next)"
|
|
4463
4476
|
};
|
|
4464
4477
|
}
|
|
4465
|
-
return { kind: "create-start", flowDef, seed };
|
|
4478
|
+
return { kind: "create-start", flowDef: normalized.flowDef, seed };
|
|
4466
4479
|
}
|
|
4467
4480
|
if (cmd.op === "hydrate" && flowIntercept && !ctx.hasActiveFlow) {
|
|
4468
4481
|
const state = payload.state;
|
|
@@ -4472,14 +4485,18 @@ function planFlowMutate(cmd, ctx) {
|
|
|
4472
4485
|
reason: "flow.hydrate payload missing required field payload.state (FlowExecution snapshot)"
|
|
4473
4486
|
};
|
|
4474
4487
|
}
|
|
4475
|
-
const
|
|
4476
|
-
if (!
|
|
4488
|
+
const authoredFlow = payload.flow;
|
|
4489
|
+
if (!authoredFlow) {
|
|
4477
4490
|
return {
|
|
4478
4491
|
kind: "reject",
|
|
4479
4492
|
reason: "flow.hydrate cannot bootstrap a cold container without payload.flow (FlowDefinition required when no flow is active)"
|
|
4480
4493
|
};
|
|
4481
4494
|
}
|
|
4482
|
-
|
|
4495
|
+
const normalized = normalizeFlowMutateDefinition(authoredFlow);
|
|
4496
|
+
if (!normalized.ok) {
|
|
4497
|
+
return { kind: "reject", reason: `flow.hydrate ${normalized.reason}` };
|
|
4498
|
+
}
|
|
4499
|
+
return { kind: "create-hydrate", flowDef: normalized.flowDef, execution: state };
|
|
4483
4500
|
}
|
|
4484
4501
|
let dispatchId = cmd.id;
|
|
4485
4502
|
if (!ctx.targetExists && isBareFlowId && ctx.onlyActiveConnectorId) {
|
|
@@ -4636,6 +4653,11 @@ function pendingDecisionOp(decision) {
|
|
|
4636
4653
|
}
|
|
4637
4654
|
};
|
|
4638
4655
|
}
|
|
4656
|
+
function hasRejectedParkedApproval(execution) {
|
|
4657
|
+
return Object.values(execution.nodes ?? {}).some(
|
|
4658
|
+
(node) => node.status === "awaiting_approval" && node.approval?.decision === "rejected" && node.approval.decidedAt != null
|
|
4659
|
+
);
|
|
4660
|
+
}
|
|
4639
4661
|
function hostOpResumeStimulus(op, payload) {
|
|
4640
4662
|
switch (op) {
|
|
4641
4663
|
case "applyApproval":
|
|
@@ -4733,21 +4755,23 @@ async function executeConnectorMutate(cmd, deps) {
|
|
|
4733
4755
|
});
|
|
4734
4756
|
if (payload.pendingDecisions === void 0) {
|
|
4735
4757
|
respond({ ok: true });
|
|
4758
|
+
if (entry.hydratedStateChanged || hasRejectedParkedApproval(plan.execution)) {
|
|
4759
|
+
deps.signalStimulus(entry, { kind: "resumed_after_hibernation" });
|
|
4760
|
+
}
|
|
4736
4761
|
return;
|
|
4737
4762
|
}
|
|
4738
4763
|
const { toApply, reconciled } = reconcilePendingDecisions(
|
|
4739
4764
|
plan.execution,
|
|
4740
4765
|
payload.pendingDecisions
|
|
4741
4766
|
);
|
|
4742
|
-
let
|
|
4767
|
+
let appliedAny = false;
|
|
4743
4768
|
const applied = [];
|
|
4744
4769
|
for (const decision of toApply) {
|
|
4745
4770
|
const { op, payload: opPayload } = pendingDecisionOp(decision);
|
|
4746
4771
|
try {
|
|
4747
4772
|
await deps.executeOp(entry.connectorId, op, opPayload);
|
|
4748
4773
|
applied.push(decision.nodeId);
|
|
4749
|
-
|
|
4750
|
-
if (stimulus) lastApplied = { target: entry, stimulus };
|
|
4774
|
+
appliedAny = true;
|
|
4751
4775
|
} catch (err) {
|
|
4752
4776
|
reconciled.skipped.push({ nodeId: decision.nodeId, reason: "not_parked" });
|
|
4753
4777
|
deps.log.warn("flow hydrate reconciliation refused", {
|
|
@@ -4759,7 +4783,9 @@ async function executeConnectorMutate(cmd, deps) {
|
|
|
4759
4783
|
}
|
|
4760
4784
|
reconciled.applied = applied;
|
|
4761
4785
|
respond({ ok: true, reconciled });
|
|
4762
|
-
if (
|
|
4786
|
+
if (appliedAny || entry.hydratedStateChanged || hasRejectedParkedApproval(plan.execution)) {
|
|
4787
|
+
deps.signalStimulus(entry, { kind: "resumed_after_hibernation" });
|
|
4788
|
+
}
|
|
4763
4789
|
return;
|
|
4764
4790
|
}
|
|
4765
4791
|
case "reject": {
|
|
@@ -4789,6 +4815,9 @@ async function executeConnectorMutate(cmd, deps) {
|
|
|
4789
4815
|
if (resumeStimulus) {
|
|
4790
4816
|
const active = deps.flowState().activeFlow;
|
|
4791
4817
|
if (active) deps.signalStimulus(active, resumeStimulus);
|
|
4818
|
+
} else if (cmd.op === "hydrate" && typeof result === "string" && JSON.stringify(payload.state) !== result) {
|
|
4819
|
+
const active = deps.flowState().activeFlow;
|
|
4820
|
+
if (active) deps.signalStimulus(active, { kind: "resumed_after_hibernation" });
|
|
4792
4821
|
}
|
|
4793
4822
|
return;
|
|
4794
4823
|
}
|
|
@@ -4803,6 +4832,8 @@ function reconstructTypedStimulus(meta) {
|
|
|
4803
4832
|
switch (meta.kind) {
|
|
4804
4833
|
case "flow_started":
|
|
4805
4834
|
return { kind: "flow_started" };
|
|
4835
|
+
case "resumed_after_hibernation":
|
|
4836
|
+
return { kind: "resumed_after_hibernation" };
|
|
4806
4837
|
case "user_message":
|
|
4807
4838
|
return typeof meta.text === "string" ? {
|
|
4808
4839
|
kind: "user_message",
|
|
@@ -5375,6 +5406,19 @@ async function startAgentServer(opts) {
|
|
|
5375
5406
|
}
|
|
5376
5407
|
const flowConnectorReadiness = createFlowConnectorReadiness(() => getOnlyActiveFlow() !== null);
|
|
5377
5408
|
const flowMutateConnectorWaitMs = resolveFlowMutateConnectorWaitMs();
|
|
5409
|
+
async function ensureFlowDriverStarted() {
|
|
5410
|
+
if (driverStarted) return;
|
|
5411
|
+
await driver.start();
|
|
5412
|
+
driverStarted = true;
|
|
5413
|
+
driver.on("agent-event", (event) => {
|
|
5414
|
+
const normalized = normalizer.normalize(event);
|
|
5415
|
+
for (const e of normalized) forwardNormalizedEvent(e);
|
|
5416
|
+
});
|
|
5417
|
+
driver.on("error", (err) => {
|
|
5418
|
+
log(`[serve] driver error: ${err.message}`);
|
|
5419
|
+
sendEvent({ type: "error", message: err.message, fatal: true });
|
|
5420
|
+
});
|
|
5421
|
+
}
|
|
5378
5422
|
function getOrCreateStimulusBus() {
|
|
5379
5423
|
if (stimulusBus) return stimulusBus;
|
|
5380
5424
|
stimulusBus = createSessionStimulusBus({
|
|
@@ -5387,23 +5431,14 @@ async function startAgentServer(opts) {
|
|
|
5387
5431
|
return;
|
|
5388
5432
|
}
|
|
5389
5433
|
const stimulus = stimulusFromMetas(metas);
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
);
|
|
5395
|
-
if (!driverStarted) {
|
|
5396
|
-
await driver.start();
|
|
5397
|
-
driverStarted = true;
|
|
5398
|
-
driver.on("agent-event", (event) => {
|
|
5399
|
-
const normalized = normalizer.normalize(event);
|
|
5400
|
-
for (const e of normalized) forwardNormalizedEvent(e);
|
|
5401
|
-
});
|
|
5402
|
-
driver.on("error", (err) => {
|
|
5403
|
-
log(`[serve] driver error: ${err.message}`);
|
|
5404
|
-
sendEvent({ type: "error", message: err.message, fatal: true });
|
|
5405
|
-
});
|
|
5434
|
+
await entry.adapter.drainRuntimeNodes(entry.handle);
|
|
5435
|
+
const execution = entry.adapter.getExecution(entry.handle);
|
|
5436
|
+
if (execution.done || execution.status === "failed" || execution.status === "cancelled") {
|
|
5437
|
+
return;
|
|
5406
5438
|
}
|
|
5439
|
+
if (!entry.adapter.shouldDriveAgentTurn(entry.handle, stimulus)) return;
|
|
5440
|
+
const fullPrompt = buildOrchestratorPrompt(entry.flowDef, execution, stimulus);
|
|
5441
|
+
await ensureFlowDriverStarted();
|
|
5407
5442
|
await awaitFlowAgentEnd(fullPrompt, FLOW_TURN_TIMEOUT_MS);
|
|
5408
5443
|
},
|
|
5409
5444
|
log: serverLog
|
|
@@ -5461,9 +5496,23 @@ async function startAgentServer(opts) {
|
|
|
5461
5496
|
}
|
|
5462
5497
|
async function createActiveFlow(flowDef, seedOrExecution) {
|
|
5463
5498
|
const bus = getOrCreateStimulusBus();
|
|
5499
|
+
const nodeExecutor = new SessionNodeExecutor({ workspaceDir: opts.projectDir });
|
|
5500
|
+
const inlineSubFlowRunner = new SessionInlineSubFlowRunner({
|
|
5501
|
+
resolveFlow: (flowId) => loadFlow(resolveFlowPath(flowId, opts.projectDir)),
|
|
5502
|
+
nodeExecutor,
|
|
5503
|
+
driveAgentTurn: async ({ flow, execution, stimulus }) => {
|
|
5504
|
+
await ensureFlowDriverStarted();
|
|
5505
|
+
await awaitFlowAgentEnd(
|
|
5506
|
+
buildOrchestratorPrompt(flow, execution, stimulus),
|
|
5507
|
+
FLOW_TURN_TIMEOUT_MS
|
|
5508
|
+
);
|
|
5509
|
+
}
|
|
5510
|
+
});
|
|
5464
5511
|
const baseOptions = {
|
|
5465
5512
|
stimulusBus: bus,
|
|
5466
|
-
useBusForStimulus: true
|
|
5513
|
+
useBusForStimulus: true,
|
|
5514
|
+
nodeExecutor,
|
|
5515
|
+
inlineSubFlowRunner
|
|
5467
5516
|
};
|
|
5468
5517
|
const options = "execution" in seedOrExecution ? { flow: flowDef, execution: seedOrExecution.execution, ...baseOptions } : { flow: flowDef, seed: seedOrExecution.seed, ...baseOptions };
|
|
5469
5518
|
const seedRunId = "execution" in seedOrExecution ? seedOrExecution.execution.runId : seedOrExecution.seed.runId;
|
|
@@ -5480,6 +5529,7 @@ async function startAgentServer(opts) {
|
|
|
5480
5529
|
});
|
|
5481
5530
|
const adapter = manager.get(connectorId).connector;
|
|
5482
5531
|
const runId = adapter.getExecution(handle).runId;
|
|
5532
|
+
const hydratedStateChanged = "execution" in seedOrExecution && JSON.stringify(adapter.getExecution(handle)) !== JSON.stringify(seedOrExecution.execution);
|
|
5483
5533
|
adapter.onStateChange(handle, (state) => {
|
|
5484
5534
|
sendEvent({
|
|
5485
5535
|
type: "state_changed",
|
|
@@ -5487,7 +5537,7 @@ async function startAgentServer(opts) {
|
|
|
5487
5537
|
state
|
|
5488
5538
|
});
|
|
5489
5539
|
});
|
|
5490
|
-
if ("seed" in seedOrExecution) {
|
|
5540
|
+
if ("seed" in seedOrExecution || hydratedStateChanged) {
|
|
5491
5541
|
sendEvent({
|
|
5492
5542
|
type: "state_changed",
|
|
5493
5543
|
store: `flow:${runId}`,
|
|
@@ -5495,9 +5545,9 @@ async function startAgentServer(opts) {
|
|
|
5495
5545
|
});
|
|
5496
5546
|
}
|
|
5497
5547
|
driver.config.flowTestDriver = {
|
|
5498
|
-
getState: () => adapter.
|
|
5548
|
+
getState: () => adapter.getAgentExecution(handle),
|
|
5499
5549
|
execute: (op, args) => adapter.executeOp(handle, op, args),
|
|
5500
|
-
mandatoryGates: () => adapter.
|
|
5550
|
+
mandatoryGates: () => adapter.getMandatoryAgentApprovalNodeIds(handle)
|
|
5501
5551
|
};
|
|
5502
5552
|
if (agentSession?.driverType === "claude-sdk") {
|
|
5503
5553
|
try {
|
|
@@ -5517,7 +5567,14 @@ async function startAgentServer(opts) {
|
|
|
5517
5567
|
}
|
|
5518
5568
|
}
|
|
5519
5569
|
emitAvailability();
|
|
5520
|
-
const entry = {
|
|
5570
|
+
const entry = {
|
|
5571
|
+
runId,
|
|
5572
|
+
flowDef,
|
|
5573
|
+
adapter,
|
|
5574
|
+
handle,
|
|
5575
|
+
connectorId,
|
|
5576
|
+
hydratedStateChanged
|
|
5577
|
+
};
|
|
5521
5578
|
const pruned = registerActiveFlow(activeFlows, runId, entry);
|
|
5522
5579
|
if (pruned.length > 0) serverLog.debug("pruned terminal flow runs", { runIds: pruned });
|
|
5523
5580
|
flowConnectorReadiness.drain();
|
|
@@ -6232,7 +6289,11 @@ async function startAgentServer(opts) {
|
|
|
6232
6289
|
},
|
|
6233
6290
|
createActiveFlow: async (flowDef, seedOrExecution) => {
|
|
6234
6291
|
const entry = await createActiveFlow(flowDef, seedOrExecution);
|
|
6235
|
-
return {
|
|
6292
|
+
return {
|
|
6293
|
+
runId: entry.runId,
|
|
6294
|
+
connectorId: entry.connectorId,
|
|
6295
|
+
hydratedStateChanged: entry.hydratedStateChanged
|
|
6296
|
+
};
|
|
6236
6297
|
},
|
|
6237
6298
|
waitForFlowConnector: (timeoutMs, isSatisfied) => flowConnectorReadiness.wait(timeoutMs, isSatisfied),
|
|
6238
6299
|
connectorWaitMs: flowMutateConnectorWaitMs,
|
|
@@ -6702,5 +6763,5 @@ function touchSession(state) {
|
|
|
6702
6763
|
}
|
|
6703
6764
|
|
|
6704
6765
|
export { CLAUDE_CODE_CREDENTIALS_KEY, COMPILE_MANIFEST_FILENAME, CapabilityRegistry, DEFAULT_CAPABILITY_CALL_TIMEOUT_MS, DEFAULT_COALESCE_MS, DEFAULT_FLOW_MUTATE_CONNECTOR_WAIT_MS, MOUNT_LIST_MAX_DEPTH, MOUNT_LIST_MAX_ENTRIES, MOUNT_READ_DEADLINE_FACTOR, MOUNT_TREE_OP_DEADLINE_FACTOR, MarkdownStreamer, PreInitRingSink, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, buildStoreSnapshotReplay, builtinCapabilities, capabilityLogInstance, clearPreInitRingSink, clearSession, compileComposition, computeCapabilitySignature, connectorRefreshKind, createAgentSession, createFlowConnectorReadiness, createSessionStimulusBus, defineCapability, deleteSession, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureGitConfigInclude, executeConnectorMutate, extractClaudeAiOauthExpiresAt, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, hasNonTerminalFlow, hostOpResumeStimulus, installPreInitRingSink, isTerminalFlowStatus, listSessions, loadAgentManifest, loadCompileManifest, loadCompileManifestFromDir, loadSession, loadSessionById, mcpAuthSecretKey, newSession, pickRepointedManager, planFlowMutate, reconcilePendingDecisions, registerActiveFlow, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, resetRunnerLogStore, resolveAgentComposition, resolveAgentMixins, resolveBinding, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveFlowMutateConnectorWaitMs, resolveMixin, runAgentChat, saveSession, setCurrentSession, setUpFlowConnector, startAgentServer, stimulusFromMetas, touchSession, validateInputResponse, writeClaudeCodeCredentialsFile };
|
|
6705
|
-
//# sourceMappingURL=chunk-
|
|
6706
|
-
//# sourceMappingURL=chunk-
|
|
6766
|
+
//# sourceMappingURL=chunk-2QVPCZTL.js.map
|
|
6767
|
+
//# sourceMappingURL=chunk-2QVPCZTL.js.map
|