@nexusclawhq/cli 0.3.48 → 0.3.50

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.
Files changed (100) hide show
  1. package/dist/build-info.json +4 -4
  2. package/dist/nexus-cli/node_modules/@nexusclaw/code-authoring/dist/package/workforce-bundle-inventory.js +34 -2
  3. package/dist/nexus-cli/node_modules/@nexusclaw/code-authoring/dist/package/workforce-bundle-inventory.js.map +1 -1
  4. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/cli-contract.types.d.ts +1 -1
  5. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/employee-eval-cases.types.d.ts +96 -0
  6. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/employee-eval-cases.types.js +125 -0
  7. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/employee-eval-cases.types.js.map +1 -0
  8. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.d.ts +3 -0
  9. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.js +3 -0
  10. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.js.map +1 -1
  11. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.constants.d.ts +9 -0
  12. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.constants.js +13 -0
  13. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.constants.js.map +1 -0
  14. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.types.d.ts +285 -0
  15. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.types.js +204 -0
  16. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/training-evidence-export.types.js.map +1 -0
  17. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/workforce-bundle.types.d.ts +6 -2
  18. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/types.d.ts +3 -0
  19. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/validator.js +13 -0
  20. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/employee-package/validator.js.map +1 -1
  21. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/en-US.d.ts +628 -5
  22. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/en-US.js +615 -22
  23. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/en-US.js.map +1 -1
  24. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/index.d.ts +1280 -10
  25. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/zh-CN.d.ts +652 -5
  26. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/zh-CN.js +934 -317
  27. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/locales/zh-CN.js.map +1 -1
  28. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/platform-admin-route-readiness/index.js +12 -0
  29. package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/platform-admin-route-readiness/index.js.map +1 -1
  30. package/dist/nexus-cli/src/commands/ai/help.test.js +5 -4
  31. package/dist/nexus-cli/src/commands/ai/help.test.js.map +1 -1
  32. package/dist/nexus-cli/src/commands/employee/deploy.d.ts +21 -0
  33. package/dist/nexus-cli/src/commands/employee/deploy.e2e.test.js +56 -320
  34. package/dist/nexus-cli/src/commands/employee/deploy.e2e.test.js.map +1 -1
  35. package/dist/nexus-cli/src/commands/employee/deploy.js +101 -0
  36. package/dist/nexus-cli/src/commands/employee/deploy.js.map +1 -1
  37. package/dist/nexus-cli/src/commands/employee/index.js +2 -0
  38. package/dist/nexus-cli/src/commands/employee/index.js.map +1 -1
  39. package/dist/nexus-cli/src/commands/employee/training-evidence.d.ts +2 -0
  40. package/dist/nexus-cli/src/commands/employee/training-evidence.js +43 -0
  41. package/dist/nexus-cli/src/commands/employee/training-evidence.js.map +1 -0
  42. package/dist/nexus-cli/src/commands/org/login-jwt.d.ts +8 -0
  43. package/dist/nexus-cli/src/commands/org/login-jwt.js +33 -2
  44. package/dist/nexus-cli/src/commands/org/login-jwt.js.map +1 -1
  45. package/dist/nexus-cli/src/commands/org/login-jwt.test.js +20 -0
  46. package/dist/nexus-cli/src/commands/org/login-jwt.test.js.map +1 -1
  47. package/dist/nexus-cli/src/commands/org/login-web.js +23 -9
  48. package/dist/nexus-cli/src/commands/org/login-web.js.map +1 -1
  49. package/dist/nexus-cli/src/commands/workforce/cognition.js +28 -1
  50. package/dist/nexus-cli/src/commands/workforce/cognition.js.map +1 -1
  51. package/dist/nexus-cli/src/commands/workforce/task.js +6 -0
  52. package/dist/nexus-cli/src/commands/workforce/task.js.map +1 -1
  53. package/dist/nexus-cli/src/contracts/command-contract-coverage-baseline.json +12 -0
  54. package/dist/nexus-cli/src/contracts/command-contract-matrix.generated.test.js +6 -7
  55. package/dist/nexus-cli/src/contracts/command-contract-matrix.generated.test.js.map +1 -1
  56. package/dist/nexus-cli/src/contracts/command-contract-matrix.scenarios.js +2 -2
  57. package/dist/nexus-cli/src/contracts/command-contract.guard.js +5 -0
  58. package/dist/nexus-cli/src/contracts/command-contract.guard.js.map +1 -1
  59. package/dist/nexus-cli/src/contracts/command-contract.registry.js +26 -0
  60. package/dist/nexus-cli/src/contracts/command-contract.registry.js.map +1 -1
  61. package/dist/nexus-cli/src/contracts/command-inventory.test.js +4 -4
  62. package/dist/nexus-cli/src/contracts/command-order.js +1 -0
  63. package/dist/nexus-cli/src/contracts/command-order.js.map +1 -1
  64. package/dist/nexus-cli/src/contracts/command-policy.exporter.test.js +2 -2
  65. package/dist/nexus-cli/src/contracts/command-policy.registry.js +1 -1
  66. package/dist/nexus-cli/src/contracts/command-policy.registry.js.map +1 -1
  67. package/dist/nexus-cli/src/contracts/command-policy.registry.test.js +5 -5
  68. package/dist/nexus-cli/src/contracts/command-policy.validator.test.js +3 -3
  69. package/dist/nexus-cli/src/contracts/contracts.test.js +17 -0
  70. package/dist/nexus-cli/src/contracts/contracts.test.js.map +1 -1
  71. package/dist/nexus-cli/src/contracts/workforce-contracts.js +1 -0
  72. package/dist/nexus-cli/src/contracts/workforce-contracts.js.map +1 -1
  73. package/dist/nexus-cli/src/services/api-client.d.ts +8 -0
  74. package/dist/nexus-cli/src/services/api-client.js +54 -0
  75. package/dist/nexus-cli/src/services/api-client.js.map +1 -1
  76. package/dist/nexus-cli/src/services/training-evidence-export.d.ts +15 -0
  77. package/dist/nexus-cli/src/services/training-evidence-export.js +94 -0
  78. package/dist/nexus-cli/src/services/training-evidence-export.js.map +1 -0
  79. package/dist/nexus-cli/src/services/training-evidence-export.test.d.ts +1 -0
  80. package/dist/nexus-cli/src/services/training-evidence-export.test.js +59 -0
  81. package/dist/nexus-cli/src/services/training-evidence-export.test.js.map +1 -0
  82. package/dist/nexus-cli/src/services/workforce-bundle-archive.d.ts +1 -1
  83. package/dist/nexus-cli/src/services/workforce-bundle-local.js +26 -4
  84. package/dist/nexus-cli/src/services/workforce-bundle-local.js.map +1 -1
  85. package/dist/nexus-cli/src/services/workforce-bundle-local.test.js +29 -0
  86. package/dist/nexus-cli/src/services/workforce-bundle-local.test.js.map +1 -1
  87. package/dist/nexus-cli/src/services/workforce-bundle-remote.d.ts +1 -1
  88. package/dist/nexus-cli/src/services/workforce-cognition-remote.d.ts +17 -0
  89. package/dist/nexus-cli/src/services/workforce-cognition-remote.js +16 -0
  90. package/dist/nexus-cli/src/services/workforce-cognition-remote.js.map +1 -1
  91. package/dist/nexus-cli/src/services/workforce-conversation-remote.d.ts +5 -0
  92. package/dist/nexus-cli/src/services/workforce-conversation-remote.js +21 -2
  93. package/dist/nexus-cli/src/services/workforce-conversation-remote.js.map +1 -1
  94. package/dist/nexus-cli/src/services/workforce-conversation-remote.test.js +2 -0
  95. package/dist/nexus-cli/src/services/workforce-conversation-remote.test.js.map +1 -1
  96. package/dist/nexus-cli/src/services/workforce-test-remote.d.ts +1 -1
  97. package/dist/nexus-cli/src/services/workforce-test-remote.js +1 -1
  98. package/dist/nexus-cli/src/services/workforce-test-remote.test.js +2 -2
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/package.json +1 -1
@@ -37,6 +37,84 @@ const messages = {
37
37
  finish: "Done",
38
38
  unselected: "Not selected",
39
39
  },
40
+ builder: {
41
+ labelPlaceholder: "Label",
42
+ apiNamePlaceholder: "API Name",
43
+ flowType: "Flow Type",
44
+ selectObject: "Select Object",
45
+ object: "Object",
46
+ configureTrigger: "Configure Trigger",
47
+ triggerCreated: "A record is created",
48
+ triggerUpdated: "A record is updated",
49
+ triggerCreatedOrUpdated: "A record is created or updated",
50
+ triggerDeleted: "A record is deleted",
51
+ setEntryConditions: "Set Entry Conditions",
52
+ conditionRequirements: "Condition Requirements",
53
+ conditions: "Conditions",
54
+ optimizeFlow: "Optimize Flow",
55
+ scheduleSettings: "Schedule Settings",
56
+ frequency: "Frequency",
57
+ startDate: "Start Date",
58
+ startTime: "Start Time",
59
+ platformEvent: "Platform Event",
60
+ eventApiName: "Event API Name",
61
+ screenEntry: "Screen Entry",
62
+ entryMode: "Entry Mode",
63
+ designerNotes: "Designer Notes",
64
+ action: "Action",
65
+ howToSetFieldValues: "How to Set Record Field Values",
66
+ setFieldValuesManually: "Set field values manually",
67
+ useVariablesAndFormulas: "Use variables and formulas",
68
+ fieldMappingsReady: "Field Mappings Ready",
69
+ recordOrRecordId: "Record or Record ID",
70
+ setFieldValues: "Set Field Values",
71
+ pauseType: "Pause Type",
72
+ timeSource: "Time Source",
73
+ offsetNumberOptions: "Offset Number / Offset Options",
74
+ scheduleSummary: "Schedule Summary",
75
+ defaultOutcome: "Default Outcome",
76
+ outcomeOrder: "Outcome Order",
77
+ toolbox: "Toolbox",
78
+ searchThisFlow: "Search this flow...",
79
+ closeInspector: "Close inspector",
80
+ debugData: "Debug Data",
81
+ daysAfterSource: "{days} days after {source}",
82
+ durationAfterSource: "{value} {unit} after {source}",
83
+ durationOnly: "{value} {unit}",
84
+ pauseUntilDate: "pause until {date}",
85
+ pauseUntilEvent: "pause until {object} {event}",
86
+ unitMinutes: "minutes",
87
+ unitHours: "hours",
88
+ unitDays: "days",
89
+ timeSourceCloseDate: "close date",
90
+ optimizationFastFieldUpdates: "Fast Field Updates",
91
+ optimizationActionsAndRelatedRecords: "Actions and Related Records",
92
+ scheduleDaily: "Every day",
93
+ scheduleWeekly: "Every week",
94
+ scheduleOnce: "Run once",
95
+ entryAppPage: "App page",
96
+ entryQuickAction: "Quick action",
97
+ entryUtilityBar: "Utility bar",
98
+ summaryTrigger: "Trigger",
99
+ summaryOptimizeFor: "Optimize for",
100
+ summarySchedule: "Schedule",
101
+ summaryStartAt: "Start at",
102
+ summaryEvent: "Event",
103
+ summaryRunType: "Run type",
104
+ summaryEntry: "Entry",
105
+ summaryInteraction: "Interaction",
106
+ summaryInvocation: "Invocation",
107
+ summaryStatus: "Status",
108
+ notSet: "Not set",
109
+ platformEventReceived: "When a platform event is received",
110
+ runTypeAutolaunched: "Autolaunched flow",
111
+ guidedScreenExperience: "Guided screen experience",
112
+ runTypeUserFacing: "User-facing flow",
113
+ invokedByFlowsActionsAi: "Called by flows, actions, or AI",
114
+ noExplicitTrigger: "No explicit trigger",
115
+ runTypeBackground: "Background automation",
116
+ selectFlowTypeToConfigureStart: "Select a flow type to configure Start",
117
+ },
40
118
  flowType: {
41
119
  unselected: "No type selected",
42
120
  recordTriggered: {
@@ -359,6 +437,16 @@ const messages = {
359
437
  breadcrumbAi: "AI Settings",
360
438
  breadcrumbAgents: "Agent Management",
361
439
  breadcrumbConfigure: "Configure",
440
+ fieldNamePlaceholder: "e.g. SalesAgent",
441
+ fieldIconPlaceholder: "icon name",
442
+ typeSales: "Sales",
443
+ typeService: "Service",
444
+ typeAnalytics: "Analytics",
445
+ typeAdmin: "Admin",
446
+ typeCustom: "Custom",
447
+ modelTier1: "DeepSeek V3 (Tier 1)",
448
+ modelTier2: "GPT-4o (Tier 2)",
449
+ modelTier3: "Claude Opus (Tier 3)",
362
450
  breadcrumbExecutionLogs: "Execution Logs",
363
451
  breadcrumbExecutionDetail: "Details",
364
452
  listTitle: "Agent Runtime & Governance",
@@ -848,11 +936,20 @@ const messages = {
848
936
  app: {
849
937
  restoringSession: "Restoring session...",
850
938
  enteringSystem: "Entering...",
939
+ crm: "CRM",
940
+ marketing: "Marketing",
941
+ service: "Service",
851
942
  partner: "Partner",
852
- platform: "Platform"
943
+ platform: "Platform",
944
+ settings: "Settings"
853
945
  },
854
946
  appDescription: {
855
- partner: "Partner Relationship Management"
947
+ crm: "Customer Relationship Management",
948
+ marketing: "Marketing Automation & Campaign Management",
949
+ service: "Customer Service Management",
950
+ partner: "Partner Relationship Management",
951
+ platform: "Open Platform & Ecosystem",
952
+ settings: "System Settings"
856
953
  },
857
954
  common: {
858
955
  featureNotAvailable: "This feature is not available yet",
@@ -924,6 +1021,7 @@ const messages = {
924
1021
  contactAll: "All Contacts",
925
1022
  salesFolder: "Sales",
926
1023
  salesOpportunity: "Opportunities",
1024
+ forecastCenter: "Forecast Center",
927
1025
  cpqFolder: "CPQ",
928
1026
  cpqProduct: "Product Catalog",
929
1027
  cpqPriceBook: "Price Books",
@@ -1897,7 +1995,7 @@ const messages = {
1897
1995
  usage: "Usage",
1898
1996
  usageDetails: "Usage Details",
1899
1997
  noUsageData: "No usage data",
1900
- upgradePlan: "Plan Examples",
1998
+ upgradePlan: "Plan Capabilities",
1901
1999
  current: "Current",
1902
2000
  perMonth: "/mo",
1903
2001
  perYear: "/yr",
@@ -2012,9 +2110,23 @@ const messages = {
2012
2110
  cancelWarningItem2: "Advanced governance and budget controls will be disabled",
2013
2111
  cancelWarningItem3: "Usage beyond base allowances will need to be reconfigured",
2014
2112
  cancelWarningItem4: "You can re-enable a paid resource pack at any time",
2015
- planCycleCaption: "Examples below show the org base fee for the selected billing cycle and exclude token and storage metering.",
2113
+ planCycleCaption: "Platform pricing and promotions are managed centrally by platform operations.",
2114
+ quoteRequired: "Commercial quote required",
2115
+ quoteRequiredDesc: "Contact Sales for a formal quote scoped only to your organization before upgrading or renewing.",
2016
2116
  loadFailed: "Failed to load data",
2017
2117
  loadFailedDesc: "Unable to fetch billing data, please try again later",
2118
+ opsPlanHealth: "Plan health",
2119
+ opsQuotaRisk: "Quota risk",
2120
+ opsPendingInvoice: "Outstanding invoices",
2121
+ opsNextActions: "Next steps",
2122
+ opsCycleProgress: "Cycle progress",
2123
+ opsDaysUntilNextBill: "Next bill in {count} days",
2124
+ opsBillDueToday: "Billing due today",
2125
+ opsQuotaHealthy: "Healthy",
2126
+ opsInvoiceDegraded: "Invoice data is temporarily unavailable; other billing info is shown normally.",
2127
+ opsActionViewUsage: "Usage dashboard",
2128
+ opsActionSmartCap: "Configure Smart Cap",
2129
+ opsActionContactSales: "Contact sales",
2018
2130
  enterpriseQuotaSaveSuccess: "__EN_TODO__: Enterprise 自定义配额已保存",
2019
2131
  enterpriseQuotaSaveFailed: "__EN_TODO__: Enterprise 自定义配额保存失败",
2020
2132
  enterpriseQuotaConfigTitle: "__EN_TODO__: Enterprise 自定义配额",
@@ -2734,6 +2846,16 @@ const messages = {
2734
2846
  },
2735
2847
  developer: {
2736
2848
  apiCredentials: "API Credentials",
2849
+ pluginSubmit: {
2850
+ pluginNameLabel: "Plugin Name (kebab-case)",
2851
+ displayNameLabel: "Display Name",
2852
+ versionLabel: "Version (semver)",
2853
+ descriptionLabel: "Description",
2854
+ authorLabel: "Author",
2855
+ categoryLabel: "Category",
2856
+ permissionsLabel: "Permissions (comma-separated)",
2857
+ sourceBundleUrlLabel: "Source Bundle URL",
2858
+ },
2737
2859
  credentialsUnavailable: "API credentials are not yet available",
2738
2860
  credentialsUnavailableReason: "A future release will surface your API key and secret here along with a regenerate action. No credentials are stored locally.",
2739
2861
  dashboard: "Developer Dashboard",
@@ -2948,15 +3070,68 @@ const messages = {
2948
3070
  },
2949
3071
  namedCredentials: {
2950
3072
  title: "Named Credentials",
3073
+ rotate: "Rotate",
3074
+ detailName: "Name:",
3075
+ detailType: "Type:",
3076
+ detailStatus: "Status:",
3077
+ detailEndpoint: "Endpoint:",
3078
+ detailDescription: "Description:",
3079
+ detailCreatedBy: "Created By:",
3080
+ detailLastUsed: "Last Used:",
3081
+ neverUsed: "Never",
3082
+ noConfigurationData: "No configuration data",
3083
+ selectCredentialForAudit: "Select a credential to view audit logs",
3084
+ tokenUrl: "Token URL",
3085
+ clientId: "Client ID",
3086
+ clientSecret: "Client Secret",
3087
+ scopes: "Scopes",
3088
+ apiKey: "API Key",
3089
+ headerName: "Header Name",
3090
+ username: "Username",
3091
+ password: "Password",
3092
+ certificate: "Certificate",
3093
+ privateKey: "Private Key",
3094
+ deleteConfirmTitle: "Delete this credential?",
3095
+ filterByType: "Filter by type",
3096
+ nameLabel: "Name",
3097
+ descriptionLabel: "Description",
3098
+ endpointUrl: "Endpoint URL",
3099
+ credentialType: "Credential Type",
3100
+ selectType: "Select type",
3101
+ newApiKey: "New API Key",
3102
+ enterNewApiKey: "Enter new API key",
3103
+ basicInfo: "Basic Info",
3104
+ configurationMasked: "Configuration (Masked)",
3105
+ selectCredential: "Select credential",
3106
+ createdMsg: "Credential created",
3107
+ updatedMsg: "Credential updated",
3108
+ deletedMsg: "Credential deleted",
3109
+ rotatedMsg: "API Key rotated",
2951
3110
  },
2952
3111
  oauth2: {
2953
3112
  clients: "OAuth2 Clients",
2954
3113
  createApp: "Create App",
3114
+ clientIdLabel: "Client ID:",
3115
+ clientSecretLabel: "Client Secret:",
3116
+ secretSaveNowHint: "Please save the secret now. It won't be shown again.",
3117
+ appNameLabel: "Application Name",
3118
+ descriptionLabel: "Description",
3119
+ redirectUrisLabel: "Redirect URIs (one per line)",
3120
+ allowedScopesLabel: "Allowed Scopes",
3121
+ copied: "Copied",
3122
+ clientCreatedTitle: "Client Created",
2955
3123
  },
2956
3124
  plugins: {
2957
3125
  configSaved: "Configuration Saved",
2958
3126
  configuration: "Configuration",
2959
3127
  details: "Details",
3128
+ installationIdLabel: "Installation ID",
3129
+ pluginIdLabel: "Plugin ID",
3130
+ versionLabel: "Version",
3131
+ configJsonLabel: "Config (JSON)",
3132
+ targetVersionPlaceholder: "Target Version ID",
3133
+ rollbackConfirmTitle: "Rollback to this version?",
3134
+ invalidJson: "Invalid JSON",
2960
3135
  permissions: "Permissions",
2961
3136
  rollback: "Rollback",
2962
3137
  rolledBack: "Rolled Back",
@@ -2978,6 +3153,29 @@ const messages = {
2978
3153
  title: "Shield Encryption",
2979
3154
  performanceUnavailable: "Performance metrics unavailable",
2980
3155
  performanceUnavailableReason: "No production latency aggregate is available for this workspace. Metrics are not fabricated.",
3156
+ deactivate: "Deactivate",
3157
+ jobLabel: "Job:",
3158
+ statusLabel: "Status:",
3159
+ deactivateConfirmTitle: "Deactivate this policy?",
3160
+ createPolicyTitle: "Create Encryption Policy",
3161
+ objectLabel: "Object",
3162
+ objectPlaceholder: "Object Metadata ID",
3163
+ fieldLabel: "Field",
3164
+ fieldPlaceholder: "Field Metadata ID",
3165
+ searchable: "Searchable",
3166
+ statTotalEncryptedFields: "Total Encrypted Fields",
3167
+ statActiveKeys: "Active Keys",
3168
+ statPoliciesWithRecords: "Policies with Records",
3169
+ statEncryptedRecordsPerPolicy: "Encrypted Records per Policy",
3170
+ statPerformanceMetrics: "Performance Metrics",
3171
+ keyHistory: "Key History",
3172
+ rotateConfirmTitle: "Rotate encryption key?",
3173
+ reEncryption: "Re-encryption",
3174
+ selectPolicyToReEncrypt: "Select policy to re-encrypt",
3175
+ policyCreatedMsg: "Encryption policy created",
3176
+ policyDeactivatedMsg: "Policy deactivated",
3177
+ keyRotatedMsg: "Key rotated successfully",
3178
+ reEncryptionTriggeredMsg: "Re-encryption triggered",
2981
3179
  },
2982
3180
  webhooks: {
2983
3181
  dlq: "Dead Letter Queue",
@@ -3197,6 +3395,12 @@ const messages = {
3197
3395
  breadcrumbWorkspace: "Workspace",
3198
3396
  breadcrumbSecurity: "Security",
3199
3397
  breadcrumbNew: "New SSO Provider",
3398
+ entityIdAddon: "Entity ID",
3399
+ namePlaceholder: "Corporate SAML",
3400
+ entityIdLabel: "Entity ID",
3401
+ idpIssuerLabel: "IdP Issuer",
3402
+ idpSsoUrlLabel: "IdP SSO URL",
3403
+ x509CertLabel: "X.509 Certificate",
3200
3404
  sectionName: "Name",
3201
3405
  sectionNameDesc: "Your connection name",
3202
3406
  nameRequired: "Please enter connection name",
@@ -6932,6 +7136,7 @@ const messages = {
6932
7136
  editInstruction: "Edit instruction",
6933
7137
  evidenceRequired: "Evidence required",
6934
7138
  executionHistory: "Execution history",
7139
+ externalConversations: "External channel conversations",
6935
7140
  executionIdentity: "Execution identity and authority",
6936
7141
  executionSteps: "Execution steps",
6937
7142
  executionStepsEmpty: "Waiting for tool call records.",
@@ -8112,7 +8317,13 @@ const messages = {
8112
8317
  common: {
8113
8318
  cancel: "Cancel",
8114
8319
  },
8320
+ readOnlyTag: "Read only",
8321
+ siteCol: "Site",
8322
+ statusCol: "Status",
8323
+ searchLabel: "Search",
8324
+ reassignTitle: "Reassign External Profile",
8115
8325
  link: {
8326
+ contactIdUuidLabel: "Contact ID (UUID)",
8116
8327
  noResult: "Link failed: the server returned no result",
8117
8328
  linked: "Contact linked",
8118
8329
  failed: "Link failed",
@@ -8164,6 +8375,30 @@ const messages = {
8164
8375
  breadcrumbPlatform: "Platform Tools",
8165
8376
  refresh: "Refresh",
8166
8377
  status: {
8378
+ conflictedTag: "Conflicted",
8379
+ resolvedTag: "Resolved",
8380
+ noneTag: "None",
8381
+ retry: "Retry",
8382
+ pushAria: "Push source tracking changes to remote",
8383
+ pullAria: "Pull source tracking changes from remote",
8384
+ refreshAria: "Refresh source tracking status",
8385
+ contractNoteAlert: "Current contract note",
8386
+ diffInspectionAlert: "Diff inspection mode",
8387
+ conflictMarkersAlert: "Conflict markers detected in remote content",
8388
+ colFilePath: "File Path",
8389
+ colChangeType: "Change Type",
8390
+ colSource: "Source",
8391
+ colLastModified: "Last Modified",
8392
+ colConflictStatus: "Conflict Status",
8393
+ colActions: "Actions",
8394
+ changeTypeModified: "Modified",
8395
+ changeTypeAdded: "Added",
8396
+ changeTypeDeleted: "Deleted",
8397
+ pullModalTitle: "Pull from Remote",
8398
+ pullOkText: "Pull",
8399
+ pushButton: "Push to Remote",
8400
+ pullButton: "Pull from Remote",
8401
+ lastModifiedPrefix: "Last Modified:",
8167
8402
  pushSubmitted: "Push submitted: {path}",
8168
8403
  noPushableDeletes: "There are no deletions the status page can push directly; added/modified items still require a local file content contract.",
8169
8404
  confirmPushDeletes: "Push {count} deletions to remote? Added/modified items will still not be submitted from the status page.",
@@ -8183,6 +8418,29 @@ const messages = {
8183
8418
  unsupportedPull: "Pull-from-remote is now handled by the source-tracking baseline contract.",
8184
8419
  },
8185
8420
  baseline: {
8421
+ retry: "Retry",
8422
+ historyTitle: "Baseline History",
8423
+ pullFromRemoteAria: "Pull baseline from remote",
8424
+ refreshAria: "Refresh baseline management",
8425
+ resetAria: "Reset source tracking",
8426
+ setBaselineAria: "Set source tracking baseline",
8427
+ contractNoteAlert: "Current contract note",
8428
+ currentBaselineTitle: "Current Baseline",
8429
+ colBaselineId: "Baseline ID",
8430
+ colAvailable: "Available",
8431
+ colRevision: "Revision",
8432
+ colSource: "Source",
8433
+ colAuthor: "Author",
8434
+ colCreatedAt: "Created At",
8435
+ colDescription: "Description",
8436
+ setBaselineTitle: "Set Baseline",
8437
+ setBaselineOk: "Set Baseline",
8438
+ baselineDescriptionLabel: "Baseline description",
8439
+ pullFromRemoteButton: "Pull from Remote",
8440
+ resetTrackingButton: "Reset Tracking",
8441
+ setBaselineButton: "Set Baseline",
8442
+ availableTag: "Available",
8443
+ unavailableTag: "Unavailable",
8186
8444
  rebuildSubmitted: "Baseline rebuild request submitted",
8187
8445
  setFailed: "Failed to set baseline",
8188
8446
  confirmReset: "Reset source tracking status? This clears the current tracking state and realigns the baseline.",
@@ -8207,6 +8465,25 @@ const messages = {
8207
8465
  descPlaceholder: "Explain the reason for this baseline rebuild",
8208
8466
  },
8209
8467
  conflict: {
8468
+ unresolved: "Unresolved",
8469
+ pageTitle: "Conflict Resolution",
8470
+ refreshContentAria: "Refresh conflict content",
8471
+ markResolvedAria: "Mark conflict as resolved",
8472
+ contractNoteAlert: "Current contract note",
8473
+ conflictFileTitle: "Conflict File",
8474
+ selectFileLabel: "Select conflict file",
8475
+ colPath: "Path",
8476
+ colMarkers: "Markers",
8477
+ colResolutionState: "Resolution State",
8478
+ colBackendAction: "Backend Action",
8479
+ sideBySideTitle: "Side-by-Side Inspection",
8480
+ conflictMarkersTitle: "Conflict Markers",
8481
+ breadcrumbSourceTracking: "Source Tracking",
8482
+ breadcrumbConflictResolution: "Conflict Resolution",
8483
+ markResolvedButton: "Mark as Resolved",
8484
+ readyToSubmitTag: "Ready to Submit",
8485
+ pendingSelectionTag: "Pending Selection",
8486
+ resolvedVia: "resolved via {choice}",
8210
8487
  resolved: "Conflict resolution written to source-tracking contract",
8211
8488
  subtitle: "This page is connected to the conflict packet between baseline/local-side and remote; resolutions are written directly to the source-tracking contract.",
8212
8489
  contractNote: "Here the local side is based on the source-tracking baseline, not the browser local file system. Mark as Resolved writes the resolution choice to the backend contract.",
@@ -8768,6 +9045,14 @@ const messages = {
8768
9045
  executionLogTitle: "Execution Log",
8769
9046
  noExecutionRecords: "No execution records",
8770
9047
  executionLogReplay: "Execution Log Replay",
9048
+ stepGuardrail: "Guardrail",
9049
+ stepThought: "Thought",
9050
+ stepAction: "Action",
9051
+ stepObservation: "Observation",
9052
+ labelModel: "Model",
9053
+ labelDuration: "Duration",
9054
+ labelTokens: "Tokens",
9055
+ confidencePercent: "{value}% confidence",
8771
9056
  totalSteps: "Total Steps",
8772
9057
  totalTokens: "Total Tokens",
8773
9058
  totalDuration: "Total Duration",
@@ -9157,6 +9442,29 @@ const messages = {
9157
9442
  },
9158
9443
  },
9159
9444
  deploymentPages: {
9445
+ envProduction: "Production",
9446
+ envDevelopmentSandbox: "Development Sandbox",
9447
+ envTestSandbox: "Test Sandbox",
9448
+ createChangeSetTitle: "Create Change Set",
9449
+ changeSetNameLabel: "Name",
9450
+ changeSetNamePlaceholder: "Enter a change set name",
9451
+ changeSetDescriptionLabel: "Description",
9452
+ changeSetDescriptionPlaceholder: "Enter a description (optional)",
9453
+ sourceEnvFieldLabel: "Source Environment",
9454
+ sourceEnvironmentPlaceholder: "Select a source environment",
9455
+ targetEnvFieldLabel: "Target Environment",
9456
+ targetEnvironmentPlaceholder: "Select a target environment",
9457
+ pageTitle: "Deployment Management",
9458
+ searchChangeSetsPlaceholder: "Search change sets",
9459
+ statusFilterPlaceholder: "Status",
9460
+ changeSetCreated: "Change set created successfully",
9461
+ sandboxLabel: "Sandbox: {name}",
9462
+ nameRequired: "Enter a change set name",
9463
+ sourceRequired: "Select a source environment",
9464
+ targetRequired: "Select a target environment",
9465
+ pageSubtitle: "Promote metadata and configuration between sandboxes and production",
9466
+ deleteTooltip: "Delete",
9467
+ deleteDisabledTooltip: "Change sets that are deploying or already deployed cannot be deleted",
9160
9468
  // Common column headers
9161
9469
  colName: "Name",
9162
9470
  colStatus: "Status",
@@ -11704,6 +12012,12 @@ const messages = {
11704
12012
  currentSpend: "Current spend",
11705
12013
  monthlyBudget: "Monthly budget",
11706
12014
  notConfigured: "Not configured",
12015
+ agentFallbackPrefix: "AI Employee",
12016
+ agentUnknown: "AI Employee (unknown)",
12017
+ setupNoticeBoth: "Monthly budget and AI usage pricing are not configured yet: usage is reported as-is. Configure a budget to enable utilization and cap controls; amounts take effect once a platform admin activates a rate card.",
12018
+ setupNoticeBudget: "Monthly budget is not configured yet: usage is reported as-is. Configure a budget to enable utilization and cap controls.",
12019
+ setupNoticePricing: "AI usage pricing is not configured yet: amounts are shown as ¥0 as-is. Ask a platform admin to configure and activate an AI usage rate card.",
12020
+ setupActionSmartCap: "Configure Smart Cap",
11707
12021
  noBudgetConfigured: "No monthly budget configured",
11708
12022
  noBudgetConfiguredDescription: "The detail sections below are aggregated from actual usage (tokens and cost). Current spend and projected month-end spend are shown truthfully; configure a budget to display the usage rate and cap controls.",
11709
12023
  daysRemaining: "Days remaining",
@@ -12122,11 +12436,13 @@ const messages = {
12122
12436
  summaryValue: "Estimated value",
12123
12437
  includesOutcomeBilling: "Includes outcome billing",
12124
12438
  tokenCostOnly: "Token cost only",
12439
+ billingPrivate: "Platform Admin only",
12440
+ billingPrivateNote: "Platform charge amounts are not published in demos or customer catalogs",
12125
12441
  phaseIntentDesc: "Identify the business goal, key entities, and triggering context.",
12126
12442
  phaseAgentMatchDesc: "Select the best-fit executing Agent, model, and capability set.",
12127
12443
  phaseExecutionDesc: "Invoke tools, write back to CRM, and generate external or internal actions.",
12128
12444
  phaseGuardrailDesc: "Validate amount, permissions, approvals, and the attribution chain.",
12129
- phaseCompleteDesc: "Output results, outcome metrics, and the Outcome billing signal.",
12445
+ phaseCompleteDesc: "Output results, outcome metrics, and auditable Outcome attribution signals.",
12130
12446
  executionChainPreview: "Execution Chain Preview",
12131
12447
  waitingExecution: "Waiting to execute",
12132
12448
  scenarioSummary: "Scenario Summary",
@@ -12849,6 +13165,53 @@ const messages = {
12849
13165
  fieldsSection: "Fields",
12850
13166
  functionsSection: "Functions",
12851
13167
  },
13168
+ builder: {
13169
+ nullNoInput: "NULL does not require any additional input.",
13170
+ functionName: "Function Name",
13171
+ dateaddQuickSetup: "DATEADD Quick Setup",
13172
+ dateField: "Date Field",
13173
+ offsetAmount: "Offset Amount",
13174
+ offsetUnit: "Offset Unit",
13175
+ ifQuickSetup: "IF Quick Setup",
13176
+ conditionField: "Condition Field",
13177
+ conditionOperator: "Condition Operator",
13178
+ conditionValueType: "Condition Value Type",
13179
+ conditionValue: "Condition Value",
13180
+ returnsNull: "Returns NULL",
13181
+ noArguments: "This function does not take any arguments.",
13182
+ operator: "Operator",
13183
+ left: "Left",
13184
+ right: "Right",
13185
+ stringConcatenation: "String Concatenation (&)",
13186
+ negative: "Negative",
13187
+ constants: "Constants",
13188
+ field: "Field",
13189
+ compareTo: "Compare To",
13190
+ value: "Value",
13191
+ substituteValueType: "Substitute Value Type",
13192
+ substituteValue: "Substitute Value",
13193
+ picklistField: "Picklist Field",
13194
+ picklistValue: "Picklist Value",
13195
+ condition1: "Condition 1",
13196
+ condition2: "Condition 2",
13197
+ formulaPreview: "Formula Preview",
13198
+ placeholderExampleFormula: "For example: isActive = TRUE",
13199
+ placeholderExampleCondition: "For example: annualRevenue > 1000000",
13200
+ placeholderExamplePicklist: "For example: Closed Won",
13201
+ placeholderEnterText: "Enter text",
13202
+ messagePreviewFailed: "Preview evaluation failed.",
13203
+ messagePreviewRequestFailed: "Preview request failed: {error}",
13204
+ messagePicklistConversion: "TEXT(Picklist) Conversion",
13205
+ messagePicklistComparison: "Salesforce-style Picklist Comparison",
13206
+ messageArgCountOutOfRange: "Function argument count is out of range",
13207
+ descIspickval: "Use ISPICKVAL when you want to compare a picklist field against a specific label value.",
13208
+ descNoMatchingFunctions: "No matching functions",
13209
+ descNoMatchingFields: "No matching fields",
13210
+ messageSyntaxPassed: "Syntax check passed.",
13211
+ messageSelectFieldFirst: "Select a field first.",
13212
+ messagePreviewNotConfigured: "Preview is not configured.",
13213
+ messageConditionInserted: "Condition inserted.",
13214
+ },
12852
13215
  batchRecalculate: {
12853
13216
  title: "Batch Recalculate Formula Field",
12854
13217
  skip: "Skip",
@@ -13159,6 +13522,49 @@ const messages = {
13159
13522
  leaveCancel: "Stay",
13160
13523
  },
13161
13524
  recordPageBuilder: {
13525
+ inspector: {
13526
+ sectionTabsContainer: "Tabs Container",
13527
+ sectionTabProperties: "Tab Properties",
13528
+ sectionComponentProperties: "Component Properties",
13529
+ sectionVisibilityRules: "Visibility Rules",
13530
+ sectionCustomLwc: "Custom LWC",
13531
+ sectionCurrentScope: "Current Scope",
13532
+ sectionPageMap: "Page Map",
13533
+ titlePageScope: "Page Scope",
13534
+ labelLabel: "Label",
13535
+ placeholderComponentTitle: "Component title",
13536
+ labelRegion: "Region",
13537
+ labelConditionExpression: "Condition Expression",
13538
+ labelDeviceVisibility: "Device Visibility",
13539
+ labelLayout: "Layout",
13540
+ labelRelatedObjectApiName: "Related Object API Name",
13541
+ placeholderSelectRelatedObject: "Select a related object",
13542
+ labelRelationshipField: "Relationship Field",
13543
+ labelDisplayStyle: "Display Style",
13544
+ labelVisibleFields: "Visible Fields",
13545
+ labelSortField: "Sort Field",
13546
+ labelSortDirection: "Sort Direction",
13547
+ labelPageSize: "Page Size",
13548
+ labelDefaultTitle: "Default Title",
13549
+ labelContent: "Content",
13550
+ labelStageFieldApiName: "Stage Field API Name",
13551
+ labelStages: "Stages",
13552
+ placeholderOneStagePerLine: "One stage per line",
13553
+ placeholderStageExample: "Won",
13554
+ labelCurrentStage: "Current Stage",
13555
+ labelComponent: "Component",
13556
+ labelComponentApiName: "Component API Name",
13557
+ labelBundleUrl: "Bundle URL",
13558
+ labelBundleHash: "Bundle Hash",
13559
+ labelRuntimeStatus: "Runtime Status",
13560
+ okTextApply: "Apply",
13561
+ runtimeShellBadge: "Runtime Shell",
13562
+ componentCountLabel: "Component Count",
13563
+ noSavedPages: "No saved pages yet.",
13564
+ apiNameLabel: "API Name",
13565
+ atLeastOneTab: "At least one tab is required",
13566
+ bundleReadyBadge: "Bundle Ready",
13567
+ },
13162
13568
  formError: {
13163
13569
  nameRequired: "Please enter a page name",
13164
13570
  internalNameRequired: "Please enter an internal name",
@@ -14029,6 +14435,8 @@ const messages = {
14029
14435
  },
14030
14436
  kanban: {
14031
14437
  cancel: "Cancel",
14438
+ cardDueSoon: "Due soon",
14439
+ cardRiskHigh: "High risk",
14032
14440
  create: "Create",
14033
14441
  loadFailed: "Load Failed",
14034
14442
  moveFailed: "Move Failed",
@@ -14344,6 +14752,16 @@ const messages = {
14344
14752
  title: "Page Builder",
14345
14753
  newPage: "New Page",
14346
14754
  edit: "Edit",
14755
+ newPageModal: {
14756
+ title: "New Page",
14757
+ pageNameLabel: "Page Name",
14758
+ apiNameLabel: "API Name",
14759
+ typeLabel: "Type",
14760
+ descriptionLabel: "Description",
14761
+ pageNameRequired: "Page Name is required",
14762
+ apiNameRequired: "API Name is required",
14763
+ apiNamePatternHint: "Use snake_case, starting with a letter",
14764
+ },
14347
14765
  createSuccess: "Page created",
14348
14766
  pageTypes: {
14349
14767
  recordPage: "Record Page",
@@ -14732,6 +15150,18 @@ const messages = {
14732
15150
  promotional: "Promotional",
14733
15151
  useTemplate: "Use Template",
14734
15152
  welcome: "Welcome",
15153
+ templates: {
15154
+ welcomeBasic: { name: "Welcome — Basic", description: "Clean welcome email with greeting and CTA button" },
15155
+ welcomeOnboarding: { name: "Welcome — Onboarding Steps", description: "Onboarding email with step-by-step guide" },
15156
+ promoSale: { name: "Promotional — Flash Sale", description: "Eye-catching promotional email for limited-time offers" },
15157
+ promoProductLaunch: { name: "Promotional — Product Launch", description: "Announce a new product or feature to your audience" },
15158
+ notifyReminder: { name: "Notification — Appointment Reminder", description: "Remind recipients about upcoming appointments or events" },
15159
+ notifyActionRequired: { name: "Notification — Action Required", description: "Alert recipients that an action is needed" },
15160
+ holidaySeason: { name: "Holiday — Season Greetings", description: "Warm holiday greetings for the festive season" },
15161
+ holidayNewYear: { name: "Holiday — New Year", description: "New Year celebration and wishes" },
15162
+ newsletterMonthly: { name: "Newsletter — Monthly Update", description: "Monthly newsletter with multiple content sections" },
15163
+ newsletterWeeklyDigest: { name: "Newsletter — Weekly Digest", description: "Compact weekly digest with top stories" },
15164
+ },
14735
15165
  },
14736
15166
  territory: {
14737
15167
  typesUnavailable: "Territory Types are not yet available",
@@ -15291,6 +15721,15 @@ const messages = {
15291
15721
  },
15292
15722
  decisionConfig: {
15293
15723
  title: "Decision Branch Configuration",
15724
+ outcomeLabel: "Outcome Label",
15725
+ outcomeApiName: "Outcome API Name",
15726
+ colResource: "Resource",
15727
+ colOperator: "Operator",
15728
+ colValue: "Value",
15729
+ defaultBadge: "Default",
15730
+ placeholderResource: "Resource",
15731
+ placeholderValue: "Value",
15732
+ addOutcome: "Add outcome",
15294
15733
  description: "Create an Outcome for each automation path, and specify for each Outcome the conditions that must be met to take that path.",
15295
15734
  noConditionWarning: "Please configure at least one decision branch, otherwise the flow cannot be activated",
15296
15735
  deleteCondition: "Delete condition",
@@ -16168,6 +16607,9 @@ const messages = {
16168
16607
  recordList: {
16169
16608
  actions: "Actions",
16170
16609
  refresh: "Refresh",
16610
+ density: "Row Density",
16611
+ densityCompact: "Compact",
16612
+ densityComfy: "Comfy",
16171
16613
  export: "Export",
16172
16614
  moreActions: "More Actions",
16173
16615
  exportTitle: "Export Current List",
@@ -16407,6 +16849,7 @@ const messages = {
16407
16849
  details: "Details",
16408
16850
  saveSuccess: "Saved successfully",
16409
16851
  saveFailed: "Save failed, please try again later",
16852
+ pathAriaLabel: "Sales path stages",
16410
16853
  deleted: "Deleted {object} {name}",
16411
16854
  deleteFailed: "Delete failed, please try again later",
16412
16855
  deleteUndone: "Delete undone",
@@ -16690,6 +17133,33 @@ const messages = {
16690
17133
  rawModeDesc: "The current condition format cannot be parsed by the visual editor. Please edit the JSON directly or try switching to visual mode.",
16691
17134
  switchToVisual: "Switch to visual mode",
16692
17135
  },
17136
+ flowBuilderCanvas: {
17137
+ undoTitle: "Undo (Ctrl+Z)",
17138
+ redoTitle: "Redo (Ctrl+Shift+Z)",
17139
+ saveTitle: "Save",
17140
+ newVersionTitle: "New Version",
17141
+ activateTitle: "Activate",
17142
+ rollbackTitle: "Rollback",
17143
+ autoLayoutApplied: "Auto-Layout applied",
17144
+ switchedToFreeForm: "Switched to Free-Form",
17145
+ flowSaved: "Flow saved",
17146
+ },
17147
+ workspaceLogo: {
17148
+ uploadButton: "Upload",
17149
+ workspaceIdNotFound: "Workspace id not found",
17150
+ uploadSuccess: "Logo uploaded successfully",
17151
+ uploadFailed: "Failed to upload logo",
17152
+ removeSuccess: "Logo removed successfully",
17153
+ removeFailed: "Failed to remove logo",
17154
+ },
17155
+ reportDesigner: {
17156
+ fieldsTitle: "Fields",
17157
+ columnsLabel: "Columns (drag fields here)",
17158
+ groupByLabel: "Group By",
17159
+ summaryLabel: "Summary (aggregations)",
17160
+ previewTitle: "Preview",
17161
+ configSaved: "Report config saved",
17162
+ },
16693
17163
  workflowRulesPage: {
16694
17164
  layoutTitle: "Flow / Approvals",
16695
17165
  breadcrumbWorkspace: "Workspace",
@@ -16898,6 +17368,33 @@ const messages = {
16898
17368
  abortSuccess: "Batch job aborted",
16899
17369
  abortError: "Abort failed: {message}",
16900
17370
  },
17371
+ platformCommercialPricing: {
17372
+ actionSucceeded: "Action completed",
17373
+ actionFailed: "Action failed. Confirm step-up verification and retry.",
17374
+ catalog: "Commercial Catalog",
17375
+ promotions: "Promotions",
17376
+ agreements: "Customer Agreements",
17377
+ version: "Version",
17378
+ status: "Status",
17379
+ currency: "Currency",
17380
+ effectiveFrom: "Effective From",
17381
+ entries: "Price Entries",
17382
+ actions: "Actions",
17383
+ activate: "Activate",
17384
+ retire: "Retire",
17385
+ suspend: "Suspend",
17386
+ code: "Code",
17387
+ benefit: "Benefit Rule",
17388
+ scope: "Scope",
17389
+ workspace: "Workspace",
17390
+ agreementKey: "Agreement",
17391
+ contractEvidence: "Contract Evidence",
17392
+ overrides: "Contracted Prices",
17393
+ privateNotice: "Platform prices are managed only here. Customers see only their own contracts and formal invoices.",
17394
+ workspaceFilter: "Filter by workspace UUID",
17395
+ loadFailed: "Failed to load",
17396
+ retry: "Retry",
17397
+ },
16901
17398
  platformAdmin: {
16902
17399
  menuChannelProvider: "Messaging Channels",
16903
17400
  adminPanelUi: {
@@ -17685,6 +18182,9 @@ const messages = {
17685
18182
  menuOpsSubscriptions: "Subscriptions",
17686
18183
  menuOpsHealth: "Tenant Health",
17687
18184
  menuOpsBilling: "Billing Overview",
18185
+ menuCommercialCatalog: "Commercial Catalog",
18186
+ menuPromotions: "Promotions",
18187
+ menuCustomerAgreements: "Customer Agreements",
17688
18188
  menuOpsRenewals: "Renewals",
17689
18189
  menuAiProvider: "AI Provider",
17690
18190
  menuDemoAccess: "Demo Access",
@@ -18616,6 +19116,27 @@ const messages = {
18616
19116
  REDIRECT_REQUIRED: "Open the owning module to complete the test",
18617
19117
  },
18618
19118
  connectivityCode: {
19119
+ FEISHU_TOKEN_OK: "Feishu App ID and App Secret are valid, and the token service is reachable",
19120
+ FEISHU_TOKEN_REJECTED: "Feishu rejected the configured App ID or App Secret",
19121
+ FEISHU_MESSAGE_DELIVERY_OK: "Feishu accepted the test message; the target returned HTTP {status}",
19122
+ FEISHU_MESSAGE_DELIVERY_REJECTED: "Feishu rejected the test message; check the chat_id, bot membership, and application permissions",
19123
+ FEISHU_TEST_INPUT_REQUIRED: "Enter both the Feishu chat_id and test content",
19124
+ FEISHU_TEST_INPUT_INVALID: "The chat_id or test content exceeds the allowed length",
19125
+ WECOM_TOKEN_OK: "WeCom application credentials are valid, and the token service is reachable",
19126
+ WECOM_TOKEN_REJECTED: "WeCom rejected the configured application credentials",
19127
+ WECOM_SMART_BOT_CALLBACK_VERIFICATION_REQUIRED: "Token and EncodingAESKey are saved. Save the callback URL in WeCom Smart Bot to complete verification",
19128
+ DINGTALK_TOKEN_OK: "DingTalk AppKey and AppSecret are valid, and the token service is reachable",
19129
+ DINGTALK_STREAM_CREDENTIALS_OK_RUNTIME_PENDING: "DingTalk credentials are valid. Send a real message to the robot to confirm the persistent Stream connection and reply path.",
19130
+ DINGTALK_TOKEN_REJECTED: "DingTalk rejected the configured AppKey or AppSecret",
19131
+ SLACK_CREDENTIALS_OK_ADAPTER_PENDING: "Slack credentials are valid, but the inbound runtime adapter is not connected yet",
19132
+ SLACK_CREDENTIALS_REJECTED: "Slack rejected the configured credentials",
19133
+ TEAMS_CREDENTIALS_OK_ADAPTER_PENDING: "Microsoft Teams credentials are valid, but the inbound runtime adapter is not connected yet",
19134
+ TEAMS_CREDENTIALS_REJECTED: "Microsoft rejected the configured Teams credentials",
19135
+ API_CREDENTIALS_SAVED_CLIENT_TEST_REQUIRED: "API credentials are saved; verify them with a client-originated request",
19136
+ API_CALLBACK_OK: "The API callback is reachable; invocation credentials still require a client test",
19137
+ API_CALLBACK_REJECTED: "The API callback rejected the test request",
19138
+ WEB_CHAT_WIDGET_TEST_REQUIRED: "Complete the end-to-end test in the Web Chat widget",
19139
+ TELEPHONY_TEST_REQUIRED: "Run the telephony provider connection test in Voice settings",
18619
19140
  WEBHOOK_DELIVERY_OK: "The test message was delivered successfully; the target returned HTTP {status}",
18620
19141
  WEBHOOK_HTTP_REJECTED: "The Webhook target returned HTTP {status} and did not accept the test message",
18621
19142
  WEBHOOK_PROVIDER_REJECTED: "The external provider rejected the test message; check the Webhook URL and provider security rules",
@@ -18625,10 +19146,37 @@ const messages = {
18625
19146
  TEST_MESSAGE_REQUIRED: "Enter test content before sending",
18626
19147
  TEST_MESSAGE_TOO_LONG: "Test content must not exceed 2000 characters",
18627
19148
  },
18628
- webhookTestTitle: "Send Webhook test message",
18629
- webhookTestDescription: "Enter content to deliver to the external group or system. The backend will actively call the saved Webhook URL when you send it.",
18630
- webhookTestPlaceholder: "For example: NexusClaw Webhook connectivity test. Please confirm receipt.",
18631
- webhookTestSend: "Send test message",
19149
+ webhookTestTitle: "Have a digital employee send a Webhook test message",
19150
+ webhookTestDescription: "Choose an authorized digital employee. The employee generates the test message before the platform delivers it to the saved Webhook URL.",
19151
+ deliveryTestEmployeeLabel: "Digital employee generating the test message",
19152
+ deliveryTestEmployeePlaceholder: "Choose an authorized digital employee",
19153
+ deliveryTestGenerateAndSend: "Generate and send test message",
19154
+ deliveryTestScenarioLabel: "Message scenario",
19155
+ deliveryTestScenario: {
19156
+ welcome: {
19157
+ label: "Welcome message",
19158
+ prompt: "a short, warm welcome for a new customer",
19159
+ },
19160
+ event_reminder: {
19161
+ label: "Event reminder",
19162
+ prompt: "a reminder for an upcoming event with a concise call to action",
19163
+ },
19164
+ service_follow_up: {
19165
+ label: "Service follow-up",
19166
+ prompt: "a warm follow-up after customer service, inviting feedback",
19167
+ },
19168
+ },
19169
+ deliveryTestGenerationPrompt: "Generate a short, professional, natural business message for this scenario: {scenario}. Return only the message body with no explanation. Do not mention testing, Webhooks, or the system.",
19170
+ deliveryTestGenerationFailed: "The digital employee could not generate a test message. Please try again.",
19171
+ sendTestMessage: "Send test message",
19172
+ testCredentials: "Test credentials and platform connection",
19173
+ credentialTestTitle: "Test credentials and platform connection",
19174
+ credentialTestScopeTitle: "This test will not send a group message",
19175
+ credentialTestScopeDescription: "This application channel only verifies platform credentials and the token service. Sending a group message also requires a platform chat ID or recipient ID, which this channel does not currently store.",
19176
+ startCredentialTest: "Start test",
19177
+ feishuMessageTestTitle: "Have a digital employee send a Feishu group test message",
19178
+ feishuMessageTestDescription: "Enter the Feishu group chat_id and choose an authorized digital employee. The employee generates the message before delivery; the app bot must be in the group and have permission to send messages.",
19179
+ feishuChatIdPlaceholder: "Enter the Feishu group chat_id, for example oc_xxxxxxxxx",
18632
19180
  toolLabel: {
18633
19181
  recordQuery: "Query CRM",
18634
19182
  recordAggregate: "Aggregate CRM",
@@ -18644,22 +19192,22 @@ const messages = {
18644
19192
  label: "DingTalk",
18645
19193
  step1: "Sign in to the DingTalk Open Platform (open-dev.dingtalk.com) and create an enterprise-internal app under \"App Development\".",
18646
19194
  step2: "On the \"Credentials & Basic Info\" page, copy the AppKey (Client ID) and AppSecret (Client Secret).",
18647
- step3: "Enable the \"Robot\" capability and set the message receive URL to your workspace IM gateway callback address.",
19195
+ step3: "Enable the Robot capability. Choose Stream mode (recommended), or choose Callback and paste the workspace callback URL after saving.",
18648
19196
  step4: "Publish the app version, grant it to the organization, then paste the credentials below.",
18649
19197
  },
18650
19198
  feishu: {
18651
19199
  label: "Feishu",
18652
19200
  step1: "Sign in to open.feishu.cn and create a custom enterprise app in the Developer Console.",
18653
19201
  step2: "On the \"Credentials & Basic Info\" page, copy the App ID and App Secret.",
18654
- step3: "Enable the \"Bot\" capability, subscribe to message events, and configure the callback URL.",
18655
- step4: "Create and publish an app version, then paste the credentials below.",
19202
+ step3: "Under Events & Callbacks, choose \"Send events to developer server\", subscribe to message events, and configure the callback URL.",
19203
+ step4: "Copy the Encrypt Key and Verification Token from Encryption Strategy, enter them below, then create and publish an app version.",
18656
19204
  },
18657
19205
  wecom: {
18658
- label: "WeCom",
18659
- step1: "Sign in to the WeCom admin console (work.weixin.qq.com) and create a self-built app under \"App Management\".",
18660
- step2: "On the app detail page, copy the CorpId, AgentId, and Secret.",
18661
- step3: "On the \"Receive Messages\" page, configure the Token and EncodingAESKey, and set the callback URL to your workspace IM gateway address.",
18662
- note: "Callback verification requires the backend IM gateway to be online; if verification fails, confirm the workspace default IM gateway is enabled and retry.",
19206
+ label: "WeCom Smart Bot",
19207
+ step1: "Create a Smart Bot in the WeCom admin console, open API Configuration, and choose URL callback mode.",
19208
+ step2: "Enter the Token and EncodingAESKey below, save the channel, then copy the generated callback URL.",
19209
+ step3: "Enter that callback URL and the same Token and EncodingAESKey in WeCom, complete URL verification, and add the Smart Bot to the target group.",
19210
+ note: "This is Smart Bot URL callback mode. CorpId, AgentId, and application Secret are not required. WeCom performs a GET verification when saving.",
18663
19211
  },
18664
19212
  slack: {
18665
19213
  label: "Slack",
@@ -18700,11 +19248,11 @@ const messages = {
18700
19248
  field: {
18701
19249
  webhook: {
18702
19250
  webhookUrl: "Webhook URL",
19251
+ dingtalkSigningSecret: "DingTalk robot signing secret (when signing is enabled)",
18703
19252
  },
18704
19253
  wecom: {
18705
- corpId: "Corp ID",
18706
- agentId: "Agent ID",
18707
- secret: "Secret",
19254
+ token: "Token",
19255
+ aesKey: "EncodingAESKey",
18708
19256
  },
18709
19257
  },
18710
19258
  simNoReply: "(No reply)",
@@ -18769,6 +19317,18 @@ const messages = {
18769
19317
  copyCallbackUrl: "Copy callback URL",
18770
19318
  copyCallbackUrlAria: "Copy callback URL",
18771
19319
  callbackUrlCopied: "Callback URL copied. Paste it into the message-receive / callback URL field on the open platform.",
19320
+ callbackUrlCopyFailed: "The browser did not allow automatic copying. Retry from an HTTPS page.",
19321
+ connectionModeLabel: "Robot connection mode",
19322
+ connectionMode: {
19323
+ stream: "Stream delivery (recommended)",
19324
+ callback: "Callback URL",
19325
+ streamHelp: "NexusClaw opens a persistent connection to receive messages, so no public callback URL is required. The connection starts and reconnects automatically while the channel is enabled.",
19326
+ callbackHelp: "DingTalk delivers messages to a public HTTPS endpoint. After saving, copy the generated callback URL into the DingTalk console.",
19327
+ },
19328
+ dingtalkStreamReady: "Stream mode keeps a persistent backend connection and needs no callback URL. Make sure the DingTalk robot is also configured for Stream mode and published.",
19329
+ dingtalkStreamError: "The Stream connection is unhealthy. Check AppKey/AppSecret, the robot's Stream setting, and backend outbound network access.",
19330
+ dingtalkStreamStepTitle: "Confirm Stream connection",
19331
+ dingtalkStreamStepDescription: "Enable the channel, then send a message directly to the DingTalk robot",
18772
19332
  confirmDelete: "Delete this integration?",
18773
19333
  delete: "Delete",
18774
19334
  cancel: "Cancel",
@@ -18792,6 +19352,7 @@ const messages = {
18792
19352
  fillIn: "3. Fill in the configuration",
18793
19353
  webhookFillIn: "3. Enter the Webhook delivery configuration",
18794
19354
  webhookUrlRequired: "Enter the external Webhook message delivery URL",
19355
+ credentialFieldRequired: "Enter {field}",
18795
19356
  webhookSetupTitle: "Configure proactive Webhook delivery",
18796
19357
  webhookSetupDescription: "Webhook lets explicitly authorized AI employees deliver messages to an external URL. It does not receive external messages, use a callback URL, or require callback verification.",
18797
19358
  webhookStepAdd: "Add Webhook",
@@ -18822,7 +19383,7 @@ const messages = {
18822
19383
  flow: {
18823
19384
  inbound_callback: {
18824
19385
  title: "Inbound application callback channel",
18825
- description: "WeCom, Feishu, and DingTalk have real inbound callbacks wired. Messages received by the external platform are dispatched only to explicitly selected AI employees.",
19386
+ description: "WeCom Smart Bot, Feishu, and DingTalk have real inbound callbacks wired. Messages received by the external platform are dispatched only to explicitly selected AI employees.",
18826
19387
  howTo: "2. Configure the open-platform application and callback",
18827
19388
  configure: "3. Enter application credentials and service settings",
18828
19389
  employeesLabel: "AI employees allowed to serve externally",
@@ -19189,6 +19750,38 @@ const messages = {
19189
19750
  billingTierFull: "Full billing",
19190
19751
  billingTierHalf: "Half billing",
19191
19752
  billingTierNone: "No billing",
19753
+ opsAgentPrefix: "AI Employee",
19754
+ opsAgentUnknown: "AI Employee (unknown)",
19755
+ opsScoringAgentActions: "{count} agent actions",
19756
+ opsScoringTotalActions: "{count} actions total",
19757
+ opsScoringRawRatio: "raw ratio {percent}",
19758
+ opsScoringWeighted: "weighted score {score}",
19759
+ opsOutcomeType: {
19760
+ lead_created: "Lead created",
19761
+ mql: "Marketing-qualified lead",
19762
+ opportunity_created: "Opportunity created",
19763
+ opportunity_won: "Opportunity won",
19764
+ customer_activated: "Customer activated",
19765
+ case_closed: "Case closed",
19766
+ },
19767
+ opsBillingStatus: {
19768
+ pending: "Pending",
19769
+ confirmed: "Confirmed",
19770
+ waived: "Waived",
19771
+ cancelled: "Cancelled",
19772
+ },
19773
+ opsDisputeStatus: {
19774
+ none: "No dispute",
19775
+ open: "Dispute open",
19776
+ raised: "Raised",
19777
+ reviewing: "Reviewing",
19778
+ resolved: "Resolved",
19779
+ },
19780
+ opsBillingTier: {
19781
+ full: "Full billing",
19782
+ half: "Half billing",
19783
+ none: "No billing",
19784
+ },
19192
19785
  },
19193
19786
  homeDashboard: {
19194
19787
  saveSuccess: "__EN_TODO__: 首页配置已保存",
@@ -20096,7 +20689,7 @@ const messages = {
20096
20689
  opportunityDetail: {
20097
20690
  quotesTab: "Quotes",
20098
20691
  contactsTab: "Contact Roles",
20099
- tasksTab: "Activity Timeline",
20692
+ tasksTab: "Tasks",
20100
20693
  backToPipeline: "Back to Pipeline",
20101
20694
  openForecast: "Open Forecast",
20102
20695
  },