@open-mercato/ai-assistant 0.5.1-develop.3036.f02c281f23 → 0.5.1-develop.3045.b4b3320cc2

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 (273) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/AGENTS.md +361 -0
  3. package/README.md +5 -0
  4. package/dist/index.js +154 -0
  5. package/dist/index.js.map +2 -2
  6. package/dist/modules/ai_assistant/__integration__/TC-AI-002-agent-policy.spec.js +73 -0
  7. package/dist/modules/ai_assistant/__integration__/TC-AI-002-agent-policy.spec.js.map +7 -0
  8. package/dist/modules/ai_assistant/__integration__/TC-AI-AGENT-SETTINGS-005-settings-page.spec.js +484 -0
  9. package/dist/modules/ai_assistant/__integration__/TC-AI-AGENT-SETTINGS-005-settings-page.spec.js.map +7 -0
  10. package/dist/modules/ai_assistant/__integration__/TC-AI-PLAYGROUND-004-playground.spec.js +251 -0
  11. package/dist/modules/ai_assistant/__integration__/TC-AI-PLAYGROUND-004-playground.spec.js.map +7 -0
  12. package/dist/modules/ai_assistant/__integration__/TC-INT-AI-TOOLS.spec.js +91 -0
  13. package/dist/modules/ai_assistant/__integration__/TC-INT-AI-TOOLS.spec.js.map +7 -0
  14. package/dist/modules/ai_assistant/ai-tools/attachments-pack.js +202 -0
  15. package/dist/modules/ai_assistant/ai-tools/attachments-pack.js.map +7 -0
  16. package/dist/modules/ai_assistant/ai-tools/meta-pack.js +121 -0
  17. package/dist/modules/ai_assistant/ai-tools/meta-pack.js.map +7 -0
  18. package/dist/modules/ai_assistant/ai-tools/search-pack.js +94 -0
  19. package/dist/modules/ai_assistant/ai-tools/search-pack.js.map +7 -0
  20. package/dist/modules/ai_assistant/ai-tools.js +14 -0
  21. package/dist/modules/ai_assistant/ai-tools.js.map +7 -0
  22. package/dist/modules/ai_assistant/api/ai/actions/[id]/cancel/route.js +175 -0
  23. package/dist/modules/ai_assistant/api/ai/actions/[id]/cancel/route.js.map +7 -0
  24. package/dist/modules/ai_assistant/api/ai/actions/[id]/confirm/route.js +174 -0
  25. package/dist/modules/ai_assistant/api/ai/actions/[id]/confirm/route.js.map +7 -0
  26. package/dist/modules/ai_assistant/api/ai/actions/[id]/route.js +101 -0
  27. package/dist/modules/ai_assistant/api/ai/actions/[id]/route.js.map +7 -0
  28. package/dist/modules/ai_assistant/api/ai/agents/[agentId]/mutation-policy/route.js +311 -0
  29. package/dist/modules/ai_assistant/api/ai/agents/[agentId]/mutation-policy/route.js.map +7 -0
  30. package/dist/modules/ai_assistant/api/ai/agents/[agentId]/prompt-override/route.js +246 -0
  31. package/dist/modules/ai_assistant/api/ai/agents/[agentId]/prompt-override/route.js.map +7 -0
  32. package/dist/modules/ai_assistant/api/ai/agents/route.js +94 -0
  33. package/dist/modules/ai_assistant/api/ai/agents/route.js.map +7 -0
  34. package/dist/modules/ai_assistant/api/ai/chat/route.js +173 -0
  35. package/dist/modules/ai_assistant/api/ai/chat/route.js.map +7 -0
  36. package/dist/modules/ai_assistant/api/ai/run-object/route.js +167 -0
  37. package/dist/modules/ai_assistant/api/ai/run-object/route.js.map +7 -0
  38. package/dist/modules/ai_assistant/backend/config/ai-assistant/agents/AiAgentSettingsPageClient.js +1111 -0
  39. package/dist/modules/ai_assistant/backend/config/ai-assistant/agents/AiAgentSettingsPageClient.js.map +7 -0
  40. package/dist/modules/ai_assistant/backend/config/ai-assistant/agents/page.js +10 -0
  41. package/dist/modules/ai_assistant/backend/config/ai-assistant/agents/page.js.map +7 -0
  42. package/dist/modules/ai_assistant/backend/config/ai-assistant/agents/page.meta.js +28 -0
  43. package/dist/modules/ai_assistant/backend/config/ai-assistant/agents/page.meta.js.map +7 -0
  44. package/dist/modules/ai_assistant/backend/config/ai-assistant/legacy/page.js +10 -0
  45. package/dist/modules/ai_assistant/backend/config/ai-assistant/legacy/page.js.map +7 -0
  46. package/dist/modules/ai_assistant/backend/config/ai-assistant/legacy/page.meta.js +30 -0
  47. package/dist/modules/ai_assistant/backend/config/ai-assistant/legacy/page.meta.js.map +7 -0
  48. package/dist/modules/ai_assistant/backend/config/ai-assistant/page.js +4 -6
  49. package/dist/modules/ai_assistant/backend/config/ai-assistant/page.js.map +2 -2
  50. package/dist/modules/ai_assistant/backend/config/ai-assistant/page.meta.js +1 -21
  51. package/dist/modules/ai_assistant/backend/config/ai-assistant/page.meta.js.map +2 -2
  52. package/dist/modules/ai_assistant/backend/config/ai-assistant/playground/AiPlaygroundPageClient.js +462 -0
  53. package/dist/modules/ai_assistant/backend/config/ai-assistant/playground/AiPlaygroundPageClient.js.map +7 -0
  54. package/dist/modules/ai_assistant/backend/config/ai-assistant/playground/page.js +10 -0
  55. package/dist/modules/ai_assistant/backend/config/ai-assistant/playground/page.js.map +7 -0
  56. package/dist/modules/ai_assistant/backend/config/ai-assistant/playground/page.meta.js +28 -0
  57. package/dist/modules/ai_assistant/backend/config/ai-assistant/playground/page.meta.js.map +7 -0
  58. package/dist/modules/ai_assistant/cli.js +78 -12
  59. package/dist/modules/ai_assistant/cli.js.map +2 -2
  60. package/dist/modules/ai_assistant/data/entities/AiAgentMutationPolicyOverride.js +5 -0
  61. package/dist/modules/ai_assistant/data/entities/AiAgentMutationPolicyOverride.js.map +7 -0
  62. package/dist/modules/ai_assistant/data/entities/AiAgentPromptOverride.js +5 -0
  63. package/dist/modules/ai_assistant/data/entities/AiAgentPromptOverride.js.map +7 -0
  64. package/dist/modules/ai_assistant/data/entities/AiPendingAction.js +5 -0
  65. package/dist/modules/ai_assistant/data/entities/AiPendingAction.js.map +7 -0
  66. package/dist/modules/ai_assistant/data/entities.js +228 -0
  67. package/dist/modules/ai_assistant/data/entities.js.map +7 -0
  68. package/dist/modules/ai_assistant/data/repositories/AiAgentMutationPolicyOverrideRepository.js +95 -0
  69. package/dist/modules/ai_assistant/data/repositories/AiAgentMutationPolicyOverrideRepository.js.map +7 -0
  70. package/dist/modules/ai_assistant/data/repositories/AiAgentPromptOverrideRepository.js +95 -0
  71. package/dist/modules/ai_assistant/data/repositories/AiAgentPromptOverrideRepository.js.map +7 -0
  72. package/dist/modules/ai_assistant/data/repositories/AiPendingActionRepository.js +223 -0
  73. package/dist/modules/ai_assistant/data/repositories/AiPendingActionRepository.js.map +7 -0
  74. package/dist/modules/ai_assistant/events.js +33 -0
  75. package/dist/modules/ai_assistant/events.js.map +7 -0
  76. package/dist/modules/ai_assistant/i18n/de.json +252 -0
  77. package/dist/modules/ai_assistant/i18n/en.json +252 -0
  78. package/dist/modules/ai_assistant/i18n/es.json +252 -0
  79. package/dist/modules/ai_assistant/i18n/pl.json +252 -0
  80. package/dist/modules/ai_assistant/lib/agent-policy.js +168 -0
  81. package/dist/modules/ai_assistant/lib/agent-policy.js.map +7 -0
  82. package/dist/modules/ai_assistant/lib/agent-registry.js +195 -0
  83. package/dist/modules/ai_assistant/lib/agent-registry.js.map +7 -0
  84. package/dist/modules/ai_assistant/lib/agent-runtime.js +451 -0
  85. package/dist/modules/ai_assistant/lib/agent-runtime.js.map +7 -0
  86. package/dist/modules/ai_assistant/lib/agent-tools.js +223 -0
  87. package/dist/modules/ai_assistant/lib/agent-tools.js.map +7 -0
  88. package/dist/modules/ai_assistant/lib/agent-transport.js +25 -0
  89. package/dist/modules/ai_assistant/lib/agent-transport.js.map +7 -0
  90. package/dist/modules/ai_assistant/lib/ai-agent-definition.js +11 -0
  91. package/dist/modules/ai_assistant/lib/ai-agent-definition.js.map +7 -0
  92. package/dist/modules/ai_assistant/lib/ai-agents-generated.d.js +1 -0
  93. package/dist/modules/ai_assistant/lib/ai-agents-generated.d.js.map +7 -0
  94. package/dist/modules/ai_assistant/lib/ai-api-operation-runner.js +239 -0
  95. package/dist/modules/ai_assistant/lib/ai-api-operation-runner.js.map +7 -0
  96. package/dist/modules/ai_assistant/lib/ai-overrides.js +189 -0
  97. package/dist/modules/ai_assistant/lib/ai-overrides.js.map +7 -0
  98. package/dist/modules/ai_assistant/lib/ai-tool-definition.js +7 -0
  99. package/dist/modules/ai_assistant/lib/ai-tool-definition.js.map +7 -0
  100. package/dist/modules/ai_assistant/lib/ai-tools-generated.d.js +1 -0
  101. package/dist/modules/ai_assistant/lib/ai-tools-generated.d.js.map +7 -0
  102. package/dist/modules/ai_assistant/lib/api-backed-tool.js +48 -0
  103. package/dist/modules/ai_assistant/lib/api-backed-tool.js.map +7 -0
  104. package/dist/modules/ai_assistant/lib/attachment-bridge-types.js +1 -0
  105. package/dist/modules/ai_assistant/lib/attachment-bridge-types.js.map +7 -0
  106. package/dist/modules/ai_assistant/lib/attachment-parts.js +276 -0
  107. package/dist/modules/ai_assistant/lib/attachment-parts.js.map +7 -0
  108. package/dist/modules/ai_assistant/lib/model-factory.js +68 -0
  109. package/dist/modules/ai_assistant/lib/model-factory.js.map +7 -0
  110. package/dist/modules/ai_assistant/lib/pending-action-cancel.js +86 -0
  111. package/dist/modules/ai_assistant/lib/pending-action-cancel.js.map +7 -0
  112. package/dist/modules/ai_assistant/lib/pending-action-client.js +35 -0
  113. package/dist/modules/ai_assistant/lib/pending-action-client.js.map +7 -0
  114. package/dist/modules/ai_assistant/lib/pending-action-executor.js +243 -0
  115. package/dist/modules/ai_assistant/lib/pending-action-executor.js.map +7 -0
  116. package/dist/modules/ai_assistant/lib/pending-action-recheck.js +246 -0
  117. package/dist/modules/ai_assistant/lib/pending-action-recheck.js.map +7 -0
  118. package/dist/modules/ai_assistant/lib/pending-action-types.js +70 -0
  119. package/dist/modules/ai_assistant/lib/pending-action-types.js.map +7 -0
  120. package/dist/modules/ai_assistant/lib/prepare-mutation.js +315 -0
  121. package/dist/modules/ai_assistant/lib/prepare-mutation.js.map +7 -0
  122. package/dist/modules/ai_assistant/lib/prompt-composition-types.js +7 -0
  123. package/dist/modules/ai_assistant/lib/prompt-composition-types.js.map +7 -0
  124. package/dist/modules/ai_assistant/lib/prompt-override-merge.js +175 -0
  125. package/dist/modules/ai_assistant/lib/prompt-override-merge.js.map +7 -0
  126. package/dist/modules/ai_assistant/lib/schema-utils.js +5 -1
  127. package/dist/modules/ai_assistant/lib/schema-utils.js.map +2 -2
  128. package/dist/modules/ai_assistant/lib/tool-executor.js +13 -2
  129. package/dist/modules/ai_assistant/lib/tool-executor.js.map +2 -2
  130. package/dist/modules/ai_assistant/lib/tool-loader.js +86 -11
  131. package/dist/modules/ai_assistant/lib/tool-loader.js.map +2 -2
  132. package/dist/modules/ai_assistant/lib/tool-test-fixtures.js +120 -0
  133. package/dist/modules/ai_assistant/lib/tool-test-fixtures.js.map +7 -0
  134. package/dist/modules/ai_assistant/lib/tool-test-runner.js +418 -0
  135. package/dist/modules/ai_assistant/lib/tool-test-runner.js.map +7 -0
  136. package/dist/modules/ai_assistant/migrations/Migration20260419100521.js +17 -0
  137. package/dist/modules/ai_assistant/migrations/Migration20260419100521.js.map +7 -0
  138. package/dist/modules/ai_assistant/migrations/Migration20260419132948.js +16 -0
  139. package/dist/modules/ai_assistant/migrations/Migration20260419132948.js.map +7 -0
  140. package/dist/modules/ai_assistant/migrations/Migration20260419134235.js +17 -0
  141. package/dist/modules/ai_assistant/migrations/Migration20260419134235.js.map +7 -0
  142. package/dist/modules/ai_assistant/setup.js +36 -0
  143. package/dist/modules/ai_assistant/setup.js.map +2 -2
  144. package/dist/modules/ai_assistant/workers/ai-pending-action-cleanup.js +161 -0
  145. package/dist/modules/ai_assistant/workers/ai-pending-action-cleanup.js.map +7 -0
  146. package/generated/entities/ai_agent_mutation_policy_override/index.ts +9 -0
  147. package/generated/entities/ai_agent_prompt_override/index.ts +10 -0
  148. package/generated/entities/ai_pending_action/index.ts +24 -0
  149. package/generated/entities.ids.generated.ts +13 -0
  150. package/generated/entity-fields-registry.ts +57 -0
  151. package/jest.config.cjs +7 -0
  152. package/package.json +4 -4
  153. package/src/index.ts +215 -0
  154. package/src/modules/ai_assistant/__integration__/README.md +5 -0
  155. package/src/modules/ai_assistant/__integration__/TC-AI-002-agent-policy.spec.ts +115 -0
  156. package/src/modules/ai_assistant/__integration__/TC-AI-AGENT-SETTINGS-005-settings-page.spec.ts +574 -0
  157. package/src/modules/ai_assistant/__integration__/TC-AI-PLAYGROUND-004-playground.spec.ts +333 -0
  158. package/src/modules/ai_assistant/__integration__/TC-INT-AI-TOOLS.spec.ts +135 -0
  159. package/src/modules/ai_assistant/__tests__/events.test.ts +145 -0
  160. package/src/modules/ai_assistant/__tests__/integration/pending-action-contract.test.ts +1015 -0
  161. package/src/modules/ai_assistant/__tests__/integration/ws-c-attachment-bridge.test.ts +235 -0
  162. package/src/modules/ai_assistant/__tests__/integration/ws-c-policy-and-tools.test.ts +330 -0
  163. package/src/modules/ai_assistant/__tests__/integration/ws-c-tool-pack-coverage.test.ts +285 -0
  164. package/src/modules/ai_assistant/ai-tools/__tests__/attachments-pack.test.ts +322 -0
  165. package/src/modules/ai_assistant/ai-tools/__tests__/meta-pack.test.ts +218 -0
  166. package/src/modules/ai_assistant/ai-tools/__tests__/search-pack.test.ts +192 -0
  167. package/src/modules/ai_assistant/ai-tools/attachments-pack.ts +269 -0
  168. package/src/modules/ai_assistant/ai-tools/meta-pack.ts +140 -0
  169. package/src/modules/ai_assistant/ai-tools/search-pack.ts +122 -0
  170. package/src/modules/ai_assistant/ai-tools.ts +21 -0
  171. package/src/modules/ai_assistant/api/ai/actions/[id]/__tests__/route.test.ts +222 -0
  172. package/src/modules/ai_assistant/api/ai/actions/[id]/cancel/__tests__/route.test.ts +286 -0
  173. package/src/modules/ai_assistant/api/ai/actions/[id]/cancel/route.ts +237 -0
  174. package/src/modules/ai_assistant/api/ai/actions/[id]/confirm/__tests__/route.test.ts +339 -0
  175. package/src/modules/ai_assistant/api/ai/actions/[id]/confirm/route.ts +229 -0
  176. package/src/modules/ai_assistant/api/ai/actions/[id]/route.ts +142 -0
  177. package/src/modules/ai_assistant/api/ai/agents/[agentId]/mutation-policy/__tests__/route.test.ts +367 -0
  178. package/src/modules/ai_assistant/api/ai/agents/[agentId]/mutation-policy/route.ts +380 -0
  179. package/src/modules/ai_assistant/api/ai/agents/[agentId]/prompt-override/__tests__/route.test.ts +333 -0
  180. package/src/modules/ai_assistant/api/ai/agents/[agentId]/prompt-override/route.ts +307 -0
  181. package/src/modules/ai_assistant/api/ai/agents/route.ts +107 -0
  182. package/src/modules/ai_assistant/api/ai/chat/__tests__/route.test.ts +282 -0
  183. package/src/modules/ai_assistant/api/ai/chat/route.ts +207 -0
  184. package/src/modules/ai_assistant/api/ai/run-object/__tests__/route.test.ts +282 -0
  185. package/src/modules/ai_assistant/api/ai/run-object/route.ts +204 -0
  186. package/src/modules/ai_assistant/backend/config/ai-assistant/agents/AiAgentSettingsPageClient.tsx +1419 -0
  187. package/src/modules/ai_assistant/backend/config/ai-assistant/agents/page.meta.ts +26 -0
  188. package/src/modules/ai_assistant/backend/config/ai-assistant/agents/page.tsx +12 -0
  189. package/src/modules/ai_assistant/backend/config/ai-assistant/legacy/page.meta.ts +28 -0
  190. package/src/modules/ai_assistant/backend/config/ai-assistant/legacy/page.tsx +12 -0
  191. package/src/modules/ai_assistant/backend/config/ai-assistant/page.meta.ts +8 -23
  192. package/src/modules/ai_assistant/backend/config/ai-assistant/page.tsx +15 -10
  193. package/src/modules/ai_assistant/backend/config/ai-assistant/playground/AiPlaygroundPageClient.tsx +604 -0
  194. package/src/modules/ai_assistant/backend/config/ai-assistant/playground/page.meta.ts +26 -0
  195. package/src/modules/ai_assistant/backend/config/ai-assistant/playground/page.tsx +12 -0
  196. package/src/modules/ai_assistant/cli.ts +99 -24
  197. package/src/modules/ai_assistant/data/__tests__/schema-unique-indexes.test.ts +69 -0
  198. package/src/modules/ai_assistant/data/entities/AiAgentMutationPolicyOverride.ts +7 -0
  199. package/src/modules/ai_assistant/data/entities/AiAgentPromptOverride.ts +7 -0
  200. package/src/modules/ai_assistant/data/entities/AiPendingAction.ts +7 -0
  201. package/src/modules/ai_assistant/data/entities.ts +270 -0
  202. package/src/modules/ai_assistant/data/repositories/AiAgentMutationPolicyOverrideRepository.ts +129 -0
  203. package/src/modules/ai_assistant/data/repositories/AiAgentPromptOverrideRepository.ts +132 -0
  204. package/src/modules/ai_assistant/data/repositories/AiPendingActionRepository.ts +334 -0
  205. package/src/modules/ai_assistant/data/repositories/__tests__/AiAgentMutationPolicyOverrideRepository.test.ts +195 -0
  206. package/src/modules/ai_assistant/data/repositories/__tests__/AiAgentPromptOverrideRepository.test.ts +197 -0
  207. package/src/modules/ai_assistant/data/repositories/__tests__/AiPendingActionRepository.test.ts +357 -0
  208. package/src/modules/ai_assistant/events.ts +112 -0
  209. package/src/modules/ai_assistant/i18n/de.json +252 -0
  210. package/src/modules/ai_assistant/i18n/en.json +252 -0
  211. package/src/modules/ai_assistant/i18n/es.json +252 -0
  212. package/src/modules/ai_assistant/i18n/pl.json +252 -0
  213. package/src/modules/ai_assistant/lib/__tests__/agent-policy.mutation-override.test.ts +203 -0
  214. package/src/modules/ai_assistant/lib/__tests__/agent-policy.test.ts +385 -0
  215. package/src/modules/ai_assistant/lib/__tests__/agent-registry.test.ts +217 -0
  216. package/src/modules/ai_assistant/lib/__tests__/agent-runtime-object.test.ts +329 -0
  217. package/src/modules/ai_assistant/lib/__tests__/agent-runtime-parity.test.ts +573 -0
  218. package/src/modules/ai_assistant/lib/__tests__/agent-runtime.test.ts +291 -0
  219. package/src/modules/ai_assistant/lib/__tests__/agent-tools.test.ts +172 -0
  220. package/src/modules/ai_assistant/lib/__tests__/agent-transport.test.ts +41 -0
  221. package/src/modules/ai_assistant/lib/__tests__/ai-agent-definition.test.ts +183 -0
  222. package/src/modules/ai_assistant/lib/__tests__/ai-api-operation-runner.test.ts +432 -0
  223. package/src/modules/ai_assistant/lib/__tests__/ai-overrides.test.ts +308 -0
  224. package/src/modules/ai_assistant/lib/__tests__/api-backed-tool.test.ts +302 -0
  225. package/src/modules/ai_assistant/lib/__tests__/attachment-bridge-and-prompt-types.test.ts +188 -0
  226. package/src/modules/ai_assistant/lib/__tests__/attachment-parts.test.ts +531 -0
  227. package/src/modules/ai_assistant/lib/__tests__/max-steps-budget.integration.test.ts +263 -0
  228. package/src/modules/ai_assistant/lib/__tests__/model-factory.integration.test.ts +183 -0
  229. package/src/modules/ai_assistant/lib/__tests__/model-factory.test.ts +168 -0
  230. package/src/modules/ai_assistant/lib/__tests__/pending-action-cancel.test.ts +235 -0
  231. package/src/modules/ai_assistant/lib/__tests__/pending-action-client.test.ts +148 -0
  232. package/src/modules/ai_assistant/lib/__tests__/pending-action-executor.test.ts +348 -0
  233. package/src/modules/ai_assistant/lib/__tests__/pending-action-recheck.test.ts +378 -0
  234. package/src/modules/ai_assistant/lib/__tests__/phase-0-additive-contract.test.ts +299 -0
  235. package/src/modules/ai_assistant/lib/__tests__/prepare-mutation.test.ts +610 -0
  236. package/src/modules/ai_assistant/lib/__tests__/prompt-override-merge.test.ts +136 -0
  237. package/src/modules/ai_assistant/lib/__tests__/tool-loader.test.ts +125 -0
  238. package/src/modules/ai_assistant/lib/agent-policy.ts +270 -0
  239. package/src/modules/ai_assistant/lib/agent-registry.ts +277 -0
  240. package/src/modules/ai_assistant/lib/agent-runtime.ts +751 -0
  241. package/src/modules/ai_assistant/lib/agent-tools.ts +396 -0
  242. package/src/modules/ai_assistant/lib/agent-transport.ts +51 -0
  243. package/src/modules/ai_assistant/lib/ai-agent-definition.ts +86 -0
  244. package/src/modules/ai_assistant/lib/ai-agents-generated.d.ts +18 -0
  245. package/src/modules/ai_assistant/lib/ai-api-operation-runner.ts +333 -0
  246. package/src/modules/ai_assistant/lib/ai-overrides.ts +389 -0
  247. package/src/modules/ai_assistant/lib/ai-tool-definition.ts +7 -0
  248. package/src/modules/ai_assistant/lib/ai-tools-generated.d.ts +7 -0
  249. package/src/modules/ai_assistant/lib/api-backed-tool.ts +85 -0
  250. package/src/modules/ai_assistant/lib/attachment-bridge-types.ts +24 -0
  251. package/src/modules/ai_assistant/lib/attachment-parts.ts +433 -0
  252. package/src/modules/ai_assistant/lib/model-factory.ts +212 -0
  253. package/src/modules/ai_assistant/lib/pending-action-cancel.ts +179 -0
  254. package/src/modules/ai_assistant/lib/pending-action-client.ts +126 -0
  255. package/src/modules/ai_assistant/lib/pending-action-executor.ts +424 -0
  256. package/src/modules/ai_assistant/lib/pending-action-recheck.ts +410 -0
  257. package/src/modules/ai_assistant/lib/pending-action-types.ts +194 -0
  258. package/src/modules/ai_assistant/lib/prepare-mutation.ts +448 -0
  259. package/src/modules/ai_assistant/lib/prompt-composition-types.ts +24 -0
  260. package/src/modules/ai_assistant/lib/prompt-override-merge.ts +253 -0
  261. package/src/modules/ai_assistant/lib/schema-utils.ts +14 -2
  262. package/src/modules/ai_assistant/lib/tool-executor.ts +25 -3
  263. package/src/modules/ai_assistant/lib/tool-loader.ts +159 -13
  264. package/src/modules/ai_assistant/lib/tool-test-fixtures.ts +160 -0
  265. package/src/modules/ai_assistant/lib/tool-test-runner.ts +596 -0
  266. package/src/modules/ai_assistant/lib/types.ts +105 -2
  267. package/src/modules/ai_assistant/migrations/.snapshot-open-mercato.json +871 -0
  268. package/src/modules/ai_assistant/migrations/Migration20260419100521.ts +17 -0
  269. package/src/modules/ai_assistant/migrations/Migration20260419132948.ts +16 -0
  270. package/src/modules/ai_assistant/migrations/Migration20260419134235.ts +17 -0
  271. package/src/modules/ai_assistant/setup.ts +53 -0
  272. package/src/modules/ai_assistant/workers/__tests__/ai-pending-action-cleanup.test.ts +333 -0
  273. package/src/modules/ai_assistant/workers/ai-pending-action-cleanup.ts +269 -0
@@ -1,17 +1,237 @@
1
1
  {
2
+ "ai_assistant.agents.agentPickerLabel": "Agent",
3
+ "ai_assistant.agents.attachments.noneBadge": "Keine Anhänge akzeptiert",
4
+ "ai_assistant.agents.attachments.subtitle": "Vom Agenten deklarierte akzeptierte Medientypen. In Phase 2 schreibgeschützt.",
5
+ "ai_assistant.agents.attachments.title": "Anhangs-Richtlinie",
6
+ "ai_assistant.agents.empty.description": "Deklarieren Sie Agenten in `packages/<module>/src/modules/<module>/ai-agents.ts`, führen Sie `yarn generate` aus und stellen Sie sicher, dass der Aufrufer die vom Agenten geforderten Berechtigungen besitzt.",
7
+ "ai_assistant.agents.empty.docLabel": "Siehe packages/ai-assistant/AGENTS.md für die Agenten-Definition-Referenz.",
8
+ "ai_assistant.agents.empty.title": "Für Ihre Rolle sind noch keine KI-Agenten registriert.",
9
+ "ai_assistant.agents.loadErrorTitle": "KI-Agenten konnten nicht geladen werden",
10
+ "ai_assistant.agents.loadingAgents": "KI-Agenten werden geladen...",
11
+ "ai_assistant.agents.meta.executionMode": "Ausführungsmodus",
12
+ "ai_assistant.agents.meta.id": "Agenten-ID",
13
+ "ai_assistant.agents.meta.maxSteps": "Max. Schritte",
14
+ "ai_assistant.agents.meta.module": "Modul",
15
+ "ai_assistant.agents.meta.mutationPolicy": "Mutationsrichtlinie",
16
+ "ai_assistant.agents.meta.readOnly": "Schreibgeschützt",
17
+ "ai_assistant.agents.meta.readOnlyNo": "Nein",
18
+ "ai_assistant.agents.meta.readOnlyYes": "Ja",
19
+ "ai_assistant.agents.meta.unlimited": "Unbegrenzt",
20
+ "ai_assistant.agents.mutation_policy.clear": "Überschreibung löschen",
21
+ "ai_assistant.agents.mutation_policy.clearedMessage": "Überschreibung der Mutationsrichtlinie gelöscht; Agent verwendet die im Code deklarierte Richtlinie.",
22
+ "ai_assistant.agents.mutation_policy.codeDeclared": "Im Code deklariert",
23
+ "ai_assistant.agents.mutation_policy.codeDeclaredHint": "In der Agent-Definition kompiliert.",
24
+ "ai_assistant.agents.mutation_policy.errorTitle": "Mutationsrichtlinie konnte nicht aktualisiert werden",
25
+ "ai_assistant.agents.mutation_policy.errors.escalationNotAllowed": "Nicht über die im Code deklarierte Richtlinie anhebbar — das ist eine Änderung auf Code-Ebene.",
26
+ "ai_assistant.agents.mutation_policy.escalationTooltip": "Kann nicht über die im Code deklarierte Richtlinie gesetzt werden — das ist eine Änderung auf Code-Ebene.",
27
+ "ai_assistant.agents.mutation_policy.loadErrorTitle": "Mutationsrichtlinie konnte nicht geladen werden",
28
+ "ai_assistant.agents.mutation_policy.loading": "Mutationsrichtlinie wird geladen...",
29
+ "ai_assistant.agents.mutation_policy.noOverride": "Keine Überschreibung — die im Code deklarierte Richtlinie ist aktiv.",
30
+ "ai_assistant.agents.mutation_policy.noticeBody": "Überschreibungen können die Richtlinie nur verschärfen. Optionen, die permissiver als die im Code deklarierte Richtlinie sind, werden deaktiviert und serverseitig abgelehnt.",
31
+ "ai_assistant.agents.mutation_policy.noticeTitle": "Nur Herabstufung — Anheben ist eine Code-Änderung",
32
+ "ai_assistant.agents.mutation_policy.options.confirm-required": "Schreibzugriffe erlaubt mit Bestätigung je Aktion.",
33
+ "ai_assistant.agents.mutation_policy.options.destructive-confirm-required": "Schreibzugriffe erlaubt; destruktive erfordern Bestätigung.",
34
+ "ai_assistant.agents.mutation_policy.options.read-only": "Keine Schreibzugriffe — Agent kann keine Mutation-Tools aufrufen.",
35
+ "ai_assistant.agents.mutation_policy.pickerLabel": "Überschreibung der Mutationsrichtlinie",
36
+ "ai_assistant.agents.mutation_policy.save": "Überschreibung speichern",
37
+ "ai_assistant.agents.mutation_policy.savedMessage": "Überschreibung der Mutationsrichtlinie gespeichert.",
38
+ "ai_assistant.agents.mutation_policy.savedTitle": "Mutationsrichtlinie aktualisiert",
39
+ "ai_assistant.agents.mutation_policy.subtitle": "Mutationsumfang des Agenten pro Mandant verschärfen. Das Anheben über die im Code deklarierte Richtlinie wird serverseitig blockiert.",
40
+ "ai_assistant.agents.mutation_policy.tenantOverride": "Mandanten-Überschreibung",
41
+ "ai_assistant.agents.mutation_policy.title": "Mutationsrichtlinie",
42
+ "ai_assistant.agents.navTitle": "KI-Agenten",
43
+ "ai_assistant.agents.override.errorTitle": "Prompt-Überschreibung konnte nicht gespeichert werden",
44
+ "ai_assistant.agents.override.errors.reservedKey": "Prompt-Überschreibungen können keine Policy-Felder (mutationPolicy, readOnly, allowedTools, acceptedMediaTypes) ändern. Entfernen Sie diese Abschnitte und versuchen Sie es erneut.",
45
+ "ai_assistant.agents.override.history.empty": "Für diesen Agenten wurden noch keine Prompt-Überschreibungen gespeichert.",
46
+ "ai_assistant.agents.override.history.errorTitle": "Überschreibungs-Historie konnte nicht geladen werden",
47
+ "ai_assistant.agents.override.history.loading": "Überschreibungs-Historie wird geladen...",
48
+ "ai_assistant.agents.override.history.sectionsLabel": "Abschnitte",
49
+ "ai_assistant.agents.override.history.subtitle": "Neueste zuerst. Jede Speicherung erstellt eine neue Version im Kontext des aktuellen Tenants.",
50
+ "ai_assistant.agents.override.history.title": "Prompt-Überschreibungs-Historie",
51
+ "ai_assistant.agents.override.noticeBody": "Überschreibungen werden an die integrierten Abschnitte angehängt — sie entfernen oder ersetzen den ausgelieferten Text niemals. Gespeicherte Versionen sind auf den Tenant beschränkt und aus dem Verlaufspanel unten auditierbar.",
52
+ "ai_assistant.agents.override.noticeTitle": "Prompt-Überschreibungen sind additiv",
53
+ "ai_assistant.agents.override.savedMessage": "Prompt-Überschreibung gespeichert.",
54
+ "ai_assistant.agents.override.savedTitle": "Prompt-Überschreibung gespeichert",
55
+ "ai_assistant.agents.override.versionLabel": "Version",
56
+ "ai_assistant.agents.prompt.defaultModeLabel": "Standard — mit der Agenten-Definition ausgeliefert.",
57
+ "ai_assistant.agents.prompt.defaultSectionPlaceholder": "Keine Standardtexte für diesen Abschnitt deklariert — der Agent liefert einen einzelnen systemPrompt. Überschreiben Sie, um zusätzlichen Text einzufügen, sobald Schritt 5.3 ausgeliefert wird.",
58
+ "ai_assistant.agents.prompt.errorTitle": "Überschreibungen konnten nicht übermittelt werden",
59
+ "ai_assistant.agents.prompt.fullSystemPromptLabel": "Vollständiger System-Prompt (Standard)",
60
+ "ai_assistant.agents.prompt.noticeBody": "Das Absenden dieses Formulars ruft einen Platzhalter-Endpoint auf, der mit `{ pending: true }` antwortet. Versionierter Speicher für Prompt-Überschreibungen kommt mit Phase 3, Schritt 5.3.",
61
+ "ai_assistant.agents.prompt.noticeTitle": "Prompt-Überschreibungen sind derzeit nur lokal",
62
+ "ai_assistant.agents.prompt.overrideModeLabel": "Überschreibungsmodus — ersetzt den Standard, sobald die Persistenz verfügbar ist.",
63
+ "ai_assistant.agents.prompt.overridePlaceholder": "Geben Sie den Ersetzungstext für diesen Abschnitt ein...",
64
+ "ai_assistant.agents.prompt.pendingMessage": "Prompt-Überschreibungen akzeptiert. Persistenz folgt in Phase 3, Schritt 5.3.",
65
+ "ai_assistant.agents.prompt.pendingTitle": "Überschreibungen akzeptiert",
66
+ "ai_assistant.agents.prompt.save": "Überschreibungen speichern",
67
+ "ai_assistant.agents.prompt.sections.attachments": "Anhänge",
68
+ "ai_assistant.agents.prompt.sections.data": "Daten",
69
+ "ai_assistant.agents.prompt.sections.mutationPolicy": "Mutationsrichtlinie",
70
+ "ai_assistant.agents.prompt.sections.overrides": "Überschreibungen",
71
+ "ai_assistant.agents.prompt.sections.responseStyle": "Antwortstil",
72
+ "ai_assistant.agents.prompt.sections.role": "Rolle",
73
+ "ai_assistant.agents.prompt.sections.scope": "Geltungsbereich",
74
+ "ai_assistant.agents.prompt.sections.tools": "Tools",
75
+ "ai_assistant.agents.prompt.subtitle": "Schalten Sie einen beliebigen Abschnitt ein, um eine additive Überschreibung zu verfassen. Beim Speichern werden die Überschreibungen an einen Platzhalter-Endpoint gesendet; die echte Persistenz kommt in Schritt 5.3.",
76
+ "ai_assistant.agents.prompt.title": "Prompt-Abschnitte",
77
+ "ai_assistant.agents.prompt.toggleOverride": "Überschreiben",
78
+ "ai_assistant.agents.refresh": "Agenten aktualisieren",
79
+ "ai_assistant.agents.retry": "Wiederholen",
80
+ "ai_assistant.agents.subtitle": "Inspizieren Sie jeden registrierten Agenten und entwerfen Sie additive Prompt-Überschreibungen. Überschreibungen sind heute nur lokal — Persistenz folgt in Phase 3, Schritt 5.3.",
81
+ "ai_assistant.agents.title": "KI-Agenten",
82
+ "ai_assistant.agents.tools.emptyBody": "Dieser Agent deklariert keine Tools in der allowedTools-Whitelist.",
83
+ "ai_assistant.agents.tools.enabledLabel": "Aktiviert",
84
+ "ai_assistant.agents.tools.missingBadge": "Fehlt",
85
+ "ai_assistant.agents.tools.mutationBadge": "Mutation",
86
+ "ai_assistant.agents.tools.readBadge": "Lesen",
87
+ "ai_assistant.agents.tools.subtitle": "In Phase 2 schreibgeschützte Oberfläche. Bearbeitung pro Tool und Mutationsrichtlinie folgen in Schritt 5.4 / Phase 3.",
88
+ "ai_assistant.agents.tools.title": "Erlaubte Tools",
89
+ "ai_assistant.agents.tools.tooltipDisabled": "Bearbeitbar, sobald Phase 3 die Mutationsrichtlinien-Steuerung liefert.",
90
+ "ai_assistant.chat.assistantRoleLabel": "Assistent",
91
+ "ai_assistant.chat.attachFile": "Attach file",
92
+ "ai_assistant.chat.betaChip": "beta",
93
+ "ai_assistant.chat.cancel": "Streaming-Antwort abbrechen",
94
+ "ai_assistant.chat.composerLabel": "Nachrichteneditor",
95
+ "ai_assistant.chat.composerPlaceholder": "Nachricht an den KI-Agenten...",
96
+ "ai_assistant.chat.copied": "Copied",
97
+ "ai_assistant.chat.copyMessage": "Copy message",
98
+ "ai_assistant.chat.debug.lastRequestEmpty": "Noch keine Anfrage gesendet.",
99
+ "ai_assistant.chat.debug.lastRequestSection": "Letzte Anfrage",
100
+ "ai_assistant.chat.debug.lastResponseEmpty": "Noch keine Antwort erhalten.",
101
+ "ai_assistant.chat.debug.lastResponseSection": "Letzte Antwort",
102
+ "ai_assistant.chat.debug.panelTitle": "Debug-Panel",
103
+ "ai_assistant.chat.debug.promptDefault": "Standard",
104
+ "ai_assistant.chat.debug.promptEmpty": "Keine Prompt-Abschnitte für diesen Agenten aufgelöst.",
105
+ "ai_assistant.chat.debug.promptOverride": "überschrieben",
106
+ "ai_assistant.chat.debug.promptPlaceholder": "Platzhalter",
107
+ "ai_assistant.chat.debug.promptSection": "Prompt-Abschnitte",
108
+ "ai_assistant.chat.debug.statusLabel": "Status:",
109
+ "ai_assistant.chat.debug.toolMutation": "Mutation",
110
+ "ai_assistant.chat.debug.toolNoFeatures": "keine erforderlichen Features",
111
+ "ai_assistant.chat.debug.toolRead": "Lesen",
112
+ "ai_assistant.chat.debug.toolsEmpty": "Noch keine Werkzeuge für diesen Agenten aufgelöst.",
113
+ "ai_assistant.chat.debug.toolsSection": "Aufgelöste Werkzeuge",
114
+ "ai_assistant.chat.debugPanelTitle": "Debug-Panel",
2
115
  "ai_assistant.chat.describePlaceholder": "Beschreiben Sie, was Sie tun möchten...",
116
+ "ai_assistant.chat.dock.close": "KI-Dock schließen",
117
+ "ai_assistant.chat.dock.collapse": "KI-Dock einklappen",
118
+ "ai_assistant.chat.dock.expand": "KI-Dock erweitern",
119
+ "ai_assistant.chat.emptyTranscript": "Noch keine Nachrichten. Stellen Sie dem Agenten eine Frage, um zu beginnen.",
120
+ "ai_assistant.chat.errorTitle": "Agenten-Anfrage fehlgeschlagen",
3
121
  "ai_assistant.chat.example.create": "Ein neues Produkt erstellen",
4
122
  "ai_assistant.chat.example.search": "Kunden in New York suchen",
5
123
  "ai_assistant.chat.example.show": "Aktuelle Bestellungen anzeigen",
6
124
  "ai_assistant.chat.idleExamples": "Beispiele:",
7
125
  "ai_assistant.chat.idleTitle": "Stellen Sie eine Frage oder beschreiben Sie, was Sie tun möchten.",
126
+ "ai_assistant.chat.mutation_cards.confirmation.cancel": "Abbrechen",
127
+ "ai_assistant.chat.mutation_cards.confirmation.defaultSummary": "Die angeforderten Änderungen werden ausgeführt...",
128
+ "ai_assistant.chat.mutation_cards.confirmation.errorTitle": "Bestätigung fehlgeschlagen",
129
+ "ai_assistant.chat.mutation_cards.confirmation.invalidStatusBody": "Diese Aktion wurde bereits bestätigt, abgebrochen oder ausgeführt.",
130
+ "ai_assistant.chat.mutation_cards.confirmation.invalidStatusTitle": "Aktion bereits abgeschlossen",
131
+ "ai_assistant.chat.mutation_cards.confirmation.schemaDriftBody": "Die Tool-Signatur hat sich seit der Vorschau geändert. Bitte den Assistenten um einen neuen Vorschlag.",
132
+ "ai_assistant.chat.mutation_cards.confirmation.schemaDriftTitle": "Schema geändert",
133
+ "ai_assistant.chat.mutation_cards.confirmation.staleVersionBody": "Ein oder mehrere Datensätze haben sich seit der Vorschau geändert. Bitte den Assistenten um einen neuen Vorschlag.",
134
+ "ai_assistant.chat.mutation_cards.confirmation.staleVersionTitle": "Erneuter Vorschlag erforderlich",
135
+ "ai_assistant.chat.mutation_cards.confirmation.title": "Aktion wird ausgeführt...",
136
+ "ai_assistant.chat.mutation_cards.diff.afterHeader": "Nachher",
137
+ "ai_assistant.chat.mutation_cards.diff.beforeHeader": "Vorher",
138
+ "ai_assistant.chat.mutation_cards.diff.empty": "Keine Feldänderungen für diesen Datensatz.",
139
+ "ai_assistant.chat.mutation_cards.diff.fieldHeader": "Feld",
140
+ "ai_assistant.chat.mutation_cards.preview.batchRecords": "Datensätze",
141
+ "ai_assistant.chat.mutation_cards.preview.batchSummary": "Stapelaktualisierung",
142
+ "ai_assistant.chat.mutation_cards.preview.cancel": "Abbrechen",
143
+ "ai_assistant.chat.mutation_cards.preview.confirm": "Bestätigen",
144
+ "ai_assistant.chat.mutation_cards.preview.handlerError": "Der Mutations-Handler meldete einen Fehler. Prüfen Sie die Details und schlagen Sie die Aktion ggf. erneut vor.",
145
+ "ai_assistant.chat.mutation_cards.preview.reviewDetails": "Details ansehen",
146
+ "ai_assistant.chat.mutation_cards.preview.title": "Vorgeschlagene Änderungen prüfen",
147
+ "ai_assistant.chat.mutation_cards.result.failureBody": "Die Änderung konnte nicht angewendet werden.",
148
+ "ai_assistant.chat.mutation_cards.result.failureTitle": "Aktion fehlgeschlagen",
149
+ "ai_assistant.chat.mutation_cards.result.fixWithAi": "Mit KI korrigieren",
150
+ "ai_assistant.chat.mutation_cards.result.partialBody": "Einige Datensätze konnten nicht aktualisiert werden.",
151
+ "ai_assistant.chat.mutation_cards.result.partialTitle": "Aktion mit Fehlern angewendet",
152
+ "ai_assistant.chat.mutation_cards.result.successBody": "Die Änderung wurde erfolgreich abgeschlossen.",
153
+ "ai_assistant.chat.mutation_cards.result.successTitle": "Aktion angewendet",
154
+ "ai_assistant.chat.mutation_cards.result.successWithCommand": "Abgeschlossen",
155
+ "ai_assistant.chat.mutation_cards.result.viewRecord": "Datensatz anzeigen",
156
+ "ai_assistant.chat.newConversation": "Start new conversation",
157
+ "ai_assistant.chat.pending_phase3.body": "Diese interaktive Karte kommt in Phase 3 des vereinheitlichten KI-Frameworks.",
158
+ "ai_assistant.chat.pending_phase3.title": "Mutations-Freigabe-Karte ausstehend",
8
159
  "ai_assistant.chat.placeholder": "Fragen Sie mich etwas...",
160
+ "ai_assistant.chat.reasoning": "Reasoning",
161
+ "ai_assistant.chat.records.fields.amount": "Betrag",
162
+ "ai_assistant.chat.records.fields.category": "Kategorie",
163
+ "ai_assistant.chat.records.fields.close": "Abschluss",
164
+ "ai_assistant.chat.records.fields.company": "Firma",
165
+ "ai_assistant.chat.records.fields.completed": "Abgeschlossen",
166
+ "ai_assistant.chat.records.fields.contact": "Kontakt",
167
+ "ai_assistant.chat.records.fields.due": "Fällig",
168
+ "ai_assistant.chat.records.fields.email": "E-Mail",
169
+ "ai_assistant.chat.records.fields.industry": "Branche",
170
+ "ai_assistant.chat.records.fields.location": "Ort",
171
+ "ai_assistant.chat.records.fields.owner": "Inhaber",
172
+ "ai_assistant.chat.records.fields.phone": "Telefon",
173
+ "ai_assistant.chat.records.fields.price": "Preis",
174
+ "ai_assistant.chat.records.fields.related": "Verknüpft",
175
+ "ai_assistant.chat.records.fields.sku": "SKU",
176
+ "ai_assistant.chat.records.fields.stage": "Phase",
177
+ "ai_assistant.chat.records.fields.title": "Titel",
178
+ "ai_assistant.chat.records.fields.type": "Typ",
179
+ "ai_assistant.chat.records.fields.website": "Website",
180
+ "ai_assistant.chat.records.kinds.activity": "Aktivität",
181
+ "ai_assistant.chat.records.kinds.company": "Firma",
182
+ "ai_assistant.chat.records.kinds.deal": "Deal",
183
+ "ai_assistant.chat.records.kinds.person": "Person",
184
+ "ai_assistant.chat.records.kinds.product": "Produkt",
185
+ "ai_assistant.chat.records.openRecord": "Datensatz öffnen",
186
+ "ai_assistant.chat.regionLabel": "KI-Chat",
187
+ "ai_assistant.chat.removeFile": "Remove file",
188
+ "ai_assistant.chat.send": "Nachricht senden",
189
+ "ai_assistant.chat.sendWaitingForUpload": "Waiting for upload to finish…",
190
+ "ai_assistant.chat.shortcutHint": "Drücken Sie Cmd/Strg+Enter zum Senden, Escape zum Abbrechen.",
191
+ "ai_assistant.chat.shortcuts.cancelHint": "Drücke Escape zum Abbrechen.",
192
+ "ai_assistant.chat.shortcuts.saveHint": "Drücke Cmd/Strg+Eingabe zum Speichern.",
193
+ "ai_assistant.chat.shortcuts.submitHint": "Drücke Cmd/Strg+Eingabe zum Senden.",
194
+ "ai_assistant.chat.tabs.close": "Schließen",
195
+ "ai_assistant.chat.tabs.newSession": "Neue Sitzung",
196
+ "ai_assistant.chat.tabs.noPreviousSessions": "Noch keine vorherigen Sitzungen.",
197
+ "ai_assistant.chat.tabs.noSessions": "Keine Sitzungen",
198
+ "ai_assistant.chat.tabs.recentSessions": "Letzte Sitzungen",
199
+ "ai_assistant.chat.tabs.rename": "Umbenennen",
200
+ "ai_assistant.chat.thinking": "Denkt nach...",
201
+ "ai_assistant.chat.toolDone": "done",
202
+ "ai_assistant.chat.toolError": "failed",
203
+ "ai_assistant.chat.toolInput": "Input",
204
+ "ai_assistant.chat.toolOutput": "Output",
205
+ "ai_assistant.chat.toolRunning": "running…",
206
+ "ai_assistant.chat.transcriptLabel": "Chat-Transkript",
207
+ "ai_assistant.chat.uiPartPending": "Ausstehendes UI-Element:",
208
+ "ai_assistant.chat.userRoleLabel": "Sie",
209
+ "ai_assistant.chat.welcomeTitle": "How can I help?",
9
210
  "ai_assistant.dock.bottom": "Unten andocken",
10
211
  "ai_assistant.dock.close": "Schließen",
11
212
  "ai_assistant.dock.floating": "Schwebend",
12
213
  "ai_assistant.dock.left": "Links andocken",
13
214
  "ai_assistant.dock.minimize": "Minimieren",
14
215
  "ai_assistant.dock.right": "Rechts andocken",
216
+ "ai_assistant.launcher.dialogTitle": "AI assistants",
217
+ "ai_assistant.launcher.dock.subtitle": "AI assistant",
218
+ "ai_assistant.launcher.empty": "No assistants match your search.",
219
+ "ai_assistant.launcher.hint.close": "Close",
220
+ "ai_assistant.launcher.hint.launch": "Launch",
221
+ "ai_assistant.launcher.hint.navigate": "Navigate",
222
+ "ai_assistant.launcher.searchPlaceholder": "Search assistants...",
223
+ "ai_assistant.launcher.setup.body": "KI-Assistenten sind installiert, aber es ist kein Anbieterschlüssel konfiguriert. Lege OPENCODE_PROVIDER und einen passenden API-Schlüssel in deiner .env-Datei fest und starte die App neu.",
224
+ "ai_assistant.launcher.setup.docs": "Dokumentation zum KI-Assistenten",
225
+ "ai_assistant.launcher.setup.settingsDocs": "Anbietereinstellungen",
226
+ "ai_assistant.launcher.setup.title": "Konfiguriere einen KI-Anbieter, um Assistenten zu verwenden",
227
+ "ai_assistant.launcher.sheet.dock": "Dock to side",
228
+ "ai_assistant.launcher.triggerAriaLabel": "Open AI assistant",
229
+ "ai_assistant.launcher.triggerLabel": "AI",
230
+ "ai_assistant.launcher.welcome.suggestion1": "What can you help me with?",
231
+ "ai_assistant.launcher.welcome.suggestion2": "Show what data you can access",
232
+ "ai_assistant.launcher.welcome.suggestion3": "Suggest things to try",
233
+ "ai_assistant.launcher.welcome.suggestion4": "How do I use this assistant?",
234
+ "ai_assistant.launcher.writesBadge": "Can write",
15
235
  "ai_assistant.mcp.apiKeyLabel": "API-Schlüssel:",
16
236
  "ai_assistant.mcp.close": "Schließen",
17
237
  "ai_assistant.mcp.copied": "Kopiert!",
@@ -24,6 +244,38 @@
24
244
  "ai_assistant.mcp.notGenerated": "Nicht generiert",
25
245
  "ai_assistant.mcp.saveKeyWarning": "Speichern Sie diesen Schlüssel jetzt — er wird nicht erneut angezeigt!",
26
246
  "ai_assistant.mcp.title": "MCP-Konfiguration",
247
+ "ai_assistant.playground.agentPickerLabel": "Agent",
248
+ "ai_assistant.playground.chat.notSupportedBody": "Wählen Sie einen Agenten, dessen Ausführungsmodus \"chat\" ist, oder wechseln Sie zum Objekt-Modus-Tab.",
249
+ "ai_assistant.playground.chat.notSupportedTitle": "Chat-Modus ist für diesen Agenten nicht verfügbar.",
250
+ "ai_assistant.playground.debugToggle": "Debug-Panel",
251
+ "ai_assistant.playground.empty.description": "Deklarieren Sie Agenten in `packages/<module>/src/modules/<module>/ai-agents.ts`, führen Sie `yarn generate` aus und stellen Sie sicher, dass der Aufrufer die vom Agenten geforderten Berechtigungen besitzt.",
252
+ "ai_assistant.playground.empty.docLabel": "Siehe packages/ai-assistant/AGENTS.md für die Agenten-Definition-Referenz.",
253
+ "ai_assistant.playground.empty.title": "Für Ihre Rolle sind noch keine KI-Agenten registriert.",
254
+ "ai_assistant.playground.loadErrorTitle": "KI-Agenten konnten nicht geladen werden",
255
+ "ai_assistant.playground.loadingAgents": "KI-Agenten werden geladen...",
256
+ "ai_assistant.playground.meta.executionMode": "Ausführungsmodus",
257
+ "ai_assistant.playground.meta.module": "Modul",
258
+ "ai_assistant.playground.meta.mutationPolicy": "Mutationsrichtlinie",
259
+ "ai_assistant.playground.meta.tools": "Erlaubte Tools",
260
+ "ai_assistant.playground.navTitle": "KI-Playground",
261
+ "ai_assistant.playground.object.debugTitle": "Letzte Request-Payload",
262
+ "ai_assistant.playground.object.errorTitle": "Objekt-Ausführung fehlgeschlagen",
263
+ "ai_assistant.playground.object.finishReason": "Abschlussgrund",
264
+ "ai_assistant.playground.object.inputLabel": "Prompt",
265
+ "ai_assistant.playground.object.inputPlaceholder": "Beschreiben Sie, was der Agent erzeugen soll...",
266
+ "ai_assistant.playground.object.inputTokens": "Eingabe-Tokens",
267
+ "ai_assistant.playground.object.notSupportedBody": "Dieser Agent deklariert executionMode = \"chat\". Wählen Sie einen Objekt-Modus-Agenten, um strukturierte Ausgabe anzuzeigen, oder wechseln Sie zum Chat-Tab.",
268
+ "ai_assistant.playground.object.notSupportedTitle": "Objekt-Modus ist für diesen Agenten nicht verfügbar.",
269
+ "ai_assistant.playground.object.outputTokens": "Ausgabe-Tokens",
270
+ "ai_assistant.playground.object.resultTitle": "Generiertes Objekt",
271
+ "ai_assistant.playground.object.run": "Objekt ausführen",
272
+ "ai_assistant.playground.object.shortcutHint": "Drücken Sie Cmd/Ctrl+Enter zum Ausführen.",
273
+ "ai_assistant.playground.refresh": "Agenten aktualisieren",
274
+ "ai_assistant.playground.retry": "Wiederholen",
275
+ "ai_assistant.playground.subtitle": "Testen Sie jeden registrierten KI-Agenten End-to-End. Verwenden Sie das Debug-Panel, um Request- und Response-Payloads zu inspizieren, und den Objekt-Modus-Tab, um strukturierte Ausgabe zu betrachten.",
276
+ "ai_assistant.playground.tabs.chat": "Chat",
277
+ "ai_assistant.playground.tabs.object": "Objekt-Modus",
278
+ "ai_assistant.playground.title": "KI-Playground",
27
279
  "ai_assistant.session.close": "Schließen",
28
280
  "ai_assistant.session.copied": "Kopiert!",
29
281
  "ai_assistant.session.copy": "Kopieren",
@@ -1,17 +1,237 @@
1
1
  {
2
+ "ai_assistant.agents.agentPickerLabel": "Agent",
3
+ "ai_assistant.agents.attachments.noneBadge": "No attachments accepted",
4
+ "ai_assistant.agents.attachments.subtitle": "Accepted media types the agent declares. Read-only in Phase 2.",
5
+ "ai_assistant.agents.attachments.title": "Attachment policy",
6
+ "ai_assistant.agents.empty.description": "Declare agents inside `packages/<module>/src/modules/<module>/ai-agents.ts`, run `yarn generate`, and ensure the caller holds the agent's required features.",
7
+ "ai_assistant.agents.empty.docLabel": "See packages/ai-assistant/AGENTS.md for the agent definition reference.",
8
+ "ai_assistant.agents.empty.title": "No AI agents are registered for your role yet.",
9
+ "ai_assistant.agents.loadErrorTitle": "Failed to load AI agents",
10
+ "ai_assistant.agents.loadingAgents": "Loading AI agents...",
11
+ "ai_assistant.agents.meta.executionMode": "Execution mode",
12
+ "ai_assistant.agents.meta.id": "Agent id",
13
+ "ai_assistant.agents.meta.maxSteps": "Max steps",
14
+ "ai_assistant.agents.meta.module": "Module",
15
+ "ai_assistant.agents.meta.mutationPolicy": "Mutation policy",
16
+ "ai_assistant.agents.meta.readOnly": "Read-only",
17
+ "ai_assistant.agents.meta.readOnlyNo": "No",
18
+ "ai_assistant.agents.meta.readOnlyYes": "Yes",
19
+ "ai_assistant.agents.meta.unlimited": "Unlimited",
20
+ "ai_assistant.agents.mutation_policy.clear": "Clear override",
21
+ "ai_assistant.agents.mutation_policy.clearedMessage": "Mutation policy override cleared; agent is using its code-declared policy.",
22
+ "ai_assistant.agents.mutation_policy.codeDeclared": "Code-declared",
23
+ "ai_assistant.agents.mutation_policy.codeDeclaredHint": "Compiled into the agent definition.",
24
+ "ai_assistant.agents.mutation_policy.errorTitle": "Failed to update mutation policy",
25
+ "ai_assistant.agents.mutation_policy.errors.escalationNotAllowed": "Cannot upgrade beyond the agent's declared policy — this is a code-level change.",
26
+ "ai_assistant.agents.mutation_policy.escalationTooltip": "Cannot be set above the agent's declared policy — this is a code-level change.",
27
+ "ai_assistant.agents.mutation_policy.loadErrorTitle": "Failed to load mutation policy",
28
+ "ai_assistant.agents.mutation_policy.loading": "Loading mutation policy...",
29
+ "ai_assistant.agents.mutation_policy.noOverride": "No override — using code-declared policy.",
30
+ "ai_assistant.agents.mutation_policy.noticeBody": "Overrides can only make the policy more restrictive. Options more permissive than the code-declared policy are disabled and rejected server-side.",
31
+ "ai_assistant.agents.mutation_policy.noticeTitle": "Downgrade only — escalation is a code change",
32
+ "ai_assistant.agents.mutation_policy.options.confirm-required": "Writes allowed with per-action confirmation.",
33
+ "ai_assistant.agents.mutation_policy.options.destructive-confirm-required": "Writes allowed; destructive ones require confirmation.",
34
+ "ai_assistant.agents.mutation_policy.options.read-only": "No writes — agent cannot call mutation tools.",
35
+ "ai_assistant.agents.mutation_policy.pickerLabel": "Mutation policy override",
36
+ "ai_assistant.agents.mutation_policy.save": "Save override",
37
+ "ai_assistant.agents.mutation_policy.savedMessage": "Mutation policy override saved.",
38
+ "ai_assistant.agents.mutation_policy.savedTitle": "Mutation policy updated",
39
+ "ai_assistant.agents.mutation_policy.subtitle": "Downgrade this agent's mutation capability per tenant. Upgrading beyond the code-declared policy is blocked by the server.",
40
+ "ai_assistant.agents.mutation_policy.tenantOverride": "Tenant override",
41
+ "ai_assistant.agents.mutation_policy.title": "Mutation policy",
42
+ "ai_assistant.agents.navTitle": "AI Agents",
43
+ "ai_assistant.agents.override.errorTitle": "Failed to save prompt override",
44
+ "ai_assistant.agents.override.errors.reservedKey": "Prompt overrides cannot modify policy fields (mutationPolicy, readOnly, allowedTools, acceptedMediaTypes). Remove those sections and retry.",
45
+ "ai_assistant.agents.override.history.empty": "No prompt overrides have been saved for this agent yet.",
46
+ "ai_assistant.agents.override.history.errorTitle": "Failed to load override history",
47
+ "ai_assistant.agents.override.history.loading": "Loading override history...",
48
+ "ai_assistant.agents.override.history.sectionsLabel": "sections",
49
+ "ai_assistant.agents.override.history.subtitle": "Newest first. Each save creates a new version scoped to the current tenant.",
50
+ "ai_assistant.agents.override.history.title": "Prompt override history",
51
+ "ai_assistant.agents.override.noticeBody": "Overrides append to the built-in sections — they never remove or replace shipped text. Saved versions are tenant-scoped and auditable from the history panel below.",
52
+ "ai_assistant.agents.override.noticeTitle": "Prompt overrides are additive",
53
+ "ai_assistant.agents.override.savedMessage": "Prompt override saved.",
54
+ "ai_assistant.agents.override.savedTitle": "Prompt override saved",
55
+ "ai_assistant.agents.override.versionLabel": "Version",
56
+ "ai_assistant.agents.prompt.defaultModeLabel": "Default — shipped with the agent definition.",
57
+ "ai_assistant.agents.prompt.defaultSectionPlaceholder": "No default copy declared for this section — the agent ships a single systemPrompt. Override to append additional text below the built-in content.",
58
+ "ai_assistant.agents.prompt.errorTitle": "Failed to submit overrides",
59
+ "ai_assistant.agents.prompt.fullSystemPromptLabel": "Full system prompt (default)",
60
+ "ai_assistant.agents.prompt.noticeBody": "Overrides append to the built-in sections — they never remove or replace shipped text. Saved versions are tenant-scoped and auditable from the history panel below.",
61
+ "ai_assistant.agents.prompt.noticeTitle": "Prompt overrides are additive",
62
+ "ai_assistant.agents.prompt.overrideModeLabel": "Override mode — appends to the built-in section text.",
63
+ "ai_assistant.agents.prompt.overridePlaceholder": "Write additional text for this section...",
64
+ "ai_assistant.agents.prompt.pendingMessage": "Prompt overrides accepted.",
65
+ "ai_assistant.agents.prompt.pendingTitle": "Overrides accepted",
66
+ "ai_assistant.agents.prompt.save": "Save overrides",
67
+ "ai_assistant.agents.prompt.sections.attachments": "Attachments",
68
+ "ai_assistant.agents.prompt.sections.data": "Data",
69
+ "ai_assistant.agents.prompt.sections.mutationPolicy": "Mutation policy",
70
+ "ai_assistant.agents.prompt.sections.overrides": "Overrides",
71
+ "ai_assistant.agents.prompt.sections.responseStyle": "Response style",
72
+ "ai_assistant.agents.prompt.sections.role": "Role",
73
+ "ai_assistant.agents.prompt.sections.scope": "Scope",
74
+ "ai_assistant.agents.prompt.sections.tools": "Tools",
75
+ "ai_assistant.agents.prompt.subtitle": "Toggle any section to write an additive override. Saving stores a new tenant-scoped version; built-in section text is always preserved.",
76
+ "ai_assistant.agents.prompt.title": "Prompt sections",
77
+ "ai_assistant.agents.prompt.toggleOverride": "Override",
78
+ "ai_assistant.agents.refresh": "Refresh agents",
79
+ "ai_assistant.agents.retry": "Retry",
80
+ "ai_assistant.agents.subtitle": "Inspect every registered agent and manage tenant-scoped additive prompt-section overrides.",
81
+ "ai_assistant.agents.title": "AI Agents",
82
+ "ai_assistant.agents.tools.emptyBody": "This agent declares no tools in its allowedTools whitelist.",
83
+ "ai_assistant.agents.tools.enabledLabel": "Enabled",
84
+ "ai_assistant.agents.tools.missingBadge": "Missing",
85
+ "ai_assistant.agents.tools.mutationBadge": "Mutation",
86
+ "ai_assistant.agents.tools.readBadge": "Read",
87
+ "ai_assistant.agents.tools.subtitle": "Read-only surface in Phase 2. Editing the per-tool toggle and mutation policy lands in Step 5.4 / Phase 3.",
88
+ "ai_assistant.agents.tools.title": "Allowed tools",
89
+ "ai_assistant.agents.tools.tooltipDisabled": "Editable after Phase 3 lands mutation policy controls.",
90
+ "ai_assistant.chat.assistantRoleLabel": "Assistant",
91
+ "ai_assistant.chat.attachFile": "Attach file",
92
+ "ai_assistant.chat.betaChip": "beta",
93
+ "ai_assistant.chat.cancel": "Cancel streaming response",
94
+ "ai_assistant.chat.composerLabel": "Message composer",
95
+ "ai_assistant.chat.composerPlaceholder": "Message the AI agent...",
96
+ "ai_assistant.chat.copied": "Copied",
97
+ "ai_assistant.chat.copyMessage": "Copy message",
98
+ "ai_assistant.chat.debug.lastRequestEmpty": "No request has been sent yet.",
99
+ "ai_assistant.chat.debug.lastRequestSection": "Last request",
100
+ "ai_assistant.chat.debug.lastResponseEmpty": "No response received yet.",
101
+ "ai_assistant.chat.debug.lastResponseSection": "Last response",
102
+ "ai_assistant.chat.debug.panelTitle": "Debug panel",
103
+ "ai_assistant.chat.debug.promptDefault": "default",
104
+ "ai_assistant.chat.debug.promptEmpty": "No prompt sections resolved for this agent.",
105
+ "ai_assistant.chat.debug.promptOverride": "override",
106
+ "ai_assistant.chat.debug.promptPlaceholder": "placeholder",
107
+ "ai_assistant.chat.debug.promptSection": "Prompt sections",
108
+ "ai_assistant.chat.debug.statusLabel": "Status:",
109
+ "ai_assistant.chat.debug.toolMutation": "mutation",
110
+ "ai_assistant.chat.debug.toolNoFeatures": "no required features",
111
+ "ai_assistant.chat.debug.toolRead": "read",
112
+ "ai_assistant.chat.debug.toolsEmpty": "No tools resolved for this agent yet.",
113
+ "ai_assistant.chat.debug.toolsSection": "Resolved tools",
114
+ "ai_assistant.chat.debugPanelTitle": "Debug panel",
2
115
  "ai_assistant.chat.describePlaceholder": "Describe what you want to do...",
116
+ "ai_assistant.chat.dock.close": "Close AI dock",
117
+ "ai_assistant.chat.dock.collapse": "Collapse AI dock",
118
+ "ai_assistant.chat.dock.expand": "Expand AI dock",
119
+ "ai_assistant.chat.emptyTranscript": "No messages yet. Ask the agent anything to get started.",
120
+ "ai_assistant.chat.errorTitle": "Agent dispatch failed",
3
121
  "ai_assistant.chat.example.create": "Create a new product",
4
122
  "ai_assistant.chat.example.search": "Search for customers in New York",
5
123
  "ai_assistant.chat.example.show": "Show me recent orders",
6
124
  "ai_assistant.chat.idleExamples": "Examples:",
7
125
  "ai_assistant.chat.idleTitle": "Ask me anything or describe what you want to do.",
126
+ "ai_assistant.chat.mutation_cards.confirmation.cancel": "Cancel",
127
+ "ai_assistant.chat.mutation_cards.confirmation.defaultSummary": "Applying the requested changes...",
128
+ "ai_assistant.chat.mutation_cards.confirmation.errorTitle": "Confirm failed",
129
+ "ai_assistant.chat.mutation_cards.confirmation.invalidStatusBody": "This action has already been confirmed, cancelled, or executed.",
130
+ "ai_assistant.chat.mutation_cards.confirmation.invalidStatusTitle": "Action already resolved",
131
+ "ai_assistant.chat.mutation_cards.confirmation.schemaDriftBody": "The tool signature changed since this preview was generated. Ask the assistant to re-propose the change.",
132
+ "ai_assistant.chat.mutation_cards.confirmation.schemaDriftTitle": "Schema changed",
133
+ "ai_assistant.chat.mutation_cards.confirmation.staleVersionBody": "One or more records changed since this preview was generated. Ask the assistant to re-propose the change.",
134
+ "ai_assistant.chat.mutation_cards.confirmation.staleVersionTitle": "Re-propose required",
135
+ "ai_assistant.chat.mutation_cards.confirmation.title": "Applying action...",
136
+ "ai_assistant.chat.mutation_cards.diff.afterHeader": "After",
137
+ "ai_assistant.chat.mutation_cards.diff.beforeHeader": "Before",
138
+ "ai_assistant.chat.mutation_cards.diff.empty": "No field changes for this record.",
139
+ "ai_assistant.chat.mutation_cards.diff.fieldHeader": "Field",
140
+ "ai_assistant.chat.mutation_cards.preview.batchRecords": "records",
141
+ "ai_assistant.chat.mutation_cards.preview.batchSummary": "Batch update",
142
+ "ai_assistant.chat.mutation_cards.preview.cancel": "Cancel",
143
+ "ai_assistant.chat.mutation_cards.preview.confirm": "Confirm",
144
+ "ai_assistant.chat.mutation_cards.preview.handlerError": "The mutation handler reported an error. Review the details and re-propose if needed.",
145
+ "ai_assistant.chat.mutation_cards.preview.reviewDetails": "Review details",
146
+ "ai_assistant.chat.mutation_cards.preview.title": "Review proposed changes",
147
+ "ai_assistant.chat.mutation_cards.result.failureBody": "The mutation could not be applied.",
148
+ "ai_assistant.chat.mutation_cards.result.failureTitle": "Action failed",
149
+ "ai_assistant.chat.mutation_cards.result.fixWithAi": "Fix with AI",
150
+ "ai_assistant.chat.mutation_cards.result.partialBody": "Some records could not be updated.",
151
+ "ai_assistant.chat.mutation_cards.result.partialTitle": "Action applied with failures",
152
+ "ai_assistant.chat.mutation_cards.result.successBody": "The mutation completed successfully.",
153
+ "ai_assistant.chat.mutation_cards.result.successTitle": "Action applied",
154
+ "ai_assistant.chat.mutation_cards.result.successWithCommand": "Completed",
155
+ "ai_assistant.chat.mutation_cards.result.viewRecord": "View record",
156
+ "ai_assistant.chat.newConversation": "Start new conversation",
157
+ "ai_assistant.chat.pending_phase3.body": "This interactive card will land in Phase 3 of the unified AI framework.",
158
+ "ai_assistant.chat.pending_phase3.title": "Mutation approval card pending",
8
159
  "ai_assistant.chat.placeholder": "Ask me anything...",
160
+ "ai_assistant.chat.reasoning": "Reasoning",
161
+ "ai_assistant.chat.records.fields.amount": "Amount",
162
+ "ai_assistant.chat.records.fields.category": "Category",
163
+ "ai_assistant.chat.records.fields.close": "Close",
164
+ "ai_assistant.chat.records.fields.company": "Company",
165
+ "ai_assistant.chat.records.fields.completed": "Completed",
166
+ "ai_assistant.chat.records.fields.contact": "Contact",
167
+ "ai_assistant.chat.records.fields.due": "Due",
168
+ "ai_assistant.chat.records.fields.email": "Email",
169
+ "ai_assistant.chat.records.fields.industry": "Industry",
170
+ "ai_assistant.chat.records.fields.location": "Location",
171
+ "ai_assistant.chat.records.fields.owner": "Owner",
172
+ "ai_assistant.chat.records.fields.phone": "Phone",
173
+ "ai_assistant.chat.records.fields.price": "Price",
174
+ "ai_assistant.chat.records.fields.related": "Related",
175
+ "ai_assistant.chat.records.fields.sku": "SKU",
176
+ "ai_assistant.chat.records.fields.stage": "Stage",
177
+ "ai_assistant.chat.records.fields.title": "Title",
178
+ "ai_assistant.chat.records.fields.type": "Type",
179
+ "ai_assistant.chat.records.fields.website": "Website",
180
+ "ai_assistant.chat.records.kinds.activity": "Activity",
181
+ "ai_assistant.chat.records.kinds.company": "Company",
182
+ "ai_assistant.chat.records.kinds.deal": "Deal",
183
+ "ai_assistant.chat.records.kinds.person": "Person",
184
+ "ai_assistant.chat.records.kinds.product": "Product",
185
+ "ai_assistant.chat.records.openRecord": "Open record",
186
+ "ai_assistant.chat.regionLabel": "AI chat",
187
+ "ai_assistant.chat.removeFile": "Remove file",
188
+ "ai_assistant.chat.send": "Send message",
189
+ "ai_assistant.chat.sendWaitingForUpload": "Waiting for upload to finish…",
190
+ "ai_assistant.chat.shortcutHint": "Press Cmd/Ctrl+Enter to send, Escape to cancel.",
191
+ "ai_assistant.chat.shortcuts.cancelHint": "Press Escape to cancel.",
192
+ "ai_assistant.chat.shortcuts.saveHint": "Press Cmd/Ctrl+Enter to save.",
193
+ "ai_assistant.chat.shortcuts.submitHint": "Press Cmd/Ctrl+Enter to submit.",
194
+ "ai_assistant.chat.tabs.close": "Close",
195
+ "ai_assistant.chat.tabs.newSession": "New session",
196
+ "ai_assistant.chat.tabs.noPreviousSessions": "No previous sessions yet.",
197
+ "ai_assistant.chat.tabs.noSessions": "No sessions",
198
+ "ai_assistant.chat.tabs.recentSessions": "Recent sessions",
199
+ "ai_assistant.chat.tabs.rename": "Rename",
200
+ "ai_assistant.chat.thinking": "Thinking...",
201
+ "ai_assistant.chat.toolDone": "done",
202
+ "ai_assistant.chat.toolError": "failed",
203
+ "ai_assistant.chat.toolInput": "Input",
204
+ "ai_assistant.chat.toolOutput": "Output",
205
+ "ai_assistant.chat.toolRunning": "running…",
206
+ "ai_assistant.chat.transcriptLabel": "Chat transcript",
207
+ "ai_assistant.chat.uiPartPending": "Pending UI part:",
208
+ "ai_assistant.chat.userRoleLabel": "You",
209
+ "ai_assistant.chat.welcomeTitle": "How can I help?",
9
210
  "ai_assistant.dock.bottom": "Dock Bottom",
10
211
  "ai_assistant.dock.close": "Close",
11
212
  "ai_assistant.dock.floating": "Floating",
12
213
  "ai_assistant.dock.left": "Dock Left",
13
214
  "ai_assistant.dock.minimize": "Minimize",
14
215
  "ai_assistant.dock.right": "Dock Right",
216
+ "ai_assistant.launcher.dialogTitle": "AI assistants",
217
+ "ai_assistant.launcher.dock.subtitle": "AI assistant",
218
+ "ai_assistant.launcher.empty": "No assistants match your search.",
219
+ "ai_assistant.launcher.hint.close": "Close",
220
+ "ai_assistant.launcher.hint.launch": "Launch",
221
+ "ai_assistant.launcher.hint.navigate": "Navigate",
222
+ "ai_assistant.launcher.searchPlaceholder": "Search assistants...",
223
+ "ai_assistant.launcher.setup.body": "AI assistants are installed, but no provider key is configured. Set OPENCODE_PROVIDER and one matching API key in your .env file, then restart the app.",
224
+ "ai_assistant.launcher.setup.docs": "AI assistant docs",
225
+ "ai_assistant.launcher.setup.settingsDocs": "Provider settings",
226
+ "ai_assistant.launcher.setup.title": "Configure an AI provider to use assistants",
227
+ "ai_assistant.launcher.sheet.dock": "Dock to side",
228
+ "ai_assistant.launcher.triggerAriaLabel": "Open AI assistant",
229
+ "ai_assistant.launcher.triggerLabel": "AI",
230
+ "ai_assistant.launcher.welcome.suggestion1": "What can you help me with?",
231
+ "ai_assistant.launcher.welcome.suggestion2": "Show what data you can access",
232
+ "ai_assistant.launcher.welcome.suggestion3": "Suggest things to try",
233
+ "ai_assistant.launcher.welcome.suggestion4": "How do I use this assistant?",
234
+ "ai_assistant.launcher.writesBadge": "Can write",
15
235
  "ai_assistant.mcp.apiKeyLabel": "API Key:",
16
236
  "ai_assistant.mcp.close": "Close",
17
237
  "ai_assistant.mcp.copied": "Copied!",
@@ -24,6 +244,38 @@
24
244
  "ai_assistant.mcp.notGenerated": "Not generated",
25
245
  "ai_assistant.mcp.saveKeyWarning": "Save this key now - it won't be shown again!",
26
246
  "ai_assistant.mcp.title": "MCP Configuration",
247
+ "ai_assistant.playground.agentPickerLabel": "Agent",
248
+ "ai_assistant.playground.chat.notSupportedBody": "Pick an agent whose execution mode is \"chat\", or switch to the object-mode tab.",
249
+ "ai_assistant.playground.chat.notSupportedTitle": "Chat mode is not available for this agent.",
250
+ "ai_assistant.playground.debugToggle": "Debug panel",
251
+ "ai_assistant.playground.empty.description": "Declare agents inside `packages/<module>/src/modules/<module>/ai-agents.ts`, run `yarn generate`, and ensure the caller holds the agent's required features.",
252
+ "ai_assistant.playground.empty.docLabel": "See packages/ai-assistant/AGENTS.md for the agent definition reference.",
253
+ "ai_assistant.playground.empty.title": "No AI agents are registered for your role yet.",
254
+ "ai_assistant.playground.loadErrorTitle": "Failed to load AI agents",
255
+ "ai_assistant.playground.loadingAgents": "Loading AI agents...",
256
+ "ai_assistant.playground.meta.executionMode": "Execution mode",
257
+ "ai_assistant.playground.meta.module": "Module",
258
+ "ai_assistant.playground.meta.mutationPolicy": "Mutation policy",
259
+ "ai_assistant.playground.meta.tools": "Allowed tools",
260
+ "ai_assistant.playground.navTitle": "AI Playground",
261
+ "ai_assistant.playground.object.debugTitle": "Last request payload",
262
+ "ai_assistant.playground.object.errorTitle": "Object run failed",
263
+ "ai_assistant.playground.object.finishReason": "Finish reason",
264
+ "ai_assistant.playground.object.inputLabel": "Prompt",
265
+ "ai_assistant.playground.object.inputPlaceholder": "Describe what the agent should produce...",
266
+ "ai_assistant.playground.object.inputTokens": "Input tokens",
267
+ "ai_assistant.playground.object.notSupportedBody": "This agent declares executionMode = \"chat\". Pick an object-mode agent to preview structured output, or switch to the chat tab.",
268
+ "ai_assistant.playground.object.notSupportedTitle": "Object mode is not available for this agent.",
269
+ "ai_assistant.playground.object.outputTokens": "Output tokens",
270
+ "ai_assistant.playground.object.resultTitle": "Generated object",
271
+ "ai_assistant.playground.object.run": "Run object",
272
+ "ai_assistant.playground.object.shortcutHint": "Press Cmd/Ctrl+Enter to run.",
273
+ "ai_assistant.playground.refresh": "Refresh agents",
274
+ "ai_assistant.playground.retry": "Retry",
275
+ "ai_assistant.playground.subtitle": "Exercise every registered AI agent end-to-end. Use the debug panel to inspect request and response payloads, and the object-mode tab to preview structured output.",
276
+ "ai_assistant.playground.tabs.chat": "Chat",
277
+ "ai_assistant.playground.tabs.object": "Object mode",
278
+ "ai_assistant.playground.title": "AI Playground",
27
279
  "ai_assistant.session.close": "Close",
28
280
  "ai_assistant.session.copied": "Copied!",
29
281
  "ai_assistant.session.copy": "Copy",