@notis_ai/cli 0.2.13 → 0.2.15

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 (295) hide show
  1. package/README.md +125 -21
  2. package/dist/agent-hooks/notis-agent-hook.mjs +19750 -0
  3. package/{skills → dist/base-skills}/notis-apps/SKILL.md +93 -58
  4. package/{skills → dist/base-skills}/notis-cli/SKILL.md +9 -9
  5. package/dist/base-skills/notis-query/SKILL.md +705 -0
  6. package/dist/skill-sync/index.js +1528 -0
  7. package/dist/skill-sync/index.js.map +7 -0
  8. package/package.json +5 -2
  9. package/skills/notis-apps/cli.md +44 -18
  10. package/skills/notis-cli/AGENT_INSTRUCTIONS.md +39 -0
  11. package/skills/notis-onboarding/BRIEF.md +16 -0
  12. package/src/agent-hook-entry.js +5 -0
  13. package/src/cli.js +23 -14
  14. package/src/command-specs/agents.js +392 -0
  15. package/src/command-specs/apps.js +1090 -418
  16. package/src/command-specs/auth.js +63 -10
  17. package/src/command-specs/handover.js +374 -0
  18. package/src/command-specs/index.js +9 -0
  19. package/src/command-specs/onboarding.js +69 -5
  20. package/src/command-specs/skills.js +56 -0
  21. package/src/command-specs/tools.js +6 -0
  22. package/src/runtime/agent-memory-state.js +126 -0
  23. package/src/runtime/agent-setup.js +383 -0
  24. package/src/runtime/app-dev-consumers.js +154 -0
  25. package/src/runtime/app-dev-host-lock.js +80 -0
  26. package/src/runtime/app-dev-roots.js +284 -0
  27. package/src/runtime/app-dev-server.js +229 -30
  28. package/src/runtime/app-dev-sessions.js +105 -145
  29. package/src/runtime/app-platform.js +1499 -161
  30. package/src/runtime/app-registry-scaffolds.js +367 -0
  31. package/src/runtime/base-skills.d.ts +20 -0
  32. package/src/runtime/base-skills.js +167 -0
  33. package/src/runtime/delegated-context.js +68 -0
  34. package/src/runtime/git.js +233 -0
  35. package/src/runtime/login-listener.js +15 -0
  36. package/src/runtime/oauth.js +1506 -141
  37. package/src/runtime/output.js +7 -0
  38. package/src/runtime/ports.js +16 -0
  39. package/src/runtime/profiles.js +0 -5
  40. package/src/runtime/skill-sync/cloud-client.ts +96 -0
  41. package/src/runtime/skill-sync/index.ts +644 -0
  42. package/src/runtime/skill-sync/local-scanner.ts +1046 -0
  43. package/src/runtime/skill-sync/symlink-manager.ts +383 -0
  44. package/src/runtime/skill-sync/sync-plan.ts +22 -0
  45. package/src/runtime/skill-sync/types.ts +103 -0
  46. package/src/runtime/skill-sync/write-cloud-skill.ts +50 -0
  47. package/src/runtime/store-screenshot.js +6 -1
  48. package/src/runtime/sync-skills.d.ts +37 -0
  49. package/src/runtime/sync-skills.js +215 -0
  50. package/src/runtime/transport.js +19 -2
  51. package/template/.harness/index.html.tmpl +116 -47
  52. package/template/app/layout.tsx +5 -1
  53. package/template/notis.config.ts +1 -0
  54. package/template/packages/sdk/package.json +2 -1
  55. package/template/packages/sdk/src/components/DocumentEditor.tsx +13 -3
  56. package/template/packages/sdk/src/components/MarkdownEditor.tsx +121 -0
  57. package/template/packages/sdk/src/components/MultiSelectActionBar.tsx +37 -119
  58. package/template/packages/sdk/src/components/MultiSelectCheckbox.tsx +5 -1
  59. package/template/packages/sdk/src/components/MultiSelectDragOverlay.tsx +1 -1
  60. package/template/packages/sdk/src/components/NotisSelectionBoundary.tsx +55 -0
  61. package/template/packages/sdk/src/components/ShortcutHints.tsx +56 -0
  62. package/template/packages/sdk/src/config.ts +71 -0
  63. package/template/packages/sdk/src/documents.ts +28 -1
  64. package/template/packages/sdk/src/hooks/useActiveResource.ts +19 -0
  65. package/template/packages/sdk/src/hooks/useCloudComputer.ts +97 -0
  66. package/template/packages/sdk/src/hooks/useCollectionInteractions.ts +709 -0
  67. package/template/packages/sdk/src/hooks/useDatabaseSubscription.ts +76 -0
  68. package/template/packages/sdk/src/hooks/useHandover.ts +78 -0
  69. package/template/packages/sdk/src/hooks/useMultiSelect.ts +44 -482
  70. package/template/packages/sdk/src/hooks/useTool.ts +5 -4
  71. package/template/packages/sdk/src/index.ts +64 -2
  72. package/template/packages/sdk/src/interactions/actions.ts +46 -0
  73. package/template/packages/sdk/src/interactions/shortcuts.tsx +628 -0
  74. package/template/packages/sdk/src/interactions.ts +41 -0
  75. package/template/packages/sdk/src/provider.tsx +2 -1
  76. package/template/packages/sdk/src/runtime.ts +219 -3
  77. package/dist/scaffolds/notis-database/CHANGELOG.md +0 -5
  78. package/dist/scaffolds/notis-database/app/globals.css +0 -44
  79. package/dist/scaffolds/notis-database/app/layout.tsx +0 -6
  80. package/dist/scaffolds/notis-database/app/page.tsx +0 -1088
  81. package/dist/scaffolds/notis-database/components/ui/badge.tsx +0 -28
  82. package/dist/scaffolds/notis-database/components/ui/button.tsx +0 -53
  83. package/dist/scaffolds/notis-database/components/ui/card.tsx +0 -56
  84. package/dist/scaffolds/notis-database/components/ui/table.tsx +0 -120
  85. package/dist/scaffolds/notis-database/components.json +0 -20
  86. package/dist/scaffolds/notis-database/index.html +0 -12
  87. package/dist/scaffolds/notis-database/lib/types.ts +0 -132
  88. package/dist/scaffolds/notis-database/lib/utils.ts +0 -6
  89. package/dist/scaffolds/notis-database/metadata/screenshot-1.png +0 -0
  90. package/dist/scaffolds/notis-database/metadata/screenshot-2.png +0 -0
  91. package/dist/scaffolds/notis-database/metadata/screenshot-3.png +0 -0
  92. package/dist/scaffolds/notis-database/metadata/screenshot-4.png +0 -0
  93. package/dist/scaffolds/notis-database/metadata/screenshot-5.png +0 -0
  94. package/dist/scaffolds/notis-database/metadata/screenshot-fixtures.json +0 -1839
  95. package/dist/scaffolds/notis-database/notis.config.ts +0 -73
  96. package/dist/scaffolds/notis-database/package-lock.json +0 -3935
  97. package/dist/scaffolds/notis-database/package.json +0 -32
  98. package/dist/scaffolds/notis-database/packages/sdk/package.json +0 -36
  99. package/dist/scaffolds/notis-database/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  100. package/dist/scaffolds/notis-database/packages/sdk/src/components/Markdown.tsx +0 -60
  101. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  102. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  103. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  104. package/dist/scaffolds/notis-database/packages/sdk/src/config.ts +0 -196
  105. package/dist/scaffolds/notis-database/packages/sdk/src/documents.ts +0 -229
  106. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useBackend.ts +0 -41
  107. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  108. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocument.ts +0 -78
  109. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocuments.ts +0 -121
  110. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  111. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotis.ts +0 -34
  112. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  113. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTool.ts +0 -64
  114. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTools.ts +0 -56
  115. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  116. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  117. package/dist/scaffolds/notis-database/packages/sdk/src/index.ts +0 -83
  118. package/dist/scaffolds/notis-database/packages/sdk/src/provider.tsx +0 -43
  119. package/dist/scaffolds/notis-database/packages/sdk/src/runtime.ts +0 -220
  120. package/dist/scaffolds/notis-database/packages/sdk/src/styles.css +0 -186
  121. package/dist/scaffolds/notis-database/packages/sdk/src/ui.ts +0 -15
  122. package/dist/scaffolds/notis-database/packages/sdk/src/vite.ts +0 -56
  123. package/dist/scaffolds/notis-database/packages/sdk/tsconfig.json +0 -15
  124. package/dist/scaffolds/notis-database/postcss.config.mjs +0 -8
  125. package/dist/scaffolds/notis-database/src/dev-main.tsx +0 -23
  126. package/dist/scaffolds/notis-database/src/mock-runtime.ts +0 -561
  127. package/dist/scaffolds/notis-database/tailwind.config.ts +0 -59
  128. package/dist/scaffolds/notis-database/tsconfig.json +0 -23
  129. package/dist/scaffolds/notis-database/vite.config.ts +0 -22
  130. package/dist/scaffolds/notis-journal/CHANGELOG.md +0 -29
  131. package/dist/scaffolds/notis-journal/app/globals.css +0 -37
  132. package/dist/scaffolds/notis-journal/app/insights/page.tsx +0 -513
  133. package/dist/scaffolds/notis-journal/app/journal-core.tsx +0 -362
  134. package/dist/scaffolds/notis-journal/app/journal-ui.tsx +0 -337
  135. package/dist/scaffolds/notis-journal/app/layout.tsx +0 -6
  136. package/dist/scaffolds/notis-journal/app/page.tsx +0 -486
  137. package/dist/scaffolds/notis-journal/components/ui/badge.tsx +0 -28
  138. package/dist/scaffolds/notis-journal/components/ui/button.tsx +0 -53
  139. package/dist/scaffolds/notis-journal/components/ui/card.tsx +0 -56
  140. package/dist/scaffolds/notis-journal/components.json +0 -20
  141. package/dist/scaffolds/notis-journal/index.html +0 -12
  142. package/dist/scaffolds/notis-journal/lib/utils.ts +0 -6
  143. package/dist/scaffolds/notis-journal/metadata/screenshot-1.png +0 -0
  144. package/dist/scaffolds/notis-journal/metadata/screenshot-2.png +0 -0
  145. package/dist/scaffolds/notis-journal/metadata/screenshot-3.png +0 -0
  146. package/dist/scaffolds/notis-journal/metadata/screenshot-4.png +0 -0
  147. package/dist/scaffolds/notis-journal/metadata/screenshot-5.png +0 -0
  148. package/dist/scaffolds/notis-journal/metadata/screenshot-6.png +0 -0
  149. package/dist/scaffolds/notis-journal/metadata/screenshot-fixtures.json +0 -132
  150. package/dist/scaffolds/notis-journal/notis.config.ts +0 -93
  151. package/dist/scaffolds/notis-journal/package-lock.json +0 -4615
  152. package/dist/scaffolds/notis-journal/package.json +0 -34
  153. package/dist/scaffolds/notis-journal/packages/sdk/package.json +0 -36
  154. package/dist/scaffolds/notis-journal/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  155. package/dist/scaffolds/notis-journal/packages/sdk/src/components/Markdown.tsx +0 -60
  156. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  157. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  158. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  159. package/dist/scaffolds/notis-journal/packages/sdk/src/config.ts +0 -196
  160. package/dist/scaffolds/notis-journal/packages/sdk/src/documents.ts +0 -229
  161. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useBackend.ts +0 -41
  162. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  163. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocument.ts +0 -78
  164. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocuments.ts +0 -121
  165. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  166. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotis.ts +0 -34
  167. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  168. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTool.ts +0 -64
  169. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTools.ts +0 -56
  170. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  171. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  172. package/dist/scaffolds/notis-journal/packages/sdk/src/index.ts +0 -83
  173. package/dist/scaffolds/notis-journal/packages/sdk/src/provider.tsx +0 -43
  174. package/dist/scaffolds/notis-journal/packages/sdk/src/runtime.ts +0 -220
  175. package/dist/scaffolds/notis-journal/packages/sdk/src/styles.css +0 -186
  176. package/dist/scaffolds/notis-journal/packages/sdk/src/ui.ts +0 -15
  177. package/dist/scaffolds/notis-journal/packages/sdk/src/vite.ts +0 -56
  178. package/dist/scaffolds/notis-journal/packages/sdk/tsconfig.json +0 -15
  179. package/dist/scaffolds/notis-journal/postcss.config.mjs +0 -8
  180. package/dist/scaffolds/notis-journal/skills/journal-onboarding/SKILL.md +0 -120
  181. package/dist/scaffolds/notis-journal/src/dev-main.tsx +0 -58
  182. package/dist/scaffolds/notis-journal/src/mock-runtime.ts +0 -197
  183. package/dist/scaffolds/notis-journal/tailwind.config.ts +0 -58
  184. package/dist/scaffolds/notis-journal/tsconfig.json +0 -23
  185. package/dist/scaffolds/notis-journal/vite.config.ts +0 -10
  186. package/dist/scaffolds/notis-notes/CHANGELOG.md +0 -5
  187. package/dist/scaffolds/notis-notes/app/globals.css +0 -3
  188. package/dist/scaffolds/notis-notes/app/layout.tsx +0 -6
  189. package/dist/scaffolds/notis-notes/app/page.tsx +0 -1943
  190. package/dist/scaffolds/notis-notes/app/phosphor-icons.ts +0 -596
  191. package/dist/scaffolds/notis-notes/components/ui/badge.tsx +0 -28
  192. package/dist/scaffolds/notis-notes/components/ui/button.tsx +0 -53
  193. package/dist/scaffolds/notis-notes/components/ui/card.tsx +0 -56
  194. package/dist/scaffolds/notis-notes/components.json +0 -20
  195. package/dist/scaffolds/notis-notes/lib/utils.ts +0 -6
  196. package/dist/scaffolds/notis-notes/lib/visible-properties.ts +0 -144
  197. package/dist/scaffolds/notis-notes/metadata/screenshot-1.png +0 -0
  198. package/dist/scaffolds/notis-notes/metadata/screenshot-2.png +0 -0
  199. package/dist/scaffolds/notis-notes/metadata/screenshot-3.png +0 -0
  200. package/dist/scaffolds/notis-notes/metadata/screenshot-4.png +0 -0
  201. package/dist/scaffolds/notis-notes/metadata/screenshot-5.png +0 -0
  202. package/dist/scaffolds/notis-notes/metadata/screenshot-fixtures.json +0 -752
  203. package/dist/scaffolds/notis-notes/notis.config.ts +0 -80
  204. package/dist/scaffolds/notis-notes/package-lock.json +0 -4636
  205. package/dist/scaffolds/notis-notes/package.json +0 -35
  206. package/dist/scaffolds/notis-notes/packages/sdk/package.json +0 -36
  207. package/dist/scaffolds/notis-notes/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  208. package/dist/scaffolds/notis-notes/packages/sdk/src/components/Markdown.tsx +0 -60
  209. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  210. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  211. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  212. package/dist/scaffolds/notis-notes/packages/sdk/src/config.ts +0 -196
  213. package/dist/scaffolds/notis-notes/packages/sdk/src/documents.ts +0 -229
  214. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useBackend.ts +0 -41
  215. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  216. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocument.ts +0 -78
  217. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocuments.ts +0 -121
  218. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  219. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotis.ts +0 -34
  220. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  221. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTool.ts +0 -64
  222. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTools.ts +0 -56
  223. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  224. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  225. package/dist/scaffolds/notis-notes/packages/sdk/src/index.ts +0 -83
  226. package/dist/scaffolds/notis-notes/packages/sdk/src/provider.tsx +0 -43
  227. package/dist/scaffolds/notis-notes/packages/sdk/src/runtime.ts +0 -220
  228. package/dist/scaffolds/notis-notes/packages/sdk/src/styles.css +0 -186
  229. package/dist/scaffolds/notis-notes/packages/sdk/src/ui.ts +0 -15
  230. package/dist/scaffolds/notis-notes/packages/sdk/src/vite.ts +0 -56
  231. package/dist/scaffolds/notis-notes/packages/sdk/tsconfig.json +0 -15
  232. package/dist/scaffolds/notis-notes/postcss.config.mjs +0 -8
  233. package/dist/scaffolds/notis-notes/tailwind.config.ts +0 -58
  234. package/dist/scaffolds/notis-notes/tsconfig.json +0 -23
  235. package/dist/scaffolds/notis-notes/vite.config.ts +0 -10
  236. package/dist/scaffolds/notis-random/CHANGELOG.md +0 -15
  237. package/dist/scaffolds/notis-random/README.md +0 -33
  238. package/dist/scaffolds/notis-random/app/globals.css +0 -11
  239. package/dist/scaffolds/notis-random/app/history/page.tsx +0 -67
  240. package/dist/scaffolds/notis-random/app/layout.tsx +0 -7
  241. package/dist/scaffolds/notis-random/app/page.tsx +0 -289
  242. package/dist/scaffolds/notis-random/components/ui/button.tsx +0 -50
  243. package/dist/scaffolds/notis-random/components/ui/card.tsx +0 -16
  244. package/dist/scaffolds/notis-random/components/ui/input.tsx +0 -23
  245. package/dist/scaffolds/notis-random/components.json +0 -20
  246. package/dist/scaffolds/notis-random/index.html +0 -12
  247. package/dist/scaffolds/notis-random/lib/notis-tools.ts +0 -128
  248. package/dist/scaffolds/notis-random/lib/rng.ts +0 -202
  249. package/dist/scaffolds/notis-random/lib/roll-record.ts +0 -189
  250. package/dist/scaffolds/notis-random/lib/utils.ts +0 -25
  251. package/dist/scaffolds/notis-random/metadata/screenshot-1.png +0 -0
  252. package/dist/scaffolds/notis-random/metadata/screenshot-2.png +0 -0
  253. package/dist/scaffolds/notis-random/metadata/screenshot-3.png +0 -0
  254. package/dist/scaffolds/notis-random/metadata/screenshot-4.png +0 -0
  255. package/dist/scaffolds/notis-random/metadata/screenshot-5.png +0 -0
  256. package/dist/scaffolds/notis-random/metadata/screenshot-fixtures.json +0 -753
  257. package/dist/scaffolds/notis-random/notis.config.ts +0 -86
  258. package/dist/scaffolds/notis-random/package-lock.json +0 -4513
  259. package/dist/scaffolds/notis-random/package.json +0 -36
  260. package/dist/scaffolds/notis-random/packages/sdk/package.json +0 -36
  261. package/dist/scaffolds/notis-random/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  262. package/dist/scaffolds/notis-random/packages/sdk/src/components/Markdown.tsx +0 -60
  263. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  264. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  265. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  266. package/dist/scaffolds/notis-random/packages/sdk/src/config.ts +0 -196
  267. package/dist/scaffolds/notis-random/packages/sdk/src/documents.ts +0 -229
  268. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useBackend.ts +0 -41
  269. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  270. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocument.ts +0 -78
  271. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocuments.ts +0 -121
  272. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  273. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotis.ts +0 -34
  274. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  275. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTool.ts +0 -64
  276. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTools.ts +0 -56
  277. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  278. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  279. package/dist/scaffolds/notis-random/packages/sdk/src/index.ts +0 -83
  280. package/dist/scaffolds/notis-random/packages/sdk/src/provider.tsx +0 -43
  281. package/dist/scaffolds/notis-random/packages/sdk/src/runtime.ts +0 -220
  282. package/dist/scaffolds/notis-random/packages/sdk/src/styles.css +0 -186
  283. package/dist/scaffolds/notis-random/packages/sdk/src/ui.ts +0 -15
  284. package/dist/scaffolds/notis-random/packages/sdk/src/vite.ts +0 -56
  285. package/dist/scaffolds/notis-random/packages/sdk/tsconfig.json +0 -15
  286. package/dist/scaffolds/notis-random/postcss.config.mjs +0 -6
  287. package/dist/scaffolds/notis-random/src/dev-main.tsx +0 -70
  288. package/dist/scaffolds/notis-random/src/mock-runtime.ts +0 -129
  289. package/dist/scaffolds/notis-random/tailwind.config.ts +0 -50
  290. package/dist/scaffolds/notis-random/tsconfig.json +0 -23
  291. package/dist/scaffolds/notis-random/vite.config.ts +0 -11
  292. package/dist/scaffolds.json +0 -49
  293. package/template/metadata/screenshot-1.png +0 -0
  294. package/template/metadata/screenshot-2.png +0 -0
  295. package/template/metadata/screenshot-3.png +0 -0
@@ -25,7 +25,21 @@ export type DatabasePropertyType =
25
25
  | 'status'
26
26
  | 'relation'
27
27
  | 'formula'
28
- | 'files';
28
+ | 'files'
29
+ | 'secret';
30
+
31
+ /**
32
+ * The value of a `secret` property. The platform stores a pointer to a
33
+ * credential held elsewhere and never the credential itself, so there is
34
+ * deliberately nothing here to read the secret material from — only whether
35
+ * one is attached, which credential it is, and its lifecycle state.
36
+ */
37
+ export interface SecretPropertyValue {
38
+ present: boolean;
39
+ reference: string | null;
40
+ status: string | null;
41
+ metadata: Record<string, unknown> | null;
42
+ }
29
43
 
30
44
  export interface DatabasePropertyOption {
31
45
  id?: string | null;
@@ -57,7 +71,7 @@ export interface DatabaseDescriptor {
57
71
  * (pdf, xlsx, pptx, ...). Future content types (canvas, ...) extend this
58
72
  * union without changing the component contracts.
59
73
  */
60
- export type DocumentContentType = 'markdown' | 'file';
74
+ export type DocumentContentType = 'markdown' | 'file' | 'view';
61
75
 
62
76
  export interface DocumentRecord {
63
77
  id: string;
@@ -72,6 +86,9 @@ export interface DocumentRecord {
72
86
  contentBlocknote?: Array<Record<string, unknown>> | null;
73
87
  contentMarkdown?: string | null;
74
88
  plainText?: string | null;
89
+ viewType?: string | null;
90
+ viewState?: Record<string, unknown> | null;
91
+ viewRevision?: number | null;
75
92
  createdAt?: string | null;
76
93
  lastEditedTime?: string | null;
77
94
  }
@@ -88,6 +105,14 @@ export interface ToolDescriptor {
88
105
  inputSchema?: ToolInputSchema;
89
106
  }
90
107
 
108
+ export interface ToolCallOptions {
109
+ /**
110
+ * Coalesce an identical in-flight call. Only opt in for idempotent reads;
111
+ * mutations must execute once per invocation.
112
+ */
113
+ dedupe?: boolean;
114
+ }
115
+
91
116
  // ---------------------------------------------------------------------------
92
117
  // Route types
93
118
  // ---------------------------------------------------------------------------
@@ -155,6 +180,37 @@ export interface NotisRuntimeContext {
155
180
  screenshotScenario?: string | null;
156
181
  }
157
182
 
183
+ // ---------------------------------------------------------------------------
184
+ // App context shared with Notis
185
+ // ---------------------------------------------------------------------------
186
+
187
+ export type ContextAttributeValue = string | number | boolean | null;
188
+
189
+ /**
190
+ * The specific thing currently in focus inside an app view. The host stamps
191
+ * app/view provenance onto this value before it reaches chat, so apps only
192
+ * describe their own resource rather than impersonating another surface.
193
+ */
194
+ export interface ContextResource {
195
+ id: string;
196
+ kind: string;
197
+ label: string;
198
+ url?: string | null;
199
+ revision?: string | null;
200
+ attributes?: Record<string, ContextAttributeValue>;
201
+ snapshot?: {
202
+ format: 'text' | 'markdown';
203
+ content: string;
204
+ } | null;
205
+ }
206
+
207
+ /** A quote copied from an app, kept separate from the user's prompt. */
208
+ export interface ContextSelection {
209
+ id: string;
210
+ text: string;
211
+ resource?: ContextResource | null;
212
+ }
213
+
158
214
  // ---------------------------------------------------------------------------
159
215
  // Host-provided UI
160
216
  // ---------------------------------------------------------------------------
@@ -175,6 +231,38 @@ export interface NotisDocumentEditorProps {
175
231
  onSavingChange?: (saving: boolean) => void;
176
232
  }
177
233
 
234
+ export interface NotisMarkdownEditorSavePayload {
235
+ markdown: string;
236
+ expectedRevision?: string | null;
237
+ }
238
+
239
+ export interface NotisMarkdownEditorSaveResult {
240
+ revision?: string | null;
241
+ }
242
+
243
+ /**
244
+ * Storage-neutral host markdown editor. The app owns persistence through
245
+ * `onSave`; the host only supplies Notis' editing experience.
246
+ */
247
+ export interface NotisMarkdownEditorProps {
248
+ /** Stable identity of the edited resource. Changing it starts a fresh editor. */
249
+ resourceKey?: string;
250
+ value: string;
251
+ revision?: string | null;
252
+ readOnly?: boolean;
253
+ autosaveMs?: number;
254
+ placeholder?: string;
255
+ className?: string;
256
+ onChange?: (markdown: string) => void;
257
+ /** Persist an uploaded media/file block and return its durable URL. */
258
+ onUploadFile?: (file: File) => Promise<string>;
259
+ onSave?: (
260
+ payload: NotisMarkdownEditorSavePayload,
261
+ ) => Promise<NotisMarkdownEditorSaveResult | void>;
262
+ onDirtyChange?: (dirty: boolean) => void;
263
+ onSavingChange?: (saving: boolean) => void;
264
+ }
265
+
178
266
  /**
179
267
  * Components the host (portal) injects through the runtime. Apps consume them
180
268
  * via the SDK wrappers (e.g. `DocumentEditor`), which fall back gracefully
@@ -182,12 +270,91 @@ export interface NotisDocumentEditorProps {
182
270
  */
183
271
  export interface NotisRuntimeUI {
184
272
  DocumentEditor?: ComponentType<NotisDocumentEditorProps>;
273
+ MarkdownEditor?: ComponentType<NotisMarkdownEditorProps>;
185
274
  }
186
275
 
187
276
  // ---------------------------------------------------------------------------
188
277
  // NotisRuntime
189
278
  // ---------------------------------------------------------------------------
190
279
 
280
+ /**
281
+ * Options for `NotisRuntime.subscribeDatabase`.
282
+ */
283
+ export interface SubscribeDatabaseOptions {
284
+ /**
285
+ * Called with `true` once a live change feed is attached, and with `false`
286
+ * when it drops or is torn down. Hosts without a change feed (dev harness,
287
+ * screenshot stub, vite preview) never call it, so `live` stays false there.
288
+ */
289
+ onStatusChange?: (live: boolean) => void;
290
+ }
291
+
292
+ /**
293
+ * Work an app hands to the Notis manager chat through `NotisRuntime.handover`.
294
+ */
295
+ export interface HandoverPayload {
296
+ /** Optional starter message. Omit it to open a context-only composer. */
297
+ prompt?: string;
298
+ /**
299
+ * Key of a skill declared in `notis.config.ts` -> `skills[].key`. The host
300
+ * rejects a key this app does not declare. Omit to hand over plain work.
301
+ */
302
+ skill?: string;
303
+ /**
304
+ * Accepted for forward compatibility. The portal never submits a composer on
305
+ * the user's behalf today, so every handover resolves `drafted`; `sent` is
306
+ * reserved for a host that can genuinely dispatch the run.
307
+ */
308
+ autoSend?: boolean;
309
+ }
310
+
311
+ export interface HandoverResult {
312
+ /** `drafted` when the user still has to press send, `sent` when it went straight through. */
313
+ status: 'drafted' | 'sent';
314
+ }
315
+
316
+ /**
317
+ * The user's cloud computer, as far as an app may see it.
318
+ *
319
+ * `exists` is false when the user has never had a sandbox provisioned. A
320
+ * `status` of anything other than `'running'` means the VM is asleep; reading
321
+ * these facts never wakes it.
322
+ */
323
+ export interface CloudComputerSandboxFacts {
324
+ exists: boolean;
325
+ status: string | null;
326
+ provider: string | null;
327
+ created_at: string | null;
328
+ updated_at: string | null;
329
+ }
330
+
331
+ /**
332
+ * Whether a CLI inside the cloud computer is signed in.
333
+ *
334
+ * `authenticated: null` means *unknown*, never *signed out*: the sandbox was
335
+ * not running, or the probe could not answer. `reason` says which
336
+ * (`'sandbox_not_running'`, `'no_sandbox'`, `'sandbox_status_unknown'`,
337
+ * `'probe_failed'`, `'not_signed_in'`).
338
+ */
339
+ export interface CloudComputerCliAuthFacts {
340
+ authenticated: boolean | null;
341
+ account: string | null;
342
+ checked_at: string | null;
343
+ reason: string | null;
344
+ }
345
+
346
+ export interface CloudComputerFacts {
347
+ /**
348
+ * False when this host cannot answer at all — no cloud computer on the user's
349
+ * plan, or the platform could not resolve the facts. Render whatever the app
350
+ * did before rather than an error.
351
+ */
352
+ available: boolean;
353
+ reason?: string | null;
354
+ sandbox: CloudComputerSandboxFacts | null;
355
+ cli_auth: { gh: CloudComputerCliAuthFacts };
356
+ }
357
+
191
358
  export interface NotisRuntime {
192
359
  app: AppDescriptor;
193
360
  route: RouteDescriptor;
@@ -195,6 +362,51 @@ export interface NotisRuntime {
195
362
  context: NotisRuntimeContext;
196
363
  ui?: NotisRuntimeUI;
197
364
 
365
+ /** Publish or clear the focused resource inside the current app view. */
366
+ publishActiveResource?(resource: ContextResource | null): void;
367
+
368
+ /** Remember a copied quote so the host can recover it across iframe paste. */
369
+ captureContextSelection?(selection: ContextSelection): void;
370
+
371
+ /**
372
+ * Subscribe to changes on an app-owned database. Returns an unsubscribe.
373
+ *
374
+ * The change notification is only a signal — it carries no rows. Consumers
375
+ * react by refetching through the normal tool path, so app scoping,
376
+ * permissions and billing are unchanged. Use the `useDatabaseSubscription`
377
+ * hook rather than calling this directly.
378
+ */
379
+ subscribeDatabase?(
380
+ slug: string,
381
+ onChange: () => void,
382
+ options?: SubscribeDatabaseOptions,
383
+ ): () => void;
384
+
385
+ /**
386
+ * Hand a piece of work to the Notis manager chat. The app cannot run an
387
+ * agent itself: it describes the job, and the manager surface owns progress,
388
+ * billing, cancellation and the transcript. Results come back to the app
389
+ * through its own databases (see `useDatabaseSubscription`).
390
+ *
391
+ * Use the `useHandover` hook rather than calling this directly. Hosts
392
+ * without a manager chat (the dev harness, the vite preview) leave it
393
+ * undefined, so keep whatever fallback the app already offers.
394
+ */
395
+ handover?(payload: HandoverPayload): Promise<HandoverResult>;
396
+
397
+ /**
398
+ * Read-only facts about the user's cloud computer. Requires
399
+ * `capabilities.cloudComputer: 'read'` in `notis.config.ts` plus the user's
400
+ * approval; resolving it never creates, resumes or commands a sandbox.
401
+ *
402
+ * Use the `useCloudComputer` hook rather than calling this directly. Hosts
403
+ * without a cloud computer (the dev harness, the vite preview) answer
404
+ * `{ available: false }`, so keep whatever fallback the app already has.
405
+ * `{ refresh: true }` bypasses the host's short answer cache — the hook's
406
+ * refresh() sends it so a just-completed sign-in becomes visible.
407
+ */
408
+ cloudComputerFacts?(options?: { refresh?: boolean }): Promise<CloudComputerFacts>;
409
+
198
410
  navigate?: (payload: { kind: string; [key: string]: unknown }) => void;
199
411
 
200
412
  registerTopBarSearch?: (
@@ -210,7 +422,11 @@ export interface NotisRuntime {
210
422
  setTopBarSearchLoading?: (loading: boolean) => void;
211
423
 
212
424
  listTools(): Promise<ToolDescriptor[]>;
213
- callTool<TResult = unknown>(name: string, args?: Record<string, unknown>): Promise<TResult>;
425
+ callTool<TResult = unknown>(
426
+ name: string,
427
+ args?: Record<string, unknown>,
428
+ options?: ToolCallOptions,
429
+ ): Promise<TResult>;
214
430
 
215
431
  request(path: string, options?: {
216
432
  method?: string;
@@ -1,5 +0,0 @@
1
- # Database Changelog
2
-
3
- ## [Initial Release] - {PR_MERGE_DATE}
4
-
5
- - First Store release.
@@ -1,44 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- /*
6
- * The portal mounts the app inside [data-notis-app-root] (display: block,
7
- * min-height: 100% from @notis/sdk/styles.css). Width 100% ensures the
8
- * two-pane layout can stretch to the full content area; height stays on
9
- * the SDK's min-height: 100% default so the page can grow with content.
10
- * The page itself uses `h-screen` to guarantee a fixed viewport height
11
- * for the two-pane divider and centered empty states.
12
- */
13
- [data-notis-app-root] {
14
- width: 100%;
15
- }
16
-
17
- /*
18
- * Dev-preview fallback tokens. Active only when the dev entrypoint sets the
19
- * data-dev-preview attribute. Production bundle runs inside the portal
20
- * shadow root where the host injects real theme tokens, so this rule is
21
- * scoped narrowly enough to never collide with portal-provided values.
22
- */
23
- [data-dev-preview] {
24
- --background: 0 0% 100%;
25
- --foreground: 0 0% 4%;
26
- --card: 0 0% 100%;
27
- --card-foreground: 0 0% 4%;
28
- --popover: 0 0% 100%;
29
- --popover-foreground: 0 0% 4%;
30
- --primary: 0 0% 9%;
31
- --primary-foreground: 0 0% 98%;
32
- --secondary: 240 5% 96%;
33
- --secondary-foreground: 0 0% 9%;
34
- --muted: 240 5% 96%;
35
- --muted-foreground: 240 4% 46%;
36
- --accent: 240 5% 96%;
37
- --accent-foreground: 0 0% 9%;
38
- --destructive: 0 84% 60%;
39
- --destructive-foreground: 0 0% 98%;
40
- --border: 240 6% 90%;
41
- --input: 240 6% 90%;
42
- --ring: 0 0% 4%;
43
- --radius: 0.5rem;
44
- }
@@ -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
- }