@newheap/platform-ai-chat 0.16.0 → 0.17.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.
- package/README.md +13 -0
- package/agent-runs/index.d.ts +147 -4
- package/fesm2022/newheap-platform-ai-chat-admin.mjs +52 -6
- package/fesm2022/newheap-platform-ai-chat-admin.mjs.map +1 -1
- package/fesm2022/newheap-platform-ai-chat-agent-runs.mjs +297 -30
- package/fesm2022/newheap-platform-ai-chat-agent-runs.mjs.map +1 -1
- package/fesm2022/newheap-platform-ai-chat-testing.mjs +174 -13
- package/fesm2022/newheap-platform-ai-chat-testing.mjs.map +1 -1
- package/fesm2022/newheap-platform-ai-chat.mjs +56 -3
- package/fesm2022/newheap-platform-ai-chat.mjs.map +1 -1
- package/i18n/en.json +21 -1
- package/i18n/nl.json +21 -1
- package/index.d.ts +112 -2
- package/package.json +1 -1
- package/testing/index.d.ts +12 -1
package/README.md
CHANGED
|
@@ -288,6 +288,19 @@ custom layouts. Opened in the panel, the thread offers its proposals to the same
|
|
|
288
288
|
**Decided by** shows the name from the subject's member snapshot (`decidedByDisplayName`)
|
|
289
289
|
and falls back to the actor id.
|
|
290
290
|
|
|
291
|
+
The inbox also gives an overview. `divisionId` and `runId` filter it like `agentId` and
|
|
292
|
+
`subjectType`; `[grouped]="true"` groups the proposals by the parent the server recorded for each
|
|
293
|
+
proposal's subject (such as a project for its tasks) and by subject, `[groupByRun]="true"` also by
|
|
294
|
+
run. A group says how many of its proposals the page shows and whether it continues on another page,
|
|
295
|
+
and "Select group" selects only the shown proposals the person may decide. Proposals made since the
|
|
296
|
+
person's last visit of the inbox are marked new, and showing the inbox records the visit (`markNew`
|
|
297
|
+
and `recordVisit`, both on by default; turn `recordVisit` off for an inbox that shows only part of
|
|
298
|
+
it). `nh-assistant-run-result` lets its reader decide the run's proposals together.
|
|
299
|
+
|
|
300
|
+
```html
|
|
301
|
+
<nh-assistant-agent-inbox [grouped]="true" [groupByRun]="true" [divisionId]="activeDivisionId" />
|
|
302
|
+
```
|
|
303
|
+
|
|
291
304
|
Subjects show the name of their type (`subjectTypeName`, such as "Project") and link to where
|
|
292
305
|
the application shows them (`subjectLink`, from the server's `AddSubjectType(...).OpenAt(...)`).
|
|
293
306
|
A link within the application navigates through the router; an `https` link leaves it. Replace
|
package/agent-runs/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import * as _newheap_platform_ai_chat from '@newheap/platform-ai-chat';
|
|
3
|
-
import { AgentProposal, AgentThreadLookup, AgentTriggerReceipt, NhAssistantError, AgentProposalDecisionRight, AgentProposalFeedback, AgentProposalOrigin, AgentProposalDecision, AgentExecutionResolution, AgentSubjectRole, AgentRun, ɵnhAssistantCodeKeys as _nhAssistantCodeKeys, AgentRunRetryMode, AgentThreadMemory, AgentArtifact, AgentConsultation, AgentSubjectWork, AgentSubjectWorkAgent, AgentSubjectType, ɵNhAssistantPickerOption as _NhAssistantPickerOption, NhAssistantAgentRunApiService, AgentObjectAgents, AgentObjectAgent, AgentRunResult, AgentBoard, AgentBoardAgent } from '@newheap/platform-ai-chat';
|
|
3
|
+
import { AgentProposal, AgentInboxGroup, AgentThreadLookup, AgentTriggerReceipt, NhAssistantError, AgentProposalDecisionRight, AgentProposalFeedback, AgentProposalOrigin, AgentProposalDecision, AgentExecutionResolution, AgentSubjectRole, AgentRun, ɵnhAssistantCodeKeys as _nhAssistantCodeKeys, AgentRunRetryMode, AgentThreadMemory, AgentArtifact, AgentConsultation, AgentSubjectWork, AgentSubjectWorkAgent, AgentSubjectType, ɵNhAssistantPickerOption as _NhAssistantPickerOption, NhAssistantAgentRunApiService, AgentObjectAgents, AgentObjectAgent, AgentRunResult, AgentBoard, AgentBoardAgent } from '@newheap/platform-ai-chat';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -14,15 +14,49 @@ import { Observable } from 'rxjs';
|
|
|
14
14
|
* longer fits, for example because someone did the work by hand, stays as a closed card with the
|
|
15
15
|
* reason until it is dismissed. A proposal a run placed at its object from another subject, such as a
|
|
16
16
|
* run for the whole application, names that run; `openConversation` emits its conversation.
|
|
17
|
+
*
|
|
18
|
+
* `agentId`, `subjectType`, `divisionId` and `runId` filter the inbox; changing a filter, or `grouped`,
|
|
19
|
+
* reloads it from the first page. With `grouped` the inbox shows the proposals per parent, such as a
|
|
20
|
+
* project with its own proposals and those of its tasks, and per subject, optionally per run
|
|
21
|
+
* (`groupByRun`); a group that goes on on another page says so, and "Select group" selects only its
|
|
22
|
+
* proposals shown here. With `markNew` (on by default) it marks the proposals made since the person's
|
|
23
|
+
* last visit of the inbox in its scope, the whole application or the division of `divisionId`, and
|
|
24
|
+
* those that arrive while it is shown; with `recordVisit` (on by default) showing it records the
|
|
25
|
+
* visit. Turn `recordVisit` off for an inbox that shows only part of the scope, such as one agent's
|
|
26
|
+
* proposals, so the person's next visit of the whole inbox still marks what they have not seen.
|
|
17
27
|
*/
|
|
18
28
|
declare class NhAssistantAgentInboxComponent {
|
|
19
29
|
private readonly api;
|
|
20
30
|
private readonly proposalList;
|
|
21
31
|
private subscription?;
|
|
32
|
+
private visitSubscription?;
|
|
33
|
+
/** The scope whose visit this view recorded; the visit is recorded once per scope shown. */
|
|
34
|
+
private visited;
|
|
35
|
+
/**
|
|
36
|
+
* What the first read of the shown scope found: the visit before this one and the proposals that
|
|
37
|
+
* were new since. Later reads, after live updates, paging or a decision, compare with both, so what
|
|
38
|
+
* was new when the inbox was opened stays new while it is shown.
|
|
39
|
+
*/
|
|
40
|
+
private opened;
|
|
22
41
|
/** Limits the inbox to one agent. */
|
|
23
42
|
readonly agentId: _angular_core.InputSignal<string | undefined>;
|
|
24
43
|
/** Limits the inbox to one kind of subject, for example `project`. */
|
|
25
44
|
readonly subjectType: _angular_core.InputSignal<string | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* Limits the inbox to the subjects of one division, for example the active division; its visits are
|
|
47
|
+
* then those of that division.
|
|
48
|
+
*/
|
|
49
|
+
readonly divisionId: _angular_core.InputSignal<string | null | undefined>;
|
|
50
|
+
/** Limits the inbox to the proposals of one run. */
|
|
51
|
+
readonly runId: _angular_core.InputSignal<string | null | undefined>;
|
|
52
|
+
/** Groups the proposals per parent and subject instead of listing them by expiry alone. */
|
|
53
|
+
readonly grouped: _angular_core.InputSignal<boolean>;
|
|
54
|
+
/** In a grouped inbox, also shows a header per run within a subject. */
|
|
55
|
+
readonly groupByRun: _angular_core.InputSignal<boolean>;
|
|
56
|
+
/** Marks the proposals made since the person's last visit of the inbox, and those that arrive while it is shown. */
|
|
57
|
+
readonly markNew: _angular_core.InputSignal<boolean>;
|
|
58
|
+
/** Records the person's visit of the inbox in its scope when it is shown. */
|
|
59
|
+
readonly recordVisit: _angular_core.InputSignal<boolean>;
|
|
26
60
|
readonly itemsPerPage: _angular_core.InputSignal<number>;
|
|
27
61
|
/**
|
|
28
62
|
* Emits the conversation of the run that placed a proposal at its object from another subject, so
|
|
@@ -36,6 +70,15 @@ declare class NhAssistantAgentInboxComponent {
|
|
|
36
70
|
readonly loadFailed: _angular_core.WritableSignal<boolean>;
|
|
37
71
|
readonly items: _angular_core.WritableSignal<AgentProposal[]>;
|
|
38
72
|
readonly total: _angular_core.WritableSignal<number>;
|
|
73
|
+
/** The groups of the page in a grouped inbox; `null` for the flat inbox. */
|
|
74
|
+
readonly groups: _angular_core.WritableSignal<AgentInboxGroup[] | null>;
|
|
75
|
+
/** The proposals of the page marked as new. */
|
|
76
|
+
readonly newIds: _angular_core.WritableSignal<ReadonlySet<string>>;
|
|
77
|
+
/**
|
|
78
|
+
* The person's visit of the shown scope before the inbox was opened: `null` before their first
|
|
79
|
+
* visit, `undefined` while unknown or when new proposals are not marked.
|
|
80
|
+
*/
|
|
81
|
+
readonly previousVisit: _angular_core.WritableSignal<string | null | undefined>;
|
|
39
82
|
readonly pages: _angular_core.Signal<number>;
|
|
40
83
|
constructor();
|
|
41
84
|
load(): void;
|
|
@@ -47,8 +90,19 @@ declare class NhAssistantAgentInboxComponent {
|
|
|
47
90
|
*/
|
|
48
91
|
private refresh;
|
|
49
92
|
private fetch;
|
|
93
|
+
/**
|
|
94
|
+
* Marks what is new: what the server marks since the visit this view recorded, and what was made
|
|
95
|
+
* after the person's visit before the inbox was opened, on any page. Before the first visit
|
|
96
|
+
* everything is new. A server without visits marks nothing.
|
|
97
|
+
*/
|
|
98
|
+
private markNewOf;
|
|
99
|
+
/**
|
|
100
|
+
* Records the visit of the shown scope after its first read, so that read still marks what arrived
|
|
101
|
+
* since the visit before.
|
|
102
|
+
*/
|
|
103
|
+
private recordVisitOf;
|
|
50
104
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentInboxComponent, never>;
|
|
51
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentInboxComponent, "nh-assistant-agent-inbox", never, { "agentId": { "alias": "agentId"; "required": false; "isSignal": true; }; "subjectType": { "alias": "subjectType"; "required": false; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; }, { "openConversation": "openConversation"; }, never, never, true, never>;
|
|
105
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentInboxComponent, "nh-assistant-agent-inbox", never, { "agentId": { "alias": "agentId"; "required": false; "isSignal": true; }; "subjectType": { "alias": "subjectType"; "required": false; "isSignal": true; }; "divisionId": { "alias": "divisionId"; "required": false; "isSignal": true; }; "runId": { "alias": "runId"; "required": false; "isSignal": true; }; "grouped": { "alias": "grouped"; "required": false; "isSignal": true; }; "groupByRun": { "alias": "groupByRun"; "required": false; "isSignal": true; }; "markNew": { "alias": "markNew"; "required": false; "isSignal": true; }; "recordVisit": { "alias": "recordVisit"; "required": false; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; }, { "openConversation": "openConversation"; }, never, never, true, never>;
|
|
52
106
|
}
|
|
53
107
|
|
|
54
108
|
type NhAssistantAgentThreadTab = 'proposals' | 'runs' | 'consultations' | 'memory' | 'artifacts';
|
|
@@ -109,6 +163,45 @@ declare class NhAssistantAgentThreadViewComponent {
|
|
|
109
163
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentThreadViewComponent, "nh-assistant-agent-thread-view", never, { "agentId": { "alias": "agentId"; "required": true; "isSignal": true; }; "subjectType": { "alias": "subjectType"; "required": true; "isSignal": true; }; "subjectId": { "alias": "subjectId"; "required": true; "isSignal": true; }; }, { "openConversation": "openConversation"; }, never, never, true, never>;
|
|
110
164
|
}
|
|
111
165
|
|
|
166
|
+
/** The proposals of one run within a subject of a grouped list, in the order the list gave them. */
|
|
167
|
+
interface NhAssistantRunSection {
|
|
168
|
+
key: string;
|
|
169
|
+
runId: string | null;
|
|
170
|
+
agentId: string;
|
|
171
|
+
/** When the run's first proposal on the page was made. */
|
|
172
|
+
proposedAt: string;
|
|
173
|
+
items: AgentProposal[];
|
|
174
|
+
}
|
|
175
|
+
/** One subject within a group of a grouped list. */
|
|
176
|
+
interface NhAssistantSubjectSection {
|
|
177
|
+
key: string;
|
|
178
|
+
subjectType: string;
|
|
179
|
+
subjectId: string;
|
|
180
|
+
label: string;
|
|
181
|
+
typeName: string | null;
|
|
182
|
+
link: string | null;
|
|
183
|
+
/** The group's own subject, whose proposals stand directly under the group's header. */
|
|
184
|
+
own: boolean;
|
|
185
|
+
count: number;
|
|
186
|
+
total: number;
|
|
187
|
+
runs: NhAssistantRunSection[];
|
|
188
|
+
}
|
|
189
|
+
/** One group of a grouped list, such as a parent subject of the grouped inbox. */
|
|
190
|
+
interface NhAssistantGroupSection {
|
|
191
|
+
key: string;
|
|
192
|
+
subjectType: string;
|
|
193
|
+
subjectId: string;
|
|
194
|
+
label: string;
|
|
195
|
+
typeName: string | null;
|
|
196
|
+
link: string | null;
|
|
197
|
+
count: number;
|
|
198
|
+
total: number;
|
|
199
|
+
continuesFromPreviousPage: boolean;
|
|
200
|
+
continuesOnNextPage: boolean;
|
|
201
|
+
subjects: NhAssistantSubjectSection[];
|
|
202
|
+
/** The group's pending proposals on this page that the caller may decide: what "Select group" selects. */
|
|
203
|
+
selectableIds: string[];
|
|
204
|
+
}
|
|
112
205
|
/** A feedback question: after a rejection above the list, or from a card's own action. */
|
|
113
206
|
interface NhAssistantFeedbackRequest {
|
|
114
207
|
approvalIds: string[];
|
|
@@ -132,7 +225,10 @@ interface NhAssistantFeedbackRequest {
|
|
|
132
225
|
* replaced, as a closed card when it closes while shown, or when an approval is refused because of
|
|
133
226
|
* it, until the person dismisses it. It reads those proposals by id with one lookup, never through
|
|
134
227
|
* their threads. A proposal that a run placed here from another subject, such as a run for the whole
|
|
135
|
-
* application, says so and offers that run's conversation through `openConversation`.
|
|
228
|
+
* application, says so and offers that run's conversation through `openConversation`. With `groups`
|
|
229
|
+
* from the grouped inbox the list shows a header per group and per subject, optionally per run
|
|
230
|
+
* (`groupByRun`), and "Select group" selects only the group's pending proposals in this list that
|
|
231
|
+
* the caller may decide, never those on another page. `newIds` marks proposals as new.
|
|
136
232
|
*/
|
|
137
233
|
declare class NhAssistantAgentProposalsComponent {
|
|
138
234
|
private readonly api;
|
|
@@ -154,6 +250,16 @@ declare class NhAssistantAgentProposalsComponent {
|
|
|
154
250
|
* it closes.
|
|
155
251
|
*/
|
|
156
252
|
readonly holdClosedCards: _angular_core.InputSignal<boolean>;
|
|
253
|
+
/**
|
|
254
|
+
* The groups of the grouped inbox (`AgentInbox.groups`) for `proposals` in the order the inbox gave
|
|
255
|
+
* them: the first `count` proposals belong to the first group, and so on. Without groups, or when
|
|
256
|
+
* they do not describe `proposals`, the list is flat.
|
|
257
|
+
*/
|
|
258
|
+
readonly groups: _angular_core.InputSignal<readonly AgentInboxGroup[] | null>;
|
|
259
|
+
/** Shows a header per run within a subject of a grouped list. */
|
|
260
|
+
readonly groupByRun: _angular_core.InputSignal<boolean>;
|
|
261
|
+
/** Proposals to mark as new, by approval id, for example those made since the last visit of the inbox. */
|
|
262
|
+
readonly newIds: _angular_core.InputSignal<ReadonlySet<string> | null>;
|
|
157
263
|
/** Emits after a proposal or its feedback changed, so the host reloads its list. */
|
|
158
264
|
readonly changed: _angular_core.OutputEmitterRef<void>;
|
|
159
265
|
/**
|
|
@@ -175,6 +281,11 @@ declare class NhAssistantAgentProposalsComponent {
|
|
|
175
281
|
/** The held closed cards first, then the proposals the host gave. */
|
|
176
282
|
readonly shown: _angular_core.Signal<AgentProposal[]>;
|
|
177
283
|
private readonly lookups;
|
|
284
|
+
/**
|
|
285
|
+
* The grouped list: the held closed cards stay above it; `null` for a flat list, or when the groups
|
|
286
|
+
* do not describe the proposals.
|
|
287
|
+
*/
|
|
288
|
+
readonly sections: _angular_core.Signal<NhAssistantGroupSection[] | null>;
|
|
178
289
|
constructor();
|
|
179
290
|
/**
|
|
180
291
|
* The translation key of a proposal's status: the kind of a stale proposal, "replaced" for a
|
|
@@ -189,6 +300,16 @@ declare class NhAssistantAgentProposalsComponent {
|
|
|
189
300
|
key: string;
|
|
190
301
|
params: Record<string, string>;
|
|
191
302
|
};
|
|
303
|
+
/** Whether the proposal is marked as new. */
|
|
304
|
+
isNew(proposal: AgentProposal): boolean;
|
|
305
|
+
/** Whether every proposal "Select group" would select in the group is selected. */
|
|
306
|
+
groupSelected(group: NhAssistantGroupSection): boolean;
|
|
307
|
+
/**
|
|
308
|
+
* Selects the group's pending proposals in this list that the caller may decide, or deselects them
|
|
309
|
+
* when all are selected. Proposals of the group on another page are never selected: an approver
|
|
310
|
+
* decides only what they see.
|
|
311
|
+
*/
|
|
312
|
+
toggleGroup(group: NhAssistantGroupSection): void;
|
|
192
313
|
/** True when the newer proposal that replaced this one is in the list. */
|
|
193
314
|
hasSuccessor(proposal: AgentProposal): boolean;
|
|
194
315
|
/** Moves focus to the newer proposal that replaced this one. */
|
|
@@ -224,6 +345,7 @@ declare class NhAssistantAgentProposalsComponent {
|
|
|
224
345
|
onFeedbackSaved(): void;
|
|
225
346
|
/** Closes the question; from a card, focus returns to the card's feedback action. */
|
|
226
347
|
onFeedbackDismissed(): void;
|
|
348
|
+
private groupSection;
|
|
227
349
|
private ask;
|
|
228
350
|
/**
|
|
229
351
|
* Reads `proposals` again by id and keeps those that closed as stale or were replaced as closed
|
|
@@ -232,7 +354,7 @@ declare class NhAssistantAgentProposalsComponent {
|
|
|
232
354
|
private holdStale;
|
|
233
355
|
private run;
|
|
234
356
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NhAssistantAgentProposalsComponent, never>;
|
|
235
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentProposalsComponent, "nh-assistant-agent-proposals", never, { "proposals": { "alias": "proposals"; "required": true; "isSignal": true; }; "canDecide": { "alias": "canDecide"; "required": false; "isSignal": true; }; "decisionRights": { "alias": "decisionRights"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "holdClosedCards": { "alias": "holdClosedCards"; "required": false; "isSignal": true; }; }, { "changed": "changed"; "openConversation": "openConversation"; }, never, never, true, never>;
|
|
357
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NhAssistantAgentProposalsComponent, "nh-assistant-agent-proposals", never, { "proposals": { "alias": "proposals"; "required": true; "isSignal": true; }; "canDecide": { "alias": "canDecide"; "required": false; "isSignal": true; }; "decisionRights": { "alias": "decisionRights"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "holdClosedCards": { "alias": "holdClosedCards"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "groupByRun": { "alias": "groupByRun"; "required": false; "isSignal": true; }; "newIds": { "alias": "newIds"; "required": false; "isSignal": true; }; }, { "changed": "changed"; "openConversation": "openConversation"; }, never, never, true, never>;
|
|
236
358
|
}
|
|
237
359
|
|
|
238
360
|
/**
|
|
@@ -690,11 +812,18 @@ interface RunDuration {
|
|
|
690
812
|
* its object, for the whole application the agent's view policy, administrators every run. The
|
|
691
813
|
* thread view's run timeline and the administration's runs view open it; an application may show
|
|
692
814
|
* it anywhere with a run id. With live updates it reloads by itself while the run works.
|
|
815
|
+
*
|
|
816
|
+
* The run's pending proposals that the reader may decide, by the same live check as the inbox and the
|
|
817
|
+
* subject's work (`POST approvals/lookup`), can be decided in place, one by one or selected together
|
|
818
|
+
* with "Select all"; a pending proposal the reader may not decide says who does, and a reader who may
|
|
819
|
+
* decide none sees no selection. After a rejection the list asks, optionally, what was wrong, and a
|
|
820
|
+
* proposal refused because it no longer fits stays as a closed card with the reason until dismissed.
|
|
693
821
|
*/
|
|
694
822
|
declare class NhAssistantRunResultComponent {
|
|
695
823
|
private readonly api;
|
|
696
824
|
private readonly document;
|
|
697
825
|
private subscription?;
|
|
826
|
+
private rightsSubscription?;
|
|
698
827
|
/** The run to show. */
|
|
699
828
|
readonly runId: _angular_core.InputSignal<string>;
|
|
700
829
|
/**
|
|
@@ -718,11 +847,25 @@ declare class NhAssistantRunResultComponent {
|
|
|
718
847
|
/** The text of the download's failure, then the text that a file could not be downloaded. */
|
|
719
848
|
readonly downloadErrorKeys: _angular_core.Signal<string[]>;
|
|
720
849
|
readonly codeKeys: typeof _nhAssistantCodeKeys;
|
|
850
|
+
/**
|
|
851
|
+
* The reader's live right to decide each pending proposal of the run, by approval id; `null` until
|
|
852
|
+
* it is known, when nobody may decide.
|
|
853
|
+
*/
|
|
854
|
+
readonly rights: _angular_core.WritableSignal<ReadonlyMap<string, AgentProposalDecisionRight> | null>;
|
|
855
|
+
/** Whether the reader may decide at least one of the run's proposals: only then can they select. */
|
|
856
|
+
readonly decidable: _angular_core.Signal<boolean>;
|
|
721
857
|
readonly duration: _angular_core.Signal<RunDuration | null>;
|
|
722
858
|
readonly tokens: _angular_core.Signal<number>;
|
|
723
859
|
constructor();
|
|
724
860
|
load(): void;
|
|
861
|
+
/** A proposal was decided or its feedback given: the run's proposals and the rights are read again. */
|
|
862
|
+
onProposalsChanged(): void;
|
|
725
863
|
download(artifact: AgentArtifact): Promise<void>;
|
|
864
|
+
/**
|
|
865
|
+
* Reads the reader's live right to decide each pending proposal of the run, as the server checks it
|
|
866
|
+
* for every decision. Without an answer nobody may decide here; the server checks again anyway.
|
|
867
|
+
*/
|
|
868
|
+
private readRights;
|
|
726
869
|
/**
|
|
727
870
|
* Reads the run. A quiet reload, after a live update, keeps what is shown when it fails and shows
|
|
728
871
|
* no loading state.
|