diff --git a/src/core/eval.tsx b/src/core/eval.tsx index cf07b74ca..d1b5e123f 100644 --- a/src/core/eval.tsx +++ b/src/core/eval.tsx @@ -679,6 +679,7 @@ export class EvalClient implements CoreEvalClient { dataSourceConfig, evaluationMetadata: input.groundTruth ? { sessionMetadata: input.groundTruth } : undefined, kmsKeyArn: input.kmsKeyArn, + outputConfig: input.outputConfig, }), ); } diff --git a/src/handlers/eval/batch-evaluation/__fixtures__/StartBatchEvaluationCommand.2a1e0be72c84e19a.json b/src/handlers/eval/batch-evaluation/__fixtures__/StartBatchEvaluationCommand.2a1e0be72c84e19a.json new file mode 100644 index 000000000..868682e88 --- /dev/null +++ b/src/handlers/eval/batch-evaluation/__fixtures__/StartBatchEvaluationCommand.2a1e0be72c84e19a.json @@ -0,0 +1,21 @@ +{ + "batchEvaluationId": "golden_batch_evaluate_outputconfig1-936a801ab2", + "batchEvaluationArn": "arn:aws:bedrock-agentcore:us-west-2:685197708687:batch-evaluate/golden_batch_evaluate_outputconfig1-936a801ab2", + "batchEvaluationName": "golden_batch_evaluate_outputconfig1", + "status": "PENDING", + "createdAt": { + "$date": "2026-09-11T20:52:41.450Z" + }, + "evaluators": [ + { + "evaluatorId": "Builtin.Helpfulness" + } + ], + "outputConfig": { + "cloudWatchConfig": { + "logStreamName": "run-golden_batch_evaluate_outputconfig1-936a801ab2", + "metricsNamespace": "Company/AgentEvaluations", + "resultDestination": "SOURCE_LOG_GROUP" + } + } +} \ No newline at end of file diff --git a/src/handlers/eval/batch-evaluation/__fixtures__/StartBatchEvaluationCommand.374d4ae3a6654fca.json b/src/handlers/eval/batch-evaluation/__fixtures__/StartBatchEvaluationCommand.374d4ae3a6654fca.json new file mode 100644 index 000000000..b43a36679 --- /dev/null +++ b/src/handlers/eval/batch-evaluation/__fixtures__/StartBatchEvaluationCommand.374d4ae3a6654fca.json @@ -0,0 +1,21 @@ +{ + "batchEvaluationId": "golden_batch_simulate_endpoint1-120c119e26", + "batchEvaluationArn": "arn:aws:bedrock-agentcore:us-west-2:685197708687:batch-evaluate/golden_batch_simulate_endpoint1-120c119e26", + "batchEvaluationName": "golden_batch_simulate_endpoint1", + "status": "PENDING", + "createdAt": { + "$date": "2026-09-11T20:52:44.223Z" + }, + "evaluators": [ + { + "evaluatorId": "Builtin.Helpfulness" + } + ], + "outputConfig": { + "cloudWatchConfig": { + "logStreamName": "run-golden_batch_simulate_endpoint1-120c119e26", + "metricsNamespace": "Bedrock-AgentCore/Evaluations", + "resultDestination": "SOURCE_LOG_GROUP" + } + } +} \ No newline at end of file diff --git a/src/handlers/eval/batch-evaluation/__fixtures__/evaluate-output-config.golden.json b/src/handlers/eval/batch-evaluation/__fixtures__/evaluate-output-config.golden.json new file mode 100644 index 000000000..4ba4dad51 --- /dev/null +++ b/src/handlers/eval/batch-evaluation/__fixtures__/evaluate-output-config.golden.json @@ -0,0 +1,19 @@ +{ + "batchEvaluationId": "golden_batch_evaluate_outputconfig1-936a801ab2", + "batchEvaluationArn": "arn:aws:bedrock-agentcore:us-west-2:685197708687:batch-evaluate/golden_batch_evaluate_outputconfig1-936a801ab2", + "batchEvaluationName": "golden_batch_evaluate_outputconfig1", + "status": "PENDING", + "createdAt": "2026-09-11T20:52:41.450Z", + "evaluators": [ + { + "evaluatorId": "Builtin.Helpfulness" + } + ], + "outputConfig": { + "cloudWatchConfig": { + "logStreamName": "run-golden_batch_evaluate_outputconfig1-936a801ab2", + "metricsNamespace": "Company/AgentEvaluations", + "resultDestination": "SOURCE_LOG_GROUP" + } + } +} \ No newline at end of file diff --git a/src/handlers/eval/batch-evaluation/__fixtures__/simulate-endpoint-output-config.golden.json b/src/handlers/eval/batch-evaluation/__fixtures__/simulate-endpoint-output-config.golden.json new file mode 100644 index 000000000..fd419ac0d --- /dev/null +++ b/src/handlers/eval/batch-evaluation/__fixtures__/simulate-endpoint-output-config.golden.json @@ -0,0 +1,13 @@ +{ + "batchEvaluationId": "golden_batch_simulate_endpoint1-120c119e26", + "status": "PENDING", + "examplesInvoked": 1, + "examplesFailed": 0, + "sessions": [ + { + "exampleId": "e1", + "sessionId": "00000000-0000-4000-8000-000000000001" + } + ], + "failures": [] +} \ No newline at end of file diff --git a/src/handlers/eval/batch-evaluation/batch-evaluation.fixture.test.tsx b/src/handlers/eval/batch-evaluation/batch-evaluation.fixture.test.tsx index a690811e3..f9ce3f5c0 100644 --- a/src/handlers/eval/batch-evaluation/batch-evaluation.fixture.test.tsx +++ b/src/handlers/eval/batch-evaluation/batch-evaluation.fixture.test.tsx @@ -44,6 +44,8 @@ const FIXTURE_EVAL_AGENT = "asdf_MyAgent-3s5axvBC6Q"; const FIXTURE_EVAL_NAME = "golden_batch_evaluate_fixture685"; const FIXTURE_SIMULATE_NAME = "golden_batch_simulate_fixture1"; +const FIXTURE_OUTPUT_CONFIG_NAME = "golden_batch_evaluate_outputconfig1"; +const FIXTURE_SIMULATE_ENDPOINT_NAME = "golden_batch_simulate_endpoint1"; const FIXTURE_SIMULATE_DATASET = join(FIXTURES, "simulate-ds.jsonl"); function createFixtureCore(): CoreClient { @@ -185,4 +187,72 @@ describe("eval batch-evaluation (fixture-backed)", () => { matchGolden(FIXTURES, "simulate.golden.json", io.stdout()); }, 180_000); + + test("evaluate submits a job with a customer-supplied output config", async () => { + const stdout = await run([ + "eval", + "batch-evaluation", + "evaluate", + "--agent", + FIXTURE_EVAL_AGENT, + "--evaluators", + "Builtin.Helpfulness", + "--name", + FIXTURE_OUTPUT_CONFIG_NAME, + "--output-config", + '{"cloudWatchConfig":{"resultDestination":"SOURCE_LOG_GROUP","metricsNamespace":"Company/AgentEvaluations"}}', + "--json", + ]); + + matchGolden(FIXTURES, "evaluate-output-config.golden.json", stdout); + }); + + test("simulate passes --endpoint through and submits with an output config", async () => { + let n = 0; + const { createControlClient, createDataClient, createIamClient, createLogsClient } = + fixtureFactories(FIXTURES); + const core = new CoreClient({ + createControlClient, + createDataClient, + createIamClient, + createLogsClient, + logger: createSilentLogger(), + newSessionId: () => `00000000-0000-4000-8000-${String(++n).padStart(12, "0")}`, + }); + const io = testIO(); + const root = createRootHandler(core, { + io: io.io, + logger: createSilentLogger(), + globalConfigAccessor: new TestGlobalConfigAccessor(), + }); + + await root.route([ + "node", + "agentcore", + "eval", + "batch-evaluation", + "simulate", + "--runtime-id", + FIXTURE_EVAL_AGENT, + "--endpoint", + "DEFAULT", + "--payload-template", + '{"prompt":"{input}"}', + "--dataset", + FIXTURE_SIMULATE_DATASET, + "--evaluators", + "Builtin.Helpfulness", + "--name", + FIXTURE_SIMULATE_ENDPOINT_NAME, + "--output-config", + '{"cloudWatchConfig":{"resultDestination":"SOURCE_LOG_GROUP"}}', + "--ingestion-wait-ms", + "0", + "--json", + "--region", + REGION, + ]); + + matchGolden(FIXTURES, "simulate-endpoint-output-config.golden.json", io.stdout()); + }, 180_000); }); diff --git a/src/handlers/eval/batch-evaluation/batch-evaluation.test.tsx b/src/handlers/eval/batch-evaluation/batch-evaluation.test.tsx index 98d49f7b2..eba81a9cd 100644 --- a/src/handlers/eval/batch-evaluation/batch-evaluation.test.tsx +++ b/src/handlers/eval/batch-evaluation/batch-evaluation.test.tsx @@ -34,10 +34,14 @@ const RESULTS: BatchEvaluationResultEntry[] = [ { evaluatorId: "Builtin.Helpfulness", level: "Session", sessionId: "s1", score: 5 }, ]; -async function run(args: string[], configure?: (core: TestCoreClient) => void) { +async function run( + args: string[], + configure?: (core: TestCoreClient) => void, + ioOptions?: { stdin?: string }, +) { const core = new TestCoreClient(); configure?.(core); - const io = testIO(); + const io = testIO(ioOptions); const root = createRootHandler(core, { io: io.io, logger: createSilentLogger(), @@ -262,3 +266,112 @@ describe("eval batch-evaluation simulate", () => { expect(JSON.parse(stdout).failures).toEqual([{ exampleId: "bad", error: "HTTP 500" }]); }); }); + +describe("eval batch-evaluation evaluate --output-config", () => { + const BASE = [ + "eval", + "batch-evaluation", + "evaluate", + "--agent", + "r-1", + "--evaluators", + "Builtin.Helpfulness", + "--name", + "eval-1", + ]; + test("rejects malformed JSON before any SDK call", async () => { + const core = new TestCoreClient(); + const io = testIO(); + const root = createRootHandler(core, { + io: io.io, + logger: createSilentLogger(), + globalConfigAccessor: new TestGlobalConfigAccessor(), + }); + await expect( + root.route([ + "node", + "agentcore", + ...BASE, + "--output-config", + "{not json", + "--region", + "us-west-2", + ]), + ).rejects.toThrow(/Invalid JSON for option '--output-config'/); + expect(core.eval.calls).toEqual([]); + }); + + test("rejects a second option reading from stdin, before any SDK call", async () => { + // --ground-truth and --output-config share one resolver, so the second `-` + // is a conflict rather than an empty read after the first drains stdin. + const core = new TestCoreClient(); + const io = testIO({ stdin: "{}" }); + const root = createRootHandler(core, { + io: io.io, + logger: createSilentLogger(), + globalConfigAccessor: new TestGlobalConfigAccessor(), + }); + await expect( + root.route([ + "node", + "agentcore", + ...BASE, + "--ground-truth", + "-", + "--output-config", + "-", + "--region", + "us-west-2", + ]), + ).rejects.toThrow(/only one option may read from stdin.*'--output-config'.*'--ground-truth'/); + expect(core.eval.calls).toEqual([]); + }); +}); + +describe("eval batch-evaluation simulate --endpoint and --output-config", () => { + const BASE = [ + "eval", + "batch-evaluation", + "simulate", + "--runtime-id", + "r-1", + "--payload-template", + '{"prompt":"{input}"}', + "--dataset", + "/tmp/ds.jsonl", + "--evaluators", + "Builtin.Helpfulness", + "--name", + "sim-1", + ]; + const invoked = (c: TestCoreClient) => + c.eval.setInvokeDatasetResponse({ + sessions: [{ exampleId: "e1", sessionId: "s1" }], + invoked: 1, + failed: 0, + failures: [], + }); + + test("malformed --output-config aborts before any Runtime is invoked", async () => { + const core = new TestCoreClient(); + invoked(core); + const io = testIO(); + const root = createRootHandler(core, { + io: io.io, + logger: createSilentLogger(), + globalConfigAccessor: new TestGlobalConfigAccessor(), + }); + await expect( + root.route([ + "node", + "agentcore", + ...BASE, + "--output-config", + "{not json", + "--region", + "us-west-2", + ]), + ).rejects.toThrow(/Invalid JSON for option '--output-config'/); + expect(core.eval.calls.map((c) => c.method)).not.toContain("invokeDataset"); + }); +}); diff --git a/src/handlers/eval/batch-evaluation/evaluate/index.tsx b/src/handlers/eval/batch-evaluation/evaluate/index.tsx index 5e3ad9245..da973b916 100644 --- a/src/handlers/eval/batch-evaluation/evaluate/index.tsx +++ b/src/handlers/eval/batch-evaluation/evaluate/index.tsx @@ -7,6 +7,7 @@ import type { Core } from "../../../types"; import type { SessionMetadataShape } from "@aws-sdk/client-bedrock-agentcore"; import { coreOptsFromCtx, parseJsonFlag } from "../../../utils"; import { SessionSource } from "../../sessionSource"; +import { BatchOutputConfig } from "../outputConfig"; const CONFIGURATION = "Configuration:"; const EVALUATION = "Evaluation:"; @@ -75,6 +76,7 @@ export const createEvaluateBatchEvaluationHandler = (core: Core, io: AppIO) => z.string().optional(), { group: EVALUATION, help: groundTruthHelp }, ), + ...BatchOutputConfig.flags, ], handle: async (ctx, flags) => { if (!flags["name"]) { @@ -86,14 +88,19 @@ export const createEvaluateBatchEvaluationHandler = (core: Core, io: AppIO) => ); } - const source = await SessionSource.resolve(flags, io); - + // One resolver shared across every stdin-capable flag, so a second `-` + // (e.g. --ground-truth - --output-config -) is rejected rather than + // silently reading an empty string after the first drains stdin. const resolver = new SourceResolver({ stdin: io.stdin }); + const source = await SessionSource.resolve(flags, resolver); + const groundTruth = parseJsonFlag( "ground-truth", await resolver.resolveText("ground-truth", flags["ground-truth"]), ); + const outputConfig = await BatchOutputConfig.resolve(flags["output-config"], resolver); + const response = await core.eval.startBatchEvaluation( { name: flags["name"], @@ -102,6 +109,7 @@ export const createEvaluateBatchEvaluationHandler = (core: Core, io: AppIO) => source, groundTruth, kmsKeyArn: flags["kms-key-arn"], + outputConfig, }, coreOptsFromCtx(ctx), ); diff --git a/src/handlers/eval/batch-evaluation/outputConfig.tsx b/src/handlers/eval/batch-evaluation/outputConfig.tsx new file mode 100644 index 000000000..a6ee4ab77 --- /dev/null +++ b/src/handlers/eval/batch-evaluation/outputConfig.tsx @@ -0,0 +1,58 @@ +import type { OutputConfig } from "@aws-sdk/client-bedrock-agentcore"; +import z from "zod"; +import { SourceResolver } from "../../../io"; +import { flag } from "../../../router"; +import { parseJsonFlag } from "../../utils"; + +const outputConfigHelp = `(JSON: tagged union object) +Where evaluation results and metrics are written. Omit it and results go to the +service-managed default location. Only top-level key: cloudWatchConfig. + +Accepts inline JSON, file://, or - to read stdin. + +JSON syntax: + { + "cloudWatchConfig": { + "logGroupName": "string", // result log group; omit for + // SOURCE_LOG_GROUP, and it cannot sit + // under /aws/bedrock-agentcore/evaluations/ + "logStreamName": "string", // result log stream + "metricsNamespace": "string", // defaults to + // Bedrock-AgentCore/Evaluations; cannot + // begin with "AWS/" + "resultDestination": "DEDICATED_LOG_GROUP" | "SOURCE_LOG_GROUP" + // DEDICATED_LOG_GROUP (default) writes to + // a dedicated result group; + // SOURCE_LOG_GROUP writes back to the log + // group the traces were read from + } + } + +API reference: + https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_OutputConfig.html + +Example: + --output-config '{"cloudWatchConfig":{"logGroupName":"/company/agent-evaluations","metricsNamespace":"Company/AgentEvaluations","resultDestination":"DEDICATED_LOG_GROUP"}}'`; + +export class BatchOutputConfig { + static readonly flags = [ + flag( + "output-config", + "where results and metrics are written (JSON OutputConfig)", + z.string().optional(), + { group: "Result output:", help: outputConfigHelp }, + ), + ] as const; + + // Takes a shared SourceResolver so the single-stdin guard spans every + // stdin-capable flag on the command, not just this one. + static async resolve( + value: string | undefined, + resolver: SourceResolver, + ): Promise { + return parseJsonFlag( + "output-config", + await resolver.resolveText("output-config", value), + ); + } +} diff --git a/src/handlers/eval/batch-evaluation/simulate/index.tsx b/src/handlers/eval/batch-evaluation/simulate/index.tsx index ff6c51ec7..ffcb84c34 100644 --- a/src/handlers/eval/batch-evaluation/simulate/index.tsx +++ b/src/handlers/eval/batch-evaluation/simulate/index.tsx @@ -2,10 +2,11 @@ import z from "zod"; import { createHandler, flag } from "../../../../router"; import { InputValidationError } from "../../../../errors"; import { JsonRendererKey } from "../../../../tui"; -import type { AppIO } from "../../../../io"; +import { SourceResolver, type AppIO } from "../../../../io"; import type { Core } from "../../../types"; import { coreOptsFromCtx } from "../../../utils"; import { parseRuntimeInvokeHeaders } from "../../../runtime/invoke/request"; +import { BatchOutputConfig } from "../outputConfig"; const RUNTIME_INVOCATION = "Runtime invocation:"; const DATASET = "Dataset:"; @@ -23,7 +24,7 @@ Example: // Composes invokeDataset (replay) → startBatchEvaluation (grade). Invoke flags mirror // `runtime invoke`. -export const createSimulateBatchEvaluationHandler = (core: Core, _io: AppIO) => +export const createSimulateBatchEvaluationHandler = (core: Core, io: AppIO) => createHandler({ name: "simulate", description: "replay a dataset against a Runtime, then batch-evaluate the resulting sessions", @@ -31,7 +32,7 @@ export const createSimulateBatchEvaluationHandler = (core: Core, _io: AppIO) => flag("runtime-id", "Runtime ID to invoke per scenario", z.string().optional(), { group: RUNTIME_INVOCATION, }), - flag("qualifier", "Runtime endpoint qualifier (default DEFAULT)", z.string().optional(), { + flag("endpoint", "Runtime endpoint qualifier (default DEFAULT)", z.string().optional(), { group: RUNTIME_INVOCATION, }), flag( @@ -77,6 +78,7 @@ export const createSimulateBatchEvaluationHandler = (core: Core, _io: AppIO) => flag("evaluators", "evaluator ID(s) to apply", z.array(z.string()).optional(), { group: "Evaluation:", }), + ...BatchOutputConfig.flags, ], handle: async (ctx, flags) => { if (!flags["runtime-id"]) @@ -96,6 +98,9 @@ export const createSimulateBatchEvaluationHandler = (core: Core, _io: AppIO) => // Ctrl-C aborts the run (invokes, the ingestion wait, the dataset download). // TODO(#1986): swap for the shared SIGINT/abort helper once it merges. + const resolver = new SourceResolver({ stdin: io.stdin }); + const outputConfig = await BatchOutputConfig.resolve(flags["output-config"], resolver); + const controller = new AbortController(); const interrupt = () => controller.abort(); process.once("SIGINT", interrupt); @@ -105,7 +110,7 @@ export const createSimulateBatchEvaluationHandler = (core: Core, _io: AppIO) => const r = await core.eval.invokeDataset( { runtimeId: flags["runtime-id"], - qualifier: flags["qualifier"], + qualifier: flags["endpoint"], payloadTemplate: flags["payload-template"], headers: parseRuntimeInvokeHeaders(flags["header"]), bearerToken: flags["bearer-token"], @@ -134,7 +139,7 @@ export const createSimulateBatchEvaluationHandler = (core: Core, _io: AppIO) => source: { origin: "agent", agent: flags["runtime-id"], - endpoint: flags["qualifier"], + endpoint: flags["endpoint"], sessionIds: r.sessions.map((s) => s.sessionId), }, groundTruth: r.sessions.map((s) => ({ @@ -143,6 +148,7 @@ export const createSimulateBatchEvaluationHandler = (core: Core, _io: AppIO) => ...(s.groundTruth && { groundTruth: { inline: s.groundTruth } }), })), kmsKeyArn: flags["kms-key-arn"], + outputConfig, }, opts, ); diff --git a/src/handlers/eval/batch-insights/run/index.tsx b/src/handlers/eval/batch-insights/run/index.tsx index 92f8f51eb..f532deddd 100644 --- a/src/handlers/eval/batch-insights/run/index.tsx +++ b/src/handlers/eval/batch-insights/run/index.tsx @@ -1,6 +1,6 @@ import z from "zod"; import { InputValidationError } from "../../../../errors"; -import type { AppIO } from "../../../../io"; +import { SourceResolver, type AppIO } from "../../../../io"; import { createHandler, flag } from "../../../../router"; import { JsonRendererKey } from "../../../../tui"; import type { Core } from "../../../types"; @@ -42,7 +42,8 @@ export const createRunBatchInsightsHandler = (core: Core, io: AppIO) => throw new InputValidationError("required option '--name ' not specified"); } - const source = await SessionSource.resolve(flags, io); + const resolver = new SourceResolver({ stdin: io.stdin }); + const source = await SessionSource.resolve(flags, resolver); const response = await core.eval.startBatchInsights( { name: flags["name"], diff --git a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.76a9b708fd699093.json b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.76a9b708fd699093.json deleted file mode 100644 index 31796ea2d..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.76a9b708fd699093.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "evaluationResults": [ - { - "evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness", - "evaluatorId": "Builtin.Helpfulness", - "evaluatorName": "Builtin.Helpfulness", - "context": { - "spanContext": { - "sessionId": "67ebf93b-65e3-4127-9e13-483b239f256a", - "traceId": "6a7cabfa3bfe9a7348415c7b507648a8" - } - }, - "explanation": "The user asked a simple arithmetic question ('What is 2+2?') and requested a concise answer. The assistant's response '2 + 2 = 4' directly and concisely answers the question. The tool output confirmed the answer is 4, and the assistant correctly relayed this information. The response is brief and to the point, matching the user's request for conciseness. This fully satisfies the user's goal with no unnecessary information.", - "value": 0.83, - "label": "Very Helpful", - "tokenUsage": { - "inputTokens": 941, - "outputTokens": 118, - "totalTokens": 1059 - } - } - ] -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.a2a22b8c3c5b426c.json b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.a2a22b8c3c5b426c.json new file mode 100644 index 000000000..3905cd23e --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.a2a22b8c3c5b426c.json @@ -0,0 +1,23 @@ +{ + "evaluationResults": [ + { + "evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness", + "evaluatorId": "Builtin.Helpfulness", + "evaluatorName": "Builtin.Helpfulness", + "context": { + "spanContext": { + "sessionId": "12f1f7a2-987b-4448-8f40-dd3da6558611", + "traceId": "6aa82ccc63d06bd964d302913ef6da1a" + } + }, + "explanation": "The user asked for a summary of what an agent runtime does. The assistant provided a comprehensive, well-structured response that:\n\n1. Opens with a clear, concise definition framing the agent runtime as the 'nervous system' connecting LLM to tools\n2. Organizes the information into 7 distinct functional categories with clear headers\n3. Covers all major aspects found in the search results: execution management, session/context management, infrastructure abstraction, tool orchestration, reliability/recovery, multi-agent coordination, and observability\n4. Uses concrete examples and specific details (e.g., '8 hours session persistence', '40 message sliding window', microVM isolation)\n5. Ends with a memorable bottom-line summary that reinforces the key concept\n\nThe response directly addresses the user's goal of understanding what an agent runtime does. It synthesizes information from multiple sources (AWS Bedrock, Google Cloud, Kore.ai, Medium article) into a coherent, readable summary. The formatting with headers and bullet points makes it easy to scan and understand. The response goes beyond a basic answer by providing depth and context while remaining accessible.\n\nThis is an excellent summary that comprehensively covers the topic, is well-organized, draws from multiple authoritative sources, and provides both breadth and appropriate depth. It fully satisfies the user's request and could serve as a reference document.", + "value": 1, + "label": "Above And Beyond", + "tokenUsage": { + "inputTokens": 10934, + "outputTokens": 325, + "totalTokens": 11259 + } + } + ] +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.c0c383465d2d11bc.json b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.c0c383465d2d11bc.json deleted file mode 100644 index f0b13e303..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.c0c383465d2d11bc.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "evaluationResults": [ - { - "evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness", - "evaluatorId": "Builtin.Helpfulness", - "evaluatorName": "Builtin.Helpfulness", - "context": { - "spanContext": { - "sessionId": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd", - "traceId": "6a7cac0e3fa42bfe5437eef070d1231c" - } - }, - "explanation": "The user's goal was simple: to have a primary color named. The assistant directly answered the question by naming 'red' as a primary color. Beyond just answering the question, the assistant also provided additional context about all three primary colors in both traditional color theory and the RGB model. This extra information is relevant and educational without being overwhelming. The response directly fulfills the user's request and goes a step further by providing useful context about primary colors in general, which anticipates potential follow-up questions or curiosity. This qualifies as 'Above And Beyond' since it answers the question completely and proactively addresses related information the user might find useful.", - "value": 1, - "label": "Above And Beyond", - "tokenUsage": { - "inputTokens": 859, - "outputTokens": 154, - "totalTokens": 1013 - } - } - ] -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.1aea66f982338a76.json b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.d233da9fa0fe2670.json similarity index 73% rename from src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.1aea66f982338a76.json rename to src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.d233da9fa0fe2670.json index 8086702a2..364a1a4ff 100644 --- a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.1aea66f982338a76.json +++ b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.d233da9fa0fe2670.json @@ -6,17 +6,17 @@ "evaluatorName": "Builtin.Correctness", "context": { "spanContext": { - "sessionId": "00000000-0000-4000-8000-4a4a72800001", - "traceId": "6a91fe944cf38d6b2d8c3c6a66e63ad4" + "sessionId": "00000000-0000-4000-8000-a0d9db080001", + "traceId": "6aa827630b51ca4a2f0223652eb6be43" } }, - "explanation": "The agent responded with '4' which matches the expected response of '4'. The trailing newline is irrelevant to the correctness of the answer.", + "explanation": "The agent responded with '4' which matches the expected response of '4'. The trailing newline is irrelevant.", "value": 1, "label": "Correct", "tokenUsage": { "inputTokens": 484, - "outputTokens": 53, - "totalTokens": 537 + "outputTokens": 46, + "totalTokens": 530 }, "ignoredReferenceInputFields": [ "assertions" diff --git a/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.e4a36ce043b8966e.json b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.e4a36ce043b8966e.json new file mode 100644 index 000000000..fc9ceb700 --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/EvaluateCommand.e4a36ce043b8966e.json @@ -0,0 +1,23 @@ +{ + "evaluationResults": [ + { + "evaluatorArn": "arn:aws:bedrock-agentcore:::evaluator/Builtin.Helpfulness", + "evaluatorId": "Builtin.Helpfulness", + "evaluatorName": "Builtin.Helpfulness", + "context": { + "spanContext": { + "sessionId": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4", + "traceId": "6aa82cf32f590bb018df44b95178fe81" + } + }, + "explanation": "The user asked a simple factual question: 'What is the capital of France?' The assistant directly answered the question with 'Paris' and then provided additional context about Paris being the largest city in France and mentioning several famous landmarks and its global significance. The core question was answered immediately and clearly. The additional information, while not strictly necessary, is relevant and enriching without being excessive or misleading. This response directly addresses the user's goal (knowing the capital of France) and provides some bonus context that could be useful. It doesn't quite reach 'Above and Beyond' since the question was simple and the extra information, while nice, doesn't significantly advance any deeper goal. It's a very helpful response that fully answers the question.", + "value": 0.83, + "label": "Very Helpful", + "tokenUsage": { + "inputTokens": 887, + "outputTokens": 172, + "totalTokens": 1059 + } + } + ] +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetEvaluatorCommand.716589b0884f35c0.json b/src/handlers/eval/ondemand/__fixtures__/GetEvaluatorCommand.716589b0884f35c0.json index 1825df228..575c78948 100644 --- a/src/handlers/eval/ondemand/__fixtures__/GetEvaluatorCommand.716589b0884f35c0.json +++ b/src/handlers/eval/ondemand/__fixtures__/GetEvaluatorCommand.716589b0884f35c0.json @@ -47,5 +47,7 @@ "$date": "2024-10-22T00:00:00.000Z" }, "description": "Response Quality Metric. Evaluates from user's perspective how useful and valuable the agent's response is", + "evaluatorType": "Builtin", + "provider": "AWS", "lockedForModification": true } \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.243a00147c74e176.json b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.243a00147c74e176.json new file mode 100644 index 000000000..8d13c5dfd --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.243a00147c74e176.json @@ -0,0 +1,147 @@ +{ + "queryLanguage": "CWLI", + "results": [ + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789405034990337965,\"observedTimeUnixNano\":1789405036092141518,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"tool_use\",\"message\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"55722954a56848a1\"}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "55722954a56848a1" + }, + { + "field": "@ptr", + "value": "CskBCowBCkk2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1CRVRBEAAaJDc4MGNiY2EyLTM1YzItNDQ5MC04MTUzLWQwZDNiOTQyYjA1NyIOCKz25IaKNBCf9YCwijRArPbkhoo0SAASNhoYAgaoKkPTAAAAADwfzDEABqqCdZAAAAcyIAEor+Dnhoo0MMD854aKNDgXQKDhAUj4dVC3TyACEA4YAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789405034991725078,\"observedTimeUnixNano\":1789405036092390988,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\",\"tool.result\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}},{\"role\":\"assistant\",\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"47035a4407bbb44e\"}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "47035a4407bbb44e" + }, + { + "field": "@ptr", + "value": "CskBCowBCkk2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1CRVRBEAAaJDc4MGNiY2EyLTM1YzItNDQ5MC04MTUzLWQwZDNiOTQyYjA1NyIOCKz25IaKNBCf9YCwijRArPbkhoo0SAASNhoYAgaoKkPTAAAAADwfzDEABqqCdZAAAAcyIAEor+Dnhoo0MMD854aKNDgXQKDhAUj4dVC3TyACEBAYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789405034991573706,\"observedTimeUnixNano\":1789405036092293060,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"tool\",\"content\":{\"role\":\"tool\",\"content\":\"{\\\"a\\\": 2, \\\"b\\\": 2}\",\"id\":\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"text\\\": \\\"4\\\"}]\",\"id\":\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"34acc873cd013ff9\"}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "34acc873cd013ff9" + }, + { + "field": "@ptr", + "value": "CskBCowBCkk2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1CRVRBEAAaJDc4MGNiY2EyLTM1YzItNDQ5MC04MTUzLWQwZDNiOTQyYjA1NyIOCKz25IaKNBCf9YCwijRArPbkhoo0SAASNhoYAgaoKkPTAAAAADwfzDEABqqCdZAAAAcyIAEor+Dnhoo0MMD854aKNDgXQKDhAUj4dVC3TyACEA8YAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789405036375325607,\"observedTimeUnixNano\":1789405041188789383,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}},{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"end_turn\",\"message\":\"[{\\\"text\\\": \\\"4\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"51c16b207a6a1e63\"}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "51c16b207a6a1e63" + }, + { + "field": "@ptr", + "value": "CsgBCowBCkk2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1CRVRBEAAaJDc4MGNiY2EyLTM1YzItNDQ5MC04MTUzLWQwZDNiOTQyYjA1NyIOCKz25IaKNBCf9YCwijRArPbkhoo0SAASNRoYAgalSZU6AAAAAZFPDlgABqqCcaAAAAOiIAEowPznhoo0MNf+54aKNDgFQMQwSP9EUMYpIAIQAhgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789405036375840844,\"observedTimeUnixNano\":1789405041189038947,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":\"\\n You are a helpful assistant. Use tools when appropriate.\\n \"},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"4\\n\",\"finish_reason\":\"end_turn\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"05736bb898754318\"}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "05736bb898754318" + }, + { + "field": "@ptr", + "value": "CsgBCowBCkk2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1CRVRBEAAaJDc4MGNiY2EyLTM1YzItNDQ5MC04MTUzLWQwZDNiOTQyYjA1NyIOCKz25IaKNBCf9YCwijRArPbkhoo0SAASNRoYAgalSZU6AAAAAZFPDlgABqqCcaAAAAOiIAEowPznhoo0MNf+54aKNDgFQMQwSP9EUMYpIAIQBBgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789405036375652980,\"observedTimeUnixNano\":1789405041188935025,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"a6f71ad6edeb8870\"}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "a6f71ad6edeb8870" + }, + { + "field": "@ptr", + "value": "CsgBCowBCkk2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1CRVRBEAAaJDc4MGNiY2EyLTM1YzItNDQ5MC04MTUzLWQwZDNiOTQyYjA1NyIOCKz25IaKNBCf9YCwijRArPbkhoo0SAASNRoYAgalSZU6AAAAAZFPDlgABqqCcaAAAAOiIAEowPznhoo0MNf+54aKNDgFQMQwSP9EUMYpIAIQAxgB" + } + ] + ], + "statistics": { + "recordsMatched": 6, + "recordsScanned": 29, + "estimatedRecordsSkipped": 13, + "bytesScanned": 36539, + "estimatedBytesSkipped": 3839, + "logGroupsScanned": 1, + "resultCount": 6 + }, + "status": "Complete" +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.275f4a33f37e8fc7.json b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.275f4a33f37e8fc7.json deleted file mode 100644 index a4401cbb3..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.275f4a33f37e8fc7.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "queryLanguage": "CWLI", - "results": [ - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555394010008258,\"observedTimeUnixNano\":1786555395351842794,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Answer concisely.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"tool_use\",\"message\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}}]}},\"attributes\":{\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"db6cce231beea7f0\"}" - }, - { - "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" - }, - { - "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" - }, - { - "field": "spanId", - "value": "db6cce231beea7f0" - }, - { - "field": "@ptr", - "value": "CswBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNhoYAgaNwSWxAAAABgdxOn0ABqfKutAAAAASIAEo47b/t/8zMJza/7f/MzgjQKiJAkjbfFCXVCACEBoYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555394011480146,\"observedTimeUnixNano\":1786555395352095155,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Answer concisely.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\",\"tool.result\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}},{\"role\":\"assistant\",\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}]}},\"attributes\":{\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"7f719fd629b95bca\"}" - }, - { - "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" - }, - { - "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" - }, - { - "field": "spanId", - "value": "7f719fd629b95bca" - }, - { - "field": "@ptr", - "value": "CswBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNhoYAgaNwSWxAAAABgdxOn0ABqfKutAAAAASIAEo47b/t/8zMJza/7f/MzgjQKiJAkjbfFCXVCACEBwYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555394011315403,\"observedTimeUnixNano\":1786555395351997309,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"tool\",\"content\":{\"role\":\"tool\",\"content\":\"{\\\"a\\\": 2, \\\"b\\\": 2}\",\"id\":\"tooluse_wZxoTzan8sypzmeYPveFwA\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"text\\\": \\\"4\\\"}]\",\"id\":\"tooluse_wZxoTzan8sypzmeYPveFwA\"}}]}},\"attributes\":{\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"26952cbd9a43fe35\"}" - }, - { - "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" - }, - { - "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" - }, - { - "field": "spanId", - "value": "26952cbd9a43fe35" - }, - { - "field": "@ptr", - "value": "CswBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNhoYAgaNwSWxAAAABgdxOn0ABqfKutAAAAASIAEo47b/t/8zMJza/7f/MzgjQKiJAkjbfFCXVCACEBsYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555397052514047,\"observedTimeUnixNano\":1786555400454612062,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Answer concisely.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}},{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"end_turn\",\"message\":\"[{\\\"text\\\": \\\"2 + 2 = 4\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"7576c2384130fece\"}" - }, - { - "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" - }, - { - "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" - }, - { - "field": "spanId", - "value": "7576c2384130fece" - }, - { - "field": "@ptr", - "value": "CssBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNRoYAgagz3ApAAAAAR7TYTwABqfKuvAAAAOSIAEo47b/t/8zML3n/7f/MzgFQJ4zSM9CUJYnIAIQAhgB" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555397052873967,\"observedTimeUnixNano\":1786555400454777045,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Answer concisely.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_wZxoTzan8sypzmeYPveFwA\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}}]}},\"attributes\":{\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"a1d0f9231c5db33d\"}" - }, - { - "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" - }, - { - "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" - }, - { - "field": "spanId", - "value": "a1d0f9231c5db33d" - }, - { - "field": "@ptr", - "value": "CssBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNRoYAgagz3ApAAAAAR7TYTwABqfKuvAAAAOSIAEo47b/t/8zML3n/7f/MzgFQJ4zSM9CUJYnIAIQAxgB" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555397053072269,\"observedTimeUnixNano\":1786555400454894614,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":\"\\n You are a helpful assistant. Use tools when appropriate.\\n \"},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Answer concisely.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"2 + 2 = 4\\n\",\"finish_reason\":\"end_turn\"}}]}},\"attributes\":{\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"a5e83c7e772efdf6\"}" - }, - { - "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" - }, - { - "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" - }, - { - "field": "spanId", - "value": "a5e83c7e772efdf6" - }, - { - "field": "@ptr", - "value": "CssBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNRoYAgagz3ApAAAAAR7TYTwABqfKuvAAAAOSIAEo47b/t/8zML3n/7f/MzgFQJ4zSM9CUJYnIAIQBBgB" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555414476887232,\"observedTimeUnixNano\":1786555419396909949,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Name a primary color.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"end_turn\",\"message\":\"[{\\\"text\\\": \\\"A primary color is **red**.\\\\n\\\\nThe three primary colors are red, blue, and yellow (in traditional color theory) or red, green, and blue (in the RGB/additive color model used for light).\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"627f6364bb0599fa\"}" - }, - { - "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" - }, - { - "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" - }, - { - "field": "spanId", - "value": "627f6364bb0599fa" - }, - { - "field": "@ptr", - "value": "CssBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNRoYAgah79P0AAAABj7klGgABqfKwVAAAAdCIAEovO6AuP8zMM3vgLj/MzgFQKovSNk7UMkjIAIQAhgB" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555414477366577,\"observedTimeUnixNano\":1786555419397161059,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":\"\\n You are a helpful assistant. Use tools when appropriate.\\n \"},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Name a primary color.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"A primary color is **red**.\\n\\nThe three primary colors are red, blue, and yellow (in traditional color theory) or red, green, and blue (in the RGB/additive color model used for light).\\n\",\"finish_reason\":\"end_turn\"}}]}},\"attributes\":{\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"00821fcc8a234519\"}" - }, - { - "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" - }, - { - "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" - }, - { - "field": "spanId", - "value": "00821fcc8a234519" - }, - { - "field": "@ptr", - "value": "CssBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNRoYAgah79P0AAAABj7klGgABqfKwVAAAAdCIAEovO6AuP8zMM3vgLj/MzgFQKovSNk7UMkjIAIQBBgB" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1786555414477214324,\"observedTimeUnixNano\":1786555419397054030,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Name a primary color.\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"e90c8e0cb4712af5\"}" - }, - { - "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" - }, - { - "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" - }, - { - "field": "spanId", - "value": "e90c8e0cb4712af5" - }, - { - "field": "@ptr", - "value": "CssBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCICYk5r/MxDn16zD/zNA0cHR4dszSAASNRoYAgah79P0AAAABj7klGgABqfKwVAAAAdCIAEovO6AuP8zMM3vgLj/MzgFQKovSNk7UMkjIAIQAxgB" - } - ] - ], - "statistics": { - "recordsMatched": 9, - "recordsScanned": 72, - "estimatedRecordsSkipped": 3, - "bytesScanned": 68886, - "estimatedBytesSkipped": 349, - "logGroupsScanned": 1 - }, - "status": "Complete" -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.276089b05a8ec83f.json b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.276089b05a8ec83f.json new file mode 100644 index 000000000..8bac2decc --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.276089b05a8ec83f.json @@ -0,0 +1,345 @@ +{ + "queryLanguage": "CWLI", + "results": [ + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"c220ab757784a217\",\"parentSpanId\":\"de1915250cc14887\",\"flags\":256,\"name\":\"PUT\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405032955949775,\"endTimeUnixNano\":1789405032957012962,\"durationNano\":1063187,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/api/token\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"PUT /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"PUT\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "c220ab757784a217" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAAYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"449cfbdaf8b456af\",\"parentSpanId\":\"de1915250cc14887\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405032957430141,\"endTimeUnixNano\":1789405032958030762,\"durationNano\":600621,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "449cfbdaf8b456af" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAEYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"67cf5706524c3c7c\",\"parentSpanId\":\"de1915250cc14887\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405032958362119,\"endTimeUnixNano\":1789405032958921514,\"durationNano\":559395,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/execution_role\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "67cf5706524c3c7c" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAIYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"92ee32b29e85919e\",\"parentSpanId\":\"de1915250cc14887\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405033066676713,\"endTimeUnixNano\":1789405033104298373,\"durationNano\":37621660,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "92ee32b29e85919e" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAMYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"b23e8718dc6e76db\",\"parentSpanId\":\"de1915250cc14887\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405033106915303,\"endTimeUnixNano\":1789405033137215297,\"durationNano\":30299994,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":202,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":202,\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "b23e8718dc6e76db" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAQYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"a4dfbe4bd44463f5\",\"parentSpanId\":\"de1915250cc14887\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405033138669151,\"endTimeUnixNano\":1789405033196633480,\"durationNano\":57964329,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "a4dfbe4bd44463f5" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAUYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"985ac10431993aeb\",\"parentSpanId\":\"55722954a56848a1\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405033213054221,\"endTimeUnixNano\":1789405034989853253,\"durationNano\":1776799032,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"9f3c4dfc-1a68-4c4f-869b-0c62bf0d1330\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"tool_use\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":70,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1211,\"aws.genai.token_count_total\":1281,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH5HKORJBR\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "985ac10431993aeb" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAYYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"55722954a56848a1\",\"parentSpanId\":\"47035a4407bbb44e\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789405033200144927,\"endTimeUnixNano\":1789405034990337965,\"durationNano\":1790193038,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"gen_ai.usage.prompt_tokens\":1211,\"gen_ai.usage.output_tokens\":70,\"gen_ai.server.request.duration\":1757,\"gen_ai.usage.total_tokens\":1281,\"gen_ai.usage.completion_tokens\":70,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-09-14T16:57:13.200152+00:00\",\"gen_ai.server.time_to_first_token\":1409,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-09-14T16:57:14.990300+00:00\",\"gen_ai.usage.input_tokens\":1211,\"aws.genai.token_count_total\":1281,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "55722954a56848a1" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAcYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"47035a4407bbb44e\",\"parentSpanId\":\"05736bb898754318\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789405033200013972,\"endTimeUnixNano\":1789405034991725078,\"durationNano\":1791711106,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-09-14T16:57:14.991713+00:00\",\"event_loop.cycle_id\":\"73b884ca-176c-4361-97d6-0588676dd317\",\"gen_ai.event.start_time\":\"2026-09-14T16:57:13.200025+00:00\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "47035a4407bbb44e" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAkYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"34acc873cd013ff9\",\"parentSpanId\":\"47035a4407bbb44e\",\"flags\":256,\"name\":\"execute_tool add_numbers\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789405034990824747,\"endTimeUnixNano\":1789405034991573706,\"durationNano\":748959,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"gen_ai.tool.status\":\"success\",\"gen_ai.tool.call.id\":\"tooluse_YlHkQuF7TrgBWPwFqk4Qff\",\"gen_ai.tool.description\":\"Return the sum of two numbers\",\"gen_ai.tool.json_schema\":\"{\\\"properties\\\": {\\\"a\\\": {\\\"description\\\": \\\"Parameter a\\\", \\\"type\\\": \\\"integer\\\"}, \\\"b\\\": {\\\"description\\\": \\\"Parameter b\\\", \\\"type\\\": \\\"integer\\\"}}, \\\"required\\\": [\\\"a\\\", \\\"b\\\"], \\\"type\\\": \\\"object\\\"}\",\"aws.genai.span_kind\":\"TOOL\",\"gen_ai.event.start_time\":\"2026-09-14T16:57:14.990839+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"execute_tool\",\"gen_ai.event.end_time\":\"2026-09-14T16:57:14.991555+00:00\",\"gen_ai.tool.name\":\"add_numbers\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "34acc873cd013ff9" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAgYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"bef2c2b81067c8e9\",\"parentSpanId\":\"51c16b207a6a1e63\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789405034992673924,\"endTimeUnixNano\":1789405036374684325,\"durationNano\":1382010401,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"9ebc1efc-0d13-4ae8-b7e3-5ffb4fc5f1d9\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"end_turn\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":4,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1295,\"aws.genai.token_count_total\":1299,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH5HKORJBR\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "bef2c2b81067c8e9" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAoYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"05736bb898754318\",\"parentSpanId\":\"de1915250cc14887\",\"flags\":256,\"name\":\"invoke_agent Strands Agents\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789405033199408566,\"endTimeUnixNano\":1789405036375840844,\"durationNano\":3176432278,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"gen_ai.usage.prompt_tokens\":2506,\"gen_ai.usage.output_tokens\":74,\"gen_ai.usage.cache_write_input_tokens\":0,\"gen_ai.agent.name\":\"Strands Agents\",\"gen_ai.usage.total_tokens\":2580,\"gen_ai.usage.completion_tokens\":74,\"aws.genai.span_kind\":\"AGENT\",\"gen_ai.event.start_time\":\"2026-09-14T16:57:13.199425+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"invoke_agent\",\"gen_ai.event.end_time\":\"2026-09-14T16:57:16.375819+00:00\",\"gen_ai.usage.input_tokens\":2506,\"aws.genai.token_count_total\":2580,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"gen_ai.usage.cache_read_input_tokens\":0,\"gen_ai.agent.tools\":\"[\\\"add_numbers\\\", \\\"x_amz_bedrock_agentcore_search\\\", \\\"mcpTarget___web_fetch_exa\\\", \\\"mcpTarget___web_search_exa\\\"]\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "05736bb898754318" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEA0YAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"a6f71ad6edeb8870\",\"parentSpanId\":\"05736bb898754318\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789405034991979213,\"endTimeUnixNano\":1789405036375652980,\"durationNano\":1383673767,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-09-14T16:57:16.375637+00:00\",\"event_loop.cycle_id\":\"a27c098e-10f9-423a-8b89-8dab53a5875c\",\"gen_ai.event.start_time\":\"2026-09-14T16:57:14.991990+00:00\",\"event_loop.parent_cycle_id\":\"73b884ca-176c-4361-97d6-0588676dd317\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "a6f71ad6edeb8870" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAwYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"51c16b207a6a1e63\",\"parentSpanId\":\"a6f71ad6edeb8870\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789405034992141058,\"endTimeUnixNano\":1789405036375325607,\"durationNano\":1383184549,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"gen_ai.usage.prompt_tokens\":1295,\"gen_ai.usage.output_tokens\":4,\"gen_ai.server.request.duration\":1377,\"gen_ai.usage.total_tokens\":1299,\"gen_ai.usage.completion_tokens\":4,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-09-14T16:57:14.992148+00:00\",\"gen_ai.server.time_to_first_token\":1233,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-09-14T16:57:16.375290+00:00\",\"gen_ai.usage.input_tokens\":1295,\"aws.genai.token_count_total\":1299,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "51c16b207a6a1e63" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEAsYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.BETA\",\"service.name\":\"asdf_MyAgent.BETA\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/BETA:BETA\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-BETA\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.starlette\",\"version\":\"0.61b0\"},\"traceId\":\"6aa827630b51ca4a2f0223652eb6be43\",\"spanId\":\"de1915250cc14887\",\"parentSpanId\":\"95545993e1b48f84\",\"flags\":768,\"name\":\"POST /invocations\",\"kind\":\"SERVER\",\"startTimeUnixNano\":1789405032914913531,\"endTimeUnixNano\":1789405036376164679,\"durationNano\":3461251148,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.BETA\",\"net.peer.port\":48840,\"telemetry.extended\":\"true\",\"http.target\":\"/invocations\",\"http.flavor\":\"1.1\",\"http.url\":\"http://cell01.us-west-2.prod.arp.kepler-analytics.aws.dev/invocations\",\"net.peer.ip\":\"127.0.0.1\",\"http.host\":\"127.0.0.1:8080\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"http.status_code\":200,\"aws.local.operation\":\"POST /invocations\",\"aws.span.kind\":\"SERVER\",\"http.server_name\":\"cell01.us-west-2.prod.arp.kepler-analytics.aws.dev\",\"net.host.port\":8080,\"http.route\":\"/invocations\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-a0d9db080001\",\"http.scheme\":\"http\"},\"status\":{\"code\":\"UNSET\"}}" + }, + { + "field": "sessionId", + "value": "00000000-0000-4000-8000-a0d9db080001" + }, + { + "field": "traceId", + "value": "6aa827630b51ca4a2f0223652eb6be43" + }, + { + "field": "spanId", + "value": "de1915250cc14887" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IuOXOj4g0EJ/1gLCKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2Ss6YABqqCdsAAAAGSIAEo/ePnhoo0MNj+54aKNDgPQIzVAUiVe1DoTCACEA4YAQ==" + } + ] + ], + "statistics": { + "recordsMatched": 15, + "recordsScanned": 15, + "estimatedRecordsSkipped": 31, + "bytesScanned": 27276, + "estimatedBytesSkipped": 56987, + "logGroupsScanned": 1, + "resultCount": 15 + }, + "status": "Complete" +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.548f1c221addde3b.json b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.548f1c221addde3b.json deleted file mode 100644 index 38cd0642a..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.548f1c221addde3b.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "queryLanguage": "CWLI", - "results": [ - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1787952795780790373,\"observedTimeUnixNano\":1787952796735286012,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"tool_use\",\"message\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"7b1eeecf45c6e146\"}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "7b1eeecf45c6e146" - }, - { - "field": "@ptr", - "value": "Cs0BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCKCUkduCNBCHpMP7hDRA0cHR4dszSAASNxoYAgajvKv7AAAAABTZwGgABqkf6XAAAAKyIAEolYKq0oQ0MJyuqtKENDgqQJe/AkiwkQFQgGYgAhAcGAE=" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1787952795781997134,\"observedTimeUnixNano\":1787952796735435934,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"tool\",\"content\":{\"role\":\"tool\",\"content\":\"{\\\"a\\\": 2, \\\"b\\\": 2}\",\"id\":\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"text\\\": \\\"4\\\"}]\",\"id\":\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"4ad640cbd3587ff3\"}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "4ad640cbd3587ff3" - }, - { - "field": "@ptr", - "value": "Cs0BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCKCUkduCNBCHpMP7hDRA0cHR4dszSAASNxoYAgajvKv7AAAAABTZwGgABqkf6XAAAAKyIAEolYKq0oQ0MJyuqtKENDgqQJe/AkiwkQFQgGYgAhAdGAE=" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1787952795782144605,\"observedTimeUnixNano\":1787952796735532818,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\",\"tool.result\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}},{\"role\":\"assistant\",\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"a37ebb08225f5f32\"}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "a37ebb08225f5f32" - }, - { - "field": "@ptr", - "value": "Cs0BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCKCUkduCNBCHpMP7hDRA0cHR4dszSAASNxoYAgajvKv7AAAAABTZwGgABqkf6XAAAAKyIAEolYKq0oQ0MJyuqtKENDgqQJe/AkiwkQFQgGYgAhAeGAE=" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1787952797468097953,\"observedTimeUnixNano\":1787952801835110321,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}},{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"end_turn\",\"message\":\"[{\\\"text\\\": \\\"4\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"ad52d36b18057ff1\"}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "ad52d36b18057ff1" - }, - { - "field": "@ptr", - "value": "Cs0BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCKCUkduCNBCHpMP7hDRA0cHR4dszSAASNxoYAgajvKv7AAAAABTZwGgABqkf6XAAAAKyIAEolYKq0oQ0MJyuqtKENDgqQJe/AkiwkQFQgGYgAhAnGAE=" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1787952797468400669,\"observedTimeUnixNano\":1787952801835250906,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"status\\\": \\\"success\\\", \\\"content\\\": [{\\\"text\\\": \\\"4\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\\\", \\\"name\\\": \\\"add_numbers\\\", \\\"input\\\": {\\\"a\\\": 2, \\\"b\\\": 2}}}]\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"d7b0a909896809ba\"}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "d7b0a909896809ba" - }, - { - "field": "@ptr", - "value": "Cs0BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCKCUkduCNBCHpMP7hDRA0cHR4dszSAASNxoYAgajvKv7AAAAABTZwGgABqkf6XAAAAKyIAEolYKq0oQ0MJyuqtKENDgqQJe/AkiwkQFQgGYgAhAoGAE=" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1787952797468576817,\"observedTimeUnixNano\":1787952801835352043,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":\"\\n You are a helpful assistant. Use tools when appropriate.\\n \"},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is 2+2? Reply with just the number.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"4\\n\",\"finish_reason\":\"end_turn\"}}]}},\"attributes\":{\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"5f3fc94f1decac15\"}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "5f3fc94f1decac15" - }, - { - "field": "@ptr", - "value": "Cs0BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCKCUkduCNBCHpMP7hDRA0cHR4dszSAASNxoYAgajvKv7AAAAABTZwGgABqkf6XAAAAKyIAEolYKq0oQ0MJyuqtKENDgqQJe/AkiwkQFQgGYgAhApGAE=" - } - ] - ], - "statistics": { - "recordsMatched": 6, - "recordsScanned": 139, - "estimatedRecordsSkipped": 107, - "bytesScanned": 126707, - "estimatedBytesSkipped": 113696, - "logGroupsScanned": 1 - }, - "status": "Complete" -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.19164cb5cd9b9b70.json b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.84e164d474745985.json similarity index 56% rename from src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.19164cb5cd9b9b70.json rename to src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.84e164d474745985.json index f5626155b..682fa21f3 100644 --- a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.19164cb5cd9b9b70.json +++ b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.84e164d474745985.json @@ -4,583 +4,606 @@ [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"1d3bcfe3653d81e4\",\"parentSpanId\":\"5aa1ead48a6ac0e1\",\"flags\":256,\"name\":\"PUT\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555392103874218,\"endTimeUnixNano\":1786555392105289657,\"durationNano\":1415439,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/api/token\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"PUT /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"PUT\",\"http.response.status_code\":200,\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"fa38b3c2e7e20f00\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"PUT\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406418211599583,\"endTimeUnixNano\":1789406418212690329,\"durationNano\":1090746,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/api/token\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"PUT /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"PUT\",\"http.response.status_code\":200,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "1d3bcfe3653d81e4" + "value": "fa38b3c2e7e20f00" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAAYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQABgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"11655ee4cdde1872\",\"parentSpanId\":\"5aa1ead48a6ac0e1\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555392105841503,\"endTimeUnixNano\":1786555392106502618,\"durationNano\":661115,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"2ec41db52c9fde6e\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406418213094975,\"endTimeUnixNano\":1789406418213632433,\"durationNano\":537458,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "11655ee4cdde1872" + "value": "2ec41db52c9fde6e" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAEYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQARgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"210fa6dea654dcbc\",\"parentSpanId\":\"5aa1ead48a6ac0e1\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555392106868305,\"endTimeUnixNano\":1786555392107751277,\"durationNano\":882972,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/execution_role\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"d2b5b8c18f246967\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406418213952471,\"endTimeUnixNano\":1789406418214453207,\"durationNano\":500736,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/execution_role\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "210fa6dea654dcbc" + "value": "d2b5b8c18f246967" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAIYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQAhgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"cde6ff0cb3289288\",\"parentSpanId\":\"5aa1ead48a6ac0e1\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555392241890106,\"endTimeUnixNano\":1786555392285594042,\"durationNano\":43703936,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"d5fc88586216aeb9\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406418320814831,\"endTimeUnixNano\":1789406418360111198,\"durationNano\":39296367,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "cde6ff0cb3289288" + "value": "d5fc88586216aeb9" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAMYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQAxgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"9d3e945db9599945\",\"parentSpanId\":\"5aa1ead48a6ac0e1\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555392289575652,\"endTimeUnixNano\":1786555392316954181,\"durationNano\":27378529,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":202,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":202,\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"4bfdb7c73f41a095\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406418362622538,\"endTimeUnixNano\":1789406418390627241,\"durationNano\":28004703,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":202,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":202,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "9d3e945db9599945" + "value": "4bfdb7c73f41a095" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAQYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQBBgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"31efc7027314ac76\",\"parentSpanId\":\"5aa1ead48a6ac0e1\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555392318607342,\"endTimeUnixNano\":1786555392369734375,\"durationNano\":51127033,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"bcf71d58f537feea\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406418391850037,\"endTimeUnixNano\":1789406418443333284,\"durationNano\":51483247,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "31efc7027314ac76" + "value": "bcf71d58f537feea" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAUYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQBRgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"53a0cd3ac657fb83\",\"parentSpanId\":\"db6cce231beea7f0\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555392389258299,\"endTimeUnixNano\":1786555394009438471,\"durationNano\":1620180172,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"c1b5339e-9b84-45b0-a4ad-cfd818de8fca\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"tool_use\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":70,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1210,\"aws.genai.token_count_total\":1280,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH3RTZMMT4\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"5d8e6a7e2552b101\",\"parentSpanId\":\"296c86eded1f7a5e\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406418460106329,\"endTimeUnixNano\":1789406420660235602,\"durationNano\":2200129273,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"5a0a37be-bb0e-4055-bc63-6e023fbd1688\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"tool_use\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":99,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1207,\"aws.genai.token_count_total\":1306,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH2AAAXRXO\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "53a0cd3ac657fb83" + "value": "5d8e6a7e2552b101" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAYYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQBhgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"db6cce231beea7f0\",\"parentSpanId\":\"7f719fd629b95bca\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555392374099914,\"endTimeUnixNano\":1786555394010008258,\"durationNano\":1635908344,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1210,\"gen_ai.usage.output_tokens\":70,\"gen_ai.server.request.duration\":1601,\"gen_ai.usage.total_tokens\":1280,\"gen_ai.usage.completion_tokens\":70,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:12.374107+00:00\",\"gen_ai.server.time_to_first_token\":1613,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:14.009969+00:00\",\"gen_ai.usage.input_tokens\":1210,\"aws.genai.token_count_total\":1280,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"296c86eded1f7a5e\",\"parentSpanId\":\"d4b71f8efd7a00e5\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406418446673855,\"endTimeUnixNano\":1789406420660794069,\"durationNano\":2214120214,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1207,\"gen_ai.usage.output_tokens\":99,\"gen_ai.server.request.duration\":2184,\"gen_ai.usage.total_tokens\":1306,\"gen_ai.usage.completion_tokens\":99,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:18.446681+00:00\",\"gen_ai.server.time_to_first_token\":1345,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:20.660756+00:00\",\"gen_ai.usage.input_tokens\":1207,\"aws.genai.token_count_total\":1306,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "db6cce231beea7f0" + "value": "296c86eded1f7a5e" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAcYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ge+AABqqCzVAAAAGSIAEopKq8h4o0MLS9vIeKNDgIQNhuSL5YUIQ0IAIQBxgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"26952cbd9a43fe35\",\"parentSpanId\":\"7f719fd629b95bca\",\"flags\":256,\"name\":\"execute_tool add_numbers\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555394010521473,\"endTimeUnixNano\":1786555394011315403,\"durationNano\":793930,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.tool.status\":\"success\",\"gen_ai.tool.call.id\":\"tooluse_wZxoTzan8sypzmeYPveFwA\",\"gen_ai.tool.description\":\"Return the sum of two numbers\",\"gen_ai.tool.json_schema\":\"{\\\"properties\\\": {\\\"a\\\": {\\\"description\\\": \\\"Parameter a\\\", \\\"type\\\": \\\"integer\\\"}, \\\"b\\\": {\\\"description\\\": \\\"Parameter b\\\", \\\"type\\\": \\\"integer\\\"}}, \\\"required\\\": [\\\"a\\\", \\\"b\\\"], \\\"type\\\": \\\"object\\\"}\",\"aws.genai.span_kind\":\"TOOL\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:14.010538+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"execute_tool\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:14.011292+00:00\",\"gen_ai.tool.name\":\"add_numbers\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"f3bcb578fdf68fc6\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406420662732153,\"endTimeUnixNano\":1789406422862604644,\"durationNano\":2199872491,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "26952cbd9a43fe35" + "value": "f3bcb578fdf68fc6" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAgYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQABgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"7f719fd629b95bca\",\"parentSpanId\":\"a5e83c7e772efdf6\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555392373929874,\"endTimeUnixNano\":1786555394011480146,\"durationNano\":1637550272,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:14.011468+00:00\",\"event_loop.cycle_id\":\"23f63c39-82fe-4159-8035-ff8e6208b88f\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:12.373944+00:00\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"d4b71f8efd7a00e5\",\"parentSpanId\":\"298eb7d19929db80\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406418446534890,\"endTimeUnixNano\":1789406422866650350,\"durationNano\":4420115460,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:22.866636+00:00\",\"event_loop.cycle_id\":\"42da44f9-580d-4f47-bd94-70291909623f\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:18.446546+00:00\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "7f719fd629b95bca" + "value": "d4b71f8efd7a00e5" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKZ/8hIABqfKwDAAAAMyIAEo6cD/t/8zMNvP/7f/MzgKQKqKAUjxX1CnOCACEAkYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQAhgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"0abec106a8ff39b7\",\"parentSpanId\":\"7576c2384130fece\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555394012454655,\"endTimeUnixNano\":1786555397051836921,\"durationNano\":3039382266,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"8926bd3b-32aa-42a7-a234-5bafc1cd8537\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"end_turn\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":12,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1294,\"aws.genai.token_count_total\":1306,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH3RTZMMT4\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"e0111ff026a54b70\",\"parentSpanId\":\"d4b71f8efd7a00e5\",\"flags\":256,\"name\":\"execute_tool mcpTarget___web_search_exa\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406420661277304,\"endTimeUnixNano\":1789406422866184321,\"durationNano\":2204907017,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.tool.status\":\"success\",\"gen_ai.tool.call.id\":\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\",\"gen_ai.tool.description\":\"Search the web for any topic and get clean, ready-to-use content.\\n\\n Best for: Finding current information, news, facts, people, companies, or answering questions about any topic.\\n Returns: Clean text content from top search results.\\n\\n Query tips: \\n describe the ideal page, not keywords. \\\"blog post comparing React and Vue performance\\\" not \\\"React vs Vue\\\".\\n Use category:people / category:company to search through Linkedin profiles / companies respectively.\\n If highlights are insufficient, follow up with web_fetch_exa on the best URLs.\",\"gen_ai.tool.json_schema\":\"{\\\"type\\\": \\\"object\\\", \\\"properties\\\": {\\\"query\\\": {\\\"type\\\": \\\"string\\\", \\\"description\\\": \\\"Natural language search query. Should be a semantically rich description of the ideal page, not just keywords. Optionally include category: (company, people) to focus results — e.g. 'category:people John Doe software engineer'.\\\"}, \\\"numResults\\\": {\\\"type\\\": \\\"number\\\", \\\"minimum\\\": 1, \\\"maximum\\\": 100, \\\"description\\\": \\\"Number of search results to return (must be a number, default: 10).\\\"}}, \\\"required\\\": [\\\"query\\\"], \\\"additionalProperties\\\": false}\",\"aws.genai.span_kind\":\"TOOL\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:20.661291+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"execute_tool\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:22.866156+00:00\",\"gen_ai.tool.name\":\"mcpTarget___web_search_exa\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "0abec106a8ff39b7" + "value": "e0111ff026a54b70" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAAYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQARgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"7576c2384130fece\",\"parentSpanId\":\"a1d0f9231c5db33d\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555394011912861,\"endTimeUnixNano\":1786555397052514047,\"durationNano\":3040601186,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1294,\"gen_ai.usage.output_tokens\":12,\"gen_ai.server.request.duration\":3034,\"gen_ai.usage.total_tokens\":1306,\"gen_ai.usage.completion_tokens\":12,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:14.011919+00:00\",\"gen_ai.server.time_to_first_token\":2804,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:17.052476+00:00\",\"gen_ai.usage.input_tokens\":1294,\"aws.genai.token_count_total\":1306,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"ad8efe762998ccfa\",\"parentSpanId\":\"b307af29fdc4cd68\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406422868226547,\"endTimeUnixNano\":1789406435924826357,\"durationNano\":13056599810,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"8c70e3ca-7ca5-4aac-b6f9-13a93fef6717\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"end_turn\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":559,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":10070,\"aws.genai.token_count_total\":10629,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH2AAAXRXO\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "7576c2384130fece" + "value": "ad8efe762998ccfa" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAEYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQAxgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"a1d0f9231c5db33d\",\"parentSpanId\":\"a5e83c7e772efdf6\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555394011746512,\"endTimeUnixNano\":1786555397052873967,\"durationNano\":3041127455,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:17.052853+00:00\",\"event_loop.cycle_id\":\"beebe4f0-27a6-4aef-a0e3-09cda0c61a19\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:14.011757+00:00\",\"event_loop.parent_cycle_id\":\"23f63c39-82fe-4159-8035-ff8e6208b88f\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"b307af29fdc4cd68\",\"parentSpanId\":\"db045c4df561a4b5\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406422867370696,\"endTimeUnixNano\":1789406435925492800,\"durationNano\":13058122104,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":10070,\"gen_ai.usage.output_tokens\":559,\"gen_ai.server.request.duration\":13052,\"gen_ai.usage.total_tokens\":10629,\"gen_ai.usage.completion_tokens\":559,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:22.867378+00:00\",\"gen_ai.server.time_to_first_token\":1823,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:35.925458+00:00\",\"gen_ai.usage.input_tokens\":10070,\"aws.genai.token_count_total\":10629,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "a1d0f9231c5db33d" + "value": "b307af29fdc4cd68" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAIYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQBBgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.starlette\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"5aa1ead48a6ac0e1\",\"parentSpanId\":\"e1355f7dda87635b\",\"flags\":768,\"name\":\"POST /invocations\",\"kind\":\"SERVER\",\"startTimeUnixNano\":1786555392052368325,\"endTimeUnixNano\":1786555397053469078,\"durationNano\":5001100753,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"net.peer.port\":55860,\"telemetry.extended\":\"true\",\"http.target\":\"/invocations\",\"http.flavor\":\"1.1\",\"http.url\":\"http://cell01.us-west-2.prod.arp.kepler-analytics.aws.dev/invocations\",\"net.peer.ip\":\"127.0.0.1\",\"http.host\":\"127.0.0.1:8080\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"http.status_code\":200,\"aws.local.operation\":\"POST /invocations\",\"aws.span.kind\":\"SERVER\",\"http.server_name\":\"cell01.us-west-2.prod.arp.kepler-analytics.aws.dev\",\"net.host.port\":8080,\"http.route\":\"/invocations\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"http.scheme\":\"http\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"db045c4df561a4b5\",\"parentSpanId\":\"298eb7d19929db80\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406422866935864,\"endTimeUnixNano\":1789406435925825687,\"durationNano\":13058889823,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:35.925810+00:00\",\"event_loop.cycle_id\":\"7eb5b631-b2a9-48f4-9e95-108f83bb6af5\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:22.866949+00:00\",\"event_loop.parent_cycle_id\":\"42da44f9-580d-4f47-bd94-70291909623f\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "5aa1ead48a6ac0e1" + "value": "db045c4df561a4b5" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAQYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQBRgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cabfa3bfe9a7348415c7b507648a8\",\"spanId\":\"a5e83c7e772efdf6\",\"parentSpanId\":\"5aa1ead48a6ac0e1\",\"flags\":256,\"name\":\"invoke_agent Strands Agents\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555392372920661,\"endTimeUnixNano\":1786555397053072269,\"durationNano\":4680151608,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":2504,\"gen_ai.usage.output_tokens\":82,\"gen_ai.usage.cache_write_input_tokens\":0,\"gen_ai.agent.name\":\"Strands Agents\",\"gen_ai.usage.total_tokens\":2586,\"gen_ai.usage.completion_tokens\":82,\"aws.genai.span_kind\":\"AGENT\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:12.372942+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"invoke_agent\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:17.053049+00:00\",\"gen_ai.usage.input_tokens\":2504,\"aws.genai.token_count_total\":2586,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"gen_ai.usage.cache_read_input_tokens\":0,\"gen_ai.agent.tools\":\"[\\\"add_numbers\\\", \\\"x_amz_bedrock_agentcore_search\\\", \\\"mcpTarget___web_fetch_exa\\\", \\\"mcpTarget___web_search_exa\\\"]\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"67ebf93b-65e3-4127-9e13-483b239f256a\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.starlette\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"e186ca07558d5f24\",\"parentSpanId\":\"3347e1ee0ec11c0d\",\"flags\":768,\"name\":\"POST /invocations\",\"kind\":\"SERVER\",\"startTimeUnixNano\":1789406418170672102,\"endTimeUnixNano\":1789406435926302481,\"durationNano\":17755630379,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"net.peer.port\":34872,\"telemetry.extended\":\"true\",\"http.target\":\"/invocations\",\"http.flavor\":\"1.1\",\"http.url\":\"http://cell01.us-west-2.prod.arp.kepler-analytics.aws.dev/invocations\",\"net.peer.ip\":\"127.0.0.1\",\"http.host\":\"127.0.0.1:8080\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"http.status_code\":200,\"aws.local.operation\":\"POST /invocations\",\"aws.span.kind\":\"SERVER\",\"http.server_name\":\"cell01.us-west-2.prod.arp.kepler-analytics.aws.dev\",\"net.host.port\":8080,\"http.route\":\"/invocations\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"http.scheme\":\"http\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "67ebf93b-65e3-4127-9e13-483b239f256a" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cabfa3bfe9a7348415c7b507648a8" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "a5e83c7e772efdf6" + "value": "e186ca07558d5f24" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAMYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQBxgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"42f4da466ab4c999\",\"parentSpanId\":\"82efc476a79eaee2\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555411324466077,\"endTimeUnixNano\":1786555411324998705,\"durationNano\":532628,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"298eb7d19929db80\",\"parentSpanId\":\"e186ca07558d5f24\",\"flags\":256,\"name\":\"invoke_agent Strands Agents\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406418445938301,\"endTimeUnixNano\":1789406435926009660,\"durationNano\":17480071359,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":11277,\"gen_ai.usage.output_tokens\":658,\"gen_ai.usage.cache_write_input_tokens\":0,\"gen_ai.agent.name\":\"Strands Agents\",\"gen_ai.usage.total_tokens\":11935,\"gen_ai.usage.completion_tokens\":658,\"aws.genai.span_kind\":\"AGENT\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:18.445954+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"invoke_agent\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:35.925988+00:00\",\"gen_ai.usage.input_tokens\":11277,\"aws.genai.token_count_total\":11935,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"gen_ai.usage.cache_read_input_tokens\":0,\"gen_ai.agent.tools\":\"[\\\"add_numbers\\\", \\\"x_amz_bedrock_agentcore_search\\\", \\\"mcpTarget___web_fetch_exa\\\", \\\"mcpTarget___web_search_exa\\\"]\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82ccc63d06bd964d302913ef6da1a" }, { "field": "spanId", - "value": "42f4da466ab4c999" + "value": "298eb7d19929db80" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAYYAQ==" + "value": "CpsBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNRoYAgaqLeU5AAAAAo2ghzkABqqCzaAAAAGSIAEozs68h4o0MNa0vYeKNDgIQKd9SMt7UJ1NIAIQBhgB" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"6d003c695538a610\",\"parentSpanId\":\"82efc476a79eaee2\",\"flags\":256,\"name\":\"PUT\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555411323051352,\"endTimeUnixNano\":1786555411324071465,\"durationNano\":1020113,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/api/token\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"PUT /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"PUT\",\"http.response.status_code\":200,\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"33c42c1eaffe1c5f\",\"parentSpanId\":\"4593822798fe1841\",\"flags\":256,\"name\":\"PUT\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406456484570885,\"endTimeUnixNano\":1789406456485683230,\"durationNano\":1112345,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/api/token\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"PUT /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"PUT\",\"http.response.status_code\":200,\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "6d003c695538a610" + "value": "33c42c1eaffe1c5f" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAUYAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAAYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"8a05cdd0a93d3a6a\",\"parentSpanId\":\"82efc476a79eaee2\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555411325315616,\"endTimeUnixNano\":1786555411325825454,\"durationNano\":509838,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/execution_role\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"87a374a0823c0c74\",\"parentSpanId\":\"4593822798fe1841\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406456486106965,\"endTimeUnixNano\":1789406456486708880,\"durationNano\":601915,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "8a05cdd0a93d3a6a" + "value": "87a374a0823c0c74" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAcYAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAEYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"0745de30c628c8e5\",\"parentSpanId\":\"82efc476a79eaee2\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555411431858312,\"endTimeUnixNano\":1786555411485160682,\"durationNano\":53302370,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"4dbd2ea64160d4b5\",\"parentSpanId\":\"4593822798fe1841\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406456487043041,\"endTimeUnixNano\":1789406456487611528,\"durationNano\":568487,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/execution_role\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "0745de30c628c8e5" + "value": "4dbd2ea64160d4b5" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAgYAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAIYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"cb5ae6a1e269e21b\",\"parentSpanId\":\"82efc476a79eaee2\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555411487794771,\"endTimeUnixNano\":1786555411518235079,\"durationNano\":30440308,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":202,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":202,\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"83d2b53ccb940ad1\",\"parentSpanId\":\"4593822798fe1841\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406456595584084,\"endTimeUnixNano\":1789406456647019850,\"durationNano\":51435766,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "cb5ae6a1e269e21b" + "value": "83d2b53ccb940ad1" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAkYAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAMYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"b043a295f3c1c4cf\",\"parentSpanId\":\"82efc476a79eaee2\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555411519590941,\"endTimeUnixNano\":1786555411598192831,\"durationNano\":78601890,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"b296b63492f5c4b4\",\"parentSpanId\":\"4593822798fe1841\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406456649757128,\"endTimeUnixNano\":1789406456682533291,\"durationNano\":32776163,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":202,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":202,\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "b043a295f3c1c4cf" + "value": "b296b63492f5c4b4" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAoYAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAQYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"b556c691098ede16\",\"parentSpanId\":\"627f6364bb0599fa\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1786555411614408678,\"endTimeUnixNano\":1786555414476372175,\"durationNano\":2861963497,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"47288f71-5ae9-4b15-9720-d49cf3e180f2\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"end_turn\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":48,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1203,\"aws.genai.token_count_total\":1251,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWHYLSAHMVB\",\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"599b42d4db5d8ca5\",\"parentSpanId\":\"4593822798fe1841\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406456684007684,\"endTimeUnixNano\":1789406456741927693,\"durationNano\":57920009,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "b556c691098ede16" + "value": "599b42d4db5d8ca5" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAsYAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAUYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"627f6364bb0599fa\",\"parentSpanId\":\"e90c8e0cb4712af5\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555411601581872,\"endTimeUnixNano\":1786555414476887232,\"durationNano\":2875305360,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1203,\"gen_ai.usage.output_tokens\":48,\"gen_ai.server.request.duration\":2842,\"gen_ai.usage.total_tokens\":1251,\"gen_ai.usage.completion_tokens\":48,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:31.601589+00:00\",\"gen_ai.server.time_to_first_token\":1966,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:34.476851+00:00\",\"gen_ai.usage.input_tokens\":1203,\"aws.genai.token_count_total\":1251,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"a6ec04c4b9d01e94\",\"parentSpanId\":\"6da6023a8bc86c22\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406456745264502,\"endTimeUnixNano\":1789406459261910836,\"durationNano\":2516646334,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:59.261895+00:00\",\"event_loop.cycle_id\":\"3dc0e5db-1930-4644-b9a5-34898af37c3b\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:56.745276+00:00\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "627f6364bb0599fa" + "value": "a6ec04c4b9d01e94" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEAwYAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAgYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"e90c8e0cb4712af5\",\"parentSpanId\":\"00821fcc8a234519\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555411601446390,\"endTimeUnixNano\":1786555414477214324,\"durationNano\":2875767934,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:34.477197+00:00\",\"event_loop.cycle_id\":\"cbaf6d7e-50f0-436e-8c06-6c5d9e6c5936\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:31.601458+00:00\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"6a274143d6e5f823\",\"parentSpanId\":\"a6ec04c4b9d01e94\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406456745401024,\"endTimeUnixNano\":1789406459261583716,\"durationNano\":2516182692,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1205,\"gen_ai.usage.output_tokens\":78,\"gen_ai.server.request.duration\":2484,\"gen_ai.usage.total_tokens\":1283,\"gen_ai.usage.completion_tokens\":78,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:56.745408+00:00\",\"gen_ai.server.time_to_first_token\":1392,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:59.261545+00:00\",\"gen_ai.usage.input_tokens\":1205,\"aws.genai.token_count_total\":1283,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "e90c8e0cb4712af5" + "value": "6a274143d6e5f823" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEA0YAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAcYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"00821fcc8a234519\",\"parentSpanId\":\"82efc476a79eaee2\",\"flags\":256,\"name\":\"invoke_agent Strands Agents\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1786555411600856280,\"endTimeUnixNano\":1786555414477366577,\"durationNano\":2876510297,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1203,\"gen_ai.usage.output_tokens\":48,\"gen_ai.usage.cache_write_input_tokens\":0,\"gen_ai.agent.name\":\"Strands Agents\",\"gen_ai.usage.total_tokens\":1251,\"gen_ai.usage.completion_tokens\":48,\"aws.genai.span_kind\":\"AGENT\",\"gen_ai.event.start_time\":\"2026-08-12T17:23:31.600874+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"invoke_agent\",\"gen_ai.event.end_time\":\"2026-08-12T17:23:34.477345+00:00\",\"gen_ai.usage.input_tokens\":1203,\"aws.genai.token_count_total\":1251,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"gen_ai.usage.cache_read_input_tokens\":0,\"gen_ai.agent.tools\":\"[\\\"add_numbers\\\", \\\"x_amz_bedrock_agentcore_search\\\", \\\"mcpTarget___web_fetch_exa\\\", \\\"mcpTarget___web_search_exa\\\"]\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"48ade9ca04672973\",\"parentSpanId\":\"6a274143d6e5f823\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1789406456758468452,\"endTimeUnixNano\":1789406459261084942,\"durationNano\":2502616490,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"035f060a-0b49-48ff-8b69-fa6bc2ad0ed5\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"end_turn\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":78,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1205,\"aws.genai.token_count_total\":1283,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWHTNVZVMXE\",\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "00821fcc8a234519" + "value": "48ade9ca04672973" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEA4YAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAYYAQ==" } ], [ { "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.starlette\",\"version\":\"0.61b0\"},\"traceId\":\"6a7cac0e3fa42bfe5437eef070d1231c\",\"spanId\":\"82efc476a79eaee2\",\"parentSpanId\":\"1cc0af0f799f67f1\",\"flags\":768,\"name\":\"POST /invocations\",\"kind\":\"SERVER\",\"startTimeUnixNano\":1786555411282407024,\"endTimeUnixNano\":1786555414477671431,\"durationNano\":3195264407,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"net.peer.port\":34652,\"telemetry.extended\":\"true\",\"http.target\":\"/invocations\",\"http.flavor\":\"1.1\",\"http.url\":\"http://cell01.us-west-2.prod.arp.kepler-analytics.aws.dev/invocations\",\"net.peer.ip\":\"127.0.0.1\",\"http.host\":\"127.0.0.1:8080\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"http.status_code\":200,\"aws.local.operation\":\"POST /invocations\",\"aws.span.kind\":\"SERVER\",\"http.server_name\":\"cell01.us-west-2.prod.arp.kepler-analytics.aws.dev\",\"net.host.port\":8080,\"http.route\":\"/invocations\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"7f983b9f-9569-4a4d-bdc2-5c997ff346dd\",\"http.scheme\":\"http\"},\"status\":{\"code\":\"UNSET\"}}" + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.starlette\",\"version\":\"0.61b0\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"4593822798fe1841\",\"parentSpanId\":\"1d9ba040554f443f\",\"flags\":768,\"name\":\"POST /invocations\",\"kind\":\"SERVER\",\"startTimeUnixNano\":1789406456442726883,\"endTimeUnixNano\":1789406459262347963,\"durationNano\":2819621080,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"net.peer.port\":48834,\"telemetry.extended\":\"true\",\"http.target\":\"/invocations\",\"http.flavor\":\"1.1\",\"http.url\":\"http://cell01.us-west-2.prod.arp.kepler-analytics.aws.dev/invocations\",\"net.peer.ip\":\"127.0.0.1\",\"http.host\":\"127.0.0.1:8080\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"http.status_code\":200,\"aws.local.operation\":\"POST /invocations\",\"aws.span.kind\":\"SERVER\",\"http.server_name\":\"cell01.us-west-2.prod.arp.kepler-analytics.aws.dev\",\"net.host.port\":8080,\"http.route\":\"/invocations\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\",\"http.scheme\":\"http\"},\"status\":{\"code\":\"UNSET\"}}" }, { "field": "sessionId", - "value": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd" + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" }, { "field": "traceId", - "value": "6a7cac0e3fa42bfe5437eef070d1231c" + "value": "6aa82cf32f590bb018df44b95178fe81" }, { "field": "spanId", - "value": "82efc476a79eaee2" + "value": "4593822798fe1841" }, { "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgJiTmv8zEOfXrMP/Mzjv37W+yTNAyO+wktMzSAASNhoYAgammbXDAAAAAKaAAVIABqfKwHAAAAMyIAEou+f/t/8zMM3vgLj/MzgQQMPmAUiIclCpRiACEA8YAQ==" + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAoYAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"6da6023a8bc86c22\",\"parentSpanId\":\"4593822798fe1841\",\"flags\":256,\"name\":\"invoke_agent Strands Agents\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1789406456744645885,\"endTimeUnixNano\":1789406459262067251,\"durationNano\":2517421366,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1205,\"gen_ai.usage.output_tokens\":78,\"gen_ai.usage.cache_write_input_tokens\":0,\"gen_ai.agent.name\":\"Strands Agents\",\"gen_ai.usage.total_tokens\":1283,\"gen_ai.usage.completion_tokens\":78,\"aws.genai.span_kind\":\"AGENT\",\"gen_ai.event.start_time\":\"2026-09-14T17:20:56.744665+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"invoke_agent\",\"gen_ai.event.end_time\":\"2026-09-14T17:20:59.262046+00:00\",\"gen_ai.usage.input_tokens\":1205,\"aws.genai.token_count_total\":1283,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"gen_ai.usage.cache_read_input_tokens\":0,\"gen_ai.agent.tools\":\"[\\\"add_numbers\\\", \\\"x_amz_bedrock_agentcore_search\\\", \\\"mcpTarget___web_fetch_exa\\\", \\\"mcpTarget___web_search_exa\\\"]\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" + }, + { + "field": "sessionId", + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" + }, + { + "field": "traceId", + "value": "6aa82cf32f590bb018df44b95178fe81" + }, + { + "field": "spanId", + "value": "6da6023a8bc86c22" + }, + { + "field": "@ptr", + "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IgNDa6Yk0EOeP9JKKNDjv37W+yTNAyO+wktMzSAASNhoYAgaqLeU5AAAAAo2gz3cABqqCz7AAAAGSIAEopdW+h4o0MP7qvoeKNDgLQNCZAUjibFDNQSACEAkYAQ==" } ] ], "statistics": { - "recordsMatched": 26, - "recordsScanned": 26, - "estimatedRecordsSkipped": 0, - "bytesScanned": 47213, - "estimatedBytesSkipped": 0, - "logGroupsScanned": 1 + "recordsMatched": 27, + "recordsScanned": 42, + "estimatedRecordsSkipped": 15, + "bytesScanned": 77419, + "estimatedBytesSkipped": 27276, + "logGroupsScanned": 1, + "resultCount": 27 }, "status": "Complete" } \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.8bae324b6facaa89.json b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.8bae324b6facaa89.json deleted file mode 100644 index adf15b018..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.8bae324b6facaa89.json +++ /dev/null @@ -1,344 +0,0 @@ -{ - "queryLanguage": "CWLI", - "results": [ - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"7604363a92848eb2\",\"parentSpanId\":\"ed790aebac4076a8\",\"flags\":256,\"name\":\"PUT\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952793581551046,\"endTimeUnixNano\":1787952793582587769,\"durationNano\":1036723,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/api/token\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"PUT /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"PUT\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "7604363a92848eb2" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAAYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"16323742446ec885\",\"parentSpanId\":\"ed790aebac4076a8\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952793582988074,\"endTimeUnixNano\":1787952793583576639,\"durationNano\":588565,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "16323742446ec885" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAEYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.urllib3\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"55ccdd09778b7c13\",\"parentSpanId\":\"ed790aebac4076a8\",\"flags\":256,\"name\":\"GET\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952793583915675,\"endTimeUnixNano\":1787952793584473407,\"durationNano\":557732,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"http://169.254.169.254/latest/meta-data/iam/security-credentials/execution_role\",\"aws.remote.service\":\"169.254.169.254\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"GET /latest\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"GET\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "55ccdd09778b7c13" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAIYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"516839883f3dccf8\",\"parentSpanId\":\"ed790aebac4076a8\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952793691038985,\"endTimeUnixNano\":1787952793733308895,\"durationNano\":42269910,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "516839883f3dccf8" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAMYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"4403738c398f6c0c\",\"parentSpanId\":\"ed790aebac4076a8\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952793735879895,\"endTimeUnixNano\":1787952793763063671,\"durationNano\":27183776,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":202,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":202,\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "4403738c398f6c0c" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAQYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.httpx\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"2aa50f6e0a584472\",\"parentSpanId\":\"ed790aebac4076a8\",\"flags\":256,\"name\":\"POST\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952793764326730,\"endTimeUnixNano\":1787952793832132293,\"durationNano\":67805563,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"telemetry.extended\":\"true\",\"http.url\":\"https://bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp\",\"aws.remote.service\":\"bugbashgw1776978672-zsy8cbqwts.gateway.bedrock-agentcore.us-west-2.amazonaws.com\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"POST /mcp\",\"http.status_code\":200,\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "2aa50f6e0a584472" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAUYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"7b1eeecf45c6e146\",\"parentSpanId\":\"a37ebb08225f5f32\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1787952793835468170,\"endTimeUnixNano\":1787952795780790373,\"durationNano\":1945322203,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1211,\"gen_ai.usage.output_tokens\":70,\"gen_ai.server.request.duration\":1908,\"gen_ai.usage.total_tokens\":1281,\"gen_ai.usage.completion_tokens\":70,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-08-28T21:33:13.835475+00:00\",\"gen_ai.server.time_to_first_token\":1510,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-08-28T21:33:15.780751+00:00\",\"gen_ai.usage.input_tokens\":1211,\"aws.genai.token_count_total\":1281,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "7b1eeecf45c6e146" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAcYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"9432e4327acddbb4\",\"parentSpanId\":\"7b1eeecf45c6e146\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952793848383168,\"endTimeUnixNano\":1787952795780207477,\"durationNano\":1931824309,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"d139b90c-6426-4af8-b100-d99e033a7b14\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"tool_use\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":70,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1211,\"aws.genai.token_count_total\":1281,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH4DWE2LBS\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "9432e4327acddbb4" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAYYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"4ad640cbd3587ff3\",\"parentSpanId\":\"a37ebb08225f5f32\",\"flags\":256,\"name\":\"execute_tool add_numbers\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1787952795781281491,\"endTimeUnixNano\":1787952795781997134,\"durationNano\":715643,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.tool.status\":\"success\",\"gen_ai.tool.call.id\":\"tooluse_3jtUttUiLMVTz1Qqd4hYGz\",\"gen_ai.tool.description\":\"Return the sum of two numbers\",\"gen_ai.tool.json_schema\":\"{\\\"properties\\\": {\\\"a\\\": {\\\"description\\\": \\\"Parameter a\\\", \\\"type\\\": \\\"integer\\\"}, \\\"b\\\": {\\\"description\\\": \\\"Parameter b\\\", \\\"type\\\": \\\"integer\\\"}}, \\\"required\\\": [\\\"a\\\", \\\"b\\\"], \\\"type\\\": \\\"object\\\"}\",\"aws.genai.span_kind\":\"TOOL\",\"gen_ai.event.start_time\":\"2026-08-28T21:33:15.781295+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"execute_tool\",\"gen_ai.event.end_time\":\"2026-08-28T21:33:15.781979+00:00\",\"gen_ai.tool.name\":\"add_numbers\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "4ad640cbd3587ff3" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAgYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"a37ebb08225f5f32\",\"parentSpanId\":\"5f3fc94f1decac15\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1787952793835335831,\"endTimeUnixNano\":1787952795782144605,\"durationNano\":1946808774,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-08-28T21:33:15.782133+00:00\",\"event_loop.cycle_id\":\"0d22d22c-190f-4c18-bf70-c0d3115cb990\",\"gen_ai.event.start_time\":\"2026-08-28T21:33:13.835347+00:00\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "a37ebb08225f5f32" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAkYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.botocore.bedrock-runtime\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"072a6b01f30dcf74\",\"parentSpanId\":\"ad52d36b18057ff1\",\"flags\":256,\"name\":\"chat global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"kind\":\"CLIENT\",\"startTimeUnixNano\":1787952795783348917,\"endTimeUnixNano\":1787952797467653794,\"durationNano\":1684304877,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"rpc.service\":\"Bedrock Runtime\",\"aws.remote.resource.identifier\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"aws.remote.operation\":\"ConverseStream\",\"gen_ai.provider.name\":\"aws.bedrock\",\"server.address\":\"bedrock-runtime.us-west-2.amazonaws.com\",\"aws.request_id\":\"f988e74d-ba06-4055-9e7a-17d48cff7413\",\"aws.local.operation\":\"UnmappedOperation\",\"aws.span.kind\":\"CLIENT\",\"aws.auth.region\":\"us-west-2\",\"rpc.method\":\"ConverseStream\",\"gen_ai.response.finish_reasons\":[\"end_turn\"],\"server.port\":443,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"http.response.status_code\":200,\"gen_ai.system\":\"aws.bedrock\",\"telemetry.extended\":\"true\",\"gen_ai.usage.output_tokens\":4,\"aws.genai.span_kind\":\"LLM\",\"rpc.system\":\"aws-api\",\"aws.remote.service\":\"AWS::BedrockRuntime\",\"http.status_code\":200,\"aws.region\":\"us-west-2\",\"aws.remote.resource.type\":\"AWS::Bedrock::Model\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.usage.input_tokens\":1295,\"aws.genai.token_count_total\":1299,\"retry_attempts\":0,\"PlatformType\":\"AWS::BedrockAgentCore\",\"aws.auth.account.access_key\":\"ASIAZ7CHXJWH4DWE2LBS\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "072a6b01f30dcf74" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAoYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"5f3fc94f1decac15\",\"parentSpanId\":\"ed790aebac4076a8\",\"flags\":256,\"name\":\"invoke_agent Strands Agents\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1787952793834752450,\"endTimeUnixNano\":1787952797468576817,\"durationNano\":3633824367,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":2506,\"gen_ai.usage.output_tokens\":74,\"gen_ai.usage.cache_write_input_tokens\":0,\"gen_ai.agent.name\":\"Strands Agents\",\"gen_ai.usage.total_tokens\":2580,\"gen_ai.usage.completion_tokens\":74,\"aws.genai.span_kind\":\"AGENT\",\"gen_ai.event.start_time\":\"2026-08-28T21:33:13.834769+00:00\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"invoke_agent\",\"gen_ai.event.end_time\":\"2026-08-28T21:33:17.468556+00:00\",\"gen_ai.usage.input_tokens\":2506,\"aws.genai.token_count_total\":2580,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"gen_ai.usage.cache_read_input_tokens\":0,\"gen_ai.agent.tools\":\"[\\\"add_numbers\\\", \\\"x_amz_bedrock_agentcore_search\\\", \\\"mcpTarget___web_fetch_exa\\\", \\\"mcpTarget___web_search_exa\\\"]\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "5f3fc94f1decac15" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEA0YAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"opentelemetry.instrumentation.starlette\",\"version\":\"0.61b0\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"ed790aebac4076a8\",\"parentSpanId\":\"33f5dbcf78a5fa01\",\"flags\":768,\"name\":\"POST /invocations\",\"kind\":\"SERVER\",\"startTimeUnixNano\":1787952793540648784,\"endTimeUnixNano\":1787952797468963069,\"durationNano\":3928314285,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"net.peer.port\":48820,\"telemetry.extended\":\"true\",\"http.target\":\"/invocations\",\"http.flavor\":\"1.1\",\"http.url\":\"http://cell01.us-west-2.prod.arp.kepler-analytics.aws.dev/invocations\",\"net.peer.ip\":\"127.0.0.1\",\"http.host\":\"127.0.0.1:8080\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"http.status_code\":200,\"aws.local.operation\":\"POST /invocations\",\"aws.span.kind\":\"SERVER\",\"http.server_name\":\"cell01.us-west-2.prod.arp.kepler-analytics.aws.dev\",\"net.host.port\":8080,\"http.route\":\"/invocations\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"http.method\":\"POST\",\"http.response.status_code\":200,\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"http.scheme\":\"http\"},\"status\":{\"code\":\"UNSET\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "ed790aebac4076a8" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEA4YAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"d7b0a909896809ba\",\"parentSpanId\":\"5f3fc94f1decac15\",\"flags\":256,\"name\":\"execute_event_loop_cycle\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1787952795782385331,\"endTimeUnixNano\":1787952797468400669,\"durationNano\":1686015338,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.operation.name\":\"execute_event_loop_cycle\",\"gen_ai.event.end_time\":\"2026-08-28T21:33:17.468386+00:00\",\"event_loop.cycle_id\":\"5d873f75-9a9e-4e1a-b494-8e7857bbf933\",\"gen_ai.event.start_time\":\"2026-08-28T21:33:15.782395+00:00\",\"event_loop.parent_cycle_id\":\"0d22d22c-190f-4c18-bf70-c0d3115cb990\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"gen_ai.system\":\"strands-agents\",\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "d7b0a909896809ba" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAwYAQ==" - } - ], - [ - { - "field": "@message", - "value": "{\"resource\":{\"attributes\":{\"deployment.environment.name\":\"bedrock-agentcore:default\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"cloud.region\":\"us-west-2\",\"aws.log.stream.names\":\"otel-rt-logs\",\"telemetry.sdk.name\":\"opentelemetry\",\"aws.service.type\":\"gen_ai_agent\",\"telemetry.sdk.language\":\"python\",\"cloud.provider\":\"aws\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"telemetry.sdk.version\":\"1.40.0\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"telemetry.auto.version\":\"0.17.0-aws\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\",\"version\":\"\"},\"traceId\":\"6a91fe944cf38d6b2d8c3c6a66e63ad4\",\"spanId\":\"ad52d36b18057ff1\",\"parentSpanId\":\"d7b0a909896809ba\",\"flags\":256,\"name\":\"chat\",\"kind\":\"INTERNAL\",\"startTimeUnixNano\":1787952795782789184,\"endTimeUnixNano\":1787952797468097953,\"durationNano\":1685308769,\"attributes\":{\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"gen_ai.usage.prompt_tokens\":1295,\"gen_ai.usage.output_tokens\":4,\"gen_ai.server.request.duration\":1679,\"gen_ai.usage.total_tokens\":1299,\"gen_ai.usage.completion_tokens\":4,\"aws.genai.span_kind\":\"LLM\",\"gen_ai.event.start_time\":\"2026-08-28T21:33:15.782800+00:00\",\"gen_ai.server.time_to_first_token\":1490,\"aws.local.environment\":\"bedrock-agentcore:default\",\"gen_ai.provider.name\":\"strands-agents\",\"gen_ai.operation.name\":\"chat\",\"gen_ai.event.end_time\":\"2026-08-28T21:33:17.468062+00:00\",\"gen_ai.usage.input_tokens\":1295,\"aws.genai.token_count_total\":1299,\"gen_ai.request.model\":\"global.anthropic.claude-sonnet-4-5-20250929-v1:0\",\"PlatformType\":\"AWS::BedrockAgentCore\",\"session.id\":\"00000000-0000-4000-8000-4a4a72800001\",\"gen_ai.system\":\"strands-agents\"},\"status\":{\"code\":\"OK\"}}" - }, - { - "field": "sessionId", - "value": "00000000-0000-4000-8000-4a4a72800001" - }, - { - "field": "traceId", - "value": "6a91fe944cf38d6b2d8c3c6a66e63ad4" - }, - { - "field": "spanId", - "value": "ad52d36b18057ff1" - }, - { - "field": "@ptr", - "value": "CpwBCmAKFjY4NTE5NzcwODY4Nzphd3Mvc3BhbnMQABokZTE0NTI5MzgtZjVjZi00OTc1LWE0N2QtYzk3YzMwZmFlY2ZlIg4IoJSR24I0EIekw/uENDjv37W+yTNAyO+wktMzSAASNhoYAgamDtnsAAAAACb26P0ABqkf6bAAAAHCIAEo7o+q0oQ0MJyuqtKENDgPQJrXAUiue1CBTSACEAsYAQ==" - } - ] - ], - "statistics": { - "recordsMatched": 15, - "recordsScanned": 30, - "estimatedRecordsSkipped": 43, - "bytesScanned": 55094, - "estimatedBytesSkipped": 78544, - "logGroupsScanned": 1 - }, - "status": "Complete" -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.b438f96dd0c54eba.json b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.b438f96dd0c54eba.json new file mode 100644 index 000000000..e4bdd4814 --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/GetQueryResultsCommand.b438f96dd0c54eba.json @@ -0,0 +1,213 @@ +{ + "queryLanguage": "CWLI", + "results": [ + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406420660794069,\"observedTimeUnixNano\":1789406421640744111,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Summarize what an agent runtime does.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"tool_use\",\"message\":\"[{\\\"text\\\": \\\"I'll search for information about what an agent runtime does.\\\"}, {\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"name\\\": \\\"mcpTarget___web_search_exa\\\", \\\"input\\\": {\\\"query\\\": \\\"agent runtime explanation what does it do software architecture\\\", \\\"numResults\\\": 8}}}]\"}}]}},\"attributes\":{\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"296c86eded1f7a5e\"}" + }, + { + "field": "sessionId", + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" + }, + { + "field": "traceId", + "value": "6aa82ccc63d06bd964d302913ef6da1a" + }, + { + "field": "spanId", + "value": "296c86eded1f7a5e" + }, + { + "field": "@ptr", + "value": "Cs4BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASOBoYAgap5vtFAAAABDqJQYwABqqCzSAAAANSIAEo3568h4o0MNa0vYeKNDhSQK39E0jUxQdQiZsHIAIQHRgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406422866184321,\"observedTimeUnixNano\":1789406426752034914,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"tool\",\"content\":{\"role\":\"tool\",\"content\":\"{\\\"query\\\": \\\"agent runtime explanation what does it do software architecture\\\", \\\"numResults\\\": 8}\",\"id\":\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"text\\\": \\\"Title: Agent Runtime: Definition & How It Differs from ...\\\\nURL: https://www.knowlee.ai/\\\\nPublished: N/A\\\\nAuthor: Knowlee\\\\nHighlights:\\\\nKnowlee builds an AI workforce for B2B enterprises: autonomous agent teams that take on full workflows across sales, recruiting, marketing, operations, and finance. Custom systems deployed in 4–8 weeks, governed by an audit trail and human oversight from day one — not bolted on after the fact. Built for mid-market and enterprise teams that need AI in production, not another pilot.\\\\n...\\\\nKnowlee runs five production verticals on the same orchestration backbone — 4Sales (autonomous prospecting, multi-channel outreach, meeting booking), 4Talents (candidate sourcing, scoring, interview coordination), 4Marketers (24-capability marketing operating layer across SEO, content, strategy, monitoring, and reporting), 4Operations (workflow orchestration, voice-of-customer analysis, internal AI tooling), and 4Finance (active-offer quality control, renewal management, contract financial-risk scoring). Each vertical inherits the same kanban, knowledge graph, and governance schema.\\\\n...\\\\nEvery vertical is a surface on Knowlee OS, the orchestration layer that runs a fleet of agents as one coherent system. Multi-agent kanban, MCP fabric with documented routing cascades, jobs registry with audit metadata on every execution, and a Neo4j knowledge graph (the Brain) that compounds across verticals. The next agent never starts from zero — every prior agent's output is queryable.\\\\n...\\\\nMost enterprise AI projects take six months and stall. Knowlee compresses that to under two months: week 1 audits the broken process, weeks 2–3 build the custom system, week 4 goes live. You own the code, the models, and the infrastructure — no licensing fees, no vendor lock-in. Integrates with existing CRM, communication, and data stacks rather than forcing migration.\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-how-it-works.html\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nThe Amazon Bedrock AgentCore Runtime handles scaling, session management, security isolation, and infrastructure management, allowing you to focus on building intelligent agent experiences rather than operational complexity. By leveraging the features and capabilities described here, you can build, deploy, and manage sophisticated AI agents that deliver value to your users while helping to maintain enterprise-grade security and reliability.\\\\n...\\\\nAn AgentCore Runtime is the foundational component that hosts your AI agent or tool code. It represents a containerized application that processes user inputs, maintains context, and executes actions using AI capabilities. When you create an agent, you define its behavior, capabilities, and the tools it can access. For example, a customer support agent might answer product questions, process returns, and escalate complex issues to human representatives.\\\\n...\\\\nYou can build and deploy agents to AgentCore Runtime using the AgentCore CLI , the AgentCore Python SDK or directly through AWS SDKs . With the AgentCore Python SDK, you can define your agent using popular frameworks like LangGraph, CrewAI, or Strands Agents. The SDK handles infrastructure complexities, allowing you to focus on the agent’s logic and capabilities.\\\\n...\\\\nEach AgentCore Runtime maintains immutable versions that capture a complete snapshot of the configuration at a specific point in time:\\\\n...\\\\nEndpoints provide addressable access points to specific versions of your AgentCore Runtime. Each endpoint:\\\\n...\\\\nHas a unique ARN for invocation\\\\n...\\\\nReferences a specific version of your Agent Runtime\\\\n...\\\\n- Provides stable access to your agent even as\\\\n...\\\\n- The \\\\\\\"DEFAULT\\\\\\\" endpoint is automatically created when you call CreateAgentRuntime and points to the latest version\\\\n- When you update your AgentCore Runtime, a new version is created but the `DEFAULT` endpoint automatically updates to reference it\\\\n- You can create custom endpoints with the CreateAgentRuntimeEndpoint operation for different environments (dev, test, prod)\\\\n- When a user makes a request to an endpoint, the request is resolved to the specific agent version referenced by that endpoint\\\\n...\\\\nSessions represent individual interaction contexts between users and your AgentCore Runtime. Each session:\\\\n...\\\\n- Is identified by a unique `runtimeSessionId` provided by your application, or by the Runtime itself in the first invocation if the `runtimeSessionId` is left empty\\\\n- Runs in a dedicated microVM with completely isolated CPU, memory, and filesystem resources\\\\n- Preserves context across multiple interactions within the same conversation\\\\n- Can persist for up to 8 hours of total runtime\\\\n...\\\\n- After session termination, the entire microVM is terminated and memory is sanitized\\\\n- A subsequent request with the same `runtimeSessionId` after termination will create a new execution environment\\\\n- Session isolation prevents cross-session data contamination and ensures security\\\\n- Session state is ephemeral and should not be used for long-term durability (use AgentCore Memory for context durability)\\\\n...\\\\nThis complete isolation between sessions is\\\\n...\\\\nfor enterprise security,\\\\n...\\\\nInbound authentication controls who can access your agents through AWS Identity and Access Management or OAuth 2.0, validating bearer tokens from identity providers before allowing requests to proceed. Outbound authentication enables your agents to securely access third-party services using OAuth or API keys, with AgentCore Identity managing credentials in either user-delegated or autonomous modes. For more information, see Authenticate and authorize with Inbound Auth and Outbound Auth.\\\\n...\\\\nInbound Auth, powered by AgentCore Identity, controls who can access and invoke your agents or tools in AgentCore Runtime.\\\\n...\\\\nOutbound Auth, powered by Amazon Bedrock\\\\n...\\\\nIdentity, lets your\\\\n...\\\\non AgentCore Runtime securely\\\\n...\\\\nthird-party\\\\n...\\\\nAgentCore Runtime supports long-running workloads through:\\\\n...\\\\nAgents can stream partial results as they become available rather than waiting for complete processing. This lets\\\\n...\\\\nprovide a more\\\\n...\\\\nuser experience, especially for operations that generate large amounts of content or take\\\\n...\\\\ntime to complete\\\\n...\\\\nFor more information, see Stream agent responses\\\\n...\\\\nThe AgentCore Runtime provides WebSocket support for real-time bidirectional streaming connections for interactive agent communication. This enables more responsive and interactive agent experiences. For more information, see Get started with bidirectional streaming using WebSocket.\\\\n...\\\\nAgentCore Runtime supports multiple communication protocols:\\\\n...\\\\n, see Deploy\\\\n...\\\\n’s how to get\\\\n...\\\\nCore Runtime. For the complete example, see Get started with the\\\\n...\\\\n- Define your agent logic using any AI framework or custom code\\\\n- Add the required HTTP endpoints using the AgentCore SDK or custom implementation\\\\n- Package dependencies in a requirements.txt file\\\\n...\\\\n- Build and push a container image to Amazon ECR directly or via the AgentCore SDK\\\\n- Create an AgentCore Runtime using the container image\\\\n- The initial version (V1) and DEFAULT endpoint are created automatically\\\\n...\\\\n- Generate a unique session ID for each user conversation\\\\n- Call the InvokeAgentRuntime or InvokeAgentRuntimeWithWebSocketStream operation with your agent’s ARN and session ID\\\\n- Pass user input in the request payload\\\\n...\\\\nsessions, and\\\\n...\\\\n- Use the same session ID for follow-up interactions to maintain context\\\\n- Review logs, traces, and observability metrics\\\\n- Deploy updates by modifying your AgentCore Runtime (creates new versions)\\\\n- Control rollout by updating endpoints to point to new versions\\\\n\\\\n---\\\\n\\\\nTitle: Agent Runtime  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation\\\\nURL: https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nAgent Runtime is a fully-managed, opinionated runtime that you can use to deploy, operate, and scale agentic applications. Agent Runtime abstracts away the underlying infrastructure, which lets you focus on agent logic instead of operations.\\\\n...\\\\nAgent Runtime lets you do the following:\\\\n...\\\\n- Deploy and scale agents with a managed runtime and end-to-end management capabilities.\\\\n- Customize the agent's container image with build-time installation scripts for system dependencies.\\\\n- Use security features including VPC-SC compliance and configuration of authentication and IAM.\\\\n- Access models and tools such as function calling.\\\\n- Deploy agents built using different languages and frameworks and the Agent2Agent open protocol.\\\\n...\\\\nThe workflow for building an agent on Agent Runtime is:\\\\n...\\\\n1. Set up the environment: Set up your Google project and install the latest version of the Agent Platform SDK for Python.\\\\n2. Develop an agent: Develop an agent that can be deployed on Agent Runtime.\\\\n3. Deploy the agent: Deploy the agent on the Agent Runtime managed runtime.\\\\n4. Use the agent: Query the agent by sending an API request.\\\\n5. Manage the deployed agent: Manage and delete agents that you have deployed to Agent Runtime.\\\\n...\\\\nAgent Runtime supports deploying agents written in any programming language and agent framework, as long as the agent application can be containerized and conforms to the runtime contract:\\\\n...\\\\nFor supported languages and frameworks, higher-level tools and SDKs are available to simplify deployment. The following table describes the level of support Agent Runtime provides for various agent frameworks:\\\\n...\\\\n| Support level | Agent frameworks |\\\\n| --- | --- |\\\\n...\\\\n| Custom template: You can adapt a custom template to support deployment to Agent Runtime from your framework. For deploying custom containers, see the Runtime contract. | CrewAI, custom frameworks |\\\\n...\\\\n| Agent Platform SDK integration: Agent Runtime provides managed templates per framework in the Agent Platform SDK and documentation. | LangChain, LangGraph, AG2, LlamaIndex |\\\\n...\\\\n| Full integration: Features are integrated to work across the framework, Agent Runtime, and broader Google Cloud ecosystem. | Agent Development Kit (ADK) Python: Deploy using the adk CLI. Go: Deploy using the adkgo CLI. |\\\\n...\\\\nThe Agents CLI is the unified command-line interface and skill set for the Gemini Enterprise Agent Platform. It provides coding agents and developers with a predictable path through the Agent Development Lifecycle: scaffold, evaluate, deploy, publish, and observe. The Agents CLI provides the following:\\\\n...\\\\n- Pre-built agent templates: ReAct, RAG, multi-agent, and other templates.\\\\n- Interactive playground: Test and interact with your agent.\\\\n- Automated infrastructure: Uses Terraform for streamlined resource management.\\\\n- CI/CD pipelines: Automated deployment workflows leveraging Cloud Build.\\\\n- Observability: Built-in support for Cloud Trace and Cloud Logging.\\\\n...\\\\nThe`agent_engines` module within the Agent Platform SDK is being refactored to a client-based design for the\\\\n...\\\\nalign with the Agent Development Kit(ADK) and Google Gen AI SDK in canonical type representations\\\\n...\\\\nThis ensures a consistent and standardized way of representing data types across different SDKs\\\\n...\\\\nwhich simplifies interoperability\\\\n...\\\\nreduces conversion overhead.\\\\n...\\\\n- For client-level scoping of Google Cloud parameters in multi-project multi-location applications. This allows an application to manage interactions with resources across different Google Cloud projects and geographical locations by configuring each client instance with its specific project and location settings.\\\\n- To improve discoverability and cohesiveness of Agent Runtime services.\\\\n\\\\n---\\\\n\\\\nTitle: What Is an AI Agent Runtime Environment?\\\\nURL: https://blaxel.ai/\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n---\\\\ndescription: Blaxel is the perpetual sandbox platform that keeps infinite secure sandboxes on automatic standby with co-hosted agents and context for near instant latency. Achieve 25ms resume times, eliminate cold starts, and only pay for what you use.\\\\ntitle: Blaxel: The Persistent Sandbox Platform\\\\nimage: https://blaxel.ai/illustrations/media-thumbnail.png\\\\n---\\\\n...\\\\nBlaxel lets you keep infinite, secure sandboxes on automatic standby, while co-hosting your agents and context for near instant latency.\\\\n...\\\\n## \\\\\\\\> Stop treating sandboxes as ephemeral runners. Truly intelligent AI agents should be able to have access to their own computers\\\\\\\\_\\\\n...\\\\nTraditional sandboxes expire in hours to days, destroying context and forcing you to build heavy orchestration just to manage state — or accept a slow, fresh start every run.\\\\n...\\\\nBlaxel Sandboxes work like your laptop but for agents: close the lid, it suspends; open it, it resumes instantly where you left it. Persist context and state forever — and reach near-instant execution by running your agent logic, context and inference on the same colocated backbone too.\\\\n...\\\\n## Give a computer to your agent\\\\n...\\\\nRun AI code in persistent environments that wait on standby indefinitely when not used, eliminating cold starts without complex orchestration. Instantly scale to 50,000+ concurrent machines.\\\\n...\\\\n### Auto-suspend sandboxes when they're not used. Persist forever.\\\\n...\\\\nOur flagship lifecycle handler automatically scales sandboxes to zero when idle, with a full memory + filesystem snapshot. Keep infinite sandboxes in standby forever. Resume instantly with identical process state.\\\\n...\\\\n### World-class 25ms boot\\\\n...\\\\nBlaxel Sandboxes resume from standby in \\\\\\\\~25ms with full memory state. Filesystem runs in memory, for unbeatable performance for almost all sandbox operations.\\\\n...\\\\nAgent Drive lets you share context across agents and sessions in real-time. And with Volumes, retain data for years with a fully redundant solution.\\\\n...\\\\n## Run agents right next to their computers\\\\n...\\\\nCo-host the agent loop, MCP servers, and batch tasks directly alongside your sandboxes and volumes to eliminate network hops and ensure the lowest possible end-to-end latency.\\\\n...\\\\n### Colocate your agents for ultra low latency\\\\n...\\\\nHost agents made with any framework on the same backbone as their sandboxes to achieve local-like network latency.\\\\n...\\\\n### Run batch jobs on our elastic backbone\\\\n...\\\\nSpawn thousands of jobs in individual sandboxes in seconds with Blaxel SDK. Instant scale on demand.\\\\n...\\\\n### Host MCP servers close to your agents\\\\n...\\\\nRun remote MCP servers alongside the agent loop and sandboxes, fully HTTP stream compatible.\\\\n...\\\\nBuilt with security-first architecture and certified compliance standards to meet the most stringent enterprise requirements: SOC 2, HIPAA, ISO 27001.\\\\n...\\\\n### Zero data retention\\\\n...\\\\nEach sandbox runs in an individual microVM with the root filesystem in memory, so all data is wiped forever when the sandbox is destroyed.\\\\n...\\\\nsandboxed compute environments\\\\\\\",\\\\\\\"\\\\n...\\\\n\\\\\\\",\\\\\\\"microVM\\\\\\\",\\\\\\\"persistent sandboxes\\\\\\\",\\\\\\\"standby sandboxes\\\\n...\\\\ntech startup infrastructure\\\\n\\\\n---\\\\n\\\\nTitle: docs/concepts.md\\\\nURL: https://github.com/tangle-network/agent-runtime/blob/cc4dc3f3/docs/concepts.md\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n> **In plain terms:** This is the one-page mental model of agent-runtime —\\\\n> read it first if you're meeting the package cold. agent-runtime is a small\\\\n> shared foundation that handles the plumbing every AI agent needs — running a\\\\n> task, streaming a chat reply, reconnecting a dropped connection, picking a\\\\n> model — so you only write the parts unique to your agent. The one takeaway:\\\\n> it owns a handful of reusable building blocks and leaves all the\\\\n> domain-specific work — your tools, prompts, and scoring rules — to you.\\\\n...\\\\nagent-runtime is a thin, shared foundation layer. It owns five things and\\\\ndelegates the rest. Read this file once and the rest of the API falls into\\\\nplace.\\\\n...\\\\n## The five layers\\\\n...\\\\n```\\\\n ┌──────────────────────────┐\\\\n │ Domain code (yours) │\\\\n │ tools, rubric, prompts │\\\\n └────────────┬─────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Agent manifest ─ defineAgent({ surfaces, run, … }) │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Task lifecycle ─ runAgentTask / runAgentTaskStream │\\\\n │ observe → validate → decide → act → eval │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Chat-turn lifecycle ─ handleChatTurn(...) │\\\\n │ NDJSON + session.run.* envelope + persist/trace hooks │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Execution continuity (substrate-owned) │\\\\n │ box.streamPrompt — auto-reconnect in-call; X-Execution-ID\\\\n │ header for cross-process. deriveExecutionId is the\\\\n │ convention helper. │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Backends + catalog │\\\\n │ createOpenAICompatibleBackend, createSandboxPromptBackend,\\\\n │ getModels / resolveChatModel / validateChatModelId │\\\\n └─────────────────────────────────────────────────────────┘\\\\n...\\\\nEach layer composes the one below it. You can use the bottom layers\\\\nalone (a raw backend + the model catalog), or the whole stack\\\\n(`defineAgent` → `handleChatTurn`) — they're the same primitives\\\\nnested.\\\\n...\\\\nEvery `runAgentTask` is a small state machine over an `AgentAdapter`:\\\\n...\\\\n- **observe** → snapshot domain state (read-only).\\\\n- **validate** → score the snapshot against the eval rubric.\\\\n- **decide** → `act` (perform a domain action) | `ask` (ask the user\\\\n something) | `stop` (this turn is done, here's the outcome).\\\\n- **act** → effect the action; loop.\\\\n...\\\\nThe adapter is *yours*. The lifecycle, the eval lift, the stop semantics,\\\\nthe cost ledger — all substrate. Streaming is the same shape:\\\\n`runAgentTaskStream` yields `RuntimeStreamEvent`s as the loop progresses.\\\\n...\\\\nLong-running execution durability — reconnect, replay, dedup — is the\\\\nsubstrate's job, not agent-runtime's. The `@tangle-network/sandbox`\\\\nSDK + orchestrator already handle it:\\\\n...\\\\n- **In-call reconnect**: `box.streamPrompt` extracts `executionId` from\\\\n the response's `execution.started` event and replays via the runtime\\\\n endpoint if the stream drops. Transparent — callers do nothing.\\\\n...\\\\n- **Cross-process reconnect**: a fresh Worker can resume a prior\\\\n Worker's execution by POSTing to the orchestrator's\\\\n `/agents/run/stream` with the `X-Execution-ID` header. The SDK's\\\\n public `PromptOptions` does not yet surface this; products bypass the\\\\n SDK and call the orchestrator directly when they need it (see\\\\n tax-agent's `sessions.ts`).\\\\n...\\\\ns buffer is\\\\n...\\\\nagent-runtime owns one helper, `deriveExecutionId({ projectId,\\\\nsessionId, turnIndex })`, that produces the stable id the product\\\\npersists on its session row.\\\\n...\\\\nWhat lives in the Worker: auth, access control, product DB writes,\\\\nprompt composition, routing. What lives in the substrate: the\\\\nlong-running execution, event buffering, replay-on-reconnect, dedup.\\\\nThe Worker stays a routing + persistence layer — it does not host\\\\nexecution state.\\\\n...\\\\n`defineAgent(...)` is how a vertical declares the **surfaces** (the full\\\\n`AgentProfile`: prompt, skills, tools, MCP, hooks, subagents, and extensions), the\\\\n**knowledge** requirements, the **rubric**, and the **run** function\\\\nthat ties it all together. The manifest is what the eval harness\\\\nbenchmarks, what the analyst loop improves, and (in time) what the\\\\ngenerated scaffold produces.\\\\n...\\\\nKeep `defineAgent` *declarative*. Domain logic — the actual tool calls,\\\\nthe actual rubric scoring — lives in functions the manifest references,\\\\nnot inline.\\\\n...\\\\nEvery product chat handler asks the same questions and gets the same\\\\nanswers wrong (or differently). Substrate primitive:\\\\n...\\\\n- **`resolveChatModel(candidates, fallback)`** — first-non-blank\\\\n precedence over caller-supplied candidates (`request → workspace →\\\\n env`, in whatever order *you* want). Policy-free.\\\\n...\\\\n- **`validateChatModelId(modelId, { allowlist?, routerBaseUrl? })`** —\\\\n rejects malformed ids and ids absent from both the caller's\\\\n `allowlist` and the live router catalog. **Fails closed**: when the\\\\n catalog can't be fetched, an unverifiable id is rejected.\\\\n...\\\\n- **`getModels` / `resolveRouterBaseUrl`** —\\\\n the catalog fetch + base-URL helpers.\\\\n...\\\\nThis module has **no React, no `process.env` assumption** — it runs\\\\nunchanged in Node and in Cloudflare Workers.\\\\n...\\\\n## Backends\\\\n...\\\\n`createOpenAICompatibleBackend({ baseUrl, model, apiKey })` and\\\\n`createSandboxPromptBackend({ ... })` are the two production backends.\\\\nBoth stream. `policy.fallbackModels: [...]` rotates through a named list\\\\non transient failure — that's the only fallback you should ever wire,\\\\nand it's explicit.\\\\n...\\\\nThe doctrine is in `AGENTS.md`: **no silent fallbacks**. Required fields\\\\nfail loud; named rotations are opt-in.\\\\n...\\\\n## What this package does NOT own\\\\n...\\\\nDomain policy. Models. Tools. Connectors. UI. Prompts. Rubrics. Those\\\\nlive in your vertical. The runtime is reusable across many kinds of\\\\nagents because nothing in this list is baked into it.\\\\n\\\\n---\\\\n\\\\nTitle: The anatomy of an agent runtime. A companion to Late-Bound Sagas: Why… | by Viren Baraiya | Agentspan | Apr, 2026 | Medium\\\\nURL: https://medium.com/agentspan/the-anatomy-of-an-agent-runtime-e6eb10bdfcdd\\\\nPublished: 2026-04-29T20:38:13.000Z\\\\nAuthor: Viren Baraiya\\\\nHighlights:\\\\nThis post dives deeper into the architecture of an agent runtime — one built around a clean separation between planning and execution, not just an LLM in a loop.\\\\n...\\\\nThe LLM is the brain. The tools are the hands. The runtime is the nervous system that keeps them from killing you. Most teams build the brain and the hands and then wonder why the thing falls over in production. This post is about the nervous system.\\\\n...\\\\n## The two planes: planner and executor\\\\n...\\\\nThe planner plane is the LLM. The executor plane is everything else. The boundary between them is the runtime.\\\\n...\\\\nThe planner has one job: given the trajectory so far, emit the next intent. It is a pure function —`f(history) -> intent`— in the mathematical sense. It does not touch the network. It does not open files. It does not read the clock. If it needs the current time, the current time is in`history`, because the runtime put it there on a previous step. The planner is stateless beyond its prompt.\\\\n...\\\\nThe executor has one job: make the intent real. It takes the intent off a queue, runs the corresponding code, and reports a result. The executor is where your code lives. It’s allowed to be dirty — open sockets, call Stripe, mutate disk. The executor’s relationship to the planner is mediated entirely by the ledger.\\\\n...\\\\nin Python make it idiomatic. The decorator compiles the function into a workflow definition; the runtime steps through it, calling the LLM to fill in the`plan(...)` blanks and dispatching workers to fulfill the`execute(...)` ones. In Agentspan's case the decorator becomes a Conductor workflow whose LLM-decided steps live as loop nodes that the planner extends at\\\\n...\\\\nIdentity. Every run has a stable ID; every step within it has a stable address that survives retries. That addressability is what turns a flat task list into a graph the runtime can navigate — extending it as the agent runs, resuming into it after a crash, unwinding it for compensation.\\\\n...\\\\nSDK-embedded workers — where your “tool” is a Python function that the agent library calls directly in-process — collapse the dispatcher into your code. They feel simpler at the hello-world stage. They become a cage the moment one of three things is true: you want to scale the tool independently of the planner (one high-throughput scraper, one high-memory reasoning node); you want to write the tool in a language other than the planner’s (your underwriting model has lived in Java for fifteen years, and nobody is rewriting it); you want to bound the blast radius of a tool crash (the tool segfaulted on a pathological PDF; your planner should not go down with it).\\\\n...\\\\nA workers-as-protocol-clients model — where a worker is any process that speaks the runtime’s task protocol and polls for work — addresses all three. The planner doesn’t know or care where`get_weather` lives. It proposes`get_weather(\\\\\\\"NYC\\\\\\\")`; the runtime writes the proposal and enqueues a task on a queue named`get_weather`; any worker subscribed to that queue picks it up, runs, and acks. Python, Go, Java, a serverless endpoint, an HTTP API — the runtime doesn't distinguish. Agentspan ships sugar variants (`http_tool`,`api_tool`,`mcp_tool`) that let the server itself act as the worker for pure-HTTP tools, so you don't need to run anything separate to call Stripe. The substrate is the same regardless: the planner proposes, the dispatcher queues, a worker — somewhere — handles the queue. Conductor has been shaping this protocol since 2016.\\\\n...\\\\nWhen you write an agent in one of the Agentspan SDKs — Python, TypeScript, Java, Go, .NET, Ruby, or Rust — you are not writing an agent. You are writing a specification: which model to use, which tools it has, which strategies apply (handoff, sequential, parallel, swarm), which guardrails fire on which events, which memory and context-management policies apply, which credentials bind where, which evals run when. Callables get replaced with`_worker_ref` markers at serialization. The spec lands on the server as a structured JSON DTO. Two stages run before the agent ever executes.\\\\n...\\\\nThe workflow that comes out is deterministic in Conductor’s sense. Conductor does not know or care that an LLM_CHAT_COMPLETE task calls an LLM, that a SUB_WORKFLOW is another agent, or that a HUMAN task is waiting on a recruiter’s click. It sees a graph of tasks, schedules them, records their results, retries per policy, applies rate limits, emits metrics, persists state. Durable workflow execution, distributed priority task queues, crash recovery, replay from a checkpoint, pause and resume — everything Conductor has done for a decade orchestrating Netflix’s pipelines now runs under the agent.\\\\n...\\\\nThe runtime begins with a single root node: the task. It asks the planner for the next intent, passing the root’s input as the history. The planner returns an intent — call it`plan_0`. The runtime writes`plan_0` as a plan step. Its output contains a list of N proposed effects — possibly one, possibly many if the model emitted parallel tool calls. The runtime materializes those N effects as scheduled steps, all wired together as children of the plan, in one transactional commit. That commit is the monotonic durable graph doing its job: either all the children are scheduled or none of them are.\\\\n...\\\\nNow the runtime dispatches the N effects. Each effect travels to a worker queue; each worker pulls, executes, and acks with a result. Each result is a ledger write that flips the step’s status to a terminal state. The runtime watches for the fan-in: once all N children have completed, it asks the planner for the next intent, handing it the updated history — which now includes`plan_0` and all its children. The planner emits`plan_1`. The graph extends.\\\\n...\\\\nRecovery is straightforward. The runtime starts a saga supervisor from the ledger: it reads the saga’s graph, finds the frontier (the set of steps not yet in a terminal state, and the most recent plan without a successor), and resumes. If a step was scheduled but never picked up by a worker, it re-enqueues it. If a step was in flight — dispatched, no result yet — the worker either reports back (it survived) or the step times out and the runtime decides whether to redispatch (it didn’t). If a plan is waiting on its children, the runtime waits. If all children are done, it calls the planner. Recovery doesn’t need a special code path; it’s the same code path as forward progress, started from a different place in the graph.\\\\n...\\\\nA signal is a message addressed to`saga_id`, written to the ledger as a`signal` kind step, and delivered to the planner on its next call as part of the history. That's the whole mechanism. The things that fall out of it:\\\\n...\\\\nThe design move is to refuse to pick one. The ledger stays the source of truth; the planner sees a projection of it; and the projection is a first-class, pluggable function the operator chooses per agent:\\\\n...\\\\nA runtime for agents — the nervous system between the brain and the hands — does six things. Everything else is sugar or consequence.\\\\n...\\\\nIt owns the program counter, so your code dying does not kill the saga. It witnesses every intent before it becomes an effect, so “did this happen?” is always answerable. It gates every effect until the ledger can account for it, so you never charge the customer twice. It delivers every external signal as a first-class ledger event, so the outside world can interrupt a running agent without racing it. It projects the growing history into the bounded context of a non-deterministic planner, so the model sees exactly what the runtime decides it should see. It refuses to execute any code the user wrote except as a dispatched task in a worker it does not share a process with, so one bad tool cannot take down the brain.\\\\n...\\\\nAn agent is not an LLM in a loop. It’s a saga the model writes as it runs, and the thing that makes it real is the runtime underneath.\\\\n\\\\n---\\\\n\\\\nTitle: The rise of the agent runtime: The compute platform behind ...\\\\nURL: https://thenewstack.io/\\\\nPublished: N/A\\\\nAuthor: Sep 11th 2026 1:40pm, by \\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tBill Doerrfeld\\\\nHighlights:\\\\nfor agents \\\\n\\\\n Aug\\\\n...\\\\nst 2026 10:00am, by\\\\n...\\\\n, Virat Patel and Albert Chang\\\\n...\\\\nModus's operandi: To give AI agents just the right amount of context \\\\n\\\\n Jul 29th 2026 9:00am, by Paul Sawers\\\\n...\\\\nwas supposed to solve the agent tooling problem. It missed a step. \\\\n\\\\n Aug 31st 2026 4:04pm, by Amanda Caswell\\\\n...\\\\n26 1\\\\n...\\\\nam, by\\\\n...\\\\nShopify's CEO threatened to ban Claude Code. Anthropic had already closed the feature request. DeepSeek open sources an agent harness where everything is a plugin Anthropic's watermark survives copy-paste, but not the real dev workflow OpenAI's Astra can do a researcher's week of work. That's the problem. Alibaba's new model promises Opus 4.6-level performance on your laptop\\\\n...\\\\nIntroduction to API Management MCP vs. API Gateways: They’re Not Interchangeable When Is MCP Actually Worth It? Why Your Legacy APIs Are a Roadblock for AI Agents Designing APIs for agents \\\\n\\\\n Introduction\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://koreai.mintlify.app/agent-platform/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n# Agent Runtime\\\\n...\\\\nThe Runtime is the execution engine of Agent Platform. It receives messages from users and systems, executes agent logic, invokes tools, manages conversation state, and returns responses. Every agent interaction — regardless of channel or deployment environment — passes through the Runtime.\\\\n...\\\\nWhen a user sends a message, the Runtime processes it through a structured pipeline before returning a response.\\\\n...\\\\n```mermaid actions={false} theme={null}\\\\nsequenceDiagram\\\\n participant User\\\\n participant Channel\\\\n participant Runtime\\\\n participant\\\\n...\\\\nLoop\\\\n participant\\\\n...\\\\nparticipant LLM\\\\n\\\\n User->>Channel: Send message\\\\n Channel->>Runtime: Inbound message (HTTP or WebSocket)\\\\n Runtime->>Runtime: Authenticate & resolve session\\\\n Runtime->>ReasoningLoop: Execute message\\\\n loop Until final response or max\\\\n...\\\\n10 iterations\\\\n ReasoningLoop->>LLM: Build prompt + call LLM\\\\n LLM-->>ReasoningLoop: Response (text or tool calls)\\\\n alt Tool call requested\\\\n ReasoningLoop->>Tool: Execute tool\\\\n Tool-->>ReasoningLoop: Tool result\\\\n end\\\\n end\\\\n ReasoningLoop->>Runtime: Final response text\\\\n Runtime->>Runtime: Persist session & emit traces\\\\n Runtime->>Channel: Stream or return response\\\\n Channel-->>User: Response\\\\n...\\\\nThe cycle repeats until the agent produces a final text response or reaches the iteration limit. The default is **10 tool call iterations per turn**, configurable in the agent's execution settings.\\\\n...\\\\n## Tool execution\\\\n...\\\\nTools extend agent capabilities. When the LLM requests a tool call, the Runtime dispatches it to the appropriate executor and returns the result to the reasoning loop.\\\\n...\\\\n| Tool type | What it does |\\\\n| -------------- | ------------------------------------------------------------------------------------------------------- |\\\\n| HTTP | Calls an external REST or GraphQL API with optional auth injection |\\\\n| MCP | Connects to a Model Context Protocol server; tools are discovered from the server's capability manifest |\\\\n| Code | Executes JavaScript or Python in an isolated sandbox |\\\\n| Connector | Uses a named integration (Salesforce, Jira, and others) with credential injection |\\\\n| Workflow | Invokes a registered workflow; supports both synchronous and long-running async execution |\\\\n| Knowledge Base | Queries a SearchAI knowledge base and returns ranked results |\\\\n| Async Webhook | Sends a request to an external system and suspends the session until a callback is received |\\\\n...\\\\n### Execution pipeline\\\\n...\\\\nWhen a tool executes, the Runtime processes it in sequence:\\\\n...\\\\n1. **Resolves the tool binding** from the deployment configuration.\\\\n2. **Validates inputs** against declared parameter types before the call.\\\\n3. **Makes the external call** with the appropriate authentication.\\\\n4. **Processes the result** — available in conversation context for reasoning agents, or as session variables for agents with steps.\\\\n5. **Handles errors** using `ON_ERROR` handlers: retry logic, fallback responses, or escalation triggers.\\\\n...\\\\n## Session management\\\\n...\\\\nEach conversation is represented as a session. A session stores the conversation history, variables, agent state, and execution metadata.\\\\n...\\\\nThe Runtime maintains a sliding window over the conversation history to control how much context is sent to the LLM on each turn. The default window is **40 messages**.\\\\n...\\\\nWhen the window fills, the Runtime can compact older turns into a summary rather than discarding them. This preserves context from earlier in long conversations without increasing token usage. Compaction is disabled by default and can be enabled in **Runtime Config** in Studio.\\\\n...\\\\nThe Runtime uses a configurable strategy to handle multiple messages arriving within the same session:\\\\n...\\\\n## Multi-agent orchestration\\\\n...\\\\nThe Runtime executes multi-agent topologies defined in ABL. When routing rules match, the Runtime transitions the active thread to the target agent, forwards context, and manages the return path.\\\\n...\\\\n| Pattern | What happens at runtime |\\\\n| ---------- | ------------------------------------------------------------------------------------------ |\\\\n| Supervisor | Receives every message; evaluates HANDOFF rules top-to-bottom; routes to first match |\\\\n| Handoff | Transfers conversation to the target agent; optionally returns control when `RETURN: true` |\\\\n| Delegate | Sends a task to a sub-agent; blocks the parent until the sub-agent completes or times out |\\\\n| Fan-out | Dispatches multiple agents in parallel; merges results when all complete |\\\\n| Escalation | Transfers the conversation to a human agent via a connected agent desktop |\\\\n...\\\\n### Thread hierarchy\\\\n...\\\\nWhen a supervisor hands off to a specialist, the Runtime creates a **thread** within the existing session — not a new session. Threads form a stack: handoffs push new threads, completions pop back to the parent. The user experiences one continuous conversation regardless of how many agents participate.\\\\n...\\\\nEach thread maintains its own conversation history and gathered variables, but can read data from parent threads.\\\\n...\\\\nEvery execution path emits structured trace events. Traces are accessible from the Sessions page in Studio.\\\\n...\\\\nenforces per-tenant\\\\n...\\\\nlimits on a rolling 1-\\\"}]\",\"id\":\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\"}}]}},\"attributes\":{\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"e0111ff026a54b70\"}" + }, + { + "field": "sessionId", + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" + }, + { + "field": "traceId", + "value": "6aa82ccc63d06bd964d302913ef6da1a" + }, + { + "field": "spanId", + "value": "e0111ff026a54b70" + }, + { + "field": "@ptr", + "value": "Cs4BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASOBoYAgap5vtFAAAABDqJQYwABqqCzSAAAANSIAEo3568h4o0MNa0vYeKNDhSQK39E0jUxQdQiZsHIAIQLRgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406422866650350,\"observedTimeUnixNano\":1789406426752165058,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Summarize what an agent runtime does.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"[{\\\"text\\\": \\\"I'll search for information about what an agent runtime does.\\\"}, {\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"name\\\": \\\"mcpTarget___web_search_exa\\\", \\\"input\\\": {\\\"query\\\": \\\"agent runtime explanation what does it do software architecture\\\", \\\"numResults\\\": 8}}}]\",\"tool.result\":\"[{\\\"toolResult\\\": {\\\"status\\\": \\\"success\\\", \\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"content\\\": [{\\\"text\\\": \\\"Title: Agent Runtime: Definition & How It Differs from ...\\\\nURL: https://www.knowlee.ai/\\\\nPublished: N/A\\\\nAuthor: Knowlee\\\\nHighlights:\\\\nKnowlee builds an AI workforce for B2B enterprises: autonomous agent teams that take on full workflows across sales, recruiting, marketing, operations, and finance. Custom systems deployed in 4–8 weeks, governed by an audit trail and human oversight from day one — not bolted on after the fact. Built for mid-market and enterprise teams that need AI in production, not another pilot.\\\\n...\\\\nKnowlee runs five production verticals on the same orchestration backbone — 4Sales (autonomous prospecting, multi-channel outreach, meeting booking), 4Talents (candidate sourcing, scoring, interview coordination), 4Marketers (24-capability marketing operating layer across SEO, content, strategy, monitoring, and reporting), 4Operations (workflow orchestration, voice-of-customer analysis, internal AI tooling), and 4Finance (active-offer quality control, renewal management, contract financial-risk scoring). Each vertical inherits the same kanban, knowledge graph, and governance schema.\\\\n...\\\\nEvery vertical is a surface on Knowlee OS, the orchestration layer that runs a fleet of agents as one coherent system. Multi-agent kanban, MCP fabric with documented routing cascades, jobs registry with audit metadata on every execution, and a Neo4j knowledge graph (the Brain) that compounds across verticals. The next agent never starts from zero — every prior agent's output is queryable.\\\\n...\\\\nMost enterprise AI projects take six months and stall. Knowlee compresses that to under two months: week 1 audits the broken process, weeks 2–3 build the custom system, week 4 goes live. You own the code, the models, and the infrastructure — no licensing fees, no vendor lock-in. Integrates with existing CRM, communication, and data stacks rather than forcing migration.\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-how-it-works.html\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nThe Amazon Bedrock AgentCore Runtime handles scaling, session management, security isolation, and infrastructure management, allowing you to focus on building intelligent agent experiences rather than operational complexity. By leveraging the features and capabilities described here, you can build, deploy, and manage sophisticated AI agents that deliver value to your users while helping to maintain enterprise-grade security and reliability.\\\\n...\\\\nAn AgentCore Runtime is the foundational component that hosts your AI agent or tool code. It represents a containerized application that processes user inputs, maintains context, and executes actions using AI capabilities. When you create an agent, you define its behavior, capabilities, and the tools it can access. For example, a customer support agent might answer product questions, process returns, and escalate complex issues to human representatives.\\\\n...\\\\nYou can build and deploy agents to AgentCore Runtime using the AgentCore CLI , the AgentCore Python SDK or directly through AWS SDKs . With the AgentCore Python SDK, you can define your agent using popular frameworks like LangGraph, CrewAI, or Strands Agents. The SDK handles infrastructure complexities, allowing you to focus on the agent’s logic and capabilities.\\\\n...\\\\nEach AgentCore Runtime maintains immutable versions that capture a complete snapshot of the configuration at a specific point in time:\\\\n...\\\\nEndpoints provide addressable access points to specific versions of your AgentCore Runtime. Each endpoint:\\\\n...\\\\nHas a unique ARN for invocation\\\\n...\\\\nReferences a specific version of your Agent Runtime\\\\n...\\\\n- Provides stable access to your agent even as\\\\n...\\\\n- The \\\\\\\"DEFAULT\\\\\\\" endpoint is automatically created when you call CreateAgentRuntime and points to the latest version\\\\n- When you update your AgentCore Runtime, a new version is created but the `DEFAULT` endpoint automatically updates to reference it\\\\n- You can create custom endpoints with the CreateAgentRuntimeEndpoint operation for different environments (dev, test, prod)\\\\n- When a user makes a request to an endpoint, the request is resolved to the specific agent version referenced by that endpoint\\\\n...\\\\nSessions represent individual interaction contexts between users and your AgentCore Runtime. Each session:\\\\n...\\\\n- Is identified by a unique `runtimeSessionId` provided by your application, or by the Runtime itself in the first invocation if the `runtimeSessionId` is left empty\\\\n- Runs in a dedicated microVM with completely isolated CPU, memory, and filesystem resources\\\\n- Preserves context across multiple interactions within the same conversation\\\\n- Can persist for up to 8 hours of total runtime\\\\n...\\\\n- After session termination, the entire microVM is terminated and memory is sanitized\\\\n- A subsequent request with the same `runtimeSessionId` after termination will create a new execution environment\\\\n- Session isolation prevents cross-session data contamination and ensures security\\\\n- Session state is ephemeral and should not be used for long-term durability (use AgentCore Memory for context durability)\\\\n...\\\\nThis complete isolation between sessions is\\\\n...\\\\nfor enterprise security,\\\\n...\\\\nInbound authentication controls who can access your agents through AWS Identity and Access Management or OAuth 2.0, validating bearer tokens from identity providers before allowing requests to proceed. Outbound authentication enables your agents to securely access third-party services using OAuth or API keys, with AgentCore Identity managing credentials in either user-delegated or autonomous modes. For more information, see Authenticate and authorize with Inbound Auth and Outbound Auth.\\\\n...\\\\nInbound Auth, powered by AgentCore Identity, controls who can access and invoke your agents or tools in AgentCore Runtime.\\\\n...\\\\nOutbound Auth, powered by Amazon Bedrock\\\\n...\\\\nIdentity, lets your\\\\n...\\\\non AgentCore Runtime securely\\\\n...\\\\nthird-party\\\\n...\\\\nAgentCore Runtime supports long-running workloads through:\\\\n...\\\\nAgents can stream partial results as they become available rather than waiting for complete processing. This lets\\\\n...\\\\nprovide a more\\\\n...\\\\nuser experience, especially for operations that generate large amounts of content or take\\\\n...\\\\ntime to complete\\\\n...\\\\nFor more information, see Stream agent responses\\\\n...\\\\nThe AgentCore Runtime provides WebSocket support for real-time bidirectional streaming connections for interactive agent communication. This enables more responsive and interactive agent experiences. For more information, see Get started with bidirectional streaming using WebSocket.\\\\n...\\\\nAgentCore Runtime supports multiple communication protocols:\\\\n...\\\\n, see Deploy\\\\n...\\\\n’s how to get\\\\n...\\\\nCore Runtime. For the complete example, see Get started with the\\\\n...\\\\n- Define your agent logic using any AI framework or custom code\\\\n- Add the required HTTP endpoints using the AgentCore SDK or custom implementation\\\\n- Package dependencies in a requirements.txt file\\\\n...\\\\n- Build and push a container image to Amazon ECR directly or via the AgentCore SDK\\\\n- Create an AgentCore Runtime using the container image\\\\n- The initial version (V1) and DEFAULT endpoint are created automatically\\\\n...\\\\n- Generate a unique session ID for each user conversation\\\\n- Call the InvokeAgentRuntime or InvokeAgentRuntimeWithWebSocketStream operation with your agent’s ARN and session ID\\\\n- Pass user input in the request payload\\\\n...\\\\nsessions, and\\\\n...\\\\n- Use the same session ID for follow-up interactions to maintain context\\\\n- Review logs, traces, and observability metrics\\\\n- Deploy updates by modifying your AgentCore Runtime (creates new versions)\\\\n- Control rollout by updating endpoints to point to new versions\\\\n\\\\n---\\\\n\\\\nTitle: Agent Runtime  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation\\\\nURL: https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nAgent Runtime is a fully-managed, opinionated runtime that you can use to deploy, operate, and scale agentic applications. Agent Runtime abstracts away the underlying infrastructure, which lets you focus on agent logic instead of operations.\\\\n...\\\\nAgent Runtime lets you do the following:\\\\n...\\\\n- Deploy and scale agents with a managed runtime and end-to-end management capabilities.\\\\n- Customize the agent's container image with build-time installation scripts for system dependencies.\\\\n- Use security features including VPC-SC compliance and configuration of authentication and IAM.\\\\n- Access models and tools such as function calling.\\\\n- Deploy agents built using different languages and frameworks and the Agent2Agent open protocol.\\\\n...\\\\nThe workflow for building an agent on Agent Runtime is:\\\\n...\\\\n1. Set up the environment: Set up your Google project and install the latest version of the Agent Platform SDK for Python.\\\\n2. Develop an agent: Develop an agent that can be deployed on Agent Runtime.\\\\n3. Deploy the agent: Deploy the agent on the Agent Runtime managed runtime.\\\\n4. Use the agent: Query the agent by sending an API request.\\\\n5. Manage the deployed agent: Manage and delete agents that you have deployed to Agent Runtime.\\\\n...\\\\nAgent Runtime supports deploying agents written in any programming language and agent framework, as long as the agent application can be containerized and conforms to the runtime contract:\\\\n...\\\\nFor supported languages and frameworks, higher-level tools and SDKs are available to simplify deployment. The following table describes the level of support Agent Runtime provides for various agent frameworks:\\\\n...\\\\n| Support level | Agent frameworks |\\\\n| --- | --- |\\\\n...\\\\n| Custom template: You can adapt a custom template to support deployment to Agent Runtime from your framework. For deploying custom containers, see the Runtime contract. | CrewAI, custom frameworks |\\\\n...\\\\n| Agent Platform SDK integration: Agent Runtime provides managed templates per framework in the Agent Platform SDK and documentation. | LangChain, LangGraph, AG2, LlamaIndex |\\\\n...\\\\n| Full integration: Features are integrated to work across the framework, Agent Runtime, and broader Google Cloud ecosystem. | Agent Development Kit (ADK) Python: Deploy using the adk CLI. Go: Deploy using the adkgo CLI. |\\\\n...\\\\nThe Agents CLI is the unified command-line interface and skill set for the Gemini Enterprise Agent Platform. It provides coding agents and developers with a predictable path through the Agent Development Lifecycle: scaffold, evaluate, deploy, publish, and observe. The Agents CLI provides the following:\\\\n...\\\\n- Pre-built agent templates: ReAct, RAG, multi-agent, and other templates.\\\\n- Interactive playground: Test and interact with your agent.\\\\n- Automated infrastructure: Uses Terraform for streamlined resource management.\\\\n- CI/CD pipelines: Automated deployment workflows leveraging Cloud Build.\\\\n- Observability: Built-in support for Cloud Trace and Cloud Logging.\\\\n...\\\\nThe`agent_engines` module within the Agent Platform SDK is being refactored to a client-based design for the\\\\n...\\\\nalign with the Agent Development Kit(ADK) and Google Gen AI SDK in canonical type representations\\\\n...\\\\nThis ensures a consistent and standardized way of representing data types across different SDKs\\\\n...\\\\nwhich simplifies interoperability\\\\n...\\\\nreduces conversion overhead.\\\\n...\\\\n- For client-level scoping of Google Cloud parameters in multi-project multi-location applications. This allows an application to manage interactions with resources across different Google Cloud projects and geographical locations by configuring each client instance with its specific project and location settings.\\\\n- To improve discoverability and cohesiveness of Agent Runtime services.\\\\n\\\\n---\\\\n\\\\nTitle: What Is an AI Agent Runtime Environment?\\\\nURL: https://blaxel.ai/\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n---\\\\ndescription: Blaxel is the perpetual sandbox platform that keeps infinite secure sandboxes on automatic standby with co-hosted agents and context for near instant latency. Achieve 25ms resume times, eliminate cold starts, and only pay for what you use.\\\\ntitle: Blaxel: The Persistent Sandbox Platform\\\\nimage: https://blaxel.ai/illustrations/media-thumbnail.png\\\\n---\\\\n...\\\\nBlaxel lets you keep infinite, secure sandboxes on automatic standby, while co-hosting your agents and context for near instant latency.\\\\n...\\\\n## \\\\\\\\> Stop treating sandboxes as ephemeral runners. Truly intelligent AI agents should be able to have access to their own computers\\\\\\\\_\\\\n...\\\\nTraditional sandboxes expire in hours to days, destroying context and forcing you to build heavy orchestration just to manage state — or accept a slow, fresh start every run.\\\\n...\\\\nBlaxel Sandboxes work like your laptop but for agents: close the lid, it suspends; open it, it resumes instantly where you left it. Persist context and state forever — and reach near-instant execution by running your agent logic, context and inference on the same colocated backbone too.\\\\n...\\\\n## Give a computer to your agent\\\\n...\\\\nRun AI code in persistent environments that wait on standby indefinitely when not used, eliminating cold starts without complex orchestration. Instantly scale to 50,000+ concurrent machines.\\\\n...\\\\n### Auto-suspend sandboxes when they're not used. Persist forever.\\\\n...\\\\nOur flagship lifecycle handler automatically scales sandboxes to zero when idle, with a full memory + filesystem snapshot. Keep infinite sandboxes in standby forever. Resume instantly with identical process state.\\\\n...\\\\n### World-class 25ms boot\\\\n...\\\\nBlaxel Sandboxes resume from standby in \\\\\\\\~25ms with full memory state. Filesystem runs in memory, for unbeatable performance for almost all sandbox operations.\\\\n...\\\\nAgent Drive lets you share context across agents and sessions in real-time. And with Volumes, retain data for years with a fully redundant solution.\\\\n...\\\\n## Run agents right next to their computers\\\\n...\\\\nCo-host the agent loop, MCP servers, and batch tasks directly alongside your sandboxes and volumes to eliminate network hops and ensure the lowest possible end-to-end latency.\\\\n...\\\\n### Colocate your agents for ultra low latency\\\\n...\\\\nHost agents made with any framework on the same backbone as their sandboxes to achieve local-like network latency.\\\\n...\\\\n### Run batch jobs on our elastic backbone\\\\n...\\\\nSpawn thousands of jobs in individual sandboxes in seconds with Blaxel SDK. Instant scale on demand.\\\\n...\\\\n### Host MCP servers close to your agents\\\\n...\\\\nRun remote MCP servers alongside the agent loop and sandboxes, fully HTTP stream compatible.\\\\n...\\\\nBuilt with security-first architecture and certified compliance standards to meet the most stringent enterprise requirements: SOC 2, HIPAA, ISO 27001.\\\\n...\\\\n### Zero data retention\\\\n...\\\\nEach sandbox runs in an individual microVM with the root filesystem in memory, so all data is wiped forever when the sandbox is destroyed.\\\\n...\\\\nsandboxed compute environments\\\\\\\",\\\\\\\"\\\\n...\\\\n\\\\\\\",\\\\\\\"microVM\\\\\\\",\\\\\\\"persistent sandboxes\\\\\\\",\\\\\\\"standby sandboxes\\\\n...\\\\ntech startup infrastructure\\\\n\\\\n---\\\\n\\\\nTitle: docs/concepts.md\\\\nURL: https://github.com/tangle-network/agent-runtime/blob/cc4dc3f3/docs/concepts.md\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n> **In plain terms:** This is the one-page mental model of agent-runtime —\\\\n> read it first if you're meeting the package cold. agent-runtime is a small\\\\n> shared foundation that handles the plumbing every AI agent needs — running a\\\\n> task, streaming a chat reply, reconnecting a dropped connection, picking a\\\\n> model — so you only write the parts unique to your agent. The one takeaway:\\\\n> it owns a handful of reusable building blocks and leaves all the\\\\n> domain-specific work — your tools, prompts, and scoring rules — to you.\\\\n...\\\\nagent-runtime is a thin, shared foundation layer. It owns five things and\\\\ndelegates the rest. Read this file once and the rest of the API falls into\\\\nplace.\\\\n...\\\\n## The five layers\\\\n...\\\\n```\\\\n ┌──────────────────────────┐\\\\n │ Domain code (yours) │\\\\n │ tools, rubric, prompts │\\\\n └────────────┬─────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Agent manifest ─ defineAgent({ surfaces, run, … }) │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Task lifecycle ─ runAgentTask / runAgentTaskStream │\\\\n │ observe → validate → decide → act → eval │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Chat-turn lifecycle ─ handleChatTurn(...) │\\\\n │ NDJSON + session.run.* envelope + persist/trace hooks │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Execution continuity (substrate-owned) │\\\\n │ box.streamPrompt — auto-reconnect in-call; X-Execution-ID\\\\n │ header for cross-process. deriveExecutionId is the\\\\n │ convention helper. │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Backends + catalog │\\\\n │ createOpenAICompatibleBackend, createSandboxPromptBackend,\\\\n │ getModels / resolveChatModel / validateChatModelId │\\\\n └─────────────────────────────────────────────────────────┘\\\\n...\\\\nEach layer composes the one below it. You can use the bottom layers\\\\nalone (a raw backend + the model catalog), or the whole stack\\\\n(`defineAgent` → `handleChatTurn`) — they're the same primitives\\\\nnested.\\\\n...\\\\nEvery `runAgentTask` is a small state machine over an `AgentAdapter`:\\\\n...\\\\n- **observe** → snapshot domain state (read-only).\\\\n- **validate** → score the snapshot against the eval rubric.\\\\n- **decide** → `act` (perform a domain action) | `ask` (ask the user\\\\n something) | `stop` (this turn is done, here's the outcome).\\\\n- **act** → effect the action; loop.\\\\n...\\\\nThe adapter is *yours*. The lifecycle, the eval lift, the stop semantics,\\\\nthe cost ledger — all substrate. Streaming is the same shape:\\\\n`runAgentTaskStream` yields `RuntimeStreamEvent`s as the loop progresses.\\\\n...\\\\nLong-running execution durability — reconnect, replay, dedup — is the\\\\nsubstrate's job, not agent-runtime's. The `@tangle-network/sandbox`\\\\nSDK + orchestrator already handle it:\\\\n...\\\\n- **In-call reconnect**: `box.streamPrompt` extracts `executionId` from\\\\n the response's `execution.started` event and replays via the runtime\\\\n endpoint if the stream drops. Transparent — callers do nothing.\\\\n...\\\\n- **Cross-process reconnect**: a fresh Worker can resume a prior\\\\n Worker's execution by POSTing to the orchestrator's\\\\n `/agents/run/stream` with the `X-Execution-ID` header. The SDK's\\\\n public `PromptOptions` does not yet surface this; products bypass the\\\\n SDK and call the orchestrator directly when they need it (see\\\\n tax-agent's `sessions.ts`).\\\\n...\\\\ns buffer is\\\\n...\\\\nagent-runtime owns one helper, `deriveExecutionId({ projectId,\\\\nsessionId, turnIndex })`, that produces the stable id the product\\\\npersists on its session row.\\\\n...\\\\nWhat lives in the Worker: auth, access control, product DB writes,\\\\nprompt composition, routing. What lives in the substrate: the\\\\nlong-running execution, event buffering, replay-on-reconnect, dedup.\\\\nThe Worker stays a routing + persistence layer — it does not host\\\\nexecution state.\\\\n...\\\\n`defineAgent(...)` is how a vertical declares the **surfaces** (the full\\\\n`AgentProfile`: prompt, skills, tools, MCP, hooks, subagents, and extensions), the\\\\n**knowledge** requirements, the **rubric**, and the **run** function\\\\nthat ties it all together. The manifest is what the eval harness\\\\nbenchmarks, what the analyst loop improves, and (in time) what the\\\\ngenerated scaffold produces.\\\\n...\\\\nKeep `defineAgent` *declarative*. Domain logic — the actual tool calls,\\\\nthe actual rubric scoring — lives in functions the manifest references,\\\\nnot inline.\\\\n...\\\\nEvery product chat handler asks the same questions and gets the same\\\\nanswers wrong (or differently). Substrate primitive:\\\\n...\\\\n- **`resolveChatModel(candidates, fallback)`** — first-non-blank\\\\n precedence over caller-supplied candidates (`request → workspace →\\\\n env`, in whatever order *you* want). Policy-free.\\\\n...\\\\n- **`validateChatModelId(modelId, { allowlist?, routerBaseUrl? })`** —\\\\n rejects malformed ids and ids absent from both the caller's\\\\n `allowlist` and the live router catalog. **Fails closed**: when the\\\\n catalog can't be fetched, an unverifiable id is rejected.\\\\n...\\\\n- **`getModels` / `resolveRouterBaseUrl`** —\\\\n the catalog fetch + base-URL helpers.\\\\n...\\\\nThis module has **no React, no `process.env` assumption** — it runs\\\\nunchanged in Node and in Cloudflare Workers.\\\\n...\\\\n## Backends\\\\n...\\\\n`createOpenAICompatibleBackend({ baseUrl, model, apiKey })` and\\\\n`createSandboxPromptBackend({ ... })` are the two production backends.\\\\nBoth stream. `policy.fallbackModels: [...]` rotates through a named list\\\\non transient failure — that's the only fallback you should ever wire,\\\\nand it's explicit.\\\\n...\\\\nThe doctrine is in `AGENTS.md`: **no silent fallbacks**. Required fields\\\\nfail loud; named rotations are opt-in.\\\\n...\\\\n## What this package does NOT own\\\\n...\\\\nDomain policy. Models. Tools. Connectors. UI. Prompts. Rubrics. Those\\\\nlive in your vertical. The runtime is reusable across many kinds of\\\\nagents because nothing in this list is baked into it.\\\\n\\\\n---\\\\n\\\\nTitle: The anatomy of an agent runtime. A companion to Late-Bound Sagas: Why… | by Viren Baraiya | Agentspan | Apr, 2026 | Medium\\\\nURL: https://medium.com/agentspan/the-anatomy-of-an-agent-runtime-e6eb10bdfcdd\\\\nPublished: 2026-04-29T20:38:13.000Z\\\\nAuthor: Viren Baraiya\\\\nHighlights:\\\\nThis post dives deeper into the architecture of an agent runtime — one built around a clean separation between planning and execution, not just an LLM in a loop.\\\\n...\\\\nThe LLM is the brain. The tools are the hands. The runtime is the nervous system that keeps them from killing you. Most teams build the brain and the hands and then wonder why the thing falls over in production. This post is about the nervous system.\\\\n...\\\\n## The two planes: planner and executor\\\\n...\\\\nThe planner plane is the LLM. The executor plane is everything else. The boundary between them is the runtime.\\\\n...\\\\nThe planner has one job: given the trajectory so far, emit the next intent. It is a pure function —`f(history) -> intent`— in the mathematical sense. It does not touch the network. It does not open files. It does not read the clock. If it needs the current time, the current time is in`history`, because the runtime put it there on a previous step. The planner is stateless beyond its prompt.\\\\n...\\\\nThe executor has one job: make the intent real. It takes the intent off a queue, runs the corresponding code, and reports a result. The executor is where your code lives. It’s allowed to be dirty — open sockets, call Stripe, mutate disk. The executor’s relationship to the planner is mediated entirely by the ledger.\\\\n...\\\\nin Python make it idiomatic. The decorator compiles the function into a workflow definition; the runtime steps through it, calling the LLM to fill in the`plan(...)` blanks and dispatching workers to fulfill the`execute(...)` ones. In Agentspan's case the decorator becomes a Conductor workflow whose LLM-decided steps live as loop nodes that the planner extends at\\\\n...\\\\nIdentity. Every run has a stable ID; every step within it has a stable address that survives retries. That addressability is what turns a flat task list into a graph the runtime can navigate — extending it as the agent runs, resuming into it after a crash, unwinding it for compensation.\\\\n...\\\\nSDK-embedded workers — where your “tool” is a Python function that the agent library calls directly in-process — collapse the dispatcher into your code. They feel simpler at the hello-world stage. They become a cage the moment one of three things is true: you want to scale the tool independently of the planner (one high-throughput scraper, one high-memory reasoning node); you want to write the tool in a language other than the planner’s (your underwriting model has lived in Java for fifteen years, and nobody is rewriting it); you want to bound the blast radius of a tool crash (the tool segfaulted on a pathological PDF; your planner should not go down with it).\\\\n...\\\\nA workers-as-protocol-clients model — where a worker is any process that speaks the runtime’s task protocol and polls for work — addresses all three. The planner doesn’t know or care where`get_weather` lives. It proposes`get_weather(\\\\\\\"NYC\\\\\\\")`; the runtime writes the proposal and enqueues a task on a queue named`get_weather`; any worker subscribed to that queue picks it up, runs, and acks. Python, Go, Java, a serverless endpoint, an HTTP API — the runtime doesn't distinguish. Agentspan ships sugar variants (`http_tool`,`api_tool`,`mcp_tool`) that let the server itself act as the worker for pure-HTTP tools, so you don't need to run anything separate to call Stripe. The substrate is the same regardless: the planner proposes, the dispatcher queues, a worker — somewhere — handles the queue. Conductor has been shaping this protocol since 2016.\\\\n...\\\\nWhen you write an agent in one of the Agentspan SDKs — Python, TypeScript, Java, Go, .NET, Ruby, or Rust — you are not writing an agent. You are writing a specification: which model to use, which tools it has, which strategies apply (handoff, sequential, parallel, swarm), which guardrails fire on which events, which memory and context-management policies apply, which credentials bind where, which evals run when. Callables get replaced with`_worker_ref` markers at serialization. The spec lands on the server as a structured JSON DTO. Two stages run before the agent ever executes.\\\\n...\\\\nThe workflow that comes out is deterministic in Conductor’s sense. Conductor does not know or care that an LLM_CHAT_COMPLETE task calls an LLM, that a SUB_WORKFLOW is another agent, or that a HUMAN task is waiting on a recruiter’s click. It sees a graph of tasks, schedules them, records their results, retries per policy, applies rate limits, emits metrics, persists state. Durable workflow execution, distributed priority task queues, crash recovery, replay from a checkpoint, pause and resume — everything Conductor has done for a decade orchestrating Netflix’s pipelines now runs under the agent.\\\\n...\\\\nThe runtime begins with a single root node: the task. It asks the planner for the next intent, passing the root’s input as the history. The planner returns an intent — call it`plan_0`. The runtime writes`plan_0` as a plan step. Its output contains a list of N proposed effects — possibly one, possibly many if the model emitted parallel tool calls. The runtime materializes those N effects as scheduled steps, all wired together as children of the plan, in one transactional commit. That commit is the monotonic durable graph doing its job: either all the children are scheduled or none of them are.\\\\n...\\\\nNow the runtime dispatches the N effects. Each effect travels to a worker queue; each worker pulls, executes, and acks with a result. Each result is a ledger write that flips the step’s status to a terminal state. The runtime watches for the fan-in: once all N children have completed, it asks the planner for the next intent, handing it the updated history — which now includes`plan_0` and all its children. The planner emits`plan_1`. The graph extends.\\\\n...\\\\nRecovery is straightforward. The runtime starts a saga supervisor from the ledger: it reads the saga’s graph, finds the frontier (the set of steps not yet in a terminal state, and the most recent plan without a successor), and resumes. If a step was scheduled but never picked up by a worker, it re-enqueues it. If a step was in flight — dispatched, no result yet — the worker either reports back (it survived) or the step times out and the runtime decides whether to redispatch (it didn’t). If a plan is waiting on its children, the runtime waits. If all children are done, it calls the planner. Recovery doesn’t need a special code path; it’s the same code path as forward progress, started from a different place in the graph.\\\\n...\\\\nA signal is a message addressed to`saga_id`, written to the ledger as a`signal` kind step, and delivered to the planner on its next call as part of the history. That's the whole mechanism. The things that fall out of it:\\\\n...\\\\nThe design move is to refuse to pick one. The ledger stays the source of truth; the planner sees a projection of it; and the projection is a first-class, pluggable function the operator chooses per agent:\\\\n...\\\\nA runtime for agents — the nervous system between the brain and the hands — does six things. Everything else is sugar or consequence.\\\\n...\\\\nIt owns the program counter, so your code dying does not kill the saga. It witnesses every intent before it becomes an effect, so “did this happen?” is always answerable. It gates every effect until the ledger can account for it, so you never charge the customer twice. It delivers every external signal as a first-class ledger event, so the outside world can interrupt a running agent without racing it. It projects the growing history into the bounded context of a non-deterministic planner, so the model sees exactly what the runtime decides it should see. It refuses to execute any code the user wrote except as a dispatched task in a worker it does not share a process with, so one bad tool cannot take down the brain.\\\\n...\\\\nAn agent is not an LLM in a loop. It’s a saga the model writes as it runs, and the thing that makes it real is the runtime underneath.\\\\n\\\\n---\\\\n\\\\nTitle: The rise of the agent runtime: The compute platform behind ...\\\\nURL: https://thenewstack.io/\\\\nPublished: N/A\\\\nAuthor: Sep 11th 2026 1:40pm, by \\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tBill Doerrfeld\\\\nHighlights:\\\\nfor agents \\\\n\\\\n Aug\\\\n...\\\\nst 2026 10:00am, by\\\\n...\\\\n, Virat Patel and Albert Chang\\\\n...\\\\nModus's operandi: To give AI agents just the right amount of context \\\\n\\\\n Jul 29th 2026 9:00am, by Paul Sawers\\\\n...\\\\nwas supposed to solve the agent tooling problem. It missed a step. \\\\n\\\\n Aug 31st 2026 4:04pm, by Amanda Caswell\\\\n...\\\\n26 1\\\\n...\\\\nam, by\\\\n...\\\\nShopify's CEO threatened to ban Claude Code. Anthropic had already closed the feature request. DeepSeek open sources an agent harness where everything is a plugin Anthropic's watermark survives copy-paste, but not the real dev workflow OpenAI's Astra can do a researcher's week of work. That's the problem. Alibaba's new model promises Opus 4.6-level performance on your laptop\\\\n...\\\\nIntroduction to API Management MCP vs. API Gateways: They’re Not Interchangeable When Is MCP Actually Worth It? Why Your Legacy APIs Are a Roadblock for AI Agents Designing APIs for agents \\\\n\\\\n Introduction\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://koreai.mintlify.app/agent-platform/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n# Agent Runtime\\\\n...\\\\nThe Runtime is the execution engine of Agent Platform. It receives messages from users and systems, executes agent logic, invokes tools, manages conversation state, and returns responses. Every agent interaction — regardless of channel or deployment environment — passes through the Runtime.\\\\n...\\\\nWhen a user sends a message, the Runtime processes it through a structured pipeline before returning a response.\\\\n...\\\\n```mermaid actions={false} theme={null}\\\\nsequenceDiagram\\\\n participant User\\\\n participant Channel\\\\n participant Runtime\\\\n participant\\\\n...\\\\nLoop\\\\n participant\\\\n...\\\\nparticipant LLM\\\\n\\\\n User->>Channel: Send message\\\\n Channel->>Runtime: Inbound message (HTTP or WebSocket)\\\\n Runtime->>Runtime: Authenticate & resolve session\\\\n Runtime->>ReasoningLoop: Execute message\\\\n loop Until final response or max\\\\n...\\\\n10 iterations\\\\n ReasoningLoop->>LLM: Build prompt + call LLM\\\\n LLM-->>ReasoningLoop: Response (text or tool calls)\\\\n alt Tool call requested\\\\n ReasoningLoop->>Tool: Execute tool\\\\n Tool-->>ReasoningLoop: Tool result\\\\n end\\\\n end\\\\n ReasoningLoop->>Runtime: Final response text\\\\n Runtime->>Runtime: Persist session & emit traces\\\\n Runtime->>Channel: Stream or return response\\\\n Channel-->>User: Response\\\\n...\\\\nThe cycle repeats until the agent produces a final text response or reaches the iteration limit. The default is **10 tool call iterations per turn**, configurable in the agent's execution settings.\\\\n...\\\\n## Tool execution\\\\n...\\\\nTools extend agent capabilities. When the LLM requests a tool call, the Runtime dispatches it to the appropriate executor and returns the result to the reasoning loop.\\\\n...\\\\n| Tool type | What it does |\\\\n| -------------- | ------------------------------------------------------------------------------------------------------- |\\\\n| HTTP | Calls an external REST or GraphQL API with optional auth injection |\\\\n| MCP | Connects to a Model Context Protocol server; tools are discovered from the server's capability manifest |\\\\n| Code | Executes JavaScript or Python in an isolated sandbox |\\\\n| Connector | Uses a named integration (Salesforce, Jira, and others) with credential injection |\\\\n| Workflow | Invokes a registered workflow; supports both synchronous and long-running async execution |\\\\n| Knowledge Base | Queries a SearchAI knowledge base and returns ranked results |\\\\n| Async Webhook | Sends a request to an external system and suspends the session until a callback is received |\\\\n...\\\\n### Execution pipeline\\\\n...\\\\nWhen a tool executes, the Runtime processes it in sequence:\\\\n...\\\\n1. **Resolves the tool binding** from the deployment configuration.\\\\n2. **Validates inputs** against declared parameter types before the call.\\\\n3. **Makes the external call** with the appropriate authentication.\\\\n4. **Processes the result** — available in conversation context for reasoning agents, or as session variables for agents with steps.\\\\n5. **Handles errors** using `ON_ERROR` handlers: retry logic, fallback responses, or escalation triggers.\\\\n...\\\\n## Session management\\\\n...\\\\nEach conversation is represented as a session. A session stores the conversation history, variables, agent state, and execution metadata.\\\\n...\\\\nThe Runtime maintains a sliding window over the conversation history to control how much context is sent to the LLM on each turn. The default window is **40 messages**.\\\\n...\\\\nWhen the window fills, the Runtime can compact older turns into a summary rather than discarding them. This preserves context from earlier in long conversations without increasing token usage. Compaction is disabled by default and can be enabled in **Runtime Config** in Studio.\\\\n...\\\\nThe Runtime uses a configurable strategy to handle multiple messages arriving within the same session:\\\\n...\\\\n## Multi-agent orchestration\\\\n...\\\\nThe Runtime executes multi-agent topologies defined in ABL. When routing rules match, the Runtime transitions the active thread to the target agent, forwards context, and manages the return path.\\\\n...\\\\n| Pattern | What happens at runtime |\\\\n| ---------- | ------------------------------------------------------------------------------------------ |\\\\n| Supervisor | Receives every message; evaluates HANDOFF rules top-to-bottom; routes to first match |\\\\n| Handoff | Transfers conversation to the target agent; optionally returns control when `RETURN: true` |\\\\n| Delegate | Sends a task to a sub-agent; blocks the parent until the sub-agent completes or times out |\\\\n| Fan-out | Dispatches multiple agents in parallel; merges results when all complete |\\\\n| Escalation | Transfers the conversation to a human agent via a connected agent desktop |\\\\n...\\\\n### Thread hierarchy\\\\n...\\\\nWhen a supervisor hands off to a specialist, the Runtime creates a **thread** within the existing session — not a new session. Threads form a stack: handoffs push new threads, completions pop back to the parent. The user experiences one continuous conversation regardless of how many agents participate.\\\\n...\\\\nEach thread maintains its own conversation history and gathered variables, but can read data from parent threads.\\\\n...\\\\nEvery execution path emits structured trace events. Traces are accessible from the Sessions page in Studio.\\\\n...\\\\nenforces per-tenant\\\\n...\\\\nlimits on a rolling 1-\\\"}]}}]\"}},{\"role\":\"assistant\",\"content\":\"[{\\\"toolResult\\\": {\\\"status\\\": \\\"success\\\", \\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"content\\\": [{\\\"text\\\": \\\"Title: Agent Runtime: Definition & How It Differs from ...\\\\nURL: https://www.knowlee.ai/\\\\nPublished: N/A\\\\nAuthor: Knowlee\\\\nHighlights:\\\\nKnowlee builds an AI workforce for B2B enterprises: autonomous agent teams that take on full workflows across sales, recruiting, marketing, operations, and finance. Custom systems deployed in 4–8 weeks, governed by an audit trail and human oversight from day one — not bolted on after the fact. Built for mid-market and enterprise teams that need AI in production, not another pilot.\\\\n...\\\\nKnowlee runs five production verticals on the same orchestration backbone — 4Sales (autonomous prospecting, multi-channel outreach, meeting booking), 4Talents (candidate sourcing, scoring, interview coordination), 4Marketers (24-capability marketing operating layer across SEO, content, strategy, monitoring, and reporting), 4Operations (workflow orchestration, voice-of-customer analysis, internal AI tooling), and 4Finance (active-offer quality control, renewal management, contract financial-risk scoring). Each vertical inherits the same kanban, knowledge graph, and governance schema.\\\\n...\\\\nEvery vertical is a surface on Knowlee OS, the orchestration layer that runs a fleet of agents as one coherent system. Multi-agent kanban, MCP fabric with documented routing cascades, jobs registry with audit metadata on every execution, and a Neo4j knowledge graph (the Brain) that compounds across verticals. The next agent never starts from zero — every prior agent's output is queryable.\\\\n...\\\\nMost enterprise AI projects take six months and stall. Knowlee compresses that to under two months: week 1 audits the broken process, weeks 2–3 build the custom system, week 4 goes live. You own the code, the models, and the infrastructure — no licensing fees, no vendor lock-in. Integrates with existing CRM, communication, and data stacks rather than forcing migration.\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-how-it-works.html\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nThe Amazon Bedrock AgentCore Runtime handles scaling, session management, security isolation, and infrastructure management, allowing you to focus on building intelligent agent experiences rather than operational complexity. By leveraging the features and capabilities described here, you can build, deploy, and manage sophisticated AI agents that deliver value to your users while helping to maintain enterprise-grade security and reliability.\\\\n...\\\\nAn AgentCore Runtime is the foundational component that hosts your AI agent or tool code. It represents a containerized application that processes user inputs, maintains context, and executes actions using AI capabilities. When you create an agent, you define its behavior, capabilities, and the tools it can access. For example, a customer support agent might answer product questions, process returns, and escalate complex issues to human representatives.\\\\n...\\\\nYou can build and deploy agents to AgentCore Runtime using the AgentCore CLI , the AgentCore Python SDK or directly through AWS SDKs . With the AgentCore Python SDK, you can define your agent using popular frameworks like LangGraph, CrewAI, or Strands Agents. The SDK handles infrastructure complexities, allowing you to focus on the agent’s logic and capabilities.\\\\n...\\\\nEach AgentCore Runtime maintains immutable versions that capture a complete snapshot of the configuration at a specific point in time:\\\\n...\\\\nEndpoints provide addressable access points to specific versions of your AgentCore Runtime. Each endpoint:\\\\n...\\\\nHas a unique ARN for invocation\\\\n...\\\\nReferences a specific version of your Agent Runtime\\\\n...\\\\n- Provides stable access to your agent even as\\\\n...\\\\n- The \\\\\\\"DEFAULT\\\\\\\" endpoint is automatically created when you call CreateAgentRuntime and points to the latest version\\\\n- When you update your AgentCore Runtime, a new version is created but the `DEFAULT` endpoint automatically updates to reference it\\\\n- You can create custom endpoints with the CreateAgentRuntimeEndpoint operation for different environments (dev, test, prod)\\\\n- When a user makes a request to an endpoint, the request is resolved to the specific agent version referenced by that endpoint\\\\n...\\\\nSessions represent individual interaction contexts between users and your AgentCore Runtime. Each session:\\\\n...\\\\n- Is identified by a unique `runtimeSessionId` provided by your application, or by the Runtime itself in the first invocation if the `runtimeSessionId` is left empty\\\\n- Runs in a dedicated microVM with completely isolated CPU, memory, and filesystem resources\\\\n- Preserves context across multiple interactions within the same conversation\\\\n- Can persist for up to 8 hours of total runtime\\\\n...\\\\n- After session termination, the entire microVM is terminated and memory is sanitized\\\\n- A subsequent request with the same `runtimeSessionId` after termination will create a new execution environment\\\\n- Session isolation prevents cross-session data contamination and ensures security\\\\n- Session state is ephemeral and should not be used for long-term durability (use AgentCore Memory for context durability)\\\\n...\\\\nThis complete isolation between sessions is\\\\n...\\\\nfor enterprise security,\\\\n...\\\\nInbound authentication controls who can access your agents through AWS Identity and Access Management or OAuth 2.0, validating bearer tokens from identity providers before allowing requests to proceed. Outbound authentication enables your agents to securely access third-party services using OAuth or API keys, with AgentCore Identity managing credentials in either user-delegated or autonomous modes. For more information, see Authenticate and authorize with Inbound Auth and Outbound Auth.\\\\n...\\\\nInbound Auth, powered by AgentCore Identity, controls who can access and invoke your agents or tools in AgentCore Runtime.\\\\n...\\\\nOutbound Auth, powered by Amazon Bedrock\\\\n...\\\\nIdentity, lets your\\\\n...\\\\non AgentCore Runtime securely\\\\n...\\\\nthird-party\\\\n...\\\\nAgentCore Runtime supports long-running workloads through:\\\\n...\\\\nAgents can stream partial results as they become available rather than waiting for complete processing. This lets\\\\n...\\\\nprovide a more\\\\n...\\\\nuser experience, especially for operations that generate large amounts of content or take\\\\n...\\\\ntime to complete\\\\n...\\\\nFor more information, see Stream agent responses\\\\n...\\\\nThe AgentCore Runtime provides WebSocket support for real-time bidirectional streaming connections for interactive agent communication. This enables more responsive and interactive agent experiences. For more information, see Get started with bidirectional streaming using WebSocket.\\\\n...\\\\nAgentCore Runtime supports multiple communication protocols:\\\\n...\\\\n, see Deploy\\\\n...\\\\n’s how to get\\\\n...\\\\nCore Runtime. For the complete example, see Get started with the\\\\n...\\\\n- Define your agent logic using any AI framework or custom code\\\\n- Add the required HTTP endpoints using the AgentCore SDK or custom implementation\\\\n- Package dependencies in a requirements.txt file\\\\n...\\\\n- Build and push a container image to Amazon ECR directly or via the AgentCore SDK\\\\n- Create an AgentCore Runtime using the container image\\\\n- The initial version (V1) and DEFAULT endpoint are created automatically\\\\n...\\\\n- Generate a unique session ID for each user conversation\\\\n- Call the InvokeAgentRuntime or InvokeAgentRuntimeWithWebSocketStream operation with your agent’s ARN and session ID\\\\n- Pass user input in the request payload\\\\n...\\\\nsessions, and\\\\n...\\\\n- Use the same session ID for follow-up interactions to maintain context\\\\n- Review logs, traces, and observability metrics\\\\n- Deploy updates by modifying your AgentCore Runtime (creates new versions)\\\\n- Control rollout by updating endpoints to point to new versions\\\\n\\\\n---\\\\n\\\\nTitle: Agent Runtime  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation\\\\nURL: https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nAgent Runtime is a fully-managed, opinionated runtime that you can use to deploy, operate, and scale agentic applications. Agent Runtime abstracts away the underlying infrastructure, which lets you focus on agent logic instead of operations.\\\\n...\\\\nAgent Runtime lets you do the following:\\\\n...\\\\n- Deploy and scale agents with a managed runtime and end-to-end management capabilities.\\\\n- Customize the agent's container image with build-time installation scripts for system dependencies.\\\\n- Use security features including VPC-SC compliance and configuration of authentication and IAM.\\\\n- Access models and tools such as function calling.\\\\n- Deploy agents built using different languages and frameworks and the Agent2Agent open protocol.\\\\n...\\\\nThe workflow for building an agent on Agent Runtime is:\\\\n...\\\\n1. Set up the environment: Set up your Google project and install the latest version of the Agent Platform SDK for Python.\\\\n2. Develop an agent: Develop an agent that can be deployed on Agent Runtime.\\\\n3. Deploy the agent: Deploy the agent on the Agent Runtime managed runtime.\\\\n4. Use the agent: Query the agent by sending an API request.\\\\n5. Manage the deployed agent: Manage and delete agents that you have deployed to Agent Runtime.\\\\n...\\\\nAgent Runtime supports deploying agents written in any programming language and agent framework, as long as the agent application can be containerized and conforms to the runtime contract:\\\\n...\\\\nFor supported languages and frameworks, higher-level tools and SDKs are available to simplify deployment. The following table describes the level of support Agent Runtime provides for various agent frameworks:\\\\n...\\\\n| Support level | Agent frameworks |\\\\n| --- | --- |\\\\n...\\\\n| Custom template: You can adapt a custom template to support deployment to Agent Runtime from your framework. For deploying custom containers, see the Runtime contract. | CrewAI, custom frameworks |\\\\n...\\\\n| Agent Platform SDK integration: Agent Runtime provides managed templates per framework in the Agent Platform SDK and documentation. | LangChain, LangGraph, AG2, LlamaIndex |\\\\n...\\\\n| Full integration: Features are integrated to work across the framework, Agent Runtime, and broader Google Cloud ecosystem. | Agent Development Kit (ADK) Python: Deploy using the adk CLI. Go: Deploy using the adkgo CLI. |\\\\n...\\\\nThe Agents CLI is the unified command-line interface and skill set for the Gemini Enterprise Agent Platform. It provides coding agents and developers with a predictable path through the Agent Development Lifecycle: scaffold, evaluate, deploy, publish, and observe. The Agents CLI provides the following:\\\\n...\\\\n- Pre-built agent templates: ReAct, RAG, multi-agent, and other templates.\\\\n- Interactive playground: Test and interact with your agent.\\\\n- Automated infrastructure: Uses Terraform for streamlined resource management.\\\\n- CI/CD pipelines: Automated deployment workflows leveraging Cloud Build.\\\\n- Observability: Built-in support for Cloud Trace and Cloud Logging.\\\\n...\\\\nThe`agent_engines` module within the Agent Platform SDK is being refactored to a client-based design for the\\\\n...\\\\nalign with the Agent Development Kit(ADK) and Google Gen AI SDK in canonical type representations\\\\n...\\\\nThis ensures a consistent and standardized way of representing data types across different SDKs\\\\n...\\\\nwhich simplifies interoperability\\\\n...\\\\nreduces conversion overhead.\\\\n...\\\\n- For client-level scoping of Google Cloud parameters in multi-project multi-location applications. This allows an application to manage interactions with resources across different Google Cloud projects and geographical locations by configuring each client instance with its specific project and location settings.\\\\n- To improve discoverability and cohesiveness of Agent Runtime services.\\\\n\\\\n---\\\\n\\\\nTitle: What Is an AI Agent Runtime Environment?\\\\nURL: https://blaxel.ai/\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n---\\\\ndescription: Blaxel is the perpetual sandbox platform that keeps infinite secure sandboxes on automatic standby with co-hosted agents and context for near instant latency. Achieve 25ms resume times, eliminate cold starts, and only pay for what you use.\\\\ntitle: Blaxel: The Persistent Sandbox Platform\\\\nimage: https://blaxel.ai/illustrations/media-thumbnail.png\\\\n---\\\\n...\\\\nBlaxel lets you keep infinite, secure sandboxes on automatic standby, while co-hosting your agents and context for near instant latency.\\\\n...\\\\n## \\\\\\\\> Stop treating sandboxes as ephemeral runners. Truly intelligent AI agents should be able to have access to their own computers\\\\\\\\_\\\\n...\\\\nTraditional sandboxes expire in hours to days, destroying context and forcing you to build heavy orchestration just to manage state — or accept a slow, fresh start every run.\\\\n...\\\\nBlaxel Sandboxes work like your laptop but for agents: close the lid, it suspends; open it, it resumes instantly where you left it. Persist context and state forever — and reach near-instant execution by running your agent logic, context and inference on the same colocated backbone too.\\\\n...\\\\n## Give a computer to your agent\\\\n...\\\\nRun AI code in persistent environments that wait on standby indefinitely when not used, eliminating cold starts without complex orchestration. Instantly scale to 50,000+ concurrent machines.\\\\n...\\\\n### Auto-suspend sandboxes when they're not used. Persist forever.\\\\n...\\\\nOur flagship lifecycle handler automatically scales sandboxes to zero when idle, with a full memory + filesystem snapshot. Keep infinite sandboxes in standby forever. Resume instantly with identical process state.\\\\n...\\\\n### World-class 25ms boot\\\\n...\\\\nBlaxel Sandboxes resume from standby in \\\\\\\\~25ms with full memory state. Filesystem runs in memory, for unbeatable performance for almost all sandbox operations.\\\\n...\\\\nAgent Drive lets you share context across agents and sessions in real-time. And with Volumes, retain data for years with a fully redundant solution.\\\\n...\\\\n## Run agents right next to their computers\\\\n...\\\\nCo-host the agent loop, MCP servers, and batch tasks directly alongside your sandboxes and volumes to eliminate network hops and ensure the lowest possible end-to-end latency.\\\\n...\\\\n### Colocate your agents for ultra low latency\\\\n...\\\\nHost agents made with any framework on the same backbone as their sandboxes to achieve local-like network latency.\\\\n...\\\\n### Run batch jobs on our elastic backbone\\\\n...\\\\nSpawn thousands of jobs in individual sandboxes in seconds with Blaxel SDK. Instant scale on demand.\\\\n...\\\\n### Host MCP servers close to your agents\\\\n...\\\\nRun remote MCP servers alongside the agent loop and sandboxes, fully HTTP stream compatible.\\\\n...\\\\nBuilt with security-first architecture and certified compliance standards to meet the most stringent enterprise requirements: SOC 2, HIPAA, ISO 27001.\\\\n...\\\\n### Zero data retention\\\\n...\\\\nEach sandbox runs in an individual microVM with the root filesystem in memory, so all data is wiped forever when the sandbox is destroyed.\\\\n...\\\\nsandboxed compute environments\\\\\\\",\\\\\\\"\\\\n...\\\\n\\\\\\\",\\\\\\\"microVM\\\\\\\",\\\\\\\"persistent sandboxes\\\\\\\",\\\\\\\"standby sandboxes\\\\n...\\\\ntech startup infrastructure\\\\n\\\\n---\\\\n\\\\nTitle: docs/concepts.md\\\\nURL: https://github.com/tangle-network/agent-runtime/blob/cc4dc3f3/docs/concepts.md\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n> **In plain terms:** This is the one-page mental model of agent-runtime —\\\\n> read it first if you're meeting the package cold. agent-runtime is a small\\\\n> shared foundation that handles the plumbing every AI agent needs — running a\\\\n> task, streaming a chat reply, reconnecting a dropped connection, picking a\\\\n> model — so you only write the parts unique to your agent. The one takeaway:\\\\n> it owns a handful of reusable building blocks and leaves all the\\\\n> domain-specific work — your tools, prompts, and scoring rules — to you.\\\\n...\\\\nagent-runtime is a thin, shared foundation layer. It owns five things and\\\\ndelegates the rest. Read this file once and the rest of the API falls into\\\\nplace.\\\\n...\\\\n## The five layers\\\\n...\\\\n```\\\\n ┌──────────────────────────┐\\\\n │ Domain code (yours) │\\\\n │ tools, rubric, prompts │\\\\n └────────────┬─────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Agent manifest ─ defineAgent({ surfaces, run, … }) │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Task lifecycle ─ runAgentTask / runAgentTaskStream │\\\\n │ observe → validate → decide → act → eval │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Chat-turn lifecycle ─ handleChatTurn(...) │\\\\n │ NDJSON + session.run.* envelope + persist/trace hooks │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Execution continuity (substrate-owned) │\\\\n │ box.streamPrompt — auto-reconnect in-call; X-Execution-ID\\\\n │ header for cross-process. deriveExecutionId is the\\\\n │ convention helper. │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Backends + catalog │\\\\n │ createOpenAICompatibleBackend, createSandboxPromptBackend,\\\\n │ getModels / resolveChatModel / validateChatModelId │\\\\n └─────────────────────────────────────────────────────────┘\\\\n...\\\\nEach layer composes the one below it. You can use the bottom layers\\\\nalone (a raw backend + the model catalog), or the whole stack\\\\n(`defineAgent` → `handleChatTurn`) — they're the same primitives\\\\nnested.\\\\n...\\\\nEvery `runAgentTask` is a small state machine over an `AgentAdapter`:\\\\n...\\\\n- **observe** → snapshot domain state (read-only).\\\\n- **validate** → score the snapshot against the eval rubric.\\\\n- **decide** → `act` (perform a domain action) | `ask` (ask the user\\\\n something) | `stop` (this turn is done, here's the outcome).\\\\n- **act** → effect the action; loop.\\\\n...\\\\nThe adapter is *yours*. The lifecycle, the eval lift, the stop semantics,\\\\nthe cost ledger — all substrate. Streaming is the same shape:\\\\n`runAgentTaskStream` yields `RuntimeStreamEvent`s as the loop progresses.\\\\n...\\\\nLong-running execution durability — reconnect, replay, dedup — is the\\\\nsubstrate's job, not agent-runtime's. The `@tangle-network/sandbox`\\\\nSDK + orchestrator already handle it:\\\\n...\\\\n- **In-call reconnect**: `box.streamPrompt` extracts `executionId` from\\\\n the response's `execution.started` event and replays via the runtime\\\\n endpoint if the stream drops. Transparent — callers do nothing.\\\\n...\\\\n- **Cross-process reconnect**: a fresh Worker can resume a prior\\\\n Worker's execution by POSTing to the orchestrator's\\\\n `/agents/run/stream` with the `X-Execution-ID` header. The SDK's\\\\n public `PromptOptions` does not yet surface this; products bypass the\\\\n SDK and call the orchestrator directly when they need it (see\\\\n tax-agent's `sessions.ts`).\\\\n...\\\\ns buffer is\\\\n...\\\\nagent-runtime owns one helper, `deriveExecutionId({ projectId,\\\\nsessionId, turnIndex })`, that produces the stable id the product\\\\npersists on its session row.\\\\n...\\\\nWhat lives in the Worker: auth, access control, product DB writes,\\\\nprompt composition, routing. What lives in the substrate: the\\\\nlong-running execution, event buffering, replay-on-reconnect, dedup.\\\\nThe Worker stays a routing + persistence layer — it does not host\\\\nexecution state.\\\\n...\\\\n`defineAgent(...)` is how a vertical declares the **surfaces** (the full\\\\n`AgentProfile`: prompt, skills, tools, MCP, hooks, subagents, and extensions), the\\\\n**knowledge** requirements, the **rubric**, and the **run** function\\\\nthat ties it all together. The manifest is what the eval harness\\\\nbenchmarks, what the analyst loop improves, and (in time) what the\\\\ngenerated scaffold produces.\\\\n...\\\\nKeep `defineAgent` *declarative*. Domain logic — the actual tool calls,\\\\nthe actual rubric scoring — lives in functions the manifest references,\\\\nnot inline.\\\\n...\\\\nEvery product chat handler asks the same questions and gets the same\\\\nanswers wrong (or differently). Substrate primitive:\\\\n...\\\\n- **`resolveChatModel(candidates, fallback)`** — first-non-blank\\\\n precedence over caller-supplied candidates (`request → workspace →\\\\n env`, in whatever order *you* want). Policy-free.\\\\n...\\\\n- **`validateChatModelId(modelId, { allowlist?, routerBaseUrl? })`** —\\\\n rejects malformed ids and ids absent from both the caller's\\\\n `allowlist` and the live router catalog. **Fails closed**: when the\\\\n catalog can't be fetched, an unverifiable id is rejected.\\\\n...\\\\n- **`getModels` / `resolveRouterBaseUrl`** —\\\\n the catalog fetch + base-URL helpers.\\\\n...\\\\nThis module has **no React, no `process.env` assumption** — it runs\\\\nunchanged in Node and in Cloudflare Workers.\\\\n...\\\\n## Backends\\\\n...\\\\n`createOpenAICompatibleBackend({ baseUrl, model, apiKey })` and\\\\n`createSandboxPromptBackend({ ... })` are the two production backends.\\\\nBoth stream. `policy.fallbackModels: [...]` rotates through a named list\\\\non transient failure — that's the only fallback you should ever wire,\\\\nand it's explicit.\\\\n...\\\\nThe doctrine is in `AGENTS.md`: **no silent fallbacks**. Required fields\\\\nfail loud; named rotations are opt-in.\\\\n...\\\\n## What this package does NOT own\\\\n...\\\\nDomain policy. Models. Tools. Connectors. UI. Prompts. Rubrics. Those\\\\nlive in your vertical. The runtime is reusable across many kinds of\\\\nagents because nothing in this list is baked into it.\\\\n\\\\n---\\\\n\\\\nTitle: The anatomy of an agent runtime. A companion to Late-Bound Sagas: Why… | by Viren Baraiya | Agentspan | Apr, 2026 | Medium\\\\nURL: https://medium.com/agentspan/the-anatomy-of-an-agent-runtime-e6eb10bdfcdd\\\\nPublished: 2026-04-29T20:38:13.000Z\\\\nAuthor: Viren Baraiya\\\\nHighlights:\\\\nThis post dives deeper into the architecture of an agent runtime — one built around a clean separation between planning and execution, not just an LLM in a loop.\\\\n...\\\\nThe LLM is the brain. The tools are the hands. The runtime is the nervous system that keeps them from killing you. Most teams build the brain and the hands and then wonder why the thing falls over in production. This post is about the nervous system.\\\\n...\\\\n## The two planes: planner and executor\\\\n...\\\\nThe planner plane is the LLM. The executor plane is everything else. The boundary between them is the runtime.\\\\n...\\\\nThe planner has one job: given the trajectory so far, emit the next intent. It is a pure function —`f(history) -> intent`— in the mathematical sense. It does not touch the network. It does not open files. It does not read the clock. If it needs the current time, the current time is in`history`, because the runtime put it there on a previous step. The planner is stateless beyond its prompt.\\\\n...\\\\nThe executor has one job: make the intent real. It takes the intent off a queue, runs the corresponding code, and reports a result. The executor is where your code lives. It’s allowed to be dirty — open sockets, call Stripe, mutate disk. The executor’s relationship to the planner is mediated entirely by the ledger.\\\\n...\\\\nin Python make it idiomatic. The decorator compiles the function into a workflow definition; the runtime steps through it, calling the LLM to fill in the`plan(...)` blanks and dispatching workers to fulfill the`execute(...)` ones. In Agentspan's case the decorator becomes a Conductor workflow whose LLM-decided steps live as loop nodes that the planner extends at\\\\n...\\\\nIdentity. Every run has a stable ID; every step within it has a stable address that survives retries. That addressability is what turns a flat task list into a graph the runtime can navigate — extending it as the agent runs, resuming into it after a crash, unwinding it for compensation.\\\\n...\\\\nSDK-embedded workers — where your “tool” is a Python function that the agent library calls directly in-process — collapse the dispatcher into your code. They feel simpler at the hello-world stage. They become a cage the moment one of three things is true: you want to scale the tool independently of the planner (one high-throughput scraper, one high-memory reasoning node); you want to write the tool in a language other than the planner’s (your underwriting model has lived in Java for fifteen years, and nobody is rewriting it); you want to bound the blast radius of a tool crash (the tool segfaulted on a pathological PDF; your planner should not go down with it).\\\\n...\\\\nA workers-as-protocol-clients model — where a worker is any process that speaks the runtime’s task protocol and polls for work — addresses all three. The planner doesn’t know or care where`get_weather` lives. It proposes`get_weather(\\\\\\\"NYC\\\\\\\")`; the runtime writes the proposal and enqueues a task on a queue named`get_weather`; any worker subscribed to that queue picks it up, runs, and acks. Python, Go, Java, a serverless endpoint, an HTTP API — the runtime doesn't distinguish. Agentspan ships sugar variants (`http_tool`,`api_tool`,`mcp_tool`) that let the server itself act as the worker for pure-HTTP tools, so you don't need to run anything separate to call Stripe. The substrate is the same regardless: the planner proposes, the dispatcher queues, a worker — somewhere — handles the queue. Conductor has been shaping this protocol since 2016.\\\\n...\\\\nWhen you write an agent in one of the Agentspan SDKs — Python, TypeScript, Java, Go, .NET, Ruby, or Rust — you are not writing an agent. You are writing a specification: which model to use, which tools it has, which strategies apply (handoff, sequential, parallel, swarm), which guardrails fire on which events, which memory and context-management policies apply, which credentials bind where, which evals run when. Callables get replaced with`_worker_ref` markers at serialization. The spec lands on the server as a structured JSON DTO. Two stages run before the agent ever executes.\\\\n...\\\\nThe workflow that comes out is deterministic in Conductor’s sense. Conductor does not know or care that an LLM_CHAT_COMPLETE task calls an LLM, that a SUB_WORKFLOW is another agent, or that a HUMAN task is waiting on a recruiter’s click. It sees a graph of tasks, schedules them, records their results, retries per policy, applies rate limits, emits metrics, persists state. Durable workflow execution, distributed priority task queues, crash recovery, replay from a checkpoint, pause and resume — everything Conductor has done for a decade orchestrating Netflix’s pipelines now runs under the agent.\\\\n...\\\\nThe runtime begins with a single root node: the task. It asks the planner for the next intent, passing the root’s input as the history. The planner returns an intent — call it`plan_0`. The runtime writes`plan_0` as a plan step. Its output contains a list of N proposed effects — possibly one, possibly many if the model emitted parallel tool calls. The runtime materializes those N effects as scheduled steps, all wired together as children of the plan, in one transactional commit. That commit is the monotonic durable graph doing its job: either all the children are scheduled or none of them are.\\\\n...\\\\nNow the runtime dispatches the N effects. Each effect travels to a worker queue; each worker pulls, executes, and acks with a result. Each result is a ledger write that flips the step’s status to a terminal state. The runtime watches for the fan-in: once all N children have completed, it asks the planner for the next intent, handing it the updated history — which now includes`plan_0` and all its children. The planner emits`plan_1`. The graph extends.\\\\n...\\\\nRecovery is straightforward. The runtime starts a saga supervisor from the ledger: it reads the saga’s graph, finds the frontier (the set of steps not yet in a terminal state, and the most recent plan without a successor), and resumes. If a step was scheduled but never picked up by a worker, it re-enqueues it. If a step was in flight — dispatched, no result yet — the worker either reports back (it survived) or the step times out and the runtime decides whether to redispatch (it didn’t). If a plan is waiting on its children, the runtime waits. If all children are done, it calls the planner. Recovery doesn’t need a special code path; it’s the same code path as forward progress, started from a different place in the graph.\\\\n...\\\\nA signal is a message addressed to`saga_id`, written to the ledger as a`signal` kind step, and delivered to the planner on its next call as part of the history. That's the whole mechanism. The things that fall out of it:\\\\n...\\\\nThe design move is to refuse to pick one. The ledger stays the source of truth; the planner sees a projection of it; and the projection is a first-class, pluggable function the operator chooses per agent:\\\\n...\\\\nA runtime for agents — the nervous system between the brain and the hands — does six things. Everything else is sugar or consequence.\\\\n...\\\\nIt owns the program counter, so your code dying does not kill the saga. It witnesses every intent before it becomes an effect, so “did this happen?” is always answerable. It gates every effect until the ledger can account for it, so you never charge the customer twice. It delivers every external signal as a first-class ledger event, so the outside world can interrupt a running agent without racing it. It projects the growing history into the bounded context of a non-deterministic planner, so the model sees exactly what the runtime decides it should see. It refuses to execute any code the user wrote except as a dispatched task in a worker it does not share a process with, so one bad tool cannot take down the brain.\\\\n...\\\\nAn agent is not an LLM in a loop. It’s a saga the model writes as it runs, and the thing that makes it real is the runtime underneath.\\\\n\\\\n---\\\\n\\\\nTitle: The rise of the agent runtime: The compute platform behind ...\\\\nURL: https://thenewstack.io/\\\\nPublished: N/A\\\\nAuthor: Sep 11th 2026 1:40pm, by \\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tBill Doerrfeld\\\\nHighlights:\\\\nfor agents \\\\n\\\\n Aug\\\\n...\\\\nst 2026 10:00am, by\\\\n...\\\\n, Virat Patel and Albert Chang\\\\n...\\\\nModus's operandi: To give AI agents just the right amount of context \\\\n\\\\n Jul 29th 2026 9:00am, by Paul Sawers\\\\n...\\\\nwas supposed to solve the agent tooling problem. It missed a step. \\\\n\\\\n Aug 31st 2026 4:04pm, by Amanda Caswell\\\\n...\\\\n26 1\\\\n...\\\\nam, by\\\\n...\\\\nShopify's CEO threatened to ban Claude Code. Anthropic had already closed the feature request. DeepSeek open sources an agent harness where everything is a plugin Anthropic's watermark survives copy-paste, but not the real dev workflow OpenAI's Astra can do a researcher's week of work. That's the problem. Alibaba's new model promises Opus 4.6-level performance on your laptop\\\\n...\\\\nIntroduction to API Management MCP vs. API Gateways: They’re Not Interchangeable When Is MCP Actually Worth It? Why Your Legacy APIs Are a Roadblock for AI Agents Designing APIs for agents \\\\n\\\\n Introduction\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://koreai.mintlify.app/agent-platform/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n# Agent Runtime\\\\n...\\\\nThe Runtime is the execution engine of Agent Platform. It receives messages from users and systems, executes agent logic, invokes tools, manages conversation state, and returns responses. Every agent interaction — regardless of channel or deployment environment — passes through the Runtime.\\\\n...\\\\nWhen a user sends a message, the Runtime processes it through a structured pipeline before returning a response.\\\\n...\\\\n```mermaid actions={false} theme={null}\\\\nsequenceDiagram\\\\n participant User\\\\n participant Channel\\\\n participant Runtime\\\\n participant\\\\n...\\\\nLoop\\\\n participant\\\\n...\\\\nparticipant LLM\\\\n\\\\n User->>Channel: Send message\\\\n Channel->>Runtime: Inbound message (HTTP or WebSocket)\\\\n Runtime->>Runtime: Authenticate & resolve session\\\\n Runtime->>ReasoningLoop: Execute message\\\\n loop Until final response or max\\\\n...\\\\n10 iterations\\\\n ReasoningLoop->>LLM: Build prompt + call LLM\\\\n LLM-->>ReasoningLoop: Response (text or tool calls)\\\\n alt Tool call requested\\\\n ReasoningLoop->>Tool: Execute tool\\\\n Tool-->>ReasoningLoop: Tool result\\\\n end\\\\n end\\\\n ReasoningLoop->>Runtime: Final response text\\\\n Runtime->>Runtime: Persist session & emit traces\\\\n Runtime->>Channel: Stream or return response\\\\n Channel-->>User: Response\\\\n...\\\\nThe cycle repeats until the agent produces a final text response or reaches the iteration limit. The default is **10 tool call iterations per turn**, configurable in the agent's execution settings.\\\\n...\\\\n## Tool execution\\\\n...\\\\nTools extend agent capabilities. When the LLM requests a tool call, the Runtime dispatches it to the appropriate executor and returns the result to the reasoning loop.\\\\n...\\\\n| Tool type | What it does |\\\\n| -------------- | ------------------------------------------------------------------------------------------------------- |\\\\n| HTTP | Calls an external REST or GraphQL API with optional auth injection |\\\\n| MCP | Connects to a Model Context Protocol server; tools are discovered from the server's capability manifest |\\\\n| Code | Executes JavaScript or Python in an isolated sandbox |\\\\n| Connector | Uses a named integration (Salesforce, Jira, and others) with credential injection |\\\\n| Workflow | Invokes a registered workflow; supports both synchronous and long-running async execution |\\\\n| Knowledge Base | Queries a SearchAI knowledge base and returns ranked results |\\\\n| Async Webhook | Sends a request to an external system and suspends the session until a callback is received |\\\\n...\\\\n### Execution pipeline\\\\n...\\\\nWhen a tool executes, the Runtime processes it in sequence:\\\\n...\\\\n1. **Resolves the tool binding** from the deployment configuration.\\\\n2. **Validates inputs** against declared parameter types before the call.\\\\n3. **Makes the external call** with the appropriate authentication.\\\\n4. **Processes the result** — available in conversation context for reasoning agents, or as session variables for agents with steps.\\\\n5. **Handles errors** using `ON_ERROR` handlers: retry logic, fallback responses, or escalation triggers.\\\\n...\\\\n## Session management\\\\n...\\\\nEach conversation is represented as a session. A session stores the conversation history, variables, agent state, and execution metadata.\\\\n...\\\\nThe Runtime maintains a sliding window over the conversation history to control how much context is sent to the LLM on each turn. The default window is **40 messages**.\\\\n...\\\\nWhen the window fills, the Runtime can compact older turns into a summary rather than discarding them. This preserves context from earlier in long conversations without increasing token usage. Compaction is disabled by default and can be enabled in **Runtime Config** in Studio.\\\\n...\\\\nThe Runtime uses a configurable strategy to handle multiple messages arriving within the same session:\\\\n...\\\\n## Multi-agent orchestration\\\\n...\\\\nThe Runtime executes multi-agent topologies defined in ABL. When routing rules match, the Runtime transitions the active thread to the target agent, forwards context, and manages the return path.\\\\n...\\\\n| Pattern | What happens at runtime |\\\\n| ---------- | ------------------------------------------------------------------------------------------ |\\\\n| Supervisor | Receives every message; evaluates HANDOFF rules top-to-bottom; routes to first match |\\\\n| Handoff | Transfers conversation to the target agent; optionally returns control when `RETURN: true` |\\\\n| Delegate | Sends a task to a sub-agent; blocks the parent until the sub-agent completes or times out |\\\\n| Fan-out | Dispatches multiple agents in parallel; merges results when all complete |\\\\n| Escalation | Transfers the conversation to a human agent via a connected agent desktop |\\\\n...\\\\n### Thread hierarchy\\\\n...\\\\nWhen a supervisor hands off to a specialist, the Runtime creates a **thread** within the existing session — not a new session. Threads form a stack: handoffs push new threads, completions pop back to the parent. The user experiences one continuous conversation regardless of how many agents participate.\\\\n...\\\\nEach thread maintains its own conversation history and gathered variables, but can read data from parent threads.\\\\n...\\\\nEvery execution path emits structured trace events. Traces are accessible from the Sessions page in Studio.\\\\n...\\\\nenforces per-tenant\\\\n...\\\\nlimits on a rolling 1-\\\"}]}}]\"}]}},\"attributes\":{\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"d4b71f8efd7a00e5\"}" + }, + { + "field": "sessionId", + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" + }, + { + "field": "traceId", + "value": "6aa82ccc63d06bd964d302913ef6da1a" + }, + { + "field": "spanId", + "value": "d4b71f8efd7a00e5" + }, + { + "field": "@ptr", + "value": "Cs4BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASOBoYAgap5vtFAAAABDqJQYwABqqCzSAAAANSIAEo3568h4o0MNa0vYeKNDhSQK39E0jUxQdQiZsHIAIQLhgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406435925492800,\"observedTimeUnixNano\":1789406436786511969,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Summarize what an agent runtime does.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"status\\\": \\\"success\\\", \\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"content\\\": [{\\\"text\\\": \\\"Title: Agent Runtime: Definition & How It Differs from ...\\\\nURL: https://www.knowlee.ai/\\\\nPublished: N/A\\\\nAuthor: Knowlee\\\\nHighlights:\\\\nKnowlee builds an AI workforce for B2B enterprises: autonomous agent teams that take on full workflows across sales, recruiting, marketing, operations, and finance. Custom systems deployed in 4–8 weeks, governed by an audit trail and human oversight from day one — not bolted on after the fact. Built for mid-market and enterprise teams that need AI in production, not another pilot.\\\\n...\\\\nKnowlee runs five production verticals on the same orchestration backbone — 4Sales (autonomous prospecting, multi-channel outreach, meeting booking), 4Talents (candidate sourcing, scoring, interview coordination), 4Marketers (24-capability marketing operating layer across SEO, content, strategy, monitoring, and reporting), 4Operations (workflow orchestration, voice-of-customer analysis, internal AI tooling), and 4Finance (active-offer quality control, renewal management, contract financial-risk scoring). Each vertical inherits the same kanban, knowledge graph, and governance schema.\\\\n...\\\\nEvery vertical is a surface on Knowlee OS, the orchestration layer that runs a fleet of agents as one coherent system. Multi-agent kanban, MCP fabric with documented routing cascades, jobs registry with audit metadata on every execution, and a Neo4j knowledge graph (the Brain) that compounds across verticals. The next agent never starts from zero — every prior agent's output is queryable.\\\\n...\\\\nMost enterprise AI projects take six months and stall. Knowlee compresses that to under two months: week 1 audits the broken process, weeks 2–3 build the custom system, week 4 goes live. You own the code, the models, and the infrastructure — no licensing fees, no vendor lock-in. Integrates with existing CRM, communication, and data stacks rather than forcing migration.\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-how-it-works.html\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nThe Amazon Bedrock AgentCore Runtime handles scaling, session management, security isolation, and infrastructure management, allowing you to focus on building intelligent agent experiences rather than operational complexity. By leveraging the features and capabilities described here, you can build, deploy, and manage sophisticated AI agents that deliver value to your users while helping to maintain enterprise-grade security and reliability.\\\\n...\\\\nAn AgentCore Runtime is the foundational component that hosts your AI agent or tool code. It represents a containerized application that processes user inputs, maintains context, and executes actions using AI capabilities. When you create an agent, you define its behavior, capabilities, and the tools it can access. For example, a customer support agent might answer product questions, process returns, and escalate complex issues to human representatives.\\\\n...\\\\nYou can build and deploy agents to AgentCore Runtime using the AgentCore CLI , the AgentCore Python SDK or directly through AWS SDKs . With the AgentCore Python SDK, you can define your agent using popular frameworks like LangGraph, CrewAI, or Strands Agents. The SDK handles infrastructure complexities, allowing you to focus on the agent’s logic and capabilities.\\\\n...\\\\nEach AgentCore Runtime maintains immutable versions that capture a complete snapshot of the configuration at a specific point in time:\\\\n...\\\\nEndpoints provide addressable access points to specific versions of your AgentCore Runtime. Each endpoint:\\\\n...\\\\nHas a unique ARN for invocation\\\\n...\\\\nReferences a specific version of your Agent Runtime\\\\n...\\\\n- Provides stable access to your agent even as\\\\n...\\\\n- The \\\\\\\"DEFAULT\\\\\\\" endpoint is automatically created when you call CreateAgentRuntime and points to the latest version\\\\n- When you update your AgentCore Runtime, a new version is created but the `DEFAULT` endpoint automatically updates to reference it\\\\n- You can create custom endpoints with the CreateAgentRuntimeEndpoint operation for different environments (dev, test, prod)\\\\n- When a user makes a request to an endpoint, the request is resolved to the specific agent version referenced by that endpoint\\\\n...\\\\nSessions represent individual interaction contexts between users and your AgentCore Runtime. Each session:\\\\n...\\\\n- Is identified by a unique `runtimeSessionId` provided by your application, or by the Runtime itself in the first invocation if the `runtimeSessionId` is left empty\\\\n- Runs in a dedicated microVM with completely isolated CPU, memory, and filesystem resources\\\\n- Preserves context across multiple interactions within the same conversation\\\\n- Can persist for up to 8 hours of total runtime\\\\n...\\\\n- After session termination, the entire microVM is terminated and memory is sanitized\\\\n- A subsequent request with the same `runtimeSessionId` after termination will create a new execution environment\\\\n- Session isolation prevents cross-session data contamination and ensures security\\\\n- Session state is ephemeral and should not be used for long-term durability (use AgentCore Memory for context durability)\\\\n...\\\\nThis complete isolation between sessions is\\\\n...\\\\nfor enterprise security,\\\\n...\\\\nInbound authentication controls who can access your agents through AWS Identity and Access Management or OAuth 2.0, validating bearer tokens from identity providers before allowing requests to proceed. Outbound authentication enables your agents to securely access third-party services using OAuth or API keys, with AgentCore Identity managing credentials in either user-delegated or autonomous modes. For more information, see Authenticate and authorize with Inbound Auth and Outbound Auth.\\\\n...\\\\nInbound Auth, powered by AgentCore Identity, controls who can access and invoke your agents or tools in AgentCore Runtime.\\\\n...\\\\nOutbound Auth, powered by Amazon Bedrock\\\\n...\\\\nIdentity, lets your\\\\n...\\\\non AgentCore Runtime securely\\\\n...\\\\nthird-party\\\\n...\\\\nAgentCore Runtime supports long-running workloads through:\\\\n...\\\\nAgents can stream partial results as they become available rather than waiting for complete processing. This lets\\\\n...\\\\nprovide a more\\\\n...\\\\nuser experience, especially for operations that generate large amounts of content or take\\\\n...\\\\ntime to complete\\\\n...\\\\nFor more information, see Stream agent responses\\\\n...\\\\nThe AgentCore Runtime provides WebSocket support for real-time bidirectional streaming connections for interactive agent communication. This enables more responsive and interactive agent experiences. For more information, see Get started with bidirectional streaming using WebSocket.\\\\n...\\\\nAgentCore Runtime supports multiple communication protocols:\\\\n...\\\\n, see Deploy\\\\n...\\\\n’s how to get\\\\n...\\\\nCore Runtime. For the complete example, see Get started with the\\\\n...\\\\n- Define your agent logic using any AI framework or custom code\\\\n- Add the required HTTP endpoints using the AgentCore SDK or custom implementation\\\\n- Package dependencies in a requirements.txt file\\\\n...\\\\n- Build and push a container image to Amazon ECR directly or via the AgentCore SDK\\\\n- Create an AgentCore Runtime using the container image\\\\n- The initial version (V1) and DEFAULT endpoint are created automatically\\\\n...\\\\n- Generate a unique session ID for each user conversation\\\\n- Call the InvokeAgentRuntime or InvokeAgentRuntimeWithWebSocketStream operation with your agent’s ARN and session ID\\\\n- Pass user input in the request payload\\\\n...\\\\nsessions, and\\\\n...\\\\n- Use the same session ID for follow-up interactions to maintain context\\\\n- Review logs, traces, and observability metrics\\\\n- Deploy updates by modifying your AgentCore Runtime (creates new versions)\\\\n- Control rollout by updating endpoints to point to new versions\\\\n\\\\n---\\\\n\\\\nTitle: Agent Runtime  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation\\\\nURL: https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nAgent Runtime is a fully-managed, opinionated runtime that you can use to deploy, operate, and scale agentic applications. Agent Runtime abstracts away the underlying infrastructure, which lets you focus on agent logic instead of operations.\\\\n...\\\\nAgent Runtime lets you do the following:\\\\n...\\\\n- Deploy and scale agents with a managed runtime and end-to-end management capabilities.\\\\n- Customize the agent's container image with build-time installation scripts for system dependencies.\\\\n- Use security features including VPC-SC compliance and configuration of authentication and IAM.\\\\n- Access models and tools such as function calling.\\\\n- Deploy agents built using different languages and frameworks and the Agent2Agent open protocol.\\\\n...\\\\nThe workflow for building an agent on Agent Runtime is:\\\\n...\\\\n1. Set up the environment: Set up your Google project and install the latest version of the Agent Platform SDK for Python.\\\\n2. Develop an agent: Develop an agent that can be deployed on Agent Runtime.\\\\n3. Deploy the agent: Deploy the agent on the Agent Runtime managed runtime.\\\\n4. Use the agent: Query the agent by sending an API request.\\\\n5. Manage the deployed agent: Manage and delete agents that you have deployed to Agent Runtime.\\\\n...\\\\nAgent Runtime supports deploying agents written in any programming language and agent framework, as long as the agent application can be containerized and conforms to the runtime contract:\\\\n...\\\\nFor supported languages and frameworks, higher-level tools and SDKs are available to simplify deployment. The following table describes the level of support Agent Runtime provides for various agent frameworks:\\\\n...\\\\n| Support level | Agent frameworks |\\\\n| --- | --- |\\\\n...\\\\n| Custom template: You can adapt a custom template to support deployment to Agent Runtime from your framework. For deploying custom containers, see the Runtime contract. | CrewAI, custom frameworks |\\\\n...\\\\n| Agent Platform SDK integration: Agent Runtime provides managed templates per framework in the Agent Platform SDK and documentation. | LangChain, LangGraph, AG2, LlamaIndex |\\\\n...\\\\n| Full integration: Features are integrated to work across the framework, Agent Runtime, and broader Google Cloud ecosystem. | Agent Development Kit (ADK) Python: Deploy using the adk CLI. Go: Deploy using the adkgo CLI. |\\\\n...\\\\nThe Agents CLI is the unified command-line interface and skill set for the Gemini Enterprise Agent Platform. It provides coding agents and developers with a predictable path through the Agent Development Lifecycle: scaffold, evaluate, deploy, publish, and observe. The Agents CLI provides the following:\\\\n...\\\\n- Pre-built agent templates: ReAct, RAG, multi-agent, and other templates.\\\\n- Interactive playground: Test and interact with your agent.\\\\n- Automated infrastructure: Uses Terraform for streamlined resource management.\\\\n- CI/CD pipelines: Automated deployment workflows leveraging Cloud Build.\\\\n- Observability: Built-in support for Cloud Trace and Cloud Logging.\\\\n...\\\\nThe`agent_engines` module within the Agent Platform SDK is being refactored to a client-based design for the\\\\n...\\\\nalign with the Agent Development Kit(ADK) and Google Gen AI SDK in canonical type representations\\\\n...\\\\nThis ensures a consistent and standardized way of representing data types across different SDKs\\\\n...\\\\nwhich simplifies interoperability\\\\n...\\\\nreduces conversion overhead.\\\\n...\\\\n- For client-level scoping of Google Cloud parameters in multi-project multi-location applications. This allows an application to manage interactions with resources across different Google Cloud projects and geographical locations by configuring each client instance with its specific project and location settings.\\\\n- To improve discoverability and cohesiveness of Agent Runtime services.\\\\n\\\\n---\\\\n\\\\nTitle: What Is an AI Agent Runtime Environment?\\\\nURL: https://blaxel.ai/\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n---\\\\ndescription: Blaxel is the perpetual sandbox platform that keeps infinite secure sandboxes on automatic standby with co-hosted agents and context for near instant latency. Achieve 25ms resume times, eliminate cold starts, and only pay for what you use.\\\\ntitle: Blaxel: The Persistent Sandbox Platform\\\\nimage: https://blaxel.ai/illustrations/media-thumbnail.png\\\\n---\\\\n...\\\\nBlaxel lets you keep infinite, secure sandboxes on automatic standby, while co-hosting your agents and context for near instant latency.\\\\n...\\\\n## \\\\\\\\> Stop treating sandboxes as ephemeral runners. Truly intelligent AI agents should be able to have access to their own computers\\\\\\\\_\\\\n...\\\\nTraditional sandboxes expire in hours to days, destroying context and forcing you to build heavy orchestration just to manage state — or accept a slow, fresh start every run.\\\\n...\\\\nBlaxel Sandboxes work like your laptop but for agents: close the lid, it suspends; open it, it resumes instantly where you left it. Persist context and state forever — and reach near-instant execution by running your agent logic, context and inference on the same colocated backbone too.\\\\n...\\\\n## Give a computer to your agent\\\\n...\\\\nRun AI code in persistent environments that wait on standby indefinitely when not used, eliminating cold starts without complex orchestration. Instantly scale to 50,000+ concurrent machines.\\\\n...\\\\n### Auto-suspend sandboxes when they're not used. Persist forever.\\\\n...\\\\nOur flagship lifecycle handler automatically scales sandboxes to zero when idle, with a full memory + filesystem snapshot. Keep infinite sandboxes in standby forever. Resume instantly with identical process state.\\\\n...\\\\n### World-class 25ms boot\\\\n...\\\\nBlaxel Sandboxes resume from standby in \\\\\\\\~25ms with full memory state. Filesystem runs in memory, for unbeatable performance for almost all sandbox operations.\\\\n...\\\\nAgent Drive lets you share context across agents and sessions in real-time. And with Volumes, retain data for years with a fully redundant solution.\\\\n...\\\\n## Run agents right next to their computers\\\\n...\\\\nCo-host the agent loop, MCP servers, and batch tasks directly alongside your sandboxes and volumes to eliminate network hops and ensure the lowest possible end-to-end latency.\\\\n...\\\\n### Colocate your agents for ultra low latency\\\\n...\\\\nHost agents made with any framework on the same backbone as their sandboxes to achieve local-like network latency.\\\\n...\\\\n### Run batch jobs on our elastic backbone\\\\n...\\\\nSpawn thousands of jobs in individual sandboxes in seconds with Blaxel SDK. Instant scale on demand.\\\\n...\\\\n### Host MCP servers close to your agents\\\\n...\\\\nRun remote MCP servers alongside the agent loop and sandboxes, fully HTTP stream compatible.\\\\n...\\\\nBuilt with security-first architecture and certified compliance standards to meet the most stringent enterprise requirements: SOC 2, HIPAA, ISO 27001.\\\\n...\\\\n### Zero data retention\\\\n...\\\\nEach sandbox runs in an individual microVM with the root filesystem in memory, so all data is wiped forever when the sandbox is destroyed.\\\\n...\\\\nsandboxed compute environments\\\\\\\",\\\\\\\"\\\\n...\\\\n\\\\\\\",\\\\\\\"microVM\\\\\\\",\\\\\\\"persistent sandboxes\\\\\\\",\\\\\\\"standby sandboxes\\\\n...\\\\ntech startup infrastructure\\\\n\\\\n---\\\\n\\\\nTitle: docs/concepts.md\\\\nURL: https://github.com/tangle-network/agent-runtime/blob/cc4dc3f3/docs/concepts.md\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n> **In plain terms:** This is the one-page mental model of agent-runtime —\\\\n> read it first if you're meeting the package cold. agent-runtime is a small\\\\n> shared foundation that handles the plumbing every AI agent needs — running a\\\\n> task, streaming a chat reply, reconnecting a dropped connection, picking a\\\\n> model — so you only write the parts unique to your agent. The one takeaway:\\\\n> it owns a handful of reusable building blocks and leaves all the\\\\n> domain-specific work — your tools, prompts, and scoring rules — to you.\\\\n...\\\\nagent-runtime is a thin, shared foundation layer. It owns five things and\\\\ndelegates the rest. Read this file once and the rest of the API falls into\\\\nplace.\\\\n...\\\\n## The five layers\\\\n...\\\\n```\\\\n ┌──────────────────────────┐\\\\n │ Domain code (yours) │\\\\n │ tools, rubric, prompts │\\\\n └────────────┬─────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Agent manifest ─ defineAgent({ surfaces, run, … }) │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Task lifecycle ─ runAgentTask / runAgentTaskStream │\\\\n │ observe → validate → decide → act → eval │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Chat-turn lifecycle ─ handleChatTurn(...) │\\\\n │ NDJSON + session.run.* envelope + persist/trace hooks │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Execution continuity (substrate-owned) │\\\\n │ box.streamPrompt — auto-reconnect in-call; X-Execution-ID\\\\n │ header for cross-process. deriveExecutionId is the\\\\n │ convention helper. │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Backends + catalog │\\\\n │ createOpenAICompatibleBackend, createSandboxPromptBackend,\\\\n │ getModels / resolveChatModel / validateChatModelId │\\\\n └─────────────────────────────────────────────────────────┘\\\\n...\\\\nEach layer composes the one below it. You can use the bottom layers\\\\nalone (a raw backend + the model catalog), or the whole stack\\\\n(`defineAgent` → `handleChatTurn`) — they're the same primitives\\\\nnested.\\\\n...\\\\nEvery `runAgentTask` is a small state machine over an `AgentAdapter`:\\\\n...\\\\n- **observe** → snapshot domain state (read-only).\\\\n- **validate** → score the snapshot against the eval rubric.\\\\n- **decide** → `act` (perform a domain action) | `ask` (ask the user\\\\n something) | `stop` (this turn is done, here's the outcome).\\\\n- **act** → effect the action; loop.\\\\n...\\\\nThe adapter is *yours*. The lifecycle, the eval lift, the stop semantics,\\\\nthe cost ledger — all substrate. Streaming is the same shape:\\\\n`runAgentTaskStream` yields `RuntimeStreamEvent`s as the loop progresses.\\\\n...\\\\nLong-running execution durability — reconnect, replay, dedup — is the\\\\nsubstrate's job, not agent-runtime's. The `@tangle-network/sandbox`\\\\nSDK + orchestrator already handle it:\\\\n...\\\\n- **In-call reconnect**: `box.streamPrompt` extracts `executionId` from\\\\n the response's `execution.started` event and replays via the runtime\\\\n endpoint if the stream drops. Transparent — callers do nothing.\\\\n...\\\\n- **Cross-process reconnect**: a fresh Worker can resume a prior\\\\n Worker's execution by POSTing to the orchestrator's\\\\n `/agents/run/stream` with the `X-Execution-ID` header. The SDK's\\\\n public `PromptOptions` does not yet surface this; products bypass the\\\\n SDK and call the orchestrator directly when they need it (see\\\\n tax-agent's `sessions.ts`).\\\\n...\\\\ns buffer is\\\\n...\\\\nagent-runtime owns one helper, `deriveExecutionId({ projectId,\\\\nsessionId, turnIndex })`, that produces the stable id the product\\\\npersists on its session row.\\\\n...\\\\nWhat lives in the Worker: auth, access control, product DB writes,\\\\nprompt composition, routing. What lives in the substrate: the\\\\nlong-running execution, event buffering, replay-on-reconnect, dedup.\\\\nThe Worker stays a routing + persistence layer — it does not host\\\\nexecution state.\\\\n...\\\\n`defineAgent(...)` is how a vertical declares the **surfaces** (the full\\\\n`AgentProfile`: prompt, skills, tools, MCP, hooks, subagents, and extensions), the\\\\n**knowledge** requirements, the **rubric**, and the **run** function\\\\nthat ties it all together. The manifest is what the eval harness\\\\nbenchmarks, what the analyst loop improves, and (in time) what the\\\\ngenerated scaffold produces.\\\\n...\\\\nKeep `defineAgent` *declarative*. Domain logic — the actual tool calls,\\\\nthe actual rubric scoring — lives in functions the manifest references,\\\\nnot inline.\\\\n...\\\\nEvery product chat handler asks the same questions and gets the same\\\\nanswers wrong (or differently). Substrate primitive:\\\\n...\\\\n- **`resolveChatModel(candidates, fallback)`** — first-non-blank\\\\n precedence over caller-supplied candidates (`request → workspace →\\\\n env`, in whatever order *you* want). Policy-free.\\\\n...\\\\n- **`validateChatModelId(modelId, { allowlist?, routerBaseUrl? })`** —\\\\n rejects malformed ids and ids absent from both the caller's\\\\n `allowlist` and the live router catalog. **Fails closed**: when the\\\\n catalog can't be fetched, an unverifiable id is rejected.\\\\n...\\\\n- **`getModels` / `resolveRouterBaseUrl`** —\\\\n the catalog fetch + base-URL helpers.\\\\n...\\\\nThis module has **no React, no `process.env` assumption** — it runs\\\\nunchanged in Node and in Cloudflare Workers.\\\\n...\\\\n## Backends\\\\n...\\\\n`createOpenAICompatibleBackend({ baseUrl, model, apiKey })` and\\\\n`createSandboxPromptBackend({ ... })` are the two production backends.\\\\nBoth stream. `policy.fallbackModels: [...]` rotates through a named list\\\\non transient failure — that's the only fallback you should ever wire,\\\\nand it's explicit.\\\\n...\\\\nThe doctrine is in `AGENTS.md`: **no silent fallbacks**. Required fields\\\\nfail loud; named rotations are opt-in.\\\\n...\\\\n## What this package does NOT own\\\\n...\\\\nDomain policy. Models. Tools. Connectors. UI. Prompts. Rubrics. Those\\\\nlive in your vertical. The runtime is reusable across many kinds of\\\\nagents because nothing in this list is baked into it.\\\\n\\\\n---\\\\n\\\\nTitle: The anatomy of an agent runtime. A companion to Late-Bound Sagas: Why… | by Viren Baraiya | Agentspan | Apr, 2026 | Medium\\\\nURL: https://medium.com/agentspan/the-anatomy-of-an-agent-runtime-e6eb10bdfcdd\\\\nPublished: 2026-04-29T20:38:13.000Z\\\\nAuthor: Viren Baraiya\\\\nHighlights:\\\\nThis post dives deeper into the architecture of an agent runtime — one built around a clean separation between planning and execution, not just an LLM in a loop.\\\\n...\\\\nThe LLM is the brain. The tools are the hands. The runtime is the nervous system that keeps them from killing you. Most teams build the brain and the hands and then wonder why the thing falls over in production. This post is about the nervous system.\\\\n...\\\\n## The two planes: planner and executor\\\\n...\\\\nThe planner plane is the LLM. The executor plane is everything else. The boundary between them is the runtime.\\\\n...\\\\nThe planner has one job: given the trajectory so far, emit the next intent. It is a pure function —`f(history) -> intent`— in the mathematical sense. It does not touch the network. It does not open files. It does not read the clock. If it needs the current time, the current time is in`history`, because the runtime put it there on a previous step. The planner is stateless beyond its prompt.\\\\n...\\\\nThe executor has one job: make the intent real. It takes the intent off a queue, runs the corresponding code, and reports a result. The executor is where your code lives. It’s allowed to be dirty — open sockets, call Stripe, mutate disk. The executor’s relationship to the planner is mediated entirely by the ledger.\\\\n...\\\\nin Python make it idiomatic. The decorator compiles the function into a workflow definition; the runtime steps through it, calling the LLM to fill in the`plan(...)` blanks and dispatching workers to fulfill the`execute(...)` ones. In Agentspan's case the decorator becomes a Conductor workflow whose LLM-decided steps live as loop nodes that the planner extends at\\\\n...\\\\nIdentity. Every run has a stable ID; every step within it has a stable address that survives retries. That addressability is what turns a flat task list into a graph the runtime can navigate — extending it as the agent runs, resuming into it after a crash, unwinding it for compensation.\\\\n...\\\\nSDK-embedded workers — where your “tool” is a Python function that the agent library calls directly in-process — collapse the dispatcher into your code. They feel simpler at the hello-world stage. They become a cage the moment one of three things is true: you want to scale the tool independently of the planner (one high-throughput scraper, one high-memory reasoning node); you want to write the tool in a language other than the planner’s (your underwriting model has lived in Java for fifteen years, and nobody is rewriting it); you want to bound the blast radius of a tool crash (the tool segfaulted on a pathological PDF; your planner should not go down with it).\\\\n...\\\\nA workers-as-protocol-clients model — where a worker is any process that speaks the runtime’s task protocol and polls for work — addresses all three. The planner doesn’t know or care where`get_weather` lives. It proposes`get_weather(\\\\\\\"NYC\\\\\\\")`; the runtime writes the proposal and enqueues a task on a queue named`get_weather`; any worker subscribed to that queue picks it up, runs, and acks. Python, Go, Java, a serverless endpoint, an HTTP API — the runtime doesn't distinguish. Agentspan ships sugar variants (`http_tool`,`api_tool`,`mcp_tool`) that let the server itself act as the worker for pure-HTTP tools, so you don't need to run anything separate to call Stripe. The substrate is the same regardless: the planner proposes, the dispatcher queues, a worker — somewhere — handles the queue. Conductor has been shaping this protocol since 2016.\\\\n...\\\\nWhen you write an agent in one of the Agentspan SDKs — Python, TypeScript, Java, Go, .NET, Ruby, or Rust — you are not writing an agent. You are writing a specification: which model to use, which tools it has, which strategies apply (handoff, sequential, parallel, swarm), which guardrails fire on which events, which memory and context-management policies apply, which credentials bind where, which evals run when. Callables get replaced with`_worker_ref` markers at serialization. The spec lands on the server as a structured JSON DTO. Two stages run before the agent ever executes.\\\\n...\\\\nThe workflow that comes out is deterministic in Conductor’s sense. Conductor does not know or care that an LLM_CHAT_COMPLETE task calls an LLM, that a SUB_WORKFLOW is another agent, or that a HUMAN task is waiting on a recruiter’s click. It sees a graph of tasks, schedules them, records their results, retries per policy, applies rate limits, emits metrics, persists state. Durable workflow execution, distributed priority task queues, crash recovery, replay from a checkpoint, pause and resume — everything Conductor has done for a decade orchestrating Netflix’s pipelines now runs under the agent.\\\\n...\\\\nThe runtime begins with a single root node: the task. It asks the planner for the next intent, passing the root’s input as the history. The planner returns an intent — call it`plan_0`. The runtime writes`plan_0` as a plan step. Its output contains a list of N proposed effects — possibly one, possibly many if the model emitted parallel tool calls. The runtime materializes those N effects as scheduled steps, all wired together as children of the plan, in one transactional commit. That commit is the monotonic durable graph doing its job: either all the children are scheduled or none of them are.\\\\n...\\\\nNow the runtime dispatches the N effects. Each effect travels to a worker queue; each worker pulls, executes, and acks with a result. Each result is a ledger write that flips the step’s status to a terminal state. The runtime watches for the fan-in: once all N children have completed, it asks the planner for the next intent, handing it the updated history — which now includes`plan_0` and all its children. The planner emits`plan_1`. The graph extends.\\\\n...\\\\nRecovery is straightforward. The runtime starts a saga supervisor from the ledger: it reads the saga’s graph, finds the frontier (the set of steps not yet in a terminal state, and the most recent plan without a successor), and resumes. If a step was scheduled but never picked up by a worker, it re-enqueues it. If a step was in flight — dispatched, no result yet — the worker either reports back (it survived) or the step times out and the runtime decides whether to redispatch (it didn’t). If a plan is waiting on its children, the runtime waits. If all children are done, it calls the planner. Recovery doesn’t need a special code path; it’s the same code path as forward progress, started from a different place in the graph.\\\\n...\\\\nA signal is a message addressed to`saga_id`, written to the ledger as a`signal` kind step, and delivered to the planner on its next call as part of the history. That's the whole mechanism. The things that fall out of it:\\\\n...\\\\nThe design move is to refuse to pick one. The ledger stays the source of truth; the planner sees a projection of it; and the projection is a first-class, pluggable function the operator chooses per agent:\\\\n...\\\\nA runtime for agents — the nervous system between the brain and the hands — does six things. Everything else is sugar or consequence.\\\\n...\\\\nIt owns the program counter, so your code dying does not kill the saga. It witnesses every intent before it becomes an effect, so “did this happen?” is always answerable. It gates every effect until the ledger can account for it, so you never charge the customer twice. It delivers every external signal as a first-class ledger event, so the outside world can interrupt a running agent without racing it. It projects the growing history into the bounded context of a non-deterministic planner, so the model sees exactly what the runtime decides it should see. It refuses to execute any code the user wrote except as a dispatched task in a worker it does not share a process with, so one bad tool cannot take down the brain.\\\\n...\\\\nAn agent is not an LLM in a loop. It’s a saga the model writes as it runs, and the thing that makes it real is the runtime underneath.\\\\n\\\\n---\\\\n\\\\nTitle: The rise of the agent runtime: The compute platform behind ...\\\\nURL: https://thenewstack.io/\\\\nPublished: N/A\\\\nAuthor: Sep 11th 2026 1:40pm, by \\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tBill Doerrfeld\\\\nHighlights:\\\\nfor agents \\\\n\\\\n Aug\\\\n...\\\\nst 2026 10:00am, by\\\\n...\\\\n, Virat Patel and Albert Chang\\\\n...\\\\nModus's operandi: To give AI agents just the right amount of context \\\\n\\\\n Jul 29th 2026 9:00am, by Paul Sawers\\\\n...\\\\nwas supposed to solve the agent tooling problem. It missed a step. \\\\n\\\\n Aug 31st 2026 4:04pm, by Amanda Caswell\\\\n...\\\\n26 1\\\\n...\\\\nam, by\\\\n...\\\\nShopify's CEO threatened to ban Claude Code. Anthropic had already closed the feature request. DeepSeek open sources an agent harness where everything is a plugin Anthropic's watermark survives copy-paste, but not the real dev workflow OpenAI's Astra can do a researcher's week of work. That's the problem. Alibaba's new model promises Opus 4.6-level performance on your laptop\\\\n...\\\\nIntroduction to API Management MCP vs. API Gateways: They’re Not Interchangeable When Is MCP Actually Worth It? Why Your Legacy APIs Are a Roadblock for AI Agents Designing APIs for agents \\\\n\\\\n Introduction\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://koreai.mintlify.app/agent-platform/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n# Agent Runtime\\\\n...\\\\nThe Runtime is the execution engine of Agent Platform. It receives messages from users and systems, executes agent logic, invokes tools, manages conversation state, and returns responses. Every agent interaction — regardless of channel or deployment environment — passes through the Runtime.\\\\n...\\\\nWhen a user sends a message, the Runtime processes it through a structured pipeline before returning a response.\\\\n...\\\\n```mermaid actions={false} theme={null}\\\\nsequenceDiagram\\\\n participant User\\\\n participant Channel\\\\n participant Runtime\\\\n participant\\\\n...\\\\nLoop\\\\n participant\\\\n...\\\\nparticipant LLM\\\\n\\\\n User->>Channel: Send message\\\\n Channel->>Runtime: Inbound message (HTTP or WebSocket)\\\\n Runtime->>Runtime: Authenticate & resolve session\\\\n Runtime->>ReasoningLoop: Execute message\\\\n loop Until final response or max\\\\n...\\\\n10 iterations\\\\n ReasoningLoop->>LLM: Build prompt + call LLM\\\\n LLM-->>ReasoningLoop: Response (text or tool calls)\\\\n alt Tool call requested\\\\n ReasoningLoop->>Tool: Execute tool\\\\n Tool-->>ReasoningLoop: Tool result\\\\n end\\\\n end\\\\n ReasoningLoop->>Runtime: Final response text\\\\n Runtime->>Runtime: Persist session & emit traces\\\\n Runtime->>Channel: Stream or return response\\\\n Channel-->>User: Response\\\\n...\\\\nThe cycle repeats until the agent produces a final text response or reaches the iteration limit. The default is **10 tool call iterations per turn**, configurable in the agent's execution settings.\\\\n...\\\\n## Tool execution\\\\n...\\\\nTools extend agent capabilities. When the LLM requests a tool call, the Runtime dispatches it to the appropriate executor and returns the result to the reasoning loop.\\\\n...\\\\n| Tool type | What it does |\\\\n| -------------- | ------------------------------------------------------------------------------------------------------- |\\\\n| HTTP | Calls an external REST or GraphQL API with optional auth injection |\\\\n| MCP | Connects to a Model Context Protocol server; tools are discovered from the server's capability manifest |\\\\n| Code | Executes JavaScript or Python in an isolated sandbox |\\\\n| Connector | Uses a named integration (Salesforce, Jira, and others) with credential injection |\\\\n| Workflow | Invokes a registered workflow; supports both synchronous and long-running async execution |\\\\n| Knowledge Base | Queries a SearchAI knowledge base and returns ranked results |\\\\n| Async Webhook | Sends a request to an external system and suspends the session until a callback is received |\\\\n...\\\\n### Execution pipeline\\\\n...\\\\nWhen a tool executes, the Runtime processes it in sequence:\\\\n...\\\\n1. **Resolves the tool binding** from the deployment configuration.\\\\n2. **Validates inputs** against declared parameter types before the call.\\\\n3. **Makes the external call** with the appropriate authentication.\\\\n4. **Processes the result** — available in conversation context for reasoning agents, or as session variables for agents with steps.\\\\n5. **Handles errors** using `ON_ERROR` handlers: retry logic, fallback responses, or escalation triggers.\\\\n...\\\\n## Session management\\\\n...\\\\nEach conversation is represented as a session. A session stores the conversation history, variables, agent state, and execution metadata.\\\\n...\\\\nThe Runtime maintains a sliding window over the conversation history to control how much context is sent to the LLM on each turn. The default window is **40 messages**.\\\\n...\\\\nWhen the window fills, the Runtime can compact older turns into a summary rather than discarding them. This preserves context from earlier in long conversations without increasing token usage. Compaction is disabled by default and can be enabled in **Runtime Config** in Studio.\\\\n...\\\\nThe Runtime uses a configurable strategy to handle multiple messages arriving within the same session:\\\\n...\\\\n## Multi-agent orchestration\\\\n...\\\\nThe Runtime executes multi-agent topologies defined in ABL. When routing rules match, the Runtime transitions the active thread to the target agent, forwards context, and manages the return path.\\\\n...\\\\n| Pattern | What happens at runtime |\\\\n| ---------- | ------------------------------------------------------------------------------------------ |\\\\n| Supervisor | Receives every message; evaluates HANDOFF rules top-to-bottom; routes to first match |\\\\n| Handoff | Transfers conversation to the target agent; optionally returns control when `RETURN: true` |\\\\n| Delegate | Sends a task to a sub-agent; blocks the parent until the sub-agent completes or times out |\\\\n| Fan-out | Dispatches multiple agents in parallel; merges results when all complete |\\\\n| Escalation | Transfers the conversation to a human agent via a connected agent desktop |\\\\n...\\\\n### Thread hierarchy\\\\n...\\\\nWhen a supervisor hands off to a specialist, the Runtime creates a **thread** within the existing session — not a new session. Threads form a stack: handoffs push new threads, completions pop back to the parent. The user experiences one continuous conversation regardless of how many agents participate.\\\\n...\\\\nEach thread maintains its own conversation history and gathered variables, but can read data from parent threads.\\\\n...\\\\nEvery execution path emits structured trace events. Traces are accessible from the Sessions page in Studio.\\\\n...\\\\nenforces per-tenant\\\\n...\\\\nlimits on a rolling 1-\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"I'll search for information about what an agent runtime does.\\\"}, {\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"name\\\": \\\"mcpTarget___web_search_exa\\\", \\\"input\\\": {\\\"query\\\": \\\"agent runtime explanation what does it do software architecture\\\", \\\"numResults\\\": 8}}}]\"}},{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"end_turn\",\"message\":\"[{\\\"text\\\": \\\"Based on the search results, here's a comprehensive summary of what an agent runtime does:\\\\n\\\\n## Summary: What an Agent Runtime Does\\\\n\\\\nAn **agent runtime** is the foundational execution engine and infrastructure layer that hosts, manages, and operates AI agents in production. Think of it as the \\\\\\\"nervous system\\\\\\\" that connects the AI brain (LLM) to the hands (tools and actions).\\\\n\\\\n### Core Functions\\\\n\\\\n**1. Execution Management**\\\\n- Processes user inputs and manages the complete request-response lifecycle\\\\n- Handles the reasoning loop where the agent iterates between planning (LLM calls) and execution (tool calls)\\\\n- Maintains program flow and state across multiple interactions\\\\n\\\\n**2. Session & Context Management**\\\\n- Creates isolated execution environments for each conversation (sessions)\\\\n- Maintains conversation history and context across multiple turns\\\\n- Implements sliding windows to control how much context is sent to the LLM\\\\n- Preserves state for up to 8 hours in some implementations\\\\n\\\\n**3. Infrastructure Abstraction**\\\\n- Handles scaling, containerization, and deployment automatically\\\\n- Manages security isolation (often using microVMs for complete CPU, memory, and filesystem isolation)\\\\n- Provides endpoints for accessing specific agent versions\\\\n- Abstracts away operational complexity so developers focus on agent logic\\\\n\\\\n**4. Tool & Action Orchestration**\\\\n- Dispatches tool calls to appropriate executors (HTTP APIs, code sandboxes, databases, etc.)\\\\n- Manages authentication and credential injection for external services\\\\n- Handles parallel or sequential tool execution\\\\n- Validates inputs and processes results\\\\n\\\\n**5. Reliability & Recovery**\\\\n- Implements automatic reconnection for dropped connections\\\\n- Provides replay and recovery mechanisms when processes crash\\\\n- Maintains execution durability through stable execution IDs\\\\n- Supports streaming responses for long-running operations\\\\n\\\\n**6. Multi-Agent Coordination**\\\\n- Manages handoffs between specialist agents\\\\n- Supports supervisor patterns, delegation, and escalation\\\\n- Creates thread hierarchies within sessions for complex conversations\\\\n\\\\n**7. Observability & Governance**\\\\n- Emits structured trace events for debugging and monitoring\\\\n- Provides audit trails for all agent actions\\\\n- Integrates with logging and tracing systems\\\\n- Enforces rate limits and security policies\\\\n\\\\n### The Bottom Line\\\\n\\\\nAn agent runtime is **not** just an LLM in a loop—it's the complete infrastructure that makes AI agents production-ready, handling everything from session isolation and crash recovery to multi-agent orchestration and security, so developers can focus on building agent capabilities rather than operational plumbing.\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"b307af29fdc4cd68\"}" + }, + { + "field": "sessionId", + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" + }, + { + "field": "traceId", + "value": "6aa82ccc63d06bd964d302913ef6da1a" + }, + { + "field": "spanId", + "value": "b307af29fdc4cd68" + }, + { + "field": "@ptr", + "value": "Cs4BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASOBoYAgap5vtFAAAABDqJQYwABqqCzSAAAANSIAEo3568h4o0MNa0vYeKNDhSQK39E0jUxQdQiZsHIAIQMBgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406435925825687,\"observedTimeUnixNano\":1789406436786662185,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Summarize what an agent runtime does.\\\"}]\"}},{\"role\":\"tool\",\"content\":{\"content\":\"[{\\\"toolResult\\\": {\\\"status\\\": \\\"success\\\", \\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"content\\\": [{\\\"text\\\": \\\"Title: Agent Runtime: Definition & How It Differs from ...\\\\nURL: https://www.knowlee.ai/\\\\nPublished: N/A\\\\nAuthor: Knowlee\\\\nHighlights:\\\\nKnowlee builds an AI workforce for B2B enterprises: autonomous agent teams that take on full workflows across sales, recruiting, marketing, operations, and finance. Custom systems deployed in 4–8 weeks, governed by an audit trail and human oversight from day one — not bolted on after the fact. Built for mid-market and enterprise teams that need AI in production, not another pilot.\\\\n...\\\\nKnowlee runs five production verticals on the same orchestration backbone — 4Sales (autonomous prospecting, multi-channel outreach, meeting booking), 4Talents (candidate sourcing, scoring, interview coordination), 4Marketers (24-capability marketing operating layer across SEO, content, strategy, monitoring, and reporting), 4Operations (workflow orchestration, voice-of-customer analysis, internal AI tooling), and 4Finance (active-offer quality control, renewal management, contract financial-risk scoring). Each vertical inherits the same kanban, knowledge graph, and governance schema.\\\\n...\\\\nEvery vertical is a surface on Knowlee OS, the orchestration layer that runs a fleet of agents as one coherent system. Multi-agent kanban, MCP fabric with documented routing cascades, jobs registry with audit metadata on every execution, and a Neo4j knowledge graph (the Brain) that compounds across verticals. The next agent never starts from zero — every prior agent's output is queryable.\\\\n...\\\\nMost enterprise AI projects take six months and stall. Knowlee compresses that to under two months: week 1 audits the broken process, weeks 2–3 build the custom system, week 4 goes live. You own the code, the models, and the infrastructure — no licensing fees, no vendor lock-in. Integrates with existing CRM, communication, and data stacks rather than forcing migration.\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-how-it-works.html\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nThe Amazon Bedrock AgentCore Runtime handles scaling, session management, security isolation, and infrastructure management, allowing you to focus on building intelligent agent experiences rather than operational complexity. By leveraging the features and capabilities described here, you can build, deploy, and manage sophisticated AI agents that deliver value to your users while helping to maintain enterprise-grade security and reliability.\\\\n...\\\\nAn AgentCore Runtime is the foundational component that hosts your AI agent or tool code. It represents a containerized application that processes user inputs, maintains context, and executes actions using AI capabilities. When you create an agent, you define its behavior, capabilities, and the tools it can access. For example, a customer support agent might answer product questions, process returns, and escalate complex issues to human representatives.\\\\n...\\\\nYou can build and deploy agents to AgentCore Runtime using the AgentCore CLI , the AgentCore Python SDK or directly through AWS SDKs . With the AgentCore Python SDK, you can define your agent using popular frameworks like LangGraph, CrewAI, or Strands Agents. The SDK handles infrastructure complexities, allowing you to focus on the agent’s logic and capabilities.\\\\n...\\\\nEach AgentCore Runtime maintains immutable versions that capture a complete snapshot of the configuration at a specific point in time:\\\\n...\\\\nEndpoints provide addressable access points to specific versions of your AgentCore Runtime. Each endpoint:\\\\n...\\\\nHas a unique ARN for invocation\\\\n...\\\\nReferences a specific version of your Agent Runtime\\\\n...\\\\n- Provides stable access to your agent even as\\\\n...\\\\n- The \\\\\\\"DEFAULT\\\\\\\" endpoint is automatically created when you call CreateAgentRuntime and points to the latest version\\\\n- When you update your AgentCore Runtime, a new version is created but the `DEFAULT` endpoint automatically updates to reference it\\\\n- You can create custom endpoints with the CreateAgentRuntimeEndpoint operation for different environments (dev, test, prod)\\\\n- When a user makes a request to an endpoint, the request is resolved to the specific agent version referenced by that endpoint\\\\n...\\\\nSessions represent individual interaction contexts between users and your AgentCore Runtime. Each session:\\\\n...\\\\n- Is identified by a unique `runtimeSessionId` provided by your application, or by the Runtime itself in the first invocation if the `runtimeSessionId` is left empty\\\\n- Runs in a dedicated microVM with completely isolated CPU, memory, and filesystem resources\\\\n- Preserves context across multiple interactions within the same conversation\\\\n- Can persist for up to 8 hours of total runtime\\\\n...\\\\n- After session termination, the entire microVM is terminated and memory is sanitized\\\\n- A subsequent request with the same `runtimeSessionId` after termination will create a new execution environment\\\\n- Session isolation prevents cross-session data contamination and ensures security\\\\n- Session state is ephemeral and should not be used for long-term durability (use AgentCore Memory for context durability)\\\\n...\\\\nThis complete isolation between sessions is\\\\n...\\\\nfor enterprise security,\\\\n...\\\\nInbound authentication controls who can access your agents through AWS Identity and Access Management or OAuth 2.0, validating bearer tokens from identity providers before allowing requests to proceed. Outbound authentication enables your agents to securely access third-party services using OAuth or API keys, with AgentCore Identity managing credentials in either user-delegated or autonomous modes. For more information, see Authenticate and authorize with Inbound Auth and Outbound Auth.\\\\n...\\\\nInbound Auth, powered by AgentCore Identity, controls who can access and invoke your agents or tools in AgentCore Runtime.\\\\n...\\\\nOutbound Auth, powered by Amazon Bedrock\\\\n...\\\\nIdentity, lets your\\\\n...\\\\non AgentCore Runtime securely\\\\n...\\\\nthird-party\\\\n...\\\\nAgentCore Runtime supports long-running workloads through:\\\\n...\\\\nAgents can stream partial results as they become available rather than waiting for complete processing. This lets\\\\n...\\\\nprovide a more\\\\n...\\\\nuser experience, especially for operations that generate large amounts of content or take\\\\n...\\\\ntime to complete\\\\n...\\\\nFor more information, see Stream agent responses\\\\n...\\\\nThe AgentCore Runtime provides WebSocket support for real-time bidirectional streaming connections for interactive agent communication. This enables more responsive and interactive agent experiences. For more information, see Get started with bidirectional streaming using WebSocket.\\\\n...\\\\nAgentCore Runtime supports multiple communication protocols:\\\\n...\\\\n, see Deploy\\\\n...\\\\n’s how to get\\\\n...\\\\nCore Runtime. For the complete example, see Get started with the\\\\n...\\\\n- Define your agent logic using any AI framework or custom code\\\\n- Add the required HTTP endpoints using the AgentCore SDK or custom implementation\\\\n- Package dependencies in a requirements.txt file\\\\n...\\\\n- Build and push a container image to Amazon ECR directly or via the AgentCore SDK\\\\n- Create an AgentCore Runtime using the container image\\\\n- The initial version (V1) and DEFAULT endpoint are created automatically\\\\n...\\\\n- Generate a unique session ID for each user conversation\\\\n- Call the InvokeAgentRuntime or InvokeAgentRuntimeWithWebSocketStream operation with your agent’s ARN and session ID\\\\n- Pass user input in the request payload\\\\n...\\\\nsessions, and\\\\n...\\\\n- Use the same session ID for follow-up interactions to maintain context\\\\n- Review logs, traces, and observability metrics\\\\n- Deploy updates by modifying your AgentCore Runtime (creates new versions)\\\\n- Control rollout by updating endpoints to point to new versions\\\\n\\\\n---\\\\n\\\\nTitle: Agent Runtime  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation\\\\nURL: https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\nAgent Runtime is a fully-managed, opinionated runtime that you can use to deploy, operate, and scale agentic applications. Agent Runtime abstracts away the underlying infrastructure, which lets you focus on agent logic instead of operations.\\\\n...\\\\nAgent Runtime lets you do the following:\\\\n...\\\\n- Deploy and scale agents with a managed runtime and end-to-end management capabilities.\\\\n- Customize the agent's container image with build-time installation scripts for system dependencies.\\\\n- Use security features including VPC-SC compliance and configuration of authentication and IAM.\\\\n- Access models and tools such as function calling.\\\\n- Deploy agents built using different languages and frameworks and the Agent2Agent open protocol.\\\\n...\\\\nThe workflow for building an agent on Agent Runtime is:\\\\n...\\\\n1. Set up the environment: Set up your Google project and install the latest version of the Agent Platform SDK for Python.\\\\n2. Develop an agent: Develop an agent that can be deployed on Agent Runtime.\\\\n3. Deploy the agent: Deploy the agent on the Agent Runtime managed runtime.\\\\n4. Use the agent: Query the agent by sending an API request.\\\\n5. Manage the deployed agent: Manage and delete agents that you have deployed to Agent Runtime.\\\\n...\\\\nAgent Runtime supports deploying agents written in any programming language and agent framework, as long as the agent application can be containerized and conforms to the runtime contract:\\\\n...\\\\nFor supported languages and frameworks, higher-level tools and SDKs are available to simplify deployment. The following table describes the level of support Agent Runtime provides for various agent frameworks:\\\\n...\\\\n| Support level | Agent frameworks |\\\\n| --- | --- |\\\\n...\\\\n| Custom template: You can adapt a custom template to support deployment to Agent Runtime from your framework. For deploying custom containers, see the Runtime contract. | CrewAI, custom frameworks |\\\\n...\\\\n| Agent Platform SDK integration: Agent Runtime provides managed templates per framework in the Agent Platform SDK and documentation. | LangChain, LangGraph, AG2, LlamaIndex |\\\\n...\\\\n| Full integration: Features are integrated to work across the framework, Agent Runtime, and broader Google Cloud ecosystem. | Agent Development Kit (ADK) Python: Deploy using the adk CLI. Go: Deploy using the adkgo CLI. |\\\\n...\\\\nThe Agents CLI is the unified command-line interface and skill set for the Gemini Enterprise Agent Platform. It provides coding agents and developers with a predictable path through the Agent Development Lifecycle: scaffold, evaluate, deploy, publish, and observe. The Agents CLI provides the following:\\\\n...\\\\n- Pre-built agent templates: ReAct, RAG, multi-agent, and other templates.\\\\n- Interactive playground: Test and interact with your agent.\\\\n- Automated infrastructure: Uses Terraform for streamlined resource management.\\\\n- CI/CD pipelines: Automated deployment workflows leveraging Cloud Build.\\\\n- Observability: Built-in support for Cloud Trace and Cloud Logging.\\\\n...\\\\nThe`agent_engines` module within the Agent Platform SDK is being refactored to a client-based design for the\\\\n...\\\\nalign with the Agent Development Kit(ADK) and Google Gen AI SDK in canonical type representations\\\\n...\\\\nThis ensures a consistent and standardized way of representing data types across different SDKs\\\\n...\\\\nwhich simplifies interoperability\\\\n...\\\\nreduces conversion overhead.\\\\n...\\\\n- For client-level scoping of Google Cloud parameters in multi-project multi-location applications. This allows an application to manage interactions with resources across different Google Cloud projects and geographical locations by configuring each client instance with its specific project and location settings.\\\\n- To improve discoverability and cohesiveness of Agent Runtime services.\\\\n\\\\n---\\\\n\\\\nTitle: What Is an AI Agent Runtime Environment?\\\\nURL: https://blaxel.ai/\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n---\\\\ndescription: Blaxel is the perpetual sandbox platform that keeps infinite secure sandboxes on automatic standby with co-hosted agents and context for near instant latency. Achieve 25ms resume times, eliminate cold starts, and only pay for what you use.\\\\ntitle: Blaxel: The Persistent Sandbox Platform\\\\nimage: https://blaxel.ai/illustrations/media-thumbnail.png\\\\n---\\\\n...\\\\nBlaxel lets you keep infinite, secure sandboxes on automatic standby, while co-hosting your agents and context for near instant latency.\\\\n...\\\\n## \\\\\\\\> Stop treating sandboxes as ephemeral runners. Truly intelligent AI agents should be able to have access to their own computers\\\\\\\\_\\\\n...\\\\nTraditional sandboxes expire in hours to days, destroying context and forcing you to build heavy orchestration just to manage state — or accept a slow, fresh start every run.\\\\n...\\\\nBlaxel Sandboxes work like your laptop but for agents: close the lid, it suspends; open it, it resumes instantly where you left it. Persist context and state forever — and reach near-instant execution by running your agent logic, context and inference on the same colocated backbone too.\\\\n...\\\\n## Give a computer to your agent\\\\n...\\\\nRun AI code in persistent environments that wait on standby indefinitely when not used, eliminating cold starts without complex orchestration. Instantly scale to 50,000+ concurrent machines.\\\\n...\\\\n### Auto-suspend sandboxes when they're not used. Persist forever.\\\\n...\\\\nOur flagship lifecycle handler automatically scales sandboxes to zero when idle, with a full memory + filesystem snapshot. Keep infinite sandboxes in standby forever. Resume instantly with identical process state.\\\\n...\\\\n### World-class 25ms boot\\\\n...\\\\nBlaxel Sandboxes resume from standby in \\\\\\\\~25ms with full memory state. Filesystem runs in memory, for unbeatable performance for almost all sandbox operations.\\\\n...\\\\nAgent Drive lets you share context across agents and sessions in real-time. And with Volumes, retain data for years with a fully redundant solution.\\\\n...\\\\n## Run agents right next to their computers\\\\n...\\\\nCo-host the agent loop, MCP servers, and batch tasks directly alongside your sandboxes and volumes to eliminate network hops and ensure the lowest possible end-to-end latency.\\\\n...\\\\n### Colocate your agents for ultra low latency\\\\n...\\\\nHost agents made with any framework on the same backbone as their sandboxes to achieve local-like network latency.\\\\n...\\\\n### Run batch jobs on our elastic backbone\\\\n...\\\\nSpawn thousands of jobs in individual sandboxes in seconds with Blaxel SDK. Instant scale on demand.\\\\n...\\\\n### Host MCP servers close to your agents\\\\n...\\\\nRun remote MCP servers alongside the agent loop and sandboxes, fully HTTP stream compatible.\\\\n...\\\\nBuilt with security-first architecture and certified compliance standards to meet the most stringent enterprise requirements: SOC 2, HIPAA, ISO 27001.\\\\n...\\\\n### Zero data retention\\\\n...\\\\nEach sandbox runs in an individual microVM with the root filesystem in memory, so all data is wiped forever when the sandbox is destroyed.\\\\n...\\\\nsandboxed compute environments\\\\\\\",\\\\\\\"\\\\n...\\\\n\\\\\\\",\\\\\\\"microVM\\\\\\\",\\\\\\\"persistent sandboxes\\\\\\\",\\\\\\\"standby sandboxes\\\\n...\\\\ntech startup infrastructure\\\\n\\\\n---\\\\n\\\\nTitle: docs/concepts.md\\\\nURL: https://github.com/tangle-network/agent-runtime/blob/cc4dc3f3/docs/concepts.md\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n> **In plain terms:** This is the one-page mental model of agent-runtime —\\\\n> read it first if you're meeting the package cold. agent-runtime is a small\\\\n> shared foundation that handles the plumbing every AI agent needs — running a\\\\n> task, streaming a chat reply, reconnecting a dropped connection, picking a\\\\n> model — so you only write the parts unique to your agent. The one takeaway:\\\\n> it owns a handful of reusable building blocks and leaves all the\\\\n> domain-specific work — your tools, prompts, and scoring rules — to you.\\\\n...\\\\nagent-runtime is a thin, shared foundation layer. It owns five things and\\\\ndelegates the rest. Read this file once and the rest of the API falls into\\\\nplace.\\\\n...\\\\n## The five layers\\\\n...\\\\n```\\\\n ┌──────────────────────────┐\\\\n │ Domain code (yours) │\\\\n │ tools, rubric, prompts │\\\\n └────────────┬─────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Agent manifest ─ defineAgent({ surfaces, run, … }) │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Task lifecycle ─ runAgentTask / runAgentTaskStream │\\\\n │ observe → validate → decide → act → eval │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Chat-turn lifecycle ─ handleChatTurn(...) │\\\\n │ NDJSON + session.run.* envelope + persist/trace hooks │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Execution continuity (substrate-owned) │\\\\n │ box.streamPrompt — auto-reconnect in-call; X-Execution-ID\\\\n │ header for cross-process. deriveExecutionId is the\\\\n │ convention helper. │\\\\n └───────────────────────────────────────┬─────────────────┘\\\\n │\\\\n ┌───────────────────────────────────────┴─────────────────┐\\\\n │ Backends + catalog │\\\\n │ createOpenAICompatibleBackend, createSandboxPromptBackend,\\\\n │ getModels / resolveChatModel / validateChatModelId │\\\\n └─────────────────────────────────────────────────────────┘\\\\n...\\\\nEach layer composes the one below it. You can use the bottom layers\\\\nalone (a raw backend + the model catalog), or the whole stack\\\\n(`defineAgent` → `handleChatTurn`) — they're the same primitives\\\\nnested.\\\\n...\\\\nEvery `runAgentTask` is a small state machine over an `AgentAdapter`:\\\\n...\\\\n- **observe** → snapshot domain state (read-only).\\\\n- **validate** → score the snapshot against the eval rubric.\\\\n- **decide** → `act` (perform a domain action) | `ask` (ask the user\\\\n something) | `stop` (this turn is done, here's the outcome).\\\\n- **act** → effect the action; loop.\\\\n...\\\\nThe adapter is *yours*. The lifecycle, the eval lift, the stop semantics,\\\\nthe cost ledger — all substrate. Streaming is the same shape:\\\\n`runAgentTaskStream` yields `RuntimeStreamEvent`s as the loop progresses.\\\\n...\\\\nLong-running execution durability — reconnect, replay, dedup — is the\\\\nsubstrate's job, not agent-runtime's. The `@tangle-network/sandbox`\\\\nSDK + orchestrator already handle it:\\\\n...\\\\n- **In-call reconnect**: `box.streamPrompt` extracts `executionId` from\\\\n the response's `execution.started` event and replays via the runtime\\\\n endpoint if the stream drops. Transparent — callers do nothing.\\\\n...\\\\n- **Cross-process reconnect**: a fresh Worker can resume a prior\\\\n Worker's execution by POSTing to the orchestrator's\\\\n `/agents/run/stream` with the `X-Execution-ID` header. The SDK's\\\\n public `PromptOptions` does not yet surface this; products bypass the\\\\n SDK and call the orchestrator directly when they need it (see\\\\n tax-agent's `sessions.ts`).\\\\n...\\\\ns buffer is\\\\n...\\\\nagent-runtime owns one helper, `deriveExecutionId({ projectId,\\\\nsessionId, turnIndex })`, that produces the stable id the product\\\\npersists on its session row.\\\\n...\\\\nWhat lives in the Worker: auth, access control, product DB writes,\\\\nprompt composition, routing. What lives in the substrate: the\\\\nlong-running execution, event buffering, replay-on-reconnect, dedup.\\\\nThe Worker stays a routing + persistence layer — it does not host\\\\nexecution state.\\\\n...\\\\n`defineAgent(...)` is how a vertical declares the **surfaces** (the full\\\\n`AgentProfile`: prompt, skills, tools, MCP, hooks, subagents, and extensions), the\\\\n**knowledge** requirements, the **rubric**, and the **run** function\\\\nthat ties it all together. The manifest is what the eval harness\\\\nbenchmarks, what the analyst loop improves, and (in time) what the\\\\ngenerated scaffold produces.\\\\n...\\\\nKeep `defineAgent` *declarative*. Domain logic — the actual tool calls,\\\\nthe actual rubric scoring — lives in functions the manifest references,\\\\nnot inline.\\\\n...\\\\nEvery product chat handler asks the same questions and gets the same\\\\nanswers wrong (or differently). Substrate primitive:\\\\n...\\\\n- **`resolveChatModel(candidates, fallback)`** — first-non-blank\\\\n precedence over caller-supplied candidates (`request → workspace →\\\\n env`, in whatever order *you* want). Policy-free.\\\\n...\\\\n- **`validateChatModelId(modelId, { allowlist?, routerBaseUrl? })`** —\\\\n rejects malformed ids and ids absent from both the caller's\\\\n `allowlist` and the live router catalog. **Fails closed**: when the\\\\n catalog can't be fetched, an unverifiable id is rejected.\\\\n...\\\\n- **`getModels` / `resolveRouterBaseUrl`** —\\\\n the catalog fetch + base-URL helpers.\\\\n...\\\\nThis module has **no React, no `process.env` assumption** — it runs\\\\nunchanged in Node and in Cloudflare Workers.\\\\n...\\\\n## Backends\\\\n...\\\\n`createOpenAICompatibleBackend({ baseUrl, model, apiKey })` and\\\\n`createSandboxPromptBackend({ ... })` are the two production backends.\\\\nBoth stream. `policy.fallbackModels: [...]` rotates through a named list\\\\non transient failure — that's the only fallback you should ever wire,\\\\nand it's explicit.\\\\n...\\\\nThe doctrine is in `AGENTS.md`: **no silent fallbacks**. Required fields\\\\nfail loud; named rotations are opt-in.\\\\n...\\\\n## What this package does NOT own\\\\n...\\\\nDomain policy. Models. Tools. Connectors. UI. Prompts. Rubrics. Those\\\\nlive in your vertical. The runtime is reusable across many kinds of\\\\nagents because nothing in this list is baked into it.\\\\n\\\\n---\\\\n\\\\nTitle: The anatomy of an agent runtime. A companion to Late-Bound Sagas: Why… | by Viren Baraiya | Agentspan | Apr, 2026 | Medium\\\\nURL: https://medium.com/agentspan/the-anatomy-of-an-agent-runtime-e6eb10bdfcdd\\\\nPublished: 2026-04-29T20:38:13.000Z\\\\nAuthor: Viren Baraiya\\\\nHighlights:\\\\nThis post dives deeper into the architecture of an agent runtime — one built around a clean separation between planning and execution, not just an LLM in a loop.\\\\n...\\\\nThe LLM is the brain. The tools are the hands. The runtime is the nervous system that keeps them from killing you. Most teams build the brain and the hands and then wonder why the thing falls over in production. This post is about the nervous system.\\\\n...\\\\n## The two planes: planner and executor\\\\n...\\\\nThe planner plane is the LLM. The executor plane is everything else. The boundary between them is the runtime.\\\\n...\\\\nThe planner has one job: given the trajectory so far, emit the next intent. It is a pure function —`f(history) -> intent`— in the mathematical sense. It does not touch the network. It does not open files. It does not read the clock. If it needs the current time, the current time is in`history`, because the runtime put it there on a previous step. The planner is stateless beyond its prompt.\\\\n...\\\\nThe executor has one job: make the intent real. It takes the intent off a queue, runs the corresponding code, and reports a result. The executor is where your code lives. It’s allowed to be dirty — open sockets, call Stripe, mutate disk. The executor’s relationship to the planner is mediated entirely by the ledger.\\\\n...\\\\nin Python make it idiomatic. The decorator compiles the function into a workflow definition; the runtime steps through it, calling the LLM to fill in the`plan(...)` blanks and dispatching workers to fulfill the`execute(...)` ones. In Agentspan's case the decorator becomes a Conductor workflow whose LLM-decided steps live as loop nodes that the planner extends at\\\\n...\\\\nIdentity. Every run has a stable ID; every step within it has a stable address that survives retries. That addressability is what turns a flat task list into a graph the runtime can navigate — extending it as the agent runs, resuming into it after a crash, unwinding it for compensation.\\\\n...\\\\nSDK-embedded workers — where your “tool” is a Python function that the agent library calls directly in-process — collapse the dispatcher into your code. They feel simpler at the hello-world stage. They become a cage the moment one of three things is true: you want to scale the tool independently of the planner (one high-throughput scraper, one high-memory reasoning node); you want to write the tool in a language other than the planner’s (your underwriting model has lived in Java for fifteen years, and nobody is rewriting it); you want to bound the blast radius of a tool crash (the tool segfaulted on a pathological PDF; your planner should not go down with it).\\\\n...\\\\nA workers-as-protocol-clients model — where a worker is any process that speaks the runtime’s task protocol and polls for work — addresses all three. The planner doesn’t know or care where`get_weather` lives. It proposes`get_weather(\\\\\\\"NYC\\\\\\\")`; the runtime writes the proposal and enqueues a task on a queue named`get_weather`; any worker subscribed to that queue picks it up, runs, and acks. Python, Go, Java, a serverless endpoint, an HTTP API — the runtime doesn't distinguish. Agentspan ships sugar variants (`http_tool`,`api_tool`,`mcp_tool`) that let the server itself act as the worker for pure-HTTP tools, so you don't need to run anything separate to call Stripe. The substrate is the same regardless: the planner proposes, the dispatcher queues, a worker — somewhere — handles the queue. Conductor has been shaping this protocol since 2016.\\\\n...\\\\nWhen you write an agent in one of the Agentspan SDKs — Python, TypeScript, Java, Go, .NET, Ruby, or Rust — you are not writing an agent. You are writing a specification: which model to use, which tools it has, which strategies apply (handoff, sequential, parallel, swarm), which guardrails fire on which events, which memory and context-management policies apply, which credentials bind where, which evals run when. Callables get replaced with`_worker_ref` markers at serialization. The spec lands on the server as a structured JSON DTO. Two stages run before the agent ever executes.\\\\n...\\\\nThe workflow that comes out is deterministic in Conductor’s sense. Conductor does not know or care that an LLM_CHAT_COMPLETE task calls an LLM, that a SUB_WORKFLOW is another agent, or that a HUMAN task is waiting on a recruiter’s click. It sees a graph of tasks, schedules them, records their results, retries per policy, applies rate limits, emits metrics, persists state. Durable workflow execution, distributed priority task queues, crash recovery, replay from a checkpoint, pause and resume — everything Conductor has done for a decade orchestrating Netflix’s pipelines now runs under the agent.\\\\n...\\\\nThe runtime begins with a single root node: the task. It asks the planner for the next intent, passing the root’s input as the history. The planner returns an intent — call it`plan_0`. The runtime writes`plan_0` as a plan step. Its output contains a list of N proposed effects — possibly one, possibly many if the model emitted parallel tool calls. The runtime materializes those N effects as scheduled steps, all wired together as children of the plan, in one transactional commit. That commit is the monotonic durable graph doing its job: either all the children are scheduled or none of them are.\\\\n...\\\\nNow the runtime dispatches the N effects. Each effect travels to a worker queue; each worker pulls, executes, and acks with a result. Each result is a ledger write that flips the step’s status to a terminal state. The runtime watches for the fan-in: once all N children have completed, it asks the planner for the next intent, handing it the updated history — which now includes`plan_0` and all its children. The planner emits`plan_1`. The graph extends.\\\\n...\\\\nRecovery is straightforward. The runtime starts a saga supervisor from the ledger: it reads the saga’s graph, finds the frontier (the set of steps not yet in a terminal state, and the most recent plan without a successor), and resumes. If a step was scheduled but never picked up by a worker, it re-enqueues it. If a step was in flight — dispatched, no result yet — the worker either reports back (it survived) or the step times out and the runtime decides whether to redispatch (it didn’t). If a plan is waiting on its children, the runtime waits. If all children are done, it calls the planner. Recovery doesn’t need a special code path; it’s the same code path as forward progress, started from a different place in the graph.\\\\n...\\\\nA signal is a message addressed to`saga_id`, written to the ledger as a`signal` kind step, and delivered to the planner on its next call as part of the history. That's the whole mechanism. The things that fall out of it:\\\\n...\\\\nThe design move is to refuse to pick one. The ledger stays the source of truth; the planner sees a projection of it; and the projection is a first-class, pluggable function the operator chooses per agent:\\\\n...\\\\nA runtime for agents — the nervous system between the brain and the hands — does six things. Everything else is sugar or consequence.\\\\n...\\\\nIt owns the program counter, so your code dying does not kill the saga. It witnesses every intent before it becomes an effect, so “did this happen?” is always answerable. It gates every effect until the ledger can account for it, so you never charge the customer twice. It delivers every external signal as a first-class ledger event, so the outside world can interrupt a running agent without racing it. It projects the growing history into the bounded context of a non-deterministic planner, so the model sees exactly what the runtime decides it should see. It refuses to execute any code the user wrote except as a dispatched task in a worker it does not share a process with, so one bad tool cannot take down the brain.\\\\n...\\\\nAn agent is not an LLM in a loop. It’s a saga the model writes as it runs, and the thing that makes it real is the runtime underneath.\\\\n\\\\n---\\\\n\\\\nTitle: The rise of the agent runtime: The compute platform behind ...\\\\nURL: https://thenewstack.io/\\\\nPublished: N/A\\\\nAuthor: Sep 11th 2026 1:40pm, by \\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t \\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\tBill Doerrfeld\\\\nHighlights:\\\\nfor agents \\\\n\\\\n Aug\\\\n...\\\\nst 2026 10:00am, by\\\\n...\\\\n, Virat Patel and Albert Chang\\\\n...\\\\nModus's operandi: To give AI agents just the right amount of context \\\\n\\\\n Jul 29th 2026 9:00am, by Paul Sawers\\\\n...\\\\nwas supposed to solve the agent tooling problem. It missed a step. \\\\n\\\\n Aug 31st 2026 4:04pm, by Amanda Caswell\\\\n...\\\\n26 1\\\\n...\\\\nam, by\\\\n...\\\\nShopify's CEO threatened to ban Claude Code. Anthropic had already closed the feature request. DeepSeek open sources an agent harness where everything is a plugin Anthropic's watermark survives copy-paste, but not the real dev workflow OpenAI's Astra can do a researcher's week of work. That's the problem. Alibaba's new model promises Opus 4.6-level performance on your laptop\\\\n...\\\\nIntroduction to API Management MCP vs. API Gateways: They’re Not Interchangeable When Is MCP Actually Worth It? Why Your Legacy APIs Are a Roadblock for AI Agents Designing APIs for agents \\\\n\\\\n Introduction\\\\n\\\\n---\\\\n\\\\nTitle: N/A\\\\nURL: https://koreai.mintlify.app/agent-platform/runtime\\\\nPublished: N/A\\\\nAuthor: N/A\\\\nHighlights:\\\\n# Agent Runtime\\\\n...\\\\nThe Runtime is the execution engine of Agent Platform. It receives messages from users and systems, executes agent logic, invokes tools, manages conversation state, and returns responses. Every agent interaction — regardless of channel or deployment environment — passes through the Runtime.\\\\n...\\\\nWhen a user sends a message, the Runtime processes it through a structured pipeline before returning a response.\\\\n...\\\\n```mermaid actions={false} theme={null}\\\\nsequenceDiagram\\\\n participant User\\\\n participant Channel\\\\n participant Runtime\\\\n participant\\\\n...\\\\nLoop\\\\n participant\\\\n...\\\\nparticipant LLM\\\\n\\\\n User->>Channel: Send message\\\\n Channel->>Runtime: Inbound message (HTTP or WebSocket)\\\\n Runtime->>Runtime: Authenticate & resolve session\\\\n Runtime->>ReasoningLoop: Execute message\\\\n loop Until final response or max\\\\n...\\\\n10 iterations\\\\n ReasoningLoop->>LLM: Build prompt + call LLM\\\\n LLM-->>ReasoningLoop: Response (text or tool calls)\\\\n alt Tool call requested\\\\n ReasoningLoop->>Tool: Execute tool\\\\n Tool-->>ReasoningLoop: Tool result\\\\n end\\\\n end\\\\n ReasoningLoop->>Runtime: Final response text\\\\n Runtime->>Runtime: Persist session & emit traces\\\\n Runtime->>Channel: Stream or return response\\\\n Channel-->>User: Response\\\\n...\\\\nThe cycle repeats until the agent produces a final text response or reaches the iteration limit. The default is **10 tool call iterations per turn**, configurable in the agent's execution settings.\\\\n...\\\\n## Tool execution\\\\n...\\\\nTools extend agent capabilities. When the LLM requests a tool call, the Runtime dispatches it to the appropriate executor and returns the result to the reasoning loop.\\\\n...\\\\n| Tool type | What it does |\\\\n| -------------- | ------------------------------------------------------------------------------------------------------- |\\\\n| HTTP | Calls an external REST or GraphQL API with optional auth injection |\\\\n| MCP | Connects to a Model Context Protocol server; tools are discovered from the server's capability manifest |\\\\n| Code | Executes JavaScript or Python in an isolated sandbox |\\\\n| Connector | Uses a named integration (Salesforce, Jira, and others) with credential injection |\\\\n| Workflow | Invokes a registered workflow; supports both synchronous and long-running async execution |\\\\n| Knowledge Base | Queries a SearchAI knowledge base and returns ranked results |\\\\n| Async Webhook | Sends a request to an external system and suspends the session until a callback is received |\\\\n...\\\\n### Execution pipeline\\\\n...\\\\nWhen a tool executes, the Runtime processes it in sequence:\\\\n...\\\\n1. **Resolves the tool binding** from the deployment configuration.\\\\n2. **Validates inputs** against declared parameter types before the call.\\\\n3. **Makes the external call** with the appropriate authentication.\\\\n4. **Processes the result** — available in conversation context for reasoning agents, or as session variables for agents with steps.\\\\n5. **Handles errors** using `ON_ERROR` handlers: retry logic, fallback responses, or escalation triggers.\\\\n...\\\\n## Session management\\\\n...\\\\nEach conversation is represented as a session. A session stores the conversation history, variables, agent state, and execution metadata.\\\\n...\\\\nThe Runtime maintains a sliding window over the conversation history to control how much context is sent to the LLM on each turn. The default window is **40 messages**.\\\\n...\\\\nWhen the window fills, the Runtime can compact older turns into a summary rather than discarding them. This preserves context from earlier in long conversations without increasing token usage. Compaction is disabled by default and can be enabled in **Runtime Config** in Studio.\\\\n...\\\\nThe Runtime uses a configurable strategy to handle multiple messages arriving within the same session:\\\\n...\\\\n## Multi-agent orchestration\\\\n...\\\\nThe Runtime executes multi-agent topologies defined in ABL. When routing rules match, the Runtime transitions the active thread to the target agent, forwards context, and manages the return path.\\\\n...\\\\n| Pattern | What happens at runtime |\\\\n| ---------- | ------------------------------------------------------------------------------------------ |\\\\n| Supervisor | Receives every message; evaluates HANDOFF rules top-to-bottom; routes to first match |\\\\n| Handoff | Transfers conversation to the target agent; optionally returns control when `RETURN: true` |\\\\n| Delegate | Sends a task to a sub-agent; blocks the parent until the sub-agent completes or times out |\\\\n| Fan-out | Dispatches multiple agents in parallel; merges results when all complete |\\\\n| Escalation | Transfers the conversation to a human agent via a connected agent desktop |\\\\n...\\\\n### Thread hierarchy\\\\n...\\\\nWhen a supervisor hands off to a specialist, the Runtime creates a **thread** within the existing session — not a new session. Threads form a stack: handoffs push new threads, completions pop back to the parent. The user experiences one continuous conversation regardless of how many agents participate.\\\\n...\\\\nEach thread maintains its own conversation history and gathered variables, but can read data from parent threads.\\\\n...\\\\nEvery execution path emits structured trace events. Traces are accessible from the Sessions page in Studio.\\\\n...\\\\nenforces per-tenant\\\\n...\\\\nlimits on a rolling 1-\\\"}]}}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"I'll search for information about what an agent runtime does.\\\"}, {\\\"toolUse\\\": {\\\"toolUseId\\\": \\\"tooluse_GmiWbqJ0ZqXHlrVJRzuLQH\\\", \\\"name\\\": \\\"mcpTarget___web_search_exa\\\", \\\"input\\\": {\\\"query\\\": \\\"agent runtime explanation what does it do software architecture\\\", \\\"numResults\\\": 8}}}]\"}}]}},\"attributes\":{\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"db045c4df561a4b5\"}" + }, + { + "field": "sessionId", + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" + }, + { + "field": "traceId", + "value": "6aa82ccc63d06bd964d302913ef6da1a" + }, + { + "field": "spanId", + "value": "db045c4df561a4b5" + }, + { + "field": "@ptr", + "value": "Cs4BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASOBoYAgap5vtFAAAABDqJQYwABqqCzSAAAANSIAEo3568h4o0MNa0vYeKNDhSQK39E0jUxQdQiZsHIAIQMRgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406435926009660,\"observedTimeUnixNano\":1789406436786767635,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":\"\\n You are a helpful assistant. Use tools when appropriate.\\n \"},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"Summarize what an agent runtime does.\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"Based on the search results, here's a comprehensive summary of what an agent runtime does:\\n\\n## Summary: What an Agent Runtime Does\\n\\nAn **agent runtime** is the foundational execution engine and infrastructure layer that hosts, manages, and operates AI agents in production. Think of it as the \\\"nervous system\\\" that connects the AI brain (LLM) to the hands (tools and actions).\\n\\n### Core Functions\\n\\n**1. Execution Management**\\n- Processes user inputs and manages the complete request-response lifecycle\\n- Handles the reasoning loop where the agent iterates between planning (LLM calls) and execution (tool calls)\\n- Maintains program flow and state across multiple interactions\\n\\n**2. Session & Context Management**\\n- Creates isolated execution environments for each conversation (sessions)\\n- Maintains conversation history and context across multiple turns\\n- Implements sliding windows to control how much context is sent to the LLM\\n- Preserves state for up to 8 hours in some implementations\\n\\n**3. Infrastructure Abstraction**\\n- Handles scaling, containerization, and deployment automatically\\n- Manages security isolation (often using microVMs for complete CPU, memory, and filesystem isolation)\\n- Provides endpoints for accessing specific agent versions\\n- Abstracts away operational complexity so developers focus on agent logic\\n\\n**4. Tool & Action Orchestration**\\n- Dispatches tool calls to appropriate executors (HTTP APIs, code sandboxes, databases, etc.)\\n- Manages authentication and credential injection for external services\\n- Handles parallel or sequential tool execution\\n- Validates inputs and processes results\\n\\n**5. Reliability & Recovery**\\n- Implements automatic reconnection for dropped connections\\n- Provides replay and recovery mechanisms when processes crash\\n- Maintains execution durability through stable execution IDs\\n- Supports streaming responses for long-running operations\\n\\n**6. Multi-Agent Coordination**\\n- Manages handoffs between specialist agents\\n- Supports supervisor patterns, delegation, and escalation\\n- Creates thread hierarchies within sessions for complex conversations\\n\\n**7. Observability & Governance**\\n- Emits structured trace events for debugging and monitoring\\n- Provides audit trails for all agent actions\\n- Integrates with logging and tracing systems\\n- Enforces rate limits and security policies\\n\\n### The Bottom Line\\n\\nAn agent runtime is **not** just an LLM in a loop—it's the complete infrastructure that makes AI agents production-ready, handling everything from session isolation and crash recovery to multi-agent orchestration and security, so developers can focus on building agent capabilities rather than operational plumbing.\\n\",\"finish_reason\":\"end_turn\"}}]}},\"attributes\":{\"session.id\":\"12f1f7a2-987b-4448-8f40-dd3da6558611\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82ccc63d06bd964d302913ef6da1a\",\"spanId\":\"298eb7d19929db80\"}" + }, + { + "field": "sessionId", + "value": "12f1f7a2-987b-4448-8f40-dd3da6558611" + }, + { + "field": "traceId", + "value": "6aa82ccc63d06bd964d302913ef6da1a" + }, + { + "field": "spanId", + "value": "298eb7d19929db80" + }, + { + "field": "@ptr", + "value": "Cs4BCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASOBoYAgap5vtFAAAABDqJQYwABqqCzSAAAANSIAEo3568h4o0MNa0vYeKNDhSQK39E0jUxQdQiZsHIAIQMhgB" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406459261910836,\"observedTimeUnixNano\":1789406459462312145,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is the capital of France?\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"a6ec04c4b9d01e94\"}" + }, + { + "field": "sessionId", + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" + }, + { + "field": "traceId", + "value": "6aa82cf32f590bb018df44b95178fe81" + }, + { + "field": "spanId", + "value": "a6ec04c4b9d01e94" + }, + { + "field": "@ptr", + "value": "CswBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASNhoYAgap5vtFAAAABDqJflMABqqCz3AAAANSIAEonsa+h4o0MMvsvoeKNDghQIThAUiablCaTSACEB4YAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406459261583716,\"observedTimeUnixNano\":1789406459462178501,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"\\\\n You are a helpful assistant. Use tools when appropriate.\\\\n \\\"}]\"}},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is the capital of France?\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"finish_reason\":\"end_turn\",\"message\":\"[{\\\"text\\\": \\\"The capital of France is **Paris**. \\\\n\\\\nParis is not only the capital but also the largest city in France, known for its iconic landmarks such as the Eiffel Tower, the Louvre Museum, Notre-Dame Cathedral, and the Arc de Triomphe. It's a major global center for art, fashion, culture, and cuisine.\\\"}]\"}}]}},\"attributes\":{\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"6a274143d6e5f823\"}" + }, + { + "field": "sessionId", + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" + }, + { + "field": "traceId", + "value": "6aa82cf32f590bb018df44b95178fe81" + }, + { + "field": "spanId", + "value": "6a274143d6e5f823" + }, + { + "field": "@ptr", + "value": "CswBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASNhoYAgap5vtFAAAABDqJflMABqqCz3AAAANSIAEonsa+h4o0MMvsvoeKNDghQIThAUiablCaTSACEB0YAQ==" + } + ], + [ + { + "field": "@message", + "value": "{\"resource\":{\"attributes\":{\"telemetry.sdk.language\":\"python\",\"telemetry.sdk.name\":\"opentelemetry\",\"telemetry.sdk.version\":\"1.40.0\",\"service.name\":\"asdf_MyAgent.DEFAULT\",\"aws.log.group.names\":\"/aws/bedrock-agentcore/runtimes/asdf_MyAgent-3s5axvBC6Q-DEFAULT\",\"aws.log.stream.names\":\"otel-rt-logs\",\"deployment.environment.name\":\"bedrock-agentcore:default\",\"cloud.resource_id\":\"arn:aws:bedrock-agentcore:us-west-2:685197708687:runtime/asdf_MyAgent-3s5axvBC6Q/runtime-endpoint/DEFAULT:DEFAULT\",\"cloud.platform\":\"aws_bedrock_agentcore\",\"cloud.provider\":\"aws\",\"cloud.region\":\"us-west-2\",\"telemetry.auto.version\":\"0.17.0-aws\",\"aws.local.service\":\"asdf_MyAgent.DEFAULT\",\"aws.service.type\":\"gen_ai_agent\"}},\"scope\":{\"name\":\"strands.telemetry.tracer\"},\"timeUnixNano\":1789406459262067251,\"observedTimeUnixNano\":1789406459462420490,\"severityNumber\":9,\"severityText\":\"\",\"body\":{\"input\":{\"messages\":[{\"role\":\"system\",\"content\":\"\\n You are a helpful assistant. Use tools when appropriate.\\n \"},{\"role\":\"user\",\"content\":{\"content\":\"[{\\\"text\\\": \\\"What is the capital of France?\\\"}]\"}}]},\"output\":{\"messages\":[{\"role\":\"assistant\",\"content\":{\"message\":\"The capital of France is **Paris**. \\n\\nParis is not only the capital but also the largest city in France, known for its iconic landmarks such as the Eiffel Tower, the Louvre Museum, Notre-Dame Cathedral, and the Arc de Triomphe. It's a major global center for art, fashion, culture, and cuisine.\\n\",\"finish_reason\":\"end_turn\"}}]}},\"attributes\":{\"session.id\":\"81a5dfcb-9d79-4369-b5a2-479a52ca4bf4\",\"event.name\":\"strands.telemetry.tracer\"},\"flags\":1,\"traceId\":\"6aa82cf32f590bb018df44b95178fe81\",\"spanId\":\"6da6023a8bc86c22\"}" + }, + { + "field": "sessionId", + "value": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4" + }, + { + "field": "traceId", + "value": "6aa82cf32f590bb018df44b95178fe81" + }, + { + "field": "spanId", + "value": "6da6023a8bc86c22" + }, + { + "field": "@ptr", + "value": "CswBCo8BCkw2ODUxOTc3MDg2ODc6L2F3cy9iZWRyb2NrLWFnZW50Y29yZS9ydW50aW1lcy9hc2RmX015QWdlbnQtM3M1YXh2QkM2US1ERUZBVUxUEAAaJGY2ZGY3NDIyLWVlZTQtNDhkNS05NDg3LTE0NTZkYjdkZGE1YiIOCIDQ2umJNBDnj/SSijRA0cHR4dszSAASNhoYAgap5vtFAAAABDqJflMABqqCz3AAAANSIAEonsa+h4o0MMvsvoeKNDghQIThAUiablCaTSACEB8YAQ==" + } + ] + ], + "statistics": { + "recordsMatched": 9, + "recordsScanned": 115, + "estimatedRecordsSkipped": 43, + "bytesScanned": 356145, + "estimatedBytesSkipped": 41384, + "logGroupsScanned": 1, + "resultCount": 9 + }, + "status": "Complete" +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/InvokeAgentRuntimeCommand.11e09d7b5858fc78.json b/src/handlers/eval/ondemand/__fixtures__/InvokeAgentRuntimeCommand.cdea366c03c01778.json similarity index 67% rename from src/handlers/eval/ondemand/__fixtures__/InvokeAgentRuntimeCommand.11e09d7b5858fc78.json rename to src/handlers/eval/ondemand/__fixtures__/InvokeAgentRuntimeCommand.cdea366c03c01778.json index fedcc64d6..7bfa94b37 100644 --- a/src/handlers/eval/ondemand/__fixtures__/InvokeAgentRuntimeCommand.11e09d7b5858fc78.json +++ b/src/handlers/eval/ondemand/__fixtures__/InvokeAgentRuntimeCommand.cdea366c03c01778.json @@ -1,6 +1,6 @@ { "contentType": "text/event-stream; charset=utf-8", - "runtimeSessionId": "00000000-0000-4000-8000-4a4a72800001", + "runtimeSessionId": "00000000-0000-4000-8000-a0d9db080001", "response": { "$stream": "data: \"4\"\n\n" }, diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.1623083efa971538.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.1623083efa971538.json deleted file mode 100644 index 4320f369e..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.1623083efa971538.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "queryId": "3c802de9-ea3d-4268-ae53-944d121d2618" -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.20fe8f6b4d378cb8.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.20fe8f6b4d378cb8.json new file mode 100644 index 000000000..020997823 --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.20fe8f6b4d378cb8.json @@ -0,0 +1,3 @@ +{ + "queryId": "a15159fc-0413-478a-9167-a26769f615d9" +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.519fee9aa7093799.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.519fee9aa7093799.json new file mode 100644 index 000000000..f1d6adeef --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.519fee9aa7093799.json @@ -0,0 +1,3 @@ +{ + "queryId": "401dbef7-9e34-4fa8-8354-79ed1e5ed1d3" +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.6610e857ee073463.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.6610e857ee073463.json deleted file mode 100644 index 2cc2d8499..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.6610e857ee073463.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "queryId": "0295bf88-1c2b-40d3-9cf0-7051da35fa27" -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.8981323eb27080a.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.8981323eb27080a.json deleted file mode 100644 index cd9387e26..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.8981323eb27080a.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "queryId": "cdc73753-869e-4222-b606-a7e5b2e7d9a5" -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.90d18f69d460a05c.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.90d18f69d460a05c.json new file mode 100644 index 000000000..54207964e --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.90d18f69d460a05c.json @@ -0,0 +1,3 @@ +{ + "queryId": "ff848def-011c-488e-a7cf-f87888f7fc53" +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.ccaf3d52799299ec.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.ccaf3d52799299ec.json new file mode 100644 index 000000000..0065de803 --- /dev/null +++ b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.ccaf3d52799299ec.json @@ -0,0 +1,3 @@ +{ + "queryId": "99fd92ed-6e43-422e-b16c-f31fbd148143" +} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.f4f9750bf334f026.json b/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.f4f9750bf334f026.json deleted file mode 100644 index 131fdad22..000000000 --- a/src/handlers/eval/ondemand/__fixtures__/StartQueryCommand.f4f9750bf334f026.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "queryId": "50df6ae9-e322-4d47-bb01-af32563ce3e1" -} \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/evaluate.golden.json b/src/handlers/eval/ondemand/__fixtures__/evaluate.golden.json index 458c13bd7..1d0382d1e 100644 --- a/src/handlers/eval/ondemand/__fixtures__/evaluate.golden.json +++ b/src/handlers/eval/ondemand/__fixtures__/evaluate.golden.json @@ -8,17 +8,17 @@ "evaluatorName": "Builtin.Helpfulness", "context": { "spanContext": { - "sessionId": "67ebf93b-65e3-4127-9e13-483b239f256a", - "traceId": "6a7cabfa3bfe9a7348415c7b507648a8" + "sessionId": "12f1f7a2-987b-4448-8f40-dd3da6558611", + "traceId": "6aa82ccc63d06bd964d302913ef6da1a" } }, - "explanation": "The user asked a simple arithmetic question ('What is 2+2?') and requested a concise answer. The assistant's response '2 + 2 = 4' directly and concisely answers the question. The tool output confirmed the answer is 4, and the assistant correctly relayed this information. The response is brief and to the point, matching the user's request for conciseness. This fully satisfies the user's goal with no unnecessary information.", - "value": 0.83, - "label": "Very Helpful", + "explanation": "The user asked for a summary of what an agent runtime does. The assistant provided a comprehensive, well-structured response that:\n\n1. Opens with a clear, concise definition framing the agent runtime as the 'nervous system' connecting LLM to tools\n2. Organizes the information into 7 distinct functional categories with clear headers\n3. Covers all major aspects found in the search results: execution management, session/context management, infrastructure abstraction, tool orchestration, reliability/recovery, multi-agent coordination, and observability\n4. Uses concrete examples and specific details (e.g., '8 hours session persistence', '40 message sliding window', microVM isolation)\n5. Ends with a memorable bottom-line summary that reinforces the key concept\n\nThe response directly addresses the user's goal of understanding what an agent runtime does. It synthesizes information from multiple sources (AWS Bedrock, Google Cloud, Kore.ai, Medium article) into a coherent, readable summary. The formatting with headers and bullet points makes it easy to scan and understand. The response goes beyond a basic answer by providing depth and context while remaining accessible.\n\nThis is an excellent summary that comprehensively covers the topic, is well-organized, draws from multiple authoritative sources, and provides both breadth and appropriate depth. It fully satisfies the user's request and could serve as a reference document.", + "value": 1, + "label": "Above And Beyond", "tokenUsage": { - "inputTokens": 941, - "outputTokens": 118, - "totalTokens": 1059 + "inputTokens": 10934, + "outputTokens": 325, + "totalTokens": 11259 } }, { @@ -27,17 +27,17 @@ "evaluatorName": "Builtin.Helpfulness", "context": { "spanContext": { - "sessionId": "7f983b9f-9569-4a4d-bdc2-5c997ff346dd", - "traceId": "6a7cac0e3fa42bfe5437eef070d1231c" + "sessionId": "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4", + "traceId": "6aa82cf32f590bb018df44b95178fe81" } }, - "explanation": "The user's goal was simple: to have a primary color named. The assistant directly answered the question by naming 'red' as a primary color. Beyond just answering the question, the assistant also provided additional context about all three primary colors in both traditional color theory and the RGB model. This extra information is relevant and educational without being overwhelming. The response directly fulfills the user's request and goes a step further by providing useful context about primary colors in general, which anticipates potential follow-up questions or curiosity. This qualifies as 'Above And Beyond' since it answers the question completely and proactively addresses related information the user might find useful.", - "value": 1, - "label": "Above And Beyond", + "explanation": "The user asked a simple factual question: 'What is the capital of France?' The assistant directly answered the question with 'Paris' and then provided additional context about Paris being the largest city in France and mentioning several famous landmarks and its global significance. The core question was answered immediately and clearly. The additional information, while not strictly necessary, is relevant and enriching without being excessive or misleading. This response directly addresses the user's goal (knowing the capital of France) and provides some bonus context that could be useful. It doesn't quite reach 'Above and Beyond' since the question was simple and the extra information, while nice, doesn't significantly advance any deeper goal. It's a very helpful response that fully answers the question.", + "value": 0.83, + "label": "Very Helpful", "tokenUsage": { - "inputTokens": 859, - "outputTokens": 154, - "totalTokens": 1013 + "inputTokens": 887, + "outputTokens": 172, + "totalTokens": 1059 } } ] diff --git a/src/handlers/eval/ondemand/__fixtures__/session-nonce.json b/src/handlers/eval/ondemand/__fixtures__/session-nonce.json index 8a80220e1..4788b1e71 100644 --- a/src/handlers/eval/ondemand/__fixtures__/session-nonce.json +++ b/src/handlers/eval/ondemand/__fixtures__/session-nonce.json @@ -1 +1 @@ -"1a04a4a7280" \ No newline at end of file +"1a0a0d9db08" \ No newline at end of file diff --git a/src/handlers/eval/ondemand/__fixtures__/simulate.golden.json b/src/handlers/eval/ondemand/__fixtures__/simulate.golden.json index 0e5a89e91..4be1f8d27 100644 --- a/src/handlers/eval/ondemand/__fixtures__/simulate.golden.json +++ b/src/handlers/eval/ondemand/__fixtures__/simulate.golden.json @@ -8,17 +8,17 @@ "evaluatorName": "Builtin.Correctness", "context": { "spanContext": { - "sessionId": "00000000-0000-4000-8000-4a4a72800001", - "traceId": "6a91fe944cf38d6b2d8c3c6a66e63ad4" + "sessionId": "00000000-0000-4000-8000-a0d9db080001", + "traceId": "6aa827630b51ca4a2f0223652eb6be43" } }, - "explanation": "The agent responded with '4' which matches the expected response of '4'. The trailing newline is irrelevant to the correctness of the answer.", + "explanation": "The agent responded with '4' which matches the expected response of '4'. The trailing newline is irrelevant.", "value": 1, "label": "Correct", "tokenUsage": { "inputTokens": 484, - "outputTokens": 53, - "totalTokens": 537 + "outputTokens": 46, + "totalTokens": 530 }, "ignoredReferenceInputFields": [ "assertions" @@ -30,7 +30,7 @@ "sessions": [ { "exampleId": "greet", - "sessionId": "00000000-0000-4000-8000-4a4a72800001" + "sessionId": "00000000-0000-4000-8000-a0d9db080001" } ], "failures": [] diff --git a/src/handlers/eval/ondemand/__fixtures__/trace-window-now.json b/src/handlers/eval/ondemand/__fixtures__/trace-window-now.json index 73edd27c6..9c59cda62 100644 --- a/src/handlers/eval/ondemand/__fixtures__/trace-window-now.json +++ b/src/handlers/eval/ondemand/__fixtures__/trace-window-now.json @@ -1 +1 @@ -1788039188097 \ No newline at end of file +1789491427081 \ No newline at end of file diff --git a/src/handlers/eval/ondemand/ondemand.fixture.test.tsx b/src/handlers/eval/ondemand/ondemand.fixture.test.tsx index b309340b7..3a3fe4315 100644 --- a/src/handlers/eval/ondemand/ondemand.fixture.test.tsx +++ b/src/handlers/eval/ondemand/ondemand.fixture.test.tsx @@ -17,12 +17,19 @@ const FIXTURES = join(import.meta.dir, "__fixtures__"); const FIXTURE_AGENT = "asdf_MyAgent-3s5axvBC6Q"; const SIMULATE_DATASET = join(FIXTURES, "simulate-ds.jsonl"); +// A non-default endpoint: DEFAULT is what the command assumes when --endpoint +// is omitted, so recording against it could not tell the flag from its absence. +const FIXTURE_ENDPOINT = "BETA"; +// Recorded sessions and the window containing them. The `aws/spans` log group +// holding the traces has 30-day retention, so re-recording needs sessions +// invoked within the last 30 days and a window around them — bump all three +// together, or StartQuery fails with MalformedQueryException. const FIXTURE_SESSION_IDS = [ - "67ebf93b-65e3-4127-9e13-483b239f256a", - "7f983b9f-9569-4a4d-bdc2-5c997ff346dd", + "81a5dfcb-9d79-4369-b5a2-479a52ca4bf4", + "12f1f7a2-987b-4448-8f40-dd3da6558611", ]; -const WINDOW_START = "2026-08-12T00:00:00Z"; -const WINDOW_END = "2026-08-13T00:00:00Z"; +const WINDOW_START = "2026-09-14T00:00:00Z"; +const WINDOW_END = "2026-09-15T00:00:00Z"; function createFixtureCore(): CoreClient { const { createControlClient, createDataClient, createIamClient, createLogsClient } = @@ -109,6 +116,8 @@ describe("eval ondemand evaluate (fixture-backed)", () => { "simulate", "--runtime-id", FIXTURE_AGENT, + "--endpoint", + FIXTURE_ENDPOINT, "--payload-template", '{"prompt":"{input}"}', "--dataset", diff --git a/src/handlers/eval/ondemand/simulate/index.tsx b/src/handlers/eval/ondemand/simulate/index.tsx index 7284666e3..17d24f3ed 100644 --- a/src/handlers/eval/ondemand/simulate/index.tsx +++ b/src/handlers/eval/ondemand/simulate/index.tsx @@ -16,7 +16,7 @@ export const createSimulateOnDemandHandler = (core: Core, _io: AppIO) => description: "replay a dataset against a Runtime, then evaluate the sessions client-side", flags: [ flag("runtime-id", "Runtime ID to invoke per scenario", z.string().optional()), - flag("qualifier", "Runtime endpoint qualifier (default DEFAULT)", z.string().optional()), + flag("endpoint", "Runtime endpoint qualifier (default DEFAULT)", z.string().optional()), flag( "payload-template", 'JSON payload template; {input} is the scenario input, e.g. {"prompt":"{input}"}', @@ -66,7 +66,7 @@ export const createSimulateOnDemandHandler = (core: Core, _io: AppIO) => const replay = await core.eval.invokeDataset( { runtimeId, - qualifier: flags["qualifier"], + qualifier: flags["endpoint"], payloadTemplate, headers: parseRuntimeInvokeHeaders(flags["header"]), bearerToken: flags["bearer-token"], @@ -89,7 +89,7 @@ export const createSimulateOnDemandHandler = (core: Core, _io: AppIO) => const traces = await core.eval.getTracesForAgent( { agent: runtimeId, - endpoint: flags["qualifier"], + endpoint: flags["endpoint"], sessionIds: replay.sessions.map((s) => s.sessionId), }, opts, diff --git a/src/handlers/eval/sessionSource.tsx b/src/handlers/eval/sessionSource.tsx index 1f2d2edea..8933efa34 100644 --- a/src/handlers/eval/sessionSource.tsx +++ b/src/handlers/eval/sessionSource.tsx @@ -1,7 +1,7 @@ import type { DataSourceConfig } from "@aws-sdk/client-bedrock-agentcore"; import z from "zod"; import { InputValidationError } from "../../errors"; -import { SourceResolver, type AppIO } from "../../io"; +import { SourceResolver } from "../../io"; import { flag, type Flag } from "../../router"; import { assertMutuallyExclusiveFlags, parseJsonFlag } from "../utils"; import type { SessionSourceValue, SessionWindow } from "./types"; @@ -76,8 +76,14 @@ export class SessionSource { ), ] as const; - static async resolve(flags: SessionSourceFlags, io: AppIO): Promise { - const resolver = new SourceResolver({ stdin: io.stdin }); + // Takes a caller-provided SourceResolver rather than building its own, so a + // command that resolves several stdin-capable flags (e.g. evaluate's + // --data-source-config, --ground-truth, --output-config) shares one resolver + // and its single-stdin guard fires across all of them. + static async resolve( + flags: SessionSourceFlags, + resolver: SourceResolver, + ): Promise { const rawDataSourceConfig = parseJsonFlag( "data-source-config", await resolver.resolveText("data-source-config", flags["data-source-config"]), diff --git a/src/handlers/eval/types.tsx b/src/handlers/eval/types.tsx index 8d84c3656..7c8dd4c29 100644 --- a/src/handlers/eval/types.tsx +++ b/src/handlers/eval/types.tsx @@ -51,6 +51,7 @@ import type { InlineGroundTruth, EvaluationReferenceInput, EvaluationResultContent, + OutputConfig, DataSourceConfig as DataPlaneDataSourceConfig, } from "@aws-sdk/client-bedrock-agentcore"; import type { CoreOptions } from "../../core/types"; @@ -289,6 +290,7 @@ export type StartBatchEvaluationInput = { // Already-parsed --ground-truth (SessionMetadataShape[]) → evaluationMetadata. groundTruth?: SessionMetadataShape[]; kmsKeyArn?: string; + outputConfig?: OutputConfig; }; // Batch insights use the same service job API as batch evaluations, but remain