[Discovery Engine] streamAnswer is typed as one AnswerQueryResponse, but REST returns frame arrays
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 64/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- nodejs, typescript
- Lĩnh vực
- api, backend-api-design
Hướng nghiên cứu
Bắt đầu với phương thức streamAnswer được tạo trong src/apis/discoveryengine/v1.ts tại các dòng được tham chiếu, sau đó chạy bản tái hiện được cung cấp bằng npm run repro. Xác minh rằng phản hồi REST được biểu diễn dưới dạng một mảng các frame AnswerQueryResponse và typecheck.ts chấp nhận việc truy cập frame, đồng thời không còn biểu diễn res.data dưới dạng một đối tượng phản hồi duy nhất.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Description
@googleapis/discoveryengine exposes the REST servingConfigs.streamAnswer method as if the default parsed response is one Schema$GoogleCloudDiscoveryengineV1AnswerQueryResponse.
However, direct REST streamAnswer returns a JSON array of AnswerQueryResponse frames. With the default generated method, res.data is that array at runtime, while TypeScript and the generated example tell users to treat res.data as a single object. Typed code can therefore read res.data.answerQueryToken or res.data.answer?.relatedQuestions and get undefined, even though those fields are present in the returned frames.
This is not an answer-quality issue and does not require any live Google call to reproduce. The fixture below is a redacted HTTP 200 direct REST streamAnswer body from Discovery Engine / Vertex AI Search.
Package / source
- Package:
@googleapis/[email protected] - Repo commit checked:
9e92f535023f86df98d8a9dcbdf7777434e3124f - Generated method:
src/apis/discoveryengine/v1.ts,projects.locations.dataStores.servingConfigs.streamAnswer - Source lines: https://github.com/googleapis/google-api-nodejs-client/blob/9e92f535023f86df98d8a9dcbdf7777434e3124f/src/apis/discoveryengine/v1.ts#L57079-L57166
The generated comment says the method is streaming and returns multiple AnswerQueryResponse messages, but the default overload returns Promise<GaxiosResponseWithHTTP2<Schema$GoogleCloudDiscoveryengineV1AnswerQueryResponse>>.
Reproduction
Create these files and run one command:
npm install && npm run repro
package.json:
{
"type": "module",
"scripts": {
"repro": "node repro.mjs && tsc --noEmit --strict --target es2022 --lib es2022 --module nodenext --moduleResolution nodenext typecheck.ts"
},
"dependencies": {
"@googleapis/discoveryengine": "30.0.0",
"@types/node": "24.10.1",
"nock": "14.0.10",
"typescript": "5.9.3"
}
}
repro.mjs:
import fs from 'node:fs';
import nock from 'nock';
import {discoveryengine} from '@googleapis/discoveryengine';
const fixture = JSON.parse(fs.readFileSync('./fixture.json', 'utf8'));
const servingConfig =
'projects/testing-repos-489801/locations/global/collections/default_collection/dataStores/large-session-details-20260618-025044-m6sk/servingConfigs/default_search';
nock.disableNetConnect();
nock('https://discoveryengine.googleapis.com')
.post(`/v1/${servingConfig}:streamAnswer`)
.query(true)
.reply(200, fixture, {'content-type': 'application/json'});
const api = discoveryengine('v1');
const res = await api.projects.locations.collections.dataStores.servingConfigs.streamAnswer({
servingConfig,
requestBody: {query: {text: 'offline replay'}},
});
const framesWithRelatedQuestions = res.data.filter(
frame => frame.answer?.relatedQuestions?.length
);
const framesWithTokens = res.data.filter(frame => frame.answerQueryToken);
console.log(`Array.isArray(res.data): ${Array.isArray(res.data)}`);
console.log(`res.data.answerQueryToken: ${String(res.data.answerQueryToken)}`);
console.log(`res.data.answer?.relatedQuestions: ${String(res.data.answer?.relatedQuestions)}`);
console.log(`frame count: ${res.data.length}`);
console.log(`frames with answerQueryToken: ${framesWithTokens.length}`);
console.log(`frames with relatedQuestions: ${framesWithRelatedQuestions.length}`);
console.log(`first relatedQuestions count: ${framesWithRelatedQuestions[0]?.answer.relatedQuestions.length ?? 0}`);
typecheck.ts:
import {discoveryengine_v1} from '@googleapis/discoveryengine';
const api = new discoveryengine_v1.Discoveryengine({});
const servingConfig =
'projects/testing-repos-489801/locations/global/collections/default_collection/dataStores/large-session-details-20260618-025044-m6sk/servingConfigs/default_search';
async function main() {
const res =
await api.projects.locations.collections.dataStores.servingConfigs.streamAnswer({
servingConfig,
requestBody: {query: {text: 'offline replay'}},
});
// These compile because streamAnswer is typed as a single AnswerQueryResponse.
const token: string | null | undefined = res.data.answerQueryToken;
const relatedQuestions: string[] | undefined =
res.data.answer?.relatedQuestions ?? undefined;
// This is the runtime shape for valid REST streamAnswer output, but the
// generated default type rejects it.
// @ts-expect-error streamAnswer is typed as unary, not array-of-frame.
const frameCount: number = res.data.length;
console.log(token, relatedQuestions, frameCount);
}
void main();
fixture.json (redacted HTTP 200 direct REST streamAnswer body)
[
{
"answer": {
"state": "STREAMING",
"steps": [
{
"state": "SUCCEEDED",
"description": "Rephrase the query and search.",
"actions": [
{
"searchAction": {
"query": "For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, what are the alpha, beta, gamma, and delta review requirements? Include citations."
},
"observation": {
"searchResults": [
{
"document": "projects/917493783080/locations/global/collections/default_collection/dataStores/large-session-details-20260618-025044-m6sk/branches/0/documents/large-session-include-details-doc",
"structData": {
"body": "Section 1: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 1; the support region is us-west; the effective date is 2026-06-11. Citations should point to this structured source and compare repeated facts across sections. Section 2: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 2; the support region is us-west; the effective date is 2026-06-12. Citations should point to this structured source and compare repeated facts across sections. Section 3: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 3; the support region is us-west; the effective date is 2026-06-13. Citations should point to this structured source and compare repeated facts across sections. Section 4: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 4; the support region is us-west; the effective date is 2026-06-14. Citations should point to this structured source and compare repeated facts across sections. Section 5: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 5; the support region is us-west; the effective date is 2026-06-15. Citations should point to this structured source and compare repeated facts across sections. Section 6: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 6; the support region is us-west; the effective date is 2026-06-16. Citations should point to this structured source and compare repeated facts across sections. Section 7: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 7; the support region is us-west; the effective date is 2026-06-17. Citations should point to this structured source and compare repeated facts across sections. Section 8: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 8; the support region is us-west; the effective date is 2026-06-18. Citations should point to this structured source and compare repeated facts across sections.",
"source_uri": "agent-search-test://large_session_include_details_20260618-025044_42p3u/large-session-include-details-doc",
"title": "Large session includeAnswerDetails parity sentinel",
"run_id": "large_session_include_details_20260618-025044_42p3u",
"unicode_notes": "Accents: cafe naive facade. Emoji: checkmark OK. Long dash: alpha -- beta. Greek: lambda pi. Japanese: テスト. Arabic: اختبار.",
"version": 1,
"sentinel_token": "large_session_include_details_large_session_include_details_20260618-025044_42p3u",
"facts": "The release code is R-ALPHA-77. The escalation owner is Search Credit QA. The support region is us-west. The policy labels are standard-search and advanced-generative-answer. Reviewers should verify manual review, automatic approval, escalation, and audit evidence."
}
}
]
}
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"references": [
{
"structuredDocumentInfo": {
"document": "projects/917493783080/locations/global/collections/default_collection/dataStores/large-session-details-20260618-025044-m6sk/branches/0/documents/large-session-include-details-doc",
"structData": {},
"title": "Large session includeAnswerDetails parity sentinel"
}
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "For"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": " the sentinel `large_session_include_details_large_session_include_details_20"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "260618-025044_42p3"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "u`, the review requirements are as follows: alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "-stamped audit note. "
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"endIndex": "276",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "The support region for this sentinel is us-west. "
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "277",
"endIndex": "325",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "The policy labels associated with this sentinel are standard-search and advanced-generative"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "-answer. "
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "326",
"endIndex": "425",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "Reviewers should verify manual review, automatic approval, escalation, and audit evidence. "
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "426",
"endIndex": "516",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "The release code is R-ALPHA-77. "
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "517",
"endIndex": "548",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "The escalation owner is Search Credit QA.\n\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "549",
"endIndex": "590",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "The section"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": " owner and effective date vary across different sections of the source:\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 1: The section owner is Search Credit QA 1, and the effective date is 2026-06-11."
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "675",
"endIndex": "768",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 2: The section owner is Search Credit QA 2, and the effective date is 2026-06-12.\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "769",
"endIndex": "862",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 3: The section owner is Search Credit QA 3, and the effective date is 2026-06"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "-13.\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "863",
"endIndex": "956",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 4: The section owner is Search Credit QA 4, and the effective date is 2026-06-14.\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "957",
"endIndex": "1050",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 5: The section owner is Search Credit QA 5, and the effective date is 2"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "026-06-15.\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "1051",
"endIndex": "1144",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 6: The section owner is Search Credit QA 6, and the effective date is 2026-06-16.\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "1145",
"endIndex": "1238",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 7: The section owner is Search Credit QA 7, and"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": " the effective date is 2026-06-17.\n"
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "1239",
"endIndex": "1332",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"answerText": "* Section 8: The section owner is Search Credit QA 8, and the effective date is 2026-06-18."
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"citations": [
{
"startIndex": "1333",
"endIndex": "1426",
"sources": [
{
"referenceId": "0"
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "STREAMING",
"relatedQuestions": [
"What is the escalation process for gamma?",
"Who is the current section owner?",
"What is the latest effective date?",
"Where can I find this structured source?",
"Can I get more details on \"manual review\"?"
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
},
{
"answer": {
"state": "SUCCEEDED",
"answerText": "For the sentinel `large_session_include_details_large_session_include_details_20260618-025044_42p3u`, the review requirements are as follows: alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The support region for this sentinel is us-west. The policy labels associated with this sentinel are standard-search and advanced-generative-answer. Reviewers should verify manual review, automatic approval, escalation, and audit evidence. The release code is R-ALPHA-77. The escalation owner is Search Credit QA.\n\nThe section owner and effective date vary across different sections of the source:\n* Section 1: The section owner is Search Credit QA 1, and the effective date is 2026-06-11.\n* Section 2: The section owner is Search Credit QA 2, and the effective date is 2026-06-12.\n* Section 3: The section owner is Search Credit QA 3, and the effective date is 2026-06-13.\n* Section 4: The section owner is Search Credit QA 4, and the effective date is 2026-06-14.\n* Section 5: The section owner is Search Credit QA 5, and the effective date is 2026-06-15.\n* Section 6: The section owner is Search Credit QA 6, and the effective date is 2026-06-16.\n* Section 7: The section owner is Search Credit QA 7, and the effective date is 2026-06-17.\n* Section 8: The section owner is Search Credit QA 8, and the effective date is 2026-06-18.",
"citations": [
{
"endIndex": "276",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "277",
"endIndex": "325",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "326",
"endIndex": "425",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "426",
"endIndex": "516",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "517",
"endIndex": "548",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "549",
"endIndex": "590",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "675",
"endIndex": "768",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "769",
"endIndex": "862",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "863",
"endIndex": "956",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "957",
"endIndex": "1050",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "1051",
"endIndex": "1144",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "1145",
"endIndex": "1238",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "1239",
"endIndex": "1332",
"sources": [
{
"referenceId": "0"
}
]
},
{
"startIndex": "1333",
"endIndex": "1426",
"sources": [
{
"referenceId": "0"
}
]
}
],
"references": [
{
"structuredDocumentInfo": {
"document": "projects/917493783080/locations/global/collections/default_collection/dataStores/large-session-details-20260618-025044-m6sk/branches/0/documents/large-session-include-details-doc",
"structData": {},
"title": "Large session includeAnswerDetails parity sentinel"
}
}
],
"relatedQuestions": [
"What is the escalation process for gamma?",
"Who is the current section owner?",
"What is the latest effective date?",
"Where can I find this structured source?",
"Can I get more details on \"manual review\"?"
],
"steps": [
{
"state": "SUCCEEDED",
"description": "Rephrase the query and search.",
"actions": [
{
"searchAction": {
"query": "For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, what are the alpha, beta, gamma, and delta review requirements? Include citations."
},
"observation": {
"searchResults": [
{
"document": "projects/917493783080/locations/global/collections/default_collection/dataStores/large-session-details-20260618-025044-m6sk/branches/0/documents/large-session-include-details-doc",
"structData": {
"unicode_notes": "Accents: cafe naive facade. Emoji: checkmark OK. Long dash: alpha -- beta. Greek: lambda pi. Japanese: テスト. Arabic: اختبار.",
"run_id": "large_session_include_details_20260618-025044_42p3u",
"title": "Large session includeAnswerDetails parity sentinel",
"body": "Section 1: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 1; the support region is us-west; the effective date is 2026-06-11. Citations should point to this structured source and compare repeated facts across sections. Section 2: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 2; the support region is us-west; the effective date is 2026-06-12. Citations should point to this structured source and compare repeated facts across sections. Section 3: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 3; the support region is us-west; the effective date is 2026-06-13. Citations should point to this structured source and compare repeated facts across sections. Section 4: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 4; the support region is us-west; the effective date is 2026-06-14. Citations should point to this structured source and compare repeated facts across sections. Section 5: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 5; the support region is us-west; the effective date is 2026-06-15. Citations should point to this structured source and compare repeated facts across sections. Section 6: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 6; the support region is us-west; the effective date is 2026-06-16. Citations should point to this structured source and compare repeated facts across sections. Section 7: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 7; the support region is us-west; the effective date is 2026-06-17. Citations should point to this structured source and compare repeated facts across sections. Section 8: For sentinel large_session_include_details_large_session_include_details_20260618-025044_42p3u, alpha requires manual review, beta is automatically approved, gamma requires escalation, and delta requires a date-stamped audit note. The section owner is Search Credit QA 8; the support region is us-west; the effective date is 2026-06-18. Citations should point to this structured source and compare repeated facts across sections.",
"source_uri": "agent-search-test://large_session_include_details_20260618-025044_42p3u/large-session-include-details-doc",
"facts": "The release code is R-ALPHA-77. The escalation owner is Search Credit QA. The support region is us-west. The policy labels are standard-search and advanced-generative-answer. Reviewers should verify manual review, automatic approval, escalation, and audit evidence.",
"sentinel_token": "large_session_include_details_large_session_include_details_20260618-025044_42p3u",
"version": 1
}
}
]
}
}
]
}
]
},
"answerQueryToken": "NMwKDAiomezRBhDUgaihAhIkNmEzZGU2MjMtMDAwMC0yNTIwLTg0YzctMDg5ZTA4MmNlZmNj"
}
]
Actual output
Array.isArray(res.data): true
res.data.answerQueryToken: undefined
res.data.answer?.relatedQuestions: undefined
frame count: 43
frames with answerQueryToken: 43
frames with relatedQuestions: 2
first relatedQuestions count: 5
Expected behavior
The generated REST surface should not expose the default parsed streamAnswer response as a single AnswerQueryResponse when valid REST output is an array of AnswerQueryResponse frames.
Possible fixes could be one of:
- Type the default parsed response as
Schema$GoogleCloudDiscoveryengineV1AnswerQueryResponse[]. - Document and type
streamAnswerso callers must useresponseType: 'stream'for this endpoint. - Provide a higher-level accumulator that returns a final assembled Answer response and preserves terminal frame metadata such as
answerQueryTokenandrelatedQuestions.
Why the fixture is valid
The body is from a direct REST streamAnswer HTTP 200 response from discoveryengine.googleapis.com. The service returned a JSON array of AnswerQueryResponse frames. The raw service output is the ground truth here; the issue is only that the public Node REST client type/default wrapper presents that valid output as a unary object.
- Ngôn ngữ chính
- TypeScript
- Star
- 12.3k
- Fork
- 2k
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 21
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của googleapis/google-api-nodejs-client
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 32/100
googleapis/google-api-nodejs-client#3932 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 76/100
googleapis/google-api-nodejs-client#3927 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
size: l type: feature request
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
googleapis/google-api-nodejs-client#3926 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
type: feature request
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
googleapis/google-api-nodejs-client#3903 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
If a service is deprecated and its the last version fo the library, we need to fully deprecate itĐang mởtype: process
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
googleapis/google-api-nodejs-client#3898 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của googleapis/google-api-nodejs-client
Issue tương tự
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
inu-appcenter/memorIN-frontend#106 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
kind/bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 7 ngày
-
[Bug] @deck.gl/arcgis dist import resolves to unpublished @deck.gl/core source path (9.3.11, 9.4.0)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
fix: CopyFilters ignores tabĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
CSCfi/sd-search-ui#145 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add: Cbeebies pl SDĐang mởcheck:passed streams:add
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày