@agent-native/core 0.101.14 → 0.102.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 (303) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +6 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/cli/templates-meta.ts +13 -0
  5. package/corpus/core/src/client/org/OrgSwitcher.tsx +2 -0
  6. package/corpus/templates/content/actions/_database-source-utils.ts +59 -4
  7. package/corpus/templates/content/actions/prepare-builder-source-review.ts +9 -0
  8. package/corpus/templates/content/actions/preview-builder-source-review.ts +6 -4
  9. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +4 -0
  10. package/corpus/templates/content/changelog/2026-07-15-selected-builder-reviews-now-load-only-the-chosen-rows-avoid.md +6 -0
  11. package/corpus/templates/content/shared/api.ts +1 -0
  12. package/corpus/templates/tasks/.agents/commands/visual-plan.md +9 -0
  13. package/corpus/templates/tasks/.agents/commands/visual-recap.md +8 -0
  14. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +492 -0
  15. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +189 -0
  16. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +76 -0
  17. package/corpus/templates/tasks/.agents/skills/agent-watchdog/README.md +43 -0
  18. package/corpus/templates/tasks/.agents/skills/agent-watchdog/SKILL.md +110 -0
  19. package/corpus/templates/tasks/.agents/skills/agent-watchdog/agents/openai.yaml +4 -0
  20. package/corpus/templates/tasks/.agents/skills/capture-learnings/SKILL.md +89 -0
  21. package/corpus/templates/tasks/.agents/skills/change-summary/SKILL.md +83 -0
  22. package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +221 -0
  23. package/corpus/templates/tasks/.agents/skills/delegate-to-agent/SKILL.md +263 -0
  24. package/corpus/templates/tasks/.agents/skills/efficient-fable/README.md +75 -0
  25. package/corpus/templates/tasks/.agents/skills/efficient-fable/SKILL.md +95 -0
  26. package/corpus/templates/tasks/.agents/skills/efficient-frontier/README.md +53 -0
  27. package/corpus/templates/tasks/.agents/skills/efficient-frontier/SKILL.md +73 -0
  28. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +112 -0
  29. package/corpus/templates/tasks/.agents/skills/plan-arbiter/README.md +41 -0
  30. package/corpus/templates/tasks/.agents/skills/plan-arbiter/SKILL.md +114 -0
  31. package/corpus/templates/tasks/.agents/skills/plan-arbiter/agents/openai.yaml +4 -0
  32. package/corpus/templates/tasks/.agents/skills/plow-ahead/README.md +42 -0
  33. package/corpus/templates/tasks/.agents/skills/plow-ahead/SKILL.md +104 -0
  34. package/corpus/templates/tasks/.agents/skills/plow-ahead/agents/openai.yaml +4 -0
  35. package/corpus/templates/tasks/.agents/skills/quick-recap/README.md +55 -0
  36. package/corpus/templates/tasks/.agents/skills/quick-recap/SKILL.md +54 -0
  37. package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/README.md +54 -0
  38. package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/SKILL.md +126 -0
  39. package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/agents/openai.yaml +4 -0
  40. package/corpus/templates/tasks/.agents/skills/real-time-sync/SKILL.md +232 -0
  41. package/corpus/templates/tasks/.agents/skills/security/SKILL.md +280 -0
  42. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +106 -0
  43. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +95 -0
  44. package/corpus/templates/tasks/.agents/skills/stay-within-limits/README.md +61 -0
  45. package/corpus/templates/tasks/.agents/skills/stay-within-limits/SKILL.md +83 -0
  46. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  47. package/corpus/templates/tasks/.agents/skills/visual-plan/SKILL.md +547 -0
  48. package/corpus/templates/tasks/.agents/skills/visual-plan/agent-native-skill.json +12 -0
  49. package/corpus/templates/tasks/.agents/skills/visual-plan/references/canvas.md +121 -0
  50. package/corpus/templates/tasks/.agents/skills/visual-plan/references/document-quality.md +178 -0
  51. package/corpus/templates/tasks/.agents/skills/visual-plan/references/exemplar.md +62 -0
  52. package/corpus/templates/tasks/.agents/skills/visual-plan/references/wireframe.md +264 -0
  53. package/corpus/templates/tasks/.agents/skills/visual-recap/SKILL.md +634 -0
  54. package/corpus/templates/tasks/.agents/skills/visual-recap/agent-native-skill.json +12 -0
  55. package/corpus/templates/tasks/.agents/skills/visual-recap/references/wireframe.md +264 -0
  56. package/corpus/templates/tasks/.claude/commands/visual-plan.md +9 -0
  57. package/corpus/templates/tasks/.claude/commands/visual-recap.md +8 -0
  58. package/corpus/templates/tasks/.env.example +5 -0
  59. package/corpus/templates/tasks/.ignore +0 -0
  60. package/corpus/templates/tasks/.prettierrc +5 -0
  61. package/corpus/templates/tasks/AGENTS.md +158 -0
  62. package/corpus/templates/tasks/DEVELOPING.md +185 -0
  63. package/corpus/templates/tasks/README.md +16 -0
  64. package/corpus/templates/tasks/actions/bulk-delete-inbox-items.ts +24 -0
  65. package/corpus/templates/tasks/actions/bulk-delete-tasks.ts +21 -0
  66. package/corpus/templates/tasks/actions/bulk-mark-inbox-items-ready.ts +27 -0
  67. package/corpus/templates/tasks/actions/bulk-update-tasks.ts +35 -0
  68. package/corpus/templates/tasks/actions/create-custom-field.ts +22 -0
  69. package/corpus/templates/tasks/actions/create-inbox-item.ts +30 -0
  70. package/corpus/templates/tasks/actions/create-task.ts +33 -0
  71. package/corpus/templates/tasks/actions/delete-custom-field.ts +19 -0
  72. package/corpus/templates/tasks/actions/delete-inbox-item.ts +17 -0
  73. package/corpus/templates/tasks/actions/delete-task.ts +17 -0
  74. package/corpus/templates/tasks/actions/lib/boolean-query-param.ts +30 -0
  75. package/corpus/templates/tasks/actions/list-custom-fields.ts +18 -0
  76. package/corpus/templates/tasks/actions/list-inbox-items.ts +16 -0
  77. package/corpus/templates/tasks/actions/list-tasks.ts +52 -0
  78. package/corpus/templates/tasks/actions/list-visible-task-fields.ts +18 -0
  79. package/corpus/templates/tasks/actions/mark-inbox-item-ready.ts +31 -0
  80. package/corpus/templates/tasks/actions/navigate.ts +51 -0
  81. package/corpus/templates/tasks/actions/reorder-custom-fields.ts +27 -0
  82. package/corpus/templates/tasks/actions/reorder-inbox-items.ts +24 -0
  83. package/corpus/templates/tasks/actions/reorder-tasks.ts +29 -0
  84. package/corpus/templates/tasks/actions/run.ts +2 -0
  85. package/corpus/templates/tasks/actions/update-custom-field.ts +33 -0
  86. package/corpus/templates/tasks/actions/update-inbox-item.ts +24 -0
  87. package/corpus/templates/tasks/actions/update-task.ts +68 -0
  88. package/corpus/templates/tasks/actions/update-visible-task-fields.ts +27 -0
  89. package/corpus/templates/tasks/actions/view-screen-helpers.ts +68 -0
  90. package/corpus/templates/tasks/actions/view-screen.ts +207 -0
  91. package/corpus/templates/tasks/app/components/custom-fields/FieldCreateBar.tsx +121 -0
  92. package/corpus/templates/tasks/app/components/custom-fields/FieldListRow.tsx +116 -0
  93. package/corpus/templates/tasks/app/components/custom-fields/FieldsList.tsx +225 -0
  94. package/corpus/templates/tasks/app/components/custom-fields/FieldsListSkeleton.tsx +18 -0
  95. package/corpus/templates/tasks/app/components/custom-fields/FieldsPage.tsx +42 -0
  96. package/corpus/templates/tasks/app/components/custom-fields/editor/FieldEditorSidebar.tsx +69 -0
  97. package/corpus/templates/tasks/app/components/custom-fields/editor/FieldTitleSection.tsx +32 -0
  98. package/corpus/templates/tasks/app/components/custom-fields/editor/config/CurrencyConfigControl.tsx +49 -0
  99. package/corpus/templates/tasks/app/components/custom-fields/editor/config/FieldConfigControl.tsx +56 -0
  100. package/corpus/templates/tasks/app/components/custom-fields/editor/config/NumberConfigControl.tsx +52 -0
  101. package/corpus/templates/tasks/app/components/custom-fields/editor/config/PercentConfigControl.tsx +30 -0
  102. package/corpus/templates/tasks/app/components/custom-fields/editor/config/SelectConfigControl.tsx +135 -0
  103. package/corpus/templates/tasks/app/components/custom-fields/editor/config/select-colors.ts +23 -0
  104. package/corpus/templates/tasks/app/components/custom-fields/editor/config/utils.ts +52 -0
  105. package/corpus/templates/tasks/app/components/custom-fields/editor/types.ts +7 -0
  106. package/corpus/templates/tasks/app/components/dnd/SortableItem.tsx +72 -0
  107. package/corpus/templates/tasks/app/components/dnd/SortableList.tsx +136 -0
  108. package/corpus/templates/tasks/app/components/dnd/reorder-moving-items.ts +160 -0
  109. package/corpus/templates/tasks/app/components/dnd/sortable-drag-props.ts +60 -0
  110. package/corpus/templates/tasks/app/components/inbox/InboxList.tsx +222 -0
  111. package/corpus/templates/tasks/app/components/inbox/InboxListPage.tsx +39 -0
  112. package/corpus/templates/tasks/app/components/inbox/InboxListRow.tsx +122 -0
  113. package/corpus/templates/tasks/app/components/layout/Header.tsx +55 -0
  114. package/corpus/templates/tasks/app/components/layout/HeaderActions.tsx +84 -0
  115. package/corpus/templates/tasks/app/components/layout/Layout.tsx +134 -0
  116. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +211 -0
  117. package/corpus/templates/tasks/app/components/shared/AddListItemInput.tsx +57 -0
  118. package/corpus/templates/tasks/app/components/shared/AlertDialog.tsx +53 -0
  119. package/corpus/templates/tasks/app/components/shared/BulkDeleteDialog.tsx +76 -0
  120. package/corpus/templates/tasks/app/components/shared/ChipSelect.tsx +240 -0
  121. package/corpus/templates/tasks/app/components/shared/DeleteItemDialog.tsx +40 -0
  122. package/corpus/templates/tasks/app/components/shared/InlineEditable.tsx +166 -0
  123. package/corpus/templates/tasks/app/components/shared/ListEmptyState.tsx +13 -0
  124. package/corpus/templates/tasks/app/components/shared/ListErrorMessage.tsx +15 -0
  125. package/corpus/templates/tasks/app/components/shared/ListViewHeader.tsx +75 -0
  126. package/corpus/templates/tasks/app/components/shared/PageHeader.tsx +25 -0
  127. package/corpus/templates/tasks/app/components/shared/RowActionsMenu.tsx +42 -0
  128. package/corpus/templates/tasks/app/components/shared/SidePanel.tsx +99 -0
  129. package/corpus/templates/tasks/app/components/shared/dnd/ListRowPreview.tsx +37 -0
  130. package/corpus/templates/tasks/app/components/shared/list/List.tsx +63 -0
  131. package/corpus/templates/tasks/app/components/shared/list/ListRow.tsx +159 -0
  132. package/corpus/templates/tasks/app/components/shared/list/ListRowDragHandle.tsx +52 -0
  133. package/corpus/templates/tasks/app/components/shared/list/ListSkeletonRows.tsx +11 -0
  134. package/corpus/templates/tasks/app/components/shared/list/SortableListItemShell.tsx +32 -0
  135. package/corpus/templates/tasks/app/components/shared/list/types.ts +1 -0
  136. package/corpus/templates/tasks/app/components/shared/selection/ListSelectionBar.tsx +158 -0
  137. package/corpus/templates/tasks/app/components/shared/selection/ListSelectionHeaderToggle.tsx +28 -0
  138. package/corpus/templates/tasks/app/components/shared/selection/ListSelectionToolbar.tsx +81 -0
  139. package/corpus/templates/tasks/app/components/shared/selection/get-list-row-selection-ui.ts +41 -0
  140. package/corpus/templates/tasks/app/components/shared/selection/use-list-selection.ts +196 -0
  141. package/corpus/templates/tasks/app/components/tasks/TaskList.tsx +333 -0
  142. package/corpus/templates/tasks/app/components/tasks/TaskListHeaderRow.tsx +46 -0
  143. package/corpus/templates/tasks/app/components/tasks/TaskListPage.tsx +115 -0
  144. package/corpus/templates/tasks/app/components/tasks/TaskListRow.css +49 -0
  145. package/corpus/templates/tasks/app/components/tasks/TaskListRow.tsx +307 -0
  146. package/corpus/templates/tasks/app/components/tasks/fields/TaskFieldsSidebar.tsx +102 -0
  147. package/corpus/templates/tasks/app/components/tasks/fields/TaskTitleSection.tsx +27 -0
  148. package/corpus/templates/tasks/app/components/tasks/fields/controls/DateValueControl.tsx +21 -0
  149. package/corpus/templates/tasks/app/components/tasks/fields/controls/FieldValueControl.tsx +76 -0
  150. package/corpus/templates/tasks/app/components/tasks/fields/controls/MultiSelectValueControl.tsx +52 -0
  151. package/corpus/templates/tasks/app/components/tasks/fields/controls/NumberValueControl.tsx +56 -0
  152. package/corpus/templates/tasks/app/components/tasks/fields/controls/RichTextValueControl.tsx +115 -0
  153. package/corpus/templates/tasks/app/components/tasks/fields/controls/SingleSelectValueControl.tsx +61 -0
  154. package/corpus/templates/tasks/app/components/tasks/fields/controls/TextValueControl.tsx +20 -0
  155. package/corpus/templates/tasks/app/components/tasks/use-task-row-completion-animation.ts +181 -0
  156. package/corpus/templates/tasks/app/components/ui/accordion.tsx +56 -0
  157. package/corpus/templates/tasks/app/components/ui/alert-dialog.tsx +1 -0
  158. package/corpus/templates/tasks/app/components/ui/alert.tsx +1 -0
  159. package/corpus/templates/tasks/app/components/ui/aspect-ratio.tsx +5 -0
  160. package/corpus/templates/tasks/app/components/ui/avatar.tsx +1 -0
  161. package/corpus/templates/tasks/app/components/ui/badge.tsx +1 -0
  162. package/corpus/templates/tasks/app/components/ui/breadcrumb.tsx +115 -0
  163. package/corpus/templates/tasks/app/components/ui/button.tsx +1 -0
  164. package/corpus/templates/tasks/app/components/ui/calendar.tsx +70 -0
  165. package/corpus/templates/tasks/app/components/ui/card.tsx +1 -0
  166. package/corpus/templates/tasks/app/components/ui/carousel.tsx +260 -0
  167. package/corpus/templates/tasks/app/components/ui/chart.tsx +379 -0
  168. package/corpus/templates/tasks/app/components/ui/checkbox.tsx +1 -0
  169. package/corpus/templates/tasks/app/components/ui/collapsible.tsx +1 -0
  170. package/corpus/templates/tasks/app/components/ui/command.tsx +1 -0
  171. package/corpus/templates/tasks/app/components/ui/context-menu.tsx +1 -0
  172. package/corpus/templates/tasks/app/components/ui/dialog.tsx +1 -0
  173. package/corpus/templates/tasks/app/components/ui/drawer.tsx +1 -0
  174. package/corpus/templates/tasks/app/components/ui/dropdown-menu.tsx +1 -0
  175. package/corpus/templates/tasks/app/components/ui/form.tsx +177 -0
  176. package/corpus/templates/tasks/app/components/ui/hover-card.tsx +27 -0
  177. package/corpus/templates/tasks/app/components/ui/input-otp.tsx +69 -0
  178. package/corpus/templates/tasks/app/components/ui/input.tsx +1 -0
  179. package/corpus/templates/tasks/app/components/ui/label.tsx +1 -0
  180. package/corpus/templates/tasks/app/components/ui/menubar.tsx +254 -0
  181. package/corpus/templates/tasks/app/components/ui/navigation-menu.tsx +128 -0
  182. package/corpus/templates/tasks/app/components/ui/pagination.tsx +121 -0
  183. package/corpus/templates/tasks/app/components/ui/popover.tsx +1 -0
  184. package/corpus/templates/tasks/app/components/ui/progress.tsx +1 -0
  185. package/corpus/templates/tasks/app/components/ui/radio-group.tsx +1 -0
  186. package/corpus/templates/tasks/app/components/ui/resizable.tsx +43 -0
  187. package/corpus/templates/tasks/app/components/ui/scroll-area.tsx +1 -0
  188. package/corpus/templates/tasks/app/components/ui/select.tsx +1 -0
  189. package/corpus/templates/tasks/app/components/ui/separator.tsx +1 -0
  190. package/corpus/templates/tasks/app/components/ui/sheet.tsx +1 -0
  191. package/corpus/templates/tasks/app/components/ui/sidebar.tsx +782 -0
  192. package/corpus/templates/tasks/app/components/ui/skeleton.tsx +1 -0
  193. package/corpus/templates/tasks/app/components/ui/slider.tsx +1 -0
  194. package/corpus/templates/tasks/app/components/ui/sonner.tsx +1 -0
  195. package/corpus/templates/tasks/app/components/ui/spinner.tsx +1 -0
  196. package/corpus/templates/tasks/app/components/ui/switch.tsx +1 -0
  197. package/corpus/templates/tasks/app/components/ui/table.tsx +1 -0
  198. package/corpus/templates/tasks/app/components/ui/tabs.tsx +1 -0
  199. package/corpus/templates/tasks/app/components/ui/textarea.tsx +1 -0
  200. package/corpus/templates/tasks/app/components/ui/toast.tsx +1 -0
  201. package/corpus/templates/tasks/app/components/ui/toaster.tsx +1 -0
  202. package/corpus/templates/tasks/app/components/ui/toggle-group.tsx +1 -0
  203. package/corpus/templates/tasks/app/components/ui/toggle.tsx +43 -0
  204. package/corpus/templates/tasks/app/components/ui/tooltip.tsx +1 -0
  205. package/corpus/templates/tasks/app/components/ui/use-toast.ts +3 -0
  206. package/corpus/templates/tasks/app/entry.client.tsx +19 -0
  207. package/corpus/templates/tasks/app/entry.server.tsx +10 -0
  208. package/corpus/templates/tasks/app/global.css +93 -0
  209. package/corpus/templates/tasks/app/hooks/cache.ts +31 -0
  210. package/corpus/templates/tasks/app/hooks/use-custom-fields.ts +93 -0
  211. package/corpus/templates/tasks/app/hooks/use-inbox-items.ts +196 -0
  212. package/corpus/templates/tasks/app/hooks/use-mobile.tsx +21 -0
  213. package/corpus/templates/tasks/app/hooks/use-navigation-state.ts +40 -0
  214. package/corpus/templates/tasks/app/hooks/use-tasks.ts +276 -0
  215. package/corpus/templates/tasks/app/hooks/use-toast.ts +188 -0
  216. package/corpus/templates/tasks/app/hooks/use-visible-task-fields.ts +140 -0
  217. package/corpus/templates/tasks/app/lib/app-config.ts +11 -0
  218. package/corpus/templates/tasks/app/lib/tab-id.ts +1 -0
  219. package/corpus/templates/tasks/app/lib/utils.ts +1 -0
  220. package/corpus/templates/tasks/app/root.tsx +130 -0
  221. package/corpus/templates/tasks/app/routes/_index.tsx +22 -0
  222. package/corpus/templates/tasks/app/routes/extensions.$id.$slug.tsx +2 -0
  223. package/corpus/templates/tasks/app/routes/extensions.$id.tsx +11 -0
  224. package/corpus/templates/tasks/app/routes/extensions._index.tsx +11 -0
  225. package/corpus/templates/tasks/app/routes/extensions.tsx +5 -0
  226. package/corpus/templates/tasks/app/routes/fields.tsx +16 -0
  227. package/corpus/templates/tasks/app/routes/inbox.tsx +16 -0
  228. package/corpus/templates/tasks/app/routes/tasks.tsx +17 -0
  229. package/corpus/templates/tasks/app/routes/team.tsx +17 -0
  230. package/corpus/templates/tasks/app/routes.ts +4 -0
  231. package/corpus/templates/tasks/app/vite-env.d.ts +6 -0
  232. package/corpus/templates/tasks/components.json +20 -0
  233. package/corpus/templates/tasks/data/sync-config.json +1 -0
  234. package/corpus/templates/tasks/docs/features/README.md +81 -0
  235. package/corpus/templates/tasks/docs/features/f1-tasks.mdx +67 -0
  236. package/corpus/templates/tasks/docs/features/f2-custom-fields.mdx +68 -0
  237. package/corpus/templates/tasks/docs/features/f3-projects.mdx +33 -0
  238. package/corpus/templates/tasks/docs/features/f4-inbox.mdx +55 -0
  239. package/corpus/templates/tasks/docs/features/f5-views.mdx +65 -0
  240. package/corpus/templates/tasks/docs/features/f6-search.mdx +43 -0
  241. package/corpus/templates/tasks/docs/features/f7-first-run.mdx +66 -0
  242. package/corpus/templates/tasks/docs/features/f8-chat.mdx +120 -0
  243. package/corpus/templates/tasks/e2e/global-setup.ts +42 -0
  244. package/corpus/templates/tasks/e2e/helpers/inbox.ts +71 -0
  245. package/corpus/templates/tasks/e2e/helpers/tasks.ts +99 -0
  246. package/corpus/templates/tasks/learnings.defaults.md +5 -0
  247. package/corpus/templates/tasks/netlify.toml +10 -0
  248. package/corpus/templates/tasks/package.json +104 -0
  249. package/corpus/templates/tasks/playwright.config.ts +34 -0
  250. package/corpus/templates/tasks/public/agent-native-icon-dark.svg +10 -0
  251. package/corpus/templates/tasks/public/agent-native-icon-light.svg +10 -0
  252. package/corpus/templates/tasks/public/agent-native-logo-dark.svg +21 -0
  253. package/corpus/templates/tasks/public/agent-native-logo-light.svg +21 -0
  254. package/corpus/templates/tasks/public/favicon.svg +1 -0
  255. package/corpus/templates/tasks/public/icon-180.svg +1 -0
  256. package/corpus/templates/tasks/public/icon-192.svg +1 -0
  257. package/corpus/templates/tasks/public/icon-512.svg +1 -0
  258. package/corpus/templates/tasks/public/manifest.json +21 -0
  259. package/corpus/templates/tasks/react-router.config.ts +7 -0
  260. package/corpus/templates/tasks/server/custom-fields/normalize.ts +163 -0
  261. package/corpus/templates/tasks/server/custom-fields/parse.ts +146 -0
  262. package/corpus/templates/tasks/server/custom-fields/schema.ts +147 -0
  263. package/corpus/templates/tasks/server/custom-fields/store.ts +425 -0
  264. package/corpus/templates/tasks/server/custom-fields/task-fields.ts +104 -0
  265. package/corpus/templates/tasks/server/custom-fields/types.ts +98 -0
  266. package/corpus/templates/tasks/server/custom-fields/validate.ts +210 -0
  267. package/corpus/templates/tasks/server/custom-fields/values/store.ts +386 -0
  268. package/corpus/templates/tasks/server/db/bulk-write.ts +30 -0
  269. package/corpus/templates/tasks/server/db/index.ts +5 -0
  270. package/corpus/templates/tasks/server/db/record-utils.ts +7 -0
  271. package/corpus/templates/tasks/server/db/schema.ts +67 -0
  272. package/corpus/templates/tasks/server/db/test-tasks-table.ts +76 -0
  273. package/corpus/templates/tasks/server/db/transaction.ts +6 -0
  274. package/corpus/templates/tasks/server/errors.ts +31 -0
  275. package/corpus/templates/tasks/server/inbox/store.ts +216 -0
  276. package/corpus/templates/tasks/server/middleware/auth.ts +15 -0
  277. package/corpus/templates/tasks/server/plugins/agent-chat.ts +46 -0
  278. package/corpus/templates/tasks/server/plugins/auth.ts +15 -0
  279. package/corpus/templates/tasks/server/plugins/db.ts +90 -0
  280. package/corpus/templates/tasks/server/routes/[...page].get.ts +5 -0
  281. package/corpus/templates/tasks/server/stored-items/store.ts +548 -0
  282. package/corpus/templates/tasks/server/tasks/store.ts +306 -0
  283. package/corpus/templates/tasks/server/user-config/store.ts +138 -0
  284. package/corpus/templates/tasks/shared/app-state-tabs.ts +15 -0
  285. package/corpus/templates/tasks/shared/boolean-param.ts +22 -0
  286. package/corpus/templates/tasks/shared/bulk-limits.ts +7 -0
  287. package/corpus/templates/tasks/shared/list-screen-snapshot.ts +90 -0
  288. package/corpus/templates/tasks/shared/navigation.ts +104 -0
  289. package/corpus/templates/tasks/shared/visible-task-fields.ts +2 -0
  290. package/corpus/templates/tasks/ssr-entry.ts +15 -0
  291. package/corpus/templates/tasks/tsconfig.json +24 -0
  292. package/corpus/templates/tasks/vite.config.ts +19 -0
  293. package/corpus/templates/tasks/vitest.config.ts +8 -0
  294. package/dist/cli/templates-meta.d.ts.map +1 -1
  295. package/dist/cli/templates-meta.js +13 -0
  296. package/dist/cli/templates-meta.js.map +1 -1
  297. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  298. package/dist/client/org/OrgSwitcher.js +2 -1
  299. package/dist/client/org/OrgSwitcher.js.map +1 -1
  300. package/dist/collab/struct-routes.d.ts +1 -1
  301. package/dist/notifications/routes.d.ts +2 -2
  302. package/dist/resources/handlers.d.ts +1 -1
  303. package/package.json +1 -1
package/corpus/README.md CHANGED
@@ -28,4 +28,4 @@ rg -n "defineAction|useActionQuery" node_modules/@agent-native/core/corpus
28
28
  ## Generated Counts
29
29
 
30
30
  - core files: 2258
31
- - template files: 5678
31
+ - template files: 5962
@@ -1,5 +1,11 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.102.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 6498492: Add the Tasks template app — a task-list-first agent-native workspace with inbox triage, custom fields, and full action parity for UI and agent.
8
+
3
9
  ## 0.101.14
4
10
 
5
11
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.101.14",
3
+ "version": "0.102.0",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -214,6 +214,19 @@ export const TEMPLATES: TemplateMeta[] = [
214
214
  requiredPackages: ["embedding"],
215
215
  core: true,
216
216
  },
217
+ {
218
+ name: "tasks",
219
+ label: "Tasks",
220
+ hint: "Task-list-first workspace — inbox capture, custom fields, and drag-and-drop ordering",
221
+ icon: "ListCheck",
222
+ color: "#6366F1",
223
+ colorRgb: "99 102 241",
224
+ devPort: 8091,
225
+ prodUrl: "https://tasks.agent-native.com",
226
+ defaultMode: "prod",
227
+ hidden: true,
228
+ core: false,
229
+ },
217
230
  {
218
231
  name: "macros",
219
232
  label: "Macros",
@@ -14,6 +14,7 @@ import {
14
14
  IconCode,
15
15
  IconFileText,
16
16
  IconLayoutBoard,
17
+ IconListCheck,
17
18
  IconLoader2,
18
19
  IconLogout,
19
20
  IconMail,
@@ -122,6 +123,7 @@ const APP_ICON_MAP: Record<string, typeof IconApps> = {
122
123
  CalendarTime: IconCalendarTime,
123
124
  Globe: IconWorld,
124
125
  Photo: IconPhoto,
126
+ ListCheck: IconListCheck,
125
127
  };
126
128
 
127
129
  function appMenuIcon(app: OrgSwitcherAppLink): typeof IconApps {
@@ -3017,6 +3017,7 @@ export async function getContentDatabaseSourceSnapshotById(
3017
3017
  export async function getContentDatabaseSourceSnapshotForWrite(
3018
3018
  database: ContentDatabaseRow | ContentDatabase,
3019
3019
  sourceId?: string | null,
3020
+ documentIds?: string[],
3020
3021
  ): Promise<ContentDatabaseSource | null> {
3021
3022
  const db = getDb();
3022
3023
  if (sourceId) {
@@ -3032,6 +3033,7 @@ export async function getContentDatabaseSourceSnapshotForWrite(
3032
3033
  return source
3033
3034
  ? loadSourceSnapshot(source, database, {
3034
3035
  includeHeavyBuilderBodyValues: true,
3036
+ documentIds,
3035
3037
  })
3036
3038
  : null;
3037
3039
  }
@@ -3046,6 +3048,7 @@ export async function getContentDatabaseSourceSnapshotForWrite(
3046
3048
  return source
3047
3049
  ? loadSourceSnapshot(source, database, {
3048
3050
  includeHeavyBuilderBodyValues: true,
3051
+ documentIds,
3049
3052
  })
3050
3053
  : null;
3051
3054
  }
@@ -3086,8 +3089,12 @@ async function readSourceSnapshotRowsOnce(args: {
3086
3089
  database: ContentDatabaseRow | ContentDatabase;
3087
3090
  isBuilderSource: boolean;
3088
3091
  includeHeavyBuilderBodyValues: boolean;
3092
+ documentIds?: string[];
3089
3093
  }) {
3090
3094
  const db = getDb();
3095
+ const documentScope = args.documentIds?.length
3096
+ ? new Set(args.documentIds)
3097
+ : null;
3091
3098
  const rowRows = await db
3092
3099
  .select(
3093
3100
  sourceSnapshotRowSelection({
@@ -3096,7 +3103,16 @@ async function readSourceSnapshotRowsOnce(args: {
3096
3103
  }),
3097
3104
  )
3098
3105
  .from(schema.contentDatabaseSourceRows)
3099
- .where(eq(schema.contentDatabaseSourceRows.sourceId, args.source.id))
3106
+ .where(
3107
+ documentScope
3108
+ ? and(
3109
+ eq(schema.contentDatabaseSourceRows.sourceId, args.source.id),
3110
+ inArray(schema.contentDatabaseSourceRows.documentId, [
3111
+ ...documentScope,
3112
+ ]),
3113
+ )
3114
+ : eq(schema.contentDatabaseSourceRows.sourceId, args.source.id),
3115
+ )
3100
3116
  .orderBy(asc(schema.contentDatabaseSourceRows.createdAt));
3101
3117
  // For Builder sources, load ALL database items (not just synced source rows)
3102
3118
  // so brand-new local rows (no source link) can become create_draft change-sets.
@@ -3112,6 +3128,13 @@ async function readSourceSnapshotRowsOnce(args: {
3112
3128
  and(
3113
3129
  eq(schema.contentDatabaseItems.databaseId, args.database.id),
3114
3130
  eq(schema.contentDatabaseItems.ownerEmail, args.source.ownerEmail),
3131
+ ...(documentScope
3132
+ ? [
3133
+ inArray(schema.contentDatabaseItems.documentId, [
3134
+ ...documentScope,
3135
+ ]),
3136
+ ]
3137
+ : []),
3115
3138
  ),
3116
3139
  )
3117
3140
  : [];
@@ -3180,8 +3203,12 @@ async function sourceSnapshotConsistencyMarker(args: {
3180
3203
  database: ContentDatabaseRow | ContentDatabase;
3181
3204
  isBuilderSource: boolean;
3182
3205
  includeHeavyBuilderBodyValues: boolean;
3206
+ documentIds?: string[];
3183
3207
  }) {
3184
3208
  const db = getDb();
3209
+ const documentScope = args.documentIds?.length
3210
+ ? new Set(args.documentIds)
3211
+ : null;
3185
3212
  const [rows] = await db
3186
3213
  .select({
3187
3214
  count: sql<number>`COUNT(*)`,
@@ -3190,7 +3217,16 @@ async function sourceSnapshotConsistencyMarker(args: {
3190
3217
  >`MAX(${schema.contentDatabaseSourceRows.updatedAt})`,
3191
3218
  })
3192
3219
  .from(schema.contentDatabaseSourceRows)
3193
- .where(eq(schema.contentDatabaseSourceRows.sourceId, args.source.id));
3220
+ .where(
3221
+ documentScope
3222
+ ? and(
3223
+ eq(schema.contentDatabaseSourceRows.sourceId, args.source.id),
3224
+ inArray(schema.contentDatabaseSourceRows.documentId, [
3225
+ ...documentScope,
3226
+ ]),
3227
+ )
3228
+ : eq(schema.contentDatabaseSourceRows.sourceId, args.source.id),
3229
+ );
3194
3230
  const [items] = args.isBuilderSource
3195
3231
  ? await db
3196
3232
  .select({
@@ -3204,6 +3240,13 @@ async function sourceSnapshotConsistencyMarker(args: {
3204
3240
  and(
3205
3241
  eq(schema.contentDatabaseItems.databaseId, args.database.id),
3206
3242
  eq(schema.contentDatabaseItems.ownerEmail, args.source.ownerEmail),
3243
+ ...(documentScope
3244
+ ? [
3245
+ inArray(schema.contentDatabaseItems.documentId, [
3246
+ ...documentScope,
3247
+ ]),
3248
+ ]
3249
+ : []),
3207
3250
  ),
3208
3251
  )
3209
3252
  : [{ count: 0, maxUpdatedAt: null }];
@@ -3232,6 +3275,7 @@ async function loadSourceSnapshotRowsOptimistically(args: {
3232
3275
  database: ContentDatabaseRow | ContentDatabase;
3233
3276
  isBuilderSource: boolean;
3234
3277
  includeHeavyBuilderBodyValues: boolean;
3278
+ documentIds?: string[];
3235
3279
  }) {
3236
3280
  let latest: Awaited<ReturnType<typeof readSourceSnapshotRowsOnce>> | null =
3237
3281
  null;
@@ -3247,7 +3291,7 @@ async function loadSourceSnapshotRowsOptimistically(args: {
3247
3291
  async function loadSourceSnapshot(
3248
3292
  source: ContentDatabaseSourceRowDb,
3249
3293
  database: ContentDatabaseRow | ContentDatabase,
3250
- options: { includeHeavyBuilderBodyValues: boolean },
3294
+ options: { includeHeavyBuilderBodyValues: boolean; documentIds?: string[] },
3251
3295
  ): Promise<ContentDatabaseSource> {
3252
3296
  const db = getDb();
3253
3297
  const [fieldRows, changeRows, reviewRows, executionRows, propertyDefs] =
@@ -3260,7 +3304,17 @@ async function loadSourceSnapshot(
3260
3304
  db
3261
3305
  .select()
3262
3306
  .from(schema.contentDatabaseSourceChangeSets)
3263
- .where(eq(schema.contentDatabaseSourceChangeSets.sourceId, source.id))
3307
+ .where(
3308
+ options.documentIds?.length
3309
+ ? and(
3310
+ eq(schema.contentDatabaseSourceChangeSets.sourceId, source.id),
3311
+ inArray(
3312
+ schema.contentDatabaseSourceChangeSets.documentId,
3313
+ options.documentIds,
3314
+ ),
3315
+ )
3316
+ : eq(schema.contentDatabaseSourceChangeSets.sourceId, source.id),
3317
+ )
3264
3318
  .orderBy(asc(schema.contentDatabaseSourceChangeSets.createdAt)),
3265
3319
  db
3266
3320
  .select()
@@ -3341,6 +3395,7 @@ async function loadSourceSnapshot(
3341
3395
  database,
3342
3396
  isBuilderSource,
3343
3397
  includeHeavyBuilderBodyValues: options.includeHeavyBuilderBodyValues,
3398
+ documentIds: options.documentIds,
3344
3399
  });
3345
3400
  const rows = rowRows.map((row) =>
3346
3401
  serializeSourceRowRecord(row, {
@@ -618,6 +618,13 @@ export default defineAction({
618
618
  .max(BUILDER_SOURCE_REVIEW_PREPARE_LIMIT)
619
619
  .optional()
620
620
  .describe("Optional bounded set of Builder change-set IDs to prepare"),
621
+ documentIds: z
622
+ .array(z.string())
623
+ .max(BUILDER_SOURCE_REVIEW_PREPARE_LIMIT)
624
+ .optional()
625
+ .describe(
626
+ "Optional document IDs that bound heavy Builder snapshot loading",
627
+ ),
621
628
  pushModeConfirmation: z
622
629
  .enum(["autosave", "draft", "publish"])
623
630
  .optional()
@@ -663,6 +670,7 @@ export default defineAction({
663
670
  const snapshot = await getContentDatabaseSourceSnapshotForWrite(
664
671
  database,
665
672
  args.sourceId,
673
+ args.documentIds,
666
674
  );
667
675
  return { database, snapshot };
668
676
  },
@@ -765,6 +773,7 @@ export default defineAction({
765
773
  reviewedSnapshot: await getContentDatabaseSourceSnapshotForWrite(
766
774
  database,
767
775
  args.sourceId,
776
+ args.documentIds,
768
777
  ),
769
778
  response: await getContentDatabaseResponse(database.id),
770
779
  }),
@@ -40,18 +40,20 @@ export default defineAction({
40
40
  if (!database) throw new Error("Database not found.");
41
41
  await assertAccess("document", database.documentId, "editor");
42
42
 
43
+ const selectedDocumentIds = new Set(args.documentIds ?? []);
44
+ if (args.scope === "selected" && selectedDocumentIds.size === 0) {
45
+ throw new Error("Select at least one Builder row before reviewing it.");
46
+ }
47
+
43
48
  const source = await getContentDatabaseSourceSnapshotForWrite(
44
49
  database,
45
50
  args.sourceId,
51
+ args.scope === "selected" ? args.documentIds : undefined,
46
52
  );
47
53
  if (!source || source.sourceType !== "builder-cms") {
48
54
  throw new Error("Attach a Builder CMS source before reviewing updates.");
49
55
  }
50
56
 
51
- const selectedDocumentIds = new Set(args.documentIds ?? []);
52
- if (args.scope === "selected" && selectedDocumentIds.size === 0) {
53
- throw new Error("Select at least one Builder row before reviewing it.");
54
- }
55
57
  const allReviewableChanges = source.changeSets.filter((changeSet) => {
56
58
  if (
57
59
  changeSet.direction !== "outbound" ||
@@ -1720,6 +1720,10 @@ function DatabaseTable({
1720
1720
  documentId: document.id,
1721
1721
  sourceId: session.sourceId,
1722
1722
  changeSetIds: selectedChangeSetIds,
1723
+ documentIds:
1724
+ selectedItemIds.length > 0
1725
+ ? selectedItems.map((item) => item.document.id)
1726
+ : undefined,
1723
1727
  pushModeConfirmation:
1724
1728
  activeBuilderReview.pushMode === "none"
1725
1729
  ? undefined
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-15
4
+ ---
5
+
6
+ Selected Builder reviews now load only the chosen rows, avoiding production timeouts on large collections.
@@ -1018,6 +1018,7 @@ export interface PrepareBuilderSourceReviewRequest {
1018
1018
  documentId?: string;
1019
1019
  sourceId?: string;
1020
1020
  changeSetIds?: string[];
1021
+ documentIds?: string[];
1021
1022
  pushModeConfirmation?: ContentDatabaseSourcePushMode;
1022
1023
  publicationTransition?: BuilderCmsPublicationTransitionIntent;
1023
1024
  confirmUnpublish?: boolean;
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Create an interactive Agent-Native visual plan for the current task.
3
+ argument-hint: [optional request or scope]
4
+ ---
5
+
6
+ Use the visual-plan skill for this task. Treat any arguments as the user's
7
+ requested plan scope or focus:
8
+
9
+ $ARGUMENTS
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: Create an interactive Agent-Native visual recap for a PR, branch, commit, or diff.
3
+ argument-hint: [PR, branch, commit, diff, or scope]
4
+ ---
5
+
6
+ Use the visual-recap skill. Treat any arguments as the recap target or focus:
7
+
8
+ $ARGUMENTS