@agent-native/core 0.121.1 → 0.122.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 (465) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +145 -0
  3. package/corpus/core/docs/content/actions.mdx +2 -2
  4. package/corpus/core/docs/content/agent-surfaces.mdx +1 -1
  5. package/corpus/core/docs/content/authentication.mdx +2 -0
  6. package/corpus/core/docs/content/deployment.mdx +36 -0
  7. package/corpus/core/docs/content/getting-started.mdx +477 -115
  8. package/corpus/core/docs/content/http-api.mdx +266 -0
  9. package/corpus/core/docs/content/syncing-template-changes.mdx +159 -0
  10. package/corpus/core/package.json +2 -1
  11. package/corpus/core/src/a2a/activity.ts +38 -27
  12. package/corpus/core/src/agent/engine/builder-engine.ts +35 -4
  13. package/corpus/core/src/agent/run-manager.ts +20 -1
  14. package/corpus/core/src/agent/run-store.ts +4 -1
  15. package/corpus/core/src/agent/types.ts +28 -8
  16. package/corpus/core/src/chat-threads/store.ts +45 -0
  17. package/corpus/core/src/checkpoints/index.ts +2 -0
  18. package/corpus/core/src/checkpoints/route-match.ts +13 -0
  19. package/corpus/core/src/cli/create.ts +105 -17
  20. package/corpus/core/src/cli/index.ts +20 -0
  21. package/corpus/core/src/cli/template-baseline.ts +410 -0
  22. package/corpus/core/src/cli/template-sync.ts +1004 -0
  23. package/corpus/core/src/cli/templates-meta.ts +1 -0
  24. package/corpus/core/src/client/AssistantChat.tsx +38 -12
  25. package/corpus/core/src/client/NewWorkspaceAppFlow.tsx +75 -10
  26. package/corpus/core/src/client/chat/message-components.tsx +127 -66
  27. package/corpus/core/src/client/chat/tool-call-display.tsx +29 -5
  28. package/corpus/core/src/client/error-format.ts +18 -0
  29. package/corpus/core/src/client/org/OrgSwitcher.tsx +30 -8
  30. package/corpus/core/src/client/org/TeamPage.tsx +7 -6
  31. package/corpus/core/src/client/sse-event-processor.ts +3 -0
  32. package/corpus/core/src/data-widgets/index.ts +41 -0
  33. package/corpus/core/src/deploy/build.ts +11 -9
  34. package/corpus/core/src/integrations/webhook-handler.ts +63 -9
  35. package/corpus/core/src/org/auto-join-domain.ts +4 -3
  36. package/corpus/core/src/org/context.ts +108 -39
  37. package/corpus/core/src/org/index.ts +5 -0
  38. package/corpus/core/src/org/service-identity.ts +60 -0
  39. package/corpus/core/src/provider-api/index.ts +22 -1
  40. package/corpus/core/src/scripts/docs/search.ts +12 -1
  41. package/corpus/core/src/server/agent-chat/context-tools.ts +9 -4
  42. package/corpus/core/src/server/agent-chat/framework-prompts.ts +38 -66
  43. package/corpus/core/src/server/agent-chat-plugin.ts +17 -10
  44. package/corpus/core/src/server/agents-bundle.ts +84 -5
  45. package/corpus/core/src/server/auth.ts +4 -3
  46. package/corpus/core/src/server/builder-browser.ts +47 -19
  47. package/corpus/core/src/server/core-routes-plugin.ts +2 -2
  48. package/corpus/core/src/server/credential-provider.ts +209 -68
  49. package/corpus/core/src/server/index.ts +3 -0
  50. package/corpus/core/src/server/prompts/framework-core-compact.ts +6 -13
  51. package/corpus/core/src/server/prompts/framework-core.ts +9 -21
  52. package/corpus/core/src/server/prompts/index.ts +0 -1
  53. package/corpus/core/src/server/prompts/shared-rules.ts +19 -11
  54. package/corpus/core/src/server/ssr-handler.ts +13 -2
  55. package/corpus/core/src/settings/user-settings.ts +13 -1
  56. package/corpus/core/src/shared/cache-control.ts +141 -0
  57. package/corpus/core/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  58. package/corpus/core/src/templates/chat/_gitignore +1 -0
  59. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  60. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  61. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  62. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  63. package/corpus/core/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  64. package/corpus/core/src/vite/agents-bundle-plugin.ts +7 -6
  65. package/corpus/core/src/vite/client.ts +5 -0
  66. package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +4 -5
  67. package/corpus/templates/analytics/.agents/skills/admin-surfaces/SKILL.md +55 -0
  68. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
  69. package/corpus/templates/analytics/.agents/skills/dashboard-management/references/template-catalog-and-demo.md +62 -0
  70. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +85 -0
  71. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +27 -2
  72. package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +139 -0
  73. package/corpus/templates/analytics/.agents/skills/monitoring/SKILL.md +77 -0
  74. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  75. package/corpus/templates/analytics/AGENTS.md +91 -563
  76. package/corpus/templates/analytics/_gitignore +1 -0
  77. package/corpus/templates/analytics/actions/bigquery.ts +12 -4
  78. package/corpus/templates/analytics/actions/generate-chart.ts +5 -5
  79. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +30 -1
  80. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +3 -0
  81. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +1 -1
  82. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
  83. package/corpus/templates/analytics/changelog/2026-07-24-analytics-finds-saved-dashboards-and-queries-far-more-reliab.md +6 -0
  84. package/corpus/templates/analytics/changelog/2026-07-24-notion-access-errors-now-explain-that-a-page-needs-sharing-w.md +6 -0
  85. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +7 -0
  86. package/corpus/templates/analytics/server/lib/analytics-query-catalog.ts +191 -30
  87. package/corpus/templates/analytics/server/lib/bigquery.ts +11 -1
  88. package/corpus/templates/analytics/server/lib/notion.ts +15 -4
  89. package/corpus/templates/analytics/server/plugins/agent-chat.ts +10 -0
  90. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  91. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  92. package/corpus/templates/brain/_gitignore +1 -0
  93. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  94. package/corpus/templates/calendar/_gitignore +1 -0
  95. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  96. package/corpus/templates/chat/_gitignore +1 -0
  97. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  98. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +34 -0
  99. package/corpus/templates/clips/AGENTS.md +5 -4
  100. package/corpus/templates/clips/_gitignore +1 -0
  101. package/corpus/templates/clips/actions/cleanup-transcript.ts +5 -0
  102. package/corpus/templates/clips/actions/get-recording-insights.ts +44 -8
  103. package/corpus/templates/clips/actions/get-recording-player-data.ts +39 -70
  104. package/corpus/templates/clips/actions/list-clip-views.ts +2 -4
  105. package/corpus/templates/clips/actions/list-recordings.ts +69 -19
  106. package/corpus/templates/clips/actions/list-viewers.ts +5 -2
  107. package/corpus/templates/clips/actions/regenerate-summary.ts +5 -1
  108. package/corpus/templates/clips/actions/request-transcript.ts +28 -1
  109. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +21 -1
  110. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +14 -1
  111. package/corpus/templates/clips/app/components/player/insights-panel.tsx +8 -20
  112. package/corpus/templates/clips/app/components/player/recording-views-badge.tsx +335 -0
  113. package/corpus/templates/clips/app/components/player/video-player.tsx +13 -8
  114. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +2 -1
  115. package/corpus/templates/clips/app/i18n/en-US.ts +13 -2
  116. package/corpus/templates/clips/app/lib/capture-permissions.ts +110 -0
  117. package/corpus/templates/clips/app/lib/recording-link.ts +32 -0
  118. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +27 -0
  119. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +46 -15
  120. package/corpus/templates/clips/app/routes/record.tsx +77 -31
  121. package/corpus/templates/clips/app/routes/share.$shareId.tsx +42 -31
  122. package/corpus/templates/clips/changelog/2026-07-24-clip-pages-now-show-a-view-count-with-viewer-avatars-next-to.md +6 -0
  123. package/corpus/templates/clips/changelog/2026-07-24-clip-summaries-read-like-a-description-you-d-write-yourself-.md +6 -0
  124. package/corpus/templates/clips/changelog/2026-07-24-clip-view-counts-now-separate-human-views-from-agent-views-s.md +6 -0
  125. package/corpus/templates/clips/changelog/2026-07-24-clips-actions-can-now-be-called-by-org-service-tokens-so-ext.md +6 -0
  126. package/corpus/templates/clips/changelog/2026-07-24-clips-no-longer-briefly-shows-a-dock-icon-while-launching.md +6 -0
  127. package/corpus/templates/clips/changelog/2026-07-24-fixed-owner-and-editor-share-links-redirecting-to-the-record.md +6 -0
  128. package/corpus/templates/clips/changelog/2026-07-24-meeting-and-note-recordings-now-start-as-a-compact-pill-on-t.md +6 -0
  129. package/corpus/templates/clips/changelog/2026-07-24-new-clips-now-copy-a-shareable-link-instead-of-the-owner-onl.md +6 -0
  130. package/corpus/templates/clips/changelog/2026-07-24-opening-a-share-link-as-the-clip-s-owner-now-goes-straight-t.md +6 -0
  131. package/corpus/templates/clips/changelog/2026-07-24-permissions-and-rewind-controls-now-use-compact-consistent-h.md +6 -0
  132. package/corpus/templates/clips/changelog/2026-07-24-quitting-the-desktop-app-no-longer-shows-a-false-macos-crash.md +6 -0
  133. package/corpus/templates/clips/changelog/2026-07-24-screen-recording-permission-errors-now-name-the-exact-app-to.md +6 -0
  134. package/corpus/templates/clips/changelog/2026-07-24-the-desktop-app-now-copies-a-new-clip-s-share-link-to-your-c.md +6 -0
  135. package/corpus/templates/clips/changelog/2026-07-24-the-recording-toolbar-now-stays-above-other-apps-including-o.md +6 -0
  136. package/corpus/templates/clips/changelog/2026-07-24-transcript-captions-now-use-real-speech-timings-instead-of-a.md +6 -0
  137. package/corpus/templates/clips/changelog/2026-07-24-video-playback-no-longer-stutters-and-replays-the-last-momen.md +6 -0
  138. package/corpus/templates/clips/chrome-extension/src/background.ts +17 -1
  139. package/corpus/templates/clips/desktop/package.json +2 -0
  140. package/corpus/templates/clips/desktop/src/app.tsx +89 -0
  141. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +9 -3
  142. package/corpus/templates/clips/desktop/src/lib/audio-meter.ts +51 -0
  143. package/corpus/templates/clips/desktop/src/lib/native-notification.ts +44 -0
  144. package/corpus/templates/clips/desktop/src/lib/recording-link.ts +67 -0
  145. package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +35 -35
  146. package/corpus/templates/clips/desktop/src/overlays/live-transcript.tsx +3 -2
  147. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +47 -46
  148. package/corpus/templates/clips/desktop/src/styles.css +127 -78
  149. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +7 -0
  150. package/corpus/templates/clips/desktop/src-tauri/Info.plist +6 -0
  151. package/corpus/templates/clips/desktop/src-tauri/capabilities/default.json +1 -0
  152. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +7 -3
  153. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -1
  154. package/corpus/templates/clips/desktop/src-tauri/src/main.rs +8 -0
  155. package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +21 -10
  156. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +40 -0
  157. package/corpus/templates/clips/server/db/schema.ts +25 -0
  158. package/corpus/templates/clips/server/lib/agent-views.ts +145 -0
  159. package/corpus/templates/clips/server/lib/public-agent-context.ts +7 -0
  160. package/corpus/templates/clips/server/lib/recording-share-grant.ts +79 -0
  161. package/corpus/templates/clips/server/lib/recordings.ts +51 -3
  162. package/corpus/templates/clips/server/plugins/db.ts +23 -0
  163. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +49 -17
  164. package/corpus/templates/clips/shared/recording-link.ts +43 -0
  165. package/corpus/templates/clips/shared/share-attribution.ts +4 -0
  166. package/corpus/templates/clips/shared/share-dashboard-redirect.ts +42 -0
  167. package/corpus/templates/clips/shared/view-analytics.ts +26 -0
  168. package/corpus/templates/content/.agents/skills/content/SKILL.md +5 -0
  169. package/corpus/templates/content/.agents/skills/content/references/local-file-mode.md +135 -0
  170. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +12 -0
  171. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +238 -0
  172. package/corpus/templates/content/.agents/skills/document-editing/references/document-behavior.md +91 -0
  173. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  174. package/corpus/templates/content/AGENTS.md +62 -583
  175. package/corpus/templates/content/_gitignore +1 -0
  176. package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -0
  177. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +50 -8
  178. package/corpus/templates/design/.agents/skills/design-generation/references/code-layers.md +81 -0
  179. package/corpus/templates/design/.agents/skills/design-generation/references/code-workspace.md +42 -0
  180. package/corpus/templates/design/.agents/skills/design-generation/references/editor-extensions.md +34 -0
  181. package/corpus/templates/design/.agents/skills/responsive-breakpoints/SKILL.md +4 -1
  182. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  183. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +17 -0
  184. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +8196 -0
  185. package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +265 -0
  186. package/corpus/templates/design/.generated/bridge/hit-test.generated.ts +642 -0
  187. package/corpus/templates/design/.generated/bridge/motion-preview.generated.ts +571 -0
  188. package/corpus/templates/design/.generated/bridge/nav.generated.ts +91 -0
  189. package/corpus/templates/design/.generated/bridge/sample.generated.ts +23 -0
  190. package/corpus/templates/design/.generated/bridge/shader-fill-preview.generated.ts +263 -0
  191. package/corpus/templates/design/.generated/bridge/shader-runtime.generated.ts +518 -0
  192. package/corpus/templates/design/.generated/bridge/tweak.generated.ts +20 -0
  193. package/corpus/templates/design/.generated/bridge/zoom.generated.ts +32 -0
  194. package/corpus/templates/design/AGENTS.md +88 -503
  195. package/corpus/templates/design/_gitignore +1 -0
  196. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  197. package/corpus/templates/dispatch/_gitignore +1 -0
  198. package/corpus/templates/dispatch/changelog/2026-07-24-signing-in-now-puts-you-in-your-companys-workspace.md +6 -0
  199. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  200. package/corpus/templates/forms/_gitignore +1 -0
  201. package/corpus/templates/forms/server/lib/public-form-ssr.ts +2 -2
  202. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  203. package/corpus/templates/macros/_gitignore +1 -0
  204. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  205. package/corpus/templates/mail/_gitignore +1 -0
  206. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  207. package/corpus/templates/plan/_gitignore +1 -0
  208. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  209. package/corpus/templates/slides/_gitignore +1 -0
  210. package/corpus/templates/slides/server/plugins/db.ts +4 -0
  211. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  212. package/corpus/templates/tasks/AGENTS.md +1 -1
  213. package/corpus/templates/tasks/_gitignore +1 -0
  214. package/dist/a2a/activity.d.ts +4 -1
  215. package/dist/a2a/activity.d.ts.map +1 -1
  216. package/dist/a2a/activity.js +27 -16
  217. package/dist/a2a/activity.js.map +1 -1
  218. package/dist/agent/engine/builder-engine.d.ts +1 -0
  219. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  220. package/dist/agent/engine/builder-engine.js +31 -4
  221. package/dist/agent/engine/builder-engine.js.map +1 -1
  222. package/dist/agent/run-manager.d.ts.map +1 -1
  223. package/dist/agent/run-manager.js +18 -1
  224. package/dist/agent/run-manager.js.map +1 -1
  225. package/dist/agent/run-store.d.ts +1 -0
  226. package/dist/agent/run-store.d.ts.map +1 -1
  227. package/dist/agent/run-store.js +2 -1
  228. package/dist/agent/run-store.js.map +1 -1
  229. package/dist/agent/types.d.ts +12 -1
  230. package/dist/agent/types.d.ts.map +1 -1
  231. package/dist/agent/types.js +21 -1
  232. package/dist/agent/types.js.map +1 -1
  233. package/dist/chat-threads/store.d.ts +10 -0
  234. package/dist/chat-threads/store.d.ts.map +1 -1
  235. package/dist/chat-threads/store.js +41 -0
  236. package/dist/chat-threads/store.js.map +1 -1
  237. package/dist/checkpoints/index.d.ts +1 -0
  238. package/dist/checkpoints/index.d.ts.map +1 -1
  239. package/dist/checkpoints/index.js +1 -0
  240. package/dist/checkpoints/index.js.map +1 -1
  241. package/dist/checkpoints/route-match.d.ts +8 -0
  242. package/dist/checkpoints/route-match.d.ts.map +1 -0
  243. package/dist/checkpoints/route-match.js +13 -0
  244. package/dist/checkpoints/route-match.js.map +1 -0
  245. package/dist/cli/create.d.ts +35 -4
  246. package/dist/cli/create.d.ts.map +1 -1
  247. package/dist/cli/create.js +69 -19
  248. package/dist/cli/create.js.map +1 -1
  249. package/dist/cli/index.js +19 -0
  250. package/dist/cli/index.js.map +1 -1
  251. package/dist/cli/template-baseline.d.ts +54 -0
  252. package/dist/cli/template-baseline.d.ts.map +1 -0
  253. package/dist/cli/template-baseline.js +334 -0
  254. package/dist/cli/template-baseline.js.map +1 -0
  255. package/dist/cli/template-sync.d.ts +57 -0
  256. package/dist/cli/template-sync.d.ts.map +1 -0
  257. package/dist/cli/template-sync.js +787 -0
  258. package/dist/cli/template-sync.js.map +1 -0
  259. package/dist/cli/templates-meta.d.ts.map +1 -1
  260. package/dist/cli/templates-meta.js +1 -0
  261. package/dist/cli/templates-meta.js.map +1 -1
  262. package/dist/client/AssistantChat.d.ts +2 -1
  263. package/dist/client/AssistantChat.d.ts.map +1 -1
  264. package/dist/client/AssistantChat.js +38 -10
  265. package/dist/client/AssistantChat.js.map +1 -1
  266. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  267. package/dist/client/NewWorkspaceAppFlow.js +32 -2
  268. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  269. package/dist/client/chat/message-components.d.ts +20 -0
  270. package/dist/client/chat/message-components.d.ts.map +1 -1
  271. package/dist/client/chat/message-components.js +81 -46
  272. package/dist/client/chat/message-components.js.map +1 -1
  273. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  274. package/dist/client/chat/tool-call-display.js +14 -6
  275. package/dist/client/chat/tool-call-display.js.map +1 -1
  276. package/dist/client/error-format.d.ts.map +1 -1
  277. package/dist/client/error-format.js +13 -0
  278. package/dist/client/error-format.js.map +1 -1
  279. package/dist/client/org/OrgSwitcher.d.ts +8 -1
  280. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  281. package/dist/client/org/OrgSwitcher.js +3 -2
  282. package/dist/client/org/OrgSwitcher.js.map +1 -1
  283. package/dist/client/org/TeamPage.d.ts.map +1 -1
  284. package/dist/client/org/TeamPage.js +1 -1
  285. package/dist/client/org/TeamPage.js.map +1 -1
  286. package/dist/client/sse-event-processor.d.ts.map +1 -1
  287. package/dist/client/sse-event-processor.js +3 -0
  288. package/dist/client/sse-event-processor.js.map +1 -1
  289. package/dist/collab/awareness.d.ts +2 -2
  290. package/dist/collab/awareness.d.ts.map +1 -1
  291. package/dist/data-widgets/index.d.ts +3 -0
  292. package/dist/data-widgets/index.d.ts.map +1 -1
  293. package/dist/data-widgets/index.js +33 -0
  294. package/dist/data-widgets/index.js.map +1 -1
  295. package/dist/deploy/build.d.ts.map +1 -1
  296. package/dist/deploy/build.js +11 -7
  297. package/dist/deploy/build.js.map +1 -1
  298. package/dist/eject/provider-api-definitions.d.ts +1 -0
  299. package/dist/eject/provider-api-definitions.d.ts.map +1 -1
  300. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  301. package/dist/integrations/webhook-handler.js +46 -9
  302. package/dist/integrations/webhook-handler.js.map +1 -1
  303. package/dist/notifications/routes.d.ts +3 -3
  304. package/dist/observability/routes.d.ts +3 -3
  305. package/dist/org/auto-join-domain.d.ts +3 -2
  306. package/dist/org/auto-join-domain.d.ts.map +1 -1
  307. package/dist/org/auto-join-domain.js +1 -1
  308. package/dist/org/auto-join-domain.js.map +1 -1
  309. package/dist/org/context.d.ts.map +1 -1
  310. package/dist/org/context.js +84 -28
  311. package/dist/org/context.js.map +1 -1
  312. package/dist/org/index.d.ts +1 -0
  313. package/dist/org/index.d.ts.map +1 -1
  314. package/dist/org/index.js +1 -0
  315. package/dist/org/index.js.map +1 -1
  316. package/dist/org/service-identity.d.ts +43 -0
  317. package/dist/org/service-identity.d.ts.map +1 -0
  318. package/dist/org/service-identity.js +34 -0
  319. package/dist/org/service-identity.js.map +1 -0
  320. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  321. package/dist/provider-api/actions/provider-api.d.ts +13 -11
  322. package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
  323. package/dist/provider-api/index.d.ts +4 -0
  324. package/dist/provider-api/index.d.ts.map +1 -1
  325. package/dist/provider-api/index.js +17 -1
  326. package/dist/provider-api/index.js.map +1 -1
  327. package/dist/resources/handlers.d.ts +1 -1
  328. package/dist/scripts/docs/search.d.ts.map +1 -1
  329. package/dist/scripts/docs/search.js +12 -1
  330. package/dist/scripts/docs/search.js.map +1 -1
  331. package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
  332. package/dist/server/agent-chat/context-tools.js +3 -3
  333. package/dist/server/agent-chat/context-tools.js.map +1 -1
  334. package/dist/server/agent-chat/framework-prompts.d.ts +8 -3
  335. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  336. package/dist/server/agent-chat/framework-prompts.js +33 -62
  337. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  338. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  339. package/dist/server/agent-chat-plugin.js +16 -10
  340. package/dist/server/agent-chat-plugin.js.map +1 -1
  341. package/dist/server/agents-bundle.d.ts +18 -0
  342. package/dist/server/agents-bundle.d.ts.map +1 -1
  343. package/dist/server/agents-bundle.js +70 -4
  344. package/dist/server/agents-bundle.js.map +1 -1
  345. package/dist/server/auth.d.ts.map +1 -1
  346. package/dist/server/auth.js +4 -3
  347. package/dist/server/auth.js.map +1 -1
  348. package/dist/server/builder-browser.d.ts.map +1 -1
  349. package/dist/server/builder-browser.js +43 -19
  350. package/dist/server/builder-browser.js.map +1 -1
  351. package/dist/server/core-routes-plugin.js +2 -2
  352. package/dist/server/core-routes-plugin.js.map +1 -1
  353. package/dist/server/credential-provider.d.ts +38 -2
  354. package/dist/server/credential-provider.d.ts.map +1 -1
  355. package/dist/server/credential-provider.js +142 -64
  356. package/dist/server/credential-provider.js.map +1 -1
  357. package/dist/server/index.d.ts +1 -1
  358. package/dist/server/index.d.ts.map +1 -1
  359. package/dist/server/index.js +1 -1
  360. package/dist/server/index.js.map +1 -1
  361. package/dist/server/prompts/framework-core-compact.d.ts +1 -1
  362. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  363. package/dist/server/prompts/framework-core-compact.js +7 -13
  364. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  365. package/dist/server/prompts/framework-core.d.ts +1 -1
  366. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  367. package/dist/server/prompts/framework-core.js +10 -21
  368. package/dist/server/prompts/framework-core.js.map +1 -1
  369. package/dist/server/prompts/index.d.ts +1 -1
  370. package/dist/server/prompts/index.d.ts.map +1 -1
  371. package/dist/server/prompts/index.js +1 -1
  372. package/dist/server/prompts/index.js.map +1 -1
  373. package/dist/server/prompts/shared-rules.d.ts +16 -10
  374. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  375. package/dist/server/prompts/shared-rules.js +19 -10
  376. package/dist/server/prompts/shared-rules.js.map +1 -1
  377. package/dist/server/ssr-handler.d.ts +1 -1
  378. package/dist/server/ssr-handler.d.ts.map +1 -1
  379. package/dist/server/ssr-handler.js +10 -3
  380. package/dist/server/ssr-handler.js.map +1 -1
  381. package/dist/server/transcribe-voice.d.ts +1 -1
  382. package/dist/settings/user-settings.d.ts.map +1 -1
  383. package/dist/settings/user-settings.js +13 -1
  384. package/dist/settings/user-settings.js.map +1 -1
  385. package/dist/shared/cache-control.d.ts +52 -0
  386. package/dist/shared/cache-control.d.ts.map +1 -1
  387. package/dist/shared/cache-control.js +107 -0
  388. package/dist/shared/cache-control.js.map +1 -1
  389. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  390. package/dist/templates/chat/_gitignore +1 -0
  391. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  392. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  393. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  394. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  395. package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  396. package/dist/vite/agents-bundle-plugin.d.ts.map +1 -1
  397. package/dist/vite/agents-bundle-plugin.js +8 -7
  398. package/dist/vite/agents-bundle-plugin.js.map +1 -1
  399. package/dist/vite/client.d.ts.map +1 -1
  400. package/dist/vite/client.js +2 -0
  401. package/dist/vite/client.js.map +1 -1
  402. package/docs/content/actions.mdx +2 -2
  403. package/docs/content/agent-surfaces.mdx +1 -1
  404. package/docs/content/authentication.mdx +2 -0
  405. package/docs/content/deployment.mdx +36 -0
  406. package/docs/content/getting-started.mdx +477 -115
  407. package/docs/content/http-api.mdx +266 -0
  408. package/docs/content/syncing-template-changes.mdx +159 -0
  409. package/package.json +4 -3
  410. package/src/a2a/activity.ts +38 -27
  411. package/src/agent/engine/builder-engine.ts +35 -4
  412. package/src/agent/run-manager.ts +20 -1
  413. package/src/agent/run-store.ts +4 -1
  414. package/src/agent/types.ts +28 -8
  415. package/src/chat-threads/store.ts +45 -0
  416. package/src/checkpoints/index.ts +2 -0
  417. package/src/checkpoints/route-match.ts +13 -0
  418. package/src/cli/create.ts +105 -17
  419. package/src/cli/index.ts +20 -0
  420. package/src/cli/template-baseline.ts +410 -0
  421. package/src/cli/template-sync.ts +1004 -0
  422. package/src/cli/templates-meta.ts +1 -0
  423. package/src/client/AssistantChat.tsx +38 -12
  424. package/src/client/NewWorkspaceAppFlow.tsx +75 -10
  425. package/src/client/chat/message-components.tsx +127 -66
  426. package/src/client/chat/tool-call-display.tsx +29 -5
  427. package/src/client/error-format.ts +18 -0
  428. package/src/client/org/OrgSwitcher.tsx +30 -8
  429. package/src/client/org/TeamPage.tsx +7 -6
  430. package/src/client/sse-event-processor.ts +3 -0
  431. package/src/data-widgets/index.ts +41 -0
  432. package/src/deploy/build.ts +11 -9
  433. package/src/integrations/webhook-handler.ts +63 -9
  434. package/src/org/auto-join-domain.ts +4 -3
  435. package/src/org/context.ts +108 -39
  436. package/src/org/index.ts +5 -0
  437. package/src/org/service-identity.ts +60 -0
  438. package/src/provider-api/index.ts +22 -1
  439. package/src/scripts/docs/search.ts +12 -1
  440. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +25 -36
  441. package/src/server/agent-chat/context-tools.ts +9 -4
  442. package/src/server/agent-chat/framework-prompts.ts +38 -66
  443. package/src/server/agent-chat-plugin.ts +17 -10
  444. package/src/server/agents-bundle.ts +84 -5
  445. package/src/server/auth.ts +4 -3
  446. package/src/server/builder-browser.ts +47 -19
  447. package/src/server/core-routes-plugin.ts +2 -2
  448. package/src/server/credential-provider.ts +209 -68
  449. package/src/server/index.ts +3 -0
  450. package/src/server/prompts/framework-core-compact.ts +6 -13
  451. package/src/server/prompts/framework-core.ts +9 -21
  452. package/src/server/prompts/index.ts +0 -1
  453. package/src/server/prompts/shared-rules.ts +19 -11
  454. package/src/server/ssr-handler.ts +13 -2
  455. package/src/settings/user-settings.ts +13 -1
  456. package/src/shared/cache-control.ts +141 -0
  457. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  458. package/src/templates/chat/_gitignore +1 -0
  459. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  460. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  461. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  462. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  463. package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  464. package/src/vite/agents-bundle-plugin.ts +7 -6
  465. package/src/vite/client.ts +5 -0
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Baseline store for `agent-native template`.
3
+ *
4
+ * A baseline is the pristine upstream tree an app was generated from — the
5
+ * "base" side of the 3-way merge. It is stored as a git ref under
6
+ * `refs/agent-native/template-baseline/<app-path>` so it never shows up as
7
+ * working-tree files, and as a gzipped tar under `.agent-native/` only when
8
+ * the app is not inside a git repository at all.
9
+ *
10
+ * Every git operation here is plumbing driven by a throwaway `GIT_INDEX_FILE`
11
+ * and an out-of-tree `--work-tree`. Nothing in this file may move HEAD, touch
12
+ * the user's index, or write into their working tree.
13
+ */
14
+ import { execFileSync } from "node:child_process";
15
+ import fs from "node:fs";
16
+ import os from "node:os";
17
+ import path from "node:path";
18
+ const REF_NAMESPACE = "refs/agent-native";
19
+ const GIT_IDENTITY = {
20
+ GIT_AUTHOR_NAME: "agent-native",
21
+ GIT_AUTHOR_EMAIL: "noreply@agent-native.com",
22
+ GIT_COMMITTER_NAME: "agent-native",
23
+ GIT_COMMITTER_EMAIL: "noreply@agent-native.com",
24
+ };
25
+ export function resolveBaselineStore(appDir) {
26
+ // git reports realpaths; comparing against a symlinked temp path (macOS
27
+ // /var → /private/var) would compute a nonsense repo-relative prefix.
28
+ const resolved = realpath(path.resolve(appDir));
29
+ const gitDir = findGitDir(resolved);
30
+ const repoRoot = gitDir ? findRepoRoot(resolved) : null;
31
+ const prefix = repoRoot && repoRoot !== resolved
32
+ ? path.relative(repoRoot, resolved).split(path.sep).join("/")
33
+ : "";
34
+ return {
35
+ appDir: resolved,
36
+ gitDir,
37
+ repoRoot,
38
+ prefix,
39
+ slug: sanitizeRefPath(prefix || path.basename(resolved)),
40
+ };
41
+ }
42
+ export function baselineRefName(store, slot) {
43
+ return `${REF_NAMESPACE}/template-${slot}/${store.slug}`;
44
+ }
45
+ export function baselineTarballPath(store, slot) {
46
+ return path.join(store.appDir, ".agent-native", `template-${slot}`, `${path.basename(store.appDir)}.tar.gz`);
47
+ }
48
+ export function baselineExists(store, slot) {
49
+ if (store.gitDir)
50
+ return revParse(store, baselineRefName(store, slot)) !== null;
51
+ return fs.existsSync(baselineTarballPath(store, slot));
52
+ }
53
+ export function baselineDescription(store, slot) {
54
+ if (!store.gitDir) {
55
+ const file = baselineTarballPath(store, slot);
56
+ return fs.existsSync(file) ? file : null;
57
+ }
58
+ const ref = baselineRefName(store, slot);
59
+ const commit = revParse(store, ref);
60
+ if (!commit)
61
+ return null;
62
+ const subject = git(store, ["log", "-1", "--format=%s", commit]).trim();
63
+ return `${ref} (${commit.slice(0, 12)}) ${subject}`;
64
+ }
65
+ /**
66
+ * Snapshot `sourceDir` into the baseline store. Writes through a temporary
67
+ * index and an out-of-tree work-tree so HEAD, the real index, and the working
68
+ * tree are untouched.
69
+ */
70
+ export function writeBaseline(store, sourceDir, slot, meta) {
71
+ if (!store.gitDir) {
72
+ const file = baselineTarballPath(store, slot);
73
+ fs.mkdirSync(path.dirname(file), { recursive: true });
74
+ execFileSync("tar", ["-czf", file, "-C", sourceDir, "."], {
75
+ stdio: "pipe",
76
+ });
77
+ return { kind: "tarball", location: file, configuredRefspecs: [] };
78
+ }
79
+ const stage = fs.mkdtempSync(path.join(os.tmpdir(), "an-template-baseline-"));
80
+ try {
81
+ const stageRoot = path.join(stage, "tree");
82
+ const target = store.prefix
83
+ ? path.join(stageRoot, ...store.prefix.split("/"))
84
+ : stageRoot;
85
+ fs.mkdirSync(target, { recursive: true });
86
+ copyPlainTree(sourceDir, target);
87
+ const indexFile = path.join(stage, "index");
88
+ const env = { ...process.env, ...GIT_IDENTITY, GIT_INDEX_FILE: indexFile };
89
+ // --force: the app's own .gitignore lives inside the staged tree and would
90
+ // otherwise drop scaffolded files from the baseline.
91
+ git(store, ["--work-tree", stageRoot, "add", "-A", "--force", "."], {
92
+ cwd: stageRoot,
93
+ env,
94
+ });
95
+ const tree = git(store, ["write-tree"], { cwd: stageRoot, env }).trim();
96
+ const ref = baselineRefName(store, slot);
97
+ const parent = revParse(store, ref);
98
+ const message = [
99
+ `agent-native template ${slot}: ${meta.template}`,
100
+ "",
101
+ `template: ${meta.template}`,
102
+ `templateRef: ${meta.templateRef}`,
103
+ `coreVersion: ${meta.coreVersion ?? "unknown"}`,
104
+ `path: ${store.prefix || "."}`,
105
+ ].join("\n");
106
+ const commit = git(store, ["commit-tree", tree, ...(parent ? ["-p", parent] : []), "-m", message], { cwd: stageRoot, env }).trim();
107
+ git(store, ["update-ref", ref, commit, ...(parent ? [parent] : [])]);
108
+ return {
109
+ kind: "git-ref",
110
+ location: ref,
111
+ commit,
112
+ configuredRefspecs: parent ? [] : ensureBaselineRefspecs(store),
113
+ };
114
+ }
115
+ finally {
116
+ fs.rmSync(stage, { recursive: true, force: true });
117
+ }
118
+ }
119
+ /** Point `slot` at whatever `from` currently points at. */
120
+ export function promoteBaseline(store, from, to) {
121
+ if (!store.gitDir) {
122
+ const src = baselineTarballPath(store, from);
123
+ if (!fs.existsSync(src))
124
+ return false;
125
+ const dst = baselineTarballPath(store, to);
126
+ fs.mkdirSync(path.dirname(dst), { recursive: true });
127
+ fs.copyFileSync(src, dst);
128
+ fs.rmSync(src, { force: true });
129
+ return true;
130
+ }
131
+ const commit = revParse(store, baselineRefName(store, from));
132
+ if (!commit)
133
+ return false;
134
+ git(store, ["update-ref", baselineRefName(store, to), commit]);
135
+ git(store, ["update-ref", "-d", baselineRefName(store, from)]);
136
+ return true;
137
+ }
138
+ export function clearBaseline(store, slot) {
139
+ if (!store.gitDir) {
140
+ fs.rmSync(baselineTarballPath(store, slot), { force: true });
141
+ return;
142
+ }
143
+ if (revParse(store, baselineRefName(store, slot))) {
144
+ git(store, ["update-ref", "-d", baselineRefName(store, slot)]);
145
+ }
146
+ }
147
+ /**
148
+ * Extract a stored baseline into a fresh temp directory whose root is the app
149
+ * root. Returns null when the slot is empty. Callers own the returned dir.
150
+ */
151
+ export function materializeBaseline(store, slot) {
152
+ const out = fs.mkdtempSync(path.join(os.tmpdir(), "an-template-base-"));
153
+ try {
154
+ if (!store.gitDir) {
155
+ const file = baselineTarballPath(store, slot);
156
+ if (!fs.existsSync(file)) {
157
+ fs.rmSync(out, { recursive: true, force: true });
158
+ return null;
159
+ }
160
+ execFileSync("tar", ["-xzf", file, "-C", out], { stdio: "pipe" });
161
+ return out;
162
+ }
163
+ const ref = baselineRefName(store, slot);
164
+ if (!revParse(store, ref)) {
165
+ fs.rmSync(out, { recursive: true, force: true });
166
+ return null;
167
+ }
168
+ const tarPath = path.join(out, ".baseline.tar");
169
+ const args = ["archive", "--format=tar", "-o", tarPath, ref];
170
+ if (store.prefix)
171
+ args.push("--", store.prefix);
172
+ git(store, args);
173
+ const strip = store.prefix ? store.prefix.split("/").length : 0;
174
+ execFileSync("tar", [
175
+ "-xf",
176
+ tarPath,
177
+ "-C",
178
+ out,
179
+ ...(strip ? [`--strip-components=${strip}`] : []),
180
+ ], { stdio: "pipe" });
181
+ fs.rmSync(tarPath, { force: true });
182
+ return out;
183
+ }
184
+ catch (err) {
185
+ fs.rmSync(out, { recursive: true, force: true });
186
+ throw err;
187
+ }
188
+ }
189
+ /**
190
+ * Teach the repo's remote to carry `refs/agent-native/*` so baselines survive
191
+ * clone and push. Returns the refspecs it actually added.
192
+ */
193
+ export function ensureBaselineRefspecs(store) {
194
+ if (!store.gitDir)
195
+ return [];
196
+ const remotes = git(store, ["remote"])
197
+ .split("\n")
198
+ .map((line) => line.trim())
199
+ .filter(Boolean);
200
+ if (remotes.length === 0)
201
+ return [];
202
+ const remote = remotes.includes("origin") ? "origin" : remotes[0];
203
+ const spec = "+refs/agent-native/*:refs/agent-native/*";
204
+ const added = [];
205
+ for (const key of ["fetch", "push"]) {
206
+ const existing = gitAllowFail(store, [
207
+ "config",
208
+ "--get-all",
209
+ `remote.${remote}.${key}`,
210
+ ]);
211
+ if (existing.split("\n").some((line) => line.trim() === spec))
212
+ continue;
213
+ git(store, ["config", "--add", `remote.${remote}.${key}`, spec]);
214
+ added.push(`remote.${remote}.${key}`);
215
+ }
216
+ return added;
217
+ }
218
+ /** Uncommitted changes under the app dir, as porcelain lines. */
219
+ export function appDirtyPaths(store) {
220
+ if (!store.gitDir)
221
+ return [];
222
+ const out = gitAllowFail(store, [
223
+ "status",
224
+ "--porcelain",
225
+ "--",
226
+ store.prefix || ".",
227
+ ]);
228
+ return out
229
+ .split("\n")
230
+ .map((line) => line.trim())
231
+ .filter(Boolean);
232
+ }
233
+ /* ─────────────────────────────────────────────────────────────────────────
234
+ * Internals
235
+ * ───────────────────────────────────────────────────────────────────────── */
236
+ function git(store, args, options = {}) {
237
+ return execFileSync("git", ["--git-dir", store.gitDir, ...args], {
238
+ // Without an explicit work tree, `--git-dir` makes git treat cwd as the
239
+ // work-tree root, which turns every sibling path into a phantom deletion.
240
+ cwd: options.cwd ?? store.repoRoot ?? store.appDir,
241
+ encoding: "utf-8",
242
+ env: options.env ?? { ...process.env, ...GIT_IDENTITY },
243
+ stdio: ["ignore", "pipe", "pipe"],
244
+ maxBuffer: 256 * 1024 * 1024,
245
+ });
246
+ }
247
+ function gitAllowFail(store, args) {
248
+ try {
249
+ return git(store, args);
250
+ }
251
+ catch {
252
+ return "";
253
+ }
254
+ }
255
+ function revParse(store, ref) {
256
+ if (!store.gitDir)
257
+ return null;
258
+ const out = gitAllowFail(store, ["rev-parse", "--verify", "--quiet", ref]);
259
+ return out.trim() || null;
260
+ }
261
+ function realpath(dir) {
262
+ try {
263
+ return fs.realpathSync(dir);
264
+ }
265
+ catch {
266
+ return dir;
267
+ }
268
+ }
269
+ function findGitDir(dir) {
270
+ try {
271
+ return execFileSync("git", ["rev-parse", "--absolute-git-dir"], {
272
+ cwd: dir,
273
+ encoding: "utf-8",
274
+ stdio: ["ignore", "pipe", "ignore"],
275
+ }).trim();
276
+ }
277
+ catch {
278
+ return null;
279
+ }
280
+ }
281
+ function findRepoRoot(dir) {
282
+ try {
283
+ return execFileSync("git", ["rev-parse", "--show-toplevel"], {
284
+ cwd: dir,
285
+ encoding: "utf-8",
286
+ stdio: ["ignore", "pipe", "ignore"],
287
+ }).trim();
288
+ }
289
+ catch {
290
+ return null;
291
+ }
292
+ }
293
+ /** Copy regular files and directories only. Symlinks are never part of a
294
+ * baseline: they are agent-tool conveniences, not upstream content. */
295
+ function copyPlainTree(src, dest) {
296
+ fs.mkdirSync(dest, { recursive: true });
297
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
298
+ if (entry.isSymbolicLink())
299
+ continue;
300
+ const from = path.join(src, entry.name);
301
+ const to = path.join(dest, entry.name);
302
+ if (entry.isDirectory()) {
303
+ if (entry.name === ".git")
304
+ continue;
305
+ copyPlainTree(from, to);
306
+ }
307
+ else if (entry.isFile()) {
308
+ fs.copyFileSync(from, to);
309
+ }
310
+ }
311
+ }
312
+ /** Make each path segment safe for `git check-ref-format`. */
313
+ export function sanitizeRefPath(value) {
314
+ const segments = value
315
+ .split("/")
316
+ .map((segment) => sanitizeRefSegment(segment))
317
+ .filter(Boolean);
318
+ return segments.length > 0 ? segments.join("/") : "app";
319
+ }
320
+ function sanitizeRefSegment(segment) {
321
+ let out = segment
322
+ // eslint-disable-next-line no-control-regex
323
+ .replace(/[\u0000-\u0020\u007f~^:?*\[\\]/g, "-")
324
+ .replace(/\.\.+/g, "-")
325
+ .replace(/@\{/g, "-");
326
+ while (out.startsWith("."))
327
+ out = out.slice(1);
328
+ while (out.endsWith("."))
329
+ out = out.slice(0, -1);
330
+ if (out.endsWith(".lock"))
331
+ out = `${out.slice(0, -".lock".length)}-lock`;
332
+ return out;
333
+ }
334
+ //# sourceMappingURL=template-baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-baseline.js","sourceRoot":"","sources":["../../src/cli/template-baseline.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Baseline store for `agent-native template`.\n *\n * A baseline is the pristine upstream tree an app was generated from — the\n * \"base\" side of the 3-way merge. It is stored as a git ref under\n * `refs/agent-native/template-baseline/<app-path>` so it never shows up as\n * working-tree files, and as a gzipped tar under `.agent-native/` only when\n * the app is not inside a git repository at all.\n *\n * Every git operation here is plumbing driven by a throwaway `GIT_INDEX_FILE`\n * and an out-of-tree `--work-tree`. Nothing in this file may move HEAD, touch\n * the user's index, or write into their working tree.\n */\nimport { execFileSync } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nexport type BaselineSlot = \"baseline\" | \"pending\";\n\nexport interface BaselineStore {\n appDir: string;\n /** Absolute `.git` directory, or null when the app is not in a repo. */\n gitDir: string | null;\n /** Absolute work-tree root, or null when the app is not in a repo. */\n repoRoot: string | null;\n /** Repo-relative posix prefix the app lives at (\"\" when app === repo root). */\n prefix: string;\n /** Stable id used in ref names and tarball filenames. */\n slug: string;\n}\n\nexport interface BaselineWriteMeta {\n template: string;\n templateRef: string;\n coreVersion?: string;\n}\n\nexport interface BaselineWriteResult {\n kind: \"git-ref\" | \"tarball\";\n /** Ref name or tarball path. */\n location: string;\n /** Commit sha for git refs. */\n commit?: string;\n configuredRefspecs: string[];\n}\n\nconst REF_NAMESPACE = \"refs/agent-native\";\nconst GIT_IDENTITY = {\n GIT_AUTHOR_NAME: \"agent-native\",\n GIT_AUTHOR_EMAIL: \"noreply@agent-native.com\",\n GIT_COMMITTER_NAME: \"agent-native\",\n GIT_COMMITTER_EMAIL: \"noreply@agent-native.com\",\n};\n\nexport function resolveBaselineStore(appDir: string): BaselineStore {\n // git reports realpaths; comparing against a symlinked temp path (macOS\n // /var → /private/var) would compute a nonsense repo-relative prefix.\n const resolved = realpath(path.resolve(appDir));\n const gitDir = findGitDir(resolved);\n const repoRoot = gitDir ? findRepoRoot(resolved) : null;\n const prefix =\n repoRoot && repoRoot !== resolved\n ? path.relative(repoRoot, resolved).split(path.sep).join(\"/\")\n : \"\";\n return {\n appDir: resolved,\n gitDir,\n repoRoot,\n prefix,\n slug: sanitizeRefPath(prefix || path.basename(resolved)),\n };\n}\n\nexport function baselineRefName(\n store: BaselineStore,\n slot: BaselineSlot,\n): string {\n return `${REF_NAMESPACE}/template-${slot}/${store.slug}`;\n}\n\nexport function baselineTarballPath(\n store: BaselineStore,\n slot: BaselineSlot,\n): string {\n return path.join(\n store.appDir,\n \".agent-native\",\n `template-${slot}`,\n `${path.basename(store.appDir)}.tar.gz`,\n );\n}\n\nexport function baselineExists(\n store: BaselineStore,\n slot: BaselineSlot,\n): boolean {\n if (store.gitDir)\n return revParse(store, baselineRefName(store, slot)) !== null;\n return fs.existsSync(baselineTarballPath(store, slot));\n}\n\nexport function baselineDescription(\n store: BaselineStore,\n slot: BaselineSlot,\n): string | null {\n if (!store.gitDir) {\n const file = baselineTarballPath(store, slot);\n return fs.existsSync(file) ? file : null;\n }\n const ref = baselineRefName(store, slot);\n const commit = revParse(store, ref);\n if (!commit) return null;\n const subject = git(store, [\"log\", \"-1\", \"--format=%s\", commit]).trim();\n return `${ref} (${commit.slice(0, 12)}) ${subject}`;\n}\n\n/**\n * Snapshot `sourceDir` into the baseline store. Writes through a temporary\n * index and an out-of-tree work-tree so HEAD, the real index, and the working\n * tree are untouched.\n */\nexport function writeBaseline(\n store: BaselineStore,\n sourceDir: string,\n slot: BaselineSlot,\n meta: BaselineWriteMeta,\n): BaselineWriteResult {\n if (!store.gitDir) {\n const file = baselineTarballPath(store, slot);\n fs.mkdirSync(path.dirname(file), { recursive: true });\n execFileSync(\"tar\", [\"-czf\", file, \"-C\", sourceDir, \".\"], {\n stdio: \"pipe\",\n });\n return { kind: \"tarball\", location: file, configuredRefspecs: [] };\n }\n\n const stage = fs.mkdtempSync(path.join(os.tmpdir(), \"an-template-baseline-\"));\n try {\n const stageRoot = path.join(stage, \"tree\");\n const target = store.prefix\n ? path.join(stageRoot, ...store.prefix.split(\"/\"))\n : stageRoot;\n fs.mkdirSync(target, { recursive: true });\n copyPlainTree(sourceDir, target);\n\n const indexFile = path.join(stage, \"index\");\n const env = { ...process.env, ...GIT_IDENTITY, GIT_INDEX_FILE: indexFile };\n // --force: the app's own .gitignore lives inside the staged tree and would\n // otherwise drop scaffolded files from the baseline.\n git(store, [\"--work-tree\", stageRoot, \"add\", \"-A\", \"--force\", \".\"], {\n cwd: stageRoot,\n env,\n });\n const tree = git(store, [\"write-tree\"], { cwd: stageRoot, env }).trim();\n\n const ref = baselineRefName(store, slot);\n const parent = revParse(store, ref);\n const message = [\n `agent-native template ${slot}: ${meta.template}`,\n \"\",\n `template: ${meta.template}`,\n `templateRef: ${meta.templateRef}`,\n `coreVersion: ${meta.coreVersion ?? \"unknown\"}`,\n `path: ${store.prefix || \".\"}`,\n ].join(\"\\n\");\n const commit = git(\n store,\n [\"commit-tree\", tree, ...(parent ? [\"-p\", parent] : []), \"-m\", message],\n { cwd: stageRoot, env },\n ).trim();\n\n git(store, [\"update-ref\", ref, commit, ...(parent ? [parent] : [])]);\n return {\n kind: \"git-ref\",\n location: ref,\n commit,\n configuredRefspecs: parent ? [] : ensureBaselineRefspecs(store),\n };\n } finally {\n fs.rmSync(stage, { recursive: true, force: true });\n }\n}\n\n/** Point `slot` at whatever `from` currently points at. */\nexport function promoteBaseline(\n store: BaselineStore,\n from: BaselineSlot,\n to: BaselineSlot,\n): boolean {\n if (!store.gitDir) {\n const src = baselineTarballPath(store, from);\n if (!fs.existsSync(src)) return false;\n const dst = baselineTarballPath(store, to);\n fs.mkdirSync(path.dirname(dst), { recursive: true });\n fs.copyFileSync(src, dst);\n fs.rmSync(src, { force: true });\n return true;\n }\n const commit = revParse(store, baselineRefName(store, from));\n if (!commit) return false;\n git(store, [\"update-ref\", baselineRefName(store, to), commit]);\n git(store, [\"update-ref\", \"-d\", baselineRefName(store, from)]);\n return true;\n}\n\nexport function clearBaseline(store: BaselineStore, slot: BaselineSlot): void {\n if (!store.gitDir) {\n fs.rmSync(baselineTarballPath(store, slot), { force: true });\n return;\n }\n if (revParse(store, baselineRefName(store, slot))) {\n git(store, [\"update-ref\", \"-d\", baselineRefName(store, slot)]);\n }\n}\n\n/**\n * Extract a stored baseline into a fresh temp directory whose root is the app\n * root. Returns null when the slot is empty. Callers own the returned dir.\n */\nexport function materializeBaseline(\n store: BaselineStore,\n slot: BaselineSlot,\n): string | null {\n const out = fs.mkdtempSync(path.join(os.tmpdir(), \"an-template-base-\"));\n try {\n if (!store.gitDir) {\n const file = baselineTarballPath(store, slot);\n if (!fs.existsSync(file)) {\n fs.rmSync(out, { recursive: true, force: true });\n return null;\n }\n execFileSync(\"tar\", [\"-xzf\", file, \"-C\", out], { stdio: \"pipe\" });\n return out;\n }\n\n const ref = baselineRefName(store, slot);\n if (!revParse(store, ref)) {\n fs.rmSync(out, { recursive: true, force: true });\n return null;\n }\n const tarPath = path.join(out, \".baseline.tar\");\n const args = [\"archive\", \"--format=tar\", \"-o\", tarPath, ref];\n if (store.prefix) args.push(\"--\", store.prefix);\n git(store, args);\n const strip = store.prefix ? store.prefix.split(\"/\").length : 0;\n execFileSync(\n \"tar\",\n [\n \"-xf\",\n tarPath,\n \"-C\",\n out,\n ...(strip ? [`--strip-components=${strip}`] : []),\n ],\n { stdio: \"pipe\" },\n );\n fs.rmSync(tarPath, { force: true });\n return out;\n } catch (err) {\n fs.rmSync(out, { recursive: true, force: true });\n throw err;\n }\n}\n\n/**\n * Teach the repo's remote to carry `refs/agent-native/*` so baselines survive\n * clone and push. Returns the refspecs it actually added.\n */\nexport function ensureBaselineRefspecs(store: BaselineStore): string[] {\n if (!store.gitDir) return [];\n const remotes = git(store, [\"remote\"])\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter(Boolean);\n if (remotes.length === 0) return [];\n const remote = remotes.includes(\"origin\") ? \"origin\" : remotes[0]!;\n const spec = \"+refs/agent-native/*:refs/agent-native/*\";\n const added: string[] = [];\n for (const key of [\"fetch\", \"push\"] as const) {\n const existing = gitAllowFail(store, [\n \"config\",\n \"--get-all\",\n `remote.${remote}.${key}`,\n ]);\n if (existing.split(\"\\n\").some((line) => line.trim() === spec)) continue;\n git(store, [\"config\", \"--add\", `remote.${remote}.${key}`, spec]);\n added.push(`remote.${remote}.${key}`);\n }\n return added;\n}\n\n/** Uncommitted changes under the app dir, as porcelain lines. */\nexport function appDirtyPaths(store: BaselineStore): string[] {\n if (!store.gitDir) return [];\n const out = gitAllowFail(store, [\n \"status\",\n \"--porcelain\",\n \"--\",\n store.prefix || \".\",\n ]);\n return out\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter(Boolean);\n}\n\n/* ─────────────────────────────────────────────────────────────────────────\n * Internals\n * ───────────────────────────────────────────────────────────────────────── */\n\nfunction git(\n store: BaselineStore,\n args: string[],\n options: { cwd?: string; env?: NodeJS.ProcessEnv } = {},\n): string {\n return execFileSync(\"git\", [\"--git-dir\", store.gitDir!, ...args], {\n // Without an explicit work tree, `--git-dir` makes git treat cwd as the\n // work-tree root, which turns every sibling path into a phantom deletion.\n cwd: options.cwd ?? store.repoRoot ?? store.appDir,\n encoding: \"utf-8\",\n env: options.env ?? { ...process.env, ...GIT_IDENTITY },\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n maxBuffer: 256 * 1024 * 1024,\n });\n}\n\nfunction gitAllowFail(store: BaselineStore, args: string[]): string {\n try {\n return git(store, args);\n } catch {\n return \"\";\n }\n}\n\nfunction revParse(store: BaselineStore, ref: string): string | null {\n if (!store.gitDir) return null;\n const out = gitAllowFail(store, [\"rev-parse\", \"--verify\", \"--quiet\", ref]);\n return out.trim() || null;\n}\n\nfunction realpath(dir: string): string {\n try {\n return fs.realpathSync(dir);\n } catch {\n return dir;\n }\n}\n\nfunction findGitDir(dir: string): string | null {\n try {\n return execFileSync(\"git\", [\"rev-parse\", \"--absolute-git-dir\"], {\n cwd: dir,\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n }).trim();\n } catch {\n return null;\n }\n}\n\nfunction findRepoRoot(dir: string): string | null {\n try {\n return execFileSync(\"git\", [\"rev-parse\", \"--show-toplevel\"], {\n cwd: dir,\n encoding: \"utf-8\",\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n }).trim();\n } catch {\n return null;\n }\n}\n\n/** Copy regular files and directories only. Symlinks are never part of a\n * baseline: they are agent-tool conveniences, not upstream content. */\nfunction copyPlainTree(src: string, dest: string): void {\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n if (entry.isSymbolicLink()) continue;\n const from = path.join(src, entry.name);\n const to = path.join(dest, entry.name);\n if (entry.isDirectory()) {\n if (entry.name === \".git\") continue;\n copyPlainTree(from, to);\n } else if (entry.isFile()) {\n fs.copyFileSync(from, to);\n }\n }\n}\n\n/** Make each path segment safe for `git check-ref-format`. */\nexport function sanitizeRefPath(value: string): string {\n const segments = value\n .split(\"/\")\n .map((segment) => sanitizeRefSegment(segment))\n .filter(Boolean);\n return segments.length > 0 ? segments.join(\"/\") : \"app\";\n}\n\nfunction sanitizeRefSegment(segment: string): string {\n let out = segment\n // eslint-disable-next-line no-control-regex\n .replace(/[\\u0000-\\u0020\\u007f~^:?*\\[\\\\]/g, \"-\")\n .replace(/\\.\\.+/g, \"-\")\n .replace(/@\\{/g, \"-\");\n while (out.startsWith(\".\")) out = out.slice(1);\n while (out.endsWith(\".\")) out = out.slice(0, -1);\n if (out.endsWith(\".lock\")) out = `${out.slice(0, -\".lock\".length)}-lock`;\n return out;\n}\n"]}
@@ -0,0 +1,57 @@
1
+ export interface TemplateIO {
2
+ out: (message: string) => void;
3
+ err: (message: string) => void;
4
+ }
5
+ export interface TemplateProvenance {
6
+ template?: string;
7
+ frameworkSkills?: string;
8
+ templateRef?: string;
9
+ templateSource?: "github" | "bundled" | "local-checkout";
10
+ coreVersion?: string;
11
+ shape?: "workspace" | "standalone";
12
+ }
13
+ export interface AppTarget {
14
+ appDir: string;
15
+ appName: string;
16
+ shape: "workspace" | "standalone";
17
+ workspaceRoot?: string;
18
+ workspaceCoreName?: string;
19
+ provenance: TemplateProvenance;
20
+ }
21
+ export interface MaterializeOptions {
22
+ appName: string;
23
+ template: string;
24
+ /** Git ref to fetch from, or null to use the bundled/local template copy. */
25
+ ref: string | null;
26
+ shape: "workspace" | "standalone";
27
+ workspaceRoot?: string;
28
+ workspaceCoreName?: string;
29
+ destDir?: string;
30
+ }
31
+ export interface MaterializeResult {
32
+ dir: string;
33
+ ref: string;
34
+ source: "github" | "bundled" | "local-checkout";
35
+ }
36
+ export interface TemplateMergeResult {
37
+ added: string[];
38
+ updated: string[];
39
+ deleted: string[];
40
+ conflicted: string[];
41
+ manual: string[];
42
+ keptLocal: string[];
43
+ }
44
+ /**
45
+ * Reproduce, in a temp directory, the exact bytes `create` would have written
46
+ * for this (template, ref, app name, shape, workspace scope).
47
+ */
48
+ export declare function materializeTemplate(opts: MaterializeOptions): Promise<MaterializeResult>;
49
+ export declare function isMergeExcluded(rel: string): boolean;
50
+ export declare function listMergeableFiles(root: string): Set<string>;
51
+ export declare function mergeTemplateTrees(appDir: string, baseDir: string, theirsDir: string, options?: {
52
+ dryRun?: boolean;
53
+ }): TemplateMergeResult;
54
+ export declare function readProvenance(appDir: string): TemplateProvenance;
55
+ export declare function resolveTargets(cwd: string, appArg?: string): AppTarget[];
56
+ export declare function runTemplate(args: string[], io?: TemplateIO): Promise<number>;
57
+ //# sourceMappingURL=template-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-sync.d.ts","sourceRoot":"","sources":["../../src/cli/template-sync.ts"],"names":[],"mappings":"AA0DA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAmBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,GAAG,YAAY,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,WAAW,GAAG,YAAY,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAsE5B;AAMD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUpD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAmB5D;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,mBAAmB,CAuErB;AA2CD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAOjE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAkCxE;AAyDD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,GAAE,UAAsB,GACzB,OAAO,CAAC,MAAM,CAAC,CA2CjB"}