@kottera/tera-web 0.1.0-rc.7 → 0.1.0-rc.9
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.
|
@@ -67,6 +67,14 @@ export type SharesList = {
|
|
|
67
67
|
grantee: string;
|
|
68
68
|
/** The id of the person who made the share. */
|
|
69
69
|
sharer: string;
|
|
70
|
+
/** The grantee person's display name. Presentation only: grantee stays the identity. Absent when tera has no name to show: a pending invitation has none, the directory has no person for the id, or the read failed. Render the name, else the address, else Someone; never the principal id. */
|
|
71
|
+
grantee_name?: string;
|
|
72
|
+
/** The grantee person's address, or a pending share's invitation address. Presentation only: grantee stays the identity. Absent when tera has no address to show: the directory has no person for the id, or the read failed. */
|
|
73
|
+
grantee_address?: string;
|
|
74
|
+
/** The sharer's display name. Presentation only: sharer stays the identity. Absent when tera has no name to show: the directory has no person for the id, or the read failed. Render the name, else the address, else Someone; never the principal id. */
|
|
75
|
+
sharer_name?: string;
|
|
76
|
+
/** The sharer's address. Presentation only: sharer stays the identity. Absent when tera has no address to show: the directory has no person for the id, or the read failed. */
|
|
77
|
+
sharer_address?: string;
|
|
70
78
|
/** The plugin principal that made the share for its sharer; absent when the sharer made it directly. */
|
|
71
79
|
created_via?: string;
|
|
72
80
|
/** When the share was made. */
|
|
@@ -168,6 +176,14 @@ export type SharesShare = {
|
|
|
168
176
|
grantee: string;
|
|
169
177
|
/** The id of the person who made the share. */
|
|
170
178
|
sharer: string;
|
|
179
|
+
/** The grantee person's display name. Presentation only: grantee stays the identity. Absent when tera has no name to show: a pending invitation has none, the directory has no person for the id, or the read failed. Render the name, else the address, else Someone; never the principal id. */
|
|
180
|
+
grantee_name?: string;
|
|
181
|
+
/** The grantee person's address, or a pending share's invitation address. Presentation only: grantee stays the identity. Absent when tera has no address to show: the directory has no person for the id, or the read failed. */
|
|
182
|
+
grantee_address?: string;
|
|
183
|
+
/** The sharer's display name. Presentation only: sharer stays the identity. Absent when tera has no name to show: the directory has no person for the id, or the read failed. Render the name, else the address, else Someone; never the principal id. */
|
|
184
|
+
sharer_name?: string;
|
|
185
|
+
/** The sharer's address. Presentation only: sharer stays the identity. Absent when tera has no address to show: the directory has no person for the id, or the read failed. */
|
|
186
|
+
sharer_address?: string;
|
|
171
187
|
/** The plugin principal that made the share for its sharer; absent when the sharer made it directly. */
|
|
172
188
|
created_via?: string;
|
|
173
189
|
/** When the share was made. */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Schema: sdk/workorder/schema/events/v1/event-kind.workorder.json
|
|
7
7
|
*/
|
|
8
|
-
export type WorkOrderEventKind = "cohort.set" | "off_tera.wake" | "relation.set" | "relation.removed" | "off_tera.taken" | "off_tera.progress" | "off_tera.reposted" | "off_tera.late_report" | "off_tera.checks_started" | "created" | "transitioned" | "acknowledged" | "retention_expired" | "edited" | "seat.reclaimed" | "claim.overdue" | "claim.unreadable" | "subject_claim.overridden" | "seat.cooling" | "seat.credential_held" | "member_credential.requested" | "member_credential.settled" | "seat.acquired" | "seat.runner_released" | "seat.meters_voided" | "step.binding" | "session.terminated" | "postcondition.verdict" | "parked_run.unreadable" | "parked_run.reclaimed" | "dispatch.settled_unobserved" | "parked_run.parked" | "parked_run.resumed" | "resume.refused" | "dispatch.salvaged" | "workspace.retired" | "dispatch.routed" | "session.lost" | "activity_partition.pinned" | "session.continuity" | "session.context_compacted" | "upstream.answer_forwarded" | "invocation.checkpoint" | "invocation.guidance" | "invocation.guidance.ack" | "invocation.reply" | "invocation.checkpoint.unreadable" | "invocation.guidance.unreadable" | "config_pin.unreadable" | "config_pin.repinned" | "type.followed" | "observation.scrubbed" | "observation.secret-shape-redacted" | "observation.promoted" | "observation.refuted" | "observation.purged" | "conversation.input_barrier" | "walk_resume.fell_back" | "store.ahead_of_binary" | "artifact.published" | "history.dropped" | "history.archived" | "seat.work_order_released" | "step.settled_late" | "step.reattached" | "relay.unrebuilt" | "references.recorded" | "attended.wall_reported" | "attended.signal";
|
|
8
|
+
export type WorkOrderEventKind = "cohort.set" | "off_tera.wake" | "relation.set" | "relation.removed" | "off_tera.taken" | "off_tera.progress" | "off_tera.reposted" | "off_tera.late_report" | "off_tera.checks_started" | "created" | "transitioned" | "acknowledged" | "retention_expired" | "edited" | "seat.reclaimed" | "claim.overdue" | "claim.unreadable" | "subject_claim.overridden" | "seat.cooling" | "seat.credential_held" | "member_credential.requested" | "member_credential.settled" | "seat.acquired" | "seat.runner_released" | "seat.meters_voided" | "step.binding" | "session.terminated" | "postcondition.verdict" | "parked_run.unreadable" | "parked_run.reclaimed" | "dispatch.settled_unobserved" | "parked_run.parked" | "parked_run.resumed" | "resume.refused" | "dispatch.salvaged" | "workspace.retired" | "dispatch.routed" | "session.lost" | "activity_partition.pinned" | "session.continuity" | "session.context_compacted" | "upstream.answer_forwarded" | "invocation.checkpoint" | "invocation.guidance" | "invocation.guidance.ack" | "invocation.reply" | "invocation.checkpoint.unreadable" | "invocation.guidance.unreadable" | "config_pin.unreadable" | "config_pin.repinned" | "type.followed" | "observation.scrubbed" | "observation.secret-shape-redacted" | "observation.promoted" | "observation.refuted" | "observation.purged" | "conversation.input_barrier" | "walk_resume.fell_back" | "store.ahead_of_binary" | "artifact.published" | "history.dropped" | "history.archived" | "seat.work_order_released" | "step.settled_late" | "step.reattached" | "relay.unrebuilt" | "references.recorded" | "attended.wall_reported" | "attended.signal" | "attended.attached" | "attended.detached";
|
|
9
9
|
/**
|
|
10
10
|
* `workorder` event payload (event/workorder).
|
|
11
11
|
*
|
|
@@ -1255,6 +1255,7 @@ export type WorkOrderGetResult = {
|
|
|
1255
1255
|
};
|
|
1256
1256
|
take?: {
|
|
1257
1257
|
principal: string;
|
|
1258
|
+
display_name?: string;
|
|
1258
1259
|
taken_at: string;
|
|
1259
1260
|
last_progress_at?: string;
|
|
1260
1261
|
describe?: string;
|
|
@@ -1437,6 +1438,7 @@ export type WorkOrderGetResult = {
|
|
|
1437
1438
|
cause?: string;
|
|
1438
1439
|
} | null;
|
|
1439
1440
|
created_by?: string;
|
|
1441
|
+
created_by_display_name?: string;
|
|
1440
1442
|
created_via?: string;
|
|
1441
1443
|
released_via?: string;
|
|
1442
1444
|
lent_by?: string;
|
|
@@ -1863,6 +1865,7 @@ export type WorkOrderListResult = {
|
|
|
1863
1865
|
archived: boolean;
|
|
1864
1866
|
take?: {
|
|
1865
1867
|
principal: string;
|
|
1868
|
+
display_name?: string;
|
|
1866
1869
|
taken_at: string;
|
|
1867
1870
|
last_progress_at?: string;
|
|
1868
1871
|
describe?: string;
|
|
@@ -1923,6 +1926,7 @@ export type WorkOrderListOffTeraResult = {
|
|
|
1923
1926
|
age_seconds: number;
|
|
1924
1927
|
take?: {
|
|
1925
1928
|
principal: string;
|
|
1929
|
+
display_name?: string;
|
|
1926
1930
|
taken_at: string;
|
|
1927
1931
|
last_progress_at?: string;
|
|
1928
1932
|
describe?: string;
|
|
@@ -1951,6 +1955,7 @@ export type WorkOrderListOffTeraResult = {
|
|
|
1951
1955
|
age_seconds: number;
|
|
1952
1956
|
take?: {
|
|
1953
1957
|
principal: string;
|
|
1958
|
+
display_name?: string;
|
|
1954
1959
|
taken_at: string;
|
|
1955
1960
|
last_progress_at?: string;
|
|
1956
1961
|
describe?: string;
|
|
@@ -1979,6 +1984,7 @@ export type WorkOrderListOffTeraResult = {
|
|
|
1979
1984
|
age_seconds: number;
|
|
1980
1985
|
take?: {
|
|
1981
1986
|
principal: string;
|
|
1987
|
+
display_name?: string;
|
|
1982
1988
|
taken_at: string;
|
|
1983
1989
|
last_progress_at?: string;
|
|
1984
1990
|
describe?: string;
|
|
@@ -2085,6 +2091,7 @@ export type WorkOrderProgressResult = {
|
|
|
2085
2091
|
state: string;
|
|
2086
2092
|
take: {
|
|
2087
2093
|
principal: string;
|
|
2094
|
+
display_name?: string;
|
|
2088
2095
|
taken_at: string;
|
|
2089
2096
|
last_progress_at?: string;
|
|
2090
2097
|
describe?: string;
|
|
@@ -2749,6 +2756,7 @@ export type WorkOrderTakeResult = {
|
|
|
2749
2756
|
state: string;
|
|
2750
2757
|
take: {
|
|
2751
2758
|
principal: string;
|
|
2759
|
+
display_name?: string;
|
|
2752
2760
|
taken_at: string;
|
|
2753
2761
|
last_progress_at?: string;
|
|
2754
2762
|
describe?: string;
|
|
@@ -2796,7 +2804,7 @@ export type WorkOrderTakeResult = {
|
|
|
2796
2804
|
* Schema: sdk/workorder/schema/v1/transition.params.json
|
|
2797
2805
|
*/
|
|
2798
2806
|
export type WorkOrderTransitionParams = {
|
|
2799
|
-
/** The externally-driven input to fire. The review actions (approve / reject / rework) are accepted only from `paused:awaiting-review`; `answer` only from `paused:awaiting-input` or `paused:awaiting-interactive-turn`. `wake` is the NON-DESTRUCTIVE door into a parked run: it makes the run's wait condition true and lets the ordinary paused → active machinery run, without re-dispatching, resurrecting or re-pinning anything. It is accepted from every paused state EXCEPT `paused:awaiting-review`, whose doors are approve / reject / rework because that park exists so a verdict is RECORDED, and `paused:interrupted`, whose one way out is work_order.guide(id, verb = "deliver") because the run was interrupted to be given a new instruction. It does NOT make the thing the run was waiting for happen: from `paused:awaiting-input` the run is told plainly that no answer was given, and from `paused:awaiting-capacity` / `paused:awaiting-credential` it means "proceed without it", so work needing that resource may fail immediately — that is the operator's call. From `paused:awaiting-upstream` it is sharper still: the backoff has NOT elapsed by construction, so the upstream that refused is very likely still refusing and the run may take the identical refusal at once. From `paused:plugin-contract-moved` it resumes the run on its OLD pin, so its next call to the plugin whose contract moved parks it again: that park's door is `work_order.repin`, which re-pins the run onto the installed contract version and resumes it. Authorized against api/v1/workorders/wake, which the transition grant does NOT imply, and `reason` is REQUIRED on it. For a Work Order that is terminal or merely stuck rather than parked, the road is work_order.force_fail then work_order.retry. `conclude` (ADR-129 D10) is the OPERATOR'S ENDING for an interactive conversation, accepted from `paused:awaiting-interactive-turn` and from NOTHING ELSE: it settles the run at the success terminal (`complete`) whatever the conversation decided, carrying an OPTIONAL `note`. An interactive dispatch has no ending of its own — its one exit is the turn boundary — so this is how the run ends, and there is no resume after it. A run mid-turn is INTERRUPTED first (work_order.guide(id, verb = "interrupt")), which lands it back at its inbox; a conclude arriving at an `active` row is refused and says so. Its children keep running to their own ends. Its optional note goes on `note`, NOT on `reason` — a conclude carrying `reason` is REFUSED rather than silently dropping your words, because unlike `wake` nothing here reaches the run. Authorized against api/v1/workorders/conclude, which the transition grant does NOT imply. */
|
|
2807
|
+
/** The externally-driven input to fire. The review actions (approve / reject / rework) are accepted only from `paused:awaiting-review`; `answer` only from `paused:awaiting-input` or `paused:awaiting-interactive-turn`. `wake` is the NON-DESTRUCTIVE door into a parked run: it makes the run's wait condition true and lets the ordinary paused → active machinery run, without re-dispatching, resurrecting or re-pinning anything. It is accepted from every paused state EXCEPT `paused:awaiting-review`, whose doors are approve / reject / rework because that park exists so a verdict is RECORDED, and `paused:interrupted`, whose one way out is work_order.guide(id, verb = "deliver") because the run was interrupted to be given a new instruction. It does NOT make the thing the run was waiting for happen: from `paused:awaiting-input` the run is told plainly that no answer was given, and from `paused:awaiting-capacity` / `paused:awaiting-credential` it means "proceed without it", so work needing that resource may fail immediately — that is the operator's call. From `paused:awaiting-upstream` it is sharper still: the backoff has NOT elapsed by construction, so the upstream that refused is very likely still refusing and the run may take the identical refusal at once. From `paused:plugin-contract-moved` it resumes the run on its OLD pin, so its next call to the plugin whose contract moved parks it again: that park's door is `work_order.repin`, which re-pins the run onto the installed contract version and resumes it. Authorized against api/v1/workorders/wake, which the transition grant does NOT imply, and `reason` is REQUIRED on it. For a Work Order that is terminal or merely stuck rather than parked, the road is work_order.force_fail then work_order.retry. `conclude` (ADR-129 D10) is the OPERATOR'S ENDING for an interactive conversation, accepted from `paused:awaiting-interactive-turn` and, for an attended session (ADR-179 D9), from `active` and `paused:interrupted`, and from NOTHING ELSE: it settles the run at the success terminal (`complete`) whatever the conversation decided, carrying an OPTIONAL `note`. An interactive dispatch has no ending of its own — its one exit is the turn boundary — so this is how the run ends, and there is no resume after it. A run mid-turn is INTERRUPTED first (work_order.guide(id, verb = "interrupt")), which lands it back at its inbox; a conclude arriving at an `active` row is refused and says so. Its children keep running to their own ends. Its optional note goes on `note`, NOT on `reason` — a conclude carrying `reason` is REFUSED rather than silently dropping your words, because unlike `wake` nothing here reaches the run. Authorized against api/v1/workorders/conclude, which the transition grant does NOT imply. An attended session's attendee concludes it holding neither grant; a plugin acting for them, only when its on_behalf_of grant names conclude. */
|
|
2800
2808
|
action: "answer" | "approve" | "reject" | "rework" | "cancel" | "retry" | "wake" | "conclude";
|
|
2801
2809
|
/** Files to hand this Work Order, each named by the HANDLE its upload minted — `tera artifacts upload <file> --description "…"` mints one in a single command, or over the API `POST /api/v1/artifacts/uploads/authorize` starts an upload and completing it mints the handle. A DISPATCHED RUN uses neither door — a worker-class caller is refused both — and attaches only a handle it has ALREADY PUBLISHED into this same train, which costs nothing and is not a re-upload. ATTACHMENTS CARRY A HANDLE AND NEVER FILE CONTENT, at any size: there is no inline, base64 or small-file form of this field on any surface, so upload first and pass the reference. You do not describe the file here — its filename, declared content type, size, digest and the uploader's description come from the upload itself, so what a later reader sees is what was actually uploaded rather than what the create said about it. An attach CONSUMES the artifact into this one Work Order's train: it leaves your staged account, the same handle keeps working, and it cannot be attached to a second Work Order — upload the file again for that. A handle you have not attached within 24 hours of uploading it is collected; attaching to a `draft` stops that clock for as long as the draft lives, and discarding the draft hands the file back to you with a fresh 24 hours rather than deleting it. Every unattachable handle answers the same way — never uploaded, already attached, expired, or somebody else's are one refusal, because telling them apart would say whether another principal's handle exists; `tera artifacts list --staged` lists what is actually yours (`GET /api/v1/artifacts/staged` over the API). A run has no staging account to list, and the handle it should be passing is one of its own outputs in this train. Inputs get their own byte allowance (64 MiB per Work Order) and never spend the separate allowance a run uses to publish artifacts about its own work. */
|
|
2802
2810
|
attachments?: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kottera/tera-web",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.9",
|
|
4
4
|
"description": "The browser half of a UI over tera: a framework-free client for the /tera/v1/ routes a plugin's webui kit serves (ADR-162 D4).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|