picker.proto RawHistoryFolder
1// Client-picker interaction: offers, snapshots, commits, closes.
2syntax = "proto3";
3
4package vev.wire.v1;
5
6option go_package = "github.com/bnema/vev/internal/protocol/wire";
7
8// PickerLine is one structured row. Key is opaque and source-assigned.
9message PickerLine {
10 string key = 1;
11 // Closed kind taxonomy: 1 = section, 2 = session, 3 = tab, 4 = host.
12 uint32 kind = 2;
13 string label = 3;
14 string detail = 4;
15 // Closed status taxonomy: 0 = none, 1 = up, 2 = stopped, 3 = down,
16 // 4 = stale, 5 = version, 6 = error.
17 uint32 status = 5;
18 string status_detail = 6;
19 bool attention = 7;
20 bool stopped = 8;
21 bool dim = 9;
22 bool focusable = 10;
23 uint32 actions = 11; // bitmask: 1 = navigate, 2 = move, 4 = kill
24 bool ephemeral = 12;
25}
26
27// PickerCursor restores the selected row by opaque key.
28message PickerCursor {
29 string key = 1;
30 int64 index = 2;
31}
32
33// PickerProjection is one complete daemon-authorised presentation.
34message PickerProjection {
35 repeated PickerLine lines = 1;
36 PickerCursor cursor = 2;
37}
38
39// PickerSnapshot atomically publishes both presentation projections.
40message PickerSnapshot {
41 uint64 interaction_id = 1;
42 string source_id = 2;
43 uint64 source_revision = 3;
44 // Closed source-status taxonomy: 1 = ok, 2 = unavailable, 3 = too large.
45 uint32 status = 4;
46 string status_detail = 5;
47 PickerProjection recent = 6;
48 PickerProjection grouped = 7;
49}
50
51// PickerOffer opens one interaction.
52message PickerOffer {
53 uint64 interaction_id = 1;
54 uint64 request_id = 2;
55 // Closed intent taxonomy: 1 = navigation, 2 = move pane, 3 = move tab.
56 uint32 intent = 3;
57 string move_source_key = 4;
58 uint64 barrier_epoch = 5;
59 uint64 barrier_state = 6;
60 uint64 size_epoch = 7;
61 string title = 8;
62}
63
64// PickerSelection commits the opaque row key at a revision.
65message PickerSelection {
66 uint64 cause_action_id = 1;
67 uint64 request_id = 2;
68 uint64 interaction_id = 3;
69 string source_id = 4;
70 uint64 source_revision = 5;
71 string key = 6;
72 // Closed action taxonomy: 1 = navigate, 2 = move, 3 = kill.
73 uint32 action = 7;
74}
75
76// PickerResult reports a completed mutation.
77message PickerResult {
78 uint64 cause_action_id = 1;
79 uint64 request_id = 2;
80 uint64 interaction_id = 3;
81 string source_id = 4;
82 string key = 5;
83 uint32 action = 6; // same taxonomy as PickerSelection.action
84}
85
86// PickerFailure reports a rejected selection with a bounded code.
87message PickerFailure {
88 uint64 cause_action_id = 1;
89 uint64 request_id = 2;
90 uint64 interaction_id = 3;
91 string source_id = 4;
92 string key = 5;
93 uint32 action = 6; // same taxonomy as PickerSelection.action
94 // Closed code taxonomy: 1 = stale revision, 2 = unknown key,
95 // 3 = retired target, 4 = navigation failed, 5 = unknown source,
96 // 6 = action failed.
97 uint32 code = 7;
98}
99
100// PickerClose asks the daemon to retire one interaction. Idempotent.
101message PickerClose {
102 uint64 interaction_id = 1;
103 uint64 request_id = 2;
104}
105
106// PickerClosed confirms the daemon retired one interaction.
107message PickerClosed {
108 uint64 interaction_id = 1;
109 uint64 barrier_epoch = 2;
110 uint64 barrier_state = 3;
111}