From 8018f5669e2231448dbf993615f6223351ff230e Mon Sep 17 00:00:00 2001 From: M09Ic Date: Sun, 11 Oct 2026 13:10:52 +0800 Subject: [PATCH 1/7] feat(mcp): expose MCP tools as native bash commands --- docs/README.md | 2 + docs/developer/extensions.md | 2 + docs/mcp.md | 137 ++++++++ examples/mcp/main.go | 81 +++++ examples/mcp/main_test.go | 37 +++ exts/mcp/extension.go | 99 ++++++ exts/mcp/extension_test.go | 306 +++++++++++++++++ go.mod | 2 +- .../architecture/architecture_test.go | 1 + tools/mcp/catalog.go | 131 ++++++++ tools/mcp/command.go | 146 +++++++++ tools/mcp/config.go | 88 +++++ tools/mcp/connection.go | 308 +++++++++++++++++ tools/mcp/connection_test.go | 309 ++++++++++++++++++ 14 files changed, 1648 insertions(+), 1 deletion(-) create mode 100644 docs/mcp.md create mode 100644 examples/mcp/main.go create mode 100644 examples/mcp/main_test.go create mode 100644 exts/mcp/extension.go create mode 100644 exts/mcp/extension_test.go create mode 100644 tools/mcp/catalog.go create mode 100644 tools/mcp/command.go create mode 100644 tools/mcp/config.go create mode 100644 tools/mcp/connection.go create mode 100644 tools/mcp/connection_test.go diff --git a/docs/README.md b/docs/README.md index bc2df376a..1032f69e5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,6 +23,8 @@ cyber-harness 将模型、工具和运行环境组合为可以持续执行任务 [开发者指南](development.md)从可运行的 Go 工具组合推进到会话应用;[扩展开发](developer/extensions.md)说明工具、命令、知识与共享服务的贡献方式;[宿主集成](developer/hosting.md)说明生命周期及终端、Web、协议和协作接入。 +已有 MCP 服务可通过 [MCP → CLI 扩展](mcp.md)自动成为 bash 命令,供模型按需发现和调用。 + 构建入口、产物和依赖见[源码构建](../README_CN.md#构建与嵌入),选择所需能力见[自定义最小应用](../README_CN.md#自定义最小应用)。非 Go 客户端见[第三方语言集成](integration.md),字段与错误语义见[API 参考](api.md)。 ## 架构 diff --git a/docs/developer/extensions.md b/docs/developer/extensions.md index 2f5262ac9..df55e0000 100644 --- a/docs/developer/extensions.md +++ b/docs/developer/extensions.md @@ -22,6 +22,8 @@ [OKF 扩展](../../exts/okf/extension.go)是一个小而完整的参考:Load 同时贡献命令、说明文档与提示词策略。阅读它时,可以沿着 `tools/okf` 的命令实现确认业务逻辑并没有依赖 Scope。 +已有标准 MCP 服务时可使用 [MCP → CLI 扩展](../mcp.md):Load 使用 mcp-go 连接服务、发现工具并贡献 `mcp-` 命令,Agent 从 bash 按需列举、查询 schema 和调用工具。 + ## 子 Agent 贡献 子任务定义使用 `agent/subagent.Subagent`,在组合根按依赖顺序安装: diff --git a/docs/mcp.md b/docs/mcp.md new file mode 100644 index 000000000..b1886ea9c --- /dev/null +++ b/docs/mcp.md @@ -0,0 +1,137 @@ +# MCP → CLI 扩展 + +`exts/mcp` 使用 `mcp-go` 连接外部 MCP 服务,自动发现工具并为每个服务生成一个 `mcp-` 命令。Agent 通过已有的 bash 工具执行这些命令,按需查看工具和参数,无需把整个 MCP 目录加入模型的函数列表。 + +接入路径:**AI → bash → CommandRegistry → MCP client → MCP server → 上游工具**。支持 stdio 和 Streamable HTTP;它适用于 IDA、REA 及其他提供 MCP tools 的服务,不包含分析引擎安装或数据库生命周期策略。 + +## AI 如何调用 + +配置服务别名为 `ida` 后,加载扩展自动注册 `mcp-ida`,并把简短用法加入命令发现: + +```sh +mcp-ida tools +mcp-ida schema decompile +mcp-ida call decompile --json '{"database":"db-1","addr":"0x401000"}' +mcp-ida call decompile --file arguments.json > result.json +mcp-ida call decompile --help +``` + +`tools` 输出名称和描述的 JSON 数组;`schema` 和 `call --help` 输出完整的上游工具声明,包括 `inputSchema`、`outputSchema`、annotations 和未知字段。`call` 把参数发给同名上游工具,省略参数时传 `{}`。相对参数文件路径基于调用方当前目录解析。 + +所有工具自动使用同一组 CLI 规则。参数以完整 JSON object 传入,因此嵌套对象、数组、布尔值、null、大整数和复杂 schema 都可保留,不需要为每种参数再实现命令行解析。工具名作为独立 argv 原样传递,不生成别名或套用模型函数名的 64 字节限制;需要时按普通 shell 规则引用。 + +`call` 的 stdout 是完整 MCP result JSON,保留文本、图片/音频的 base64、资源 URI、`structuredContent`、`_meta` 和未知内容。结果中的 `isError: true` 会在保留 stdout 后让命令失败;协议、连接、参数和 I/O 错误也使命令失败。bash 支持管道、重定向、变量和 `&&` / `||`,例如: + +```sh +mcp-ida call idb_list > databases.json +mcp-ida call decompile --file arguments.json 2> error.txt || printf '查看 error.txt\n' +``` + +命令运行在 harness 的 bash 解释器中,由 CommandRegistry 路由,不生成磁盘上的独立可执行文件。另行启动的系统 shell 只能访问自己的 PATH;可以使用下面的独立示例作为外部 CLI 宿主。 + +## 配置和独立试用 + +扩展配置使用 `mcpServers`,每个服务选择 `command` 或 `url`。别名使用字母、数字、`-`、`_`。stdio 的 command 是已安装的可执行文件,args 是参数数组,直接启动子进程;env 覆盖指定环境变量,cwd 设置子进程工作目录。 + +现代 `ida-pro-mcp` headless supervisor 示例: + +```json +{ + "mcpServers": { + "ida": { + "command": "idalib-mcp", + "args": ["--stdio", "--max-workers", "1"], + "startupTimeoutSeconds": 30, + "timeoutSeconds": 300 + } + } +} +``` + +保存为 `mcp.json` 后,在仓库根目录运行,无需模型密钥: + +```sh +go run ./examples/mcp -config mcp.json +go run ./examples/mcp -config mcp.json mcp-ida tools +go run ./examples/mcp -config mcp.json mcp-ida schema idb_open +go run ./examples/mcp -config mcp.json mcp-ida call idb_list +``` + +[示例](../examples/mcp/main.go)复用相同的 Extension Set 和 CommandRegistry,直接输出 JSON,失败返回非零退出码。每次运行会创建和关闭连接;需要连续维护 stdio 服务状态时,把扩展装进长期运行的 Profile。 + +Streamable HTTP 服务配置: + +```json +{ + "mcpServers": { + "ida": { + "url": "http://127.0.0.1:8745/mcp", + "headers": {"Authorization": "Bearer YOUR_TOKEN"}, + "tools": ["idb_list", "decompile"] + } + } +} +``` + +`tools` 使用上游名称;省略或 null 表示全部,`[]` 表示空目录。缺失的白名单工具、重复工具和循环分页使加载失败。调用和 schema 查询只允许访问白名单内的目录。 + +HTTP 重定向不自动跟随;请求与协议会话 DELETE 使用同一组 headers,诊断文本遮蔽配置中的 header 值。扩展不会持久化继承环境,stdio 的 stderr 持续排空但当前不保存上游日志。启动和发现各默认 30 秒,调用默认 300 秒;两个 timeout 字段可分别设置为正整数秒,0 使用默认值。 + +## 加入 cyber-harness Profile + +在发行版组合根的 Extensions 中加入 MCP ext,基础 CommandRegistry 先加载,模型 loop 和 Session 后加载: + +```go +import ( + "github.com/chainreactors/cyber/core/extension" + mcpext "github.com/chainreactors/cyber/exts/mcp" + "github.com/chainreactors/cyber/pkg/harness" + mcptools "github.com/chainreactors/cyber/tools/mcp" +) + +mcpConfig := mcpext.Config{ + MCPServers: map[string]mcptools.ServerConfig{ + "ida": {Command: "idalib-mcp", Args: []string{"--stdio", "--max-workers", "1"}}, + }, +} +h, err := harness.New(harness.Config{ + Base: baseConfig, + Extensions: []extension.Extension{mcpext.New(mcpConfig)}, + Session: &sessionConfig, +}) +``` + +`baseConfig` 和 `sessionConfig` 由发行版提供。按常规路径调用 `h.Load` / `h.Close`,加载失败也关闭。Load 验证整个配置、初始化连接、完成分页发现后,一次性贡献所有服务命令;失败时 Set 回滚已建立的连接。命令调用经过现有 command hooks,AI 的 bash 调用仍经过 tool hooks。 + +扩展目前是可装配的 Go API,未加入 aiscan 的 CLI 配置声明。完整的基础接线与生命周期说明见[扩展开发](developer/extensions.md)。[examples/rmcp](../examples/rmcp/main.go)是 AOP 远程工具节点,与此处的标准 MCP 客户端不同。 + +## 连接已有的逆向基础设施 + +IDA、Python、许可证与 `ida-pro-mcp` 需要按[上游说明](https://github.com/mrexodia/ida-pro-mcp#headless-idalib-session-model)单独准备。headless 示例需要支持 `idb_open` / `idb_list` / `idb_close` supervisor 的版本;旧版以初始文件名启动并提供 legacy SSE 的服务不适用此配置。具体工具名称和参数以 `tools` / `schema` 的实际发现为准。 + +连接已打开的 IDA GUI 时,复用工作正常的上游 stdio proxy 注册。legacy 1.4.0 的示例: + +```json +{ + "mcpServers": { + "ida": { + "command": "python", + "args": ["/absolute/path/to/ida_pro_mcp/server.py", "--ida-rpc", "http://127.0.0.1:13337"] + } + } +} +``` + +legacy GUI 的 `/mcp` 是内部 RPC 接口,需要通过 stdio proxy,不能直接当作 Streamable HTTP URL。 + +也可以连接已安装的 REA MCP 服务,复用其 Hopper / Ghidra / IDA provider:配置 command 为 `npx`、args 为 `["rea-agents", "mcp"]`,按 [REA provider 文档](https://github.com/morluto/rea#choosing-a-deep-analysis-provider)配置分析引擎。Windows 上填写可直接执行的入口;npm 的 `.cmd` shim 可改为 `node` 加已安装包的入口路径。 + +## 边界和验证 + +目录是加载时的快照;上游工具变化后需重建 Profile。扩展处理 tools,不暴露 resources/prompts、sampling、elicitation 或 legacy HTTP+SSE,也不自动把服务 instructions 变成系统提示词。输入需为 JSON object,完整 schema 提供给调用方,上游负责业务参数校验。 + +取消结束本地等待并尽力发送 `notifications/cancelled`,不会自动重连或重放调用,也不证明上游任务已停止。卸载先撤销命令、取消并排空调用,再关闭连接。stdio 先关闭输入,200 毫秒后终止仍未退出的直接子进程。关闭 deadline 到达时保留清理任务并返回 `ErrCloseIncomplete`,允许重试 Close。HTTP 只释放客户端与协议会话;SDK 的 DELETE 为尽力释放,不验证服务器端已清理。 + +一个 Profile 的服务配置拥有一条连接,不同 Agent Session 共用它。扩展不隔离上游“当前数据库”,不自动打开、保存、关闭 IDA 数据库,不管理上游分离的 workers。cyber-re 应显式选择数据库句柄或使用独立 Profile,并显式释放自己创建的分析资源。 + +测试使用真实 Go stdio 子进程和 SDK Streamable HTTP 服务,验证 AI bash → CommandRegistry → MCP 的完整路径、复杂工具名、JSON 参数、管道和重定向、失败状态、准入 hooks、超时、卸载排空和加载回滚。原始协议测试覆盖完整 schema、大整数、混合内容与 metadata、分页和认证 headers。真实 IDA、Hopper、Ghidra 尚未验证。 diff --git a/examples/mcp/main.go b/examples/mcp/main.go new file mode 100644 index 000000000..9e1e105b9 --- /dev/null +++ b/examples/mcp/main.go @@ -0,0 +1,81 @@ +// A no-model MCP-to-CLI host, using the same command registry as AI bash. +package main + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "flag" + "fmt" + "io" + "os" + "os/signal" + "syscall" + "time" + + "github.com/chainreactors/cyber/core/extension" + "github.com/chainreactors/cyber/core/hooks" + coretool "github.com/chainreactors/cyber/core/tool" + mcpext "github.com/chainreactors/cyber/exts/mcp" +) + +func main() { + configPath := flag.String("config", "", "MCP JSON config file (mcpServers)") + flag.Parse() + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) + defer cancel() + if err := run(ctx, *configPath, flag.Args(), os.Stdout, os.Stderr); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func run(ctx context.Context, configPath string, argv []string, output, diagnostics io.Writer) (err error) { + if configPath == "" { + return fmt.Errorf("usage: go run ./examples/mcp -config mcp.json [mcp-ida tools | mcp-ida call --json '{...}']") + } + data, err := os.ReadFile(configPath) + if err != nil { + return err + } + var config mcpext.Config + decoder := json.NewDecoder(bytes.NewReader(data)) + decoder.DisallowUnknownFields() + if err := decoder.Decode(&config); err != nil { + return err + } + if err := decoder.Decode(new(any)); err != io.EOF { + return fmt.Errorf("MCP config must contain one JSON object") + } + if config.MCPServers == nil { + return fmt.Errorf("MCP config requires mcpServers") + } + r := coretool.NewCommandRegistry() + set, err := extension.New(extension.Provided[*hooks.Registry](hooks.New()), r, mcpext.New(config)) + if err != nil { + return err + } + defer func() { + closeCtx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + err = errors.Join(err, set.Close(closeCtx)) + }() + if err := set.Load(ctx); err != nil { + return err + } + if len(argv) == 0 { + _, err := io.WriteString(output, r.UsageDocs()) + return err + } + // Reject unregistered names rather than execute arbitrary PATH programs. + if !r.Has(argv[0]) { + return fmt.Errorf("unknown MCP command %q; available: %v", argv[0], r.Names()) + } + directory, err := os.Getwd() + if err != nil { + return err + } + _, err = r.Run(ctx, argv, &coretool.Execution{Dir: directory, Stdout: output, Stderr: diagnostics}) + return err +} diff --git a/examples/mcp/main_test.go b/examples/mcp/main_test.go new file mode 100644 index 000000000..4e7063d1a --- /dev/null +++ b/examples/mcp/main_test.go @@ -0,0 +1,37 @@ +package main + +import ( + "bytes" + "context" + "encoding/json" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" + + mcpsdk "github.com/mark3labs/mcp-go/mcp" + "github.com/mark3labs/mcp-go/server" +) + +func TestJSONConfiguredCLIListsAndCallsMCP(t *testing.T) { + s := server.NewMCPServer("example-test", "1", server.WithToolCapabilities(false)) + s.AddTool(mcpsdk.NewTool("echo", mcpsdk.WithString("value")), func(_ context.Context, request mcpsdk.CallToolRequest) (*mcpsdk.CallToolResult, error) { + return mcpsdk.NewToolResultText(request.GetString("value", "")), nil + }) + upstream := httptest.NewServer(server.NewStreamableHTTPServer(s)) + defer upstream.Close() + path := filepath.Join(t.TempDir(), "mcp.json") + data, _ := json.Marshal(map[string]any{"mcpServers": map[string]any{"test": map[string]any{"url": upstream.URL + "/mcp"}}}) + if err := os.WriteFile(path, data, 0600); err != nil { + t.Fatal(err) + } + var output bytes.Buffer + if err := run(context.Background(), path, nil, &output, &output); err != nil || !strings.Contains(output.String(), "mcp-test tools") { + t.Fatalf("list commands: %v, %s", err, &output) + } + output.Reset() + if err := run(context.Background(), path, []string{"mcp-test", "call", "echo", "--json", `{"value":"from-example"}`}, &output, &output); err != nil || !strings.Contains(output.String(), "from-example") || !json.Valid(bytes.TrimSpace(output.Bytes())) { + t.Fatalf("call: %v, %s", err, &output) + } +} diff --git a/exts/mcp/extension.go b/exts/mcp/extension.go new file mode 100644 index 000000000..a58d3097a --- /dev/null +++ b/exts/mcp/extension.go @@ -0,0 +1,99 @@ +// Package mcp exposes external MCP servers as native commands through bash. +package mcp + +import ( + "context" + "errors" + "fmt" + "sort" + "sync" + + "github.com/chainreactors/cyber/core/extension" + coretool "github.com/chainreactors/cyber/core/tool" + mcptools "github.com/chainreactors/cyber/tools/mcp" +) + +type Config struct { + MCPServers map[string]mcptools.ServerConfig `json:"mcpServers"` +} + +type Extension struct { + mu sync.Mutex + config Config + connections []*mcptools.Connection + loaded bool + closed bool +} + +func New(config Config) *Extension { + copy := Config{MCPServers: make(map[string]mcptools.ServerConfig, len(config.MCPServers))} + for name, server := range config.MCPServers { + copy.MCPServers[name] = server.Clone() + } + return &Extension{config: copy} +} + +func (e *Extension) Load(scope *extension.Scope) error { + e.mu.Lock() + defer e.mu.Unlock() + if e.loaded || e.closed { + return fmt.Errorf("MCP extension already loaded or closed") + } + e.loaded = true + names := make([]string, 0, len(e.config.MCPServers)) + for name := range e.config.MCPServers { + names = append(names, name) + } + sort.Strings(names) + // Validate the whole configuration before starting any server. + for _, name := range names { + if err := e.config.MCPServers[name].Validate(name); err != nil { + return err + } + } + var commands []coretool.Command + for _, name := range names { + connection, err := mcptools.New(name, e.config.MCPServers[name]) + if err != nil { + return err + } + // Retain ownership before starting: rollback includes partial Start. + e.connections = append(e.connections, connection) + if err := connection.Start(scope.Init(), scope.Lifetime()); err != nil { + return err + } + discovered, err := connection.Discover(scope.Init()) + if err != nil { + return err + } + commands = append(commands, discovered.Command()) + } + if len(commands) == 0 { + return nil + } + // One atomic contribution; a failed load never exposes half a catalog. + return extension.Add[coretool.Command](scope, commands...) +} + +func (e *Extension) Close(ctx context.Context) error { + e.mu.Lock() + defer e.mu.Unlock() + if e.closed { + return nil + } + var errs []error + for len(e.connections) > 0 { + index := len(e.connections) - 1 + if err := e.connections[index].Close(ctx); err != nil { + errs = append(errs, err) + if errors.Is(err, extension.ErrCloseIncomplete) { + return errors.Join(errs...) + } + } + e.connections = e.connections[:index] + } + e.closed = true + return errors.Join(errs...) +} + +var _ extension.Extension = (*Extension)(nil) diff --git a/exts/mcp/extension_test.go b/exts/mcp/extension_test.go new file mode 100644 index 000000000..cc5636f25 --- /dev/null +++ b/exts/mcp/extension_test.go @@ -0,0 +1,306 @@ +package mcp + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "fmt" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "sync/atomic" + "testing" + "time" + + "github.com/chainreactors/cyber/core/egress" + "github.com/chainreactors/cyber/core/extension" + "github.com/chainreactors/cyber/core/hooks" + "github.com/chainreactors/cyber/core/operation" + coretool "github.com/chainreactors/cyber/core/tool" + toolhooks "github.com/chainreactors/cyber/core/tool/hooks" + terminalext "github.com/chainreactors/cyber/exts/terminal" + mcptools "github.com/chainreactors/cyber/tools/mcp" + terminaltool "github.com/chainreactors/cyber/tools/terminal" + mcpsdk "github.com/mark3labs/mcp-go/mcp" + "github.com/mark3labs/mcp-go/server" +) + +func testServer(calls *atomic.Int32) *server.MCPServer { + s := server.NewMCPServer("extension-test", "1", server.WithToolCapabilities(false)) + s.AddTool(mcpsdk.NewTool("echo", mcpsdk.WithString("message")), func(_ context.Context, request mcpsdk.CallToolRequest) (*mcpsdk.CallToolResult, error) { + calls.Add(1) + cwd, _ := os.Getwd() + return mcpsdk.NewToolResultText(fmt.Sprintf("%s|%s|%s", request.GetString("message", ""), cwd, os.Getenv("CYBER_MCP_VALUE"))), nil + }) + s.AddTool(mcpsdk.NewTool("tool.with.dots/"+strings.Repeat("a", 80), mcpsdk.WithObject("nested")), func(_ context.Context, request mcpsdk.CallToolRequest) (*mcpsdk.CallToolResult, error) { + calls.Add(1) + data, _ := json.Marshal(request.GetArguments()) + return mcpsdk.NewToolResultText(string(data)), nil + }) + s.AddTool(mcpsdk.NewTool("fail"), func(context.Context, mcpsdk.CallToolRequest) (*mcpsdk.CallToolResult, error) { + calls.Add(1) + return mcpsdk.NewToolResultError("partial failure"), nil + }) + s.AddTool(mcpsdk.NewTool("wait"), func(ctx context.Context, _ mcpsdk.CallToolRequest) (*mcpsdk.CallToolResult, error) { + if marker := os.Getenv("CYBER_MCP_MARKER"); marker != "" { + _ = os.WriteFile(marker, []byte("started"), 0600) + } + select { + case <-ctx.Done(): + return nil, ctx.Err() + case <-time.After(time.Minute): + return mcpsdk.NewToolResultText("finished"), nil + } + }) + return s +} + +// A real MCP child process with no external interpreter/engine dependency. +func TestMCPHelper(t *testing.T) { + if os.Getenv("CYBER_MCP_HELPER") != "1" { + return + } + if os.Getenv("CYBER_MCP_STALL") == "1" { + time.Sleep(time.Minute) + os.Exit(0) + } + _, _ = fmt.Fprint(os.Stderr, strings.Repeat("diagnostic\n", 20000)) + err := server.NewStdioServer(testServer(new(atomic.Int32))).Listen(context.Background(), os.Stdin, os.Stdout) + if err != nil { + os.Exit(1) + } + os.Exit(0) +} + +type testHost struct { + commands *coretool.CommandRegistry + tools *coretool.ToolRegistry + hooks *hooks.Registry + set *extension.Set + bash *terminaltool.BashTool + dir string +} + +func assembly(t *testing.T, config Config) *testHost { + t.Helper() + h := &testHost{commands: coretool.NewCommandRegistry(), tools: coretool.NewToolRegistry(), hooks: hooks.New(), dir: t.TempDir()} + set, err := extension.New( + extension.Provided[*hooks.Registry](h.hooks), extension.Provided[egress.Endpoint](egress.Disabled()), h.commands, h.tools, + terminalext.New(terminalext.Config{Directory: h.dir, Timeout: 10}), New(config), + extension.Func{LoadFunc: func(scope *extension.Scope) error { + var err error + h.bash, err = extension.Use[*terminaltool.BashTool](scope) + return err + }}, + ) + if err != nil { + t.Fatal(err) + } + h.set = set + t.Cleanup(func() { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + if err := set.Close(ctx); err != nil { + t.Error(err) + } + }) + return h +} + +func helperConfig(t *testing.T, directory string) mcptools.ServerConfig { + t.Helper() + executable, err := os.Executable() + if err != nil { + t.Fatal(err) + } + return mcptools.ServerConfig{Command: executable, Args: []string{"-test.run=^TestMCPHelper$"}, Cwd: directory, + Env: map[string]string{"CYBER_MCP_HELPER": "1", "CYBER_MCP_VALUE": "chosen-value"}} +} + +func (h *testHost) command(ctx context.Context, name string, args ...string) (string, error) { + var output bytes.Buffer + _, err := h.commands.Execute(ctx, name, &coretool.Execution{Args: args, Dir: h.dir, Stdout: &output}) + return output.String(), err +} + +func TestStdioBashWorkflowAndLifetime(t *testing.T) { + directory := t.TempDir() + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{"ida": helperConfig(t, directory)}}) + init, cancel := context.WithCancel(context.Background()) + if err := h.set.Load(init); err != nil { + t.Fatal(err) + } + cancel() // The child must survive cancellation of the short load context. + definitions := h.tools.ToolDefinitions() + if len(definitions) != 1 || definitions[0].Name != "bash" || !strings.Contains(h.commands.UsageDocs(), "mcp-ida tools") { + t.Fatal("MCP should be discoverable as CLI through bash") + } + arguments := `{"command":"mcp-ida call echo --json '{\"message\":\"hello\"}'"}` + result, err := h.tools.ExecuteTool(context.Background(), "bash", arguments) + if err != nil || result.IsError || !strings.Contains(coretool.ResultText(result), "hello|") || !strings.Contains(coretool.ResultText(result), "chosen-value") { + t.Fatalf("stdio call through AI bash boundary: %v %v", result, err) + } + output, err := h.command(context.Background(), "mcp-ida", "tools") + if err != nil || !strings.Contains(output, "echo") { + t.Fatalf("catalog: %s %v", output, err) + } + if err := h.set.Close(context.Background()); err != nil { + t.Fatal(err) + } + if h.commands.Has("mcp-ida") { + t.Fatal("command remained visible after unload") + } +} + +func TestStdioUnloadCancelsInFlightCall(t *testing.T) { + directory := t.TempDir() + marker := filepath.Join(directory, "started") + config := helperConfig(t, directory) + config.Env["CYBER_MCP_MARKER"] = marker + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{"ida": config}}) + if err := h.set.Load(context.Background()); err != nil { + t.Fatal(err) + } + finished := make(chan error, 1) + go func() { _, err := h.command(context.Background(), "mcp-ida", "call", "wait"); finished <- err }() + deadline := time.Now().Add(5 * time.Second) + for { + if _, err := os.Stat(marker); err == nil { + break + } + if time.Now().After(deadline) { + t.Fatal("helper tool did not start") + } + time.Sleep(10 * time.Millisecond) + } + closeCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + if err := h.set.Close(closeCtx); err != nil { + t.Fatal(err) + } + select { + case err := <-finished: + if !errors.Is(err, context.Canceled) { + t.Fatalf("in-flight command should be canceled: %v", err) + } + case <-time.After(time.Second): + t.Fatal("registry failed to drain in-flight command") + } +} + +func TestHTTPBashCompositionAndAdmission(t *testing.T) { + var calls atomic.Int32 + upstream := httptest.NewServer(server.NewStreamableHTTPServer(testServer(&calls))) + defer upstream.Close() + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{"http": {URL: upstream.URL + "/mcp"}}}) + if err := h.set.Load(context.Background()); err != nil { + t.Fatal(err) + } + // Native CLI participates in variable expansion, pipelines and redirects. + script := `message='two words'; mcp-http call echo --json "{\"message\":\"$message\"}" | { read -r result; printf '%s\n' "$result"; } > result.json` + var output bytes.Buffer + execution, err := h.bash.RunForeground(context.Background(), script, terminaltool.BashExecOptions{Stdout: &output}) + if err != nil { + t.Fatal(err) + } + info, _ := execution.Session() + declaration, err := os.ReadFile(filepath.Join(h.dir, "result.json")) + if err != nil || info.ExitStatus() != 0 || !strings.Contains(string(declaration), "two words|") || !json.Valid(bytes.TrimSpace(declaration)) || calls.Load() != 1 { + t.Fatalf("composed CLI: %s %v status=%d calls=%d", declaration, err, info.ExitStatus(), calls.Load()) + } + name := "tool.with.dots/" + strings.Repeat("a", 80) + if err := os.WriteFile(filepath.Join(h.dir, "args.json"), []byte(`{"nested":{"array":[true,"hello",{"value":null}]}}`), 0600); err != nil { + t.Fatal(err) + } + text, err := h.command(context.Background(), "mcp-http", "call", name, "--file", "args.json") + if err != nil || !strings.Contains(text, "hello") { + t.Fatalf("arbitrary tool name and nested arguments: %s %v", text, err) + } + // Tool failures retain stdout and fail the shell command. + result, err := h.bash.RunForegroundTool(context.Background(), "mcp-http call fail > failure.json", terminaltool.BashExecOptions{}) + failure, readErr := os.ReadFile(filepath.Join(h.dir, "failure.json")) + if err != nil || !result.IsError || readErr != nil || !strings.Contains(string(failure), `"isError":true`) { + t.Fatalf("failure lost stdout or exit status: %v %v %s %v", result, err, failure, readErr) + } + result, err = h.bash.RunForegroundTool(context.Background(), "mcp-http call fail > failure.json 2> diagnostics.txt || printf recovered", terminaltool.BashExecOptions{}) + if err != nil || result.IsError || !strings.Contains(coretool.ResultText(result), "recovered") { + t.Fatalf("shell recovery failed: %v %v", result, err) + } + before := calls.Load() + denial := toolhooks.BeforeCommand.On(h.hooks, "deny-mcp", func(_ context.Context, event toolhooks.CommandEvent) (toolhooks.Admission, error) { + if event.Name == "mcp-http" && len(event.Args) > 0 && event.Args[0] == "call" { + return toolhooks.Admission{Deny: errors.New("denied by test")}, nil + } + return toolhooks.Admission{}, nil + }) + defer denial.Cancel() + if _, err := h.command(context.Background(), "mcp-http", "call", "echo"); !errors.Is(err, operation.ErrDenied) || calls.Load() != before { + t.Fatalf("admission bypassed: %v calls=%d", err, calls.Load()) + } +} + +func TestStdioInitializationTimeoutRollsBackOwnedProcess(t *testing.T) { + config := helperConfig(t, t.TempDir()) + config.Env["CYBER_MCP_STALL"] = "1" + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{"stall": config}}) + ctx, cancel := context.WithTimeout(context.Background(), 150*time.Millisecond) + defer cancel() + if err := h.set.Load(ctx); !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("initialization deadline lost: %v", err) + } + if h.commands.Has("mcp-stall") { + t.Fatal("failed initialization exposed a command") + } + if err := h.set.Close(context.Background()); err != nil { + t.Fatalf("owned process cleanup did not finish: %v", err) + } +} + +func TestHTTPRollbackAndAllowlist(t *testing.T) { + var deletes atomic.Int32 + mcpHTTP := server.NewStreamableHTTPServer(testServer(new(atomic.Int32))) + upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodDelete { + deletes.Add(1) + } + mcpHTTP.ServeHTTP(w, r) + })) + defer upstream.Close() + t.Run("rollback", func(t *testing.T) { + before := deletes.Load() + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{ + "a": {URL: upstream.URL + "/mcp"}, "z": {URL: upstream.URL + "/mcp", Tools: []string{"absent"}}, + }}) + if err := h.set.Load(context.Background()); err == nil { + t.Fatal("missing allowlisted tool did not fail load") + } + if len(h.commands.Names()) != 0 || deletes.Load()-before != 2 { + t.Fatalf("partial load not rolled back: commands=%v deleted=%d", h.commands.Names(), deletes.Load()-before) + } + }) + for _, test := range []struct { + name string + tools []string + count int + }{ + {"allowlist", []string{"echo"}, 1}, {"empty", []string{}, 0}, + } { + t.Run(test.name, func(t *testing.T) { + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{"filtered": {URL: upstream.URL + "/mcp", Tools: test.tools}}}) + if err := h.set.Load(context.Background()); err != nil { + t.Fatal(err) + } + output, err := h.command(context.Background(), "mcp-filtered", "tools") + var summaries []any + if err != nil || json.Unmarshal([]byte(output), &summaries) != nil || len(summaries) != test.count { + t.Fatalf("allowlist semantics: %s %v", output, err) + } + if _, err := h.command(context.Background(), "mcp-filtered", "call", "fail"); err == nil { + t.Fatal("excluded tool was callable") + } + }) + } +} diff --git a/go.mod b/go.mod index 58ad60656..53549e5e5 100644 --- a/go.mod +++ b/go.mod @@ -42,6 +42,7 @@ require ( github.com/gorilla/websocket v1.5.3 github.com/invopop/jsonschema v0.14.0 github.com/jessevdk/go-flags v1.6.1 + github.com/mark3labs/mcp-go v0.45.0 github.com/mattn/go-runewidth v0.0.30 github.com/muesli/termenv v0.16.0 github.com/projectdiscovery/goflags v0.2.1 @@ -234,7 +235,6 @@ require ( github.com/lucasb-eyer/go-colorful v1.4.0 // indirect github.com/lukasbob/srcset v0.0.0-20190730101422-86b742e617f3 // indirect github.com/lunixbochs/struc v0.0.0-20241101090106-8d528fa2c543 // indirect - github.com/mark3labs/mcp-go v0.45.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.24 // indirect github.com/mattn/go-localereader v0.0.1 // indirect diff --git a/pkg/internal/architecture/architecture_test.go b/pkg/internal/architecture/architecture_test.go index 490367989..cc4cac814 100644 --- a/pkg/internal/architecture/architecture_test.go +++ b/pkg/internal/architecture/architecture_test.go @@ -145,6 +145,7 @@ var installationRules = map[string][]installationRule{ {"exts/tmux", []string{"NewTmuxCommand"}}, }, "tools/files": {{"exts/files", []string{"New", "Resource"}}}, + "tools/mcp": {{"exts/mcp", []string{"New"}}}, "tools/proxy": {{"exts/proxy", []string{"New*", "Resource", "TrafficNamespace"}}}, "tools/arsenal": {{"exts/arsenal", []string{"New*"}}}, "tools/playwright": {{"exts/browser", []string{"New"}}}, diff --git a/tools/mcp/catalog.go b/tools/mcp/catalog.go new file mode 100644 index 000000000..26da1fb1a --- /dev/null +++ b/tools/mcp/catalog.go @@ -0,0 +1,131 @@ +package mcp + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "time" +) + +// Catalog is an immutable initial snapshot of the allowlisted upstream tools. +// Tool names and their complete declarations remain upstream-owned values. +type Catalog struct { + connection *Connection + tools []declaration + byName map[string]int +} + +// Discover follows all pages before filtering. No business tool is called. +// Raw declarations avoid the SDK's typed schema dropping unknown keywords. +func (c *Connection) Discover(ctx context.Context) (*Catalog, error) { + ctx, cancel := context.WithTimeout(ctx, timeout(c.config.StartupTimeoutSeconds, 30*time.Second)) + defer cancel() + var tools []declaration + seenTools, seenCursors := map[string]bool{}, map[string]bool{} + cursor := "" + for { + params := map[string]string{} + if cursor != "" { + params["cursor"] = cursor + } + raw, err := c.request(ctx, "tools/list", params) + if err != nil { + return nil, err + } + var page struct { + Tools []json.RawMessage `json:"tools"` + NextCursor string `json:"nextCursor"` + } + if !isObject(raw) || json.Unmarshal(raw, &page) != nil || page.Tools == nil { + return nil, fmt.Errorf("MCP server %s: invalid tools/list result", c.name) + } + for _, rawTool := range page.Tools { + var d declaration + if !isObject(rawTool) || json.Unmarshal(rawTool, &d) != nil || d.Name == "" || !isObject(d.InputSchema) { + return nil, fmt.Errorf("MCP server %s: invalid tool declaration", c.name) + } + if seenTools[d.Name] { + return nil, fmt.Errorf("MCP server %s: duplicate upstream tool %q", c.name, d.Name) + } + seenTools[d.Name] = true + d.raw = bytes.Clone(rawTool) + tools = append(tools, d) + } + if page.NextCursor == "" { + break + } + if seenCursors[page.NextCursor] { + return nil, fmt.Errorf("MCP server %s: repeated tools/list cursor", c.name) + } + seenCursors[page.NextCursor] = true + cursor = page.NextCursor + } + allowed := map[string]bool{} + for _, name := range c.config.Tools { + if !seenTools[name] { + return nil, fmt.Errorf("MCP server %s: allowlisted tool %q was not discovered", c.name, name) + } + allowed[name] = true + } + catalog := &Catalog{connection: c, byName: make(map[string]int)} + for _, d := range tools { + if c.config.Tools != nil && !allowed[d.Name] { + continue + } + catalog.byName[d.Name] = len(catalog.tools) + catalog.tools = append(catalog.tools, d) + } + return catalog, nil +} + +type declaration struct { + Name string `json:"name"` + Description string `json:"description"` + InputSchema json.RawMessage `json:"inputSchema"` + raw json.RawMessage +} + +func (c *Catalog) lookup(name string) (declaration, error) { + index, ok := c.byName[name] + if !ok { + return declaration{}, fmt.Errorf("MCP server %s: unknown or excluded tool %q; run mcp-%s tools", c.connection.name, name, c.connection.name) + } + return c.tools[index], nil +} + +// Call preserves JSON numbers and all content/metadata in the returned result. +// Only tools in this catalog may be invoked, including through CLI JSON input. +func (c *Catalog) Call(ctx context.Context, name string, arguments json.RawMessage) (json.RawMessage, error) { + if _, err := c.lookup(name); err != nil { + return nil, err + } + if !isObject(arguments) { + return nil, fmt.Errorf("MCP tool arguments must be a JSON object") + } + ctx, cancel := context.WithTimeout(ctx, timeout(c.connection.config.TimeoutSeconds, 300*time.Second)) + defer cancel() + raw, err := c.connection.request(ctx, "tools/call", struct { + Name string `json:"name"` + Arguments json.RawMessage `json:"arguments"` + }{name, arguments}) + if err != nil { + return nil, err + } + var result struct { + Content []json.RawMessage `json:"content"` + IsError bool `json:"isError"` + } + if !isObject(raw) || json.Unmarshal(raw, &result) != nil || result.Content == nil { + return raw, fmt.Errorf("MCP server %s: invalid tools/call result; raw response written to stdout", c.connection.name) + } + if result.IsError { + return raw, fmt.Errorf("MCP server %s: tool %q reported isError; see result on stdout", c.connection.name, name) + } + return raw, nil +} + +func isObject(raw []byte) bool { + raw = bytes.TrimSpace(raw) + return len(raw) > 0 && raw[0] == '{' && json.Valid(raw) +} diff --git a/tools/mcp/command.go b/tools/mcp/command.go new file mode 100644 index 000000000..4d80d2615 --- /dev/null +++ b/tools/mcp/command.go @@ -0,0 +1,146 @@ +package mcp + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "io" + "os" + "path/filepath" + "strings" + + coretool "github.com/chainreactors/cyber/core/tool" +) + +// Command automatically exposes this server's catalog as one native CLI. +// Keeping upstream names as argv values avoids renaming/collision/loss and +// does not inflate the model's function-tool list for large MCP catalogs. +func (c *Catalog) Command() coretool.Command { + name := "mcp-" + c.connection.name + usage := fmt.Sprintf(`%s — %d MCP tools + +Usage: + %s tools list tool names and descriptions (JSON) + %s schema show the complete upstream declaration + %s call [--json ''] call a tool; defaults to {} + %s call --file read arguments from a JSON file + %s --help show this help + +Results are complete MCP JSON on stdout. Tool isError and protocol failures +fail the command. Use single quotes around inline JSON in bash. Relative +argument files resolve against the caller's working directory. +`, name, len(c.tools), name, name, name, name, name) + return coretool.Command{ + Name: name, Usage: usage, + QuickReference: fmt.Sprintf("- %s: %d MCP tools; discover with `%s tools`, inspect `%s schema `, invoke `%s call --json ''`.", name, len(c.tools), name, name, name), + Run: func(ctx context.Context, execution *coretool.Execution) (any, error) { + return nil, c.run(ctx, execution, usage) + }, + } +} + +func (c *Catalog) run(ctx context.Context, execution *coretool.Execution, usage string) error { + if err := ctx.Err(); err != nil { + return err + } + args := execution.Args + output := execution.Stdout + if output == nil { + output = io.Discard + } + if len(args) == 0 || len(args) == 1 && (args[0] == "--help" || args[0] == "help" || args[0] == "-h") { + _, err := io.WriteString(output, usage) + return err + } + switch args[0] { + case "tools": + if len(args) != 1 { + return fmt.Errorf("usage: mcp-%s tools", c.connection.name) + } + // Progressive discovery: schemas stay behind the schema subcommand. + type summary struct { + Name string `json:"name"` + Description string `json:"description,omitempty"` + } + tools := make([]summary, 0, len(c.tools)) + for _, d := range c.tools { + tools = append(tools, summary{d.Name, d.Description}) + } + return json.NewEncoder(output).Encode(tools) + case "schema": + if len(args) != 2 { + return fmt.Errorf("usage: mcp-%s schema ", c.connection.name) + } + d, err := c.lookup(args[1]) + if err != nil { + return err + } + return writeJSON(output, d.raw) + case "call": + if len(args) < 2 { + return fmt.Errorf("usage: mcp-%s call [--json '' | --file ]", c.connection.name) + } + if _, err := c.lookup(args[1]); err != nil { + return err + } + if len(args) == 3 && args[2] == "--help" { + d, _ := c.lookup(args[1]) + return writeJSON(output, d.raw) + } + arguments, err := callArguments(ctx, args[2:], execution.Dir) + if err != nil { + return err + } + raw, callErr := c.Call(ctx, args[1], arguments) + if len(raw) != 0 { + callErr = errors.Join(callErr, writeJSON(output, raw)) + } + return callErr + default: + return fmt.Errorf("unknown MCP subcommand %q; run mcp-%s --help", args[0], c.connection.name) + } +} + +func callArguments(ctx context.Context, args []string, directory string) (json.RawMessage, error) { + if err := ctx.Err(); err != nil { + return nil, err + } + if len(args) == 0 { + return json.RawMessage(`{}`), nil + } + if len(args) != 2 || (args[0] != "--json" && args[0] != "--file") { + return nil, fmt.Errorf("expected exactly one --json '' or --file ; quote JSON as one shell argument") + } + if args[0] == "--json" { + return json.RawMessage(args[1]), nil + } + path := args[1] + if strings.TrimSpace(path) == "" { + return nil, fmt.Errorf("--file requires a path") + } + if !filepath.IsAbs(path) { + path = filepath.Join(directory, path) + } + file, err := os.Open(path) + if err != nil { + return nil, err + } + defer file.Close() + // The adapter owns this file, so cancellation can interrupt its read. + stop := context.AfterFunc(ctx, func() { _ = file.Close() }) + defer stop() + data, err := io.ReadAll(file) + if ctx.Err() != nil { + return nil, ctx.Err() + } + return data, err +} + +func writeJSON(output io.Writer, raw json.RawMessage) error { + if _, err := output.Write(raw); err != nil { + return err + } + _, err := io.WriteString(output, "\n") + return err +} diff --git a/tools/mcp/config.go b/tools/mcp/config.go new file mode 100644 index 000000000..00c052c9e --- /dev/null +++ b/tools/mcp/config.go @@ -0,0 +1,88 @@ +// Package mcp adapts external MCP catalogs to harness native CLI commands. +package mcp + +import ( + "fmt" + "maps" + "math" + "net/url" + "regexp" + "slices" + "strings" + "time" +) + +// ServerConfig selects exactly one transport. Engines and MCP servers are +// installed separately; Command is an executable, never a shell expression. +type ServerConfig struct { + Command string `json:"command,omitempty"` + Args []string `json:"args,omitempty"` + Env map[string]string `json:"env,omitempty"` + Cwd string `json:"cwd,omitempty"` + URL string `json:"url,omitempty"` + Headers map[string]string `json:"headers,omitempty"` + // Omitted tools mounts everything; an explicit empty array mounts nothing. + Tools []string `json:"tools"` + StartupTimeoutSeconds int64 `json:"startupTimeoutSeconds,omitempty"` + TimeoutSeconds int64 `json:"timeoutSeconds,omitempty"` +} + +func (c ServerConfig) Clone() ServerConfig { + c.Args = slices.Clone(c.Args) + c.Env = maps.Clone(c.Env) + c.Headers = maps.Clone(c.Headers) + c.Tools = slices.Clone(c.Tools) + return c +} + +var compatibleName = regexp.MustCompile(`^[a-zA-Z0-9_-]+$`) + +func (c ServerConfig) Validate(name string) error { + if !compatibleName.MatchString(name) { + return fmt.Errorf("MCP server alias must use letters, digits, '-' or '_'") + } + if (c.Command == "") == (c.URL == "") { + return fmt.Errorf("MCP server %s requires exactly one of command or url", name) + } + if c.Command != "" { + if len(c.Headers) != 0 { + return fmt.Errorf("MCP server %s: headers requires url", name) + } + for key, value := range c.Env { + if key == "" || strings.ContainsAny(key, "=\x00") || strings.ContainsRune(value, 0) { + return fmt.Errorf("MCP server %s: invalid environment entry", name) + } + } + } else { + if len(c.Args) != 0 || len(c.Env) != 0 || c.Cwd != "" { + return fmt.Errorf("MCP server %s: args, env and cwd require command", name) + } + u, err := url.Parse(c.URL) + if err != nil || u.Host == "" || (u.Scheme != "http" && u.Scheme != "https") || u.User != nil || u.Fragment != "" { + return fmt.Errorf("MCP server %s requires an absolute HTTP(S) URL without userinfo or fragment; use headers for authentication", name) + } + } + for _, seconds := range []int64{c.StartupTimeoutSeconds, c.TimeoutSeconds} { + if seconds < 0 || seconds > math.MaxInt64/int64(time.Second) { + return fmt.Errorf("MCP server %s: timeout seconds is out of range", name) + } + } + seen := make(map[string]bool) + for _, tool := range c.Tools { + if tool == "" { + return fmt.Errorf("MCP server %s: empty tool in allowlist", name) + } + if seen[tool] { + return fmt.Errorf("MCP server %s: repeated tool in allowlist: %s", name, tool) + } + seen[tool] = true + } + return nil +} + +func timeout(seconds int64, fallback time.Duration) time.Duration { + if seconds == 0 { + return fallback + } + return time.Duration(seconds) * time.Second +} diff --git a/tools/mcp/connection.go b/tools/mcp/connection.go new file mode 100644 index 000000000..0bc9a1319 --- /dev/null +++ b/tools/mcp/connection.go @@ -0,0 +1,308 @@ +package mcp + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "io" + "net" + "net/http" + "os" + "os/exec" + "sort" + "strings" + "sync" + "sync/atomic" + "time" + + "github.com/chainreactors/cyber/core/resource" + "github.com/mark3labs/mcp-go/client" + "github.com/mark3labs/mcp-go/client/transport" + mcpsdk "github.com/mark3labs/mcp-go/mcp" +) + +// Connection owns a client and, for stdio, its direct child process. It does +// not own an HTTP server or any engine/database managed by the remote server. +type Connection struct { + name string + config ServerConfig + client *client.Client + http *http.Transport + killed atomic.Bool + nextID atomic.Uint64 + + mu sync.Mutex + cancel context.CancelFunc + started bool + closing bool + work sync.WaitGroup + done chan struct{} + closeErr error +} + +// New constructs a dormant connection; Start performs all external I/O. +func New(name string, config ServerConfig) (*Connection, error) { + if err := config.Validate(name); err != nil { + return nil, err + } + return &Connection{name: name, config: config.Clone()}, nil +} + +func (c *Connection) Start(init, lifetime context.Context) error { + c.mu.Lock() + defer c.mu.Unlock() + if c.started || c.closing { + return fmt.Errorf("MCP server %s: connection already started or closed", c.name) + } + if err := init.Err(); err != nil { + return err + } + c.started = true + // Scope revokes and drains commands before Close. Keep transport shutdown + // under this owner's control so stdio can first exit on EOF; binding the + // child directly to scope cancellation races process exit on Windows. + life, cancel := context.WithCancel(context.WithoutCancel(lifetime)) + c.cancel = cancel + if c.config.Command != "" { + stdio := transport.NewStdioWithOptions(c.config.Command, nil, c.config.Args, + transport.WithCommandLogger(quietLogger{}), + transport.WithCommandFunc(func(ctx context.Context, command string, _ []string, args []string) (*exec.Cmd, error) { + cmd := exec.CommandContext(ctx, command, args...) + cmd.Dir = c.config.Cwd + cmd.Env = os.Environ() + keys := make([]string, 0, len(c.config.Env)) + for key := range c.config.Env { + keys = append(keys, key) + } + sort.Strings(keys) + for _, key := range keys { + cmd.Env = append(cmd.Env, key+"="+c.config.Env[key]) + } + cmd.Cancel = func() error { + err := cmd.Process.Kill() + if err == nil { + c.killed.Store(true) + } + return err + } + cmd.WaitDelay = 2 * time.Second + return cmd, nil + })) + c.client = client.NewClient(stdio) + } else { + // Own a transport rather than assuming an embedding application's + // mutable http.DefaultTransport has the standard concrete type. + c.http = &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{Timeout: 30 * time.Second, KeepAlive: 30 * time.Second}).DialContext, + ForceAttemptHTTP2: true, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: time.Second, + } + httpClient := &http.Client{ + // The wrapper also authenticates the SDK's session DELETE request. + Transport: headerTransport{base: c.http, headers: c.config.Headers}, + CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }, + } + var err error + c.client, err = client.NewStreamableHttpClient(c.config.URL, + transport.WithHTTPBasicClient(httpClient), transport.WithHTTPLogger(quietLogger{})) + if err != nil { + return c.diagnostic(err) + } + } + if err := c.client.Start(life); err != nil { + return c.diagnostic(err) + } + if stdio, ok := c.client.GetTransport().(*transport.Stdio); ok && stdio.Stderr() != nil { + // Never leave a full stderr pipe blocking the protocol process. The + // upstream application owns diagnostics; we do not persist its output. + c.work.Add(1) + go func() { defer c.work.Done(); _, _ = io.Copy(io.Discard, stdio.Stderr()) }() + } + ctx, stop := context.WithTimeout(init, timeout(c.config.StartupTimeoutSeconds, 30*time.Second)) + defer stop() + // Track SDK work even if a stdio write outlives the request deadline. + finished := make(chan error, 1) + c.work.Add(1) + go func() { + defer c.work.Done() + _, err := c.client.Initialize(ctx, mcpsdk.InitializeRequest{Params: mcpsdk.InitializeParams{ + ProtocolVersion: mcpsdk.LATEST_PROTOCOL_VERSION, + ClientInfo: mcpsdk.Implementation{Name: "cyber-harness", Version: "mcp-ext"}, + }}) + finished <- err + }() + select { + case err := <-finished: + return c.diagnostic(err) + case <-ctx.Done(): + return ctx.Err() + } +} + +func (c *Connection) request(ctx context.Context, method string, params any) (json.RawMessage, error) { + id := mcpsdk.NewRequestId(fmt.Sprintf("cyber-mcp-%d", c.nextID.Add(1))) + finished := make(chan requestResult, 1) + if !c.launch(func() { + response, err := c.client.GetTransport().SendRequest(ctx, transport.JSONRPCRequest{ + JSONRPC: mcpsdk.JSONRPC_VERSION, ID: id, Method: method, Params: params, + }) + finished <- requestResult{response, err} + }) { + return nil, fmt.Errorf("MCP server %s: connection unavailable", c.name) + } + select { + case result := <-finished: + if result.err != nil { + if ctx.Err() != nil { + c.notifyCancelled(id) + } + return nil, c.diagnostic(result.err) + } + if result.response == nil { + return nil, fmt.Errorf("MCP server %s: empty RPC response", c.name) + } + if result.response.ID.String() != id.String() { + return nil, fmt.Errorf("MCP server %s: mismatched RPC response ID", c.name) + } + if result.response.Error != nil { + return nil, c.diagnostic(&RPCError{Details: *result.response.Error}) + } + return result.response.Result, nil + case <-ctx.Done(): + c.notifyCancelled(id) + return nil, ctx.Err() + } +} + +type requestResult struct { + response *transport.JSONRPCResponse + err error +} + +func (c *Connection) launch(run func()) bool { + c.mu.Lock() + defer c.mu.Unlock() + if !c.started || c.closing || c.client == nil { + return false + } + c.work.Add(1) + go func() { defer c.work.Done(); run() }() + return true +} + +const cancellationMethod = "notifications/cancelled" //nolint:misspell // MCP specifies this wire method spelling. + +func (c *Connection) notifyCancelled(id mcpsdk.RequestId) { + c.launch(func() { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + _ = c.client.GetTransport().SendNotification(ctx, mcpsdk.JSONRPCNotification{ + JSONRPC: mcpsdk.JSONRPC_VERSION, + Notification: mcpsdk.Notification{Method: cancellationMethod, Params: mcpsdk.NotificationParams{ + AdditionalFields: map[string]any{"requestId": id, "reason": "caller canceled or timed out"}, + }}, + }) + }) +} + +// Close retains its asynchronous cleanup attempt for deadline-bound retries. +func (c *Connection) Close(ctx context.Context) error { + c.mu.Lock() + if c.done == nil { + c.closing = true + c.done = make(chan struct{}) + go func() { + var err error + if c.client != nil { + finished := make(chan error, 1) + go func() { finished <- c.client.Close() }() + // EOF is the first shutdown signal. Terminate an uncooperative + // direct child after the grace period, without touching servers + // started independently of this connection. + select { + case err = <-finished: + case <-time.After(200 * time.Millisecond): + if c.cancel != nil { + c.cancel() + } + err = <-finished + } + } + if c.cancel != nil { + c.cancel() + } + c.work.Wait() + if c.http != nil { + c.http.CloseIdleConnections() + } + var exit *exec.ExitError + if c.killed.Load() && errors.As(err, &exit) { + err = nil // Expected exit of the direct child we just terminated. + } + c.closeErr = c.diagnostic(err) + close(c.done) + }() + } + done := c.done + c.mu.Unlock() + select { + case <-done: + return c.closeErr + default: + } + select { + case <-done: + return c.closeErr + case <-ctx.Done(): + return errors.Join(resource.ErrCloseIncomplete, ctx.Err()) + } +} + +// RPCError preserves the SDK's protocol error code and data for callers. +type RPCError struct{ Details mcpsdk.JSONRPCErrorDetails } + +func (e *RPCError) Error() string { + data, _ := json.Marshal(e.Details.Data) + return fmt.Sprintf("MCP RPC error %d: %s (data: %s)", e.Details.Code, e.Details.Message, data) +} + +type diagnosticError struct { + message string + cause error +} + +func (e diagnosticError) Error() string { return e.message } +func (e diagnosticError) Unwrap() error { return e.cause } + +func (c *Connection) diagnostic(err error) error { + if err == nil { + return nil + } + message := err.Error() + for _, value := range c.config.Headers { + if value != "" { + message = strings.ReplaceAll(message, value, "[redacted MCP header]") + } + } + return diagnosticError{message: "MCP server " + c.name + ": " + message, cause: err} +} + +type headerTransport struct { + base http.RoundTripper + headers map[string]string +} + +func (t headerTransport) RoundTrip(request *http.Request) (*http.Response, error) { + copy := request.Clone(request.Context()) + for key, value := range t.headers { + copy.Header.Set(key, value) + } + return t.base.RoundTrip(copy) +} + +type quietLogger struct{} + +func (quietLogger) Infof(string, ...any) {} +func (quietLogger) Errorf(string, ...any) {} diff --git a/tools/mcp/connection_test.go b/tools/mcp/connection_test.go new file mode 100644 index 000000000..0f4456bb1 --- /dev/null +++ b/tools/mcp/connection_test.go @@ -0,0 +1,309 @@ +package mcp + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "fmt" + "net/http" + "net/http/httptest" + "strings" + "sync/atomic" + "testing" + "time" + + "github.com/chainreactors/cyber/core/resource" + coretool "github.com/chainreactors/cyber/core/tool" + "github.com/mark3labs/mcp-go/client" + "github.com/mark3labs/mcp-go/client/transport" +) + +const schema = `{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"integer"}},"anyOf":[{"required":["address"]}],"unevaluatedProperties":false}` +const richResult = `{"content":[{"type":"text","text":"decompiled"},{"type":"image","data":"AQID","mimeType":"image/png","annotations":{"audience":["user"]}},{"type":"audio","data":"BAU=","mimeType":"audio/wav"},{"type":"resource_link","uri":"file:///target.asm","name":"assembly","mimeType":"text/plain"},{"type":"resource","resource":{"uri":"re://f/1","text":"function","mimeType":"text/plain"}},{"type":"resource","resource":{"uri":"re://blob","blob":"Bg==","mimeType":"application/octet-stream"}},{"type":"future","original":9007199254740993}],"structuredContent":{"address":9007199254740993},"_meta":{"source":"idb"},"isError":true}` + +func TestHTTPDiscoveryAndInvocationPreserveWireValues(t *testing.T) { + var calls, deletes atomic.Int32 + var received atomic.Value + upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Authorization") != "Bearer test-secret" { + t.Error("authentication missing, including on session cleanup") + } + if r.Method == http.MethodDelete { + deletes.Add(1) + w.WriteHeader(http.StatusOK) + return + } + var request struct { + ID json.RawMessage `json:"id"` + Method string `json:"method"` + Params json.RawMessage `json:"params"` + } + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + t.Error(err) + return + } + w.Header().Set("Content-Type", "application/json") + var result string + switch request.Method { + case "initialize": + w.Header().Set("Mcp-Session-Id", "owned-session") + result = `{"protocolVersion":"2025-03-26","capabilities":{"tools":{}},"serverInfo":{"name":"test","version":"1"}}` + case "notifications/initialized": + w.WriteHeader(http.StatusAccepted) + return + case "tools/list": + if strings.Contains(string(request.Params), "cursor") { + result = `{"tools":[{"name":"other","inputSchema":{"type":"object"}}]}` + } else { + result = `{"tools":[{"name":"decompile","description":"Read code","inputSchema":` + schema + `}],"nextCursor":"page-2"}` + } + case "tools/call": + calls.Add(1) + received.Store(string(request.Params)) + result = richResult + default: + t.Errorf("unexpected request %s", request.Method) + return + } + _, _ = fmt.Fprintf(w, `{"jsonrpc":"2.0","id":%s,"result":%s}`, request.ID, result) + })) + defer upstream.Close() + c := openHTTP(t, ServerConfig{URL: upstream.URL, Headers: map[string]string{"Authorization": "Bearer test-secret"}, Tools: []string{"decompile"}}) + catalog, err := c.Discover(context.Background()) + if err != nil || len(catalog.tools) != 1 { + t.Fatalf("discover: %v, %v", catalog, err) + } + if string(catalog.tools[0].InputSchema) != schema { + t.Fatalf("definition lost source schema: %v", catalog.tools[0]) + } + for _, invalid := range []string{"", "null", "[]", "true", "{} {}", "{broken}"} { + if _, err := catalog.Call(context.Background(), "decompile", json.RawMessage(invalid)); err == nil { + t.Fatalf("accepted invalid arguments: %q", invalid) + } + } + if calls.Load() != 0 { + t.Fatal("invalid arguments dispatched") + } + result, err := catalog.Call(context.Background(), "decompile", json.RawMessage(`{"address":9007199254740993}`)) + if err == nil || !strings.Contains(err.Error(), "isError") { + t.Fatalf("call: %v, %v", result, err) + } + if !strings.Contains(received.Load().(string), `"arguments":{"address":9007199254740993}`) || !strings.Contains(received.Load().(string), `"name":"decompile"`) { + t.Fatalf("upstream arguments/name changed: %s", received.Load()) + } + if string(result) != richResult { + t.Fatal("raw result lost annotations, structured content or metadata") + } + var output bytes.Buffer + command := catalog.Command() + _, err = command.Run(context.Background(), &coretool.Execution{Args: []string{"call", "decompile", "--json", `{"address":9007199254740993}`}, Stdout: &output}) + if err == nil || output.String() != richResult+"\n" { + t.Fatalf("CLI did not preserve complete failed result: %s %v", &output, err) + } + before := calls.Load() + for _, args := range [][]string{ + {"call", "other"}, {"call", "decompile", "--json", "{}", "--file", "x"}, + {"call", "decompile", "--json"}, {"call", "decompile", "--json", "[]"}, + {"tools", "unexpected"}, {"schema"}, {"unknown"}, + } { + if _, err := command.Run(context.Background(), &coretool.Execution{Args: args, Stdout: &output}); err == nil { + t.Fatalf("invalid CLI input accepted: %q", args) + } + } + if calls.Load() != before { + t.Fatal("invalid or excluded CLI call reached upstream") + } + output.Reset() + if _, err := command.Run(context.Background(), &coretool.Execution{Args: []string{"call", "decompile", "--help"}, Stdout: &output}); err != nil || !strings.Contains(output.String(), schema) { + t.Fatalf("generated tool help lost schema: %s %v", &output, err) + } + if err := c.Close(context.Background()); err != nil || deletes.Load() != 1 { + t.Fatalf("close: %v, deletes=%d", err, deletes.Load()) + } +} + +func openHTTP(t *testing.T, config ServerConfig) *Connection { + t.Helper() + c, err := New("ida", config) + if err != nil { + t.Fatal(err) + } + t.Cleanup(func() { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + if err := c.Close(ctx); err != nil { + t.Error(err) + } + }) + if err := c.Start(context.Background(), context.Background()); err != nil { + t.Fatal(err) + } + return c +} + +func TestCancellationAndErrorDiagnostics(t *testing.T) { + canceled := make(chan struct{}, 1) + entered := make(chan struct{}, 1) + upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var req struct { + ID json.RawMessage `json:"id"` + Method string `json:"method"` + } + _ = json.NewDecoder(r.Body).Decode(&req) + w.Header().Set("Content-Type", "application/json") + switch req.Method { + case "initialize": + _, _ = fmt.Fprintf(w, `{"jsonrpc":"2.0","id":%s,"result":{"protocolVersion":"2025-03-26","capabilities":{"tools":{}},"serverInfo":{"name":"test","version":"1"}}}`, req.ID) + case "notifications/initialized": + w.WriteHeader(http.StatusAccepted) + case cancellationMethod: + canceled <- struct{}{} + w.WriteHeader(http.StatusAccepted) + case "wait": + entered <- struct{}{} + <-r.Context().Done() + case "fail": + _, _ = fmt.Fprintf(w, `{"jsonrpc":"2.0","id":%s,"error":{"code":-32001,"message":"Bearer secret-value rejected","data":{"reason":"unknown database"}}}`, req.ID) + } + })) + defer upstream.Close() + c := openHTTP(t, ServerConfig{URL: upstream.URL, Headers: map[string]string{"Authorization": "Bearer secret-value"}}) + _, err := c.request(context.Background(), "fail", nil) + var rpc *RPCError + if !errors.As(err, &rpc) || rpc.Details.Code != -32001 || !strings.Contains(err.Error(), "unknown database") || strings.Contains(err.Error(), "secret-value") { + t.Fatalf("protocol failure lost or credentials exposed: %v", err) + } + ctx, cancel := context.WithCancel(context.Background()) + finished := make(chan error, 1) + go func() { _, err := c.request(ctx, "wait", nil); finished <- err }() + <-entered + cancel() + select { + case err := <-finished: + if !errors.Is(err, context.Canceled) { + t.Fatal(err) + } + case <-time.After(3 * time.Second): + t.Fatal("request did not respect cancellation") + } + select { + case <-canceled: + case <-time.After(3 * time.Second): + t.Fatal("upstream cancellation notification missing") + } +} + +type blockingClose struct { + transport.Interface + entered chan struct{} + release chan struct{} +} + +func (b *blockingClose) Close() error { close(b.entered); <-b.release; return nil } + +func TestCloseDeadlineRetainsCleanupForRetry(t *testing.T) { + b := &blockingClose{entered: make(chan struct{}), release: make(chan struct{})} + c := &Connection{name: "test", client: client.NewClient(b), started: true} + ctx, cancel := context.WithCancel(context.Background()) + cancel() + if err := c.Close(ctx); !errors.Is(err, resource.ErrCloseIncomplete) { + t.Fatalf("close must retain incomplete cleanup: %v", err) + } + <-b.entered + close(b.release) + if err := c.Close(context.Background()); err != nil { + t.Fatal(err) + } +} + +func TestConfigurationAndAllowlistOmission(t *testing.T) { + for _, config := range []ServerConfig{{}, {Command: "python", URL: "http://localhost"}, {URL: "file:///tmp/socket"}, {URL: "http://user:pass@localhost"}, {URL: "http://localhost", Cwd: "x"}, {Command: "python", TimeoutSeconds: -1}} { + if config.Validate("ida") == nil { + t.Fatalf("accepted invalid config: %#v", config) + } + } + config := ServerConfig{Command: "python", Tools: []string{}, Env: map[string]string{"KEY": "value"}} + copy := config.Clone() + copy.Env["KEY"] = "different" + if copy.Tools == nil || config.Env["KEY"] != "value" { + t.Fatal("clone lost empty allowlist or shared mutable environment") + } + encoded, err := json.Marshal(copy) + if err != nil || !strings.Contains(string(encoded), `"tools":[]`) { + t.Fatalf("serialization lost empty allowlist: %s, %v", encoded, err) + } + if err := (ServerConfig{Command: "python", Tools: []string{strings.Repeat("a", 100), "tool.with.dots", "schema"}}).Validate("ida"); err != nil { + t.Fatalf("upstream names should not be restricted by function naming: %v", err) + } +} + +func TestMalformedCatalogAndResponseFailures(t *testing.T) { + for name, catalog := range map[string]string{ + "missing tools": `{"nextCursor":"page"}`, + "null tools": `{"tools":null}`, + "duplicate names": `{"tools":[{"name":"echo","inputSchema":{"type":"object"}},{"name":"echo","inputSchema":{"type":"object"}}]}`, + "schema array": `{"tools":[{"name":"echo","inputSchema":[]}]}`, + "repeated cursor": `{"tools":[],"nextCursor":"same"}`, + } { + t.Run(name, func(t *testing.T) { + var pages atomic.Int32 + upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var req struct { + ID json.RawMessage `json:"id"` + Method string `json:"method"` + } + _ = json.NewDecoder(r.Body).Decode(&req) + w.Header().Set("Content-Type", "application/json") + var result string + switch req.Method { + case "initialize": + result = `{"protocolVersion":"2025-03-26","capabilities":{"tools":{}},"serverInfo":{"name":"test","version":"1"}}` + case "notifications/initialized": + w.WriteHeader(http.StatusAccepted) + return + case "tools/list": + pages.Add(1) + result = catalog + case "mismatch": + req.ID = json.RawMessage(`"other-id"`) + result = `{}` + } + _, _ = fmt.Fprintf(w, `{"jsonrpc":"2.0","id":%s,"result":%s}`, req.ID, result) + })) + defer upstream.Close() + c := openHTTP(t, ServerConfig{URL: upstream.URL}) + if _, err := c.Discover(context.Background()); err == nil { + t.Fatal("malformed catalog accepted") + } + if pages.Load() > 2 { + t.Fatal("looping catalog was not stopped") + } + if _, err := c.request(context.Background(), "mismatch", nil); err == nil || !strings.Contains(err.Error(), "mismatched") { + t.Fatalf("response identity not checked: %v", err) + } + }) + } +} + +func TestHTTPDoesNotFollowRedirectOrReplay(t *testing.T) { + var forwarded, attempts atomic.Int32 + destination := httptest.NewServer(http.HandlerFunc(func(http.ResponseWriter, *http.Request) { forwarded.Add(1) })) + defer destination.Close() + upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + attempts.Add(1) + http.Redirect(w, r, destination.URL, http.StatusTemporaryRedirect) + })) + defer upstream.Close() + c, err := New("ida", ServerConfig{URL: upstream.URL, Headers: map[string]string{"Authorization": "Bearer private"}}) + if err != nil { + t.Fatal(err) + } + defer c.Close(context.Background()) + if err := c.Start(context.Background(), context.Background()); err == nil { + t.Fatal("redirected initialization succeeded") + } + if forwarded.Load() != 0 || attempts.Load() != 1 { + t.Fatalf("request forwarded or replayed: forwarded=%d attempts=%d", forwarded.Load(), attempts.Load()) + } +} From 92124b76a8296d2f47d5f946ef1e3077ad26c6dc Mon Sep 17 00:00:00 2001 From: M09Ic Date: Sun, 11 Oct 2026 13:35:55 +0800 Subject: [PATCH 2/7] feat(mcp): map tools directly to schema-derived subcommands --- docs/developer/extensions.md | 2 +- docs/mcp.md | 56 ++++++++----- examples/mcp/main.go | 2 +- examples/mcp/main_test.go | 6 +- exts/mcp/extension.go | 5 ++ exts/mcp/extension_test.go | 50 ++++++++---- tools/mcp/arguments.go | 142 +++++++++++++++++++++++++++++++++ tools/mcp/catalog.go | 2 +- tools/mcp/command.go | 135 +++++++++++++++++++------------ tools/mcp/command_test.go | 150 +++++++++++++++++++++++++++++++++++ tools/mcp/connection_test.go | 10 +-- 11 files changed, 463 insertions(+), 97 deletions(-) create mode 100644 tools/mcp/arguments.go create mode 100644 tools/mcp/command_test.go diff --git a/docs/developer/extensions.md b/docs/developer/extensions.md index df55e0000..788440032 100644 --- a/docs/developer/extensions.md +++ b/docs/developer/extensions.md @@ -22,7 +22,7 @@ [OKF 扩展](../../exts/okf/extension.go)是一个小而完整的参考:Load 同时贡献命令、说明文档与提示词策略。阅读它时,可以沿着 `tools/okf` 的命令实现确认业务逻辑并没有依赖 Scope。 -已有标准 MCP 服务时可使用 [MCP → CLI 扩展](../mcp.md):Load 使用 mcp-go 连接服务、发现工具并贡献 `mcp-` 命令,Agent 从 bash 按需列举、查询 schema 和调用工具。 +已有标准 MCP 服务时可使用 [MCP → CLI 扩展](../mcp.md):Load 使用 mcp-go 连接服务、发现工具并贡献以服务别名命名的命令,如 `ida decompile --addr 0x401000`。Agent 从 bash 按需列举、查看工具帮助并使用 Schema 参数调用工具。 ## 子 Agent 贡献 diff --git a/docs/mcp.md b/docs/mcp.md index b1886ea9c..adce82b66 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -1,37 +1,53 @@ # MCP → CLI 扩展 -`exts/mcp` 使用 `mcp-go` 连接外部 MCP 服务,自动发现工具并为每个服务生成一个 `mcp-` 命令。Agent 通过已有的 bash 工具执行这些命令,按需查看工具和参数,无需把整个 MCP 目录加入模型的函数列表。 +`exts/mcp` 使用 `mcp-go` 连接外部 MCP 服务,自动将服务别名映射为命令、工具名映射为子命令、inputSchema 属性映射为参数。配置 `ida` 后即可在 harness 的 bash 中调用 `ida decompile --addr 0x401000`。Agent 按需发现工具和参数,无需把整个 MCP 目录加入模型的函数列表。 接入路径:**AI → bash → CommandRegistry → MCP client → MCP server → 上游工具**。支持 stdio 和 Streamable HTTP;它适用于 IDA、REA 及其他提供 MCP tools 的服务,不包含分析引擎安装或数据库生命周期策略。 ## AI 如何调用 -配置服务别名为 `ida` 后,加载扩展自动注册 `mcp-ida`,并把简短用法加入命令发现: +配置服务别名为 `ida` 后,加载扩展自动注册 `ida`,并把简短用法加入命令发现: ```sh -mcp-ida tools -mcp-ida schema decompile -mcp-ida call decompile --json '{"database":"db-1","addr":"0x401000"}' -mcp-ida call decompile --file arguments.json > result.json -mcp-ida call decompile --help +ida --list +ida decompile --help +ida decompile --addr 0x401000 +ida decompile --json '{"addr":"0x401000"}' +ida decompile --file arguments.json > result.json ``` -`tools` 输出名称和描述的 JSON 数组;`schema` 和 `call --help` 输出完整的上游工具声明,包括 `inputSchema`、`outputSchema`、annotations 和未知字段。`call` 把参数发给同名上游工具,省略参数时传 `{}`。相对参数文件路径基于调用方当前目录解析。 +`--list` 输出名称和描述的 JSON 数组;` --help` 生成参数说明,并附上完整的上游声明,包括 `inputSchema`、`outputSchema`、annotations 和未知字段。子命令调用同名上游工具;工具与参数名保留原有大小写、下划线等拼写。工具名作为独立 argv 传递,不受模型函数名的 64 字节限制。参数和数据库选择以实际 `--help` 为准。 -所有工具自动使用同一组 CLI 规则。参数以完整 JSON object 传入,因此嵌套对象、数组、布尔值、null、大整数和复杂 schema 都可保留,不需要为每种参数再实现命令行解析。工具名作为独立 argv 原样传递,不生成别名或套用模型函数名的 64 字节限制;需要时按普通 shell 规则引用。 +所有工具共享一套 Schema → 参数规则,既接受 `--name value`,也接受 `--name=value`。每个参数消费一个值;以 `--` 开头的值使用等号形式。 -`call` 的 stdout 是完整 MCP result JSON,保留文本、图片/音频的 base64、资源 URI、`structuredContent`、`_meta` 和未知内容。结果中的 `isError: true` 会在保留 stdout 后让命令失败;协议、连接、参数和 I/O 错误也使命令失败。bash 支持管道、重定向、变量和 `&&` / `||`,例如: +| Schema 类型 | 参数值 | 示例 | +| --- | --- | --- | +| string | 原样字符串 | `--addr 0x401000` | +| integer | 十进制整数,保留大整数精度 | `--limit 10` | +| number | JSON 数字,保留原有数字表示 | `--ratio 1.25e-3` | +| boolean | 显式 `true` / `false` | `--recursive true` | +| object / array | 单个 JSON 值 | `--options '{"depth":2}'` / `--addresses '["0x401000"]'` | +| null | `null` | `--value null` | +| 多类型 union、$ref 或未声明类型 | 单个 JSON 值 | `--value '"text"'` | + +单一具体类型加 null 的 Schema 使用该类型的参数编码;需要显式 null 时用完整 JSON 输入。省略可选字段时不注入 defaults。命名参数检查顶层 required、类型编码、未知参数和重复参数,上游服务负责完整 Schema 校验。 + +`--json ''` 和 `--file ` 提供通用回退,支持任意嵌套结构和复杂 Schema,不能与命名参数混用。相对文件路径基于调用方当前目录解析。字段名使用字母、数字、`_`、`-` 且不以 `-` 开头时可直接生成参数;名为 `help`、`json`、`file` 的字段或其他字段名使用完整 JSON 输入。工具名为 `--help`、`-h`、`--list` 或 `--` 时可通过 `ida -- ` 调用;`tools`、`schema`、`call`、`help` 都是普通上游工具名。 + +stdout 是完整 MCP result JSON,保留文本、图片/音频的 base64、资源 URI、`structuredContent`、`_meta` 和未知内容。结果中的 `isError: true` 会在保留 stdout 后让命令失败;协议、连接、参数和 I/O 错误也使命令失败。bash 支持管道、重定向、变量和 `&&` / `||`,例如: ```sh -mcp-ida call idb_list > databases.json -mcp-ida call decompile --file arguments.json 2> error.txt || printf '查看 error.txt\n' +ida idb_list > databases.json +ida decompile --addr 0x401000 2> error.txt || printf '查看 error.txt\n' ``` 命令运行在 harness 的 bash 解释器中,由 CommandRegistry 路由,不生成磁盘上的独立可执行文件。另行启动的系统 shell 只能访问自己的 PATH;可以使用下面的独立示例作为外部 CLI 宿主。 +设计参考了 [hengyunabc/mcp2cli](https://github.com/hengyunabc/mcp2cli) 的 Go / mcp-go 动态子命令、[knowsuchagency/mcp2cli](https://github.com/knowsuchagency/mcp2cli) 的服务命名与按需发现,以及 [mcporter 的 CLI 生成](https://github.com/openclaw/mcporter/blob/main/docs/cli-generator.md)。这里直接复用 harness 的 CommandRegistry,通过一套运行时映射接入已有 MCP 服务。 + ## 配置和独立试用 -扩展配置使用 `mcpServers`,每个服务选择 `command` 或 `url`。别名使用字母、数字、`-`、`_`。stdio 的 command 是已安装的可执行文件,args 是参数数组,直接启动子进程;env 覆盖指定环境变量,cwd 设置子进程工作目录。 +扩展配置使用 `mcpServers`,每个服务选择 `command` 或 `url`。别名使用字母、数字、`-`、`_`,不能与 bash 内建命令、关键字或已注册的 harness 命令冲突。stdio 的 command 是已安装的可执行文件,args 是参数数组,直接启动子进程;env 覆盖指定环境变量,cwd 设置子进程工作目录。 现代 `ida-pro-mcp` headless supervisor 示例: @@ -52,9 +68,9 @@ mcp-ida call decompile --file arguments.json 2> error.txt || printf '查看 erro ```sh go run ./examples/mcp -config mcp.json -go run ./examples/mcp -config mcp.json mcp-ida tools -go run ./examples/mcp -config mcp.json mcp-ida schema idb_open -go run ./examples/mcp -config mcp.json mcp-ida call idb_list +go run ./examples/mcp -config mcp.json ida --list +go run ./examples/mcp -config mcp.json ida idb_open --help +go run ./examples/mcp -config mcp.json ida decompile --addr 0x401000 ``` [示例](../examples/mcp/main.go)复用相同的 Extension Set 和 CommandRegistry,直接输出 JSON,失败返回非零退出码。每次运行会创建和关闭连接;需要连续维护 stdio 服务状态时,把扩展装进长期运行的 Profile。 @@ -73,7 +89,7 @@ Streamable HTTP 服务配置: } ``` -`tools` 使用上游名称;省略或 null 表示全部,`[]` 表示空目录。缺失的白名单工具、重复工具和循环分页使加载失败。调用和 schema 查询只允许访问白名单内的目录。 +配置中的 `tools` 使用上游名称;省略或 null 表示全部,`[]` 表示空目录。缺失的白名单工具、重复工具和循环分页使加载失败。调用和工具帮助只允许访问白名单内的目录。 HTTP 重定向不自动跟随;请求与协议会话 DELETE 使用同一组 headers,诊断文本遮蔽配置中的 header 值。扩展不会持久化继承环境,stdio 的 stderr 持续排空但当前不保存上游日志。启动和发现各默认 30 秒,调用默认 300 秒;两个 timeout 字段可分别设置为正整数秒,0 使用默认值。 @@ -107,7 +123,7 @@ h, err := harness.New(harness.Config{ ## 连接已有的逆向基础设施 -IDA、Python、许可证与 `ida-pro-mcp` 需要按[上游说明](https://github.com/mrexodia/ida-pro-mcp#headless-idalib-session-model)单独准备。headless 示例需要支持 `idb_open` / `idb_list` / `idb_close` supervisor 的版本;旧版以初始文件名启动并提供 legacy SSE 的服务不适用此配置。具体工具名称和参数以 `tools` / `schema` 的实际发现为准。 +IDA、Python、许可证与已有 `ida-pro-mcp` 服务需要按[上游说明](https://github.com/mrexodia/ida-pro-mcp#headless-idalib-session-model)单独准备。headless 示例需要支持 `idb_open` / `idb_list` / `idb_close` supervisor 的版本;旧版以初始文件名启动并提供 legacy SSE 的服务不适用此配置。具体工具名称和参数以 `--list` / ` --help` 的实际发现为准。 连接已打开的 IDA GUI 时,复用工作正常的上游 stdio proxy 注册。legacy 1.4.0 的示例: @@ -128,10 +144,10 @@ legacy GUI 的 `/mcp` 是内部 RPC 接口,需要通过 stdio proxy,不能 ## 边界和验证 -目录是加载时的快照;上游工具变化后需重建 Profile。扩展处理 tools,不暴露 resources/prompts、sampling、elicitation 或 legacy HTTP+SSE,也不自动把服务 instructions 变成系统提示词。输入需为 JSON object,完整 schema 提供给调用方,上游负责业务参数校验。 +目录是加载时的快照;上游工具变化后需重建 Profile。扩展处理 tools,不暴露 resources/prompts、sampling、elicitation 或 legacy HTTP+SSE,也不自动把服务 instructions 变成系统提示词。完整 schema 提供给调用方,命名参数转换不是完整 JSON Schema 验证器;完整 JSON 输入只检查 object,上游负责业务参数校验。 取消结束本地等待并尽力发送 `notifications/cancelled`,不会自动重连或重放调用,也不证明上游任务已停止。卸载先撤销命令、取消并排空调用,再关闭连接。stdio 先关闭输入,200 毫秒后终止仍未退出的直接子进程。关闭 deadline 到达时保留清理任务并返回 `ErrCloseIncomplete`,允许重试 Close。HTTP 只释放客户端与协议会话;SDK 的 DELETE 为尽力释放,不验证服务器端已清理。 一个 Profile 的服务配置拥有一条连接,不同 Agent Session 共用它。扩展不隔离上游“当前数据库”,不自动打开、保存、关闭 IDA 数据库,不管理上游分离的 workers。cyber-re 应显式选择数据库句柄或使用独立 Profile,并显式释放自己创建的分析资源。 -测试使用真实 Go stdio 子进程和 SDK Streamable HTTP 服务,验证 AI bash → CommandRegistry → MCP 的完整路径、复杂工具名、JSON 参数、管道和重定向、失败状态、准入 hooks、超时、卸载排空和加载回滚。原始协议测试覆盖完整 schema、大整数、混合内容与 metadata、分页和认证 headers。真实 IDA、Hopper、Ghidra 尚未验证。 +测试使用真实 Go stdio 子进程和 SDK Streamable HTTP 服务,验证 AI bash → CommandRegistry → MCP 的完整路径、复杂工具名、Schema 参数和 JSON 回退、管道和重定向、失败状态、准入 hooks、超时、卸载排空和加载回滚。原始协议测试覆盖完整 schema、数字精度与表示、可选字段省略、nullable / union / $ref、控制名称冲突、混合内容与 metadata、分页和认证 headers。真实 IDA、Hopper、Ghidra 尚未验证。 diff --git a/examples/mcp/main.go b/examples/mcp/main.go index 9e1e105b9..9489d90e2 100644 --- a/examples/mcp/main.go +++ b/examples/mcp/main.go @@ -33,7 +33,7 @@ func main() { func run(ctx context.Context, configPath string, argv []string, output, diagnostics io.Writer) (err error) { if configPath == "" { - return fmt.Errorf("usage: go run ./examples/mcp -config mcp.json [mcp-ida tools | mcp-ida call --json '{...}']") + return fmt.Errorf("usage: go run ./examples/mcp -config mcp.json [ida --list | ida -- ]") } data, err := os.ReadFile(configPath) if err != nil { diff --git a/examples/mcp/main_test.go b/examples/mcp/main_test.go index 4e7063d1a..6121874be 100644 --- a/examples/mcp/main_test.go +++ b/examples/mcp/main_test.go @@ -22,16 +22,16 @@ func TestJSONConfiguredCLIListsAndCallsMCP(t *testing.T) { upstream := httptest.NewServer(server.NewStreamableHTTPServer(s)) defer upstream.Close() path := filepath.Join(t.TempDir(), "mcp.json") - data, _ := json.Marshal(map[string]any{"mcpServers": map[string]any{"test": map[string]any{"url": upstream.URL + "/mcp"}}}) + data, _ := json.Marshal(map[string]any{"mcpServers": map[string]any{"demo": map[string]any{"url": upstream.URL + "/mcp"}}}) if err := os.WriteFile(path, data, 0600); err != nil { t.Fatal(err) } var output bytes.Buffer - if err := run(context.Background(), path, nil, &output, &output); err != nil || !strings.Contains(output.String(), "mcp-test tools") { + if err := run(context.Background(), path, nil, &output, &output); err != nil || !strings.Contains(output.String(), "demo --list") { t.Fatalf("list commands: %v, %s", err, &output) } output.Reset() - if err := run(context.Background(), path, []string{"mcp-test", "call", "echo", "--json", `{"value":"from-example"}`}, &output, &output); err != nil || !strings.Contains(output.String(), "from-example") || !json.Valid(bytes.TrimSpace(output.Bytes())) { + if err := run(context.Background(), path, []string{"demo", "echo", "--value", "from-example"}, &output, &output); err != nil || !strings.Contains(output.String(), "from-example") || !json.Valid(bytes.TrimSpace(output.Bytes())) { t.Fatalf("call: %v, %s", err, &output) } } diff --git a/exts/mcp/extension.go b/exts/mcp/extension.go index a58d3097a..63652ded5 100644 --- a/exts/mcp/extension.go +++ b/exts/mcp/extension.go @@ -11,6 +11,8 @@ import ( "github.com/chainreactors/cyber/core/extension" coretool "github.com/chainreactors/cyber/core/tool" mcptools "github.com/chainreactors/cyber/tools/mcp" + "mvdan.cc/sh/v3/interp" + "mvdan.cc/sh/v3/syntax" ) type Config struct { @@ -50,6 +52,9 @@ func (e *Extension) Load(scope *extension.Scope) error { if err := e.config.MCPServers[name].Validate(name); err != nil { return err } + if interp.IsBuiltin(name) || syntax.IsKeyword(name) { + return fmt.Errorf("MCP server alias %q conflicts with a bash builtin or keyword; choose another alias", name) + } } var commands []coretool.Command for _, name := range names { diff --git a/exts/mcp/extension_test.go b/exts/mcp/extension_test.go index cc5636f25..705e6f076 100644 --- a/exts/mcp/extension_test.go +++ b/exts/mcp/extension_test.go @@ -135,22 +135,22 @@ func TestStdioBashWorkflowAndLifetime(t *testing.T) { } cancel() // The child must survive cancellation of the short load context. definitions := h.tools.ToolDefinitions() - if len(definitions) != 1 || definitions[0].Name != "bash" || !strings.Contains(h.commands.UsageDocs(), "mcp-ida tools") { + if len(definitions) != 1 || definitions[0].Name != "bash" || !strings.Contains(h.commands.UsageDocs(), "ida --list") { t.Fatal("MCP should be discoverable as CLI through bash") } - arguments := `{"command":"mcp-ida call echo --json '{\"message\":\"hello\"}'"}` + arguments := `{"command":"ida echo --message hello"}` result, err := h.tools.ExecuteTool(context.Background(), "bash", arguments) if err != nil || result.IsError || !strings.Contains(coretool.ResultText(result), "hello|") || !strings.Contains(coretool.ResultText(result), "chosen-value") { t.Fatalf("stdio call through AI bash boundary: %v %v", result, err) } - output, err := h.command(context.Background(), "mcp-ida", "tools") + output, err := h.command(context.Background(), "ida", "--list") if err != nil || !strings.Contains(output, "echo") { t.Fatalf("catalog: %s %v", output, err) } if err := h.set.Close(context.Background()); err != nil { t.Fatal(err) } - if h.commands.Has("mcp-ida") { + if h.commands.Has("ida") { t.Fatal("command remained visible after unload") } } @@ -165,7 +165,7 @@ func TestStdioUnloadCancelsInFlightCall(t *testing.T) { t.Fatal(err) } finished := make(chan error, 1) - go func() { _, err := h.command(context.Background(), "mcp-ida", "call", "wait"); finished <- err }() + go func() { _, err := h.command(context.Background(), "ida", "wait"); finished <- err }() deadline := time.Now().Add(5 * time.Second) for { if _, err := os.Stat(marker); err == nil { @@ -200,7 +200,7 @@ func TestHTTPBashCompositionAndAdmission(t *testing.T) { t.Fatal(err) } // Native CLI participates in variable expansion, pipelines and redirects. - script := `message='two words'; mcp-http call echo --json "{\"message\":\"$message\"}" | { read -r result; printf '%s\n' "$result"; } > result.json` + script := `message='two words'; http echo --message "$message" | { read -r result; printf '%s\n' "$result"; } > result.json` var output bytes.Buffer execution, err := h.bash.RunForeground(context.Background(), script, terminaltool.BashExecOptions{Stdout: &output}) if err != nil { @@ -215,29 +215,29 @@ func TestHTTPBashCompositionAndAdmission(t *testing.T) { if err := os.WriteFile(filepath.Join(h.dir, "args.json"), []byte(`{"nested":{"array":[true,"hello",{"value":null}]}}`), 0600); err != nil { t.Fatal(err) } - text, err := h.command(context.Background(), "mcp-http", "call", name, "--file", "args.json") + text, err := h.command(context.Background(), "http", name, "--file", "args.json") if err != nil || !strings.Contains(text, "hello") { t.Fatalf("arbitrary tool name and nested arguments: %s %v", text, err) } // Tool failures retain stdout and fail the shell command. - result, err := h.bash.RunForegroundTool(context.Background(), "mcp-http call fail > failure.json", terminaltool.BashExecOptions{}) + result, err := h.bash.RunForegroundTool(context.Background(), "http fail > failure.json", terminaltool.BashExecOptions{}) failure, readErr := os.ReadFile(filepath.Join(h.dir, "failure.json")) if err != nil || !result.IsError || readErr != nil || !strings.Contains(string(failure), `"isError":true`) { t.Fatalf("failure lost stdout or exit status: %v %v %s %v", result, err, failure, readErr) } - result, err = h.bash.RunForegroundTool(context.Background(), "mcp-http call fail > failure.json 2> diagnostics.txt || printf recovered", terminaltool.BashExecOptions{}) + result, err = h.bash.RunForegroundTool(context.Background(), "http fail > failure.json 2> diagnostics.txt || printf recovered", terminaltool.BashExecOptions{}) if err != nil || result.IsError || !strings.Contains(coretool.ResultText(result), "recovered") { t.Fatalf("shell recovery failed: %v %v", result, err) } before := calls.Load() denial := toolhooks.BeforeCommand.On(h.hooks, "deny-mcp", func(_ context.Context, event toolhooks.CommandEvent) (toolhooks.Admission, error) { - if event.Name == "mcp-http" && len(event.Args) > 0 && event.Args[0] == "call" { + if event.Name == "http" && len(event.Args) > 0 && event.Args[0] == "echo" { return toolhooks.Admission{Deny: errors.New("denied by test")}, nil } return toolhooks.Admission{}, nil }) defer denial.Cancel() - if _, err := h.command(context.Background(), "mcp-http", "call", "echo"); !errors.Is(err, operation.ErrDenied) || calls.Load() != before { + if _, err := h.command(context.Background(), "http", "echo"); !errors.Is(err, operation.ErrDenied) || calls.Load() != before { t.Fatalf("admission bypassed: %v calls=%d", err, calls.Load()) } } @@ -251,7 +251,7 @@ func TestStdioInitializationTimeoutRollsBackOwnedProcess(t *testing.T) { if err := h.set.Load(ctx); !errors.Is(err, context.DeadlineExceeded) { t.Fatalf("initialization deadline lost: %v", err) } - if h.commands.Has("mcp-stall") { + if h.commands.Has("stall") { t.Fatal("failed initialization exposed a command") } if err := h.set.Close(context.Background()); err != nil { @@ -293,14 +293,36 @@ func TestHTTPRollbackAndAllowlist(t *testing.T) { if err := h.set.Load(context.Background()); err != nil { t.Fatal(err) } - output, err := h.command(context.Background(), "mcp-filtered", "tools") + output, err := h.command(context.Background(), "filtered", "--list") var summaries []any if err != nil || json.Unmarshal([]byte(output), &summaries) != nil || len(summaries) != test.count { t.Fatalf("allowlist semantics: %s %v", output, err) } - if _, err := h.command(context.Background(), "mcp-filtered", "call", "fail"); err == nil { + if _, err := h.command(context.Background(), "filtered", "fail"); err == nil { t.Fatal("excluded tool was callable") } }) } } + +func TestAliasRejectsBashNamespaceConflictsBeforeConnecting(t *testing.T) { + var requests atomic.Int32 + upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { + requests.Add(1) + w.WriteHeader(http.StatusInternalServerError) + })) + defer upstream.Close() + for _, name := range []string{"echo", "test", "printf", "if", "for", "declare"} { + t.Run(name, func(t *testing.T) { + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{ + "a": {URL: upstream.URL}, name: {URL: upstream.URL}, + }}) + if err := h.set.Load(context.Background()); err == nil || !strings.Contains(err.Error(), "conflicts with a bash") { + t.Fatalf("unreachable alias accepted: %v", err) + } + if requests.Load() != 0 || len(h.commands.Names()) != 0 { + t.Fatal("validation started a server or exposed commands") + } + }) + } +} diff --git a/tools/mcp/arguments.go b/tools/mcp/arguments.go new file mode 100644 index 000000000..f3cb78f52 --- /dev/null +++ b/tools/mcp/arguments.go @@ -0,0 +1,142 @@ +package mcp + +import ( + "bytes" + "encoding/json" + "fmt" + "regexp" + "strings" +) + +var ( + flagName = regexp.MustCompile(`^[a-zA-Z0-9_][a-zA-Z0-9_-]*$`) + decimalInteger = regexp.MustCompile(`^-?(0|[1-9][0-9]*)$`) +) + +func parameterFlag(name string) bool { + return flagName.MatchString(name) && name != "help" && name != "json" && name != "file" +} + +// namedArguments converts only supplied top-level properties. Raw input is the +// escape hatch for arbitrary JSON Schemas; this is not a schema validator. +func namedArguments(raw json.RawMessage, args []string) (json.RawMessage, error) { + var schema struct { + Properties map[string]json.RawMessage `json:"properties"` + Required []string `json:"required"` + } + if err := json.Unmarshal(raw, &schema); err != nil { + return nil, fmt.Errorf("cannot map this input schema to flags; use --json or --file") + } + values := make(map[string]json.RawMessage) + for i := 0; i < len(args); i++ { + if !strings.HasPrefix(args[i], "--") { + return nil, fmt.Errorf("expected -- , got %q; see tool --help", args[i]) + } + name, value, assigned := strings.Cut(strings.TrimPrefix(args[i], "--"), "=") + property, exists := schema.Properties[name] + if !exists || !parameterFlag(name) { + return nil, fmt.Errorf("unknown or reserved parameter flag --%s; see tool --help or use --json/--file", name) + } + if _, duplicate := values[name]; duplicate { + return nil, fmt.Errorf("repeated parameter --%s; pass arrays as one JSON value", name) + } + if !assigned { + i++ + if i == len(args) || strings.HasPrefix(args[i], "--") { + return nil, fmt.Errorf("--%s requires a value; use --%s= for a value starting with --", name, name) + } + value = args[i] + } + encoded, err := parameterValue(parameterType(property), value) + if err != nil { + return nil, fmt.Errorf("--%s: %w", name, err) + } + values[name] = encoded + } + for _, name := range schema.Required { + if _, present := values[name]; !present { + return nil, fmt.Errorf("missing required parameter %q; see tool --help or use --json/--file", name) + } + } + return json.Marshal(values) +} + +// A single concrete type, optionally nullable, has a direct flag encoding. +// References, mixed unions and untyped branches use JSON instead of guessing. +func parameterType(raw json.RawMessage) string { + var schema struct { + Type json.RawMessage `json:"type"` + Ref json.RawMessage `json:"$ref"` + AnyOf []json.RawMessage `json:"anyOf"` + OneOf []json.RawMessage `json:"oneOf"` + } + if json.Unmarshal(raw, &schema) != nil || len(schema.Ref) != 0 { + return "JSON" + } + var types []string + if len(schema.Type) != 0 { + var single string + if json.Unmarshal(schema.Type, &single) == nil { + types = []string{single} + } else if json.Unmarshal(schema.Type, &types) != nil { + return "JSON" + } + } else { + branches := schema.AnyOf + if len(branches) == 0 { + branches = schema.OneOf + } + for _, branch := range branches { + types = append(types, parameterType(branch)) + } + } + kind := "null" + for _, candidate := range types { + if candidate == "null" { + continue + } + if kind != "null" && kind != candidate { + return "JSON" + } + kind = candidate + } + if len(types) == 0 { + return "JSON" + } + switch kind { + case "string", "integer", "number", "boolean", "object", "array", "null": + return kind + default: + return "JSON" + } +} + +func parameterValue(kind, value string) (json.RawMessage, error) { + if kind == "string" { + return json.Marshal(value) + } + raw := json.RawMessage(value) + if !json.Valid(raw) { + return nil, fmt.Errorf("expected %s value", kind) + } + trimmed := bytes.TrimSpace(raw) + valid := true + switch kind { + case "integer": + valid = decimalInteger.Match(trimmed) + case "number": + valid = trimmed[0] == '-' || trimmed[0] >= '0' && trimmed[0] <= '9' + case "boolean": + valid = string(trimmed) == "true" || string(trimmed) == "false" + case "object": + valid = trimmed[0] == '{' + case "array": + valid = trimmed[0] == '[' + case "null": + valid = string(trimmed) == "null" + } + if !valid { + return nil, fmt.Errorf("expected %s value", kind) + } + return raw, nil +} diff --git a/tools/mcp/catalog.go b/tools/mcp/catalog.go index 26da1fb1a..eb606b790 100644 --- a/tools/mcp/catalog.go +++ b/tools/mcp/catalog.go @@ -89,7 +89,7 @@ type declaration struct { func (c *Catalog) lookup(name string) (declaration, error) { index, ok := c.byName[name] if !ok { - return declaration{}, fmt.Errorf("MCP server %s: unknown or excluded tool %q; run mcp-%s tools", c.connection.name, name, c.connection.name) + return declaration{}, fmt.Errorf("MCP server %s: unknown or excluded tool %q; run %s --list", c.connection.name, name, c.connection.name) } return c.tools[index], nil } diff --git a/tools/mcp/command.go b/tools/mcp/command.go index 4d80d2615..2431bd9ae 100644 --- a/tools/mcp/command.go +++ b/tools/mcp/command.go @@ -8,32 +8,34 @@ import ( "io" "os" "path/filepath" + "slices" "strings" coretool "github.com/chainreactors/cyber/core/tool" ) -// Command automatically exposes this server's catalog as one native CLI. -// Keeping upstream names as argv values avoids renaming/collision/loss and -// does not inflate the model's function-tool list for large MCP catalogs. +// Command exposes tools as subcommands of the configured server alias. +// Discovery and argument conversion happen at runtime, without code generation +// or expanding the model's function-tool list for large MCP catalogs. func (c *Catalog) Command() coretool.Command { - name := "mcp-" + c.connection.name + name := c.connection.name usage := fmt.Sprintf(`%s — %d MCP tools Usage: - %s tools list tool names and descriptions (JSON) - %s schema show the complete upstream declaration - %s call [--json ''] call a tool; defaults to {} - %s call --file read arguments from a JSON file - %s --help show this help + %s --list list tool names and descriptions (JSON) + %s --help show parameters and the complete declaration + %s -- ... call with schema-derived parameter flags + %s --json '' call with a complete JSON argument object + %s --file read arguments from a JSON file Results are complete MCP JSON on stdout. Tool isError and protocol failures -fail the command. Use single quotes around inline JSON in bash. Relative -argument files resolve against the caller's working directory. -`, name, len(c.tools), name, name, name, name, name) +fail the command. Tool and parameter names keep their upstream spelling. +Relative argument files resolve against the caller's working directory. +Use %s -- to address a tool named --help, -h or --list. +`, name, len(c.tools), name, name, name, name, name, name) return coretool.Command{ Name: name, Usage: usage, - QuickReference: fmt.Sprintf("- %s: %d MCP tools; discover with `%s tools`, inspect `%s schema `, invoke `%s call --json ''`.", name, len(c.tools), name, name, name), + QuickReference: fmt.Sprintf("- %s: %d MCP tools; discover with `%s --list`, inspect `%s --help`, invoke `%s -- `.", name, len(c.tools), name, name, name), Run: func(ctx context.Context, execution *coretool.Execution) (any, error) { return nil, c.run(ctx, execution, usage) }, @@ -49,16 +51,15 @@ func (c *Catalog) run(ctx context.Context, execution *coretool.Execution, usage if output == nil { output = io.Discard } - if len(args) == 0 || len(args) == 1 && (args[0] == "--help" || args[0] == "help" || args[0] == "-h") { + if len(args) == 0 || len(args) == 1 && (args[0] == "--help" || args[0] == "-h") { _, err := io.WriteString(output, usage) return err } - switch args[0] { - case "tools": + if args[0] == "--list" { if len(args) != 1 { - return fmt.Errorf("usage: mcp-%s tools", c.connection.name) + return fmt.Errorf("usage: %s --list", c.connection.name) } - // Progressive discovery: schemas stay behind the schema subcommand. + // Progressive discovery: schemas stay behind per-tool help. type summary struct { Name string `json:"name"` Description string `json:"description,omitempty"` @@ -68,49 +69,79 @@ func (c *Catalog) run(ctx context.Context, execution *coretool.Execution, usage tools = append(tools, summary{d.Name, d.Description}) } return json.NewEncoder(output).Encode(tools) - case "schema": - if len(args) != 2 { - return fmt.Errorf("usage: mcp-%s schema ", c.connection.name) - } - d, err := c.lookup(args[1]) - if err != nil { - return err - } - return writeJSON(output, d.raw) - case "call": - if len(args) < 2 { - return fmt.Errorf("usage: mcp-%s call [--json '' | --file ]", c.connection.name) - } - if _, err := c.lookup(args[1]); err != nil { - return err - } - if len(args) == 3 && args[2] == "--help" { - d, _ := c.lookup(args[1]) - return writeJSON(output, d.raw) + } + if args[0] == "--" { + args = args[1:] + if len(args) == 0 { + return fmt.Errorf("expected a tool name after --") } - arguments, err := callArguments(ctx, args[2:], execution.Dir) - if err != nil { - return err + } + d, err := c.lookup(args[0]) + if err != nil { + return err + } + if len(args) == 2 && (args[1] == "--help" || args[1] == "-h") { + return c.toolHelp(output, d) + } + var arguments json.RawMessage + if len(args) > 1 && (args[1] == "--json" || args[1] == "--file") { + arguments, err = rawArguments(ctx, args[1:], execution.Dir) + } else { + arguments, err = namedArguments(d.InputSchema, args[1:]) + } + if err != nil { + return err + } + raw, callErr := c.Call(ctx, d.Name, arguments) + if len(raw) != 0 { + callErr = errors.Join(callErr, writeJSON(output, raw)) + } + return callErr +} + +func (c *Catalog) toolHelp(output io.Writer, d declaration) error { + var text strings.Builder + fmt.Fprintf(&text, "%s\n\nUsage: %s %s [-- ...]\n\nParameters:\n", d.Description, c.connection.name, d.Name) + var schema struct { + Properties map[string]json.RawMessage `json:"properties"` + Required []string `json:"required"` + } + if json.Unmarshal(d.InputSchema, &schema) == nil { + names := make([]string, 0, len(schema.Properties)) + for name := range schema.Properties { + names = append(names, name) } - raw, callErr := c.Call(ctx, args[1], arguments) - if len(raw) != 0 { - callErr = errors.Join(callErr, writeJSON(output, raw)) + slices.Sort(names) + for _, name := range names { + raw := schema.Properties[name] + var parameter struct { + Description string `json:"description"` + } + _ = json.Unmarshal(raw, ¶meter) + flag := "--" + name + if !parameterFlag(name) { + flag = fmt.Sprintf("%q (use --json/--file)", name) + } + required := "" + if slices.Contains(schema.Required, name) { + required = " (required)" + } + fmt.Fprintf(&text, " %s <%s>%s %s\n", flag, parameterType(raw), required, strings.Join(strings.Fields(parameter.Description), " ")) } - return callErr - default: - return fmt.Errorf("unknown MCP subcommand %q; run mcp-%s --help", args[0], c.connection.name) } + text.WriteString("\nEvery parameter flag takes one value; --name=value is also accepted.\nObjects, arrays and ambiguous types take JSON. Optional defaults stay omitted.\nUse --json '' or --file for a complete argument object,\nincluding nulls, unusual property names and parameters named help, json or file.\nThe upstream server validates the complete schema.\n\nUpstream declaration:\n") + if _, err := io.WriteString(output, text.String()); err != nil { + return err + } + return writeJSON(output, d.raw) } -func callArguments(ctx context.Context, args []string, directory string) (json.RawMessage, error) { +func rawArguments(ctx context.Context, args []string, directory string) (json.RawMessage, error) { if err := ctx.Err(); err != nil { return nil, err } - if len(args) == 0 { - return json.RawMessage(`{}`), nil - } - if len(args) != 2 || (args[0] != "--json" && args[0] != "--file") { - return nil, fmt.Errorf("expected exactly one --json '' or --file ; quote JSON as one shell argument") + if len(args) != 2 { + return nil, fmt.Errorf("expected exactly one --json '' or --file ; cannot mix raw input with parameter flags") } if args[0] == "--json" { return json.RawMessage(args[1]), nil diff --git a/tools/mcp/command_test.go b/tools/mcp/command_test.go new file mode 100644 index 000000000..dcdf2f4da --- /dev/null +++ b/tools/mcp/command_test.go @@ -0,0 +1,150 @@ +package mcp + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "strings" + "sync/atomic" + "testing" + + coretool "github.com/chainreactors/cyber/core/tool" +) + +func TestDiscoveredCLIMapsSchemaFlagsWithoutChangingValues(t *testing.T) { + const inputSchema = `{"type":"object","required":["addr"],"properties":{ + "addr":{"type":"string","description":"Function address"}, + "count":{"type":"integer"},"ratio":{"type":"number"},"enabled":{"type":"boolean"}, + "nested":{"type":"object"},"items":{"type":"array"},"nothing":{"type":"null"}, + "nullable":{"anyOf":[{"type":"string"},{"type":"null"}]}, + "nullableType":{"type":["string","null"]}, + "choice":{"oneOf":[{"type":"string"},{"type":"integer"}]}, + "reference":{"$ref":"#/$defs/name"},"optional":{"type":"string","default":"upstream-owned"}, + "help":{"type":"string"},"json":{"type":"string"},"file":{"type":"string"}, + "unusual.name":{"type":"string"} + },"$defs":{"name":{"type":"string"}},"additionalProperties":false}` + var calls atomic.Int32 + var received atomic.Value + upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodDelete { + w.WriteHeader(http.StatusOK) + return + } + var request struct { + ID json.RawMessage `json:"id"` + Method string `json:"method"` + Params json.RawMessage `json:"params"` + } + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + t.Error(err) + return + } + w.Header().Set("Content-Type", "application/json") + var result string + switch request.Method { + case "initialize": + result = `{"protocolVersion":"2025-03-26","capabilities":{"tools":{}},"serverInfo":{"name":"cli-test","version":"1"}}` + case "notifications/initialized": + w.WriteHeader(http.StatusAccepted) + return + case "tools/list": + result = `{"tools":[{"name":"decompile","description":"Decompile a function","inputSchema":` + inputSchema + `}` + for _, name := range []string{"tools", "schema", "call", "help", "--help", "--list", "-h", "--"} { + result += fmt.Sprintf(`,{"name":%q,"inputSchema":{"type":"object"}}`, name) + } + result += `]}` + case "tools/call": + calls.Add(1) + received.Store(string(request.Params)) + result = `{"content":[{"type":"text","text":"ok"}]}` + default: + t.Errorf("unexpected request %s", request.Method) + return + } + _, _ = fmt.Fprintf(w, `{"jsonrpc":"2.0","id":%s,"result":%s}`, request.ID, result) + })) + defer upstream.Close() + c := openHTTP(t, ServerConfig{URL: upstream.URL}) + catalog, err := c.Discover(context.Background()) + if err != nil { + t.Fatal(err) + } + command := catalog.Command() + if command.Name != "ida" { + t.Fatalf("server alias changed: %q", command.Name) + } + for _, test := range []struct { + name string + args []string + want string + }{ + {"omission", []string{"--addr", "0x401000"}, `{"addr":"0x401000"}`}, + {"empty string", []string{"--addr="}, `{"addr":""}`}, + {"leading dashes", []string{"--addr=--literal"}, `{"addr":"--literal"}`}, + {"typed values", []string{"--addr", "two words", "--count", "9007199254740993", "--ratio", "1.2300e+04", "--enabled", "false", "--nested", `{"inner":[null,true,9007199254740993]}`, "--items", `[1,"x",null]`, "--nothing", "null"}, `{"addr":"two words","count":9007199254740993,"ratio":1.2300e+04,"enabled":false,"nested":{"inner":[null,true,9007199254740993]},"items":[1,"x",null],"nothing":null}`}, + {"nullable strings and unions", []string{"--addr", "x", "--nullable", "null", "--nullableType", "hello", "--choice", "42", "--reference", `"ref value"`}, `{"addr":"x","nullable":"null","nullableType":"hello","choice":42,"reference":"ref value"}`}, + {"raw arbitrary fields and nulls", []string{"--json", `{"addr":"x","nullable":null,"help":"h","json":"j","file":"f","unusual.name":"u","extra":9007199254740993}`}, `{"addr":"x","nullable":null,"help":"h","json":"j","file":"f","unusual.name":"u","extra":9007199254740993}`}, + } { + t.Run(test.name, func(t *testing.T) { + var output bytes.Buffer + _, err := command.Run(context.Background(), &coretool.Execution{Args: append([]string{"decompile"}, test.args...), Stdout: &output}) + if err != nil || !json.Valid(bytes.TrimSpace(output.Bytes())) { + t.Fatalf("call: %s %v", &output, err) + } + var request struct { + Name string `json:"name"` + Arguments map[string]json.RawMessage `json:"arguments"` + } + var want map[string]json.RawMessage + if json.Unmarshal([]byte(received.Load().(string)), &request) != nil || json.Unmarshal([]byte(test.want), &want) != nil || request.Name != "decompile" || len(request.Arguments) != len(want) { + t.Fatalf("arguments changed: %s", received.Load()) + } + for name, value := range want { + if !bytes.Equal(request.Arguments[name], value) { + t.Fatalf("%s changed: got %s, want %s", name, request.Arguments[name], value) + } + } + }) + } + before := calls.Load() + for _, args := range [][]string{ + {}, {"--unknown", "x"}, {"--addr", "x", "--addr", "y"}, {"--addr"}, {"--addr", "--enabled"}, + {"0x401000"}, {"--addr", "x", "--count", "1.5"}, {"--addr", "x", "--ratio", `"1"`}, + {"--addr", "x", "--enabled", "yes"}, {"--addr", "x", "--nested", "[]"}, {"--addr", "x", "--items", "{}"}, + {"--addr", "x", "--choice", "unquoted"}, {"--addr", "x", "--help", "value"}, + {"--addr", "x", "--file", "args.json"}, {"--json", "{}", "--addr", "x"}, + } { + if _, err := command.Run(context.Background(), &coretool.Execution{Args: append([]string{"decompile"}, args...)}); err == nil { + t.Fatalf("invalid flags accepted: %q", args) + } + } + var help bytes.Buffer + if _, err := command.Run(context.Background(), &coretool.Execution{Args: []string{"decompile", "--help"}, Stdout: &help}); err != nil { + t.Fatal(err) + } + for _, text := range []string{"--addr (required)", "Function address", "--nullable ", "--choice ", `"help" (use --json/--file)`, inputSchema} { + if !strings.Contains(help.String(), text) { + t.Fatalf("help lost %q: %s", text, &help) + } + } + if calls.Load() != before { + t.Fatal("invalid flags or help called a business tool") + } + // CLI control words never rename or hide upstream tool identities. + for _, name := range []string{"tools", "schema", "call", "help", "--help", "--list", "-h", "--"} { + args := []string{name} + if strings.HasPrefix(name, "-") { + args = []string{"--", name} + } + if _, err := command.Run(context.Background(), &coretool.Execution{Args: args}); err != nil { + t.Fatalf("source tool %q was inaccessible: %v", name, err) + } + var request struct{ Name string } + if json.Unmarshal([]byte(received.Load().(string)), &request) != nil || request.Name != name { + t.Fatalf("source tool name changed: %s", received.Load()) + } + } +} diff --git a/tools/mcp/connection_test.go b/tools/mcp/connection_test.go index 0f4456bb1..ed9bd7abc 100644 --- a/tools/mcp/connection_test.go +++ b/tools/mcp/connection_test.go @@ -97,15 +97,15 @@ func TestHTTPDiscoveryAndInvocationPreserveWireValues(t *testing.T) { } var output bytes.Buffer command := catalog.Command() - _, err = command.Run(context.Background(), &coretool.Execution{Args: []string{"call", "decompile", "--json", `{"address":9007199254740993}`}, Stdout: &output}) + _, err = command.Run(context.Background(), &coretool.Execution{Args: []string{"decompile", "--address", "9007199254740993"}, Stdout: &output}) if err == nil || output.String() != richResult+"\n" { t.Fatalf("CLI did not preserve complete failed result: %s %v", &output, err) } before := calls.Load() for _, args := range [][]string{ - {"call", "other"}, {"call", "decompile", "--json", "{}", "--file", "x"}, - {"call", "decompile", "--json"}, {"call", "decompile", "--json", "[]"}, - {"tools", "unexpected"}, {"schema"}, {"unknown"}, + {"other"}, {"decompile", "--json", "{}", "--file", "x"}, + {"decompile", "--json"}, {"decompile", "--json", "[]"}, + {"--list", "unexpected"}, {"schema"}, {"unknown"}, {"--"}, } { if _, err := command.Run(context.Background(), &coretool.Execution{Args: args, Stdout: &output}); err == nil { t.Fatalf("invalid CLI input accepted: %q", args) @@ -115,7 +115,7 @@ func TestHTTPDiscoveryAndInvocationPreserveWireValues(t *testing.T) { t.Fatal("invalid or excluded CLI call reached upstream") } output.Reset() - if _, err := command.Run(context.Background(), &coretool.Execution{Args: []string{"call", "decompile", "--help"}, Stdout: &output}); err != nil || !strings.Contains(output.String(), schema) { + if _, err := command.Run(context.Background(), &coretool.Execution{Args: []string{"decompile", "--help"}, Stdout: &output}); err != nil || !strings.Contains(output.String(), schema) || !strings.Contains(output.String(), "--address ") { t.Fatalf("generated tool help lost schema: %s %v", &output, err) } if err := c.Close(context.Background()); err != nil || deletes.Load() != 1 { From c210a72fe4647af46a7aa07debb85bb74f0ae98a Mon Sep 17 00:00:00 2001 From: M09Ic Date: Sun, 11 Oct 2026 14:00:19 +0800 Subject: [PATCH 3/7] test(mcp): verify bash bridge with real JADX decompilation --- docs/mcp.md | 31 ++++++ exts/mcp/jadx_integration_test.go | 162 ++++++++++++++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 exts/mcp/jadx_integration_test.go diff --git a/docs/mcp.md b/docs/mcp.md index adce82b66..a2344ec89 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -142,6 +142,37 @@ legacy GUI 的 `/mcp` 是内部 RPC 接口,需要通过 stdio proxy,不能 也可以连接已安装的 REA MCP 服务,复用其 Hopper / Ghidra / IDA provider:配置 command 为 `npx`、args 为 `["rea-agents", "mcp"]`,按 [REA provider 文档](https://github.com/morluto/rea#choosing-a-deep-analysis-provider)配置分析引擎。Windows 上填写可直接执行的入口;npm 的 `.cmd` shim 可改为 `node` 加已安装包的入口路径。 +## 真实开源引擎验证:JADX + +可用 REA 已集成的 [jadx-headless-mcp v0.7.1](https://github.com/1013503897/jadx-headless-mcp/releases/tag/v0.7.1) 验证此扩展。它用 jadx-core 实际反编译 APK,直接提供 stdio MCP;需要现有 Java 17+。固定输入为开源 [Appium ApiDemos v6.0.18](https://github.com/appium/android-apidemos/releases/tag/v6.0.18) 的 debug APK,仅执行静态分析。 + +配置服务别名 `jadx`,command 为现有 Java,args 为 `["-Xmx512m", "-jar", "/absolute/path/jadx-headless-mcp-0.7.1-all.jar"]`。在同一个长期运行的 harness Profile 的 bash 中执行: + +```sh +jadx --list +jadx get_class_source --help +jadx load_apk --path '/absolute/path/ApiDemos-debug.apk' --threads 1 --resources lite +jadx list_classes --prefix io.appium.android.apis --offset 0 --limit 3 +jadx get_class_source --class_name io.appium.android.apis.ApiDemos --max_bytes 32768 --smali_fallback false +jadx get_method_by_name --class_name io.appium.android.apis.ApiDemos --method_name onCreate --smali_fallback false +jadx unload_apk +``` + +可重复运行的真实引擎 lane 是 [TestJADXRealBashWorkflow](../exts/mcp/jadx_integration_test.go)。调用链为 **AI bash 工具边界 → CommandRegistry → MCP ext → 上游 JADX MCP → jadx-core**。测试检查发布包与 APK 的固定 SHA-256,再验证工具发现、动态帮助、无 APK 时的失败状态、含空格路径、会话状态、整型分页参数、布尔参数、实际 Java 类与方法、命名参数和完整 JSON 的结果一致、变量/管道/重定向、卸载和连接清理。它不会下载引擎、安装 Java 或执行 APK;默认不配置环境时跳过。 + +准备文件后,PowerShell 中运行: + +```powershell +$env:CYBER_MCP_JAVA = 'D:\tools\existing-jdk\bin\java.exe' +$env:CYBER_MCP_JADX_JAR = 'D:\tools\jadx-headless-mcp-0.7.1-all.jar' +$env:CYBER_MCP_JADX_APK = 'D:\targets\ApiDemos-debug.apk' +go test -v ./exts/mcp -run '^TestJADXRealBashWorkflow$' -count=1 +``` + +JAR SHA-256 为 `6e5eacf500b64292bfb73c49797c1958f6ee44646e43e868039ae7feb573ff75`,与 [REA 的发布身份](https://github.com/morluto/rea/blob/main/src/android/JadxRelease.ts)一致;APK SHA-256 为 `a9eecf37b26cd084855c530db81c2bb1b91f4c1b095a04f47aa7c20e2791f686`,与 Appium 发布资产摘要一致。环境配置不完整或摘要不匹配会失败。 + +2026-10-11 在 Windows x64、JBR 21.0.7 上通过此 lane:发现 26 个工具,索引 2,876 个顶层类,实际返回 `ApiDemos` 的 Java 类与 `onCreate` 方法。普通运行耗时 13.67 秒。此结果验证 stdio 接入的真实 JADX;JADX HTTP 模式和其他分析引擎不由此 lane 建立覆盖。 + ## 边界和验证 目录是加载时的快照;上游工具变化后需重建 Profile。扩展处理 tools,不暴露 resources/prompts、sampling、elicitation 或 legacy HTTP+SSE,也不自动把服务 instructions 变成系统提示词。完整 schema 提供给调用方,命名参数转换不是完整 JSON Schema 验证器;完整 JSON 输入只检查 object,上游负责业务参数校验。 diff --git a/exts/mcp/jadx_integration_test.go b/exts/mcp/jadx_integration_test.go new file mode 100644 index 000000000..2b2b8d6b4 --- /dev/null +++ b/exts/mcp/jadx_integration_test.go @@ -0,0 +1,162 @@ +package mcp + +import ( + "context" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" + "time" + + coretool "github.com/chainreactors/cyber/core/tool" + mcptools "github.com/chainreactors/cyber/tools/mcp" + "mvdan.cc/sh/v3/syntax" +) + +// This opt-in lane runs REA's audited, unmodified open-source JADX engine. +// It neither downloads tools nor uses a simulated MCP server or decompiler. +func TestJADXRealBashWorkflow(t *testing.T) { + jar, apk := os.Getenv("CYBER_MCP_JADX_JAR"), os.Getenv("CYBER_MCP_JADX_APK") + if jar == "" && apk == "" { + t.Skip("real JADX requires CYBER_MCP_JADX_JAR and CYBER_MCP_JADX_APK; see docs/mcp.md") + } + if jar == "" || apk == "" || !filepath.IsAbs(jar) || !filepath.IsAbs(apk) { + t.Fatal("provide absolute paths to both JADX 0.7.1 and ApiDemos v6.0.18 debug APK") + } + for path, digest := range map[string]string{ + jar: "6e5eacf500b64292bfb73c49797c1958f6ee44646e43e868039ae7feb573ff75", + apk: "a9eecf37b26cd084855c530db81c2bb1b91f4c1b095a04f47aa7c20e2791f686", + } { + data, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + actual := sha256.Sum256(data) + if hex.EncodeToString(actual[:]) != digest { + t.Fatalf("artifact %s does not match the audited fixture SHA-256", path) + } + t.Logf("verified artifact %s sha256=%s", filepath.Base(path), digest) + } + java := os.Getenv("CYBER_MCP_JAVA") + if java == "" { + java = "java" + } + h := assembly(t, Config{MCPServers: map[string]mcptools.ServerConfig{ + "jadx": {Command: java, Args: []string{"-Xmx512m", "-jar", jar}, TimeoutSeconds: 90}, + }}) + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Minute) + defer cancel() + if err := h.set.Load(ctx); err != nil { + t.Fatal(err) + } + // Exercise caller paths containing spaces through real shell parsing. + input, err := os.ReadFile(apk) + if err != nil { + t.Fatal(err) + } + selectedAPK := filepath.Join(h.dir, "ApiDemos with spaces.apk") + if err := os.WriteFile(selectedAPK, input, 0600); err != nil { + t.Fatal(err) + } + quotedAPK, err := syntax.Quote(selectedAPK, syntax.LangBash) + if err != nil { + t.Fatal(err) + } + // Use the actual AI tool boundary and inspect its unabridged redirected output. + run := func(command string, fails bool) []byte { + t.Helper() + arguments, err := json.Marshal(map[string]any{"command": command + " > result.json 2> diagnostics.txt", "timeout": 90}) + if err != nil { + t.Fatal(err) + } + started := time.Now() + result, err := h.tools.ExecuteTool(ctx, "bash", string(arguments)) + if err != nil || result == nil || result.IsError != fails { + diagnostics, _ := os.ReadFile(filepath.Join(h.dir, "diagnostics.txt")) + t.Fatalf("bash command %q: %v %s %s", command, err, coretool.ResultText(result), diagnostics) + } + output, err := os.ReadFile(filepath.Join(h.dir, "result.json")) + if err != nil { + t.Fatal(err) + } + t.Logf("bash %s: expected_failure=%t bytes=%d elapsed=%s", command, fails, len(output), time.Since(started).Round(time.Millisecond)) + return output + } + text := func(raw []byte) string { + t.Helper() + var result struct { + Content []struct{ Type, Text string } `json:"content"` + } + if err := json.Unmarshal(raw, &result); err != nil || len(result.Content) == 0 || result.Content[0].Type != "text" { + t.Fatalf("invalid real MCP result: %s %v", raw, err) + } + return result.Content[0].Text + } + var tools []struct{ Name string } + if err := json.Unmarshal(run("jadx --list", false), &tools); err != nil || len(tools) < 20 { + t.Fatalf("real catalog missing tools: %v %v", tools, err) + } + t.Logf("discovered %d real JADX tools", len(tools)) + help := string(run("jadx get_class_source --help", false)) + for _, flag := range []string{"--class_name (required)", "--max_bytes ", "--smali_fallback ", `"inputSchema"`} { + if !strings.Contains(help, flag) { + t.Fatalf("live schema did not generate %q: %s", flag, help) + } + } + if initial := text(run("jadx status", false)); !strings.Contains(initial, "EMPTY") { + t.Fatalf("unexpected initial engine state: %s", initial) + } + failed := run("jadx get_class_source --class_name io.appium.android.apis.ApiDemos", true) + var failure struct{ IsError bool } + if json.Unmarshal(failed, &failure) != nil || !failure.IsError { + t.Fatalf("upstream failure lost its raw result or shell status: %s", failed) + } + loaded := text(run("jadx load_apk --path "+quotedAPK+" --threads 1 --resources lite", false)) + var state struct { + State string `json:"state"` + ClassCount int `json:"class_count"` + Threads int `json:"threads"` + } + if json.Unmarshal([]byte(loaded), &state) != nil || state.State != "LOADED" || state.ClassCount == 0 || state.Threads != 1 { + t.Fatalf("APK indexing or integer mapping failed: %s", loaded) + } + t.Logf("indexed %d top-level classes", state.ClassCount) + info := text(run("jadx get_app_info", false)) + if !strings.Contains(info, "io.appium.android.apis") { + t.Fatalf("wrong public APK analyzed: %s", info) + } + page := text(run("jadx list_classes --prefix io.appium.android.apis --offset 0 --limit 3", false)) + var classes struct { + Limit int + Items []string + } + if json.Unmarshal([]byte(page), &classes) != nil || classes.Limit != 3 || len(classes.Items) != 3 { + t.Fatalf("integer pagination flags failed: %s", page) + } + source := text(run("class=io.appium.android.apis.ApiDemos; jadx get_class_source --class_name \"$class\" --max_bytes 32768 --smali_fallback false | { read -r result; printf '%s\\n' \"$result\"; }", false)) + for _, expected := range []string{"package io.appium.android.apis;", "class ApiDemos", "void onCreate(", "setListAdapter("} { + if !strings.Contains(source, expected) { + t.Fatalf("actual Java decompilation missing %q: %s", expected, source) + } + } + rawSource := text(run(`jadx get_class_source --json '{"class_name":"io.appium.android.apis.ApiDemos","max_bytes":32768,"smali_fallback":false}'`, false)) + if rawSource != source { + t.Fatal("named scalar flags and raw JSON returned different Java source") + } + method := text(run("jadx get_method_by_name --class_name io.appium.android.apis.ApiDemos --method_name onCreate --smali_fallback false", false)) + if !strings.Contains(method, "void onCreate(") || !strings.Contains(method, "setListAdapter(") { + t.Fatalf("method decompilation failed: %s", method) + } + if unloaded := text(run("jadx unload_apk", false)); !strings.Contains(unloaded, "EMPTY") { + t.Fatalf("upstream resource was not unloaded: %s", unloaded) + } + if final := text(run("jadx status", false)); !strings.Contains(final, "EMPTY") { + t.Fatalf("upstream session state was not preserved: %s", final) + } + if err := h.set.Close(ctx); err != nil || h.commands.Has("jadx") { + t.Fatalf("extension did not finish cleanup and revoke the command: %v", err) + } +} From e33f54d3c8d246a08e9e9193262d1ee6f89a05f0 Mon Sep 17 00:00:00 2001 From: M09Ic Date: Sun, 11 Oct 2026 14:38:43 +0800 Subject: [PATCH 4/7] feat(mcp): add live model host and JADX verification --- docs/mcp.md | 23 ++++ docs/verification/mcp-jadx-llm.md | 83 ++++++++++++++ examples/mcp-agent/main.go | 179 ++++++++++++++++++++++++++++++ 3 files changed, 285 insertions(+) create mode 100644 docs/verification/mcp-jadx-llm.md create mode 100644 examples/mcp-agent/main.go diff --git a/docs/mcp.md b/docs/mcp.md index a2344ec89..cae76ba78 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -173,6 +173,29 @@ JAR SHA-256 为 `6e5eacf500b64292bfb73c49797c1958f6ee44646e43e868039ae7feb573ff7 2026-10-11 在 Windows x64、JBR 21.0.7 上通过此 lane:发现 26 个工具,索引 2,876 个顶层类,实际返回 `ApiDemos` 的 Java 类与 `onCreate` 方法。普通运行耗时 13.67 秒。此结果验证 stdio 接入的真实 JADX;JADX HTTP 模式和其他分析引擎不由此 lane 建立覆盖。 +## 真实 LLM 驱动的分析 + +[examples/mcp-agent](../examples/mcp-agent/main.go) 把 MCP ext、现有 `StandardLoop` 和 Session 装入同一个长期运行的 harness。模型通过普通 bash 工具发现命令、加载文件、查询和卸载;入口支持任意 MCP 配置和用户任务文件。没有预写的分析调用序列,也不需要新的 JADX/IDA adapter。 + +先准备隔离的任务目录、目标文件、UTF-8 任务文件和上述 `mcp.json`。在已有环境中设置 `CYBER_MCP_API_KEY` 后运行: + +```sh +go run ./examples/mcp-agent \ + -config /absolute/path/mcp.json \ + -dir /absolute/path/task-workspace \ + -task /absolute/path/task.txt \ + -base-url https://your-provider.example/v1 \ + -model your-tool-calling-model \ + -trace /absolute/path/new-events.jsonl \ + -max-turns 40 -timeout 15m +``` + +任务应指定输入文件、分析问题、证据要求,以及显式卸载本次打开的分析资源。入口把最终回答写到 stdout,工具调用、用量、耗时和 harness 关闭状态写到 stderr。可选 trace 使用新的文件,保存完成后的 AOP 消息、工具参数/结果和生命周期事件,略去逐 token delta。最大模型决策数和总 deadline 由入口限制。 + +入口在创建工具或子进程之前取出并移除专用密钥环境变量,provider 在内存中持有凭据;不开启 HTTP/provider 原始帧捕获。trace 和最终输出遮蔽已知密钥的明文值。trace 包含本地任务和分析证据,应按实际输入管理。任务目录不是安全沙箱;示例提供真实 bash 能力,模型的权限由宿主环境决定。它不安装引擎或运行 APK。 + +真实模型驱动的 UnCrackable / ApiDemos 分析、独立核验、失败恢复和模型结论遗漏见[验证记录](verification/mcp-jadx-llm.md)。 + ## 边界和验证 目录是加载时的快照;上游工具变化后需重建 Profile。扩展处理 tools,不暴露 resources/prompts、sampling、elicitation 或 legacy HTTP+SSE,也不自动把服务 instructions 变成系统提示词。完整 schema 提供给调用方,命名参数转换不是完整 JSON Schema 验证器;完整 JSON 输入只检查 object,上游负责业务参数校验。 diff --git a/docs/verification/mcp-jadx-llm.md b/docs/verification/mcp-jadx-llm.md new file mode 100644 index 000000000..87a418e51 --- /dev/null +++ b/docs/verification/mcp-jadx-llm.md @@ -0,0 +1,83 @@ +# MCP CLI:真实 LLM 与 JADX 验证 + +2026-10-11 在 Windows x64 上,用 [mcp-agent](../../examples/mcp-agent/main.go) 完成两个实际模型驱动的静态逆向任务。MCP 命令接入、模型调用、证据返回、状态保持和清理均通过;模型的最终文字仍需要事实核对,下文保留具体遗漏。 + +调用链为 `gpt-6.1-sol → StandardLoop → bash → CommandRegistry → MCP ext → jadx-headless-mcp → jadx-core`。模型自行选择命令和参数;没有模拟 provider、模拟反编译器或预写工具调用序列。宿主使用现有 Session/Loop extensions,不安装 delegation tools。 + +## 输入与环境 + +- OpenAI-compatible endpoint:`https://api.chainreactors.cn/v1`,模型 `gpt-6.1-sol`。先实际验证 function tool calling,再运行任务。凭据只由专用环境变量传入,创建工具前从环境移除,未提交到仓库。 +- 现有 JBR 21.0.7;没有安装 Java、Android emulator 或其他前置软件。 +- [jadx-headless-mcp v0.7.1](https://github.com/1013503897/jadx-headless-mcp/releases/tag/v0.7.1),沿用 REA 的引擎选择,原始 JAR SHA-256:`6e5eacf500b64292bfb73c49797c1958f6ee44646e43e868039ae7feb573ff75`。启动参数 `-Xmx512m -jar `,单次 MCP 调用超时 90 秒。 +- 每个任务独立工作目录、harness 和 stdio 连接;输入统一复制为 `target.apk`。模型只获知目标及问题,没有读取源码或 walkthrough 的工具调用。 + +| 输入 | 固定来源 | SHA-256 | +| --- | --- | --- | +| OWASP UnCrackable Level 1 | [MASTG commit 02ffd85](https://github.com/OWASP/mastg/blob/02ffd85fb74383ec2a30b42866d38f89d72c0ead/Crackmes/Android/Level_01/UnCrackable-Level1.apk) | `1da8bf57d266109f9a07c01bf7111a1975ce01f190b9d914bcd3ae3dbef96f21` | +| Appium ApiDemos debug 6.0.18 | [发布资产](https://github.com/appium/android-apidemos/releases/tag/v6.0.18) | `a9eecf37b26cd084855c530db81c2bb1b91f4c1b095a04f47aa7c20e2791f686` | + +## 任务与实际结果 + +| 任务 | 模型决策 | bash 调用 | API attempts | 已报告 tokens | 耗时 | +| --- | ---: | ---: | ---: | ---: | ---: | +| UnCrackable:混淆类追踪、环境检查、加密口令恢复与本地正反例 | 10 | 16 | 14 | 90,719 | 521.50 秒 | +| ApiDemos:异步应用列表、缓存、广播、取消、释放与 UI 流程 | 13 | 41 | 16 | 181,251 | 448.31 秒 | + +两次 stop reason 均为 `completed`,退出码均为 0;模型都执行 `unload_apk` 并确认 `status` 为 `EMPTY`,宿主都报告 `harness_closed=true`。完成后这两次运行创建的 Java 和 host 进程均已退出。引擎发现 26 个工具,两个 APK 分别索引 6 和 2,876 个类。 + +API attempts 与模型决策不是同一指标。Loop 的 usage 累计分别记录 4 和 3 次 `usage_missing`;表中 tokens 只包含服务实际返回的用量,不能据此推算完整费用。原始 provider/HTTP 帧未开启。 + +### UnCrackable + +模型通过 manifest/main-activity、类/方法查询,追踪到: + +- `sg.vantagepoint.uncrackable1.MainActivity.onCreate` 调用 root 检查和 debuggable 检查。 +- `sg.vantagepoint.a.c` 检查 PATH 中的 `su`、`Build.TAGS` 中的 `test-keys` 及固定 Superuser/`su` 路径。 +- `sg.vantagepoint.a.b.a` 检查 `(ApplicationInfo.flags & 2) != 0`。这是 `FLAG_DEBUGGABLE`,不能据此判断 debugger 当前已附加。 +- `MainActivity.a` 创建不可取消的对话框,OK 回调调用 `System.exit(0)`;静态调用不代表设备上已实际退出。 +- `MainActivity.verify → sg.vantagepoint.uncrackable1.a.a → sg.vantagepoint.a.a.a` 完成输入检查、十六进制 key 解码、Base64 密文解码和 AES 解密。 + +提取的 key 是 `8d127684cbc37c17616d806cf50473cc`,密文是 `5UJiFctbmgbDoLXmpL12mkno8HT4Lv8dlat8FxR2GOc=`。模型执行本地 Python verifier,恢复 `I want to believe`,并保存 `solution.json`;正例为 true,单字符改动 `I want to believX` 为 false。 + +独立核验重新从原始工具证据提取 key/密文,使用 PyCryptodome 解密并验证 PKCS#7 padding、将恢复的明文重新加密后与原密文逐字节比较,再验证单字符反例不能产生相同密文。全部通过。源码实际调用是 `Cipher.getInstance("AES")`,没有显式 IV;ECB/padding 和默认字符集仍属于 Android provider/运行环境因素,本地 oracle 明确采用 AES-ECB/PKCS#7 与 UTF-8。没有执行 APK。 + +### ApiDemos LoaderCustom + +模型从 2,876 个类中定位 `io.appium.android.apis.app.LoaderCustom` 及内部类,查询方法体与 incoming references,并保存 `findings.json`。实际恢复的流程包括: + +`Activity → AppListFragment → initLoader(0) → AppListLoader.loadInBackground → AppEntry → AppListAdapter → UI`。 + +模型确认应用枚举参数 `8704 (0x2200)`、label 的 Collator 排序、缓存交付、`takeContentChanged / mApps == null / configChange` 的 force-load 条件、五种 package/storage 广播、取消和 reset 清理、SearchView 到 Adapter filter 的调用。 + +它还发现 `onReleaseResources` 是空函数,`deliverResult` 在交付后对传入的新列表调用该 hook,没有释放此前缓存的列表。独立比对[发布 tag 对应源码](https://github.com/appium/android-apidemos/blob/3e716ee04ef3390284bfab761e28da8c15c08143/app/src/main/java/io/appium/android/apis/app/LoaderCustom.java)确认原代码为 `List oldApps = apps`;这不是仅靠反编译命名推断的异常。原始源码 SHA-256:`953727ab2d8d2d274bde674f47fd6047f11ee5f55428e9672d0a1cadfa5f0cc9`,只用于模型运行后的核验。 + +独立核对九个有限检查点通过:loader ID、枚举 flags、排序、条件刷新、空 release hook、释放参数、reset 注销、搜索委托以及缓存图标分支。模型报告有两项需要补充/纠正: + +- 对“APK 消失时返回默认图标”的描述过于宽泛。`mIcon != null && mMounted` 时直接返回缓存,不重新执行 `File.exists()`;label 也仅在 `mLabel == null || !mMounted` 时重新检查。不能声称每次调用都即时检测文件消失。 +- 报告给出了配置 mask `772 (0x304)`,没有补全其字段名。固定源码说明对应 locale、UI mode、screen layout,density 单独比较;这些名称来自核验源码,不能归功于模型已自行证明。 + +因此本次结果建立了真实模型与工具基础设施的完整闭环,不能作为“任意逆向任务的结论均自动正确”的证明。 + +## 失败与恢复 + +- UnCrackable 中一次 `get_strings --max_bytes` 被 schema 参数校验拒绝;模型查看帮助后改用 `--limit` 并继续。失败通过 bash 状态返回,没有丢失诊断。 +- ApiDemos 中一次 `find` 命中了 Windows FIND,返回参数错误;模型使用已经列出的文件继续。 +- 上游 `get_class_source` 对部分内部类查询返回空 text 且未置 `isError`。模型转向顶层源码和带 `$` 的方法查询,得到所需方法体。扩展保留了该原始结果,没有伪造源码或成功覆盖。 +- `loadInBackground` 的 incoming method references 为零,模型没有把它解释成“从不调用”;class references 与实际方法体用于交叉核对。框架回调、反射、动态执行仍有限制。 + +## 复现与记录 + +按 [MCP 文档](../mcp.md#真实-llm-驱动的分析)准备服务配置与现有引擎,使用 `examples/mcp-agent`。给每个任务单独的目录、trace 文件和 APK。任务文件要求仅使用 bash/JADX、不得访问网络/源码/兄弟目录、保存 class/method 证据、区分静态与运行时结论,最后 unload 并确认 EMPTY。 + +UnCrackable 的问题为入口和环境检查、完整加密检查链、恢复口令、执行正反例 verifier;ApiDemos 的问题为 LoaderCustom 跨类数据流、刷新条件/广播、停止/取消/reset/释放的实际行为、图标/label/search 逻辑。只给问题,不给已知答案。命令参数为 `-model gpt-6.1-sol -max-turns 40 -timeout 15m`,provider 输出上限 8,192 tokens。 + +将 host 的 stdout/stderr 放在任务目录之外,避免与模型自行生成的同名报告相互覆盖。本次 UnCrackable 的 host stdout 与模型自建 `report.md` 同名;完整分析报告已从保留的工具调用原文恢复,最终回答从完成消息恢复,原始 trace 没有受影响。 + +完整 trace、任务、模型产物与独立核验脚本留在本地,没有提交 APK/JAR、凭据或大量执行产物。原始 AOP JSONL 的 SHA-256: + +| 记录 | SHA-256 | +| --- | --- | +| UnCrackable events.jsonl | `de7f4ece36525586ebb4e64d717410fa92eeb8583ff4478964df20a32cebc5ea` | +| ApiDemos events.jsonl | `efb2316d9eee704d7fed1ac49f9d1b52504ae7b9f9bed93676b034dc5bdefd07` | + +本次只验证 Windows 上 stdio JADX 与指定模型接口的静态分析。没有建立 Android runtime、JADX HTTP、IDA、Hopper 或 Ghidra 的执行覆盖。与固定调用序列的 [真实引擎 integration lane](../../exts/mcp/jadx_integration_test.go)互补,真实 LLM 任务不进入默认 CI,也不以模拟结果替代真实模型行为。 diff --git a/examples/mcp-agent/main.go b/examples/mcp-agent/main.go new file mode 100644 index 000000000..181242c9c --- /dev/null +++ b/examples/mcp-agent/main.go @@ -0,0 +1,179 @@ +// Command mcp-agent runs a real model with MCP commands in a persistent bash host. +package main + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "flag" + "fmt" + "io" + "os" + "os/signal" + "strings" + "sync" + "syscall" + "time" + + "github.com/chainreactors/cyber/agent" + "github.com/chainreactors/cyber/agent/provider" + agentsession "github.com/chainreactors/cyber/agent/session" + "github.com/chainreactors/cyber/aop" + "github.com/chainreactors/cyber/core/extension" + loopext "github.com/chainreactors/cyber/exts/agent" + mcpext "github.com/chainreactors/cyber/exts/mcp" + sessionext "github.com/chainreactors/cyber/exts/session" + terminalext "github.com/chainreactors/cyber/exts/terminal" + "github.com/chainreactors/cyber/pkg/harness" + "google.golang.org/protobuf/encoding/protojson" +) + +func main() { + configPath := flag.String("config", "", "MCP JSON config file (mcpServers)") + taskPath := flag.String("task", "", "UTF-8 task file") + directory := flag.String("dir", "", "isolated task working directory") + tracePath := flag.String("trace", "", "optional new AOP JSONL trace file") + baseURL := flag.String("base-url", "", "OpenAI-compatible API base URL") + model := flag.String("model", "", "model ID") + maxTurns := flag.Int("max-turns", 40, "maximum model decisions") + timeout := flag.Duration("timeout", 15*time.Minute, "whole task deadline") + flag.Parse() + // Hold transport credentials in memory before creating any tool or child. + key := os.Getenv("CYBER_MCP_API_KEY") + err := os.Unsetenv("CYBER_MCP_API_KEY") + if err == nil && (key == "" || *configPath == "" || *taskPath == "" || *directory == "" || *model == "" || *baseURL == "" || *maxTurns <= 0 || *timeout <= 0) { + err = fmt.Errorf("require CYBER_MCP_API_KEY, -config, -task, -dir, -base-url and -model; limits must be positive") + } + redact := func(value string) string { + if key == "" { + return value + } + return strings.ReplaceAll(value, key, "[redacted]") + } + if err == nil { + ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) + defer stop() + ctx, cancel := context.WithTimeout(ctx, *timeout) + defer cancel() + err = run(ctx, *configPath, *taskPath, *directory, *tracePath, *maxTurns, + provider.ProviderConfig{Provider: "openai", BaseURL: *baseURL, APIKey: key, Model: *model, MaxTokens: 8192, Timeout: 180}, redact) + } + if err != nil { + fmt.Fprintln(os.Stderr, redact(err.Error())) + os.Exit(1) + } +} + +func run(ctx context.Context, configPath, taskPath, directory, tracePath string, maxTurns int, llm provider.ProviderConfig, redact func(string) string) (resultErr error) { + data, err := os.ReadFile(configPath) + if err != nil { + return err + } + var config mcpext.Config + decoder := json.NewDecoder(bytes.NewReader(data)) + decoder.DisallowUnknownFields() + if err := decoder.Decode(&config); err != nil { + return err + } + if err := decoder.Decode(new(any)); err != io.EOF || config.MCPServers == nil { + return fmt.Errorf("MCP config requires one JSON object with mcpServers") + } + task, err := os.ReadFile(taskPath) + if err != nil { + return err + } + if info, err := os.Stat(directory); err != nil || !info.IsDir() { + return fmt.Errorf("task directory must already exist") + } + var trace *os.File + if tracePath != "" { + trace, err = os.OpenFile(tracePath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0600) + if err != nil { + return err + } + defer func() { resultErr = errors.Join(resultErr, trace.Close()) }() + } + // Select the existing loop and session extensions without delegation tools. + sessions := sessionext.New(agentsession.Config{PrimarySessionID: "main"}) + h, err := harness.New(harness.Config{ + Base: harness.BaseConfig{ + Directory: directory, SkillExclude: []string{"cyber"}, + Terminal: terminalext.Config{Timeout: 90}, + Provider: provider.StartupConfig{Mode: provider.StartupRequired, Config: llm}, + }, + Extensions: []extension.Extension{mcpext.New(config), loopext.New(agent.StandardLoop{}), sessions}, + }) + if err != nil { + return err + } + defer func() { + closeCtx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + closeErr := h.Close(closeCtx) + fmt.Fprintf(os.Stderr, "harness_closed=%t\n", closeErr == nil) + resultErr = errors.Join(resultErr, closeErr) + }() + if err := h.Load(ctx); err != nil { + return err + } + runtime := sessions.Runtime() + var mu sync.Mutex + var traceErr error + calls, failures := 0, 0 + sub := runtime.Observe(func(event *aop.Event) { + // Completed events retain the task and evidence without per-token deltas. + if event.GetMessageDelta() != nil || event.GetToolCallDelta() != nil { + return + } + mu.Lock() + defer mu.Unlock() + if trace != nil && traceErr == nil { + encoded, err := protojson.Marshal(event) + if err == nil { + _, err = fmt.Fprintln(trace, redact(string(encoded))) + } + traceErr = err + } + if call := event.GetToolCall(); call != nil { + calls++ + fmt.Fprintf(os.Stderr, "tool[%d] %s %s\n", calls, call.Name, redact(string(call.GetArguments().GetData()))) + } + if result := event.GetToolResult(); result != nil && result.IsError { + failures++ + fmt.Fprintf(os.Stderr, "tool_error call=%s\n", result.CallId) + } + }) + defer func() { resultErr = errors.Join(resultErr, sub.Close(context.Background())) }() + session, err := runtime.OpenSession(ctx, agentsession.SessionOptions{ID: "main"}) + if err != nil { + return err + } + started := time.Now() + turn, err := session.Run(ctx, agentsession.RunInput{Content: []*aop.Content{aop.Text(string(task))}, MaxTurns: maxTurns}) + if err != nil { + return err + } + result, runErr := turn.Wait() + if result != nil { + fmt.Println(redact(result.Output)) + mu.Lock() + metrics, err := json.Marshal(map[string]any{"model": llm.Model, "elapsed_seconds": time.Since(started).Seconds(), "decisions": result.Turns, "tool_calls": calls, "tool_errors": failures, "stop": result.Stop, "usage": result.TotalUsage}) + traceErr = errors.Join(traceErr, err) + mu.Unlock() + fmt.Fprintln(os.Stderr, string(metrics)) + if runErr == nil && result.Stop != agent.StopReasonCompleted { + runErr = fmt.Errorf("task did not complete: %s", result.Stop) + } + } + closeCtx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + reason := agentsession.SessionCloseCompleted + if runErr != nil { + reason = agentsession.SessionCloseError + } + closeErr := runtime.CloseSession(closeCtx, session.ID(), reason) + mu.Lock() + defer mu.Unlock() + return errors.Join(runErr, closeErr, traceErr) +} From 8f0f5aaedcf13abfcc74d7cc2106c59b01eabc25 Mon Sep 17 00:00:00 2001 From: M09Ic Date: Sun, 11 Oct 2026 15:26:48 +0800 Subject: [PATCH 5/7] docs(mcp): record live verification artifact cleanup --- docs/verification/mcp-jadx-llm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/verification/mcp-jadx-llm.md b/docs/verification/mcp-jadx-llm.md index 87a418e51..64ccb5a45 100644 --- a/docs/verification/mcp-jadx-llm.md +++ b/docs/verification/mcp-jadx-llm.md @@ -73,7 +73,7 @@ UnCrackable 的问题为入口和环境检查、完整加密检查链、恢复 将 host 的 stdout/stderr 放在任务目录之外,避免与模型自行生成的同名报告相互覆盖。本次 UnCrackable 的 host stdout 与模型自建 `report.md` 同名;完整分析报告已从保留的工具调用原文恢复,最终回答从完成消息恢复,原始 trace 没有受影响。 -完整 trace、任务、模型产物与独立核验脚本留在本地,没有提交 APK/JAR、凭据或大量执行产物。原始 AOP JSONL 的 SHA-256: +执行后按用户要求清理了完整 trace、任务、模型产物、独立核验脚本、下载的 APK/JAR、分片和临时程序(125 个文件,133,562,005 字节),也删除了临时 PR 描述与目录指针。仓库仅保留通用实现、可复现入口、固定引擎 integration lane 和这份验证摘要;没有提交凭据或二进制产物。以下原始 AOP JSONL 摘要在清理前记录,原始文件已删除: | 记录 | SHA-256 | | --- | --- | From e082a12ed164e789f1452d11ffbcb9144afd62ad Mon Sep 17 00:00:00 2001 From: M09Ic Date: Mon, 12 Oct 2026 14:10:47 +0800 Subject: [PATCH 6/7] chore(proto): regenerate pinned Connect bindings --- pkg/rpc/agent.connect.go | 2 +- pkg/rpc/aop.connect.go | 2 +- pkg/rpc/artifact.connect.go | 2 +- pkg/rpc/chat.connect.go | 2 +- pkg/rpc/config.connect.go | 2 +- pkg/rpc/scan.connect.go | 2 +- pkg/rpc/system.connect.go | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/rpc/agent.connect.go b/pkg/rpc/agent.connect.go index 9fb86d6dd..b312b9681 100644 --- a/pkg/rpc/agent.connect.go +++ b/pkg/rpc/agent.connect.go @@ -48,7 +48,7 @@ type AgentServiceClient interface { // connect.WithGRPC() or connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.example or https://acme.example/grpc). +// http://api.acme.com or https://acme.com/grpc). func NewAgentServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) AgentServiceClient { baseURL = strings.TrimRight(baseURL, "/") agentServiceMethods := File_rpc_agent_proto.Services().ByName("AgentService").Methods() diff --git a/pkg/rpc/aop.connect.go b/pkg/rpc/aop.connect.go index 8319b4efe..1ab8aa056 100644 --- a/pkg/rpc/aop.connect.go +++ b/pkg/rpc/aop.connect.go @@ -48,7 +48,7 @@ type AOPServiceClient interface { // connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.example or https://acme.example/grpc). +// http://api.acme.com or https://acme.com/grpc). func NewAOPServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) AOPServiceClient { baseURL = strings.TrimRight(baseURL, "/") aOPServiceMethods := File_rpc_aop_proto.Services().ByName("AOPService").Methods() diff --git a/pkg/rpc/artifact.connect.go b/pkg/rpc/artifact.connect.go index 39a166323..de5e10ec5 100644 --- a/pkg/rpc/artifact.connect.go +++ b/pkg/rpc/artifact.connect.go @@ -49,7 +49,7 @@ type ArtifactServiceClient interface { // connect.WithGRPC() or connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.example or https://acme.example/grpc). +// http://api.acme.com or https://acme.com/grpc). func NewArtifactServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ArtifactServiceClient { baseURL = strings.TrimRight(baseURL, "/") artifactServiceMethods := File_rpc_artifact_proto.Services().ByName("ArtifactService").Methods() diff --git a/pkg/rpc/chat.connect.go b/pkg/rpc/chat.connect.go index 5753d881e..ed8221be0 100644 --- a/pkg/rpc/chat.connect.go +++ b/pkg/rpc/chat.connect.go @@ -74,7 +74,7 @@ type SessionServiceClient interface { // connect.WithGRPC() or connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.example or https://acme.example/grpc). +// http://api.acme.com or https://acme.com/grpc). func NewSessionServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) SessionServiceClient { baseURL = strings.TrimRight(baseURL, "/") sessionServiceMethods := File_rpc_chat_proto.Services().ByName("SessionService").Methods() diff --git a/pkg/rpc/config.connect.go b/pkg/rpc/config.connect.go index b01338d22..d0fdddecd 100644 --- a/pkg/rpc/config.connect.go +++ b/pkg/rpc/config.connect.go @@ -67,7 +67,7 @@ type ConfigServiceClient interface { // connect.WithGRPC() or connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.example or https://acme.example/grpc). +// http://api.acme.com or https://acme.com/grpc). func NewConfigServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ConfigServiceClient { baseURL = strings.TrimRight(baseURL, "/") configServiceMethods := File_rpc_config_proto.Services().ByName("ConfigService").Methods() diff --git a/pkg/rpc/scan.connect.go b/pkg/rpc/scan.connect.go index efeb280a7..db9827e30 100644 --- a/pkg/rpc/scan.connect.go +++ b/pkg/rpc/scan.connect.go @@ -57,7 +57,7 @@ type ScanServiceClient interface { // or connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.example or https://acme.example/grpc). +// http://api.acme.com or https://acme.com/grpc). func NewScanServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ScanServiceClient { baseURL = strings.TrimRight(baseURL, "/") scanServiceMethods := File_rpc_scan_proto.Services().ByName("ScanService").Methods() diff --git a/pkg/rpc/system.connect.go b/pkg/rpc/system.connect.go index 14057fe0b..29e628afa 100644 --- a/pkg/rpc/system.connect.go +++ b/pkg/rpc/system.connect.go @@ -48,7 +48,7 @@ type SystemServiceClient interface { // connect.WithGRPC() or connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.example or https://acme.example/grpc). +// http://api.acme.com or https://acme.com/grpc). func NewSystemServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) SystemServiceClient { baseURL = strings.TrimRight(baseURL, "/") systemServiceMethods := File_rpc_system_proto.Services().ByName("SystemService").Methods() From 20bf91b570dab1e17fc303c54039ee300e0dd0fb Mon Sep 17 00:00:00 2001 From: M09Ic Date: Mon, 12 Oct 2026 14:59:23 +0800 Subject: [PATCH 7/7] test(jev): migrate replay fixtures to typed claims and evaluations --- .../e2e/fixtures/jev-history/live-events.json | 1021 +++++++++++------ .../fixtures/jev-history/live-protocol.jsonl | 156 +-- .../fixtures/jev-history/profile-events.json | 138 ++- 3 files changed, 810 insertions(+), 505 deletions(-) diff --git a/web/frontend/e2e/fixtures/jev-history/live-events.json b/web/frontend/e2e/fixtures/jev-history/live-events.json index 5d5731f30..63dcb900a 100644 --- a/web/frontend/e2e/fixtures/jev-history/live-events.json +++ b/web/frontend/e2e/fixtures/jev-history/live-events.json @@ -34,11 +34,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0441", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 1\",\"e41e913501b8667ec\":\"Synthetic fixture value 2\",\"0894c800598969656\":\"Synthetic fixture value 3\",\"defer\":\"Synthetic fixture value 4\",\"new\":\"Synthetic fixture value 5\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 1\",\"e41e913501b8667ec\":\"Synthetic fixture value 2\",\"0894c800598969656\":\"Synthetic fixture value 3\",\"defer\":\"Synthetic fixture value 4\",\"new\":\"Synthetic fixture value 5\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] } } } @@ -61,9 +67,8 @@ "decisionResult": { "requestId": "synthetic-identity-0441", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "0894c800598969656", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -126,26 +131,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0445", "purpose": "jev_reflex", - "questions": { + "claims": { "60ef6ba0a24d6d54a": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 6\",\"include\":\"Synthetic fixture value 7\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 6\",\"include\":\"Synthetic fixture value 7\"}}", + "options": [ + "defer", + "include" + ] }, "e41e913501b8667ec": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 8\",\"include\":\"Synthetic fixture value 9\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 8\",\"include\":\"Synthetic fixture value 9\"}}", + "options": [ + "defer", + "include" + ] }, "0894c800598969656": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 10\",\"include\":\"Synthetic fixture value 11\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 10\",\"include\":\"Synthetic fixture value 11\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 12\",\"defer\":\"Synthetic fixture value 13\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 12\",\"defer\":\"Synthetic fixture value 13\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -169,9 +186,8 @@ "decisionResult": { "requestId": "synthetic-identity-0445", "purpose": "jev_reflex", - "answers": { + "evaluations": { "60ef6ba0a24d6d54a": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -180,7 +196,6 @@ "confidence": 1 }, "e41e913501b8667ec": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -189,7 +204,6 @@ "confidence": 1 }, "0894c800598969656": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -198,7 +212,6 @@ "confidence": 0.99 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -276,16 +289,28 @@ "decisionRequest": { "requestId": "synthetic-identity-0451", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 14\",\"e41e913501b8667ec\":\"Synthetic fixture value 15\",\"0894c800598969656\":\"Synthetic fixture value 16\",\"defer\":\"Synthetic fixture value 17\",\"new\":\"Synthetic fixture value 18\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 14\",\"e41e913501b8667ec\":\"Synthetic fixture value 15\",\"0894c800598969656\":\"Synthetic fixture value 16\",\"defer\":\"Synthetic fixture value 17\",\"new\":\"Synthetic fixture value 18\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 19\",\"e41e913501b8667ec\":\"Synthetic fixture value 20\",\"0894c800598969656\":\"Synthetic fixture value 21\",\"defer\":\"Synthetic fixture value 22\",\"new\":\"Synthetic fixture value 23\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 19\",\"e41e913501b8667ec\":\"Synthetic fixture value 20\",\"0894c800598969656\":\"Synthetic fixture value 21\",\"defer\":\"Synthetic fixture value 22\",\"new\":\"Synthetic fixture value 23\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] } } } @@ -327,9 +352,8 @@ "decisionResult": { "requestId": "synthetic-identity-0451", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "0894c800598969656", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -341,7 +365,6 @@ "confidence": 0.2 }, "claim1": { - "type": "choice", "choice": "0894c800598969656", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -404,26 +427,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0456", "purpose": "jev_reflex", - "questions": { + "claims": { "60ef6ba0a24d6d54a": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 24\",\"include\":\"Synthetic fixture value 25\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 24\",\"include\":\"Synthetic fixture value 25\"}}", + "options": [ + "defer", + "include" + ] }, "e41e913501b8667ec": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 26\",\"include\":\"Synthetic fixture value 27\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 26\",\"include\":\"Synthetic fixture value 27\"}}", + "options": [ + "defer", + "include" + ] }, "0894c800598969656": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 28\",\"include\":\"Synthetic fixture value 29\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 28\",\"include\":\"Synthetic fixture value 29\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 30\",\"defer\":\"Synthetic fixture value 31\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 30\",\"defer\":\"Synthetic fixture value 31\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -466,9 +501,8 @@ "decisionResult": { "requestId": "synthetic-identity-0456", "purpose": "jev_reflex", - "answers": { + "evaluations": { "60ef6ba0a24d6d54a": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -477,7 +511,6 @@ "confidence": 1 }, "e41e913501b8667ec": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -486,7 +519,6 @@ "confidence": 1 }, "0894c800598969656": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -495,7 +527,6 @@ "confidence": 0.98 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -573,16 +604,28 @@ "decisionRequest": { "requestId": "synthetic-identity-0463", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 32\",\"e41e913501b8667ec\":\"Synthetic fixture value 33\",\"0894c800598969656\":\"Synthetic fixture value 34\",\"defer\":\"Synthetic fixture value 35\",\"new\":\"Synthetic fixture value 36\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 32\",\"e41e913501b8667ec\":\"Synthetic fixture value 33\",\"0894c800598969656\":\"Synthetic fixture value 34\",\"defer\":\"Synthetic fixture value 35\",\"new\":\"Synthetic fixture value 36\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 37\",\"e41e913501b8667ec\":\"Synthetic fixture value 38\",\"0894c800598969656\":\"Synthetic fixture value 39\",\"defer\":\"Synthetic fixture value 40\",\"new\":\"Synthetic fixture value 41\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 37\",\"e41e913501b8667ec\":\"Synthetic fixture value 38\",\"0894c800598969656\":\"Synthetic fixture value 39\",\"defer\":\"Synthetic fixture value 40\",\"new\":\"Synthetic fixture value 41\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] } } } @@ -605,9 +648,8 @@ "decisionResult": { "requestId": "synthetic-identity-0463", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "60ef6ba0a24d6d54a", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -619,7 +661,6 @@ "confidence": 0.54 }, "claim1": { - "type": "choice", "choice": "60ef6ba0a24d6d54a", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -682,26 +723,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0467", "purpose": "jev_reflex", - "questions": { + "claims": { "60ef6ba0a24d6d54a": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 42\",\"include\":\"Synthetic fixture value 43\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 42\",\"include\":\"Synthetic fixture value 43\"}}", + "options": [ + "defer", + "include" + ] }, "e41e913501b8667ec": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 44\",\"include\":\"Synthetic fixture value 45\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 44\",\"include\":\"Synthetic fixture value 45\"}}", + "options": [ + "defer", + "include" + ] }, "0894c800598969656": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 46\",\"include\":\"Synthetic fixture value 47\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 46\",\"include\":\"Synthetic fixture value 47\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 48\",\"defer\":\"Synthetic fixture value 49\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 48\",\"defer\":\"Synthetic fixture value 49\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -725,9 +778,8 @@ "decisionResult": { "requestId": "synthetic-identity-0467", "purpose": "jev_reflex", - "answers": { + "evaluations": { "60ef6ba0a24d6d54a": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -736,7 +788,6 @@ "confidence": 0.98 }, "e41e913501b8667ec": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -745,7 +796,6 @@ "confidence": 0.99 }, "0894c800598969656": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -754,7 +804,6 @@ "confidence": 0.99 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -832,16 +881,28 @@ "decisionRequest": { "requestId": "synthetic-identity-0472", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 50\",\"e41e913501b8667ec\":\"Synthetic fixture value 51\",\"0894c800598969656\":\"Synthetic fixture value 52\",\"defer\":\"Synthetic fixture value 53\",\"new\":\"Synthetic fixture value 54\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 50\",\"e41e913501b8667ec\":\"Synthetic fixture value 51\",\"0894c800598969656\":\"Synthetic fixture value 52\",\"defer\":\"Synthetic fixture value 53\",\"new\":\"Synthetic fixture value 54\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 55\",\"e41e913501b8667ec\":\"Synthetic fixture value 56\",\"0894c800598969656\":\"Synthetic fixture value 57\",\"defer\":\"Synthetic fixture value 58\",\"new\":\"Synthetic fixture value 59\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 55\",\"e41e913501b8667ec\":\"Synthetic fixture value 56\",\"0894c800598969656\":\"Synthetic fixture value 57\",\"defer\":\"Synthetic fixture value 58\",\"new\":\"Synthetic fixture value 59\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] } } } @@ -883,9 +944,8 @@ "decisionResult": { "requestId": "synthetic-identity-0472", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "60ef6ba0a24d6d54a", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -897,7 +957,6 @@ "confidence": 0.82 }, "claim1": { - "type": "choice", "choice": "60ef6ba0a24d6d54a", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -960,26 +1019,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0478", "purpose": "jev_reflex", - "questions": { + "claims": { "60ef6ba0a24d6d54a": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 60\",\"include\":\"Synthetic fixture value 61\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 60\",\"include\":\"Synthetic fixture value 61\"}}", + "options": [ + "defer", + "include" + ] }, "e41e913501b8667ec": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 62\",\"include\":\"Synthetic fixture value 63\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 62\",\"include\":\"Synthetic fixture value 63\"}}", + "options": [ + "defer", + "include" + ] }, "0894c800598969656": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 64\",\"include\":\"Synthetic fixture value 65\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 64\",\"include\":\"Synthetic fixture value 65\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 66\",\"defer\":\"Synthetic fixture value 67\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 66\",\"defer\":\"Synthetic fixture value 67\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -1003,9 +1074,8 @@ "decisionResult": { "requestId": "synthetic-identity-0478", "purpose": "jev_reflex", - "answers": { + "evaluations": { "60ef6ba0a24d6d54a": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -1014,7 +1084,6 @@ "confidence": 0.99 }, "e41e913501b8667ec": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -1023,7 +1092,6 @@ "confidence": 0.99 }, "0894c800598969656": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -1032,7 +1100,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -1110,11 +1177,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0483", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 68\",\"e41e913501b8667ec\":\"Synthetic fixture value 69\",\"0894c800598969656\":\"Synthetic fixture value 70\",\"defer\":\"Synthetic fixture value 71\",\"new\":\"Synthetic fixture value 72\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 68\",\"e41e913501b8667ec\":\"Synthetic fixture value 69\",\"0894c800598969656\":\"Synthetic fixture value 70\",\"defer\":\"Synthetic fixture value 71\",\"new\":\"Synthetic fixture value 72\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] } } } @@ -1156,9 +1229,8 @@ "decisionResult": { "requestId": "synthetic-identity-0483", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "60ef6ba0a24d6d54a", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -1221,26 +1293,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0489", "purpose": "jev_reflex", - "questions": { + "claims": { "60ef6ba0a24d6d54a": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 73\",\"include\":\"Synthetic fixture value 74\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 73\",\"include\":\"Synthetic fixture value 74\"}}", + "options": [ + "defer", + "include" + ] }, "e41e913501b8667ec": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 75\",\"include\":\"Synthetic fixture value 76\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 75\",\"include\":\"Synthetic fixture value 76\"}}", + "options": [ + "defer", + "include" + ] }, "0894c800598969656": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 77\",\"include\":\"Synthetic fixture value 78\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 77\",\"include\":\"Synthetic fixture value 78\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 79\",\"defer\":\"Synthetic fixture value 80\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 79\",\"defer\":\"Synthetic fixture value 80\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -1264,9 +1348,8 @@ "decisionResult": { "requestId": "synthetic-identity-0489", "purpose": "jev_reflex", - "answers": { + "evaluations": { "60ef6ba0a24d6d54a": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -1275,7 +1358,6 @@ "confidence": 0.99 }, "e41e913501b8667ec": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -1284,7 +1366,6 @@ "confidence": 1 }, "0894c800598969656": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -1293,7 +1374,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "synthetic-identity-0177", "probabilities": { "synthetic-identity-0177": 0.5, @@ -1977,11 +2057,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0524", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 85\",\"e41e913501b8667ec\":\"Synthetic fixture value 86\",\"0894c800598969656\":\"Synthetic fixture value 87\",\"defer\":\"Synthetic fixture value 88\",\"new\":\"Synthetic fixture value 89\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 85\",\"e41e913501b8667ec\":\"Synthetic fixture value 86\",\"0894c800598969656\":\"Synthetic fixture value 87\",\"defer\":\"Synthetic fixture value 88\",\"new\":\"Synthetic fixture value 89\"}}", + "options": [ + "60ef6ba0a24d6d54a", + "e41e913501b8667ec", + "0894c800598969656", + "defer", + "new" + ] } } } @@ -2004,9 +2090,8 @@ "decisionResult": { "requestId": "synthetic-identity-0524", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "60ef6ba0a24d6d54a", "probabilities": { "60ef6ba0a24d6d54a": 0.5, @@ -2107,11 +2192,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0302", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 90\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 91\",\"ec502a90451aaadd5\":\"Synthetic fixture value 92\",\"defer\":\"Synthetic fixture value 93\",\"new\":\"Synthetic fixture value 94\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 90\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 91\",\"ec502a90451aaadd5\":\"Synthetic fixture value 92\",\"defer\":\"Synthetic fixture value 93\",\"new\":\"Synthetic fixture value 94\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -2134,9 +2225,8 @@ "decisionResult": { "requestId": "synthetic-identity-0302", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -2199,26 +2289,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0306", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 95\",\"include\":\"Synthetic fixture value 96\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 95\",\"include\":\"Synthetic fixture value 96\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 97\",\"include\":\"Synthetic fixture value 98\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 97\",\"include\":\"Synthetic fixture value 98\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 99\",\"include\":\"Synthetic fixture value 100\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 99\",\"include\":\"Synthetic fixture value 100\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 101\",\"defer\":\"Synthetic fixture value 102\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 101\",\"defer\":\"Synthetic fixture value 102\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -2242,9 +2344,8 @@ "decisionResult": { "requestId": "synthetic-identity-0306", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2253,7 +2354,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2262,7 +2362,6 @@ "confidence": 0.99 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2271,7 +2370,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -2349,16 +2447,28 @@ "decisionRequest": { "requestId": "synthetic-identity-0311", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 103\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 104\",\"ec502a90451aaadd5\":\"Synthetic fixture value 105\",\"defer\":\"Synthetic fixture value 106\",\"new\":\"Synthetic fixture value 107\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 103\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 104\",\"ec502a90451aaadd5\":\"Synthetic fixture value 105\",\"defer\":\"Synthetic fixture value 106\",\"new\":\"Synthetic fixture value 107\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 108\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 109\",\"ec502a90451aaadd5\":\"Synthetic fixture value 110\",\"defer\":\"Synthetic fixture value 111\",\"new\":\"Synthetic fixture value 112\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 108\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 109\",\"ec502a90451aaadd5\":\"Synthetic fixture value 110\",\"defer\":\"Synthetic fixture value 111\",\"new\":\"Synthetic fixture value 112\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -2381,9 +2491,8 @@ "decisionResult": { "requestId": "synthetic-identity-0311", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -2395,7 +2504,6 @@ "confidence": 0.34 }, "claim1": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -2458,26 +2566,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0315", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 113\",\"include\":\"Synthetic fixture value 114\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 113\",\"include\":\"Synthetic fixture value 114\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 115\",\"include\":\"Synthetic fixture value 116\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 115\",\"include\":\"Synthetic fixture value 116\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 117\",\"include\":\"Synthetic fixture value 118\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 117\",\"include\":\"Synthetic fixture value 118\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 119\",\"defer\":\"Synthetic fixture value 120\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 119\",\"defer\":\"Synthetic fixture value 120\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -2520,9 +2640,8 @@ "decisionResult": { "requestId": "synthetic-identity-0315", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2531,7 +2650,6 @@ "confidence": 0.96 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2540,7 +2658,6 @@ "confidence": 0.99 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2549,7 +2666,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -2627,11 +2743,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0322", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 121\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 122\",\"ec502a90451aaadd5\":\"Synthetic fixture value 123\",\"defer\":\"Synthetic fixture value 124\",\"new\":\"Synthetic fixture value 125\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 121\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 122\",\"ec502a90451aaadd5\":\"Synthetic fixture value 123\",\"defer\":\"Synthetic fixture value 124\",\"new\":\"Synthetic fixture value 125\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -2654,9 +2776,8 @@ "decisionResult": { "requestId": "synthetic-identity-0322", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -2738,26 +2859,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0328", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 126\",\"include\":\"Synthetic fixture value 127\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 126\",\"include\":\"Synthetic fixture value 127\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 128\",\"include\":\"Synthetic fixture value 129\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 128\",\"include\":\"Synthetic fixture value 129\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 130\",\"include\":\"Synthetic fixture value 131\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 130\",\"include\":\"Synthetic fixture value 131\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 132\",\"defer\":\"Synthetic fixture value 133\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 132\",\"defer\":\"Synthetic fixture value 133\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -2781,9 +2914,8 @@ "decisionResult": { "requestId": "synthetic-identity-0328", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2792,7 +2924,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2801,7 +2932,6 @@ "confidence": 0.99 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -2810,7 +2940,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -2888,11 +3017,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0333", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 134\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 135\",\"ec502a90451aaadd5\":\"Synthetic fixture value 136\",\"defer\":\"Synthetic fixture value 137\",\"new\":\"Synthetic fixture value 138\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 134\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 135\",\"ec502a90451aaadd5\":\"Synthetic fixture value 136\",\"defer\":\"Synthetic fixture value 137\",\"new\":\"Synthetic fixture value 138\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -2915,9 +3050,8 @@ "decisionResult": { "requestId": "synthetic-identity-0333", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -2999,26 +3133,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0339", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 139\",\"include\":\"Synthetic fixture value 140\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 139\",\"include\":\"Synthetic fixture value 140\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 141\",\"include\":\"Synthetic fixture value 142\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 141\",\"include\":\"Synthetic fixture value 142\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 143\",\"include\":\"Synthetic fixture value 144\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 143\",\"include\":\"Synthetic fixture value 144\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 145\",\"defer\":\"Synthetic fixture value 146\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 145\",\"defer\":\"Synthetic fixture value 146\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -3042,9 +3188,8 @@ "decisionResult": { "requestId": "synthetic-identity-0339", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3053,7 +3198,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3062,7 +3206,6 @@ "confidence": 0.99 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3071,7 +3214,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -3149,16 +3291,28 @@ "decisionRequest": { "requestId": "synthetic-identity-0344", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 147\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 148\",\"ec502a90451aaadd5\":\"Synthetic fixture value 149\",\"defer\":\"Synthetic fixture value 150\",\"new\":\"Synthetic fixture value 151\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 147\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 148\",\"ec502a90451aaadd5\":\"Synthetic fixture value 149\",\"defer\":\"Synthetic fixture value 150\",\"new\":\"Synthetic fixture value 151\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 152\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 153\",\"ec502a90451aaadd5\":\"Synthetic fixture value 154\",\"defer\":\"Synthetic fixture value 155\",\"new\":\"Synthetic fixture value 156\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 152\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 153\",\"ec502a90451aaadd5\":\"Synthetic fixture value 154\",\"defer\":\"Synthetic fixture value 155\",\"new\":\"Synthetic fixture value 156\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -3200,9 +3354,8 @@ "decisionResult": { "requestId": "synthetic-identity-0344", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -3214,7 +3367,6 @@ "confidence": 0.8 }, "claim1": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -3277,26 +3429,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0350", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 157\",\"include\":\"Synthetic fixture value 158\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 157\",\"include\":\"Synthetic fixture value 158\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 159\",\"include\":\"Synthetic fixture value 160\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 159\",\"include\":\"Synthetic fixture value 160\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 161\",\"include\":\"Synthetic fixture value 162\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 161\",\"include\":\"Synthetic fixture value 162\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 163\",\"defer\":\"Synthetic fixture value 164\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 163\",\"defer\":\"Synthetic fixture value 164\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -3320,9 +3484,8 @@ "decisionResult": { "requestId": "synthetic-identity-0350", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3331,7 +3494,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3340,7 +3502,6 @@ "confidence": 0.99 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3349,7 +3510,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -3427,11 +3587,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0355", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 165\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 166\",\"ec502a90451aaadd5\":\"Synthetic fixture value 167\",\"defer\":\"Synthetic fixture value 168\",\"new\":\"Synthetic fixture value 169\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 165\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 166\",\"ec502a90451aaadd5\":\"Synthetic fixture value 167\",\"defer\":\"Synthetic fixture value 168\",\"new\":\"Synthetic fixture value 169\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -3454,9 +3620,8 @@ "decisionResult": { "requestId": "synthetic-identity-0355", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -3519,26 +3684,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0359", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 170\",\"include\":\"Synthetic fixture value 171\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 170\",\"include\":\"Synthetic fixture value 171\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 172\",\"include\":\"Synthetic fixture value 173\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 172\",\"include\":\"Synthetic fixture value 173\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 174\",\"include\":\"Synthetic fixture value 175\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 174\",\"include\":\"Synthetic fixture value 175\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 176\",\"defer\":\"Synthetic fixture value 177\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 176\",\"defer\":\"Synthetic fixture value 177\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -3562,9 +3739,8 @@ "decisionResult": { "requestId": "synthetic-identity-0359", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3573,7 +3749,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3582,7 +3757,6 @@ "confidence": 0.98 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3591,7 +3765,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -3669,16 +3842,28 @@ "decisionRequest": { "requestId": "synthetic-identity-0364", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 178\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 179\",\"ec502a90451aaadd5\":\"Synthetic fixture value 180\",\"defer\":\"Synthetic fixture value 181\",\"new\":\"Synthetic fixture value 182\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 178\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 179\",\"ec502a90451aaadd5\":\"Synthetic fixture value 180\",\"defer\":\"Synthetic fixture value 181\",\"new\":\"Synthetic fixture value 182\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 183\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 184\",\"ec502a90451aaadd5\":\"Synthetic fixture value 185\",\"defer\":\"Synthetic fixture value 186\",\"new\":\"Synthetic fixture value 187\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 183\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 184\",\"ec502a90451aaadd5\":\"Synthetic fixture value 185\",\"defer\":\"Synthetic fixture value 186\",\"new\":\"Synthetic fixture value 187\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -3701,9 +3886,8 @@ "decisionResult": { "requestId": "synthetic-identity-0364", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -3715,7 +3899,6 @@ "confidence": 0.75 }, "claim1": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -3778,26 +3961,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0368", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 188\",\"include\":\"Synthetic fixture value 189\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 188\",\"include\":\"Synthetic fixture value 189\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 190\",\"include\":\"Synthetic fixture value 191\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 190\",\"include\":\"Synthetic fixture value 191\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 192\",\"include\":\"Synthetic fixture value 193\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 192\",\"include\":\"Synthetic fixture value 193\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 194\",\"defer\":\"Synthetic fixture value 195\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 194\",\"defer\":\"Synthetic fixture value 195\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -3840,9 +4035,8 @@ "decisionResult": { "requestId": "synthetic-identity-0368", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3851,7 +4045,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3860,7 +4053,6 @@ "confidence": 0.99 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -3869,7 +4061,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -3947,11 +4138,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0375", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 196\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 197\",\"ec502a90451aaadd5\":\"Synthetic fixture value 198\",\"defer\":\"Synthetic fixture value 199\",\"new\":\"Synthetic fixture value 200\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 196\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 197\",\"ec502a90451aaadd5\":\"Synthetic fixture value 198\",\"defer\":\"Synthetic fixture value 199\",\"new\":\"Synthetic fixture value 200\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -3974,9 +4171,8 @@ "decisionResult": { "requestId": "synthetic-identity-0375", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -4039,26 +4235,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0379", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 201\",\"include\":\"Synthetic fixture value 202\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 201\",\"include\":\"Synthetic fixture value 202\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 203\",\"include\":\"Synthetic fixture value 204\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 203\",\"include\":\"Synthetic fixture value 204\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 205\",\"include\":\"Synthetic fixture value 206\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 205\",\"include\":\"Synthetic fixture value 206\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 207\",\"defer\":\"Synthetic fixture value 208\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 207\",\"defer\":\"Synthetic fixture value 208\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -4082,9 +4290,8 @@ "decisionResult": { "requestId": "synthetic-identity-0379", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4093,7 +4300,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4102,7 +4308,6 @@ "confidence": 0.98 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4111,7 +4316,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -4189,11 +4393,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0384", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 209\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 210\",\"ec502a90451aaadd5\":\"Synthetic fixture value 211\",\"defer\":\"Synthetic fixture value 212\",\"new\":\"Synthetic fixture value 213\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 209\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 210\",\"ec502a90451aaadd5\":\"Synthetic fixture value 211\",\"defer\":\"Synthetic fixture value 212\",\"new\":\"Synthetic fixture value 213\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -4216,9 +4426,8 @@ "decisionResult": { "requestId": "synthetic-identity-0384", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -4281,26 +4490,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0388", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 214\",\"include\":\"Synthetic fixture value 215\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 214\",\"include\":\"Synthetic fixture value 215\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 216\",\"include\":\"Synthetic fixture value 217\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 216\",\"include\":\"Synthetic fixture value 217\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 218\",\"include\":\"Synthetic fixture value 219\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 218\",\"include\":\"Synthetic fixture value 219\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 220\",\"defer\":\"Synthetic fixture value 221\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 220\",\"defer\":\"Synthetic fixture value 221\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -4343,9 +4564,8 @@ "decisionResult": { "requestId": "synthetic-identity-0388", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4354,7 +4574,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4363,7 +4582,6 @@ "confidence": 0.99 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4372,7 +4590,6 @@ "confidence": 1 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -4450,11 +4667,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0395", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 222\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 223\",\"ec502a90451aaadd5\":\"Synthetic fixture value 224\",\"defer\":\"Synthetic fixture value 225\",\"new\":\"Synthetic fixture value 226\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 222\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 223\",\"ec502a90451aaadd5\":\"Synthetic fixture value 224\",\"defer\":\"Synthetic fixture value 225\",\"new\":\"Synthetic fixture value 226\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -4477,9 +4700,8 @@ "decisionResult": { "requestId": "synthetic-identity-0395", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -4542,26 +4764,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0399", "purpose": "jev_reflex", - "questions": { + "claims": { "1eae434e55c440826": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 227\",\"include\":\"Synthetic fixture value 228\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 227\",\"include\":\"Synthetic fixture value 228\"}}", + "options": [ + "defer", + "include" + ] }, "8b7f9c05e25286b14": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 229\",\"include\":\"Synthetic fixture value 230\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 229\",\"include\":\"Synthetic fixture value 230\"}}", + "options": [ + "defer", + "include" + ] }, "ec502a90451aaadd5": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 231\",\"include\":\"Synthetic fixture value 232\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 231\",\"include\":\"Synthetic fixture value 232\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 233\",\"defer\":\"Synthetic fixture value 234\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 233\",\"defer\":\"Synthetic fixture value 234\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -4585,9 +4819,8 @@ "decisionResult": { "requestId": "synthetic-identity-0399", "purpose": "jev_reflex", - "answers": { + "evaluations": { "1eae434e55c440826": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4596,7 +4829,6 @@ "confidence": 0.98 }, "8b7f9c05e25286b14": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4605,7 +4837,6 @@ "confidence": 1 }, "ec502a90451aaadd5": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -4614,7 +4845,6 @@ "confidence": 0.98 }, "synthetic-identity-0177": { - "type": "choice", "choice": "synthetic-identity-0177", "probabilities": { "synthetic-identity-0177": 0.5, @@ -5298,11 +5528,17 @@ "decisionRequest": { "requestId": "synthetic-identity-0434", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"1eae434e55c440826\":\"Synthetic fixture value 236\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 237\",\"ec502a90451aaadd5\":\"Synthetic fixture value 238\",\"defer\":\"Synthetic fixture value 239\",\"new\":\"Synthetic fixture value 240\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 236\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 237\",\"ec502a90451aaadd5\":\"Synthetic fixture value 238\",\"defer\":\"Synthetic fixture value 239\",\"new\":\"Synthetic fixture value 240\"}}", + "options": [ + "1eae434e55c440826", + "8b7f9c05e25286b14", + "ec502a90451aaadd5", + "defer", + "new" + ] } } } @@ -5325,9 +5561,8 @@ "decisionResult": { "requestId": "synthetic-identity-0434", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "1eae434e55c440826", "probabilities": { "1eae434e55c440826": 0.5, @@ -5428,11 +5663,16 @@ "decisionRequest": { "requestId": "synthetic-identity-0531", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"50759353ece00982e\":\"Synthetic fixture value 241\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 242\",\"defer\":\"Synthetic fixture value 243\",\"new\":\"Synthetic fixture value 244\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 241\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 242\",\"defer\":\"Synthetic fixture value 243\",\"new\":\"Synthetic fixture value 244\"}}", + "options": [ + "50759353ece00982e", + "f1cd4cfc8eb6f9617", + "defer", + "new" + ] } } } @@ -5455,9 +5695,8 @@ "decisionResult": { "requestId": "synthetic-identity-0531", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "f1cd4cfc8eb6f9617", "probabilities": { "50759353ece00982e": 0.5, @@ -5519,21 +5758,30 @@ "decisionRequest": { "requestId": "synthetic-identity-0535", "purpose": "jev_reflex", - "questions": { + "claims": { "50759353ece00982e": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 245\",\"include\":\"Synthetic fixture value 246\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 245\",\"include\":\"Synthetic fixture value 246\"}}", + "options": [ + "defer", + "include" + ] }, "f1cd4cfc8eb6f9617": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 247\",\"include\":\"Synthetic fixture value 248\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 247\",\"include\":\"Synthetic fixture value 248\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 249\",\"defer\":\"Synthetic fixture value 250\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 249\",\"defer\":\"Synthetic fixture value 250\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -5557,9 +5805,8 @@ "decisionResult": { "requestId": "synthetic-identity-0535", "purpose": "jev_reflex", - "answers": { + "evaluations": { "50759353ece00982e": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -5568,7 +5815,6 @@ "confidence": 0.99 }, "f1cd4cfc8eb6f9617": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -5577,7 +5823,6 @@ "confidence": 0.98 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -5655,16 +5900,26 @@ "decisionRequest": { "requestId": "synthetic-identity-0540", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"50759353ece00982e\":\"Synthetic fixture value 251\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 252\",\"defer\":\"Synthetic fixture value 253\",\"new\":\"Synthetic fixture value 254\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 251\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 252\",\"defer\":\"Synthetic fixture value 253\",\"new\":\"Synthetic fixture value 254\"}}", + "options": [ + "50759353ece00982e", + "f1cd4cfc8eb6f9617", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"50759353ece00982e\":\"Synthetic fixture value 255\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 256\",\"defer\":\"Synthetic fixture value 257\",\"new\":\"Synthetic fixture value 258\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 255\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 256\",\"defer\":\"Synthetic fixture value 257\",\"new\":\"Synthetic fixture value 258\"}}", + "options": [ + "50759353ece00982e", + "f1cd4cfc8eb6f9617", + "defer", + "new" + ] } } } @@ -5706,9 +5961,8 @@ "decisionResult": { "requestId": "synthetic-identity-0540", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "f1cd4cfc8eb6f9617", "probabilities": { "50759353ece00982e": 0.5, @@ -5719,7 +5973,6 @@ "confidence": 0.75 }, "claim1": { - "type": "choice", "choice": "f1cd4cfc8eb6f9617", "probabilities": { "50759353ece00982e": 0.5, @@ -5781,21 +6034,30 @@ "decisionRequest": { "requestId": "synthetic-identity-0546", "purpose": "jev_reflex", - "questions": { + "claims": { "50759353ece00982e": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 259\",\"include\":\"Synthetic fixture value 260\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 259\",\"include\":\"Synthetic fixture value 260\"}}", + "options": [ + "defer", + "include" + ] }, "f1cd4cfc8eb6f9617": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 261\",\"include\":\"Synthetic fixture value 262\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 261\",\"include\":\"Synthetic fixture value 262\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 263\",\"defer\":\"Synthetic fixture value 264\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 263\",\"defer\":\"Synthetic fixture value 264\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -5819,9 +6081,8 @@ "decisionResult": { "requestId": "synthetic-identity-0546", "purpose": "jev_reflex", - "answers": { + "evaluations": { "50759353ece00982e": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -5830,7 +6091,6 @@ "confidence": 0.99 }, "f1cd4cfc8eb6f9617": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -5839,7 +6099,6 @@ "confidence": 0.97 }, "synthetic-identity-0177": { - "type": "choice", "choice": "defer", "probabilities": { "synthetic-identity-0177": 0.5, @@ -5917,11 +6176,16 @@ "decisionRequest": { "requestId": "synthetic-identity-0551", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"50759353ece00982e\":\"Synthetic fixture value 265\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 266\",\"defer\":\"Synthetic fixture value 267\",\"new\":\"Synthetic fixture value 268\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 265\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 266\",\"defer\":\"Synthetic fixture value 267\",\"new\":\"Synthetic fixture value 268\"}}", + "options": [ + "50759353ece00982e", + "f1cd4cfc8eb6f9617", + "defer", + "new" + ] } } } @@ -5963,9 +6227,8 @@ "decisionResult": { "requestId": "synthetic-identity-0551", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "f1cd4cfc8eb6f9617", "probabilities": { "50759353ece00982e": 0.5, @@ -6027,21 +6290,30 @@ "decisionRequest": { "requestId": "synthetic-identity-0557", "purpose": "jev_reflex", - "questions": { + "claims": { "50759353ece00982e": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 269\",\"include\":\"Synthetic fixture value 270\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 269\",\"include\":\"Synthetic fixture value 270\"}}", + "options": [ + "defer", + "include" + ] }, "f1cd4cfc8eb6f9617": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 271\",\"include\":\"Synthetic fixture value 272\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 271\",\"include\":\"Synthetic fixture value 272\"}}", + "options": [ + "defer", + "include" + ] }, "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 273\",\"defer\":\"Synthetic fixture value 274\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 273\",\"defer\":\"Synthetic fixture value 274\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -6065,9 +6337,8 @@ "decisionResult": { "requestId": "synthetic-identity-0557", "purpose": "jev_reflex", - "answers": { + "evaluations": { "50759353ece00982e": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -6076,7 +6347,6 @@ "confidence": 0.99 }, "f1cd4cfc8eb6f9617": { - "type": "choice", "choice": "include", "probabilities": { "defer": 0.5, @@ -6085,7 +6355,6 @@ "confidence": 0.99 }, "synthetic-identity-0177": { - "type": "choice", "choice": "synthetic-identity-0177", "probabilities": { "synthetic-identity-0177": 0.5, @@ -6844,16 +7113,26 @@ "decisionRequest": { "requestId": "synthetic-identity-0597", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"50759353ece00982e\":\"Synthetic fixture value 278\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 279\",\"defer\":\"Synthetic fixture value 280\",\"new\":\"Synthetic fixture value 281\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 278\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 279\",\"defer\":\"Synthetic fixture value 280\",\"new\":\"Synthetic fixture value 281\"}}", + "options": [ + "50759353ece00982e", + "f1cd4cfc8eb6f9617", + "defer", + "new" + ] }, "claim1": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"50759353ece00982e\":\"Synthetic fixture value 282\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 283\",\"defer\":\"Synthetic fixture value 284\",\"new\":\"Synthetic fixture value 285\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 282\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 283\",\"defer\":\"Synthetic fixture value 284\",\"new\":\"Synthetic fixture value 285\"}}", + "options": [ + "50759353ece00982e", + "f1cd4cfc8eb6f9617", + "defer", + "new" + ] } } } @@ -6876,9 +7155,8 @@ "decisionResult": { "requestId": "synthetic-identity-0597", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "50759353ece00982e", "probabilities": { "50759353ece00982e": 0.5, @@ -6889,7 +7167,6 @@ "confidence": 0.41 }, "claim1": { - "type": "choice", "choice": "50759353ece00982e", "probabilities": { "50759353ece00982e": 0.5, diff --git a/web/frontend/e2e/fixtures/jev-history/live-protocol.jsonl b/web/frontend/e2e/fixtures/jev-history/live-protocol.jsonl index cd62e9e6d..62fef0fe8 100644 --- a/web/frontend/e2e/fixtures/jev-history/live-protocol.jsonl +++ b/web/frontend/e2e/fixtures/jev-history/live-protocol.jsonl @@ -1,41 +1,41 @@ {"payload":{"event":{"id":"synthetic-identity-0440","emittedAt":"2000-01-01T00:01:11Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"1","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","segmentId":"synthetic-identity-0439","boundaryId":"0e8e63f7d7d72bd9513f6d95fa6f0888b24347151eeea2b367783f94d2cdbcbf","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0442","emittedAt":"2000-01-01T00:01:12Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"2","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","decisionRequest":{"requestId":"synthetic-identity-0441","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 1\",\"e41e913501b8667ec\":\"Synthetic fixture value 2\",\"0894c800598969656\":\"Synthetic fixture value 3\",\"defer\":\"Synthetic fixture value 4\",\"new\":\"Synthetic fixture value 5\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0443","emittedAt":"2000-01-01T00:01:13Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"3","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","decisionResult":{"requestId":"synthetic-identity-0441","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"0894c800598969656","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.21}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0442","emittedAt":"2000-01-01T00:01:12Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"2","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","decisionRequest":{"requestId":"synthetic-identity-0441","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 1\",\"e41e913501b8667ec\":\"Synthetic fixture value 2\",\"0894c800598969656\":\"Synthetic fixture value 3\",\"defer\":\"Synthetic fixture value 4\",\"new\":\"Synthetic fixture value 5\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0443","emittedAt":"2000-01-01T00:01:13Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"3","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","decisionResult":{"requestId":"synthetic-identity-0441","purpose":"jev_claim","evaluations":{"claim0":{"choice":"0894c800598969656","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.21}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0444","emittedAt":"2000-01-01T00:01:14Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"4","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","claimId":"0894c800598969656","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0446","emittedAt":"2000-01-01T00:01:15Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"5","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","claimId":"0894c800598969656","decisionRequest":{"requestId":"synthetic-identity-0445","purpose":"jev_reflex","questions":{"60ef6ba0a24d6d54a":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 6\",\"include\":\"Synthetic fixture value 7\"}"},"e41e913501b8667ec":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 8\",\"include\":\"Synthetic fixture value 9\"}"},"0894c800598969656":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 10\",\"include\":\"Synthetic fixture value 11\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 12\",\"defer\":\"Synthetic fixture value 13\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0447","emittedAt":"2000-01-01T00:01:16Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"6","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","claimId":"0894c800598969656","decisionResult":{"requestId":"synthetic-identity-0445","purpose":"jev_reflex","answers":{"60ef6ba0a24d6d54a":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"e41e913501b8667ec":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"0894c800598969656":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.77}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0446","emittedAt":"2000-01-01T00:01:15Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"5","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","claimId":"0894c800598969656","decisionRequest":{"requestId":"synthetic-identity-0445","purpose":"jev_reflex","claims":{"60ef6ba0a24d6d54a":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 6\",\"include\":\"Synthetic fixture value 7\"}}","options":["defer","include"]},"e41e913501b8667ec":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 8\",\"include\":\"Synthetic fixture value 9\"}}","options":["defer","include"]},"0894c800598969656":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 10\",\"include\":\"Synthetic fixture value 11\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 12\",\"defer\":\"Synthetic fixture value 13\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0447","emittedAt":"2000-01-01T00:01:16Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"6","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","claimId":"0894c800598969656","decisionResult":{"requestId":"synthetic-identity-0445","purpose":"jev_reflex","evaluations":{"60ef6ba0a24d6d54a":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"e41e913501b8667ec":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"0894c800598969656":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.77}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0448","emittedAt":"2000-01-01T00:01:17Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"7","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","claimId":"0894c800598969656","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0449","emittedAt":"2000-01-01T00:01:17Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"8","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"e8450db0ad4378764558885126ee5a0d479108f6f9e39a4e01fa0e480929e73a","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0452","emittedAt":"2000-01-01T00:01:18Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"9","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","decisionRequest":{"requestId":"synthetic-identity-0451","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 14\",\"e41e913501b8667ec\":\"Synthetic fixture value 15\",\"0894c800598969656\":\"Synthetic fixture value 16\",\"defer\":\"Synthetic fixture value 17\",\"new\":\"Synthetic fixture value 18\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 19\",\"e41e913501b8667ec\":\"Synthetic fixture value 20\",\"0894c800598969656\":\"Synthetic fixture value 21\",\"defer\":\"Synthetic fixture value 22\",\"new\":\"Synthetic fixture value 23\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0452","emittedAt":"2000-01-01T00:01:18Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"9","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","decisionRequest":{"requestId":"synthetic-identity-0451","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 14\",\"e41e913501b8667ec\":\"Synthetic fixture value 15\",\"0894c800598969656\":\"Synthetic fixture value 16\",\"defer\":\"Synthetic fixture value 17\",\"new\":\"Synthetic fixture value 18\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 19\",\"e41e913501b8667ec\":\"Synthetic fixture value 20\",\"0894c800598969656\":\"Synthetic fixture value 21\",\"defer\":\"Synthetic fixture value 22\",\"new\":\"Synthetic fixture value 23\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0453","emittedAt":"2000-01-01T00:01:18Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"10","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","segmentId":"synthetic-identity-0450","boundaryId":"a1d5117cfbf02f656f43229a4492f1857e35301985521d93fe18c27d4c231f45","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0454","emittedAt":"2000-01-01T00:01:19Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"11","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","decisionResult":{"requestId":"synthetic-identity-0451","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"0894c800598969656","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.2},"claim1":{"type":"choice","choice":"0894c800598969656","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.22}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0454","emittedAt":"2000-01-01T00:01:19Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"11","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","decisionResult":{"requestId":"synthetic-identity-0451","purpose":"jev_claim","evaluations":{"claim0":{"choice":"0894c800598969656","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.2},"claim1":{"choice":"0894c800598969656","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.22}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0455","emittedAt":"2000-01-01T00:01:20Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"12","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","claimId":"0894c800598969656","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0457","emittedAt":"2000-01-01T00:01:21Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"13","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","claimId":"0894c800598969656","decisionRequest":{"requestId":"synthetic-identity-0456","purpose":"jev_reflex","questions":{"60ef6ba0a24d6d54a":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 24\",\"include\":\"Synthetic fixture value 25\"}"},"e41e913501b8667ec":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 26\",\"include\":\"Synthetic fixture value 27\"}"},"0894c800598969656":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 28\",\"include\":\"Synthetic fixture value 29\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 30\",\"defer\":\"Synthetic fixture value 31\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0457","emittedAt":"2000-01-01T00:01:21Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"13","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","claimId":"0894c800598969656","decisionRequest":{"requestId":"synthetic-identity-0456","purpose":"jev_reflex","claims":{"60ef6ba0a24d6d54a":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 24\",\"include\":\"Synthetic fixture value 25\"}}","options":["defer","include"]},"e41e913501b8667ec":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 26\",\"include\":\"Synthetic fixture value 27\"}}","options":["defer","include"]},"0894c800598969656":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 28\",\"include\":\"Synthetic fixture value 29\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 30\",\"defer\":\"Synthetic fixture value 31\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0459","emittedAt":"2000-01-01T00:01:22Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"14","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","segmentId":"synthetic-identity-0458","boundaryId":"9ebb10b398ed3bfeebdfd95b7005f987b925a937b17f08ef02d717c7c1c9ed28","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0460","emittedAt":"2000-01-01T00:01:23Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"15","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","claimId":"0894c800598969656","decisionResult":{"requestId":"synthetic-identity-0456","purpose":"jev_reflex","answers":{"60ef6ba0a24d6d54a":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"e41e913501b8667ec":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"0894c800598969656":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.39}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0460","emittedAt":"2000-01-01T00:01:23Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"15","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","claimId":"0894c800598969656","decisionResult":{"requestId":"synthetic-identity-0456","purpose":"jev_reflex","evaluations":{"60ef6ba0a24d6d54a":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"e41e913501b8667ec":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"0894c800598969656":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.39}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0461","emittedAt":"2000-01-01T00:01:24Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"16","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","claimId":"0894c800598969656","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0462","emittedAt":"2000-01-01T00:01:24Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"17","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"546a330bba90da5f2b0939585b9b31469185d6d74735da682cf5ff45dd52ce8d","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0464","emittedAt":"2000-01-01T00:01:25Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"18","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","decisionRequest":{"requestId":"synthetic-identity-0463","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 32\",\"e41e913501b8667ec\":\"Synthetic fixture value 33\",\"0894c800598969656\":\"Synthetic fixture value 34\",\"defer\":\"Synthetic fixture value 35\",\"new\":\"Synthetic fixture value 36\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 37\",\"e41e913501b8667ec\":\"Synthetic fixture value 38\",\"0894c800598969656\":\"Synthetic fixture value 39\",\"defer\":\"Synthetic fixture value 40\",\"new\":\"Synthetic fixture value 41\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0465","emittedAt":"2000-01-01T00:01:26Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"19","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","decisionResult":{"requestId":"synthetic-identity-0463","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.54},"claim1":{"type":"choice","choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.6}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0464","emittedAt":"2000-01-01T00:01:25Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"18","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","decisionRequest":{"requestId":"synthetic-identity-0463","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 32\",\"e41e913501b8667ec\":\"Synthetic fixture value 33\",\"0894c800598969656\":\"Synthetic fixture value 34\",\"defer\":\"Synthetic fixture value 35\",\"new\":\"Synthetic fixture value 36\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 37\",\"e41e913501b8667ec\":\"Synthetic fixture value 38\",\"0894c800598969656\":\"Synthetic fixture value 39\",\"defer\":\"Synthetic fixture value 40\",\"new\":\"Synthetic fixture value 41\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0465","emittedAt":"2000-01-01T00:01:26Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"19","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","decisionResult":{"requestId":"synthetic-identity-0463","purpose":"jev_claim","evaluations":{"claim0":{"choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.54},"claim1":{"choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.6}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0466","emittedAt":"2000-01-01T00:01:27Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"20","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","claimId":"60ef6ba0a24d6d54a","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0468","emittedAt":"2000-01-01T00:01:28Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"21","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","claimId":"60ef6ba0a24d6d54a","decisionRequest":{"requestId":"synthetic-identity-0467","purpose":"jev_reflex","questions":{"60ef6ba0a24d6d54a":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 42\",\"include\":\"Synthetic fixture value 43\"}"},"e41e913501b8667ec":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 44\",\"include\":\"Synthetic fixture value 45\"}"},"0894c800598969656":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 46\",\"include\":\"Synthetic fixture value 47\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 48\",\"defer\":\"Synthetic fixture value 49\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0469","emittedAt":"2000-01-01T00:01:29Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"22","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","claimId":"60ef6ba0a24d6d54a","decisionResult":{"requestId":"synthetic-identity-0467","purpose":"jev_reflex","answers":{"60ef6ba0a24d6d54a":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"e41e913501b8667ec":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"0894c800598969656":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.19}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0468","emittedAt":"2000-01-01T00:01:28Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"21","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","claimId":"60ef6ba0a24d6d54a","decisionRequest":{"requestId":"synthetic-identity-0467","purpose":"jev_reflex","claims":{"60ef6ba0a24d6d54a":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 42\",\"include\":\"Synthetic fixture value 43\"}}","options":["defer","include"]},"e41e913501b8667ec":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 44\",\"include\":\"Synthetic fixture value 45\"}}","options":["defer","include"]},"0894c800598969656":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 46\",\"include\":\"Synthetic fixture value 47\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 48\",\"defer\":\"Synthetic fixture value 49\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0469","emittedAt":"2000-01-01T00:01:29Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"22","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","claimId":"60ef6ba0a24d6d54a","decisionResult":{"requestId":"synthetic-identity-0467","purpose":"jev_reflex","evaluations":{"60ef6ba0a24d6d54a":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"e41e913501b8667ec":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"0894c800598969656":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.19}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0470","emittedAt":"2000-01-01T00:01:30Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"23","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","claimId":"60ef6ba0a24d6d54a","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0471","emittedAt":"2000-01-01T00:01:30Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"24","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"daa5d5fa8c518856a7a4c0cbba6481df09ec848879363e135b26963387e43fec","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0473","emittedAt":"2000-01-01T00:01:31Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"25","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","decisionRequest":{"requestId":"synthetic-identity-0472","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 50\",\"e41e913501b8667ec\":\"Synthetic fixture value 51\",\"0894c800598969656\":\"Synthetic fixture value 52\",\"defer\":\"Synthetic fixture value 53\",\"new\":\"Synthetic fixture value 54\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 55\",\"e41e913501b8667ec\":\"Synthetic fixture value 56\",\"0894c800598969656\":\"Synthetic fixture value 57\",\"defer\":\"Synthetic fixture value 58\",\"new\":\"Synthetic fixture value 59\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0473","emittedAt":"2000-01-01T00:01:31Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"25","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","decisionRequest":{"requestId":"synthetic-identity-0472","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 50\",\"e41e913501b8667ec\":\"Synthetic fixture value 51\",\"0894c800598969656\":\"Synthetic fixture value 52\",\"defer\":\"Synthetic fixture value 53\",\"new\":\"Synthetic fixture value 54\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 55\",\"e41e913501b8667ec\":\"Synthetic fixture value 56\",\"0894c800598969656\":\"Synthetic fixture value 57\",\"defer\":\"Synthetic fixture value 58\",\"new\":\"Synthetic fixture value 59\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0475","emittedAt":"2000-01-01T00:01:32Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"26","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","segmentId":"synthetic-identity-0474","boundaryId":"06dd7d3eb3e72d42eaec249eba68492ee707cced55c9ba3194e2292ae24e4f78","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0476","emittedAt":"2000-01-01T00:01:33Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"27","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","decisionResult":{"requestId":"synthetic-identity-0472","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.82},"claim1":{"type":"choice","choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.69}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0476","emittedAt":"2000-01-01T00:01:33Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"27","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","decisionResult":{"requestId":"synthetic-identity-0472","purpose":"jev_claim","evaluations":{"claim0":{"choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.82},"claim1":{"choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.69}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0477","emittedAt":"2000-01-01T00:01:34Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"28","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","claimId":"60ef6ba0a24d6d54a","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0479","emittedAt":"2000-01-01T00:01:35Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"29","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","claimId":"60ef6ba0a24d6d54a","decisionRequest":{"requestId":"synthetic-identity-0478","purpose":"jev_reflex","questions":{"60ef6ba0a24d6d54a":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 60\",\"include\":\"Synthetic fixture value 61\"}"},"e41e913501b8667ec":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 62\",\"include\":\"Synthetic fixture value 63\"}"},"0894c800598969656":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 64\",\"include\":\"Synthetic fixture value 65\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 66\",\"defer\":\"Synthetic fixture value 67\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0480","emittedAt":"2000-01-01T00:01:36Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"30","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","claimId":"60ef6ba0a24d6d54a","decisionResult":{"requestId":"synthetic-identity-0478","purpose":"jev_reflex","answers":{"60ef6ba0a24d6d54a":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"e41e913501b8667ec":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"0894c800598969656":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.21}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0479","emittedAt":"2000-01-01T00:01:35Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"29","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","claimId":"60ef6ba0a24d6d54a","decisionRequest":{"requestId":"synthetic-identity-0478","purpose":"jev_reflex","claims":{"60ef6ba0a24d6d54a":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 60\",\"include\":\"Synthetic fixture value 61\"}}","options":["defer","include"]},"e41e913501b8667ec":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 62\",\"include\":\"Synthetic fixture value 63\"}}","options":["defer","include"]},"0894c800598969656":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 64\",\"include\":\"Synthetic fixture value 65\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 66\",\"defer\":\"Synthetic fixture value 67\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0480","emittedAt":"2000-01-01T00:01:36Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"30","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","claimId":"60ef6ba0a24d6d54a","decisionResult":{"requestId":"synthetic-identity-0478","purpose":"jev_reflex","evaluations":{"60ef6ba0a24d6d54a":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"e41e913501b8667ec":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"0894c800598969656":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.21}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0481","emittedAt":"2000-01-01T00:01:37Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"31","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","claimId":"60ef6ba0a24d6d54a","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0482","emittedAt":"2000-01-01T00:01:37Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"32","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"f1a7a37301dc399d5a33a970daa722f9872e62c5d7eb064c5f2c1e0e12f475e4","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0484","emittedAt":"2000-01-01T00:01:37Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"33","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","decisionRequest":{"requestId":"synthetic-identity-0483","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 68\",\"e41e913501b8667ec\":\"Synthetic fixture value 69\",\"0894c800598969656\":\"Synthetic fixture value 70\",\"defer\":\"Synthetic fixture value 71\",\"new\":\"Synthetic fixture value 72\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0484","emittedAt":"2000-01-01T00:01:37Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"33","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","decisionRequest":{"requestId":"synthetic-identity-0483","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 68\",\"e41e913501b8667ec\":\"Synthetic fixture value 69\",\"0894c800598969656\":\"Synthetic fixture value 70\",\"defer\":\"Synthetic fixture value 71\",\"new\":\"Synthetic fixture value 72\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0486","emittedAt":"2000-01-01T00:01:38Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"34","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","segmentId":"synthetic-identity-0485","boundaryId":"912a25035dc319eba8d445be2ebdb6b5014056b071971b4ce93f3c05fcb748d2","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0487","emittedAt":"2000-01-01T00:01:39Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"35","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","decisionResult":{"requestId":"synthetic-identity-0483","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.6}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0487","emittedAt":"2000-01-01T00:01:39Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"35","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","decisionResult":{"requestId":"synthetic-identity-0483","purpose":"jev_claim","evaluations":{"claim0":{"choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.6}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0488","emittedAt":"2000-01-01T00:01:40Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"36","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0490","emittedAt":"2000-01-01T00:01:40Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"37","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","decisionRequest":{"requestId":"synthetic-identity-0489","purpose":"jev_reflex","questions":{"60ef6ba0a24d6d54a":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 73\",\"include\":\"Synthetic fixture value 74\"}"},"e41e913501b8667ec":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 75\",\"include\":\"Synthetic fixture value 76\"}"},"0894c800598969656":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 77\",\"include\":\"Synthetic fixture value 78\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 79\",\"defer\":\"Synthetic fixture value 80\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0491","emittedAt":"2000-01-01T00:01:41Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"38","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","decisionResult":{"requestId":"synthetic-identity-0489","purpose":"jev_reflex","answers":{"60ef6ba0a24d6d54a":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"e41e913501b8667ec":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"0894c800598969656":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"synthetic-identity-0177","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.32}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0490","emittedAt":"2000-01-01T00:01:40Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"37","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","decisionRequest":{"requestId":"synthetic-identity-0489","purpose":"jev_reflex","claims":{"60ef6ba0a24d6d54a":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 73\",\"include\":\"Synthetic fixture value 74\"}}","options":["defer","include"]},"e41e913501b8667ec":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 75\",\"include\":\"Synthetic fixture value 76\"}}","options":["defer","include"]},"0894c800598969656":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 77\",\"include\":\"Synthetic fixture value 78\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 79\",\"defer\":\"Synthetic fixture value 80\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0491","emittedAt":"2000-01-01T00:01:41Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"38","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","decisionResult":{"requestId":"synthetic-identity-0489","purpose":"jev_reflex","evaluations":{"60ef6ba0a24d6d54a":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"e41e913501b8667ec":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"0894c800598969656":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"synthetic-identity-0177","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.32}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0493","emittedAt":"2000-01-01T00:01:42Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"39","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","generation":{"kind":"reflex_llm","state":"started","requestId":"synthetic-identity-0492","requestedEffort":"none"}}}}} {"payload":{"event":{"id":"synthetic-identity-0495","emittedAt":"2000-01-01T00:01:42Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"40","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","generation":{"kind":"compiler_round","state":"started","requestId":"synthetic-identity-0494","attempt":1,"parentRequestId":"synthetic-identity-0492","phase":"compilation"}}}}} {"payload":{"event":{"id":"synthetic-identity-0496","emittedAt":"2000-01-01T00:01:43Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"41","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","generation":{"kind":"compiler_round","state":"finished","output":"[]","elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"cache_miss":"1000","cache_read":"1000","cache_write":"1000"}},"requestId":"synthetic-identity-0494","attempt":1,"parentRequestId":"synthetic-identity-0492","phase":"compilation"}}}}} @@ -59,85 +59,85 @@ {"payload":{"event":{"id":"synthetic-identity-0521","emittedAt":"2000-01-01T00:01:50Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"59","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","claimId":"60ef6ba0a24d6d54a","generation":{"kind":"reflex_llm","state":"finished","output":"[]","elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"cache_miss":"1000","cache_read":"1000","cache_write":"1000","requests":"1"}},"requestId":"synthetic-identity-0492","requestedEffort":"none"}}}}} {"payload":{"event":{"id":"synthetic-identity-0522","emittedAt":"2000-01-01T00:01:51Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"60","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"57176efb422ed5661ef077b8b453b42895028b8249101e4acaae59b4e5ad9974","libraryChange":{"state":"reflex_candidate","reflex":{"id":"synthetic-identity-0280","when":"Synthetic fixture when 81","decide":"Use the synthetic fixture inputs and defer when they are absent.","observe":"js:function(context, args) {\n args = args || {};\n var missing = [];\n if (!args.url) missing.push(\"url\");\n if (!args.session) missing.push(\"session\");\n if (!args.term) missing.push(\"term\");\n if (!args.input_selector) missing.push(\"input_selector\");\n if (!args.submit_selector) missing.push(\"submit_selector\");\n if (missing.length) return {defer: \"missing current arguments\", parameters: \"url, session, term, input_selector, submit_selector\"};\n var session = args.session;\n var term = String(args.term);\n var inSel = String(args.input_selector);\n var btnSel = String(args.submit_selector);\n var prefix = (args.receipt_prefix == null) ? \"Receipt: \" : String(args.receipt_prefix);\n\n function snap(data) {\n if (!data || !data.elements) return null;\n return data.elements;\n }\n function findIdx(elements) {\n if (!elements) return -1;\n for (var i = 0; i < elements.length; i++) {\n var t = elements[i].text;\n if (t && t.indexOf(prefix) === 0) return i;\n }\n return -1;\n }\n function reportFor(elements, hostCall) {\n var idx = findIdx(elements);\n if (idx < 0) return null;\n return {report: {evidence: hostCall, path: [\"data\", \"elements\", idx, \"text\"]}};\n }\n\n var hostCall = null;\n var elements = null;\n var opened = false;\n var filled = false;\n var clicked = false;\n var anySnapshot = false;\n var postClickSnapshot = false;\n\n var hist = context.history || [];\n for (var h = 0; h < hist.length; h++) {\n var rec = hist[h];\n if (rec.name !== \"bash\") continue;\n var av = (rec.decoded_argv || []).slice();\n if (av[0] !== \"playwright\") continue;\n var sub = av[1];\n if (sub === \"open\" && av[2] === args.url && av.indexOf(\"--session\") >= 0) { opened = true; }\n if (sub === \"fill\" && av[2] === session && av[3] === inSel && av[4] === term) { filled = true; }\n if (sub === \"click\" && av[2] === session && av[3] === btnSel) { clicked = true; }\n if (sub === \"snapshot\" && av[2] === session && rec.data) {\n elements = snap(rec.data);\n if (rec.call_id) hostCall = rec.call_id;\n anySnapshot = true;\n if (clicked) postClickSnapshot = true;\n }\n }\n\n if (clicked && postClickSnapshot && elements) {\n var done = reportFor(elements, hostCall);\n if (done) return done;\n }\n\n if (!opened) {\n var o = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"open\", args.url, \"--session\", session])}, read: false, step: \"open\", occurrence: 0});\n if (o && o.is_error) return {defer: \"open failed: \" + (o.text || \"unknown\")};\n }\n\n if (!anySnapshot) {\n var s1 = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"snapshot\", session, \"--json\"])}, read: true});\n if (s1 && s1.call_id) hostCall = s1.call_id;\n elements = snap(s1 && s1.data);\n }\n\n if (!filled) {\n var f = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"fill\", session, inSel, term])}, read: false, step: \"fill\", occurrence: 0});\n if (f && f.is_error) return {defer: \"fill failed: \" + (f.text || \"unknown\")};\n }\n\n if (!clicked) {\n var c = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"click\", session, btnSel])}, read: false, step: \"click\", occurrence: 0});\n if (c && c.is_error) return {defer: \"click failed: \" + (c.text || \"unknown\")};\n }\n\n if (!postClickSnapshot) {\n var s2 = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"snapshot\", session, \"--json\"])}, read: true});\n if (s2 && s2.call_id) hostCall = s2.call_id;\n var e2 = snap(s2 && s2.data);\n var p2 = reportFor(e2, hostCall);\n if (p2) return p2;\n }\n return {defer: \"receipt not yet visible after submit\"};\n}","claimIds":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656"],"contracts":{"command:experiment":"abe25c89e23db76babe27845dc50808e179376d3e568d08bc7f62aa3c2d4b4be","command:jev":"9729b785e09bd242c2b73d15a336408ff05ee574472ae60963d071215585f4c2","command:playwright":"6a0b9da4a4cd5c8b6dce0937b4f0061c196ecfa2f4ab237cca4f3dd65743489a","helpers":"98aa22757269c3f695b8e3254b3cba7af0f196d29e5e05db58821ec7e43533db","tool:bash":"2efbb2e0f82e04e8fa7e605121b300db09945e5fb0624a2c25a7478d900599af"},"apiVersion":2,"qualificationJson":"null","manifestJson":"{\"parameters_schema\":null,\"steps\":{\"poll\":{\"contract\":\"Synthetic fixture value 82\",\"count_argument\":\"Synthetic fixture value 83\"},\"submit\":{\"contract\":\"Synthetic fixture value 84\",\"count\":1}}}","blocker":"Synthetic validation failure."},"reason":"Synthetic validation failure."}}}}} {"payload":{"event":{"id":"synthetic-identity-0523","emittedAt":"2000-01-01T00:01:51Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"61","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"de1945b5b1aa8afa5a7c5ef1f828972878974dc8b76ce6faf02df22f27b9b9a8","libraryChange":{"state":"failed","reason":"Synthetic validation failure."}}}}} -{"payload":{"event":{"id":"synthetic-identity-0525","emittedAt":"2000-01-01T00:01:52Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"62","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"a219c53ea18cba0242bc1649658b4863bd2d8345f2cfa4547f373bac5dd89d60","decisionRequest":{"requestId":"synthetic-identity-0524","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 85\",\"e41e913501b8667ec\":\"Synthetic fixture value 86\",\"0894c800598969656\":\"Synthetic fixture value 87\",\"defer\":\"Synthetic fixture value 88\",\"new\":\"Synthetic fixture value 89\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0526","emittedAt":"2000-01-01T00:01:53Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"63","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"a219c53ea18cba0242bc1649658b4863bd2d8345f2cfa4547f373bac5dd89d60","decisionResult":{"requestId":"synthetic-identity-0524","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.56}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0525","emittedAt":"2000-01-01T00:01:52Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"62","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"a219c53ea18cba0242bc1649658b4863bd2d8345f2cfa4547f373bac5dd89d60","decisionRequest":{"requestId":"synthetic-identity-0524","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"60ef6ba0a24d6d54a\":\"Synthetic fixture value 85\",\"e41e913501b8667ec\":\"Synthetic fixture value 86\",\"0894c800598969656\":\"Synthetic fixture value 87\",\"defer\":\"Synthetic fixture value 88\",\"new\":\"Synthetic fixture value 89\"}}","options":["60ef6ba0a24d6d54a","e41e913501b8667ec","0894c800598969656","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0526","emittedAt":"2000-01-01T00:01:53Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"63","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"a219c53ea18cba0242bc1649658b4863bd2d8345f2cfa4547f373bac5dd89d60","decisionResult":{"requestId":"synthetic-identity-0524","purpose":"jev_claim","evaluations":{"claim0":{"choice":"60ef6ba0a24d6d54a","probabilities":{"60ef6ba0a24d6d54a":0.5,"e41e913501b8667ec":0.5,"0894c800598969656":0.5,"defer":0.5,"new":0.5},"confidence":0.56}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0527","emittedAt":"2000-01-01T00:01:54Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"64","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"a219c53ea18cba0242bc1649658b4863bd2d8345f2cfa4547f373bac5dd89d60","claimId":"60ef6ba0a24d6d54a","libraryChange":{"state":"deferred","reason":"Synthetic validation failure."}}}}} {"payload":{"event":{"id":"synthetic-identity-0528","emittedAt":"2000-01-01T00:01:54Z","sessionId":"synthetic-identity-0267","turnId":"synthetic-identity-0176","emitter":"jev","seq":"65","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"f583382237313631f5519abed834d69f6059da3f14958586a7833a81f329cfee","background":true,"boundaryId":"a219c53ea18cba0242bc1649658b4863bd2d8345f2cfa4547f373bac5dd89d60","libraryChange":{"state":"settled"}}}}} {"payload":{"event":{"id":"synthetic-identity-0301","emittedAt":"2000-01-01T00:00:00Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"1","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","segmentId":"synthetic-identity-0300","boundaryId":"95532266eb0c742036cff79e5e74c3f1f688dbfd3b05a75aa1da2441e36245fb","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0303","emittedAt":"2000-01-01T00:00:00Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"2","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","decisionRequest":{"requestId":"synthetic-identity-0302","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 90\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 91\",\"ec502a90451aaadd5\":\"Synthetic fixture value 92\",\"defer\":\"Synthetic fixture value 93\",\"new\":\"Synthetic fixture value 94\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0304","emittedAt":"2000-01-01T00:00:01Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"3","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","decisionResult":{"requestId":"synthetic-identity-0302","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.33}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0303","emittedAt":"2000-01-01T00:00:00Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"2","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","decisionRequest":{"requestId":"synthetic-identity-0302","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 90\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 91\",\"ec502a90451aaadd5\":\"Synthetic fixture value 92\",\"defer\":\"Synthetic fixture value 93\",\"new\":\"Synthetic fixture value 94\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0304","emittedAt":"2000-01-01T00:00:01Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"3","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","decisionResult":{"requestId":"synthetic-identity-0302","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.33}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0305","emittedAt":"2000-01-01T00:00:02Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"4","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0307","emittedAt":"2000-01-01T00:00:03Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"5","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0306","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 95\",\"include\":\"Synthetic fixture value 96\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 97\",\"include\":\"Synthetic fixture value 98\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 99\",\"include\":\"Synthetic fixture value 100\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 101\",\"defer\":\"Synthetic fixture value 102\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0308","emittedAt":"2000-01-01T00:00:04Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"6","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0306","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.96}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0307","emittedAt":"2000-01-01T00:00:03Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"5","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0306","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 95\",\"include\":\"Synthetic fixture value 96\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 97\",\"include\":\"Synthetic fixture value 98\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 99\",\"include\":\"Synthetic fixture value 100\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 101\",\"defer\":\"Synthetic fixture value 102\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0308","emittedAt":"2000-01-01T00:00:04Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"6","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0306","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.96}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0309","emittedAt":"2000-01-01T00:00:05Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"7","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0310","emittedAt":"2000-01-01T00:00:05Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"8","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e336b57242c1557d5f4c86f99d392ce572216c51669eab47ba9c6efb1996428c","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0312","emittedAt":"2000-01-01T00:00:06Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"9","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","decisionRequest":{"requestId":"synthetic-identity-0311","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 103\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 104\",\"ec502a90451aaadd5\":\"Synthetic fixture value 105\",\"defer\":\"Synthetic fixture value 106\",\"new\":\"Synthetic fixture value 107\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 108\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 109\",\"ec502a90451aaadd5\":\"Synthetic fixture value 110\",\"defer\":\"Synthetic fixture value 111\",\"new\":\"Synthetic fixture value 112\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0313","emittedAt":"2000-01-01T00:00:07Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"10","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","decisionResult":{"requestId":"synthetic-identity-0311","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.34},"claim1":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.43}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0312","emittedAt":"2000-01-01T00:00:06Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"9","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","decisionRequest":{"requestId":"synthetic-identity-0311","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 103\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 104\",\"ec502a90451aaadd5\":\"Synthetic fixture value 105\",\"defer\":\"Synthetic fixture value 106\",\"new\":\"Synthetic fixture value 107\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 108\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 109\",\"ec502a90451aaadd5\":\"Synthetic fixture value 110\",\"defer\":\"Synthetic fixture value 111\",\"new\":\"Synthetic fixture value 112\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0313","emittedAt":"2000-01-01T00:00:07Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"10","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","decisionResult":{"requestId":"synthetic-identity-0311","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.34},"claim1":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.43}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0314","emittedAt":"2000-01-01T00:00:08Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"11","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0316","emittedAt":"2000-01-01T00:00:09Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"12","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0315","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 113\",\"include\":\"Synthetic fixture value 114\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 115\",\"include\":\"Synthetic fixture value 116\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 117\",\"include\":\"Synthetic fixture value 118\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 119\",\"defer\":\"Synthetic fixture value 120\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0316","emittedAt":"2000-01-01T00:00:09Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"12","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0315","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 113\",\"include\":\"Synthetic fixture value 114\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 115\",\"include\":\"Synthetic fixture value 116\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 117\",\"include\":\"Synthetic fixture value 118\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 119\",\"defer\":\"Synthetic fixture value 120\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0318","emittedAt":"2000-01-01T00:00:10Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"13","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","segmentId":"synthetic-identity-0317","boundaryId":"3f1067df3936a65f328ccbfd2cb6daba80e87e1927986285065dad87b22ca584","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0319","emittedAt":"2000-01-01T00:00:11Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"14","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0315","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.96},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.94}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0319","emittedAt":"2000-01-01T00:00:11Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"14","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0315","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.96},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.94}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0320","emittedAt":"2000-01-01T00:00:12Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"15","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0321","emittedAt":"2000-01-01T00:00:12Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"16","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"13663f0ebecbb58d4f7f9cbd6bf92d909233e77bc0fac0e5893982e3928e3dc6","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0323","emittedAt":"2000-01-01T00:00:12Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"17","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","decisionRequest":{"requestId":"synthetic-identity-0322","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 121\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 122\",\"ec502a90451aaadd5\":\"Synthetic fixture value 123\",\"defer\":\"Synthetic fixture value 124\",\"new\":\"Synthetic fixture value 125\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0324","emittedAt":"2000-01-01T00:00:13Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"18","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","decisionResult":{"requestId":"synthetic-identity-0322","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.5}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0323","emittedAt":"2000-01-01T00:00:12Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"17","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","decisionRequest":{"requestId":"synthetic-identity-0322","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 121\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 122\",\"ec502a90451aaadd5\":\"Synthetic fixture value 123\",\"defer\":\"Synthetic fixture value 124\",\"new\":\"Synthetic fixture value 125\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0324","emittedAt":"2000-01-01T00:00:13Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"18","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","decisionResult":{"requestId":"synthetic-identity-0322","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.5}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0326","emittedAt":"2000-01-01T00:00:14Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"19","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","segmentId":"synthetic-identity-0325","boundaryId":"f34dff5818e243569c6cff09c2c08a7548c3254d8ad64b2b7f4b6d5f1892508c","boundary":{"reason":"no_reflex"}}}}} {"payload":{"event":{"id":"synthetic-identity-0327","emittedAt":"2000-01-01T00:00:15Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"20","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0329","emittedAt":"2000-01-01T00:00:16Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"21","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0328","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 126\",\"include\":\"Synthetic fixture value 127\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 128\",\"include\":\"Synthetic fixture value 129\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 130\",\"include\":\"Synthetic fixture value 131\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 132\",\"defer\":\"Synthetic fixture value 133\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0330","emittedAt":"2000-01-01T00:00:17Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"22","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0328","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.22}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0329","emittedAt":"2000-01-01T00:00:16Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"21","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0328","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 126\",\"include\":\"Synthetic fixture value 127\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 128\",\"include\":\"Synthetic fixture value 129\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 130\",\"include\":\"Synthetic fixture value 131\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 132\",\"defer\":\"Synthetic fixture value 133\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0330","emittedAt":"2000-01-01T00:00:17Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"22","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0328","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.22}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0331","emittedAt":"2000-01-01T00:00:18Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"23","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0332","emittedAt":"2000-01-01T00:00:18Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"24","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"243e493cc5b30d796a6872483ebb3a17c09d894b078bbc9fe3d2c71076a221e0","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0334","emittedAt":"2000-01-01T00:00:19Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"25","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","decisionRequest":{"requestId":"synthetic-identity-0333","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 134\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 135\",\"ec502a90451aaadd5\":\"Synthetic fixture value 136\",\"defer\":\"Synthetic fixture value 137\",\"new\":\"Synthetic fixture value 138\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0336","emittedAt":"2000-01-01T00:00:20Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"26","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","decisionResult":{"requestId":"synthetic-identity-0333","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.7}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0334","emittedAt":"2000-01-01T00:00:19Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"25","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","decisionRequest":{"requestId":"synthetic-identity-0333","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 134\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 135\",\"ec502a90451aaadd5\":\"Synthetic fixture value 136\",\"defer\":\"Synthetic fixture value 137\",\"new\":\"Synthetic fixture value 138\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0336","emittedAt":"2000-01-01T00:00:20Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"26","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","decisionResult":{"requestId":"synthetic-identity-0333","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.7}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0337","emittedAt":"2000-01-01T00:00:21Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"27","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","segmentId":"synthetic-identity-0335","boundaryId":"3166b1e6674437ff8475571248e414ff9ffcda003b55cfb7fdd1caa55dd5ae26","boundary":{"reason":"no_reflex"}}}}} {"payload":{"event":{"id":"synthetic-identity-0338","emittedAt":"2000-01-01T00:00:22Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"28","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0340","emittedAt":"2000-01-01T00:00:23Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"29","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0339","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 139\",\"include\":\"Synthetic fixture value 140\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 141\",\"include\":\"Synthetic fixture value 142\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 143\",\"include\":\"Synthetic fixture value 144\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 145\",\"defer\":\"Synthetic fixture value 146\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0341","emittedAt":"2000-01-01T00:00:24Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"30","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0339","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.28}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0340","emittedAt":"2000-01-01T00:00:23Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"29","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0339","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 139\",\"include\":\"Synthetic fixture value 140\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 141\",\"include\":\"Synthetic fixture value 142\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 143\",\"include\":\"Synthetic fixture value 144\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 145\",\"defer\":\"Synthetic fixture value 146\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0341","emittedAt":"2000-01-01T00:00:24Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"30","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0339","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.28}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0342","emittedAt":"2000-01-01T00:00:25Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"31","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0343","emittedAt":"2000-01-01T00:00:25Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"32","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"ab78ca459478d3a88c581c4e0b4b3782f8140c96033e4eef9b34092577e89f13","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0345","emittedAt":"2000-01-01T00:00:25Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"33","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","decisionRequest":{"requestId":"synthetic-identity-0344","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 147\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 148\",\"ec502a90451aaadd5\":\"Synthetic fixture value 149\",\"defer\":\"Synthetic fixture value 150\",\"new\":\"Synthetic fixture value 151\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 152\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 153\",\"ec502a90451aaadd5\":\"Synthetic fixture value 154\",\"defer\":\"Synthetic fixture value 155\",\"new\":\"Synthetic fixture value 156\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0345","emittedAt":"2000-01-01T00:00:25Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"33","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","decisionRequest":{"requestId":"synthetic-identity-0344","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 147\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 148\",\"ec502a90451aaadd5\":\"Synthetic fixture value 149\",\"defer\":\"Synthetic fixture value 150\",\"new\":\"Synthetic fixture value 151\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 152\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 153\",\"ec502a90451aaadd5\":\"Synthetic fixture value 154\",\"defer\":\"Synthetic fixture value 155\",\"new\":\"Synthetic fixture value 156\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0347","emittedAt":"2000-01-01T00:00:26Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"34","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","segmentId":"synthetic-identity-0346","boundaryId":"96a6525b4b7990ba973e571309ffae3230c4e8a6feeae626a0332b215907d381","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0348","emittedAt":"2000-01-01T00:00:27Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"35","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","decisionResult":{"requestId":"synthetic-identity-0344","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.8},"claim1":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.76}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0348","emittedAt":"2000-01-01T00:00:27Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"35","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","decisionResult":{"requestId":"synthetic-identity-0344","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.8},"claim1":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.76}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0349","emittedAt":"2000-01-01T00:00:28Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"36","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0351","emittedAt":"2000-01-01T00:00:29Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"37","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0350","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 157\",\"include\":\"Synthetic fixture value 158\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 159\",\"include\":\"Synthetic fixture value 160\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 161\",\"include\":\"Synthetic fixture value 162\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 163\",\"defer\":\"Synthetic fixture value 164\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0352","emittedAt":"2000-01-01T00:00:30Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"38","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0350","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.22}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0351","emittedAt":"2000-01-01T00:00:29Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"37","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0350","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 157\",\"include\":\"Synthetic fixture value 158\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 159\",\"include\":\"Synthetic fixture value 160\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 161\",\"include\":\"Synthetic fixture value 162\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 163\",\"defer\":\"Synthetic fixture value 164\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0352","emittedAt":"2000-01-01T00:00:30Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"38","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0350","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.22}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0353","emittedAt":"2000-01-01T00:00:31Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"39","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0354","emittedAt":"2000-01-01T00:00:31Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"40","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"4eba43c1940524ebacce9b82e15d555eae629e7ba631081b421ef65a62380903","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0356","emittedAt":"2000-01-01T00:00:32Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"41","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","decisionRequest":{"requestId":"synthetic-identity-0355","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 165\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 166\",\"ec502a90451aaadd5\":\"Synthetic fixture value 167\",\"defer\":\"Synthetic fixture value 168\",\"new\":\"Synthetic fixture value 169\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0357","emittedAt":"2000-01-01T00:00:33Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"42","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","decisionResult":{"requestId":"synthetic-identity-0355","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.71}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0356","emittedAt":"2000-01-01T00:00:32Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"41","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","decisionRequest":{"requestId":"synthetic-identity-0355","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 165\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 166\",\"ec502a90451aaadd5\":\"Synthetic fixture value 167\",\"defer\":\"Synthetic fixture value 168\",\"new\":\"Synthetic fixture value 169\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0357","emittedAt":"2000-01-01T00:00:33Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"42","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","decisionResult":{"requestId":"synthetic-identity-0355","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.71}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0358","emittedAt":"2000-01-01T00:00:34Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"43","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0360","emittedAt":"2000-01-01T00:00:35Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"44","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0359","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 170\",\"include\":\"Synthetic fixture value 171\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 172\",\"include\":\"Synthetic fixture value 173\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 174\",\"include\":\"Synthetic fixture value 175\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 176\",\"defer\":\"Synthetic fixture value 177\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0361","emittedAt":"2000-01-01T00:00:36Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"45","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0359","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.2}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0360","emittedAt":"2000-01-01T00:00:35Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"44","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0359","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 170\",\"include\":\"Synthetic fixture value 171\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 172\",\"include\":\"Synthetic fixture value 173\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 174\",\"include\":\"Synthetic fixture value 175\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 176\",\"defer\":\"Synthetic fixture value 177\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0361","emittedAt":"2000-01-01T00:00:36Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"45","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0359","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.2}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0362","emittedAt":"2000-01-01T00:00:37Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"46","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0363","emittedAt":"2000-01-01T00:00:37Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"47","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8721ba1c298b4c4aafd8a80cf6a5f0c15bc94ed3faa10c17c6af7e57dfb6e848","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0365","emittedAt":"2000-01-01T00:00:37Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"48","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","decisionRequest":{"requestId":"synthetic-identity-0364","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 178\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 179\",\"ec502a90451aaadd5\":\"Synthetic fixture value 180\",\"defer\":\"Synthetic fixture value 181\",\"new\":\"Synthetic fixture value 182\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 183\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 184\",\"ec502a90451aaadd5\":\"Synthetic fixture value 185\",\"defer\":\"Synthetic fixture value 186\",\"new\":\"Synthetic fixture value 187\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0366","emittedAt":"2000-01-01T00:00:38Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"49","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","decisionResult":{"requestId":"synthetic-identity-0364","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.75},"claim1":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.78}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0365","emittedAt":"2000-01-01T00:00:37Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"48","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","decisionRequest":{"requestId":"synthetic-identity-0364","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 178\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 179\",\"ec502a90451aaadd5\":\"Synthetic fixture value 180\",\"defer\":\"Synthetic fixture value 181\",\"new\":\"Synthetic fixture value 182\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 183\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 184\",\"ec502a90451aaadd5\":\"Synthetic fixture value 185\",\"defer\":\"Synthetic fixture value 186\",\"new\":\"Synthetic fixture value 187\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0366","emittedAt":"2000-01-01T00:00:38Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"49","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","decisionResult":{"requestId":"synthetic-identity-0364","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.75},"claim1":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.78}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0367","emittedAt":"2000-01-01T00:00:39Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"50","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0369","emittedAt":"2000-01-01T00:00:39Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"51","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0368","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 188\",\"include\":\"Synthetic fixture value 189\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 190\",\"include\":\"Synthetic fixture value 191\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 192\",\"include\":\"Synthetic fixture value 193\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 194\",\"defer\":\"Synthetic fixture value 195\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0369","emittedAt":"2000-01-01T00:00:39Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"51","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0368","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 188\",\"include\":\"Synthetic fixture value 189\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 190\",\"include\":\"Synthetic fixture value 191\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 192\",\"include\":\"Synthetic fixture value 193\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 194\",\"defer\":\"Synthetic fixture value 195\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0371","emittedAt":"2000-01-01T00:00:40Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"52","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","segmentId":"synthetic-identity-0370","boundaryId":"86442c06f3c091fef6c12026423851f3687b2aafb668debfe39e7a9359f6d53a","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0372","emittedAt":"2000-01-01T00:00:41Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"53","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0368","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.17}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0372","emittedAt":"2000-01-01T00:00:41Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"53","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0368","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.17}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0373","emittedAt":"2000-01-01T00:00:42Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"54","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0374","emittedAt":"2000-01-01T00:00:42Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"55","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"8b45fbc02e00b953f1be8ba4d7ad1a3d26d0ba2ec234e38919594780f8aa85ab","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0376","emittedAt":"2000-01-01T00:00:42Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"56","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","decisionRequest":{"requestId":"synthetic-identity-0375","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 196\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 197\",\"ec502a90451aaadd5\":\"Synthetic fixture value 198\",\"defer\":\"Synthetic fixture value 199\",\"new\":\"Synthetic fixture value 200\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0377","emittedAt":"2000-01-01T00:00:43Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"57","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","decisionResult":{"requestId":"synthetic-identity-0375","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.67}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0376","emittedAt":"2000-01-01T00:00:42Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"56","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","decisionRequest":{"requestId":"synthetic-identity-0375","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 196\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 197\",\"ec502a90451aaadd5\":\"Synthetic fixture value 198\",\"defer\":\"Synthetic fixture value 199\",\"new\":\"Synthetic fixture value 200\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0377","emittedAt":"2000-01-01T00:00:43Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"57","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","decisionResult":{"requestId":"synthetic-identity-0375","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.67}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0378","emittedAt":"2000-01-01T00:00:44Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"58","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0380","emittedAt":"2000-01-01T00:00:45Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"59","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0379","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 201\",\"include\":\"Synthetic fixture value 202\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 203\",\"include\":\"Synthetic fixture value 204\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 205\",\"include\":\"Synthetic fixture value 206\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 207\",\"defer\":\"Synthetic fixture value 208\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0381","emittedAt":"2000-01-01T00:00:46Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"60","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0379","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.15}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0380","emittedAt":"2000-01-01T00:00:45Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"59","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0379","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 201\",\"include\":\"Synthetic fixture value 202\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 203\",\"include\":\"Synthetic fixture value 204\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 205\",\"include\":\"Synthetic fixture value 206\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 207\",\"defer\":\"Synthetic fixture value 208\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0381","emittedAt":"2000-01-01T00:00:46Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"60","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0379","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.15}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0382","emittedAt":"2000-01-01T00:00:47Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"61","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0383","emittedAt":"2000-01-01T00:00:47Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"62","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"73531670ef05cdaf36a634bc937265f4b77f64e78fcfce13c842dfd81acb237a","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0385","emittedAt":"2000-01-01T00:00:47Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"63","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","decisionRequest":{"requestId":"synthetic-identity-0384","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 209\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 210\",\"ec502a90451aaadd5\":\"Synthetic fixture value 211\",\"defer\":\"Synthetic fixture value 212\",\"new\":\"Synthetic fixture value 213\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0386","emittedAt":"2000-01-01T00:00:48Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"64","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","decisionResult":{"requestId":"synthetic-identity-0384","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.57}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0385","emittedAt":"2000-01-01T00:00:47Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"63","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","decisionRequest":{"requestId":"synthetic-identity-0384","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 209\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 210\",\"ec502a90451aaadd5\":\"Synthetic fixture value 211\",\"defer\":\"Synthetic fixture value 212\",\"new\":\"Synthetic fixture value 213\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0386","emittedAt":"2000-01-01T00:00:48Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"64","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","decisionResult":{"requestId":"synthetic-identity-0384","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.57}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0387","emittedAt":"2000-01-01T00:00:49Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"65","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0389","emittedAt":"2000-01-01T00:00:50Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"66","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0388","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 214\",\"include\":\"Synthetic fixture value 215\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 216\",\"include\":\"Synthetic fixture value 217\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 218\",\"include\":\"Synthetic fixture value 219\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 220\",\"defer\":\"Synthetic fixture value 221\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0389","emittedAt":"2000-01-01T00:00:50Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"66","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0388","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 214\",\"include\":\"Synthetic fixture value 215\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 216\",\"include\":\"Synthetic fixture value 217\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 218\",\"include\":\"Synthetic fixture value 219\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 220\",\"defer\":\"Synthetic fixture value 221\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0391","emittedAt":"2000-01-01T00:00:51Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"67","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","segmentId":"synthetic-identity-0390","boundaryId":"1c2d4d5447617e34a0785f61acd535bec54e12eb22efdd94818df2579b288e52","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0392","emittedAt":"2000-01-01T00:00:52Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"68","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0388","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.16}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0392","emittedAt":"2000-01-01T00:00:52Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"68","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0388","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.16}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0393","emittedAt":"2000-01-01T00:00:53Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"69","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0394","emittedAt":"2000-01-01T00:00:53Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"70","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"c8564bcd658a42b4cab131bd5929db0cdf64eb60bbec02fcde7f0d8069b29aee","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0396","emittedAt":"2000-01-01T00:00:53Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"71","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","decisionRequest":{"requestId":"synthetic-identity-0395","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 222\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 223\",\"ec502a90451aaadd5\":\"Synthetic fixture value 224\",\"defer\":\"Synthetic fixture value 225\",\"new\":\"Synthetic fixture value 226\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0397","emittedAt":"2000-01-01T00:00:54Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"72","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","decisionResult":{"requestId":"synthetic-identity-0395","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.4}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0396","emittedAt":"2000-01-01T00:00:53Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"71","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","decisionRequest":{"requestId":"synthetic-identity-0395","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 222\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 223\",\"ec502a90451aaadd5\":\"Synthetic fixture value 224\",\"defer\":\"Synthetic fixture value 225\",\"new\":\"Synthetic fixture value 226\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0397","emittedAt":"2000-01-01T00:00:54Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"72","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","decisionResult":{"requestId":"synthetic-identity-0395","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.4}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0398","emittedAt":"2000-01-01T00:00:55Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"73","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0400","emittedAt":"2000-01-01T00:00:56Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"74","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0399","purpose":"jev_reflex","questions":{"1eae434e55c440826":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 227\",\"include\":\"Synthetic fixture value 228\"}"},"8b7f9c05e25286b14":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 229\",\"include\":\"Synthetic fixture value 230\"}"},"ec502a90451aaadd5":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 231\",\"include\":\"Synthetic fixture value 232\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 233\",\"defer\":\"Synthetic fixture value 234\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0401","emittedAt":"2000-01-01T00:00:57Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"75","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0399","purpose":"jev_reflex","answers":{"1eae434e55c440826":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"ec502a90451aaadd5":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"synthetic-identity-0177":{"type":"choice","choice":"synthetic-identity-0177","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.09}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0400","emittedAt":"2000-01-01T00:00:56Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"74","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","decisionRequest":{"requestId":"synthetic-identity-0399","purpose":"jev_reflex","claims":{"1eae434e55c440826":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 227\",\"include\":\"Synthetic fixture value 228\"}}","options":["defer","include"]},"8b7f9c05e25286b14":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 229\",\"include\":\"Synthetic fixture value 230\"}}","options":["defer","include"]},"ec502a90451aaadd5":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 231\",\"include\":\"Synthetic fixture value 232\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 233\",\"defer\":\"Synthetic fixture value 234\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0401","emittedAt":"2000-01-01T00:00:57Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"75","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","decisionResult":{"requestId":"synthetic-identity-0399","purpose":"jev_reflex","evaluations":{"1eae434e55c440826":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"8b7f9c05e25286b14":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":1},"ec502a90451aaadd5":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"synthetic-identity-0177":{"choice":"synthetic-identity-0177","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.09}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0403","emittedAt":"2000-01-01T00:00:58Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"76","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","generation":{"kind":"reflex_llm","state":"started","requestId":"synthetic-identity-0402","requestedEffort":"none"}}}}} {"payload":{"event":{"id":"synthetic-identity-0405","emittedAt":"2000-01-01T00:00:59Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"77","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","generation":{"kind":"compiler_round","state":"started","requestId":"synthetic-identity-0404","attempt":1,"parentRequestId":"synthetic-identity-0402","phase":"compilation"}}}}} {"payload":{"event":{"id":"synthetic-identity-0406","emittedAt":"2000-01-01T00:01:00Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"78","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","generation":{"kind":"compiler_round","state":"finished","output":"[]","elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"cache_miss":"1000","cache_read":"1000","cache_write":"1000"}},"requestId":"synthetic-identity-0404","attempt":1,"parentRequestId":"synthetic-identity-0402","phase":"compilation"}}}}} @@ -161,32 +161,32 @@ {"payload":{"event":{"id":"synthetic-identity-0431","emittedAt":"2000-01-01T00:01:06Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"96","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","claimId":"1eae434e55c440826","generation":{"kind":"reflex_llm","state":"finished","output":"[]","elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"cache_miss":"1000","cache_read":"1000","cache_write":"1000","requests":"1"}},"requestId":"synthetic-identity-0402","requestedEffort":"none"}}}}} {"payload":{"event":{"id":"synthetic-identity-0432","emittedAt":"2000-01-01T00:01:07Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"97","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","libraryChange":{"state":"reflex_candidate","reflex":{"id":"synthetic-identity-0279","when":"Synthetic fixture when 235","decide":"Use the synthetic fixture inputs and defer when they are absent.","observe":"js:function(context, args) {\n args = args || {};\n var missing = [];\n if (!args.url) missing.push(\"url\");\n if (!args.session) missing.push(\"session\");\n if (!args.term) missing.push(\"term\");\n if (!args.input_selector) missing.push(\"input_selector\");\n if (!args.submit_selector) missing.push(\"submit_selector\");\n if (missing.length) return {defer: \"missing current arguments\", parameters: \"url, session, term, input_selector, submit_selector\"};\n var session = args.session;\n var term = String(args.term);\n var inSel = String(args.input_selector);\n var btnSel = String(args.submit_selector);\n var prefix = (args.receipt_prefix == null) ? \"Receipt: \" : String(args.receipt_prefix);\n\n function snap(data) {\n if (!data || !data.elements) return null;\n return data.elements;\n }\n function findIdx(elements) {\n if (!elements) return -1;\n for (var i = 0; i < elements.length; i++) {\n var t = elements[i].text;\n if (t && t.indexOf(prefix) === 0) return i;\n }\n return -1;\n }\n function reportFor(elements, hostCall) {\n var idx = findIdx(elements);\n if (idx < 0) return null;\n return {report: {evidence: hostCall, path: [\"data\", \"elements\", idx, \"text\"]}};\n }\n\n var hostCall = null;\n var elements = null;\n var opened = false;\n var filled = false;\n var clicked = false;\n var anySnapshot = false;\n var postClickSnapshot = false;\n\n var hist = context.history || [];\n for (var h = 0; h < hist.length; h++) {\n var rec = hist[h];\n if (rec.name !== \"bash\") continue;\n var av = (rec.decoded_argv || []).slice();\n if (av[0] !== \"playwright\") continue;\n var sub = av[1];\n if (sub === \"open\" && av[2] === args.url && av.indexOf(\"--session\") >= 0) { opened = true; }\n if (sub === \"fill\" && av[2] === session && av[3] === inSel && av[4] === term) { filled = true; }\n if (sub === \"click\" && av[2] === session && av[3] === btnSel) { clicked = true; }\n if (sub === \"snapshot\" && av[2] === session && rec.data) {\n elements = snap(rec.data);\n if (rec.call_id) hostCall = rec.call_id;\n anySnapshot = true;\n if (clicked) postClickSnapshot = true;\n }\n }\n\n if (clicked && postClickSnapshot && elements) {\n var done = reportFor(elements, hostCall);\n if (done) return done;\n }\n\n if (!opened) {\n var o = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"open\", args.url, \"--session\", session])}, read: false, step: \"open\", occurrence: 0});\n if (o && o.is_error) return {defer: \"open failed: \" + (o.text || \"unknown\")};\n }\n\n if (!anySnapshot) {\n var s1 = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"snapshot\", session, \"--json\"])}, read: true});\n if (s1 && s1.call_id) hostCall = s1.call_id;\n elements = snap(s1 && s1.data);\n }\n\n if (!filled) {\n var f = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"fill\", session, inSel, term])}, read: false, step: \"fill\", occurrence: 0});\n if (f && f.is_error) return {defer: \"fill failed: \" + (f.text || \"unknown\")};\n }\n\n if (!clicked) {\n var c = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"click\", session, btnSel])}, read: false, step: \"click\", occurrence: 0});\n if (c && c.is_error) return {defer: \"click failed: \" + (c.text || \"unknown\")};\n }\n\n if (!postClickSnapshot) {\n var s2 = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"snapshot\", session, \"--json\"])}, read: true});\n if (s2 && s2.call_id) hostCall = s2.call_id;\n var e2 = snap(s2 && s2.data);\n var p2 = reportFor(e2, hostCall);\n if (p2) return p2;\n }\n return {defer: \"receipt not yet visible after submit\"};\n}","claimIds":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5"],"contracts":{"command:experiment":"abe25c89e23db76babe27845dc50808e179376d3e568d08bc7f62aa3c2d4b4be","command:jev":"9729b785e09bd242c2b73d15a336408ff05ee574472ae60963d071215585f4c2","command:playwright":"6a0b9da4a4cd5c8b6dce0937b4f0061c196ecfa2f4ab237cca4f3dd65743489a","helpers":"98aa22757269c3f695b8e3254b3cba7af0f196d29e5e05db58821ec7e43533db","tool:bash":"2efbb2e0f82e04e8fa7e605121b300db09945e5fb0624a2c25a7478d900599af"},"apiVersion":2,"qualificationJson":"null","manifestJson":"{\"parameters_schema\":null,\"steps\":{\"click\":{\"contract\":\"playwright\",\"count\":1},\"fill\":{\"contract\":\"playwright\",\"count\":1}}}","blocker":"Synthetic validation failure."},"reason":"Synthetic validation failure."}}}}} {"payload":{"event":{"id":"synthetic-identity-0433","emittedAt":"2000-01-01T00:01:07Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"98","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"e15613e101978f54b1af8584b8f47d433b0233ee240856a665fefa2864f8fbdc","libraryChange":{"state":"failed","reason":"Synthetic validation failure."}}}}} -{"payload":{"event":{"id":"synthetic-identity-0435","emittedAt":"2000-01-01T00:01:08Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"99","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"06317c116e381ea87b4bf090f4e6c90434d3b4908a71402c7152b099b3287286","decisionRequest":{"requestId":"synthetic-identity-0434","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"1eae434e55c440826\":\"Synthetic fixture value 236\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 237\",\"ec502a90451aaadd5\":\"Synthetic fixture value 238\",\"defer\":\"Synthetic fixture value 239\",\"new\":\"Synthetic fixture value 240\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0436","emittedAt":"2000-01-01T00:01:09Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"100","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"06317c116e381ea87b4bf090f4e6c90434d3b4908a71402c7152b099b3287286","decisionResult":{"requestId":"synthetic-identity-0434","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.27}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0435","emittedAt":"2000-01-01T00:01:08Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"99","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"06317c116e381ea87b4bf090f4e6c90434d3b4908a71402c7152b099b3287286","decisionRequest":{"requestId":"synthetic-identity-0434","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"1eae434e55c440826\":\"Synthetic fixture value 236\",\"8b7f9c05e25286b14\":\"Synthetic fixture value 237\",\"ec502a90451aaadd5\":\"Synthetic fixture value 238\",\"defer\":\"Synthetic fixture value 239\",\"new\":\"Synthetic fixture value 240\"}}","options":["1eae434e55c440826","8b7f9c05e25286b14","ec502a90451aaadd5","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0436","emittedAt":"2000-01-01T00:01:09Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"100","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"06317c116e381ea87b4bf090f4e6c90434d3b4908a71402c7152b099b3287286","decisionResult":{"requestId":"synthetic-identity-0434","purpose":"jev_claim","evaluations":{"claim0":{"choice":"1eae434e55c440826","probabilities":{"1eae434e55c440826":0.5,"8b7f9c05e25286b14":0.5,"ec502a90451aaadd5":0.5,"defer":0.5,"new":0.5},"confidence":0.27}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0437","emittedAt":"2000-01-01T00:01:10Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"101","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"06317c116e381ea87b4bf090f4e6c90434d3b4908a71402c7152b099b3287286","claimId":"1eae434e55c440826","libraryChange":{"state":"deferred","reason":"Synthetic validation failure."}}}}} {"payload":{"event":{"id":"synthetic-identity-0438","emittedAt":"2000-01-01T00:01:10Z","sessionId":"synthetic-identity-0268","turnId":"synthetic-identity-0176","emitter":"jev","seq":"102","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"affa5bbdcd4df8cfeae22a794895c09155ea1a21b64db12489857bcc7bb7d408","background":true,"boundaryId":"06317c116e381ea87b4bf090f4e6c90434d3b4908a71402c7152b099b3287286","libraryChange":{"state":"settled"}}}}} {"payload":{"event":{"id":"synthetic-identity-0530","emittedAt":"2000-01-01T00:01:55Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"1","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","segmentId":"synthetic-identity-0529","boundaryId":"c62b28944868eca92897309a73604df1cc0d6fdd0237024e0204ecdb5f7c314d","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0532","emittedAt":"2000-01-01T00:01:56Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"2","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","decisionRequest":{"requestId":"synthetic-identity-0531","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"50759353ece00982e\":\"Synthetic fixture value 241\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 242\",\"defer\":\"Synthetic fixture value 243\",\"new\":\"Synthetic fixture value 244\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0533","emittedAt":"2000-01-01T00:01:57Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"3","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","decisionResult":{"requestId":"synthetic-identity-0531","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.36}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0532","emittedAt":"2000-01-01T00:01:56Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"2","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","decisionRequest":{"requestId":"synthetic-identity-0531","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 241\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 242\",\"defer\":\"Synthetic fixture value 243\",\"new\":\"Synthetic fixture value 244\"}}","options":["50759353ece00982e","f1cd4cfc8eb6f9617","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0533","emittedAt":"2000-01-01T00:01:57Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"3","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","decisionResult":{"requestId":"synthetic-identity-0531","purpose":"jev_claim","evaluations":{"claim0":{"choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.36}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0534","emittedAt":"2000-01-01T00:01:58Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"4","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","claimId":"f1cd4cfc8eb6f9617","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0536","emittedAt":"2000-01-01T00:01:59Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"5","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","claimId":"f1cd4cfc8eb6f9617","decisionRequest":{"requestId":"synthetic-identity-0535","purpose":"jev_reflex","questions":{"50759353ece00982e":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 245\",\"include\":\"Synthetic fixture value 246\"}"},"f1cd4cfc8eb6f9617":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 247\",\"include\":\"Synthetic fixture value 248\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 249\",\"defer\":\"Synthetic fixture value 250\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0537","emittedAt":"2000-01-01T00:02:00Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"6","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","claimId":"f1cd4cfc8eb6f9617","decisionResult":{"requestId":"synthetic-identity-0535","purpose":"jev_reflex","answers":{"50759353ece00982e":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"f1cd4cfc8eb6f9617":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.75}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0536","emittedAt":"2000-01-01T00:01:59Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"5","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","claimId":"f1cd4cfc8eb6f9617","decisionRequest":{"requestId":"synthetic-identity-0535","purpose":"jev_reflex","claims":{"50759353ece00982e":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 245\",\"include\":\"Synthetic fixture value 246\"}}","options":["defer","include"]},"f1cd4cfc8eb6f9617":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 247\",\"include\":\"Synthetic fixture value 248\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 249\",\"defer\":\"Synthetic fixture value 250\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0537","emittedAt":"2000-01-01T00:02:00Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"6","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","claimId":"f1cd4cfc8eb6f9617","decisionResult":{"requestId":"synthetic-identity-0535","purpose":"jev_reflex","evaluations":{"50759353ece00982e":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"f1cd4cfc8eb6f9617":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.98},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.75}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0538","emittedAt":"2000-01-01T00:02:01Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"7","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","claimId":"f1cd4cfc8eb6f9617","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0539","emittedAt":"2000-01-01T00:02:01Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"8","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"d68b12c05a890264c242b8ea9d6cd06e78e7620014d1bee558f2fa2e081b847d","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0541","emittedAt":"2000-01-01T00:02:02Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"9","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","decisionRequest":{"requestId":"synthetic-identity-0540","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"50759353ece00982e\":\"Synthetic fixture value 251\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 252\",\"defer\":\"Synthetic fixture value 253\",\"new\":\"Synthetic fixture value 254\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"50759353ece00982e\":\"Synthetic fixture value 255\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 256\",\"defer\":\"Synthetic fixture value 257\",\"new\":\"Synthetic fixture value 258\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0541","emittedAt":"2000-01-01T00:02:02Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"9","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","decisionRequest":{"requestId":"synthetic-identity-0540","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 251\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 252\",\"defer\":\"Synthetic fixture value 253\",\"new\":\"Synthetic fixture value 254\"}}","options":["50759353ece00982e","f1cd4cfc8eb6f9617","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 255\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 256\",\"defer\":\"Synthetic fixture value 257\",\"new\":\"Synthetic fixture value 258\"}}","options":["50759353ece00982e","f1cd4cfc8eb6f9617","defer","new"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0543","emittedAt":"2000-01-01T00:02:03Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"10","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","segmentId":"synthetic-identity-0542","boundaryId":"8cc1ae9b763dc05a3551255d7feeb9299a028483a902c3e66f29ddeda8728749","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0544","emittedAt":"2000-01-01T00:02:04Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"11","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","decisionResult":{"requestId":"synthetic-identity-0540","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.75},"claim1":{"type":"choice","choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.78}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0544","emittedAt":"2000-01-01T00:02:04Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"11","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","decisionResult":{"requestId":"synthetic-identity-0540","purpose":"jev_claim","evaluations":{"claim0":{"choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.75},"claim1":{"choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.78}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0545","emittedAt":"2000-01-01T00:02:05Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"12","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","claimId":"f1cd4cfc8eb6f9617","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0547","emittedAt":"2000-01-01T00:02:06Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"13","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","claimId":"f1cd4cfc8eb6f9617","decisionRequest":{"requestId":"synthetic-identity-0546","purpose":"jev_reflex","questions":{"50759353ece00982e":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 259\",\"include\":\"Synthetic fixture value 260\"}"},"f1cd4cfc8eb6f9617":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 261\",\"include\":\"Synthetic fixture value 262\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 263\",\"defer\":\"Synthetic fixture value 264\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0548","emittedAt":"2000-01-01T00:02:07Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"14","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","claimId":"f1cd4cfc8eb6f9617","decisionResult":{"requestId":"synthetic-identity-0546","purpose":"jev_reflex","answers":{"50759353ece00982e":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"f1cd4cfc8eb6f9617":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.97},"synthetic-identity-0177":{"type":"choice","choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.34}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0547","emittedAt":"2000-01-01T00:02:06Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"13","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","claimId":"f1cd4cfc8eb6f9617","decisionRequest":{"requestId":"synthetic-identity-0546","purpose":"jev_reflex","claims":{"50759353ece00982e":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 259\",\"include\":\"Synthetic fixture value 260\"}}","options":["defer","include"]},"f1cd4cfc8eb6f9617":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 261\",\"include\":\"Synthetic fixture value 262\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 263\",\"defer\":\"Synthetic fixture value 264\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0548","emittedAt":"2000-01-01T00:02:07Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"14","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","claimId":"f1cd4cfc8eb6f9617","decisionResult":{"requestId":"synthetic-identity-0546","purpose":"jev_reflex","evaluations":{"50759353ece00982e":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"f1cd4cfc8eb6f9617":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.97},"synthetic-identity-0177":{"choice":"defer","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.34}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0549","emittedAt":"2000-01-01T00:02:08Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"15","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","claimId":"f1cd4cfc8eb6f9617","libraryChange":{"state":"deferred"}}}}} {"payload":{"event":{"id":"synthetic-identity-0550","emittedAt":"2000-01-01T00:02:09Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"16","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"7dcf4ea8737b0751121f248e74a3a73cb5a5a529301a5a7bb4c9308d1a02ca27","libraryChange":{"state":"settled"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0552","emittedAt":"2000-01-01T00:02:10Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"17","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","decisionRequest":{"requestId":"synthetic-identity-0551","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"50759353ece00982e\":\"Synthetic fixture value 265\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 266\",\"defer\":\"Synthetic fixture value 267\",\"new\":\"Synthetic fixture value 268\"}"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0552","emittedAt":"2000-01-01T00:02:10Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"17","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","decisionRequest":{"requestId":"synthetic-identity-0551","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 265\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 266\",\"defer\":\"Synthetic fixture value 267\",\"new\":\"Synthetic fixture value 268\"}}","options":["50759353ece00982e","f1cd4cfc8eb6f9617","defer","new"]}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0554","emittedAt":"2000-01-01T00:02:11Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"18","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","segmentId":"synthetic-identity-0553","boundaryId":"2d88e26b506365516000392616ba86c0bbf6a7482f8dd1a1c4270b7a2465826b","boundary":{"reason":"no_reflex"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0555","emittedAt":"2000-01-01T00:02:12Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"19","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","decisionResult":{"requestId":"synthetic-identity-0551","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.74}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0555","emittedAt":"2000-01-01T00:02:12Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"19","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","decisionResult":{"requestId":"synthetic-identity-0551","purpose":"jev_claim","evaluations":{"claim0":{"choice":"f1cd4cfc8eb6f9617","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.74}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0556","emittedAt":"2000-01-01T00:02:13Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"20","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","libraryChange":{"state":"compiling"}}}}} -{"payload":{"event":{"id":"synthetic-identity-0558","emittedAt":"2000-01-01T00:02:14Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"21","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","decisionRequest":{"requestId":"synthetic-identity-0557","purpose":"jev_reflex","questions":{"50759353ece00982e":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 269\",\"include\":\"Synthetic fixture value 270\"}"},"f1cd4cfc8eb6f9617":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"defer\":\"Synthetic fixture value 271\",\"include\":\"Synthetic fixture value 272\"}"},"synthetic-identity-0177":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"synthetic-identity-0177\":\"Synthetic fixture value 273\",\"defer\":\"Synthetic fixture value 274\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0559","emittedAt":"2000-01-01T00:02:15Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"22","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","decisionResult":{"requestId":"synthetic-identity-0557","purpose":"jev_reflex","answers":{"50759353ece00982e":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"f1cd4cfc8eb6f9617":{"type":"choice","choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"synthetic-identity-0177":{"type":"choice","choice":"synthetic-identity-0177","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.14}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0558","emittedAt":"2000-01-01T00:02:14Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"21","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","decisionRequest":{"requestId":"synthetic-identity-0557","purpose":"jev_reflex","claims":{"50759353ece00982e":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 269\",\"include\":\"Synthetic fixture value 270\"}}","options":["defer","include"]},"f1cd4cfc8eb6f9617":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 271\",\"include\":\"Synthetic fixture value 272\"}}","options":["defer","include"]},"synthetic-identity-0177":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 273\",\"defer\":\"Synthetic fixture value 274\"}}","options":["synthetic-identity-0177","defer"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0559","emittedAt":"2000-01-01T00:02:15Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"22","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","decisionResult":{"requestId":"synthetic-identity-0557","purpose":"jev_reflex","evaluations":{"50759353ece00982e":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"f1cd4cfc8eb6f9617":{"choice":"include","probabilities":{"defer":0.5,"include":0.5},"confidence":0.99},"synthetic-identity-0177":{"choice":"synthetic-identity-0177","probabilities":{"synthetic-identity-0177":0.5,"defer":0.5},"confidence":0.14}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0561","emittedAt":"2000-01-01T00:02:16Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"23","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","generation":{"kind":"reflex_llm","state":"started","requestId":"synthetic-identity-0560","requestedEffort":"none"}}}}} {"payload":{"event":{"id":"synthetic-identity-0563","emittedAt":"2000-01-01T00:02:16Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"24","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","generation":{"kind":"compiler_round","state":"started","requestId":"synthetic-identity-0562","attempt":1,"parentRequestId":"synthetic-identity-0560","phase":"compilation"}}}}} {"payload":{"event":{"id":"synthetic-identity-0565","emittedAt":"2000-01-01T00:02:17Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"25","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","segmentId":"synthetic-identity-0564","boundaryId":"3c70e5113c529abcda6bce229039af502bf3ed8b5d3266e7d70794b41e6bf668","boundary":{"reason":"no_reflex"}}}}} @@ -213,7 +213,7 @@ {"payload":{"event":{"id":"synthetic-identity-0594","emittedAt":"2000-01-01T00:02:26Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"46","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","claimId":"f1cd4cfc8eb6f9617","generation":{"kind":"reflex_llm","state":"finished","elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"cache_miss":"1000","cache_read":"1000","cache_write":"1000","requests":"1"}},"requestId":"synthetic-identity-0560","requestedEffort":"none"}}}}} {"payload":{"event":{"id":"synthetic-identity-0595","emittedAt":"2000-01-01T00:02:27Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"47","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"a150c9b7f5f25767ec4a8e39be5303bab475afed882bafe065f83ef28c68e09c","libraryChange":{"state":"reflex_candidate","reflex":{"id":"synthetic-identity-0275","when":"Synthetic fixture when 275","decide":"Use the synthetic fixture inputs and defer when they are absent.","observe":"js:function(context, args) {\n args = args || {};\n var missing = [];\n if (!args.url) missing.push(\"url\");\n if (!args.session) missing.push(\"session\");\n if (!args.term) missing.push(\"term\");\n if (!args.input_selector) missing.push(\"input_selector\");\n if (!args.submit_selector) missing.push(\"submit_selector\");\n if (missing.length) return {defer: \"missing current arguments\", parameters: \"url, session, term, input_selector, submit_selector\"};\n var session = args.session;\n var term = String(args.term);\n var inSel = String(args.input_selector);\n var btnSel = String(args.submit_selector);\n var prefix = (args.receipt_prefix == null) ? \"Receipt: \" : String(args.receipt_prefix);\n\n function snap(data) {\n if (!data || !data.elements) return null;\n return data.elements;\n }\n function findIdx(elements) {\n if (!elements) return -1;\n for (var i = 0; i < elements.length; i++) {\n var t = elements[i].text;\n if (t && t.indexOf(prefix) === 0) return i;\n }\n return -1;\n }\n function reportFor(elements, hostCall) {\n var idx = findIdx(elements);\n if (idx < 0) return null;\n return {report: {evidence: hostCall, path: [\"data\", \"elements\", idx, \"text\"]}};\n }\n\n var hostCall = null;\n var elements = null;\n var opened = false;\n var filled = false;\n var clicked = false;\n var anySnapshot = false;\n var postClickSnapshot = false;\n\n var hist = context.history || [];\n for (var h = 0; h < hist.length; h++) {\n var rec = hist[h];\n if (rec.name !== \"bash\") continue;\n var av = (rec.decoded_argv || []).slice();\n if (av[0] !== \"playwright\") continue;\n var sub = av[1];\n if (sub === \"open\" && av[2] === args.url && av.indexOf(\"--session\") >= 0) { opened = true; }\n if (sub === \"fill\" && av[2] === session && av[3] === inSel && av[4] === term) { filled = true; }\n if (sub === \"click\" && av[2] === session && av[3] === btnSel) { clicked = true; }\n if (sub === \"snapshot\" && av[2] === session && rec.data) {\n elements = snap(rec.data);\n if (rec.call_id) hostCall = rec.call_id;\n anySnapshot = true;\n if (clicked) postClickSnapshot = true;\n }\n }\n\n if (clicked && postClickSnapshot && elements) {\n var done = reportFor(elements, hostCall);\n if (done) return done;\n }\n\n if (!opened) {\n var o = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"open\", args.url, \"--session\", session])}, read: false, step: \"open\", occurrence: 0});\n if (o && o.is_error) return {defer: \"open failed: \" + (o.text || \"unknown\")};\n }\n\n if (!anySnapshot) {\n var s1 = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"snapshot\", session, \"--json\"])}, read: true});\n if (s1 && s1.call_id) hostCall = s1.call_id;\n elements = snap(s1 && s1.data);\n }\n\n if (!filled) {\n var f = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"fill\", session, inSel, term])}, read: false, step: \"fill\", occurrence: 0});\n if (f && f.is_error) return {defer: \"fill failed: \" + (f.text || \"unknown\")};\n }\n\n if (!clicked) {\n var c = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"click\", session, btnSel])}, read: false, step: \"click\", occurrence: 0});\n if (c && c.is_error) return {defer: \"click failed: \" + (c.text || \"unknown\")};\n }\n\n if (!postClickSnapshot) {\n var s2 = execute({name: \"bash\", arguments: {command: command(\"playwright\", [\"snapshot\", session, \"--json\"])}, read: true});\n if (s2 && s2.call_id) hostCall = s2.call_id;\n var e2 = snap(s2 && s2.data);\n var p2 = reportFor(e2, hostCall);\n if (p2) return p2;\n }\n return {defer: \"receipt not yet visible after submit\"};\n}","claimIds":["50759353ece00982e","f1cd4cfc8eb6f9617"],"contracts":{"command:experiment":"abe25c89e23db76babe27845dc50808e179376d3e568d08bc7f62aa3c2d4b4be","command:jev":"9729b785e09bd242c2b73d15a336408ff05ee574472ae60963d071215585f4c2","command:playwright":"6a0b9da4a4cd5c8b6dce0937b4f0061c196ecfa2f4ab237cca4f3dd65743489a","helpers":"98aa22757269c3f695b8e3254b3cba7af0f196d29e5e05db58821ec7e43533db","tool:bash":"2efbb2e0f82e04e8fa7e605121b300db09945e5fb0624a2c25a7478d900599af"},"apiVersion":2,"qualificationJson":"null","manifestJson":"{\"parameters_schema\":null,\"steps\":{\"append1\":{\"contract\":\"Synthetic fixture value 276\",\"count\":1},\"append2\":{\"contract\":\"Synthetic fixture value 277\",\"count\":1}}}","blocker":"Synthetic validation failure."},"reason":"Synthetic validation failure."}}}}} {"payload":{"event":{"id":"synthetic-identity-0596","emittedAt":"2000-01-01T00:02:27Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"48","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"bf4328c3afea37f1048ae56d7fbc518b0209b9f79d0b32e856d1eb3032a611c2","libraryChange":{"state":"failed","reason":"Synthetic validation failure."}}}}} -{"payload":{"event":{"id":"synthetic-identity-0598","emittedAt":"2000-01-01T00:02:28Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"49","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"c9430801ae31023ddcb10a1c6c37de01e9fcff2598821d2beb96ffa5b0acea77","decisionRequest":{"requestId":"synthetic-identity-0597","purpose":"jev_claim","questions":{"claim0":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"50759353ece00982e\":\"Synthetic fixture value 278\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 279\",\"defer\":\"Synthetic fixture value 280\",\"new\":\"Synthetic fixture value 281\"}"},"claim1":{"type":"choice","instructionsJson":"\"\\\"Synthetic fixture instruction.\\\"\"","criteriaJson":"{\"50759353ece00982e\":\"Synthetic fixture value 282\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 283\",\"defer\":\"Synthetic fixture value 284\",\"new\":\"Synthetic fixture value 285\"}"}}}}}}} -{"payload":{"event":{"id":"synthetic-identity-0599","emittedAt":"2000-01-01T00:02:29Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"50","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"c9430801ae31023ddcb10a1c6c37de01e9fcff2598821d2beb96ffa5b0acea77","decisionResult":{"requestId":"synthetic-identity-0597","purpose":"jev_claim","answers":{"claim0":{"type":"choice","choice":"50759353ece00982e","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.41},"claim1":{"type":"choice","choice":"50759353ece00982e","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.42}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0598","emittedAt":"2000-01-01T00:02:28Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"49","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"c9430801ae31023ddcb10a1c6c37de01e9fcff2598821d2beb96ffa5b0acea77","decisionRequest":{"requestId":"synthetic-identity-0597","purpose":"jev_claim","claims":{"claim0":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 278\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 279\",\"defer\":\"Synthetic fixture value 280\",\"new\":\"Synthetic fixture value 281\"}}","options":["50759353ece00982e","f1cd4cfc8eb6f9617","defer","new"]},"claim1":{"type":"choice","context":"{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"50759353ece00982e\":\"Synthetic fixture value 282\",\"f1cd4cfc8eb6f9617\":\"Synthetic fixture value 283\",\"defer\":\"Synthetic fixture value 284\",\"new\":\"Synthetic fixture value 285\"}}","options":["50759353ece00982e","f1cd4cfc8eb6f9617","defer","new"]}}}}}}} +{"payload":{"event":{"id":"synthetic-identity-0599","emittedAt":"2000-01-01T00:02:29Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"50","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"c9430801ae31023ddcb10a1c6c37de01e9fcff2598821d2beb96ffa5b0acea77","decisionResult":{"requestId":"synthetic-identity-0597","purpose":"jev_claim","evaluations":{"claim0":{"choice":"50759353ece00982e","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.41},"claim1":{"choice":"50759353ece00982e","probabilities":{"50759353ece00982e":0.5,"f1cd4cfc8eb6f9617":0.5,"defer":0.5,"new":0.5},"confidence":0.42}},"elapsedMs":"50","usage":{"inputTokens":"1000","outputTokens":"200","totalTokens":"1200","detail":{"requests":"1","usage_missing":"0"}}}}}}} {"payload":{"event":{"id":"synthetic-identity-0600","emittedAt":"2000-01-01T00:02:30Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"51","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"c9430801ae31023ddcb10a1c6c37de01e9fcff2598821d2beb96ffa5b0acea77","claimId":"50759353ece00982e","libraryChange":{"state":"deferred","reason":"Synthetic validation failure."}}}}} {"payload":{"event":{"id":"synthetic-identity-0601","emittedAt":"2000-01-01T00:02:30Z","sessionId":"synthetic-identity-0269","turnId":"synthetic-identity-0176","emitter":"jev","seq":"52","extension":{"@type":"type.googleapis.com/cyber.jev.RuntimeEvent","taskId":"4363718b9aa6cf876ac83bb72ac9bc98d3a6a9a4926f599e2f9bfc0c3e17e078","background":true,"boundaryId":"c9430801ae31023ddcb10a1c6c37de01e9fcff2598821d2beb96ffa5b0acea77","libraryChange":{"state":"settled"}}}}} diff --git a/web/frontend/e2e/fixtures/jev-history/profile-events.json b/web/frontend/e2e/fixtures/jev-history/profile-events.json index 59be84a53..5f3185bed 100644 --- a/web/frontend/e2e/fixtures/jev-history/profile-events.json +++ b/web/frontend/e2e/fixtures/jev-history/profile-events.json @@ -175,11 +175,14 @@ "decisionRequest": { "requestId": "synthetic-identity-0614", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 287\",\"new\":\"Synthetic fixture value 288\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 287\",\"new\":\"Synthetic fixture value 288\"}}", + "options": [ + "defer", + "new" + ] } } } @@ -344,9 +347,8 @@ "decisionResult": { "requestId": "synthetic-identity-0614", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "new" } }, @@ -608,7 +610,7 @@ "claim": { "id": "74b2ea2e544edc0f5", "sourceTaskId": "7ad8f4389ce999ebc877bab898e5d5449f939e02e8741ede96a55658185bc4a0", - "text": "Synthetic fixture text 292" + "context": "Synthetic fixture text 292" } } } @@ -649,11 +651,15 @@ "decisionRequest": { "requestId": "synthetic-identity-0638", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"74b2ea2e544edc0f5\":\"Synthetic fixture value 293\",\"defer\":\"Synthetic fixture value 294\",\"new\":\"Synthetic fixture value 295\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"74b2ea2e544edc0f5\":\"Synthetic fixture value 293\",\"defer\":\"Synthetic fixture value 294\",\"new\":\"Synthetic fixture value 295\"}}", + "options": [ + "74b2ea2e544edc0f5", + "defer", + "new" + ] } } } @@ -676,9 +682,8 @@ "decisionResult": { "requestId": "synthetic-identity-0638", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "74b2ea2e544edc0f5" } }, @@ -1073,11 +1078,15 @@ "decisionRequest": { "requestId": "synthetic-identity-0663", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"74b2ea2e544edc0f5\":\"Synthetic fixture value 299\",\"defer\":\"Synthetic fixture value 300\",\"new\":\"Synthetic fixture value 301\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"74b2ea2e544edc0f5\":\"Synthetic fixture value 299\",\"defer\":\"Synthetic fixture value 300\",\"new\":\"Synthetic fixture value 301\"}}", + "options": [ + "74b2ea2e544edc0f5", + "defer", + "new" + ] } } } @@ -1177,9 +1186,8 @@ "decisionResult": { "requestId": "synthetic-identity-0663", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "74b2ea2e544edc0f5" } }, @@ -1290,11 +1298,14 @@ "decisionRequest": { "requestId": "synthetic-identity-0674", "purpose": "jev_reflex", - "questions": { + "claims": { "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 303\",\"defer\":\"Synthetic fixture value 304\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 303\",\"defer\":\"Synthetic fixture value 304\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -1318,9 +1329,8 @@ "decisionResult": { "requestId": "synthetic-identity-0674", "purpose": "jev_reflex", - "answers": { + "evaluations": { "synthetic-identity-0177": { - "type": "choice", "choice": "synthetic-identity-0177" } }, @@ -1492,26 +1502,38 @@ "decisionRequest": { "requestId": "synthetic-identity-0685", "purpose": "jev_reflex", - "questions": { + "claims": { "synthetic-identity-0177": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 305\",\"defer\":\"Synthetic fixture value 306\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 305\",\"defer\":\"Synthetic fixture value 306\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] }, "coverage0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 307\",\"defer\":\"Synthetic fixture value 308\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 307\",\"defer\":\"Synthetic fixture value 308\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] }, "coverage_freshness": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 309\",\"defer\":\"Synthetic fixture value 310\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 309\",\"defer\":\"Synthetic fixture value 310\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] }, "coverage_result": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"synthetic-identity-0177\":\"Synthetic fixture value 311\",\"defer\":\"Synthetic fixture value 312\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"synthetic-identity-0177\":\"Synthetic fixture value 311\",\"defer\":\"Synthetic fixture value 312\"}}", + "options": [ + "synthetic-identity-0177", + "defer" + ] } } } @@ -1535,21 +1557,17 @@ "decisionResult": { "requestId": "synthetic-identity-0685", "purpose": "jev_reflex", - "answers": { + "evaluations": { "synthetic-identity-0177": { - "type": "choice", "choice": "synthetic-identity-0177" }, "coverage0": { - "type": "choice", "choice": "synthetic-identity-0177" }, "coverage_freshness": { - "type": "choice", "choice": "synthetic-identity-0177" }, "coverage_result": { - "type": "choice", "choice": "synthetic-identity-0177" } }, @@ -1665,11 +1683,16 @@ "decisionRequest": { "requestId": "synthetic-identity-0691", "purpose": "jev_claim", - "questions": { + "claims": { "claim0": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"74b2ea2e544edc0f5\":\"Synthetic fixture value 314\",\"defer\":\"Synthetic fixture value 315\",\"new\":\"Synthetic fixture value 316\",\"synthetic-identity-0273\":\"Synthetic fixture value 317\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"74b2ea2e544edc0f5\":\"Synthetic fixture value 314\",\"defer\":\"Synthetic fixture value 315\",\"new\":\"Synthetic fixture value 316\",\"synthetic-identity-0273\":\"Synthetic fixture value 317\"}}", + "options": [ + "74b2ea2e544edc0f5", + "defer", + "new", + "synthetic-identity-0273" + ] } } } @@ -1692,9 +1715,8 @@ "decisionResult": { "requestId": "synthetic-identity-0691", "purpose": "jev_claim", - "answers": { + "evaluations": { "claim0": { - "type": "choice", "choice": "74b2ea2e544edc0f5" } }, @@ -1837,11 +1859,14 @@ "decisionRequest": { "requestId": "synthetic-identity-0701", "purpose": "jev_execution", - "questions": { + "claims": { "entry": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"defer\":\"Synthetic fixture value 319\",\"synthetic-identity-0273\":\"Synthetic fixture value 320\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"defer\":\"Synthetic fixture value 319\",\"synthetic-identity-0273\":\"Synthetic fixture value 320\"}}", + "options": [ + "defer", + "synthetic-identity-0273" + ] } } } @@ -1864,9 +1889,8 @@ "decisionResult": { "requestId": "synthetic-identity-0701", "purpose": "jev_execution", - "answers": { + "evaluations": { "entry": { - "type": "choice", "choice": "synthetic-identity-0273" } }, @@ -1938,11 +1962,14 @@ "decisionRequest": { "requestId": "synthetic-identity-0705", "purpose": "jev_binding", - "questions": { + "claims": { "binding": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"accept\":\"Synthetic fixture value 322\",\"defer\":\"Synthetic fixture value 323\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"accept\":\"Synthetic fixture value 322\",\"defer\":\"Synthetic fixture value 323\"}}", + "options": [ + "accept", + "defer" + ] } } } @@ -1967,9 +1994,8 @@ "decisionResult": { "requestId": "synthetic-identity-0705", "purpose": "jev_binding", - "answers": { + "evaluations": { "binding": { - "type": "choice", "choice": "accept" } }, @@ -2235,11 +2261,14 @@ "decisionRequest": { "requestId": "synthetic-identity-0720", "purpose": "jev_completion", - "questions": { + "claims": { "completion": { "type": "choice", - "instructionsJson": "\"\\\"Synthetic fixture instruction.\\\"\"", - "criteriaJson": "{\"accept\":\"Synthetic fixture value 326\",\"defer\":\"Synthetic fixture value 327\"}" + "context": "{\"instructions\":\"\\\"Synthetic fixture instruction.\\\"\",\"criteria\":{\"accept\":\"Synthetic fixture value 326\",\"defer\":\"Synthetic fixture value 327\"}}", + "options": [ + "accept", + "defer" + ] } } } @@ -2265,9 +2294,8 @@ "decisionResult": { "requestId": "synthetic-identity-0720", "purpose": "jev_completion", - "answers": { + "evaluations": { "completion": { - "type": "choice", "choice": "accept" } },