Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
0b9019d
v0.6.23: MCP fixes, remove local state in favor of server state, moth…
waleedlatif1 Apr 4, 2026
a54dcbe
v0.6.24: copilot feedback wiring, captcha fixes
waleedlatif1 Apr 4, 2026
28af223
v0.6.25: cloudwatch, cloudformation, live kb sync, linear fixes, post…
waleedlatif1 Apr 5, 2026
d889f32
v0.6.26: ui improvements, multiple response blocks, docx previews, ol…
waleedlatif1 Apr 5, 2026
316bc8c
v0.6.27: new triggers, mothership improvements, files archive, queuei…
waleedlatif1 Apr 7, 2026
3f508e4
v0.6.28: new docs, delete confirmation standardization, dagster integ…
waleedlatif1 Apr 7, 2026
d6ec115
v0.6.29: login improvements, posthog telemetry (#4026)
TheodoreSpeaks Apr 7, 2026
d7da35b
v0.6.30: slack trigger enhancements, connectors performance improveme…
waleedlatif1 Apr 8, 2026
cf233bb
v0.6.31: elevenlabs voice, trigger.dev fixes, cloud whitelabeling for…
waleedlatif1 Apr 8, 2026
f8f3758
v0.6.32: BYOK fixes, ui improvements, cloudwatch tools, jsm tools ext…
waleedlatif1 Apr 9, 2026
3c8bb40
v0.6.33: polling improvements, jsm forms tools, credentials reactquer…
waleedlatif1 Apr 9, 2026
d33acf4
v0.6.34: trigger.dev fixes, CI speedup, atlassian error extractor
waleedlatif1 Apr 9, 2026
4f40c4c
v0.6.35: additional jira fields, HITL docs, logs cleanup efficiency
waleedlatif1 Apr 10, 2026
cbfab1c
v0.6.36: new chunkers, sockets state machine, google sheets/drive/cal…
waleedlatif1 Apr 11, 2026
4309d06
v0.6.37: audit logs page, isolated-vm worker rotation, permission gro…
waleedlatif1 Apr 12, 2026
8b57476
v0.6.38: models page
waleedlatif1 Apr 12, 2026
e3d0e74
v0.6.39: billing fixes, tools audit, landing fix
waleedlatif1 Apr 13, 2026
0ac0539
v0.6.40: mothership tool loop, new skills, agiloft, STS, IAM integrat…
waleedlatif1 Apr 14, 2026
3838b6e
v0.6.41: webhooks fix, workers removal
waleedlatif1 Apr 14, 2026
fc07922
v0.6.42: mothership nested file reads, search modal improvements
waleedlatif1 Apr 14, 2026
3a1b1a8
v0.6.43: mothership billing idempotency, env var resolution fixes
waleedlatif1 Apr 14, 2026
46ffc49
v0.6.44: streamdown, mothership intelligence, excel extension
waleedlatif1 Apr 15, 2026
010435c
v0.6.45: superagent, csp, brightdata integration, gemini response for…
Sg312 Apr 15, 2026
c0bc62c
Merge pull request #4190 from simstudioai/staging
icecrasher321 Apr 16, 2026
387cc97
v0.6.46: mothership queueing, web vitals
waleedlatif1 Apr 16, 2026
2dbc7fd
v0.6.47: files focusing, documentation, opus 4.7
waleedlatif1 Apr 16, 2026
8a50f18
v0.6.48: import csv into tables, subflow fixes, CSP updates
waleedlatif1 Apr 16, 2026
dcf3302
v0.6.49: deploy sockets event, resolver, logs improvements, monday.co…
waleedlatif1 Apr 17, 2026
bc09865
v0.6.50: ppt/doc/pdf worker isolation, docs, chat, sidebar improvements
icecrasher321 Apr 18, 2026
5f56e46
v0.6.51: tables improvements, billing fixes, 404 pages, code hygiene
waleedlatif1 Apr 20, 2026
ca3bbf1
v0.6.52: data retention, docs updates, slack manifest generator, secu…
waleedlatif1 Apr 22, 2026
bbf400f
v0.6.53: permissions groups migration, docs updates
waleedlatif1 Apr 22, 2026
7c619e7
Merge pull request #4261 from simstudioai/staging
icecrasher321 Apr 22, 2026
64cfda5
v0.6.54: mothership tracing, db pool size increase
icecrasher321 Apr 22, 2026
7ca736a
v0.6.55: standardize monorepo conventions, api key hash, thinking tex…
waleedlatif1 Apr 23, 2026
6066fc1
v0.6.56: data retention improvements, tables column double click resi…
waleedlatif1 Apr 24, 2026
3422f64
Merge pull request #4285 from simstudioai/staging
waleedlatif1 Apr 24, 2026
595c4c3
Merge pull request #4293 from simstudioai/staging
TheodoreSpeaks Apr 24, 2026
d6c1bc2
v0.6.58: queue abort state machine improvement, contributing guide
icecrasher321 Apr 25, 2026
58a3ae2
v0.6.59: gpt 5.5, security hardening, parallel subagents rendering
icecrasher321 Apr 27, 2026
489f2d3
v0.6.60: copilot security improvements, slack canvas ops, retention j…
icecrasher321 Apr 27, 2026
6aa3fe3
v0.6.61: SAP integration, live URLs for browser use, 5xx error catego…
icecrasher321 Apr 29, 2026
ecbf5e5
Merge pull request #4342 from simstudioai/staging
TheodoreSpeaks Apr 29, 2026
2aaf2b7
v0.6.62: firecrawl parse, new gmail tools, trace improvements, tool f…
waleedlatif1 May 2, 2026
d445b9c
v0.6.63: knowledgebase UI, folder search in mothership
waleedlatif1 May 2, 2026
4bc6a17
v0.6.64: table limits env vars, workspace files improvements, integra…
waleedlatif1 May 3, 2026
5be12f8
v0.6.65: memory fix, image uploads in files
waleedlatif1 May 3, 2026
4253e57
v0.6.66: child trace spans, reranker controls, attachment previews, l…
waleedlatif1 May 5, 2026
8d6b615
v0.6.67: VFS upload fix, posthog/copilot correlation, exa date filter…
TheodoreSpeaks May 5, 2026
efcd51a
v0.6.68: atlassian service accounts, 30 day wait block, markdown rend…
waleedlatif1 May 6, 2026
8d934f3
v0.6.69: security hardening, nextjs upgrade, SAP Concur, Emailbison i…
waleedlatif1 May 7, 2026
5ea80a8
v0.6.70: legacy workflow sanitization
icecrasher321 May 7, 2026
3cc581e
v0.6.71: build error fix
icecrasher321 May 7, 2026
273e608
Merge pull request #4496 from simstudioai/staging
TheodoreSpeaks May 7, 2026
07b8f1b
v0.6.72: tables improvements, search and replace, logs with files, im…
waleedlatif1 May 9, 2026
dcaf3e9
v0.6.73: zustand v5 migration fix
icecrasher321 May 9, 2026
6aeb981
v0.6.74: security hardening, workers recycling, next-mdx-remote and o…
waleedlatif1 May 12, 2026
3e9849b
v0.6.75: scheduler claim-budget drain, helm chart hardening, mothersh…
TheodoreSpeaks May 12, 2026
64d855a
v0.6.76: helm updates, media centering, lazy loading, security hardening
waleedlatif1 May 13, 2026
ab156b5
v0.6.77: mothership improvements, trigger.dev telemetry
icecrasher321 May 14, 2026
c09a2c9
v0.6.78: file block get
Sg312 May 14, 2026
6a5eebc
v0.6.79: rate limits, tables checkboxes, drizzle config changes, bill…
waleedlatif1 May 14, 2026
4efe999
v0.6.80: security hardening, nextjs minor version bump, cloudwatch to…
waleedlatif1 May 15, 2026
f69a9a0
v0.6.81: files in agent block, file block update, mermaid version upd…
waleedlatif1 May 16, 2026
db7f1c1
v0.6.82: fix duplicate migration
Sg312 May 16, 2026
dbe8e51
v0.6.83: redis TLS SNI override for IP-based REDIS_URL, zod schema fixes
TheodoreSpeaks May 17, 2026
11bcb8f
v0.6.84: redis pub/sub SNI override, security hardening, copilot read…
TheodoreSpeaks May 17, 2026
d14af04
v0.6.85: mothership stream, resource column spacing, prospeo, findyma…
waleedlatif1 May 19, 2026
e6b3cce
v0.6.86: gemini 3.5 flash, wiza integration, CORS cleanup, railway an…
waleedlatif1 May 20, 2026
97a609a
v0.6.86: CORS updates, OAuth MCP, navigation pinning dynamic pages, g…
waleedlatif1 May 21, 2026
fde70e2
v0.6.87: performance improvements
icecrasher321 May 21, 2026
e9ee351
v0.6.88: mutex lock on oauth refresh, files export fix, hubspot trigg…
waleedlatif1 May 22, 2026
b5b2d83
v0.6.89: connectors ui, perf improvements, mcp hardening, og image
waleedlatif1 May 23, 2026
f6c9998
v0.6.90: resource breadcrumb flash fix, dedupe external URL fetches, …
icecrasher321 May 23, 2026
e532e0a
v0.6.91: file zoom, Zoom KB connector, error classifications, LiteLLM…
waleedlatif1 May 26, 2026
fd19470
v0.6.92: enrichment table column type, table run fixes, scheduled jit…
TheodoreSpeaks May 27, 2026
856182b
v0.6.93: schedules/mcp performance improvements, integration bugfixes
icecrasher321 May 28, 2026
6bf9e96
v0.6.94: 4.8 opus, better auth upgrade, zoominfo integration, copilot…
waleedlatif1 May 29, 2026
503432c
v0.6.95: data enrichment block, nullable workflow description fix
TheodoreSpeaks May 29, 2026
a8dcdd5
v0.6.96: pinned table columns, sequence number in copilot messages, t…
waleedlatif1 May 30, 2026
2f1f633
v0.6.97: migration fix for copilot_messages
icecrasher321 May 30, 2026
e32699d
v0.6.98: redundant index, security hardening, new copilot messages ta…
waleedlatif1 May 31, 2026
12ada0c
v0.6.99: tables filter operators, copilot chat persistence consolidat…
waleedlatif1 Jun 2, 2026
e8f09ae
v0.6.100: auth, mothership, scopes improvements, new apify tools
icecrasher321 Jun 2, 2026
3ba8668
v0.6.101: 11 new knowledgebase connectors, slack scopes update, login…
waleedlatif1 Jun 3, 2026
1192e20
v0.6.102: support S3-compatible in object storage, GitLab code knowle…
waleedlatif1 Jun 3, 2026
1ce8e92
v0.6.103: readme updates, tables lifecycle improvements, new connecto…
waleedlatif1 Jun 6, 2026
0c2df1e
v0.7.0: vibes improvement, new UI, new tools, chat-first, mothership …
waleedlatif1 Jun 10, 2026
7ffc495
v0.7.1: chat voice mode model update, sim trigger, codepipeline integ…
waleedlatif1 Jun 10, 2026
d4722f9
v0.7.2: logs export security, code hygiene, mship cost attribution
icecrasher321 Jun 10, 2026
f4d22ff
v0.7.3: jira oauth scope fix, read-replica client, table wire data fi…
TheodoreSpeaks Jun 11, 2026
a48b4a1
v0.7.4: round-robin byok support, table block fix, db read replica ro…
waleedlatif1 Jun 12, 2026
79d98b3
v0.7.5: deployments API and block, vanta integration, performance imp…
waleedlatif1 Jun 13, 2026
e6587ca
v0.7.6: calendar scheduled tasks, new hubspot tools, virtualized chat…
waleedlatif1 Jun 15, 2026
8c3706e
v0.7.7: square, context.dev integrations, scheduled tasks styling cha…
waleedlatif1 Jun 15, 2026
59d9496
v0.7.8: security hardening, code hygiene, MSFT oauth provider, new at…
waleedlatif1 Jun 16, 2026
56a88a2
v0.7.9: agent file attachments, chat autoscroll, knowledge base uploa…
icecrasher321 Jun 16, 2026
db47da5
v0.7.10: models sorting, compress/decompress file block tools, new en…
icecrasher321 Jun 18, 2026
8df34a3
v0.7.11: parallel subagents, new tools, rich markdown editor, governa…
waleedlatif1 Jun 21, 2026
aaca750
v0.7.12: mcp servers ui/ux fixes, nuqs for query param management
icecrasher321 Jun 22, 2026
ad0b867
v0.7.13: pii redaction, react query frontend refactor, pi coding agen…
TheodoreSpeaks Jun 24, 2026
11168f9
v0.7.14: perf improvements, code hygiene, GitLab private host support
waleedlatif1 Jun 25, 2026
613e8ea
v0.7.15: academy, perf improvements, db attribution, kb tags filter f…
waleedlatif1 Jun 27, 2026
38c088a
v0.7.16: security hardening, db o11y and profiling, settings UI
waleedlatif1 Jun 28, 2026
0371856
v0.7.17: emcn and workflow renderer isolated package, popular blocks …
waleedlatif1 Jun 30, 2026
fabf696
v0.7.18: landing, tools depth, media embeds in md editor, sonnet 5
waleedlatif1 Jul 1, 2026
6e426f8
v0.7.19: newsletter, contact, careers
waleedlatif1 Jul 1, 2026
62ef96f
v0.7.20: perf, ui improvements, fable 5, tables row size bump, blogs
waleedlatif1 Jul 2, 2026
6f07856
feat(langsmith): add run update, get run, and feedback tools
waleedlatif1 Jul 2, 2026
62e907e
fix(langsmith): reject non-numeric feedback score instead of silently…
waleedlatif1 Jul 2, 2026
8c915c0
fix(langsmith): harden error handling and validation on new run tools
waleedlatif1 Jul 2, 2026
b191a54
fix(langsmith): align get_run/update_run outputs and narrow feedback …
waleedlatif1 Jul 2, 2026
a41a8e2
fix(langsmith): reject empty-string patch fields and empty PATCH bodies
waleedlatif1 Jul 2, 2026
51322c8
fix(langsmith): normalize empty-string patch fields at the tool layer…
waleedlatif1 Jul 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
215 changes: 203 additions & 12 deletions apps/sim/blocks/blocks/langsmith.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
options: [
{ label: 'Create Run', id: 'langsmith_create_run' },
{ label: 'Create Runs Batch', id: 'langsmith_create_runs_batch' },
{ label: 'Update Run', id: 'langsmith_update_run' },
{ label: 'Get Run', id: 'langsmith_get_run' },
{ label: 'Create Feedback', id: 'langsmith_create_feedback' },
],
value: () => 'langsmith_create_run',
},
Expand All @@ -41,13 +44,27 @@ export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
placeholder: 'Auto-generated if blank',
condition: { field: 'operation', value: 'langsmith_create_run' },
},
{
id: 'runId',
title: 'Run ID',
type: 'short-input',
placeholder: 'ID of the run to update, retrieve, or attach feedback to',
required: {
field: 'operation',
value: ['langsmith_update_run', 'langsmith_get_run', 'langsmith_create_feedback'],
},
condition: {
field: 'operation',
value: ['langsmith_update_run', 'langsmith_get_run', 'langsmith_create_feedback'],
},
},
{
id: 'name',
title: 'Name',
type: 'short-input',
placeholder: 'Run name',
required: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
},
{
id: 'run_type',
Expand Down Expand Up @@ -78,7 +95,7 @@ export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
title: 'End Time',
type: 'short-input',
placeholder: '2025-01-01T12:00:30Z',
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
mode: 'advanced',
},
{
Expand All @@ -94,23 +111,23 @@ export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
title: 'Outputs',
type: 'code',
placeholder: '{"output":"value"}',
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
mode: 'advanced',
},
{
id: 'extra',
title: 'Metadata',
type: 'code',
placeholder: '{"ls_model":"gpt-4"}',
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
mode: 'advanced',
},
{
id: 'tags',
title: 'Tags',
type: 'code',
placeholder: '["production","workflow"]',
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
mode: 'advanced',
},
{
Expand Down Expand Up @@ -150,15 +167,15 @@ export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
title: 'Status',
type: 'short-input',
placeholder: 'success',
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
mode: 'advanced',
},
{
id: 'error',
title: 'Error',
type: 'long-input',
placeholder: 'Error message',
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
mode: 'advanced',
},
{
Expand All @@ -174,7 +191,7 @@ export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
title: 'Events',
type: 'code',
placeholder: '[{"event":"token","value":1}]',
condition: { field: 'operation', value: 'langsmith_create_run' },
condition: { field: 'operation', value: ['langsmith_create_run', 'langsmith_update_run'] },
mode: 'advanced',
},
{
Expand Down Expand Up @@ -207,9 +224,66 @@ Required: id (existing run UUID), name, run_type ("tool"|"chain"|"llm"|"retrieve
Common patch fields: outputs, end_time, status, error`,
},
},
{
id: 'key',
title: 'Feedback Key',
type: 'short-input',
placeholder: 'e.g. correctness, user_score',
required: { field: 'operation', value: 'langsmith_create_feedback' },
condition: { field: 'operation', value: 'langsmith_create_feedback' },
},
{
id: 'score',
title: 'Score',
type: 'short-input',
placeholder: 'e.g. 1, 0.5, 0',
condition: { field: 'operation', value: 'langsmith_create_feedback' },
},
{
id: 'value',
title: 'Value',
type: 'short-input',
placeholder: 'e.g. good, bad',
condition: { field: 'operation', value: 'langsmith_create_feedback' },
mode: 'advanced',
},
{
id: 'comment',
title: 'Comment',
type: 'long-input',
placeholder: 'Explanation for the feedback',
condition: { field: 'operation', value: 'langsmith_create_feedback' },
mode: 'advanced',
},
{
id: 'correction',
title: 'Correction',
type: 'code',
placeholder: '{"output":"the corrected value"}',
condition: { field: 'operation', value: 'langsmith_create_feedback' },
mode: 'advanced',
},
{
id: 'feedbackSourceType',
title: 'Feedback Source',
type: 'dropdown',
options: [
{ label: 'API', id: 'api' },
{ label: 'App', id: 'app' },
{ label: 'Model', id: 'model' },
],
condition: { field: 'operation', value: 'langsmith_create_feedback' },
mode: 'advanced',
},
],
tools: {
access: ['langsmith_create_run', 'langsmith_create_runs_batch'],
access: [
'langsmith_create_run',
'langsmith_create_runs_batch',
'langsmith_update_run',
'langsmith_get_run',
'langsmith_create_feedback',
],
config: {
tool: (params) => params.operation,
params: (params) => {
Expand All @@ -227,6 +301,8 @@ Common patch fields: outputs, end_time, status, error`,
return value
}

const emptyToUndefined = (value: unknown) => (value === '' ? undefined : value)

if (params.operation === 'langsmith_create_runs_batch') {
const post = parseJsonValue(params.post, 'post runs')
const patch = parseJsonValue(params.patch, 'patch runs')
Expand All @@ -242,6 +318,69 @@ Common patch fields: outputs, end_time, status, error`,
}
}

if (params.operation === 'langsmith_update_run') {
const name = emptyToUndefined(params.name)
const end_time = emptyToUndefined(params.end_time)
const outputs = parseJsonValue(params.outputs, 'outputs')
const extra = parseJsonValue(params.extra, 'metadata')
const tags = parseJsonValue(params.tags, 'tags')
const status = emptyToUndefined(params.status)
const error = emptyToUndefined(params.error)
const events = parseJsonValue(params.events, 'events')

if (
[name, end_time, outputs, extra, tags, status, error, events].every(
(value) => value === undefined
)
) {
throw new Error('Provide at least one field to update')
}

return {
apiKey: params.apiKey,
runId: params.runId,
name,
end_time,
outputs,
extra,
tags,
status,
error,
events,
}
Comment thread
waleedlatif1 marked this conversation as resolved.
Comment thread
waleedlatif1 marked this conversation as resolved.
}

if (params.operation === 'langsmith_get_run') {
return {
apiKey: params.apiKey,
runId: params.runId,
}
}

if (params.operation === 'langsmith_create_feedback') {
const parseScore = (value: unknown) => {
if (value === undefined || value === null || value === '') {
return undefined
}
const parsed = Number(value)
if (Number.isNaN(parsed)) {
Comment thread
waleedlatif1 marked this conversation as resolved.
throw new Error(`Invalid score: "${value}" is not a number`)
}
return parsed
}

return {
apiKey: params.apiKey,
runId: params.runId,
key: params.key,
score: parseScore(params.score),
value: params.value,
comment: params.comment,
correction: parseJsonValue(params.correction, 'correction'),
feedbackSourceType: params.feedbackSourceType || undefined,
}
}

return {
apiKey: params.apiKey,
id: params.id,
Expand Down Expand Up @@ -269,6 +408,10 @@ Common patch fields: outputs, end_time, status, error`,
operation: { type: 'string', description: 'Operation to perform' },
apiKey: { type: 'string', description: 'LangSmith API key' },
id: { type: 'string', description: 'Run identifier' },
runId: {
type: 'string',
description: 'ID of the run to update, retrieve, or attach feedback to',
},
name: { type: 'string', description: 'Run name' },
run_type: { type: 'string', description: 'Run type' },
start_time: { type: 'string', description: 'Run start time (ISO)' },
Expand All @@ -287,13 +430,45 @@ Common patch fields: outputs, end_time, status, error`,
events: { type: 'json', description: 'Events array' },
post: { type: 'json', description: 'Runs to ingest in batch' },
patch: { type: 'json', description: 'Runs to update in batch' },
key: { type: 'string', description: 'Feedback metric name' },
score: { type: 'string', description: 'Numeric score for the feedback metric' },
value: { type: 'string', description: 'Categorical value for the feedback metric' },
comment: { type: 'string', description: 'Comment explaining the feedback' },
correction: { type: 'json', description: 'Corrected output for the run' },
feedbackSourceType: {
type: 'string',
description: 'Origin of the feedback (api, app, or model)',
},
},
outputs: {
accepted: { type: 'boolean', description: 'Whether ingestion was accepted' },
runId: { type: 'string', description: 'Run ID for single run' },
accepted: { type: 'boolean', description: 'Whether ingestion or the update was accepted' },
runId: { type: 'string', description: 'Run ID for single-run operations' },
Comment thread
waleedlatif1 marked this conversation as resolved.
runIds: { type: 'array', description: 'Run IDs for batch ingest' },
message: { type: 'string', description: 'LangSmith response message' },
messages: { type: 'array', description: 'Per-run response messages' },
id: { type: 'string', description: 'Run ID (get run) or feedback ID (create feedback)' },
name: { type: 'string', description: 'Run name (get run)' },
runType: { type: 'string', description: 'Run type (get run)' },
status: { type: 'string', description: 'Run status (get run)' },
startTime: { type: 'string', description: 'Run start time (get run)' },
endTime: { type: 'string', description: 'Run end time (get run)' },
inputs: { type: 'json', description: 'Run inputs payload (get run)' },
outputs: { type: 'json', description: 'Run outputs payload (get run)' },
error: { type: 'string', description: 'Error details (get run)' },
tags: { type: 'array', description: 'Tags attached to the run (get run)' },
sessionId: { type: 'string', description: 'Project (session) ID the run belongs to (get run)' },
traceId: { type: 'string', description: 'Trace ID (get run)' },
parentRunId: { type: 'string', description: 'Parent run ID (get run)' },
totalTokens: { type: 'number', description: 'Total tokens consumed by the run (get run)' },
totalCost: { type: 'string', description: 'Total cost of the run (get run)' },
key: { type: 'string', description: 'Feedback metric name (create feedback)' },
score: { type: 'number', description: 'Score recorded for the feedback (create feedback)' },
value: {
type: 'string',
description: 'Categorical value recorded for the feedback (create feedback)',
},
comment: { type: 'string', description: 'Comment recorded for the feedback (create feedback)' },
createdAt: { type: 'string', description: 'When the feedback was created (create feedback)' },
Comment thread
waleedlatif1 marked this conversation as resolved.
},
}

Expand Down Expand Up @@ -324,11 +499,20 @@ export const LangsmithBlockMeta = {
icon: LangsmithIcon,
title: 'LangSmith feedback capture',
prompt:
'Build a workflow that collects user-reported agent failures from a table and forwards each as a tagged LangSmith run with the inputs and expected output for later review.',
'Build a workflow that collects user-reported agent failures from a table and attaches each as scored LangSmith feedback on the originating run for later review.',
modules: ['tables', 'agent', 'workflows'],
category: 'engineering',
tags: ['engineering', 'automation'],
},
{
icon: LangsmithIcon,
title: 'LangSmith run completion',
prompt:
'Build a workflow that creates a LangSmith run when an agent step starts, then updates it with outputs, status, and end time once the step finishes so traces always show the full lifecycle.',
modules: ['agent', 'workflows'],
category: 'engineering',
tags: ['engineering', 'monitoring'],
},
{
icon: LangsmithIcon,
title: 'LangSmith batch run shipper',
Expand Down Expand Up @@ -381,5 +565,12 @@ export const LangsmithBlockMeta = {
content:
'# Batch Export Runs\n\nShip multiple completed runs to LangSmith at once instead of one by one.\n\n## Steps\n1. Collect the runs to export, each with name, type, inputs, outputs, and timing.\n2. Assign a shared project so the runs land together.\n3. Submit them as a single batch.\n\n## Output\nReturn how many runs were exported, the project they landed in, and any runs that failed validation.',
},
{
name: 'attach-feedback-to-run',
description:
'Attach a score, categorical value, or correction to an existing LangSmith run for evaluation.',
content:
'# Attach Feedback to a Run\n\nRecord a human or automated judgment on a run that already exists in LangSmith.\n\n## Steps\n1. Identify the run ID the feedback applies to.\n2. Choose a feedback key (e.g. "correctness", "user_score") and a score, value, or comment.\n3. Include a correction if the expected output is known.\n4. Submit the feedback.\n\n## Output\nConfirm the feedback ID and the run it was attached to.',
},
],
} as const satisfies BlockMeta
Loading
Loading