@jmoyers/harness 0.1.11 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -39
- package/package.json +31 -11
- package/packages/harness-ai/src/anthropic-protocol.ts +68 -68
- package/packages/harness-ai/src/stream-text.ts +13 -91
- package/packages/harness-ui/src/frame-primitives.ts +158 -0
- package/packages/harness-ui/src/index.ts +18 -0
- package/packages/harness-ui/src/interaction/conversation-input-forwarder.ts +221 -0
- package/packages/harness-ui/src/interaction/conversation-selection-input.ts +213 -0
- package/packages/harness-ui/src/interaction/global-shortcut-input.ts +172 -0
- package/{src/ui → packages/harness-ui/src/interaction}/input-preflight.ts +10 -12
- package/{src/ui → packages/harness-ui/src/interaction}/input-token-router.ts +120 -69
- package/packages/harness-ui/src/interaction/input.ts +420 -0
- package/packages/harness-ui/src/interaction/left-nav-input.ts +166 -0
- package/{src/ui → packages/harness-ui/src/interaction}/main-pane-pointer-input.ts +91 -23
- package/{src/ui → packages/harness-ui/src/interaction}/pointer-routing-input.ts +112 -48
- package/packages/harness-ui/src/interaction/rail-pointer-input.ts +62 -0
- package/packages/harness-ui/src/interaction/repository-fold-input.ts +118 -0
- package/packages/harness-ui/src/kit.ts +476 -0
- package/packages/harness-ui/src/layout.ts +238 -0
- package/packages/harness-ui/src/modal-manager.ts +222 -0
- package/{src/ui → packages/harness-ui/src}/screen.ts +53 -26
- package/packages/harness-ui/src/surface.ts +252 -0
- package/packages/harness-ui/src/text-layout.ts +210 -0
- package/packages/nim-core/src/contracts.ts +239 -0
- package/packages/nim-core/src/event-store.ts +299 -0
- package/packages/nim-core/src/events.ts +53 -0
- package/packages/nim-core/src/index.ts +9 -0
- package/packages/nim-core/src/provider-router.ts +129 -0
- package/packages/nim-core/src/providers/anthropic-driver.ts +291 -0
- package/packages/nim-core/src/runtime-factory.ts +49 -0
- package/packages/nim-core/src/runtime.ts +1797 -0
- package/packages/nim-core/src/session-store.ts +516 -0
- package/packages/nim-core/src/telemetry.ts +48 -0
- package/packages/nim-test-tui/src/index.ts +150 -0
- package/packages/nim-ui-core/src/index.ts +1 -0
- package/packages/nim-ui-core/src/projection.ts +87 -0
- package/scripts/codex-live-mux-runtime.ts +2 -3872
- package/scripts/control-plane-daemon.ts +11 -0
- package/scripts/harness-bin.js +5 -0
- package/scripts/harness-commands.ts +300 -0
- package/scripts/harness-runtime.ts +82 -0
- package/scripts/harness.ts +33 -3019
- package/scripts/nim-tui-smoke.ts +748 -0
- package/src/cli/auth/runtime.ts +948 -0
- package/src/cli/gateway/runtime.ts +1872 -0
- package/src/cli/parsing/flags.ts +23 -0
- package/src/cli/parsing/session.ts +42 -0
- package/src/cli/runtime/context.ts +193 -0
- package/src/cli/runtime-app/application.ts +392 -0
- package/src/cli/runtime-infra/gateway-control.ts +729 -0
- package/{scripts/harness-inspector.ts → src/cli/workflows/inspector.ts} +14 -11
- package/src/cli/workflows/runtime.ts +965 -0
- package/src/clients/tui/left-rail-interactions.ts +519 -0
- package/src/clients/tui/main-pane-interactions.ts +509 -0
- package/src/clients/tui/modal-input-routing.ts +71 -0
- package/src/clients/tui/render-snapshot-adapter.ts +88 -0
- package/src/clients/web/synced-selectors.ts +132 -0
- package/src/codex/live-session.ts +82 -29
- package/src/config/config-core.ts +348 -8
- package/src/config/harness.config.template.jsonc +33 -0
- package/src/control-plane/agent-realtime-api.ts +82 -427
- package/src/control-plane/session-summary.ts +10 -81
- package/src/control-plane/status/reducer-base.ts +12 -12
- package/src/control-plane/status/reducers/claude-status-reducer.ts +3 -3
- package/src/control-plane/status/reducers/codex-status-reducer.ts +4 -4
- package/src/control-plane/status/reducers/cursor-status-reducer.ts +3 -3
- package/src/control-plane/stream-client.ts +12 -2
- package/src/control-plane/stream-command-parser.ts +83 -143
- package/src/control-plane/stream-protocol.ts +53 -37
- package/src/control-plane/stream-server-command.ts +376 -69
- package/src/control-plane/stream-server-session-runtime.ts +3 -2
- package/src/control-plane/stream-server.ts +864 -70
- package/src/control-plane/stream-session-runtime-types.ts +41 -0
- package/src/{mux/live-mux/control-plane-records.ts → core/contracts/records.ts} +24 -97
- package/src/core/state/observed-stream-cursor.ts +43 -0
- package/src/core/state/synced-observed-state.ts +273 -0
- package/src/core/store/harness-synced-store.ts +81 -0
- package/src/diff/budget.ts +136 -0
- package/src/diff/build.ts +289 -0
- package/src/diff/chunker.ts +146 -0
- package/src/diff/git-invoke.ts +315 -0
- package/src/diff/git-parse.ts +472 -0
- package/src/diff/hash.ts +70 -0
- package/src/diff/index.ts +24 -0
- package/src/diff/normalize.ts +134 -0
- package/src/diff/types.ts +178 -0
- package/src/diff-ui/args.ts +346 -0
- package/src/diff-ui/commands.ts +123 -0
- package/src/diff-ui/finder.ts +94 -0
- package/src/diff-ui/highlight.ts +127 -0
- package/src/diff-ui/index.ts +2 -0
- package/src/diff-ui/model.ts +141 -0
- package/src/diff-ui/pager.ts +412 -0
- package/src/diff-ui/render.ts +337 -0
- package/src/diff-ui/runtime.ts +379 -0
- package/src/diff-ui/state.ts +224 -0
- package/src/diff-ui/types.ts +236 -0
- package/src/domain/workspace.ts +68 -5
- package/src/mux/control-plane-op-queue.ts +93 -7
- package/src/mux/conversation-rail.ts +28 -71
- package/src/mux/dual-pane-core.ts +13 -13
- package/src/mux/harness-core-ui.ts +313 -42
- package/src/mux/input-shortcuts.ts +13 -131
- package/src/mux/keybinding-catalog.ts +340 -0
- package/src/mux/keybinding-registry.ts +103 -0
- package/src/mux/live-mux/command-menu-open-in.ts +280 -0
- package/src/mux/live-mux/command-menu.ts +167 -4
- package/src/mux/live-mux/conversation-state.ts +13 -0
- package/src/mux/live-mux/directory-resolution.ts +1 -1
- package/src/mux/live-mux/git-snapshot.ts +33 -2
- package/src/mux/live-mux/global-shortcut-handlers.ts +6 -0
- package/src/mux/live-mux/home-pane-drop.ts +1 -1
- package/src/mux/live-mux/home-pane-pointer.ts +10 -0
- package/src/mux/live-mux/input-forwarding.ts +59 -2
- package/src/mux/live-mux/left-nav-activation.ts +124 -7
- package/src/mux/live-mux/left-nav.ts +35 -0
- package/src/mux/live-mux/link-click.ts +292 -0
- package/src/mux/live-mux/modal-command-menu-handler.ts +46 -9
- package/src/mux/live-mux/modal-conversation-handlers.ts +5 -1
- package/src/mux/live-mux/modal-input-reducers.ts +77 -12
- package/src/mux/live-mux/modal-overlays.ts +168 -34
- package/src/mux/live-mux/modal-pointer.ts +3 -7
- package/src/mux/live-mux/modal-prompt-handlers.ts +23 -2
- package/src/mux/live-mux/modal-release-notes-handler.ts +111 -0
- package/src/mux/live-mux/modal-task-editor-handler.ts +16 -11
- package/src/mux/live-mux/pointer-routing.ts +5 -2
- package/src/mux/live-mux/project-pane-pointer.ts +8 -0
- package/src/mux/live-mux/rail-layout.ts +33 -30
- package/src/mux/live-mux/release-notes.ts +383 -0
- package/src/mux/live-mux/render-trace-analysis.ts +52 -7
- package/src/mux/live-mux/repository-folding.ts +3 -0
- package/src/mux/live-mux/selection.ts +0 -4
- package/src/mux/live-mux/session-diagnostics-paths.ts +21 -0
- package/src/mux/project-pane-github-review.ts +271 -0
- package/src/mux/render-frame.ts +4 -0
- package/src/mux/runtime-app/codex-live-mux-runtime.ts +5191 -0
- package/src/mux/task-composer.ts +21 -14
- package/src/mux/task-focused-pane.ts +118 -117
- package/src/mux/task-screen-keybindings.ts +10 -101
- package/src/mux/workspace-rail-model.ts +270 -104
- package/src/mux/workspace-rail.ts +45 -22
- package/src/pty/session-broker.ts +1 -1
- package/{scripts → src/recording}/terminal-recording-gif-lib.ts +2 -2
- package/src/services/control-plane.ts +50 -32
- package/src/services/conversation-lifecycle.ts +118 -87
- package/src/services/conversation-startup-hydration.ts +20 -12
- package/src/services/directory-hydration.ts +21 -16
- package/src/services/event-persistence.ts +7 -0
- package/src/services/left-rail-pointer-handler.ts +329 -0
- package/src/services/mux-ui-state-persistence.ts +5 -1
- package/src/services/recording.ts +34 -26
- package/src/services/runtime-command-menu-agent-tools.ts +1 -1
- package/src/services/runtime-control-actions.ts +79 -61
- package/src/services/runtime-control-plane-ops.ts +122 -83
- package/src/services/runtime-conversation-actions.ts +40 -26
- package/src/services/runtime-conversation-activation.ts +73 -46
- package/src/services/runtime-conversation-starter.ts +53 -45
- package/src/services/runtime-conversation-title-edit.ts +91 -80
- package/src/services/runtime-envelope-handler.ts +107 -105
- package/src/services/runtime-git-state.ts +42 -29
- package/src/services/runtime-layout-resize.ts +3 -1
- package/src/services/runtime-left-rail-render.ts +99 -63
- package/src/services/runtime-nim-cli-session.ts +438 -0
- package/src/services/runtime-nim-session.ts +705 -0
- package/src/services/runtime-nim-tool-bridge.ts +141 -0
- package/src/services/runtime-observed-event-projection-pipeline.ts +45 -0
- package/src/services/runtime-process-wiring.ts +29 -36
- package/src/services/runtime-project-pane-github-review-cache.ts +164 -0
- package/src/services/runtime-render-flush.ts +63 -70
- package/src/services/runtime-render-lifecycle.ts +65 -64
- package/src/services/runtime-render-orchestrator.ts +55 -45
- package/src/services/runtime-render-pipeline.ts +106 -103
- package/src/services/runtime-render-state.ts +62 -49
- package/src/services/runtime-repository-actions.ts +97 -72
- package/src/services/runtime-right-pane-render.ts +80 -53
- package/src/services/runtime-shutdown.ts +38 -35
- package/src/services/runtime-stream-subscriptions.ts +35 -27
- package/src/services/runtime-task-composer-persistence.ts +71 -59
- package/src/services/runtime-task-composer-snapshot.ts +14 -0
- package/src/services/runtime-task-editor-actions.ts +46 -29
- package/src/services/runtime-task-pane-actions.ts +220 -134
- package/src/services/runtime-task-pane-shortcuts.ts +323 -123
- package/src/services/runtime-workspace-observed-effect-queue.ts +25 -0
- package/src/services/runtime-workspace-observed-events.ts +33 -184
- package/src/services/runtime-workspace-observed-transition-policy.ts +228 -0
- package/src/services/session-diagnostics-store.ts +217 -0
- package/src/services/startup-background-resume.ts +26 -21
- package/src/services/startup-orchestrator.ts +16 -13
- package/src/services/startup-paint-tracker.ts +29 -21
- package/src/services/startup-persisted-conversation-queue.ts +19 -13
- package/src/services/startup-settled-gate.ts +25 -15
- package/src/services/startup-shutdown.ts +18 -22
- package/src/services/startup-state-hydration.ts +44 -34
- package/src/services/startup-visibility.ts +12 -4
- package/src/services/task-pane-selection-actions.ts +89 -72
- package/src/services/task-planning-hydration.ts +24 -18
- package/src/services/task-planning-observed-events.ts +50 -52
- package/src/services/workspace-observed-events.ts +66 -63
- package/src/storage/storage-lifecycle-core.ts +438 -0
- package/src/store/control-plane-store-normalize.ts +33 -242
- package/src/store/control-plane-store-types.ts +1 -35
- package/src/store/control-plane-store.ts +360 -56
- package/src/store/event-store.ts +366 -8
- package/src/terminal/snapshot-oracle.ts +207 -94
- package/src/ui/mux-theme.ts +112 -8
- package/src/ui/panes/home-gridfire.ts +40 -31
- package/src/ui/panes/home.ts +10 -2
- package/src/ui/panes/nim.ts +315 -0
- package/src/mux/live-mux/actions-task.ts +0 -115
- package/src/mux/live-mux/left-rail-actions.ts +0 -118
- package/src/mux/live-mux/left-rail-conversation-click.ts +0 -85
- package/src/mux/live-mux/left-rail-pointer.ts +0 -74
- package/src/mux/live-mux/task-pane-shortcuts.ts +0 -206
- package/src/services/runtime-directory-actions.ts +0 -164
- package/src/services/runtime-input-pipeline.ts +0 -50
- package/src/services/runtime-input-router.ts +0 -195
- package/src/services/runtime-main-pane-input.ts +0 -230
- package/src/services/runtime-modal-input.ts +0 -137
- package/src/services/runtime-navigation-input.ts +0 -197
- package/src/services/runtime-rail-input.ts +0 -279
- package/src/services/runtime-task-pane.ts +0 -62
- package/src/services/runtime-workspace-actions.ts +0 -158
- package/src/ui/conversation-input-forwarder.ts +0 -114
- package/src/ui/conversation-selection-input.ts +0 -103
- package/src/ui/global-shortcut-input.ts +0 -89
- package/src/ui/input.ts +0 -269
- package/src/ui/kit.ts +0 -509
- package/src/ui/left-nav-input.ts +0 -80
- package/src/ui/left-rail-pointer-input.ts +0 -148
- package/src/ui/modals/manager.ts +0 -218
- package/src/ui/repository-fold-input.ts +0 -91
- package/src/ui/surface.ts +0 -224
|
@@ -10,6 +10,17 @@ export type StreamPromptCaptureSource = 'otlp-log' | 'hook-notify' | 'history';
|
|
|
10
10
|
export type StreamPromptConfidence = 'high' | 'medium' | 'low';
|
|
11
11
|
export type StreamSessionControllerType = 'human' | 'agent' | 'automation';
|
|
12
12
|
export type StreamSessionDisplayPhase = 'needs-action' | 'starting' | 'working' | 'idle' | 'exited';
|
|
13
|
+
export type StreamSessionActivityHint = 'needs-action' | 'working' | 'idle';
|
|
14
|
+
|
|
15
|
+
export function isStreamSessionRuntimeStatus(value: unknown): value is StreamSessionRuntimeStatus {
|
|
16
|
+
return (
|
|
17
|
+
value === 'running' || value === 'needs-input' || value === 'completed' || value === 'exited'
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function parseStreamSessionRuntimeStatus(value: unknown): StreamSessionRuntimeStatus | null {
|
|
22
|
+
return isStreamSessionRuntimeStatus(value) ? value : null;
|
|
23
|
+
}
|
|
13
24
|
|
|
14
25
|
export interface StreamSessionController {
|
|
15
26
|
controllerId: string;
|
|
@@ -35,7 +46,7 @@ export interface StreamSessionStatusModel {
|
|
|
35
46
|
attentionReason: string | null;
|
|
36
47
|
lastKnownWork: string | null;
|
|
37
48
|
lastKnownWorkAt: string | null;
|
|
38
|
-
|
|
49
|
+
activityHint: StreamSessionActivityHint | null;
|
|
39
50
|
observedAt: string;
|
|
40
51
|
}
|
|
41
52
|
|
|
@@ -131,27 +142,10 @@ interface ConversationDeleteCommand {
|
|
|
131
142
|
|
|
132
143
|
type StreamTaskStatus = 'draft' | 'ready' | 'in-progress' | 'completed';
|
|
133
144
|
type StreamTaskScopeKind = 'global' | 'repository' | 'project';
|
|
134
|
-
type StreamTaskLinearPriority = 0 | 1 | 2 | 3 | 4;
|
|
135
145
|
type StreamProjectTaskFocusMode = 'balanced' | 'own-only';
|
|
136
146
|
type StreamProjectThreadSpawnMode = 'new-thread' | 'reuse-thread';
|
|
137
147
|
type StreamAutomationPolicyScope = 'global' | 'repository' | 'project';
|
|
138
148
|
|
|
139
|
-
interface StreamTaskLinearInput {
|
|
140
|
-
issueId?: string | null;
|
|
141
|
-
identifier?: string | null;
|
|
142
|
-
url?: string | null;
|
|
143
|
-
teamId?: string | null;
|
|
144
|
-
projectId?: string | null;
|
|
145
|
-
projectMilestoneId?: string | null;
|
|
146
|
-
cycleId?: string | null;
|
|
147
|
-
stateId?: string | null;
|
|
148
|
-
assigneeId?: string | null;
|
|
149
|
-
priority?: StreamTaskLinearPriority | null;
|
|
150
|
-
estimate?: number | null;
|
|
151
|
-
dueDate?: string | null;
|
|
152
|
-
labelIds?: readonly string[] | null;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
149
|
interface RepositoryUpsertCommand {
|
|
156
150
|
type: 'repository.upsert';
|
|
157
151
|
repositoryId?: string;
|
|
@@ -200,9 +194,8 @@ interface TaskCreateCommand {
|
|
|
200
194
|
workspaceId?: string;
|
|
201
195
|
repositoryId?: string;
|
|
202
196
|
projectId?: string;
|
|
203
|
-
title
|
|
204
|
-
|
|
205
|
-
linear?: StreamTaskLinearInput;
|
|
197
|
+
title?: string | null;
|
|
198
|
+
body: string;
|
|
206
199
|
}
|
|
207
200
|
|
|
208
201
|
interface TaskGetCommand {
|
|
@@ -225,11 +218,10 @@ interface TaskListCommand {
|
|
|
225
218
|
interface TaskUpdateCommand {
|
|
226
219
|
type: 'task.update';
|
|
227
220
|
taskId: string;
|
|
228
|
-
title?: string;
|
|
229
|
-
|
|
221
|
+
title?: string | null;
|
|
222
|
+
body?: string;
|
|
230
223
|
repositoryId?: string | null;
|
|
231
224
|
projectId?: string | null;
|
|
232
|
-
linear?: StreamTaskLinearInput | null;
|
|
233
225
|
}
|
|
234
226
|
|
|
235
227
|
interface TaskDeleteCommand {
|
|
@@ -329,6 +321,12 @@ interface GitHubProjectPrCommand {
|
|
|
329
321
|
directoryId: string;
|
|
330
322
|
}
|
|
331
323
|
|
|
324
|
+
interface GitHubProjectReviewCommand {
|
|
325
|
+
type: 'github.project-review';
|
|
326
|
+
directoryId: string;
|
|
327
|
+
forceRefresh?: boolean;
|
|
328
|
+
}
|
|
329
|
+
|
|
332
330
|
interface GitHubPrListCommand {
|
|
333
331
|
type: 'github.pr-list';
|
|
334
332
|
tenantId?: string;
|
|
@@ -366,6 +364,16 @@ interface GitHubRepoMyPrsUrlCommand {
|
|
|
366
364
|
repositoryId: string;
|
|
367
365
|
}
|
|
368
366
|
|
|
367
|
+
interface LinearIssueImportCommand {
|
|
368
|
+
type: 'linear.issue.import';
|
|
369
|
+
url: string;
|
|
370
|
+
tenantId?: string;
|
|
371
|
+
userId?: string;
|
|
372
|
+
workspaceId?: string;
|
|
373
|
+
repositoryId?: string;
|
|
374
|
+
projectId?: string;
|
|
375
|
+
}
|
|
376
|
+
|
|
369
377
|
interface StreamSubscribeCommand {
|
|
370
378
|
type: 'stream.subscribe';
|
|
371
379
|
tenantId?: string;
|
|
@@ -524,10 +532,12 @@ export type StreamCommand =
|
|
|
524
532
|
| AutomationPolicyGetCommand
|
|
525
533
|
| AutomationPolicySetCommand
|
|
526
534
|
| GitHubProjectPrCommand
|
|
535
|
+
| GitHubProjectReviewCommand
|
|
527
536
|
| GitHubPrListCommand
|
|
528
537
|
| GitHubPrCreateCommand
|
|
529
538
|
| GitHubPrJobsListCommand
|
|
530
539
|
| GitHubRepoMyPrsUrlCommand
|
|
540
|
+
| LinearIssueImportCommand
|
|
531
541
|
| StreamSubscribeCommand
|
|
532
542
|
| StreamUnsubscribeCommand
|
|
533
543
|
| SessionListCommand
|
|
@@ -1097,6 +1107,13 @@ function parsePromptConfidence(value: unknown): StreamPromptConfidence | null {
|
|
|
1097
1107
|
return null;
|
|
1098
1108
|
}
|
|
1099
1109
|
|
|
1110
|
+
function parseSessionActivityHint(value: unknown): StreamSessionActivityHint | undefined {
|
|
1111
|
+
if (value === 'needs-action' || value === 'working' || value === 'idle') {
|
|
1112
|
+
return value;
|
|
1113
|
+
}
|
|
1114
|
+
return undefined;
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1100
1117
|
function parseTelemetrySummary(value: unknown): StreamTelemetrySummary | null | undefined {
|
|
1101
1118
|
if (value === undefined) {
|
|
1102
1119
|
return undefined;
|
|
@@ -1131,7 +1148,9 @@ function parseTelemetrySummary(value: unknown): StreamTelemetrySummary | null |
|
|
|
1131
1148
|
};
|
|
1132
1149
|
}
|
|
1133
1150
|
|
|
1134
|
-
function
|
|
1151
|
+
export function parseStreamSessionStatusModel(
|
|
1152
|
+
value: unknown,
|
|
1153
|
+
): StreamSessionStatusModel | null | undefined {
|
|
1135
1154
|
if (value === undefined) {
|
|
1136
1155
|
return undefined;
|
|
1137
1156
|
}
|
|
@@ -1153,14 +1172,15 @@ function parseSessionStatusModel(value: unknown): StreamSessionStatusModel | nul
|
|
|
1153
1172
|
record['lastKnownWork'] === null ? null : readString(record['lastKnownWork']);
|
|
1154
1173
|
const lastKnownWorkAt =
|
|
1155
1174
|
record['lastKnownWorkAt'] === null ? null : readString(record['lastKnownWorkAt']);
|
|
1156
|
-
const
|
|
1175
|
+
const activityHintValue = record['activityHint'];
|
|
1176
|
+
const activityHint =
|
|
1177
|
+
activityHintValue === undefined || activityHintValue === null
|
|
1178
|
+
? null
|
|
1179
|
+
: parseSessionActivityHint(activityHintValue);
|
|
1157
1180
|
const observedAt = readString(record['observedAt']);
|
|
1158
1181
|
if (
|
|
1159
1182
|
runtimeStatus === null ||
|
|
1160
|
-
(runtimeStatus
|
|
1161
|
-
runtimeStatus !== 'needs-input' &&
|
|
1162
|
-
runtimeStatus !== 'completed' &&
|
|
1163
|
-
runtimeStatus !== 'exited') ||
|
|
1183
|
+
!isStreamSessionRuntimeStatus(runtimeStatus) ||
|
|
1164
1184
|
phase === null ||
|
|
1165
1185
|
(phase !== 'needs-action' &&
|
|
1166
1186
|
phase !== 'starting' &&
|
|
@@ -1175,11 +1195,7 @@ function parseSessionStatusModel(value: unknown): StreamSessionStatusModel | nul
|
|
|
1175
1195
|
(attentionReason === null && record['attentionReason'] !== null) ||
|
|
1176
1196
|
(lastKnownWork === null && record['lastKnownWork'] !== null) ||
|
|
1177
1197
|
(lastKnownWorkAt === null && record['lastKnownWorkAt'] !== null) ||
|
|
1178
|
-
|
|
1179
|
-
(phaseHint !== null &&
|
|
1180
|
-
phaseHint !== 'needs-action' &&
|
|
1181
|
-
phaseHint !== 'working' &&
|
|
1182
|
-
phaseHint !== 'idle') ||
|
|
1198
|
+
activityHint === undefined ||
|
|
1183
1199
|
observedAt === null
|
|
1184
1200
|
) {
|
|
1185
1201
|
return undefined;
|
|
@@ -1193,7 +1209,7 @@ function parseSessionStatusModel(value: unknown): StreamSessionStatusModel | nul
|
|
|
1193
1209
|
attentionReason,
|
|
1194
1210
|
lastKnownWork,
|
|
1195
1211
|
lastKnownWorkAt,
|
|
1196
|
-
|
|
1212
|
+
activityHint,
|
|
1197
1213
|
observedAt,
|
|
1198
1214
|
};
|
|
1199
1215
|
}
|
|
@@ -1599,7 +1615,7 @@ function parseStreamObservedEvent(value: unknown): StreamObservedEvent | null {
|
|
|
1599
1615
|
const sessionId = readString(record['sessionId']);
|
|
1600
1616
|
const status = readString(record['status']);
|
|
1601
1617
|
const attentionReason = readString(record['attentionReason']);
|
|
1602
|
-
const statusModel =
|
|
1618
|
+
const statusModel = parseStreamSessionStatusModel(record['statusModel']);
|
|
1603
1619
|
const live = readBoolean(record['live']);
|
|
1604
1620
|
const ts = readString(record['ts']);
|
|
1605
1621
|
const directoryId = readString(record['directoryId']);
|