@agent-native/core 0.7.15 → 0.7.17

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 (184) hide show
  1. package/dist/a2a/server.d.ts.map +1 -1
  2. package/dist/a2a/server.js +20 -6
  3. package/dist/a2a/server.js.map +1 -1
  4. package/dist/action.d.ts +16 -0
  5. package/dist/action.d.ts.map +1 -1
  6. package/dist/action.js +11 -0
  7. package/dist/action.js.map +1 -1
  8. package/dist/agent/production-agent.d.ts +10 -7
  9. package/dist/agent/production-agent.d.ts.map +1 -1
  10. package/dist/agent/production-agent.js +7 -38
  11. package/dist/agent/production-agent.js.map +1 -1
  12. package/dist/agent/run-manager.d.ts.map +1 -1
  13. package/dist/agent/run-manager.js +0 -3
  14. package/dist/agent/run-manager.js.map +1 -1
  15. package/dist/agent/types.d.ts +0 -4
  16. package/dist/agent/types.d.ts.map +1 -1
  17. package/dist/cli/create.d.ts +3 -1
  18. package/dist/cli/create.d.ts.map +1 -1
  19. package/dist/cli/create.js +32 -8
  20. package/dist/cli/create.js.map +1 -1
  21. package/dist/client/AgentPanel.d.ts.map +1 -1
  22. package/dist/client/AgentPanel.js +6 -5
  23. package/dist/client/AgentPanel.js.map +1 -1
  24. package/dist/client/AssistantChat.d.ts +0 -6
  25. package/dist/client/AssistantChat.d.ts.map +1 -1
  26. package/dist/client/AssistantChat.js +22 -87
  27. package/dist/client/AssistantChat.js.map +1 -1
  28. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  29. package/dist/client/MultiTabAssistantChat.js +4 -3
  30. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  31. package/dist/client/agent-chat-adapter.js +2 -2
  32. package/dist/client/agent-chat-adapter.js.map +1 -1
  33. package/dist/client/agent-chat.js +3 -3
  34. package/dist/client/agent-chat.js.map +1 -1
  35. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  36. package/dist/client/composer/TiptapComposer.js +8 -1
  37. package/dist/client/composer/TiptapComposer.js.map +1 -1
  38. package/dist/client/frame-protocol.d.ts +61 -10
  39. package/dist/client/frame-protocol.d.ts.map +1 -1
  40. package/dist/client/frame.js +6 -6
  41. package/dist/client/frame.js.map +1 -1
  42. package/dist/client/index.d.ts +1 -1
  43. package/dist/client/index.d.ts.map +1 -1
  44. package/dist/client/index.js +1 -1
  45. package/dist/client/index.js.map +1 -1
  46. package/dist/client/sse-event-processor.d.ts +1 -3
  47. package/dist/client/sse-event-processor.d.ts.map +1 -1
  48. package/dist/client/sse-event-processor.js +3 -24
  49. package/dist/client/sse-event-processor.js.map +1 -1
  50. package/dist/client/terminal/AgentTerminal.js +2 -2
  51. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  52. package/dist/client/tools/EmbeddedTool.d.ts.map +1 -1
  53. package/dist/client/tools/EmbeddedTool.js +42 -1
  54. package/dist/client/tools/EmbeddedTool.js.map +1 -1
  55. package/dist/client/tools/ToolViewer.d.ts.map +1 -1
  56. package/dist/client/tools/ToolViewer.js +67 -2
  57. package/dist/client/tools/ToolViewer.js.map +1 -1
  58. package/dist/client/tools/iframe-bridge.d.ts +22 -0
  59. package/dist/client/tools/iframe-bridge.d.ts.map +1 -1
  60. package/dist/client/tools/iframe-bridge.js +89 -0
  61. package/dist/client/tools/iframe-bridge.js.map +1 -1
  62. package/dist/client/use-agent-chat.js +2 -2
  63. package/dist/client/use-agent-chat.js.map +1 -1
  64. package/dist/client/use-send-to-agent-chat.js +2 -2
  65. package/dist/client/use-send-to-agent-chat.js.map +1 -1
  66. package/dist/client/useProductionAgent.js +2 -2
  67. package/dist/client/useProductionAgent.js.map +1 -1
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/integrations/adapters/slack.d.ts +13 -0
  73. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  74. package/dist/integrations/adapters/slack.js +116 -4
  75. package/dist/integrations/adapters/slack.js.map +1 -1
  76. package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
  77. package/dist/integrations/pending-tasks-retry-job.js +5 -2
  78. package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
  79. package/dist/integrations/pending-tasks-store.js +2 -2
  80. package/dist/integrations/pending-tasks-store.js.map +1 -1
  81. package/dist/observability/cleanup-job.d.ts +38 -0
  82. package/dist/observability/cleanup-job.d.ts.map +1 -0
  83. package/dist/observability/cleanup-job.js +107 -0
  84. package/dist/observability/cleanup-job.js.map +1 -0
  85. package/dist/observability/index.d.ts +2 -1
  86. package/dist/observability/index.d.ts.map +1 -1
  87. package/dist/observability/index.js +2 -1
  88. package/dist/observability/index.js.map +1 -1
  89. package/dist/observability/plugin.d.ts.map +1 -1
  90. package/dist/observability/plugin.js +11 -0
  91. package/dist/observability/plugin.js.map +1 -1
  92. package/dist/observability/store.d.ts +16 -0
  93. package/dist/observability/store.d.ts.map +1 -1
  94. package/dist/observability/store.js +35 -0
  95. package/dist/observability/store.js.map +1 -1
  96. package/dist/observability/traces.d.ts +5 -0
  97. package/dist/observability/traces.d.ts.map +1 -1
  98. package/dist/observability/traces.js +44 -1
  99. package/dist/observability/traces.js.map +1 -1
  100. package/dist/scripts/db/exec.d.ts.map +1 -1
  101. package/dist/scripts/db/exec.js +149 -2
  102. package/dist/scripts/db/exec.js.map +1 -1
  103. package/dist/scripts/db/query.d.ts.map +1 -1
  104. package/dist/scripts/db/query.js +84 -3
  105. package/dist/scripts/db/query.js.map +1 -1
  106. package/dist/scripts/db/scoping.d.ts.map +1 -1
  107. package/dist/scripts/db/scoping.js +20 -1
  108. package/dist/scripts/db/scoping.js.map +1 -1
  109. package/dist/server/action-discovery.d.ts.map +1 -1
  110. package/dist/server/action-discovery.js +12 -8
  111. package/dist/server/action-discovery.js.map +1 -1
  112. package/dist/server/action-routes.d.ts.map +1 -1
  113. package/dist/server/action-routes.js +20 -1
  114. package/dist/server/action-routes.js.map +1 -1
  115. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  116. package/dist/server/agent-chat-plugin.js +5 -6
  117. package/dist/server/agent-chat-plugin.js.map +1 -1
  118. package/dist/server/app-url.d.ts +4 -1
  119. package/dist/server/app-url.d.ts.map +1 -1
  120. package/dist/server/app-url.js +16 -1
  121. package/dist/server/app-url.js.map +1 -1
  122. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  123. package/dist/server/core-routes-plugin.js +32 -24
  124. package/dist/server/core-routes-plugin.js.map +1 -1
  125. package/dist/server/index.d.ts +1 -0
  126. package/dist/server/index.d.ts.map +1 -1
  127. package/dist/server/index.js +1 -0
  128. package/dist/server/index.js.map +1 -1
  129. package/dist/server/short-lived-token.d.ts +62 -0
  130. package/dist/server/short-lived-token.d.ts.map +1 -0
  131. package/dist/server/short-lived-token.js +118 -0
  132. package/dist/server/short-lived-token.js.map +1 -0
  133. package/dist/shared/agent-chat.js +1 -1
  134. package/dist/shared/agent-chat.js.map +1 -1
  135. package/dist/shared/agent-env.js +1 -1
  136. package/dist/shared/agent-env.js.map +1 -1
  137. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  138. package/dist/sharing/actions/set-resource-visibility.js +3 -0
  139. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  140. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  141. package/dist/sharing/actions/share-resource.js +5 -0
  142. package/dist/sharing/actions/share-resource.js.map +1 -1
  143. package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
  144. package/dist/sharing/actions/unshare-resource.js +2 -0
  145. package/dist/sharing/actions/unshare-resource.js.map +1 -1
  146. package/dist/templates/default/package.json +1 -1
  147. package/dist/templates/default/public/favicon.svg +1 -1
  148. package/dist/templates/default/public/icon-180.svg +1 -1
  149. package/dist/templates/default/public/icon-192.svg +1 -1
  150. package/dist/templates/default/public/icon-512.svg +1 -1
  151. package/dist/templates/workspace-core/package.json +1 -1
  152. package/dist/terminal/pty-server.js +1 -1
  153. package/dist/terminal/pty-server.js.map +1 -1
  154. package/dist/tools/html-shell.d.ts +1 -0
  155. package/dist/tools/html-shell.d.ts.map +1 -1
  156. package/dist/tools/html-shell.js +18 -1
  157. package/dist/tools/html-shell.js.map +1 -1
  158. package/dist/tools/routes.js +2 -4
  159. package/dist/tools/routes.js.map +1 -1
  160. package/dist/tools/schema.d.ts +86 -0
  161. package/dist/tools/schema.d.ts.map +1 -1
  162. package/dist/tools/schema.js +31 -0
  163. package/dist/tools/schema.js.map +1 -1
  164. package/dist/tools/store.d.ts.map +1 -1
  165. package/dist/tools/store.js +8 -1
  166. package/dist/tools/store.js.map +1 -1
  167. package/dist/usage/store.d.ts +0 -11
  168. package/dist/usage/store.d.ts.map +1 -1
  169. package/dist/usage/store.js +0 -11
  170. package/dist/usage/store.js.map +1 -1
  171. package/docs/content/actions.md +32 -0
  172. package/docs/content/authentication.md +12 -0
  173. package/docs/content/cloneable-saas.md +13 -15
  174. package/docs/content/deployment.md +84 -9
  175. package/docs/content/faq.md +4 -1
  176. package/docs/content/getting-started.md +2 -0
  177. package/docs/content/security.md +59 -8
  178. package/package.json +3 -3
  179. package/src/templates/default/package.json +1 -1
  180. package/src/templates/default/public/favicon.svg +1 -1
  181. package/src/templates/default/public/icon-180.svg +1 -1
  182. package/src/templates/default/public/icon-192.svg +1 -1
  183. package/src/templates/default/public/icon-512.svg +1 -1
  184. package/src/templates/workspace-core/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"AAWA,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAqC7C,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA2DD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,eAAe,SAAI,EACnB,gBAAgB,SAAI,GACnB,MAAM,CAUR;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAAC;AA+DjB,qEAAqE;AACrE,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS3E;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAC7D,CAQA;AAID,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAoHvB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA2DD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,eAAe,SAAI,EACnB,gBAAgB,SAAI,GACnB,MAAM,CAUR;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAAC;AA+DjB,qEAAqE;AACrE,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS3E;AAID,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAoHvB"}
@@ -8,8 +8,6 @@
8
8
  * Cost is stored as "centicents" (1/100th of a cent) for integer precision.
9
9
  */
10
10
  import { getDbExec, intType, isPostgres } from "../db/client.js";
11
- /** Default usage limit per user in cents ($1.00) for hosted prod mode */
12
- export const DEFAULT_USAGE_LIMIT_CENTS = 100;
13
11
  const PRICING = [
14
12
  {
15
13
  match: /opus/i,
@@ -144,15 +142,6 @@ export async function getUserUsageCents(ownerEmail) {
144
142
  const total = Number(rows[0]?.total ?? 0);
145
143
  return total / 100;
146
144
  }
147
- export async function checkUsageLimit(ownerEmail, limitCents) {
148
- const limit = limitCents ?? DEFAULT_USAGE_LIMIT_CENTS;
149
- const usageCents = await getUserUsageCents(ownerEmail);
150
- return {
151
- allowed: usageCents < limit,
152
- usageCents,
153
- limitCents: limit,
154
- };
155
- }
156
145
  const DAY_MS = 86_400_000;
157
146
  /**
158
147
  * Produce an aggregated spend view for the Usage admin panel.
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,38 @@ export default defineAction({
68
68
  - **`http: false`** — disable the HTTP endpoint entirely. Agent + CLI only.
69
69
  - **`readOnly: true`** — explicitly skip the poll-refresh even for POST actions that don't mutate.
70
70
 
71
+ ### Tools callability {#tool-callable}
72
+
73
+ Tools (Alpine.js mini-apps that run inside sandboxed iframes — see [Tools](/docs/tools)) call actions via `appAction(name, params)`. Because a shared tool's HTML/JS executes inside the _viewer's_ session, an action invoked from a tool runs with the viewer's permissions, secrets, and SQL scope. For high-blast-radius operations, that is too much trust to grant by default.
74
+
75
+ Use the `toolCallable` flag to control this:
76
+
77
+ ```ts
78
+ export default defineAction({
79
+ description: "Delete the current user's account.",
80
+ toolCallable: false, // never callable from a tool iframe
81
+ schema: z.object({ confirm: z.literal("yes") }),
82
+ run: async () => {
83
+ /* ... */
84
+ },
85
+ });
86
+ ```
87
+
88
+ | Value | Behavior |
89
+ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90
+ | `true` | Allow (same as undefined). Useful for documentation of intent. |
91
+ | `false` | Explicit deny. The tools bridge returns 403; the action is still callable normally from the UI, agent, CLI, MCP, and A2A. |
92
+ | `undefined` | **Default-allow.** Tools are intra-org and typically authored by trusted teammates, so the default trusts the org-level access controls. Set `false` only for genuinely auth-adjacent operations (account deletion, org membership changes). |
93
+
94
+ Enforcement: the parent host (`ToolViewer.tsx` / `EmbeddedTool.tsx`) tags every outbound action call from a tool iframe with the header `X-Agent-Native-Tool-Bridge: 1`. The action route layer reads this header and applies the rule above. Regular UI/agent/CLI/A2A calls do not carry the header and are unaffected. The header is set by the React host; the iframe's user-authored content cannot spoof it because the bridge sanitizes iframe-supplied headers.
95
+
96
+ Set `toolCallable: false` for actions that:
97
+
98
+ - delete or transfer ownership of any account/org,
99
+ - change auth state (sign-out-all sessions, rotate tokens),
100
+ - modify org membership (invite/remove members, change roles),
101
+ - change resource visibility or grant share access (the framework's built-in `share-resource`, `unshare-resource`, and `set-resource-visibility` are already opted out).
102
+
71
103
  ## Calling it from the UI {#ui}
72
104
 
73
105
  Two hooks, both in `@agent-native/core/client`. Types are inferred from your `defineAction` schemas — no manual type declarations.
@@ -82,6 +82,18 @@ GITHUB_CLIENT_SECRET=your-client-secret
82
82
 
83
83
  Templates that use `createGoogleAuthPlugin()` show a "Sign in with Google" page. The Google OAuth callback handles mobile deep linking for native apps automatically.
84
84
 
85
+ ### OAuth State Signing {#oauth-state-secret}
86
+
87
+ OAuth state envelopes (Google, Atlassian, Zoom) are HMAC-signed with `OAUTH_STATE_SECRET`. Set this to a random 32+ char value in production:
88
+
89
+ ```bash
90
+ OAUTH_STATE_SECRET=$(openssl rand -hex 32)
91
+ ```
92
+
93
+ If unset, the framework falls back to `BETTER_AUTH_SECRET`. A dedicated `OAUTH_STATE_SECRET` is recommended so rotating one secret doesn't invalidate the other. Reusing a third-party client secret (e.g. `GOOGLE_CLIENT_SECRET`) for OAuth state signing is **not** supported — a leak of the third-party secret would let attackers forge state envelopes.
94
+
95
+ `redirect_uri` query parameters on framework OAuth endpoints are validated against an allowlist (same-origin + framework `/_agent-native/...` paths). Custom OAuth flows in templates should use `isAllowedOAuthRedirectUri(candidate, event)` from `@agent-native/core/server` before signing state.
96
+
85
97
  ## Organizations {#organizations}
86
98
 
87
99
  Better Auth's organization plugin is built into the framework. Every app supports:
@@ -15,21 +15,19 @@ We call them **cloneable SaaS**, not templates. You're not starting from scratch
15
15
 
16
16
  Each one is a real app you could use today, and the launching pad for your own version of it.
17
17
 
18
- | Template | What it is |
19
- | -------------- | --------------------------------------------------------------------------------------------------------- |
20
- | **Mail** | An agent-native Superhuman. Inbox, labels, AI triage, keyboard-first, drafts and sends through the agent. |
21
- | **Calendar** | An agent-native Google Calendar. Events, sync, public booking links, agent-driven scheduling. |
22
- | **Content** | An agent-native Notion / Google Docs. Markdown + Tiptap editor, Notion sync, real-time multi-user collab. |
23
- | **Slides** | An agent-native Google Slides. React-based decks the agent generates and edits directly. |
24
- | **Video** | An agent-native video editor on Remotion. Prompt for a cut, the agent assembles it. |
25
- | **Analytics** | An agent-native Amplitude/Mixpanel. Connect data sources, prompt for charts, pin to dashboards. |
26
- | **Forms** | An agent-native Typeform. Build, share, and collect; the agent handles schema and submission analysis. |
27
- | **Issues** | An agent-native Jira. Projects, issues, priorities, with the agent as your project manager. |
28
- | **Recruiting** | An agent-native Greenhouse. Candidate pipelines, scoring, outreach drafts. |
29
- | **Dispatch** | The workspace control plane: shared secrets, cross-app integrations, Slack/Telegram, scheduled jobs. |
30
- | **Starter** | The minimal scaffold. Agent chat plus the architecture, nothing else. Build something new. |
31
-
32
- More are in active development: **Clips** (screen recording + transcription), **Calls** (Gong-style conversation intelligence), and **Scheduling** (a standalone scheduling app).
18
+ | Template | What it is |
19
+ | ------------- | --------------------------------------------------------------------------------------------------------- |
20
+ | **Mail** | An agent-native Superhuman. Inbox, labels, AI triage, keyboard-first, drafts and sends through the agent. |
21
+ | **Calendar** | An agent-native Google Calendar. Events, sync, public booking links, agent-driven scheduling. |
22
+ | **Content** | An agent-native Notion / Google Docs. Markdown + Tiptap editor, Notion sync, real-time multi-user collab. |
23
+ | **Slides** | An agent-native Google Slides. React-based decks the agent generates and edits directly. |
24
+ | **Video** | An agent-native video editor on Remotion. Prompt for a cut, the agent assembles it. |
25
+ | **Analytics** | An agent-native Amplitude/Mixpanel. Connect data sources, prompt for charts, pin to dashboards. |
26
+ | **Clips** | An agent-native Loom. Async screen + camera recording with transcription, chapters, AI summaries. |
27
+ | **Design** | An agent-native Figma/Canva. Vector design tool the agent can edit alongside you. |
28
+ | **Forms** | An agent-native Typeform. Build, share, and collect; the agent handles schema and submission analysis. |
29
+ | **Dispatch** | The workspace control plane: shared secrets, cross-app integrations, Slack/Telegram, scheduled jobs. |
30
+ | **Starter** | The minimal scaffold. Agent chat plus the architecture, nothing else. Build something new. |
33
31
 
34
32
  See the full catalog under [Templates](/templates), or jump straight to one — for example, [Dispatch](/docs/template-dispatch) is a great place to start if you want a workspace-style app.
35
33
 
@@ -156,15 +156,90 @@ export default defineConfig({
156
156
 
157
157
  ## Environment Variables {#environment-variables}
158
158
 
159
- | Variable | Description |
160
- | ------------------- | -------------------------------------------------------------------------------------------------------------------- |
161
- | `PORT` | Server port (Node.js only) |
162
- | `NITRO_PRESET` | Override build preset at build time |
163
- | `ACCESS_TOKEN` | Enable auth gating for production mode |
164
- | `ANTHROPIC_API_KEY` | API key for embedded production agent |
165
- | `APP_BASE_PATH` | Mount the app under a prefix (e.g. `/mail`). Set automatically by `agent-native deploy`; leave unset for standalone. |
166
-
167
- Inside a workspace, the root `.env` is loaded into every app automatically, so shared keys like `ANTHROPIC_API_KEY` and `A2A_SECRET` only need to be set once. Per-app `apps/<name>/.env` wins on conflict.
159
+ ### Build / Runtime {#env-runtime}
160
+
161
+ | Variable | Description |
162
+ | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
163
+ | `PORT` | Server port (Node.js only) |
164
+ | `NITRO_PRESET` | Override build preset at build time |
165
+ | `APP_BASE_PATH` | Mount the app under a prefix (e.g. `/mail`). Set automatically by `agent-native deploy`; leave unset for standalone. |
166
+ | `DATABASE_URL` | Postgres / Turso / SQLite connection string. Required in production. |
167
+ | `DATABASE_AUTH_TOKEN` | Auth token for Turso / libsql connections. |
168
+
169
+ ### Required in Production {#env-required-prod}
170
+
171
+ These must be set before promoting an app to a real prod deploy. Missing values either fail-closed (the framework refuses to start / refuses to handle requests) or fall back to weaker behavior with a loud warning.
172
+
173
+ | Variable | Description |
174
+ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
175
+ | `BETTER_AUTH_SECRET` | 32+ char random string. Signs session cookies AND is the fallback HMAC for `OAUTH_STATE_SECRET` and `SECRETS_ENCRYPTION_KEY`. Hard-required: the framework throws on startup if missing in production. |
176
+ | `BETTER_AUTH_URL` | Public origin of this app (e.g. `https://mail.example.com`). Used for cookie domain and OAuth redirect construction. |
177
+ | `ANTHROPIC_API_KEY` | API key for the embedded production agent. **In multi-tenant deploys**, the framework refuses to fall back to this when the user has no per-user key — bring-your-own-key is required. Single-tenant self-hosted installs use it as a global key. |
178
+ | `OAUTH_STATE_SECRET` | Dedicated HMAC key for OAuth state envelopes (Google, Atlassian, Zoom). Falls back to `BETTER_AUTH_SECRET` when unset, but a dedicated value is recommended so rotating one doesn't invalidate the other. Generate via `openssl rand -hex 32`. |
179
+ | `A2A_SECRET` | Shared HMAC for inter-app A2A JSON-RPC. Without it, every A2A endpoint and the `/_agent-native/integrations/process-task` self-fire endpoint return 503 in production. |
180
+ | `SECRETS_ENCRYPTION_KEY` | AES-256-GCM key for the encrypted-at-rest secrets vault. Falls back to `BETTER_AUTH_SECRET`. Hard-fails in production when both are unset. |
181
+
182
+ ### Auth & Identity {#env-auth}
183
+
184
+ | Variable | Description |
185
+ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
186
+ | `ACCESS_TOKEN` | Single shared token for simple production deploys (alternative to Better Auth). |
187
+ | `ACCESS_TOKENS` | Comma-separated list of access tokens. |
188
+ | `AUTH_MODE` | `local` skips auth entirely (`local@localhost` identity). For dev/single-tenant only; never set in real prod. |
189
+ | `AUTH_SKIP_EMAIL_VERIFICATION` | Skip email verification for QA accounts. **Disables a real security control** — only use on hosted QA environments. |
190
+ | `GOOGLE_CLIENT_ID` | Google OAuth client ID. Auto-enables "Sign in with Google" in Better Auth. |
191
+ | `GOOGLE_CLIENT_SECRET` | Google OAuth client secret. |
192
+ | `GITHUB_CLIENT_ID` | GitHub OAuth client ID. |
193
+ | `GITHUB_CLIENT_SECRET` | GitHub OAuth client secret. |
194
+
195
+ ### Inbound Webhooks {#env-webhooks}
196
+
197
+ Inbound webhook handlers refuse forged requests when their signing secret is missing in production (was previously fail-open with a warning — see CHANGELOG / [security audit fixes](#security-config)).
198
+
199
+ | Variable | Required when |
200
+ | ------------------------------- | -------------------------------------------------------------------------------------------------------------- |
201
+ | `EMAIL_INBOUND_WEBHOOK_SECRET` | Inbound email integration is enabled. Verifies Resend / SendGrid / Svix signatures. |
202
+ | `TELEGRAM_WEBHOOK_SECRET` | Telegram bot integration is enabled. |
203
+ | `WHATSAPP_APP_SECRET` | WhatsApp Business integration is enabled. |
204
+ | `WHATSAPP_VERIFY_TOKEN` | WhatsApp webhook verification handshake (set in your Meta app dashboard too). |
205
+ | `SLACK_SIGNING_SECRET` | Slack integration is enabled. Verifies Slack request signatures. |
206
+ | `RECALL_WEBHOOK_SECRET` | Calls / Recall.ai integration is enabled. |
207
+ | `DEEPGRAM_WEBHOOK_SECRET` | Calls / Deepgram transcription webhook is enabled. |
208
+ | `ZOOM_WEBHOOK_SECRET` | Calls / Zoom integration is enabled. |
209
+ | `GOOGLE_DOCS_PUSH_AUDIENCE` | Google Docs Pub/Sub push integration is enabled. Set to the public URL of your push endpoint. |
210
+ | `GOOGLE_DOCS_PUSH_SIGNER_EMAIL` | Google Docs Pub/Sub push integration is enabled. Set to the Pub/Sub service account email. |
211
+ | `GMAIL_WATCH_TOPIC` | Gmail Pub/Sub push (mail template). Optional — disables push if unset and falls back to history-delta polling. |
212
+ | `GMAIL_PUSH_AUDIENCE` | Gmail Pub/Sub push audience. |
213
+ | `GMAIL_PUSH_SIGNER_EMAIL` | Gmail Pub/Sub push signer email. |
214
+
215
+ For local development of any of these integrations, set `AGENT_NATIVE_ALLOW_UNVERIFIED_WEBHOOKS=1` to opt back into the old "warn and accept" behavior — never set this in prod.
216
+
217
+ ### Security Configuration (Opt-in) {#security-config}
218
+
219
+ Defaults are strict; these flags relax behavior. Don't set them unless you specifically want the relaxed path.
220
+
221
+ | Variable | Effect |
222
+ | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
223
+ | `AGENT_NATIVE_DEBUG_ERRORS` | `=1` to include stack traces in 500 JSON responses. Useful on previews; do **not** set in real prod (was previously gated by `NODE_ENV !== "production"`, which leaked stacks on misconfigured deploys). |
224
+ | `AGENT_NATIVE_ALLOW_UNVERIFIED_WEBHOOKS` | `=1` to accept webhooks without their signing secret (local dev only). Defaults to fail-closed in production. |
225
+ | `AGENT_NATIVE_KEYS_WORKSPACE_FALLBACK` | `=1` to let `${keys.NAME}` resolution in tools/automations fall through user-scope → workspace-scope. Default off (user-scope only) — a malicious org member could otherwise plant a workspace `OPENAI_API_KEY` and harvest other members' calls. Turn on only if your org genuinely shares workspace-wide keys. |
226
+ | `AGENT_NATIVE_MCP_HUB_MULTI_ORG` | `=1` to allow `AGENT_NATIVE_MCP_HUB_TOKEN` to serve multiple orgs from a single hub deployment. Default refuses to serve when more than one org exists in a hub deploy. Only relevant if you operate the workspace MCP hub. |
227
+ | `AGENT_NATIVE_ALLOW_ENV_VAR_WRITES` | `=1` to let runtime code mutate `process.env` from the env-var write API. Off by default — required to be explicitly enabled outside dev SQLite. |
228
+ | `AUTH_SKIP_EMAIL_VERIFICATION` | `=1` to skip email verification for password signups. QA-only — see Auth section above. |
229
+
230
+ ### Workspace .env Inheritance {#env-inheritance}
231
+
232
+ Inside a workspace, the root `.env` is loaded into every app automatically, so shared keys like `ANTHROPIC_API_KEY`, `A2A_SECRET`, `BETTER_AUTH_SECRET`, and `OAUTH_STATE_SECRET` only need to be set once. Per-app `apps/<name>/.env` wins on conflict.
233
+
234
+ ### Generating Strong Secrets {#env-generate-secrets}
235
+
236
+ For any secret marked "32+ char random" (`BETTER_AUTH_SECRET`, `OAUTH_STATE_SECRET`, `A2A_SECRET`, `SECRETS_ENCRYPTION_KEY`), generate fresh values with:
237
+
238
+ ```bash
239
+ openssl rand -hex 32
240
+ ```
241
+
242
+ Rotate them by replacing the env var on every instance and redeploying — sessions / OAuth state envelopes signed under the old key become invalid, so users may need to sign in again.
168
243
 
169
244
  ## Updating UI in Production {#updating-ui-in-production}
170
245
 
@@ -66,7 +66,10 @@ The framework ships with production-ready templates you can use as daily drivers
66
66
  - **[Slides](/templates/slides)** — presentation builder
67
67
  - **[Video](/templates/video)** — video composition with Remotion
68
68
  - **[Analytics](/templates/analytics)** — data platform (like Amplitude/Mixpanel)
69
- - **[Forms](/templates/forms)**, **[Issues](/templates/issues)**, **[Recruiting](/templates/recruiting)**, and the **[Dispatch](/docs/template-dispatch)** workspace control plane.
69
+ - **[Clips](/templates/clips)** async screen + camera recording (replaces Loom)
70
+ - **[Design](/templates/design)** — agent-native design tool (like Figma/Canva)
71
+ - **[Forms](/templates/forms)** — form builder (like Typeform)
72
+ - **[Dispatch](/templates/dispatch)** — workspace control plane: shared secrets, integrations, jobs
70
73
 
71
74
  Each template is a complete app with UI, agent actions, database schema, and AI instructions. See [Cloneable SaaS](/docs/cloneable-saas) for the full picture, or all [Templates](/templates).
72
75
 
@@ -63,6 +63,8 @@ Each template is a complete app with UI, agent actions, database schema, and AI
63
63
  | [Slides](/templates/slides) | Google Slides, Pitch |
64
64
  | [Video](/templates/video) | video editing |
65
65
  | [Analytics](/templates/analytics) | Amplitude, Mixpanel, Looker |
66
+ | [Clips](/templates/clips) | Replaces Loom — screen + camera recording |
67
+ | [Design](/templates/design) | Figma, Canva |
66
68
  | [Forms](/docs/template-forms) | Typeform |
67
69
  | [Dispatch](/docs/template-dispatch) | Workspace control plane — secrets, routing, jobs |
68
70
  | [Starter](/docs/template-starter) | Minimal scaffold — build from scratch |
@@ -138,21 +138,72 @@ A2A_SECRET=your-shared-secret-at-least-32-chars
138
138
 
139
139
  1. App A signs a JWT containing `sub: "steve@example.com"`
140
140
  2. App B verifies the JWT signature with the same secret
141
- 3. App B sets `AGENT_USER_EMAIL` from the verified `sub` claim
141
+ 3. App B reads the verified `sub` claim into request context
142
142
  4. Data scoping applies — App B only shows Steve's data
143
143
 
144
- Without `A2A_SECRET`, A2A calls are unauthenticated (fine for local dev, not production).
144
+ Without `A2A_SECRET` in production, every A2A endpoint and the `/_agent-native/integrations/process-task` self-fire endpoint return **503**. Set it on every app that calls or receives A2A traffic. (For local development the framework still allows unauthenticated calls.)
145
+
146
+ ## Inbound Webhooks {#webhooks}
147
+
148
+ Inbound webhook handlers (Resend, SendGrid, Slack, Telegram, WhatsApp, Recall.ai, Deepgram, Zoom, Google Docs Pub/Sub) refuse forged requests by default in production: when the corresponding signing secret env var is missing, the handler returns 401 instead of accepting and dispatching.
149
+
150
+ This was previously a "warn and accept" stance — set the secret you'd otherwise be missing, or opt back into the old behavior with `AGENT_NATIVE_ALLOW_UNVERIFIED_WEBHOOKS=1` for local dev only. See [deployment.md → Inbound Webhooks](/docs/deployment#env-webhooks) for the full env-var list.
151
+
152
+ ## OAuth State Signing {#oauth-state}
153
+
154
+ OAuth flows (Google, Atlassian, Zoom) sign their state envelope with a dedicated HMAC key:
155
+
156
+ ```bash
157
+ OAUTH_STATE_SECRET=$(openssl rand -hex 32)
158
+ ```
159
+
160
+ This used to fall back to `GOOGLE_CLIENT_SECRET` (a credential shared with Google) — a leak of the Google secret would have let attackers forge OAuth state envelopes. The dedicated key is independent of any third-party secret. If `OAUTH_STATE_SECRET` is unset, the framework falls back to `BETTER_AUTH_SECRET`; if both are unset, the OAuth flows fail in production.
161
+
162
+ `redirect_uri` query parameters are also validated against an allowlist (same-origin + framework `/_agent-native/...` paths). Custom OAuth flows in templates should use the framework's `isAllowedOAuthRedirectUri()` helper before signing state.
163
+
164
+ ## Cross-User Tooling Secrets {#tooling-secrets}
165
+
166
+ Tools and automations that reference `${keys.NAME}` resolve secrets per-user by default. Workspace-scope fallback is **off by default** in this version — a malicious org member could otherwise plant a workspace `OPENAI_API_KEY` and harvest other members' API calls.
167
+
168
+ If your org genuinely shares workspace-wide keys (e.g. a single corporate Stripe key), opt back into the old behavior with:
169
+
170
+ ```bash
171
+ AGENT_NATIVE_KEYS_WORKSPACE_FALLBACK=1
172
+ ```
173
+
174
+ Workspace-scope secret writes still require org owner/admin role regardless of this flag.
145
175
 
146
176
  ## Production Checklist {#production-checklist}
147
177
 
178
+ ### Auth & secrets
179
+
180
+ - [ ] `BETTER_AUTH_SECRET` set to a random 32+ char string (`openssl rand -hex 32`)
181
+ - [ ] `OAUTH_STATE_SECRET` set to a separate random 32+ char string (don't reuse `BETTER_AUTH_SECRET`)
182
+ - [ ] `A2A_SECRET` set on every app that calls or receives A2A traffic
183
+ - [ ] `SECRETS_ENCRYPTION_KEY` set (or rely on the `BETTER_AUTH_SECRET` fallback)
184
+ - [ ] `AUTH_MODE` is **not** set to `local`
185
+ - [ ] `AUTH_SKIP_EMAIL_VERIFICATION` is **not** set (or set only on QA preview deploys)
186
+
187
+ ### Webhook secrets (set the ones for integrations you use)
188
+
189
+ - [ ] `EMAIL_INBOUND_WEBHOOK_SECRET` if Resend / SendGrid inbound is enabled
190
+ - [ ] `SLACK_SIGNING_SECRET` if Slack is enabled
191
+ - [ ] `TELEGRAM_WEBHOOK_SECRET` / `WHATSAPP_APP_SECRET` for those integrations
192
+ - [ ] `RECALL_WEBHOOK_SECRET`, `DEEPGRAM_WEBHOOK_SECRET`, `ZOOM_WEBHOOK_SECRET` for calls
193
+ - [ ] `AGENT_NATIVE_ALLOW_UNVERIFIED_WEBHOOKS` is **not** set in prod
194
+
195
+ ### Schema
196
+
148
197
  - [ ] Every user-facing table has `owner_email`
149
198
  - [ ] Multi-user tables also have `org_id`
150
199
  - [ ] All actions use `defineAction` with Zod `schema:`
151
- - [ ] No `dangerouslySetInnerHTML` with user content
200
+ - [ ] No `dangerouslySetInnerHTML` with user content (or output is run through DOMPurify)
152
201
  - [ ] No string-concatenated SQL
153
- - [ ] API keys are in `.env` only (not in source code or settings)
154
- - [ ] `BETTER_AUTH_SECRET` is set to a random 32+ character string
155
- - [ ] `A2A_SECRET` is set on all apps that call each other
156
- - [ ] `AUTH_MODE` is **not** set to `local`
157
- - [ ] `pnpm action db-check-scoping` passes
202
+ - [ ] `pnpm guards` is clean (`guard-no-unscoped-queries`, `guard-no-env-credentials`, `guard-no-env-mutation`, `guard-no-localhost-fallback`, `guard-no-unscoped-credentials`, `guard-no-drizzle-push`)
158
203
  - [ ] Tested with two user accounts to verify data isolation
204
+
205
+ ### Misc hardening
206
+
207
+ - [ ] `AGENT_NATIVE_DEBUG_ERRORS` is **not** set in real prod (only on debug previews)
208
+ - [ ] `AGENT_NATIVE_KEYS_WORKSPACE_FALLBACK` is **not** set unless your org actually shares workspace keys
209
+ - [ ] In multi-tenant deployments, **users bring their own `ANTHROPIC_API_KEY`** — the framework refuses to fall back to the deploy-level env var
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.7.15",
3
+ "version": "0.7.17",
4
4
  "type": "module",
5
5
  "description": "Framework for agent-native application development — where AI agents and UI share state via files",
6
6
  "license": "MIT",
@@ -97,6 +97,8 @@
97
97
  "dependencies": {
98
98
  "@amplitude/analytics-browser": "^2.41.1",
99
99
  "@anthropic-ai/sdk": "^0.90.0",
100
+ "@assistant-ui/react": "^0.12.19",
101
+ "@assistant-ui/react-markdown": "^0.12.6",
100
102
  "@clack/prompts": "^1.2.0",
101
103
  "@libsql/client": "^0.15.0",
102
104
  "@modelcontextprotocol/sdk": "^1.29.0",
@@ -150,8 +152,6 @@
150
152
  "@ai-sdk/groq": ">=3",
151
153
  "@ai-sdk/mistral": ">=3",
152
154
  "@ai-sdk/openai": ">=3",
153
- "@assistant-ui/react": ">=0.12",
154
- "@assistant-ui/react-markdown": ">=0.12",
155
155
  "@openrouter/ai-sdk-provider": ">=2",
156
156
  "@supabase/supabase-js": ">=2",
157
157
  "@tabler/icons-react": ">=3",
@@ -11,7 +11,7 @@
11
11
  "script": "agent-native script"
12
12
  },
13
13
  "dependencies": {
14
- "@agent-native/core": "^0.6.0",
14
+ "@agent-native/core": "latest",
15
15
  "@assistant-ui/react": "^0.12.19",
16
16
  "@assistant-ui/react-markdown": "^0.12.6",
17
17
  "@tabler/icons-react": "^3.40.0",
@@ -1,6 +1,6 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" fill="none">
2
2
  <rect x="100" y="100" width="824" height="824" rx="185" fill="#000000"/>
3
- <g transform="translate(170 314) scale(6)">
3
+ <g transform="translate(198.5 330.5) scale(5.5)">
4
4
  <path d="M24.5537 65.7695H0L15.0859 39.4619L37.708 0L60.4912 39.4619H39.6396L24.5537 65.7695Z" fill="white"/>
5
5
  <path d="M89.446 0H114L76.2921 65.7704H51.7383L89.446 0Z" fill="url(#favicon_grad)"/>
6
6
  <defs>
@@ -1,6 +1,6 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="180" height="180" viewBox="0 0 1024 1024" fill="none">
2
2
  <rect x="100" y="100" width="824" height="824" rx="185" fill="#000000"/>
3
- <g transform="translate(170 314) scale(6)">
3
+ <g transform="translate(198.5 330.5) scale(5.5)">
4
4
  <path d="M24.5537 65.7695H0L15.0859 39.4619L37.708 0L60.4912 39.4619H39.6396L24.5537 65.7695Z" fill="white"/>
5
5
  <path d="M89.446 0H114L76.2921 65.7704H51.7383L89.446 0Z" fill="url(#favicon_grad)"/>
6
6
  <defs>
@@ -1,6 +1,6 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 1024 1024" fill="none">
2
2
  <rect x="100" y="100" width="824" height="824" rx="185" fill="#000000"/>
3
- <g transform="translate(170 314) scale(6)">
3
+ <g transform="translate(198.5 330.5) scale(5.5)">
4
4
  <path d="M24.5537 65.7695H0L15.0859 39.4619L37.708 0L60.4912 39.4619H39.6396L24.5537 65.7695Z" fill="white"/>
5
5
  <path d="M89.446 0H114L76.2921 65.7704H51.7383L89.446 0Z" fill="url(#favicon_grad)"/>
6
6
  <defs>
@@ -1,6 +1,6 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 1024 1024" fill="none">
2
2
  <rect x="100" y="100" width="824" height="824" rx="185" fill="#000000"/>
3
- <g transform="translate(170 314) scale(6)">
3
+ <g transform="translate(198.5 330.5) scale(5.5)">
4
4
  <path d="M24.5537 65.7695H0L15.0859 39.4619L37.708 0L60.4912 39.4619H39.6396L24.5537 65.7695Z" fill="white"/>
5
5
  <path d="M89.446 0H114L76.2921 65.7704H51.7383L89.446 0Z" fill="url(#favicon_grad)"/>
6
6
  <defs>
@@ -40,7 +40,7 @@
40
40
  "prepare": "tsc"
41
41
  },
42
42
  "dependencies": {
43
- "@agent-native/core": "^0.7.10"
43
+ "@agent-native/core": "latest"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^24.2.1",