feat: add subtrace-token flag for development tracing

Add internal --subtrace-token flag to enable running sketch under
subtrace.dev for development purposes. Run with --skaband-addr= for max
happiness.

Subtrace manages to trace both incoming and outgoing traffic (e.g., to
Anthropic), so it can be used.

Beware that using this may leak your anthropic keys to subtrace.dev.

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: s3521ac3b805c857fk
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index e708745..e207904 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -124,6 +124,9 @@
 
 	// LinkToGitHub enables GitHub branch linking in UI
 	LinkToGitHub bool
+
+	// SubtraceToken enables running sketch under subtrace.dev (development only)
+	SubtraceToken string
 }
 
 // LaunchContainer creates a docker container for a project, installs sketch and opens a connection to it.
@@ -254,6 +257,14 @@
 
 	fmt.Printf("📦 running in container %s\n", cntrName)
 
+	// Setup subtrace if token is provided (development only) - after container creation, before start
+	if config.SubtraceToken != "" {
+		fmt.Println("🔍 Setting up subtrace (development only)")
+		if err := setupSubtraceBeforeStart(ctx, cntrName, config.SubtraceToken); err != nil {
+			return fmt.Errorf("failed to setup subtrace: %w", err)
+		}
+	}
+
 	// Start the sketch container
 	if out, err := combinedOutput(ctx, "docker", "start", cntrName); err != nil {
 		return fmt.Errorf("docker start: %s, %w", out, err)
@@ -543,16 +554,29 @@
 	}
 	cmdArgs = append(cmdArgs, "--security-opt", "seccomp="+seccompPath)
 
+	// Add subtrace environment variable if token is provided
+	if config.SubtraceToken != "" {
+		cmdArgs = append(cmdArgs, "-e", "SUBTRACE_TOKEN="+config.SubtraceToken)
+		cmdArgs = append(cmdArgs, "-e", "SUBTRACE_HTTP2=1")
+	}
+
 	// Add volume mounts if specified
 	for _, mount := range config.Mounts {
 		if mount != "" {
 			cmdArgs = append(cmdArgs, "-v", mount)
 		}
 	}
-	cmdArgs = append(
-		cmdArgs,
-		imgName,
-		"/bin/sketch",
+	cmdArgs = append(cmdArgs, imgName)
+
+	// Add command: either [sketch] or [subtrace run -- sketch]
+	if config.SubtraceToken != "" {
+		cmdArgs = append(cmdArgs, "/usr/local/bin/subtrace", "run", "--", "/bin/sketch")
+	} else {
+		cmdArgs = append(cmdArgs, "/bin/sketch")
+	}
+
+	// Add all sketch arguments
+	cmdArgs = append(cmdArgs,
 		"-unsafe",
 		"-addr=:80",
 		"-session-id="+config.SessionID,