@bastani/atomic 0.9.35-alpha.1 → 0.9.35-alpha.3
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 +26 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +13 -0
- package/dist/builtin/workflows/builtin/{chunk-s7y3hw0n.js → chunk-3xffzzbg.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-0d0pd4fz.js → chunk-7fvrnzhb.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-119gt64q.js → chunk-8c3ae7tt.js} +8 -1
- package/dist/builtin/workflows/builtin/{chunk-y68758re.js → chunk-rhkg3d8e.js} +1 -1
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +510 -35
- package/dist/builtin/workflows/src/index.js +87 -29
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +7 -1
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +15 -15
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +4 -0
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +61 -1
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +3 -1
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +5 -3
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts +3 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +79 -9
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-summary.d.ts.map +1 -1
- package/dist/core/agent-session-summary.js +17 -2
- package/dist/core/agent-session-summary.js.map +1 -1
- package/dist/core/agent-session-tree.js +1 -1
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts +1 -0
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js +37 -23
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/compaction/session-summarization.d.ts +1 -0
- package/dist/core/compaction/session-summarization.d.ts.map +1 -1
- package/dist/core/compaction/session-summarization.js +7 -1
- package/dist/core/compaction/session-summarization.js.map +1 -1
- package/dist/core/extensions/agent-events.d.ts +15 -7
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +6 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +4 -0
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +8 -0
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +4 -3
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +8 -2
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +4 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/workflow-run-control.d.ts +12 -2
- package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
- package/dist/core/extensions/workflow-run-control.js.map +1 -1
- package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
- package/dist/core/package-manager-resource-patterns.js +4 -2
- package/dist/core/package-manager-resource-patterns.js.map +1 -1
- package/dist/core/session-manager-archive.d.ts +2 -0
- package/dist/core/session-manager-archive.d.ts.map +1 -1
- package/dist/core/session-manager-archive.js +41 -19
- package/dist/core/session-manager-archive.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +1 -0
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +8 -4
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-list.d.ts.map +1 -1
- package/dist/core/session-manager-list.js +4 -10
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +2 -1
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +3 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/workflow-summary-lifecycle.d.ts +4 -0
- package/dist/core/workflow-summary-lifecycle.d.ts.map +1 -0
- package/dist/core/workflow-summary-lifecycle.js +40 -0
- package/dist/core/workflow-summary-lifecycle.js.map +1 -0
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +20 -6
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/mcp/cli.d.ts.map +1 -1
- package/dist/extensions/mcp/cli.js +4 -7
- package/dist/extensions/mcp/cli.js.map +1 -1
- package/dist/extensions/mcp/client/client.d.ts.map +1 -1
- package/dist/extensions/mcp/client/client.js +5 -4
- package/dist/extensions/mcp/client/client.js.map +1 -1
- package/dist/extensions/mcp/client/index.d.ts +2 -2
- package/dist/extensions/mcp/client/index.d.ts.map +1 -1
- package/dist/extensions/mcp/client/index.js.map +1 -1
- package/dist/extensions/mcp/client/protocol/content.d.ts +4 -1
- package/dist/extensions/mcp/client/protocol/content.d.ts.map +1 -1
- package/dist/extensions/mcp/client/protocol/content.js.map +1 -1
- package/dist/extensions/mcp/client/transports/streamable-http.d.ts +2 -2
- package/dist/extensions/mcp/client/transports/streamable-http.d.ts.map +1 -1
- package/dist/extensions/mcp/client/transports/streamable-http.js +7 -5
- package/dist/extensions/mcp/client/transports/streamable-http.js.map +1 -1
- package/dist/extensions/mcp/client/transports/transport.d.ts +4 -1
- package/dist/extensions/mcp/client/transports/transport.d.ts.map +1 -1
- package/dist/extensions/mcp/client/transports/transport.js.map +1 -1
- package/dist/extensions/mcp/index.d.ts.map +1 -1
- package/dist/extensions/mcp/index.js +2 -4
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/runtime.d.ts +1 -8
- package/dist/extensions/mcp/runtime.d.ts.map +1 -1
- package/dist/extensions/mcp/runtime.js +2 -41
- package/dist/extensions/mcp/runtime.js.map +1 -1
- package/dist/extensions/mcp/tools.js +1 -1
- package/dist/extensions/mcp/tools.js.map +1 -1
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.js +2 -1
- package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +5 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +7 -2
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +13 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +19 -0
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +50 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/extensions/authoring.md +2 -0
- package/docs/extensions/events.md +9 -3
- package/docs/guides/non-interactive.md +2 -0
- package/docs/mcp-servers.md +2 -0
- package/docs/packages/reference.md +2 -0
- package/docs/rpc/protocol.md +15 -0
- package/docs/rpc.md +1 -0
- package/docs/sdk.md +9 -1
- package/docs/sessions.md +2 -2
- package/docs/workflows/operations.md +11 -3
- package/npm-shrinkwrap.json +32 -32
- package/package.json +3 -3
|
@@ -978,6 +978,7 @@ class InMemoryDurableBackend {
|
|
|
978
978
|
inputs: handle.inputs,
|
|
979
979
|
createdAt: handle.createdAt,
|
|
980
980
|
status: handle.status,
|
|
981
|
+
transitionClaimId: handle.transitionClaimId ?? existing?.handle.transitionClaimId,
|
|
981
982
|
...handle.invocationCwd !== undefined ? { invocationCwd: handle.invocationCwd } : existing?.handle.invocationCwd !== undefined ? { invocationCwd: existing.handle.invocationCwd } : {},
|
|
982
983
|
...handle.origin !== undefined ? { origin: handle.origin } : existing?.handle.origin !== undefined ? { origin: existing.handle.origin } : {},
|
|
983
984
|
modelOwner: authoritativeOwner ? handle.modelOwner : existing?.handle.modelOwner ?? handle.modelOwner,
|
|
@@ -991,7 +992,11 @@ class InMemoryDurableBackend {
|
|
|
991
992
|
completedCheckpoints,
|
|
992
993
|
pendingPrompts,
|
|
993
994
|
updatedAt,
|
|
994
|
-
...handle.label !== undefined ? { label: handle.label } : {},
|
|
995
|
+
...(handle.label ?? existing?.handle.label) !== undefined ? { label: handle.label ?? existing?.handle.label } : {},
|
|
996
|
+
...(handle.summary ?? existing?.handle.summary) !== undefined ? {
|
|
997
|
+
summary: handle.summary ?? existing?.handle.summary,
|
|
998
|
+
summarizedThrough: handle.summarizedThrough ?? existing?.handle.summarizedThrough
|
|
999
|
+
} : {},
|
|
995
1000
|
...handle.rootWorkflowId !== undefined ? { rootWorkflowId: handle.rootWorkflowId } : {},
|
|
996
1001
|
...handle.resumable !== undefined ? { resumable: handle.resumable } : {},
|
|
997
1002
|
...workflowFailureFields(hasWorkflowFailureMetadata(handle) ? handle : handle.status === "running" ? undefined : existing?.handle),
|
|
@@ -1061,6 +1066,13 @@ class InMemoryDurableBackend {
|
|
|
1061
1066
|
return this.stickyReceipts.get(workflowId)?.has(name) ?? false;
|
|
1062
1067
|
});
|
|
1063
1068
|
}
|
|
1069
|
+
async persistSummary(workflowId, summary, summarizedThrough) {
|
|
1070
|
+
const handle = this.getWorkflow(workflowId);
|
|
1071
|
+
if (!handle || (handle.summarizedThrough ?? -Infinity) > summarizedThrough)
|
|
1072
|
+
return false;
|
|
1073
|
+
this.registerWorkflow({ ...handle, summary, summarizedThrough });
|
|
1074
|
+
return true;
|
|
1075
|
+
}
|
|
1064
1076
|
async persistPendingStageMessages(workflowId, messages, logicalRunId = workflowId) {
|
|
1065
1077
|
const handle = this.getWorkflow(workflowId);
|
|
1066
1078
|
if (handle === undefined)
|
|
@@ -1187,6 +1199,7 @@ class InMemoryDurableBackend {
|
|
|
1187
1199
|
failureDisposition: undefined,
|
|
1188
1200
|
failedToolNodeId: undefined,
|
|
1189
1201
|
status,
|
|
1202
|
+
transitionClaimId: status === rec.handle.status ? rec.handle.transitionClaimId : crypto.randomUUID(),
|
|
1190
1203
|
updatedAt: Math.max(Date.now(), rec.handle.updatedAt + 1),
|
|
1191
1204
|
...pendingPrompts !== undefined ? { pendingPrompts } : {},
|
|
1192
1205
|
...resumable !== undefined ? { resumable } : {},
|
|
@@ -1275,6 +1288,7 @@ class InMemoryDurableBackend {
|
|
|
1275
1288
|
name: h.name,
|
|
1276
1289
|
inputs: h.inputs,
|
|
1277
1290
|
status: h.status,
|
|
1291
|
+
...h.transitionClaimId !== undefined ? { transitionClaimId: h.transitionClaimId } : {},
|
|
1278
1292
|
createdAt: h.createdAt,
|
|
1279
1293
|
completedCheckpoints: h.completedCheckpoints,
|
|
1280
1294
|
pendingPrompts: h.pendingPrompts,
|
|
@@ -1284,6 +1298,7 @@ class InMemoryDurableBackend {
|
|
|
1284
1298
|
...h.legacyRecoveryPending === true ? { legacyRecoveryPending: true } : {},
|
|
1285
1299
|
...h.sessionFile !== undefined ? { sessionFile: h.sessionFile } : {},
|
|
1286
1300
|
...h.label !== undefined ? { label: h.label } : {},
|
|
1301
|
+
...h.summary !== undefined ? { summary: h.summary, summarizedThrough: h.summarizedThrough } : {},
|
|
1287
1302
|
...h.rootWorkflowId !== undefined ? { rootWorkflowId: h.rootWorkflowId } : {},
|
|
1288
1303
|
...h.resumable !== undefined ? { resumable: h.resumable } : {},
|
|
1289
1304
|
...workflowFailureFields(h),
|
|
@@ -1362,6 +1377,7 @@ function toResumableEntry(handle) {
|
|
|
1362
1377
|
pendingPrompts: handle.pendingPrompts,
|
|
1363
1378
|
...handle.sessionFile !== undefined ? { sessionFile: handle.sessionFile } : {},
|
|
1364
1379
|
...handle.label !== undefined ? { label: handle.label } : {},
|
|
1380
|
+
...handle.summary !== undefined ? { summary: handle.summary, summarizedThrough: handle.summarizedThrough } : {},
|
|
1365
1381
|
...handle.rootWorkflowId !== undefined ? { rootWorkflowId: handle.rootWorkflowId } : {},
|
|
1366
1382
|
...handle.resumable !== undefined ? { resumable: handle.resumable } : {},
|
|
1367
1383
|
...workflowFailureFields(handle),
|
|
@@ -2825,6 +2841,8 @@ function encodeMetadata(metadata) {
|
|
|
2825
2841
|
...metadata.legacyRecoveryPending === true ? { legacyRecoveryPending: true } : {},
|
|
2826
2842
|
...metadata.sessionFile !== undefined ? { sessionFile: metadata.sessionFile } : {},
|
|
2827
2843
|
...metadata.label !== undefined ? { label: metadata.label } : {},
|
|
2844
|
+
...metadata.summary !== undefined ? { summary: metadata.summary } : {},
|
|
2845
|
+
...metadata.summarizedThrough !== undefined ? { summarizedThrough: metadata.summarizedThrough } : {},
|
|
2828
2846
|
...metadata.rootWorkflowId !== undefined ? { rootWorkflowId: metadata.rootWorkflowId } : {},
|
|
2829
2847
|
...metadata.resumable !== undefined ? { resumable: metadata.resumable } : {},
|
|
2830
2848
|
...metadata.exited !== undefined ? { exited: metadata.exited } : {},
|
|
@@ -2886,7 +2904,7 @@ function parseDurableWorkflowMetadata(value, workflowId) {
|
|
|
2886
2904
|
return;
|
|
2887
2905
|
const possibleStages = coercePossibleStages(serialized.possibleStages);
|
|
2888
2906
|
const metadata = value;
|
|
2889
|
-
if (metadata.workflowId !== workflowId || typeof metadata.workflowId !== "string" || typeof metadata.name !== "string" || typeof metadata.inputs !== "object" || metadata.inputs === null || Array.isArray(metadata.inputs) || typeof metadata.status !== "string" || !isDurableWorkflowStatus(metadata.status) || typeof metadata.completedCheckpoints !== "number" || typeof metadata.createdAt !== "number" || typeof metadata.pendingPrompts !== "number" || typeof metadata.promptReservationEpoch !== "string" || typeof metadata.updatedAt !== "number" || metadata.ownerExecutorId !== undefined && typeof metadata.ownerExecutorId !== "string" || metadata.transitionClaimId !== undefined && typeof metadata.transitionClaimId !== "string" || metadata.legacyRecoveryPending !== undefined && metadata.legacyRecoveryPending !== true || metadata.sessionFile !== undefined && typeof metadata.sessionFile !== "string" || metadata.label !== undefined && typeof metadata.label !== "string" || metadata.rootWorkflowId !== undefined && typeof metadata.rootWorkflowId !== "string" || metadata.resumable !== undefined && typeof metadata.resumable !== "boolean" || metadata.exited !== undefined && typeof metadata.exited !== "boolean" || metadata.exitReason !== undefined && typeof metadata.exitReason !== "string" || metadata.error !== undefined && typeof metadata.error !== "string" || metadata.failureKind !== undefined && !isWorkflowFailureKind(metadata.failureKind) || metadata.failureCode !== undefined && !isWorkflowFailureCode(metadata.failureCode) || metadata.failureRecoverability !== undefined && !isWorkflowFailureRecoverability(metadata.failureRecoverability) || metadata.failureDisposition !== undefined && !isWorkflowFailureDisposition(metadata.failureDisposition) || metadata.failedToolNodeId !== undefined && typeof metadata.failedToolNodeId !== "string" || metadata.releasedModelOwner !== undefined && typeof metadata.releasedModelOwner !== "string" || metadata.invocationCwd !== undefined && typeof metadata.invocationCwd !== "string" || metadata.workflowCwd !== undefined && typeof metadata.workflowCwd !== "string" || metadata.repositoryRoot !== undefined && typeof metadata.repositoryRoot !== "string" || metadata.gitWorktreeRoot !== undefined && typeof metadata.gitWorktreeRoot !== "string")
|
|
2907
|
+
if (metadata.workflowId !== workflowId || typeof metadata.workflowId !== "string" || typeof metadata.name !== "string" || typeof metadata.inputs !== "object" || metadata.inputs === null || Array.isArray(metadata.inputs) || typeof metadata.status !== "string" || !isDurableWorkflowStatus(metadata.status) || typeof metadata.completedCheckpoints !== "number" || typeof metadata.createdAt !== "number" || typeof metadata.pendingPrompts !== "number" || typeof metadata.promptReservationEpoch !== "string" || typeof metadata.updatedAt !== "number" || metadata.ownerExecutorId !== undefined && typeof metadata.ownerExecutorId !== "string" || metadata.transitionClaimId !== undefined && typeof metadata.transitionClaimId !== "string" || metadata.legacyRecoveryPending !== undefined && metadata.legacyRecoveryPending !== true || metadata.sessionFile !== undefined && typeof metadata.sessionFile !== "string" || metadata.label !== undefined && typeof metadata.label !== "string" || metadata.summary !== undefined && typeof metadata.summary !== "string" || metadata.summarizedThrough !== undefined && (typeof metadata.summarizedThrough !== "number" || !Number.isFinite(metadata.summarizedThrough)) || metadata.rootWorkflowId !== undefined && typeof metadata.rootWorkflowId !== "string" || metadata.resumable !== undefined && typeof metadata.resumable !== "boolean" || metadata.exited !== undefined && typeof metadata.exited !== "boolean" || metadata.exitReason !== undefined && typeof metadata.exitReason !== "string" || metadata.error !== undefined && typeof metadata.error !== "string" || metadata.failureKind !== undefined && !isWorkflowFailureKind(metadata.failureKind) || metadata.failureCode !== undefined && !isWorkflowFailureCode(metadata.failureCode) || metadata.failureRecoverability !== undefined && !isWorkflowFailureRecoverability(metadata.failureRecoverability) || metadata.failureDisposition !== undefined && !isWorkflowFailureDisposition(metadata.failureDisposition) || metadata.failedToolNodeId !== undefined && typeof metadata.failedToolNodeId !== "string" || metadata.releasedModelOwner !== undefined && typeof metadata.releasedModelOwner !== "string" || metadata.invocationCwd !== undefined && typeof metadata.invocationCwd !== "string" || metadata.workflowCwd !== undefined && typeof metadata.workflowCwd !== "string" || metadata.repositoryRoot !== undefined && typeof metadata.repositoryRoot !== "string" || metadata.gitWorktreeRoot !== undefined && typeof metadata.gitWorktreeRoot !== "string")
|
|
2890
2908
|
return;
|
|
2891
2909
|
const { origin, possibleStages: rawPossibleStages, ...metadataWithoutOrigin } = metadata;
|
|
2892
2910
|
return {
|
|
@@ -34969,9 +34987,9 @@ async function configureDbosDurableBackend(config) {
|
|
|
34969
34987
|
backend = new DbosDurableBackend(createRealDbosHandle(sdk, mainWorkflow, checkpointWorkflow, backendFence), { checkReady });
|
|
34970
34988
|
}
|
|
34971
34989
|
},
|
|
34972
|
-
shutdown: async () => {
|
|
34990
|
+
shutdown: async (options) => {
|
|
34973
34991
|
const results = await Promise.allSettled([
|
|
34974
|
-
sdk.shutdown(),
|
|
34992
|
+
sdk.shutdown(options),
|
|
34975
34993
|
...[...owner.executorFences ?? []].map((fence) => fence.close())
|
|
34976
34994
|
]);
|
|
34977
34995
|
const errors = results.filter((result) => result.status === "rejected").map((result) => result.reason instanceof Error ? result.reason : new Error(String(result.reason)));
|
|
@@ -35268,6 +35286,36 @@ class DbosDurableBackend {
|
|
|
35268
35286
|
}
|
|
35269
35287
|
return false;
|
|
35270
35288
|
}
|
|
35289
|
+
async persistSummary(workflowId, summary, summarizedThrough) {
|
|
35290
|
+
let persisted = false;
|
|
35291
|
+
await this.enqueueBestEffortWrite(workflowId, async () => {
|
|
35292
|
+
const handle = this.mem.getWorkflow(workflowId);
|
|
35293
|
+
const value = this.mem.toMetadata(workflowId);
|
|
35294
|
+
if (!handle || !value || !this.isWorkflowLoadable(workflowId))
|
|
35295
|
+
return;
|
|
35296
|
+
if ((handle.summarizedThrough ?? -Infinity) > summarizedThrough)
|
|
35297
|
+
return;
|
|
35298
|
+
const updatedAt = Math.max(Date.now(), handle.updatedAt + 1);
|
|
35299
|
+
const metadata = {
|
|
35300
|
+
...this.promptReservations.metadata(workflowId, value),
|
|
35301
|
+
summary,
|
|
35302
|
+
summarizedThrough,
|
|
35303
|
+
updatedAt
|
|
35304
|
+
};
|
|
35305
|
+
await this.sdk.recordStepOutput(workflowId, metadataStepName(updatedAt), encodeMetadata(metadata));
|
|
35306
|
+
const current = this.mem.getWorkflow(workflowId);
|
|
35307
|
+
if (current) {
|
|
35308
|
+
this.mem.registerWorkflow({
|
|
35309
|
+
...current,
|
|
35310
|
+
summary,
|
|
35311
|
+
summarizedThrough,
|
|
35312
|
+
updatedAt: Math.max(updatedAt, current.updatedAt)
|
|
35313
|
+
});
|
|
35314
|
+
}
|
|
35315
|
+
persisted = true;
|
|
35316
|
+
});
|
|
35317
|
+
return persisted;
|
|
35318
|
+
}
|
|
35271
35319
|
async persistPendingStageMessages(workflowId, messages, logicalRunId = workflowId) {
|
|
35272
35320
|
let persisted = false;
|
|
35273
35321
|
await this.enqueueWrite(workflowId, async () => {
|
|
@@ -39063,7 +39111,7 @@ async function shutdownDbos() {
|
|
|
39063
39111
|
const errors = [];
|
|
39064
39112
|
const actions = [
|
|
39065
39113
|
...wasReady ? [() => durability.backend.flush()] : [],
|
|
39066
|
-
...slot.launchPromise !== undefined ? [() => durability.shutdown()] : [],
|
|
39114
|
+
...slot.launchPromise !== undefined ? [() => durability.shutdown({ deregister: true })] : [],
|
|
39067
39115
|
shutdownLocalDbos
|
|
39068
39116
|
];
|
|
39069
39117
|
for (const shutdown of actions) {
|
|
@@ -39079,6 +39127,7 @@ async function shutdownDbos() {
|
|
|
39079
39127
|
slot.state = "shut_down";
|
|
39080
39128
|
slot.configured = undefined;
|
|
39081
39129
|
slot.active = undefined;
|
|
39130
|
+
slot.wrappers = undefined;
|
|
39082
39131
|
}
|
|
39083
39132
|
})().catch(async (error) => {
|
|
39084
39133
|
slot.failure = await durabilityFailure("shutdown", error);
|
|
@@ -41526,6 +41575,13 @@ function createRunStoreMethods(context) {
|
|
|
41526
41575
|
state.runs[index] = run;
|
|
41527
41576
|
context.bumpAndNotify();
|
|
41528
41577
|
},
|
|
41578
|
+
recordRunSummary(runId, summary, summarizedThrough) {
|
|
41579
|
+
const run = context.findRun(runId);
|
|
41580
|
+
if (!run)
|
|
41581
|
+
return;
|
|
41582
|
+
Object.assign(run, { summary, summarizedThrough });
|
|
41583
|
+
context.bumpAndNotify();
|
|
41584
|
+
},
|
|
41529
41585
|
recordRunExecutionState(runId, update) {
|
|
41530
41586
|
const run = context.findRun(runId);
|
|
41531
41587
|
if (run === undefined || run.endedAt !== undefined)
|
|
@@ -50693,6 +50749,27 @@ init_dbos_admission();
|
|
|
50693
50749
|
init_dbos_sdk_handle();
|
|
50694
50750
|
init_factory();
|
|
50695
50751
|
|
|
50752
|
+
// dist/builtin/workflows/src/durable/fork-workflow.ts
|
|
50753
|
+
import { SessionManager as SessionManager3 } from "@bastani/atomic";
|
|
50754
|
+
|
|
50755
|
+
// dist/builtin/workflows/src/shared/workflow-stage-target.ts
|
|
50756
|
+
var WORKFLOW_RUN_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
50757
|
+
var WORKFLOW_TARGET_PREFIX = "workflow:";
|
|
50758
|
+
function parseWorkflowStageTarget(target) {
|
|
50759
|
+
if (!target.startsWith(WORKFLOW_TARGET_PREFIX))
|
|
50760
|
+
return;
|
|
50761
|
+
const slash = target.indexOf("/", WORKFLOW_TARGET_PREFIX.length);
|
|
50762
|
+
if (slash < 0)
|
|
50763
|
+
return;
|
|
50764
|
+
const rootRunId = target.slice(WORKFLOW_TARGET_PREFIX.length, slash);
|
|
50765
|
+
if (!WORKFLOW_RUN_ID_PATTERN.test(rootRunId))
|
|
50766
|
+
return;
|
|
50767
|
+
const segments = target.slice(slash + 1).split("/");
|
|
50768
|
+
if (segments.length === 0 || segments.some((segment) => segment.length === 0))
|
|
50769
|
+
return;
|
|
50770
|
+
const kind = segments.includes("**") ? "deep-pattern" : segments.some((segment) => segment.includes("*")) ? "pattern" : "path";
|
|
50771
|
+
return { rootRunId, segments, kind };
|
|
50772
|
+
}
|
|
50696
50773
|
// dist/builtin/workflows/src/durable/sdk-owner-release.ts
|
|
50697
50774
|
var releasedRuns = new WeakMap;
|
|
50698
50775
|
|
|
@@ -53146,25 +53223,6 @@ function matchSegmentGlob(pattern, value) {
|
|
|
53146
53223
|
return p === pattern.length;
|
|
53147
53224
|
}
|
|
53148
53225
|
|
|
53149
|
-
// dist/builtin/workflows/src/shared/workflow-stage-target.ts
|
|
53150
|
-
var WORKFLOW_RUN_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
53151
|
-
var WORKFLOW_TARGET_PREFIX = "workflow:";
|
|
53152
|
-
function parseWorkflowStageTarget(target) {
|
|
53153
|
-
if (!target.startsWith(WORKFLOW_TARGET_PREFIX))
|
|
53154
|
-
return;
|
|
53155
|
-
const slash = target.indexOf("/", WORKFLOW_TARGET_PREFIX.length);
|
|
53156
|
-
if (slash < 0)
|
|
53157
|
-
return;
|
|
53158
|
-
const rootRunId = target.slice(WORKFLOW_TARGET_PREFIX.length, slash);
|
|
53159
|
-
if (!WORKFLOW_RUN_ID_PATTERN.test(rootRunId))
|
|
53160
|
-
return;
|
|
53161
|
-
const segments = target.slice(slash + 1).split("/");
|
|
53162
|
-
if (segments.length === 0 || segments.some((segment) => segment.length === 0))
|
|
53163
|
-
return;
|
|
53164
|
-
const kind = segments.includes("**") ? "deep-pattern" : segments.some((segment) => segment.includes("*")) ? "pattern" : "path";
|
|
53165
|
-
return { rootRunId, segments, kind };
|
|
53166
|
-
}
|
|
53167
|
-
|
|
53168
53226
|
// dist/builtin/workflows/src/shared/pending-stage-status.ts
|
|
53169
53227
|
function workflowBoundaryHops(runs, runId) {
|
|
53170
53228
|
const runById = new Map(runs.map((run) => [run.id, run]));
|
|
@@ -54146,7 +54204,7 @@ function assistantMessage(text) {
|
|
|
54146
54204
|
}
|
|
54147
54205
|
|
|
54148
54206
|
// dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts
|
|
54149
|
-
import { SessionManager as
|
|
54207
|
+
import { SessionManager as SessionManager4 } from "@bastani/atomic";
|
|
54150
54208
|
function workflowSessionOptions(meta) {
|
|
54151
54209
|
return {
|
|
54152
54210
|
internal: true,
|
|
@@ -54171,7 +54229,7 @@ function stripWorkflowOnlyOptions2(options, defaultSessionDir, meta, pendingStag
|
|
|
54171
54229
|
if (!options) {
|
|
54172
54230
|
return defaultSessionDir === undefined ? { orchestrationContext } : {
|
|
54173
54231
|
orchestrationContext,
|
|
54174
|
-
sessionManager:
|
|
54232
|
+
sessionManager: SessionManager4.create(process.cwd(), defaultSessionDir, classification)
|
|
54175
54233
|
};
|
|
54176
54234
|
}
|
|
54177
54235
|
const {
|
|
@@ -54201,11 +54259,11 @@ function stripWorkflowOnlyOptions2(options, defaultSessionDir, meta, pendingStag
|
|
|
54201
54259
|
const cwd = sessionOptions.cwd ?? process.cwd();
|
|
54202
54260
|
const effectiveSessionDir = sessionDir ?? defaultSessionDir;
|
|
54203
54261
|
if (resumeFromSessionFile !== undefined) {
|
|
54204
|
-
sessionOptions.sessionManager =
|
|
54262
|
+
sessionOptions.sessionManager = SessionManager4.open(resumeFromSessionFile, effectiveSessionDir, cwd);
|
|
54205
54263
|
} else if (context === "fork" && forkFromSessionFile !== undefined) {
|
|
54206
|
-
sessionOptions.sessionManager =
|
|
54264
|
+
sessionOptions.sessionManager = SessionManager4.forkFrom(forkFromSessionFile, cwd, effectiveSessionDir, classification);
|
|
54207
54265
|
} else if (effectiveSessionDir !== undefined) {
|
|
54208
|
-
sessionOptions.sessionManager =
|
|
54266
|
+
sessionOptions.sessionManager = SessionManager4.create(cwd, effectiveSessionDir, classification);
|
|
54209
54267
|
}
|
|
54210
54268
|
}
|
|
54211
54269
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-accessors.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-accessors.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK9F,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAgK1E"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { SessionWorkflowsHandle } from "./extensions/workflow-run-control-hub.js";
|
|
2
|
+
import { getLatestSessionSummary } from "./session-manager-entries.js";
|
|
2
3
|
import { buildSystemPrompt } from "./system-prompt.js";
|
|
3
4
|
export function installAgentSessionAccessors(prototype) {
|
|
4
5
|
Object.defineProperties(prototype, {
|
|
6
|
+
sessionSummary: {
|
|
7
|
+
get() {
|
|
8
|
+
return getLatestSessionSummary(this.sessionManager.getBranch());
|
|
9
|
+
},
|
|
10
|
+
},
|
|
5
11
|
orchestrationContext: {
|
|
6
12
|
get() {
|
|
7
13
|
return this._orchestrationContext;
|
|
@@ -29,7 +35,7 @@ export function installAgentSessionAccessors(prototype) {
|
|
|
29
35
|
},
|
|
30
36
|
isStreaming: {
|
|
31
37
|
get() {
|
|
32
|
-
return this.agent.state.isStreaming;
|
|
38
|
+
return this._isPreparingRun === "custom" || this.agent.state.isStreaming;
|
|
33
39
|
},
|
|
34
40
|
},
|
|
35
41
|
systemPrompt: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-accessors.js","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,4BAA4B,CAAC,SAAuB;IACnE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAClC,oBAAoB,EAAE;YACrB,GAAG;gBACF,OAAO,IAAI,CAAC,qBAAqB,CAAC;YACnC,CAAC;SACD;QACD,YAAY,EAAE;YACb,GAAG;gBACF,OAAO,IAAI,CAAC,aAAa,CAAC;YAC3B,CAAC;SACD;QACD,KAAK,EAAE;YACN,GAAG;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,CAAC;SACD;QACD,KAAK,EAAE;YACN,GAAG;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/B,CAAC;SACD;QACD,aAAa,EAAE;YACd,GAAG;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;YACvC,CAAC;SACD;QACD,WAAW,EAAE;YACZ,GAAG;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-accessors.js","sourceRoot":"","sources":["../../src/core/agent-session-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { SessionWorkflowsHandle } from \"./extensions/workflow-run-control-hub.js\";\nimport { getLatestSessionSummary } from \"./session-manager-entries.ts\";\nimport { buildSystemPrompt } from \"./system-prompt.ts\";\n\nexport function installAgentSessionAccessors(prototype: AgentSession): void {\n\tObject.defineProperties(prototype, {\n\t\tsessionSummary: {\n\t\t\tget() {\n\t\t\t\treturn getLatestSessionSummary(this.sessionManager.getBranch());\n\t\t\t},\n\t\t},\n\t\torchestrationContext: {\n\t\t\tget() {\n\t\t\t\treturn this._orchestrationContext;\n\t\t\t},\n\t\t},\n\t\tmodelRuntime: {\n\t\t\tget() {\n\t\t\t\treturn this._modelRuntime;\n\t\t\t},\n\t\t},\n\t\tstate: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state;\n\t\t\t},\n\t\t},\n\t\tmodel: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state.model;\n\t\t\t},\n\t\t},\n\t\tthinkingLevel: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state.thinkingLevel;\n\t\t\t},\n\t\t},\n\t\tisStreaming: {\n\t\t\tget() {\n\t\t\t\treturn this._isPreparingRun === \"custom\" || this.agent.state.isStreaming;\n\t\t\t},\n\t\t},\n\t\tsystemPrompt: {\n\t\t\tget() {\n\t\t\t\treturn buildSystemPrompt(this._runSystemPromptOptions ?? this._baseSystemPromptOptions);\n\t\t\t},\n\t\t},\n\t\tretryAttempt: {\n\t\t\tget() {\n\t\t\t\treturn this._retryAttempt;\n\t\t\t},\n\t\t},\n\t\tisCompacting: {\n\t\t\tget() {\n\t\t\t\treturn (\n\t\t\t\t\tthis._autoCompactionAbortController !== undefined ||\n\t\t\t\t\tthis._compactionAbortController !== undefined ||\n\t\t\t\t\tthis._branchSummaryAbortController !== undefined\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcompactionReason: {\n\t\t\tget() {\n\t\t\t\treturn this._compactionReason;\n\t\t\t},\n\t\t},\n\t\tmessages: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.state.messages;\n\t\t\t},\n\t\t},\n\t\tsteeringMode: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.steeringMode;\n\t\t\t},\n\t\t},\n\t\tfollowUpMode: {\n\t\t\tget() {\n\t\t\t\treturn this.agent.followUpMode;\n\t\t\t},\n\t\t},\n\t\tsessionFile: {\n\t\t\tget() {\n\t\t\t\treturn this.sessionManager.getSessionFile();\n\t\t\t},\n\t\t},\n\t\tsessionId: {\n\t\t\tget() {\n\t\t\t\treturn this.sessionManager.getSessionId();\n\t\t\t},\n\t\t},\n\t\tsessionName: {\n\t\t\tget() {\n\t\t\t\treturn this.sessionManager.getSessionName();\n\t\t\t},\n\t\t},\n\t\tscopedModels: {\n\t\t\tget() {\n\t\t\t\treturn this._scopedModels;\n\t\t\t},\n\t\t},\n\t\tpromptTemplates: {\n\t\t\tget() {\n\t\t\t\treturn this._resourceLoader.getPrompts().prompts;\n\t\t\t},\n\t\t},\n\t\tpendingMessageCount: {\n\t\t\tget() {\n\t\t\t\treturn this._steeringMessages.length + this._followUpMessages.length;\n\t\t\t},\n\t\t},\n\t\tqueuedMessagesPaused: {\n\t\t\tget() {\n\t\t\t\treturn this._queuedMessagesPaused;\n\t\t\t},\n\t\t},\n\t\tresourceLoader: {\n\t\t\tget() {\n\t\t\t\treturn this._resourceLoader;\n\t\t\t},\n\t\t},\n\t\tautoCompactionEnabled: {\n\t\t\tget() {\n\t\t\t\treturn this.settingsManager.getCompactionEnabled();\n\t\t\t},\n\t\t},\n\t\tisRetrying: {\n\t\t\tget() {\n\t\t\t\treturn this._retryPromise !== undefined;\n\t\t\t},\n\t\t},\n\t\tautoRetryEnabled: {\n\t\t\tget() {\n\t\t\t\treturn this.settingsManager.getRetryEnabled();\n\t\t\t},\n\t\t},\n\t\tisBashRunning: {\n\t\t\tget() {\n\t\t\t\treturn this._bashAbortControllers.size > 0;\n\t\t\t},\n\t\t},\n\t\thasPendingBashMessages: {\n\t\t\tget() {\n\t\t\t\treturn this._pendingBashMessages.length > 0;\n\t\t\t},\n\t\t},\n\t\textensionRunner: {\n\t\t\tget() {\n\t\t\t\treturn this._extensionRunner;\n\t\t\t},\n\t\t},\n\t\tworkflows: {\n\t\t\tget() {\n\t\t\t\tthis._workflows ??= new SessionWorkflowsHandle(\n\t\t\t\t\t() => this._extensionRunner?.getWorkflowRunControl(),\n\t\t\t\t\t() => {\n\t\t\t\t\t\tconst runner = this._extensionRunner;\n\t\t\t\t\t\tif (this._disposed || runner === undefined) return undefined;\n\t\t\t\t\t\treturn (observer) => runner.observeWorkflowActivity(observer);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn this._workflows;\n\t\t\t},\n\t\t},\n\t});\n}\n"]}
|
|
@@ -20,7 +20,7 @@ async function commitPriorityMessage(session, message) {
|
|
|
20
20
|
!session._subagentMessageAdmission) {
|
|
21
21
|
// Idle stage chat has no original prompt awaiter. Start one owned drain,
|
|
22
22
|
// without replaying the stage task or a completed tool call.
|
|
23
|
-
const turn = session._runAgentPrompt([]);
|
|
23
|
+
const turn = session._runAgentPrompt([], undefined, undefined, false, message);
|
|
24
24
|
session._workflowStageAdmission?.trackAdmittedWork(turn);
|
|
25
25
|
void turn.catch(() => { });
|
|
26
26
|
}
|
|
@@ -57,7 +57,7 @@ export async function commitAdmittedCustomMessage(session, appMessage, options)
|
|
|
57
57
|
self._queueAgentMessage(appMessage, delivery);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
else if (self.isStreaming) {
|
|
60
|
+
else if (self.isStreaming || self._isPreparingRun) {
|
|
61
61
|
self._pendingCustomMessages.push(appMessage);
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
@@ -69,27 +69,27 @@ export async function commitAdmittedCustomMessage(session, appMessage, options)
|
|
|
69
69
|
self._workflowStageAdmission?.trackAdmittedWork(interrupt);
|
|
70
70
|
void interrupt.catch(() => { });
|
|
71
71
|
}
|
|
72
|
-
else if (self.isStreaming &&
|
|
72
|
+
else if ((self.isStreaming || self._isPreparingRun) &&
|
|
73
73
|
options?.excludeFromContext === true &&
|
|
74
74
|
options.triggerTurn !== true &&
|
|
75
75
|
options.deliverAs === undefined) {
|
|
76
76
|
appendDurableStageAdmission(self, appMessage);
|
|
77
77
|
}
|
|
78
|
-
else if (self.isStreaming && options?.triggerTurn === false) {
|
|
78
|
+
else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn === false) {
|
|
79
79
|
self._pendingCustomMessages.push(appMessage);
|
|
80
80
|
}
|
|
81
|
-
else if (self.isStreaming && useProtectedReconciliation) {
|
|
81
|
+
else if ((self.isStreaming || self._isPreparingRun) && useProtectedReconciliation) {
|
|
82
82
|
await queueProtectedStreamingCustomMessage(self, appMessage, options?.deliverAs === "followUp" ? "followUp" : "steer");
|
|
83
83
|
}
|
|
84
|
-
else if (self.isStreaming && options?.persistWhenStreaming === true) {
|
|
84
|
+
else if ((self.isStreaming || self._isPreparingRun) && options?.persistWhenStreaming === true) {
|
|
85
85
|
appendDurableStageAdmission(self, appMessage);
|
|
86
86
|
}
|
|
87
|
-
else if (self.isStreaming && options?.triggerTurn !== false) {
|
|
87
|
+
else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn !== false) {
|
|
88
88
|
self._queueAgentMessage(appMessage, options?.deliverAs === "followUp" ? "followUp" : "steer");
|
|
89
89
|
}
|
|
90
90
|
else if (useProtectedReconciliation && options?.triggerTurn === true && self._workflowStageAdmission) {
|
|
91
91
|
await queueProtectedStreamingCustomMessage(self, appMessage, options?.deliverAs === "followUp" ? "followUp" : "steer");
|
|
92
|
-
const turn = self._runAgentPrompt([]);
|
|
92
|
+
const turn = self._runAgentPrompt([], undefined, undefined, false, appMessage);
|
|
93
93
|
self._workflowStageAdmission.trackAdmittedWork(turn);
|
|
94
94
|
void turn.catch(() => { });
|
|
95
95
|
}
|
|
@@ -98,7 +98,7 @@ export async function commitAdmittedCustomMessage(session, appMessage, options)
|
|
|
98
98
|
? await admitProtectedStreamingCustomMessage(self, appMessage, options?.deliverAs === "followUp" ? "followUp" : "steer")
|
|
99
99
|
: appMessage;
|
|
100
100
|
// Durable admission may yield while another turn takes ownership.
|
|
101
|
-
if (useProtectedReconciliation && self.isStreaming) {
|
|
101
|
+
if (useProtectedReconciliation && (self.isStreaming || self._isPreparingRun)) {
|
|
102
102
|
self._queueAgentMessage(promptMessage, options.deliverAs === "followUp" ? "followUp" : "steer");
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
@@ -148,7 +148,7 @@ export async function commitAdmittedCustomMessages(session, appMessages, options
|
|
|
148
148
|
self._queueAgentMessage(item, delivery);
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
else if (self.isStreaming) {
|
|
151
|
+
else if (self.isStreaming || self._isPreparingRun) {
|
|
152
152
|
self._pendingCustomMessages.push(...appMessages);
|
|
153
153
|
}
|
|
154
154
|
else {
|
|
@@ -156,24 +156,24 @@ export async function commitAdmittedCustomMessages(session, appMessages, options
|
|
|
156
156
|
self._appendCustomMessage(item);
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
else if (self.isStreaming &&
|
|
159
|
+
else if ((self.isStreaming || self._isPreparingRun) &&
|
|
160
160
|
options?.excludeFromContext === true &&
|
|
161
161
|
options.triggerTurn !== true &&
|
|
162
162
|
options.deliverAs === undefined) {
|
|
163
163
|
for (const item of appMessages)
|
|
164
164
|
self._appendCustomMessage(item);
|
|
165
165
|
}
|
|
166
|
-
else if (self.isStreaming && options?.triggerTurn === false) {
|
|
166
|
+
else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn === false) {
|
|
167
167
|
self._pendingCustomMessages.push(...appMessages);
|
|
168
168
|
}
|
|
169
|
-
else if (self.isStreaming && useProtectedReconciliation) {
|
|
169
|
+
else if ((self.isStreaming || self._isPreparingRun) && useProtectedReconciliation) {
|
|
170
170
|
await queueProtectedStreamingCustomMessages(self, appMessages, delivery);
|
|
171
171
|
}
|
|
172
|
-
else if (self.isStreaming && options?.persistWhenStreaming === true) {
|
|
172
|
+
else if ((self.isStreaming || self._isPreparingRun) && options?.persistWhenStreaming === true) {
|
|
173
173
|
for (const item of appMessages)
|
|
174
174
|
self._appendCustomMessage(item);
|
|
175
175
|
}
|
|
176
|
-
else if (self.isStreaming && options?.triggerTurn !== false) {
|
|
176
|
+
else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn !== false) {
|
|
177
177
|
for (const item of appMessages)
|
|
178
178
|
self._queueAgentMessage(item, delivery);
|
|
179
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-custom-message-commit.js","sourceRoot":"","sources":["../../src/core/agent-session-custom-message-commit.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveWorkflowStageDeliveryTarget } from \"./agent-session-delivery-forwarding.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport {\n\tadmitProtectedStreamingCustomMessage,\n\tqueueProtectedStreamingCustomMessage,\n\tqueueProtectedStreamingCustomMessages,\n\ttriggerProtectedStreamingCustomMessages,\n} from \"./agent-session-persistent-custom-messages.ts\";\nimport type { SendMessageOptions, SendMessagesOptions } from \"./extensions/index.js\";\nimport type { CustomMessage, StageAdmittedCustomMessage } from \"./messages.ts\";\n\nfunction appendDurableStageAdmission<T>(session: AgentSession, message: CustomMessage<T>): void {\n\tsession._appendCustomMessage(message);\n\tif ((message as StageAdmittedCustomMessage).stageAdmissionKey !== undefined) session.sessionManager?.flush();\n}\n\n/** Cancel only the receiver's native operation; its original prompt owns continuation. */\nasync function commitPriorityMessage(session: AgentSession, message: CustomMessage): Promise<void> {\n\tsession._priorityInterruptPending = true;\n\tsession._ensureActiveInterruptQueueHold();\n\tif (!session._queuedMessagesPaused) {\n\t\tsession.abortRetry();\n\t\tsession.agent.abort();\n\t}\n\tawait queueProtectedStreamingCustomMessage(session, message, \"steer\", true);\n\tif (\n\t\t!session.isStreaming &&\n\t\tsession._activePromptCount === 0 &&\n\t\t!session._queuedMessagesPaused &&\n\t\t!session._subagentMessageAdmission\n\t) {\n\t\t// Idle stage chat has no original prompt awaiter. Start one owned drain,\n\t\t// without replaying the stage task or a completed tool call.\n\t\tconst turn = session._runAgentPrompt([]);\n\t\tsession._workflowStageAdmission?.trackAdmittedWork(turn);\n\t\tvoid turn.catch(() => {});\n\t}\n}\n\n/** Commit one delivery whose source generation already granted admission. */\nexport async function commitAdmittedCustomMessage<T>(\n\tsession: AgentSession,\n\tappMessage: CustomMessage<T>,\n\toptions?: SendMessageOptions,\n): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(session);\n\tif (owner !== session) return commitAdmittedCustomMessage(owner, appMessage, options);\n\tconst self = session;\n\tconst useProtectedReconciliation =\n\t\toptions?.persistWhenStreaming === true &&\n\t\toptions.excludeFromContext !== true &&\n\t\t(options.triggerTurn === true || options.stageAdmissionKey !== undefined);\n\tif (\n\t\tuseProtectedReconciliation &&\n\t\toptions?.triggerTurn &&\n\t\toptions.deliverAs === \"interrupt\" &&\n\t\t(self._subagentMessageAdmission || self._workflowStageAdmission)\n\t) {\n\t\tawait commitPriorityMessage(self, appMessage);\n\t\treturn;\n\t}\n\tif (options?.deliverAs === \"nextTurn\") {\n\t\tself._pendingNextTurnMessages.push(appMessage);\n\t} else if (\n\t\tself._queuedMessagesPaused ||\n\t\t// A child has one host-owned task prompt, including its asynchronous preflight.\n\t\t// Inbound context joins that execution; an idle SDK gap is not a new task.\n\t\t(self._subagentPolicy?.executionEnded !== undefined && options?.triggerTurn && options.deliverAs !== \"interrupt\")\n\t) {\n\t\tif (options?.triggerTurn === true) {\n\t\t\tconst delivery = options.deliverAs === \"followUp\" ? \"followUp\" : \"steer\";\n\t\t\tif (useProtectedReconciliation) {\n\t\t\t\tawait queueProtectedStreamingCustomMessage(self, appMessage, delivery);\n\t\t\t} else {\n\t\t\t\tself._queueAgentMessage(appMessage, delivery);\n\t\t\t}\n\t\t} else if (self.isStreaming) {\n\t\t\tself._pendingCustomMessages.push(appMessage);\n\t\t} else {\n\t\t\tappendDurableStageAdmission(self, appMessage);\n\t\t}\n\t} else if (options?.deliverAs === \"interrupt\" && options.triggerTurn) {\n\t\tconst interrupt = self._enqueueInterruptCustomMessage(appMessage, options);\n\t\tself._workflowStageAdmission?.trackAdmittedWork(interrupt);\n\t\tvoid interrupt.catch(() => {});\n\t} else if (\n\t\tself.isStreaming &&\n\t\toptions?.excludeFromContext === true &&\n\t\toptions.triggerTurn !== true &&\n\t\toptions.deliverAs === undefined\n\t) {\n\t\tappendDurableStageAdmission(self, appMessage);\n\t} else if (self.isStreaming && options?.triggerTurn === false) {\n\t\tself._pendingCustomMessages.push(appMessage);\n\t} else if (self.isStreaming && useProtectedReconciliation) {\n\t\tawait queueProtectedStreamingCustomMessage(\n\t\t\tself,\n\t\t\tappMessage,\n\t\t\toptions?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\",\n\t\t);\n\t} else if (self.isStreaming && options?.persistWhenStreaming === true) {\n\t\tappendDurableStageAdmission(self, appMessage);\n\t} else if (self.isStreaming && options?.triggerTurn !== false) {\n\t\tself._queueAgentMessage(appMessage, options?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\");\n\t} else if (useProtectedReconciliation && options?.triggerTurn === true && self._workflowStageAdmission) {\n\t\tawait queueProtectedStreamingCustomMessage(\n\t\t\tself,\n\t\t\tappMessage,\n\t\t\toptions?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\",\n\t\t);\n\t\tconst turn = self._runAgentPrompt([]);\n\t\tself._workflowStageAdmission.trackAdmittedWork(turn);\n\t\tvoid turn.catch(() => {});\n\t} else if (options?.triggerTurn) {\n\t\tconst promptMessage = useProtectedReconciliation\n\t\t\t? await admitProtectedStreamingCustomMessage(\n\t\t\t\t\tself,\n\t\t\t\t\tappMessage,\n\t\t\t\t\toptions?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\",\n\t\t\t\t)\n\t\t\t: appMessage;\n\t\t// Durable admission may yield while another turn takes ownership.\n\t\tif (useProtectedReconciliation && self.isStreaming) {\n\t\t\tself._queueAgentMessage(promptMessage, options.deliverAs === \"followUp\" ? \"followUp\" : \"steer\");\n\t\t\treturn;\n\t\t}\n\t\tlet resolveAdmission!: () => void;\n\t\tconst admission = new Promise<void>((resolve) => {\n\t\t\tresolveAdmission = resolve;\n\t\t});\n\t\tconst turn = self._runAgentPrompt(promptMessage, resolveAdmission);\n\t\ttry {\n\t\t\tawait Promise.race([admission, turn]);\n\t\t} catch (error) {\n\t\t\tif (!useProtectedReconciliation) throw error;\n\t\t\t// The visible card is already durable. Retry only its hidden turn so\n\t\t\t// lifecycle delivery never appends a second card for this occurrence.\n\t\t\tself._queueAgentMessage(promptMessage, options?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\");\n\t\t\tvoid self._continueQueuedAgentMessages().catch(() => {});\n\t\t}\n\t} else {\n\t\tappendDurableStageAdmission(self, appMessage);\n\t}\n}\n\nexport function _commitAdmittedCustomMessage<T>(\n\tthis: AgentSession,\n\tappMessage: CustomMessage<T>,\n\toptions?: SendMessageOptions,\n): Promise<void> {\n\treturn commitAdmittedCustomMessage(this, appMessage, options);\n}\n\n/** Commit a batch whose source generation already granted atomic admission. */\nexport async function commitAdmittedCustomMessages<T>(\n\tsession: AgentSession,\n\tappMessages: CustomMessage<T>[],\n\toptions?: SendMessagesOptions,\n): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(session);\n\tif (owner !== session) return commitAdmittedCustomMessages(owner, appMessages, options);\n\tconst self = session;\n\tconst useProtectedReconciliation =\n\t\toptions?.persistWhenStreaming === true && options.triggerTurn === true && options.excludeFromContext !== true;\n\tconst delivery = options?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\";\n\tif (options?.deliverAs === \"nextTurn\") {\n\t\tself._pendingNextTurnMessages.push(...appMessages);\n\t} else if (\n\t\tself._queuedMessagesPaused ||\n\t\t(self._subagentPolicy?.executionEnded !== undefined && options?.triggerTurn)\n\t) {\n\t\tif (options?.triggerTurn === true) {\n\t\t\tif (useProtectedReconciliation) {\n\t\t\t\tawait queueProtectedStreamingCustomMessages(self, appMessages, delivery);\n\t\t\t} else {\n\t\t\t\tfor (const item of appMessages) self._queueAgentMessage(item, delivery);\n\t\t\t}\n\t\t} else if (self.isStreaming) {\n\t\t\tself._pendingCustomMessages.push(...appMessages);\n\t\t} else {\n\t\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t\t}\n\t} else if (\n\t\tself.isStreaming &&\n\t\toptions?.excludeFromContext === true &&\n\t\toptions.triggerTurn !== true &&\n\t\toptions.deliverAs === undefined\n\t) {\n\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t} else if (self.isStreaming && options?.triggerTurn === false) {\n\t\tself._pendingCustomMessages.push(...appMessages);\n\t} else if (self.isStreaming && useProtectedReconciliation) {\n\t\tawait queueProtectedStreamingCustomMessages(self, appMessages, delivery);\n\t} else if (self.isStreaming && options?.persistWhenStreaming === true) {\n\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t} else if (self.isStreaming && options?.triggerTurn !== false) {\n\t\tfor (const item of appMessages) self._queueAgentMessage(item, delivery);\n\t} else if (options?.triggerTurn) {\n\t\tif (useProtectedReconciliation) {\n\t\t\tawait triggerProtectedStreamingCustomMessages(self, appMessages, delivery);\n\t\t} else {\n\t\t\tconst turn = self._runAgentPrompt(appMessages);\n\t\t\tvoid turn.catch(() => {});\n\t\t}\n\t} else {\n\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t}\n}\n\nexport function _commitAdmittedCustomMessages<T>(\n\tthis: AgentSession,\n\tappMessages: CustomMessage<T>[],\n\toptions?: SendMessagesOptions,\n): Promise<void> {\n\treturn commitAdmittedCustomMessages(this, appMessages, options);\n}\n\nexport const agentSessionCustomMessageCommitMethods = {\n\t_commitAdmittedCustomMessage,\n\t_commitAdmittedCustomMessages,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"agent-session-custom-message-commit.js","sourceRoot":"","sources":["../../src/core/agent-session-custom-message-commit.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveWorkflowStageDeliveryTarget } from \"./agent-session-delivery-forwarding.ts\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport {\n\tadmitProtectedStreamingCustomMessage,\n\tqueueProtectedStreamingCustomMessage,\n\tqueueProtectedStreamingCustomMessages,\n\ttriggerProtectedStreamingCustomMessages,\n} from \"./agent-session-persistent-custom-messages.ts\";\nimport type { SendMessageOptions, SendMessagesOptions } from \"./extensions/index.js\";\nimport type { CustomMessage, StageAdmittedCustomMessage } from \"./messages.ts\";\n\nfunction appendDurableStageAdmission<T>(session: AgentSession, message: CustomMessage<T>): void {\n\tsession._appendCustomMessage(message);\n\tif ((message as StageAdmittedCustomMessage).stageAdmissionKey !== undefined) session.sessionManager?.flush();\n}\n\n/** Cancel only the receiver's native operation; its original prompt owns continuation. */\nasync function commitPriorityMessage(session: AgentSession, message: CustomMessage): Promise<void> {\n\tsession._priorityInterruptPending = true;\n\tsession._ensureActiveInterruptQueueHold();\n\tif (!session._queuedMessagesPaused) {\n\t\tsession.abortRetry();\n\t\tsession.agent.abort();\n\t}\n\tawait queueProtectedStreamingCustomMessage(session, message, \"steer\", true);\n\tif (\n\t\t!session.isStreaming &&\n\t\tsession._activePromptCount === 0 &&\n\t\t!session._queuedMessagesPaused &&\n\t\t!session._subagentMessageAdmission\n\t) {\n\t\t// Idle stage chat has no original prompt awaiter. Start one owned drain,\n\t\t// without replaying the stage task or a completed tool call.\n\t\tconst turn = session._runAgentPrompt([], undefined, undefined, false, message);\n\t\tsession._workflowStageAdmission?.trackAdmittedWork(turn);\n\t\tvoid turn.catch(() => {});\n\t}\n}\n\n/** Commit one delivery whose source generation already granted admission. */\nexport async function commitAdmittedCustomMessage<T>(\n\tsession: AgentSession,\n\tappMessage: CustomMessage<T>,\n\toptions?: SendMessageOptions,\n): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(session);\n\tif (owner !== session) return commitAdmittedCustomMessage(owner, appMessage, options);\n\tconst self = session;\n\tconst useProtectedReconciliation =\n\t\toptions?.persistWhenStreaming === true &&\n\t\toptions.excludeFromContext !== true &&\n\t\t(options.triggerTurn === true || options.stageAdmissionKey !== undefined);\n\tif (\n\t\tuseProtectedReconciliation &&\n\t\toptions?.triggerTurn &&\n\t\toptions.deliverAs === \"interrupt\" &&\n\t\t(self._subagentMessageAdmission || self._workflowStageAdmission)\n\t) {\n\t\tawait commitPriorityMessage(self, appMessage);\n\t\treturn;\n\t}\n\tif (options?.deliverAs === \"nextTurn\") {\n\t\tself._pendingNextTurnMessages.push(appMessage);\n\t} else if (\n\t\tself._queuedMessagesPaused ||\n\t\t// A child has one host-owned task prompt, including its asynchronous preflight.\n\t\t// Inbound context joins that execution; an idle SDK gap is not a new task.\n\t\t(self._subagentPolicy?.executionEnded !== undefined && options?.triggerTurn && options.deliverAs !== \"interrupt\")\n\t) {\n\t\tif (options?.triggerTurn === true) {\n\t\t\tconst delivery = options.deliverAs === \"followUp\" ? \"followUp\" : \"steer\";\n\t\t\tif (useProtectedReconciliation) {\n\t\t\t\tawait queueProtectedStreamingCustomMessage(self, appMessage, delivery);\n\t\t\t} else {\n\t\t\t\tself._queueAgentMessage(appMessage, delivery);\n\t\t\t}\n\t\t} else if (self.isStreaming || self._isPreparingRun) {\n\t\t\tself._pendingCustomMessages.push(appMessage);\n\t\t} else {\n\t\t\tappendDurableStageAdmission(self, appMessage);\n\t\t}\n\t} else if (options?.deliverAs === \"interrupt\" && options.triggerTurn) {\n\t\tconst interrupt = self._enqueueInterruptCustomMessage(appMessage, options);\n\t\tself._workflowStageAdmission?.trackAdmittedWork(interrupt);\n\t\tvoid interrupt.catch(() => {});\n\t} else if (\n\t\t(self.isStreaming || self._isPreparingRun) &&\n\t\toptions?.excludeFromContext === true &&\n\t\toptions.triggerTurn !== true &&\n\t\toptions.deliverAs === undefined\n\t) {\n\t\tappendDurableStageAdmission(self, appMessage);\n\t} else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn === false) {\n\t\tself._pendingCustomMessages.push(appMessage);\n\t} else if ((self.isStreaming || self._isPreparingRun) && useProtectedReconciliation) {\n\t\tawait queueProtectedStreamingCustomMessage(\n\t\t\tself,\n\t\t\tappMessage,\n\t\t\toptions?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\",\n\t\t);\n\t} else if ((self.isStreaming || self._isPreparingRun) && options?.persistWhenStreaming === true) {\n\t\tappendDurableStageAdmission(self, appMessage);\n\t} else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn !== false) {\n\t\tself._queueAgentMessage(appMessage, options?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\");\n\t} else if (useProtectedReconciliation && options?.triggerTurn === true && self._workflowStageAdmission) {\n\t\tawait queueProtectedStreamingCustomMessage(\n\t\t\tself,\n\t\t\tappMessage,\n\t\t\toptions?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\",\n\t\t);\n\t\tconst turn = self._runAgentPrompt([], undefined, undefined, false, appMessage);\n\t\tself._workflowStageAdmission.trackAdmittedWork(turn);\n\t\tvoid turn.catch(() => {});\n\t} else if (options?.triggerTurn) {\n\t\tconst promptMessage = useProtectedReconciliation\n\t\t\t? await admitProtectedStreamingCustomMessage(\n\t\t\t\t\tself,\n\t\t\t\t\tappMessage,\n\t\t\t\t\toptions?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\",\n\t\t\t\t)\n\t\t\t: appMessage;\n\t\t// Durable admission may yield while another turn takes ownership.\n\t\tif (useProtectedReconciliation && (self.isStreaming || self._isPreparingRun)) {\n\t\t\tself._queueAgentMessage(promptMessage, options.deliverAs === \"followUp\" ? \"followUp\" : \"steer\");\n\t\t\treturn;\n\t\t}\n\t\tlet resolveAdmission!: () => void;\n\t\tconst admission = new Promise<void>((resolve) => {\n\t\t\tresolveAdmission = resolve;\n\t\t});\n\t\tconst turn = self._runAgentPrompt(promptMessage, resolveAdmission);\n\t\ttry {\n\t\t\tawait Promise.race([admission, turn]);\n\t\t} catch (error) {\n\t\t\tif (!useProtectedReconciliation) throw error;\n\t\t\t// The visible card is already durable. Retry only its hidden turn so\n\t\t\t// lifecycle delivery never appends a second card for this occurrence.\n\t\t\tself._queueAgentMessage(promptMessage, options?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\");\n\t\t\tvoid self._continueQueuedAgentMessages().catch(() => {});\n\t\t}\n\t} else {\n\t\tappendDurableStageAdmission(self, appMessage);\n\t}\n}\n\nexport function _commitAdmittedCustomMessage<T>(\n\tthis: AgentSession,\n\tappMessage: CustomMessage<T>,\n\toptions?: SendMessageOptions,\n): Promise<void> {\n\treturn commitAdmittedCustomMessage(this, appMessage, options);\n}\n\n/** Commit a batch whose source generation already granted atomic admission. */\nexport async function commitAdmittedCustomMessages<T>(\n\tsession: AgentSession,\n\tappMessages: CustomMessage<T>[],\n\toptions?: SendMessagesOptions,\n): Promise<void> {\n\tconst owner = resolveWorkflowStageDeliveryTarget(session);\n\tif (owner !== session) return commitAdmittedCustomMessages(owner, appMessages, options);\n\tconst self = session;\n\tconst useProtectedReconciliation =\n\t\toptions?.persistWhenStreaming === true && options.triggerTurn === true && options.excludeFromContext !== true;\n\tconst delivery = options?.deliverAs === \"followUp\" ? \"followUp\" : \"steer\";\n\tif (options?.deliverAs === \"nextTurn\") {\n\t\tself._pendingNextTurnMessages.push(...appMessages);\n\t} else if (\n\t\tself._queuedMessagesPaused ||\n\t\t(self._subagentPolicy?.executionEnded !== undefined && options?.triggerTurn)\n\t) {\n\t\tif (options?.triggerTurn === true) {\n\t\t\tif (useProtectedReconciliation) {\n\t\t\t\tawait queueProtectedStreamingCustomMessages(self, appMessages, delivery);\n\t\t\t} else {\n\t\t\t\tfor (const item of appMessages) self._queueAgentMessage(item, delivery);\n\t\t\t}\n\t\t} else if (self.isStreaming || self._isPreparingRun) {\n\t\t\tself._pendingCustomMessages.push(...appMessages);\n\t\t} else {\n\t\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t\t}\n\t} else if (\n\t\t(self.isStreaming || self._isPreparingRun) &&\n\t\toptions?.excludeFromContext === true &&\n\t\toptions.triggerTurn !== true &&\n\t\toptions.deliverAs === undefined\n\t) {\n\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t} else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn === false) {\n\t\tself._pendingCustomMessages.push(...appMessages);\n\t} else if ((self.isStreaming || self._isPreparingRun) && useProtectedReconciliation) {\n\t\tawait queueProtectedStreamingCustomMessages(self, appMessages, delivery);\n\t} else if ((self.isStreaming || self._isPreparingRun) && options?.persistWhenStreaming === true) {\n\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t} else if ((self.isStreaming || self._isPreparingRun) && options?.triggerTurn !== false) {\n\t\tfor (const item of appMessages) self._queueAgentMessage(item, delivery);\n\t} else if (options?.triggerTurn) {\n\t\tif (useProtectedReconciliation) {\n\t\t\tawait triggerProtectedStreamingCustomMessages(self, appMessages, delivery);\n\t\t} else {\n\t\t\tconst turn = self._runAgentPrompt(appMessages);\n\t\t\tvoid turn.catch(() => {});\n\t\t}\n\t} else {\n\t\tfor (const item of appMessages) self._appendCustomMessage(item);\n\t}\n}\n\nexport function _commitAdmittedCustomMessages<T>(\n\tthis: AgentSession,\n\tappMessages: CustomMessage<T>[],\n\toptions?: SendMessagesOptions,\n): Promise<void> {\n\treturn commitAdmittedCustomMessages(this, appMessages, options);\n}\n\nexport const agentSessionCustomMessageCommitMethods = {\n\t_commitAdmittedCustomMessage,\n\t_commitAdmittedCustomMessages,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-events.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAe,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAW9F,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAI9B,MAAM,0BAA0B,CAAC;AAalC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-session-events.d.ts","sourceRoot":"","sources":["../../src/core/agent-session-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAe,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,KAAK,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAW9F,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAI9B,MAAM,0BAA0B,CAAC;AAalC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAYlE,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAIxE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMzD;AAID,4EAA4E;AAE5E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CA0D7F;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CA6B1F;AAED,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EAAE,GACtB,gBAAgB,GAAG,SAAS,CAQ9B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkM7F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CA0BvF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAQvF;AAED,wCAAwC;AAExC,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAMtD;AAED,0CAA0C;AAE1C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAMhF;AAED,8EAA8E;AAE9E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAS1F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,IAAI,CAchH;AAED,kDAAkD;AAElD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwE9F;AAED;;;;GAIG;AAEH,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAU7F;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAK7D;AAWD,gFAAgF;AAChF,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,YAAY,EACrB,KAAK,GAAE,oBAAmE,EAC1E,gBAAgB,CAAC,EAAE,MAAM,IAAI,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoFf;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;AAMD,uBAAuB;AAEvB,eAAO,MAAM,yBAAyB;iBACxB,YAAY,SAAS,oBAAoB,qBAAqB,MAAM,IAAI;;;;;;;;;;;;;;;;;CAmBrF,CAAC"}
|
|
@@ -10,6 +10,7 @@ import { STALE_EXTENSION_CONTEXT_MESSAGE } from "./extensions/stale-context.js";
|
|
|
10
10
|
import { normalizeMessageContent } from "./messages.js";
|
|
11
11
|
import { abortSessionWork, drainSessionReload, drainSessionWork, hasCallingSessionWork, } from "./session-lifecycle-work.js";
|
|
12
12
|
import { assertSettingsWrites, ownedSettingsManagers } from "./settings-write-ownership.js";
|
|
13
|
+
import { drainTerminalWorkflowSummaries } from "./workflow-summary-lifecycle.js";
|
|
13
14
|
export function _emit(event) {
|
|
14
15
|
for (const l of this._eventListeners) {
|
|
15
16
|
l(event);
|
|
@@ -367,6 +368,8 @@ export function _replaceMessageInPlace(target, replacement) {
|
|
|
367
368
|
/** Emit extension events based on agent events */
|
|
368
369
|
export async function _emitExtensionEvent(event) {
|
|
369
370
|
if (event.type === "agent_start") {
|
|
371
|
+
if (this._agentRunAbortRequested && !this._admittedRecoveryTurn)
|
|
372
|
+
this.agent.abort();
|
|
370
373
|
this._turnIndex = 0;
|
|
371
374
|
await this._extensionRunner.emit({ type: "agent_start" }, undefined, true);
|
|
372
375
|
}
|
|
@@ -521,6 +524,7 @@ export function closeAgentSession(session, event = { type: "session_shutdown", r
|
|
|
521
524
|
else
|
|
522
525
|
retired.resolve();
|
|
523
526
|
}
|
|
527
|
+
await attempt("terminal workflow summaries", () => drainTerminalWorkflowSummaries(session));
|
|
524
528
|
await attempt("active work", () => drainSessionWork(session));
|
|
525
529
|
await attempt("events", async () => {
|
|
526
530
|
await session._agentEventQueue.catch(() => { });
|