@asgard-js/core 0.3.26 → 0.3.27

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.
@@ -1,11 +1,15 @@
1
- import { ChannelConfig, FetchSseOptions, FetchSsePayload, LaunchedSandbox, SandboxPhase, Subagent, Task, ToolCallConsentAnswer } from '../types';
1
+ import { ChannelConfig, FetchSseOptions, FetchSsePayload, LaunchedSandbox, RunStatus, SandboxPhase, StopGenerationOptions, Subagent, Task, ToolCallConsentAnswer } from '../types';
2
2
  import { Observable } from 'rxjs';
3
3
 
4
+ /** How long an accepted stop waits for the terminal event before offering force-stop (F-023 AC7). */
5
+ export declare const FORCE_STOP_TIMEOUT_MS = 10000;
4
6
  export default class Channel {
5
7
  private client;
6
8
  customChannelId: string;
7
9
  customMessageId?: string;
10
+ private joinRunState;
8
11
  private isConnecting$;
12
+ private runStatusSubject;
9
13
  private conversation$;
10
14
  private channelTitleSubject;
11
15
  private sandboxPhaseSubject;
@@ -24,9 +28,12 @@ export default class Channel {
24
28
  readonly sandboxPhase$: Observable<SandboxPhase>;
25
29
  /** Reactive live-sandbox list store (F-019): authoritative from `/channel/metadata`, per-slice; replay-safe. */
26
30
  readonly launchedSandboxes$: Observable<LaunchedSandbox[]>;
31
+ /** Reactive run identity + stop lifecycle store (F-023): who holds the connection, and is a stop pending. */
32
+ readonly runStatus$: Observable<RunStatus>;
27
33
  private currentUserMessageId?;
28
34
  private lastSentMessageId?;
29
35
  private currentRun?;
36
+ private forceStopTimer?;
30
37
  private constructor();
31
38
  /** Current Task Check List snapshot (F-013) — for framework-agnostic `getSnapshot()` bridging. */
32
39
  getTasks(): Task[];
@@ -38,6 +45,8 @@ export default class Channel {
38
45
  getSandboxPhase(): SandboxPhase;
39
46
  /** Current live-sandbox snapshot (F-019) — for framework-agnostic `getSnapshot()` bridging. */
40
47
  getLaunchedSandboxes(): LaunchedSandbox[];
48
+ /** Current run identity + stop lifecycle snapshot (F-023) — for framework-agnostic `getSnapshot()` bridging. */
49
+ getRunStatus(): RunStatus;
41
50
  /** Names hinted by `sandbox.launch` but not yet confirmed live by metadata (F-019) — "starting" placeholders. */
42
51
  getPendingLaunches(): string[];
43
52
  /**
@@ -92,6 +101,15 @@ export default class Channel {
92
101
  * user bubble, and settle the run promise (releasing `isConnecting`) on completion / error.
93
102
  */
94
103
  private buildRunHandlers;
104
+ /**
105
+ * The terminal of a run, whichever way it ended. For a stop in flight this is the moment the backend
106
+ * declares the run actually finished (F-023 AC3) — the same event a normal run ends with — so it is
107
+ * the only place `stopping` is released back to "waiting for input".
108
+ */
109
+ private settleRun;
110
+ /** Record the backend run id from the first frame that carries one; later frames must not overwrite it. */
111
+ private captureRequestId;
112
+ private clearForceStopTimer;
95
113
  private fetchSse;
96
114
  /**
97
115
  * Join-restore transport (F-015): replay the server transcript via GET `rejoinSse` (F-014) and, if a
@@ -114,12 +132,49 @@ export default class Channel {
114
132
  */
115
133
  nudge(options?: FetchSseOptions): Promise<void>;
116
134
  /**
117
- * User-initiated stop-generation: abort the in-flight SSE run (if any) and release the input.
118
- * Unsubscribing tears down the SSE observable → AbortController.abort() cuts the HTTP stream. The
119
- * partial assistant message already received stays in the conversation (frozen, not deleted). A no-op
120
- * when nothing is running.
135
+ * User-initiated stop-generation (F-023).
136
+ *
137
+ * Runs execute in the **background on the server**, so aborting the local SSE connection would only
138
+ * stop *watching*: the agent would keep running, keep spending tokens and keep writing the
139
+ * transcript. Instead this asks the backend to suspend the run and **keeps the stream open**, because
140
+ * the stop is declared by that stream's terminal event — the same event a normal run ends with.
141
+ *
142
+ * The call is therefore asynchronous in two stages:
143
+ * 1. resolving here means the backend **accepted** the request, not that the run has stopped;
144
+ * 2. `isConnecting` / `runStatus` only return to idle when the terminal event arrives (AC3).
145
+ *
146
+ * While waiting, `runStatus.stopPhase` is `stopping` and every send entrance must stay gated (AC5).
147
+ * If the terminal event has not arrived within {@link FORCE_STOP_TIMEOUT_MS} the phase becomes
148
+ * `force-stoppable`, and calling again with `{ force: true }` tells the backend to give up on the run
149
+ * rather than let it wind down (AC7).
150
+ *
151
+ * No-ops (resolving) when nothing is running, when the run is not the user's own — a `RESET_CHANNEL`
152
+ * welcome, a transcript replay or an invisible nudge must never be stopped (AC8) — or when a stop is
153
+ * already pending and this is not a force.
154
+ *
155
+ * **Rejects** when the suspend request fails (network error, or a non-2xx that is not `404`). The
156
+ * stop phase is rolled back to `idle` first, so the caller can retry and the UI can never be stuck in
157
+ * `stopping` (AC4).
158
+ *
159
+ * A client that predates the suspend endpoint (a custom `IAsgardServiceClient`) falls back to the old
160
+ * local-abort behavior, so existing integrations keep working.
161
+ */
162
+ stopGeneration(options?: StopGenerationOptions): Promise<void>;
163
+ /**
164
+ * Escalate to `force-stoppable` once an accepted stop has waited too long for the terminal event
165
+ * (F-023 AC7 / UC-044) — the escape hatch for an agent that never winds down. Re-armed on a force
166
+ * retry, so a second timeout offers the same way out again.
167
+ */
168
+ private armForceStopTimer;
169
+ /**
170
+ * Cut the local SSE connection without telling the backend. This is *not* stop-generation (see
171
+ * {@link stopGeneration}) — the server-side run keeps going. Used when there is nothing to stop
172
+ * remotely: a client without suspend support, and channel teardown.
173
+ *
174
+ * The deliberate abort must never be read as a transport failure — `create-sse-observable` marks the
175
+ * stream disposed so no reconnect is attempted (F-023 AC10).
121
176
  */
122
- stopGeneration(): void;
177
+ private abortConnection;
123
178
  close(): void;
124
179
  }
125
180
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/lib/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/lib/channel.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { EventType } from '../constants/enum';
2
2
  import { Observable, Subscription } from 'rxjs';
3
- import { ChannelMetadata, ClientConfig, IAsgardServiceClient, FetchSsePayload, FetchSseOptions, SseResponse, SseEvents, BlobUploadResponse, ChannelHomeDownloadResult, SandboxFsCopyMoveOptions, SandboxFsCopyResult, SandboxFsListResult, SandboxFsReadOptions, SandboxFsReadResult, SandboxFsStatResult, SandboxFsWatchEvent, SandboxFsWriteOptions, SandboxFsWriteResult } from '../types';
3
+ import { ChannelMetadata, ClientConfig, IAsgardServiceClient, FetchSsePayload, FetchSseOptions, SseResponse, SseEvents, BlobUploadResponse, ChannelHomeDownloadResult, SandboxFsCopyMoveOptions, SandboxFsCopyResult, SandboxFsListResult, SandboxFsReadOptions, SandboxFsReadResult, SandboxFsStatResult, SandboxFsWatchEvent, SandboxFsWriteOptions, SandboxFsWriteResult, StopGenerationOptions } from '../types';
4
4
 
5
5
  export default class AsgardServiceClient implements IAsgardServiceClient {
6
6
  private apiKey?;
@@ -33,6 +33,26 @@ export default class AsgardServiceClient implements IAsgardServiceClient {
33
33
  * "not exists" — that would let a mount-time reset wipe an existing channel's history.
34
34
  */
35
35
  channelMetadata(customChannelId: string): Promise<ChannelMetadata | null>;
36
+ private deriveSuspendEndpoint;
37
+ /**
38
+ * Ask the backend to suspend this channel's background run (F-023 AC1):
39
+ * `POST {base}/message/suspend?custom_channel_id=…`. The six downstream relays expose this at the
40
+ * exact same shape as `GET {base}/message/sse`, so it is derived identically with no per-backend case.
41
+ *
42
+ * `custom_channel_id` is always sent — some backends take the channel from the path and ignore it,
43
+ * others require it, and sending it is correct for both (same rule as the GET rejoin).
44
+ *
45
+ * **Resolving means "accepted", not "stopped".** The run winds down on the server and declares itself
46
+ * finished through the terminal event on the already-open SSE stream (the same event a normal run
47
+ * ends with), so callers must keep that stream connected and wait for it.
48
+ *
49
+ * Success is **any 2xx** — relays variously answer `204 No Content` or `200` with an envelope, so no
50
+ * single status is hardcoded. `404` means the channel was never created, i.e. there is nothing to
51
+ * stop, which is a success rather than an error. Every other non-2xx throws {@link HttpError}.
52
+ */
53
+ suspendChannel(customChannelId: string, options?: StopGenerationOptions & {
54
+ requestId?: string;
55
+ }): Promise<void>;
36
56
  private runSse;
37
57
  /**
38
58
  * Detach the client from its owning component without aborting in-flight SSE
@@ -74,7 +94,8 @@ export default class AsgardServiceClient implements IAsgardServiceClient {
74
94
  * F-021 — 衍生 sandbox fs 端點 base:`{base}/sandbox/{sandboxName}/fs`(namespace / bot-provider 已在 base)。
75
95
  */
76
96
  private deriveSandboxFsEndpoint;
77
- private sandboxFsHeaders;
97
+ /** The shared auth / custom headers for the client's plain-JSON REST calls (no SSE). */
98
+ private apiHeaders;
78
99
  /**
79
100
  * F-021 — 列出 sandbox 目錄內容(`GET fs/list?path=`)。回應 `{ data: { entries, truncated } }`(envelope
80
101
  * 容錯,比照 `channelMetadata`)。
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
@@ -12,11 +12,23 @@ export default class Conversation implements IConversation {
12
12
  pushMessage(message: ConversationMessage): Conversation;
13
13
  clearPendingConsent(): Conversation;
14
14
  /**
15
- * Converge every still-running tool-call to `cancelled` (F-020 AC10). Called when a user-initiated
16
- * stop-generation aborts the run: an in-flight tool-call (`isComplete === false`) would otherwise
17
- * linger as `running` forever, since its `tool_call.complete` frame never arrives. Already-settled
18
- * calls and non-tool-call messages are left untouched; content is preserved (never rolled back).
19
- * Returns the same instance when nothing is in flight.
15
+ * Converge everything the aborted run left mid-flight (F-020 AC10, F-023). A stopped run sends no
16
+ * closing frame for whatever was in progress, so without this those messages advertise activity that
17
+ * has ceased and they persist in the transcript that way:
18
+ *
19
+ * - a tool-call with `isComplete === false` gets no `tool_call.complete`, and would render as
20
+ * `running` forever, so it converges to `cancelled`;
21
+ * - a thinking block with `isThinking === true` gets no `message.thinking.complete`, and would keep
22
+ * its highlighted "Thinking…" state forever, so it converges to the settled state.
23
+ *
24
+ * Content is preserved either way — never rolled back. Already-settled messages and every other
25
+ * message type are untouched, and the same instance is returned when nothing was in flight.
26
+ */
27
+ settleInFlightMessages(): Conversation;
28
+ /**
29
+ * @deprecated Renamed to {@link settleInFlightMessages} in 0.3.27 — it settles in-flight thinking
30
+ * blocks as well as tool-calls, which the old name no longer described. Behaviour is unchanged;
31
+ * this alias will be removed in a future major version.
20
32
  */
21
33
  cancelInFlightToolCalls(): Conversation;
22
34
  onMessage(response: SseResponse<EventType>): Conversation;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/lib/conversation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EAKnB,WAAW,EACX,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAElB,UAAU,aAAa;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,aAAa;IACjD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAAQ;IACzD,cAAc,EAAE,wBAAwB,GAAG,IAAI,CAAQ;gBAElD,EAAE,QAAQ,EAAE,cAAqB,EAAE,EAAE,aAAa;IAK9D,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY;IAOvD,mBAAmB,IAAI,YAAY;IAMnC;;;;;;OAMG;IACH,uBAAuB,IAAI,YAAY;IAiBvC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,YAAY;IAiCzD;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAI1B,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY;IA0B5E,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY;IA+B5E,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAyBlF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,YAAY;IAuBtF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,YAAY;IA4BtF,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,YAAY;IAyB5F,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,YAAY;IA4B1E,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY;IAkBpE,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,YAAY;IA2B/E,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,YAAY;IAuBrF,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,YAAY;IAMnF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,YAAY;IAsB9E,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,YAAY;CAsBrF"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/lib/conversation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EAKnB,WAAW,EACX,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAElB,UAAU,aAAa;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,aAAa;IACjD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAAQ;IACzD,cAAc,EAAE,wBAAwB,GAAG,IAAI,CAAQ;gBAElD,EAAE,QAAQ,EAAE,cAAqB,EAAE,EAAE,aAAa;IAK9D,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY;IAOvD,mBAAmB,IAAI,YAAY;IAMnC;;;;;;;;;;;;OAYG;IACH,sBAAsB,IAAI,YAAY;IAwBtC;;;;OAIG;IACH,uBAAuB,IAAI,YAAY;IAIvC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,YAAY;IAiCzD;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAI1B,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY;IA0B5E,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY;IA+B5E,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAyBlF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,YAAY;IAuBtF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,YAAY;IA4BtF,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,YAAY;IAyB5F,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,YAAY;IA4B1E,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY;IAkBpE,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,YAAY;IA2B/E,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,YAAY;IAuBrF,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,YAAY;IAMnF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,YAAY;IAsB9E,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,YAAY;CAsBrF"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-sse-observable.d.ts","sourceRoot":"","sources":["../../src/lib/create-sse-observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,UAAU,0BAA0B;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gGAAgG;IAChG,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,sEAAsE;IACtE,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAgG3G"}
1
+ {"version":3,"file":"create-sse-observable.d.ts","sourceRoot":"","sources":["../../src/lib/create-sse-observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,UAAU,0BAA0B;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gGAAgG;IAChG,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,sEAAsE;IACtE,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CA2G3G"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-sse-observable.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-sse-observable.spec.d.ts","sourceRoot":"","sources":["../../src/lib/create-sse-observable.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stop-generation.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-generation.spec.d.ts","sourceRoot":"","sources":["../../src/lib/stop-generation.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { RunKind } from './channel';
2
+
3
+ /**
4
+ * Thrown by `Channel.sendMessage()` when a run is already in flight on that channel (F-023 AC6 /
5
+ * UC-045). Because runs execute in the background on the server, dispatching a second one would leave
6
+ * two concurrent runs writing to the same transcript. The SDK's own composer already gates every send
7
+ * entrance, so this only surfaces for programmatic sends — a rejection rather than a silent drop, so
8
+ * the caller can tell the message never left.
9
+ */
10
+ export declare class ChannelBusyError extends Error {
11
+ /** Which run is holding the channel. */
12
+ readonly runKind: RunKind;
13
+ constructor(runKind: RunKind);
14
+ }
15
+ export declare function isChannelBusyError(error: unknown): error is ChannelBusyError;
16
+ //# sourceMappingURL=channel-busy-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-busy-error.d.ts","sourceRoot":"","sources":["../../src/types/channel-busy-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,wCAAwC;IACxC,SAAgB,OAAO,EAAE,OAAO,CAAC;gBAErB,OAAO,EAAE,OAAO;CAK7B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E"}
@@ -31,8 +31,53 @@ export interface LaunchedSandbox {
31
31
  /** Whether the browser is enabled (gates the browser-handoff card, F-020). */
32
32
  browserEnabled: boolean;
33
33
  }
34
+ /**
35
+ * Which kind of run is currently holding the connection (F-023 AC8). `isConnecting` alone conflates
36
+ * four unrelated sources, and only the first is the user's own turn — stop-generation must never fire
37
+ * against a welcome message, a transcript replay, or an invisible nudge.
38
+ *
39
+ * - `user` — a turn the user dispatched (`sendMessage`, or a `tool_call.consent` reply continuing it).
40
+ * - `reset` — the `RESET_CHANNEL` opening / welcome run.
41
+ * - `restore` — a GET rejoin that is tailing a run still `RUNNING` on the server (F-014 / F-015).
42
+ * - `replay` — a GET rejoin of a channel whose run has already finished: history is being loaded, but
43
+ * nothing is being generated, so no run-in-progress indicator belongs on screen (UC-046).
44
+ * - `nudge` — the invisible `action=NUDGE` turn that wakes a recycled sandbox (F-021 AC4).
45
+ */
46
+ export type RunKind = 'user' | 'reset' | 'restore' | 'replay' | 'nudge';
47
+ /**
48
+ * The stop-generation lifecycle for the current run (F-023, UC-044). Stopping is asynchronous: the
49
+ * suspend endpoint only reports "accepted", and the stop is declared later by the terminal event on
50
+ * the already-open SSE stream.
51
+ *
52
+ * - `idle` — no stop requested.
53
+ * - `stopping` — suspend accepted; waiting for the stream's terminal event. Send entrances are gated.
54
+ * - `force-stoppable` — the terminal event has not arrived within `FORCE_STOP_TIMEOUT_MS`;
55
+ * the control becomes actionable again and re-calls the endpoint with `force=true`.
56
+ */
57
+ export type StopPhase = 'idle' | 'stopping' | 'force-stoppable';
58
+ /**
59
+ * The current run's identity and stop lifecycle (F-023) — the finer-grained companion to
60
+ * `isConnecting`, exposed per-slice as `Channel.runStatus$`.
61
+ */
62
+ export interface RunStatus {
63
+ /** `null` when nothing is in flight. */
64
+ kind: RunKind | null;
65
+ stopPhase: StopPhase;
66
+ /** The backend's id for this run, captured from its first frame; sent as `request_id` on suspend. */
67
+ requestId?: string;
68
+ }
69
+ /** Options for {@link IAsgardServiceClient.suspendChannel} / `Channel.stopGeneration` (F-023). */
70
+ export interface StopGenerationOptions {
71
+ /**
72
+ * Give up on the run instead of letting it wind down (F-023 AC7). Only meant for the timeout
73
+ * escape hatch — a normal stop lets the backend roll the turn back cleanly.
74
+ */
75
+ force?: boolean;
76
+ }
34
77
  export interface ChannelStates {
35
78
  isConnecting: boolean;
79
+ /** Which run holds the connection and where it is in the stop lifecycle (F-023). */
80
+ runStatus: RunStatus;
36
81
  conversation: Conversation;
37
82
  /** Current Task Check List derived from the conversation (F-010; exposed as a store in F-013). */
38
83
  tasks: Task[];
@@ -54,6 +99,12 @@ export interface ChannelConfig {
54
99
  channelTitle?: string | null;
55
100
  /** Seed for the launchedSandboxes store (F-019) — from `GET /channel/metadata` at join. Reconciled on set. */
56
101
  launchedSandboxes?: LaunchedSandbox[];
102
+ /**
103
+ * The channel's run state from `GET /channel/metadata` at join (F-023 AC9 / UC-046). Decides whether
104
+ * a `restore()` is tailing a live run or merely replaying a finished transcript — the latter must not
105
+ * present as generation in progress. Defaults to `IDLE`.
106
+ */
107
+ runState?: ChannelRunState;
57
108
  statesObserver?: ObserverOrNext<ChannelStates>;
58
109
  }
59
110
  /** A channel's run state from `GET /channel/metadata` (F-015): `RUNNING` = a run is in flight. */
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/types/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/types/channel.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BlobUploadResponse } from './blob';
2
2
  import { EventHandler } from './event-emitter';
3
- import { ChannelMetadata } from './channel';
3
+ import { ChannelMetadata, StopGenerationOptions } from './channel';
4
4
  import { SseResponse, ToolCallConsentAnswer } from './sse-response';
5
5
  import { EventType, FetchSseAction } from '../constants/enum';
6
6
  import { Subscription } from 'rxjs';
@@ -23,6 +23,15 @@ export interface IAsgardServiceClient {
23
23
  * backward compatibility — a client without it skips the metadata gate.
24
24
  */
25
25
  channelMetadata?(customChannelId: string): Promise<ChannelMetadata | null>;
26
+ /**
27
+ * Ask the backend to suspend the channel's background run (F-023 AC1) via
28
+ * `POST {base}/message/suspend`. Resolving means **accepted**, not stopped — the stop is declared
29
+ * later by the terminal event on the already-open SSE stream, so the caller must keep that stream.
30
+ * Optional for backward compatibility — a client without it falls back to the legacy local abort.
31
+ */
32
+ suspendChannel?(customChannelId: string, options?: StopGenerationOptions & {
33
+ requestId?: string;
34
+ }): Promise<void>;
26
35
  uploadFile?(file: File, customChannelId: string): Promise<BlobUploadResponse>;
27
36
  downloadChannelHomeFile?(relativePath: string, customChannelId: string): Promise<ChannelHomeDownloadResult>;
28
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,5 @@ export type * from './event-emitter';
8
8
  export type * from './blob';
9
9
  export type * from './sandbox-fs';
10
10
  export { HttpError, isHttpError } from './http-error';
11
+ export { ChannelBusyError, isChannelBusyError } from './channel-busy-error';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,QAAQ,CAAC;AAC5B,mBAAmB,UAAU,CAAC;AAC9B,mBAAmB,WAAW,CAAC;AAC/B,mBAAmB,gBAAgB,CAAC;AACpC,mBAAmB,QAAQ,CAAC;AAC5B,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,iBAAiB,CAAC;AACrC,mBAAmB,QAAQ,CAAC;AAC5B,mBAAmB,cAAc,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,QAAQ,CAAC;AAC5B,mBAAmB,UAAU,CAAC;AAC9B,mBAAmB,WAAW,CAAC;AAC/B,mBAAmB,gBAAgB,CAAC;AACpC,mBAAmB,QAAQ,CAAC;AAC5B,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,iBAAiB,CAAC;AACrC,mBAAmB,QAAQ,CAAC;AAC5B,mBAAmB,cAAc,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asgard-js/core",
3
- "version": "0.3.26",
3
+ "version": "0.3.27",
4
4
  "dependencies": {
5
5
  "@microsoft/fetch-event-source": "^2.0.1",
6
6
  "rxjs": "^7.8.1",