@ai-setting/roy-agent-core 1.7.53 → 1.7.56
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/config/index.js +7 -7
- package/dist/env/agent/agent-component.d.ts +30 -0
- package/dist/env/agent/index.js +13 -12
- package/dist/env/commands/index.js +7 -7
- package/dist/env/context/index.js +3 -3
- package/dist/env/debug/index.js +7 -7
- package/dist/env/environment.d.ts +7 -0
- package/dist/env/error-reply.d.ts +184 -0
- package/dist/env/event-source/event-source-handlers.d.ts +9 -23
- package/dist/env/event-source/index.js +17 -17
- package/dist/env/hook/index.js +5 -5
- package/dist/env/index.js +41 -40
- package/dist/env/llm/adapter-ai-sdk.d.ts +6 -0
- package/dist/env/llm/adapter-pi-ai.d.ts +152 -2
- package/dist/env/llm/adapter.d.ts +21 -1
- package/dist/env/llm/index.js +10 -10
- package/dist/env/llm/invoke.d.ts +74 -2
- package/dist/env/llm/llm.d.ts +38 -0
- package/dist/env/llm/outbound-defense.d.ts +140 -0
- package/dist/env/llm/reasoning-defense.d.ts +104 -0
- package/dist/env/llm/types.d.ts +26 -0
- package/dist/env/log-trace/decorator.d.ts +46 -3
- package/dist/env/log-trace/index.d.ts +1 -0
- package/dist/env/log-trace/index.js +33 -7
- package/dist/env/log-trace/trace-filters.d.ts +127 -0
- package/dist/env/mcp/index.js +7 -7
- package/dist/env/memory/index.js +7 -7
- package/dist/env/plugin/index.js +7 -7
- package/dist/env/prompt/index.js +8 -8
- package/dist/env/prompt/prompts-index.d.ts +1 -1
- package/dist/env/session/index.js +11 -10
- package/dist/env/session/session-component.d.ts +4 -0
- package/dist/env/session/storage/index.js +5 -3
- package/dist/env/skill/index.js +7 -7
- package/dist/env/task/backend/index.js +0 -2
- package/dist/env/task/backend/types.d.ts +0 -11
- package/dist/env/task/delegate/index.js +8 -8
- package/dist/env/task/index.js +13 -13
- package/dist/env/task/plugins/card-chat-routing.d.ts +42 -89
- package/dist/env/task/plugins/index.js +10 -10
- package/dist/env/task/plugins/lark-card-patch-notifier.d.ts +0 -51
- package/dist/env/task/plugins/lark-cli-task-notify-plugin.d.ts +14 -31
- package/dist/env/task/plugins/per-task-group-chat-plugin.d.ts +4 -4
- package/dist/env/task/storage/index.js +2 -2
- package/dist/env/task/tools/index.js +3 -3
- package/dist/env/tool/built-in/index.js +3 -3
- package/dist/env/tool/index.js +9 -9
- package/dist/env/workflow/engine/engine.d.ts +65 -0
- package/dist/env/workflow/engine/index.js +12 -12
- package/dist/env/workflow/hooks/index.js +7 -7
- package/dist/env/workflow/index.js +23 -22
- package/dist/env/workflow/nodes/index.js +2 -2
- package/dist/env/workflow/nodes/tool-node.d.ts +6 -0
- package/dist/env/workflow/plugins/index.js +8 -8
- package/dist/env/workflow/service/index.js +2 -2
- package/dist/env/workflow/storage/index.js +3 -3
- package/dist/env/workflow/tools/index.js +15 -14
- package/dist/env/workflow/tools/workflow-validate-tool.d.ts +11 -2
- package/dist/env/workflow/types/run.d.ts +19 -0
- package/dist/env/workflow/utils/agent-session-metadata.d.ts +13 -0
- package/dist/env/workflow/utils/index.js +5 -5
- package/dist/env/workflow/utils/redact-command-secrets.d.ts +70 -0
- package/dist/env/workflow/utils/shell-dialect-lint.d.ts +75 -0
- package/dist/env/workflow/utils/validate-workflow-definition.d.ts +22 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +82 -56
- package/dist/shared/@ai-setting/{roy-agent-core-k25gv86p.js → roy-agent-core-0b3fdnn3.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-vvxb9522.js → roy-agent-core-0bmk44ye.js} +71 -10
- package/dist/shared/@ai-setting/{roy-agent-core-k8b440n3.js → roy-agent-core-16t0zfbk.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-4z3rq5gw.js → roy-agent-core-1pnfkspm.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-na73mym1.js → roy-agent-core-202v00x4.js} +213 -2
- package/dist/shared/@ai-setting/{roy-agent-core-ph5qbqcx.js → roy-agent-core-2044fbsd.js} +471 -134
- package/dist/shared/@ai-setting/{roy-agent-core-fs36xgcs.js → roy-agent-core-3dkzqqsd.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-qm9jda8p.js → roy-agent-core-3kz6934b.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-tjg71zqp.js → roy-agent-core-3mc6vmvj.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-tdbv7ff4.js → roy-agent-core-40xzbjtm.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-athdr2m0.js → roy-agent-core-4zy2v3br.js} +10 -2
- package/dist/shared/@ai-setting/{roy-agent-core-t37wbysj.js → roy-agent-core-5gw6w424.js} +4 -4
- package/dist/shared/@ai-setting/{roy-agent-core-978b6wfx.js → roy-agent-core-5psjwd08.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-7evvpfwc.js → roy-agent-core-5rxs0ra3.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-gdsqp6j8.js → roy-agent-core-6masakz4.js} +45 -0
- package/dist/shared/@ai-setting/{roy-agent-core-stnddvx9.js → roy-agent-core-6qgq7h1g.js} +4 -4
- package/dist/shared/@ai-setting/{roy-agent-core-6167phd4.js → roy-agent-core-833t16n1.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-2k4xffaa.js → roy-agent-core-8cgtwytv.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-rx16h2m1.js → roy-agent-core-97eyghsp.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-fvs48d38.js → roy-agent-core-98aa9r0x.js} +12 -7
- package/dist/shared/@ai-setting/{roy-agent-core-3tv1q6f2.js → roy-agent-core-9nv586rw.js} +57 -19
- package/dist/shared/@ai-setting/roy-agent-core-b599jgyd.js +578 -0
- package/dist/shared/@ai-setting/{roy-agent-core-yd21n6c7.js → roy-agent-core-bwzy00t2.js} +12 -5
- package/dist/shared/@ai-setting/{roy-agent-core-dwx9hjwx.js → roy-agent-core-c6at31ra.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-1cv9j4dg.js → roy-agent-core-d14h726p.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-4sx6sdb2.js → roy-agent-core-d4jpn06f.js} +22 -9
- package/dist/shared/@ai-setting/{roy-agent-core-39xejr39.js → roy-agent-core-e0wbq0qq.js} +7 -7
- package/dist/shared/@ai-setting/{roy-agent-core-vrsxhw9e.js → roy-agent-core-e677am8e.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-hch2geta.js → roy-agent-core-ezsyyjxw.js} +21 -190
- package/dist/shared/@ai-setting/{roy-agent-core-ne2t1pay.js → roy-agent-core-f8sp1txg.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-ak4dc3kg.js → roy-agent-core-gn8f4rhs.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-qcspfszy.js → roy-agent-core-gngjkw3b.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-9jzysq50.js → roy-agent-core-heft3j4c.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-5apmk4qw.js → roy-agent-core-jszgaevt.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-nde5gzta.js → roy-agent-core-m8n0dffe.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-x8n1r7h4.js → roy-agent-core-n3b7ztms.js} +189 -8
- package/dist/shared/@ai-setting/{roy-agent-core-4vpk40ss.js → roy-agent-core-nhk0dsxr.js} +13 -13
- package/dist/shared/@ai-setting/{roy-agent-core-j8e92gj8.js → roy-agent-core-nntphgww.js} +1 -60
- package/dist/shared/@ai-setting/{roy-agent-core-8s9jd2qy.js → roy-agent-core-nra8vfrs.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-pk1b3kvf.js → roy-agent-core-ns3pbyz4.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-7g03zkkb.js → roy-agent-core-pemxr5n4.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-skzjs973.js → roy-agent-core-pjxa78mp.js} +5 -5
- package/dist/shared/@ai-setting/{roy-agent-core-p8ak03s0.js → roy-agent-core-q7zksbw0.js} +117 -315
- package/dist/shared/@ai-setting/{roy-agent-core-zd3ddm4k.js → roy-agent-core-qjjf4tjb.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-qamktze3.js → roy-agent-core-qyqnmz8c.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-9csa89jx.js → roy-agent-core-r9qe0ghe.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-h93v6p6y.js → roy-agent-core-tc7gw38m.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-35s1w7tc.js → roy-agent-core-v2188rnk.js} +157 -85
- package/dist/shared/@ai-setting/{roy-agent-core-p2r27era.js → roy-agent-core-vmg30n5x.js} +8 -8
- package/dist/shared/@ai-setting/{roy-agent-core-rnwr39b0.js → roy-agent-core-w7hnjhvx.js} +5 -3
- package/dist/shared/@ai-setting/{roy-agent-core-dv714bqh.js → roy-agent-core-wafk25ff.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-brwzs8wf.js → roy-agent-core-xcq04fq0.js} +5 -5
- package/dist/shared/@ai-setting/{roy-agent-core-2gay3sjt.js → roy-agent-core-yg247mk4.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-zy3hqfwg.js → roy-agent-core-yv9x4wmg.js} +631 -35
- package/dist/shared/@ai-setting/{roy-agent-core-yhsssn86.js → roy-agent-core-zmeka63k.js} +1 -1
- package/dist/test-utils/child-process-mock.d.ts +73 -0
- package/package.json +2 -2
- package/dist/shared/@ai-setting/roy-agent-core-dsevjbck.js +0 -245
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
AgentComponentAdapter,
|
|
9
9
|
init_agent_component_adapter
|
|
10
|
-
} from "./roy-agent-core-
|
|
10
|
+
} from "./roy-agent-core-833t16n1.js";
|
|
11
11
|
import {
|
|
12
12
|
PythonCallNode,
|
|
13
13
|
SkillNode,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
init_skill_node,
|
|
18
18
|
init_tool_node,
|
|
19
19
|
init_workflow_node
|
|
20
|
-
} from "./roy-agent-core-
|
|
20
|
+
} from "./roy-agent-core-n3b7ztms.js";
|
|
21
21
|
import {
|
|
22
22
|
WORKFLOW_SUBMIT_OUTPUT_TOOL_NAME,
|
|
23
23
|
init_json_schema_to_zod,
|
|
@@ -28,20 +28,20 @@ import {
|
|
|
28
28
|
} from "./roy-agent-core-1db4vpc6.js";
|
|
29
29
|
import {
|
|
30
30
|
init_hooks
|
|
31
|
-
} from "./roy-agent-core-
|
|
31
|
+
} from "./roy-agent-core-3dkzqqsd.js";
|
|
32
32
|
import {
|
|
33
33
|
WorkflowHookPoints,
|
|
34
34
|
emitWorkflowNodeHook,
|
|
35
35
|
emitWorkflowRunHook
|
|
36
|
-
} from "./roy-agent-core-
|
|
36
|
+
} from "./roy-agent-core-r9qe0ghe.js";
|
|
37
37
|
import {
|
|
38
38
|
TemplateResolver,
|
|
39
39
|
init_template_resolver
|
|
40
|
-
} from "./roy-agent-core-
|
|
40
|
+
} from "./roy-agent-core-3mc6vmvj.js";
|
|
41
41
|
import {
|
|
42
42
|
DAGManager,
|
|
43
43
|
init_dag_manager
|
|
44
|
-
} from "./roy-agent-core-
|
|
44
|
+
} from "./roy-agent-core-nra8vfrs.js";
|
|
45
45
|
import {
|
|
46
46
|
WorkflowError,
|
|
47
47
|
createWorkflowEvent,
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
import {
|
|
58
58
|
TracedAs,
|
|
59
59
|
init_decorator
|
|
60
|
-
} from "./roy-agent-core-
|
|
60
|
+
} from "./roy-agent-core-b599jgyd.js";
|
|
61
61
|
import {
|
|
62
62
|
createLogger,
|
|
63
63
|
init_logger
|
|
@@ -801,13 +801,13 @@ var init_executor = __esm(() => {
|
|
|
801
801
|
}
|
|
802
802
|
};
|
|
803
803
|
__legacyDecorateClassTS([
|
|
804
|
-
TracedAs("workflow.executor.executeNode", { recordParams: true, recordResult:
|
|
804
|
+
TracedAs("workflow.executor.executeNode", { recordParams: true, recordResult: false })
|
|
805
805
|
], Executor.prototype, "executeNode", null);
|
|
806
806
|
__legacyDecorateClassTS([
|
|
807
|
-
TracedAs("workflow.executor.executeWithTimeout", { recordParams: true, recordResult:
|
|
807
|
+
TracedAs("workflow.executor.executeWithTimeout", { recordParams: true, recordResult: false })
|
|
808
808
|
], Executor.prototype, "executeWithTimeout", null);
|
|
809
809
|
__legacyDecorateClassTS([
|
|
810
|
-
TracedAs("workflow.executor.executeWithRetry", { recordParams: true, recordResult:
|
|
810
|
+
TracedAs("workflow.executor.executeWithRetry", { recordParams: true, recordResult: false })
|
|
811
811
|
], Executor.prototype, "executeWithRetry", null);
|
|
812
812
|
__legacyDecorateClassTS([
|
|
813
813
|
TracedAs("workflow.executor.cancelNode", { recordParams: true, recordResult: false })
|
|
@@ -1254,6 +1254,10 @@ ${promptInjection}`;
|
|
|
1254
1254
|
workflowName: context.workflowName
|
|
1255
1255
|
}
|
|
1256
1256
|
});
|
|
1257
|
+
if (typeof context.registerAgentSubSession === "function") {
|
|
1258
|
+
await context.registerAgentSubSession(this.definition.id, agentSessionId);
|
|
1259
|
+
return agentSessionId;
|
|
1260
|
+
}
|
|
1257
1261
|
const workflowSession = await sessionComponent.get(context.sessionId);
|
|
1258
1262
|
if (workflowSession) {
|
|
1259
1263
|
const metadata = workflowSession.metadata || {};
|
|
@@ -1285,7 +1289,7 @@ ${promptInjection}`;
|
|
|
1285
1289
|
}
|
|
1286
1290
|
};
|
|
1287
1291
|
__legacyDecorateClassTS([
|
|
1288
|
-
TracedAs("workflow.agent.execute")
|
|
1292
|
+
TracedAs("workflow.agent.execute", { recordResult: false })
|
|
1289
1293
|
], AgentNode.prototype, "execute", null);
|
|
1290
1294
|
__legacyDecorateClassTS([
|
|
1291
1295
|
TracedAs("workflow.agent.applyPromptInjection", { recordParams: true, recordResult: false })
|
|
@@ -1437,6 +1441,20 @@ function updateAgentSessionStatus(agentSessions, nodeId, status) {
|
|
|
1437
1441
|
function markAgentSessionCompleted(agentSessions, nodeId) {
|
|
1438
1442
|
return updateAgentSessionStatus(agentSessions, nodeId, "completed");
|
|
1439
1443
|
}
|
|
1444
|
+
function upsertAgentSession(agentSessions, nodeId, agentSessionId) {
|
|
1445
|
+
const next = {
|
|
1446
|
+
nodeId,
|
|
1447
|
+
sessionId: agentSessionId,
|
|
1448
|
+
status: "active",
|
|
1449
|
+
createdAt: Date.now()
|
|
1450
|
+
};
|
|
1451
|
+
const list = agentSessions ?? [];
|
|
1452
|
+
const existingIndex = list.findIndex((ref) => ref.nodeId === nodeId);
|
|
1453
|
+
if (existingIndex >= 0) {
|
|
1454
|
+
return list.map((ref, index) => index === existingIndex ? { ...next } : ref);
|
|
1455
|
+
}
|
|
1456
|
+
return [...list, next];
|
|
1457
|
+
}
|
|
1440
1458
|
function markAgentSessionFailed(agentSessions, nodeId) {
|
|
1441
1459
|
return updateAgentSessionStatus(agentSessions, nodeId, "failed");
|
|
1442
1460
|
}
|
|
@@ -1903,7 +1921,9 @@ var init_engine = __esm(() => {
|
|
|
1903
1921
|
agentSessions: new Map,
|
|
1904
1922
|
edges: dagManager.buildEdges(definition.edges || []),
|
|
1905
1923
|
loopIterationCount: 0,
|
|
1906
|
-
loopGuardCounters: new Map
|
|
1924
|
+
loopGuardCounters: new Map,
|
|
1925
|
+
inFlight: new Map,
|
|
1926
|
+
sessionMetadataQueue: Promise.resolve()
|
|
1907
1927
|
};
|
|
1908
1928
|
this.setupEventHandlers(sessionState);
|
|
1909
1929
|
return sessionState;
|
|
@@ -1995,10 +2015,10 @@ var init_engine = __esm(() => {
|
|
|
1995
2015
|
sessionState.abortController.abort();
|
|
1996
2016
|
sessionState.executor.cancelAll();
|
|
1997
2017
|
if (this.sessionComponent) {
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
});
|
|
2018
|
+
await this.updateSessionMetadata(sessionState, (metadata) => ({
|
|
2019
|
+
...metadata,
|
|
2020
|
+
status: "paused"
|
|
2021
|
+
}));
|
|
2002
2022
|
}
|
|
2003
2023
|
await sessionState.eventBus.publish(createWorkflowEvent("workflow.paused", this.getRunIdFromSessionId(sessionId), {}));
|
|
2004
2024
|
logger3.info(`[WorkflowEngine] Workflow paused: ${sessionId}`);
|
|
@@ -2036,15 +2056,11 @@ var init_engine = __esm(() => {
|
|
|
2036
2056
|
}
|
|
2037
2057
|
sessionState.executor.cancelAll();
|
|
2038
2058
|
if (this.sessionComponent) {
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
status: "stopped",
|
|
2045
|
-
agentSessions: updatedAgentSessions
|
|
2046
|
-
}
|
|
2047
|
-
});
|
|
2059
|
+
await this.updateSessionMetadata(sessionState, (metadata) => ({
|
|
2060
|
+
...metadata,
|
|
2061
|
+
status: "stopped",
|
|
2062
|
+
agentSessions: markAllAgentSessionsStopped(metadata.agentSessions)
|
|
2063
|
+
}));
|
|
2048
2064
|
await this.propagateStopToChildSessions(sessionId, stopReason);
|
|
2049
2065
|
}
|
|
2050
2066
|
await sessionState.eventBus.publish(createWorkflowEvent("workflow.stopped", this.getRunIdFromSessionId(sessionId), {
|
|
@@ -2151,28 +2167,18 @@ var init_engine = __esm(() => {
|
|
|
2151
2167
|
sessionState.workflowHistory.push(...messages);
|
|
2152
2168
|
}
|
|
2153
2169
|
}
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
...metadata,
|
|
2159
|
-
agentSessions: markAgentSessionCompleted(metadata.agentSessions, event.node_id)
|
|
2160
|
-
}
|
|
2161
|
-
});
|
|
2162
|
-
}
|
|
2170
|
+
await this.updateSessionMetadata(sessionState, (metadata) => ({
|
|
2171
|
+
...metadata,
|
|
2172
|
+
agentSessions: markAgentSessionCompleted(metadata.agentSessions, event.node_id)
|
|
2173
|
+
}));
|
|
2163
2174
|
});
|
|
2164
2175
|
eventBus.on("node.failed", async (event) => {
|
|
2165
2176
|
if (event.type !== "node.failed")
|
|
2166
2177
|
return;
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
...metadata,
|
|
2172
|
-
agentSessions: markAgentSessionFailed(metadata.agentSessions, event.node_id)
|
|
2173
|
-
}
|
|
2174
|
-
});
|
|
2175
|
-
}
|
|
2178
|
+
await this.updateSessionMetadata(sessionState, (metadata) => ({
|
|
2179
|
+
...metadata,
|
|
2180
|
+
agentSessions: markAgentSessionFailed(metadata.agentSessions, event.node_id)
|
|
2181
|
+
}));
|
|
2176
2182
|
scheduler.markFailed(event.node_id);
|
|
2177
2183
|
await this.failWorkflow(sessionState, new Error(event.error.message));
|
|
2178
2184
|
});
|
|
@@ -2183,10 +2189,9 @@ var init_engine = __esm(() => {
|
|
|
2183
2189
|
sessionState.status = "paused";
|
|
2184
2190
|
sessionState.abortController.abort();
|
|
2185
2191
|
if (this.sessionComponent) {
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
metadata: {
|
|
2192
|
+
await this.updateSessionMetadata(sessionState, (metadata) => {
|
|
2193
|
+
const agentSessions = updateAgentSessionStatus(metadata.agentSessions, event.node_id, "paused");
|
|
2194
|
+
return {
|
|
2190
2195
|
...metadata,
|
|
2191
2196
|
status: "paused",
|
|
2192
2197
|
pendingNodeId: event.node_id,
|
|
@@ -2194,7 +2199,7 @@ var init_engine = __esm(() => {
|
|
|
2194
2199
|
pendingAskUserQuery: event.query,
|
|
2195
2200
|
pendingAskUserAgentSessionId: event.agent_session_id,
|
|
2196
2201
|
agentSessions
|
|
2197
|
-
}
|
|
2202
|
+
};
|
|
2198
2203
|
});
|
|
2199
2204
|
}
|
|
2200
2205
|
await eventBus.publish(createWorkflowEvent("workflow.paused", runId, {
|
|
@@ -2237,14 +2242,16 @@ var init_engine = __esm(() => {
|
|
|
2237
2242
|
if (readyNodes.length === 0 || !canStart) {
|
|
2238
2243
|
return false;
|
|
2239
2244
|
}
|
|
2245
|
+
const parallelLimit = sessionState.config.parallelLimit ?? Infinity;
|
|
2240
2246
|
let scheduled = 0;
|
|
2241
2247
|
for (const nodeId of readyNodes) {
|
|
2242
2248
|
if (!scheduler.canStartMore())
|
|
2243
2249
|
break;
|
|
2244
|
-
if (scheduled >=
|
|
2250
|
+
if (scheduled >= parallelLimit)
|
|
2245
2251
|
break;
|
|
2246
|
-
|
|
2247
|
-
|
|
2252
|
+
if (this.dispatchNode(sessionState, nodeId, sessionState.config.workflowInput)) {
|
|
2253
|
+
scheduled++;
|
|
2254
|
+
}
|
|
2248
2255
|
}
|
|
2249
2256
|
return true;
|
|
2250
2257
|
};
|
|
@@ -2258,13 +2265,12 @@ var init_engine = __esm(() => {
|
|
|
2258
2265
|
}
|
|
2259
2266
|
while (sessionState.status === "running" && !abortController.signal.aborted && !sessionState.cancellationScope?.signal.aborted) {
|
|
2260
2267
|
const state = scheduler.getState();
|
|
2261
|
-
if (state.pending.length === 0 && state.running.length === 0) {
|
|
2268
|
+
if (state.pending.length === 0 && state.running.length === 0 && sessionState.inFlight.size === 0) {
|
|
2262
2269
|
break;
|
|
2263
2270
|
}
|
|
2264
|
-
if (sessionState.config.loopEnabled && sessionState.loopIterationCount
|
|
2271
|
+
if (sessionState.config.loopEnabled && sessionState.loopIterationCount > maxIterations) {
|
|
2265
2272
|
logger3.error(`[WorkflowEngine] Max loop iterations ${maxIterations} exceeded`);
|
|
2266
|
-
|
|
2267
|
-
await this.stop(sessionState.sessionId, "Max iterations exceeded");
|
|
2273
|
+
await this.failWorkflow(sessionState, new WorkflowError(`Workflow exceeded maximum loop iterations: ${maxIterations}`));
|
|
2268
2274
|
return;
|
|
2269
2275
|
}
|
|
2270
2276
|
try {
|
|
@@ -2274,13 +2280,42 @@ var init_engine = __esm(() => {
|
|
|
2274
2280
|
}
|
|
2275
2281
|
await scheduleAvailableNodes();
|
|
2276
2282
|
}
|
|
2283
|
+
while (sessionState.inFlight.size > 0) {
|
|
2284
|
+
const pending = Array.from(sessionState.inFlight.values());
|
|
2285
|
+
await Promise.allSettled(pending);
|
|
2286
|
+
for (const [nodeId, promise] of Array.from(sessionState.inFlight.entries())) {
|
|
2287
|
+
if (pending.includes(promise)) {
|
|
2288
|
+
sessionState.inFlight.delete(nodeId);
|
|
2289
|
+
}
|
|
2290
|
+
}
|
|
2291
|
+
}
|
|
2292
|
+
}
|
|
2293
|
+
dispatchNode(sessionState, nodeId, input) {
|
|
2294
|
+
const { scheduler } = sessionState;
|
|
2295
|
+
if (scheduler.isRunning(nodeId) || scheduler.isCompleted(nodeId) || scheduler.isFailed(nodeId)) {
|
|
2296
|
+
return false;
|
|
2297
|
+
}
|
|
2298
|
+
const promise = this.startNode(sessionState, nodeId, input).catch((error) => {
|
|
2299
|
+
logger3.error(`[WorkflowEngine] Unhandled dispatch error for node "${nodeId}":`, error);
|
|
2300
|
+
}).finally(() => {
|
|
2301
|
+
if (sessionState.inFlight.get(nodeId) === promise) {
|
|
2302
|
+
sessionState.inFlight.delete(nodeId);
|
|
2303
|
+
}
|
|
2304
|
+
});
|
|
2305
|
+
sessionState.inFlight.set(nodeId, promise);
|
|
2306
|
+
return true;
|
|
2277
2307
|
}
|
|
2278
2308
|
waitForNextNodeEvent(sessionState, signal) {
|
|
2279
2309
|
return new Promise((resolve) => {
|
|
2280
2310
|
const state = sessionState.scheduler.getState();
|
|
2281
2311
|
const hasRunningNodes = state.running.length > 0;
|
|
2312
|
+
const hasInFlight = sessionState.inFlight.size > 0;
|
|
2313
|
+
const limit = sessionState.config.parallelLimit ?? Infinity;
|
|
2314
|
+
const atCapacity = sessionState.inFlight.size >= limit;
|
|
2315
|
+
const mayHaveDeferredWork = atCapacity && state.pending.length + state.ready.length > 0;
|
|
2316
|
+
const pureEventDriven = hasRunningNodes && hasInFlight && !mayHaveDeferredWork;
|
|
2282
2317
|
let timeoutId;
|
|
2283
|
-
if (!
|
|
2318
|
+
if (!pureEventDriven) {
|
|
2284
2319
|
timeoutId = setTimeout(() => {
|
|
2285
2320
|
cleanup();
|
|
2286
2321
|
resolve();
|
|
@@ -2291,6 +2326,7 @@ var init_engine = __esm(() => {
|
|
|
2291
2326
|
clearTimeout(timeoutId);
|
|
2292
2327
|
sessionState.eventBus.off("node.completed", onCompleted);
|
|
2293
2328
|
sessionState.eventBus.off("node.failed", onFailed);
|
|
2329
|
+
sessionState.eventBus.off("node.scheduled", onScheduled);
|
|
2294
2330
|
};
|
|
2295
2331
|
const onCompleted = (event) => {
|
|
2296
2332
|
if (event.type === "node.completed") {
|
|
@@ -2304,8 +2340,15 @@ var init_engine = __esm(() => {
|
|
|
2304
2340
|
resolve();
|
|
2305
2341
|
}
|
|
2306
2342
|
};
|
|
2343
|
+
const onScheduled = (event) => {
|
|
2344
|
+
if (event.type === "node.scheduled") {
|
|
2345
|
+
cleanup();
|
|
2346
|
+
resolve();
|
|
2347
|
+
}
|
|
2348
|
+
};
|
|
2307
2349
|
sessionState.eventBus.on("node.completed", onCompleted);
|
|
2308
2350
|
sessionState.eventBus.on("node.failed", onFailed);
|
|
2351
|
+
sessionState.eventBus.on("node.scheduled", onScheduled);
|
|
2309
2352
|
if (signal.aborted) {
|
|
2310
2353
|
cleanup();
|
|
2311
2354
|
resolve();
|
|
@@ -2541,6 +2584,9 @@ var init_engine = __esm(() => {
|
|
|
2541
2584
|
logger3.debug(`[WorkflowEngine] Processing edges after "${completedNodeId}" completed. edges=${JSON.stringify(sessionState.edges)}`);
|
|
2542
2585
|
const edgeResult = scheduler.processEdgesAfterCompletion(completedNodeId, sessionState.edges, templateResolver, sessionState.config.loopEnabled);
|
|
2543
2586
|
logger3.debug(`[WorkflowEngine] Edge processing result: ${JSON.stringify(edgeResult)}`);
|
|
2587
|
+
for (const reEntryId of edgeResult.reEntries) {
|
|
2588
|
+
scheduler.markStarted(reEntryId);
|
|
2589
|
+
}
|
|
2544
2590
|
const loopGuardSnapshots = new Map;
|
|
2545
2591
|
for (const reEntryId of edgeResult.reEntries) {
|
|
2546
2592
|
const guard = sessionState.dagManager.getLoopGuard(reEntryId);
|
|
@@ -2609,6 +2655,8 @@ var init_engine = __esm(() => {
|
|
|
2609
2655
|
}
|
|
2610
2656
|
}
|
|
2611
2657
|
const workflowInput = sessionState.config.workflowInput || {};
|
|
2658
|
+
const parallelLimit = sessionState.config.parallelLimit ?? Infinity;
|
|
2659
|
+
const reEntries = new Set(edgeResult.reEntries);
|
|
2612
2660
|
for (const targetId of edgeResult.toStart) {
|
|
2613
2661
|
if (loopGuardTripped.has(targetId)) {
|
|
2614
2662
|
continue;
|
|
@@ -2617,8 +2665,14 @@ var init_engine = __esm(() => {
|
|
|
2617
2665
|
logger3.info(`[WorkflowEngine] Workflow terminated via __end__ edge from node "${completedNodeId}"`);
|
|
2618
2666
|
scheduler.markCompleted("__end__");
|
|
2619
2667
|
await this.completeWorkflow(sessionState);
|
|
2620
|
-
} else {
|
|
2668
|
+
} else if (reEntries.has(targetId)) {
|
|
2621
2669
|
await this.startNode(sessionState, targetId, workflowInput);
|
|
2670
|
+
} else {
|
|
2671
|
+
if (sessionState.inFlight.size >= parallelLimit) {
|
|
2672
|
+
logger3.debug(`[WorkflowEngine] Deferring edge-triggered node "${targetId}" — in-flight ${sessionState.inFlight.size} >= parallel_limit ${parallelLimit}`);
|
|
2673
|
+
continue;
|
|
2674
|
+
}
|
|
2675
|
+
this.dispatchNode(sessionState, targetId, workflowInput);
|
|
2622
2676
|
}
|
|
2623
2677
|
}
|
|
2624
2678
|
}
|
|
@@ -2668,6 +2722,15 @@ var init_engine = __esm(() => {
|
|
|
2668
2722
|
attachAgentSessionToLastStart: async (targetNodeId, agentSessionId) => {
|
|
2669
2723
|
await sessionState.executor.attachAgentSessionToLastStart(sessionState.sessionId, targetNodeId, agentSessionId);
|
|
2670
2724
|
},
|
|
2725
|
+
registerAgentSubSession: async (targetNodeId, agentSessionId) => {
|
|
2726
|
+
await this.updateSessionMetadata(sessionState, (metadata) => {
|
|
2727
|
+
const existing = Array.isArray(metadata.agentSessions) ? metadata.agentSessions : [];
|
|
2728
|
+
return {
|
|
2729
|
+
...metadata,
|
|
2730
|
+
agentSessions: upsertAgentSession(existing, targetNodeId, agentSessionId)
|
|
2731
|
+
};
|
|
2732
|
+
});
|
|
2733
|
+
},
|
|
2671
2734
|
workflowInput,
|
|
2672
2735
|
templateResolver,
|
|
2673
2736
|
resolvedConfig: templateResolver.resolveValue(effectiveConfig),
|
|
@@ -2703,19 +2766,16 @@ var init_engine = __esm(() => {
|
|
|
2703
2766
|
allNodeOutputs[nodeId] = nodeOutput;
|
|
2704
2767
|
}
|
|
2705
2768
|
if (this.sessionComponent) {
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
agentSessions: markAllAgentSessionsCompleted(metadata.agentSessions)
|
|
2717
|
-
}
|
|
2718
|
-
});
|
|
2769
|
+
await this.updateSessionMetadata(sessionState, (metadata) => ({
|
|
2770
|
+
...metadata,
|
|
2771
|
+
status: "completed",
|
|
2772
|
+
completedAt: Date.now(),
|
|
2773
|
+
durationMs,
|
|
2774
|
+
output: allNodeOutputs,
|
|
2775
|
+
pendingNodeId: undefined,
|
|
2776
|
+
pauseReason: undefined,
|
|
2777
|
+
agentSessions: markAllAgentSessionsCompleted(metadata.agentSessions)
|
|
2778
|
+
}));
|
|
2719
2779
|
}
|
|
2720
2780
|
await sessionState.eventBus.publish(createWorkflowEvent("workflow.completed", runId, {
|
|
2721
2781
|
result: finalOutput,
|
|
@@ -2750,16 +2810,13 @@ var init_engine = __esm(() => {
|
|
|
2750
2810
|
const runId = this.getRunIdFromSessionId(sessionId);
|
|
2751
2811
|
sessionState.executor.cancelAll();
|
|
2752
2812
|
if (this.sessionComponent) {
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
agentSessions: markAllAgentSessionsFailed(metadata.agentSessions)
|
|
2761
|
-
}
|
|
2762
|
-
});
|
|
2813
|
+
await this.updateSessionMetadata(sessionState, (metadata) => ({
|
|
2814
|
+
...metadata,
|
|
2815
|
+
status: "failed",
|
|
2816
|
+
failedAt: Date.now(),
|
|
2817
|
+
durationMs,
|
|
2818
|
+
agentSessions: markAllAgentSessionsFailed(metadata.agentSessions)
|
|
2819
|
+
}));
|
|
2763
2820
|
}
|
|
2764
2821
|
await sessionState.eventBus.publish(createWorkflowEvent("workflow.failed", runId, {
|
|
2765
2822
|
error: { message: error.message, stack: error.stack },
|
|
@@ -2825,6 +2882,21 @@ var init_engine = __esm(() => {
|
|
|
2825
2882
|
const session = await this.sessionComponent.get(sessionId);
|
|
2826
2883
|
return session?.metadata || { type: "workflow", workflowId: "", workflowName: "", status: "running" };
|
|
2827
2884
|
}
|
|
2885
|
+
async updateSessionMetadata(sessionState, mutate) {
|
|
2886
|
+
if (!this.sessionComponent)
|
|
2887
|
+
return;
|
|
2888
|
+
const sessionId = sessionState.sessionId;
|
|
2889
|
+
const run = (sessionState.sessionMetadataQueue ?? Promise.resolve()).then(async () => {
|
|
2890
|
+
try {
|
|
2891
|
+
const metadata = await this.getSessionMetadata(sessionId);
|
|
2892
|
+
await this.sessionComponent.update(sessionId, { metadata: mutate(metadata) });
|
|
2893
|
+
} catch (error) {
|
|
2894
|
+
logger3.error(`[WorkflowEngine] Failed to update session metadata for ${sessionId}:`, error);
|
|
2895
|
+
}
|
|
2896
|
+
});
|
|
2897
|
+
sessionState.sessionMetadataQueue = run;
|
|
2898
|
+
await run;
|
|
2899
|
+
}
|
|
2828
2900
|
findDefinitionForWorkflow(workflowIdOrName) {
|
|
2829
2901
|
if (!this.workflowRepository) {
|
|
2830
2902
|
return null;
|
|
@@ -2842,16 +2914,16 @@ var init_engine = __esm(() => {
|
|
|
2842
2914
|
TracedAs("workflow.engine.createSession", { recordParams: true, recordResult: true, log: true })
|
|
2843
2915
|
], WorkflowEngine.prototype, "createSession", null);
|
|
2844
2916
|
__legacyDecorateClassTS([
|
|
2845
|
-
TracedAs("workflow.engine.run", { recordParams: true, recordResult:
|
|
2917
|
+
TracedAs("workflow.engine.run", { recordParams: true, recordResult: false, log: true })
|
|
2846
2918
|
], WorkflowEngine.prototype, "run", null);
|
|
2847
2919
|
__legacyDecorateClassTS([
|
|
2848
|
-
TracedAs("workflow.engine.initializeSessionState", { recordParams: true, recordResult:
|
|
2920
|
+
TracedAs("workflow.engine.initializeSessionState", { recordParams: true, recordResult: false })
|
|
2849
2921
|
], WorkflowEngine.prototype, "initializeSessionState", null);
|
|
2850
2922
|
__legacyDecorateClassTS([
|
|
2851
|
-
TracedAs("workflow.engine.runWithResume", { recordParams: true, recordResult:
|
|
2923
|
+
TracedAs("workflow.engine.runWithResume", { recordParams: true, recordResult: false })
|
|
2852
2924
|
], WorkflowEngine.prototype, "runWithResume", null);
|
|
2853
2925
|
__legacyDecorateClassTS([
|
|
2854
|
-
TracedAs("workflow.engine.runWorkflow", { recordParams: true, recordResult:
|
|
2926
|
+
TracedAs("workflow.engine.runWorkflow", { recordParams: true, recordResult: false, log: true })
|
|
2855
2927
|
], WorkflowEngine.prototype, "runWorkflow", null);
|
|
2856
2928
|
__legacyDecorateClassTS([
|
|
2857
2929
|
TracedAs("workflow.engine.pause", { recordParams: true, recordResult: true, log: true })
|
|
@@ -2901,7 +2973,7 @@ var init_engine = __esm(() => {
|
|
|
2901
2973
|
__legacyDecorateClassTS([
|
|
2902
2974
|
TracedAs("workflow.engine.waitForCompletion", {
|
|
2903
2975
|
recordParams: true,
|
|
2904
|
-
recordResult:
|
|
2976
|
+
recordResult: false
|
|
2905
2977
|
})
|
|
2906
2978
|
], WorkflowEngine.prototype, "waitForCompletion", null);
|
|
2907
2979
|
});
|
|
@@ -4,35 +4,35 @@ import {
|
|
|
4
4
|
} from "./roy-agent-core-tbrn9wdm.js";
|
|
5
5
|
import {
|
|
6
6
|
getSharedEventStore
|
|
7
|
-
} from "./roy-agent-core-
|
|
7
|
+
} from "./roy-agent-core-zmeka63k.js";
|
|
8
8
|
import {
|
|
9
9
|
TaskHookPoints
|
|
10
10
|
} from "./roy-agent-core-1pg0fepg.js";
|
|
11
11
|
import {
|
|
12
12
|
builtInPrompts
|
|
13
|
-
} from "./roy-agent-core-
|
|
13
|
+
} from "./roy-agent-core-6masakz4.js";
|
|
14
14
|
import {
|
|
15
15
|
DEFAULT_SUBAGENT_PROMPT
|
|
16
|
-
} from "./roy-agent-core-
|
|
16
|
+
} from "./roy-agent-core-97eyghsp.js";
|
|
17
17
|
import {
|
|
18
18
|
runWithBgTaskIdAsync
|
|
19
19
|
} from "./roy-agent-core-c1v263jn.js";
|
|
20
20
|
import {
|
|
21
21
|
globalHookManager,
|
|
22
22
|
init_global_hook_manager
|
|
23
|
-
} from "./roy-agent-core-
|
|
23
|
+
} from "./roy-agent-core-1pnfkspm.js";
|
|
24
24
|
import {
|
|
25
25
|
init_context
|
|
26
|
-
} from "./roy-agent-core-
|
|
26
|
+
} from "./roy-agent-core-16t0zfbk.js";
|
|
27
27
|
import {
|
|
28
28
|
getCurrentTaskId,
|
|
29
29
|
getEnvContext
|
|
30
|
-
} from "./roy-agent-core-
|
|
30
|
+
} from "./roy-agent-core-jszgaevt.js";
|
|
31
31
|
import {
|
|
32
32
|
TracedAs,
|
|
33
33
|
init_decorator,
|
|
34
34
|
wrapFunction
|
|
35
|
-
} from "./roy-agent-core-
|
|
35
|
+
} from "./roy-agent-core-b599jgyd.js";
|
|
36
36
|
import {
|
|
37
37
|
createLogger,
|
|
38
38
|
init_logger
|
|
@@ -1875,7 +1875,7 @@ __legacyDecorateClassTS([
|
|
|
1875
1875
|
TracedAs("task.background.stopProgressReporter", { recordParams: false, recordResult: true, log: true })
|
|
1876
1876
|
], BackgroundTaskManager.prototype, "stopProgressReporter", null);
|
|
1877
1877
|
__legacyDecorateClassTS([
|
|
1878
|
-
TracedAs("delegate.executeWithAbort", { recordParams: true, recordResult:
|
|
1878
|
+
TracedAs("delegate.executeWithAbort", { recordParams: true, recordResult: false, log: true })
|
|
1879
1879
|
], BackgroundTaskManager.prototype, "executeWithAbort", null);
|
|
1880
1880
|
__legacyDecorateClassTS([
|
|
1881
1881
|
TracedAs("task.background.stopAllForParent", {
|
|
@@ -3,10 +3,11 @@ import {
|
|
|
3
3
|
} from "./roy-agent-core-7hh0brvs.js";
|
|
4
4
|
import {
|
|
5
5
|
BaseComponent
|
|
6
|
-
} from "./roy-agent-core-
|
|
6
|
+
} from "./roy-agent-core-40xzbjtm.js";
|
|
7
7
|
import {
|
|
8
|
-
init_decorator
|
|
9
|
-
|
|
8
|
+
init_decorator,
|
|
9
|
+
init_trace_filters
|
|
10
|
+
} from "./roy-agent-core-b599jgyd.js";
|
|
10
11
|
import {
|
|
11
12
|
createLogger,
|
|
12
13
|
getTracerProvider,
|
|
@@ -417,5 +418,6 @@ function getTraceparentHeader() {
|
|
|
417
418
|
// src/env/log-trace/index.ts
|
|
418
419
|
init_logger();
|
|
419
420
|
init_decorator();
|
|
421
|
+
init_trace_filters();
|
|
420
422
|
|
|
421
423
|
export { getDefaultLogDir, getDefaultSpanDbPath, LogTraceConfigSchema, LogTraceComponent, injectToEnv, injectToEnvWithContext, injectToEnvFromCarrier, getTraceparentHeader };
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LarkCardPatchNotifier,
|
|
3
3
|
formatDurationMs
|
|
4
|
-
} from "./roy-agent-core-
|
|
4
|
+
} from "./roy-agent-core-nntphgww.js";
|
|
5
5
|
import {
|
|
6
6
|
WorkflowHookPoints,
|
|
7
7
|
init_workflow_hook_points
|
|
8
|
-
} from "./roy-agent-core-
|
|
8
|
+
} from "./roy-agent-core-r9qe0ghe.js";
|
|
9
9
|
import {
|
|
10
10
|
init_context
|
|
11
|
-
} from "./roy-agent-core-
|
|
11
|
+
} from "./roy-agent-core-16t0zfbk.js";
|
|
12
12
|
import {
|
|
13
13
|
getEnvContextOrEmpty
|
|
14
|
-
} from "./roy-agent-core-
|
|
14
|
+
} from "./roy-agent-core-jszgaevt.js";
|
|
15
15
|
import {
|
|
16
16
|
TracedAs,
|
|
17
17
|
init_decorator
|
|
18
|
-
} from "./roy-agent-core-
|
|
18
|
+
} from "./roy-agent-core-b599jgyd.js";
|
|
19
19
|
import {
|
|
20
20
|
createLogger,
|
|
21
21
|
init_logger
|