aimeat 3.3.0 → 3.3.2

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 (141) hide show
  1. package/README.md +1 -1
  2. package/dist/.env.example +10 -1
  3. package/dist/build-stamp.json +4 -4
  4. package/dist/locales/en.json +9263 -9225
  5. package/dist/locales/es.json +9255 -9217
  6. package/dist/locales/fi.json +9263 -9225
  7. package/dist/public/css/views/admin.css +935 -860
  8. package/dist/public/css/views/chat.css +393 -388
  9. package/dist/public/js/services/admin.js +12 -0
  10. package/dist/public/robots.node.txt +4 -0
  11. package/dist/public/views/admin/config-tab.js +333 -185
  12. package/dist/public/views/admin/usage-tab.js +373 -307
  13. package/dist/public/views/chat/parts.js +25 -6
  14. package/dist/public/views/profile/landing-page.cards.js +732 -700
  15. package/dist/public/views/profile/landing-page.js +6 -2
  16. package/dist/scripts/audit-mcp-schemas.js +22 -6
  17. package/dist/scripts/audit-mcp-schemas.js.map +1 -1
  18. package/dist/scripts/check-ai-disclosure.d.ts +1 -1
  19. package/dist/scripts/check-ai-disclosure.d.ts.map +1 -1
  20. package/dist/scripts/check-ai-disclosure.js +19 -3
  21. package/dist/scripts/check-ai-disclosure.js.map +1 -1
  22. package/dist/scripts/check-config-coverage.d.ts +2 -0
  23. package/dist/scripts/check-config-coverage.d.ts.map +1 -0
  24. package/dist/scripts/check-config-coverage.js +129 -0
  25. package/dist/scripts/check-config-coverage.js.map +1 -0
  26. package/dist/src/auth/ai-gate.d.ts +25 -0
  27. package/dist/src/auth/ai-gate.d.ts.map +1 -0
  28. package/dist/src/auth/ai-gate.js +21 -0
  29. package/dist/src/auth/ai-gate.js.map +1 -0
  30. package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
  31. package/dist/src/cli/connect/mcp/tools/apps.js +102 -20
  32. package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
  33. package/dist/src/cli/connect/tool-call-defs-agent.d.ts.map +1 -1
  34. package/dist/src/cli/connect/tool-call-defs-agent.js +38 -9
  35. package/dist/src/cli/connect/tool-call-defs-agent.js.map +1 -1
  36. package/dist/src/cli/connect/tool-call-defs-apps.d.ts.map +1 -1
  37. package/dist/src/cli/connect/tool-call-defs-apps.js +199 -103
  38. package/dist/src/cli/connect/tool-call-defs-apps.js.map +1 -1
  39. package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
  40. package/dist/src/cli/connect/tool-call-defs-core.js +149 -26
  41. package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
  42. package/dist/src/cli/connect/tool-call-defs-organism.d.ts.map +1 -1
  43. package/dist/src/cli/connect/tool-call-defs-organism.js +20 -3
  44. package/dist/src/cli/connect/tool-call-defs-organism.js.map +1 -1
  45. package/dist/src/cli/connect/tool-call-defs-packages.d.ts +23 -0
  46. package/dist/src/cli/connect/tool-call-defs-packages.d.ts.map +1 -0
  47. package/dist/src/cli/connect/tool-call-defs-packages.js +45 -0
  48. package/dist/src/cli/connect/tool-call-defs-packages.js.map +1 -0
  49. package/dist/src/cli/connect/tool-call-defs-workflows.d.ts +14 -0
  50. package/dist/src/cli/connect/tool-call-defs-workflows.d.ts.map +1 -0
  51. package/dist/src/cli/connect/tool-call-defs-workflows.js +75 -0
  52. package/dist/src/cli/connect/tool-call-defs-workflows.js.map +1 -0
  53. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  54. package/dist/src/cli/connect/tool-call.js +54 -1
  55. package/dist/src/cli/connect/tool-call.js.map +1 -1
  56. package/dist/src/config-types-ai.d.ts +13 -0
  57. package/dist/src/config-types-ai.d.ts.map +1 -1
  58. package/dist/src/config.d.ts.map +1 -1
  59. package/dist/src/config.js +2 -0
  60. package/dist/src/config.js.map +1 -1
  61. package/dist/src/generated/api-types.d.ts +196 -0
  62. package/dist/src/generated/api-types.d.ts.map +1 -1
  63. package/dist/src/mcp/annotations.d.ts.map +1 -1
  64. package/dist/src/mcp/annotations.js +8 -0
  65. package/dist/src/mcp/annotations.js.map +1 -1
  66. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts.map +1 -1
  67. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +25 -8
  68. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
  69. package/dist/src/mcp/catalog/definitions/packages.d.ts +17 -0
  70. package/dist/src/mcp/catalog/definitions/packages.d.ts.map +1 -0
  71. package/dist/src/mcp/catalog/definitions/packages.js +46 -0
  72. package/dist/src/mcp/catalog/definitions/packages.js.map +1 -0
  73. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
  74. package/dist/src/mcp/catalog/definitions.js +2 -0
  75. package/dist/src/mcp/catalog/definitions.js.map +1 -1
  76. package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
  77. package/dist/src/mcp/catalog/scopes.js +2 -0
  78. package/dist/src/mcp/catalog/scopes.js.map +1 -1
  79. package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
  80. package/dist/src/mcp/catalog/surfaces.js +2 -0
  81. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  82. package/dist/src/routes/admin-usage.d.ts.map +1 -1
  83. package/dist/src/routes/admin-usage.js +57 -0
  84. package/dist/src/routes/admin-usage.js.map +1 -1
  85. package/dist/src/routes/ai.d.ts.map +1 -1
  86. package/dist/src/routes/ai.js +4 -15
  87. package/dist/src/routes/ai.js.map +1 -1
  88. package/dist/src/routes/bootstrap.d.ts +2 -1
  89. package/dist/src/routes/bootstrap.d.ts.map +1 -1
  90. package/dist/src/routes/bootstrap.js +7 -18
  91. package/dist/src/routes/bootstrap.js.map +1 -1
  92. package/dist/src/routes/chat.d.ts +3 -0
  93. package/dist/src/routes/chat.d.ts.map +1 -1
  94. package/dist/src/routes/chat.js +20 -0
  95. package/dist/src/routes/chat.js.map +1 -1
  96. package/dist/src/routes/llm-proxy.d.ts +34 -0
  97. package/dist/src/routes/llm-proxy.d.ts.map +1 -0
  98. package/dist/src/routes/llm-proxy.js +258 -0
  99. package/dist/src/routes/llm-proxy.js.map +1 -0
  100. package/dist/src/routes/sitemaps.d.ts +22 -0
  101. package/dist/src/routes/sitemaps.d.ts.map +1 -0
  102. package/dist/src/routes/sitemaps.js +67 -0
  103. package/dist/src/routes/sitemaps.js.map +1 -0
  104. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  105. package/dist/src/server-bootstrap/routes-loader.js +2 -0
  106. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  107. package/dist/src/services/ai-completion.d.ts +76 -0
  108. package/dist/src/services/ai-completion.d.ts.map +1 -1
  109. package/dist/src/services/ai-completion.js +104 -68
  110. package/dist/src/services/ai-completion.js.map +1 -1
  111. package/dist/src/services/chat-session.d.ts +3 -0
  112. package/dist/src/services/chat-session.d.ts.map +1 -1
  113. package/dist/src/services/chat-session.js +4 -0
  114. package/dist/src/services/chat-session.js.map +1 -1
  115. package/dist/src/services/config-schema.d.ts +4 -0
  116. package/dist/src/services/config-schema.d.ts.map +1 -1
  117. package/dist/src/services/config-schema.js +33 -0
  118. package/dist/src/services/config-schema.js.map +1 -1
  119. package/dist/src/services/goose-acp.d.ts.map +1 -1
  120. package/dist/src/services/goose-acp.js +11 -0
  121. package/dist/src/services/goose-acp.js.map +1 -1
  122. package/dist/src/services/handbooks/appdev.d.ts +1 -1
  123. package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
  124. package/dist/src/services/handbooks/appdev.js +7 -1
  125. package/dist/src/services/handbooks/appdev.js.map +1 -1
  126. package/dist/src/services/openrouter.d.ts +23 -0
  127. package/dist/src/services/openrouter.d.ts.map +1 -1
  128. package/dist/src/services/openrouter.js +32 -1
  129. package/dist/src/services/openrouter.js.map +1 -1
  130. package/dist/src/services/usage-summary.d.ts +15 -0
  131. package/dist/src/services/usage-summary.d.ts.map +1 -1
  132. package/dist/src/services/usage-summary.js +15 -0
  133. package/dist/src/services/usage-summary.js.map +1 -1
  134. package/dist/src/storage/providers/postgres-kysely/methods/wallet.d.ts.map +1 -1
  135. package/dist/src/storage/providers/postgres-kysely/methods/wallet.js +23 -4
  136. package/dist/src/storage/providers/postgres-kysely/methods/wallet.js.map +1 -1
  137. package/dist/src/storage/providers/sqlite/methods/work.d.ts +5 -0
  138. package/dist/src/storage/providers/sqlite/methods/work.d.ts.map +1 -1
  139. package/dist/src/storage/providers/sqlite/methods/work.js +34 -22
  140. package/dist/src/storage/providers/sqlite/methods/work.js.map +1 -1
  141. package/package.json +4 -1
@@ -234,20 +234,39 @@ export function Composer({ value, onInput, onSend, onStop, onSpeak, busy, disabl
234
234
  }
235
235
 
236
236
  /**
237
- * Who is answering, and what it costs.
237
+ * Who is answering, on whose money, and on which model.
238
238
  *
239
- * The allowance is shown because a person about to fall back to a free model deserves to have seen
240
- * it coming. It is a line of text, not a gauge: this is not the thing they came here to look at.
239
+ * The payer is READ from the server (`status.pays`) rather than worked out here. This component used
240
+ * to decide it from whether the person had a key stored, and told them "running on your own
241
+ * OpenRouter key" while the node's key paid for every turn — a sentence about their own money that
242
+ * described somebody else's. Only the node knows which key a turn is actually spent from, so only
243
+ * the node gets to say.
244
+ *
245
+ * It is a line of text, not a gauge: this is not the thing they came here to look at.
241
246
  */
242
247
  export function StatusBar({ status, onReset }) {
243
248
  if (!status) return null;
244
249
  const remaining = Number(status.allowance_remaining_usd ?? 0);
250
+ const payer = {
251
+ own: () => tr('chat.ownKey', 'Running on your own OpenRouter key.'),
252
+ allowance: () => tr('chat.allowance', '{n} USD left of your allowance.').replace('{n}', remaining.toFixed(2)),
253
+ node: () => tr('chat.nodeKey', 'This node pays for the conversation, on its own key.'),
254
+ }[status.pays] ?? null;
255
+ // What the person's OWN money is doing while the node pays for this conversation. Shown only
256
+ // when it is not already the subject of the payer line, and worded so it cannot be read as a
257
+ // limit on the chat: it is the allowance for everything else on the node, and a person who is
258
+ // about to run out of it deserves to have seen it coming somewhere they actually look.
259
+ const elsewhere = status.pays === 'node' && !status.has_own_key && remaining > 0
260
+ ? tr('chat.allowanceElsewhere', '{n} USD of your allowance left, for everything outside this chat.')
261
+ .replace('{n}', remaining.toFixed(2))
262
+ : null;
245
263
  return html`
246
264
  <div class="chat-status">
247
265
  <span class="chat-status-agent">${status.agent_name}</span>
248
- ${status.has_own_key
249
- ? html`<span class="chat-status-key">${tr('chat.ownKey', 'Running on your own OpenRouter key.')}</span>`
250
- : html`<span class="chat-status-key">${tr('chat.allowance', '{n} USD left of your allowance.').replace('{n}', remaining.toFixed(2))}</span>`}
266
+ ${payer && html`<span class="chat-status-key">${payer()}</span>`}
267
+ ${elsewhere && html`<span class="chat-status-elsewhere">${elsewhere}</span>`}
268
+ ${status.model && html`<span class="chat-model chat-status-model"
269
+ title=${tr('chat.modelTitle', 'The model that answered this turn')}>${status.model}</span>`}
251
270
  ${onReset && html`
252
271
  <button type="button" class="btn-ghost chat-status-reset"
253
272
  title=${tr('chat.resetTitle', 'Start a fresh agent session for this conversation. Needed after changing what the agent may do.')}