@notis_ai/cli 0.2.0-beta.139.1 → 0.2.0-beta.144.1

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 (270) hide show
  1. package/README.md +44 -20
  2. package/dist/agent-hooks/notis-agent-hook.mjs +4579 -1449
  3. package/dist/base-skills/notis-apps/SKILL.md +83 -55
  4. package/dist/base-skills/notis-cli/SKILL.md +8 -8
  5. package/package.json +2 -2
  6. package/skills/notis-apps/cli.md +38 -17
  7. package/src/command-specs/apps.js +871 -387
  8. package/src/command-specs/auth.js +47 -10
  9. package/src/command-specs/onboarding.js +11 -4
  10. package/src/runtime/app-dev-consumers.js +154 -0
  11. package/src/runtime/app-dev-host-lock.js +80 -0
  12. package/src/runtime/app-dev-roots.js +284 -0
  13. package/src/runtime/app-dev-server.js +212 -22
  14. package/src/runtime/app-dev-sessions.js +105 -145
  15. package/src/runtime/app-platform.js +1291 -165
  16. package/src/runtime/app-registry-scaffolds.js +367 -0
  17. package/src/runtime/login-listener.js +15 -0
  18. package/src/runtime/oauth.js +1506 -141
  19. package/src/runtime/output.js +7 -0
  20. package/src/runtime/ports.js +16 -0
  21. package/src/runtime/profiles.js +0 -5
  22. package/template/app/layout.tsx +5 -1
  23. package/template/notis.config.ts +1 -0
  24. package/template/packages/sdk/package.json +2 -1
  25. package/template/packages/sdk/src/components/MarkdownEditor.tsx +121 -0
  26. package/template/packages/sdk/src/components/MultiSelectActionBar.tsx +37 -119
  27. package/template/packages/sdk/src/components/MultiSelectCheckbox.tsx +5 -1
  28. package/template/packages/sdk/src/components/MultiSelectDragOverlay.tsx +1 -1
  29. package/template/packages/sdk/src/components/NotisSelectionBoundary.tsx +55 -0
  30. package/template/packages/sdk/src/components/ShortcutHints.tsx +56 -0
  31. package/template/packages/sdk/src/config.ts +19 -0
  32. package/template/packages/sdk/src/hooks/useActiveResource.ts +19 -0
  33. package/template/packages/sdk/src/hooks/useCollectionInteractions.ts +709 -0
  34. package/template/packages/sdk/src/hooks/useHandover.ts +3 -0
  35. package/template/packages/sdk/src/hooks/useMultiSelect.ts +44 -482
  36. package/template/packages/sdk/src/hooks/useTool.ts +5 -4
  37. package/template/packages/sdk/src/index.ts +47 -2
  38. package/template/packages/sdk/src/interactions/actions.ts +46 -0
  39. package/template/packages/sdk/src/interactions/shortcuts.tsx +628 -0
  40. package/template/packages/sdk/src/interactions.ts +41 -0
  41. package/template/packages/sdk/src/provider.tsx +2 -1
  42. package/template/packages/sdk/src/runtime.ts +85 -3
  43. package/dist/scaffolds/notis-database/CHANGELOG.md +0 -5
  44. package/dist/scaffolds/notis-database/app/globals.css +0 -44
  45. package/dist/scaffolds/notis-database/app/layout.tsx +0 -6
  46. package/dist/scaffolds/notis-database/app/page.tsx +0 -1088
  47. package/dist/scaffolds/notis-database/components/ui/badge.tsx +0 -28
  48. package/dist/scaffolds/notis-database/components/ui/button.tsx +0 -53
  49. package/dist/scaffolds/notis-database/components/ui/card.tsx +0 -56
  50. package/dist/scaffolds/notis-database/components/ui/table.tsx +0 -120
  51. package/dist/scaffolds/notis-database/components.json +0 -20
  52. package/dist/scaffolds/notis-database/index.html +0 -12
  53. package/dist/scaffolds/notis-database/lib/types.ts +0 -132
  54. package/dist/scaffolds/notis-database/lib/utils.ts +0 -6
  55. package/dist/scaffolds/notis-database/metadata/screenshot-1.png +0 -0
  56. package/dist/scaffolds/notis-database/metadata/screenshot-2.png +0 -0
  57. package/dist/scaffolds/notis-database/metadata/screenshot-3.png +0 -0
  58. package/dist/scaffolds/notis-database/metadata/screenshot-4.png +0 -0
  59. package/dist/scaffolds/notis-database/metadata/screenshot-5.png +0 -0
  60. package/dist/scaffolds/notis-database/metadata/screenshot-fixtures.json +0 -1839
  61. package/dist/scaffolds/notis-database/notis.config.ts +0 -73
  62. package/dist/scaffolds/notis-database/package-lock.json +0 -3935
  63. package/dist/scaffolds/notis-database/package.json +0 -32
  64. package/dist/scaffolds/notis-database/packages/sdk/package.json +0 -36
  65. package/dist/scaffolds/notis-database/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  66. package/dist/scaffolds/notis-database/packages/sdk/src/components/Markdown.tsx +0 -60
  67. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  68. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  69. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  70. package/dist/scaffolds/notis-database/packages/sdk/src/config.ts +0 -234
  71. package/dist/scaffolds/notis-database/packages/sdk/src/documents.ts +0 -250
  72. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useBackend.ts +0 -41
  73. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useCloudComputer.ts +0 -97
  74. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  75. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDatabaseSubscription.ts +0 -76
  76. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocument.ts +0 -78
  77. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocuments.ts +0 -121
  78. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useHandover.ts +0 -75
  79. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  80. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotis.ts +0 -34
  81. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  82. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTool.ts +0 -64
  83. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTools.ts +0 -56
  84. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  85. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  86. package/dist/scaffolds/notis-database/packages/sdk/src/index.ts +0 -100
  87. package/dist/scaffolds/notis-database/packages/sdk/src/provider.tsx +0 -43
  88. package/dist/scaffolds/notis-database/packages/sdk/src/runtime.ts +0 -351
  89. package/dist/scaffolds/notis-database/packages/sdk/src/styles.css +0 -186
  90. package/dist/scaffolds/notis-database/packages/sdk/src/ui.ts +0 -15
  91. package/dist/scaffolds/notis-database/packages/sdk/src/vite.ts +0 -56
  92. package/dist/scaffolds/notis-database/packages/sdk/tsconfig.json +0 -15
  93. package/dist/scaffolds/notis-database/postcss.config.mjs +0 -8
  94. package/dist/scaffolds/notis-database/src/dev-main.tsx +0 -23
  95. package/dist/scaffolds/notis-database/src/mock-runtime.ts +0 -561
  96. package/dist/scaffolds/notis-database/tailwind.config.ts +0 -59
  97. package/dist/scaffolds/notis-database/tsconfig.json +0 -23
  98. package/dist/scaffolds/notis-database/vite.config.ts +0 -22
  99. package/dist/scaffolds/notis-journal/CHANGELOG.md +0 -29
  100. package/dist/scaffolds/notis-journal/app/globals.css +0 -37
  101. package/dist/scaffolds/notis-journal/app/insights/page.tsx +0 -513
  102. package/dist/scaffolds/notis-journal/app/journal-core.tsx +0 -362
  103. package/dist/scaffolds/notis-journal/app/journal-ui.tsx +0 -337
  104. package/dist/scaffolds/notis-journal/app/layout.tsx +0 -6
  105. package/dist/scaffolds/notis-journal/app/page.tsx +0 -486
  106. package/dist/scaffolds/notis-journal/components/ui/badge.tsx +0 -28
  107. package/dist/scaffolds/notis-journal/components/ui/button.tsx +0 -53
  108. package/dist/scaffolds/notis-journal/components/ui/card.tsx +0 -56
  109. package/dist/scaffolds/notis-journal/components.json +0 -20
  110. package/dist/scaffolds/notis-journal/index.html +0 -12
  111. package/dist/scaffolds/notis-journal/lib/utils.ts +0 -6
  112. package/dist/scaffolds/notis-journal/metadata/screenshot-1.png +0 -0
  113. package/dist/scaffolds/notis-journal/metadata/screenshot-2.png +0 -0
  114. package/dist/scaffolds/notis-journal/metadata/screenshot-3.png +0 -0
  115. package/dist/scaffolds/notis-journal/metadata/screenshot-4.png +0 -0
  116. package/dist/scaffolds/notis-journal/metadata/screenshot-5.png +0 -0
  117. package/dist/scaffolds/notis-journal/metadata/screenshot-6.png +0 -0
  118. package/dist/scaffolds/notis-journal/metadata/screenshot-fixtures.json +0 -132
  119. package/dist/scaffolds/notis-journal/notis.config.ts +0 -93
  120. package/dist/scaffolds/notis-journal/package-lock.json +0 -4615
  121. package/dist/scaffolds/notis-journal/package.json +0 -34
  122. package/dist/scaffolds/notis-journal/packages/sdk/package.json +0 -36
  123. package/dist/scaffolds/notis-journal/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  124. package/dist/scaffolds/notis-journal/packages/sdk/src/components/Markdown.tsx +0 -60
  125. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  126. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  127. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  128. package/dist/scaffolds/notis-journal/packages/sdk/src/config.ts +0 -234
  129. package/dist/scaffolds/notis-journal/packages/sdk/src/documents.ts +0 -250
  130. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useBackend.ts +0 -41
  131. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useCloudComputer.ts +0 -97
  132. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  133. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDatabaseSubscription.ts +0 -76
  134. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocument.ts +0 -78
  135. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocuments.ts +0 -121
  136. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useHandover.ts +0 -75
  137. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  138. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotis.ts +0 -34
  139. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  140. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTool.ts +0 -64
  141. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTools.ts +0 -56
  142. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  143. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  144. package/dist/scaffolds/notis-journal/packages/sdk/src/index.ts +0 -100
  145. package/dist/scaffolds/notis-journal/packages/sdk/src/provider.tsx +0 -43
  146. package/dist/scaffolds/notis-journal/packages/sdk/src/runtime.ts +0 -351
  147. package/dist/scaffolds/notis-journal/packages/sdk/src/styles.css +0 -186
  148. package/dist/scaffolds/notis-journal/packages/sdk/src/ui.ts +0 -15
  149. package/dist/scaffolds/notis-journal/packages/sdk/src/vite.ts +0 -56
  150. package/dist/scaffolds/notis-journal/packages/sdk/tsconfig.json +0 -15
  151. package/dist/scaffolds/notis-journal/postcss.config.mjs +0 -8
  152. package/dist/scaffolds/notis-journal/skills/journal-onboarding/SKILL.md +0 -120
  153. package/dist/scaffolds/notis-journal/src/dev-main.tsx +0 -58
  154. package/dist/scaffolds/notis-journal/src/mock-runtime.ts +0 -199
  155. package/dist/scaffolds/notis-journal/tailwind.config.ts +0 -58
  156. package/dist/scaffolds/notis-journal/tsconfig.json +0 -23
  157. package/dist/scaffolds/notis-journal/vite.config.ts +0 -10
  158. package/dist/scaffolds/notis-notes/CHANGELOG.md +0 -5
  159. package/dist/scaffolds/notis-notes/app/globals.css +0 -3
  160. package/dist/scaffolds/notis-notes/app/layout.tsx +0 -6
  161. package/dist/scaffolds/notis-notes/app/page.tsx +0 -1943
  162. package/dist/scaffolds/notis-notes/app/phosphor-icons.ts +0 -596
  163. package/dist/scaffolds/notis-notes/components/ui/badge.tsx +0 -28
  164. package/dist/scaffolds/notis-notes/components/ui/button.tsx +0 -53
  165. package/dist/scaffolds/notis-notes/components/ui/card.tsx +0 -56
  166. package/dist/scaffolds/notis-notes/components.json +0 -20
  167. package/dist/scaffolds/notis-notes/lib/utils.ts +0 -6
  168. package/dist/scaffolds/notis-notes/lib/visible-properties.ts +0 -144
  169. package/dist/scaffolds/notis-notes/metadata/screenshot-1.png +0 -0
  170. package/dist/scaffolds/notis-notes/metadata/screenshot-2.png +0 -0
  171. package/dist/scaffolds/notis-notes/metadata/screenshot-3.png +0 -0
  172. package/dist/scaffolds/notis-notes/metadata/screenshot-4.png +0 -0
  173. package/dist/scaffolds/notis-notes/metadata/screenshot-5.png +0 -0
  174. package/dist/scaffolds/notis-notes/metadata/screenshot-fixtures.json +0 -752
  175. package/dist/scaffolds/notis-notes/notis.config.ts +0 -80
  176. package/dist/scaffolds/notis-notes/package-lock.json +0 -4636
  177. package/dist/scaffolds/notis-notes/package.json +0 -35
  178. package/dist/scaffolds/notis-notes/packages/sdk/package.json +0 -36
  179. package/dist/scaffolds/notis-notes/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  180. package/dist/scaffolds/notis-notes/packages/sdk/src/components/Markdown.tsx +0 -60
  181. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  182. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  183. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  184. package/dist/scaffolds/notis-notes/packages/sdk/src/config.ts +0 -234
  185. package/dist/scaffolds/notis-notes/packages/sdk/src/documents.ts +0 -250
  186. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useBackend.ts +0 -41
  187. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useCloudComputer.ts +0 -97
  188. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  189. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDatabaseSubscription.ts +0 -76
  190. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocument.ts +0 -78
  191. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocuments.ts +0 -121
  192. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useHandover.ts +0 -75
  193. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  194. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotis.ts +0 -34
  195. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  196. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTool.ts +0 -64
  197. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTools.ts +0 -56
  198. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  199. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  200. package/dist/scaffolds/notis-notes/packages/sdk/src/index.ts +0 -100
  201. package/dist/scaffolds/notis-notes/packages/sdk/src/provider.tsx +0 -43
  202. package/dist/scaffolds/notis-notes/packages/sdk/src/runtime.ts +0 -351
  203. package/dist/scaffolds/notis-notes/packages/sdk/src/styles.css +0 -186
  204. package/dist/scaffolds/notis-notes/packages/sdk/src/ui.ts +0 -15
  205. package/dist/scaffolds/notis-notes/packages/sdk/src/vite.ts +0 -56
  206. package/dist/scaffolds/notis-notes/packages/sdk/tsconfig.json +0 -15
  207. package/dist/scaffolds/notis-notes/postcss.config.mjs +0 -8
  208. package/dist/scaffolds/notis-notes/tailwind.config.ts +0 -58
  209. package/dist/scaffolds/notis-notes/tsconfig.json +0 -23
  210. package/dist/scaffolds/notis-notes/vite.config.ts +0 -10
  211. package/dist/scaffolds/notis-random/CHANGELOG.md +0 -15
  212. package/dist/scaffolds/notis-random/README.md +0 -33
  213. package/dist/scaffolds/notis-random/app/globals.css +0 -11
  214. package/dist/scaffolds/notis-random/app/history/page.tsx +0 -67
  215. package/dist/scaffolds/notis-random/app/layout.tsx +0 -7
  216. package/dist/scaffolds/notis-random/app/page.tsx +0 -289
  217. package/dist/scaffolds/notis-random/components/ui/button.tsx +0 -50
  218. package/dist/scaffolds/notis-random/components/ui/card.tsx +0 -16
  219. package/dist/scaffolds/notis-random/components/ui/input.tsx +0 -23
  220. package/dist/scaffolds/notis-random/components.json +0 -20
  221. package/dist/scaffolds/notis-random/index.html +0 -12
  222. package/dist/scaffolds/notis-random/lib/notis-tools.ts +0 -128
  223. package/dist/scaffolds/notis-random/lib/rng.ts +0 -202
  224. package/dist/scaffolds/notis-random/lib/roll-record.ts +0 -189
  225. package/dist/scaffolds/notis-random/lib/utils.ts +0 -25
  226. package/dist/scaffolds/notis-random/metadata/screenshot-1.png +0 -0
  227. package/dist/scaffolds/notis-random/metadata/screenshot-2.png +0 -0
  228. package/dist/scaffolds/notis-random/metadata/screenshot-3.png +0 -0
  229. package/dist/scaffolds/notis-random/metadata/screenshot-4.png +0 -0
  230. package/dist/scaffolds/notis-random/metadata/screenshot-5.png +0 -0
  231. package/dist/scaffolds/notis-random/metadata/screenshot-fixtures.json +0 -753
  232. package/dist/scaffolds/notis-random/notis.config.ts +0 -86
  233. package/dist/scaffolds/notis-random/package-lock.json +0 -4513
  234. package/dist/scaffolds/notis-random/package.json +0 -36
  235. package/dist/scaffolds/notis-random/packages/sdk/package.json +0 -36
  236. package/dist/scaffolds/notis-random/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  237. package/dist/scaffolds/notis-random/packages/sdk/src/components/Markdown.tsx +0 -60
  238. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  239. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  240. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  241. package/dist/scaffolds/notis-random/packages/sdk/src/config.ts +0 -234
  242. package/dist/scaffolds/notis-random/packages/sdk/src/documents.ts +0 -250
  243. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useBackend.ts +0 -41
  244. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useCloudComputer.ts +0 -97
  245. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  246. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDatabaseSubscription.ts +0 -76
  247. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocument.ts +0 -78
  248. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocuments.ts +0 -121
  249. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useHandover.ts +0 -75
  250. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  251. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotis.ts +0 -34
  252. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  253. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTool.ts +0 -64
  254. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTools.ts +0 -56
  255. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  256. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  257. package/dist/scaffolds/notis-random/packages/sdk/src/index.ts +0 -100
  258. package/dist/scaffolds/notis-random/packages/sdk/src/provider.tsx +0 -43
  259. package/dist/scaffolds/notis-random/packages/sdk/src/runtime.ts +0 -351
  260. package/dist/scaffolds/notis-random/packages/sdk/src/styles.css +0 -186
  261. package/dist/scaffolds/notis-random/packages/sdk/src/ui.ts +0 -15
  262. package/dist/scaffolds/notis-random/packages/sdk/src/vite.ts +0 -56
  263. package/dist/scaffolds/notis-random/packages/sdk/tsconfig.json +0 -15
  264. package/dist/scaffolds/notis-random/postcss.config.mjs +0 -6
  265. package/dist/scaffolds/notis-random/src/dev-main.tsx +0 -70
  266. package/dist/scaffolds/notis-random/src/mock-runtime.ts +0 -129
  267. package/dist/scaffolds/notis-random/tailwind.config.ts +0 -50
  268. package/dist/scaffolds/notis-random/tsconfig.json +0 -23
  269. package/dist/scaffolds/notis-random/vite.config.ts +0 -11
  270. package/dist/scaffolds.json +0 -49
@@ -1,120 +0,0 @@
1
- ---
2
- name: journal-onboarding
3
- description: "Set up the Journal morning and evening automations and run their check-ins. Use when onboarding someone to the Journal daily practice, changing their check-in schedule, or when a Journal automation asks to run the morning or evening check-in."
4
- ---
5
-
6
- # Journal Daily Practice
7
-
8
- The Journal is a five-minute daily practice captured entirely in conversation. Notis asks, the user answers, and the `journal_entries` database fills itself — the app only displays. There are two rituals:
9
-
10
- - **Morning check-in** — waking mood (1–7 pleasant scale + one adjective), how they're feeling, energy (1–10), motivation (1–10), three gratitudes, an intention for the day, and a daily affirmation.
11
- - **Evening reflection** — whole-day mood (1–7 pleasant scale + one adjective), the day's highlight, what the day taught them, a gentle catch-up of anything the morning missed, and an optional free-form entry.
12
-
13
- ## Choose the Mode
14
-
15
- - Use **setup mode** when the user is onboarding, asks to configure Journal check-ins, or wants to change the schedule.
16
- - Use **morning-check mode** only when the request or automation prompt names it.
17
- - Use **evening-check mode** only when the request or automation prompt names it.
18
- - Never enter setup mode from a check-in run.
19
-
20
- ## Tone (applies to every mode)
21
-
22
- Write like a warm, attentive companion — closer to a good therapist than to a form. Concrete rules:
23
-
24
- - Sound like a person, not a survey. Weave the questions into one or two short messages instead of a numbered interrogation.
25
- - Reference what they actually said, today or on recent days, when it helps ("this morning you said the demo had you excited — how did it go?").
26
- - Never guilt-trip about missed days or missing fields. A skipped question is an answer; move on gracefully.
27
- - Accept partial answers. Save what was given; the evening pass picks up morning leftovers, and anything still missing after that just stays blank.
28
- - Keep it light: this is a check-in, not a medical assessment. Never diagnose, never analyze the user unprompted.
29
-
30
- ## The Pleasant Scale
31
-
32
- Both moods use the same 1–7 scale (like Apple's State of Mind): 1 very unpleasant, 2 unpleasant, 3 slightly unpleasant, 4 neutral, 5 slightly pleasant, 6 pleasant, 7 very pleasant.
33
-
34
- - Ask for it conversationally ("where does this morning land, 1 to 7, unpleasant to pleasant?") and store the integer.
35
- - If the user answers with words only ("pretty good"), map it yourself (pretty good ≈ 5–6), confirm implicitly by restating ("logging that as a 6"), and store it.
36
- - The adjective is the user's own word ("foggy", "electric", "flat") — store it lower-case in the matching `... Mood Word` property. If they give a sentence, pull the strongest adjective and keep the sentence in `Morning Feeling` (morning) or the free entry (evening).
37
-
38
- ## Writing to the Database
39
-
40
- The native Notis database with slug `journal_entries` holds **one entry per local calendar day**:
41
-
42
- - Find today's entry with `LOCAL_NOTIS_DATABASE_QUERY` and a structured filter on **Date** for the user's local day. Ignore archived entries. If duplicates exist, use the most recently updated one and mention the duplicate briefly; never merge or delete.
43
- - Create it only if it does not exist, via `LOCAL_NOTIS_DATABASE_UPSERT_JOURNAL_ENTRIES` with `Name` = `Journal — YYYY-MM-DD` (local date) and `Date` = that day.
44
- - Update by passing only the properties the user just answered. Never overwrite a field that already has a value unless the user explicitly corrects it.
45
- - Properties: `Morning Mood` (1–7), `Morning Mood Word`, `Morning Feeling`, `Energy` (1–10), `Motivation` (1–10), `Gratitude 1..3`, `Intention`, `Affirmation`, `Day Mood` (1–7), `Day Mood Word`, `Highlight`, `Lesson`.
46
- - The optional free-form entry goes in the document body: pass `content_markdown` (append to existing content rather than replacing it; set `replace` only when the body is empty).
47
-
48
- ## Setup Mode
49
-
50
- ### 1. Recommend the Routine
51
-
52
- Briefly explain the two automations before asking for times:
53
-
54
- - A **morning check-in** (recommend ~08:00) captures the waking mood, energy, motivation, gratitudes, intention, and affirmation while the day is still fresh.
55
- - An **evening reflection** (recommend ~21:30) captures how the day actually felt, its highlight and lesson, catches up anything the morning missed, and offers space for a free entry.
56
-
57
- Make clear both times are theirs to choose.
58
-
59
- ### 2. Ask for the Schedule
60
-
61
- One compact question collecting: morning time, evening time, days of the week (default every day), timezone (unless confidently known), and delivery channel only when ambiguous. Do not create anything while any of these is unresolved.
62
-
63
- ### 3. Check Existing Setup
64
-
65
- Use `LOCAL_NOTIS_LIST_REMINDERS` and `LOCAL_NOTIS_LIST_AUTOMATIONS` before writing anything — one full page of up to 100 items each, inspected locally, directly in the current assistant (no sub-agents, no repeated searches).
66
-
67
- - Match existing items by purpose, not only name. Update a matching Journal morning or evening item instead of duplicating it.
68
- - If an old Journal **reminder** exists from a previous version of this practice, replace it: create the morning automation and remove only that confirmed Journal reminder.
69
- - Preserve unrelated reminders and automations.
70
-
71
- ### 4. Confirm Before Creating
72
-
73
- Recap both local schedules, days, timezone, channel, and what each check-in will ask. Obtain explicit confirmation before creating or updating anything.
74
-
75
- ### 5. Create the Two Automations
76
-
77
- Use `LOCAL_NOTIS_INSERT_AUTOMATION` (or `LOCAL_NOTIS_UPDATE_AUTOMATION` for a matching existing item) for **both** check-ins:
78
-
79
- - Names: `Journal morning check-in` and `Journal evening reflection`.
80
- - `schedule` triggers with standard five-field cron expressions derived from the confirmed local times and days. Recurrence lives only in `cron_expression`.
81
- - Delivery only via `channel` and, when required, `channel_account_id`.
82
- - **Enable cross-run context on both automations.** The evening reflection must see the morning conversation so it can follow up on what the user actually said — this consolidated thread is a core feature of the practice, not an option.
83
- - Morning prompt, exactly:
84
-
85
- `Run /journal-onboarding in morning-check mode: hold this morning's Journal check-in and save the answers to today's journal_entries entry.`
86
-
87
- - Evening prompt, exactly:
88
-
89
- `Run /journal-onboarding in evening-check mode: review today's journal_entries entry, hold the evening reflection, follow up on what the morning conversation actually said, and save the answers.`
90
-
91
- Do not put scheduling or delivery instructions inside the prompts.
92
-
93
- ### 6. Report the Result
94
-
95
- Return a concise summary: both local schedules, the delivery channel, created vs updated for each item, and the automation IDs or portal links. The native tools store recurring schedules as UTC cron expressions — convert from the user's IANA timezone, then verify the returned crons and the Portal-rendered local times. That read-back completes setup verification; do not launch extra agents or investigate scheduler internals.
96
-
97
- ## Morning-Check Mode
98
-
99
- 1. Find (or note the absence of) today's entry as described in *Writing to the Database*.
100
- 2. Open with one short, warm greeting that folds in the first questions. Cover, across at most two messages: waking mood (scale + their word), how they're feeling, energy and motivation (1–10 each), three gratitudes, what would make today great, and a daily affirmation.
101
- 3. If they stall on the affirmation, offer to shape one from what they just said — their words, not a canned quote.
102
- 4. Create or update today's entry with everything captured. Partial is fine; say nothing about the gaps (the evening picks them up).
103
- 5. Close in one line that reflects their intention back ("holding you to that walk — talk tonight").
104
-
105
- ## Evening-Check Mode
106
-
107
- 1. Read today's entry. Its filled fields plus the morning conversation (available through the automation's shared context) are your material.
108
- 2. Open by connecting to the morning — reference a real detail, then ask the evening questions. Example shape: "Evening — this morning you were grateful for the calm before the demo. Did that calm hold? How did the whole day feel, 1 to 7, and what one word would you give it?"
109
- 3. Cover: day mood (scale + adjective), highlight of the day, what the day taught them.
110
- 4. Then gently flag what the morning missed, grouped in one soft sentence ("we never got to your three gratitudes this morning — anything from today count?"). Ask only for genuinely missing fields; never re-ask populated ones.
111
- 5. Offer the optional free entry last, as an open door, not a task ("anything else about today you want kept? I'll write it down word for word").
112
- 6. Save all answers (properties + `content_markdown` for the free entry). If no entry exists at all, create it and run the whole check-in as a compact evening version.
113
- 7. If every field is already complete, just reflect the day back in a sentence and say goodnight — no questions.
114
-
115
- ## Guardrails
116
-
117
- - Never create a second copy of the same automation, reminder, or daily entry.
118
- - Never schedule anything without confirmed times, timezone, days, and destination.
119
- - Never invent values the user did not give; never delete entries; never rewrite an existing free entry (append only).
120
- - Never turn a check-in prompt into instructions to create another automation.
@@ -1,58 +0,0 @@
1
- import { StrictMode, useEffect, useState } from 'react';
2
- import { createRoot } from 'react-dom/client';
3
- import { NotisProvider } from '@notis/sdk';
4
- import AppShell from '../app/layout';
5
- import JournalPage from '../app/page';
6
- import InsightsPage from '../app/insights/page';
7
- import { installMockRuntime } from './mock-runtime';
8
-
9
- const runtime = installMockRuntime();
10
-
11
- function DevPreview() {
12
- const [route, setRoute] = useState<'journal' | 'insights'>('journal');
13
-
14
- useEffect(() => {
15
- const onNav = (e: Event) => {
16
- const detail = (e as CustomEvent).detail as { path?: string };
17
- if (detail?.path?.includes('insights')) setRoute('insights');
18
- else if (detail?.path === '/') setRoute('journal');
19
- };
20
- window.addEventListener('mock-navigate', onNav);
21
- return () => window.removeEventListener('mock-navigate', onNav);
22
- }, []);
23
-
24
- return (
25
- <div data-dev-preview className="min-h-screen bg-background text-foreground">
26
- <div className="flex items-center gap-2 border-b border-border bg-card px-4 py-2 text-xs">
27
- <span className="font-semibold text-muted-foreground">Dev preview</span>
28
- {(['journal', 'insights'] as const).map((r) => (
29
- <button
30
- key={r}
31
- type="button"
32
- onClick={() => setRoute(r)}
33
- className={
34
- 'rounded-md px-2.5 py-1 font-medium capitalize ' +
35
- (route === r ? 'bg-primary text-primary-foreground' : 'text-muted-foreground hover:bg-muted')
36
- }
37
- >
38
- {r}
39
- </button>
40
- ))}
41
- </div>
42
- {route === 'journal' ? <JournalPage /> : <InsightsPage />}
43
- </div>
44
- );
45
- }
46
-
47
- const root = document.getElementById('root');
48
- if (!root) throw new Error('#root element missing from index.html');
49
-
50
- createRoot(root).render(
51
- <StrictMode>
52
- <NotisProvider runtime={runtime}>
53
- <AppShell>
54
- <DevPreview />
55
- </AppShell>
56
- </NotisProvider>
57
- </StrictMode>,
58
- );
@@ -1,199 +0,0 @@
1
- import type { NotisRuntime } from '@notis/sdk';
2
-
3
- /** Build Notion-shape property values, mirroring what the portal runtime returns. */
4
- function text(content: string) {
5
- return { type: 'rich_text', rich_text: [{ type: 'text', text: { content } }] };
6
- }
7
- function date(iso: string) {
8
- return { type: 'date', date: { start: iso, end: '', timezone: null } };
9
- }
10
- function number(n: number) {
11
- return { type: 'number', number: n };
12
- }
13
- function title(content: string) {
14
- return { type: 'title', title: [{ type: 'text', text: { content } }] };
15
- }
16
-
17
- function dayISO(offset: number): string {
18
- const d = new Date();
19
- d.setDate(d.getDate() - offset);
20
- d.setHours(8, 0, 0, 0);
21
- return d.toISOString();
22
- }
23
-
24
- type Seed = {
25
- offset: number;
26
- morningMood?: number;
27
- morningWord?: string;
28
- feeling?: string;
29
- energy?: number;
30
- motivation?: number;
31
- gratitudes?: [string, string, string] | [string, string] | [string];
32
- intention?: string;
33
- affirmation?: string;
34
- dayMood?: number;
35
- dayWord?: string;
36
- highlight?: string;
37
- lesson?: string;
38
- freeEntry?: string;
39
- };
40
-
41
- const SEEDS: Seed[] = [
42
- {
43
- offset: 0,
44
- morningMood: 6,
45
- morningWord: 'rested',
46
- feeling: 'Calm and a little excited about the demo this afternoon.',
47
- energy: 8,
48
- motivation: 9,
49
- gratitudes: [
50
- 'A slow coffee on the balcony before anyone was awake',
51
- 'Camille laughing at my terrible pun last night',
52
- 'That my back finally feels normal again',
53
- ],
54
- intention: 'One deep-work block on the launch page before opening messages.',
55
- affirmation: 'I am allowed to do one thing at a time.',
56
- // Evening not captured yet — today.
57
- },
58
- {
59
- offset: 1,
60
- morningMood: 4,
61
- morningWord: 'foggy',
62
- feeling: 'Slept badly, brain still booting.',
63
- energy: 4,
64
- motivation: 6,
65
- gratitudes: [
66
- 'Rain on the window while working',
67
- 'The boulangerie was still open at 19:30',
68
- 'A friend checking in for no reason',
69
- ],
70
- intention: 'Keep the day small: ship the fix, walk at lunch.',
71
- affirmation: 'I am steady even on slow days.',
72
- dayMood: 6,
73
- dayWord: 'redeemed',
74
- highlight: 'The afternoon walk turned into an hour of ideas with Théo.',
75
- lesson: 'A rough morning predicts nothing about the afternoon.',
76
- freeEntry:
77
- 'Started the day convinced it was a write-off. By 16:00 the fix was shipped and the walk with Théo unknotted the roadmap question that has been bugging me for a week. Note to self: leave the house earlier.',
78
- },
79
- {
80
- offset: 2,
81
- morningMood: 7,
82
- morningWord: 'sunny',
83
- feeling: 'Woke up before the alarm, ready to go.',
84
- energy: 9,
85
- motivation: 9,
86
- gratitudes: [
87
- 'Eight hours of sleep, finally',
88
- 'The new espresso beans',
89
- 'A clear calendar until noon',
90
- ],
91
- intention: 'Finish the investor update and actually send it.',
92
- affirmation: 'I am building something worth the patience it takes.',
93
- dayMood: 7,
94
- dayWord: 'unstoppable',
95
- highlight: 'Sent the update and got two warm replies within the hour.',
96
- lesson: 'Momentum compounds when I front-load the scary task.',
97
- },
98
- {
99
- offset: 3,
100
- morningMood: 3,
101
- morningWord: 'heavy',
102
- feeling: 'Anxious about the support backlog.',
103
- energy: 3,
104
- motivation: 4,
105
- gratitudes: [
106
- 'Tea instead of a third coffee',
107
- 'The cat sleeping on my desk all morning',
108
- ],
109
- intention: 'Answer ten tickets, then stop counting.',
110
- affirmation: 'I am more than my inbox.',
111
- dayMood: 4,
112
- dayWord: 'okay',
113
- highlight: 'Closed the hardest ticket with an actual fix, not a workaround.',
114
- lesson: 'Naming the dread out loud makes it about half as loud.',
115
- },
116
- {
117
- offset: 4,
118
- morningMood: 5,
119
- morningWord: 'curious',
120
- feeling: 'Mildly under-slept but interested in the day.',
121
- energy: 6,
122
- motivation: 7,
123
- gratitudes: [
124
- 'Morning light in the kitchen',
125
- 'A podcast that made the dishes disappear',
126
- 'Knowing exactly what today is for',
127
- ],
128
- intention: 'Prototype the stats page before lunch.',
129
- affirmation: 'I am learning fast enough.',
130
- dayMood: 6,
131
- dayWord: 'satisfying',
132
- highlight: 'The prototype clicked on the third try.',
133
- lesson: 'The second draft is where the good ideas live.',
134
- freeEntry: 'Quiet, focused day. The kind that does not make stories but makes progress.',
135
- },
136
- ];
137
-
138
- function buildDocuments() {
139
- return SEEDS.map((s, i) => {
140
- const iso = dayISO(s.offset);
141
- const properties: Record<string, unknown> = {
142
- Name: title(`Journal — ${iso.slice(0, 10)}`),
143
- Date: date(iso),
144
- };
145
- if (s.morningMood != null) properties['Morning Mood'] = number(s.morningMood);
146
- if (s.morningWord) properties['Morning Mood Word'] = text(s.morningWord);
147
- if (s.feeling) properties['Morning Feeling'] = text(s.feeling);
148
- if (s.energy != null) properties['Energy'] = number(s.energy);
149
- if (s.motivation != null) properties['Motivation'] = number(s.motivation);
150
- (s.gratitudes ?? []).forEach((g, gi) => {
151
- properties[`Gratitude ${gi + 1}`] = text(g);
152
- });
153
- if (s.intention) properties['Intention'] = text(s.intention);
154
- if (s.affirmation) properties['Affirmation'] = text(s.affirmation);
155
- if (s.dayMood != null) properties['Day Mood'] = number(s.dayMood);
156
- if (s.dayWord) properties['Day Mood Word'] = text(s.dayWord);
157
- if (s.highlight) properties['Highlight'] = text(s.highlight);
158
- if (s.lesson) properties['Lesson'] = text(s.lesson);
159
- return {
160
- id: `mock_${i}`,
161
- title: `Journal — ${iso.slice(0, 10)}`,
162
- content_markdown: s.freeEntry ?? '',
163
- created_time: iso,
164
- properties,
165
- };
166
- });
167
- }
168
-
169
- export function installMockRuntime(): NotisRuntime {
170
- const documents = buildDocuments();
171
- return {
172
- app: { id: 'mock', name: '5 Minutes Journal', slug: 'notis-journal', icon: 'phosphor:notebook' } as never,
173
- route: { path: '/', slug: 'journal', name: 'Journal' } as never,
174
- databases: [] as never,
175
- context: {},
176
- navigate: (payload) => {
177
- // eslint-disable-next-line no-console
178
- console.log('[mock navigate]', payload);
179
- window.dispatchEvent(new CustomEvent('mock-navigate', { detail: payload }));
180
- },
181
- registerTopBarSearch: () => {},
182
- setTopBarSearchValue: () => {},
183
- setTopBarSearchLoading: () => {},
184
- // No change feed in the mock: `useDatabaseSubscription` reports live=false.
185
- subscribeDatabase: () => () => {},
186
- async listTools() {
187
- return [];
188
- },
189
- async callTool(name: string) {
190
- if (name === 'LOCAL_NOTIS_DATABASE_QUERY') {
191
- return { documents } as never;
192
- }
193
- return {} as never;
194
- },
195
- async request() {
196
- return {};
197
- },
198
- };
199
- }
@@ -1,58 +0,0 @@
1
- import type { Config } from 'tailwindcss';
2
- import tailwindAnimate from 'tailwindcss-animate';
3
-
4
- const config: Config = {
5
- darkMode: ['class'],
6
- content: [
7
- './app/**/*.{ts,tsx}',
8
- './components/**/*.{ts,tsx}',
9
- './lib/**/*.{ts,tsx}',
10
- ],
11
- theme: {
12
- extend: {
13
- colors: {
14
- border: 'hsl(var(--border))',
15
- input: 'hsl(var(--input))',
16
- ring: 'hsl(var(--ring))',
17
- background: 'hsl(var(--background))',
18
- foreground: 'hsl(var(--foreground))',
19
- primary: {
20
- DEFAULT: 'hsl(var(--primary))',
21
- foreground: 'hsl(var(--primary-foreground))',
22
- },
23
- secondary: {
24
- DEFAULT: 'hsl(var(--secondary))',
25
- foreground: 'hsl(var(--secondary-foreground))',
26
- },
27
- destructive: {
28
- DEFAULT: 'hsl(var(--destructive))',
29
- foreground: 'hsl(var(--destructive-foreground))',
30
- },
31
- muted: {
32
- DEFAULT: 'hsl(var(--muted))',
33
- foreground: 'hsl(var(--muted-foreground))',
34
- },
35
- accent: {
36
- DEFAULT: 'hsl(var(--accent))',
37
- foreground: 'hsl(var(--accent-foreground))',
38
- },
39
- popover: {
40
- DEFAULT: 'hsl(var(--popover))',
41
- foreground: 'hsl(var(--popover-foreground))',
42
- },
43
- card: {
44
- DEFAULT: 'hsl(var(--card))',
45
- foreground: 'hsl(var(--card-foreground))',
46
- },
47
- },
48
- borderRadius: {
49
- lg: 'var(--radius)',
50
- md: 'calc(var(--radius) - 2px)',
51
- sm: 'calc(var(--radius) - 4px)',
52
- },
53
- },
54
- },
55
- plugins: [tailwindAnimate],
56
- };
57
-
58
- export default config;
@@ -1,23 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2017",
4
- "lib": ["dom", "dom.iterable", "esnext"],
5
- "allowJs": true,
6
- "skipLibCheck": true,
7
- "strict": true,
8
- "noEmit": true,
9
- "esModuleInterop": true,
10
- "module": "esnext",
11
- "moduleResolution": "bundler",
12
- "preserveSymlinks": true,
13
- "resolveJsonModule": true,
14
- "isolatedModules": true,
15
- "jsx": "react-jsx",
16
- "types": ["vite/client", "node"],
17
- "paths": {
18
- "@/*": ["./*"]
19
- }
20
- },
21
- "include": ["**/*.ts", "**/*.tsx"],
22
- "exclude": ["node_modules"]
23
- }
@@ -1,10 +0,0 @@
1
- import { notisViteConfig } from '@notis/sdk/vite';
2
- import react from '@vitejs/plugin-react';
3
- import appConfig from './notis.config';
4
-
5
- const config = notisViteConfig(appConfig);
6
-
7
- export default {
8
- ...config,
9
- plugins: [react(), ...(config.plugins || [])],
10
- };
@@ -1,5 +0,0 @@
1
- # Notes Changelog
2
-
3
- ## [Initial Release] - {PR_MERGE_DATE}
4
-
5
- - First Store release.
@@ -1,3 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
@@ -1,6 +0,0 @@
1
- import '@notis/sdk/styles.css';
2
- import './globals.css';
3
-
4
- export default function AppShell({ children }: { children: React.ReactNode }) {
5
- return children;
6
- }