@plasm_lang/vercel-agent 0.3.77 → 0.3.80
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/README.md +9 -2
- package/agent/instructions.md +1 -2
- package/bin/plasm-agent.mjs +5 -7
- package/package.json +29 -19
- package/scripts/build-stubs.ts +27 -0
- package/scripts/plasm-cli.ts +162 -0
- package/scripts/register-plasm-loader.mjs +6 -0
- package/scripts/run-plasm-cli.mjs +41 -0
- package/src/cli/init-scaffold.ts +198 -0
- package/src/cli/init.ts +20 -208
- package/src/cli/nitro-dev.ts +69 -0
- package/src/cli/node-dev-imports.ts +14 -0
- package/src/engine/create-host-transport.ts +7 -0
- package/src/index.ts +1 -1
- package/src/package-version.ts +14 -0
- package/src/project-info.ts +2 -1
- package/src/stubs/catalog-client.ts +2 -2
- package/src/tools/harness-tools.ts +42 -41
- package/src/tools/plasm-tools.ts +64 -55
- package/src/tools/tool-input.ts +9 -0
- package/templates/mcp-radar/.vercelignore +3 -0
- package/templates/mcp-radar/README.md +139 -0
- package/templates/mcp-radar/agent/agent.ts +38 -0
- package/templates/mcp-radar/agent/catalogs/hackernews/README.md +23 -0
- package/templates/mcp-radar/agent/catalogs/hackernews/domain.yaml +329 -0
- package/templates/mcp-radar/agent/catalogs/hackernews/eval/cases.yaml +112 -0
- package/templates/mcp-radar/agent/catalogs/hackernews/mappings.yaml +129 -0
- package/templates/mcp-radar/agent/catalogs/tavily/README.md +218 -0
- package/templates/mcp-radar/agent/catalogs/tavily/domain.yaml +373 -0
- package/templates/mcp-radar/agent/catalogs/tavily/eval/cases.yaml +56 -0
- package/templates/mcp-radar/agent/catalogs/tavily/eval/google-gemma-3-4b-it.latest.human.txt +67 -0
- package/templates/mcp-radar/agent/catalogs/tavily/eval/google-gemma-3-4b-it.latest.json +363 -0
- package/templates/mcp-radar/agent/catalogs/tavily/mappings.yaml +171 -0
- package/templates/mcp-radar/agent/channels/mcp-radar.ts +85 -0
- package/templates/mcp-radar/agent/hooks/proof-audit.ts +10 -0
- package/templates/mcp-radar/agent/instructions.md +24 -0
- package/templates/mcp-radar/agent/research/mcp-innovations-proof.md +4 -0
- package/templates/mcp-radar/agent/schedules/mcp-radar-scan.ts +14 -0
- package/templates/mcp-radar/agent/skills/mcp-proof-format.md +19 -0
- package/templates/mcp-radar/api/[[...path]].ts +23 -0
- package/templates/mcp-radar/evals/mcp-radar-discover.eval.ts +14 -0
- package/templates/mcp-radar/lib/proof-store.ts +265 -0
- package/templates/mcp-radar/lib/run-radar.ts +214 -0
- package/templates/mcp-radar/nitro.config.ts +17 -0
- package/templates/mcp-radar/package.json +14 -0
- package/templates/mcp-radar/public/index.html +10 -0
- package/templates/mcp-radar/routes/[...path].ts +29 -0
- package/templates/mcp-radar/scripts/run-evals.ts +46 -0
- package/templates/mcp-radar/scripts/smoke-channel.ts +66 -0
- package/templates/mcp-radar/vercel.json +15 -0
- package/templates/scaffold/.vercelignore +3 -0
- package/templates/scaffold/api/[[...path]].ts +23 -0
- package/templates/scaffold/nitro.config.ts +17 -0
- package/templates/scaffold/public/index.html +10 -0
- package/templates/scaffold/public/index.mcp-radar.html +10 -0
- package/templates/scaffold/routes/[...path].ts +29 -0
- package/templates/scaffold/vercel.default.json +4 -0
- package/templates/scaffold/vercel.mcp-radar.json +15 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
http_backend: https://api.tavily.com
|
|
3
|
+
entities:
|
|
4
|
+
SearchResult:
|
|
5
|
+
id_field: url
|
|
6
|
+
description: A ranked web search result from Tavily Search.
|
|
7
|
+
fields:
|
|
8
|
+
url:
|
|
9
|
+
required: true
|
|
10
|
+
value_ref: nv_search_result_url
|
|
11
|
+
title:
|
|
12
|
+
required: false
|
|
13
|
+
value_ref: nv_search_result_title
|
|
14
|
+
content:
|
|
15
|
+
required: false
|
|
16
|
+
value_ref: nv_search_result_content
|
|
17
|
+
score:
|
|
18
|
+
required: false
|
|
19
|
+
value_ref: nv_search_result_score
|
|
20
|
+
raw_content:
|
|
21
|
+
required: false
|
|
22
|
+
value_ref: nv_search_result_raw_content
|
|
23
|
+
favicon:
|
|
24
|
+
required: false
|
|
25
|
+
value_ref: nv_search_result_favicon
|
|
26
|
+
ExtractResult:
|
|
27
|
+
id_field: url
|
|
28
|
+
description: Extracted or crawled page content from Tavily Extract / Crawl.
|
|
29
|
+
fields:
|
|
30
|
+
url:
|
|
31
|
+
required: true
|
|
32
|
+
value_ref: nv_extract_result_url
|
|
33
|
+
raw_content:
|
|
34
|
+
required: false
|
|
35
|
+
value_ref: nv_extract_result_raw_content
|
|
36
|
+
favicon:
|
|
37
|
+
required: false
|
|
38
|
+
value_ref: nv_extract_result_favicon
|
|
39
|
+
ResearchTask:
|
|
40
|
+
id_field: request_id
|
|
41
|
+
description: An async Tavily Research task.
|
|
42
|
+
fields:
|
|
43
|
+
request_id:
|
|
44
|
+
required: true
|
|
45
|
+
value_ref: nv_research_task_request_id
|
|
46
|
+
status:
|
|
47
|
+
required: false
|
|
48
|
+
value_ref: nv_research_task_status
|
|
49
|
+
input:
|
|
50
|
+
required: false
|
|
51
|
+
value_ref: nv_research_task_input
|
|
52
|
+
model:
|
|
53
|
+
required: false
|
|
54
|
+
value_ref: nv_research_task_model
|
|
55
|
+
created_at:
|
|
56
|
+
required: false
|
|
57
|
+
value_ref: nv_research_task_created_at
|
|
58
|
+
content:
|
|
59
|
+
required: false
|
|
60
|
+
value_ref: nv_research_task_content
|
|
61
|
+
response_time:
|
|
62
|
+
required: false
|
|
63
|
+
value_ref: nv_research_task_response_time
|
|
64
|
+
sources:
|
|
65
|
+
required: false
|
|
66
|
+
value_ref: nv_research_task_sources
|
|
67
|
+
capabilities:
|
|
68
|
+
web_search:
|
|
69
|
+
kind: search
|
|
70
|
+
entity: SearchResult
|
|
71
|
+
description: AI-powered web search. Returns ranked results with optional LLM answer.
|
|
72
|
+
parameters:
|
|
73
|
+
- name: query
|
|
74
|
+
value_ref: nv_wire_str_short
|
|
75
|
+
required: true
|
|
76
|
+
role: search
|
|
77
|
+
- name: search_depth
|
|
78
|
+
value_ref: nv_web_search_search_depth
|
|
79
|
+
required: false
|
|
80
|
+
role: response_control
|
|
81
|
+
- name: chunks_per_source
|
|
82
|
+
value_ref: nv_wire_int
|
|
83
|
+
required: false
|
|
84
|
+
role: response_control
|
|
85
|
+
- name: max_results
|
|
86
|
+
value_ref: nv_wire_int
|
|
87
|
+
required: false
|
|
88
|
+
role: response_control
|
|
89
|
+
- name: topic
|
|
90
|
+
value_ref: nv_web_search_topic
|
|
91
|
+
required: false
|
|
92
|
+
- name: time_range
|
|
93
|
+
value_ref: nv_web_search_time_range
|
|
94
|
+
required: false
|
|
95
|
+
- name: start_date
|
|
96
|
+
value_ref: nv_wire_str_short
|
|
97
|
+
required: false
|
|
98
|
+
- name: end_date
|
|
99
|
+
value_ref: nv_wire_str_short
|
|
100
|
+
required: false
|
|
101
|
+
- name: include_answer
|
|
102
|
+
value_ref: nv_wire_bool
|
|
103
|
+
required: false
|
|
104
|
+
role: response_control
|
|
105
|
+
- name: include_raw_content
|
|
106
|
+
value_ref: nv_wire_bool
|
|
107
|
+
required: false
|
|
108
|
+
role: response_control
|
|
109
|
+
- name: include_images
|
|
110
|
+
value_ref: nv_wire_bool
|
|
111
|
+
required: false
|
|
112
|
+
role: response_control
|
|
113
|
+
- name: include_favicon
|
|
114
|
+
value_ref: nv_wire_bool
|
|
115
|
+
required: false
|
|
116
|
+
role: response_control
|
|
117
|
+
- name: include_domains
|
|
118
|
+
value_ref: nv_web_search_include_domains
|
|
119
|
+
required: false
|
|
120
|
+
- name: exclude_domains
|
|
121
|
+
value_ref: nv_web_search_exclude_domains
|
|
122
|
+
required: false
|
|
123
|
+
- name: country
|
|
124
|
+
value_ref: nv_wire_str_short
|
|
125
|
+
required: false
|
|
126
|
+
- name: auto_parameters
|
|
127
|
+
value_ref: nv_wire_bool
|
|
128
|
+
required: false
|
|
129
|
+
role: response_control
|
|
130
|
+
- name: exact_match
|
|
131
|
+
value_ref: nv_wire_bool
|
|
132
|
+
required: false
|
|
133
|
+
url_extract:
|
|
134
|
+
kind: query
|
|
135
|
+
entity: ExtractResult
|
|
136
|
+
description: Extract cleaned content from one or more URLs.
|
|
137
|
+
parameters:
|
|
138
|
+
- name: urls
|
|
139
|
+
value_ref: nv_url_extract_urls
|
|
140
|
+
required: true
|
|
141
|
+
- name: query
|
|
142
|
+
value_ref: nv_wire_str_short
|
|
143
|
+
required: false
|
|
144
|
+
- name: extract_depth
|
|
145
|
+
value_ref: nv_url_extract_extract_depth
|
|
146
|
+
required: false
|
|
147
|
+
role: response_control
|
|
148
|
+
- name: format
|
|
149
|
+
value_ref: nv_url_extract_format
|
|
150
|
+
required: false
|
|
151
|
+
role: response_control
|
|
152
|
+
- name: chunks_per_source
|
|
153
|
+
value_ref: nv_wire_int
|
|
154
|
+
required: false
|
|
155
|
+
role: response_control
|
|
156
|
+
- name: include_images
|
|
157
|
+
value_ref: nv_wire_bool
|
|
158
|
+
required: false
|
|
159
|
+
role: response_control
|
|
160
|
+
- name: include_favicon
|
|
161
|
+
value_ref: nv_wire_bool
|
|
162
|
+
required: false
|
|
163
|
+
role: response_control
|
|
164
|
+
site_crawl:
|
|
165
|
+
kind: query
|
|
166
|
+
entity: ExtractResult
|
|
167
|
+
description: Graph-based website traversal — crawl multiple pages in parallel.
|
|
168
|
+
parameters:
|
|
169
|
+
- name: url
|
|
170
|
+
value_ref: nv_wire_str_short
|
|
171
|
+
required: true
|
|
172
|
+
role: scope
|
|
173
|
+
- name: instructions
|
|
174
|
+
value_ref: nv_wire_str_short
|
|
175
|
+
required: false
|
|
176
|
+
- name: max_depth
|
|
177
|
+
value_ref: nv_wire_int
|
|
178
|
+
required: false
|
|
179
|
+
role: response_control
|
|
180
|
+
- name: max_breadth
|
|
181
|
+
value_ref: nv_wire_int
|
|
182
|
+
required: false
|
|
183
|
+
role: response_control
|
|
184
|
+
- name: limit
|
|
185
|
+
value_ref: nv_wire_int
|
|
186
|
+
required: false
|
|
187
|
+
role: response_control
|
|
188
|
+
- name: chunks_per_source
|
|
189
|
+
value_ref: nv_wire_int
|
|
190
|
+
required: false
|
|
191
|
+
role: response_control
|
|
192
|
+
- name: include_images
|
|
193
|
+
value_ref: nv_wire_bool
|
|
194
|
+
required: false
|
|
195
|
+
role: response_control
|
|
196
|
+
research_create:
|
|
197
|
+
kind: create
|
|
198
|
+
entity: ResearchTask
|
|
199
|
+
description: Start an async deep research task (returns request_id for polling).
|
|
200
|
+
provides:
|
|
201
|
+
- request_id
|
|
202
|
+
- created_at
|
|
203
|
+
- status
|
|
204
|
+
- input
|
|
205
|
+
- model
|
|
206
|
+
parameters:
|
|
207
|
+
- name: input
|
|
208
|
+
value_ref: nv_wire_str_short
|
|
209
|
+
required: true
|
|
210
|
+
- name: model
|
|
211
|
+
value_ref: nv_research_create_model
|
|
212
|
+
required: false
|
|
213
|
+
- name: citation_format
|
|
214
|
+
value_ref: nv_research_create_citation_format
|
|
215
|
+
required: false
|
|
216
|
+
research_get:
|
|
217
|
+
kind: get
|
|
218
|
+
entity: ResearchTask
|
|
219
|
+
description: Poll the status and retrieve the report for a research task.
|
|
220
|
+
provides:
|
|
221
|
+
- request_id
|
|
222
|
+
- status
|
|
223
|
+
- input
|
|
224
|
+
- model
|
|
225
|
+
- created_at
|
|
226
|
+
- content
|
|
227
|
+
- response_time
|
|
228
|
+
- sources
|
|
229
|
+
auth:
|
|
230
|
+
scheme: bearer_token
|
|
231
|
+
env: TAVILY_API_TOKEN
|
|
232
|
+
hosted_kv: plasm:outbound:v1:catalog:tavily
|
|
233
|
+
values:
|
|
234
|
+
nv_extract_result_favicon:
|
|
235
|
+
type: string
|
|
236
|
+
string_semantics: short
|
|
237
|
+
description: Favicon URL for the page's domain.
|
|
238
|
+
nv_extract_result_raw_content:
|
|
239
|
+
type: string
|
|
240
|
+
string_semantics: markdown
|
|
241
|
+
description: Full extracted page content (markdown or plain text).
|
|
242
|
+
nv_extract_result_url:
|
|
243
|
+
type: string
|
|
244
|
+
string_semantics: short
|
|
245
|
+
description: URL of the extracted page.
|
|
246
|
+
nv_research_create_citation_format:
|
|
247
|
+
type: select
|
|
248
|
+
allowed_values:
|
|
249
|
+
- numbered
|
|
250
|
+
- mla
|
|
251
|
+
- apa
|
|
252
|
+
- chicago
|
|
253
|
+
nv_research_create_model:
|
|
254
|
+
type: select
|
|
255
|
+
allowed_values:
|
|
256
|
+
- mini
|
|
257
|
+
- pro
|
|
258
|
+
- auto
|
|
259
|
+
nv_research_task_content:
|
|
260
|
+
type: string
|
|
261
|
+
string_semantics: markdown
|
|
262
|
+
description: Full research content/report (populated when status=completed).
|
|
263
|
+
nv_research_task_created_at:
|
|
264
|
+
type: date
|
|
265
|
+
value_format: rfc3339
|
|
266
|
+
description: Timestamp when the task was created.
|
|
267
|
+
nv_research_task_input:
|
|
268
|
+
type: string
|
|
269
|
+
string_semantics: short
|
|
270
|
+
description: The research question submitted.
|
|
271
|
+
nv_research_task_model:
|
|
272
|
+
type: select
|
|
273
|
+
allowed_values:
|
|
274
|
+
- mini
|
|
275
|
+
- pro
|
|
276
|
+
- auto
|
|
277
|
+
description: Research agent model used.
|
|
278
|
+
nv_research_task_request_id:
|
|
279
|
+
type: string
|
|
280
|
+
string_semantics: short
|
|
281
|
+
description: Unique identifier for the research task (use to poll status).
|
|
282
|
+
nv_research_task_response_time:
|
|
283
|
+
type: number
|
|
284
|
+
description: Time in seconds for the research task to complete.
|
|
285
|
+
nv_research_task_status:
|
|
286
|
+
type: select
|
|
287
|
+
allowed_values:
|
|
288
|
+
- pending
|
|
289
|
+
- running
|
|
290
|
+
- completed
|
|
291
|
+
- failed
|
|
292
|
+
description: Current execution status of the task.
|
|
293
|
+
nv_search_result_content:
|
|
294
|
+
type: string
|
|
295
|
+
string_semantics: markdown
|
|
296
|
+
description: Relevance snippet or chunked content from the page.
|
|
297
|
+
nv_search_result_favicon:
|
|
298
|
+
type: string
|
|
299
|
+
string_semantics: short
|
|
300
|
+
description: Favicon URL for the result's domain.
|
|
301
|
+
nv_search_result_raw_content:
|
|
302
|
+
type: string
|
|
303
|
+
string_semantics: markdown
|
|
304
|
+
description: Full cleaned page content (only when include_raw_content=true).
|
|
305
|
+
nv_search_result_score:
|
|
306
|
+
type: number
|
|
307
|
+
description: Relevance score (0–1).
|
|
308
|
+
nv_search_result_title:
|
|
309
|
+
type: string
|
|
310
|
+
string_semantics: short
|
|
311
|
+
description: Title of the source page.
|
|
312
|
+
nv_search_result_url:
|
|
313
|
+
type: string
|
|
314
|
+
string_semantics: short
|
|
315
|
+
description: URL of the source page.
|
|
316
|
+
nv_url_extract_extract_depth:
|
|
317
|
+
type: select
|
|
318
|
+
allowed_values:
|
|
319
|
+
- basic
|
|
320
|
+
- advanced
|
|
321
|
+
nv_url_extract_format:
|
|
322
|
+
type: select
|
|
323
|
+
allowed_values:
|
|
324
|
+
- markdown
|
|
325
|
+
- text
|
|
326
|
+
nv_web_search_search_depth:
|
|
327
|
+
type: select
|
|
328
|
+
allowed_values:
|
|
329
|
+
- basic
|
|
330
|
+
- fast
|
|
331
|
+
- ultra-fast
|
|
332
|
+
- advanced
|
|
333
|
+
nv_web_search_time_range:
|
|
334
|
+
type: select
|
|
335
|
+
allowed_values:
|
|
336
|
+
- day
|
|
337
|
+
- week
|
|
338
|
+
- month
|
|
339
|
+
- year
|
|
340
|
+
- d
|
|
341
|
+
- w
|
|
342
|
+
- m
|
|
343
|
+
- y
|
|
344
|
+
nv_web_search_topic:
|
|
345
|
+
type: select
|
|
346
|
+
allowed_values:
|
|
347
|
+
- general
|
|
348
|
+
- news
|
|
349
|
+
- finance
|
|
350
|
+
nv_wire_bool:
|
|
351
|
+
type: boolean
|
|
352
|
+
nv_wire_int:
|
|
353
|
+
type: integer
|
|
354
|
+
nv_wire_str_short:
|
|
355
|
+
type: string
|
|
356
|
+
string_semantics: short
|
|
357
|
+
nv_research_task_sources:
|
|
358
|
+
type: array
|
|
359
|
+
items:
|
|
360
|
+
value_ref: nv_wire_str_short
|
|
361
|
+
description: Cited sources (populated when status=completed).
|
|
362
|
+
nv_url_extract_urls:
|
|
363
|
+
type: array
|
|
364
|
+
items:
|
|
365
|
+
value_ref: nv_wire_str_short
|
|
366
|
+
nv_web_search_exclude_domains:
|
|
367
|
+
type: array
|
|
368
|
+
items:
|
|
369
|
+
value_ref: nv_wire_str_short
|
|
370
|
+
nv_web_search_include_domains:
|
|
371
|
+
type: array
|
|
372
|
+
items:
|
|
373
|
+
value_ref: nv_wire_str_short
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Tavily — `SearchResult`, `ExtractResult`, `ResearchTask` (search, query, create, get).
|
|
2
|
+
- id: tv-01
|
|
3
|
+
schema: tavily
|
|
4
|
+
goal: "Research briefing: what are the main risks of LLM prompt injection in 2025?"
|
|
5
|
+
tags: [search]
|
|
6
|
+
covers: [search_text]
|
|
7
|
+
expect:
|
|
8
|
+
entities_any: [SearchResult]
|
|
9
|
+
|
|
10
|
+
- id: tv-02
|
|
11
|
+
schema: tavily
|
|
12
|
+
goal: "Extract readable text from these documentation URLs for offline notes"
|
|
13
|
+
tags: [extract]
|
|
14
|
+
covers: [query_filtered]
|
|
15
|
+
expect:
|
|
16
|
+
entities_any: [ExtractResult]
|
|
17
|
+
|
|
18
|
+
- id: tv-03
|
|
19
|
+
schema: tavily
|
|
20
|
+
goal: "Crawl the product marketing site up to depth 2 for a competitive summary"
|
|
21
|
+
tags: [crawl]
|
|
22
|
+
covers: [query_filtered]
|
|
23
|
+
expect:
|
|
24
|
+
entities_any: [ExtractResult]
|
|
25
|
+
|
|
26
|
+
- id: tv-04
|
|
27
|
+
schema: tavily
|
|
28
|
+
goal: "Start a deep research job on quantum error correction and save the request id"
|
|
29
|
+
tags: [create]
|
|
30
|
+
covers: [create]
|
|
31
|
+
expect:
|
|
32
|
+
entities_any: [ResearchTask]
|
|
33
|
+
|
|
34
|
+
- id: tv-05
|
|
35
|
+
schema: tavily
|
|
36
|
+
goal: "Poll research task req_abc123 until the report body is ready"
|
|
37
|
+
tags: [get]
|
|
38
|
+
covers: [get]
|
|
39
|
+
expect:
|
|
40
|
+
entities_any: [ResearchTask]
|
|
41
|
+
|
|
42
|
+
- id: tv-06
|
|
43
|
+
schema: tavily
|
|
44
|
+
goal: "Kick off async research on a topic, then fetch status when the user returns"
|
|
45
|
+
tags: [multi_step]
|
|
46
|
+
covers: [multi_step, create, get]
|
|
47
|
+
expect:
|
|
48
|
+
entities_any: [ResearchTask]
|
|
49
|
+
|
|
50
|
+
- id: tv-07
|
|
51
|
+
schema: tavily
|
|
52
|
+
goal: "Web search for 'rust async' but return only titles and URLs in the result list"
|
|
53
|
+
tags: [search, projection]
|
|
54
|
+
covers: [search_text, projection]
|
|
55
|
+
expect:
|
|
56
|
+
entities_any: [SearchResult]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
model: google/gemma-3-4b-it
|
|
2
|
+
eval summary: 7 cases | mean score 0.7982 | parse_ok 6/7 | typecheck_ok 6/7
|
|
3
|
+
|
|
4
|
+
════════════════════════════════════════════════════════════════════════
|
|
5
|
+
Pipeline failures (parse/typecheck never succeeded): 1
|
|
6
|
+
|
|
7
|
+
▸ tv-07 final_score=0.0000 semantic=0.000
|
|
8
|
+
goal: Web search for 'rust async' but return only titles and URLs in the result list
|
|
9
|
+
rounds=2 recovered=false pipeline_score=0.00
|
|
10
|
+
─── attempt 1 ───
|
|
11
|
+
step 0: ExtractResult{query="rust async", ~str}
|
|
12
|
+
reason: Search for 'rust async' using full-text search and retrieve relevant ExtractResult entities.
|
|
13
|
+
validation: FAILED
|
|
14
|
+
• [parse] step 0 `ExtractResult{query="rust async", ~str}`
|
|
15
|
+
Fix spelling so identifiers, `=`, `{{}}`, `.`, and parentheses match the SYNTAX block in the prompt.
|
|
16
|
+
span_offset: 34
|
|
17
|
+
─── attempt 2 ───
|
|
18
|
+
step 0: ExtractResult{query="rust async", ~str}
|
|
19
|
+
reason: Search for 'rust async' using full-text search and retrieve relevant ExtractResult entities.
|
|
20
|
+
correction_context_in (feedback from prior round, sent to LLM):
|
|
21
|
+
{
|
|
22
|
+
"round": 0,
|
|
23
|
+
"goal": "Web search for 'rust async' but return only titles and URLs in the result list",
|
|
24
|
+
"previous_steps": [
|
|
25
|
+
{
|
|
26
|
+
"text": "ExtractResult{query=\"rust async\", ~str}",
|
|
27
|
+
"reasoning": "Search for 'rust async' using full-text search and retrieve relevant ExtractResult entities."
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"diagnostics": [
|
|
31
|
+
{
|
|
32
|
+
"step_index": 0,
|
|
33
|
+
"expression": "ExtractResult{query=\"rust async\", ~str}",
|
|
34
|
+
"error": {
|
|
35
|
+
"correction": "Fix spelling so identifiers, `=`, `{{}}`, `.`, and parentheses match the SYNTAX block in the prompt.",
|
|
36
|
+
"category": "parse",
|
|
37
|
+
"span_offset": 34
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
validation: FAILED
|
|
43
|
+
• [parse] step 0 `ExtractResult{query="rust async", ~str}`
|
|
44
|
+
Fix spelling so identifiers, `=`, `{{}}`, `.`, and parentheses match the SYNTAX block in the prompt.
|
|
45
|
+
span_offset: 34
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
Expectation gaps (validated, soft score below 1.0): 2
|
|
49
|
+
|
|
50
|
+
▸ tv-01 blended_score=0.7750 semantic=0.750
|
|
51
|
+
goal: Research briefing: what are the main risks of LLM prompt injection in 2025?
|
|
52
|
+
expectation notes:
|
|
53
|
+
- entities got {"ResearchTask"} want any of ["SearchResult"]
|
|
54
|
+
final plan (for context):
|
|
55
|
+
step 0: ResearchTask{query="main risks of LLM prompt injection in 2025"}
|
|
56
|
+
reason: Retrieve ResearchTasks related to the specified query to initiate the research.
|
|
57
|
+
|
|
58
|
+
▸ tv-03 blended_score=0.8125 semantic=0.750
|
|
59
|
+
goal: Crawl the product marketing site up to depth 2 for a competitive summary
|
|
60
|
+
expectation notes:
|
|
61
|
+
- entities got {"ResearchTask"} want any of ["ExtractResult"]
|
|
62
|
+
final plan (for context):
|
|
63
|
+
step 0: ResearchTask{scope=Source(id), filter=marketing}
|
|
64
|
+
reason: Start by finding ResearchTasks specifically related to marketing sources.
|
|
65
|
+
|
|
66
|
+
════════════════════════════════════════════════════════════════════════
|
|
67
|
+
|