aimeat 1.38.0 → 1.39.0

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 (321) hide show
  1. package/dist/.env.example +47 -0
  2. package/dist/locales/en.json +38 -674
  3. package/dist/locales/fi.json +38 -674
  4. package/dist/public/css/views/agents-detail.css +0 -7
  5. package/dist/public/css/views/my-company.css +2 -39
  6. package/dist/public/css/views/profile.css +7 -0
  7. package/dist/public/css/views/public-workspace-viewer.css +25 -0
  8. package/dist/public/js/services/agents.js +0 -14
  9. package/dist/public/js/services/organisms.js +14 -7
  10. package/dist/public/js/services/skills.js +34 -0
  11. package/dist/public/spa.html +1 -47
  12. package/dist/public/views/invite-accept.js +26 -1
  13. package/dist/public/views/my-company.js +3 -251
  14. package/dist/public/views/profile/agents/agent-card.js +1 -14
  15. package/dist/public/views/profile/discover-tab.js +41 -1
  16. package/dist/public/views/profile/organisms/helpers.js +7 -1
  17. package/dist/public/views/profile/organisms/skills-panel.js +8 -0
  18. package/dist/public/views/profile/organisms/workspace.js +50 -1
  19. package/dist/public/views/profile/scheduler-calendar.js +3 -3
  20. package/dist/public/views/profile/skills-tab.js +10 -0
  21. package/dist/public/views/public-workspace-viewer.js +90 -2
  22. package/dist/scripts/build-app-catalog.d.ts +4 -0
  23. package/dist/scripts/build-app-catalog.d.ts.map +1 -0
  24. package/dist/scripts/build-app-catalog.js +75 -0
  25. package/dist/scripts/build-app-catalog.js.map +1 -0
  26. package/dist/src/auth/node-keys.d.ts.map +1 -1
  27. package/dist/src/auth/node-keys.js +2 -0
  28. package/dist/src/auth/node-keys.js.map +1 -1
  29. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts +2 -0
  30. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
  31. package/dist/src/cli/connect/mcp/tools/workspaces.js +64 -3
  32. package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
  33. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  34. package/dist/src/cli/connect/tool-call.js +61 -1
  35. package/dist/src/cli/connect/tool-call.js.map +1 -1
  36. package/dist/src/cli/skill-install.d.ts +5 -0
  37. package/dist/src/cli/skill-install.d.ts.map +1 -0
  38. package/dist/src/cli/skill-install.js +134 -0
  39. package/dist/src/cli/skill-install.js.map +1 -0
  40. package/dist/src/config.d.ts +18 -1
  41. package/dist/src/config.d.ts.map +1 -1
  42. package/dist/src/config.js +75 -2
  43. package/dist/src/config.js.map +1 -1
  44. package/dist/src/data/builtin-skills.d.ts.map +1 -1
  45. package/dist/src/data/builtin-skills.js +42 -0
  46. package/dist/src/data/builtin-skills.js.map +1 -1
  47. package/dist/src/enterprise/loader.d.ts.map +1 -1
  48. package/dist/src/enterprise/loader.js +0 -2
  49. package/dist/src/enterprise/loader.js.map +1 -1
  50. package/dist/src/enterprise/provider.d.ts +0 -65
  51. package/dist/src/enterprise/provider.d.ts.map +1 -1
  52. package/dist/src/enterprise/provider.js +0 -17
  53. package/dist/src/enterprise/provider.js.map +1 -1
  54. package/dist/src/generated/api-types.d.ts +615 -697
  55. package/dist/src/generated/api-types.d.ts.map +1 -1
  56. package/dist/src/generated/prisma-postgres/edge.js +44 -3
  57. package/dist/src/generated/prisma-postgres/index-browser.js +41 -0
  58. package/dist/src/generated/prisma-postgres/index.d.ts +3417 -156
  59. package/dist/src/generated/prisma-postgres/index.js +44 -3
  60. package/dist/src/generated/prisma-postgres/package.json +1 -1
  61. package/dist/src/generated/prisma-postgres/schema.prisma +76 -18
  62. package/dist/src/generated/prisma-postgres/wasm.js +44 -3
  63. package/dist/src/index.js +38 -1
  64. package/dist/src/index.js.map +1 -1
  65. package/dist/src/mcp/agent-telemetry.d.ts +3 -1
  66. package/dist/src/mcp/agent-telemetry.d.ts.map +1 -1
  67. package/dist/src/mcp/agent-telemetry.js +26 -1
  68. package/dist/src/mcp/agent-telemetry.js.map +1 -1
  69. package/dist/src/mcp/annotations.d.ts.map +1 -1
  70. package/dist/src/mcp/annotations.js +3 -0
  71. package/dist/src/mcp/annotations.js.map +1 -1
  72. package/dist/src/mcp/catalog/definitions.d.ts +2 -0
  73. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
  74. package/dist/src/mcp/catalog/definitions.js +41 -3
  75. package/dist/src/mcp/catalog/definitions.js.map +1 -1
  76. package/dist/src/mcp/catalog/scopes.d.ts +0 -36
  77. package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
  78. package/dist/src/mcp/catalog/scopes.js +0 -76
  79. package/dist/src/mcp/catalog/scopes.js.map +1 -1
  80. package/dist/src/mcp/catalog/surfaces.js +3 -3
  81. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  82. package/dist/src/mcp/core.d.ts +2 -0
  83. package/dist/src/mcp/core.d.ts.map +1 -1
  84. package/dist/src/mcp/core.js +11 -1
  85. package/dist/src/mcp/core.js.map +1 -1
  86. package/dist/src/mcp/organisms.d.ts.map +1 -1
  87. package/dist/src/mcp/organisms.js +13 -5
  88. package/dist/src/mcp/organisms.js.map +1 -1
  89. package/dist/src/mcp/workspaces.d.ts +8 -0
  90. package/dist/src/mcp/workspaces.d.ts.map +1 -1
  91. package/dist/src/mcp/workspaces.js +131 -65
  92. package/dist/src/mcp/workspaces.js.map +1 -1
  93. package/dist/src/middleware/rate-limit.d.ts +6 -1
  94. package/dist/src/middleware/rate-limit.d.ts.map +1 -1
  95. package/dist/src/middleware/rate-limit.js +7 -3
  96. package/dist/src/middleware/rate-limit.js.map +1 -1
  97. package/dist/src/models/offer-schemas.d.ts +8 -8
  98. package/dist/src/routes/agent-directives.d.ts +1 -2
  99. package/dist/src/routes/agent-directives.d.ts.map +1 -1
  100. package/dist/src/routes/agent-directives.js +5 -20
  101. package/dist/src/routes/agent-directives.js.map +1 -1
  102. package/dist/src/routes/agent-telemetry.d.ts +2 -0
  103. package/dist/src/routes/agent-telemetry.d.ts.map +1 -1
  104. package/dist/src/routes/agent-telemetry.js +27 -0
  105. package/dist/src/routes/agent-telemetry.js.map +1 -1
  106. package/dist/src/routes/apps.d.ts +3 -0
  107. package/dist/src/routes/apps.d.ts.map +1 -1
  108. package/dist/src/routes/apps.js +16 -2
  109. package/dist/src/routes/apps.js.map +1 -1
  110. package/dist/src/routes/boards.d.ts.map +1 -1
  111. package/dist/src/routes/boards.js +16 -20
  112. package/dist/src/routes/boards.js.map +1 -1
  113. package/dist/src/routes/capabilities.d.ts.map +1 -1
  114. package/dist/src/routes/capabilities.js +11 -0
  115. package/dist/src/routes/capabilities.js.map +1 -1
  116. package/dist/src/routes/chat-instances.d.ts.map +1 -1
  117. package/dist/src/routes/chat-instances.js +16 -2
  118. package/dist/src/routes/chat-instances.js.map +1 -1
  119. package/dist/src/routes/cortex.d.ts +3 -0
  120. package/dist/src/routes/cortex.d.ts.map +1 -1
  121. package/dist/src/routes/cortex.js +42 -0
  122. package/dist/src/routes/cortex.js.map +1 -1
  123. package/dist/src/routes/extensions.d.ts +3 -0
  124. package/dist/src/routes/extensions.d.ts.map +1 -1
  125. package/dist/src/routes/extensions.js +14 -0
  126. package/dist/src/routes/extensions.js.map +1 -1
  127. package/dist/src/routes/federation-peer.d.ts.map +1 -1
  128. package/dist/src/routes/federation-peer.js +23 -5
  129. package/dist/src/routes/federation-peer.js.map +1 -1
  130. package/dist/src/routes/knowledge.d.ts.map +1 -1
  131. package/dist/src/routes/knowledge.js +8 -0
  132. package/dist/src/routes/knowledge.js.map +1 -1
  133. package/dist/src/routes/ledger.d.ts +34 -0
  134. package/dist/src/routes/ledger.d.ts.map +1 -0
  135. package/dist/src/routes/ledger.js +220 -0
  136. package/dist/src/routes/ledger.js.map +1 -0
  137. package/dist/src/routes/libs.d.ts +6 -0
  138. package/dist/src/routes/libs.d.ts.map +1 -1
  139. package/dist/src/routes/libs.js +73 -4
  140. package/dist/src/routes/libs.js.map +1 -1
  141. package/dist/src/routes/memory.d.ts +2 -0
  142. package/dist/src/routes/memory.d.ts.map +1 -1
  143. package/dist/src/routes/memory.js +35 -2
  144. package/dist/src/routes/memory.js.map +1 -1
  145. package/dist/src/routes/oauth-login.d.ts +5 -0
  146. package/dist/src/routes/oauth-login.d.ts.map +1 -1
  147. package/dist/src/routes/oauth-login.js +44 -0
  148. package/dist/src/routes/oauth-login.js.map +1 -1
  149. package/dist/src/routes/openrouter.d.ts.map +1 -1
  150. package/dist/src/routes/openrouter.js +0 -28
  151. package/dist/src/routes/openrouter.js.map +1 -1
  152. package/dist/src/routes/organisms.d.ts +14 -0
  153. package/dist/src/routes/organisms.d.ts.map +1 -1
  154. package/dist/src/routes/organisms.js +201 -70
  155. package/dist/src/routes/organisms.js.map +1 -1
  156. package/dist/src/routes/portal.d.ts.map +1 -1
  157. package/dist/src/routes/portal.js +0 -1
  158. package/dist/src/routes/portal.js.map +1 -1
  159. package/dist/src/routes/schedules.d.ts.map +1 -1
  160. package/dist/src/routes/schedules.js +15 -1
  161. package/dist/src/routes/schedules.js.map +1 -1
  162. package/dist/src/routes/site.js +1 -1
  163. package/dist/src/routes/site.js.map +1 -1
  164. package/dist/src/routes/skills.d.ts +2 -0
  165. package/dist/src/routes/skills.d.ts.map +1 -1
  166. package/dist/src/routes/skills.js +74 -0
  167. package/dist/src/routes/skills.js.map +1 -1
  168. package/dist/src/routes/storage-files.d.ts +2 -0
  169. package/dist/src/routes/storage-files.d.ts.map +1 -1
  170. package/dist/src/routes/storage-files.js +8 -0
  171. package/dist/src/routes/storage-files.js.map +1 -1
  172. package/dist/src/routes/upload.d.ts +2 -0
  173. package/dist/src/routes/upload.d.ts.map +1 -1
  174. package/dist/src/routes/upload.js +8 -0
  175. package/dist/src/routes/upload.js.map +1 -1
  176. package/dist/src/routes/work.d.ts.map +1 -1
  177. package/dist/src/routes/work.js +39 -54
  178. package/dist/src/routes/work.js.map +1 -1
  179. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  180. package/dist/src/server-bootstrap/routes-loader.js +6 -13
  181. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  182. package/dist/src/services/ai-completion.d.ts +3 -0
  183. package/dist/src/services/ai-completion.d.ts.map +1 -1
  184. package/dist/src/services/ai-completion.js +16 -0
  185. package/dist/src/services/ai-completion.js.map +1 -1
  186. package/dist/src/services/attachment-duplication.d.ts.map +1 -1
  187. package/dist/src/services/attachment-duplication.js +6 -2
  188. package/dist/src/services/attachment-duplication.js.map +1 -1
  189. package/dist/src/services/capability-invoke.d.ts.map +1 -1
  190. package/dist/src/services/capability-invoke.js +4 -7
  191. package/dist/src/services/capability-invoke.js.map +1 -1
  192. package/dist/src/services/config-schema.d.ts.map +1 -1
  193. package/dist/src/services/config-schema.js +0 -2
  194. package/dist/src/services/config-schema.js.map +1 -1
  195. package/dist/src/services/dangling-refs.d.ts +46 -0
  196. package/dist/src/services/dangling-refs.d.ts.map +1 -0
  197. package/dist/src/services/dangling-refs.js +228 -0
  198. package/dist/src/services/dangling-refs.js.map +1 -0
  199. package/dist/src/services/discovery/setup.d.ts +1 -1
  200. package/dist/src/services/discovery/setup.d.ts.map +1 -1
  201. package/dist/src/services/discovery/setup.js +0 -2
  202. package/dist/src/services/discovery/setup.js.map +1 -1
  203. package/dist/src/services/doc-images.d.ts +47 -0
  204. package/dist/src/services/doc-images.d.ts.map +1 -0
  205. package/dist/src/services/doc-images.js +118 -0
  206. package/dist/src/services/doc-images.js.map +1 -0
  207. package/dist/src/services/extension-runtime.d.ts.map +1 -1
  208. package/dist/src/services/extension-runtime.js +5 -6
  209. package/dist/src/services/extension-runtime.js.map +1 -1
  210. package/dist/src/services/handbooks/appdev.d.ts +1 -1
  211. package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
  212. package/dist/src/services/handbooks/appdev.js +7 -2
  213. package/dist/src/services/handbooks/appdev.js.map +1 -1
  214. package/dist/src/services/invitations.d.ts +9 -0
  215. package/dist/src/services/invitations.d.ts.map +1 -1
  216. package/dist/src/services/invitations.js +20 -0
  217. package/dist/src/services/invitations.js.map +1 -1
  218. package/dist/src/services/ledger-billing.d.ts +60 -0
  219. package/dist/src/services/ledger-billing.d.ts.map +1 -0
  220. package/dist/src/services/ledger-billing.js +95 -0
  221. package/dist/src/services/ledger-billing.js.map +1 -0
  222. package/dist/src/services/ledger-budget-alerts.d.ts +26 -0
  223. package/dist/src/services/ledger-budget-alerts.d.ts.map +1 -0
  224. package/dist/src/services/ledger-budget-alerts.js +68 -0
  225. package/dist/src/services/ledger-budget-alerts.js.map +1 -0
  226. package/dist/src/services/ledger-budget.d.ts +54 -0
  227. package/dist/src/services/ledger-budget.d.ts.map +1 -0
  228. package/dist/src/services/ledger-budget.js +75 -0
  229. package/dist/src/services/ledger-budget.js.map +1 -0
  230. package/dist/src/services/llm-pricing.d.ts +41 -0
  231. package/dist/src/services/llm-pricing.d.ts.map +1 -0
  232. package/dist/src/services/llm-pricing.js +66 -0
  233. package/dist/src/services/llm-pricing.js.map +1 -0
  234. package/dist/src/services/message-send.d.ts.map +1 -1
  235. package/dist/src/services/message-send.js +0 -11
  236. package/dist/src/services/message-send.js.map +1 -1
  237. package/dist/src/services/organism-export.d.ts +0 -2
  238. package/dist/src/services/organism-export.d.ts.map +1 -1
  239. package/dist/src/services/organism-export.js +12 -21
  240. package/dist/src/services/organism-export.js.map +1 -1
  241. package/dist/src/services/presence.d.ts.map +1 -1
  242. package/dist/src/services/presence.js +0 -10
  243. package/dist/src/services/presence.js.map +1 -1
  244. package/dist/src/services/scheduler.d.ts +0 -93
  245. package/dist/src/services/scheduler.d.ts.map +1 -1
  246. package/dist/src/services/scheduler.js +0 -730
  247. package/dist/src/services/scheduler.js.map +1 -1
  248. package/dist/src/services/share-token.d.ts +35 -0
  249. package/dist/src/services/share-token.d.ts.map +1 -0
  250. package/dist/src/services/share-token.js +69 -0
  251. package/dist/src/services/share-token.js.map +1 -0
  252. package/dist/src/services/usage-metering.d.ts +69 -0
  253. package/dist/src/services/usage-metering.d.ts.map +1 -0
  254. package/dist/src/services/usage-metering.js +131 -0
  255. package/dist/src/services/usage-metering.js.map +1 -0
  256. package/dist/src/services/workspace-export.d.ts.map +1 -1
  257. package/dist/src/services/workspace-export.js +14 -1
  258. package/dist/src/services/workspace-export.js.map +1 -1
  259. package/dist/src/services/workspace-meta.d.ts +15 -0
  260. package/dist/src/services/workspace-meta.d.ts.map +1 -1
  261. package/dist/src/services/workspace-meta.js +23 -0
  262. package/dist/src/services/workspace-meta.js.map +1 -1
  263. package/dist/src/services/workspace-roles.d.ts +60 -0
  264. package/dist/src/services/workspace-roles.d.ts.map +1 -0
  265. package/dist/src/services/workspace-roles.js +112 -0
  266. package/dist/src/services/workspace-roles.js.map +1 -0
  267. package/dist/src/storage/interface.d.ts +98 -3
  268. package/dist/src/storage/interface.d.ts.map +1 -1
  269. package/dist/src/storage/interface.js.map +1 -1
  270. package/dist/src/storage/providers/mongodb/index.d.ts +5 -1
  271. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
  272. package/dist/src/storage/providers/mongodb/index.js +143 -0
  273. package/dist/src/storage/providers/mongodb/index.js.map +1 -1
  274. package/dist/src/storage/providers/sqlite/index.d.ts +5 -1
  275. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  276. package/dist/src/storage/providers/sqlite/index.js +20 -0
  277. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  278. package/dist/src/storage/providers/sqlite/repos/agent-usage.d.ts +14 -0
  279. package/dist/src/storage/providers/sqlite/repos/agent-usage.d.ts.map +1 -0
  280. package/dist/src/storage/providers/sqlite/repos/agent-usage.js +130 -0
  281. package/dist/src/storage/providers/sqlite/repos/agent-usage.js.map +1 -0
  282. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  283. package/dist/src/storage/providers/sqlite/schema.js +49 -0
  284. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  285. package/dist/src/storage/repositories/agent-usage.repository.d.ts +24 -0
  286. package/dist/src/storage/repositories/agent-usage.repository.d.ts.map +1 -0
  287. package/dist/src/storage/repositories/agent-usage.repository.js +18 -0
  288. package/dist/src/storage/repositories/agent-usage.repository.js.map +1 -0
  289. package/dist/src/utils/env-config.d.ts.map +1 -1
  290. package/dist/src/utils/env-config.js +0 -11
  291. package/dist/src/utils/env-config.js.map +1 -1
  292. package/dist/src/utils/node-descriptor.d.ts.map +1 -1
  293. package/dist/src/utils/node-descriptor.js +0 -1
  294. package/dist/src/utils/node-descriptor.js.map +1 -1
  295. package/dist/src/utils/reserved-keys.d.ts +30 -0
  296. package/dist/src/utils/reserved-keys.d.ts.map +1 -0
  297. package/dist/src/utils/reserved-keys.js +36 -0
  298. package/dist/src/utils/reserved-keys.js.map +1 -0
  299. package/dist/src/utils/url-validator.d.ts.map +1 -1
  300. package/dist/src/utils/url-validator.js +9 -3
  301. package/dist/src/utils/url-validator.js.map +1 -1
  302. package/dist/static/app-catalog/_template.html +571 -0
  303. package/dist/static/app-catalog/js/apps-io.js +348 -0
  304. package/dist/static/app-catalog/js/config.js +38 -0
  305. package/dist/static/app-catalog/js/cortex.js +631 -0
  306. package/dist/static/app-catalog/js/db.js +108 -0
  307. package/dist/static/app-catalog/js/detail.js +1174 -0
  308. package/dist/static/app-catalog/js/i18n-data.js +689 -0
  309. package/dist/static/app-catalog/js/i18n.js +50 -0
  310. package/dist/static/app-catalog/js/main.js +793 -0
  311. package/dist/static/app-catalog/js/render.js +784 -0
  312. package/dist/static/app-catalog/js/server-io.js +1425 -0
  313. package/dist/static/app-catalog/js/settings.js +389 -0
  314. package/dist/static/app-catalog/js/ui.js +82 -0
  315. package/dist/static/app-catalog/js/util.js +119 -0
  316. package/dist/static/app-catalog/js/zip.js +242 -0
  317. package/dist/static/app-catalog/styles/app-catalog.css +2044 -0
  318. package/dist/static/app-catalog.html +8346 -8632
  319. package/package.json +5 -2
  320. package/prisma/schema.postgres.prisma +83 -25
  321. package/prisma/schema.prisma +47 -0
package/dist/.env.example CHANGED
@@ -104,6 +104,53 @@ AIMEAT_PORT=40050
104
104
  # AIMEAT_FEDERATION_AUTH_POLICY=disabled # disabled | all_peers | specific_peers
105
105
  # AIMEAT_FEDERATION_DEFAULT_SCOPES=memory:read,catalogue:read
106
106
 
107
+ # ── Security Posture (localhost-flexible → public-strict) ──────
108
+ # AIMEAT runs the SAME code wide-open on localhost AND hardened on the public internet.
109
+ # Security is DRIVEN BY CONFIG, never a code fork. The profile sets safe DEFAULTS for the
110
+ # knobs below; any explicit AIMEAT_* var always overrides it. Full rationale + the ten
111
+ # security invariants: docs/coding-guidelines/security-development-dna.md
112
+ #
113
+ # AIMEAT_SECURITY_PROFILE — local | public
114
+ # The master switch. Default: `local` when AIMEAT_BASE_URL is http://localhost /
115
+ # 127.0.0.1 / an RFC1918 host, OR AIMEAT_NODE_TYPE=personal; otherwise `public`.
116
+ # Set it explicitly on a real deployment. `public` flips the two egress knobs below to
117
+ # their strict values and arms the startup self-check.
118
+ # AIMEAT_SECURITY_PROFILE=public
119
+ #
120
+ # AIMEAT_ALLOW_PRIVATE_EGRESS — may SERVER-SIDE fetches target LOOPBACK (127.0.0.1 / ::1 / localhost)?
121
+ # Governs every outbound fetch whose URL is user/owner/agent/peer-influenced: the AI-provider
122
+ # baseUrl, agent/board webhooks, extension ctx.fetch, federation download URLs.
123
+ # local default: true — so the node can reach a LOCAL model server (Ollama / LM Studio at
124
+ # http://127.0.0.1:11434 etc.). This is why localhost stays flexible.
125
+ # public default: false — blocks loopback SSRF (localhost-bound services). NOTE: RFC1918
126
+ # (10./172.16./192.168.*), link-local + cloud-metadata (169.254.169.254)
127
+ # are ALWAYS blocked server-side regardless of this flag. Redirects are
128
+ # re-validated per hop. (AIMEAT_DEV_MODE=true is a back-compat alias.)
129
+ # AIMEAT_ALLOW_PRIVATE_EGRESS=false
130
+ #
131
+ # AIMEAT_AI_PROVIDER_ALLOWLIST — comma-separated HOST allowlist an AI `baseUrl` may point at.
132
+ # Empty = any host (local dev / self-hosted models). On a public multi-tenant node, restrict
133
+ # WHERE a decrypted AI key may be sent so a poisoned baseUrl can't exfiltrate it.
134
+ # Example: openrouter.ai,api.openai.com,api.anthropic.com,api.groq.com
135
+ # AIMEAT_AI_PROVIDER_ALLOWLIST=""
136
+ #
137
+ # Startup self-check: when the resolved profile is `public`, the node warns loudly (or refuses
138
+ # to start) on an unsafe combination — AIMEAT_ANONYMOUS=true, AIMEAT_ALLOW_PRIVATE_EGRESS=true,
139
+ # AIMEAT_FEDERATION_OPEN_JOIN=true, missing AIMEAT_ENCRYPTION_KEY, AIMEAT_CORS_ALLOWED_ORIGINS=*,
140
+ # or AIMEAT_STATS_ACCESS=public. Being insecure on the internet must be a conscious override.
141
+ #
142
+ # ── Reserved-key write guard (NOT a knob — always-on code invariant) ──
143
+ # A role-'app' token (H-2 app grant) has memory:write over the OWNER's namespace. It must NOT
144
+ # be able to write keys the SERVER reads and trusts for behavior, or a granted app could redirect
145
+ # the owner's AI key, reset their spend cap, or force a public directory listing. Denylisted
146
+ # prefixes for non-owner-session principals on POST/PUT /v1/memory (mirrors the ecosystem path's
147
+ # ecoMayWriteKey — see DNA invariant #2):
148
+ # openrouter.* → AI provider config incl. the baseUrl the decrypted key is sent to
149
+ # ai-usage.* → the daily AI-spend ledger that enforces the budget cap
150
+ # profile.* → public directory-listing flag + matchmaking inputs
151
+ # (Enforcement of this guard and the three posture knobs above lands in config.ts + the memory
152
+ # write path together with the security fixes; documented here as the config/security surface.)
153
+
107
154
  # ── Auth & Tokens ──────────────────────────────────────────────
108
155
  # AIMEAT_JWT_TTL=3600 # Legacy / agent JWT lifetime in seconds (default: 1h)
109
156
  # Owner sessions: short access token + rotating httpOnly refresh cookie (no key re-signing).