mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-08-17 11:37:20 +08:00
- Added support for capturing and decoding Fork Chat traffic, including `ForkBackgroundComposer`, `NotifyConversationClone`, and `UploadConversationBlobs`. - Updated the README to reflect new features and usage instructions for Fork Chat traffic. - Modified `.gitignore` to include `proto/extensions-cursor-app/`. - Refactored `Taskfile.yml` to improve error messages related to Cursor extensions. - Introduced new tests for decoding functionality in `cursor-proxy-debugger`.
73 lines
2.3 KiB
Go
73 lines
2.3 KiB
Go
package main
|
|
|
|
import "testing"
|
|
|
|
func TestParseFieldObjectSupportsShorthandType(t *testing.T) {
|
|
field, err := parseFieldObject(`{no:4,name:"file_not_found",kind:"message",T,oneof:"result"}`)
|
|
if err != nil {
|
|
t.Fatalf("parse shorthand T: %v", err)
|
|
}
|
|
if field.T != "T" {
|
|
t.Fatalf("parsed shorthand T as %#v, want T", field.T)
|
|
}
|
|
}
|
|
|
|
func TestWebpackExportAliasResolvesServiceMessageType(t *testing.T) {
|
|
const bundle = `
|
|
1:(e,t,n)=>{
|
|
n.d(t,{KS:()=>T,_B:()=>r});
|
|
var r;
|
|
class T {}
|
|
T.typeName="agent.v1.AgentClientMessage";
|
|
n.proto3.util.setEnumType(r,"agent.v1.DiagnosticSeverity",[]);
|
|
},
|
|
2:(e,t,n)=>{
|
|
var r=n(1);
|
|
const service={typeName:"agent.v1.AgentService",methods:{run:{name:"Run",I:r.KS,O:r.KS,kind:n.MethodKind.BiDiStreaming}}};
|
|
}`
|
|
|
|
moduleStarts := buildModuleStarts(bundle)
|
|
messages := []Message{{
|
|
TypeName: "agent.v1.AgentClientMessage",
|
|
VarName: "T",
|
|
InternalName: "T",
|
|
Package: "agent.v1",
|
|
Pos: 35,
|
|
ModuleStart: moduleStartForPos(moduleStarts, 35),
|
|
}}
|
|
enums := []Enum{{
|
|
TypeName: "agent.v1.DiagnosticSeverity",
|
|
VarName: "r",
|
|
Package: "agent.v1",
|
|
Pos: 100,
|
|
ModuleStart: moduleStartForPos(moduleStarts, 100),
|
|
}}
|
|
|
|
resolver := newTypeResolver(messages, enums, buildAliasIndex(bundle, moduleStarts), buildWebpackExportAliasIndex(bundle, moduleStarts))
|
|
resolver.moduleImports = buildModuleImportIndex(bundle, moduleStarts)
|
|
typeName, ok := resolver.ResolveTypeName("r.KS", len(bundle)-1, moduleStartForPos(moduleStarts, len(bundle)-1), "agent.v1", "message")
|
|
if !ok {
|
|
t.Fatal("expected webpack export alias to resolve")
|
|
}
|
|
if typeName != "agent.v1.AgentClientMessage" {
|
|
t.Fatalf("resolved r.KS to %q, want agent.v1.AgentClientMessage", typeName)
|
|
}
|
|
}
|
|
|
|
func TestResolverPrefersExpectedKindOverCurrentPackage(t *testing.T) {
|
|
resolver := &TypeResolver{bySymbol: map[string][]symbolDef{
|
|
"nt": {
|
|
{TypeName: "git_forge.v1.GetTagResponse", Kind: "message", Pos: 10, ModuleStart: 1},
|
|
{TypeName: "origin.v1.TeamGroupKind", Kind: "enum", Pos: 20, ModuleStart: 1},
|
|
},
|
|
}}
|
|
|
|
typeName, ok := resolver.ResolveTypeName("nt", 30, 1, "origin.v1", "message")
|
|
if !ok {
|
|
t.Fatal("expected cross-package message type to resolve")
|
|
}
|
|
if typeName != "git_forge.v1.GetTagResponse" {
|
|
t.Fatalf("resolved nt to %q, want git_forge.v1.GetTagResponse", typeName)
|
|
}
|
|
}
|