@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,85 +0,0 @@
1
- 'use client';
2
-
3
- import { useCallback, useEffect, useState } from 'react';
4
- import { useNotisRuntime } from '../provider';
5
- import { normalizeDatabaseProperty, optionalString } from '../documents';
6
- import type { DatabaseProperty } from '../runtime';
7
-
8
- interface GetDatabaseResult {
9
- database?: {
10
- name?: string;
11
- description?: string | null;
12
- schema?: {
13
- properties?: unknown[];
14
- };
15
- };
16
- message?: string;
17
- error?: string;
18
- }
19
-
20
- export interface UseDatabaseSchemaResult {
21
- name: string | null;
22
- description: string | null;
23
- properties: DatabaseProperty[];
24
- loading: boolean;
25
- error: Error | null;
26
- refetch: () => void;
27
- }
28
-
29
- /** Fetch a database's schema (normalized properties + metadata). */
30
- export function useDatabaseSchema(databaseSlug: string): UseDatabaseSchemaResult {
31
- const runtime = useNotisRuntime();
32
- const [name, setName] = useState<string | null>(null);
33
- const [description, setDescription] = useState<string | null>(null);
34
- const [properties, setProperties] = useState<DatabaseProperty[]>([]);
35
- const [loading, setLoading] = useState(true);
36
- const [error, setError] = useState<Error | null>(null);
37
- const [fetchKey, setFetchKey] = useState(0);
38
-
39
- const refetch = useCallback(() => {
40
- setFetchKey((key) => key + 1);
41
- }, []);
42
-
43
- useEffect(() => {
44
- if (!runtime) {
45
- setLoading(false);
46
- return;
47
- }
48
-
49
- let cancelled = false;
50
- setLoading(true);
51
- setError(null);
52
-
53
- runtime
54
- .callTool<GetDatabaseResult>('LOCAL_NOTIS_DATABASE_GET_DATABASE', {
55
- database_slug: databaseSlug,
56
- })
57
- .then((result) => {
58
- if (cancelled) return;
59
- const message = result.error ?? result.message;
60
- if (!result.database && message) {
61
- throw new Error(message);
62
- }
63
- setName(optionalString(result.database?.name));
64
- setDescription(optionalString(result.database?.description));
65
- const rawProperties = result.database?.schema?.properties ?? [];
66
- setProperties(
67
- rawProperties
68
- .map(normalizeDatabaseProperty)
69
- .filter((property): property is DatabaseProperty => Boolean(property)),
70
- );
71
- setLoading(false);
72
- })
73
- .catch((err) => {
74
- if (cancelled) return;
75
- setError(err instanceof Error ? err : new Error(String(err)));
76
- setLoading(false);
77
- });
78
-
79
- return () => {
80
- cancelled = true;
81
- };
82
- }, [runtime, databaseSlug, fetchKey]);
83
-
84
- return { name, description, properties, loading, error, refetch };
85
- }
@@ -1,76 +0,0 @@
1
- 'use client';
2
-
3
- import { useEffect, useRef, useState } from 'react';
4
- import { useNotisRuntime } from '../provider';
5
- import { useDocuments, type UseDocumentsOptions, type UseDocumentsResult } from './useDocuments';
6
- import type { DocumentRecord } from '../runtime';
7
-
8
- export interface UseDatabaseSubscriptionOptions extends UseDocumentsOptions {
9
- /** Set to false to keep the query but skip the change feed. */
10
- subscribe?: boolean;
11
- }
12
-
13
- export interface UseDatabaseSubscriptionResult extends UseDocumentsResult {
14
- /** Alias of `documents`, for views that think in rows. */
15
- rows: DocumentRecord[];
16
- /** True while a live change feed is attached to this database. */
17
- live: boolean;
18
- }
19
-
20
- /**
21
- * Query a Notis database and keep it fresh without polling.
22
- *
23
- * ```tsx
24
- * const { rows, live, refetch } = useDatabaseSubscription('workspaces');
25
- * ```
26
- *
27
- * A change on the database wakes the hook, which then refetches through the
28
- * usual `LOCAL_NOTIS_DATABASE_QUERY` path — the change feed is a signal only
29
- * and never carries row data. Hosts without a change feed (the dev harness,
30
- * the screenshot stub, the vite preview) still return rows; `live` is false
31
- * there and the app should keep offering its manual refresh.
32
- */
33
- export function useDatabaseSubscription(
34
- databaseSlug: string,
35
- options: UseDatabaseSubscriptionOptions = {},
36
- ): UseDatabaseSubscriptionResult {
37
- const runtime = useNotisRuntime();
38
- const { subscribe = true, ...documentOptions } = options;
39
- const { documents, loading, error, refetch } = useDocuments(databaseSlug, documentOptions);
40
- const [live, setLive] = useState(false);
41
-
42
- const refetchRef = useRef(refetch);
43
- useEffect(() => {
44
- refetchRef.current = refetch;
45
- }, [refetch]);
46
-
47
- const enabled = options.enabled !== false && subscribe;
48
-
49
- useEffect(() => {
50
- if (!runtime?.subscribeDatabase || !enabled || !databaseSlug) {
51
- setLive(false);
52
- return;
53
- }
54
-
55
- let cancelled = false;
56
- const unsubscribe = runtime.subscribeDatabase(
57
- databaseSlug,
58
- () => {
59
- refetchRef.current();
60
- },
61
- {
62
- onStatusChange: (isLive) => {
63
- if (!cancelled) setLive(isLive);
64
- },
65
- },
66
- );
67
-
68
- return () => {
69
- cancelled = true;
70
- setLive(false);
71
- unsubscribe?.();
72
- };
73
- }, [runtime, databaseSlug, enabled]);
74
-
75
- return { documents, rows: documents, loading, error, refetch, live };
76
- }
@@ -1,78 +0,0 @@
1
- 'use client';
2
-
3
- import { useCallback, useEffect, useState } from 'react';
4
- import { useNotisRuntime } from '../provider';
5
- import { normalizeDocumentRecord } from '../documents';
6
- import type { DocumentRecord } from '../runtime';
7
-
8
- interface GetDocumentResult {
9
- status?: string;
10
- document?: unknown;
11
- message?: string;
12
- error?: string;
13
- }
14
-
15
- export interface UseDocumentOptions {
16
- enabled?: boolean;
17
- }
18
-
19
- export interface UseDocumentResult {
20
- document: DocumentRecord | null;
21
- loading: boolean;
22
- error: Error | null;
23
- refetch: () => void;
24
- }
25
-
26
- /** Fetch a single document (with content) by id, normalized. */
27
- export function useDocument(
28
- documentId: string | null | undefined,
29
- options: UseDocumentOptions = {},
30
- ): UseDocumentResult {
31
- const runtime = useNotisRuntime();
32
- const [document, setDocument] = useState<DocumentRecord | null>(null);
33
- const [loading, setLoading] = useState(Boolean(documentId));
34
- const [error, setError] = useState<Error | null>(null);
35
- const [fetchKey, setFetchKey] = useState(0);
36
-
37
- const enabled = options.enabled !== false && Boolean(documentId);
38
-
39
- const refetch = useCallback(() => {
40
- setFetchKey((key) => key + 1);
41
- }, []);
42
-
43
- useEffect(() => {
44
- if (!runtime || !enabled || !documentId) {
45
- setDocument(null);
46
- setLoading(false);
47
- return;
48
- }
49
-
50
- let cancelled = false;
51
- setLoading(true);
52
- setError(null);
53
-
54
- runtime
55
- .callTool<GetDocumentResult>('LOCAL_NOTIS_DATABASE_GET_DOCUMENT', {
56
- document_id: documentId,
57
- })
58
- .then((result) => {
59
- if (cancelled) return;
60
- if (!result.document) {
61
- throw new Error(result.error ?? result.message ?? 'Document not found');
62
- }
63
- setDocument(normalizeDocumentRecord(result.document));
64
- setLoading(false);
65
- })
66
- .catch((err) => {
67
- if (cancelled) return;
68
- setError(err instanceof Error ? err : new Error(String(err)));
69
- setLoading(false);
70
- });
71
-
72
- return () => {
73
- cancelled = true;
74
- };
75
- }, [runtime, documentId, enabled, fetchKey]);
76
-
77
- return { document, loading, error, refetch };
78
- }
@@ -1,121 +0,0 @@
1
- 'use client';
2
-
3
- import { useCallback, useEffect, useState } from 'react';
4
- import { useNotisRuntime } from '../provider';
5
- import { normalizeDocumentRecord } from '../documents';
6
- import type { DocumentRecord, QueryFilter } from '../runtime';
7
-
8
- interface QueryDatabaseResult {
9
- documents?: unknown[];
10
- has_more?: boolean;
11
- next_offset?: number | null;
12
- message?: string;
13
- error?: string;
14
- }
15
-
16
- export interface UseDocumentsOptions {
17
- filter?: QueryFilter;
18
- pageSize?: number;
19
- offset?: number;
20
- /** Fetch every page, starting at offset, instead of returning only one page. */
21
- fetchAll?: boolean;
22
- enabled?: boolean;
23
- }
24
-
25
- export interface UseDocumentsResult {
26
- documents: DocumentRecord[];
27
- loading: boolean;
28
- error: Error | null;
29
- refetch: () => void;
30
- }
31
-
32
- /**
33
- * Query a Notis database and get normalized `DocumentRecord`s.
34
- *
35
- * ```tsx
36
- * const { documents, loading, refetch } = useDocuments('notes', {
37
- * filter: { filters: [{ property: 'Folder', operator: 'contains', type: 'relation', value: folderId }] },
38
- * pageSize: 250,
39
- * });
40
- * ```
41
- */
42
- export function useDocuments(
43
- databaseSlug: string,
44
- options: UseDocumentsOptions = {},
45
- ): UseDocumentsResult {
46
- const runtime = useNotisRuntime();
47
- const [documents, setDocuments] = useState<DocumentRecord[]>([]);
48
- const [loading, setLoading] = useState(true);
49
- const [error, setError] = useState<Error | null>(null);
50
- const [fetchKey, setFetchKey] = useState(0);
51
-
52
- const enabled = options.enabled !== false;
53
- const filterKey = JSON.stringify(options.filter ?? null);
54
-
55
- const refetch = useCallback(() => {
56
- setFetchKey((key) => key + 1);
57
- }, []);
58
-
59
- useEffect(() => {
60
- if (!runtime || !enabled) {
61
- setLoading(false);
62
- return;
63
- }
64
-
65
- let cancelled = false;
66
- setLoading(true);
67
- setError(null);
68
-
69
- const filter = filterKey === 'null' ? null : (JSON.parse(filterKey) as QueryFilter);
70
-
71
- const fetchDocuments = async (): Promise<unknown[]> => {
72
- const allDocuments: unknown[] = [];
73
- let offset = options.offset ?? 0;
74
-
75
- while (true) {
76
- const result = await runtime.callTool<QueryDatabaseResult>('LOCAL_NOTIS_DATABASE_QUERY', {
77
- database_slug: databaseSlug,
78
- query: {
79
- ...(filter ?? {}),
80
- ...(options.pageSize !== undefined ? { page_size: options.pageSize } : {}),
81
- },
82
- ...(offset > 0 ? { offset } : {}),
83
- });
84
- const message = result.error ?? result.message;
85
- if (!result.documents && message) {
86
- throw new Error(message);
87
- }
88
- allDocuments.push(...(result.documents ?? []));
89
- if (!options.fetchAll || !result.has_more) return allDocuments;
90
-
91
- const nextOffset = result.next_offset;
92
- if (typeof nextOffset !== 'number' || nextOffset <= offset) {
93
- throw new Error('Database query returned an invalid pagination offset');
94
- }
95
- offset = nextOffset;
96
- }
97
- };
98
-
99
- fetchDocuments()
100
- .then((result) => {
101
- if (cancelled) return;
102
- setDocuments(
103
- result
104
- .map(normalizeDocumentRecord)
105
- .filter((document) => document.id),
106
- );
107
- setLoading(false);
108
- })
109
- .catch((err) => {
110
- if (cancelled) return;
111
- setError(err instanceof Error ? err : new Error(String(err)));
112
- setLoading(false);
113
- });
114
-
115
- return () => {
116
- cancelled = true;
117
- };
118
- }, [runtime, databaseSlug, enabled, fetchKey, filterKey, options.fetchAll, options.offset, options.pageSize]);
119
-
120
- return { documents, loading, error, refetch };
121
- }
@@ -1,75 +0,0 @@
1
- 'use client';
2
-
3
- import { useCallback, useState } from 'react';
4
- import { useNotisRuntime } from '../provider';
5
- import type { HandoverPayload, HandoverResult } from '../runtime';
6
-
7
- export interface UseHandoverResult {
8
- /** Hand the work over. Rejects when the host has no manager chat. */
9
- handover: (payload: HandoverPayload) => Promise<HandoverResult>;
10
- /** True while the manager chat is being prepared. */
11
- pending: boolean;
12
- error: Error | null;
13
- /**
14
- * False when the host cannot hand work over (dev harness, vite preview).
15
- * Render the app's own fallback — a copyable prompt, say — when it is false.
16
- */
17
- available: boolean;
18
- }
19
-
20
- /**
21
- * Hand a piece of work from app code to the Notis manager chat.
22
- *
23
- * An app displays work; the manager runs it. `handover` puts the message in
24
- * the chat surface that already owns streaming progress, billing, cancellation
25
- * and the transcript, and the app watches its own databases for the result.
26
- *
27
- * ```tsx
28
- * const { handover, pending, available } = useHandover();
29
- *
30
- * return available ? (
31
- * <Button
32
- * disabled={pending}
33
- * onClick={() => { void handover({ prompt: 'Create a workspace on notis to ...' }); }}
34
- * >
35
- * Send to Notis
36
- * </Button>
37
- * ) : (
38
- * <CopyablePrompt prompt="Create a workspace on notis to ..." />
39
- * );
40
- * ```
41
- *
42
- * Pass `skill` to bind the work to a skill declared in `notis.config.ts`; the
43
- * host rejects a key the app does not declare. `autoSend` is accepted for
44
- * forward compatibility; today's hosts always return `drafted` and let the
45
- * user press send.
46
- */
47
- export function useHandover(): UseHandoverResult {
48
- const runtime = useNotisRuntime();
49
- const [pending, setPending] = useState(false);
50
- const [error, setError] = useState<Error | null>(null);
51
-
52
- const handover = useCallback(
53
- async (payload: HandoverPayload): Promise<HandoverResult> => {
54
- if (!runtime?.handover) {
55
- throw new Error('This Notis host cannot hand work to the manager chat.');
56
- }
57
-
58
- setPending(true);
59
- setError(null);
60
-
61
- try {
62
- return await runtime.handover(payload);
63
- } catch (err) {
64
- const e = err instanceof Error ? err : new Error(String(err));
65
- setError(e);
66
- throw e;
67
- } finally {
68
- setPending(false);
69
- }
70
- },
71
- [runtime],
72
- );
73
-
74
- return { handover, pending, error, available: Boolean(runtime?.handover) };
75
- }