feat(agent): support Responses steering and project-aware tools
Use the dedicated TJWATER_AGENT_URL and Responses stream protocol. Keep running turns active while users steer or queue follow-ups and edit pending delivery. Refresh the model catalog before generation and preserve approval mode selection. Integrate scoped investigation messaging/presentation, geographic place selection, current Agent composer styles and supporting workbench contracts. Validation: 77 focused Vitest checks, 21 browser cases, lint, typecheck and production build. Preserve direct Server/Agent routing and project authentication.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { Marker, type Map as MapLibreMap, type PaddingOptions } from "maplibre-gl";
|
||||
import type { PlaceSearchItem } from "../api/place-search-client";
|
||||
|
||||
export function markGeocodingLocation(map: MapLibreMap, result: PlaceSearchItem) {
|
||||
const marker = new Marker({ color: "var(--action-blue)" })
|
||||
.setLngLat([result.longitude, result.latitude]).addTo(map);
|
||||
const element = marker.getElement();
|
||||
element.dataset.geocodingMarker = "true";
|
||||
element.setAttribute("role", "img");
|
||||
element.setAttribute("aria-label", `地址定位:${result.name} ${result.address}`);
|
||||
element.title = `${result.name} · ${result.address}`;
|
||||
return marker;
|
||||
}
|
||||
|
||||
export function locateGeocodingResult(map: MapLibreMap, result: PlaceSearchItem, padding: PaddingOptions, reducedMotion: boolean) {
|
||||
map.easeTo({
|
||||
center: [result.longitude, result.latitude],
|
||||
zoom: 16,
|
||||
padding,
|
||||
duration: reducedMotion ? 0 : 500
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user