@makaio/framework 1.0.0-dev-1782480236258 → 1.0.0-dev-1783355411417
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/.makaio-build.json +2 -2
- package/dist/adapter-BRxCc72E.mjs +1 -0
- package/dist/adapters/index.d.mts +11 -2
- package/dist/adapters/index.mjs +1 -1
- package/dist/adapters/node.d.mts +1 -1
- package/dist/{base-orchestrator-Cw0vpNgB.d.mts → base-orchestrator-BNysGvaM.d.mts} +70 -2
- package/dist/bus/index.d.mts +39 -1
- package/dist/bus/index.mjs +1 -1
- package/dist/bus-D-ioC0DE.mjs +1 -0
- package/dist/bus-rgUFuO2a.mjs +2 -0
- package/dist/{client-BcfR-LJC.mjs → client-BgUjVbXX.mjs} +1 -1
- package/dist/contracts/adapter/index.d.mts +1 -1
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +1 -1
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/config/index.d.mts +6 -6
- package/dist/contracts/extension/index.d.mts +2 -2
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +14 -14
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/provider/index.d.mts +1 -1
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/workflow/index.d.mts +2 -2
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{definition-DePb3ke-.d.mts → definition-b9jyJqPD.d.mts} +1 -1
- package/dist/drizzle/0021_m_mr8e1j84.sql +3 -0
- package/dist/drizzle/0022_m_mr8i4ky3.sql +43 -0
- package/dist/drizzle/meta/_journal.json +14 -0
- package/dist/{handler-2bPhRn0u.mjs → handler-BFNvtv5t.mjs} +1 -1
- package/dist/handlers-v47Gbsr1.mjs +57 -0
- package/dist/hooks/index.d.mts +8 -0
- package/dist/hooks/index.mjs +1 -1
- package/dist/{index-BhOLtp0B.d.mts → index-31vR1sxk.d.mts} +47 -29
- package/dist/{index-Clqt7Nm3.d.mts → index-3J0HZlPH.d.mts} +372 -87
- package/dist/{index-D4gn93gL.d.mts → index-3X0368CL.d.mts} +12 -12
- package/dist/{index-gAFwNiJT.d.mts → index-BYfSAJRC.d.mts} +64 -0
- package/dist/{index-B1XsbrAr.d.mts → index-BwGfdbI0.d.mts} +6 -6
- package/dist/{index-D8ScOpus.d.mts → index-C5C1tk9f.d.mts} +222 -9
- package/dist/{index-Cvjnj7Zh.d.mts → index-C6Ys8pxt.d.mts} +5 -5
- package/dist/{index-mU2lnU7O.d.mts → index-CqCe7Phc.d.mts} +6 -6
- package/dist/{index-Cyi7y_aG.d.mts → index-D6aAzr32.d.mts} +20 -20
- package/dist/{index-wfSedMR9.d.mts → index-D7rWAEY0.d.mts} +2 -1
- package/dist/{index-CYHWOXUm.d.mts → index-DEzdNQum.d.mts} +1 -1
- package/dist/{index-DsLpP5ek.d.mts → index-DQYj8-53.d.mts} +1 -1
- package/dist/{index-0WhPbKnH.d.mts → index-DV4nRk0h.d.mts} +21 -21
- package/dist/{index-C6SLILCZ.d.mts → index-DvHYpi-J.d.mts} +378 -176
- package/dist/{index-BMbmoarE.d.mts → index-O08Q2ikz.d.mts} +8 -8
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/{lib-Ba55od_d.mjs → lib-BOmKyjWD.mjs} +1 -1
- package/dist/{lib-CM_BUxN8.mjs → lib-DLZYp5z3.mjs} +1 -1
- package/dist/{loop-gate-handlers-BLoGCWMQ.mjs → loop-gate-handlers-Bjmat-K3.mjs} +1 -1
- package/dist/{namespace-CGxFYDlK.d.mts → namespace-B4cV_pk3.d.mts} +32 -32
- package/dist/{namespace-LUNf8zo5.d.mts → namespace-D1_9WVCo.d.mts} +157 -0
- package/dist/{namespace-BsYKEMd8.d.mts → namespace-DAj_riOn.d.mts} +138 -0
- package/dist/{namespace-BeMGmLrp.d.mts → namespace-DhDY0juT.d.mts} +75 -9
- package/dist/{namespace-Bmi5bjm4.d.mts → namespace-DmqoDDRD.d.mts} +156 -20
- package/dist/namespace-dFBD2ZmS.mjs +1 -0
- package/dist/node/transports/index.d.mts +8 -0
- package/dist/node/transports/index.mjs +2 -2
- package/dist/orchestrator-shared-ChygCvR1.mjs +1 -0
- package/dist/{orchestrator-shared-ChOdIgh6.d.mts → orchestrator-shared-DFLb1otg.d.mts} +9 -3
- package/dist/package-BmRhhi-3.mjs +1 -0
- package/dist/package.json +1 -1
- package/dist/runtime-node/index.mjs +1 -1
- package/dist/schema-7aKBGB7S.mjs +1 -0
- package/dist/{schema-DHlTAy0N.mjs → schema-CHp6I33k.mjs} +1 -1
- package/dist/{schema-Bf_ZNjif.d.mts → schema-DLNBajAV.d.mts} +23 -1
- package/dist/{schemas-D512XweP.d.mts → schemas-DMMWmWjq.d.mts} +4 -4
- package/dist/schemas-DZGnr9Tl.mjs +1 -0
- package/dist/{schemas-C6TVJ80V2.d.mts → schemas-DuuVuhHX2.d.mts} +2 -2
- package/dist/schemas-ftgVeWIG.mjs +1 -0
- package/dist/scoped-bus-CZId-Df8.mjs +1 -0
- package/dist/services/adapter-subsystem/index.d.mts +2 -2
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/execution-target/index.d.mts +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/harness/index.d.mts +1 -1
- package/dist/services/harness/index.mjs +1 -1
- package/dist/services/index.d.mts +103 -34
- package/dist/services/index.mjs +1 -1
- package/dist/services/log-import/browser.d.mts +2 -2
- package/dist/services/log-import/index.d.mts +73 -6
- package/dist/services/log-import/index.mjs +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/log-import/log-import.mjs +1 -1
- package/dist/services/log-import/namespace.d.mts +56 -2
- package/dist/services/log-import/namespace.mjs +1 -1
- package/dist/services/log-import/schemas.d.mts +45 -1
- package/dist/services/log-import/schemas.mjs +1 -1
- package/dist/services/session/handlers/index.d.mts +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +8 -8
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.mjs +1 -1
- package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
- package/dist/services/session/orchestrator-testing/index.mjs +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/session-events/namespace.mjs +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/storage/schema.mjs +1 -1
- package/dist/services/session/testing/index.mjs +9 -4
- package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
- package/dist/services/session/turns/namespace.d.mts +1 -1
- package/dist/services/session/turns/namespace.mjs +1 -1
- package/dist/services/settings/namespace.d.mts +5 -5
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/subagent-template/index.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/turn/index.d.mts +1 -1
- package/dist/services/turn/namespace.d.mts +1 -1
- package/dist/services/turn/schemas.d.mts +89 -0
- package/dist/services/turn/schemas.mjs +1 -1
- package/dist/session-CKWfn3oc.mjs +1 -0
- package/dist/session-DCbJwYEU.mjs +69 -0
- package/dist/{session-lineage-5-wRBzuC.d.mts → session-lineage-DR-9DU-U.d.mts} +1 -1
- package/dist/storage/drizzle/index.d.mts +1 -1
- package/dist/storage/drizzle/index.mjs +1 -1
- package/dist/{tool-approval-service-DEQiipxj.mjs → tool-approval-service-MU_DmJsf.mjs} +1 -1
- package/dist/tools-BrNm-een.mjs +1 -0
- package/dist/{transition-CBjccCMw.d.mts → transition-Dq41YCkc.d.mts} +1 -1
- package/dist/{types-InWSdi-V.d.mts → types-BMlzmWp6.d.mts} +11 -1
- package/dist/{types-8rhArs_K.d.mts → types-C76EP81O.d.mts} +136 -93
- package/dist/ui-components/index.mjs +1 -1
- package/dist/{workflow-BqH6ar-D.mjs → workflow-C1z7I5CI.mjs} +1 -1
- package/dist/workflow-engine/index.d.mts +12 -12
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/package.json +1 -1
- package/dist/adapter-DaQqmKOJ.mjs +0 -1
- package/dist/bus-BgodbPl9.mjs +0 -2
- package/dist/bus-HgaFcCZ1.mjs +0 -1
- package/dist/handlers-BAycjV02.mjs +0 -41
- package/dist/namespace-C-piH3w4.mjs +0 -1
- package/dist/orchestrator-shared-Cxk3x8Vs.mjs +0 -1
- package/dist/package-B1AXe-oz.mjs +0 -1
- package/dist/schema-D6WAI8OL.mjs +0 -1
- package/dist/schemas-ArqQTC0Q.mjs +0 -1
- package/dist/schemas-uID59wR8.mjs +0 -1
- package/dist/scoped-bus-H3xMYR0E.mjs +0 -1
- package/dist/session-0nWT4st6.mjs +0 -39
- package/dist/session-DH-ja8Ka.mjs +0 -1
- package/dist/tools-DFOsOboy.mjs +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { C as WorkflowTriggerBlock, S as WorkflowStepBlockRun, _ as RegisteredTriggerBlock, a as TransitionActionInvocation, b as WorkflowBlockMetadata, c as TransitionConditionSchema, d as TransitionEventTypeSchema, f as TransitionRuleDefinition, g as RegisteredStepBlock, h as DelegateRoleNodeBlockRun, i as TransitionActionHandler, l as TransitionEvaluationContext, m as DelegateAgentNodeBlockRun, n as ExtensionTransitionRulesContribution, o as TransitionActionInvocationSchema, p as TransitionRuleDefinitionSchema, r as TransitionActionFactory, s as TransitionCondition, t as ExtensionTransitionActionsContribution, u as TransitionEventType, v as StationNodeBlockRun, x as WorkflowStepBlock, y as WorkflowBlockCollection } from "../../transition-
|
|
2
|
-
import { $i as WorkflowStateDefinition, $n as SpanRecord, $r as WorkflowArtifactBinding, $t as WorkflowWorkerBusAuthSchema, A as LoopGateHandler, Ai as WorkflowIterateNodeSchema, An as ArtifactQuerySourceSchema, Ar as WorkflowTriggerTypeRecord, At as WorkLogArtifactWrite, B as WorkflowTriggerDef, Bi as WorkflowNodeTypeSchema, Bn as ContextSourceSchema, Br as ExecutionListCursorSchema, Bt as WorkLogStats, C as NodeOptions, Ci as WorkflowGateNode, Cn as WorkflowProgressUpdate, Cr as WorkflowRunnerStepType, D as WorkflowStateAuthoringDefinition, Di as WorkflowIterateChainNode, Dn as ArtifactPublishTarget, Dr as createStepCancelSubject, E as WorkflowBuilder, Ei as WorkflowGateStatusSchema, En as WorkflowSubjects, Er as WorkflowStepTypeSchema, F as ExtensionWorkflowTrigger, Fi as WorkflowNode, Fn as ContextBundle, Fr as EXECUTIONS_BY_ARTIFACT_REFS_MAX_REFS, Ft as WorkLogExecutionSummarySchema, G as IterateHandler, Gi as WorkflowResolvedAgent, Gn as WorkflowError, Gr as ExecutionsByArtifactRefsQuery, Gt as WorkerContributionManifest, H as ArtifactPatch, Hi as WorkflowParallelModeSchema, Hn as ResolvedContextEntrySchema, Hr as ExecutionListQuerySchema, Ht as WorkLogUsageSummary, I as ExtractTriggerPayload, Ii as WorkflowNodeBase, In as ContextBundleSchema, Ir as EXECUTION_LIST_DEFAULT_LIMIT, It as WorkLogFrameEntry, J as StationStepContext, Ji as WorkflowResolvedRoleSchema, Jn as ExecutionLinkListQuery, Jr as ExtensionWorkflowTriggerSchema, Jt as WorkerContributionPackageRefSchema, K as PreviousStepOutput, Ki as WorkflowResolvedAgentSchema, Kn as WorkflowErrorCode, Kr as ExecutionsByArtifactRefsQuerySchema, Kt as WorkerContributionManifestSchema, L as ManualWorkflowTrigger, Li as WorkflowNodeBaseSchema, Ln as ContextPublishTarget, Lr as EXECUTION_LIST_MAX_LIMIT, Lt as WorkLogFrameEntrySchema, M as BusEventWorkflowTrigger, Mi as WorkflowListQuerySchema, Mn as BusEventPublishTargetSchema, Mr as BusEventTriggerSchema, Mt as WorkLogDynamicNodeMaterialization, N as CronTriggerPayload, Ni as WorkflowLoopNode, Nn as BusRequestSource, Nr as EXECUTIONS_BY_ARTIFACT_REFS_DEFAULT_LIMIT_PER_REF, Nt as WorkLogDynamicNodeMaterializationSchema, O as WorkflowZodSchemas, Oi as WorkflowIterateChainNodeSchema, On as ArtifactPublishTargetSchema, Or as createWorkflowCancelSubject, P as CronWorkflowTrigger, Pi as WorkflowLoopNodeSchema, Pn as BusRequestSourceSchema, Pr as EXECUTIONS_BY_ARTIFACT_REFS_MAX_LIMIT_PER_REF, Pt as WorkLogExecutionSummary, Q as WorkflowStateContext, Qi as WorkflowSourceLocationSchema, Qn as ExecutionLinkTypeSchema, Qr as LoopGateOutcomeSchema, Qt as WorkflowWorkerBusAuth, R as WebhookTriggerPayload, Ri as WorkflowNodeSchema, Rn as ContextPublishTargetSchema, Rr as EXECUTION_LIST_MIN_LIMIT, Rt as WorkLogGateEvent, S as LoopOptions, Si as WorkflowGateInstanceSchema, Sn as WorkflowNamespace, Sr as WorkflowCancelSubject, T as ParallelOptions, Ti as WorkflowGateStatus, Tn as WorkflowSchemas, Tr as WorkflowStepType, U as ArtifactUpdateOperation, Ui as WorkflowParallelNode, Un as JsonPatchOperation, Ur as ExecutionStatus, Ut as WorkLogUsageSummarySchema, V as ArtifactContext, Vi as WorkflowParallelMode, Vn as ResolvedContextEntry, Vr as ExecutionListQuery, Vt as WorkLogStatsSchema, W as ArtifactUpdater, Wi as WorkflowParallelNodeSchema, Wn as JsonPatchOperationSchema, Wr as ExecutionStatusSchema, Wt as IWorkflowRunner, X as WorkflowContext, Xi as WorkflowSequenceNodeSchema, Xn as ExecutionLinkSchema, Xr as GateInstanceListQuerySchema, Xt as WorkflowRunResultSchema, Y as StepContext, Yi as WorkflowSequenceNode, Yn as ExecutionLinkListQuerySchema, Yr as GateInstanceListQuery, Yt as WorkflowRunResult, Z as WorkflowContextBase, Zi as WorkflowSourceLocation, Zn as ExecutionLinkType, Zr as LoopGateOutcome, Zt as WorkflowRunnerRunOptions, _ as BuiltWorkflow, _i as WorkflowExecutionScope, _n as WorkflowRunContextSchema, _r as TokenUsage, a as defineWorkflowBundle, ai as WorkflowDefinition, an as ProjectedEdgeKind, ar as StepCancelPayloadSchema, b as IterateOptions, bi as WorkflowFrameStateSchema, bn as parseArtifactRef, br as WorkflowCancelPayload, c as delegateToRole, ci as WorkflowDefinitionSchema, cn as ProjectedWorkflowGraph, cr as StepRunConfigSchema, d as iterateChain, di as WorkflowDelegateRoleNode, dn as projectWorkflowGraph, dr as StepRunnerBusAuth, ea as WorkflowStateDefinitionSchema, ei as WorkflowArtifactBindingSchema, en as WorkflowWorkerConfig, er as SpanRecordSchema, f as loop, fi as WorkflowDelegateRoleNodeSchema, fn as WalkContext, fr as StepRunnerBusAuthSchema, g as ArtifactBindingOptions, gi as WorkflowExecutionSchema, gn as WorkflowRunContext, gr as StepTelemetrySchema, h as AgentConfig, hi as WorkflowExecution, hn as walkWorkflowDefinition, hr as StepTelemetry, i as WorkflowBundle, ia as WorkflowTriggerSchema, ii as WorkflowConditionSchema, in as ProjectedEdge, ir as StepCancelPayload, j as validateNoNestedLoops, ji as WorkflowListQuery, jn as BusEventPublishTarget, jr as BusEventTrigger, jt as WorkLogArtifactWriteSchema, k as LoopGateContext, ki as WorkflowIterateNode, kn as ArtifactQuerySource, kr as IWorkflowTriggerTypeRegistry, l as gate, li as WorkflowDelegateAgentNode, ln as WorkflowDefinitionPath, lr as StepRunResult, m as zodSchemaToJsonRecord, mi as WorkflowDynamicRegionSchema, mn as WorkflowNodeVisitor, mr as StepRunnerPlatformDefaultsSchema, n as ExecutionHintsSchema, na as WorkflowStationNodeSchema, ni as WorkflowArtifactWriteDeclarationSchema, nn as WorkflowWorkerSource, nr as SpanStatusSchema, o as defineWorkflow, oi as WorkflowDefinitionProvenance, on as ProjectedNode, or as StepCancelSubject, p as station, pi as WorkflowDynamicRegion, pn as WalkRelationship, pr as StepRunnerPlatformDefaults, q as StationHandler, qi as WorkflowResolvedRole, qn as ExecutionLink, qr as ExtensionWorkflowTrigger$1, qt as WorkerContributionPackageRef, r as ExecutionSourceHintSchema, ra as WorkflowTrigger, ri as WorkflowCondition, rn as WorkflowWorkerSourceSchema, rr as IStepRunner, s as delegateToAgent, si as WorkflowDefinitionProvenanceSchema, sn as ProjectedNodeRole, sr as StepRunConfig, t as ExecutionHints, ta as WorkflowStationNode, ti as WorkflowArtifactWriteDeclaration, tn as WorkflowWorkerConfigSchema, tr as SpanStatus, u as iterate, ui as WorkflowDelegateAgentNodeSchema, un as WorkflowDefinitionPathSegment, ur as StepRunResultSchema, v as DefineWorkflowOptions, vi as WorkflowExecutionScopeSchema, vn as WorkflowArtifactRef, vr as TokenUsageSchema, w as ParallelMode, wi as WorkflowGateNodeSchema, wn as WorkflowProgressUpdateSchema, wr as WorkflowRunnerStepTypeSchema, x as LoopGateRegistration, xi as WorkflowGateInstance, xn as serializeArtifactRef, xr as WorkflowCancelPayloadSchema, y as GateOptions, yi as WorkflowFrameState, yn as WorkflowArtifactRefSchema, yr as WORKFLOW_CANCELLED_REASON, z as WebhookWorkflowTrigger, zi as WorkflowNodeType, zn as ContextSource, zr as ExecutionListCursor, zt as WorkLogGateEventSchema } from "../../index-
|
|
1
|
+
import { C as WorkflowTriggerBlock, S as WorkflowStepBlockRun, _ as RegisteredTriggerBlock, a as TransitionActionInvocation, b as WorkflowBlockMetadata, c as TransitionConditionSchema, d as TransitionEventTypeSchema, f as TransitionRuleDefinition, g as RegisteredStepBlock, h as DelegateRoleNodeBlockRun, i as TransitionActionHandler, l as TransitionEvaluationContext, m as DelegateAgentNodeBlockRun, n as ExtensionTransitionRulesContribution, o as TransitionActionInvocationSchema, p as TransitionRuleDefinitionSchema, r as TransitionActionFactory, s as TransitionCondition, t as ExtensionTransitionActionsContribution, u as TransitionEventType, v as StationNodeBlockRun, x as WorkflowStepBlock, y as WorkflowBlockCollection } from "../../transition-Dq41YCkc.mjs";
|
|
2
|
+
import { $i as WorkflowStateDefinition, $n as SpanRecord, $r as WorkflowArtifactBinding, $t as WorkflowWorkerBusAuthSchema, A as LoopGateHandler, Ai as WorkflowIterateNodeSchema, An as ArtifactQuerySourceSchema, Ar as WorkflowTriggerTypeRecord, At as WorkLogArtifactWrite, B as WorkflowTriggerDef, Bi as WorkflowNodeTypeSchema, Bn as ContextSourceSchema, Br as ExecutionListCursorSchema, Bt as WorkLogStats, C as NodeOptions, Ci as WorkflowGateNode, Cn as WorkflowProgressUpdate, Cr as WorkflowRunnerStepType, D as WorkflowStateAuthoringDefinition, Di as WorkflowIterateChainNode, Dn as ArtifactPublishTarget, Dr as createStepCancelSubject, E as WorkflowBuilder, Ei as WorkflowGateStatusSchema, En as WorkflowSubjects, Er as WorkflowStepTypeSchema, F as ExtensionWorkflowTrigger, Fi as WorkflowNode, Fn as ContextBundle, Fr as EXECUTIONS_BY_ARTIFACT_REFS_MAX_REFS, Ft as WorkLogExecutionSummarySchema, G as IterateHandler, Gi as WorkflowResolvedAgent, Gn as WorkflowError, Gr as ExecutionsByArtifactRefsQuery, Gt as WorkerContributionManifest, H as ArtifactPatch, Hi as WorkflowParallelModeSchema, Hn as ResolvedContextEntrySchema, Hr as ExecutionListQuerySchema, Ht as WorkLogUsageSummary, I as ExtractTriggerPayload, Ii as WorkflowNodeBase, In as ContextBundleSchema, Ir as EXECUTION_LIST_DEFAULT_LIMIT, It as WorkLogFrameEntry, J as StationStepContext, Ji as WorkflowResolvedRoleSchema, Jn as ExecutionLinkListQuery, Jr as ExtensionWorkflowTriggerSchema, Jt as WorkerContributionPackageRefSchema, K as PreviousStepOutput, Ki as WorkflowResolvedAgentSchema, Kn as WorkflowErrorCode, Kr as ExecutionsByArtifactRefsQuerySchema, Kt as WorkerContributionManifestSchema, L as ManualWorkflowTrigger, Li as WorkflowNodeBaseSchema, Ln as ContextPublishTarget, Lr as EXECUTION_LIST_MAX_LIMIT, Lt as WorkLogFrameEntrySchema, M as BusEventWorkflowTrigger, Mi as WorkflowListQuerySchema, Mn as BusEventPublishTargetSchema, Mr as BusEventTriggerSchema, Mt as WorkLogDynamicNodeMaterialization, N as CronTriggerPayload, Ni as WorkflowLoopNode, Nn as BusRequestSource, Nr as EXECUTIONS_BY_ARTIFACT_REFS_DEFAULT_LIMIT_PER_REF, Nt as WorkLogDynamicNodeMaterializationSchema, O as WorkflowZodSchemas, Oi as WorkflowIterateChainNodeSchema, On as ArtifactPublishTargetSchema, Or as createWorkflowCancelSubject, P as CronWorkflowTrigger, Pi as WorkflowLoopNodeSchema, Pn as BusRequestSourceSchema, Pr as EXECUTIONS_BY_ARTIFACT_REFS_MAX_LIMIT_PER_REF, Pt as WorkLogExecutionSummary, Q as WorkflowStateContext, Qi as WorkflowSourceLocationSchema, Qn as ExecutionLinkTypeSchema, Qr as LoopGateOutcomeSchema, Qt as WorkflowWorkerBusAuth, R as WebhookTriggerPayload, Ri as WorkflowNodeSchema, Rn as ContextPublishTargetSchema, Rr as EXECUTION_LIST_MIN_LIMIT, Rt as WorkLogGateEvent, S as LoopOptions, Si as WorkflowGateInstanceSchema, Sn as WorkflowNamespace, Sr as WorkflowCancelSubject, T as ParallelOptions, Ti as WorkflowGateStatus, Tn as WorkflowSchemas, Tr as WorkflowStepType, U as ArtifactUpdateOperation, Ui as WorkflowParallelNode, Un as JsonPatchOperation, Ur as ExecutionStatus, Ut as WorkLogUsageSummarySchema, V as ArtifactContext, Vi as WorkflowParallelMode, Vn as ResolvedContextEntry, Vr as ExecutionListQuery, Vt as WorkLogStatsSchema, W as ArtifactUpdater, Wi as WorkflowParallelNodeSchema, Wn as JsonPatchOperationSchema, Wr as ExecutionStatusSchema, Wt as IWorkflowRunner, X as WorkflowContext, Xi as WorkflowSequenceNodeSchema, Xn as ExecutionLinkSchema, Xr as GateInstanceListQuerySchema, Xt as WorkflowRunResultSchema, Y as StepContext, Yi as WorkflowSequenceNode, Yn as ExecutionLinkListQuerySchema, Yr as GateInstanceListQuery, Yt as WorkflowRunResult, Z as WorkflowContextBase, Zi as WorkflowSourceLocation, Zn as ExecutionLinkType, Zr as LoopGateOutcome, Zt as WorkflowRunnerRunOptions, _ as BuiltWorkflow, _i as WorkflowExecutionScope, _n as WorkflowRunContextSchema, _r as TokenUsage, a as defineWorkflowBundle, ai as WorkflowDefinition, an as ProjectedEdgeKind, ar as StepCancelPayloadSchema, b as IterateOptions, bi as WorkflowFrameStateSchema, bn as parseArtifactRef, br as WorkflowCancelPayload, c as delegateToRole, ci as WorkflowDefinitionSchema, cn as ProjectedWorkflowGraph, cr as StepRunConfigSchema, d as iterateChain, di as WorkflowDelegateRoleNode, dn as projectWorkflowGraph, dr as StepRunnerBusAuth, ea as WorkflowStateDefinitionSchema, ei as WorkflowArtifactBindingSchema, en as WorkflowWorkerConfig, er as SpanRecordSchema, f as loop, fi as WorkflowDelegateRoleNodeSchema, fn as WalkContext, fr as StepRunnerBusAuthSchema, g as ArtifactBindingOptions, gi as WorkflowExecutionSchema, gn as WorkflowRunContext, gr as StepTelemetrySchema, h as AgentConfig, hi as WorkflowExecution, hn as walkWorkflowDefinition, hr as StepTelemetry, i as WorkflowBundle, ia as WorkflowTriggerSchema, ii as WorkflowConditionSchema, in as ProjectedEdge, ir as StepCancelPayload, j as validateNoNestedLoops, ji as WorkflowListQuery, jn as BusEventPublishTarget, jr as BusEventTrigger, jt as WorkLogArtifactWriteSchema, k as LoopGateContext, ki as WorkflowIterateNode, kn as ArtifactQuerySource, kr as IWorkflowTriggerTypeRegistry, l as gate, li as WorkflowDelegateAgentNode, ln as WorkflowDefinitionPath, lr as StepRunResult, m as zodSchemaToJsonRecord, mi as WorkflowDynamicRegionSchema, mn as WorkflowNodeVisitor, mr as StepRunnerPlatformDefaultsSchema, n as ExecutionHintsSchema, na as WorkflowStationNodeSchema, ni as WorkflowArtifactWriteDeclarationSchema, nn as WorkflowWorkerSource, nr as SpanStatusSchema, o as defineWorkflow, oi as WorkflowDefinitionProvenance, on as ProjectedNode, or as StepCancelSubject, p as station, pi as WorkflowDynamicRegion, pn as WalkRelationship, pr as StepRunnerPlatformDefaults, q as StationHandler, qi as WorkflowResolvedRole, qn as ExecutionLink, qr as ExtensionWorkflowTrigger$1, qt as WorkerContributionPackageRef, r as ExecutionSourceHintSchema, ra as WorkflowTrigger, ri as WorkflowCondition, rn as WorkflowWorkerSourceSchema, rr as IStepRunner, s as delegateToAgent, si as WorkflowDefinitionProvenanceSchema, sn as ProjectedNodeRole, sr as StepRunConfig, t as ExecutionHints, ta as WorkflowStationNode, ti as WorkflowArtifactWriteDeclaration, tn as WorkflowWorkerConfigSchema, tr as SpanStatus, u as iterate, ui as WorkflowDelegateAgentNodeSchema, un as WorkflowDefinitionPathSegment, ur as StepRunResultSchema, v as DefineWorkflowOptions, vi as WorkflowExecutionScopeSchema, vn as WorkflowArtifactRef, vr as TokenUsageSchema, w as ParallelMode, wi as WorkflowGateNodeSchema, wn as WorkflowProgressUpdateSchema, wr as WorkflowRunnerStepTypeSchema, x as LoopGateRegistration, xi as WorkflowGateInstance, xn as serializeArtifactRef, xr as WorkflowCancelPayloadSchema, y as GateOptions, yi as WorkflowFrameState, yn as WorkflowArtifactRefSchema, yr as WORKFLOW_CANCELLED_REASON, z as WebhookWorkflowTrigger, zi as WorkflowNodeType, zn as ContextSource, zr as ExecutionListCursor, zt as WorkLogGateEventSchema } from "../../index-C5C1tk9f.mjs";
|
|
3
3
|
export { AgentConfig, ArtifactBindingOptions, ArtifactContext, ArtifactPatch, ArtifactPublishTarget, ArtifactPublishTargetSchema, ArtifactQuerySource, ArtifactQuerySourceSchema, ArtifactUpdateOperation, ArtifactUpdater, BuiltWorkflow, BusEventPublishTarget, BusEventPublishTargetSchema, BusEventTrigger, BusEventTriggerSchema, BusEventWorkflowTrigger, BusRequestSource, BusRequestSourceSchema, ContextBundle, ContextBundleSchema, ContextPublishTarget, ContextPublishTargetSchema, ContextSource, ContextSourceSchema, CronTriggerPayload, CronWorkflowTrigger, DefineWorkflowOptions, DelegateAgentNodeBlockRun, DelegateRoleNodeBlockRun, EXECUTIONS_BY_ARTIFACT_REFS_DEFAULT_LIMIT_PER_REF, EXECUTIONS_BY_ARTIFACT_REFS_MAX_LIMIT_PER_REF, EXECUTIONS_BY_ARTIFACT_REFS_MAX_REFS, EXECUTION_LIST_DEFAULT_LIMIT, EXECUTION_LIST_MAX_LIMIT, EXECUTION_LIST_MIN_LIMIT, ExecutionHints, ExecutionHintsSchema, ExecutionLink, ExecutionLinkListQuery, ExecutionLinkListQuerySchema, ExecutionLinkSchema, ExecutionLinkType, ExecutionLinkTypeSchema, ExecutionListCursor, ExecutionListCursorSchema, ExecutionListQuery, ExecutionListQuerySchema, ExecutionSourceHintSchema, ExecutionStatus, ExecutionStatusSchema, ExecutionsByArtifactRefsQuery, ExecutionsByArtifactRefsQuerySchema, ExtensionTransitionActionsContribution, ExtensionTransitionRulesContribution, ExtensionWorkflowTrigger, ExtensionWorkflowTriggerSchema, ExtensionWorkflowTrigger$1 as ExtensionWorkflowTriggerShape, ExtractTriggerPayload, GateInstanceListQuery, GateInstanceListQuerySchema, GateOptions, IStepRunner, IWorkflowRunner, IWorkflowTriggerTypeRegistry, IterateHandler, IterateOptions, JsonPatchOperation, JsonPatchOperationSchema, LoopGateContext, LoopGateHandler, LoopGateOutcome, LoopGateOutcomeSchema, LoopGateRegistration, LoopOptions, ManualWorkflowTrigger, NodeOptions, ParallelMode, ParallelOptions, PreviousStepOutput, ProjectedEdge, ProjectedEdgeKind, ProjectedNode, ProjectedNodeRole, ProjectedWorkflowGraph, RegisteredStepBlock, RegisteredTriggerBlock, ResolvedContextEntry, ResolvedContextEntrySchema, SpanRecord, SpanRecordSchema, SpanStatus, SpanStatusSchema, StationHandler, StationNodeBlockRun, StationStepContext, StepCancelPayload, StepCancelPayloadSchema, StepCancelSubject, StepContext, StepRunConfig, StepRunConfigSchema, StepRunResult, StepRunResultSchema, StepRunnerBusAuth, StepRunnerBusAuthSchema, StepRunnerPlatformDefaults, StepRunnerPlatformDefaultsSchema, StepTelemetry, StepTelemetrySchema, TokenUsage, TokenUsageSchema, TransitionActionFactory, TransitionActionHandler, TransitionActionInvocation, TransitionActionInvocationSchema, TransitionCondition, TransitionConditionSchema, TransitionEvaluationContext, TransitionEventType, TransitionEventTypeSchema, TransitionRuleDefinition, TransitionRuleDefinitionSchema, WORKFLOW_CANCELLED_REASON, WalkContext, WalkRelationship, WebhookTriggerPayload, WebhookWorkflowTrigger, WorkLogArtifactWrite, WorkLogArtifactWriteSchema, WorkLogDynamicNodeMaterialization, WorkLogDynamicNodeMaterializationSchema, WorkLogExecutionSummary, WorkLogExecutionSummarySchema, WorkLogFrameEntry, WorkLogFrameEntrySchema, WorkLogGateEvent, WorkLogGateEventSchema, WorkLogStats, WorkLogStatsSchema, WorkLogUsageSummary, WorkLogUsageSummarySchema, WorkerContributionManifest, WorkerContributionManifestSchema, WorkerContributionPackageRef, WorkerContributionPackageRefSchema, WorkflowArtifactBinding, WorkflowArtifactBindingSchema, WorkflowArtifactRef, WorkflowArtifactRefSchema, WorkflowArtifactWriteDeclaration, WorkflowArtifactWriteDeclarationSchema, WorkflowBlockCollection, WorkflowBlockMetadata, WorkflowBuilder, WorkflowBundle, WorkflowCancelPayload, WorkflowCancelPayloadSchema, WorkflowCancelSubject, WorkflowCondition, WorkflowConditionSchema, WorkflowContext, WorkflowContextBase, WorkflowDefinition, WorkflowDefinitionPath, WorkflowDefinitionPathSegment, WorkflowDefinitionProvenance, WorkflowDefinitionProvenanceSchema, WorkflowDefinitionSchema, WorkflowDelegateAgentNode, WorkflowDelegateAgentNodeSchema, WorkflowDelegateRoleNode, WorkflowDelegateRoleNodeSchema, WorkflowDynamicRegion, WorkflowDynamicRegionSchema, WorkflowError, WorkflowErrorCode, WorkflowErrorCode as WorkflowErrorCodeType, WorkflowExecution, WorkflowExecutionSchema, WorkflowExecutionScope, WorkflowExecutionScopeSchema, WorkflowFrameState, WorkflowFrameStateSchema, WorkflowGateInstance, WorkflowGateInstanceSchema, WorkflowGateNode, WorkflowGateNodeSchema, WorkflowGateStatus, WorkflowGateStatusSchema, WorkflowIterateChainNode, WorkflowIterateChainNodeSchema, WorkflowIterateNode, WorkflowIterateNodeSchema, WorkflowListQuery, WorkflowListQuerySchema, WorkflowLoopNode, WorkflowLoopNodeSchema, WorkflowNamespace, WorkflowNode, WorkflowNodeBase, WorkflowNodeBaseSchema, WorkflowNodeSchema, WorkflowNodeType, WorkflowNodeTypeSchema, WorkflowNodeVisitor, WorkflowParallelMode, WorkflowParallelModeSchema, WorkflowParallelNode, WorkflowParallelNodeSchema, WorkflowProgressUpdate, WorkflowProgressUpdateSchema, WorkflowResolvedAgent, WorkflowResolvedAgentSchema, WorkflowResolvedRole, WorkflowResolvedRoleSchema, WorkflowRunContext, WorkflowRunContextSchema, WorkflowRunResult, WorkflowRunResultSchema, WorkflowRunnerRunOptions, WorkflowRunnerStepType, WorkflowRunnerStepTypeSchema, WorkflowSchemas, WorkflowSequenceNode, WorkflowSequenceNodeSchema, WorkflowSourceLocation, WorkflowSourceLocationSchema, WorkflowStateAuthoringDefinition, WorkflowStateContext, WorkflowStateDefinition, WorkflowStateDefinitionSchema, WorkflowStationNode, WorkflowStationNodeSchema, WorkflowStepBlock, WorkflowStepBlockRun, WorkflowStepType, WorkflowStepTypeSchema, WorkflowSubjects, WorkflowTrigger, WorkflowTriggerBlock, WorkflowTriggerDef, WorkflowTriggerSchema, WorkflowTriggerTypeRecord, WorkflowWorkerBusAuth, WorkflowWorkerBusAuthSchema, WorkflowWorkerConfig, WorkflowWorkerConfigSchema, WorkflowWorkerSource, WorkflowWorkerSourceSchema, WorkflowZodSchemas, createStepCancelSubject, createWorkflowCancelSubject, defineWorkflow, defineWorkflowBundle, delegateToAgent, delegateToRole, gate, iterate, iterateChain, loop, parseArtifactRef, projectWorkflowGraph, serializeArtifactRef, station, validateNoNestedLoops, walkWorkflowDefinition, zodSchemaToJsonRecord };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,$t as t,A as n,At as r,B as i,Bt as a,C as o,Ct as s,D as c,Dt as l,E as u,Et as d,F as f,Ft as p,G as m,Gt as h,H as g,Ht as _,I as v,It as y,J as b,Jt as x,K as S,Kt as C,L as w,Lt as T,M as E,Mt as D,N as O,Nt as k,O as A,Ot as j,P as M,Pt as N,Q as P,Qt as F,R as I,Rt as L,S as R,St as z,T as B,Tt as V,U as H,Ut as U,V as W,Vt as G,W as K,Wt as q,X as J,Xt as Y,Y as X,Yt as Z,Z as Q,Zt as $,_ as ee,_t as te,a as ne,an as re,at as ie,b as ae,bt as oe,c as se,cn as ce,ct as le,d as ue,dt as de,en as fe,et as pe,f as me,ft as he,g as ge,gt as _e,h as ve,ht as ye,i as be,in as xe,it as Se,j as Ce,jt as we,k as Te,kt as Ee,l as De,ln as Oe,lt as ke,m as Ae,mt as je,n as Me,nn as Ne,nt as Pe,o as Fe,on as Ie,ot as Le,p as Re,pt as ze,q as Be,qt as Ve,r as He,rn as Ue,rt as We,s as Ge,sn as Ke,st as qe,t as Je,tn as Ye,tt as Xe,u as Ze,un as Qe,ut as $e,v as et,vt as tt,w as nt,wt as rt,x as it,xt as at,y as ot,yt as st,z as ct,zt as lt}from"../../workflow-
|
|
1
|
+
import{$ as e,$t as t,A as n,At as r,B as i,Bt as a,C as o,Ct as s,D as c,Dt as l,E as u,Et as d,F as f,Ft as p,G as m,Gt as h,H as g,Ht as _,I as v,It as y,J as b,Jt as x,K as S,Kt as C,L as w,Lt as T,M as E,Mt as D,N as O,Nt as k,O as A,Ot as j,P as M,Pt as N,Q as P,Qt as F,R as I,Rt as L,S as R,St as z,T as B,Tt as V,U as H,Ut as U,V as W,Vt as G,W as K,Wt as q,X as J,Xt as Y,Y as X,Yt as Z,Z as Q,Zt as $,_ as ee,_t as te,a as ne,an as re,at as ie,b as ae,bt as oe,c as se,cn as ce,ct as le,d as ue,dt as de,en as fe,et as pe,f as me,ft as he,g as ge,gt as _e,h as ve,ht as ye,i as be,in as xe,it as Se,j as Ce,jt as we,k as Te,kt as Ee,l as De,ln as Oe,lt as ke,m as Ae,mt as je,n as Me,nn as Ne,nt as Pe,o as Fe,on as Ie,ot as Le,p as Re,pt as ze,q as Be,qt as Ve,r as He,rn as Ue,rt as We,s as Ge,sn as Ke,st as qe,t as Je,tn as Ye,tt as Xe,u as Ze,un as Qe,ut as $e,v as et,vt as tt,w as nt,wt as rt,x as it,xt as at,y as ot,yt as st,z as ct,zt as lt}from"../../workflow-C1z7I5CI.mjs";export{W as ArtifactPublishTargetSchema,g as ArtifactQuerySourceSchema,H as BusEventPublishTargetSchema,_e as BusEventTriggerSchema,Ge as BusEventWorkflowTrigger,K as BusRequestSourceSchema,m as ContextBundleSchema,S as ContextPublishTargetSchema,Be as ContextSourceSchema,se as CronWorkflowTrigger,te as EXECUTIONS_BY_ARTIFACT_REFS_DEFAULT_LIMIT_PER_REF,tt as EXECUTIONS_BY_ARTIFACT_REFS_MAX_LIMIT_PER_REF,st as EXECUTIONS_BY_ARTIFACT_REFS_MAX_REFS,oe as EXECUTION_LIST_DEFAULT_LIMIT,at as EXECUTION_LIST_MAX_LIMIT,z as EXECUTION_LIST_MIN_LIMIT,Oe as ExecutionHintsSchema,P as ExecutionLinkListQuerySchema,e as ExecutionLinkSchema,pe as ExecutionLinkTypeSchema,s as ExecutionListCursorSchema,rt as ExecutionListQuerySchema,Qe as ExecutionSourceHintSchema,V as ExecutionStatusSchema,d as ExecutionsByArtifactRefsQuerySchema,De as ExtensionWorkflowTrigger,l as ExtensionWorkflowTriggerSchema,j as GateInstanceListQuerySchema,X as JsonPatchOperationSchema,Ee as LoopGateOutcomeSchema,Ze as ManualWorkflowTrigger,b as ResolvedContextEntrySchema,Xe as SpanRecordSchema,Pe as SpanStatusSchema,We as StepCancelPayloadSchema,Se as StepRunConfigSchema,ie as StepRunResultSchema,Le as StepRunnerBusAuthSchema,qe as StepRunnerPlatformDefaultsSchema,le as StepTelemetrySchema,ke as TokenUsageSchema,Je as TransitionActionInvocationSchema,Me as TransitionConditionSchema,He as TransitionEventTypeSchema,be as TransitionRuleDefinitionSchema,$e as WORKFLOW_CANCELLED_REASON,ue as WebhookWorkflowTrigger,c as WorkLogArtifactWriteSchema,A as WorkLogDynamicNodeMaterializationSchema,Te as WorkLogExecutionSummarySchema,n as WorkLogFrameEntrySchema,Ce as WorkLogGateEventSchema,E as WorkLogStatsSchema,O as WorkLogUsageSummarySchema,f as WorkerContributionManifestSchema,v as WorkerContributionPackageRefSchema,r as WorkflowArtifactBindingSchema,Ie as WorkflowArtifactRefSchema,we as WorkflowArtifactWriteDeclarationSchema,de as WorkflowCancelPayloadSchema,D as WorkflowConditionSchema,k as WorkflowDefinitionProvenanceSchema,N as WorkflowDefinitionSchema,p as WorkflowDelegateAgentNodeSchema,y as WorkflowDelegateRoleNodeSchema,T as WorkflowDynamicRegionSchema,J as WorkflowError,Q as WorkflowErrorCode,L as WorkflowExecutionSchema,lt as WorkflowExecutionScopeSchema,a as WorkflowFrameStateSchema,G as WorkflowGateInstanceSchema,_ as WorkflowGateNodeSchema,U as WorkflowGateStatusSchema,q as WorkflowIterateChainNodeSchema,h as WorkflowIterateNodeSchema,C as WorkflowListQuerySchema,Ve as WorkflowLoopNodeSchema,o as WorkflowNamespace,x as WorkflowNodeBaseSchema,Z as WorkflowNodeSchema,Y as WorkflowNodeTypeSchema,$ as WorkflowParallelModeSchema,F as WorkflowParallelNodeSchema,nt as WorkflowProgressUpdateSchema,t as WorkflowResolvedAgentSchema,fe as WorkflowResolvedRoleSchema,M as WorkflowRunContextSchema,w as WorkflowRunResultSchema,he as WorkflowRunnerStepTypeSchema,B as WorkflowSchemas,Ye as WorkflowSequenceNodeSchema,Ne as WorkflowSourceLocationSchema,Ue as WorkflowStateDefinitionSchema,xe as WorkflowStationNodeSchema,ze as WorkflowStepTypeSchema,u as WorkflowSubjects,re as WorkflowTriggerSchema,I as WorkflowWorkerBusAuthSchema,ct as WorkflowWorkerConfigSchema,i as WorkflowWorkerSourceSchema,je as createStepCancelSubject,ye as createWorkflowCancelSubject,Fe as defineWorkflow,ne as defineWorkflowBundle,me as delegateToAgent,Re as delegateToRole,Ae as gate,ve as iterate,ge as iterateChain,ee as loop,Ke as parseArtifactRef,it as projectWorkflowGraph,ce as serializeArtifactRef,et as station,ae as validateNoNestedLoops,R as walkWorkflowDefinition,ot as zodSchemaToJsonRecord};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
WITH ranked_messages AS (
|
|
2
|
+
SELECT
|
|
3
|
+
message_id,
|
|
4
|
+
FIRST_VALUE(message_id) OVER (
|
|
5
|
+
PARTITION BY adapter_message_id, session_id
|
|
6
|
+
ORDER BY timestamp, message_id
|
|
7
|
+
) AS keeper_message_id,
|
|
8
|
+
ROW_NUMBER() OVER (
|
|
9
|
+
PARTITION BY adapter_message_id, session_id
|
|
10
|
+
ORDER BY timestamp, message_id
|
|
11
|
+
) AS duplicate_rank
|
|
12
|
+
FROM messages
|
|
13
|
+
WHERE adapter_message_id IS NOT NULL
|
|
14
|
+
)
|
|
15
|
+
UPDATE messages
|
|
16
|
+
SET edit_of = (
|
|
17
|
+
SELECT keeper_message_id
|
|
18
|
+
FROM ranked_messages
|
|
19
|
+
WHERE ranked_messages.message_id = messages.edit_of
|
|
20
|
+
)
|
|
21
|
+
WHERE edit_of IN (
|
|
22
|
+
SELECT message_id
|
|
23
|
+
FROM ranked_messages
|
|
24
|
+
WHERE duplicate_rank > 1
|
|
25
|
+
);--> statement-breakpoint
|
|
26
|
+
WITH ranked_messages AS (
|
|
27
|
+
SELECT
|
|
28
|
+
message_id,
|
|
29
|
+
ROW_NUMBER() OVER (
|
|
30
|
+
PARTITION BY adapter_message_id, session_id
|
|
31
|
+
ORDER BY timestamp, message_id
|
|
32
|
+
) AS duplicate_rank
|
|
33
|
+
FROM messages
|
|
34
|
+
WHERE adapter_message_id IS NOT NULL
|
|
35
|
+
)
|
|
36
|
+
DELETE FROM messages
|
|
37
|
+
WHERE message_id IN (
|
|
38
|
+
SELECT message_id
|
|
39
|
+
FROM ranked_messages
|
|
40
|
+
WHERE duplicate_rank > 1
|
|
41
|
+
);--> statement-breakpoint
|
|
42
|
+
DROP INDEX `idx_messages_adapter_message_id`;--> statement-breakpoint
|
|
43
|
+
CREATE UNIQUE INDEX `uniq_messages_adapter_message_id_session` ON `messages` (`adapter_message_id`,`session_id`);
|
|
@@ -148,6 +148,20 @@
|
|
|
148
148
|
"when": 1781522025802,
|
|
149
149
|
"tag": "0020_m_mqf47r9j",
|
|
150
150
|
"breakpoints": true
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"idx": 21,
|
|
154
|
+
"version": "6",
|
|
155
|
+
"when": 1783292050509,
|
|
156
|
+
"tag": "0021_m_mr8e1j84",
|
|
157
|
+
"breakpoints": true
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"idx": 22,
|
|
161
|
+
"version": "6",
|
|
162
|
+
"when": 1783298910833,
|
|
163
|
+
"tag": "0022_m_mr8i4ky3",
|
|
164
|
+
"breakpoints": true
|
|
151
165
|
}
|
|
152
166
|
]
|
|
153
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{harnessDefinitions as e,harnessDefinitionsDual as t}from"./services/harness/storage/schema.mjs";import{z as n}from"zod";import{ApprovalPolicySchema as r,HarnessDefinitionBaseSchema as i,HarnessDefinitionSchema as a,HarnessSubjects as o,ToolCapabilitySchema as s}from"@makaio/framework/contracts";import{
|
|
1
|
+
import{harnessDefinitions as e,harnessDefinitionsDual as t}from"./services/harness/storage/schema.mjs";import{z as n}from"zod";import{ApprovalPolicySchema as r,HarnessDefinitionBaseSchema as i,HarnessDefinitionSchema as a,HarnessSubjects as o,ToolCapabilitySchema as s}from"@makaio/framework/contracts";import{defineDialectSchema as c,resolveSchema as l}from"@makaio/framework/storage/drizzle";import{eq as u}from"drizzle-orm";import{createStorageNamespaceDefinition as d}from"@makaio/framework/storage";import{createDrizzleCrudHandlers as f,createDrizzleListHandler as p}from"@makaio/framework/storage/handlers";const m=n.object({enabled:n.array(n.string()),disabled:n.array(n.string())}),h=i.omit({createdAt:!0,updatedAt:!0,approvalPolicy:!0,isDefault:!0,enabled:!0,nativeTools:!0,registryTools:!0,skills:!0}).extend({approvalPolicy:r,isDefault:n.boolean(),enabled:n.boolean(),nativeTools:m,registryTools:m,skills:m.optional()}).strict().refine(e=>!!e.adapterName||!!e.clientId,{message:`At least one of adapterName or clientId must be set`}),g=n.object({adapterName:n.string().optional(),clientId:n.string().optional(),name:n.string().optional()}),_=d(`harness`,{schemas:{get:{request:n.object({id:n.string()}),response:n.object({harness:a.nullable()})},set:{request:n.object({harness:h}),response:n.object({id:n.string()})},delete:{request:n.object({id:n.string()}),response:n.object({deleted:n.boolean()})},list:{request:g,response:n.object({harnesses:n.array(a)})}},extensions:{drizzle:{harnessDefinitions:e}}}),v=_.subjects,y=t.postgres,b=c({harnessDefinitions:e},{harnessDefinitions:y});function x(e){return{id:e.id,name:e.name,description:e.description??void 0,adapterName:e.adapterName??void 0,clientId:e.clientId??void 0,env:e.env??void 0,credentials:e.credentials??void 0,cwd:e.cwd??void 0,approvalPolicy:r.parse(e.approvalPolicy),nativeTools:{enabled:e.nativeToolsEnabled,disabled:e.nativeToolsDisabled},registryTools:{enabled:e.registryToolsEnabled,disabled:e.registryToolsDisabled},skills:e.skillsEnabled||e.skillsDisabled?{enabled:e.skillsEnabled??[],disabled:e.skillsDisabled??[]}:void 0,toolCapabilityMap:e.toolCapabilityMap?n.record(n.string(),n.array(s)).parse(e.toolCapabilityMap):void 0,capabilityOverrides:e.capabilityOverrides?n.record(n.string(),r).parse(e.capabilityOverrides):void 0,toolApprovalOverrides:e.toolApprovalOverrides?n.record(n.string(),r).parse(e.toolApprovalOverrides):void 0,isDefault:e.isDefault,enabled:e.enabled,createdAt:e.createdAt,updatedAt:e.updatedAt}}function S(e){return{id:e.id,name:e.name,description:e.description??null,adapterName:e.adapterName??null,clientId:e.clientId??null,env:e.env??null,credentials:e.credentials??null,cwd:e.cwd??null,approvalPolicy:e.approvalPolicy,nativeToolsEnabled:e.nativeTools.enabled,nativeToolsDisabled:e.nativeTools.disabled,registryToolsEnabled:e.registryTools.enabled,registryToolsDisabled:e.registryTools.disabled,skillsEnabled:e.skills?.enabled??null,skillsDisabled:e.skills?.disabled??null,toolCapabilityMap:e.toolCapabilityMap??null,capabilityOverrides:e.capabilityOverrides??null,toolApprovalOverrides:e.toolApprovalOverrides??null,isDefault:e.isDefault,enabled:e.enabled}}function C(e,t){let{harnessDefinitions:n}=l(t,b),r=f({table:n,subjects:{get:v.get,set:v.set,delete:v.delete},idField:`id`,singularKey:`harness`,mapper:x,toDbValues:S,lifecycle:{created:o.created,updated:o.updated,deleted:o.deleted}}),i=p({table:n,subject:v.list,pluralKey:`harnesses`,mapper:x,buildPredicates:(e,t)=>{let n=[];return e.adapterName&&n.push(u(t.adapterName,e.adapterName)),e.clientId&&n.push(u(t.clientId,e.clientId)),e.name&&n.push(u(t.name,e.name)),n}}),a=r(e,t),s=i(e,t);return()=>{a(),s()}}export{_ as n,v as r,C as t};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import{agents as e}from"./services/session/storage/schema.mjs";import{n as t,t as n}from"./schema-CHp6I33k.mjs";import{i as r,n as i,r as a}from"./namespace-dFBD2ZmS.mjs";import{TurnStorageSubjects as o}from"./services/turn/namespace.mjs";import{SessionStorageSubjects as s}from"./services/session/storage/namespace.mjs";import{n as c}from"./namespace-DBHwyhME.mjs";import{r as l,t as u}from"./provider-context-DC_eq7es.mjs";import{AdapterRuntimeSubjects as d}from"./services/adapter-runtime/namespace.mjs";import{ProviderStorageSubjects as f}from"./services/settings/storage/providers-namespace.mjs";import{ExecutionTargetSubjects as p}from"./services/execution-target/namespace.mjs";import{MessageStorageSubjects as m}from"./services/session/messages/namespace.mjs";import"./services/session/turns/namespace.mjs";import{ExtractedContextSchema as h}from"./services/compression/schemas.mjs";import{PreferencesSubjects as g}from"./services/preferences/storage-namespace.mjs";import{z as _}from"zod";import{AdapterSubjects as v,AgentResolutionSubjects as y,AgentStatusSchema as b,AgentSubjects as x,MakaioSessionAgentSchema as S,ProviderContextSchema as ee,SessionSubjects as C,TurnInitiatorSchema as w,TurnUsageSchema as te}from"@makaio/framework/contracts";import{defineDialectSchema as ne,getRawSqlExecutor as re,getStorageEngine as ie,resolveSchema as T}from"@makaio/framework/storage/drizzle";import{and as E,asc as D,desc as O,eq as k,gt as ae,inArray as A,lt as oe,sql as se}from"drizzle-orm";import{createStorageNamespaceDefinition as ce}from"@makaio/framework/storage";import{HookAbortError as j}from"@makaio/framework/hooks";import{AdapterRuntimeSubjects as le}from"@makaio/framework/services/adapter-runtime";import{buildProviderContext as ue}from"@makaio/framework/services/provider-context";function de(e,t,n,r){return e.on(i.append,e=>{let{event:i}=e.payload,a=t.get(i.sessionId)??[];if(n.has(i.eventId)){e.setResult({success:!0});return}a.push(i),t.set(i.sessionId,a),n.set(i.eventId,r()),e.setResult({success:!0})})}function fe(e,t,n){return e.on(i.getEvents,e=>{let{sessionId:r,options:i}=e.payload,a=t.get(r)??[],o=i?.order??`asc`,s=o===`desc`?[...a].reverse():a,c=0;if(i?.after&&/^\d+$/.test(i.after)){let t=Number(i.after),r=s.findIndex(e=>{let r=n.get(e.eventId)??-1;return o===`desc`?r<t:r>t});if(r===-1){e.setResult({events:[],nextCursor:null,totalCount:a.length});return}c=r}let l=s.slice(c);if(i?.types&&i.types.length>0){let e=new Set(i.types);l=l.filter(t=>e.has(t.type))}let u=i?.limit??100,d=l.length>u,f=l.slice(0,u),p=null;if(d&&f.length>0){let e=f[f.length-1],t=n.get(e.eventId);t!==void 0&&(p=t.toString())}e.setResult({events:f,nextCursor:p,totalCount:a.length})})}function pe(e,t){return e.on(i.getByIds,e=>{let{sessionId:n,eventIds:r}=e.payload,i=t.get(n)??[],a=new Set(r),o=i.filter(e=>a.has(e.eventId));e.setResult({events:o})})}function me(e,t,n){return e.on(i.deleteBySession,e=>{let{sessionId:r}=e.payload,i=t.get(r);if(i)for(let e of i)n.delete(e.eventId);let a=i?.length??0;t.delete(r),e.setResult({success:!0,deletedCount:a})})}function he(e,t){return e.on(i.getEventsBySessions,e=>{let{sessionIds:n,types:r,limitPerSession:i=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let a=new Set(r),o={};for(let e of n){let n=(t.get(e)??[]).filter(e=>a.has(e.type)).reverse().slice(0,i);n.length>0&&(o[e]=n)}e.setResult({eventsBySession:o})})}function ge(e){let t=new Map,n=new Map,r=1,i=[de(e,t,n,()=>r++),fe(e,t,n),pe(e,t),me(e,t,n),he(e,t)];return()=>i.forEach(e=>e())}const _e=r.postgres,ve=ne({sessionEvents:a},{sessionEvents:_e}),ye=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function be(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))ye.includes(e)||(n[e]=r);return n}function M(e){let t=JSON.parse(e.payload),n=e.type===`message`?e.messageId:e.originatingMessageId,r={...t,sessionId:e.sessionId,...e.agentId&&{agentId:e.agentId},...e.adapterId&&{adapterId:e.adapterId},...n&&{messageId:n},...e.type===`message`?{turnId:e.turnId??null}:e.turnId&&{turnId:e.turnId}};return{sessionId:e.sessionId,eventId:e.eventId,timestamp:e.timestamp,type:e.type,payload:r}}function xe(e){switch(e.type){case`user_message.sent`:{let t=e.payload.content;return typeof t==`string`?t:(Array.isArray(t.blocks)?t.blocks:[t.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
2
|
+
`)}case`agent.added`:case`user_message.acknowledged`:case`user_message.completed`:case`turn.started`:case`turn.completed`:case`message`:case`branch.created`:case`branch.merged`:case`squash`:return null;default:return Se(e.payload)}}function Se(e){let t=e.contentText;if(typeof t==`string`&&t.length>0)return t;let n=e.summary;return typeof n==`string`&&n.length>0?n:null}function Ce({bus:e,db:t,sessionEvents:n}){return e.on(i.append,async e=>{let{event:r}=e.payload,i=`payload`in r&&`agentId`in r.payload?r.payload.agentId:null,a=`payload`in r&&`adapterId`in r.payload?r.payload.adapterId:null,o=`payload`in r&&`turnId`in r.payload?r.payload.turnId:null,s=`payload`in r&&`messageId`in r.payload?r.payload.messageId:null,c=r.type===`message`?s:null,l=r.type===`message`?null:s,u={sessionId:r.sessionId,eventId:r.eventId,timestamp:r.timestamp,type:r.type,agentId:i,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:xe(r),payload:JSON.stringify(be(r))};await t.insert(n).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function we({bus:e,db:t,sessionEvents:n}){return e.on(i.getEvents,async e=>{let{sessionId:r,options:i}=e.payload,a=[k(n.sessionId,r)],o=i?.order??`asc`;if(i?.after){let e=parseInt(i.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(oe(n.id,e)):a.push(ae(n.id,e)))}i?.types&&i.types.length>0&&a.push(A(n.type,i.types));let s=i?.limit??100,c=o===`desc`?O:D,l=await t.select().from(n).where(E(...a)).orderBy(c(n.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(M),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function Te({bus:e,db:t,sessionEvents:n}){return e.on(i.getByIds,async e=>{let{sessionId:r,eventIds:i}=e.payload,a=(await t.select().from(n).where(E(k(n.sessionId,r),A(n.eventId,i))).orderBy(D(n.timestamp))).map(M);e.setResult({events:a})})}function Ee({bus:e,db:t,sessionEvents:n}){return e.on(i.deleteBySession,async e=>{let{sessionId:r}=e.payload,i=(await t.select().from(n).where(k(n.sessionId,r))).length;await t.delete(n).where(k(n.sessionId,r)),e.setResult({success:!0,deletedCount:i})})}function De({bus:e,db:t,sessionEvents:n}){return e.on(i.getEventsBySessions,async e=>{let{sessionIds:r,types:i,limitPerSession:a=50}=e.payload;if(r.length===0||i.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of r){let r=await t.select().from(n).where(E(k(n.sessionId,e),A(n.type,i))).orderBy(O(n.timestamp)).limit(a);r.length>0&&(o[e]=r.map(M))}e.setResult({eventsBySession:o})})}function Oe(e,t){let{sessionEvents:n}=T(t,ve),r={bus:e,db:t,sessionEvents:n},i=[Ce(r),we(r),Te(r),Ee(r),De(r)];return()=>i.forEach(e=>e())}async function N(e,t,n){let r={sessionId:t.sessionId,eventId:t.eventId??crypto.randomUUID(),timestamp:t.timestamp??Date.now(),type:t.type,payload:t.payload},a=n?n(r):r;a&&await e.requestOptional(i.append,{event:a})}async function P(e,t){await N(e,{type:`turn.started`,sessionId:t.sessionId,payload:t}),await e.emit(C.turn.started,t)}function ke(e,t){let n=[e.on(C.agent.added,async n=>{await Ae(e,{type:`agent.added`,sessionId:n.payload.sessionId,payload:n.payload},t)}),e.on(C.branch.created,async n=>{await Ae(e,{type:`branch.created`,sessionId:n.payload.sessionId,payload:n.payload},t)})];return()=>{for(let e of n)e()}}async function Ae(e,t,n){try{await N(e,t,n)}catch(e){console.warn(`[session-lifecycle-events] Failed to persist subscription lifecycle event`,{type:t.type,sessionId:t.sessionId,error:e instanceof Error?e.message:String(e)})}}const F=ce(`agent`,{schemas:{get:{request:_.object({agentId:_.string()}),response:_.object({agent:S.nullable()})},set:{request:_.object({agentId:_.string(),agent:S}),response:_.object({success:_.boolean()})},delete:{request:_.object({agentId:_.string()}),response:_.object({success:_.boolean()})},listByAdapter:{request:_.object({adapterName:_.string(),status:_.enum([`idle`,`active`,`dead`,`disposed`,`all`]).optional()}),response:_.object({agents:_.array(S)})},listBySession:{request:_.object({sessionId:_.string()}),response:_.object({agents:_.array(S)})},updateStatus:{request:_.object({agentId:_.string(),status:b}),response:_.object({success:_.boolean()})},updateActivity:{request:_.object({agentId:_.string(),lastActivityAt:_.number()}),response:_.object({success:_.boolean()})},updateRuntime:{request:_.object({agentId:_.string(),adapterId:_.string().optional(),cwd:_.string().optional(),model:_.string().optional(),allowedDirectories:_.array(_.string()).optional(),providerConfigId:_.string().optional()}).refine(e=>e.adapterId!==void 0||e.cwd!==void 0||e.model!==void 0||e.allowedDirectories!==void 0||e.providerConfigId!==void 0,{message:`At least one runtime field (adapterId, cwd, model, allowedDirectories, or providerConfigId) must be provided`}),response:_.object({success:_.boolean()})}},extensions:{drizzle:{agents:e}}}),I=F.subjects;async function L(e,t,n){let{adapterId:r}=await e.request(d.resolveId,{adapterName:t,...n!==void 0&&{machineId:n}});return r}async function je(e,t,n){if(!(!t||!n))try{let{config:r}=await e.request(c.getProviderConfig,{id:t});if(!r)return;let{provider:i}=await e.request(f.get,{id:r.definitionId}),a=i?.availableModels?.find(e=>e.name===n);return a?{supportedReasoningLevels:a.supportedReasoningLevels}:void 0}catch{return}}async function Me(e,t){let{executionTarget:n}=await e.request(p.resolve,t);return n}async function Ne(e,t){let{sessionId:n,limit:r}=t,a=[],o=!1,s=!1,c;do{let{events:t,nextCursor:l}=await e.request(i.getEvents,{sessionId:n,options:{limit:1e4,...c&&{after:c}}});for(let i of t){if(i.type===`squash`){o=!0,a.length=0;let e=i.payload,t={messageId:`squash-${i.eventId}`,sessionId:n,turnId:null,role:`assistant`,contentText:e.summaryJson,blocks:[{type:`text`,content:e.summaryJson}],timestamp:i.timestamp};a.push(t)}else if(i.type===`message`){let t=i.payload,{message:n}=await e.request(m.get,{messageId:t.messageId});n&&a.push(n)}if(r&&a.length>=r){s=!0;break}}if(r&&a.length>=r)break;c=l??void 0}while(c);return{messages:a,hasSquashBoundary:o,sessionChain:[n],truncated:s,incomplete:!1}}const R=new class{actions=new Map;register(e){if(this.actions.has(e.id))throw Error(`Action already registered: ${e.id}`);this.actions.set(e.id,e)}get(e){return this.actions.get(e)}getAll(){return Array.from(this.actions.values())}getByCategory(e){return this.getAll().filter(t=>t.category===e)}reset(){this.actions.clear()}};async function z(e,t,n){let r=e,i,a;for(let e of t){let t=R.get(e.actionId);if(!t)throw Error(`Unknown action: ${e.actionId}`);let o={...n,...e.options},s=await t.execute(r,o);if(s.kind===`messages`)r=s.messages;else{i=s.json,a=s.tokenEstimate,r=[];break}}if(!i&&r.length>0){let e=r.reduce((e,t)=>e+JSON.stringify(t.blocks).length,0);a=Math.ceil(e/4)}return{messages:r,contextJson:i,tokenEstimate:a}}function Pe(e){return e.map(e=>({...e,blocks:e.blocks.filter(e=>e.type!==`reasoning`)}))}const Fe={id:`strip-reasoning`,label:`Strip Reasoning`,description:`Remove reasoning/thinking blocks from messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:Pe(e)}}};function Ie(e){return e.map(e=>({...e,blocks:e.blocks.map(e=>{if(e.type===`tool_output`){let t=e.output.length;return{...e,output:`[output removed - ${t} chars]`}}return e})}))}const Le={id:`strip-tool-outputs`,label:`Strip Tool Outputs`,description:`Remove tool output contents, keep structure`,category:`transformation`,async execute(e){return{kind:`messages`,messages:Ie(e)}}};async function B(e,t){let n=[],r=[],i=[],a=!1,o=!1,c=!1,l=[],u,d=t,f;for(;d;){let n=await e.request(s.get,{sessionId:d});if(!n.session){c=!0;break}d===t&&(u=n.session.forkTransforms??void 0),l.unshift({sessionId:d,forkPointMessageId:n.session.forkPointMessageId??void 0}),f=n.session.parentSessionId??void 0,d=f}for(let t=0;t<l.length;t++){let{sessionId:s}=l[t],c=t===l.length-1,u=l[t+1]?.forkPointMessageId;n.push(s);let d=await Ne(e,{sessionId:s});if(d.hasSquashBoundary&&(a=!0,c||(r.length=0)),d.truncated&&(o=!0),c)i=d.messages;else for(let e of d.messages)if(r.push(e),u&&e.messageId===u)break}return u&&(r=await Re(r,u)),{messages:[...r,...i],hasSquashBoundary:a,sessionChain:n,truncated:o,incomplete:c}}async function Re(e,t){if(t.segments?.length){let n=t.segments[0].fromMessageId,r=t.segments[t.segments.length-1].toMessageId,i=e.findIndex(e=>e.messageId===n),a=e.findIndex(e=>e.messageId===r);if(i===-1||a===-1||i>a)return V(e,t.segments);let o=e.slice(0,i),s=e.slice(i,a+1),c=e.slice(a+1),l=V(s,t.segments);return[...o,...l,...c]}let n=e;if(t.removedMessageIds?.length){let e=new Set(t.removedMessageIds);n=n.filter(t=>!e.has(t.messageId))}return t.appliedPipeline?.length&&(n=(await z(n,t.appliedPipeline)).messages),n}function ze(e,t){let n=e;return t.stripReasoning&&(n=Pe(n)),t.stripToolOutputs&&(n=Ie(n)),n}function V(e,t){let n=new Map;for(let t=0;t<e.length;t++)n.set(e[t].messageId,t);let r=[];for(let i of t){let t=n.get(i.fromMessageId),a=n.get(i.toMessageId);if(t===void 0||a===void 0){console.warn(`[getFullConversation] Skipping segment with missing boundary IDs`,{segmentKey:`${i.fromMessageId}..${i.toMessageId}`,fromMessageId:i.fromMessageId,toMessageId:i.toMessageId,hasFrom:t!==void 0,hasTo:a!==void 0});continue}let o=e.slice(t,a+1),s;switch(i.policy){case`exclude`:s=[];break;case`summarize`:if(i.summaryText){if(o.length===0)throw Error(`Cannot create synthetic summary message for empty segment: ${i.fromMessageId}..${i.toMessageId}`);s=[{messageId:`summary-${i.fromMessageId}-${i.toMessageId}`,turnId:null,sessionId:o[0].sessionId,role:`assistant`,contentText:i.summaryText,blocks:[{type:`text`,content:i.summaryText}],timestamp:o[o.length-1].timestamp}]}else s=o;break;default:s=o;break}if((i.policy!==`summarize`||!i.summaryText)&&i.overrides&&Object.keys(i.overrides).length>0){let e=new Set(Object.entries(i.overrides).filter(([,e])=>e===`exclude`).map(([e])=>e));s=s.filter(t=>!e.has(t.messageId))}s=ze(s,i),r.push(...s)}return r}function H(e){return{role:e.role,blocks:e.blocks}}async function Be(e,t){return{messageHistory:(await B(e,t.sessionId)).messages.map(H),isFirstTurn:!0}}async function Ve(e,t,n,r){if(t.cwd===n)return{swapped:!1};let i=await e.request(x.cwd.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,sessionId:t.sessionId,newCwd:n,...r?.skipWarning?{skipWarning:!0}:{}});if(!i.success)throw Error(`Failed to change cwd for agent ${t.agentId}: ${i.reason??`unknown`}`);return i.previousCwd?(t.cwd=n,{swapped:!0,previousCwd:i.previousCwd}):(t.cwd=n,{swapped:!1})}async function He(e,t,n,r){let i=n===void 0||t.model===n,a=r?.reasoningEffort===void 0,o=!r?.providerConfigId;if(i&&a&&o)return{changed:!1};let s=r?.providerConfigId?await l(e,r.providerConfigId):void 0,c=await e.request(x.model.change,{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:t.adapterSessionId??``,...n!==void 0&&{newModel:n},...r?.reasoningEffort!==void 0&&{reasoningEffort:r.reasoningEffort},...r?.skipWarning!==void 0&&{skipWarning:r.skipWarning},...s!==void 0&&{providerContext:s}});if(!c.success)throw Error(`Failed to change model for agent ${t.agentId}: ${c.reason??`unknown`}`);return n!==void 0&&(t.model=n),{changed:!0,swapped:c.swapped??!1}}async function Ue(e,t,n){let r=[],i=new Set;for(let a of t){let t=await e.requestOptional(v.getAgent,{adapterId:a.adapterId,agentId:a.agentId});if(t.handled&&t.data.agent!==null)r.push(a);else{let t=await U(e,a,n);r.push(t),i.add(t.agentId)}}return{verifiedAgents:r,recoveredAgentIds:i}}async function We(e,t,n){let r=await B(e,t.sessionId),i=n?.pipeline??[];return{messageHistory:(i.length>0?(await z(r.messages,i)).messages:r.messages).map(H),isFirstTurn:!0}}async function U(e,t,n){let r=await L(e,t.adapterName).catch(()=>t.adapterId);return await e.request(v.rehydrateAgent,{adapterId:r,agentId:t.agentId,cwd:n.cwd,model:n.model??t.model,...t.adapterSessionId!==void 0&&{adapterSessionId:t.adapterSessionId}}),t.adapterId=r,t}const Ge=t.postgres,W=ne({turns:n},{turns:Ge});async function G(e,t){let n=ie(e.dialect);for(let r=1;;r++)try{await e.run(t());return}catch(e){if(r>=32||!n.capabilities.maxCounterAssignmentRaces||!n.errors.isUniqueViolationError(e,`uniq_turns_session_number`))throw e}}function Ke(e){if(e)try{let t=JSON.parse(e),n=te.safeParse(t);return n.success?n.data:void 0}catch{return}}function K(e){return e?JSON.stringify(e):null}function qe(e){if(e)try{let t=JSON.parse(e),n=w.safeParse(t);return n.success?n.data:void 0}catch{return}}function q(e){let t=qe(e.initiator);return{turnId:e.turnId,sessionId:e.sessionId,turnNumber:e.turnNumber,startedAt:e.startedAt,completedAt:e.completedAt??void 0,status:e.status,error:e.error??void 0,usage:Ke(e.usage),...t!==void 0&&{initiator:t}}}function Je(e,t){let n=[Ye(e,t),Xe(e,t),Ze(e,t),Qe(e,t),$e(e,t),et(e,t),tt(e,t),nt(e,t)];return()=>n.forEach(e=>e())}function Ye(e,t){let n=re(t),{turns:r}=T(t,W);return e.on(o.create,async e=>{let{sessionId:i,turnId:a,initiator:o}=e.payload,s=Date.now(),c=a??crypto.randomUUID(),l=K(o);await G(n,()=>se`
|
|
3
|
+
WITH next_num AS (
|
|
4
|
+
SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
|
|
5
|
+
FROM turns
|
|
6
|
+
WHERE session_id = ${i}
|
|
7
|
+
)
|
|
8
|
+
INSERT INTO turns (turn_id, session_id, turn_number, started_at, status, initiator)
|
|
9
|
+
SELECT ${c}, ${i}, n, ${s}, ${`active`}, ${l}
|
|
10
|
+
FROM next_num
|
|
11
|
+
`);let[u]=await t.select({turnNumber:r.turnNumber}).from(r).where(k(r.turnId,c)),d={turnId:c,sessionId:i,turnNumber:u.turnNumber,startedAt:s,status:`active`,...o!==void 0&&{initiator:o}};e.setResult({turn:d})})}function Xe(e,t){let n=re(t),{turns:r}=T(t,W);return e.on(o.ingestCompleted,async e=>{let{sessionId:i,turnAnchorId:a,startedAt:o,completedAt:s,status:c,error:l,usage:u,initiator:d}=e.payload,f=crypto.randomUUID(),p=K(d),m=u===void 0?null:JSON.stringify(u);await G(n,()=>se`
|
|
12
|
+
WITH next_num AS (
|
|
13
|
+
SELECT COALESCE(MAX(turn_number), 0) + 1 AS n
|
|
14
|
+
FROM turns
|
|
15
|
+
WHERE session_id = ${i}
|
|
16
|
+
)
|
|
17
|
+
INSERT INTO turns (turn_id, session_id, turn_number, started_at, completed_at, status, error, usage, initiator, turn_anchor_id)
|
|
18
|
+
SELECT ${f}, ${i}, n, ${o}, ${s}, ${c}, ${l??null}, ${m}, ${p}, ${a}
|
|
19
|
+
FROM next_num
|
|
20
|
+
WHERE true
|
|
21
|
+
ON CONFLICT(session_id, turn_anchor_id) DO UPDATE SET
|
|
22
|
+
completed_at = excluded.completed_at,
|
|
23
|
+
status = excluded.status,
|
|
24
|
+
error = excluded.error,
|
|
25
|
+
usage = excluded.usage
|
|
26
|
+
`);let[h]=await t.select().from(r).where(E(k(r.sessionId,i),k(r.turnAnchorId,a))).limit(1);e.setResult({turn:q(h),created:h.turnId===f})})}function Ze(e,t){let{turns:n}=T(t,W);return e.on(o.complete,async e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c={completedAt:Date.now(),status:i,error:o??null};s!==void 0&&(c.usage=JSON.stringify(s));let l=a?E(k(n.turnId,r),k(n.status,a)):k(n.turnId,r),u=await t.update(n).set(c).where(l).returning();if(u.length>0){e.setResult({turn:q(u[0]),transitioned:!0});return}let[d]=await t.select().from(n).where(k(n.turnId,r)).limit(1);if(!d)throw Error(`Turn not found: ${r}`);e.setResult({turn:q(d),transitioned:!1})})}function Qe(e,t){let{turns:n}=T(t,W);return e.on(o.set,async e=>{let{turn:r}=e.payload,i={turnId:r.turnId,sessionId:r.sessionId,turnNumber:r.turnNumber,startedAt:r.startedAt,completedAt:r.completedAt??null,status:r.status,error:r.error??null,usage:r.usage?JSON.stringify(r.usage):null,initiator:K(r.initiator)};await t.insert(n).values(i).onConflictDoUpdate({target:n.turnId,set:i}),e.setResult({turn:r})})}function $e(e,t){let{turns:n}=T(t,W);return e.on(o.get,async e=>{let{turnId:r}=e.payload,[i]=await t.select().from(n).where(k(n.turnId,r)).limit(1);e.setResult({turn:i?q(i):null})})}function et(e,t){let{turns:n}=T(t,W);return e.on(o.getBySession,async e=>{let{sessionId:r,limit:i,status:a}=e.payload,o=t.select().from(n).where(k(n.sessionId,r)).orderBy(D(n.turnNumber));a&&(o=t.select().from(n).where(E(k(n.sessionId,r),k(n.status,a))).orderBy(D(n.turnNumber))),i&&(o=o.limit(i));let s=await o;e.setResult({turns:s.map(q)})})}function tt(e,t){let{turns:n}=T(t,W);return e.on(o.getActive,async e=>{let{sessionId:r}=e.payload,[i]=await t.select().from(n).where(E(k(n.sessionId,r),k(n.status,`active`))).orderBy(O(n.turnNumber)).limit(1);e.setResult({turn:i?q(i):null})})}function nt(e,t){let{turns:n}=T(t,W);return e.on(o.listActive,async e=>{let r=await t.select().from(n).where(k(n.status,`active`)).orderBy(D(n.startedAt));e.setResult({turns:r.map(q)})})}function rt(e){let t=new Map,n=new Map,r=new Map,i=it(t,n,r),a=new Map,o=[at(e,i,r),ot(e,t,i,r,a),st(e,t,i),ct(e,i),lt(e,t),ut(e,t,n),dt(e,t,n),ft(e,t)];return()=>o.forEach(e=>e())}function it(e,t,n){return r=>{e.set(r.turnId,r);let i=t.get(r.sessionId)??[];i.includes(r.turnId)||i.push(r.turnId),t.set(r.sessionId,i);let a=n.get(r.sessionId)??0;r.turnNumber>a&&n.set(r.sessionId,r.turnNumber)}}function at(e,t,n){return e.on(o.create,e=>{let{sessionId:r,turnId:i,initiator:a}=e.payload,o=Date.now(),s={turnId:i??crypto.randomUUID(),sessionId:r,turnNumber:(n.get(r)??0)+1,startedAt:o,status:`active`,...a!==void 0&&{initiator:a}};t(s),e.setResult({turn:s})})}function ot(e,t,n,r,i){return e.on(o.ingestCompleted,e=>{let{sessionId:a,turnAnchorId:o,startedAt:s,completedAt:c,status:l,error:u,usage:d,initiator:f}=e.payload,p=i.get(a)??new Map,m=p.get(o);if(m!==void 0){let r=t.get(m);if(!r)throw Error(`Turn not found for anchor in session: ${a}`);let i={...r,completedAt:c,status:l,error:u??void 0,usage:d??void 0};n(i),e.setResult({turn:i,created:!1});return}let h={turnId:crypto.randomUUID(),sessionId:a,turnNumber:(r.get(a)??0)+1,startedAt:s,completedAt:c,status:l,error:u??void 0,usage:d??void 0,...f!==void 0&&{initiator:f}};n(h),p.set(o,h.turnId),i.set(a,p),e.setResult({turn:h,created:!0})})}function st(e,t,n){return e.on(o.complete,e=>{let{turnId:r,status:i,expectedStatus:a,error:o,usage:s}=e.payload,c=t.get(r);if(!c)throw Error(`Turn not found: ${r}`);if(a&&c.status!==a){e.setResult({turn:c,transitioned:!1});return}let l={...c,completedAt:Date.now(),status:i,error:o??void 0,usage:s??c.usage};n(l),e.setResult({turn:l,transitioned:!0})})}function ct(e,t){return e.on(o.set,e=>{let{turn:n}=e.payload;t(n),e.setResult({turn:n})})}function lt(e,t){return e.on(o.get,e=>{e.setResult({turn:t.get(e.payload.turnId)??null})})}function ut(e,t,n){return e.on(o.getBySession,e=>{let{sessionId:r,status:i,limit:a}=e.payload,o=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e);i&&(o=o.filter(e=>e.status===i)),o.sort((e,t)=>e.turnNumber-t.turnNumber),a&&(o=o.slice(0,a)),e.setResult({turns:o})})}function dt(e,t,n){return e.on(o.getActive,e=>{let{sessionId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).filter(e=>e.status===`active`).sort((e,t)=>t.turnNumber-e.turnNumber).at(0);e.setResult({turn:i??null})})}function ft(e,t){return e.on(o.listActive,e=>{let n=[...t.values()].filter(e=>e.status===`active`).sort((e,t)=>e.startedAt-t.startedAt);e.setResult({turns:n})})}function pt(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var mt=class{turnId;sessionId;turnNumber;startedAt;_initiator;_agentIds;_messageIds=[];_completedAgents=new Set;_erroredAgents=new Map;constructor(e){if(!Number.isInteger(e.turnNumber)||e.turnNumber<1)throw Error(`turnNumber must be a positive integer`);this.turnId=e.turnId??crypto.randomUUID(),this.sessionId=e.sessionId,this.turnNumber=e.turnNumber,this.startedAt=e.startedAt??Date.now(),this._initiator=Object.freeze(pt(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return pt(this._initiator)}get messageIds(){return this._messageIds}get completedAgents(){return this._completedAgents}get erroredAgents(){return this._erroredAgents}addMessage(e){this._messageIds.push(e)}markAgentCompleted(e){return this._completedAgents.add(e),this.checkCompletion()}markAgentErrored(e,t){return this._erroredAgents.set(e,t),this.checkCompletion()}hasAgent(e){return this._agentIds.includes(e)}isComplete(){return this._completedAgents.size+this._erroredAgents.size>=this._agentIds.length}getResult(){return{success:this._erroredAgents.size===0,errors:Array.from(this._erroredAgents.values())}}getContext(){if(this._messageIds.length===0)throw Error(`Turn ${this.turnId} has no messages yet`);return{turnId:this.turnId,messageId:this._messageIds[this._messageIds.length-1]}}getContextForMessage(e){return{turnId:this.turnId,messageId:e}}checkCompletion(){return this.isComplete()?{turnComplete:!0,result:this.getResult()}:{turnComplete:!1}}};function J(e){return typeof e==`string`?e:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
27
|
+
`)}function ht(e){return e}function gt(e){return typeof e==`string`?[{type:`text`,content:e}]:(Array.isArray(e.blocks)?e.blocks:[e.blocks]).map(ht)}async function _t(e,t,n,r){let{session:i}=await e.request(C.get,{sessionId:t});if(i){if(i.status!==`active`)throw Error(`[getOrCreateSession] Session is not active: ${t}`);return{sessionId:t,session:i}}await e.request(C.create,{sessionId:t,originWindowId:r});let{session:a}=await e.request(C.get,{sessionId:t});if(!a)throw Error(`[getOrCreateSession] Failed to create session: ${t}`);return{sessionId:t,session:a}}function vt(e,t){if(t===void 0){let t=e.agents.find(t=>t.agentId===e.leadAgentId);if(!t)throw Error(`[resolveTargetAgents] Lead agent not found: ${e.leadAgentId}`);return[t]}if(t===`all`)return e.agents;let n=new Set(t);return e.agents.filter(e=>n.has(e.agentId))}function yt(e,t){for(let n of e.values())if(n.hasAgent(t))return n}function bt(e,t){if(e===`extension`){let e=t?.trim();if(!e)throw Error(`extensionId is required when source is "extension"`);return{source:`extension`,sourceId:e}}return e?{source:e}:{source:`user`}}function Y(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function xt(e,t,n,r){let{adapterName:i}=await e.request(d.resolveName,{adapterId:t});if(n&&i!==n)throw Error(`${r}adapterName "${n}" does not match adapterId "${t}"`);return i}async function St(e,t,n,r){if(r!==void 0&&t!==void 0&&t!==r.providerConfigId)throw Error(`[attach-handler] providerConfigId '${t}' does not match resolved provider context '${r.providerConfigId}'`);let i=t??r?.providerConfigId??n?.providerConfigId;return r===void 0?{providerConfigId:i,providerContext:i===void 0?void 0:await l(e,i)}:{providerConfigId:i,providerContext:r}}async function Ct(e,t,n,r,i,a,o){try{return await wt(e,t,r,i,a,o)}catch(t){throw console.error(`[attach-handler] Failed to set up initial-message turn, rolling back started agent`,{sessionId:r,agentId:i,adapterId:n.adapterId,error:t}),await X(e,n,r,`initial-message turn setup failure`),t}}async function X(e,t,n,r){try{await e.request(v.stopAgent,{adapterId:t.adapterId,agentId:t.agentId})}catch(e){console.error(`[attach-handler] Failed to rollback started agent after ${r}`,{sessionId:n,agentId:t.agentId,adapterId:t.adapterId,error:e})}}async function wt(e,t,n,r,i,a){let{turn:s}=await e.request(o.create,{sessionId:n}),c=new mt({sessionId:n,agentIds:[r],turnId:s.turnId,turnNumber:s.turnNumber});try{await e.requestOptional(m.append,{message:{messageId:i,turnId:c.turnId,sessionId:n,role:`user`,contentText:J(a),blocks:gt(a),timestamp:Date.now()}})}catch(t){console.warn(`[attach-handler] Failed to store initial user message`,{sessionId:n,messageId:i,error:t instanceof Error?t.message:String(t)});try{await e.requestOptional(o.complete,{turnId:c.turnId,status:`error`,expectedStatus:`active`,error:`initial-message-persistence-failed`})}catch(e){console.error(`[attach-handler] Failed to rollback initial-message turn after message persistence failure`,{sessionId:n,turnId:c.turnId,error:e})}throw t}c.addMessage(i),t.set(n,c);try{await Tt(e,n,c,r,i,a)}catch(e){throw t.get(n)?.turnId===c.turnId&&t.delete(n),e}return{messageId:i,turnId:c.turnId}}async function Tt(e,t,n,r,i,a){await P(e,{sessionId:t,turnId:n.turnId,turnNumber:n.turnNumber,messageId:i,agentIds:[...n.agentIds],ingestionMarker:`live`}),await e.emit(C.user_message.sent,{sessionId:t,turnId:n.turnId,turnNumber:n.turnNumber,messageId:i,content:a,agentIds:[...n.agentIds]}),await e.emit(C.user_message.acknowledged,{sessionId:t,turnId:n.turnId,turnNumber:n.turnNumber,messageId:i,agentId:r})}function Et(e){return{...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt}}}function Dt(e,t,n){let r=e.model??t?.model,i=e.cwd;return{runtimeOptions:Ot({model:r,reasoningEffort:e.reasoningEffort??t?.reasoningEffort,cwd:i,allowedTools:e.allowedTools??t?.allowedTools,disallowedTools:e.disallowedTools??t?.disallowedTools,allowedDirectories:e.allowedDirectories??t?.allowedDirectories,env:e.env,mcpSessionContext:e.mcpSessionContext,adapterConfig:e.adapterConfig,systemPrompt:e.systemPrompt??t?.systemPrompt,providerContext:n}),mergedModel:r,mergedCwd:i}}function Ot(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function kt(e,t,n){let r=e.on(C.agent.attach,async r=>{r.setResult(await At(e,t,n,r.payload))}),i=e.on(C.agent.attachResolved,async r=>{if(!r.origin.local)throw Error(`[attach-handler] session.agent.attachResolved requires a local-origin request`);r.setResult(await At(e,t,n,{...r.payload,resolvedProviderContext:r.payload.agent.providerContext===void 0?void 0:ee.parse(r.payload.agent.providerContext)}))});return()=>{r(),i()}}async function At(e,t,n,r){let{sessionId:i,agent:a,initialMessage:o,role:s,resolvedProviderContext:c}=r,l=Et(a),d=await Ft(e,i),f=await Pt(e,i,o,a),p=Mt(a,f),{adapterName:m,adapterId:h}=await Nt(e,p.adapterName,p.adapterId,n),{providerConfigId:g,providerContext:_}=await St(e,a.providerConfigId,f,c),{runtimeOptions:y,mergedModel:b,mergedCwd:x}=Dt(l,f,_),S=It(d,s),ee=Rt(h,i,o,S,y,Lt(d),f?.harnessId);_!==void 0&&await u(e,_);let C=await e.request(v.startAgent,ee);if(!C.success)throw Error(`[attach-handler] Failed to start agent: ${C.message}`);await Bt(e,C,{adapterName:m,sessionId:i,role:S,timestamp:Date.now(),personaId:jt(a),profileId:f?.profileId,harnessId:f?.harnessId,providerConfigId:g,compressionMode:f?.compressionMode,model:b,cwd:x});let w=o&&C.messageId?await Ct(e,t,C,i,C.agentId,C.messageId,o):void 0;return{agentId:C.agentId,adapterSessionId:C.adapterSessionId,role:S,...w&&{messageId:w.messageId,turnId:w.turnId}}}function jt(e){return e.kind===`persona`?e.personaId:void 0}function Mt(e,t){return{adapterName:e.kind===`adapter`&&`adapterName`in e?e.adapterName:t?.adapterName,adapterId:e.kind===`adapter`&&`adapterId`in e?e.adapterId:void 0}}async function Nt(e,t,n,r){let i=Y(t),a=Y(n);if(!i&&!a)throw Error(`[attach-handler] adapterName or adapterId is required — provide one explicitly or via persona/profile/virtualModel resolution`);if(a)return{adapterName:await xt(e,a,i,`[attach-handler] `),adapterId:a};let o=i;return{adapterName:o,adapterId:await L(e,o,r)}}async function Pt(e,t,n,r){if(r.kind===`adapter`)return null;let i=n?J(n):void 0;return e.request(y.resolve,{selection:r,context:{sessionId:t,promptText:i}})}async function Ft(e,t){let{session:n}=await e.request(C.get,{sessionId:t});if(!n)throw Error(`[attach-handler] Session not found: ${t}`);if(n.status!==`active`)throw Error(`[attach-handler] Session is not active: ${t}`);return n}function It(e,t){let n=e.agents.length===0;return t??(n?`lead`:`member`)}function Lt(e){if(e.isImported&&e.isOrchestrated===!1&&e.adapterSessionId)return e.adapterSessionId}function Rt(e,t,n,r,i,a,o){return a?{mode:`resume`,adapterId:e,sessionId:t,adapterSessionId:a,role:r,...i,...n!==void 0&&{initialMessage:n},...o!==void 0&&{harnessId:o}}:{adapterId:e,sessionId:t,role:r,...i,...n!==void 0&&{initialMessage:n},...o!==void 0&&{harnessId:o}}}async function zt(e,t){!t.personaId&&!t.profileId&&!t.harnessId&&!t.providerConfigId||await e.request(I.set,{agentId:t.agentId,agent:{agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,sessionId:t.sessionId,role:t.role,status:`idle`,personaId:t.personaId,profileId:t.profileId,harnessId:t.harnessId,providerConfigId:t.providerConfigId,createdAt:t.timestamp,lastActivityAt:t.timestamp,...t.model!==void 0&&{model:t.model},...t.cwd!==void 0&&{cwd:t.cwd},...t.compressionMode!==void 0&&{compressionMode:t.compressionMode}}})}async function Bt(e,t,n){try{await zt(e,{agentId:t.agentId,adapterId:t.adapterId,adapterName:n.adapterName,sessionId:n.sessionId,role:n.role,timestamp:n.timestamp,personaId:n.personaId,profileId:n.profileId,harnessId:n.harnessId,providerConfigId:n.providerConfigId,compressionMode:n.compressionMode,model:n.model,cwd:n.cwd})}catch(r){throw console.error(`[attach-handler] Failed to persist agent identity, rolling back started agent`,{sessionId:n.sessionId,agentId:t.agentId,adapterId:t.adapterId,error:r}),await X(e,t,n.sessionId,`identity persistence failure`),r}}async function Vt(e,t,n,r,i,a,o,s,c,l){let u=n.map(async n=>{try{await e.request(x.sendMessage,{agentId:n.agentId,adapterId:n.adapterId,message:r,deliveryMode:o,messageId:i,turnId:a.turnId,sessionId:t.sessionId,sessionContext:c,...l!==void 0&&{responseSchema:l}}),await e.emit(C.user_message.acknowledged,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId})}catch(t){if(t instanceof j){await e.emit(C.user_message.completed,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId,outcome:`cancelled`});let t=a.markAgentCompleted(n.agentId);t.turnComplete&&await s(a,t.result);return}let r=t instanceof Error?t.message:String(t),o=a.markAgentErrored(n.agentId,r);await e.emit(C.user_message.completed,{sessionId:a.sessionId,turnId:a.turnId,turnNumber:a.turnNumber,messageId:i,agentId:n.agentId,outcome:`error`,error:r}),o.turnComplete&&await s(a,o.result)}});await Promise.all(u)}function Ht(e){return e.on(C.abandon,async t=>{let{parentSessionId:n,childSessionId:r}=t.payload,{session:i}=await e.request(C.get,{sessionId:r});if(!i)throw Error(`[abandon-handler] Child session not found: ${r}`);if(i.parentSessionId!==n)throw Error(`[abandon-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(i.parentSessionId?` (actual parent: ${i.parentSessionId})`:` (session has no parent)`));if(!(await e.request(C.close,{sessionId:r})).success)throw Error(`[abandon-handler] Failed to close child session: ${r}`);await e.emit(C.abandoned,{sessionId:r,parentSessionId:n}),t.setResult({success:!0})})}const Ut={id:`messages-to-context`,label:`Export as Context`,description:`Convert messages to context JSON (final step)`,category:`extraction`,async execute(e){let t=e.map(e=>({role:e.role,content:e.blocks.map(e=>e.type===`text`?e.content:e.type===`reasoning`?`[reasoning: ${e.content}]`:e.type===`tool_call`?`[tool: ${e.name}]`:e.type===`tool_output`?e.output:``).filter(Boolean).join(`
|
|
28
|
+
`)})),n=t.reduce((e,t)=>e+t.content.length,0),r=Math.ceil(n/4);return{kind:`context`,json:{type:`compressed-messages`,messageCount:e.length,messages:t},tokenEstimate:r}}},Wt={id:`llm-summarize`,label:`Summarize`,description:`LLM-generated summary of selected messages`,category:`transformation`,async execute(e){return{kind:`messages`,messages:e}}};function Gt(e){let t=[];for(let n of e){let e=n.blocks.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
29
|
+
`);e&&(n.role===`user`?t.push(`[human]\n${e}\n[/human]`):n.role===`assistant`&&t.push(`[assistant]\n${e}\n[/assistant]`))}return`<conversation>\n${t.join(`
|
|
30
|
+
|
|
31
|
+
`)}\n</conversation>`}function Kt(e){return{id:`llm-extract`,label:`LLM Extract`,description:`Extract structured context using a cheap LLM model (requires virtualModelId in options)`,category:`extraction`,async execute(t,n){let r={kind:`messages`,messages:t},i=n?.virtualModelId;if(typeof i!=`string`)return r;let a=(typeof n?.sessionId==`string`&&n.sessionId.length>0?n.sessionId:void 0)??t[0]?.sessionId;if(typeof a!=`string`||a.length===0)return r;try{let n=await e.request(y.resolve,{selection:{kind:`virtual-model`,virtualModelId:i},context:{sessionId:a}}),{adapterId:r}=await e.request(le.resolveId,{adapterName:n.adapterName}),o=Gt(t),s=n.providerConfigId?await ue(e,n.providerConfigId):void 0,{text:c}=await e.request(v.infer,{adapterId:r,prompt:o,model:n.model,systemPrompt:`You are a context extraction assistant. Analyze the following conversation and extract structured information. Respond with ONLY valid JSON matching this exact schema — no markdown, no explanation, no code fences:
|
|
32
|
+
|
|
33
|
+
{
|
|
34
|
+
"resolved_items": ["string — completed work with resolution details"],
|
|
35
|
+
"known_bugs": [{ "issue": "string", "location": "string", "impact": "string" }],
|
|
36
|
+
"todos": [{ "issue": "string", "location": "string", "priority": "high|medium|low" }],
|
|
37
|
+
"key_decisions_and_rationale": ["string — decision with reasoning"],
|
|
38
|
+
"technical_details": {
|
|
39
|
+
"files": ["string — file paths mentioned"],
|
|
40
|
+
"schemas": {},
|
|
41
|
+
"apis": ["string — API endpoints or contracts"],
|
|
42
|
+
"config": {}
|
|
43
|
+
},
|
|
44
|
+
"constraints_and_requirements": ["string — constraints or non-negotiable requirements"],
|
|
45
|
+
"current_state": "string — one paragraph summary of where work stands now",
|
|
46
|
+
"roadmap": ["string — future work items in priority order"],
|
|
47
|
+
"data_flows": ["string — key data movement patterns"],
|
|
48
|
+
"component_interactions": { "ComponentName": "string — description of its role" },
|
|
49
|
+
"key_files": { "filepath": "string — what this file does" },
|
|
50
|
+
"helpful_hint": ["string — quick reference hints for resuming work"]
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
Rules:
|
|
54
|
+
- Omit array items you have no evidence for (prefer empty array over fabrication).
|
|
55
|
+
- current_state MUST be present; write "No summary available" if you cannot determine it.
|
|
56
|
+
- Extract only facts stated or clearly implied in the conversation. Do not invent.
|
|
57
|
+
- key_files and component_interactions should only include items explicitly mentioned.`,...s!==void 0&&{providerContext:s}}),l=c.trim().replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/i,``).trim(),u=JSON.parse(l),d=h.parse(u),f=Math.ceil(JSON.stringify(d).length/4);return{kind:`context`,json:{...d},tokenEstimate:f}}catch(e){return console.warn(`[llm-extract] action failed`,{action:`llm-extract`,sessionId:a,error:e}),r}}}}let Z=!1,Q=!1;function qt(e){Z||(Z=!0,R.register(Fe),R.register(Le),R.register(Ut),R.register(Wt)),e&&!Q&&(Q=!0,R.register(Kt(e)))}function Jt(){Z=!1,Q=!1}function Yt(e){return qt(e),e.on(C.compress,async t=>{let{sessionId:n,pipeline:r}=t.payload,{messages:a}=await e.request(m.getBySession,{sessionId:n,limit:1e4}),o=await z(a,r,{sessionId:n});if(!o.contextJson)throw Error(`[compress-handler] Compress pipeline must produce context JSON (sessionId=${n})`);let s=a.map(e=>e.messageId),c=Math.ceil(a.reduce((e,t)=>e+JSON.stringify(t.blocks).length/4,0)),l=crypto.randomUUID();await e.request(i.append,{event:{sessionId:n,eventId:l,timestamp:Date.now(),type:`squash`,payload:{summaryJson:JSON.stringify(o.contextJson),tokensBefore:c,tokensAfter:o.tokenEstimate,compressedMessageIds:s}}}),await e.emit(C.compressed,{sessionId:n,eventId:l}),t.setResult({eventId:l,contextJson:o.contextJson,tokensBefore:c,tokensAfter:o.tokenEstimate})})}async function Xt(e,t,n,r){if(!n.segments?.length)return!1;let i=[],a;do{let{messages:n,nextCursor:o}=await e.request(m.getBySession,{sessionId:t,order:`asc`,limit:200,after:a});i.push(...n),a=r&&n.some(e=>e.messageId===r)?void 0:o??void 0}while(a);if(i.length===0)throw Error(`[fork-handler] Segment transforms require at least one source message (sourceSessionId=${t})`);let o=i;if(r){let e=i.findIndex(e=>e.messageId===r);if(e===-1)throw Error(`[fork-handler] Fork point message not found in source message list: ${r} (sourceSessionId=${t})`);o=i.slice(0,e+1)}let s=new Map;o.forEach((e,t)=>{s.set(e.messageId,t)});let c=-1;for(let e of n.segments){if(!e.fromMessageId||!e.toMessageId)throw Error(`[fork-handler] Segment must have fromMessageId and toMessageId (sourceSessionId=${t})`);let n=s.get(e.fromMessageId),r=s.get(e.toMessageId);if(n===void 0||r===void 0)throw Error(`[fork-handler] Segment boundaries must reference source messages: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n>r)throw Error(`[fork-handler] Segment range is reversed: ${e.fromMessageId}..${e.toMessageId} (sourceSessionId=${t})`);if(n<=c)throw Error(`[fork-handler] Segments must not overlap and must be ordered (sourceSessionId=${t})`);if(n!==c+1)throw Error(`[fork-handler] Segments must be contiguous without gaps (sourceSessionId=${t})`);c=r}if(c!==o.length-1)throw Error(`[fork-handler] Segments must cover the entire source message range (sourceSessionId=${t})`);return!0}function Zt(e){if(!e.segments?.length&&e.appliedPipeline?.length)for(let t of e.appliedPipeline){let e=R.get(t.actionId);if(!e)throw Error(`[fork-handler] Unknown action in pipeline: ${t.actionId}`);if(e.category!==`transformation`)throw Error(`[fork-handler] Action '${t.actionId}' is category '${e.category}', but only 'transformation' actions are allowed in fork transforms`)}}function Qt(e){return e.on(C.fork,async t=>{let{sourceSessionId:n,fromMessageId:r,name:i,branchKind:a=`fork`,transforms:o,targetWorkingDirectory:s,metadata:c,existingSessionId:l}=t.payload,{session:u}=await e.request(C.get,{sessionId:n});if(!u)throw Error(`[fork-handler] Source session not found: ${n}`);if(r){let{message:t}=await e.request(m.get,{messageId:r});if(!t)throw Error(`[fork-handler] Fork point message not found: ${r} (sourceSessionId=${n})`);if(t.sessionId!==n)throw Error(`[fork-handler] Fork point message ${r} does not belong to session ${n}`)}o&&(await Xt(e,n,o,r)||Zt(o));let{sessionId:d}=await e.request(C.create,{...l?{sessionId:l}:{},parentSessionId:n,forkPointMessageId:r,branchKind:a,forkTransforms:o,...i?{title:i}:{},...s?{targetWorkingDirectory:s}:{},...c?{metadata:c}:{}});await e.emit(C.branch.created,{sessionId:n,childSessionId:d,parentSessionId:n,kind:a,forkPointMessageId:r,transforms:o}),await e.emit(C.forked,{parentSessionId:n,childSessionId:d,forkPoint:r}),t.setResult({sessionId:d})})}function $t(e){return e.on(C.merge,async t=>{let{parentSessionId:n,childSessionId:r,summary:a}=t.payload,o=`merge:${n}:${r}`,{session:s}=await e.request(C.get,{sessionId:n});if(!s)throw Error(`[merge-handler] Parent session not found: ${n}`);if(s.status!==`active`)throw Error(`[merge-handler] Parent session is not active: ${n}`);let{session:c}=await e.request(C.get,{sessionId:r});if(!c)throw Error(`[merge-handler] Child session not found: ${r}`);if(c.parentSessionId!==n)throw Error(`[merge-handler] Invalid parent-child relationship: session ${r} is not a child of ${n}`+(c.parentSessionId?` (actual parent: ${c.parentSessionId})`:` (session has no parent)`));await e.emit(C.merging,{parentSessionId:n,childSessionId:r});let l=a??`Child session ${r} merged.`;if(!(await e.request(C.close,{sessionId:r})).success)throw Error(`[merge-handler] Failed to close child session: ${r}`);let u=JSON.stringify({handoff:l});await e.request(i.append,{event:{sessionId:n,eventId:o,timestamp:Date.now(),type:`branch.merged`,payload:{childSessionId:r,parentSessionId:n,resultJson:u}}}),await e.emit(C.branch.merged,{sessionId:n,childSessionId:r,parentSessionId:n,resultJson:u}),await e.emit(C.merged,{parentSessionId:n,childSessionId:r,handoff:l}),t.setResult({success:!0,handoff:l})})}async function en(e,t,n,r,i){if(!(t.parentSessionId!==void 0&&(t.contextInheritance===`parent-history`||t.contextInheritance===void 0&&t.branchKind!==`subagent`))||r?.messageHistory)return r;let{turns:a}=await e.request(o.getBySession,{sessionId:n,limit:2});if(!(i&&a.length<=1))return r;let s=(await B(e,n)).messages.map(H);return{...r,messageHistory:s,isFirstTurn:!0,hasNewTransforms:t.forkTransforms!==void 0}}const $={enabled:!0,template:`User changed working directory from {oldCwd} to {newCwd}`};function tn(e,t,n){return e.replace(/\{oldCwd\}/g,t).replace(/\{newCwd\}/g,n)}function nn(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.enabled==`boolean`&&typeof t.template==`string`}async function rn(e){try{let t=await e.request(g.get,{key:{scope:`global`,surface:`ui`,context:`cwdChangeNotification`},category:`chat-display`});if(t.value!==null&&t.value!==void 0)return nn(t.value)?t.value:$}catch{}return $}function an(e){let{baseContext:t,recoveryContext:n,isRecovered:r,isSwapped:i,swapMeta:a,cwdMessage:o,freshMessageHistory:s}=e,c=r&&n?{...t,...n}:t;if(!i)return c;let l=a&&o!==void 0?{cwdChange:{previousCwd:a.previousCwd,newCwd:a.newCwd,message:o}}:void 0;return c={...c,hasConnectorSwap:!0,...s!==void 0&&{messageHistory:s},...l&&{turnContext:{...c?.turnContext,...l}}},c}async function on(e){let{bus:t,session:n,turn:r,message:i,messageId:a,deliveryMode:o,onTurnComplete:s,agent:c,agentContext:l,responseSchema:u}=e;try{await t.request(x.sendMessage,{agentId:c.agentId,adapterId:c.adapterId,message:i,deliveryMode:o,messageId:a,turnId:r.turnId,sessionId:n.sessionId,sessionContext:l,...u!==void 0&&{responseSchema:u}}),await t.emit(C.user_message.acknowledged,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId})}catch(e){if(e instanceof j){await t.emit(C.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`cancelled`});let e=r.markAgentCompleted(c.agentId);e.turnComplete&&await s(r,e.result);return}let n=e instanceof Error?e.message:String(e),i=r.markAgentErrored(c.agentId,n);await t.emit(C.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:a,agentId:c.agentId,outcome:`error`,error:n}),i.turnComplete&&await s(r,i.result)}}async function sn(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){let _=await en(e,t,t.sessionId,c,u),v=l?await l.enrichForDeliveryMode(_?.messageHistory,a.turnId,o):_?.messageHistory,y=_?{..._,messageHistory:v}:void 0,b=p?.size?await rn(e):$,x=n.map(async n=>{let c=m?.get(n.agentId),l=c&&b.enabled?tn(b.template,c.previousCwd,c.newCwd):void 0;await on({bus:e,session:t,turn:a,message:r,messageId:i,deliveryMode:o,onTurnComplete:s,agent:n,agentContext:an({baseContext:y,recoveryContext:d,isRecovered:f?.has(n.agentId)??!1,isSwapped:p?.has(n.agentId)??!1,swapMeta:c,cwdMessage:l,freshMessageHistory:h}),responseSchema:g})});await Promise.all(x)}export{Ne as A,ge as B,Ve as C,Be as D,Ue as E,I as F,N as I,P as L,Me as M,je as N,B as O,F as P,ke as R,We as S,U as T,J as _,Yt as a,rt as b,Ht as c,Y as d,xt as f,vt as g,_t as h,Qt as i,L as j,R as k,Vt as l,yt as m,en as n,qt as o,bt as p,$t as r,Jt as s,sn as t,kt as u,gt as v,He as w,Je as x,mt as y,Oe as z};
|
package/dist/hooks/index.d.mts
CHANGED
|
@@ -289,6 +289,14 @@ type PreTurnHookOptions = BaseHookOptions;
|
|
|
289
289
|
interface PostTurnHookOptions extends BaseHookOptions {
|
|
290
290
|
/** Hook name for error attribution (default: 'anonymous') */
|
|
291
291
|
name?: string;
|
|
292
|
+
/**
|
|
293
|
+
* When true, the handler also runs for turns ingested from historical
|
|
294
|
+
* imports (`session.turn.completed` with ingestionMarker `'backfill'`).
|
|
295
|
+
* Default false: backfill emissions are filtered so LLM-driven consumers do
|
|
296
|
+
* not stampede over historical imports. Live turns (marker `'live'` or
|
|
297
|
+
* absent) always run.
|
|
298
|
+
*/
|
|
299
|
+
includeBackfill?: boolean;
|
|
292
300
|
}
|
|
293
301
|
/**
|
|
294
302
|
* Options for PostStep hook.
|
package/dist/hooks/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MakaioBus as e}from"@makaio/framework/bus";import{AgentSubjects as t,SessionSubjects as n}from"@makaio/framework/contracts";import{TurnStorageSubjects as r}from"@makaio/framework/services/turn";const i={session:void 0,recentHistory:[],contextExtensions:{}};async function a(e,t){try{let{session:a}=await e.request(n.get,{sessionId:t});if(!a)return i;let[o,s]=await Promise.all([e.request(r.getBySession,{sessionId:t,limit:10}).catch(()=>({turns:[]})),e.requestOptional(n.enrichContext,{sessionId:t}).catch(()=>({handled:!1}))]),c=s.handled?s.data:{};return{session:a,recentHistory:o.turns,contextExtensions:c}}catch{return i}}async function o(e,t){let n=e.payload,r=await a(t,n.sessionId);return{...r.contextExtensions,hookEvent:`PostTurn`,sessionId:n.sessionId,turnId:n.turnId,success:n.success,error:n.error,payload:n,messageId:e.messageId,correlationId:e.correlationId,session:r.session,recentHistory:r.recentHistory,contextExtensions:r.contextExtensions,bus:t,async next(){await e.next()},stopPropagation:e.stopPropagation.bind(e)}}async function s(e,t){let n=e.payload,r=n.sessionId?await a(t,n.sessionId):i;return{...r.contextExtensions,hookEvent:`PostStep`,sessionId:n.sessionId,agentId:n.agentId,adapterId:n.adapterId,adapterName:n.adapterName,messageId:n.messageId,stepType:n.stepType,blockIndex:n.blockIndex,stepContent:n.content,payload:n,correlationId:e.correlationId,session:r.session,recentHistory:r.recentHistory,contextExtensions:r.contextExtensions,bus:t,async next(){await e.next()},stopPropagation:e.stopPropagation.bind(e)}}var c=class extends Error{hookName;reason;code=`HOOK_ABORT`;constructor(e,t){super(`Message aborted by hook: ${e}${t?` - ${t}`:``}`),this.hookName=e,this.reason=t,this.name=`HookAbortError`}},l=class{entries=[];register(e,t,n,r=0){let i={name:e,handler:t,priority:r,options:n};return this.entries.push(i),this.entries.sort((e,t)=>t.priority-e.priority),()=>{let e=this.entries.indexOf(i);e!==-1&&this.entries.splice(e,1)}}reset(){this.entries.length=0}[Symbol.iterator](){return this.entries[Symbol.iterator]()}};const u=new l;function d(e,t,n,r=0){return u.register(e,t,n,r)}function f(){u.reset()}async function p(e,t){let n=e.message,r=e.sessionContext,o=e.sessionId?await a(t,e.sessionId):i;for(let{name:i,handler:a}of u){let s={},l={...o.contextExtensions,get payload(){return{message:n,sessionId:e.sessionId,sessionContext:r,cwd:e.cwd,adapterId:e.adapterId,agentId:e.agentId}},messageId:e.messageId,correlationId:void 0,replacePayload:e=>{e.message!==void 0&&(n=e.message),e.sessionContext!==void 0&&(r=e.sessionContext)},next:async()=>{},abort:e=>{throw new c(i,e)},hookEvent:`PreUserMessage`,session:o.session,recentHistory:o.recentHistory,contextExtensions:o.contextExtensions,bus:t,setTurnContext(e,t){s[e]=t},getTurnContext(){return{...s}}};await a(l);let u=l.getTurnContext();if(Object.keys(u).length>0){let e={...r?.turnContext??{},...u};r={...r,turnContext:e}}}return{message:n,sessionContext:r}}const m=new l;function h(e,t,n,r=0){return m.register(e,t,n,r)}function g(){m.reset()}async function _(e,t){for(let{name:n,handler:r}of m){let i={hookEvent:`PostUserMessage`,agentId:e.agentId,adapterId:e.adapterId,sessionId:e.sessionId,messageId:e.messageId,bus:t};try{await r(i)}catch(e){console.error(`[PostUserMessage] Hook "${n}" failed:`,e)}}}async function v(e,t,n,r,i){try{await r(await n())}catch(n){console.error(`[${e}] Hook '${t}' error:`,n)}await i()}function y(r,i){if(r===`BusMessage`){let t=i;return{unsubscribe:e.intercept(t.subject,t.handler,{priority:t.priority}),hookName:r}}if(r===`PreUserMessage`){let e=i;return{unsubscribe:d(e.name??`anonymous`,e.handler,e,e.priority??0),hookName:r}}if(r===`PostUserMessage`){let e=i;return{unsubscribe:h(e.name??`anonymous`,e.handler,e,e.priority??0),hookName:r}}if(r===`PostTurn`){let t=i,a=t.name??`anonymous`;return{unsubscribe:e.intercept(n.turn.completed,async n=>{await v(`PostTurn`,a,()=>o(n,e),t.handler,()=>n.next())},{priority:t.priority}),hookName:r}}if(r===`PostStep`){let n=i,a=n.stepTypes??[`reasoning`],o=n.name??`anonymous`;return{unsubscribe:e.intercept(t.step.finished,async t=>{if(!a.includes(t.payload.stepType)){await t.next();return}await v(`PostStep`,o,()=>s(t,e),n.handler,()=>t.next())},{priority:n.priority}),hookName:r}}throw Error(`Named hook "${r}" not yet implemented. Use BusMessage for now.`)}export{c as HookAbortError,y as createHook,d as registerPreUserMessageHook,g as resetPostUserMessageHooks,f as resetPreUserMessageHooks,_ as runPostUserMessageHooks,p as runPreUserMessageHooks};
|
|
1
|
+
import{MakaioBus as e}from"@makaio/framework/bus";import{AgentSubjects as t,SessionSubjects as n}from"@makaio/framework/contracts";import{TurnStorageSubjects as r}from"@makaio/framework/services/turn";const i={session:void 0,recentHistory:[],contextExtensions:{}};async function a(e,t){try{let{session:a}=await e.request(n.get,{sessionId:t});if(!a)return i;let[o,s]=await Promise.all([e.request(r.getBySession,{sessionId:t,limit:10}).catch(()=>({turns:[]})),e.requestOptional(n.enrichContext,{sessionId:t}).catch(()=>({handled:!1}))]),c=s.handled?s.data:{};return{session:a,recentHistory:o.turns,contextExtensions:c}}catch{return i}}async function o(e,t){let n=e.payload,r=await a(t,n.sessionId);return{...r.contextExtensions,hookEvent:`PostTurn`,sessionId:n.sessionId,turnId:n.turnId,success:n.success,error:n.error,payload:n,messageId:e.messageId,correlationId:e.correlationId,session:r.session,recentHistory:r.recentHistory,contextExtensions:r.contextExtensions,bus:t,async next(){await e.next()},stopPropagation:e.stopPropagation.bind(e)}}async function s(e,t){let n=e.payload,r=n.sessionId?await a(t,n.sessionId):i;return{...r.contextExtensions,hookEvent:`PostStep`,sessionId:n.sessionId,agentId:n.agentId,adapterId:n.adapterId,adapterName:n.adapterName,messageId:n.messageId,stepType:n.stepType,blockIndex:n.blockIndex,stepContent:n.content,payload:n,correlationId:e.correlationId,session:r.session,recentHistory:r.recentHistory,contextExtensions:r.contextExtensions,bus:t,async next(){await e.next()},stopPropagation:e.stopPropagation.bind(e)}}var c=class extends Error{hookName;reason;code=`HOOK_ABORT`;constructor(e,t){super(`Message aborted by hook: ${e}${t?` - ${t}`:``}`),this.hookName=e,this.reason=t,this.name=`HookAbortError`}},l=class{entries=[];register(e,t,n,r=0){let i={name:e,handler:t,priority:r,options:n};return this.entries.push(i),this.entries.sort((e,t)=>t.priority-e.priority),()=>{let e=this.entries.indexOf(i);e!==-1&&this.entries.splice(e,1)}}reset(){this.entries.length=0}[Symbol.iterator](){return this.entries[Symbol.iterator]()}};const u=new l;function d(e,t,n,r=0){return u.register(e,t,n,r)}function f(){u.reset()}async function p(e,t){let n=e.message,r=e.sessionContext,o=e.sessionId?await a(t,e.sessionId):i;for(let{name:i,handler:a}of u){let s={},l={...o.contextExtensions,get payload(){return{message:n,sessionId:e.sessionId,sessionContext:r,cwd:e.cwd,adapterId:e.adapterId,agentId:e.agentId}},messageId:e.messageId,correlationId:void 0,replacePayload:e=>{e.message!==void 0&&(n=e.message),e.sessionContext!==void 0&&(r=e.sessionContext)},next:async()=>{},abort:e=>{throw new c(i,e)},hookEvent:`PreUserMessage`,session:o.session,recentHistory:o.recentHistory,contextExtensions:o.contextExtensions,bus:t,setTurnContext(e,t){s[e]=t},getTurnContext(){return{...s}}};await a(l);let u=l.getTurnContext();if(Object.keys(u).length>0){let e={...r?.turnContext??{},...u};r={...r,turnContext:e}}}return{message:n,sessionContext:r}}const m=new l;function h(e,t,n,r=0){return m.register(e,t,n,r)}function g(){m.reset()}async function _(e,t){for(let{name:n,handler:r}of m){let i={hookEvent:`PostUserMessage`,agentId:e.agentId,adapterId:e.adapterId,sessionId:e.sessionId,messageId:e.messageId,bus:t};try{await r(i)}catch(e){console.error(`[PostUserMessage] Hook "${n}" failed:`,e)}}}async function v(e,t,n,r,i){try{await r(await n())}catch(n){console.error(`[${e}] Hook '${t}' error:`,n)}await i()}function y(r,i){if(r===`BusMessage`){let t=i;return{unsubscribe:e.intercept(t.subject,t.handler,{priority:t.priority}),hookName:r}}if(r===`PreUserMessage`){let e=i;return{unsubscribe:d(e.name??`anonymous`,e.handler,e,e.priority??0),hookName:r}}if(r===`PostUserMessage`){let e=i;return{unsubscribe:h(e.name??`anonymous`,e.handler,e,e.priority??0),hookName:r}}if(r===`PostTurn`){let t=i,a=t.name??`anonymous`;return{unsubscribe:e.intercept(n.turn.completed,async n=>{if(t.includeBackfill!==!0&&n.payload.ingestionMarker===`backfill`){await n.next();return}await v(`PostTurn`,a,()=>o(n,e),t.handler,()=>n.next())},{priority:t.priority}),hookName:r}}if(r===`PostStep`){let n=i,a=n.stepTypes??[`reasoning`],o=n.name??`anonymous`;return{unsubscribe:e.intercept(t.step.finished,async t=>{if(!a.includes(t.payload.stepType)){await t.next();return}await v(`PostStep`,o,()=>s(t,e),n.handler,()=>t.next())},{priority:n.priority}),hookName:r}}throw Error(`Named hook "${r}" not yet implemented. Use BusMessage for now.`)}export{c as HookAbortError,y as createHook,d as registerPreUserMessageHook,g as resetPostUserMessageHooks,f as resetPreUserMessageHooks,_ as runPostUserMessageHooks,p as runPreUserMessageHooks};
|