@stigmer/runner 3.0.8 → 3.0.9-dev.20260615150714
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/.build-fingerprint +1 -1
- package/dist/activities/execute-cursor/index.js +13 -3
- package/dist/activities/execute-cursor/index.js.map +1 -1
- package/dist/activities/execute-cursor/message-translator.d.ts +16 -9
- package/dist/activities/execute-cursor/message-translator.js +32 -14
- package/dist/activities/execute-cursor/message-translator.js.map +1 -1
- package/dist/activities/execute-cursor/persist-decision.d.ts +42 -0
- package/dist/activities/execute-cursor/persist-decision.js +30 -0
- package/dist/activities/execute-cursor/persist-decision.js.map +1 -0
- package/dist/activities/execute-deep-agent/index.js +1 -1
- package/dist/activities/execute-deep-agent/index.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming-v3.js +1 -1
- package/dist/activities/execute-deep-agent/streaming-v3.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming.d.ts +1 -1
- package/dist/activities/execute-deep-agent/streaming.js +1 -1
- package/dist/activities/execute-deep-agent/streaming.js.map +1 -1
- package/dist/{activities/execute-deep-agent → shared}/streaming-scheduler.d.ts +4 -0
- package/dist/{activities/execute-deep-agent → shared}/streaming-scheduler.js +4 -0
- package/dist/shared/streaming-scheduler.js.map +1 -0
- package/package.json +2 -2
- package/src/activities/execute-cursor/__tests__/message-translator.test.ts +124 -12
- package/src/activities/execute-cursor/__tests__/persist-decision.test.ts +99 -0
- package/src/activities/execute-cursor/index.ts +17 -3
- package/src/activities/execute-cursor/message-translator.ts +33 -14
- package/src/activities/execute-cursor/persist-decision.ts +54 -0
- package/src/activities/execute-deep-agent/index.ts +1 -1
- package/src/activities/execute-deep-agent/streaming-v3.ts +1 -1
- package/src/activities/execute-deep-agent/streaming.ts +1 -1
- package/src/{activities/execute-deep-agent → shared}/streaming-scheduler.ts +4 -0
- package/dist/activities/execute-deep-agent/streaming-scheduler.js.map +0 -1
- /package/src/{activities/execute-deep-agent → shared}/__tests__/streaming-scheduler.test.ts +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming persist decision for the Cursor harness.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the native deep-agent harness (execute-deep-agent/streaming.ts):
|
|
5
|
+
* `shouldPersist = forceFlush || scheduler.shouldSendUpdate(eventCount)`.
|
|
6
|
+
* Both harnesses thus share one cadence model — discrete state changes flush
|
|
7
|
+
* immediately, high-frequency token deltas ride a bounded time cadence.
|
|
8
|
+
*
|
|
9
|
+
* Extracted as a single pure function so the stream loop and its unit tests
|
|
10
|
+
* exercise the same implementation and cannot drift.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { StreamingUpdateScheduler } from "../../shared/streaming-scheduler.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Force-flush signals — discrete, user-visible state changes that must reach the
|
|
17
|
+
* live stream immediately, independent of the scheduler's time cadence.
|
|
18
|
+
*/
|
|
19
|
+
export interface ForceFlushSignals {
|
|
20
|
+
/** Shell/tool output text accumulated past the delta-enricher debounce. */
|
|
21
|
+
readonly deltaEnricherDirty: boolean;
|
|
22
|
+
/** The agent's todo list changed. */
|
|
23
|
+
readonly todosDirty: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* A tool call started or reached a terminal status, or a sub-agent was
|
|
26
|
+
* delegated/updated (MessageAccumulator.isDirty).
|
|
27
|
+
*/
|
|
28
|
+
readonly contentDirty: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Decide whether to persist the streaming status after a stream event.
|
|
33
|
+
*
|
|
34
|
+
* - forceFlush: any discrete signal flushes now so the live trace (tool calls,
|
|
35
|
+
* sub-agents, todos, shell output) is never starved on short turns.
|
|
36
|
+
* - scheduler: the shared StreamingUpdateScheduler carries assistant text and
|
|
37
|
+
* model thinking on a bounded time cadence (500ms floor / 5s keepalive),
|
|
38
|
+
* avoiding a per-token persist storm.
|
|
39
|
+
*
|
|
40
|
+
* After a persist, the caller must call scheduler.markUpdateSent(eventCount) so
|
|
41
|
+
* the cadence resets — matching the native harness.
|
|
42
|
+
*
|
|
43
|
+
* @param nowMs Injectable clock forwarded to the scheduler, for tests.
|
|
44
|
+
*/
|
|
45
|
+
export function shouldPersistStreamingStatus(
|
|
46
|
+
signals: ForceFlushSignals,
|
|
47
|
+
scheduler: StreamingUpdateScheduler,
|
|
48
|
+
eventCount: number,
|
|
49
|
+
nowMs?: number,
|
|
50
|
+
): boolean {
|
|
51
|
+
const forceFlush =
|
|
52
|
+
signals.deltaEnricherDirty || signals.todosDirty || signals.contentDirty;
|
|
53
|
+
return forceFlush || scheduler.shouldSendUpdate(eventCount, nowMs);
|
|
54
|
+
}
|
|
@@ -23,7 +23,7 @@ import type { Config } from "../../config.js";
|
|
|
23
23
|
import { StigmerClient } from "../../client/stigmer-client.js";
|
|
24
24
|
import { performSetup, type SetupResult } from "./setup.js";
|
|
25
25
|
import { streamExecution, type StreamResult } from "./streaming.js";
|
|
26
|
-
import { loadStreamingConfig } from "
|
|
26
|
+
import { loadStreamingConfig } from "../../shared/streaming-scheduler.js";
|
|
27
27
|
import { StatusBuilder } from "./status-builder.js";
|
|
28
28
|
import { InlinePublisher } from "./inline-publisher.js";
|
|
29
29
|
import { WriteBackCoordinator } from "./writeback-coordinator.js";
|
|
@@ -16,7 +16,7 @@ import { ExecutionControlSignal, ExecutionPhase } from "@stigmer/protos/ai/stigm
|
|
|
16
16
|
import { createV3EventRecorder, type V3ProtocolEvent } from "./v3-event-recorder.js";
|
|
17
17
|
import { normalize } from "./v3-protocol-normalizer.js";
|
|
18
18
|
import { V3StatusBuilder } from "./v3-status-builder.js";
|
|
19
|
-
import { StreamingUpdateScheduler } from "
|
|
19
|
+
import { StreamingUpdateScheduler } from "../../shared/streaming-scheduler.js";
|
|
20
20
|
import { persistStatus, slimStatus } from "../../shared/status.js";
|
|
21
21
|
import { StreamingSideEffects } from "./streaming-side-effects.js";
|
|
22
22
|
import {
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
import {
|
|
33
33
|
StreamingUpdateScheduler,
|
|
34
34
|
type StreamingConfig,
|
|
35
|
-
} from "
|
|
35
|
+
} from "../../shared/streaming-scheduler.js";
|
|
36
36
|
import { type RetryOptions } from "../../shared/grpc-retry.js";
|
|
37
37
|
import { persistStatus, slimStatus, utcTimestamp } from "../../shared/status.js";
|
|
38
38
|
import type { ToolOutputOffloadContext } from "../../shared/status-offload.js";
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
* OR firstUpdate
|
|
14
14
|
*
|
|
15
15
|
* Ported from Python StreamingUpdateScheduler.
|
|
16
|
+
*
|
|
17
|
+
* Shared infrastructure: both the native deep-agent harness and the Cursor
|
|
18
|
+
* harness drive their incremental status persistence through this scheduler so
|
|
19
|
+
* the live stream cadence is identical across harnesses.
|
|
16
20
|
*/
|
|
17
21
|
|
|
18
22
|
export enum UpdateReason {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-scheduler.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/streaming-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,iDAAiC,CAAA;IACjC,qDAAqC,CAAA;IACrC,uCAAuB,CAAA;IACvB,6CAA6B,CAAA;IAC7B,6BAAa,CAAA;AACf,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAWD,MAAM,cAAc,GAAoB;IACtC,aAAa,EAAE,GAAG;IAClB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,aAAa,GAAG,gBAAgB,CACpC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,cAAc,CAAC,aAAa,EAC5B,2BAA2B,CAC5B,CAAC;IACF,IAAI,aAAa,GAAG,gBAAgB,CAClC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,cAAc,CAAC,aAAa,EAC5B,2BAA2B,CAC5B,CAAC;IACF,MAAM,cAAc,GAAG,gBAAgB,CACrC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,cAAc,CAAC,cAAc,EAC7B,2BAA2B,CAC5B,CAAC;IAEF,IAAI,aAAa,GAAG,aAAa,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CACV,8BAA8B,aAAa,MAAM;YACjD,8BAA8B,aAAa,8BAA8B,CAC1E,CAAC;QACF,aAAa,GAAG,aAAa,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAuB,EACvB,QAAgB,EAChB,OAAe;IAEf,IAAI,CAAC,GAAG;QAAE,OAAO,QAAQ,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,OAAO,CAAC,IAAI,CACV,WAAW,OAAO,KAAK,GAAG,qBAAqB,QAAQ,EAAE,CAC1D,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,wBAAwB;IAC1B,MAAM,CAAkB;IAEzB,cAAc,CAAS;IACvB,gBAAgB,GAAG,CAAC,CAAC;IACrB,UAAU,GAAiB,YAAY,CAAC,IAAI,CAAC;IAC7C,UAAU,GAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,YAAY,MAAwB,EAAE,KAAc;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,cAAc,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,eAAuB,EAAE,KAAc;QACtD,MAAM,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;QAClD,MAAM,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEhE,IAAI,IAAI,CAAC,UAAU,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,cAAc,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,gBAAgB,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qDAAqD;IACrD,cAAc,CAAC,eAAuB,EAAE,KAAc;QACpD,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,qBAAqB,CAAC,KAAc;QAClC,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;IAC5D,CAAC;IAED,qBAAqB,CAAC,eAAuB;QAC3C,OAAO,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACjD,CAAC;CACF"}
|
|
File without changes
|