@agent-native/core 0.122.3 → 0.123.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 (1375) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +544 -0
  3. package/corpus/core/docs/content/actions.mdx +33 -20
  4. package/corpus/core/docs/content/agent-mentions.mdx +30 -19
  5. package/corpus/core/docs/content/agent-native-toolkit.mdx +8 -6
  6. package/corpus/core/docs/content/agent-resources.mdx +11 -0
  7. package/corpus/core/docs/content/agent-surfaces.mdx +41 -30
  8. package/corpus/core/docs/content/audit-log.mdx +78 -0
  9. package/corpus/core/docs/content/authentication.mdx +7 -5
  10. package/corpus/core/docs/content/automations.mdx +15 -9
  11. package/corpus/core/docs/content/client.mdx +11 -11
  12. package/corpus/core/docs/content/cloneable-saas.mdx +7 -1
  13. package/corpus/core/docs/content/code-agents-ui.mdx +9 -1
  14. package/corpus/core/docs/content/components.mdx +7 -0
  15. package/corpus/core/docs/content/context-awareness.mdx +1 -0
  16. package/corpus/core/docs/content/creating-templates.mdx +9 -1
  17. package/corpus/core/docs/content/custom-design-system.mdx +8 -0
  18. package/corpus/core/docs/content/data-programs.mdx +6 -0
  19. package/corpus/core/docs/content/deployment.mdx +2 -0
  20. package/corpus/core/docs/content/doctor.mdx +5 -3
  21. package/corpus/core/docs/content/extensions.mdx +26 -0
  22. package/corpus/core/docs/content/external-agents-catalog.mdx +533 -0
  23. package/corpus/core/docs/content/external-agents.mdx +20 -514
  24. package/corpus/core/docs/content/faq.mdx +2 -2
  25. package/corpus/core/docs/content/file-uploads.mdx +44 -0
  26. package/corpus/core/docs/content/frames.mdx +2 -2
  27. package/corpus/core/docs/content/generative-ui.mdx +8 -0
  28. package/corpus/core/docs/content/getting-started.mdx +45 -17
  29. package/corpus/core/docs/content/human-approval.mdx +9 -0
  30. package/corpus/core/docs/content/integrations.mdx +4 -3
  31. package/corpus/core/docs/content/internationalization.mdx +4 -11
  32. package/corpus/core/docs/content/key-concepts.mdx +1 -1
  33. package/corpus/core/docs/content/local-file-mode.mdx +5 -0
  34. package/corpus/core/docs/content/mcp-apps.mdx +2 -1
  35. package/corpus/core/docs/content/mcp-clients.mdx +32 -1
  36. package/corpus/core/docs/content/mcp-protocol.mdx +4 -3
  37. package/corpus/core/docs/content/messaging-internals.mdx +328 -0
  38. package/corpus/core/docs/content/messaging-recipes.mdx +194 -0
  39. package/corpus/core/docs/content/messaging.mdx +9 -307
  40. package/corpus/core/docs/content/multi-app-workspace.mdx +1 -1
  41. package/corpus/core/docs/content/multi-tenancy.mdx +1 -0
  42. package/corpus/core/docs/content/native-chat-ui.mdx +8 -0
  43. package/corpus/core/docs/content/notifications.mdx +18 -20
  44. package/corpus/core/docs/content/observability.mdx +1 -0
  45. package/corpus/core/docs/content/onboarding.mdx +20 -6
  46. package/corpus/core/docs/content/organizations-teams-permissions.mdx +99 -124
  47. package/corpus/core/docs/content/package-lifecycle.mdx +19 -7
  48. package/corpus/core/docs/content/progress.mdx +11 -0
  49. package/corpus/core/docs/content/real-time-collaboration.mdx +44 -3
  50. package/corpus/core/docs/content/recurring-jobs.mdx +14 -1
  51. package/corpus/core/docs/content/security.mdx +5 -2
  52. package/corpus/core/docs/content/server.mdx +2 -1
  53. package/corpus/core/docs/content/sharing.mdx +22 -3
  54. package/corpus/core/docs/content/skills-guide.mdx +62 -19
  55. package/corpus/core/docs/content/syncing-template-changes.mdx +9 -0
  56. package/corpus/core/docs/content/template-analytics-connectors.mdx +75 -0
  57. package/corpus/core/docs/content/template-analytics-dashboards.mdx +106 -0
  58. package/corpus/core/docs/content/template-analytics-developers.mdx +287 -0
  59. package/corpus/core/docs/content/template-analytics-monitoring-and-sessions.mdx +109 -0
  60. package/corpus/core/docs/content/template-analytics.mdx +21 -263
  61. package/corpus/core/docs/content/template-assets-developers.mdx +456 -0
  62. package/corpus/core/docs/content/template-assets-generation.mdx +147 -0
  63. package/corpus/core/docs/content/template-assets-integrations.mdx +319 -0
  64. package/corpus/core/docs/content/template-assets-presets.mdx +185 -0
  65. package/corpus/core/docs/content/template-assets.mdx +12 -562
  66. package/corpus/core/docs/content/template-brain-agent.mdx +103 -0
  67. package/corpus/core/docs/content/template-brain-developers.mdx +379 -0
  68. package/corpus/core/docs/content/template-brain-knowledge.mdx +50 -0
  69. package/corpus/core/docs/content/template-brain-sources.mdx +163 -0
  70. package/corpus/core/docs/content/template-brain.mdx +30 -390
  71. package/corpus/core/docs/content/template-calendar-agent.mdx +133 -0
  72. package/corpus/core/docs/content/template-calendar-booking-links.mdx +73 -0
  73. package/corpus/core/docs/content/template-calendar-developers.mdx +366 -0
  74. package/corpus/core/docs/content/template-calendar-scheduling.mdx +128 -0
  75. package/corpus/core/docs/content/template-calendar.mdx +13 -260
  76. package/corpus/core/docs/content/template-chat-developers.mdx +88 -0
  77. package/corpus/core/docs/content/template-chat-first-edits.mdx +145 -0
  78. package/corpus/core/docs/content/template-chat.mdx +12 -77
  79. package/corpus/core/docs/content/template-clips-ai-and-editing.mdx +114 -0
  80. package/corpus/core/docs/content/template-clips-capture-everywhere.mdx +120 -0
  81. package/corpus/core/docs/content/template-clips-developers.mdx +373 -0
  82. package/corpus/core/docs/content/template-clips-sharing-and-teams.mdx +182 -0
  83. package/corpus/core/docs/content/template-clips.mdx +19 -508
  84. package/corpus/core/docs/content/template-content-databases.mdx +406 -0
  85. package/corpus/core/docs/content/template-content-developers.mdx +364 -0
  86. package/corpus/core/docs/content/template-content-editing.mdx +60 -0
  87. package/corpus/core/docs/content/template-content-sync.mdx +149 -0
  88. package/corpus/core/docs/content/template-content.mdx +21 -561
  89. package/corpus/core/docs/content/template-design-brand-and-figma.mdx +150 -0
  90. package/corpus/core/docs/content/template-design-collaboration-and-full-apps.mdx +125 -0
  91. package/corpus/core/docs/content/template-design-developers.mdx +358 -0
  92. package/corpus/core/docs/content/template-design-quality-and-components.mdx +95 -0
  93. package/corpus/core/docs/content/template-design.mdx +20 -344
  94. package/corpus/core/docs/content/template-dispatch-developers.mdx +121 -0
  95. package/corpus/core/docs/content/template-dispatch-messaging-routing.mdx +114 -0
  96. package/corpus/core/docs/content/template-dispatch-operations.mdx +160 -0
  97. package/corpus/core/docs/content/template-dispatch-vault-integrations.mdx +316 -0
  98. package/corpus/core/docs/content/template-dispatch.mdx +24 -283
  99. package/corpus/core/docs/content/template-forms-building-publishing.mdx +135 -0
  100. package/corpus/core/docs/content/template-forms-developers.mdx +195 -0
  101. package/corpus/core/docs/content/template-forms-responses.mdx +120 -0
  102. package/corpus/core/docs/content/template-forms.mdx +21 -230
  103. package/corpus/core/docs/content/template-mail-agent.mdx +114 -0
  104. package/corpus/core/docs/content/template-mail-developers.mdx +356 -0
  105. package/corpus/core/docs/content/template-mail-drafts-and-queue.mdx +103 -0
  106. package/corpus/core/docs/content/template-mail-inbox.mdx +118 -0
  107. package/corpus/core/docs/content/template-mail.mdx +23 -274
  108. package/corpus/core/docs/content/template-plan-automations.mdx +213 -0
  109. package/corpus/core/docs/content/template-plan-developers.mdx +703 -0
  110. package/corpus/core/docs/content/template-plan-local-and-desktop.mdx +236 -0
  111. package/corpus/core/docs/content/template-plan-review-workflow.mdx +180 -0
  112. package/corpus/core/docs/content/template-plan.mdx +60 -910
  113. package/corpus/core/docs/content/template-slides-agent.mdx +102 -0
  114. package/corpus/core/docs/content/template-slides-design-and-media.mdx +94 -0
  115. package/corpus/core/docs/content/template-slides-developers.mdx +488 -0
  116. package/corpus/core/docs/content/template-slides-editing.mdx +56 -0
  117. package/corpus/core/docs/content/template-slides.mdx +20 -362
  118. package/corpus/core/docs/content/toolkit-capability-packages.mdx +38 -13
  119. package/corpus/core/docs/content/toolkit-context-knowledge.mdx +49 -9
  120. package/corpus/core/docs/content/toolkit-editors-canvases.mdx +72 -10
  121. package/corpus/core/docs/content/toolkit-resources.mdx +16 -0
  122. package/corpus/core/docs/content/toolkit-settings.mdx +3 -3
  123. package/corpus/core/docs/content/toolkit-sharing.mdx +5 -7
  124. package/corpus/core/docs/content/using-your-agent.mdx +25 -2
  125. package/corpus/core/docs/content/voice-input.mdx +11 -7
  126. package/corpus/core/docs/content/what-is-agent-native.mdx +1 -0
  127. package/corpus/core/docs/content/workspace-connections.mdx +21 -11
  128. package/corpus/core/docs/content/workspace-management.mdx +1 -1
  129. package/corpus/core/package.json +1 -3
  130. package/corpus/core/src/a2a/client.ts +4 -2
  131. package/corpus/core/src/agent/action-warnings.ts +103 -0
  132. package/corpus/core/src/agent/durable-background.ts +42 -5
  133. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +58 -6
  134. package/corpus/core/src/agent/engine/anthropic-engine.ts +51 -8
  135. package/corpus/core/src/agent/engine/builder-engine.ts +56 -18
  136. package/corpus/core/src/agent/engine/continuation-dispatch-retry.ts +10 -9
  137. package/corpus/core/src/agent/engine/credential-errors.ts +11 -0
  138. package/corpus/core/src/agent/engine/error-detail.ts +39 -0
  139. package/corpus/core/src/agent/engine/prompt-cache.ts +44 -0
  140. package/corpus/core/src/agent/engine/registry.ts +22 -30
  141. package/corpus/core/src/agent/engine/tool-call-journal-seed.ts +2 -1
  142. package/corpus/core/src/agent/engine/translate-anthropic.ts +99 -0
  143. package/corpus/core/src/agent/loop-settings.ts +94 -7
  144. package/corpus/core/src/agent/production-agent.ts +667 -157
  145. package/corpus/core/src/agent/run-loop-with-resume.ts +27 -1
  146. package/corpus/core/src/agent/run-manager.ts +229 -39
  147. package/corpus/core/src/agent/run-store.ts +397 -64
  148. package/corpus/core/src/agent/thread-data-builder.ts +5 -1
  149. package/corpus/core/src/agent/types.ts +23 -6
  150. package/corpus/core/src/application-state/script-helpers.ts +5 -2
  151. package/corpus/core/src/cli/agents.ts +69 -1
  152. package/corpus/core/src/cli/app-skill.ts +1 -1
  153. package/corpus/core/src/cli/code-agent-executor.ts +7 -3
  154. package/corpus/core/src/cli/design-connect.ts +82 -8
  155. package/corpus/core/src/cli/index.ts +2 -1
  156. package/corpus/core/src/cli/mcp.ts +13 -3
  157. package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
  158. package/corpus/core/src/cli/skills-content/rewind-skill.ts +36 -4
  159. package/corpus/core/src/cli/skills.ts +250 -37
  160. package/corpus/core/src/cli/telemetry-routing.ts +57 -0
  161. package/corpus/core/src/cli/telemetry.ts +3 -3
  162. package/corpus/core/src/client/AssistantChat.tsx +623 -607
  163. package/corpus/core/src/client/agent-chat-adapter.ts +176 -29
  164. package/corpus/core/src/client/chat/message-components.tsx +13 -0
  165. package/corpus/core/src/client/embed-auth.ts +3 -1
  166. package/corpus/core/src/client/integrations/IntegrationCard.tsx +41 -24
  167. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +37 -21
  168. package/corpus/core/src/client/integrations/webhook-url.ts +29 -0
  169. package/corpus/core/src/client/org/OrgSwitcher.tsx +41 -27
  170. package/corpus/core/src/client/org/RequireActiveOrg.tsx +7 -0
  171. package/corpus/core/src/client/org/TeamPage.tsx +144 -14
  172. package/corpus/core/src/client/org/hooks.ts +27 -0
  173. package/corpus/core/src/client/org/index.ts +2 -0
  174. package/corpus/core/src/client/require-session.tsx +40 -29
  175. package/corpus/core/src/client/session-replay.ts +1 -1
  176. package/corpus/core/src/client/settings/DemoModeSection.tsx +0 -5
  177. package/corpus/core/src/client/settings/SecretsSection.tsx +47 -42
  178. package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
  179. package/corpus/core/src/client/sse-event-processor.ts +83 -8
  180. package/corpus/core/src/client/use-action.ts +22 -13
  181. package/corpus/core/src/client/use-agent-engine-configured.ts +36 -4
  182. package/corpus/core/src/client/use-db-sync.ts +21 -1
  183. package/corpus/core/src/credentials/index.ts +124 -2
  184. package/corpus/core/src/deploy/build.ts +93 -30
  185. package/corpus/core/src/deploy/workspace-deploy.ts +21 -16
  186. package/corpus/core/src/guards/no-localhost-fallback.ts +76 -14
  187. package/corpus/core/src/integrations/google-docs-poller.ts +19 -12
  188. package/corpus/core/src/integrations/webhook-handler.ts +56 -33
  189. package/corpus/core/src/jobs/scheduler.ts +57 -23
  190. package/corpus/core/src/localization/default-messages.ts +23 -1
  191. package/corpus/core/src/mcp/screen-memory-stdio.ts +21 -2
  192. package/corpus/core/src/observability/evals.ts +7 -8
  193. package/corpus/core/src/observability/traces.ts +2 -0
  194. package/corpus/core/src/org/accept-pending.ts +2 -2
  195. package/corpus/core/src/org/active-org.ts +73 -0
  196. package/corpus/core/src/org/auto-join-domain.ts +7 -2
  197. package/corpus/core/src/org/context.ts +169 -66
  198. package/corpus/core/src/org/handlers.ts +148 -10
  199. package/corpus/core/src/org/plugin.ts +8 -1
  200. package/corpus/core/src/org/types.ts +6 -1
  201. package/corpus/core/src/provider-api/index.ts +6 -1
  202. package/corpus/core/src/resources/handlers.ts +2 -6
  203. package/corpus/core/src/resources/script-helpers.ts +2 -1
  204. package/corpus/core/src/scripts/chat/search-chats.ts +5 -2
  205. package/corpus/core/src/scripts/describe-workspace-apps.ts +59 -0
  206. package/corpus/core/src/scripts/resources/delete-memory.ts +5 -2
  207. package/corpus/core/src/scripts/resources/delete.ts +5 -2
  208. package/corpus/core/src/scripts/resources/effective.ts +5 -2
  209. package/corpus/core/src/scripts/resources/list.ts +5 -2
  210. package/corpus/core/src/scripts/resources/read.ts +5 -2
  211. package/corpus/core/src/scripts/resources/save-memory.ts +5 -2
  212. package/corpus/core/src/scripts/resources/write.ts +5 -2
  213. package/corpus/core/src/server/agent-capabilities.ts +147 -0
  214. package/corpus/core/src/server/agent-chat/framework-prompts.ts +11 -13
  215. package/corpus/core/src/server/agent-chat/prompt-resources.ts +183 -57
  216. package/corpus/core/src/server/agent-chat/script-entries.ts +20 -7
  217. package/corpus/core/src/server/agent-chat-plugin.ts +27 -0
  218. package/corpus/core/src/server/auth.ts +38 -32
  219. package/corpus/core/src/server/core-routes-plugin.ts +229 -179
  220. package/corpus/core/src/server/credential-provider.ts +196 -44
  221. package/corpus/core/src/server/embed-session.ts +10 -0
  222. package/corpus/core/src/server/framework-request-handler.ts +43 -0
  223. package/corpus/core/src/server/google-auth-plugin.ts +13 -450
  224. package/corpus/core/src/server/index.ts +4 -1
  225. package/corpus/core/src/server/onboarding-html.ts +20 -56
  226. package/corpus/core/src/server/open-route.ts +6 -1
  227. package/corpus/core/src/server/poll.ts +1 -1
  228. package/corpus/core/src/server/prompts/framework-core-compact.ts +5 -5
  229. package/corpus/core/src/server/prompts/framework-core.ts +7 -9
  230. package/corpus/core/src/server/prompts/shared-rules.ts +20 -9
  231. package/corpus/core/src/server/request-context.ts +58 -2
  232. package/corpus/core/src/server/scoped-key-storage.ts +1 -1
  233. package/corpus/core/src/settings/org-settings.ts +9 -0
  234. package/corpus/core/src/settings/store.ts +29 -0
  235. package/corpus/core/src/shared/index.ts +13 -0
  236. package/corpus/core/src/shared/sign-in-journey.ts +331 -0
  237. package/corpus/core/src/styles/agent-native.css +8 -0
  238. package/corpus/core/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  239. package/corpus/core/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  240. package/corpus/core/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  241. package/corpus/core/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
  242. package/corpus/core/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  243. package/corpus/core/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  244. package/corpus/core/src/templates/chat/AGENTS.md +8 -0
  245. package/corpus/core/src/templates/chat/app/entry.client.tsx +3 -0
  246. package/corpus/core/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
  247. package/corpus/core/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
  248. package/corpus/core/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
  249. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
  250. package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  251. package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  252. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +2 -0
  253. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  254. package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  255. package/corpus/core/src/templates/default/AGENTS.md +68 -195
  256. package/corpus/core/src/templates/default/app/entry.client.tsx +3 -0
  257. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +8 -0
  258. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +8 -0
  259. package/corpus/core/src/templates/default/app/i18n/en-US.ts +8 -0
  260. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +8 -0
  261. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +8 -0
  262. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +8 -0
  263. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +8 -0
  264. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +8 -0
  265. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +8 -0
  266. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +8 -0
  267. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +8 -0
  268. package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  269. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  270. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  271. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  272. package/corpus/core/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  273. package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  274. package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  275. package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  276. package/corpus/core/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  277. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  278. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  279. package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  280. package/corpus/core/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  281. package/corpus/core/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  282. package/corpus/core/src/templates/workspace-core/AGENTS.md +62 -124
  283. package/corpus/core/src/templates/workspace-root/AGENTS.md +6 -1
  284. package/corpus/core/src/triggers/dispatcher.ts +28 -17
  285. package/corpus/core/src/vite/client.ts +20 -8
  286. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +19 -1
  287. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +41 -1
  288. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +50 -22
  289. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +1 -1
  290. package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +8 -0
  291. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +20 -6
  292. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +2 -0
  293. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +4 -3
  294. package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +7 -3
  295. package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +228 -0
  296. package/corpus/templates/analytics/.builder/skills/charts/SKILL.md +2 -2
  297. package/corpus/templates/analytics/actions/delete-dashboard-view.ts +24 -0
  298. package/corpus/templates/analytics/actions/delete-user-pref.ts +22 -0
  299. package/corpus/templates/analytics/actions/generate-chart.ts +8 -245
  300. package/corpus/templates/analytics/actions/get-theme.ts +27 -0
  301. package/corpus/templates/analytics/actions/get-user-pref.ts +22 -0
  302. package/corpus/templates/analytics/actions/list-dashboard-views.ts +25 -0
  303. package/corpus/templates/analytics/actions/save-dashboard-view.ts +33 -0
  304. package/corpus/templates/analytics/actions/set-theme.ts +22 -0
  305. package/corpus/templates/analytics/actions/set-user-pref.ts +24 -0
  306. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +134 -27
  307. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +2 -9
  308. package/corpus/templates/analytics/app/components/layout/Layout.tsx +0 -17
  309. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +10 -5
  310. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +22 -52
  311. package/corpus/templates/analytics/app/hooks/use-user-pref.ts +21 -31
  312. package/corpus/templates/analytics/app/i18n-data.ts +10 -0
  313. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +2 -1
  314. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dual-axis.ts +73 -0
  315. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +8 -27
  316. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +0 -57
  317. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +8 -0
  318. package/corpus/templates/analytics/app/root.tsx +0 -28
  319. package/corpus/templates/analytics/changelog/2026-07-26-error-issues-now-group-by-message-as-well-as-stack-frame-and.md +6 -0
  320. package/corpus/templates/analytics/changelog/2026-07-26-line-area-and-bar-dashboard-panels-can-plot-series-on-a-seco.md +6 -0
  321. package/corpus/templates/analytics/changelog/2026-07-26-scheduled-dashboard-email-reports-now-arrive-complete-and-re.md +6 -0
  322. package/corpus/templates/analytics/changelog/2026-07-26-session-replays-now-detect-rage-clicks-so-the-rage-click-fil.md +6 -0
  323. package/corpus/templates/analytics/docs/error-capture.md +8 -4
  324. package/corpus/templates/analytics/package.json +1 -2
  325. package/corpus/templates/analytics/scripts/preview-dashboard-report.ts +221 -0
  326. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +39 -32
  327. package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +1168 -0
  328. package/corpus/templates/analytics/server/lib/dashboard-report.ts +111 -1358
  329. package/corpus/templates/analytics/server/lib/error-capture.ts +32 -15
  330. package/corpus/templates/analytics/server/lib/report-chart-svg.ts +901 -0
  331. package/corpus/templates/analytics/server/lib/session-replay.ts +77 -1
  332. package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +3 -4
  333. package/corpus/templates/assets/.agents/skills/a2a-assets/SKILL.md +28 -0
  334. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +19 -1
  335. package/corpus/templates/assets/.agents/skills/assets-navigation/SKILL.md +46 -0
  336. package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -0
  337. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +20 -6
  338. package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +28 -0
  339. package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +9 -0
  340. package/corpus/templates/assets/.agents/skills/logo-composite/SKILL.md +11 -0
  341. package/corpus/templates/assets/.agents/skills/security/SKILL.md +2 -0
  342. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +4 -3
  343. package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +7 -3
  344. package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +228 -0
  345. package/corpus/templates/assets/AGENTS.md +58 -125
  346. package/corpus/templates/assets/actions/variant-slots.ts +8 -4
  347. package/corpus/templates/assets/app/entry.client.tsx +3 -0
  348. package/corpus/templates/assets/package.json +0 -2
  349. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +19 -1
  350. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +2 -0
  351. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +78 -4
  352. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +20 -6
  353. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +15 -3
  354. package/corpus/templates/brain/.agents/skills/security/SKILL.md +2 -0
  355. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +4 -3
  356. package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +7 -3
  357. package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +228 -0
  358. package/corpus/templates/brain/.agents/skills/storing-data/SKILL.md +178 -0
  359. package/corpus/templates/brain/AGENTS.md +73 -119
  360. package/corpus/templates/brain/app/entry.client.tsx +3 -0
  361. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +19 -1
  362. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +56 -3
  363. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +20 -6
  364. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +2 -0
  365. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +4 -3
  366. package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +7 -3
  367. package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +228 -0
  368. package/corpus/templates/calendar/AGENTS.md +22 -45
  369. package/corpus/templates/calendar/app/entry.client.tsx +3 -0
  370. package/corpus/templates/calendar/server/handlers/events.ts +0 -364
  371. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  372. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  373. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  374. package/corpus/templates/chat/.agents/skills/security/SKILL.md +2 -0
  375. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  376. package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  377. package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  378. package/corpus/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  379. package/corpus/templates/chat/AGENTS.md +8 -0
  380. package/corpus/templates/chat/app/entry.client.tsx +3 -0
  381. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +19 -1
  382. package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +42 -0
  383. package/corpus/templates/clips/.agents/skills/brain-export/SKILL.md +59 -0
  384. package/corpus/templates/clips/.agents/skills/bug-reports/SKILL.md +37 -0
  385. package/corpus/templates/clips/.agents/skills/crm-call-evidence/SKILL.md +41 -0
  386. package/corpus/templates/clips/.agents/skills/dictate/SKILL.md +4 -0
  387. package/corpus/templates/clips/.agents/skills/external-integrations/SKILL.md +45 -0
  388. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +20 -6
  389. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +9 -0
  390. package/corpus/templates/clips/.agents/skills/recording/SKILL.md +45 -0
  391. package/corpus/templates/clips/.agents/skills/screen-memory/SKILL.md +43 -0
  392. package/corpus/templates/clips/.agents/skills/security/SKILL.md +2 -0
  393. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +4 -3
  394. package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +7 -3
  395. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +38 -1
  396. package/corpus/templates/clips/AGENTS.md +82 -224
  397. package/corpus/templates/clips/actions/create-recording.ts +4 -0
  398. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +6 -10
  399. package/corpus/templates/clips/app/routes/invite.$token.tsx +6 -5
  400. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +4 -5
  401. package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -8
  402. package/corpus/templates/clips/changelog/2026-07-26-long-agent-chat-turns-now-finish-instead-of-stopping-partway.md +6 -0
  403. package/corpus/templates/clips/changelog/2026-07-26-recordings-no-longer-get-stuck-on-uploading-uploads-now-hold.md +6 -0
  404. package/corpus/templates/clips/server/db/schema.ts +3 -0
  405. package/corpus/templates/clips/server/jobs/brain-export.ts +4 -0
  406. package/corpus/templates/clips/server/lib/recording-upload-state.ts +0 -52
  407. package/corpus/templates/clips/server/lib/upload-lease.ts +241 -0
  408. package/corpus/templates/clips/server/plugins/agent-chat.ts +4 -0
  409. package/corpus/templates/clips/server/plugins/db.ts +18 -347
  410. package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +7 -1
  411. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +123 -126
  412. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +4 -0
  413. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/resume.get.ts +118 -0
  414. package/corpus/templates/clips/server/routes/api/uploads/reap.post.ts +69 -0
  415. package/corpus/templates/content/.agents/skills/actions/SKILL.md +19 -1
  416. package/corpus/templates/content/.agents/skills/content/SKILL.md +4 -0
  417. package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +8 -0
  418. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +55 -0
  419. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +20 -6
  420. package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +12 -1
  421. package/corpus/templates/content/.agents/skills/security/SKILL.md +2 -0
  422. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +4 -3
  423. package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +7 -3
  424. package/corpus/templates/content/.agents/skills/sharing/SKILL.md +228 -0
  425. package/corpus/templates/content/AGENTS.md +63 -131
  426. package/corpus/templates/content/app/routes/_app.tsx +4 -4
  427. package/corpus/templates/content/server/routes/api/notion/callback.get.ts +6 -24
  428. package/corpus/templates/design/.agents/skills/actions/SKILL.md +19 -1
  429. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +16 -0
  430. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +15 -0
  431. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +20 -6
  432. package/corpus/templates/design/.agents/skills/full-app-build/SKILL.md +12 -0
  433. package/corpus/templates/design/.agents/skills/security/SKILL.md +2 -0
  434. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +4 -3
  435. package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +7 -3
  436. package/corpus/templates/design/.agents/skills/sharing/SKILL.md +228 -0
  437. package/corpus/templates/design/.agents/skills/storing-data/SKILL.md +178 -0
  438. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +201 -102
  439. package/corpus/templates/design/AGENTS.md +58 -71
  440. package/corpus/templates/design/actions/open-visual-edit.ts +111 -2
  441. package/corpus/templates/design/app/components/design/AddLocalhostScreenDialog.tsx +236 -0
  442. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +1 -1
  443. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +2 -2
  444. package/corpus/templates/design/app/entry.client.tsx +3 -0
  445. package/corpus/templates/design/app/i18n-data.ts +180 -0
  446. package/corpus/templates/design/app/pages/Present.tsx +6 -9
  447. package/corpus/templates/design/app/pages/VisualEdit.tsx +4 -7
  448. package/corpus/templates/design/app/pages/design-editor/design-data-geometry-utils.ts +20 -0
  449. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +19 -1
  450. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +20 -6
  451. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +2 -0
  452. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +4 -3
  453. package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +7 -3
  454. package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +228 -0
  455. package/corpus/templates/dispatch/.agents/skills/storing-data/SKILL.md +178 -0
  456. package/corpus/templates/dispatch/app/entry.client.tsx +3 -0
  457. package/corpus/templates/dispatch/server/plugins/identity-sso.ts +27 -16
  458. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +19 -1
  459. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +20 -6
  460. package/corpus/templates/forms/.agents/skills/security/SKILL.md +2 -0
  461. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +4 -3
  462. package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +7 -3
  463. package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +228 -0
  464. package/corpus/templates/forms/DEVELOPING.md +1 -1
  465. package/corpus/templates/forms/app/entry.client.tsx +3 -0
  466. package/corpus/templates/forms/app/pages/FormsListPage.tsx +3 -5
  467. package/corpus/templates/forms/app/routes/_app.tsx +4 -4
  468. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +20 -6
  469. package/corpus/templates/macros/.agents/skills/security/SKILL.md +2 -0
  470. package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +7 -3
  471. package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +228 -0
  472. package/corpus/templates/macros/.agents/skills/storing-data/SKILL.md +178 -0
  473. package/corpus/templates/macros/app/entry.client.tsx +3 -0
  474. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +19 -1
  475. package/corpus/templates/mail/.agents/skills/contacts-and-crm/SKILL.md +10 -0
  476. package/corpus/templates/mail/.agents/skills/draft-queue/SKILL.md +3 -0
  477. package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +26 -2
  478. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +20 -6
  479. package/corpus/templates/mail/.agents/skills/inbox-automations/SKILL.md +37 -0
  480. package/corpus/templates/mail/.agents/skills/inbox-reads-and-triage/SKILL.md +58 -0
  481. package/corpus/templates/mail/.agents/skills/mail-backends/SKILL.md +33 -0
  482. package/corpus/templates/mail/.agents/skills/provider-api-scans/SKILL.md +39 -0
  483. package/corpus/templates/mail/.agents/skills/security/SKILL.md +2 -0
  484. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +4 -3
  485. package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +7 -3
  486. package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +228 -0
  487. package/corpus/templates/mail/AGENTS.md +74 -143
  488. package/corpus/templates/mail/actions/create-alias.ts +36 -0
  489. package/corpus/templates/mail/actions/create-automation.ts +28 -0
  490. package/corpus/templates/mail/actions/create-scheduled-job.ts +45 -0
  491. package/corpus/templates/mail/actions/delete-alias.ts +26 -0
  492. package/corpus/templates/mail/actions/delete-automation.ts +21 -0
  493. package/corpus/templates/mail/actions/get-automation-settings.ts +32 -0
  494. package/corpus/templates/mail/actions/get-mail-preferences.ts +18 -0
  495. package/corpus/templates/mail/actions/list-aliases.ts +17 -0
  496. package/corpus/templates/mail/actions/list-automations.ts +18 -0
  497. package/corpus/templates/mail/actions/list-scheduled-jobs.ts +18 -0
  498. package/corpus/templates/mail/actions/update-alias.ts +37 -0
  499. package/corpus/templates/mail/actions/update-automation-settings.ts +33 -0
  500. package/corpus/templates/mail/actions/update-automation.ts +33 -0
  501. package/corpus/templates/mail/actions/update-mail-preferences.ts +68 -0
  502. package/corpus/templates/mail/actions/update-scheduled-job.ts +25 -0
  503. package/corpus/templates/mail/app/entry.client.tsx +3 -0
  504. package/corpus/templates/mail/app/hooks/use-aliases.ts +6 -36
  505. package/corpus/templates/mail/app/hooks/use-automations.ts +9 -16
  506. package/corpus/templates/mail/app/hooks/use-emails.ts +6 -5
  507. package/corpus/templates/mail/app/hooks/use-scheduled-jobs.ts +12 -15
  508. package/corpus/templates/mail/app/pages/SettingsPage.tsx +15 -9
  509. package/corpus/templates/mail/server/handlers/automations.ts +5 -142
  510. package/corpus/templates/mail/server/handlers/emails.ts +1 -56
  511. package/corpus/templates/mail/server/handlers/scheduled-jobs.ts +0 -134
  512. package/corpus/templates/mail/server/lib/aliases.ts +18 -0
  513. package/corpus/templates/mail/server/lib/automations.ts +104 -0
  514. package/corpus/templates/mail/server/lib/jobs.ts +34 -0
  515. package/corpus/templates/mail/server/lib/mail-settings.ts +43 -0
  516. package/corpus/templates/mail/shared/automation-schema.ts +10 -0
  517. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +19 -1
  518. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +2 -0
  519. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +20 -6
  520. package/corpus/templates/plan/.agents/skills/plan-authoring-flow/SKILL.md +98 -0
  521. package/corpus/templates/plan/.agents/skills/plan-browser-editing/SKILL.md +42 -0
  522. package/corpus/templates/plan/.agents/skills/plan-comments-and-feedback/SKILL.md +68 -0
  523. package/corpus/templates/plan/.agents/skills/plan-events/SKILL.md +22 -0
  524. package/corpus/templates/plan/.agents/skills/plan-hosted-writes/SKILL.md +42 -0
  525. package/corpus/templates/plan/.agents/skills/plan-local-codebase-chat/SKILL.md +38 -0
  526. package/corpus/templates/plan/.agents/skills/plan-review-recaps/SKILL.md +25 -0
  527. package/corpus/templates/plan/.agents/skills/plan-source-sync/SKILL.md +68 -0
  528. package/corpus/templates/plan/.agents/skills/plan-version-history/SKILL.md +25 -0
  529. package/corpus/templates/plan/.agents/skills/security/SKILL.md +2 -0
  530. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +4 -3
  531. package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +7 -3
  532. package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +228 -0
  533. package/corpus/templates/plan/.agents/skills/storing-data/SKILL.md +178 -0
  534. package/corpus/templates/plan/AGENTS.md +64 -296
  535. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +9 -8
  536. package/corpus/templates/plan/app/pages/PlansPage.tsx +5 -10
  537. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +19 -1
  538. package/corpus/templates/slides/.agents/skills/deck-management/SKILL.md +7 -7
  539. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +20 -6
  540. package/corpus/templates/slides/.agents/skills/security/SKILL.md +2 -0
  541. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +4 -3
  542. package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +7 -3
  543. package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +228 -0
  544. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +3 -2
  545. package/corpus/templates/slides/.agents/skills/storing-data/SKILL.md +178 -0
  546. package/corpus/templates/slides/DEVELOPING.md +3 -3
  547. package/corpus/templates/slides/actions/_deck-write.ts +52 -0
  548. package/corpus/templates/slides/actions/add-deck.ts +73 -0
  549. package/corpus/templates/slides/actions/delete-deck.ts +60 -0
  550. package/corpus/templates/slides/actions/get-deck.ts +3 -1
  551. package/corpus/templates/slides/actions/save-deck.ts +144 -0
  552. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +27 -20
  553. package/corpus/templates/slides/app/context/DeckContext.tsx +173 -100
  554. package/corpus/templates/slides/app/pages/Index.tsx +3 -6
  555. package/corpus/templates/slides/app/routes/slide.tsx +16 -12
  556. package/corpus/templates/slides/changelog/2026-07-26-a-newly-created-deck-now-appears-in-the-deck-list-right-away.md +6 -0
  557. package/corpus/templates/slides/server/handlers/decks.ts +2 -378
  558. package/corpus/templates/tasks/.agents/skills/action-reference/SKILL.md +47 -0
  559. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +19 -1
  560. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +2 -0
  561. package/corpus/templates/tasks/.agents/skills/change-summary/SKILL.md +19 -1
  562. package/corpus/templates/tasks/.agents/skills/custom-fields/SKILL.md +63 -0
  563. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +20 -6
  564. package/corpus/templates/tasks/.agents/skills/security/SKILL.md +2 -0
  565. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +4 -3
  566. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +7 -3
  567. package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +228 -0
  568. package/corpus/templates/tasks/.agents/skills/store-conventions/SKILL.md +45 -0
  569. package/corpus/templates/tasks/.agents/skills/storing-data/SKILL.md +178 -0
  570. package/corpus/templates/tasks/.agents/skills/task-inbox-workflow/SKILL.md +66 -0
  571. package/corpus/templates/tasks/AGENTS.md +48 -113
  572. package/corpus/templates/tasks/app/entry.client.tsx +3 -0
  573. package/corpus/toolkit/CHANGELOG.md +12 -0
  574. package/corpus/toolkit/package.json +1 -1
  575. package/corpus/toolkit/src/composer/PromptComposer.tsx +23 -20
  576. package/dist/a2a/client.d.ts +3 -1
  577. package/dist/a2a/client.d.ts.map +1 -1
  578. package/dist/a2a/client.js +4 -2
  579. package/dist/a2a/client.js.map +1 -1
  580. package/dist/agent/action-warnings.d.ts +27 -0
  581. package/dist/agent/action-warnings.d.ts.map +1 -0
  582. package/dist/agent/action-warnings.js +73 -0
  583. package/dist/agent/action-warnings.js.map +1 -0
  584. package/dist/agent/durable-background.d.ts +8 -0
  585. package/dist/agent/durable-background.d.ts.map +1 -1
  586. package/dist/agent/durable-background.js +37 -5
  587. package/dist/agent/durable-background.js.map +1 -1
  588. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  589. package/dist/agent/engine/ai-sdk-engine.js +47 -6
  590. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  591. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  592. package/dist/agent/engine/anthropic-engine.js +41 -9
  593. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  594. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  595. package/dist/agent/engine/builder-engine.js +46 -19
  596. package/dist/agent/engine/builder-engine.js.map +1 -1
  597. package/dist/agent/engine/continuation-dispatch-retry.d.ts.map +1 -1
  598. package/dist/agent/engine/continuation-dispatch-retry.js +11 -9
  599. package/dist/agent/engine/continuation-dispatch-retry.js.map +1 -1
  600. package/dist/agent/engine/credential-errors.d.ts +6 -0
  601. package/dist/agent/engine/credential-errors.d.ts.map +1 -1
  602. package/dist/agent/engine/credential-errors.js +10 -0
  603. package/dist/agent/engine/credential-errors.js.map +1 -1
  604. package/dist/agent/engine/error-detail.d.ts +2 -0
  605. package/dist/agent/engine/error-detail.d.ts.map +1 -0
  606. package/dist/agent/engine/error-detail.js +37 -0
  607. package/dist/agent/engine/error-detail.js.map +1 -0
  608. package/dist/agent/engine/prompt-cache.d.ts +34 -0
  609. package/dist/agent/engine/prompt-cache.d.ts.map +1 -0
  610. package/dist/agent/engine/prompt-cache.js +39 -0
  611. package/dist/agent/engine/prompt-cache.js.map +1 -0
  612. package/dist/agent/engine/registry.d.ts.map +1 -1
  613. package/dist/agent/engine/registry.js +23 -33
  614. package/dist/agent/engine/registry.js.map +1 -1
  615. package/dist/agent/engine/tool-call-journal-seed.d.ts +1 -1
  616. package/dist/agent/engine/tool-call-journal-seed.d.ts.map +1 -1
  617. package/dist/agent/engine/tool-call-journal-seed.js +2 -2
  618. package/dist/agent/engine/tool-call-journal-seed.js.map +1 -1
  619. package/dist/agent/engine/translate-anthropic.d.ts +28 -0
  620. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -1
  621. package/dist/agent/engine/translate-anthropic.js +75 -0
  622. package/dist/agent/engine/translate-anthropic.js.map +1 -1
  623. package/dist/agent/loop-settings.d.ts +35 -2
  624. package/dist/agent/loop-settings.d.ts.map +1 -1
  625. package/dist/agent/loop-settings.js +71 -8
  626. package/dist/agent/loop-settings.js.map +1 -1
  627. package/dist/agent/production-agent.d.ts +105 -20
  628. package/dist/agent/production-agent.d.ts.map +1 -1
  629. package/dist/agent/production-agent.js +516 -123
  630. package/dist/agent/production-agent.js.map +1 -1
  631. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  632. package/dist/agent/run-loop-with-resume.js +24 -2
  633. package/dist/agent/run-loop-with-resume.js.map +1 -1
  634. package/dist/agent/run-manager.d.ts +52 -9
  635. package/dist/agent/run-manager.d.ts.map +1 -1
  636. package/dist/agent/run-manager.js +191 -36
  637. package/dist/agent/run-manager.js.map +1 -1
  638. package/dist/agent/run-store.d.ts +87 -14
  639. package/dist/agent/run-store.d.ts.map +1 -1
  640. package/dist/agent/run-store.js +331 -59
  641. package/dist/agent/run-store.js.map +1 -1
  642. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  643. package/dist/agent/thread-data-builder.js +6 -1
  644. package/dist/agent/thread-data-builder.js.map +1 -1
  645. package/dist/agent/types.d.ts +18 -6
  646. package/dist/agent/types.d.ts.map +1 -1
  647. package/dist/agent/types.js +9 -5
  648. package/dist/agent/types.js.map +1 -1
  649. package/dist/application-state/script-helpers.d.ts.map +1 -1
  650. package/dist/application-state/script-helpers.js +2 -2
  651. package/dist/application-state/script-helpers.js.map +1 -1
  652. package/dist/cli/agents.d.ts +2 -0
  653. package/dist/cli/agents.d.ts.map +1 -1
  654. package/dist/cli/agents.js +48 -1
  655. package/dist/cli/agents.js.map +1 -1
  656. package/dist/cli/app-skill.js +1 -1
  657. package/dist/cli/app-skill.js.map +1 -1
  658. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  659. package/dist/cli/code-agent-executor.js +3 -3
  660. package/dist/cli/code-agent-executor.js.map +1 -1
  661. package/dist/cli/design-connect.d.ts.map +1 -1
  662. package/dist/cli/design-connect.js +73 -8
  663. package/dist/cli/design-connect.js.map +1 -1
  664. package/dist/cli/index.js +3 -1
  665. package/dist/cli/index.js.map +1 -1
  666. package/dist/cli/mcp.d.ts.map +1 -1
  667. package/dist/cli/mcp.js +12 -3
  668. package/dist/cli/mcp.js.map +1 -1
  669. package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
  670. package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
  671. package/dist/cli/skills-content/design-visual-edit-skill.js +169 -24
  672. package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
  673. package/dist/cli/skills-content/rewind-skill.d.ts +1 -1
  674. package/dist/cli/skills-content/rewind-skill.d.ts.map +1 -1
  675. package/dist/cli/skills-content/rewind-skill.js +36 -4
  676. package/dist/cli/skills-content/rewind-skill.js.map +1 -1
  677. package/dist/cli/skills.d.ts +2 -0
  678. package/dist/cli/skills.d.ts.map +1 -1
  679. package/dist/cli/skills.js +191 -40
  680. package/dist/cli/skills.js.map +1 -1
  681. package/dist/cli/telemetry-routing.d.ts +2 -0
  682. package/dist/cli/telemetry-routing.d.ts.map +1 -0
  683. package/dist/cli/telemetry-routing.js +54 -0
  684. package/dist/cli/telemetry-routing.js.map +1 -0
  685. package/dist/cli/telemetry.js +3 -3
  686. package/dist/cli/telemetry.js.map +1 -1
  687. package/dist/client/AssistantChat.d.ts.map +1 -1
  688. package/dist/client/AssistantChat.js +135 -125
  689. package/dist/client/AssistantChat.js.map +1 -1
  690. package/dist/client/agent-chat-adapter.d.ts +17 -0
  691. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  692. package/dist/client/agent-chat-adapter.js +141 -31
  693. package/dist/client/agent-chat-adapter.js.map +1 -1
  694. package/dist/client/chat/message-components.d.ts +9 -1
  695. package/dist/client/chat/message-components.d.ts.map +1 -1
  696. package/dist/client/chat/message-components.js +12 -1
  697. package/dist/client/chat/message-components.js.map +1 -1
  698. package/dist/client/embed-auth.d.ts.map +1 -1
  699. package/dist/client/embed-auth.js +3 -1
  700. package/dist/client/embed-auth.js.map +1 -1
  701. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
  702. package/dist/client/integrations/IntegrationCard.js +9 -4
  703. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  704. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  705. package/dist/client/integrations/IntegrationsPanel.js +13 -7
  706. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  707. package/dist/client/integrations/webhook-url.d.ts +7 -0
  708. package/dist/client/integrations/webhook-url.d.ts.map +1 -0
  709. package/dist/client/integrations/webhook-url.js +32 -0
  710. package/dist/client/integrations/webhook-url.js.map +1 -0
  711. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  712. package/dist/client/org/OrgSwitcher.js +13 -11
  713. package/dist/client/org/OrgSwitcher.js.map +1 -1
  714. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
  715. package/dist/client/org/RequireActiveOrg.js +2 -2
  716. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  717. package/dist/client/org/TeamPage.d.ts.map +1 -1
  718. package/dist/client/org/TeamPage.js +52 -13
  719. package/dist/client/org/TeamPage.js.map +1 -1
  720. package/dist/client/org/hooks.d.ts +9 -0
  721. package/dist/client/org/hooks.d.ts.map +1 -1
  722. package/dist/client/org/hooks.js +24 -0
  723. package/dist/client/org/hooks.js.map +1 -1
  724. package/dist/client/org/index.d.ts +1 -1
  725. package/dist/client/org/index.d.ts.map +1 -1
  726. package/dist/client/org/index.js +1 -1
  727. package/dist/client/org/index.js.map +1 -1
  728. package/dist/client/require-session.d.ts +12 -17
  729. package/dist/client/require-session.d.ts.map +1 -1
  730. package/dist/client/require-session.js +36 -23
  731. package/dist/client/require-session.js.map +1 -1
  732. package/dist/client/session-replay.js +1 -1
  733. package/dist/client/session-replay.js.map +1 -1
  734. package/dist/client/settings/DemoModeSection.d.ts +0 -1
  735. package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
  736. package/dist/client/settings/DemoModeSection.js +0 -4
  737. package/dist/client/settings/DemoModeSection.js.map +1 -1
  738. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  739. package/dist/client/settings/SecretsSection.js +12 -8
  740. package/dist/client/settings/SecretsSection.js.map +1 -1
  741. package/dist/client/settings/VoiceTranscriptionSection.d.ts +0 -1
  742. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  743. package/dist/client/settings/VoiceTranscriptionSection.js +1 -4
  744. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  745. package/dist/client/sse-event-processor.d.ts +33 -1
  746. package/dist/client/sse-event-processor.d.ts.map +1 -1
  747. package/dist/client/sse-event-processor.js +83 -8
  748. package/dist/client/sse-event-processor.js.map +1 -1
  749. package/dist/client/use-action.d.ts.map +1 -1
  750. package/dist/client/use-action.js +23 -14
  751. package/dist/client/use-action.js.map +1 -1
  752. package/dist/client/use-agent-engine-configured.d.ts +9 -3
  753. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  754. package/dist/client/use-agent-engine-configured.js +30 -3
  755. package/dist/client/use-agent-engine-configured.js.map +1 -1
  756. package/dist/client/use-db-sync.d.ts +3 -0
  757. package/dist/client/use-db-sync.d.ts.map +1 -1
  758. package/dist/client/use-db-sync.js +18 -1
  759. package/dist/client/use-db-sync.js.map +1 -1
  760. package/dist/collab/awareness.d.ts +2 -2
  761. package/dist/collab/awareness.d.ts.map +1 -1
  762. package/dist/collab/struct-routes.d.ts +1 -1
  763. package/dist/credentials/index.d.ts +29 -1
  764. package/dist/credentials/index.d.ts.map +1 -1
  765. package/dist/credentials/index.js +111 -2
  766. package/dist/credentials/index.js.map +1 -1
  767. package/dist/deploy/build.d.ts +14 -3
  768. package/dist/deploy/build.d.ts.map +1 -1
  769. package/dist/deploy/build.js +81 -24
  770. package/dist/deploy/build.js.map +1 -1
  771. package/dist/deploy/workspace-deploy.d.ts +15 -0
  772. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  773. package/dist/deploy/workspace-deploy.js +19 -18
  774. package/dist/deploy/workspace-deploy.js.map +1 -1
  775. package/dist/file-upload/actions/upload-image.d.ts +3 -3
  776. package/dist/guards/no-localhost-fallback.d.ts +7 -0
  777. package/dist/guards/no-localhost-fallback.d.ts.map +1 -1
  778. package/dist/guards/no-localhost-fallback.js +75 -16
  779. package/dist/guards/no-localhost-fallback.js.map +1 -1
  780. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  781. package/dist/integrations/google-docs-poller.js +8 -3
  782. package/dist/integrations/google-docs-poller.js.map +1 -1
  783. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  784. package/dist/integrations/webhook-handler.js +22 -4
  785. package/dist/integrations/webhook-handler.js.map +1 -1
  786. package/dist/jobs/scheduler.d.ts +17 -0
  787. package/dist/jobs/scheduler.d.ts.map +1 -1
  788. package/dist/jobs/scheduler.js +60 -33
  789. package/dist/jobs/scheduler.js.map +1 -1
  790. package/dist/localization/default-messages.d.ts +17 -1
  791. package/dist/localization/default-messages.d.ts.map +1 -1
  792. package/dist/localization/default-messages.js +17 -1
  793. package/dist/localization/default-messages.js.map +1 -1
  794. package/dist/mcp/screen-memory-stdio.d.ts +2 -0
  795. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  796. package/dist/mcp/screen-memory-stdio.js +12 -2
  797. package/dist/mcp/screen-memory-stdio.js.map +1 -1
  798. package/dist/notifications/routes.d.ts +1 -1
  799. package/dist/observability/evals.d.ts.map +1 -1
  800. package/dist/observability/evals.js +7 -10
  801. package/dist/observability/evals.js.map +1 -1
  802. package/dist/observability/traces.d.ts +2 -0
  803. package/dist/observability/traces.d.ts.map +1 -1
  804. package/dist/observability/traces.js.map +1 -1
  805. package/dist/org/accept-pending.js +2 -2
  806. package/dist/org/accept-pending.js.map +1 -1
  807. package/dist/org/active-org.d.ts +16 -0
  808. package/dist/org/active-org.d.ts.map +1 -0
  809. package/dist/org/active-org.js +57 -0
  810. package/dist/org/active-org.js.map +1 -0
  811. package/dist/org/auto-join-domain.d.ts.map +1 -1
  812. package/dist/org/auto-join-domain.js +3 -2
  813. package/dist/org/auto-join-domain.js.map +1 -1
  814. package/dist/org/context.d.ts +19 -1
  815. package/dist/org/context.d.ts.map +1 -1
  816. package/dist/org/context.js +159 -71
  817. package/dist/org/context.js.map +1 -1
  818. package/dist/org/handlers.d.ts +24 -1
  819. package/dist/org/handlers.d.ts.map +1 -1
  820. package/dist/org/handlers.js +129 -10
  821. package/dist/org/handlers.js.map +1 -1
  822. package/dist/org/plugin.d.ts +2 -0
  823. package/dist/org/plugin.d.ts.map +1 -1
  824. package/dist/org/plugin.js +9 -2
  825. package/dist/org/plugin.js.map +1 -1
  826. package/dist/org/types.d.ts +6 -1
  827. package/dist/org/types.d.ts.map +1 -1
  828. package/dist/org/types.js.map +1 -1
  829. package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
  830. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  831. package/dist/provider-api/index.d.ts.map +1 -1
  832. package/dist/provider-api/index.js +3 -2
  833. package/dist/provider-api/index.js.map +1 -1
  834. package/dist/resources/handlers.d.ts.map +1 -1
  835. package/dist/resources/handlers.js +2 -7
  836. package/dist/resources/handlers.js.map +1 -1
  837. package/dist/resources/script-helpers.d.ts.map +1 -1
  838. package/dist/resources/script-helpers.js +2 -2
  839. package/dist/resources/script-helpers.js.map +1 -1
  840. package/dist/scripts/chat/search-chats.d.ts.map +1 -1
  841. package/dist/scripts/chat/search-chats.js +2 -2
  842. package/dist/scripts/chat/search-chats.js.map +1 -1
  843. package/dist/scripts/describe-workspace-apps.d.ts +4 -0
  844. package/dist/scripts/describe-workspace-apps.d.ts.map +1 -0
  845. package/dist/scripts/describe-workspace-apps.js +34 -0
  846. package/dist/scripts/describe-workspace-apps.js.map +1 -0
  847. package/dist/scripts/resources/delete-memory.d.ts.map +1 -1
  848. package/dist/scripts/resources/delete-memory.js +2 -2
  849. package/dist/scripts/resources/delete-memory.js.map +1 -1
  850. package/dist/scripts/resources/delete.d.ts.map +1 -1
  851. package/dist/scripts/resources/delete.js +2 -2
  852. package/dist/scripts/resources/delete.js.map +1 -1
  853. package/dist/scripts/resources/effective.d.ts.map +1 -1
  854. package/dist/scripts/resources/effective.js +2 -2
  855. package/dist/scripts/resources/effective.js.map +1 -1
  856. package/dist/scripts/resources/list.d.ts.map +1 -1
  857. package/dist/scripts/resources/list.js +2 -2
  858. package/dist/scripts/resources/list.js.map +1 -1
  859. package/dist/scripts/resources/read.d.ts.map +1 -1
  860. package/dist/scripts/resources/read.js +2 -2
  861. package/dist/scripts/resources/read.js.map +1 -1
  862. package/dist/scripts/resources/save-memory.d.ts.map +1 -1
  863. package/dist/scripts/resources/save-memory.js +2 -2
  864. package/dist/scripts/resources/save-memory.js.map +1 -1
  865. package/dist/scripts/resources/write.d.ts.map +1 -1
  866. package/dist/scripts/resources/write.js +2 -2
  867. package/dist/scripts/resources/write.js.map +1 -1
  868. package/dist/secrets/routes.d.ts +9 -9
  869. package/dist/server/agent-capabilities.d.ts +21 -0
  870. package/dist/server/agent-capabilities.d.ts.map +1 -0
  871. package/dist/server/agent-capabilities.js +106 -0
  872. package/dist/server/agent-capabilities.js.map +1 -0
  873. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  874. package/dist/server/agent-chat/framework-prompts.js +11 -13
  875. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  876. package/dist/server/agent-chat/prompt-resources.d.ts +32 -0
  877. package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
  878. package/dist/server/agent-chat/prompt-resources.js +117 -56
  879. package/dist/server/agent-chat/prompt-resources.js.map +1 -1
  880. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  881. package/dist/server/agent-chat/script-entries.js +18 -8
  882. package/dist/server/agent-chat/script-entries.js.map +1 -1
  883. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  884. package/dist/server/agent-chat-plugin.js +27 -1
  885. package/dist/server/agent-chat-plugin.js.map +1 -1
  886. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  887. package/dist/server/auth.d.ts +9 -9
  888. package/dist/server/auth.d.ts.map +1 -1
  889. package/dist/server/auth.js +32 -33
  890. package/dist/server/auth.js.map +1 -1
  891. package/dist/server/core-routes-plugin.d.ts +45 -0
  892. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  893. package/dist/server/core-routes-plugin.js +162 -139
  894. package/dist/server/core-routes-plugin.js.map +1 -1
  895. package/dist/server/credential-provider.d.ts +35 -2
  896. package/dist/server/credential-provider.d.ts.map +1 -1
  897. package/dist/server/credential-provider.js +155 -40
  898. package/dist/server/credential-provider.js.map +1 -1
  899. package/dist/server/embed-session.d.ts.map +1 -1
  900. package/dist/server/embed-session.js +10 -0
  901. package/dist/server/embed-session.js.map +1 -1
  902. package/dist/server/framework-request-handler.d.ts.map +1 -1
  903. package/dist/server/framework-request-handler.js +38 -0
  904. package/dist/server/framework-request-handler.js.map +1 -1
  905. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  906. package/dist/server/google-auth-plugin.js +12 -444
  907. package/dist/server/google-auth-plugin.js.map +1 -1
  908. package/dist/server/index.d.ts +2 -2
  909. package/dist/server/index.d.ts.map +1 -1
  910. package/dist/server/index.js +2 -2
  911. package/dist/server/index.js.map +1 -1
  912. package/dist/server/onboarding-html.d.ts.map +1 -1
  913. package/dist/server/onboarding-html.js +20 -56
  914. package/dist/server/onboarding-html.js.map +1 -1
  915. package/dist/server/open-route.d.ts.map +1 -1
  916. package/dist/server/open-route.js +6 -1
  917. package/dist/server/open-route.js.map +1 -1
  918. package/dist/server/poll.js +1 -1
  919. package/dist/server/poll.js.map +1 -1
  920. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  921. package/dist/server/prompts/framework-core-compact.js +5 -6
  922. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  923. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  924. package/dist/server/prompts/framework-core.js +7 -10
  925. package/dist/server/prompts/framework-core.js.map +1 -1
  926. package/dist/server/prompts/shared-rules.d.ts +20 -2
  927. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  928. package/dist/server/prompts/shared-rules.js +20 -10
  929. package/dist/server/prompts/shared-rules.js.map +1 -1
  930. package/dist/server/request-context.d.ts +26 -1
  931. package/dist/server/request-context.d.ts.map +1 -1
  932. package/dist/server/request-context.js +52 -2
  933. package/dist/server/request-context.js.map +1 -1
  934. package/dist/server/scoped-key-storage.js +1 -1
  935. package/dist/server/scoped-key-storage.js.map +1 -1
  936. package/dist/settings/org-settings.d.ts +2 -0
  937. package/dist/settings/org-settings.d.ts.map +1 -1
  938. package/dist/settings/org-settings.js +5 -1
  939. package/dist/settings/org-settings.js.map +1 -1
  940. package/dist/settings/store.d.ts +6 -0
  941. package/dist/settings/store.d.ts.map +1 -1
  942. package/dist/settings/store.js +25 -0
  943. package/dist/settings/store.js.map +1 -1
  944. package/dist/shared/index.d.ts +1 -0
  945. package/dist/shared/index.d.ts.map +1 -1
  946. package/dist/shared/index.js +1 -0
  947. package/dist/shared/index.js.map +1 -1
  948. package/dist/shared/sign-in-journey.d.ts +102 -0
  949. package/dist/shared/sign-in-journey.d.ts.map +1 -0
  950. package/dist/shared/sign-in-journey.js +269 -0
  951. package/dist/shared/sign-in-journey.js.map +1 -0
  952. package/dist/styles/agent-native.css +8 -0
  953. package/dist/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  954. package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  955. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  956. package/dist/templates/chat/.agents/skills/security/SKILL.md +2 -0
  957. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  958. package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  959. package/dist/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  960. package/dist/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  961. package/dist/templates/chat/AGENTS.md +8 -0
  962. package/dist/templates/chat/app/entry.client.tsx +3 -0
  963. package/dist/templates/default/.agents/skills/actions/SKILL.md +19 -1
  964. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  965. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  966. package/dist/templates/default/.agents/skills/security/SKILL.md +2 -0
  967. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  968. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  969. package/dist/templates/default/AGENTS.md +68 -195
  970. package/dist/templates/default/app/entry.client.tsx +3 -0
  971. package/dist/templates/default/app/i18n/ar-SA.ts +8 -0
  972. package/dist/templates/default/app/i18n/de-DE.ts +8 -0
  973. package/dist/templates/default/app/i18n/en-US.ts +8 -0
  974. package/dist/templates/default/app/i18n/es-ES.ts +8 -0
  975. package/dist/templates/default/app/i18n/fr-FR.ts +8 -0
  976. package/dist/templates/default/app/i18n/hi-IN.ts +8 -0
  977. package/dist/templates/default/app/i18n/ja-JP.ts +8 -0
  978. package/dist/templates/default/app/i18n/ko-KR.ts +8 -0
  979. package/dist/templates/default/app/i18n/pt-BR.ts +8 -0
  980. package/dist/templates/default/app/i18n/zh-CN.ts +8 -0
  981. package/dist/templates/default/app/i18n/zh-TW.ts +8 -0
  982. package/dist/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  983. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  984. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  985. package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  986. package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  987. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  988. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  989. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  990. package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  991. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  992. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  993. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  994. package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  995. package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  996. package/dist/templates/workspace-core/AGENTS.md +62 -124
  997. package/dist/templates/workspace-root/AGENTS.md +6 -1
  998. package/dist/triggers/dispatcher.d.ts.map +1 -1
  999. package/dist/triggers/dispatcher.js +10 -3
  1000. package/dist/triggers/dispatcher.js.map +1 -1
  1001. package/dist/vite/client.d.ts.map +1 -1
  1002. package/dist/vite/client.js +18 -8
  1003. package/dist/vite/client.js.map +1 -1
  1004. package/docs/content/actions.mdx +33 -20
  1005. package/docs/content/agent-mentions.mdx +30 -19
  1006. package/docs/content/agent-native-toolkit.mdx +8 -6
  1007. package/docs/content/agent-resources.mdx +11 -0
  1008. package/docs/content/agent-surfaces.mdx +41 -30
  1009. package/docs/content/audit-log.mdx +78 -0
  1010. package/docs/content/authentication.mdx +7 -5
  1011. package/docs/content/automations.mdx +15 -9
  1012. package/docs/content/client.mdx +11 -11
  1013. package/docs/content/cloneable-saas.mdx +7 -1
  1014. package/docs/content/code-agents-ui.mdx +9 -1
  1015. package/docs/content/components.mdx +7 -0
  1016. package/docs/content/context-awareness.mdx +1 -0
  1017. package/docs/content/creating-templates.mdx +9 -1
  1018. package/docs/content/custom-design-system.mdx +8 -0
  1019. package/docs/content/data-programs.mdx +6 -0
  1020. package/docs/content/deployment.mdx +2 -0
  1021. package/docs/content/doctor.mdx +5 -3
  1022. package/docs/content/extensions.mdx +26 -0
  1023. package/docs/content/external-agents-catalog.mdx +533 -0
  1024. package/docs/content/external-agents.mdx +20 -514
  1025. package/docs/content/faq.mdx +2 -2
  1026. package/docs/content/file-uploads.mdx +44 -0
  1027. package/docs/content/frames.mdx +2 -2
  1028. package/docs/content/generative-ui.mdx +8 -0
  1029. package/docs/content/getting-started.mdx +45 -17
  1030. package/docs/content/human-approval.mdx +9 -0
  1031. package/docs/content/integrations.mdx +4 -3
  1032. package/docs/content/internationalization.mdx +4 -11
  1033. package/docs/content/key-concepts.mdx +1 -1
  1034. package/docs/content/local-file-mode.mdx +5 -0
  1035. package/docs/content/mcp-apps.mdx +2 -1
  1036. package/docs/content/mcp-clients.mdx +32 -1
  1037. package/docs/content/mcp-protocol.mdx +4 -3
  1038. package/docs/content/messaging-internals.mdx +328 -0
  1039. package/docs/content/messaging-recipes.mdx +194 -0
  1040. package/docs/content/messaging.mdx +9 -307
  1041. package/docs/content/multi-app-workspace.mdx +1 -1
  1042. package/docs/content/multi-tenancy.mdx +1 -0
  1043. package/docs/content/native-chat-ui.mdx +8 -0
  1044. package/docs/content/notifications.mdx +18 -20
  1045. package/docs/content/observability.mdx +1 -0
  1046. package/docs/content/onboarding.mdx +20 -6
  1047. package/docs/content/organizations-teams-permissions.mdx +99 -124
  1048. package/docs/content/package-lifecycle.mdx +19 -7
  1049. package/docs/content/progress.mdx +11 -0
  1050. package/docs/content/real-time-collaboration.mdx +44 -3
  1051. package/docs/content/recurring-jobs.mdx +14 -1
  1052. package/docs/content/security.mdx +5 -2
  1053. package/docs/content/server.mdx +2 -1
  1054. package/docs/content/sharing.mdx +22 -3
  1055. package/docs/content/skills-guide.mdx +62 -19
  1056. package/docs/content/syncing-template-changes.mdx +9 -0
  1057. package/docs/content/template-analytics-connectors.mdx +75 -0
  1058. package/docs/content/template-analytics-dashboards.mdx +106 -0
  1059. package/docs/content/template-analytics-developers.mdx +287 -0
  1060. package/docs/content/template-analytics-monitoring-and-sessions.mdx +109 -0
  1061. package/docs/content/template-analytics.mdx +21 -263
  1062. package/docs/content/template-assets-developers.mdx +456 -0
  1063. package/docs/content/template-assets-generation.mdx +147 -0
  1064. package/docs/content/template-assets-integrations.mdx +319 -0
  1065. package/docs/content/template-assets-presets.mdx +185 -0
  1066. package/docs/content/template-assets.mdx +12 -562
  1067. package/docs/content/template-brain-agent.mdx +103 -0
  1068. package/docs/content/template-brain-developers.mdx +379 -0
  1069. package/docs/content/template-brain-knowledge.mdx +50 -0
  1070. package/docs/content/template-brain-sources.mdx +163 -0
  1071. package/docs/content/template-brain.mdx +30 -390
  1072. package/docs/content/template-calendar-agent.mdx +133 -0
  1073. package/docs/content/template-calendar-booking-links.mdx +73 -0
  1074. package/docs/content/template-calendar-developers.mdx +366 -0
  1075. package/docs/content/template-calendar-scheduling.mdx +128 -0
  1076. package/docs/content/template-calendar.mdx +13 -260
  1077. package/docs/content/template-chat-developers.mdx +88 -0
  1078. package/docs/content/template-chat-first-edits.mdx +145 -0
  1079. package/docs/content/template-chat.mdx +12 -77
  1080. package/docs/content/template-clips-ai-and-editing.mdx +114 -0
  1081. package/docs/content/template-clips-capture-everywhere.mdx +120 -0
  1082. package/docs/content/template-clips-developers.mdx +373 -0
  1083. package/docs/content/template-clips-sharing-and-teams.mdx +182 -0
  1084. package/docs/content/template-clips.mdx +19 -508
  1085. package/docs/content/template-content-databases.mdx +406 -0
  1086. package/docs/content/template-content-developers.mdx +364 -0
  1087. package/docs/content/template-content-editing.mdx +60 -0
  1088. package/docs/content/template-content-sync.mdx +149 -0
  1089. package/docs/content/template-content.mdx +21 -561
  1090. package/docs/content/template-design-brand-and-figma.mdx +150 -0
  1091. package/docs/content/template-design-collaboration-and-full-apps.mdx +125 -0
  1092. package/docs/content/template-design-developers.mdx +358 -0
  1093. package/docs/content/template-design-quality-and-components.mdx +95 -0
  1094. package/docs/content/template-design.mdx +20 -344
  1095. package/docs/content/template-dispatch-developers.mdx +121 -0
  1096. package/docs/content/template-dispatch-messaging-routing.mdx +114 -0
  1097. package/docs/content/template-dispatch-operations.mdx +160 -0
  1098. package/docs/content/template-dispatch-vault-integrations.mdx +316 -0
  1099. package/docs/content/template-dispatch.mdx +24 -283
  1100. package/docs/content/template-forms-building-publishing.mdx +135 -0
  1101. package/docs/content/template-forms-developers.mdx +195 -0
  1102. package/docs/content/template-forms-responses.mdx +120 -0
  1103. package/docs/content/template-forms.mdx +21 -230
  1104. package/docs/content/template-mail-agent.mdx +114 -0
  1105. package/docs/content/template-mail-developers.mdx +356 -0
  1106. package/docs/content/template-mail-drafts-and-queue.mdx +103 -0
  1107. package/docs/content/template-mail-inbox.mdx +118 -0
  1108. package/docs/content/template-mail.mdx +23 -274
  1109. package/docs/content/template-plan-automations.mdx +213 -0
  1110. package/docs/content/template-plan-developers.mdx +703 -0
  1111. package/docs/content/template-plan-local-and-desktop.mdx +236 -0
  1112. package/docs/content/template-plan-review-workflow.mdx +180 -0
  1113. package/docs/content/template-plan.mdx +60 -910
  1114. package/docs/content/template-slides-agent.mdx +102 -0
  1115. package/docs/content/template-slides-design-and-media.mdx +94 -0
  1116. package/docs/content/template-slides-developers.mdx +488 -0
  1117. package/docs/content/template-slides-editing.mdx +56 -0
  1118. package/docs/content/template-slides.mdx +20 -362
  1119. package/docs/content/toolkit-capability-packages.mdx +38 -13
  1120. package/docs/content/toolkit-context-knowledge.mdx +49 -9
  1121. package/docs/content/toolkit-editors-canvases.mdx +72 -10
  1122. package/docs/content/toolkit-resources.mdx +16 -0
  1123. package/docs/content/toolkit-settings.mdx +3 -3
  1124. package/docs/content/toolkit-sharing.mdx +5 -7
  1125. package/docs/content/using-your-agent.mdx +25 -2
  1126. package/docs/content/voice-input.mdx +11 -7
  1127. package/docs/content/what-is-agent-native.mdx +1 -0
  1128. package/docs/content/workspace-connections.mdx +21 -11
  1129. package/docs/content/workspace-management.mdx +1 -1
  1130. package/package.json +2 -4
  1131. package/src/a2a/client.ts +4 -2
  1132. package/src/agent/action-warnings.ts +103 -0
  1133. package/src/agent/durable-background.ts +42 -5
  1134. package/src/agent/engine/ai-sdk-engine.ts +58 -6
  1135. package/src/agent/engine/anthropic-engine.ts +51 -8
  1136. package/src/agent/engine/builder-engine.ts +56 -18
  1137. package/src/agent/engine/continuation-dispatch-retry.ts +10 -9
  1138. package/src/agent/engine/credential-errors.ts +11 -0
  1139. package/src/agent/engine/error-detail.ts +39 -0
  1140. package/src/agent/engine/prompt-cache.ts +44 -0
  1141. package/src/agent/engine/registry.ts +22 -30
  1142. package/src/agent/engine/tool-call-journal-seed.ts +2 -1
  1143. package/src/agent/engine/translate-anthropic.ts +99 -0
  1144. package/src/agent/loop-settings.ts +94 -7
  1145. package/src/agent/production-agent.ts +667 -157
  1146. package/src/agent/run-loop-with-resume.ts +27 -1
  1147. package/src/agent/run-manager.ts +229 -39
  1148. package/src/agent/run-store.ts +397 -64
  1149. package/src/agent/thread-data-builder.ts +5 -1
  1150. package/src/agent/types.ts +23 -6
  1151. package/src/application-state/script-helpers.ts +5 -2
  1152. package/src/cli/agents.ts +69 -1
  1153. package/src/cli/app-skill.ts +1 -1
  1154. package/src/cli/code-agent-executor.ts +7 -3
  1155. package/src/cli/design-connect.ts +82 -8
  1156. package/src/cli/index.ts +2 -1
  1157. package/src/cli/mcp.ts +13 -3
  1158. package/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
  1159. package/src/cli/skills-content/rewind-skill.ts +36 -4
  1160. package/src/cli/skills.ts +250 -37
  1161. package/src/cli/telemetry-routing.ts +57 -0
  1162. package/src/cli/telemetry.ts +3 -3
  1163. package/src/client/AssistantChat.tsx +623 -607
  1164. package/src/client/agent-chat-adapter.ts +176 -29
  1165. package/src/client/chat/message-components.tsx +13 -0
  1166. package/src/client/embed-auth.ts +3 -1
  1167. package/src/client/integrations/IntegrationCard.tsx +41 -24
  1168. package/src/client/integrations/IntegrationsPanel.tsx +37 -21
  1169. package/src/client/integrations/webhook-url.ts +29 -0
  1170. package/src/client/org/OrgSwitcher.tsx +41 -27
  1171. package/src/client/org/RequireActiveOrg.tsx +7 -0
  1172. package/src/client/org/TeamPage.tsx +144 -14
  1173. package/src/client/org/hooks.ts +27 -0
  1174. package/src/client/org/index.ts +2 -0
  1175. package/src/client/require-session.tsx +40 -29
  1176. package/src/client/session-replay.ts +1 -1
  1177. package/src/client/settings/DemoModeSection.tsx +0 -5
  1178. package/src/client/settings/SecretsSection.tsx +47 -42
  1179. package/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
  1180. package/src/client/sse-event-processor.ts +83 -8
  1181. package/src/client/use-action.ts +22 -13
  1182. package/src/client/use-agent-engine-configured.ts +36 -4
  1183. package/src/client/use-db-sync.ts +21 -1
  1184. package/src/credentials/index.ts +124 -2
  1185. package/src/deploy/build.ts +93 -30
  1186. package/src/deploy/workspace-deploy.ts +21 -16
  1187. package/src/guards/no-localhost-fallback.ts +76 -14
  1188. package/src/integrations/google-docs-poller.ts +19 -12
  1189. package/src/integrations/webhook-handler.ts +56 -33
  1190. package/src/jobs/scheduler.ts +57 -23
  1191. package/src/localization/default-messages.ts +23 -1
  1192. package/src/mcp/screen-memory-stdio.ts +21 -2
  1193. package/src/observability/evals.ts +7 -8
  1194. package/src/observability/traces.ts +2 -0
  1195. package/src/org/accept-pending.ts +2 -2
  1196. package/src/org/active-org.ts +73 -0
  1197. package/src/org/auto-join-domain.ts +7 -2
  1198. package/src/org/context.ts +169 -66
  1199. package/src/org/handlers.ts +148 -10
  1200. package/src/org/plugin.ts +8 -1
  1201. package/src/org/types.ts +6 -1
  1202. package/src/provider-api/index.ts +6 -1
  1203. package/src/resources/handlers.ts +2 -6
  1204. package/src/resources/script-helpers.ts +2 -1
  1205. package/src/scripts/chat/search-chats.ts +5 -2
  1206. package/src/scripts/describe-workspace-apps.ts +59 -0
  1207. package/src/scripts/resources/delete-memory.ts +5 -2
  1208. package/src/scripts/resources/delete.ts +5 -2
  1209. package/src/scripts/resources/effective.ts +5 -2
  1210. package/src/scripts/resources/list.ts +5 -2
  1211. package/src/scripts/resources/read.ts +5 -2
  1212. package/src/scripts/resources/save-memory.ts +5 -2
  1213. package/src/scripts/resources/write.ts +5 -2
  1214. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +11 -31
  1215. package/src/server/agent-capabilities.ts +147 -0
  1216. package/src/server/agent-chat/framework-prompts.ts +11 -13
  1217. package/src/server/agent-chat/prompt-resources.ts +183 -57
  1218. package/src/server/agent-chat/script-entries.ts +20 -7
  1219. package/src/server/agent-chat-plugin.ts +27 -0
  1220. package/src/server/auth.ts +38 -32
  1221. package/src/server/core-routes-plugin.ts +229 -179
  1222. package/src/server/credential-provider.ts +196 -44
  1223. package/src/server/embed-session.ts +10 -0
  1224. package/src/server/framework-request-handler.ts +43 -0
  1225. package/src/server/google-auth-plugin.ts +13 -450
  1226. package/src/server/index.ts +4 -1
  1227. package/src/server/onboarding-html.ts +20 -56
  1228. package/src/server/open-route.ts +6 -1
  1229. package/src/server/poll.ts +1 -1
  1230. package/src/server/prompts/framework-core-compact.ts +5 -5
  1231. package/src/server/prompts/framework-core.ts +7 -9
  1232. package/src/server/prompts/shared-rules.ts +20 -9
  1233. package/src/server/request-context.ts +58 -2
  1234. package/src/server/scoped-key-storage.ts +1 -1
  1235. package/src/settings/org-settings.ts +9 -0
  1236. package/src/settings/store.ts +29 -0
  1237. package/src/shared/index.ts +13 -0
  1238. package/src/shared/sign-in-journey.ts +331 -0
  1239. package/src/styles/agent-native.css +8 -0
  1240. package/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  1241. package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1242. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  1243. package/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
  1244. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1245. package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1246. package/src/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  1247. package/src/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  1248. package/src/templates/chat/AGENTS.md +8 -0
  1249. package/src/templates/chat/app/entry.client.tsx +3 -0
  1250. package/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
  1251. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1252. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  1253. package/src/templates/default/.agents/skills/security/SKILL.md +2 -0
  1254. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1255. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1256. package/src/templates/default/AGENTS.md +68 -195
  1257. package/src/templates/default/app/entry.client.tsx +3 -0
  1258. package/src/templates/default/app/i18n/ar-SA.ts +8 -0
  1259. package/src/templates/default/app/i18n/de-DE.ts +8 -0
  1260. package/src/templates/default/app/i18n/en-US.ts +8 -0
  1261. package/src/templates/default/app/i18n/es-ES.ts +8 -0
  1262. package/src/templates/default/app/i18n/fr-FR.ts +8 -0
  1263. package/src/templates/default/app/i18n/hi-IN.ts +8 -0
  1264. package/src/templates/default/app/i18n/ja-JP.ts +8 -0
  1265. package/src/templates/default/app/i18n/ko-KR.ts +8 -0
  1266. package/src/templates/default/app/i18n/pt-BR.ts +8 -0
  1267. package/src/templates/default/app/i18n/zh-CN.ts +8 -0
  1268. package/src/templates/default/app/i18n/zh-TW.ts +8 -0
  1269. package/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  1270. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  1271. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1272. package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  1273. package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  1274. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  1275. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  1276. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  1277. package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  1278. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  1279. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1280. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1281. package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  1282. package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  1283. package/src/templates/workspace-core/AGENTS.md +62 -124
  1284. package/src/templates/workspace-root/AGENTS.md +6 -1
  1285. package/src/triggers/dispatcher.ts +28 -17
  1286. package/src/vite/client.ts +20 -8
  1287. package/corpus/core/src/client/components/MissingKeyCard.tsx +0 -61
  1288. package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +0 -495
  1289. package/corpus/core/src/client/settings/BackgroundAgentSection.tsx +0 -193
  1290. package/corpus/core/src/client/settings/BrowserSection.tsx +0 -110
  1291. package/corpus/templates/analytics/app/components/InlineMetric.tsx +0 -31
  1292. package/corpus/templates/analytics/app/components/auth/LoginScreen.tsx +0 -4
  1293. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +0 -128
  1294. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +0 -264
  1295. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +0 -84
  1296. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +0 -92
  1297. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +0 -154
  1298. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +0 -49
  1299. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +0 -120
  1300. package/corpus/templates/analytics/server/handlers/dashboard-views.ts +0 -85
  1301. package/corpus/templates/analytics/server/handlers/user-prefs.ts +0 -58
  1302. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId]/[viewId].delete.ts +0 -1
  1303. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].get.ts +0 -1
  1304. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].post.ts +0 -1
  1305. package/corpus/templates/analytics/server/routes/api/theme.get.ts +0 -17
  1306. package/corpus/templates/analytics/server/routes/api/theme.post.ts +0 -15
  1307. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].delete.ts +0 -1
  1308. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].get.ts +0 -1
  1309. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].put.ts +0 -1
  1310. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +0 -156
  1311. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +0 -213
  1312. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +0 -49
  1313. package/corpus/templates/calendar/server/routes/api/events/[id].delete.ts +0 -1
  1314. package/corpus/templates/calendar/server/routes/api/events/[id].get.ts +0 -1
  1315. package/corpus/templates/calendar/server/routes/api/events/[id].put.ts +0 -1
  1316. package/corpus/templates/content/app/components/layout/AppLayout.tsx +0 -9
  1317. package/corpus/templates/content/server/routes/api/comments/[id].delete.ts +0 -69
  1318. package/corpus/templates/content/server/routes/api/comments/[id].patch.ts +0 -109
  1319. package/corpus/templates/content/server/routes/api/documents/[id]/versions.get.ts +0 -53
  1320. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +0 -85
  1321. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +0 -129
  1322. package/corpus/templates/forms/app/components/layout/AppLayout.tsx +0 -9
  1323. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +0 -213
  1324. package/corpus/templates/mail/server/handlers/aliases.ts +0 -98
  1325. package/corpus/templates/mail/server/routes/api/aliases/[id].delete.ts +0 -1
  1326. package/corpus/templates/mail/server/routes/api/aliases/[id].patch.ts +0 -1
  1327. package/corpus/templates/mail/server/routes/api/aliases/index.get.ts +0 -1
  1328. package/corpus/templates/mail/server/routes/api/aliases/index.post.ts +0 -1
  1329. package/corpus/templates/mail/server/routes/api/automations/[id].delete.ts +0 -1
  1330. package/corpus/templates/mail/server/routes/api/automations/[id].patch.ts +0 -1
  1331. package/corpus/templates/mail/server/routes/api/automations/index.get.ts +0 -1
  1332. package/corpus/templates/mail/server/routes/api/automations/index.post.ts +0 -1
  1333. package/corpus/templates/mail/server/routes/api/automations/settings.get.ts +0 -22
  1334. package/corpus/templates/mail/server/routes/api/automations/settings.put.ts +0 -25
  1335. package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].delete.ts +0 -1
  1336. package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].patch.ts +0 -1
  1337. package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.get.ts +0 -1
  1338. package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.post.ts +0 -1
  1339. package/corpus/templates/mail/server/routes/api/settings.get.ts +0 -1
  1340. package/corpus/templates/mail/server/routes/api/settings.patch.ts +0 -1
  1341. package/corpus/templates/slides/app/components/deck/BuilderLogo.tsx +0 -22
  1342. package/corpus/templates/slides/app/components/design-system/DesignSystemPreview.tsx +0 -176
  1343. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +0 -244
  1344. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +0 -84
  1345. package/corpus/templates/slides/server/routes/api/comments/[id].delete.ts +0 -43
  1346. package/corpus/templates/slides/server/routes/api/comments/[id].patch.ts +0 -50
  1347. package/corpus/templates/slides/server/routes/api/decks/[id].delete.ts +0 -1
  1348. package/corpus/templates/slides/server/routes/api/decks/[id].get.ts +0 -1
  1349. package/corpus/templates/slides/server/routes/api/decks/[id].put.ts +0 -1
  1350. package/corpus/templates/slides/server/routes/api/decks/index.get.ts +0 -1
  1351. package/corpus/templates/slides/server/routes/api/decks/index.post.ts +0 -1
  1352. package/dist/client/components/MissingKeyCard.d.ts +0 -7
  1353. package/dist/client/components/MissingKeyCard.d.ts.map +0 -1
  1354. package/dist/client/components/MissingKeyCard.js +0 -32
  1355. package/dist/client/components/MissingKeyCard.js.map +0 -1
  1356. package/dist/client/extensions/agent-native-extension-runtime.d.ts +0 -69
  1357. package/dist/client/extensions/agent-native-extension-runtime.d.ts.map +0 -1
  1358. package/dist/client/extensions/agent-native-extension-runtime.js +0 -348
  1359. package/dist/client/extensions/agent-native-extension-runtime.js.map +0 -1
  1360. package/dist/client/settings/BackgroundAgentSection.d.ts +0 -2
  1361. package/dist/client/settings/BackgroundAgentSection.d.ts.map +0 -1
  1362. package/dist/client/settings/BackgroundAgentSection.js +0 -68
  1363. package/dist/client/settings/BackgroundAgentSection.js.map +0 -1
  1364. package/dist/client/settings/BrowserSection.d.ts +0 -2
  1365. package/dist/client/settings/BrowserSection.d.ts.map +0 -1
  1366. package/dist/client/settings/BrowserSection.js +0 -40
  1367. package/dist/client/settings/BrowserSection.js.map +0 -1
  1368. package/dist/templates/chat/.react-router/types/+server-build.d.ts +0 -18
  1369. package/dist/templates/chat/.react-router/types/app/+types/root.ts +0 -68
  1370. package/src/client/components/MissingKeyCard.tsx +0 -61
  1371. package/src/client/extensions/agent-native-extension-runtime.ts +0 -495
  1372. package/src/client/settings/BackgroundAgentSection.tsx +0 -193
  1373. package/src/client/settings/BrowserSection.tsx +0 -110
  1374. package/src/templates/chat/.react-router/types/+server-build.d.ts +0 -18
  1375. package/src/templates/chat/.react-router/types/app/+types/root.ts +0 -68
@@ -7,7 +7,7 @@
7
7
  * pnpm action resource-list [--prefix <path>] [--scope personal|shared|workspace|all] [--format json|text] [--include-agent-scratch true]
8
8
  */
9
9
  import { resourceList, resourceListAccessible, ensurePersonalDefaults, SHARED_OWNER, WORKSPACE_OWNER, } from "../../resources/store.js";
10
- import { getRequestUserEmail } from "../../server/request-context.js";
10
+ import { getAmbientUserEmail, getRequestUserEmail, } from "../../server/request-context.js";
11
11
  import { parseArgs, fail } from "../utils.js";
12
12
  export default async function resourceListScript(args) {
13
13
  const parsed = parseArgs(args);
@@ -29,7 +29,7 @@ Options:
29
29
  const includeAgentScratch = parsed["include-agent-scratch"] === "true" ||
30
30
  parsed.includeAgentScratch === "true" ||
31
31
  parsed.includeScratch === "true";
32
- const owner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;
32
+ const owner = getRequestUserEmail() ?? getAmbientUserEmail();
33
33
  if (!owner) {
34
34
  fail("resource-list requires an authenticated user (request context or AGENT_USER_EMAIL env var).");
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/scripts/resources/list.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Core script: resource-list\n *\n * List resources stored in the SQL resource store.\n *\n * Usage:\n * pnpm action resource-list [--prefix <path>] [--scope personal|shared|workspace|all] [--format json|text] [--include-agent-scratch true]\n */\n\nimport {\n resourceList,\n resourceListAccessible,\n ensurePersonalDefaults,\n SHARED_OWNER,\n WORKSPACE_OWNER,\n} from \"../../resources/store.js\";\nimport { getRequestUserEmail } from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nexport default async function resourceListScript(\n args: string[],\n): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(`Usage: pnpm action resource-list [options]\n\nOptions:\n --prefix <path> Filter by path prefix\n --scope personal|shared|workspace|all\n Scope to list (default: all)\n --format json|text Output format (default: text)\n --include-agent-scratch true Include hidden agent scratch files\n --help Show this help message`);\n return;\n }\n\n const prefix = parsed.prefix;\n const scope = parsed.scope ?? \"all\";\n const format = parsed.format ?? \"text\";\n const includeAgentScratch =\n parsed[\"include-agent-scratch\"] === \"true\" ||\n parsed.includeAgentScratch === \"true\" ||\n parsed.includeScratch === \"true\";\n const owner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;\n if (!owner) {\n fail(\n \"resource-list requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n\n // Seed personal AGENTS.md + LEARNINGS.md on first access\n if (scope !== \"shared\" && scope !== \"workspace\") {\n await ensurePersonalDefaults(owner);\n }\n\n let resources;\n if (scope === \"personal\") {\n resources = includeAgentScratch\n ? await resourceList(owner, prefix, { includeAgentScratch: true })\n : await resourceList(owner, prefix);\n } else if (scope === \"shared\") {\n resources = includeAgentScratch\n ? await resourceList(SHARED_OWNER, prefix, { includeAgentScratch: true })\n : await resourceList(SHARED_OWNER, prefix);\n } else if (scope === \"workspace\") {\n resources = includeAgentScratch\n ? await resourceList(WORKSPACE_OWNER, prefix, {\n includeAgentScratch: true,\n })\n : await resourceList(WORKSPACE_OWNER, prefix);\n } else {\n resources = includeAgentScratch\n ? await resourceListAccessible(owner, prefix, {\n includeAgentScratch: true,\n })\n : await resourceListAccessible(owner, prefix);\n }\n\n if (format === \"json\") {\n console.log(JSON.stringify(resources, null, 2));\n return;\n }\n\n // Human-readable output\n if (resources.length === 0) {\n console.log(\"No resources found.\");\n return;\n }\n\n console.log(`Resources: ${resources.length}\\n`);\n\n for (const r of resources) {\n const ownerLabel =\n r.owner === WORKSPACE_OWNER\n ? \"[workspace]\"\n : r.owner === SHARED_OWNER\n ? \"[shared]\"\n : `[${r.owner}]`;\n const sizeLabel = r.size != null ? ` (${r.size} bytes)` : \"\";\n console.log(` ${r.path} ${ownerLabel}${sizeLabel} ${r.mimeType}`);\n }\n}\n"]}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/scripts/resources/list.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,EACZ,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAC9C,IAAc;IAEd,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC;;;;;;;;sDAQsC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IACvC,MAAM,mBAAmB,GACvB,MAAM,CAAC,uBAAuB,CAAC,KAAK,MAAM;QAC1C,MAAM,CAAC,mBAAmB,KAAK,MAAM;QACrC,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC;IACnC,MAAM,KAAK,GAAG,mBAAmB,EAAE,IAAI,mBAAmB,EAAE,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CACF,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAChD,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC;IACd,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,SAAS,GAAG,mBAAmB;YAC7B,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;YAClE,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,SAAS,GAAG,mBAAmB;YAC7B,CAAC,CAAC,MAAM,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;YACzE,CAAC,CAAC,MAAM,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,SAAS,GAAG,mBAAmB;YAC7B,CAAC,CAAC,MAAM,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE;gBAC1C,mBAAmB,EAAE,IAAI;aAC1B,CAAC;YACJ,CAAC,CAAC,MAAM,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,mBAAmB;YAC7B,CAAC,CAAC,MAAM,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE;gBAC1C,mBAAmB,EAAE,IAAI;aAC1B,CAAC;YACJ,CAAC,CAAC,MAAM,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IAEhD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,GACd,CAAC,CAAC,KAAK,KAAK,eAAe;YACzB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY;gBACxB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;QACvB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,GAAG,SAAS,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC","sourcesContent":["/**\n * Core script: resource-list\n *\n * List resources stored in the SQL resource store.\n *\n * Usage:\n * pnpm action resource-list [--prefix <path>] [--scope personal|shared|workspace|all] [--format json|text] [--include-agent-scratch true]\n */\n\nimport {\n resourceList,\n resourceListAccessible,\n ensurePersonalDefaults,\n SHARED_OWNER,\n WORKSPACE_OWNER,\n} from \"../../resources/store.js\";\nimport {\n getAmbientUserEmail,\n getRequestUserEmail,\n} from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nexport default async function resourceListScript(\n args: string[],\n): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(`Usage: pnpm action resource-list [options]\n\nOptions:\n --prefix <path> Filter by path prefix\n --scope personal|shared|workspace|all\n Scope to list (default: all)\n --format json|text Output format (default: text)\n --include-agent-scratch true Include hidden agent scratch files\n --help Show this help message`);\n return;\n }\n\n const prefix = parsed.prefix;\n const scope = parsed.scope ?? \"all\";\n const format = parsed.format ?? \"text\";\n const includeAgentScratch =\n parsed[\"include-agent-scratch\"] === \"true\" ||\n parsed.includeAgentScratch === \"true\" ||\n parsed.includeScratch === \"true\";\n const owner = getRequestUserEmail() ?? getAmbientUserEmail();\n if (!owner) {\n fail(\n \"resource-list requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n\n // Seed personal AGENTS.md + LEARNINGS.md on first access\n if (scope !== \"shared\" && scope !== \"workspace\") {\n await ensurePersonalDefaults(owner);\n }\n\n let resources;\n if (scope === \"personal\") {\n resources = includeAgentScratch\n ? await resourceList(owner, prefix, { includeAgentScratch: true })\n : await resourceList(owner, prefix);\n } else if (scope === \"shared\") {\n resources = includeAgentScratch\n ? await resourceList(SHARED_OWNER, prefix, { includeAgentScratch: true })\n : await resourceList(SHARED_OWNER, prefix);\n } else if (scope === \"workspace\") {\n resources = includeAgentScratch\n ? await resourceList(WORKSPACE_OWNER, prefix, {\n includeAgentScratch: true,\n })\n : await resourceList(WORKSPACE_OWNER, prefix);\n } else {\n resources = includeAgentScratch\n ? await resourceListAccessible(owner, prefix, {\n includeAgentScratch: true,\n })\n : await resourceListAccessible(owner, prefix);\n }\n\n if (format === \"json\") {\n console.log(JSON.stringify(resources, null, 2));\n return;\n }\n\n // Human-readable output\n if (resources.length === 0) {\n console.log(\"No resources found.\");\n return;\n }\n\n console.log(`Resources: ${resources.length}\\n`);\n\n for (const r of resources) {\n const ownerLabel =\n r.owner === WORKSPACE_OWNER\n ? \"[workspace]\"\n : r.owner === SHARED_OWNER\n ? \"[shared]\"\n : `[${r.owner}]`;\n const sizeLabel = r.size != null ? ` (${r.size} bytes)` : \"\";\n console.log(` ${r.path} ${ownerLabel}${sizeLabel} ${r.mimeType}`);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/scripts/resources/read.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,wBAA8B,kBAAkB,CAC9C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAsFf"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/scripts/resources/read.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,wBAA8B,kBAAkB,CAC9C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAsFf"}
@@ -7,7 +7,7 @@
7
7
  * pnpm action resource-read --path <path> [--scope personal|shared|workspace]
8
8
  */
9
9
  import { resourceGetByPath, ensurePersonalDefaults, SHARED_OWNER, WORKSPACE_OWNER, } from "../../resources/store.js";
10
- import { getRequestUserEmail } from "../../server/request-context.js";
10
+ import { getAmbientUserEmail, getRequestUserEmail, } from "../../server/request-context.js";
11
11
  import { parseArgs, fail } from "../utils.js";
12
12
  export default async function resourceReadScript(args) {
13
13
  const parsed = parseArgs(args);
@@ -26,7 +26,7 @@ Options:
26
26
  fail("--path is required. Example: --path LEARNINGS.md");
27
27
  }
28
28
  const scope = parsed.scope;
29
- const owner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;
29
+ const owner = getRequestUserEmail() ?? getAmbientUserEmail();
30
30
  if (!owner) {
31
31
  fail("resource-read requires an authenticated user (request context or AGENT_USER_EMAIL env var).");
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/scripts/resources/read.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAC9C,IAAc;IAEd,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC;;;;;;kDAMkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,mBAAmB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CACF,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAChD,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,uBAAuB,YAAY,qEAAqE,CACzG,CAAC;YACF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,uBAAuB,YAAY,0DAA0D,CAC9F,CAAC;YACF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,4CAA4C;QAC5C,OAAO,CAAC,GAAG,CACT,uBAAuB,YAAY,4DAA4D,CAChG,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACnE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACzE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CACT,uBAAuB,YAAY,0CAA0C,CAC9E,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Core script: resource-read\n *\n * Read a resource and output its content to stdout.\n *\n * Usage:\n * pnpm action resource-read --path <path> [--scope personal|shared|workspace]\n */\n\nimport {\n resourceGetByPath,\n ensurePersonalDefaults,\n SHARED_OWNER,\n WORKSPACE_OWNER,\n} from \"../../resources/store.js\";\nimport { getRequestUserEmail } from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nexport default async function resourceReadScript(\n args: string[],\n): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(`Usage: pnpm action resource-read --path <path> [options]\n\nOptions:\n --path <path> Resource path (required)\n --scope personal|shared|workspace\n Scope to read from (default: personal, falls back to shared then workspace)\n --help Show this help message`);\n return;\n }\n\n const resourcePath = parsed.path;\n if (!resourcePath) {\n fail(\"--path is required. Example: --path LEARNINGS.md\");\n }\n\n const scope = parsed.scope;\n const owner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;\n if (!owner) {\n fail(\n \"resource-read requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n\n // Seed personal AGENTS.md + LEARNINGS.md on first access\n if (scope !== \"shared\" && scope !== \"workspace\") {\n await ensurePersonalDefaults(owner);\n }\n\n if (scope === \"workspace\") {\n const resource = await resourceGetByPath(WORKSPACE_OWNER, resourcePath);\n if (!resource) {\n console.log(\n `Resource not found: ${resourcePath} (scope: workspace). Workspace resources are managed from Dispatch.`,\n );\n return;\n }\n process.stdout.write(resource.content);\n return;\n }\n\n if (scope === \"shared\") {\n const resource = await resourceGetByPath(SHARED_OWNER, resourcePath);\n if (!resource) {\n console.log(\n `Resource not found: ${resourcePath} (scope: shared). You can create it with resource-write.`,\n );\n return;\n }\n process.stdout.write(resource.content);\n return;\n }\n\n // Default: try personal first, then app/organization shared, then workspace.\n const personal = await resourceGetByPath(owner, resourcePath);\n if (personal) {\n process.stdout.write(personal.content);\n return;\n }\n\n if (scope === \"personal\") {\n // Explicit personal scope — don't fall back\n console.log(\n `Resource not found: ${resourcePath} (scope: personal). You can create it with resource-write.`,\n );\n return;\n }\n\n const shared = await resourceGetByPath(SHARED_OWNER, resourcePath);\n if (shared) {\n process.stdout.write(shared.content);\n return;\n }\n\n const workspace = await resourceGetByPath(WORKSPACE_OWNER, resourcePath);\n if (workspace) {\n process.stdout.write(workspace.content);\n return;\n }\n\n console.log(\n `Resource not found: ${resourcePath}. You can create it with resource-write.`,\n );\n}\n"]}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/scripts/resources/read.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Core script: resource-read\n *\n * Read a resource and output its content to stdout.\n *\n * Usage:\n * pnpm action resource-read --path <path> [--scope personal|shared|workspace]\n */\n\nimport {\n resourceGetByPath,\n ensurePersonalDefaults,\n SHARED_OWNER,\n WORKSPACE_OWNER,\n} from \"../../resources/store.js\";\nimport {\n getAmbientUserEmail,\n getRequestUserEmail,\n} from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nexport default async function resourceReadScript(\n args: string[],\n): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(`Usage: pnpm action resource-read --path <path> [options]\n\nOptions:\n --path <path> Resource path (required)\n --scope personal|shared|workspace\n Scope to read from (default: personal, falls back to shared then workspace)\n --help Show this help message`);\n return;\n }\n\n const resourcePath = parsed.path;\n if (!resourcePath) {\n fail(\"--path is required. Example: --path LEARNINGS.md\");\n }\n\n const scope = parsed.scope;\n const owner = getRequestUserEmail() ?? getAmbientUserEmail();\n if (!owner) {\n fail(\n \"resource-read requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n\n // Seed personal AGENTS.md + LEARNINGS.md on first access\n if (scope !== \"shared\" && scope !== \"workspace\") {\n await ensurePersonalDefaults(owner);\n }\n\n if (scope === \"workspace\") {\n const resource = await resourceGetByPath(WORKSPACE_OWNER, resourcePath);\n if (!resource) {\n console.log(\n `Resource not found: ${resourcePath} (scope: workspace). Workspace resources are managed from Dispatch.`,\n );\n return;\n }\n process.stdout.write(resource.content);\n return;\n }\n\n if (scope === \"shared\") {\n const resource = await resourceGetByPath(SHARED_OWNER, resourcePath);\n if (!resource) {\n console.log(\n `Resource not found: ${resourcePath} (scope: shared). You can create it with resource-write.`,\n );\n return;\n }\n process.stdout.write(resource.content);\n return;\n }\n\n // Default: try personal first, then app/organization shared, then workspace.\n const personal = await resourceGetByPath(owner, resourcePath);\n if (personal) {\n process.stdout.write(personal.content);\n return;\n }\n\n if (scope === \"personal\") {\n // Explicit personal scope — don't fall back\n console.log(\n `Resource not found: ${resourcePath} (scope: personal). You can create it with resource-write.`,\n );\n return;\n }\n\n const shared = await resourceGetByPath(SHARED_OWNER, resourcePath);\n if (shared) {\n process.stdout.write(shared.content);\n return;\n }\n\n const workspace = await resourceGetByPath(WORKSPACE_OWNER, resourcePath);\n if (workspace) {\n process.stdout.write(workspace.content);\n return;\n }\n\n console.log(\n `Resource not found: ${resourcePath}. You can create it with resource-write.`,\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"save-memory.d.ts","sourceRoot":"","sources":["../../../src/scripts/resources/save-memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,wBAA8B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF5E"}
1
+ {"version":3,"file":"save-memory.d.ts","sourceRoot":"","sources":["../../../src/scripts/resources/save-memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,wBAA8B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF5E"}
@@ -6,7 +6,7 @@
6
6
  * and maintains a `memory/MEMORY.md` index.
7
7
  */
8
8
  import { resourcePut, resourceGetByPath } from "../../resources/store.js";
9
- import { getRequestUserEmail } from "../../server/request-context.js";
9
+ import { getAmbientUserEmail, getRequestUserEmail, } from "../../server/request-context.js";
10
10
  import { parseArgs, fail } from "../utils.js";
11
11
  const VALID_TYPES = ["user", "feedback", "project", "reference"];
12
12
  const EMPTY_INDEX = `# Memory Index
@@ -26,7 +26,7 @@ export default async function saveMemoryScript(args) {
26
26
  const content = parsed.content;
27
27
  if (!content)
28
28
  fail("--content is required");
29
- const owner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;
29
+ const owner = getRequestUserEmail() ?? getAmbientUserEmail();
30
30
  if (!owner) {
31
31
  fail("save-memory requires an authenticated user (request context or AGENT_USER_EMAIL env var).");
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"save-memory.js","sourceRoot":"","sources":["../../../src/scripts/resources/save-memory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Core script: save-memory\n *\n * Create or update a structured memory entry and its index.\n * Stores memory as a resource at `memory/<name>.md` (personal scope)\n * and maintains a `memory/MEMORY.md` index.\n */\n\nimport { resourcePut, resourceGetByPath } from \"../../resources/store.js\";\nimport { getRequestUserEmail } from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nconst VALID_TYPES = [\"user\", \"feedback\", \"project\", \"reference\"] as const;\n\nconst EMPTY_INDEX = `# Memory Index\n`;\n\nexport default async function saveMemoryScript(args: string[]): Promise<void> {\n const parsed = parseArgs(args);\n\n const name = parsed.name;\n if (!name) fail(\"--name is required (e.g. 'coding-style', 'project-alpha')\");\n\n const type = parsed.type;\n if (!type || !VALID_TYPES.includes(type as any)) {\n fail(`--type is required. Must be one of: ${VALID_TYPES.join(\", \")}`);\n }\n\n const description = parsed.description;\n if (!description) fail(\"--description is required (one-line summary)\");\n\n const content = parsed.content;\n if (!content) fail(\"--content is required\");\n\n const owner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;\n if (!owner) {\n fail(\n \"save-memory requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n const memoryPath = `memory/${name}.md`;\n const indexPath = \"memory/MEMORY.md\";\n const now = new Date().toISOString().slice(0, 10);\n\n // Build the memory file with frontmatter\n const fileContent = `---\ntype: ${type}\ndescription: ${description}\nupdated: ${now}\n---\n\n${content}`;\n\n // Write the memory file\n await resourcePut(owner, memoryPath, fileContent, \"text/markdown\");\n\n // Update the index\n let index: string;\n try {\n const existing = await resourceGetByPath(owner, indexPath);\n index = existing?.content ?? EMPTY_INDEX;\n } catch {\n index = EMPTY_INDEX;\n }\n\n // Parse existing entries (simple line-based: `- [name](file) — description`)\n const lines = index.split(\"\\n\");\n const entryLine = `- [${name}](${name}.md) — ${description}`;\n const entryPrefix = `- [${name}]`;\n\n // Find and replace or append\n let found = false;\n const updatedLines = lines.map((line) => {\n if (line.startsWith(entryPrefix)) {\n found = true;\n return entryLine;\n }\n return line;\n });\n\n if (!found) {\n // Append after the header\n updatedLines.push(entryLine);\n }\n\n const updatedIndex = updatedLines.join(\"\\n\").trimEnd() + \"\\n\";\n\n // Check size\n const lineCount = updatedIndex.split(\"\\n\").length;\n if (lineCount > 200) {\n console.log(\n `Warning: Memory index has ${lineCount} lines (recommended: <200). Consider consolidating or removing old memories.`,\n );\n }\n\n await resourcePut(owner, indexPath, updatedIndex, \"text/markdown\");\n\n console.log(`Saved memory \"${name}\" (${type}): ${description}`);\n}\n"]}
1
+ {"version":3,"file":"save-memory.js","sourceRoot":"","sources":["../../../src/scripts/resources/save-memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AAE1E,MAAM,WAAW,GAAG;CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAE7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAW,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,uCAAuC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,WAAW;QAAE,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,mBAAmB,EAAE,IAAI,mBAAmB,EAAE,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CACF,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,IAAI,KAAK,CAAC;IACvC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,yCAAyC;IACzC,MAAM,WAAW,GAAG;QACd,IAAI;eACG,WAAW;WACf,GAAG;;;EAGZ,OAAO,EAAE,CAAC;IAEV,wBAAwB;IACxB,MAAM,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAEnE,mBAAmB;IACnB,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,KAAK,GAAG,QAAQ,EAAE,OAAO,IAAI,WAAW,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,WAAW,CAAC;IACtB,CAAC;IAED,6EAA6E;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,MAAM,IAAI,KAAK,IAAI,UAAU,WAAW,EAAE,CAAC;IAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,GAAG,CAAC;IAElC,6BAA6B;IAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,0BAA0B;QAC1B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAE9D,aAAa;IACb,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CACT,6BAA6B,SAAS,8EAA8E,CACrH,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,IAAI,MAAM,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC","sourcesContent":["/**\n * Core script: save-memory\n *\n * Create or update a structured memory entry and its index.\n * Stores memory as a resource at `memory/<name>.md` (personal scope)\n * and maintains a `memory/MEMORY.md` index.\n */\n\nimport { resourcePut, resourceGetByPath } from \"../../resources/store.js\";\nimport {\n getAmbientUserEmail,\n getRequestUserEmail,\n} from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nconst VALID_TYPES = [\"user\", \"feedback\", \"project\", \"reference\"] as const;\n\nconst EMPTY_INDEX = `# Memory Index\n`;\n\nexport default async function saveMemoryScript(args: string[]): Promise<void> {\n const parsed = parseArgs(args);\n\n const name = parsed.name;\n if (!name) fail(\"--name is required (e.g. 'coding-style', 'project-alpha')\");\n\n const type = parsed.type;\n if (!type || !VALID_TYPES.includes(type as any)) {\n fail(`--type is required. Must be one of: ${VALID_TYPES.join(\", \")}`);\n }\n\n const description = parsed.description;\n if (!description) fail(\"--description is required (one-line summary)\");\n\n const content = parsed.content;\n if (!content) fail(\"--content is required\");\n\n const owner = getRequestUserEmail() ?? getAmbientUserEmail();\n if (!owner) {\n fail(\n \"save-memory requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n const memoryPath = `memory/${name}.md`;\n const indexPath = \"memory/MEMORY.md\";\n const now = new Date().toISOString().slice(0, 10);\n\n // Build the memory file with frontmatter\n const fileContent = `---\ntype: ${type}\ndescription: ${description}\nupdated: ${now}\n---\n\n${content}`;\n\n // Write the memory file\n await resourcePut(owner, memoryPath, fileContent, \"text/markdown\");\n\n // Update the index\n let index: string;\n try {\n const existing = await resourceGetByPath(owner, indexPath);\n index = existing?.content ?? EMPTY_INDEX;\n } catch {\n index = EMPTY_INDEX;\n }\n\n // Parse existing entries (simple line-based: `- [name](file) — description`)\n const lines = index.split(\"\\n\");\n const entryLine = `- [${name}](${name}.md) — ${description}`;\n const entryPrefix = `- [${name}]`;\n\n // Find and replace or append\n let found = false;\n const updatedLines = lines.map((line) => {\n if (line.startsWith(entryPrefix)) {\n found = true;\n return entryLine;\n }\n return line;\n });\n\n if (!found) {\n // Append after the header\n updatedLines.push(entryLine);\n }\n\n const updatedIndex = updatedLines.join(\"\\n\").trimEnd() + \"\\n\";\n\n // Check size\n const lineCount = updatedIndex.split(\"\\n\").length;\n if (lineCount > 200) {\n console.log(\n `Warning: Memory index has ${lineCount} lines (recommended: <200). Consider consolidating or removing old memories.`,\n );\n }\n\n await resourcePut(owner, indexPath, updatedIndex, \"text/markdown\");\n\n console.log(`Saved memory \"${name}\" (${type}): ${description}`);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/scripts/resources/write.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmEH,wBAA8B,mBAAmB,CAC/C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAiFf"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/scripts/resources/write.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsEH,wBAA8B,mBAAmB,CAC/C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAiFf"}
@@ -7,7 +7,7 @@
7
7
  * pnpm action resource-write --path <path> --content <content> [--scope personal|shared] [--mime <mime-type>] [--visibility workspace|agent_scratch]
8
8
  */
9
9
  import { canWriteLocalWorkspaceResourcePath, resourcePut, SHARED_OWNER, WORKSPACE_OWNER, } from "../../resources/store.js";
10
- import { getRequestUserEmail } from "../../server/request-context.js";
10
+ import { getAmbientUserEmail, getRequestUserEmail, } from "../../server/request-context.js";
11
11
  import { parseArgs, fail } from "../utils.js";
12
12
  const EXTENSION_MIME_MAP = {
13
13
  ".md": "text/markdown",
@@ -107,7 +107,7 @@ Options:
107
107
  owner = WORKSPACE_OWNER;
108
108
  }
109
109
  else {
110
- const personalOwner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;
110
+ const personalOwner = getRequestUserEmail() ?? getAmbientUserEmail();
111
111
  if (!personalOwner) {
112
112
  fail("resource-write --scope=personal requires an authenticated user (request context or AGENT_USER_EMAIL env var).");
113
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/scripts/resources/write.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Core script: resource-write\n *\n * Write (create or update) a resource in the SQL store.\n *\n * Usage:\n * pnpm action resource-write --path <path> --content <content> [--scope personal|shared] [--mime <mime-type>] [--visibility workspace|agent_scratch]\n */\n\nimport {\n canWriteLocalWorkspaceResourcePath,\n resourcePut,\n SHARED_OWNER,\n WORKSPACE_OWNER,\n type ResourceCreatedBy,\n type ResourceVisibility,\n} from \"../../resources/store.js\";\nimport { getRequestUserEmail } from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nconst EXTENSION_MIME_MAP: Record<string, string> = {\n \".md\": \"text/markdown\",\n \".ts\": \"text/typescript\",\n \".tsx\": \"text/typescript\",\n \".js\": \"text/javascript\",\n \".jsx\": \"text/javascript\",\n \".json\": \"application/json\",\n \".html\": \"text/html\",\n \".css\": \"text/css\",\n \".yaml\": \"text/yaml\",\n \".yml\": \"text/yaml\",\n \".xml\": \"application/xml\",\n \".svg\": \"image/svg+xml\",\n \".txt\": \"text/plain\",\n \".csv\": \"text/csv\",\n \".sql\": \"text/sql\",\n \".sh\": \"text/x-shellscript\",\n \".py\": \"text/x-python\",\n \".toml\": \"text/toml\",\n};\n\nfunction inferMimeType(filePath: string): string {\n const dotIndex = filePath.lastIndexOf(\".\");\n if (dotIndex === -1) return \"text/plain\";\n const ext = filePath.slice(dotIndex).toLowerCase();\n return EXTENSION_MIME_MAP[ext] ?? \"text/plain\";\n}\n\nfunction parseVisibility(\n value: string | undefined,\n): ResourceVisibility | undefined {\n if (!value) return undefined;\n if (value === \"workspace\" || value === \"agent_scratch\") return value;\n fail(\"--visibility must be workspace or agent_scratch.\");\n}\n\nfunction parseCreatedBy(\n value: string | undefined,\n): ResourceCreatedBy | undefined {\n if (!value) return undefined;\n if (value === \"user\" || value === \"agent\" || value === \"system\") return value;\n fail(\"--created-by must be user, agent, or system.\");\n}\n\nfunction parseOptionalNumber(\n value: string | undefined,\n flag: string,\n): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) fail(`${flag} must be a number.`);\n return parsed;\n}\n\nexport default async function resourceWriteScript(\n args: string[],\n): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(\n `Usage: pnpm action resource-write --path <path> --content <content> [options]\n\nOptions:\n --path <path> Resource path (required)\n --content <content> Content to write (required)\n --scope personal|shared|workspace\n Scope to write to (default: personal). Workspace is writable for local file mode control resources.\n --mime <mime-type> MIME type (default: inferred from extension)\n --visibility workspace|agent_scratch\n Visibility (default: workspace)\n --created-by user|agent|system\n Provenance label (default: user)\n --thread-id <id> Agent thread id for scratch/provenance\n --run-id <id> Agent run id for scratch/provenance\n --expires-at <ms> Expiry timestamp in epoch milliseconds\n --help Show this help message`,\n );\n return;\n }\n\n const resourcePath = parsed.path;\n if (!resourcePath) {\n fail(\"--path is required. Example: --path notes/todo.md\");\n }\n\n const content = parsed.content;\n if (content === undefined || content === null) {\n fail(\"--content is required.\");\n }\n\n const scope = parsed.scope ?? \"personal\";\n if (scope === \"workspace\") {\n if (!(await canWriteLocalWorkspaceResourcePath(resourcePath))) {\n fail(\n \"Workspace resources are managed from Dispatch unless local file mode exposes this path. Writable local workspace paths are AGENTS.md, agent-native.json, mcp.config.json, .mcp.json, and skills/.\",\n );\n }\n }\n const mimeType = parsed.mime ?? inferMimeType(resourcePath);\n const visibility = parseVisibility(parsed.visibility);\n const createdBy = parseCreatedBy(parsed[\"created-by\"] ?? parsed.createdBy);\n const threadId = parsed[\"thread-id\"] ?? parsed.threadId;\n const runId = parsed[\"run-id\"] ?? parsed.runId;\n const expiresAt = parseOptionalNumber(\n parsed[\"expires-at\"] ?? parsed.expiresAt,\n \"--expires-at\",\n );\n let owner: string;\n if (scope === \"shared\") {\n owner = SHARED_OWNER;\n } else if (scope === \"workspace\") {\n owner = WORKSPACE_OWNER;\n } else {\n const personalOwner = getRequestUserEmail() ?? process.env.AGENT_USER_EMAIL;\n if (!personalOwner) {\n fail(\n \"resource-write --scope=personal requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n owner = personalOwner;\n }\n\n const writeOptions = {\n visibility,\n createdBy,\n threadId,\n runId,\n expiresAt,\n };\n const hasWriteOptions = Object.values(writeOptions).some(\n (value) => value !== undefined,\n );\n const resource = hasWriteOptions\n ? await resourcePut(owner, resourcePath, content, mimeType, writeOptions)\n : await resourcePut(owner, resourcePath, content, mimeType);\n console.log(`Wrote resource: ${resource.path} (${resource.size} bytes)`);\n}\n"]}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/scripts/resources/write.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,kCAAkC,EAClC,WAAW,EACX,YAAY,EACZ,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,kBAAkB,GAA2B;IACjD,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;AACjD,CAAC;AAED,SAAS,eAAe,CACtB,KAAyB;IAEzB,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CACrB,KAAyB;IAEzB,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC,8CAA8C,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAyB,EACzB,IAAY;IAEZ,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,IAAI,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,mBAAmB,CAC/C,IAAc;IAEd,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CACT;;;;;;;;;;;;;;;kDAe4C,CAC7C,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;IACzC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,kCAAkC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CACF,mMAAmM,CACpM,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;IAC/C,MAAM,SAAS,GAAG,mBAAmB,CACnC,MAAM,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,SAAS,EACxC,cAAc,CACf,CAAC;IACF,IAAI,KAAa,CAAC;IAClB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,KAAK,GAAG,YAAY,CAAC;IACvB,CAAC;SAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,KAAK,GAAG,eAAe,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,mBAAmB,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CACF,+GAA+G,CAChH,CAAC;QACJ,CAAC;QACD,KAAK,GAAG,aAAa,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,UAAU;QACV,SAAS;QACT,QAAQ;QACR,KAAK;QACL,SAAS;KACV,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CACtD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAC/B,CAAC;IACF,MAAM,QAAQ,GAAG,eAAe;QAC9B,CAAC,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC;QACzE,CAAC,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC;AAC3E,CAAC","sourcesContent":["/**\n * Core script: resource-write\n *\n * Write (create or update) a resource in the SQL store.\n *\n * Usage:\n * pnpm action resource-write --path <path> --content <content> [--scope personal|shared] [--mime <mime-type>] [--visibility workspace|agent_scratch]\n */\n\nimport {\n canWriteLocalWorkspaceResourcePath,\n resourcePut,\n SHARED_OWNER,\n WORKSPACE_OWNER,\n type ResourceCreatedBy,\n type ResourceVisibility,\n} from \"../../resources/store.js\";\nimport {\n getAmbientUserEmail,\n getRequestUserEmail,\n} from \"../../server/request-context.js\";\nimport { parseArgs, fail } from \"../utils.js\";\n\nconst EXTENSION_MIME_MAP: Record<string, string> = {\n \".md\": \"text/markdown\",\n \".ts\": \"text/typescript\",\n \".tsx\": \"text/typescript\",\n \".js\": \"text/javascript\",\n \".jsx\": \"text/javascript\",\n \".json\": \"application/json\",\n \".html\": \"text/html\",\n \".css\": \"text/css\",\n \".yaml\": \"text/yaml\",\n \".yml\": \"text/yaml\",\n \".xml\": \"application/xml\",\n \".svg\": \"image/svg+xml\",\n \".txt\": \"text/plain\",\n \".csv\": \"text/csv\",\n \".sql\": \"text/sql\",\n \".sh\": \"text/x-shellscript\",\n \".py\": \"text/x-python\",\n \".toml\": \"text/toml\",\n};\n\nfunction inferMimeType(filePath: string): string {\n const dotIndex = filePath.lastIndexOf(\".\");\n if (dotIndex === -1) return \"text/plain\";\n const ext = filePath.slice(dotIndex).toLowerCase();\n return EXTENSION_MIME_MAP[ext] ?? \"text/plain\";\n}\n\nfunction parseVisibility(\n value: string | undefined,\n): ResourceVisibility | undefined {\n if (!value) return undefined;\n if (value === \"workspace\" || value === \"agent_scratch\") return value;\n fail(\"--visibility must be workspace or agent_scratch.\");\n}\n\nfunction parseCreatedBy(\n value: string | undefined,\n): ResourceCreatedBy | undefined {\n if (!value) return undefined;\n if (value === \"user\" || value === \"agent\" || value === \"system\") return value;\n fail(\"--created-by must be user, agent, or system.\");\n}\n\nfunction parseOptionalNumber(\n value: string | undefined,\n flag: string,\n): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) fail(`${flag} must be a number.`);\n return parsed;\n}\n\nexport default async function resourceWriteScript(\n args: string[],\n): Promise<void> {\n const parsed = parseArgs(args);\n\n if (parsed.help === \"true\") {\n console.log(\n `Usage: pnpm action resource-write --path <path> --content <content> [options]\n\nOptions:\n --path <path> Resource path (required)\n --content <content> Content to write (required)\n --scope personal|shared|workspace\n Scope to write to (default: personal). Workspace is writable for local file mode control resources.\n --mime <mime-type> MIME type (default: inferred from extension)\n --visibility workspace|agent_scratch\n Visibility (default: workspace)\n --created-by user|agent|system\n Provenance label (default: user)\n --thread-id <id> Agent thread id for scratch/provenance\n --run-id <id> Agent run id for scratch/provenance\n --expires-at <ms> Expiry timestamp in epoch milliseconds\n --help Show this help message`,\n );\n return;\n }\n\n const resourcePath = parsed.path;\n if (!resourcePath) {\n fail(\"--path is required. Example: --path notes/todo.md\");\n }\n\n const content = parsed.content;\n if (content === undefined || content === null) {\n fail(\"--content is required.\");\n }\n\n const scope = parsed.scope ?? \"personal\";\n if (scope === \"workspace\") {\n if (!(await canWriteLocalWorkspaceResourcePath(resourcePath))) {\n fail(\n \"Workspace resources are managed from Dispatch unless local file mode exposes this path. Writable local workspace paths are AGENTS.md, agent-native.json, mcp.config.json, .mcp.json, and skills/.\",\n );\n }\n }\n const mimeType = parsed.mime ?? inferMimeType(resourcePath);\n const visibility = parseVisibility(parsed.visibility);\n const createdBy = parseCreatedBy(parsed[\"created-by\"] ?? parsed.createdBy);\n const threadId = parsed[\"thread-id\"] ?? parsed.threadId;\n const runId = parsed[\"run-id\"] ?? parsed.runId;\n const expiresAt = parseOptionalNumber(\n parsed[\"expires-at\"] ?? parsed.expiresAt,\n \"--expires-at\",\n );\n let owner: string;\n if (scope === \"shared\") {\n owner = SHARED_OWNER;\n } else if (scope === \"workspace\") {\n owner = WORKSPACE_OWNER;\n } else {\n const personalOwner = getRequestUserEmail() ?? getAmbientUserEmail();\n if (!personalOwner) {\n fail(\n \"resource-write --scope=personal requires an authenticated user (request context or AGENT_USER_EMAIL env var).\",\n );\n }\n owner = personalOwner;\n }\n\n const writeOptions = {\n visibility,\n createdBy,\n threadId,\n runId,\n expiresAt,\n };\n const hasWriteOptions = Object.values(writeOptions).some(\n (value) => value !== undefined,\n );\n const resource = hasWriteOptions\n ? await resourcePut(owner, resourcePath, content, mimeType, writeOptions)\n : await resourcePut(owner, resourcePath, content, mimeType);\n console.log(`Wrote resource: ${resource.path} (${resource.size} bytes)`);\n}\n"]}
@@ -34,37 +34,37 @@ export declare function createListSecretsHandler(): import("h3").EventHandlerWit
34
34
  /** POST /_agent-native/secrets/:key — write a secret. */
35
35
  export declare function createWriteSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
36
36
  error: string;
37
- ok?: undefined;
38
37
  status?: undefined;
38
+ ok?: undefined;
39
39
  } | {
40
- error?: undefined;
41
40
  ok: boolean;
42
41
  status: string;
42
+ error?: undefined;
43
43
  } | {
44
- ok?: undefined;
45
44
  error: string;
46
45
  removed?: undefined;
46
+ ok?: undefined;
47
47
  } | {
48
- error?: undefined;
49
48
  ok: boolean;
50
49
  removed: boolean;
50
+ error?: undefined;
51
51
  }>>;
52
52
  /**
53
53
  * POST /_agent-native/secrets/:key/test — re-run the validator against the
54
54
  * current stored value without changing anything. Useful for the "Test" button.
55
55
  */
56
56
  export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
57
- ok?: undefined;
58
57
  error: string;
59
58
  note?: undefined;
59
+ ok?: undefined;
60
60
  } | {
61
- error?: undefined;
62
61
  ok: boolean;
63
62
  note?: undefined;
64
- } | {
65
63
  error?: undefined;
64
+ } | {
66
65
  ok: boolean;
67
66
  note: string;
67
+ error?: undefined;
68
68
  } | {
69
69
  note?: undefined;
70
70
  ok: boolean;
@@ -95,12 +95,12 @@ export interface AdHocSecretPayload {
95
95
  export declare function createAdHocSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<AdHocSecretPayload[] | {
96
96
  error: string;
97
97
  } | {
98
- error?: undefined;
99
98
  ok: boolean;
100
99
  key: string;
101
- } | {
102
100
  error?: undefined;
101
+ } | {
103
102
  ok: boolean;
104
103
  removed: boolean;
104
+ error?: undefined;
105
105
  }>>;
106
106
  //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1,21 @@
1
+ import type { AgentSkill } from "../a2a/types.js";
2
+ import { type DiscoveredAgent } from "./agent-discovery.js";
3
+ /** Matches the `<available-apps>` prompt block so both surfaces agree. */
4
+ export declare const MAX_APPS = 30;
5
+ export interface PeerCapabilities {
6
+ agent: DiscoveredAgent;
7
+ /** null distinguishes an unreachable card from a peer that exposes nothing. */
8
+ skills: AgentSkill[] | null;
9
+ cardDescription?: string;
10
+ error?: string;
11
+ }
12
+ export declare function loadCapabilities(agent: DiscoveredAgent): Promise<PeerCapabilities>;
13
+ export declare function loadAllCapabilities(agents: DiscoveredAgent[]): Promise<PeerCapabilities[]>;
14
+ export declare function purposeOf(peer: PeerCapabilities): string;
15
+ /**
16
+ * `detailHint` differs per surface: the agent tool tells the model to call
17
+ * itself again with an app id, the CLI tells the reader to pass `--app`.
18
+ */
19
+ export declare function formatCapabilitySummary(peers: PeerCapabilities[], truncated: number, detailHint: (appId: string) => string): string;
20
+ export declare function formatCapabilityDetail(peer: PeerCapabilities, callHint: (appId: string) => string): string;
21
+ //# sourceMappingURL=agent-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../../src/server/agent-capabilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,KAAK,CAAC;AAO3B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,+EAA+E;IAC/E,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAkB3B;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,eAAe,EAAE,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAU7B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAUxD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gBAAgB,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACpC,MAAM,CA4BR;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAClC,MAAM,CAgCR"}
@@ -0,0 +1,106 @@
1
+ import { A2AClient } from "../a2a/client.js";
2
+ /** Matches the `<available-apps>` prompt block so both surfaces agree. */
3
+ export const MAX_APPS = 30;
4
+ const MAX_SKILLS_IN_SUMMARY = 8;
5
+ const MAX_SKILLS_IN_DETAIL = 60;
6
+ const MAX_DESCRIPTION_CHARS = 240;
7
+ const CARD_TIMEOUT_MS = 6_000;
8
+ const CARD_CONCURRENCY = 8;
9
+ function truncate(value, max) {
10
+ const collapsed = value.replace(/\s+/g, " ").trim();
11
+ return collapsed.length > max ? `${collapsed.slice(0, max - 1)}…` : collapsed;
12
+ }
13
+ export async function loadCapabilities(agent) {
14
+ try {
15
+ const card = await new A2AClient(agent.url).getAgentCard({
16
+ timeoutMs: CARD_TIMEOUT_MS,
17
+ });
18
+ return {
19
+ agent,
20
+ skills: Array.isArray(card.skills) ? card.skills : [],
21
+ cardDescription: typeof card.description === "string" ? card.description : undefined,
22
+ };
23
+ }
24
+ catch (error) {
25
+ return {
26
+ agent,
27
+ skills: null,
28
+ error: error instanceof Error ? error.message : String(error),
29
+ };
30
+ }
31
+ }
32
+ export async function loadAllCapabilities(agents) {
33
+ const results = [];
34
+ for (let i = 0; i < agents.length; i += CARD_CONCURRENCY) {
35
+ results.push(...(await Promise.all(agents.slice(i, i + CARD_CONCURRENCY).map(loadCapabilities))));
36
+ }
37
+ return results;
38
+ }
39
+ export function purposeOf(peer) {
40
+ // The manifest description comes from the app's own package.json and is
41
+ // authored; the card description is a generic template for auto-mounted
42
+ // apps, so it is only a fallback.
43
+ const manifest = peer.agent.description?.trim();
44
+ if (manifest)
45
+ return truncate(manifest, MAX_DESCRIPTION_CHARS);
46
+ const card = peer.cardDescription?.trim();
47
+ return card
48
+ ? truncate(card, MAX_DESCRIPTION_CHARS)
49
+ : "(no description published)";
50
+ }
51
+ /**
52
+ * `detailHint` differs per surface: the agent tool tells the model to call
53
+ * itself again with an app id, the CLI tells the reader to pass `--app`.
54
+ */
55
+ export function formatCapabilitySummary(peers, truncated, detailHint) {
56
+ const lines = peers.map((peer) => {
57
+ const header = `### ${peer.agent.name} (${peer.agent.id})\n${purposeOf(peer)}`;
58
+ if (peer.skills === null) {
59
+ return `${header}\nCapabilities: could not read agent card (${truncate(peer.error ?? "unreachable", 120)}). Delegate with a natural-language message instead of a direct action.`;
60
+ }
61
+ if (peer.skills.length === 0) {
62
+ return `${header}\nCapabilities: exposes no directly callable actions. Delegate with a natural-language message via call-agent.`;
63
+ }
64
+ const shown = peer.skills.slice(0, MAX_SKILLS_IN_SUMMARY);
65
+ const rest = peer.skills.length - shown.length;
66
+ return `${header}\nCallable actions: ${shown.map((skill) => skill.id).join(", ")}${rest > 0 ? ` (+${rest} more — ${detailHint(peer.agent.id)})` : ""}`;
67
+ });
68
+ return [
69
+ `${peers.length} other app${peers.length === 1 ? "" : "s"} reachable from this one over A2A.`,
70
+ truncated > 0
71
+ ? `(${truncated} additional app${truncated === 1 ? "" : "s"} not shown.)`
72
+ : "",
73
+ "",
74
+ lines.join("\n\n"),
75
+ "",
76
+ "Delegate with call-agent: pass action + input for a listed action, or message for open-ended work. Prefer the app that owns the data over rebuilding its capability here.",
77
+ ]
78
+ .filter(Boolean)
79
+ .join("\n");
80
+ }
81
+ export function formatCapabilityDetail(peer, callHint) {
82
+ const header = `## ${peer.agent.name} (${peer.agent.id})\n${purposeOf(peer)}\nURL: ${peer.agent.url}`;
83
+ if (peer.skills === null) {
84
+ return `${header}\n\nIts agent card could not be read (${truncate(peer.error ?? "unreachable", 200)}), so its callable actions are unknown. It may still answer a natural-language call-agent message.`;
85
+ }
86
+ if (peer.skills.length === 0) {
87
+ return `${header}\n\nIt exposes no directly callable actions. Delegate with a natural-language call-agent message.`;
88
+ }
89
+ const shown = peer.skills.slice(0, MAX_SKILLS_IN_DETAIL);
90
+ const rest = peer.skills.length - shown.length;
91
+ const lines = shown.map((skill) => `- ${skill.id}${skill.readOnly ? "" : " (mutating)"}: ${skill.description
92
+ ? truncate(skill.description, MAX_DESCRIPTION_CHARS)
93
+ : skill.name || "(no description)"}`);
94
+ return [
95
+ header,
96
+ "",
97
+ "Callable actions:",
98
+ lines.join("\n"),
99
+ rest > 0 ? `(+${rest} more not shown.)` : "",
100
+ "",
101
+ callHint(peer.agent.id),
102
+ ]
103
+ .filter(Boolean)
104
+ .join("\n");
105
+ }
106
+ //# sourceMappingURL=agent-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../../src/server/agent-capabilities.ts"],"names":[],"mappings":"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","sourcesContent":["import { A2AClient } from \"../a2a/client.js\";\nimport type { AgentSkill } from \"../a2a/types.js\";\nimport { type DiscoveredAgent } from \"./agent-discovery.js\";\n\n/** Matches the `<available-apps>` prompt block so both surfaces agree. */\nexport const MAX_APPS = 30;\nconst MAX_SKILLS_IN_SUMMARY = 8;\nconst MAX_SKILLS_IN_DETAIL = 60;\nconst MAX_DESCRIPTION_CHARS = 240;\nconst CARD_TIMEOUT_MS = 6_000;\nconst CARD_CONCURRENCY = 8;\n\nexport interface PeerCapabilities {\n agent: DiscoveredAgent;\n /** null distinguishes an unreachable card from a peer that exposes nothing. */\n skills: AgentSkill[] | null;\n cardDescription?: string;\n error?: string;\n}\n\nfunction truncate(value: string, max: number): string {\n const collapsed = value.replace(/\\s+/g, \" \").trim();\n return collapsed.length > max ? `${collapsed.slice(0, max - 1)}…` : collapsed;\n}\n\nexport async function loadCapabilities(\n agent: DiscoveredAgent,\n): Promise<PeerCapabilities> {\n try {\n const card = await new A2AClient(agent.url).getAgentCard({\n timeoutMs: CARD_TIMEOUT_MS,\n });\n return {\n agent,\n skills: Array.isArray(card.skills) ? card.skills : [],\n cardDescription:\n typeof card.description === \"string\" ? card.description : undefined,\n };\n } catch (error) {\n return {\n agent,\n skills: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nexport async function loadAllCapabilities(\n agents: DiscoveredAgent[],\n): Promise<PeerCapabilities[]> {\n const results: PeerCapabilities[] = [];\n for (let i = 0; i < agents.length; i += CARD_CONCURRENCY) {\n results.push(\n ...(await Promise.all(\n agents.slice(i, i + CARD_CONCURRENCY).map(loadCapabilities),\n )),\n );\n }\n return results;\n}\n\nexport function purposeOf(peer: PeerCapabilities): string {\n // The manifest description comes from the app's own package.json and is\n // authored; the card description is a generic template for auto-mounted\n // apps, so it is only a fallback.\n const manifest = peer.agent.description?.trim();\n if (manifest) return truncate(manifest, MAX_DESCRIPTION_CHARS);\n const card = peer.cardDescription?.trim();\n return card\n ? truncate(card, MAX_DESCRIPTION_CHARS)\n : \"(no description published)\";\n}\n\n/**\n * `detailHint` differs per surface: the agent tool tells the model to call\n * itself again with an app id, the CLI tells the reader to pass `--app`.\n */\nexport function formatCapabilitySummary(\n peers: PeerCapabilities[],\n truncated: number,\n detailHint: (appId: string) => string,\n): string {\n const lines = peers.map((peer) => {\n const header = `### ${peer.agent.name} (${peer.agent.id})\\n${purposeOf(peer)}`;\n if (peer.skills === null) {\n return `${header}\\nCapabilities: could not read agent card (${truncate(peer.error ?? \"unreachable\", 120)}). Delegate with a natural-language message instead of a direct action.`;\n }\n if (peer.skills.length === 0) {\n return `${header}\\nCapabilities: exposes no directly callable actions. Delegate with a natural-language message via call-agent.`;\n }\n const shown = peer.skills.slice(0, MAX_SKILLS_IN_SUMMARY);\n const rest = peer.skills.length - shown.length;\n return `${header}\\nCallable actions: ${shown.map((skill) => skill.id).join(\", \")}${\n rest > 0 ? ` (+${rest} more — ${detailHint(peer.agent.id)})` : \"\"\n }`;\n });\n\n return [\n `${peers.length} other app${peers.length === 1 ? \"\" : \"s\"} reachable from this one over A2A.`,\n truncated > 0\n ? `(${truncated} additional app${truncated === 1 ? \"\" : \"s\"} not shown.)`\n : \"\",\n \"\",\n lines.join(\"\\n\\n\"),\n \"\",\n \"Delegate with call-agent: pass action + input for a listed action, or message for open-ended work. Prefer the app that owns the data over rebuilding its capability here.\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nexport function formatCapabilityDetail(\n peer: PeerCapabilities,\n callHint: (appId: string) => string,\n): string {\n const header = `## ${peer.agent.name} (${peer.agent.id})\\n${purposeOf(peer)}\\nURL: ${peer.agent.url}`;\n\n if (peer.skills === null) {\n return `${header}\\n\\nIts agent card could not be read (${truncate(peer.error ?? \"unreachable\", 200)}), so its callable actions are unknown. It may still answer a natural-language call-agent message.`;\n }\n if (peer.skills.length === 0) {\n return `${header}\\n\\nIt exposes no directly callable actions. Delegate with a natural-language call-agent message.`;\n }\n\n const shown = peer.skills.slice(0, MAX_SKILLS_IN_DETAIL);\n const rest = peer.skills.length - shown.length;\n const lines = shown.map(\n (skill) =>\n `- ${skill.id}${skill.readOnly ? \"\" : \" (mutating)\"}: ${\n skill.description\n ? truncate(skill.description, MAX_DESCRIPTION_CHARS)\n : skill.name || \"(no description)\"\n }`,\n );\n\n return [\n header,\n \"\",\n \"Callable actions:\",\n lines.join(\"\\n\"),\n rest > 0 ? `(+${rest} more not shown.)` : \"\",\n \"\",\n callHint(peer.agent.id),\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"framework-prompts.d.ts","sourceRoot":"","sources":["../../../src/server/agent-chat/framework-prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,6BAA6B,EAE9B,MAAM,oBAAoB,CAAC;AAS5B;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1E;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,6BAA6B,EAAE,MAAM,CAAC;IACtC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CA8IA;AAED,eAAO,MAAM,gCAAgC;;;;;;;;CAezC,CAAC;AAEL;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,mBAA4B,GAC1C,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,IAAI,GAAE,KAAK,GAAG,MAAe,EAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,MAAM,CAqFR;AAoBD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACpC,MAAM,EAAE,CAEV;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACpC,MAAM,CAkCR;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC,GACtE,OAAO,CAAC,IAAI,CAAC,CAqCf"}
1
+ {"version":3,"file":"framework-prompts.d.ts","sourceRoot":"","sources":["../../../src/server/agent-chat/framework-prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,6BAA6B,EAE9B,MAAM,oBAAoB,CAAC;AAS5B;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1E;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,6BAA6B,EAAE,MAAM,CAAC;IACtC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CA4IA;AAED,eAAO,MAAM,gCAAgC;;;;;;;;CAezC,CAAC;AAEL;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,mBAA4B,GAC1C,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,IAAI,GAAE,KAAK,GAAG,MAAe,EAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,MAAM,CAqFR;AAoBD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACpC,MAAM,EAAE,CAEV;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACpC,MAAM,CAkCR;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC,GACtE,OAAO,CAAC,IAAI,CAAC,CAqCf"}
@@ -76,21 +76,19 @@ If the current turn is in Plan mode, plan before anything gets written. This app
76
76
 
77
77
  ${extensionInstructionsFull}
78
78
 
79
- ### Code Changes Not Available Call \`connect-builder\` Immediately
79
+ ### Code Changes Hand Off With \`connect-builder\`
80
80
 
81
81
  ${extensionConnectBuilderGuard}
82
82
 
83
- In Act mode, when the user asks you to change the UI, modify code, add a feature, fix a bug in the app itself, change styles, add a hook, create a component, add a route, add an integration, or anything else that requires editing source files you MUST take exactly these steps, in order:
83
+ In Act mode, a request that needs source-file edits the UI chrome, a component, a route, styles, a hook, an integration, or a bug in the app itself is a handoff, not a task you plan. Builder plans and edits in its own sandbox, so the exploration, file-mapping, and code all happen there rather than here.
84
84
 
85
- 1. Briefly acknowledge the user's specific request in their own terms — one short clause naming what they asked for (e.g. "Got it — wider subject lines in the email list."). Do NOT restate the request verbatim, do NOT add a generic preamble, and do NOT promise outcomes. Skip this step entirely if the user already knows you're handing off (e.g. they said "send this to Builder").
86
- 2. Call the \`connect-builder\` tool, passing the user's full request verbatim as the \`prompt\` argument. This renders an inline card. The returned \`builderEnabled\` flag is authoritative: \`true\` means Builder Cloud Agents can take the code-change handoff; \`false\` means this still requires a code change, but no Builder Cloud Agent can run from this workspace. If Builder is connected and \`builderEnabled\` is true, the card hands the prompt off to Builder's cloud agent on one click and returns a branch URL. If Builder is not connected and \`builderEnabled\` is true, it shows the Connect Builder flow. If \`builderEnabled\` is false, it still shows the card, but as a code-change fallback instead of a runnable cloud handoff.
87
- 3. After the card renders, inspect the tool result and write one sentence that frames the next click around what the user just asked — not as a Builder pitch. If \`builderEnabled\` is true and the card can send, say something like "Click Send to Builder and it'll wire that up for you." If the user needs to connect first, say something like "Connect Builder once and it'll handle this and future changes." If \`builderEnabled\` is false, say: "This requires a code change. Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like." Do NOT say "click Send to Builder", mention a branch URL, say the card is pre-loaded, or imply a Builder Cloud Agent can run when \`builderEnabled\` is false.
85
+ Keep the whole turn to three beats:
88
86
 
89
- When \`builderEnabled\` is false, Builder Cloud Agents are not self-serve from Builder org settings. Do NOT tell the user to go to Builder org settings, beta features, "Cloud Agents", or "AI Agents" to enable them. The only allowed guidance is the card's code-change fallback: edit locally, use Agent Native Desktop, or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.
87
+ 1. One short clause acknowledging what they asked for in their own terms ("Got it wider subject lines in the email list."), skipped entirely when they already know you're handing off. No generic preamble, no promised outcomes.
88
+ 2. The \`connect-builder\` call, with the user's request verbatim as \`prompt\`.
89
+ 3. One sentence framing the next click around what they asked for rather than pitching Builder. Read \`builderEnabled\` from the result first; the tool's own description defines what each value lets you claim and offer.
90
90
 
91
- **Act-mode handoff do exactly this:** The moment a code change is requested, call \`connect-builder\` with the user's verbatim request, then write one sentence framing the next click. That is the whole job: Builder plans and edits in its own sandbox, so the planning, file-mapping, and code all happen there, not here. Keep your turn to the call plus that one sentence — skip code exploration, implementation plans, \`resources\` writes of specs, and sub-agents (they have no code-editing tools either). You don't need filesystem access to recommend Builder, so don't reach for it or list tools you lack.
92
-
93
- Builder Cloud Agents are the recommended path when \`builderEnabled\` is true because they are one-click and run in the cloud. Local dev, Agent Native Desktop, and Builder.io cloud editing are the fallback when \`builderEnabled\` is false.
91
+ Nothing else belongs in that turn: no code exploration, no implementation plan, no \`resources\` write of a spec, and no sub-agents (they have no code-editing tools either). You don't need filesystem access to hand off, so don't reach for it or list tools you lack.
94
92
  ${FRAMEWORK_CORE}`;
95
93
  const DEV_FRAMEWORK_PROMPT = `## Agent-Native Framework — Development Mode
96
94
 
@@ -99,12 +97,12 @@ You are an AI agent in an agent-native application, running in **development mod
99
97
  The agent and the UI are equal partners — everything the UI can do, you can do via tools/scripts, and vice versa. They share the same SQL database and stay in sync automatically.
100
98
 
101
99
  **In development mode, you have full local access — use it with senior-engineer judgment** (read before you edit, keep changes scoped, verify before you claim done):
102
- - Run any shell command via the \`bash\` tool (node, curl, pnpm, rg, git, etc.), including arbitrary code: \`bash({ command: 'node -e "console.log(1+1)"' })\`
100
+ - Run any shell command via the \`bash\` tool (node, curl, pnpm, rg, git, etc.), including arbitrary code
103
101
  - Read and write any file on the filesystem; edit source, install packages, modify the app
104
102
  - Query and modify the database
105
103
  - Call external APIs (via bash with curl, or via scripts)
106
104
 
107
- When no dedicated tool/action exists for what you need, reach for \`bash\` — e.g. \`bash({ command: 'curl -s https://api.example.com/data' })\`.
105
+ When no dedicated tool/action exists for what you need, reach for \`bash\`.
108
106
 
109
107
  **Template-specific actions are invoked via bash, NOT as direct tools.** In dev mode, the only tools registered as native tool calls are framework-level utilities (bash, read, edit, write, database, resources, chat, teams, jobs). Anything from the template's \`actions/\` directory must be run through bash: \`bash({ command: 'pnpm action <name> --arg value' })\`. The "Available Actions" section below shows the exact CLI syntax for each one — copy that command verbatim and pass it to \`bash\`. Do not try to call template actions by name as if they were tools; they will not appear in your tool list.
110
108
 
@@ -128,9 +126,9 @@ If the turn is in Plan mode, plan before anything gets written — including ${p
128
126
 
129
127
  ${extensionInstructionsCompact}
130
128
 
131
- ### Code Changes — Call \`connect-builder\`
129
+ ### Code Changes — Hand Off With \`connect-builder\`
132
130
 
133
- In Act mode, when a request genuinely needs a source-code edit (per the rules above), do this in order: (1) briefly acknowledge the user's specific ask in their own terms — one short clause, no preamble — then (2) call \`connect-builder\` with the user's request as the \`prompt\`, then (3) inspect \`builderEnabled\` in the result and write one sentence framing the next click around what they asked for, not a Builder pitch. When \`builderEnabled\` is true, Builder Cloud Agents can take the handoff; when \`builderEnabled\` is false, say this requires a code change and they can edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way they like. Do NOT write code, list files, make plans, or spawn sub-agents. Mention \`npx agent-native create <app-name>\`, Agent Native Desktop, or the code-change fallback when Builder Cloud Agents aren't available. Never tell users to enable Builder Cloud Agents from Builder org settings, beta features, "Cloud Agents", or "AI Agents"; they are not self-serve there.
131
+ In Act mode, a request that genuinely needs a source-code edit (per the rules above) is a handoff, not a task you plan. Keep the turn to three beats: (1) one short clause acknowledging their specific ask in their own terms, no preamble; (2) the \`connect-builder\` call with their request verbatim as \`prompt\`; (3) one sentence framing the next click around what they asked for, not a Builder pitch read \`builderEnabled\` from the result first, and let the tool's own description tell you what each value lets you claim. Nothing else belongs in that turn: no code, no file lists, no plans, no sub-agents.
134
132
  ${FRAMEWORK_CORE_COMPACT}`;
135
133
  const DEV_FRAMEWORK_PROMPT_COMPACT = `## Agent-Native Framework — Development Mode
136
134