STET

agent_patch

runs/2026-02-28__13-38-10__gpt-5-4/flux-pr-1260/flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/agent-logs/agent.patch

7406 bytes

Back to adjudication
diff --git a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/plan/visitor.go b/app/v2/pkg/engine/plan/visitor.go
index 3a95e8f..3c7eb0c 100644
--- a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/plan/visitor.go
+++ b/app/v2/pkg/engine/plan/visitor.go
@@ -1279,6 +1279,10 @@ func (v *Visitor) configureSubscription(config *objectFetchConfiguration) {
 	subscription := config.planner.ConfigureSubscription()
 	v.subscription.Trigger.Variables = subscription.Variables
 	v.subscription.Trigger.Source = subscription.DataSource
+	v.subscription.Trigger.SourceID = config.sourceID
+	v.subscription.Trigger.SourceName = config.sourceName
+	v.subscription.Trigger.FetchID = config.fetchID
+	v.subscription.Trigger.QueryPlan = subscription.QueryPlan
 	v.subscription.Trigger.PostProcessing = subscription.PostProcessing
 	v.resolveInputTemplates(config, &subscription.Input, &v.subscription.Trigger.Variables)
 	v.subscription.Trigger.Input = []byte(subscription.Input)
diff --git a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/postprocess/postprocess.go b/app/v2/pkg/engine/postprocess/postprocess.go
index fa63dd2..1ad5c11 100644
--- a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/postprocess/postprocess.go
+++ b/app/v2/pkg/engine/postprocess/postprocess.go
@@ -205,6 +205,9 @@ func (p *Processor) createFetchTree(res *resolve.GraphQLResponse) {
 func (p *Processor) appendTriggerToFetchTree(res *resolve.GraphQLSubscription) {
 	// Using json parser here because input is not yet valid JSON
 	v, _ := jsonparser.GetString(res.Trigger.Input, "body", "query")
+	if v == "" && res.Trigger.QueryPlan != nil {
+		v = res.Trigger.QueryPlan.Query
+	}
 
 	rootData := res.Response.Data
 	if rootData == nil || len(rootData.Fields) == 0 {
@@ -216,16 +219,31 @@ func (p *Processor) appendTriggerToFetchTree(res *resolve.GraphQLSubscription) {
 		return
 	}
 
+	fetchID := res.Trigger.FetchID
+	if fetchID == 0 {
+		fetchID = info.FetchID
+	}
+
+	sourceID := res.Trigger.SourceID
+	if sourceID == "" && len(info.Source.IDs) > 0 {
+		sourceID = info.Source.IDs[0]
+	}
+
+	sourceName := res.Trigger.SourceName
+	if sourceName == "" && len(info.Source.Names) > 0 {
+		sourceName = info.Source.Names[0]
+	}
+
 	res.Response.Fetches.Trigger = &resolve.FetchTreeNode{
 		Kind: resolve.FetchTreeNodeKindTrigger,
 		Item: &resolve.FetchItem{
 			Fetch: &resolve.SingleFetch{
 				FetchDependencies: resolve.FetchDependencies{
-					FetchID: info.FetchID,
+					FetchID: fetchID,
 				},
 				Info: &resolve.FetchInfo{
-					DataSourceID:   info.Source.IDs[0],
-					DataSourceName: info.Source.Names[0],
+					DataSourceID:   sourceID,
+					DataSourceName: sourceName,
 					QueryPlan: &resolve.QueryPlan{
 						Query: v,
 					},
diff --git a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/postprocess/postprocess_test.go b/app/v2/pkg/engine/postprocess/postprocess_test.go
index 19ca66f..5e287c1 100644
--- a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/postprocess/postprocess_test.go
+++ b/app/v2/pkg/engine/postprocess/postprocess_test.go
@@ -390,6 +390,66 @@ func TestProcess_ExtractFetches(t *testing.T) {
 	}
 }
 
+func TestProcess_SubscriptionTriggerMetadata(t *testing.T) {
+	pre := &plan.SubscriptionResponsePlan{
+		Response: &resolve.GraphQLSubscription{
+			Trigger: resolve.GraphQLSubscriptionTrigger{
+				Input:      []byte(`{"body":{"query":"subscription SubscriptionName { counter }"}}`),
+				SourceID:   "subgraph-id",
+				SourceName: "subgraph-name",
+				FetchID:    7,
+			},
+			Response: &resolve.GraphQLResponse{
+				Data: &resolve.Object{
+					Fields: []*resolve.Field{
+						{
+							Name: []byte("counter"),
+							Value: &resolve.Integer{
+								Path: []string{"counter"},
+							},
+							Info: &resolve.FieldInfo{
+								Name:    "counter",
+								FetchID: 1,
+								Source: resolve.TypeFieldSource{
+									IDs:   []string{"field-subgraph-id"},
+									Names: []string{"field-subgraph-name"},
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+
+	processor := NewProcessor(
+		DisableDeduplicateSingleFetches(),
+		DisableCreateConcreteSingleFetchTypes(),
+		DisableMergeFields(),
+		DisableCreateParallelNodes(),
+		DisableAddMissingNestedDependencies(),
+	)
+
+	actual := processor.Process(pre)
+	subscriptionPlan, ok := actual.(*plan.SubscriptionResponsePlan)
+	if !ok {
+		t.Fatalf("expected subscription plan, got %T", actual)
+	}
+
+	trigger := subscriptionPlan.Response.Response.Fetches.Trigger
+	if assert.NotNil(t, trigger) && assert.NotNil(t, trigger.Item) {
+		fetch, ok := trigger.Item.Fetch.(*resolve.SingleFetch)
+		if !ok {
+			t.Fatalf("expected single fetch trigger, got %T", trigger.Item.Fetch)
+		}
+		assert.Equal(t, 7, fetch.FetchDependencies.FetchID)
+		assert.Equal(t, "subgraph-id", fetch.Info.DataSourceID)
+		assert.Equal(t, "subgraph-name", fetch.Info.DataSourceName)
+		assert.Equal(t, "subscription SubscriptionName { counter }", fetch.Info.QueryPlan.Query)
+		assert.Equal(t, "counter", trigger.Item.ResponsePath)
+	}
+}
+
 func TestProcess_ExtractServiceNames(t *testing.T) {
 	type TestCase struct {
 		name     string
diff --git a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/resolve/resolve_test.go b/app/v2/pkg/engine/resolve/resolve_test.go
index 44b9f4c..7c8b2e2 100644
--- a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/resolve/resolve_test.go
+++ b/app/v2/pkg/engine/resolve/resolve_test.go
@@ -5295,9 +5295,11 @@ func TestResolver_ResolveGraphQLSubscription(t *testing.T) {
 		c, cancel := context.WithCancel(context.Background())
 		defer cancel()
 
+		started := atomic.Bool{}
 		fakeStream := createFakeStream(func(counter int) (message string, done bool) {
 			return fmt.Sprintf(`{"data":{"counter":%d}}`, counter), counter == 0
 		}, 100*time.Millisecond, func(input []byte) {
+			started.Store(true)
 			assert.Equal(t, `{"method":"POST","url":"http://localhost:4000","body":{"query":"subscription { counter }"}}`, string(input))
 		})
 
@@ -5315,6 +5317,7 @@ func TestResolver_ResolveGraphQLSubscription(t *testing.T) {
 		assert.NoError(t, err)
 		recorder.AwaitComplete(t, defaultTimeout)
 		assert.Equal(t, 1, len(recorder.Messages()))
+		assert.False(t, started.Load())
 		assert.ElementsMatch(t, []string{
 			`{"data":null,"extensions":{"queryPlan":{"version":"1","kind":"Sequence","trigger":{"kind":"Trigger","path":"counter","subgraphName":"counter","subgraphId":"0","fetchId":0,"query":"subscription { counter }"}}}}`,
 		}, recorder.Messages())
diff --git a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/resolve/response.go b/app/v2/pkg/engine/resolve/response.go
index f8e0c60..3da1b29 100644
--- a/tmp/agent-patch-flux-pr-1260.1-of-1.2026-02-28__13-38-10__gpt-5-4/app/v2/pkg/engine/resolve/response.go
+++ b/app/v2/pkg/engine/resolve/response.go
@@ -19,6 +19,10 @@ type GraphQLSubscriptionTrigger struct {
 	InputTemplate  InputTemplate
 	Variables      Variables
 	Source         SubscriptionDataSource
+	SourceID       string
+	SourceName     string
+	FetchID        int
+	QueryPlan      *QueryPlan
 	PostProcessing PostProcessingConfiguration
 }