@sema-agent/core
Version:
Stateless, task-oriented AI agent core
82 lines (81 loc) • 3.18 kB
JSON
{
"repo": "core",
"version": "7.24.2",
"from": "f93e37f388d831881d2ebf4f9c28eca1499896a3",
"to": "v7.24.2",
"added": [
{
"name": "joinRequestUrl",
"kind": "function",
"tier": "stable",
"at": [
"src/brain/route-adjudicator.ts:370",
"src/index.ts:3212"
],
"criteriaCovered": false,
"breaking": false
}
],
"removed": [],
"changed": [],
"narrowed": [
{
"id": "F1",
"source": "behaviorFlips.summary",
"text": "NARROWING of a rendered string (#974, P1): `displayUrlOf` speaks query NAMES only where the query is PURE — every `name=value` pair decoded to its fixed point (≤3 rounds; a malformed escape leaves its `%`) is plain text `[A-Za-z0-9._~[\\]-+,*!'()$ ]`; any impure pair (a value carrying an un-encoded URL, an e-mail, a bare segment with `@`/`:`/`/`, residual `%`) collapses the WHOLE query to one `«redacted»`. WHO NEEDS IT: a deployment whose gateway root carries a query value with an embedded URL whose password contains `&` — the fragment after `&` and before `=` landed in the NAME position and was rendered verbatim (server report, main reproduced 8 forms, test 3 boundaries). WHO IS AFFECTED: operators reading refusals for roots with a legitimate structured value (`?redirect_uri=https://…`, `?email=a@b.com`) now get the differing SEGMENT position instead of its name."
},
{
"id": "F2",
"source": "behaviorFlips.summary",
"text": "NARROWING at construction (#961, P2): a request root may no longer carry a `#fragment` — `assertServableRequestRoot` and `joinRequestUrl` refuse it with a `displayUrlOf`-rendered message that names `#…` without its content; and joining an endpoint onto the root is a URL operation: the suffix joins the PATH, the query rides byte-preserved after it. WHO NEEDS IT: Azure-style gateways (`?api-version=`) whose requests previously went out as `…/v1?api-version=x/chat/completions`. WHO IS AFFECTED: a deployment whose `baseUrl` carried a fragment now fails loudly at construction instead of silently calling the root path."
}
],
"closedSetMembers": [],
"closedSetsUnreadable": [],
"typeKeys": [],
"declarationMoves": [],
"mintMoves": [],
"criteriaObserves": [
{
"kind": "taskEventField",
"name": "tool_end.structured",
"assertions": [
"G3.a"
]
},
{
"kind": "typeMember",
"name": "Checkpoint.version",
"assertions": [
"G4.a",
"G4.b"
]
},
{
"kind": "typeMember",
"name": "Model.baseUrl",
"assertions": [
"G2.a",
"G2.b"
]
},
{
"kind": "typeMember",
"name": "RouteRefusalDetail.requestBaseUrl",
"assertions": [
"G1.a",
"G1.b",
"G1.c"
]
}
],
"consumersHint": {
"cli": [],
"server": [],
"sdk": [],
"note": "scanned cli@9405bc53 server@5ad9cfda sdk@6fe2f08 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
},
"breakingCount": 0,
"breakingItems": [],
"toResolvedAt": "111dfebb7ef8517bbb3d2217dfb60277488a010d"
}