@asgard-js/core 0.2.62 → 0.2.63

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.
Files changed (50) hide show
  1. package/README.md +95 -20
  2. package/dist/constants/enum.d.ts +7 -0
  3. package/dist/constants/enum.d.ts.map +1 -1
  4. package/dist/index.cjs +4 -4
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.ts +6 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4 -4
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.mjs +1555 -1145
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/lib/channel.d.ts +39 -1
  13. package/dist/lib/channel.d.ts.map +1 -1
  14. package/dist/lib/channel.spec.d.ts +2 -0
  15. package/dist/lib/channel.spec.d.ts.map +1 -0
  16. package/dist/lib/client.d.ts +16 -1
  17. package/dist/lib/client.d.ts.map +1 -1
  18. package/dist/lib/client.spec.d.ts +2 -0
  19. package/dist/lib/client.spec.d.ts.map +1 -0
  20. package/dist/lib/conversation.d.ts +18 -0
  21. package/dist/lib/conversation.d.ts.map +1 -1
  22. package/dist/lib/conversation.spec.d.ts +2 -0
  23. package/dist/lib/conversation.spec.d.ts.map +1 -0
  24. package/dist/lib/create-sse-observable.d.ts +4 -1
  25. package/dist/lib/create-sse-observable.d.ts.map +1 -1
  26. package/dist/lib/derived-stores.d.ts +39 -0
  27. package/dist/lib/derived-stores.d.ts.map +1 -0
  28. package/dist/lib/derived-stores.spec.d.ts +2 -0
  29. package/dist/lib/derived-stores.spec.d.ts.map +1 -0
  30. package/dist/lib/subagent-reducer.d.ts +46 -0
  31. package/dist/lib/subagent-reducer.d.ts.map +1 -0
  32. package/dist/lib/subagent-reducer.spec.d.ts +2 -0
  33. package/dist/lib/subagent-reducer.spec.d.ts.map +1 -0
  34. package/dist/lib/task-reducer.d.ts +23 -0
  35. package/dist/lib/task-reducer.d.ts.map +1 -0
  36. package/dist/lib/task-reducer.spec.d.ts +2 -0
  37. package/dist/lib/task-reducer.spec.d.ts.map +1 -0
  38. package/dist/types/channel.d.ts +73 -1
  39. package/dist/types/channel.d.ts.map +1 -1
  40. package/dist/types/client.d.ts +9 -0
  41. package/dist/types/client.d.ts.map +1 -1
  42. package/dist/types/index.d.ts +2 -0
  43. package/dist/types/index.d.ts.map +1 -1
  44. package/dist/types/sse-response.d.ts +66 -0
  45. package/dist/types/sse-response.d.ts.map +1 -1
  46. package/dist/types/subagent.d.ts +37 -0
  47. package/dist/types/subagent.d.ts.map +1 -0
  48. package/dist/types/task.d.ts +21 -0
  49. package/dist/types/task.d.ts.map +1 -0
  50. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import { ChannelConfig, FetchSseOptions, FetchSsePayload, ToolCallConsentAnswer } from '../types';
1
+ import { ChannelConfig, FetchSseOptions, FetchSsePayload, Subagent, Task, ToolCallConsentAnswer } from '../types';
2
+ import { Observable } from 'rxjs';
2
3
 
3
4
  export default class Channel {
4
5
  private client;
@@ -6,19 +7,56 @@ export default class Channel {
6
7
  customMessageId?: string;
7
8
  private isConnecting$;
8
9
  private conversation$;
10
+ private channelTitleSubject;
11
+ private derivedStores;
9
12
  private statesObserver?;
10
13
  private statesSubscription?;
14
+ /** Reactive Task Check List store (F-013): emits only when the list changes; replays the snapshot. */
15
+ readonly tasks$: Observable<Task[]>;
16
+ /** Reactive Subagent list store (F-013): emits only when the list changes; replays the snapshot. */
17
+ readonly subagents$: Observable<Subagent[]>;
18
+ /** Reactive channel title store (F-016): seeded from metadata, updated by `title.update`; replay-safe. */
19
+ readonly channelTitle$: Observable<string | null>;
11
20
  private currentUserMessageId?;
12
21
  private lastSentMessageId?;
13
22
  private constructor();
23
+ /** Current Task Check List snapshot (F-013) — for framework-agnostic `getSnapshot()` bridging. */
24
+ getTasks(): Task[];
25
+ /** Current Subagent list snapshot (F-013) — for framework-agnostic `getSnapshot()` bridging. */
26
+ getSubagents(): Subagent[];
27
+ /** Current channel title snapshot (F-016) — for framework-agnostic `getSnapshot()` bridging. */
28
+ getChannelTitle(): string | null;
29
+ /** Seed / override the channel title (F-016) — used by the join-restore metadata seed (F-015). */
30
+ setChannelTitle(title: string | null): void;
14
31
  static create(config: ChannelConfig): Channel;
15
32
  static reset(config: ChannelConfig, payload?: Pick<FetchSsePayload, 'text' | 'payload'>, options?: FetchSseOptions, onChannelCreated?: (channel: Channel) => void): Promise<Channel>;
33
+ /**
34
+ * Join an **existing** channel without resetting it (F-015). Seeds the title from `config.channelTitle`
35
+ * (the `GET /channel/metadata` value) at construction, then replays the server transcript via GET
36
+ * `rejoinSse` and holds `isConnecting` until the run reaches a terminal. Never sends `RESET_CHANNEL`,
37
+ * so the channel's history / session / title are preserved — this is the fix for the mount-time
38
+ * "join an existing channel and wipe its history" data-loss bug.
39
+ */
40
+ static restore(config: ChannelConfig, options?: FetchSseOptions, onChannelCreated?: (channel: Channel) => void): Promise<Channel>;
16
41
  private subscribe;
17
42
  /**
18
43
  * Resolves payload by executing it if it's a function, otherwise returns as-is.
19
44
  */
20
45
  private resolvePayload;
46
+ /**
47
+ * The SSE run handlers shared by every run kind (POST send/reset and GET rejoin): fold each frame
48
+ * through the conversation reducer, keep the title store in sync, attach the traceId to the pending
49
+ * user bubble, and settle the run promise (releasing `isConnecting`) on completion / error.
50
+ */
51
+ private buildRunHandlers;
21
52
  private fetchSse;
53
+ /**
54
+ * Join-restore transport (F-015): replay the server transcript via GET `rejoinSse` (F-014) and, if a
55
+ * run is still live, keep listening until its terminal — holding `isConnecting` the whole time so the
56
+ * input stays gated (F-003). A client without GET-replay support settles immediately (nothing to
57
+ * restore), so the input is released rather than stuck.
58
+ */
59
+ private rejoinChannel;
22
60
  private resetChannel;
23
61
  sendMessage(payload: Pick<FetchSsePayload, 'customMessageId' | 'text' | 'payload' | 'blobIds'> & {
24
62
  filePreviewUrls?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/lib/channel.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EAEb,eAAe,EACf,eAAe,EAIf,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAIlB,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,OAAO,CAAC,MAAM,CAAuB;IAE9B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,cAAc,CAAC,CAAgC;IACvD,OAAO,CAAC,kBAAkB,CAAC,CAAe;IAC1C,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAKtC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IAEnC,OAAO;WAkBO,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;WAOhC,KAAK,CACvB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC,EACnD,OAAO,CAAC,EAAE,eAAe,EACzB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAC5C,OAAO,CAAC,OAAO,CAAC;IAsBnB,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,QAAQ;IA0ChB,OAAO,CAAC,YAAY;IAab,WAAW,CAChB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG;QACnF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,EACD,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC;IAgCT,qBAAqB,CAC1B,gBAAgB,EAAE,qBAAqB,EAAE,EACzC,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAgBT,KAAK,IAAI,IAAI;CAKrB"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/lib/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6D,UAAU,EAAgB,MAAM,MAAM,CAAC;AAE3G,OAAO,EACL,aAAa,EAEb,eAAe,EACf,eAAe,EAGf,QAAQ,EAER,IAAI,EACJ,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAKlB,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,OAAO,CAAC,MAAM,CAAuB;IAE9B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAC,CAAgC;IACvD,OAAO,CAAC,kBAAkB,CAAC,CAAe;IAE1C,sGAAsG;IACtG,SAAgB,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,oGAAoG;IACpG,SAAgB,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,0GAA0G;IAC1G,SAAgB,aAAa,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzD,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAKtC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IAEnC,OAAO;IAwBP,kGAAkG;IAC3F,QAAQ,IAAI,IAAI,EAAE;IAIzB,gGAAgG;IACzF,YAAY,IAAI,QAAQ,EAAE;IAIjC,gGAAgG;IACzF,eAAe,IAAI,MAAM,GAAG,IAAI;IAIvC,kGAAkG;IAC3F,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;WAIpC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;WAOhC,KAAK,CACvB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC,EACnD,OAAO,CAAC,EAAE,eAAe,EACzB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAC5C,OAAO,CAAC,OAAO,CAAC;IAsBnB;;;;;;OAMG;WACiB,OAAO,CACzB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,eAAe,EACzB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAC5C,OAAO,CAAC,OAAO,CAAC;IAqBnB,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAkDxB,OAAO,CAAC,QAAQ;IAOhB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,YAAY;IAab,WAAW,CAChB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG;QACnF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,EACD,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC;IAgCT,qBAAqB,CAC1B,gBAAgB,EAAE,qBAAqB,EAAE,EACzC,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAgBT,KAAK,IAAI,IAAI;CAOrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=channel.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.spec.d.ts","sourceRoot":"","sources":["../../src/lib/channel.spec.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import { EventType } from '../constants/enum';
2
- import { ClientConfig, IAsgardServiceClient, FetchSsePayload, FetchSseOptions, SseResponse, SseEvents, BlobUploadResponse, CwdDownloadResult } from '../types';
2
+ import { ChannelMetadata, ClientConfig, IAsgardServiceClient, FetchSsePayload, FetchSseOptions, SseResponse, SseEvents, BlobUploadResponse, CwdDownloadResult } from '../types';
3
3
 
4
4
  export default class AsgardServiceClient implements IAsgardServiceClient {
5
5
  private apiKey?;
@@ -18,6 +18,21 @@ export default class AsgardServiceClient implements IAsgardServiceClient {
18
18
  on<K extends keyof SseEvents>(event: K, listener: SseEvents[K]): void;
19
19
  handleEvent(response: SseResponse<EventType>): void;
20
20
  fetchSse(payload: FetchSsePayload, options?: FetchSseOptions): void;
21
+ /**
22
+ * Cold-start transcript rejoin (F-014): a `GET /message/sse?custom_channel_id=…` with an empty
23
+ * `Last-Event-ID` replays the collapsed history (`message.user` + self-sufficient `*.complete`),
24
+ * assembled through the same reducer. Reuses the F-002 native Last-Event-ID transport (no re-POST).
25
+ */
26
+ rejoinSse(customChannelId: string, options?: FetchSseOptions): void;
27
+ private deriveChannelMetadataEndpoint;
28
+ /**
29
+ * Join-init existence + restore gate (F-015): `GET {base}/channel/metadata?custom_channel_id=…`.
30
+ * `200` → parsed {@link ChannelMetadata}; `404` → `null` (channel does not exist); any other non-OK
31
+ * status or network error throws. The caller must never treat an indeterminate result (throw) as
32
+ * "not exists" — that would let a mount-time reset wipe an existing channel's history.
33
+ */
34
+ channelMetadata(customChannelId: string): Promise<ChannelMetadata | null>;
35
+ private runSse;
21
36
  /**
22
37
  * Detach the client from its owning component without aborting in-flight SSE
23
38
  * runs. Used when a chatbot unmounts (e.g. the user navigates to another
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,oBAAoB;IACtE,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,mBAAmB,CAAC,CAAgD;IAC5E,OAAO,CAAC,aAAa,CAAC,CAAyB;gBAEnC,MAAM,EAAE,YAAY;IAkChC,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI;IA0CnD,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAsCnE;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAc5C,OAAO,CAAC,YAAY;IAUpB,KAAK,IAAI,IAAI;IAcb;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4ClF;;;OAGG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6ChG;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAexB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,oBAAoB;IACtE,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,mBAAmB,CAAC,CAAgD;IAC5E,OAAO,CAAC,aAAa,CAAC,CAAyB;gBAEnC,MAAM,EAAE,YAAY;IAkChC,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI;IA0CnD,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAgBnE;;;;OAIG;IACH,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAmBnE,OAAO,CAAC,6BAA6B;IAMrC;;;;;OAKG;IACG,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAqC/E,OAAO,CAAC,MAAM;IA+Bd;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAc5C,OAAO,CAAC,YAAY;IAUpB,KAAK,IAAI,IAAI;IAcb;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4ClF;;;OAGG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6ChG;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAexB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.spec.d.ts","sourceRoot":"","sources":["../../src/lib/client.spec.ts"],"names":[],"mappings":""}
@@ -12,13 +12,31 @@ export default class Conversation implements IConversation {
12
12
  pushMessage(message: ConversationMessage): Conversation;
13
13
  clearPendingConsent(): Conversation;
14
14
  onMessage(response: SseResponse<EventType>): Conversation;
15
+ /**
16
+ * A message is terminal once `complete` has materialized it (a bot message with `isTyping === false`).
17
+ * Terminal messages must never regress to typing/streaming — late `start`/`delta` frames from replay
18
+ * or out-of-order delivery are ignored (F-011 / UC-018).
19
+ */
20
+ private isTerminalBot;
21
+ /**
22
+ * A thinking block is terminal once `thinking.complete` has settled it (`isThinking === false`).
23
+ * Like the bot terminal guard (F-011), it must never regress to the streaming state — late
24
+ * `thinking.start` / `thinking.delta` frames from replay or out-of-order delivery are ignored.
25
+ */
26
+ private isTerminalThinking;
15
27
  onMessageStart(response: SseResponse<EventType.MESSAGE_START>): Conversation;
16
28
  onMessageDelta(response: SseResponse<EventType.MESSAGE_DELTA>): Conversation;
17
29
  onMessageComplete(response: SseResponse<EventType.MESSAGE_COMPLETE>): Conversation;
30
+ onThinkingStart(response: SseResponse<EventType.MESSAGE_THINKING_START>): Conversation;
31
+ onThinkingDelta(response: SseResponse<EventType.MESSAGE_THINKING_DELTA>): Conversation;
32
+ onThinkingComplete(response: SseResponse<EventType.MESSAGE_THINKING_COMPLETE>): Conversation;
33
+ onMessageUser(response: SseResponse<EventType.MESSAGE_USER>): Conversation;
18
34
  onMessageError(response: SseResponse<EventType.ERROR>): Conversation;
19
35
  onToolCallStart(response: SseResponse<EventType.TOOL_CALL_START>): Conversation;
20
36
  onToolCallComplete(response: SseResponse<EventType.TOOL_CALL_COMPLETE>): Conversation;
21
37
  onToolCallConsent(response: SseResponse<EventType.TOOL_CALL_CONSENT>): Conversation;
38
+ onSubagentStart(response: SseResponse<EventType.SUBAGENT_START>): Conversation;
39
+ onSubagentComplete(response: SseResponse<EventType.SUBAGENT_COMPLETE>): Conversation;
22
40
  }
23
41
  export {};
24
42
  //# sourceMappingURL=conversation.d.ts.map
@@ -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,EAAE,mBAAmB,EAA+B,WAAW,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAEnH,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,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,YAAY;IAqBzD,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY;IAmB5E,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY;IA0B5E,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAsBlF,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;IAyB/E,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,YAAY;IAqBrF,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,YAAY;CAKpF"}
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,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;IAuB5E,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY;IA2B5E,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAsBlF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,YAAY;IAoBtF,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,YAAY;IAwBtF,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,YAAY;IAqB5F,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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conversation.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.spec.d.ts","sourceRoot":"","sources":["../../src/lib/conversation.spec.ts"],"names":[],"mappings":""}
@@ -6,7 +6,10 @@ interface CreateSseObservableOptions {
6
6
  endpoint: string;
7
7
  apiKey?: string;
8
8
  debugMode?: boolean;
9
- payload: FetchSsePayload;
9
+ /** POST dispatches a run; GET is the transcript cold-start rejoin (F-014). Defaults to POST. */
10
+ method?: 'GET' | 'POST';
11
+ /** Only sent for POST; a GET rejoin carries its params in the URL. */
12
+ payload?: FetchSsePayload;
10
13
  customHeaders?: Record<string, string>;
11
14
  }
12
15
  export declare function createSseObservable(options: CreateSseObservableOptions): Observable<SseResponse<EventType>>;
@@ -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,OAAO,EAAE,eAAe,CAAC;IACzB,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,CAqF3G"}
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"}
@@ -0,0 +1,39 @@
1
+ import { ConversationMessage, Subagent, Task } from '../types';
2
+ import { SubagentEvent } from './subagent-reducer';
3
+ import { default as Conversation } from './conversation';
4
+ import { Observable } from 'rxjs';
5
+
6
+ /**
7
+ * Adapt the ordered conversation messages into the `SubagentEvent[]` that `reduceSubagents` folds. The
8
+ * conversation Map preserves first-insertion order, so iterating its values yields arrival order. A
9
+ * completed child tool emits toolStart + toolComplete back-to-back (its final status is what shows);
10
+ * an in-progress child emits only toolStart (→ running).
11
+ */
12
+ export declare function conversationToSubagentEvents(messages: ConversationMessage[]): SubagentEvent[];
13
+ /** Fold the conversation's completed Task tool-calls into the current Task list (F-010). */
14
+ export declare function deriveTasks(conversation: Conversation): Task[];
15
+ /** Fold the conversation's Agent / subagent / child tool-call events into the current Subagent list (F-012). */
16
+ export declare function deriveSubagents(conversation: Conversation): Subagent[];
17
+ /** Structural equality for two derived Task lists (so a slice only emits when the list truly changes). */
18
+ export declare function tasksEqual(a: Task[], b: Task[]): boolean;
19
+ /** Structural equality for two derived Subagent lists (including each subagent's child tool list). */
20
+ export declare function subagentsEqual(a: Subagent[], b: Subagent[]): boolean;
21
+ export interface DerivedStores {
22
+ /** Emits the current Task list; only when it changes (not on every conversation delta). */
23
+ tasks$: Observable<Task[]>;
24
+ /** Emits the current Subagent list; only when it changes. */
25
+ subagents$: Observable<Subagent[]>;
26
+ /** The current Task list snapshot (immutable). */
27
+ getTasks: () => Task[];
28
+ /** The current Subagent list snapshot (immutable). */
29
+ getSubagents: () => Subagent[];
30
+ /** Tear down the internal subscriptions. */
31
+ teardown: () => void;
32
+ }
33
+ /**
34
+ * Build the per-slice derived stores from a `conversation$` source. Each slice is a `BehaviorSubject`
35
+ * (replays the current snapshot to late subscribers) fed through `distinctUntilChanged`, so it emits
36
+ * only when that slice structurally changes — unrelated high-frequency deltas are suppressed.
37
+ */
38
+ export declare function createDerivedStores(conversation$: Observable<Conversation>): DerivedStores;
39
+ //# sourceMappingURL=derived-stores.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derived-stores.d.ts","sourceRoot":"","sources":["../../src/lib/derived-stores.ts"],"names":[],"mappings":"AAUA,OAAO,EAA8C,UAAU,EAAgB,MAAM,MAAM,CAAC;AAC5F,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAqD,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAA+B,QAAQ,EAAoB,IAAI,EAAE,MAAM,UAAU,CAAC;AAM9G;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,aAAa,EAAE,CA4D7F;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,EAAE,CAO9D;AAED,gHAAgH;AAChH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,QAAQ,EAAE,CAEtE;AAED,0GAA0G;AAC1G,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,CAgBxD;AAiBD,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,CAiBpE;AAED,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3B,6DAA6D;IAC7D,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;IACvB,sDAAsD;IACtD,YAAY,EAAE,MAAM,QAAQ,EAAE,CAAC;IAC/B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,aAAa,CAiB1F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=derived-stores.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derived-stores.spec.d.ts","sourceRoot":"","sources":["../../src/lib/derived-stores.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { Subagent, SubagentStatus } from '../types/subagent';
2
+
3
+ /** The spawning `Agent` tool-call (native builtin). `true` → route out of the tool-call group. */
4
+ export declare function isAgentTool(call: {
5
+ toolsetName: string;
6
+ toolName: string;
7
+ }): boolean;
8
+ /** Whether a tool-call belongs to a subagent (child). The main group keeps only `parentToolUseId === ""`. */
9
+ export declare function isSubagentChildTool(parentToolUseId?: string): boolean;
10
+ /** The subagent-related SSE events, adapted from their facts by the react layer, in arrival order. */
11
+ export type SubagentEvent = {
12
+ kind: 'agentStart';
13
+ toolUseId: string;
14
+ description?: string;
15
+ } | {
16
+ kind: 'subagentStart';
17
+ parentToolUseId: string;
18
+ agentId?: string;
19
+ subagentType?: string;
20
+ description?: string;
21
+ } | {
22
+ kind: 'toolStart';
23
+ parentToolUseId: string;
24
+ toolUseId: string;
25
+ toolsetName: string;
26
+ toolName: string;
27
+ parameter?: Record<string, unknown>;
28
+ reason?: string;
29
+ } | {
30
+ kind: 'toolComplete';
31
+ parentToolUseId: string;
32
+ toolUseId: string;
33
+ isError?: boolean;
34
+ } | {
35
+ kind: 'subagentComplete';
36
+ parentToolUseId: string;
37
+ status: SubagentStatus;
38
+ summary?: string;
39
+ };
40
+ /**
41
+ * Fold the subagent event stream into the current list (in first-seen order). Pure and replay-safe:
42
+ * status goes terminal only via `subagentComplete` (agentStart / subagentStart never change it), so a
43
+ * replay never knocks a completed subagent back to running.
44
+ */
45
+ export declare function reduceSubagents(events: SubagentEvent[]): Subagent[];
46
+ //# sourceMappingURL=subagent-reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-reducer.d.ts","sourceRoot":"","sources":["../../src/lib/subagent-reducer.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAoB,MAAM,mBAAmB,CAAC;AAE/E,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEpF;AAED,6GAA6G;AAC7G,wBAAgB,mBAAmB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,sGAAsG;AACtG,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjH;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAUpG;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAwEnE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=subagent-reducer.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-reducer.spec.d.ts","sourceRoot":"","sources":["../../src/lib/subagent-reducer.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { Task } from '../types/task';
2
+
3
+ /** Native built-in check. `true` → route out of the tool-call group, feed to `reduceTaskEvents`. */
4
+ export declare function isTaskTool(call: {
5
+ toolsetName: string;
6
+ toolName: string;
7
+ }): boolean;
8
+ /**
9
+ * A completed task tool-call — the fields `reduceTaskEvents` needs, mirroring a completed
10
+ * `ConversationToolCallMessage` (or the raw `tool_call.complete` fact).
11
+ */
12
+ export interface TaskToolEvent {
13
+ toolName: string;
14
+ parameter: Record<string, unknown>;
15
+ /** `toolUseResultSidecar`: `TaskCreate` → authoritative id; `TaskUpdate` → `statusChange.to`. */
16
+ sidecar?: Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Fold the `TaskCreate` / `TaskUpdate` complete-event stream into the current list (in create-arrival
20
+ * order). Pure and replay-safe: any prefix of the same stream folds to the same snapshot.
21
+ */
22
+ export declare function reduceTaskEvents(events: TaskToolEvent[]): Task[];
23
+ //# sourceMappingURL=task-reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-reducer.d.ts","sourceRoot":"","sources":["../../src/lib/task-reducer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAc,MAAM,eAAe,CAAC;AAIjD,oGAAoG;AACpG,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAEnF;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,iGAAiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAUD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,CAuChE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=task-reducer.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-reducer.spec.d.ts","sourceRoot":"","sources":["../../src/lib/task-reducer.spec.ts"],"names":[],"mappings":""}
@@ -1,3 +1,5 @@
1
+ import { Task } from './task';
2
+ import { Subagent, SubagentTerminalStatus } from './subagent';
1
3
  import { ErrorMessage, Message } from './sse-response';
2
4
  import { IAsgardServiceClient } from './client';
3
5
  import { default as Conversation } from '../lib/conversation';
@@ -8,14 +10,36 @@ export type ObserverOrNext<T> = Partial<Observer<T>> | ((value: T) => void);
8
10
  export interface ChannelStates {
9
11
  isConnecting: boolean;
10
12
  conversation: Conversation;
13
+ /** Current Task Check List derived from the conversation (F-010; exposed as a store in F-013). */
14
+ tasks: Task[];
15
+ /** Current Subagent list derived from the conversation (F-012; exposed as a store in F-013). */
16
+ subagents: Subagent[];
17
+ /** Current channel title — seeded from metadata + updated by `title.update` (F-016). `null` = unnamed. */
18
+ channelTitle: string | null;
11
19
  }
12
20
  export interface ChannelConfig {
13
21
  client: IAsgardServiceClient;
14
22
  customChannelId: string;
15
23
  customMessageId?: string;
16
24
  conversation: Conversation;
25
+ /** Seed for the channel title store (F-016) — from `GET /channel/metadata` at join (wired by F-015). `null` = unnamed. */
26
+ channelTitle?: string | null;
17
27
  statesObserver?: ObserverOrNext<ChannelStates>;
18
28
  }
29
+ /** A channel's run state from `GET /channel/metadata` (F-015): `RUNNING` = a run is in flight. */
30
+ export type ChannelRunState = 'RUNNING' | 'IDLE';
31
+ /**
32
+ * Channel metadata from `GET /channel/metadata` (F-015) — the join-init existence + restore gate.
33
+ * Returned by `client.channelMetadata()` on `200`. A `404` (channel does not exist) is surfaced as
34
+ * `channelMetadata()` returning `null`, which is distinct from a `200` carrying `title: null` (an
35
+ * existing but unnamed channel). `title` seeds the channel-title store (F-016); `runState` describes
36
+ * whether a run is still streaming when history is replayed (F-014).
37
+ */
38
+ export interface ChannelMetadata {
39
+ title: string | null;
40
+ runState: ChannelRunState;
41
+ lastActivityAt?: string;
42
+ }
19
43
  export type ConversationUserMessage = {
20
44
  type: 'user';
21
45
  messageId: string;
@@ -23,6 +47,10 @@ export type ConversationUserMessage = {
23
47
  blobIds?: string[];
24
48
  filePreviewUrls?: string[];
25
49
  documentNames?: string[];
50
+ /** The client-sent id echoed back on GET rejoin — the dedup key vs the optimistic bubble (F-014). */
51
+ customMessageId?: string;
52
+ /** Identity hint carried by a replayed `message.user` (F-014). */
53
+ identityHint?: string;
26
54
  time: Date;
27
55
  traceId?: string;
28
56
  };
@@ -56,9 +84,53 @@ export type ConversationToolCallMessage = {
56
84
  toolsetName: string;
57
85
  parameter: Record<string, unknown>;
58
86
  result?: Record<string, unknown>;
87
+ /** Backend-reported failure flag carried from `tool_call.complete` (F-009); absent until complete. */
88
+ isError?: boolean;
89
+ /**
90
+ * Structured result sidecar carried from `tool_call.complete` (F-010); the replay-safe source for
91
+ * `TaskCreate` / `TaskUpdate` accumulation (id / status), read by `reduceTaskEvents`.
92
+ */
93
+ sidecar?: Record<string, unknown>;
94
+ /** This tool-call's own correlation id; an `Agent` spawn's `toolUseId` becomes a subagent key (F-012). */
95
+ toolUseId?: string;
96
+ /** Non-empty when this tool-call belongs to a subagent (points at the `Agent`'s `toolUseId`) (F-012). */
97
+ parentToolUseId?: string;
59
98
  isComplete: boolean;
60
99
  time: Date;
61
100
  traceId?: string;
62
101
  };
63
- export type ConversationMessage = ConversationUserMessage | ConversationBotMessage | ConversationErrorMessage | ConversationToolCallMessage;
102
+ /**
103
+ * A subagent lifecycle event (F-012), stored so the react layer can fold `subagent.{start,complete}`
104
+ * together with the ordered `Agent` / child tool-call messages into the current subagent list.
105
+ * Keyed in the conversation Map by `subagent:${parentToolUseId}:${kind}` (start upserts, complete wins).
106
+ */
107
+ export type ConversationSubagentMessage = {
108
+ type: 'subagent';
109
+ messageId: string;
110
+ kind: 'start' | 'complete';
111
+ parentToolUseId: string;
112
+ agentId?: string;
113
+ subagentType?: string;
114
+ description?: string;
115
+ /** Present on `complete`. */
116
+ status?: SubagentTerminalStatus;
117
+ summary?: string;
118
+ time: Date;
119
+ traceId?: string;
120
+ };
121
+ /**
122
+ * Extended-thinking (reasoning) block (F-001), assembled from `message.thinking.{start,delta,complete}`.
123
+ * Rendered as its own collapsible block, separate from the bot answer and tool-calls. `isThinking`
124
+ * distinguishes the streaming state (auto-expanded "Thinking…") from the completed state (collapsed
125
+ * "Thought for a moment"). No elapsed-time field — the completed summary is fixed and replay-safe.
126
+ */
127
+ export type ConversationThinkingMessage = {
128
+ type: 'thinking';
129
+ messageId: string;
130
+ text: string;
131
+ isThinking: boolean;
132
+ time: Date;
133
+ traceId?: string;
134
+ };
135
+ export type ConversationMessage = ConversationUserMessage | ConversationBotMessage | ConversationErrorMessage | ConversationToolCallMessage | ConversationThinkingMessage | ConversationSubagentMessage;
64
136
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/types/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;AAE5E,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,uBAAuB,GACvB,sBAAsB,GACtB,wBAAwB,GACxB,2BAA2B,CAAC"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/types/channel.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { BlobUploadResponse } from './blob';
2
2
  import { EventHandler } from './event-emitter';
3
+ import { ChannelMetadata } from './channel';
3
4
  import { SseResponse, ToolCallConsentAnswer } from './sse-response';
4
5
  import { EventType, FetchSseAction } from '../constants/enum';
5
6
 
@@ -9,6 +10,14 @@ export interface CwdDownloadResult {
9
10
  }
10
11
  export interface IAsgardServiceClient {
11
12
  fetchSse(payload: FetchSsePayload, options?: FetchSseOptions): void;
13
+ /** Cold-start transcript rejoin via GET /message/sse (F-014). Optional for backward compatibility. */
14
+ rejoinSse?(customChannelId: string, options?: FetchSseOptions): void;
15
+ /**
16
+ * Join-init existence + restore gate via `GET /channel/metadata` (F-015). Resolves to the metadata on
17
+ * `200`, `null` on `404` (channel does not exist), and rejects on any other error. Optional for
18
+ * backward compatibility — a client without it skips the metadata gate.
19
+ */
20
+ channelMetadata?(customChannelId: string): Promise<ChannelMetadata | null>;
12
21
  uploadFile?(file: File, customChannelId: string): Promise<BlobUploadResponse>;
13
22
  downloadCwdFile?(relativePath: string, customChannelId: string): Promise<CwdDownloadResult>;
14
23
  }
@@ -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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"}
@@ -2,6 +2,8 @@ export type * from './auth';
2
2
  export type * from './client';
3
3
  export type * from './channel';
4
4
  export type * from './sse-response';
5
+ export type * from './task';
6
+ export type * from './subagent';
5
7
  export type * from './event-emitter';
6
8
  export type * from './blob';
7
9
  export { HttpError, isHttpError } from './http-error';
@@ -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,iBAAiB,CAAC;AACrC,mBAAmB,QAAQ,CAAC;AAC5B,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,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}