@ema.co/mcp-toolkit 2026.3.25-4 → 2026.4.9
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/dist/auth/login.js +1 -1
- package/dist/config/profile.js +1 -1
- package/dist/config/tool-guidance.js +7 -3
- package/dist/knowledge/extractors/openapi-endpoints.js +160 -2
- package/dist/knowledge/guidance-cache.js +4 -3
- package/dist/knowledge/search-client.js +57 -47
- package/dist/knowledge/search-config.js +2 -1
- package/dist/mcp/handlers/config/index.js +124 -8
- package/dist/mcp/handlers/feedback/index.js +32 -0
- package/dist/mcp/handlers/feedback/store.js +4 -0
- package/dist/mcp/handlers/knowledge/confidence-loop.js +10 -5
- package/dist/mcp/handlers/knowledge/index.js +25 -7
- package/dist/mcp/handlers/knowledge/outcome-feedback.js +205 -0
- package/dist/mcp/handlers/knowledge/session-state.js +110 -0
- package/dist/mcp/handlers/workflow/deploy.js +33 -0
- package/dist/mcp/knowledge-guidance-topics.js +25 -1
- package/dist/mcp/knowledge.js +1 -1
- package/dist/mcp/resources-dynamic.js +3 -3
- package/dist/mcp/tools.js +15 -3
- package/dist/sdk/generated/agent-catalog.js +8 -4
- package/dist/sdk/generated/deprecated-actions.js +19 -19
- package/dist/sdk/generated/proto-fields.js +1 -1
- package/dist/sdk/generated/protos/service/agent_qa/v1/agent_qa_pb.js +223 -15
- package/dist/sdk/generated/protos/service/common/v1/common_pb.js +51 -1
- package/dist/sdk/generated/protos/service/conversation_review/v1/conversation_review_pb.js +63 -16
- package/dist/sdk/generated/protos/service/dataingest/v1/dataingest_pb.js +65 -9
- package/dist/sdk/generated/protos/service/eval-tool/v1/evaluation_pb.js +114 -1
- package/dist/sdk/generated/protos/service/eval-tool/v1/testbed_pb.js +1 -1
- package/dist/sdk/generated/protos/service/external_access_service/v1/external_bot_pb.js +5 -1
- package/dist/sdk/generated/protos/service/external_tool_connection/v1/connection_manager_pb.js +114 -35
- package/dist/sdk/generated/protos/service/external_tool_connection/v1/ema_connector_pb.js +120 -0
- package/dist/sdk/generated/protos/service/identity/v1/identity_pb.js +188 -0
- package/dist/sdk/generated/protos/service/llmservice/v1/llmservice_pb.js +41 -2
- package/dist/sdk/generated/protos/service/permissions/permissions_pb.js +327 -24
- package/dist/sdk/generated/protos/service/persona/v1/chatbot_pb.js +41 -3
- package/dist/sdk/generated/protos/service/persona/v1/persona_config_pb.js +141 -89
- package/dist/sdk/generated/protos/service/persona/v1/persona_pb.js +283 -133
- package/dist/sdk/generated/protos/service/persona/v1/shared_widgets/widget_types_pb.js +24 -3
- package/dist/sdk/generated/protos/service/persona/v1/voicebot_widgets/widget_types_pb.js +114 -14
- package/dist/sdk/generated/protos/service/proposal/v1/proposal_pb.js +57 -1
- package/dist/sdk/generated/protos/service/script_executor/v1/script_executor_pb.js +96 -0
- package/dist/sdk/generated/protos/service/transform/v1/transform_pb.js +19 -1
- package/dist/sdk/generated/protos/service/user/v1/user_pb.js +1 -1
- package/dist/sdk/generated/protos/service/voice/v1/external_voice_pb.js +132 -0
- package/dist/sdk/generated/protos/service/voice/v1/voice_pb.js +1 -1
- package/dist/sdk/generated/protos/service/webcrawl/v1/webcrawl_pb.js +7 -2
- package/dist/sdk/generated/protos/service/workflows/v1/action_registry_pb.js +86 -49
- package/dist/sdk/generated/protos/service/workflows/v1/action_runner_pb.js +12 -7
- package/dist/sdk/generated/protos/service/workflows/v1/action_type_pb.js +27 -17
- package/dist/sdk/generated/protos/service/workflows/v1/agentic_search_pb.js +27 -0
- package/dist/sdk/generated/protos/service/workflows/v1/chatbot_pb.js +30 -21
- package/dist/sdk/generated/protos/service/workflows/v1/dashboards_pb.js +35 -13
- package/dist/sdk/generated/protos/service/workflows/v1/embedded_persona_runner_pb.js +6 -1
- package/dist/sdk/generated/protos/service/workflows/v1/external_actions_pb.js +19 -1
- package/dist/sdk/generated/protos/service/workflows/v1/log_type_pb.js +6 -1
- package/dist/sdk/generated/protos/service/workflows/v1/rpc/workflow_rpc_pb.js +71 -14
- package/dist/sdk/generated/protos/service/workflows/v1/values_pb.js +8 -2
- package/dist/sdk/generated/protos/service/workflows/v1/well_known_pb.js +2 -1
- package/dist/sdk/generated/protos/service/workflows/v1/workflow_pb.js +31 -16
- package/dist/sdk/generated/template-fallbacks.js +1 -1
- package/dist/sdk/generated/well-known-types.js +4 -1
- package/package.json +1 -1
|
@@ -26,8 +26,11 @@ import { validateWorkflowSchema, validateSearchDataSourceConsistency, validateNo
|
|
|
26
26
|
hasKnowledgeSearchNodes, extractActionTypeName, } from "./validation.js";
|
|
27
27
|
import { validateWorkflowOutputs } from "./validate-outputs.js";
|
|
28
28
|
import { validateWorkflowDefStructure } from "../../domain/workflow-def-validator.js";
|
|
29
|
+
import { incrementDeployAttempts } from "../knowledge/session-state.js";
|
|
30
|
+
import { emitOutcomeFeedback } from "../knowledge/outcome-feedback.js";
|
|
29
31
|
// Re-export for backwards compatibility with existing imports
|
|
30
32
|
export { hasKnowledgeSearchNodes, extractActionTypeName };
|
|
33
|
+
// Deploy outcome feedback — thin wrapper around the generalized outcome-feedback utility
|
|
31
34
|
/**
|
|
32
35
|
* Handle workflow deploy mode
|
|
33
36
|
*/
|
|
@@ -52,6 +55,8 @@ export async function handleWorkflowDeploy(args, client) {
|
|
|
52
55
|
if (!workflowDef) {
|
|
53
56
|
return { error: "workflow_def required for deploy mode" };
|
|
54
57
|
}
|
|
58
|
+
// Track deploy attempts for retry-aware feedback
|
|
59
|
+
incrementDeployAttempts();
|
|
55
60
|
const persona = await client.getPersonaById(personaId);
|
|
56
61
|
if (!persona) {
|
|
57
62
|
return { error: `Persona not found: ${personaId}` };
|
|
@@ -319,6 +324,11 @@ export async function handleWorkflowDeploy(args, client) {
|
|
|
319
324
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
320
325
|
const response = updateResponse;
|
|
321
326
|
if (response?.proto_config_updated === false) {
|
|
327
|
+
// Emit deploy failure feedback before returning
|
|
328
|
+
try {
|
|
329
|
+
await emitOutcomeFeedback({ tool: "workflow", operation: "deploy", success: false });
|
|
330
|
+
}
|
|
331
|
+
catch { /* best-effort */ }
|
|
322
332
|
return {
|
|
323
333
|
mode: "deploy",
|
|
324
334
|
status: "failed",
|
|
@@ -403,10 +413,33 @@ export async function handleWorkflowDeploy(args, client) {
|
|
|
403
413
|
catch {
|
|
404
414
|
// Post-deploy check is best-effort
|
|
405
415
|
}
|
|
416
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
417
|
+
// DEPLOY-OUTCOME FEEDBACK: Boost confidence on consulted knowledge docs
|
|
418
|
+
// This closes the feedback loop — successful deploys improve DE ranking.
|
|
419
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
420
|
+
try {
|
|
421
|
+
const feedback = await emitOutcomeFeedback({ tool: "workflow", operation: "deploy", success: "accepted" });
|
|
422
|
+
if (feedback.docs_processed > 0) {
|
|
423
|
+
result._knowledge_feedback = {
|
|
424
|
+
outcome: "accepted",
|
|
425
|
+
docs_consulted: feedback.docs_processed,
|
|
426
|
+
confidence_updates: feedback.confidence_updates,
|
|
427
|
+
_tip: "Deploy accepted by API. Test with conversation() to validate intent alignment — that produces stronger confidence signals.",
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
catch {
|
|
432
|
+
// Best-effort — never block deploy response
|
|
433
|
+
}
|
|
406
434
|
return result;
|
|
407
435
|
}
|
|
408
436
|
catch (err) {
|
|
409
437
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
438
|
+
// Emit deploy failure feedback (best-effort, before building response)
|
|
439
|
+
try {
|
|
440
|
+
await emitOutcomeFeedback({ tool: "workflow", operation: "deploy", success: false });
|
|
441
|
+
}
|
|
442
|
+
catch { /* best-effort */ }
|
|
410
443
|
// Preserve structured error information if available
|
|
411
444
|
const errorResult = {
|
|
412
445
|
mode: "deploy",
|
|
@@ -197,6 +197,21 @@ export const GUIDANCE_TOPICS = {
|
|
|
197
197
|
"Producer key (e.g. 'p1') is an arbitrary label — not a reference to anything",
|
|
198
198
|
],
|
|
199
199
|
},
|
|
200
|
+
"code-verification": {
|
|
201
|
+
title: "Verify Code From AI Answers",
|
|
202
|
+
content: "AI-generated answers (detail='answer') synthesize text from multiple source documents. " +
|
|
203
|
+
"Code examples — especially workflow_def JSON — may be fabricated or simplified by the " +
|
|
204
|
+
"generative model, even when the correct format exists in the source documents. " +
|
|
205
|
+
"NEVER copy JSON directly from a generative answer into a deploy call.",
|
|
206
|
+
status: "verified",
|
|
207
|
+
criticalRules: [
|
|
208
|
+
"ALWAYS verify workflow_def JSON against workflow(mode='get') — it returns the canonical format",
|
|
209
|
+
"For input binding formats: use knowledge('schema/workflow-def', detail='excerpts') — the source document has validated examples",
|
|
210
|
+
"For extraction_columns format: use knowledge('extraction-column-format', detail='excerpts')",
|
|
211
|
+
"If an AI answer shows JSON with unfamiliar fields (e.g., 'producer', 'value', 'actionType'), it is likely fabricated — cross-check against the schema",
|
|
212
|
+
"The correct action format uses action.name.namespaces, NOT actionType — if you see actionType in an example, it's wrong",
|
|
213
|
+
],
|
|
214
|
+
},
|
|
200
215
|
"workflow-execution": {
|
|
201
216
|
title: "Workflow Execution Model",
|
|
202
217
|
content: "CRITICAL: Each user_query triggers a NEW workflow execution. The workflow runs ONCE per user message, not once per conversation.",
|
|
@@ -1305,17 +1320,26 @@ See ema://docs/knowledge-publish for the complete guide with examples.`,
|
|
|
1305
1320
|
- Wrong environment — token for dev used against prod
|
|
1306
1321
|
- Scope escalation (elevate=true) — needs valid @ema.co token for internal scope
|
|
1307
1322
|
|
|
1308
|
-
Use config() to verify your current authentication status and profile configuration
|
|
1323
|
+
Use config() to verify your current authentication status and profile configuration.
|
|
1324
|
+
|
|
1325
|
+
**Custom Tenant Environments:**
|
|
1326
|
+
For non-standard deployments (e.g. sub-tenant staging at staging.acme.ema.co), use app_url:
|
|
1327
|
+
- config(method="login", app_url="https://staging.acme.ema.co") — API URL auto-derived as api.staging.acme.ema.co
|
|
1328
|
+
- For non-ema.co custom domains, provide app_url and api_url (env auto-derived from hostname)
|
|
1329
|
+
- If auto-derivation is wrong, provide explicit api_url override
|
|
1330
|
+
- After login, update endpoints anytime: config(method="set", key="api_url", value="https://...")`,
|
|
1309
1331
|
status: "verified",
|
|
1310
1332
|
examples: [
|
|
1311
1333
|
'config() — check current auth status',
|
|
1312
1334
|
'config(method="login") — authenticate via browser',
|
|
1335
|
+
'config(method="login", app_url="https://staging.acme.ema.co") — custom tenant environment',
|
|
1313
1336
|
],
|
|
1314
1337
|
criticalRules: [
|
|
1315
1338
|
"API key auth (EMA_API_KEY) auto-refreshes tokens — preferred for long-running sessions",
|
|
1316
1339
|
"Bearer tokens expire after ~24 hours — must be manually refreshed",
|
|
1317
1340
|
"A 401 error means re-authentication is needed, not a bug in your workflow",
|
|
1318
1341
|
"For knowledge search elevation (internal scope), use EMA_BEARER_TOKEN with an @ema.co account",
|
|
1342
|
+
"For custom URLs, the API URL pattern is api.{subdomain}.ema.co for *.ema.co domains, or api.{hostname} for other domains — override with api_url if different",
|
|
1319
1343
|
],
|
|
1320
1344
|
},
|
|
1321
1345
|
"data-upload": {
|
package/dist/mcp/knowledge.js
CHANGED
|
@@ -481,7 +481,7 @@ export function validateWorkflowConnections(workflowDef) {
|
|
|
481
481
|
// FALLBACK: Generated from ema repo via: npm run generate:deprecated-actions
|
|
482
482
|
//
|
|
483
483
|
// The generated file is synced automatically by GH Actions from ema repo.
|
|
484
|
-
// To manually regenerate: npm run generate:deprecated-actions -- --path /path/to/ema
|
|
484
|
+
// To manually regenerate: npm run generate:deprecated-actions -- --path /path/to/parent-of-ema-dir
|
|
485
485
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
486
486
|
// Re-export from generated file (maintains backwards compatibility)
|
|
487
487
|
export { DEPRECATED_ACTIONS_WITH_REPLACEMENT, DEPRECATED_ACTIONS_NO_REPLACEMENT, ALL_DEPRECATED_ACTIONS, DEPRECATED_AGENT_TYPES, DEPRECATED_ACTIONS_MAP, isActionDeprecated, getActionReplacement, } from "../sdk/generated/deprecated-actions.js";
|
|
@@ -223,10 +223,10 @@ const DYNAMIC_RESOURCES = [
|
|
|
223
223
|
md += `| \`${d.action}\` | ${d.version} | \`${repl}\`${replVer} | ${env} | ${d.migrationNotes || "-"} |\n`;
|
|
224
224
|
}
|
|
225
225
|
md += "\n## Actions with No Known Replacement\n\n";
|
|
226
|
-
md += "| Action | Environment | Notes |\n";
|
|
227
|
-
md += "
|
|
226
|
+
md += "| Action | Version | Environment | Notes |\n";
|
|
227
|
+
md += "|--------|---------|-------------|-------|\n";
|
|
228
228
|
for (const d of DEPRECATED_ACTIONS_NO_REPLACEMENT) {
|
|
229
|
-
md += `| \`${d.action}\` | ${d.envs ? d.envs.join(", ") : "all"} | ${d.migrationNotes || "-"} |\n`;
|
|
229
|
+
md += `| \`${d.action}\` | ${d.version} | ${d.envs ? d.envs.join(", ") : "all"} | ${d.migrationNotes || "-"} |\n`;
|
|
230
230
|
}
|
|
231
231
|
md += `\n**Total Known Deprecated**: ${ALL_DEPRECATED_ACTIONS.length} actions\n`;
|
|
232
232
|
md += `\n> **Best Practice**: Use \`workflow(mode="get")\` to check for deprecation warnings in specific workflows.\n`;
|
package/dist/mcp/tools.js
CHANGED
|
@@ -705,12 +705,16 @@ A **profile** = tenant + environment + auth. Example: "acme-corp-prod" = Acme Co
|
|
|
705
705
|
- \`config(method="login", env="staging")\` — login to specific environment
|
|
706
706
|
- \`config(method="login", env="prod", tenant="acme-corp")\` — login with tenant
|
|
707
707
|
- \`config(method="login", token="eyJ...")\` — direct token login (agent-mediated: user pastes JWT in chat)
|
|
708
|
+
- \`config(method="login", app_url="https://staging.acme.ema.co")\` — login to custom tenant environment
|
|
709
|
+
- \`config(method="login", app_url="https://staging.acme.ema.co", api_url="https://custom-api.example.com")\` — with explicit API URL override
|
|
708
710
|
- \`config(method="logout")\` — remove current profile credential
|
|
709
711
|
- \`config(method="logout", profile="demo-inc-staging")\` — remove specific credential
|
|
710
712
|
- \`config(method="profiles")\` — list all profiles with auth status
|
|
711
713
|
- \`config(method="use", profile="demo-inc-staging")\` — switch active profile
|
|
712
714
|
- \`config(method="set", key="debug", value=true)\` — set preference
|
|
713
715
|
- \`config(method="set", key="default_env", value="prod")\` — set default login environment
|
|
716
|
+
- \`config(method="set", key="api_url", value="https://api.custom.ema.co")\` — update current profile's API URL
|
|
717
|
+
- \`config(method="set", key="app_url", value="https://custom.ema.co")\` — update current profile's app URL
|
|
714
718
|
- \`config(method="get")\` — get all preferences
|
|
715
719
|
- \`config(method="gcp_login")\` — standalone Google auth for knowledge search (no Ema re-login needed)
|
|
716
720
|
- \`config(method="gcp_login", gcp_token="ya29...")\` — direct GCP token (agent-mediated: user pastes token in chat)`,
|
|
@@ -724,7 +728,15 @@ A **profile** = tenant + environment + auth. Example: "acme-corp-prod" = Acme Co
|
|
|
724
728
|
},
|
|
725
729
|
env: {
|
|
726
730
|
type: "string",
|
|
727
|
-
description: "Environment
|
|
731
|
+
description: "Environment: prod, staging, dev, demo, or auto-derived from app_url (for method=login)",
|
|
732
|
+
},
|
|
733
|
+
app_url: {
|
|
734
|
+
type: "string",
|
|
735
|
+
description: "Custom app/frontend URL (e.g. https://staging.acme.ema.co). API URL derived automatically. For method=login, or method=set to update current profile.",
|
|
736
|
+
},
|
|
737
|
+
api_url: {
|
|
738
|
+
type: "string",
|
|
739
|
+
description: "Explicit API URL override. Only needed if auto-derivation from app_url is wrong. For method=login, or method=set to update current profile.",
|
|
728
740
|
},
|
|
729
741
|
tenant: {
|
|
730
742
|
type: "string",
|
|
@@ -744,8 +756,8 @@ A **profile** = tenant + environment + auth. Example: "acme-corp-prod" = Acme Co
|
|
|
744
756
|
},
|
|
745
757
|
key: {
|
|
746
758
|
type: "string",
|
|
747
|
-
enum: ["debug", "default_env", "resource_source"],
|
|
748
|
-
description: "Preference key (for method=set, method=get)",
|
|
759
|
+
enum: ["debug", "default_env", "resource_source", "api_url", "app_url"],
|
|
760
|
+
description: "Preference key (for method=set, method=get). api_url and app_url update the current profile's endpoints.",
|
|
749
761
|
},
|
|
750
762
|
value: {
|
|
751
763
|
description: "Preference value (for method=set)",
|
|
@@ -339,6 +339,7 @@ export const AGENT_CATALOG = [
|
|
|
339
339
|
tier: "core",
|
|
340
340
|
aliases: ["Custom LLM", "Generic Agent"],
|
|
341
341
|
},
|
|
342
|
+
// Search & Retrieval
|
|
342
343
|
{
|
|
343
344
|
actionName: "document_synthesis",
|
|
344
345
|
displayName: "Document Synthesis",
|
|
@@ -360,6 +361,7 @@ export const AGENT_CATALOG = [
|
|
|
360
361
|
tier: "standard",
|
|
361
362
|
aliases: ["Research Agent", "Agentic Search"],
|
|
362
363
|
},
|
|
364
|
+
// Generation & Response
|
|
363
365
|
{
|
|
364
366
|
actionName: "json_mapper",
|
|
365
367
|
displayName: "JSON Extractor",
|
|
@@ -372,7 +374,7 @@ export const AGENT_CATALOG = [
|
|
|
372
374
|
outputs: [
|
|
373
375
|
{ name: "output_json", type: "WELL_KNOWN_TYPE_STRUCT", description: "Flat JSON object with extracted key-value pairs (string, boolean, number, or null)" },
|
|
374
376
|
],
|
|
375
|
-
whenToUse: "Type conversion intermediary — extract specific fields from complex objects, transform entity extraction output for email/categorizer input
|
|
377
|
+
whenToUse: "Type conversion intermediary — extract specific fields from complex objects, transform entity extraction output for email/categorizer input",
|
|
376
378
|
whenNotToUse: "When full object passthrough is acceptable or when call_llm can handle the transformation",
|
|
377
379
|
criticalRules: [
|
|
378
380
|
"Use json_mapper as type intermediary when wiring actions with incompatible types (e.g., entity_extraction ANY output → send_email TEXT_WITH_SOURCES input)",
|
|
@@ -801,7 +803,7 @@ export const AGENT_CATALOG = [
|
|
|
801
803
|
whenToUse: "When rich text formatting is needed",
|
|
802
804
|
tier: "standard",
|
|
803
805
|
},
|
|
804
|
-
//
|
|
806
|
+
// Generation & Response
|
|
805
807
|
{
|
|
806
808
|
actionName: "chart_creator",
|
|
807
809
|
displayName: "Chart Builder",
|
|
@@ -816,6 +818,7 @@ export const AGENT_CATALOG = [
|
|
|
816
818
|
whenToUse: "When dashboard or chat workflows need data visualization from extraction or search results",
|
|
817
819
|
tier: "standard",
|
|
818
820
|
},
|
|
821
|
+
// utilities
|
|
819
822
|
{
|
|
820
823
|
actionName: "combine_search_results",
|
|
821
824
|
displayName: "Combine Search Results",
|
|
@@ -886,7 +889,7 @@ export const AGENT_CATALOG = [
|
|
|
886
889
|
whenToUse: "When workflows need to classify or label content for routing, filtering, or metadata enrichment",
|
|
887
890
|
tier: "standard",
|
|
888
891
|
},
|
|
889
|
-
//
|
|
892
|
+
// agent_assist
|
|
890
893
|
{
|
|
891
894
|
actionName: "thread_categorizer",
|
|
892
895
|
displayName: "Thread Categorizer",
|
|
@@ -945,7 +948,7 @@ export const AGENT_CATALOG = [
|
|
|
945
948
|
whenToUse: "When workflows need to detect user satisfaction signals from conversation feedback",
|
|
946
949
|
tier: "standard",
|
|
947
950
|
},
|
|
948
|
-
//
|
|
951
|
+
// Domain Agents — Sales
|
|
949
952
|
{
|
|
950
953
|
actionName: "market_research",
|
|
951
954
|
displayName: "Sales Intelligence",
|
|
@@ -960,6 +963,7 @@ export const AGENT_CATALOG = [
|
|
|
960
963
|
whenToUse: "Sales prospecting, account research, financial due diligence workflows",
|
|
961
964
|
tier: "specialized",
|
|
962
965
|
},
|
|
966
|
+
// Sentiment & Analysis
|
|
963
967
|
{
|
|
964
968
|
actionName: "qa_over_sql",
|
|
965
969
|
displayName: "Natural Language to SQL",
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* PRIMARY SOURCE: API via client.listActions() where deprecated === true
|
|
5
5
|
* This file is FALLBACK only when API is unavailable.
|
|
6
6
|
*
|
|
7
|
-
* Generated at: 2026-
|
|
8
|
-
* Source:
|
|
7
|
+
* Generated at: 2026-04-04T04:29:47.533Z
|
|
8
|
+
* Source: /Users/sp/Documents/git/ema-repos
|
|
9
9
|
*
|
|
10
10
|
* DO NOT EDIT MANUALLY - regenerate with: npm run generate:deprecated-actions
|
|
11
11
|
*/
|
|
@@ -36,6 +36,14 @@ export const DEPRECATED_ACTIONS_WITH_REPLACEMENT = [
|
|
|
36
36
|
"replacement": "fixed_response",
|
|
37
37
|
"replacementVersion": "v1"
|
|
38
38
|
},
|
|
39
|
+
{
|
|
40
|
+
"action": "general_hitl",
|
|
41
|
+
"version": "v0",
|
|
42
|
+
"source": "system_agents/prod/general_hitl_def.txtpb",
|
|
43
|
+
"replacement": "general_hitl",
|
|
44
|
+
"replacementVersion": "v1",
|
|
45
|
+
"migrationNotes": "Use general_hitl v1 (Human Collaboration); v0 textproto is deprecated"
|
|
46
|
+
},
|
|
39
47
|
{
|
|
40
48
|
"action": "json_mapper",
|
|
41
49
|
"version": "v0",
|
|
@@ -82,7 +90,9 @@ export const DEPRECATED_ACTIONS_WITH_REPLACEMENT = [
|
|
|
82
90
|
{
|
|
83
91
|
"action": "combine_external_action_and_search_results",
|
|
84
92
|
"version": "v0",
|
|
85
|
-
"envs": [
|
|
93
|
+
"envs": [
|
|
94
|
+
"dev"
|
|
95
|
+
],
|
|
86
96
|
"source": "system_agents/dev/combine_external_action_and_search_results_def.txtpb",
|
|
87
97
|
"replacement": "respond_for_external_actions"
|
|
88
98
|
}
|
|
@@ -132,11 +142,6 @@ export const DEPRECATED_ACTIONS_NO_REPLACEMENT = [
|
|
|
132
142
|
"version": "v0",
|
|
133
143
|
"source": "system_agents/prod/generate_document_using_outline_def.txtpb"
|
|
134
144
|
},
|
|
135
|
-
{
|
|
136
|
-
"action": "general_hitl",
|
|
137
|
-
"version": "v1",
|
|
138
|
-
"source": "system_agents/prod/human_collaboration_def.txtpb"
|
|
139
|
-
},
|
|
140
145
|
{
|
|
141
146
|
"action": "meta_respond",
|
|
142
147
|
"version": "v0",
|
|
@@ -162,16 +167,12 @@ export const DEPRECATED_ACTIONS_NO_REPLACEMENT = [
|
|
|
162
167
|
"version": "v0",
|
|
163
168
|
"source": "system_agents/prod/write_document_def.txtpb"
|
|
164
169
|
},
|
|
165
|
-
{
|
|
166
|
-
"action": "external_action_caller",
|
|
167
|
-
"version": "v1",
|
|
168
|
-
"envs": ["dev"],
|
|
169
|
-
"source": "system_agents/dev/external_action_caller_v1_def.txtpb"
|
|
170
|
-
},
|
|
171
170
|
{
|
|
172
171
|
"action": "ticket_thread_sink",
|
|
173
172
|
"version": "v0",
|
|
174
|
-
"envs": [
|
|
173
|
+
"envs": [
|
|
174
|
+
"dev"
|
|
175
|
+
],
|
|
175
176
|
"source": "system_agents/dev/ticket_thread_sink_def.txtpb"
|
|
176
177
|
}
|
|
177
178
|
];
|
|
@@ -205,6 +206,7 @@ export const DEPRECATED_ACTIONS_MAP = {
|
|
|
205
206
|
"ai_web_search/v0": {},
|
|
206
207
|
"call_llm/v0": { replacement: "call_llm/v2", notes: "v2 uses meta_respond_v2" },
|
|
207
208
|
"call_llm/v1": {},
|
|
209
|
+
"combine_external_action_and_search_results/v0": { replacement: "respond_for_external_actions" },
|
|
208
210
|
"combine_search_results/v0": {},
|
|
209
211
|
"combine_text_with_sources/v0": {},
|
|
210
212
|
"custom_agent/v0": { replacement: "custom_agent/v1" },
|
|
@@ -212,8 +214,8 @@ export const DEPRECATED_ACTIONS_MAP = {
|
|
|
212
214
|
"document_categorizer/v0": {},
|
|
213
215
|
"document_metasearch/v0": {},
|
|
214
216
|
"fixed_response/v0": { replacement: "fixed_response/v1" },
|
|
217
|
+
"general_hitl/v0": { replacement: "general_hitl/v1", notes: "Use general_hitl v1 (Human Collaboration); v0 textproto is deprecated" },
|
|
215
218
|
"generate_document_using_outline/v0": {},
|
|
216
|
-
"general_hitl/v1": {},
|
|
217
219
|
"json_mapper/v0": { replacement: "json_mapper/v1" },
|
|
218
220
|
"meta_respond/v0": {},
|
|
219
221
|
"meta_respond/v2": {},
|
|
@@ -223,11 +225,9 @@ export const DEPRECATED_ACTIONS_MAP = {
|
|
|
223
225
|
"text_categorizer/v0": { replacement: "text_categorizer/v1" },
|
|
224
226
|
"text_with_sources_translation/v0": {},
|
|
225
227
|
"ticket_respond_with_sources/v0": {},
|
|
228
|
+
"ticket_thread_sink/v0": {},
|
|
226
229
|
"web_search/v0": { replacement: "live_web_search or ai_web_search", notes: "Split into two specialized actions" },
|
|
227
230
|
"write_document/v0": {},
|
|
228
|
-
"combine_external_action_and_search_results/v0": { replacement: "respond_for_external_actions" },
|
|
229
|
-
"external_action_caller/v1": {},
|
|
230
|
-
"ticket_thread_sink/v0": {},
|
|
231
231
|
};
|
|
232
232
|
/**
|
|
233
233
|
* Check if an action is deprecated.
|