Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
50e5a3b
Split Dex Web v2 into Run and Work queue modes
zzheng-aiplay Sep 19, 2026
0a8f1fe
Tell the work queue's four answers apart
zzheng-aiplay Sep 19, 2026
226fc93
Fix what the two mode commits got wrong
zzheng-aiplay Sep 20, 2026
3da1c61
Nest the v1 detailed view as the v2 Deep Dive
zzheng-aiplay Sep 20, 2026
7bb3bf3
Make the Run view the semantic Admin view
zzheng-aiplay Sep 20, 2026
7a842bc
Read the run list as a list, and decide before reading
zzheng-aiplay Sep 20, 2026
7193fdf
Fit and finish across the Run view and the canvas
zzheng-aiplay Sep 20, 2026
8b5839c
Explain the open Step in the flow's own terms
zzheng-aiplay Sep 20, 2026
b487fd8
Explain a Step without needing a run
zzheng-aiplay Sep 20, 2026
e0e957d
Give Inbox and Run one visual language
zzheng-aiplay Sep 20, 2026
e7b04f9
Add a second human gate and the Attributes a run is found by
zzheng-aiplay Sep 20, 2026
4f38e5a
Find a run with the attributes Dex can actually search
zzheng-aiplay Sep 20, 2026
e2769ca
Walk a reader through a run's human gates
zzheng-aiplay Sep 20, 2026
7490252
fix(web): restore Canvas edges and tighten rank spacing
zzheng-aiplay Sep 20, 2026
4ebeeab
feat(web): judge Canvas layout by measured principles, not per-screen…
zzheng-aiplay Sep 20, 2026
0ac5ad9
feat(web): pull a group together where the graph already agrees
zzheng-aiplay Sep 20, 2026
996166f
fix(web): converge region merging, and assign lanes per group
zzheng-aiplay Sep 20, 2026
e9f03e7
test(web): pin which definitions exercise the region principles
zzheng-aiplay Sep 20, 2026
8c065ff
feat(web): basic filters in front, attribute comparisons behind a dis…
zzheng-aiplay Sep 20, 2026
0d7e0cd
refactor(web): drop the scope note and the redundant refresh
zzheng-aiplay Sep 20, 2026
e381cf1
test: answer the customer-message gate the refund e2e tests now reach
zzheng-aiplay Sep 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 20 additions & 7 deletions cli/internal/command/visualize_v2_integ_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ func TestVisualizeV2RefundFlows(t *testing.T) {
wantGroupIDs []string
wantSummaryFields []string
wantActionRPCNames []string
wantIndexTypes map[string]string
}{
{
name: "deterministic",
Expand All @@ -37,15 +38,23 @@ func TestVisualizeV2RefundFlows(t *testing.T) {
wantGroupIDs: []string{"intake", "evidence", "control", "resolution", "failure", "close"},
wantSummaryFields: []string{"charge-reference", "refund-amount", "recommended-action"},
wantActionRPCNames: []string{},
wantIndexTypes: map[string]string{"case-status": "keyword"},
},
{
name: "agentic",
source: filepath.Join(repositoryRoot,
"examples/go/products/customer-refund/agentic/workflow.go"),
wantFlowType: "AgenticCustomerRefundFlow",
wantGroupIDs: []string{"intake", "reasoning", "evidence", "control", "resolution", "failure", "close"},
wantSummaryFields: []string{"in-charge-ref", "ev-payment-amount", "recommended-action", "guardrail-rule"},
wantActionRPCNames: []string{"ApproveRefund", "RejectRefund"},
wantFlowType: "AgenticCustomerRefundFlow",
wantGroupIDs: []string{"intake", "reasoning", "evidence", "control", "resolution", "failure", "close"},
wantSummaryFields: []string{"in-charge-ref", "ev-payment-amount", "recommended-action", "guardrail-rule"},
wantActionRPCNames: []string{
"ApproveRefund", "RejectRefund", "ConfirmCustomerMessage", "EditCustomerMessage",
},
wantIndexTypes: map[string]string{
"case-status": "keyword",
"customer-email": "fulltext",
"refund-amount": "double",
},
},
}
for _, test := range tests {
Expand All @@ -61,9 +70,13 @@ func TestVisualizeV2RefundFlows(t *testing.T) {
require.Equal(t, test.wantGroupIDs, v2GroupIDs(graph.Groups))
require.Equal(t, test.wantSummaryFields, v2ViewFieldKeys(graph.V2.Summary.Fields))
require.Equal(t, test.wantActionRPCNames, v2ActionRPCNames(graph.V2.Actions))
require.Equal(t, "case-status", graph.V2.IndexedAttributes[0].AttributeKey)
require.Equal(t, "case-status", graph.V2.IndexedAttributes[0].IndexKey)
require.Equal(t, "keyword", graph.V2.IndexedAttributes[0].IndexType)
// Keyed rather than positional: declaring another Indexed Attribute must not move this.
indexTypes := make(map[string]string, len(graph.V2.IndexedAttributes))
for _, attribute := range graph.V2.IndexedAttributes {
require.Equal(t, attribute.AttributeKey, attribute.IndexKey)
indexTypes[attribute.AttributeKey] = attribute.IndexType
}
require.Equal(t, test.wantIndexTypes, indexTypes)
for _, node := range graph.Nodes {
if node.Kind != "step" {
continue
Expand Down
Loading
Loading