@wrongstack/tui 0.287.0 → 0.291.0

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 (102) hide show
  1. package/dist/app-initial-state.d.ts +22 -3
  2. package/dist/app-initial-state.d.ts.map +1 -1
  3. package/dist/app-props.d.ts +622 -0
  4. package/dist/app-props.d.ts.map +1 -0
  5. package/dist/app-reducer.d.ts.map +1 -1
  6. package/dist/app-state.d.ts +74 -11
  7. package/dist/app-state.d.ts.map +1 -1
  8. package/dist/app.d.ts +4 -595
  9. package/dist/app.d.ts.map +1 -1
  10. package/dist/components/agents-monitor.d.ts.map +1 -1
  11. package/dist/components/animation-style.d.ts +29 -0
  12. package/dist/components/animation-style.d.ts.map +1 -1
  13. package/dist/components/auth-panel.d.ts.map +1 -1
  14. package/dist/components/clear-confirm-panel.d.ts +35 -0
  15. package/dist/components/clear-confirm-panel.d.ts.map +1 -0
  16. package/dist/components/confirm-prompt.d.ts +2 -1
  17. package/dist/components/confirm-prompt.d.ts.map +1 -1
  18. package/dist/components/enhance-panel.d.ts +11 -3
  19. package/dist/components/enhance-panel.d.ts.map +1 -1
  20. package/dist/components/exit-confirm-panel.d.ts +28 -0
  21. package/dist/components/exit-confirm-panel.d.ts.map +1 -0
  22. package/dist/components/fleet-panel.d.ts +1 -0
  23. package/dist/components/fleet-panel.d.ts.map +1 -1
  24. package/dist/components/history/banner.d.ts.map +1 -1
  25. package/dist/components/history/entry.d.ts +6 -1
  26. package/dist/components/history/entry.d.ts.map +1 -1
  27. package/dist/components/history/index.d.ts +2 -2
  28. package/dist/components/history/index.d.ts.map +1 -1
  29. package/dist/components/history/replay.d.ts +14 -38
  30. package/dist/components/history/replay.d.ts.map +1 -1
  31. package/dist/components/history/types.d.ts +19 -0
  32. package/dist/components/history/types.d.ts.map +1 -1
  33. package/dist/components/history.d.ts +1 -1
  34. package/dist/components/history.d.ts.map +1 -1
  35. package/dist/components/kanban-panel.d.ts +72 -1
  36. package/dist/components/kanban-panel.d.ts.map +1 -1
  37. package/dist/components/phase-panel.d.ts +1 -1
  38. package/dist/components/phase-panel.d.ts.map +1 -1
  39. package/dist/components/plugin-picker.d.ts.map +1 -1
  40. package/dist/components/powerline-rail.d.ts.map +1 -1
  41. package/dist/components/process-list.d.ts.map +1 -1
  42. package/dist/components/scrollable-history.d.ts +1 -1
  43. package/dist/components/scrollable-history.d.ts.map +1 -1
  44. package/dist/components/settings-picker.d.ts +6 -3
  45. package/dist/components/settings-picker.d.ts.map +1 -1
  46. package/dist/components/slash-confirm-panel.d.ts +14 -0
  47. package/dist/components/slash-confirm-panel.d.ts.map +1 -0
  48. package/dist/components/status-bar-chips.d.ts.map +1 -1
  49. package/dist/components/status-bar.d.ts +25 -22
  50. package/dist/components/status-bar.d.ts.map +1 -1
  51. package/dist/components/statusline-picker.d.ts +6 -4
  52. package/dist/components/statusline-picker.d.ts.map +1 -1
  53. package/dist/components/tools-picker.d.ts.map +1 -1
  54. package/dist/components/worktree-monitor.d.ts +1 -1
  55. package/dist/components/worktree-panel.d.ts +1 -1
  56. package/dist/esc-close-panels.d.ts +42 -0
  57. package/dist/esc-close-panels.d.ts.map +1 -0
  58. package/dist/exit-slash.d.ts +40 -0
  59. package/dist/exit-slash.d.ts.map +1 -0
  60. package/dist/f-key-panels.d.ts +16 -1
  61. package/dist/f-key-panels.d.ts.map +1 -1
  62. package/dist/heap-watchdog.d.ts.map +1 -1
  63. package/dist/height-cache.d.ts +5 -0
  64. package/dist/height-cache.d.ts.map +1 -1
  65. package/dist/history-retention.d.ts +20 -0
  66. package/dist/history-retention.d.ts.map +1 -0
  67. package/dist/hooks/use-auth-panel.d.ts +4 -0
  68. package/dist/hooks/use-auth-panel.d.ts.map +1 -1
  69. package/dist/hooks/use-director-fleet-bridge.d.ts +6 -5
  70. package/dist/hooks/use-director-fleet-bridge.d.ts.map +1 -1
  71. package/dist/hooks/use-exit-command.d.ts +55 -0
  72. package/dist/hooks/use-exit-command.d.ts.map +1 -0
  73. package/dist/hooks/use-fleet-generation-gate.d.ts +37 -0
  74. package/dist/hooks/use-fleet-generation-gate.d.ts.map +1 -0
  75. package/dist/hooks/use-live-todos.d.ts +4 -0
  76. package/dist/hooks/use-live-todos.d.ts.map +1 -0
  77. package/dist/hooks/use-session-interrupt-controller.d.ts +51 -0
  78. package/dist/hooks/use-session-interrupt-controller.d.ts.map +1 -0
  79. package/dist/hooks/use-subagent-events.d.ts +3 -4
  80. package/dist/hooks/use-subagent-events.d.ts.map +1 -1
  81. package/dist/hooks/use-tui-activity.d.ts +2 -1
  82. package/dist/hooks/use-tui-activity.d.ts.map +1 -1
  83. package/dist/hooks/use-tui-event-bridge.d.ts +10 -3
  84. package/dist/hooks/use-tui-event-bridge.d.ts.map +1 -1
  85. package/dist/index.d.ts +7 -7
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +20453 -18161
  88. package/dist/index.js.map +4 -4
  89. package/dist/kanban-audit.d.ts +116 -0
  90. package/dist/kanban-audit.d.ts.map +1 -0
  91. package/dist/kanban-slash.d.ts +178 -0
  92. package/dist/kanban-slash.d.ts.map +1 -0
  93. package/dist/reducers/helpers.d.ts +1 -1
  94. package/dist/reducers/helpers.d.ts.map +1 -1
  95. package/dist/run-tui.d.ts +28 -2
  96. package/dist/run-tui.d.ts.map +1 -1
  97. package/dist/slash-command-search.d.ts +5 -0
  98. package/dist/slash-command-search.d.ts.map +1 -1
  99. package/dist/submit-history.d.ts +9 -6
  100. package/dist/submit-history.d.ts.map +1 -1
  101. package/dist/theme.d.ts.map +1 -1
  102. package/package.json +7 -7
@@ -0,0 +1,55 @@
1
+ import type { Director, SlashCommand } from '@wrongstack/core';
2
+ import type { MutableRefObject } from 'react';
3
+ import type { Action, State } from '../app-reducer.js';
4
+ import type { SessionInterruptController } from './use-session-interrupt-controller.js';
5
+ /**
6
+ * Minimal structural type for the slash registry hooks use. The real
7
+ * registry exports a richer `SlashCommand` interface, but this hook only
8
+ * needs the registration API surface and accepts the command shape
9
+ * implicitly via the factory we register.
10
+ */
11
+ interface SlashRegistryLike {
12
+ register(cmd: SlashCommand, owner?: string, opts?: {
13
+ official?: boolean;
14
+ }): void;
15
+ unregister(name: string): void;
16
+ get?(name: string): SlashCommand | undefined;
17
+ }
18
+ export interface UseExitCommandOptions {
19
+ slashRegistry: SlashRegistryLike;
20
+ dispatch: (action: Action) => void;
21
+ /**
22
+ * Reducer-mirrored snapshot of `state.exitConfirm`. Retained in the hook
23
+ * contract so the caller owns the panel state explicitly; lifecycle
24
+ * teardown is enforced by the awaited confirmation resolver rather than
25
+ * by observing a later render.
26
+ */
27
+ exitConfirm: State['exitConfirm'];
28
+ stateRef: MutableRefObject<State>;
29
+ sessionGenerationRef: MutableRefObject<number>;
30
+ interruptController?: SessionInterruptController | undefined;
31
+ getDirector?: (() => Director | null | undefined) | undefined;
32
+ }
33
+ /**
34
+ * Wire `/exit` to the TUI shell.
35
+ *
36
+ * Mirrors the `/clear` invariant: while a leader run or any subagent is in
37
+ * flight, `/exit` must NOT terminate the TUI silently. It opens an
38
+ * `exitConfirm` panel that requires explicit Enter/Esc acknowledgement.
39
+ *
40
+ * Once the user confirms, the hook bumps the session generation, aborts the
41
+ * foreground leader plus autonomy/SDD drivers, and waits for both leader-idle
42
+ * and fleet teardown behind a bounded 1500 ms grace window. This matches the
43
+ * producer lifecycle used by `/interrupt` and `/clear`.
44
+ * The slash dispatcher then observes `{ exit: true }` on the resolved
45
+ * command and asks Ink to unmount; we deliberately do NOT call `exit()`
46
+ * ourselves so there is exactly one graceful-unmount path.
47
+ *
48
+ * When no work is active, `confirmExit` resolves `true` without opening the
49
+ * modal because there is no fleet teardown to await.
50
+ *
51
+ * The hook must be mounted exactly once from the App component.
52
+ */
53
+ export declare function useExitCommand({ slashRegistry, dispatch, stateRef, sessionGenerationRef, interruptController, getDirector, }: UseExitCommandOptions): void;
54
+ export {};
55
+ //# sourceMappingURL=use-exit-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-exit-command.d.ts","sourceRoot":"","sources":["../../src/hooks/use-exit-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAExF;;;;;GAKG;AACH,UAAU,iBAAiB;IACzB,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACjF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,iBAAiB,CAAC;IACjC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;;OAKG;IACH,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAClC,oBAAoB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,mBAAmB,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,GACZ,EAAE,qBAAqB,GAAG,IAAI,CA+F9B"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Session-generation gate for fleet event bridges.
3
+ *
4
+ * Fleet event bridges must discard events from subagents that were spawned
5
+ * before the last `/clear`. This shared hook encapsulates that logic so any
6
+ * bridge can apply it consistently. Currently consumed by
7
+ * `useDirectorFleetBridge` (Director FleetBus streaming); `useSubagentEvents`
8
+ * (EventBus lifecycle) does not gate on generation today.
9
+ *
10
+ * Usage:
11
+ * ```ts
12
+ * const gate = useFleetGenerationGate(sessionGenerationRef);
13
+ * // On subagent spawn / first-seen:
14
+ * gate.track(id);
15
+ * // Before processing any event:
16
+ * if (!gate.isLive(id)) return;
17
+ * // On subagent removal:
18
+ * gate.forget(id);
19
+ * ```
20
+ *
21
+ * When `sessionGenerationRef` is absent (no /clear support wired), `isLive`
22
+ * always returns `true` — backward-compatible no-op.
23
+ */
24
+ export interface FleetGenerationGate {
25
+ /** Record that a subagent was first seen at the current generation.
26
+ * Call on spawn or first event. No-op when no sessionGenerationRef. */
27
+ track: (subagentId: string) => void;
28
+ /** Returns true if the subagent's events should be processed.
29
+ * Returns false after /clear bumps the generation. */
30
+ isLive: (subagentId: string) => boolean;
31
+ /** Clean up tracking for a removed subagent. */
32
+ forget: (subagentId: string) => void;
33
+ }
34
+ export declare function useFleetGenerationGate(sessionGenerationRef?: {
35
+ current: number;
36
+ } | undefined): FleetGenerationGate;
37
+ //# sourceMappingURL=use-fleet-generation-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-fleet-generation-gate.d.ts","sourceRoot":"","sources":["../../src/hooks/use-fleet-generation-gate.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,mBAAmB;IAClC;4EACwE;IACxE,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;2DACuD;IACvD,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,gDAAgD;IAChD,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CACpC,oBAAoB,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACrD,mBAAmB,CA2BrB"}
@@ -0,0 +1,4 @@
1
+ import type { Agent, TodoItem } from '@wrongstack/core';
2
+ /** React snapshot of canonical Context todos, updated on every replacement. */
3
+ export declare function useLiveTodos(context: Agent['ctx']): TodoItem[];
4
+ //# sourceMappingURL=use-live-todos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-live-todos.d.ts","sourceRoot":"","sources":["../../src/hooks/use-live-todos.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGxD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,EAAE,CAW9D"}
@@ -0,0 +1,51 @@
1
+ import type { EternalAutonomyEngine, ParallelEternalEngine } from '@wrongstack/core';
2
+ import type { SddRunControl } from '@wrongstack/sdd';
3
+ import type { Action, State } from '../app-reducer.js';
4
+ interface MutableRef<T> {
5
+ current: T;
6
+ }
7
+ interface StreamSegment {
8
+ kind: 'assistant' | 'thinking';
9
+ text: string;
10
+ }
11
+ export interface SessionInterruptController {
12
+ abortLeader: () => boolean;
13
+ /**
14
+ * True while a leader run, autonomy loop, or SDD run is in flight. Read by
15
+ * `/clear` to confirm before wiping a session that still has active work.
16
+ */
17
+ isRunning?: (() => boolean) | undefined;
18
+ /** TUI-owned `/clear` confirmation panel bridge. */
19
+ confirmClear?: ((info: {
20
+ leaderActive: boolean;
21
+ subagentCount: number;
22
+ }) => Promise<boolean>) | undefined;
23
+ /** TUI-owned generic slash-command confirmation panel bridge. */
24
+ confirmSlash?: ((question: string, defaultYes: boolean) => Promise<boolean | null>) | undefined;
25
+ resetSession?: (() => void) | undefined;
26
+ waitForIdle?: (() => Promise<void>) | undefined;
27
+ }
28
+ interface UseSessionInterruptControllerOptions {
29
+ interruptController: SessionInterruptController | undefined;
30
+ dispatch: (action: Action) => void;
31
+ stateRef: MutableRef<State>;
32
+ activeCtrlRef: MutableRef<AbortController | null>;
33
+ activeRunSettledRef: MutableRef<Promise<void>>;
34
+ sessionGenerationRef: MutableRef<number>;
35
+ streamingTextRef: MutableRef<string>;
36
+ streamSegmentsRef: MutableRef<StreamSegment[]>;
37
+ pendingDeltaRef: MutableRef<string>;
38
+ assistantCommittedThisRunRef: MutableRef<boolean>;
39
+ flushTimerRef: MutableRef<ReturnType<typeof setTimeout> | null>;
40
+ eternalLoopRunningRef: MutableRef<boolean>;
41
+ parallelLoopRunningRef: MutableRef<boolean>;
42
+ clearPendingConfirms: () => void;
43
+ getEternalEngine: (() => EternalAutonomyEngine | null) | undefined;
44
+ getParallelEngine: (() => ParallelEternalEngine | null) | undefined;
45
+ getSddRun: (() => SddRunControl | null) | undefined;
46
+ switchAutonomy: ((mode: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel') => string | null) | undefined;
47
+ }
48
+ /** Connect `/interrupt` and `/clear` to the live TUI run lifecycle. */
49
+ export declare function useSessionInterruptController({ interruptController, dispatch, stateRef, activeCtrlRef, activeRunSettledRef, sessionGenerationRef, streamingTextRef, streamSegmentsRef, pendingDeltaRef, assistantCommittedThisRunRef, flushTimerRef, eternalLoopRunningRef, parallelLoopRunningRef, clearPendingConfirms, getEternalEngine, getParallelEngine, getSddRun, switchAutonomy, }: UseSessionInterruptControllerOptions): void;
50
+ export {};
51
+ //# sourceMappingURL=use-session-interrupt-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-session-interrupt-controller.d.ts","sourceRoot":"","sources":["../../src/hooks/use-session-interrupt-controller.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,10 @@ import type { Action } from '../app-reducer.js';
6
6
  *
7
7
  * Chat entries are gated by `getChatMode` (fleet-chat verbosity):
8
8
  * - 'full' — every lifecycle line (legacy behavior).
9
- * - 'compact' — spawn ▶, completion ✓, and the FIRST budget ⚡ warning per
10
- * (agent, limit-kind); task-started / iteration / extension
11
- * lines are dropped (F2/F3 monitors show them live).
12
9
  * - 'off' — only non-success completions (✗/⏱/⊘); failures never go
13
10
  * silent. All fleet-table dispatches run in every mode.
14
11
  */
15
- export declare function useSubagentEvents(events: EventBus, dispatch: React.Dispatch<Action>, setActiveMaxContext: (v: number | undefined) => void, getSessionId?: (() => string | undefined) | undefined, getChatMode?: (() => FleetChatVerbosity) | undefined): void;
12
+ export declare function useSubagentEvents(events: EventBus, dispatch: React.Dispatch<Action>, setActiveMaxContext: (v: number | undefined) => void, getSessionId?: (() => string | undefined) | undefined, getChatMode?: (() => FleetChatVerbosity) | undefined, sessionGenerationRef?: {
13
+ current: number;
14
+ } | undefined): void;
16
15
  //# sourceMappingURL=use-subagent-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-subagent-events.d.ts","sourceRoot":"","sources":["../../src/hooks/use-subagent-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAoBhD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAChC,mBAAmB,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,EACpD,YAAY,CAAC,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,EACrD,WAAW,CAAC,EAAE,CAAC,MAAM,kBAAkB,CAAC,GAAG,SAAS,GACnD,IAAI,CAiKN"}
1
+ {"version":3,"file":"use-subagent-events.d.ts","sourceRoot":"","sources":["../../src/hooks/use-subagent-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAqBhD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAChC,mBAAmB,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,EACpD,YAAY,CAAC,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,EACrD,WAAW,CAAC,EAAE,CAAC,MAAM,kBAAkB,CAAC,GAAG,SAAS,EACpD,oBAAoB,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACrD,IAAI,CAoKN"}
@@ -1,5 +1,6 @@
1
1
  import { type Agent } from '@wrongstack/core';
2
2
  import type { Action, State } from '../app-reducer.js';
3
+ import { type HeapSample } from '../heap-watchdog.js';
3
4
  export interface UseTuiActivityOptions {
4
5
  status: State['status'];
5
6
  fleet: State['fleet'];
@@ -17,12 +18,12 @@ export interface UseTuiActivityOptions {
17
18
  */
18
19
  export declare function useTuiActivity({ status, fleet, enhanceBusy, thinkingWord, projectRoot, stateRef, agentContext, dispatch, }: UseTuiActivityOptions): {
19
20
  displayThinkingWord: string;
20
- displayThinkingWordRef: import("react").RefObject<string>;
21
21
  startedAt: number;
22
22
  nowTick: number;
23
23
  setNowTick: import("react").Dispatch<import("react").SetStateAction<number>>;
24
24
  workingTimeMs: number;
25
25
  fleetWorkingTimeMs: number;
26
+ processMemory: HeapSample;
26
27
  enhanceDots: number;
27
28
  refreshGoalSummary: () => void;
28
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-tui-activity.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tui-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAgC,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAIvD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,KAAK,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,EAAE,qBAAqB;;;;;;;;;;EA+KvB"}
1
+ {"version":3,"file":"use-tui-activity.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tui-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAgC,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,UAAU,EAAqC,MAAM,qBAAqB,CAAC;AAGzF,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,KAAK,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,EAAE,qBAAqB;;;;;;;;;;EAkLvB"}
@@ -2,6 +2,8 @@ import type { EventBus } from '@wrongstack/core';
2
2
  import type { Action, State } from '../app-reducer.js';
3
3
  type ClearHistoryDispatch = React.Dispatch<{
4
4
  type: 'clearHistory';
5
+ model?: string | undefined;
6
+ provider?: string | undefined;
5
7
  } | {
6
8
  type: 'resetContextChip';
7
9
  } | {
@@ -12,11 +14,16 @@ type ClearHistoryDispatch = React.Dispatch<{
12
14
  export interface UseTuiEventBridgeOptions {
13
15
  events: EventBus;
14
16
  dispatch: React.Dispatch<Action>;
15
- stateRef: React.MutableRefObject<State>;
17
+ stateRef: {
18
+ current: State;
19
+ };
16
20
  setActiveMaxContext: (value: number | undefined) => void;
17
21
  getSessionId?: (() => string | undefined) | undefined;
18
- subscribeAutoPhase?: ((handler: (event: string, payload: unknown) => void) => () => void) | undefined;
22
+ subscribeGoal?: ((handler: (event: string, payload: unknown) => void) => () => void) | undefined;
19
23
  onClearHistory?: ((dispatch: ClearHistoryDispatch) => void) | undefined;
24
+ sessionGenerationRef?: {
25
+ current: number;
26
+ } | undefined;
20
27
  }
21
28
  /**
22
29
  * EventBus and host-event subscriptions that mutate TUI state.
@@ -24,6 +31,6 @@ export interface UseTuiEventBridgeOptions {
24
31
  * Keeping this bridge outside App preserves the reducer as the single state
25
32
  * writer while taking long-lived subscription wiring out of the render surface.
26
33
  */
27
- export declare function useTuiEventBridge({ events, dispatch, stateRef, setActiveMaxContext, getSessionId, subscribeAutoPhase, onClearHistory, }: UseTuiEventBridgeOptions): void;
34
+ export declare function useTuiEventBridge({ events, dispatch, stateRef, setActiveMaxContext, getSessionId, subscribeGoal, onClearHistory, sessionGenerationRef, }: UseTuiEventBridgeOptions): void;
28
35
  export {};
29
36
  //# sourceMappingURL=use-tui-event-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-tui-event-bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tui-event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAIvD,KAAK,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CACtC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAC9B,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACzD,YAAY,CAAC,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACtD,kBAAkB,CAAC,EACf,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,GACpE,SAAS,CAAC;IACd,cAAc,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACzE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,EAAE,wBAAwB,GAAG,IAAI,CASjC"}
1
+ {"version":3,"file":"use-tui-event-bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tui-event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAIvD,KAAK,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CACtC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAC9B,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE;QAAE,OAAO,EAAE,KAAK,CAAA;KAAE,CAAC;IAC7B,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACzD,YAAY,CAAC,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACtD,aAAa,CAAC,EACV,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,GACpE,SAAS,CAAC;IACd,cAAc,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxE,oBAAoB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACxD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,EAAE,wBAAwB,GAAG,IAAI,CASjC"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- export { runTui } from './run-tui.js';
2
- export type { RunTuiOptions } from './run-tui.js';
3
- export { buildGoalPreamble } from './app.js';
4
1
  export type { Settings } from './app.js';
5
- export type { PluginPickerItem } from './components/plugin-picker.js';
2
+ export { buildGoalPreamble } from './app.js';
6
3
  export type { AuthCatalogRow, AuthFlowIo, AuthFlowResult, AuthKeyRow, AuthLocalPresetRow, AuthOAuthKind, AuthPanelHost, AuthProviderRow, } from './components/auth-panel-model.js';
7
4
  export type { BrainPanelHost, BrainPanelSettings, BrainPanelVoter, } from './components/brain-panel-model.js';
8
- export { parseInline } from './markdown.js';
9
- export { replaySessionEvents } from './components/history/replay.js';
10
- export { parseNextSteps } from './components/suggestions.js';
5
+ export { replaySessionEvents, replaySessionMessages } from './components/history/replay.js';
6
+ export type { PluginPickerItem } from './components/plugin-picker.js';
11
7
  export type { ParsedNextStep, ParseNextStepsResult } from './components/suggestions.js';
8
+ export { parseNextSteps } from './components/suggestions.js';
9
+ export { parseInline } from './markdown.js';
10
+ export type { RunTuiOptions } from './run-tui.js';
11
+ export { runTui } from './run-tui.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}