@agent-native/core 0.84.67 → 0.85.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +20 -0
- package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/de-DE/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/es-ES/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +55 -0
- package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +55 -0
- package/corpus/core/docs/content/tracking.mdx +2 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/action-continuation-guidance.ts +1 -1
- package/corpus/core/src/agent/production-agent.ts +222 -38
- package/corpus/core/src/agent/run-manager.ts +79 -0
- package/corpus/core/src/agent/run-store.ts +122 -8
- package/corpus/core/src/agent/types.ts +13 -0
- package/corpus/core/src/client/RunStuckBanner.tsx +14 -0
- package/corpus/core/src/client/agent-chat-adapter.ts +475 -0
- package/corpus/core/src/client/analytics.ts +2 -0
- package/corpus/core/src/client/error-format.ts +4 -0
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +1 -1
- package/corpus/core/src/client/session-replay.ts +774 -2
- package/corpus/core/src/client/sse-event-processor.ts +65 -9
- package/corpus/core/src/client/use-run-stuck-detection.ts +31 -7
- package/corpus/core/src/db/runtime-diagnostics.ts +331 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +115 -2
- package/corpus/core/src/server/core-routes-plugin.ts +91 -4
- package/corpus/core/src/server/http-response-telemetry.ts +189 -0
- package/corpus/core/src/server/self-dispatch.ts +29 -0
- package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +53 -1
- package/corpus/templates/analytics/AGENTS.md +13 -0
- package/corpus/templates/analytics/actions/view-screen.ts +25 -0
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +20 -0
- package/corpus/templates/analytics/app/global.css +55 -0
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +100 -1
- package/corpus/templates/analytics/app/i18n-data.ts +1226 -0
- package/corpus/templates/analytics/app/pages/Settings.tsx +3 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +182 -144
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +11 -18
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +11 -18
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +49 -1
- package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +557 -0
- package/corpus/templates/analytics/app/pages/sessions/session-replay-devtools.ts +274 -0
- package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +974 -0
- package/corpus/templates/analytics/changelog/2026-07-02-alert-rules-can-now-be-viewed-and-managed-from-settings.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-02-recent-ask-chats-show-a-loading-placeholder-while-your-chat-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-02-session-replays-now-capture-console-logs-and-network-request.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-02-sharing-status-labels-use-neutral-icons-instead-of-colored-d.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-02-the-session-replay-viewer-has-a-dev-tools-panel-with-console.md +6 -0
- package/corpus/templates/analytics/server/db/schema.ts +3 -0
- package/corpus/templates/analytics/server/jobs/analytics-alerts.ts +4 -0
- package/corpus/templates/analytics/server/lib/analytics-alerts.ts +142 -1
- package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +369 -8
- package/corpus/templates/analytics/server/lib/session-replay.ts +76 -2
- package/corpus/templates/analytics/server/routes/api/session-replay/agent-diagnostics.json.get.ts +101 -0
- package/corpus/templates/analytics/shared/session-replay-diagnostics.ts +78 -0
- package/corpus/templates/design/app/pages/DesignEditor.tsx +24 -12
- package/corpus/templates/design/changelog/2026-07-02-the-temporary-code-tab-is-hidden-from-the-design-editor-side.md +6 -0
- package/corpus/templates/plan/actions/create-visual-recap.ts +1 -1
- package/corpus/templates/plan/actions/update-local-plan-folder.ts +3 -1
- package/corpus/templates/plan/actions/update-visual-plan.ts +1 -1
- package/corpus/templates/plan/changelog/2026-07-02-trying-to-edit-a-recap-or-plan-you-can-only-view-now-explain.md +6 -0
- package/corpus/templates/plan/server/plans.ts +26 -9
- package/dist/agent/action-continuation-guidance.js +1 -1
- package/dist/agent/action-continuation-guidance.js.map +1 -1
- package/dist/agent/production-agent.d.ts +9 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +168 -34
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +29 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +73 -0
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +41 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +105 -7
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/types.d.ts +13 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +13 -0
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +410 -0
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/analytics.d.ts +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +2 -0
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/session-replay.d.ts +36 -0
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +579 -1
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +20 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +42 -11
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts +14 -4
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +18 -4
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +2 -2
- package/dist/db/runtime-diagnostics.d.ts +52 -0
- package/dist/db/runtime-diagnostics.d.ts.map +1 -0
- package/dist/db/runtime-diagnostics.js +250 -0
- package/dist/db/runtime-diagnostics.js.map +1 -0
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/secrets/routes.d.ts +3 -3
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +101 -2
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +17 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +65 -5
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/http-response-telemetry.d.ts +4 -0
- package/dist/server/http-response-telemetry.d.ts.map +1 -0
- package/dist/server/http-response-telemetry.js +174 -0
- package/dist/server/http-response-telemetry.js.map +1 -0
- package/dist/server/self-dispatch.d.ts +17 -0
- package/dist/server/self-dispatch.d.ts.map +1 -1
- package/dist/server/self-dispatch.js +11 -0
- package/dist/server/self-dispatch.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/docs/content/locales/ar-SA/tracking.mdx +55 -0
- package/docs/content/locales/de-DE/tracking.mdx +55 -0
- package/docs/content/locales/es-ES/tracking.mdx +55 -0
- package/docs/content/locales/fr-FR/tracking.mdx +55 -0
- package/docs/content/locales/hi-IN/tracking.mdx +55 -0
- package/docs/content/locales/ja-JP/tracking.mdx +55 -0
- package/docs/content/locales/ko-KR/tracking.mdx +55 -0
- package/docs/content/locales/pt-BR/tracking.mdx +55 -0
- package/docs/content/locales/zh-CN/tracking.mdx +55 -0
- package/docs/content/locales/zh-TW/tracking.mdx +55 -0
- package/docs/content/tracking.mdx +2 -0
- package/package.json +1 -1
|
@@ -1233,6 +1233,7 @@ function AnalyticsChatsSection() {
|
|
|
1233
1233
|
const {
|
|
1234
1234
|
threads,
|
|
1235
1235
|
activeThreadId,
|
|
1236
|
+
isLoading: chatsLoading,
|
|
1236
1237
|
createThread,
|
|
1237
1238
|
switchThread,
|
|
1238
1239
|
pinThread,
|
|
@@ -1348,6 +1349,25 @@ function AnalyticsChatsSection() {
|
|
|
1348
1349
|
|
|
1349
1350
|
return (
|
|
1350
1351
|
<div className="ms-4 min-w-0 space-y-0.5">
|
|
1352
|
+
{chatsLoading &&
|
|
1353
|
+
visibleThreads.length === 0 &&
|
|
1354
|
+
Array.from({ length: 3 }).map((_, i) => (
|
|
1355
|
+
<div
|
|
1356
|
+
key={`chat-skeleton-${i}`}
|
|
1357
|
+
className="flex items-center gap-2 px-3 py-1"
|
|
1358
|
+
>
|
|
1359
|
+
<Skeleton
|
|
1360
|
+
className={cn(
|
|
1361
|
+
"h-3.5 w-3.5 shrink-0 rounded-sm",
|
|
1362
|
+
SIDEBAR_SKELETON_CLASS,
|
|
1363
|
+
)}
|
|
1364
|
+
/>
|
|
1365
|
+
<Skeleton
|
|
1366
|
+
className={cn("h-3 rounded", SIDEBAR_SKELETON_CLASS)}
|
|
1367
|
+
style={{ width: `${60 + ((i * 17) % 30)}%` }}
|
|
1368
|
+
/>
|
|
1369
|
+
</div>
|
|
1370
|
+
))}
|
|
1351
1371
|
{visibleThreads.map((thread) => {
|
|
1352
1372
|
const title = threadTitle(thread, t("chat.untitledChat"));
|
|
1353
1373
|
const isActive =
|
|
@@ -215,9 +215,64 @@
|
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
.an-replay-stage-root .replayer-wrapper {
|
|
218
|
+
position: relative;
|
|
218
219
|
transform-origin: top left;
|
|
219
220
|
}
|
|
220
221
|
|
|
222
|
+
/* First-party visitor-cursor styles for rrweb playback. These are bundled
|
|
223
|
+
statically so the cursor stays visible even if the lazily imported
|
|
224
|
+
`@rrweb/replay/dist/style.css` sheet fails to load, and they replace the
|
|
225
|
+
default black arrow sprite with an app-styled indicator. The cursor lives
|
|
226
|
+
inside `.replayer-wrapper`, so it scales with the fit-to-stage transform. */
|
|
227
|
+
.an-replay-stage-root .replayer-mouse {
|
|
228
|
+
position: absolute;
|
|
229
|
+
z-index: 2;
|
|
230
|
+
width: 0.875rem;
|
|
231
|
+
height: 0.875rem;
|
|
232
|
+
border-radius: 9999px;
|
|
233
|
+
background: hsl(217 91% 60%);
|
|
234
|
+
background-image: none;
|
|
235
|
+
box-shadow:
|
|
236
|
+
0 0 0 2px hsl(0 0% 100% / 0.9),
|
|
237
|
+
0 1px 6px hsl(0 0% 0% / 0.35);
|
|
238
|
+
transform: translate(-50%, -50%);
|
|
239
|
+
transition:
|
|
240
|
+
left 80ms linear,
|
|
241
|
+
top 80ms linear;
|
|
242
|
+
pointer-events: none;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.an-replay-stage-root .replayer-mouse::after {
|
|
246
|
+
content: "";
|
|
247
|
+
position: absolute;
|
|
248
|
+
inset: 0;
|
|
249
|
+
border-radius: 9999px;
|
|
250
|
+
background: hsl(217 91% 60%);
|
|
251
|
+
opacity: 0;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/* rrweb toggles `.active` on mouse interactions; pulse a click ripple. */
|
|
255
|
+
.an-replay-stage-root .replayer-mouse.active::after {
|
|
256
|
+
animation: an-replay-mouse-click 0.4s ease-out 1;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@keyframes an-replay-mouse-click {
|
|
260
|
+
0% {
|
|
261
|
+
opacity: 0.5;
|
|
262
|
+
transform: scale(1);
|
|
263
|
+
}
|
|
264
|
+
100% {
|
|
265
|
+
opacity: 0;
|
|
266
|
+
transform: scale(3.5);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.an-replay-stage-root .replayer-mouse-tail {
|
|
271
|
+
position: absolute;
|
|
272
|
+
inset: 0;
|
|
273
|
+
pointer-events: none;
|
|
274
|
+
}
|
|
275
|
+
|
|
221
276
|
.analytics-session-snippet .plan-code-surface {
|
|
222
277
|
border: 0;
|
|
223
278
|
border-radius: 0;
|
|
@@ -147,6 +147,80 @@ const messages = {
|
|
|
147
147
|
storageRequired: "請輸入必填的儲存欄位。",
|
|
148
148
|
storageSaved: "已儲存儲存設定。",
|
|
149
149
|
storageSaveFailed: "無法儲存儲存設定。",
|
|
150
|
+
alertsTitle: "警示",
|
|
151
|
+
alertsDescription: "管理第一方分析事件規則與通知傳送。",
|
|
152
|
+
alertRunNow: "執行檢查",
|
|
153
|
+
alertNew: "新增警示",
|
|
154
|
+
alertsEmptyTitle: "尚無警示規則",
|
|
155
|
+
alertsEmptyDescription:
|
|
156
|
+
"建立規則來監控事件量、去重使用者數或篩選後的事件片段。",
|
|
157
|
+
alertRuleColumn: "規則",
|
|
158
|
+
alertConditionColumn: "條件",
|
|
159
|
+
alertDeliveryColumn: "傳送",
|
|
160
|
+
alertStatusColumn: "狀態",
|
|
161
|
+
alertActionsColumn: "動作",
|
|
162
|
+
alertToggleLabel: "切換 {{name}}",
|
|
163
|
+
alertSeverityCritical: "嚴重",
|
|
164
|
+
alertSeverityWarning: "警告",
|
|
165
|
+
alertAllEvents: "所有事件",
|
|
166
|
+
alertScopeWithFilters: "{{scope}} + {{count}} 個篩選器",
|
|
167
|
+
alertDistinctThresholdSummary: "{{window}} 內 {{count}} 個不同的 {{field}}",
|
|
168
|
+
alertEventThresholdSummary: "{{window}} 內 {{count}} 個事件",
|
|
169
|
+
alertChannelInbox: "收件匣",
|
|
170
|
+
alertChannelEmail: "電子郵件",
|
|
171
|
+
alertChannelSlack: "Slack",
|
|
172
|
+
alertChannelWebhook: "Webhook",
|
|
173
|
+
alertLastChecked: "檢查於 {{date}}",
|
|
174
|
+
alertNever: "從未",
|
|
175
|
+
alertStatusOk: "正常",
|
|
176
|
+
alertStatusTriggered: "已觸發",
|
|
177
|
+
alertStatusCooldown: "冷卻中",
|
|
178
|
+
alertStatusError: "錯誤",
|
|
179
|
+
alertStatusRunning: "執行中",
|
|
180
|
+
alertStatusNever: "未檢查",
|
|
181
|
+
alertEditLabel: "編輯 {{name}}",
|
|
182
|
+
alertDeleteLabel: "刪除 {{name}}",
|
|
183
|
+
alertDeleteTitle: "刪除警示規則?",
|
|
184
|
+
alertDeleteDescription: "這會刪除「{{name}}」並停止此規則的後續通知。",
|
|
185
|
+
alertEdit: "編輯警示",
|
|
186
|
+
alertCreate: "建立警示",
|
|
187
|
+
alertDialogDescription:
|
|
188
|
+
"警示規則會在第一方分析事件上執行,並通知選定的管道。",
|
|
189
|
+
alertName: "名稱",
|
|
190
|
+
alertNamePlaceholder: "託管應用程式 5xx 激增",
|
|
191
|
+
alertDescription: "描述",
|
|
192
|
+
alertEventName: "事件名稱",
|
|
193
|
+
alertEventNamePlaceholder: "http.response",
|
|
194
|
+
alertSeverity: "嚴重性",
|
|
195
|
+
alertThresholdMode: "閾值模式",
|
|
196
|
+
alertModeEventCount: "事件計數",
|
|
197
|
+
alertModeDistinctCount: "去重計數",
|
|
198
|
+
alertThreshold: "閾值",
|
|
199
|
+
alertDistinctBy: "去重欄位",
|
|
200
|
+
alertWindowMinutes: "時間窗口分鐘數",
|
|
201
|
+
alertCooldownMinutes: "冷卻分鐘數",
|
|
202
|
+
alertFilters: "篩選器 JSON",
|
|
203
|
+
alertChannels: "管道",
|
|
204
|
+
alertCustomChannels: "其他管道",
|
|
205
|
+
alertCustomChannelsPlaceholder: "例如 pagerduty、opsgenie",
|
|
206
|
+
alertEmailRecipients: "電子郵件收件人",
|
|
207
|
+
alertEmailRecipientsPlaceholder: "analytics@example.com, ops@example.com",
|
|
208
|
+
alertEnabled: "已啟用",
|
|
209
|
+
alertEnabledDescription: "停用的規則會保留,但檢查時會略過。",
|
|
210
|
+
alertUpdate: "更新警示",
|
|
211
|
+
alertSave: "儲存警示",
|
|
212
|
+
alertFiltersInvalid: "篩選器 JSON 無效:{{message}}",
|
|
213
|
+
alertNameRequired: "新增警示名稱。",
|
|
214
|
+
alertChannelRequired: "至少選擇一個通知管道。",
|
|
215
|
+
alertSaved: "警示規則已儲存。",
|
|
216
|
+
alertSaveFailed: "無法儲存警示規則:{{message}}",
|
|
217
|
+
alertEnabledToast: "警示已啟用。",
|
|
218
|
+
alertDisabledToast: "警示已停用。",
|
|
219
|
+
alertDeleted: "警示規則已刪除。",
|
|
220
|
+
alertDeleteFailed: "無法刪除警示規則:{{message}}",
|
|
221
|
+
alertRunComplete:
|
|
222
|
+
"警示檢查完成:已檢查 {{processed}} 個,觸發 {{triggered}} 個,失敗 {{failed}} 個。",
|
|
223
|
+
alertRunFailed: "無法執行警示檢查:{{message}}",
|
|
150
224
|
},
|
|
151
225
|
chat: {
|
|
152
226
|
emptyState: "讓我分析儀表板、比較趨勢或深入檢視資料...",
|
|
@@ -683,7 +757,7 @@ const messages = {
|
|
|
683
757
|
emailReports: "電子郵件報告",
|
|
684
758
|
emailReportsDescription: '"{{name}}" 的每日電子郵件快照。',
|
|
685
759
|
existingReportSubscriptions: "訂閱",
|
|
686
|
-
newSubscription: "
|
|
760
|
+
newSubscription: "新增訂閱",
|
|
687
761
|
noReportSubscriptions: "還沒有訂閱。",
|
|
688
762
|
reportName: "名稱",
|
|
689
763
|
reportRecipients: "收件人",
|
|
@@ -854,6 +928,31 @@ const messages = {
|
|
|
854
928
|
storageConnected: "已連線儲存",
|
|
855
929
|
connectBuilder: "使用 Builder.io(免費)",
|
|
856
930
|
configureS3: "設定 S3 儲存",
|
|
931
|
+
devtools: "開發工具",
|
|
932
|
+
devtoolsIssueCount: "偵測到 {{count}} 個問題",
|
|
933
|
+
devtoolsConsoleTab: "主控台({{count}})",
|
|
934
|
+
devtoolsNetworkTab: "網路({{count}})",
|
|
935
|
+
devtoolsFilterAll: "全部({{count}})",
|
|
936
|
+
devtoolsFilterLog: "記錄({{count}})",
|
|
937
|
+
devtoolsFilterInfo: "資訊({{count}})",
|
|
938
|
+
devtoolsFilterWarning: "警告({{count}})",
|
|
939
|
+
devtoolsFilterError: "錯誤({{count}})",
|
|
940
|
+
devtoolsFilterFetch: "Fetch({{count}})",
|
|
941
|
+
devtoolsFilterXhr: "XHR({{count}})",
|
|
942
|
+
devtoolsFilterFailed: "失敗({{count}})",
|
|
943
|
+
devtoolsConsoleSearch: "篩選主控台訊息...",
|
|
944
|
+
devtoolsNetworkSearch: "篩選請求...",
|
|
945
|
+
devtoolsJumpTo: "跳轉",
|
|
946
|
+
devtoolsToggleDetails: "切換詳細資訊",
|
|
947
|
+
devtoolsArgs: "記錄的參數",
|
|
948
|
+
devtoolsStack: "堆疊追蹤",
|
|
949
|
+
devtoolsRepeatCount: "×{{count}}",
|
|
950
|
+
devtoolsFailedStatus: "失敗",
|
|
951
|
+
devtoolsDurationMs: "{{ms}} 毫秒",
|
|
952
|
+
devtoolsNoConsole: "此工作階段未擷取到主控台活動。",
|
|
953
|
+
devtoolsNoNetwork: "此工作階段未擷取到網路活動。",
|
|
954
|
+
devtoolsNoConsoleMatches: "沒有符合目前篩選條件的主控台訊息。",
|
|
955
|
+
devtoolsNoNetworkMatches: "沒有符合目前篩選條件的請求。",
|
|
857
956
|
},
|
|
858
957
|
catalog: {
|
|
859
958
|
description: "需要起點時,可安裝儀表板範本。",
|