@notis_ai/cli 0.2.18 → 0.2.19

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 (395) hide show
  1. package/README.md +542 -146
  2. package/bin/check-runtime.js +15 -0
  3. package/bin/notis.js +2 -0
  4. package/config/notis_app_design_rules.json +320 -0
  5. package/config/portal-route-roots.json +45 -0
  6. package/dist/agent-hooks/notis-agent-hook.mjs +42325 -18273
  7. package/dist/base-skills/notis-cli/.notis-base-skill.json +1 -0
  8. package/dist/base-skills/notis-cli/SKILL.md +51 -280
  9. package/dist/base-skills/notis-cli/references/app-delivery.md +17 -0
  10. package/dist/base-skills/notis-cli/references/intelligence.md +94 -0
  11. package/dist/base-skills/notis-cli/references/native-databases.md +21 -0
  12. package/dist/base-skills/notis-cli/references/tool-examples.md +56 -0
  13. package/dist/base-skills/notis-cli/references/troubleshooting.md +67 -0
  14. package/dist/base-skills/notis-query/.notis-base-skill.json +1 -0
  15. package/dist/base-skills/notis-query/SKILL.md +35 -699
  16. package/dist/base-skills/notis-query/references/database-discovery.md +59 -0
  17. package/dist/base-skills/notis-query/references/documents.md +74 -0
  18. package/dist/base-skills/notis-query/references/query.md +76 -0
  19. package/dist/base-skills/notis-spaces/.notis-base-skill.json +1 -0
  20. package/dist/base-skills/notis-spaces/SKILL.md +218 -0
  21. package/dist/base-skills/notis-spaces/references/architecture.md +116 -0
  22. package/dist/base-skills/notis-spaces/references/context.md +81 -0
  23. package/dist/base-skills/notis-spaces/references/design.md +141 -0
  24. package/dist/base-skills/notis-spaces/references/fixtures.md +29 -0
  25. package/dist/base-skills/notis-spaces/references/memory.md +58 -0
  26. package/dist/base-skills/notis-spaces/references/reading.md +73 -0
  27. package/dist/base-skills/notis-spaces/references/release.md +120 -0
  28. package/dist/base-skills/notis-spaces/references/reports.md +77 -0
  29. package/dist/base-skills/notis-spaces/references/sdk.md +273 -0
  30. package/dist/base-skills/notis-spaces/references/store.md +118 -0
  31. package/dist/base-skills/notis-spaces/references/troubleshooting.md +28 -0
  32. package/dist/base-skills/notis-spaces/references/views.md +229 -0
  33. package/{template/packages → dist}/sdk/package.json +9 -10
  34. package/dist/sdk/src/agentContext.ts +36 -0
  35. package/dist/sdk/src/bundleModule.ts +175 -0
  36. package/dist/sdk/src/components/Dialog.tsx +103 -0
  37. package/dist/sdk/src/components/DocumentEditor.tsx +113 -0
  38. package/dist/sdk/src/components/DocumentPage.tsx +184 -0
  39. package/{template/packages → dist}/sdk/src/components/Markdown.tsx +9 -3
  40. package/{template/packages → dist}/sdk/src/components/MarkdownEditor.tsx +26 -5
  41. package/{template/packages → dist}/sdk/src/components/MultiSelectActionBar.tsx +95 -12
  42. package/{template/packages → dist}/sdk/src/components/MultiSelectCheckbox.tsx +4 -2
  43. package/dist/sdk/src/components/NotisCommentBoundary.tsx +172 -0
  44. package/{template/packages → dist}/sdk/src/components/NotisSelectionBoundary.tsx +9 -5
  45. package/dist/sdk/src/components/RecordComponents.tsx +111 -0
  46. package/dist/sdk/src/components/Skeleton.tsx +38 -0
  47. package/dist/sdk/src/config.ts +31 -0
  48. package/{template/packages → dist}/sdk/src/documents.ts +21 -6
  49. package/dist/sdk/src/hooks/useAction.ts +28 -0
  50. package/dist/sdk/src/hooks/useAgentContext.ts +23 -0
  51. package/{template/packages → dist}/sdk/src/hooks/useBackend.ts +3 -2
  52. package/dist/sdk/src/hooks/useCloudComputer.ts +94 -0
  53. package/dist/sdk/src/hooks/useCloudComputerShell.ts +114 -0
  54. package/{template/packages → dist}/sdk/src/hooks/useCollectionInteractions.ts +157 -147
  55. package/dist/sdk/src/hooks/useDatabaseSchema.ts +50 -0
  56. package/{template/packages → dist}/sdk/src/hooks/useDatabaseSubscription.ts +2 -2
  57. package/dist/sdk/src/hooks/useDocument.ts +51 -0
  58. package/{template/packages → dist}/sdk/src/hooks/useDocuments.ts +25 -59
  59. package/{template/packages → dist}/sdk/src/hooks/useHandover.ts +7 -7
  60. package/dist/sdk/src/hooks/useLongPressSelection.ts +79 -0
  61. package/dist/sdk/src/hooks/useMarqueeSelection.ts +194 -0
  62. package/{template/packages → dist}/sdk/src/hooks/useMultiSelect.ts +2 -8
  63. package/dist/sdk/src/hooks/useNativeDocumentBody.ts +50 -0
  64. package/dist/sdk/src/hooks/useNativeDocuments.ts +143 -0
  65. package/{template/packages → dist}/sdk/src/hooks/useNotis.ts +6 -1
  66. package/dist/sdk/src/hooks/useNotisNavigation.ts +70 -0
  67. package/dist/sdk/src/hooks/useQuery.ts +81 -0
  68. package/dist/sdk/src/hooks/useToolQuery.ts +12 -0
  69. package/dist/sdk/src/hooks/useTopBarSearch.ts +102 -0
  70. package/dist/sdk/src/hooks/useTopBarTitleLeaf.ts +75 -0
  71. package/{template/packages → dist}/sdk/src/hooks/useUpsertDocument.ts +1 -1
  72. package/dist/sdk/src/hooks/useViewParams.ts +195 -0
  73. package/dist/sdk/src/hooks/useViewerReads.ts +129 -0
  74. package/{template/packages → dist}/sdk/src/index.ts +64 -1
  75. package/{template/packages → dist}/sdk/src/interactions/actions.ts +14 -1
  76. package/{template/packages → dist}/sdk/src/interactions/shortcuts.tsx +129 -23
  77. package/dist/sdk/src/interactions/visibility.ts +13 -0
  78. package/{template/packages → dist}/sdk/src/interactions.ts +5 -1
  79. package/dist/sdk/src/nativeData.ts +39 -0
  80. package/{template/packages → dist}/sdk/src/provider.tsx +9 -4
  81. package/dist/sdk/src/queryCache.ts +292 -0
  82. package/dist/sdk/src/queryErrors.ts +51 -0
  83. package/dist/sdk/src/runtime.ts +675 -0
  84. package/dist/sdk/src/runtimeModules.ts +33 -0
  85. package/dist/sdk/src/space.ts +442 -0
  86. package/dist/sdk/src/standardViewParams.ts +36 -0
  87. package/{template/packages → dist}/sdk/src/styles.css +81 -16
  88. package/dist/sdk/src/tailwind.ts +66 -0
  89. package/dist/sdk/src/ui/charts/RenderChartData.tsx +25 -0
  90. package/dist/sdk/src/ui/engine/core.ts +392 -0
  91. package/dist/sdk/src/ui/engine/dom.ts +183 -0
  92. package/dist/sdk/src/ui/engine/hooks.ts +195 -0
  93. package/dist/sdk/src/ui/engine/instance.ts +63 -0
  94. package/dist/sdk/src/ui/engine/keycapContext.ts +2 -0
  95. package/dist/sdk/src/ui/engine/registry.ts +262 -0
  96. package/dist/sdk/src/ui/engine/types.ts +62 -0
  97. package/dist/sdk/src/ui/icons.tsx +91 -0
  98. package/dist/sdk/src/ui/util.ts +83 -0
  99. package/dist/sdk/src/viewPeriod.ts +26 -0
  100. package/dist/sdk/src/vite.ts +92 -0
  101. package/dist/sdk/src/words/actions.ts +295 -0
  102. package/dist/sdk/src/words/clashes.ts +158 -0
  103. package/dist/sdk/src/words/format.ts +136 -0
  104. package/dist/sdk/src/words/index.ts +13 -0
  105. package/dist/sdk/src/words/keymap.ts +72 -0
  106. package/dist/sdk/src/words/keys.ts +297 -0
  107. package/dist/sdk/src/words/shell.ts +46 -0
  108. package/dist/sdk/src/words/types.ts +65 -0
  109. package/dist/skill-sync/index.js +832 -151
  110. package/dist/skill-sync/index.js.map +4 -4
  111. package/dist/skill-sync-worker.mjs +3941 -0
  112. package/dist/space-harness/host.js +1460 -0
  113. package/dist/space-sdk/dist/chunk-ZSN57ATH.js +5 -0
  114. package/dist/space-sdk/dist/index.js +15 -0
  115. package/dist/space-sdk/dist/ui.js +18 -0
  116. package/dist/space-sdk/package.json +33 -0
  117. package/dist/space-sdk/src/agentContext.d.ts +36 -0
  118. package/dist/space-sdk/src/components/Dialog.d.ts +20 -0
  119. package/dist/space-sdk/src/components/DocumentEditor.d.ts +46 -0
  120. package/dist/space-sdk/src/components/DocumentPage.d.ts +53 -0
  121. package/dist/space-sdk/src/components/Markdown.d.ts +18 -0
  122. package/dist/space-sdk/src/components/MarkdownEditor.d.ts +11 -0
  123. package/dist/space-sdk/src/components/MultiSelectActionBar.d.ts +31 -0
  124. package/dist/space-sdk/src/components/MultiSelectCheckbox.d.ts +14 -0
  125. package/dist/space-sdk/src/components/MultiSelectDragOverlay.d.ts +8 -0
  126. package/dist/space-sdk/src/components/NotisCommentBoundary.d.ts +36 -0
  127. package/dist/space-sdk/src/components/NotisSelectionBoundary.d.ts +16 -0
  128. package/dist/space-sdk/src/components/RecordComponents.d.ts +64 -0
  129. package/dist/space-sdk/src/components/ShortcutHints.d.ts +12 -0
  130. package/dist/space-sdk/src/components/Skeleton.d.ts +23 -0
  131. package/dist/space-sdk/src/config.ts +31 -0
  132. package/dist/space-sdk/src/documents.d.ts +59 -0
  133. package/dist/space-sdk/src/hooks/useAction.d.ts +8 -0
  134. package/dist/space-sdk/src/hooks/useActiveResource.d.ts +3 -0
  135. package/dist/space-sdk/src/hooks/useAgentContext.d.ts +7 -0
  136. package/dist/space-sdk/src/hooks/useBackend.d.ts +23 -0
  137. package/dist/space-sdk/src/hooks/useCloudComputer.d.ts +45 -0
  138. package/dist/space-sdk/src/hooks/useCloudComputerShell.d.ts +49 -0
  139. package/dist/space-sdk/src/hooks/useCollectionInteractions.d.ts +118 -0
  140. package/dist/space-sdk/src/hooks/useDatabaseSchema.d.ts +14 -0
  141. package/dist/space-sdk/src/hooks/useDatabaseSubscription.d.ts +26 -0
  142. package/dist/space-sdk/src/hooks/useDocument.d.ts +22 -0
  143. package/dist/space-sdk/src/hooks/useDocuments.d.ts +31 -0
  144. package/dist/space-sdk/src/hooks/useHandover.d.ts +43 -0
  145. package/dist/space-sdk/src/hooks/useLongPressSelection.d.ts +9 -0
  146. package/dist/space-sdk/src/hooks/useMarqueeSelection.d.ts +57 -0
  147. package/dist/space-sdk/src/hooks/useMultiSelect.d.ts +51 -0
  148. package/dist/space-sdk/src/hooks/useNativeDocumentBody.d.ts +24 -0
  149. package/dist/space-sdk/src/hooks/useNativeDocuments.d.ts +55 -0
  150. package/dist/space-sdk/src/hooks/useNotis.d.ts +25 -0
  151. package/dist/space-sdk/src/hooks/useNotisNavigation.d.ts +33 -0
  152. package/dist/space-sdk/src/hooks/useQuery.d.ts +22 -0
  153. package/dist/space-sdk/src/hooks/useTool.d.ts +20 -0
  154. package/dist/space-sdk/src/hooks/useToolQuery.d.ts +3 -0
  155. package/dist/space-sdk/src/hooks/useTools.d.ts +15 -0
  156. package/dist/space-sdk/src/hooks/useTopBarSearch.d.ts +48 -0
  157. package/dist/space-sdk/src/hooks/useTopBarTitleLeaf.d.ts +24 -0
  158. package/dist/space-sdk/src/hooks/useUpsertDocument.d.ts +27 -0
  159. package/dist/space-sdk/src/hooks/useViewParams.d.ts +76 -0
  160. package/dist/space-sdk/src/hooks/useViewerReads.d.ts +38 -0
  161. package/dist/space-sdk/src/index.d.ts +98 -0
  162. package/dist/space-sdk/src/interactions/actions.d.ts +33 -0
  163. package/dist/space-sdk/src/interactions/shortcuts.d.ts +42 -0
  164. package/dist/space-sdk/src/interactions/visibility.d.ts +2 -0
  165. package/dist/space-sdk/src/nativeData.d.ts +66 -0
  166. package/dist/space-sdk/src/provider.d.ts +17 -0
  167. package/dist/space-sdk/src/queryCache.d.ts +45 -0
  168. package/dist/space-sdk/src/queryErrors.ts +51 -0
  169. package/dist/space-sdk/src/runtime.d.ts +615 -0
  170. package/dist/space-sdk/src/runtimeModules.ts +33 -0
  171. package/dist/space-sdk/src/space.ts +442 -0
  172. package/dist/space-sdk/src/standardViewParams.d.ts +15 -0
  173. package/dist/space-sdk/src/tailwind-candidates.d.ts +3418 -0
  174. package/dist/space-sdk/src/tailwind.ts +66 -0
  175. package/dist/space-sdk/src/ui/actions/ActionToast.d.ts +15 -0
  176. package/dist/space-sdk/src/ui/actions/actionWords.d.ts +16 -0
  177. package/dist/space-sdk/src/ui/actions/index.d.ts +7 -0
  178. package/dist/space-sdk/src/ui/actions/useActions.d.ts +69 -0
  179. package/dist/space-sdk/src/ui/actions/useToast.d.ts +41 -0
  180. package/dist/space-sdk/src/ui/blocks/Tabs.d.ts +139 -0
  181. package/dist/space-sdk/src/ui/blocks/blocks.d.ts +217 -0
  182. package/dist/space-sdk/src/ui/blocks/index.d.ts +4 -0
  183. package/dist/space-sdk/src/ui/board/BoardView.d.ts +36 -0
  184. package/dist/space-sdk/src/ui/board/boardModel.d.ts +46 -0
  185. package/dist/space-sdk/src/ui/board/boardWords.d.ts +9 -0
  186. package/dist/space-sdk/src/ui/board/index.d.ts +5 -0
  187. package/dist/space-sdk/src/ui/calendar/CalendarView.d.ts +49 -0
  188. package/dist/space-sdk/src/ui/calendar/DayPicker.d.ts +23 -0
  189. package/dist/space-sdk/src/ui/calendar/calendarMath.d.ts +81 -0
  190. package/dist/space-sdk/src/ui/charts/Chart.d.ts +203 -0
  191. package/dist/space-sdk/src/ui/charts/ChartTable.d.ts +37 -0
  192. package/dist/space-sdk/src/ui/charts/RenderChartData.d.ts +16 -0
  193. package/dist/space-sdk/src/ui/charts/StatRow.d.ts +59 -0
  194. package/dist/space-sdk/src/ui/charts/chartData.d.ts +84 -0
  195. package/dist/space-sdk/src/ui/comments/CommentPane.d.ts +58 -0
  196. package/dist/space-sdk/src/ui/comments/commentModel.d.ts +157 -0
  197. package/dist/space-sdk/src/ui/comments/commentWords.d.ts +60 -0
  198. package/dist/space-sdk/src/ui/comments/index.d.ts +4 -0
  199. package/dist/space-sdk/src/ui/comments/useComments.d.ts +146 -0
  200. package/dist/space-sdk/src/ui/engine/HelpSheet.d.ts +12 -0
  201. package/dist/space-sdk/src/ui/engine/KeyboardEngine.d.ts +27 -0
  202. package/dist/space-sdk/src/ui/engine/core.d.ts +73 -0
  203. package/dist/space-sdk/src/ui/engine/hooks.d.ts +64 -0
  204. package/dist/space-sdk/src/ui/engine/index.d.ts +14 -0
  205. package/dist/space-sdk/src/ui/engine/instance.d.ts +21 -0
  206. package/dist/space-sdk/src/ui/engine/keycapContext.d.ts +2 -0
  207. package/dist/space-sdk/src/ui/engine/registry.d.ts +77 -0
  208. package/dist/space-sdk/src/ui/engine/step.d.ts +11 -0
  209. package/dist/space-sdk/src/ui/engine/types.d.ts +54 -0
  210. package/dist/space-sdk/src/ui/fields/fieldWords.d.ts +56 -0
  211. package/dist/space-sdk/src/ui/fields/fields.d.ts +162 -0
  212. package/dist/space-sdk/src/ui/fields/index.d.ts +5 -0
  213. package/dist/space-sdk/src/ui/fields/useFieldDraft.d.ts +22 -0
  214. package/dist/space-sdk/src/ui/gallery/AttachmentGallery.d.ts +53 -0
  215. package/dist/space-sdk/src/ui/gallery/ImageViewer.d.ts +27 -0
  216. package/dist/space-sdk/src/ui/gallery/galleryWords.d.ts +95 -0
  217. package/dist/space-sdk/src/ui/gallery/index.d.ts +5 -0
  218. package/dist/space-sdk/src/ui/icons.d.ts +13 -0
  219. package/dist/space-sdk/src/ui/index.d.ts +54 -0
  220. package/dist/space-sdk/src/ui/keycap/Keycap.d.ts +22 -0
  221. package/dist/space-sdk/src/ui/keycap/index.d.ts +2 -0
  222. package/dist/space-sdk/src/ui/layout/Panels.d.ts +50 -0
  223. package/dist/space-sdk/src/ui/layout/chatPanelEdge.d.ts +77 -0
  224. package/dist/space-sdk/src/ui/layout/index.d.ts +5 -0
  225. package/dist/space-sdk/src/ui/layout/panelMath.d.ts +91 -0
  226. package/dist/space-sdk/src/ui/list/ListReader.d.ts +380 -0
  227. package/dist/space-sdk/src/ui/list/Row.d.ts +145 -0
  228. package/dist/space-sdk/src/ui/list/SelectionBar.d.ts +65 -0
  229. package/dist/space-sdk/src/ui/list/index.d.ts +14 -0
  230. package/dist/space-sdk/src/ui/list/rowState.d.ts +22 -0
  231. package/dist/space-sdk/src/ui/list/useListKeys.d.ts +89 -0
  232. package/dist/space-sdk/src/ui/list/useReorder.d.ts +86 -0
  233. package/dist/space-sdk/src/ui/list/useSelection.d.ts +90 -0
  234. package/dist/space-sdk/src/ui/open/OpenAsMenu.d.ts +15 -0
  235. package/dist/space-sdk/src/ui/open/index.d.ts +6 -0
  236. package/dist/space-sdk/src/ui/open/openModeStore.d.ts +39 -0
  237. package/dist/space-sdk/src/ui/open/useOpenMode.d.ts +17 -0
  238. package/dist/space-sdk/src/ui/overlay/Menu.d.ts +88 -0
  239. package/dist/space-sdk/src/ui/overlay/Popover.d.ts +28 -0
  240. package/dist/space-sdk/src/ui/overlay/Tooltip.d.ts +19 -0
  241. package/dist/space-sdk/src/ui/overlay/index.d.ts +9 -0
  242. package/dist/space-sdk/src/ui/overlay/layerRoot.d.ts +24 -0
  243. package/dist/space-sdk/src/ui/overlay/position.d.ts +31 -0
  244. package/dist/space-sdk/src/ui/period/PeriodPicker.d.ts +30 -0
  245. package/dist/space-sdk/src/ui/period/dateFormat.d.ts +50 -0
  246. package/dist/space-sdk/src/ui/period/dateWords.d.ts +88 -0
  247. package/dist/space-sdk/src/ui/period/periods.d.ts +70 -0
  248. package/dist/space-sdk/src/ui/period/usePeriod.d.ts +23 -0
  249. package/dist/space-sdk/src/ui/present/index.d.ts +3 -0
  250. package/dist/space-sdk/src/ui/present/presentWords.d.ts +27 -0
  251. package/dist/space-sdk/src/ui/present/screens.d.ts +36 -0
  252. package/dist/space-sdk/src/ui/present/useAudienceScreen.d.ts +38 -0
  253. package/dist/space-sdk/src/ui/styles.d.ts +21 -0
  254. package/dist/space-sdk/src/ui/timeline/TimelineView.d.ts +44 -0
  255. package/dist/space-sdk/src/ui/timeline/timelineMath.d.ts +123 -0
  256. package/dist/space-sdk/src/viewPeriod.d.ts +8 -0
  257. package/dist/space-sdk/src/vite.ts +92 -0
  258. package/dist/space-sdk/src/words/actions.ts +295 -0
  259. package/dist/space-sdk/src/words/clashes.ts +158 -0
  260. package/dist/space-sdk/src/words/format.ts +136 -0
  261. package/dist/space-sdk/src/words/index.ts +13 -0
  262. package/dist/space-sdk/src/words/keymap.ts +72 -0
  263. package/dist/space-sdk/src/words/keys.ts +297 -0
  264. package/dist/space-sdk/src/words/shell.ts +46 -0
  265. package/dist/space-sdk/src/words/types.ts +65 -0
  266. package/dist/view-renderer/dist/host.css +1 -0
  267. package/dist/view-renderer/dist/host.js +2374 -0
  268. package/dist/view-renderer/dist/theme.css +73 -0
  269. package/dist/view-renderer/src/dom.js +212 -0
  270. package/dist/view-renderer/src/errors.js +8 -0
  271. package/dist/view-renderer/src/host.tsx +250 -0
  272. package/dist/view-renderer/src/index.js +4 -0
  273. package/dist/view-renderer/src/png.js +213 -0
  274. package/dist/view-renderer/src/pool.js +110 -0
  275. package/dist/view-renderer/src/remote-broker.js +59 -0
  276. package/dist/view-renderer/src/renderer.js +271 -0
  277. package/package.json +21 -11
  278. package/skills/notis-cli/AGENT_INSTRUCTIONS.md +63 -12
  279. package/skills/notis-onboarding/BRIEF.md +14 -9
  280. package/skills/notis-query/cli.md +1 -1
  281. package/skills/notis-spaces/cli.md +540 -0
  282. package/src/cli.js +8 -8
  283. package/src/command-specs/agents.js +121 -8
  284. package/src/command-specs/auth.js +3 -3
  285. package/src/command-specs/diagnostics.js +97 -20
  286. package/src/command-specs/documents.js +158 -0
  287. package/src/command-specs/files.js +29 -0
  288. package/src/command-specs/handover.js +331 -79
  289. package/src/command-specs/helpers.js +50 -40
  290. package/src/command-specs/index.js +14 -5
  291. package/src/command-specs/meta.js +38 -9
  292. package/src/command-specs/onboarding.js +1 -1
  293. package/src/command-specs/profile.js +42 -1
  294. package/src/command-specs/skills.js +314 -9
  295. package/src/command-specs/smoke.js +16 -4
  296. package/src/command-specs/spaces.js +783 -0
  297. package/src/command-specs/tools.js +118 -21
  298. package/src/command-specs/version-history.js +20 -0
  299. package/src/command-specs/views.js +69 -0
  300. package/src/runtime/agent-browser.js +178 -267
  301. package/src/runtime/agent-setup.js +172 -13
  302. package/src/runtime/app-boundary-validator.js +338 -2
  303. package/src/runtime/app-data-literals.js +82 -0
  304. package/src/runtime/app-platform.js +750 -1570
  305. package/src/runtime/auth-recovery.js +17 -0
  306. package/src/runtime/base-skills.d.ts +11 -0
  307. package/src/runtime/base-skills.js +100 -3
  308. package/src/runtime/computer-identity.d.ts +30 -0
  309. package/src/runtime/computer-identity.js +151 -0
  310. package/src/runtime/config-lock.js +135 -0
  311. package/src/runtime/confined-space-build.js +74 -0
  312. package/src/runtime/confined-space-verify.js +49 -0
  313. package/src/runtime/delegated-context.js +5 -21
  314. package/src/runtime/native-record-files.js +47 -0
  315. package/src/runtime/oauth.js +342 -31
  316. package/src/runtime/profiles.js +19 -112
  317. package/src/runtime/retired-sdk-files.js +24 -0
  318. package/src/runtime/retry.js +150 -0
  319. package/src/runtime/skill-sync/cloud-client.ts +33 -8
  320. package/src/runtime/skill-sync/index.ts +443 -106
  321. package/src/runtime/skill-sync/local-scanner.ts +248 -32
  322. package/src/runtime/skill-sync/native-identity.ts +102 -0
  323. package/src/runtime/skill-sync/native-plan.ts +70 -0
  324. package/src/runtime/skill-sync/symlink-manager.ts +66 -16
  325. package/src/runtime/skill-sync/sync-plan.ts +34 -2
  326. package/src/runtime/skill-sync/types.ts +54 -0
  327. package/src/runtime/skill-sync/write-cloud-skill.ts +4 -4
  328. package/src/runtime/skill-sync-service.js +109 -0
  329. package/src/runtime/source-root.js +32 -0
  330. package/src/runtime/space-collection-scaffold.js +107 -0
  331. package/src/runtime/space-database-structures.js +229 -0
  332. package/src/runtime/space-fixture-broker.js +68 -0
  333. package/src/runtime/space-lock.js +337 -0
  334. package/src/runtime/space-platform.js +133 -0
  335. package/src/runtime/space-source.js +290 -0
  336. package/src/runtime/space-test-server.js +354 -0
  337. package/src/runtime/space-verification.js +94 -0
  338. package/src/runtime/space-verify-browser-worker.js +51 -0
  339. package/src/runtime/space-view-manifest.js +368 -0
  340. package/src/runtime/sync-skills.d.ts +5 -1
  341. package/src/runtime/sync-skills.js +11 -2
  342. package/src/runtime/tool-confirmation.js +138 -0
  343. package/src/runtime/transport.js +118 -24
  344. package/src/runtime/upsell.js +219 -0
  345. package/src/runtime/view-render.js +49 -0
  346. package/src/skill-sync-worker-entry.js +2 -0
  347. package/src/skill-sync-worker.js +114 -0
  348. package/src/space-harness-host.ts +122 -0
  349. package/template/.harness/index.html.tmpl +9 -352
  350. package/template/app/globals.css +29 -3
  351. package/template/app/layout.tsx +2 -6
  352. package/template/components/ui/badge.tsx +7 -4
  353. package/template/components/ui/button.tsx +1 -1
  354. package/template/components/ui/native-select.tsx +24 -0
  355. package/template/notis.config.ts +4 -36
  356. package/template/package-lock.json +1800 -1867
  357. package/template/package.json +16 -14
  358. package/template/postcss.config.mjs +1 -1
  359. package/template/tailwind.config.ts +1 -6
  360. package/template/tsconfig.json +1 -0
  361. package/template/vite.config.ts +2 -2
  362. package/dist/base-skills/notis-apps/SKILL.md +0 -613
  363. package/skills/notis-apps/cli.md +0 -285
  364. package/src/command-specs/apps.js +0 -3011
  365. package/src/runtime/app-changelog.js +0 -79
  366. package/src/runtime/app-dev-consumers.js +0 -154
  367. package/src/runtime/app-dev-host-lock.js +0 -80
  368. package/src/runtime/app-dev-process-identity.js +0 -111
  369. package/src/runtime/app-dev-roots.js +0 -284
  370. package/src/runtime/app-dev-server.js +0 -1140
  371. package/src/runtime/app-dev-sessions.js +0 -185
  372. package/src/runtime/app-registry-scaffolds.js +0 -367
  373. package/src/runtime/assets/store-screenshot-dark.png +0 -0
  374. package/src/runtime/cli-mode.generated.js +0 -5
  375. package/src/runtime/cli-mode.js +0 -34
  376. package/src/runtime/store-screenshot.js +0 -143
  377. package/template/CHANGELOG.md +0 -5
  378. package/template/app/page.tsx +0 -60
  379. package/template/components/ui/card.tsx +0 -56
  380. package/template/packages/sdk/src/components/DocumentEditor.tsx +0 -103
  381. package/template/packages/sdk/src/config.ts +0 -259
  382. package/template/packages/sdk/src/hooks/useCloudComputer.ts +0 -97
  383. package/template/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  384. package/template/packages/sdk/src/hooks/useDocument.ts +0 -78
  385. package/template/packages/sdk/src/hooks/useNotisNavigation.ts +0 -52
  386. package/template/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  387. package/template/packages/sdk/src/runtime.ts +0 -439
  388. package/template/packages/sdk/src/vite.ts +0 -56
  389. package/template/packages/sdk/tsconfig.json +0 -15
  390. /package/{template/packages → dist}/sdk/src/components/MultiSelectDragOverlay.tsx +0 -0
  391. /package/{template/packages → dist}/sdk/src/components/ShortcutHints.tsx +0 -0
  392. /package/{template/packages → dist}/sdk/src/hooks/useActiveResource.ts +0 -0
  393. /package/{template/packages → dist}/sdk/src/hooks/useTool.ts +0 -0
  394. /package/{template/packages → dist}/sdk/src/hooks/useTools.ts +0 -0
  395. /package/{template/packages → dist}/sdk/src/ui.ts +0 -0
@@ -1,439 +0,0 @@
1
- /**
2
- * NotisRuntime is the bridge between app code running in the browser and the
3
- * Notis platform. The portal owns the runtime and injects it through
4
- * `NotisProvider` when the app is rendered.
5
- *
6
- * App code should never reach for globals. Use the hooks from `@notis/sdk`
7
- * (useTool, useNotis, etc.) which read from the NotisProvider context.
8
- */
9
-
10
- import type { ComponentType } from 'react';
11
-
12
- // ---------------------------------------------------------------------------
13
- // Database types
14
- // ---------------------------------------------------------------------------
15
-
16
- export type DatabasePropertyType =
17
- | 'title'
18
- | 'rich_text'
19
- | 'text'
20
- | 'number'
21
- | 'checkbox'
22
- | 'date'
23
- | 'select'
24
- | 'multi_select'
25
- | 'status'
26
- | 'relation'
27
- | 'formula'
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
- }
43
-
44
- export interface DatabasePropertyOption {
45
- id?: string | null;
46
- name: string;
47
- color?: string | null;
48
- order?: number;
49
- }
50
-
51
- export interface DatabaseProperty {
52
- id?: string | null;
53
- name: string;
54
- type: DatabasePropertyType;
55
- description?: string | null;
56
- options?: DatabasePropertyOption[];
57
- }
58
-
59
- export interface DatabaseDescriptor {
60
- slug: string;
61
- title: string;
62
- description?: string | null;
63
- icon?: string | null;
64
- properties: DatabaseProperty[];
65
- }
66
-
67
- /**
68
- * A document's content is typed. `markdown` documents carry rich text as
69
- * BlockNote JSON (canonical) with a derived markdown projection; `file`
70
- * documents carry an uploaded file whose format is in `fileType`
71
- * (pdf, xlsx, pptx, ...). Future content types (canvas, ...) extend this
72
- * union without changing the component contracts.
73
- */
74
- export type DocumentContentType = 'markdown' | 'file' | 'view';
75
-
76
- export interface DocumentRecord {
77
- id: string;
78
- title: string;
79
- properties: Record<string, unknown>;
80
- url?: string | null;
81
- icon?: string | null;
82
- cover?: string | null;
83
- databaseSlug?: string;
84
- contentType?: DocumentContentType | null;
85
- fileType?: string | null;
86
- contentBlocknote?: Array<Record<string, unknown>> | null;
87
- contentMarkdown?: string | null;
88
- plainText?: string | null;
89
- viewType?: string | null;
90
- viewState?: Record<string, unknown> | null;
91
- viewRevision?: number | null;
92
- createdAt?: string | null;
93
- lastEditedTime?: string | null;
94
- }
95
-
96
- // ---------------------------------------------------------------------------
97
- // Tool types
98
- // ---------------------------------------------------------------------------
99
-
100
- export type ToolInputSchema = Record<string, unknown>;
101
-
102
- export interface ToolDescriptor {
103
- name: string;
104
- description?: string;
105
- inputSchema?: ToolInputSchema;
106
- }
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
-
116
- // ---------------------------------------------------------------------------
117
- // Route types
118
- // ---------------------------------------------------------------------------
119
-
120
- export interface RouteDescriptor {
121
- slug: string;
122
- path: string;
123
- name: string;
124
- icon?: string | null;
125
- parentSlug?: string | null;
126
- default?: boolean;
127
- resourceDeepLinks?: boolean;
128
- collection?: {
129
- database: string;
130
- titleProperty: string;
131
- parentProperty?: string | null;
132
- sidebar?: {
133
- mode: 'flat-list' | 'tree';
134
- allowCreate: boolean;
135
- } | null;
136
- } | null;
137
- }
138
-
139
- export interface CollectionItem {
140
- id: string;
141
- title: string;
142
- icon?: string | null;
143
- }
144
-
145
- export interface CollectionItemDetail extends CollectionItem {
146
- properties: Record<string, unknown>;
147
- }
148
-
149
- // ---------------------------------------------------------------------------
150
- // App descriptor
151
- // ---------------------------------------------------------------------------
152
-
153
- export interface AppDescriptor {
154
- id: string;
155
- name: string;
156
- icon?: string | null;
157
- description?: string | null;
158
- }
159
-
160
- export interface QueryFilter {
161
- filters?: Array<{
162
- property: string;
163
- operator: string;
164
- type?: string;
165
- value: unknown;
166
- }>;
167
- sorts?: Array<{
168
- property: string;
169
- direction: 'asc' | 'desc';
170
- }>;
171
- page_size?: number;
172
- }
173
-
174
- export interface NotisRuntimeContext {
175
- collectionItem?: CollectionItemDetail | null;
176
- /** App-owned resource requested through the route's `?resource=<id>` link. */
177
- resourceId?: string | null;
178
- /**
179
- * Set when the app is being rendered by the screenshot harness (`notis apps
180
- * screenshot`) for the named listing scenario. Lets apps and SDK components
181
- * hide dev-only chrome from listing images.
182
- */
183
- screenshotScenario?: string | null;
184
- }
185
-
186
- // ---------------------------------------------------------------------------
187
- // App context shared with Notis
188
- // ---------------------------------------------------------------------------
189
-
190
- export type ContextAttributeValue = string | number | boolean | null;
191
-
192
- /**
193
- * The specific thing currently in focus inside an app view. The host stamps
194
- * app/view provenance onto this value before it reaches chat, so apps only
195
- * describe their own resource rather than impersonating another surface.
196
- */
197
- export interface ContextResource {
198
- id: string;
199
- kind: string;
200
- label: string;
201
- url?: string | null;
202
- revision?: string | null;
203
- attributes?: Record<string, ContextAttributeValue>;
204
- snapshot?: {
205
- format: 'text' | 'markdown';
206
- content: string;
207
- } | null;
208
- }
209
-
210
- /** A quote copied from an app, kept separate from the user's prompt. */
211
- export interface ContextSelection {
212
- id: string;
213
- text: string;
214
- resource?: ContextResource | null;
215
- }
216
-
217
- // ---------------------------------------------------------------------------
218
- // Host-provided UI
219
- // ---------------------------------------------------------------------------
220
-
221
- /**
222
- * Props for the host-provided document editor. The host implementation
223
- * dispatches on the document's content type (markdown -> rich text editor,
224
- * file -> matching viewer/editor), so this contract stays stable as new
225
- * content types ship.
226
- */
227
- export interface NotisDocumentEditorProps {
228
- documentId: string;
229
- /** 'full' renders icon/title/cover above the content; 'body' renders content only. */
230
- variant?: 'full' | 'body';
231
- readOnly?: boolean;
232
- className?: string;
233
- onDirtyChange?: (dirty: boolean) => void;
234
- onSavingChange?: (saving: boolean) => void;
235
- }
236
-
237
- export interface NotisMarkdownEditorSavePayload {
238
- markdown: string;
239
- expectedRevision?: string | null;
240
- }
241
-
242
- export interface NotisMarkdownEditorSaveResult {
243
- revision?: string | null;
244
- }
245
-
246
- /**
247
- * Storage-neutral host markdown editor. The app owns persistence through
248
- * `onSave`; the host only supplies Notis' editing experience.
249
- */
250
- export interface NotisMarkdownEditorProps {
251
- /** Stable identity of the edited resource. Changing it starts a fresh editor. */
252
- resourceKey?: string;
253
- value: string;
254
- revision?: string | null;
255
- readOnly?: boolean;
256
- autosaveMs?: number;
257
- placeholder?: string;
258
- className?: string;
259
- onChange?: (markdown: string) => void;
260
- /** Persist an uploaded media/file block and return its durable URL. */
261
- onUploadFile?: (file: File) => Promise<string>;
262
- onSave?: (
263
- payload: NotisMarkdownEditorSavePayload,
264
- ) => Promise<NotisMarkdownEditorSaveResult | void>;
265
- onDirtyChange?: (dirty: boolean) => void;
266
- onSavingChange?: (saving: boolean) => void;
267
- }
268
-
269
- /**
270
- * Components the host (portal) injects through the runtime. Apps consume them
271
- * via the SDK wrappers (e.g. `DocumentEditor`), which fall back gracefully
272
- * when a host component is unavailable (standalone dev harness, snapshots).
273
- */
274
- export interface NotisRuntimeUI {
275
- DocumentEditor?: ComponentType<NotisDocumentEditorProps>;
276
- MarkdownEditor?: ComponentType<NotisMarkdownEditorProps>;
277
- }
278
-
279
- // ---------------------------------------------------------------------------
280
- // NotisRuntime
281
- // ---------------------------------------------------------------------------
282
-
283
- /**
284
- * Options for `NotisRuntime.subscribeDatabase`.
285
- */
286
- export interface SubscribeDatabaseOptions {
287
- /**
288
- * Called with `true` once a live change feed is attached, and with `false`
289
- * when it drops or is torn down. Hosts without a change feed (dev harness,
290
- * screenshot stub, vite preview) never call it, so `live` stays false there.
291
- */
292
- onStatusChange?: (live: boolean) => void;
293
- }
294
-
295
- /**
296
- * Work an app hands to the Notis manager chat through `NotisRuntime.handover`.
297
- */
298
- export interface HandoverPayload {
299
- /** Optional starter message. Omit it to open a context-only composer. */
300
- prompt?: string;
301
- /**
302
- * Key of a skill declared in `notis.config.ts` -> `skills[].key`. The host
303
- * rejects a key this app does not declare. Omit to hand over plain work.
304
- */
305
- skill?: string;
306
- /**
307
- * Accepted for forward compatibility. The portal never submits a composer on
308
- * the user's behalf today, so every handover resolves `drafted`; `sent` is
309
- * reserved for a host that can genuinely dispatch the run.
310
- */
311
- autoSend?: boolean;
312
- }
313
-
314
- export interface HandoverResult {
315
- /** `drafted` when the user still has to press send, `sent` when it went straight through. */
316
- status: 'drafted' | 'sent';
317
- }
318
-
319
- /**
320
- * The user's cloud computer, as far as an app may see it.
321
- *
322
- * `exists` is false when the user has never had a sandbox provisioned. A
323
- * `status` of anything other than `'running'` means the VM is asleep; reading
324
- * these facts never wakes it.
325
- */
326
- export interface CloudComputerSandboxFacts {
327
- exists: boolean;
328
- status: string | null;
329
- provider: string | null;
330
- created_at: string | null;
331
- updated_at: string | null;
332
- }
333
-
334
- /**
335
- * Whether a CLI inside the cloud computer is signed in.
336
- *
337
- * `authenticated: null` means *unknown*, never *signed out*: the sandbox was
338
- * not running, or the probe could not answer. `reason` says which
339
- * (`'sandbox_not_running'`, `'no_sandbox'`, `'sandbox_status_unknown'`,
340
- * `'probe_failed'`, `'not_signed_in'`).
341
- */
342
- export interface CloudComputerCliAuthFacts {
343
- authenticated: boolean | null;
344
- account: string | null;
345
- checked_at: string | null;
346
- reason: string | null;
347
- }
348
-
349
- export interface CloudComputerFacts {
350
- /**
351
- * False when this host cannot answer at all — no cloud computer on the user's
352
- * plan, or the platform could not resolve the facts. Render whatever the app
353
- * did before rather than an error.
354
- */
355
- available: boolean;
356
- reason?: string | null;
357
- sandbox: CloudComputerSandboxFacts | null;
358
- cli_auth: { gh: CloudComputerCliAuthFacts };
359
- }
360
-
361
- export interface NotisRuntime {
362
- app: AppDescriptor;
363
- route: RouteDescriptor;
364
- databases: DatabaseDescriptor[];
365
- context: NotisRuntimeContext;
366
- ui?: NotisRuntimeUI;
367
-
368
- /** Publish or clear the focused resource inside the current app view. */
369
- publishActiveResource?(resource: ContextResource | null): void;
370
-
371
- /** Remember a copied quote so the host can recover it across iframe paste. */
372
- captureContextSelection?(selection: ContextSelection): void;
373
-
374
- /**
375
- * Subscribe to changes on an app-owned database. Returns an unsubscribe.
376
- *
377
- * The change notification is only a signal — it carries no rows. Consumers
378
- * react by refetching through the normal tool path, so app scoping,
379
- * permissions and billing are unchanged. Use the `useDatabaseSubscription`
380
- * hook rather than calling this directly.
381
- */
382
- subscribeDatabase?(
383
- slug: string,
384
- onChange: () => void,
385
- options?: SubscribeDatabaseOptions,
386
- ): () => void;
387
-
388
- /**
389
- * Hand a piece of work to the Notis manager chat. The app cannot run an
390
- * agent itself: it describes the job, and the manager surface owns progress,
391
- * billing, cancellation and the transcript. Results come back to the app
392
- * through its own databases (see `useDatabaseSubscription`).
393
- *
394
- * Use the `useHandover` hook rather than calling this directly. Hosts
395
- * without a manager chat (the dev harness, the vite preview) leave it
396
- * undefined, so keep whatever fallback the app already offers.
397
- */
398
- handover?(payload: HandoverPayload): Promise<HandoverResult>;
399
-
400
- /**
401
- * Read-only facts about the user's cloud computer. Requires
402
- * `capabilities.cloudComputer: 'read'` in `notis.config.ts` plus the user's
403
- * approval; resolving it never creates, resumes or commands a sandbox.
404
- *
405
- * Use the `useCloudComputer` hook rather than calling this directly. Hosts
406
- * without a cloud computer (the dev harness, the vite preview) answer
407
- * `{ available: false }`, so keep whatever fallback the app already has.
408
- * `{ refresh: true }` bypasses the host's short answer cache — the hook's
409
- * refresh() sends it so a just-completed sign-in becomes visible.
410
- */
411
- cloudComputerFacts?(options?: { refresh?: boolean }): Promise<CloudComputerFacts>;
412
-
413
- navigate?: (payload: { kind: string; [key: string]: unknown }) => void;
414
-
415
- registerTopBarSearch?: (
416
- config:
417
- | {
418
- onChange: (value: string) => void;
419
- placeholder?: string;
420
- onSubmit?: () => void | Promise<void>;
421
- }
422
- | null,
423
- ) => void;
424
- setTopBarSearchValue?: (value: string) => void;
425
- setTopBarSearchLoading?: (loading: boolean) => void;
426
-
427
- listTools(): Promise<ToolDescriptor[]>;
428
- callTool<TResult = unknown>(
429
- name: string,
430
- args?: Record<string, unknown>,
431
- options?: ToolCallOptions,
432
- ): Promise<TResult>;
433
-
434
- request(path: string, options?: {
435
- method?: string;
436
- headers?: Record<string, string>;
437
- body?: unknown;
438
- }): Promise<unknown>;
439
- }
@@ -1,56 +0,0 @@
1
- /**
2
- * Vite config builder for Notis apps.
3
- *
4
- * Usage:
5
- * ```ts
6
- * // vite.config.ts
7
- * import { notisViteConfig } from '@notis/sdk/vite';
8
- * import appConfig from './notis.config';
9
- * export default notisViteConfig(appConfig);
10
- * ```
11
- *
12
- * Produces a library-mode ES module bundle with React externalized.
13
- * Output: .notis/output/bundle/app.js + app.css
14
- */
15
-
16
- import type { NotisAppConfig } from './config';
17
-
18
- export function notisViteConfig(appConfig: NotisAppConfig) {
19
- return {
20
- plugins: [
21
- // @vitejs/plugin-react is added by the consumer's vite.config.ts
22
- // or auto-detected. We provide the config shape only.
23
- ],
24
- build: {
25
- lib: {
26
- entry: '.notis/_entry.tsx',
27
- formats: ['es'] as const,
28
- fileName: () => 'app.js',
29
- },
30
- rollupOptions: {
31
- external: ['react', 'react-dom', 'react-dom/client', 'react/jsx-runtime', 'react/jsx-dev-runtime'],
32
- output: {
33
- globals: {
34
- react: 'window.React',
35
- 'react-dom': 'window.ReactDOM',
36
- 'react-dom/client': 'window.ReactDOMClient',
37
- 'react/jsx-runtime': 'window.React',
38
- },
39
- assetFileNames: 'app[extname]',
40
- inlineDynamicImports: true,
41
- },
42
- },
43
- outDir: '.notis/output/bundle',
44
- emptyOutDir: true,
45
- cssCodeSplit: false,
46
- },
47
- resolve: {
48
- alias: {
49
- '@': process.cwd(),
50
- },
51
- },
52
- define: {
53
- 'process.env.NODE_ENV': JSON.stringify('production'),
54
- },
55
- };
56
- }
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "bundler",
6
- "jsx": "react-jsx",
7
- "strict": true,
8
- "esModuleInterop": true,
9
- "skipLibCheck": true,
10
- "declaration": true,
11
- "outDir": "dist",
12
- "rootDir": "src"
13
- },
14
- "include": ["src"]
15
- }
File without changes