@notis_ai/cli 0.2.0-beta.99.1 → 0.2.0-nightly.1793111976903.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 (465) hide show
  1. package/README.md +753 -100
  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 +44565 -0
  7. package/dist/base-skills/notis-cli/.notis-base-skill.json +1 -0
  8. package/dist/base-skills/notis-cli/SKILL.md +159 -0
  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 +41 -0
  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 +77 -0
  19. package/dist/base-skills/notis-spaces/.notis-base-skill.json +1 -0
  20. package/dist/base-skills/notis-spaces/SKILL.md +222 -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 +149 -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 +79 -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 +276 -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 +227 -0
  33. package/dist/sdk/package.json +36 -0
  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/dist/sdk/src/components/Markdown.tsx +66 -0
  40. package/dist/sdk/src/components/MarkdownEditor.tsx +142 -0
  41. package/dist/sdk/src/components/MultiSelectActionBar.tsx +296 -0
  42. package/{template/packages → dist}/sdk/src/components/MultiSelectCheckbox.tsx +9 -3
  43. package/{template/packages → dist}/sdk/src/components/MultiSelectDragOverlay.tsx +1 -1
  44. package/dist/sdk/src/components/NotisCommentBoundary.tsx +172 -0
  45. package/dist/sdk/src/components/NotisSelectionBoundary.tsx +59 -0
  46. package/dist/sdk/src/components/RecordComponents.tsx +111 -0
  47. package/dist/sdk/src/components/ShortcutHints.tsx +56 -0
  48. package/dist/sdk/src/components/Skeleton.tsx +132 -0
  49. package/dist/sdk/src/config.ts +31 -0
  50. package/dist/sdk/src/documents.ts +271 -0
  51. package/dist/sdk/src/hooks/useAction.ts +28 -0
  52. package/dist/sdk/src/hooks/useActiveResource.ts +19 -0
  53. package/dist/sdk/src/hooks/useAgentContext.ts +23 -0
  54. package/{template/packages → dist}/sdk/src/hooks/useBackend.ts +3 -2
  55. package/dist/sdk/src/hooks/useCloudComputer.ts +94 -0
  56. package/dist/sdk/src/hooks/useCloudComputerShell.ts +114 -0
  57. package/dist/sdk/src/hooks/useCollectionInteractions.ts +749 -0
  58. package/dist/sdk/src/hooks/useDatabaseSchema.ts +50 -0
  59. package/dist/sdk/src/hooks/useDatabaseSubscription.ts +76 -0
  60. package/dist/sdk/src/hooks/useDocument.ts +51 -0
  61. package/dist/sdk/src/hooks/useDocuments.ts +87 -0
  62. package/dist/sdk/src/hooks/useHandover.ts +78 -0
  63. package/dist/sdk/src/hooks/useLongPressSelection.ts +79 -0
  64. package/dist/sdk/src/hooks/useMarqueeSelection.ts +194 -0
  65. package/dist/sdk/src/hooks/useMultiSelect.ts +95 -0
  66. package/dist/sdk/src/hooks/useNativeDocumentBody.ts +50 -0
  67. package/dist/sdk/src/hooks/useNativeDocuments.ts +143 -0
  68. package/{template/packages → dist}/sdk/src/hooks/useNotis.ts +9 -1
  69. package/dist/sdk/src/hooks/useNotisNavigation.ts +70 -0
  70. package/dist/sdk/src/hooks/useQuery.ts +81 -0
  71. package/{template/packages → dist}/sdk/src/hooks/useTool.ts +5 -4
  72. package/dist/sdk/src/hooks/useToolQuery.ts +12 -0
  73. package/dist/sdk/src/hooks/useTopBarSearch.ts +102 -0
  74. package/dist/sdk/src/hooks/useTopBarTitleLeaf.ts +75 -0
  75. package/dist/sdk/src/hooks/useUpsertDocument.ts +95 -0
  76. package/dist/sdk/src/hooks/useViewParams.ts +195 -0
  77. package/dist/sdk/src/hooks/useViewerReads.ts +129 -0
  78. package/dist/sdk/src/index.ts +210 -0
  79. package/dist/sdk/src/interactions/actions.ts +59 -0
  80. package/dist/sdk/src/interactions/shortcuts.tsx +740 -0
  81. package/dist/sdk/src/interactions/visibility.ts +13 -0
  82. package/dist/sdk/src/interactions.ts +47 -0
  83. package/dist/sdk/src/nativeData.ts +41 -0
  84. package/{template/packages → dist}/sdk/src/provider.tsx +10 -4
  85. package/dist/sdk/src/queryCache.ts +292 -0
  86. package/dist/sdk/src/queryErrors.ts +51 -0
  87. package/dist/sdk/src/runtime.ts +678 -0
  88. package/dist/sdk/src/runtimeModules.ts +33 -0
  89. package/dist/sdk/src/skeleton.ts +103 -0
  90. package/dist/sdk/src/space.ts +443 -0
  91. package/dist/sdk/src/standardViewParams.ts +36 -0
  92. package/dist/sdk/src/styles.css +251 -0
  93. package/dist/sdk/src/tailwind.ts +66 -0
  94. package/dist/sdk/src/ui/charts/RenderChartData.tsx +25 -0
  95. package/dist/sdk/src/ui/engine/core.ts +398 -0
  96. package/dist/sdk/src/ui/engine/dom.ts +183 -0
  97. package/dist/sdk/src/ui/engine/hooks.ts +195 -0
  98. package/dist/sdk/src/ui/engine/instance.ts +63 -0
  99. package/dist/sdk/src/ui/engine/keycapContext.ts +2 -0
  100. package/dist/sdk/src/ui/engine/registry.ts +262 -0
  101. package/dist/sdk/src/ui/engine/step.ts +54 -0
  102. package/dist/sdk/src/ui/engine/types.ts +62 -0
  103. package/dist/sdk/src/ui/icons.tsx +91 -0
  104. package/dist/sdk/src/ui/util.ts +83 -0
  105. package/dist/sdk/src/viewPeriod.ts +26 -0
  106. package/dist/sdk/src/vite.ts +92 -0
  107. package/dist/sdk/src/words/actions.ts +295 -0
  108. package/dist/sdk/src/words/clashes.ts +158 -0
  109. package/dist/sdk/src/words/format.ts +136 -0
  110. package/dist/sdk/src/words/index.ts +13 -0
  111. package/dist/sdk/src/words/keymap.ts +72 -0
  112. package/dist/sdk/src/words/keys.ts +297 -0
  113. package/dist/sdk/src/words/shell.ts +46 -0
  114. package/dist/sdk/src/words/types.ts +65 -0
  115. package/dist/skill-sync/index.js +2209 -0
  116. package/dist/skill-sync/index.js.map +7 -0
  117. package/dist/skill-sync-worker.mjs +3935 -0
  118. package/dist/space-harness/host.js +1498 -0
  119. package/dist/space-sdk/dist/chunk-24AUBDKN.js +5 -0
  120. package/dist/space-sdk/dist/index.js +20 -0
  121. package/dist/space-sdk/dist/ui.js +18 -0
  122. package/dist/space-sdk/package.json +33 -0
  123. package/dist/space-sdk/src/agentContext.d.ts +36 -0
  124. package/dist/space-sdk/src/components/Dialog.d.ts +20 -0
  125. package/dist/space-sdk/src/components/DocumentEditor.d.ts +46 -0
  126. package/dist/space-sdk/src/components/DocumentPage.d.ts +53 -0
  127. package/dist/space-sdk/src/components/Markdown.d.ts +18 -0
  128. package/dist/space-sdk/src/components/MarkdownEditor.d.ts +11 -0
  129. package/dist/space-sdk/src/components/MultiSelectActionBar.d.ts +35 -0
  130. package/dist/space-sdk/src/components/MultiSelectCheckbox.d.ts +14 -0
  131. package/dist/space-sdk/src/components/MultiSelectDragOverlay.d.ts +8 -0
  132. package/dist/space-sdk/src/components/NotisCommentBoundary.d.ts +36 -0
  133. package/dist/space-sdk/src/components/NotisSelectionBoundary.d.ts +16 -0
  134. package/dist/space-sdk/src/components/RecordComponents.d.ts +64 -0
  135. package/dist/space-sdk/src/components/ShortcutHints.d.ts +12 -0
  136. package/dist/space-sdk/src/components/Skeleton.d.ts +28 -0
  137. package/dist/space-sdk/src/config.ts +31 -0
  138. package/dist/space-sdk/src/documents.d.ts +59 -0
  139. package/dist/space-sdk/src/hooks/useAction.d.ts +8 -0
  140. package/dist/space-sdk/src/hooks/useActiveResource.d.ts +3 -0
  141. package/dist/space-sdk/src/hooks/useAgentContext.d.ts +7 -0
  142. package/dist/space-sdk/src/hooks/useBackend.d.ts +23 -0
  143. package/dist/space-sdk/src/hooks/useCloudComputer.d.ts +45 -0
  144. package/dist/space-sdk/src/hooks/useCloudComputerShell.d.ts +49 -0
  145. package/dist/space-sdk/src/hooks/useCollectionInteractions.d.ts +124 -0
  146. package/dist/space-sdk/src/hooks/useDatabaseSchema.d.ts +14 -0
  147. package/dist/space-sdk/src/hooks/useDatabaseSubscription.d.ts +26 -0
  148. package/dist/space-sdk/src/hooks/useDocument.d.ts +22 -0
  149. package/dist/space-sdk/src/hooks/useDocuments.d.ts +31 -0
  150. package/dist/space-sdk/src/hooks/useHandover.d.ts +43 -0
  151. package/dist/space-sdk/src/hooks/useLongPressSelection.d.ts +9 -0
  152. package/dist/space-sdk/src/hooks/useMarqueeSelection.d.ts +57 -0
  153. package/dist/space-sdk/src/hooks/useMultiSelect.d.ts +51 -0
  154. package/dist/space-sdk/src/hooks/useNativeDocumentBody.d.ts +24 -0
  155. package/dist/space-sdk/src/hooks/useNativeDocuments.d.ts +55 -0
  156. package/dist/space-sdk/src/hooks/useNotis.d.ts +25 -0
  157. package/dist/space-sdk/src/hooks/useNotisNavigation.d.ts +33 -0
  158. package/dist/space-sdk/src/hooks/useQuery.d.ts +22 -0
  159. package/dist/space-sdk/src/hooks/useTool.d.ts +20 -0
  160. package/dist/space-sdk/src/hooks/useToolQuery.d.ts +3 -0
  161. package/dist/space-sdk/src/hooks/useTools.d.ts +15 -0
  162. package/dist/space-sdk/src/hooks/useTopBarSearch.d.ts +48 -0
  163. package/dist/space-sdk/src/hooks/useTopBarTitleLeaf.d.ts +24 -0
  164. package/dist/space-sdk/src/hooks/useUpsertDocument.d.ts +27 -0
  165. package/dist/space-sdk/src/hooks/useViewParams.d.ts +76 -0
  166. package/dist/space-sdk/src/hooks/useViewerReads.d.ts +38 -0
  167. package/dist/space-sdk/src/index.d.ts +100 -0
  168. package/dist/space-sdk/src/interactions/actions.d.ts +33 -0
  169. package/dist/space-sdk/src/interactions/shortcuts.d.ts +42 -0
  170. package/dist/space-sdk/src/interactions/visibility.d.ts +2 -0
  171. package/dist/space-sdk/src/nativeData.d.ts +72 -0
  172. package/dist/space-sdk/src/provider.d.ts +17 -0
  173. package/dist/space-sdk/src/queryCache.d.ts +45 -0
  174. package/dist/space-sdk/src/queryErrors.ts +51 -0
  175. package/dist/space-sdk/src/runtime.d.ts +618 -0
  176. package/dist/space-sdk/src/runtimeModules.ts +33 -0
  177. package/dist/space-sdk/src/skeleton.d.ts +42 -0
  178. package/dist/space-sdk/src/space.ts +443 -0
  179. package/dist/space-sdk/src/standardViewParams.d.ts +15 -0
  180. package/dist/space-sdk/src/tailwind-candidates.d.ts +3540 -0
  181. package/dist/space-sdk/src/tailwind.ts +66 -0
  182. package/dist/space-sdk/src/ui/actions/ActionToast.d.ts +15 -0
  183. package/dist/space-sdk/src/ui/actions/actionWords.d.ts +16 -0
  184. package/dist/space-sdk/src/ui/actions/index.d.ts +7 -0
  185. package/dist/space-sdk/src/ui/actions/useActions.d.ts +69 -0
  186. package/dist/space-sdk/src/ui/actions/useToast.d.ts +41 -0
  187. package/dist/space-sdk/src/ui/blocks/Tabs.d.ts +139 -0
  188. package/dist/space-sdk/src/ui/blocks/blocks.d.ts +217 -0
  189. package/dist/space-sdk/src/ui/blocks/index.d.ts +4 -0
  190. package/dist/space-sdk/src/ui/board/BoardView.d.ts +36 -0
  191. package/dist/space-sdk/src/ui/board/boardModel.d.ts +46 -0
  192. package/dist/space-sdk/src/ui/board/boardWords.d.ts +9 -0
  193. package/dist/space-sdk/src/ui/board/index.d.ts +5 -0
  194. package/dist/space-sdk/src/ui/calendar/CalendarView.d.ts +49 -0
  195. package/dist/space-sdk/src/ui/calendar/DayPicker.d.ts +23 -0
  196. package/dist/space-sdk/src/ui/calendar/calendarMath.d.ts +81 -0
  197. package/dist/space-sdk/src/ui/charts/Chart.d.ts +203 -0
  198. package/dist/space-sdk/src/ui/charts/ChartTable.d.ts +37 -0
  199. package/dist/space-sdk/src/ui/charts/RenderChartData.d.ts +16 -0
  200. package/dist/space-sdk/src/ui/charts/StatRow.d.ts +59 -0
  201. package/dist/space-sdk/src/ui/charts/chartData.d.ts +84 -0
  202. package/dist/space-sdk/src/ui/comments/CommentPane.d.ts +58 -0
  203. package/dist/space-sdk/src/ui/comments/commentModel.d.ts +184 -0
  204. package/dist/space-sdk/src/ui/comments/commentWords.d.ts +62 -0
  205. package/dist/space-sdk/src/ui/comments/index.d.ts +4 -0
  206. package/dist/space-sdk/src/ui/comments/useComments.d.ts +146 -0
  207. package/dist/space-sdk/src/ui/engine/HelpSheet.d.ts +12 -0
  208. package/dist/space-sdk/src/ui/engine/KeyboardEngine.d.ts +27 -0
  209. package/dist/space-sdk/src/ui/engine/core.d.ts +74 -0
  210. package/dist/space-sdk/src/ui/engine/hooks.d.ts +64 -0
  211. package/dist/space-sdk/src/ui/engine/index.d.ts +14 -0
  212. package/dist/space-sdk/src/ui/engine/instance.d.ts +21 -0
  213. package/dist/space-sdk/src/ui/engine/keycapContext.d.ts +2 -0
  214. package/dist/space-sdk/src/ui/engine/registry.d.ts +77 -0
  215. package/dist/space-sdk/src/ui/engine/step.d.ts +20 -0
  216. package/dist/space-sdk/src/ui/engine/types.d.ts +54 -0
  217. package/dist/space-sdk/src/ui/fields/fieldWords.d.ts +56 -0
  218. package/dist/space-sdk/src/ui/fields/fields.d.ts +162 -0
  219. package/dist/space-sdk/src/ui/fields/index.d.ts +5 -0
  220. package/dist/space-sdk/src/ui/fields/useFieldDraft.d.ts +22 -0
  221. package/dist/space-sdk/src/ui/gallery/AttachmentGallery.d.ts +53 -0
  222. package/dist/space-sdk/src/ui/gallery/ImageViewer.d.ts +27 -0
  223. package/dist/space-sdk/src/ui/gallery/galleryWords.d.ts +95 -0
  224. package/dist/space-sdk/src/ui/gallery/index.d.ts +5 -0
  225. package/dist/space-sdk/src/ui/icons.d.ts +13 -0
  226. package/dist/space-sdk/src/ui/index.d.ts +54 -0
  227. package/dist/space-sdk/src/ui/keycap/Keycap.d.ts +22 -0
  228. package/dist/space-sdk/src/ui/keycap/index.d.ts +2 -0
  229. package/dist/space-sdk/src/ui/layout/Panels.d.ts +50 -0
  230. package/dist/space-sdk/src/ui/layout/SidePane.d.ts +42 -0
  231. package/dist/space-sdk/src/ui/layout/chatPanelEdge.d.ts +77 -0
  232. package/dist/space-sdk/src/ui/layout/index.d.ts +6 -0
  233. package/dist/space-sdk/src/ui/layout/panelMath.d.ts +91 -0
  234. package/dist/space-sdk/src/ui/list/ListReader.d.ts +384 -0
  235. package/dist/space-sdk/src/ui/list/Row.d.ts +145 -0
  236. package/dist/space-sdk/src/ui/list/SelectionBar.d.ts +65 -0
  237. package/dist/space-sdk/src/ui/list/index.d.ts +14 -0
  238. package/dist/space-sdk/src/ui/list/rowState.d.ts +22 -0
  239. package/dist/space-sdk/src/ui/list/useListKeys.d.ts +93 -0
  240. package/dist/space-sdk/src/ui/list/useReorder.d.ts +86 -0
  241. package/dist/space-sdk/src/ui/list/useSelection.d.ts +90 -0
  242. package/dist/space-sdk/src/ui/open/OpenAsMenu.d.ts +15 -0
  243. package/dist/space-sdk/src/ui/open/index.d.ts +6 -0
  244. package/dist/space-sdk/src/ui/open/openModeStore.d.ts +39 -0
  245. package/dist/space-sdk/src/ui/open/useOpenMode.d.ts +17 -0
  246. package/dist/space-sdk/src/ui/overlay/Menu.d.ts +88 -0
  247. package/dist/space-sdk/src/ui/overlay/Popover.d.ts +28 -0
  248. package/dist/space-sdk/src/ui/overlay/Tooltip.d.ts +19 -0
  249. package/dist/space-sdk/src/ui/overlay/index.d.ts +9 -0
  250. package/dist/space-sdk/src/ui/overlay/layerRoot.d.ts +24 -0
  251. package/dist/space-sdk/src/ui/overlay/position.d.ts +31 -0
  252. package/dist/space-sdk/src/ui/period/PeriodPicker.d.ts +30 -0
  253. package/dist/space-sdk/src/ui/period/dateFormat.d.ts +50 -0
  254. package/dist/space-sdk/src/ui/period/dateWords.d.ts +88 -0
  255. package/dist/space-sdk/src/ui/period/periods.d.ts +70 -0
  256. package/dist/space-sdk/src/ui/period/usePeriod.d.ts +23 -0
  257. package/dist/space-sdk/src/ui/present/index.d.ts +3 -0
  258. package/dist/space-sdk/src/ui/present/presentWords.d.ts +27 -0
  259. package/dist/space-sdk/src/ui/present/screens.d.ts +36 -0
  260. package/dist/space-sdk/src/ui/present/useAudienceScreen.d.ts +38 -0
  261. package/dist/space-sdk/src/ui/styles.d.ts +21 -0
  262. package/dist/space-sdk/src/ui/timeline/TimelineView.d.ts +44 -0
  263. package/dist/space-sdk/src/ui/timeline/timelineMath.d.ts +123 -0
  264. package/dist/space-sdk/src/viewPeriod.d.ts +8 -0
  265. package/dist/space-sdk/src/vite.ts +92 -0
  266. package/dist/space-sdk/src/words/actions.ts +295 -0
  267. package/dist/space-sdk/src/words/clashes.ts +158 -0
  268. package/dist/space-sdk/src/words/format.ts +136 -0
  269. package/dist/space-sdk/src/words/index.ts +13 -0
  270. package/dist/space-sdk/src/words/keymap.ts +72 -0
  271. package/dist/space-sdk/src/words/keys.ts +297 -0
  272. package/dist/space-sdk/src/words/shell.ts +46 -0
  273. package/dist/space-sdk/src/words/types.ts +65 -0
  274. package/dist/view-renderer/dist/host.css +1 -0
  275. package/dist/view-renderer/dist/host.js +2412 -0
  276. package/dist/view-renderer/dist/theme.css +73 -0
  277. package/dist/view-renderer/src/dom.js +212 -0
  278. package/dist/view-renderer/src/errors.js +8 -0
  279. package/dist/view-renderer/src/host.tsx +250 -0
  280. package/dist/view-renderer/src/index.js +7 -0
  281. package/dist/view-renderer/src/png.js +213 -0
  282. package/dist/view-renderer/src/pool.js +110 -0
  283. package/dist/view-renderer/src/remote-broker.js +59 -0
  284. package/dist/view-renderer/src/renderer.js +348 -0
  285. package/dist/view-renderer/src/skeleton.js +441 -0
  286. package/package.json +22 -8
  287. package/skills/notis-cli/AGENT_INSTRUCTIONS.md +94 -0
  288. package/skills/notis-onboarding/BRIEF.md +133 -0
  289. package/skills/notis-query/cli.md +2 -2
  290. package/skills/notis-spaces/cli.md +540 -0
  291. package/src/agent-hook-entry.js +5 -0
  292. package/src/cli.js +262 -24
  293. package/src/command-specs/agents.js +505 -0
  294. package/src/command-specs/auth.js +160 -0
  295. package/src/command-specs/diagnostics.js +756 -0
  296. package/src/command-specs/documents.js +158 -0
  297. package/src/command-specs/files.js +29 -0
  298. package/src/command-specs/handover.js +626 -0
  299. package/src/command-specs/helpers.js +61 -42
  300. package/src/command-specs/index.js +34 -3
  301. package/src/command-specs/meta.js +170 -16
  302. package/src/command-specs/onboarding.js +304 -0
  303. package/src/command-specs/profile.js +399 -0
  304. package/src/command-specs/skills.js +361 -0
  305. package/src/command-specs/smoke.js +398 -0
  306. package/src/command-specs/spaces.js +843 -0
  307. package/src/command-specs/tools.js +370 -60
  308. package/src/command-specs/version-history.js +20 -0
  309. package/src/command-specs/views.js +69 -0
  310. package/src/runtime/agent-browser.js +186 -92
  311. package/src/runtime/agent-memory-state.js +126 -0
  312. package/src/runtime/agent-setup.js +542 -0
  313. package/src/runtime/app-boundary-validator.js +338 -2
  314. package/src/runtime/app-data-literals.js +82 -0
  315. package/src/runtime/app-platform.js +1711 -916
  316. package/src/runtime/auth-recovery.js +127 -0
  317. package/src/runtime/base-skills.d.ts +31 -0
  318. package/src/runtime/base-skills.js +264 -0
  319. package/src/runtime/channel.js +173 -0
  320. package/src/runtime/computer-identity.d.ts +30 -0
  321. package/src/runtime/computer-identity.js +151 -0
  322. package/src/runtime/config-lock.js +135 -0
  323. package/src/runtime/confined-space-build.js +74 -0
  324. package/src/runtime/confined-space-verify.js +49 -0
  325. package/src/runtime/delegated-context.js +52 -0
  326. package/src/runtime/errors.js +1 -0
  327. package/src/runtime/git.js +233 -0
  328. package/src/runtime/login-listener.js +15 -0
  329. package/src/runtime/native-record-files.js +47 -0
  330. package/src/runtime/oauth.js +2937 -0
  331. package/src/runtime/output.js +35 -3
  332. package/src/runtime/ports.js +16 -0
  333. package/src/runtime/profiles.js +765 -83
  334. package/src/runtime/release-channel.js +184 -0
  335. package/src/runtime/retired-sdk-files.js +24 -0
  336. package/src/runtime/retry.js +150 -0
  337. package/src/runtime/skill-sync/cloud-client.ts +121 -0
  338. package/src/runtime/skill-sync/index.ts +981 -0
  339. package/src/runtime/skill-sync/local-scanner.ts +1262 -0
  340. package/src/runtime/skill-sync/native-identity.ts +102 -0
  341. package/src/runtime/skill-sync/native-plan.ts +70 -0
  342. package/src/runtime/skill-sync/symlink-manager.ts +433 -0
  343. package/src/runtime/skill-sync/sync-plan.ts +54 -0
  344. package/src/runtime/skill-sync/types.ts +157 -0
  345. package/src/runtime/skill-sync/write-cloud-skill.ts +50 -0
  346. package/src/runtime/skill-sync-service.js +112 -0
  347. package/src/runtime/source-root.js +32 -0
  348. package/src/runtime/space-collection-scaffold.js +108 -0
  349. package/src/runtime/space-database-structures.js +229 -0
  350. package/src/runtime/space-fixture-broker.js +68 -0
  351. package/src/runtime/space-lock.js +334 -0
  352. package/src/runtime/space-platform.js +142 -0
  353. package/src/runtime/space-source.js +290 -0
  354. package/src/runtime/space-test-server.js +354 -0
  355. package/src/runtime/space-verification.js +180 -0
  356. package/src/runtime/space-verify-browser-worker.js +51 -0
  357. package/src/runtime/space-view-manifest.js +368 -0
  358. package/src/runtime/sync-skills.d.ts +41 -0
  359. package/src/runtime/sync-skills.js +240 -0
  360. package/src/runtime/telemetry.js +92 -0
  361. package/src/runtime/tool-confirmation.js +138 -0
  362. package/src/runtime/transport.js +273 -42
  363. package/src/runtime/upsell.js +220 -0
  364. package/src/runtime/view-render.js +49 -0
  365. package/src/skill-sync-worker-entry.js +2 -0
  366. package/src/skill-sync-worker.js +114 -0
  367. package/src/space-harness-host.ts +122 -0
  368. package/template/.harness/index.html.tmpl +78 -202
  369. package/template/app/globals.css +29 -3
  370. package/template/app/layout.tsx +2 -2
  371. package/template/components/ui/badge.tsx +7 -4
  372. package/template/components/ui/button.tsx +1 -1
  373. package/template/components/ui/native-select.tsx +24 -0
  374. package/template/notis.config.ts +4 -36
  375. package/template/package-lock.json +4070 -0
  376. package/template/package.json +16 -13
  377. package/template/postcss.config.mjs +1 -1
  378. package/template/tailwind.config.ts +1 -6
  379. package/template/tsconfig.json +1 -0
  380. package/template/vite.config.ts +2 -2
  381. package/dist/scaffolds/notis-database/app/globals.css +0 -44
  382. package/dist/scaffolds/notis-database/app/layout.tsx +0 -6
  383. package/dist/scaffolds/notis-database/app/page.tsx +0 -1091
  384. package/dist/scaffolds/notis-database/components/ui/badge.tsx +0 -28
  385. package/dist/scaffolds/notis-database/components/ui/button.tsx +0 -53
  386. package/dist/scaffolds/notis-database/components/ui/card.tsx +0 -56
  387. package/dist/scaffolds/notis-database/components/ui/table.tsx +0 -120
  388. package/dist/scaffolds/notis-database/components.json +0 -20
  389. package/dist/scaffolds/notis-database/index.html +0 -12
  390. package/dist/scaffolds/notis-database/lib/types.ts +0 -134
  391. package/dist/scaffolds/notis-database/lib/utils.ts +0 -6
  392. package/dist/scaffolds/notis-database/metadata/screenshot-1.png +0 -0
  393. package/dist/scaffolds/notis-database/notis.config.ts +0 -27
  394. package/dist/scaffolds/notis-database/package.json +0 -31
  395. package/dist/scaffolds/notis-database/postcss.config.mjs +0 -8
  396. package/dist/scaffolds/notis-database/src/dev-main.tsx +0 -23
  397. package/dist/scaffolds/notis-database/src/mock-runtime.ts +0 -557
  398. package/dist/scaffolds/notis-database/tailwind.config.ts +0 -59
  399. package/dist/scaffolds/notis-database/tsconfig.json +0 -23
  400. package/dist/scaffolds/notis-database/vite.config.ts +0 -22
  401. package/dist/scaffolds/notis-notes/app/globals.css +0 -3
  402. package/dist/scaffolds/notis-notes/app/layout.tsx +0 -6
  403. package/dist/scaffolds/notis-notes/app/page.tsx +0 -2306
  404. package/dist/scaffolds/notis-notes/components/ui/badge.tsx +0 -28
  405. package/dist/scaffolds/notis-notes/components/ui/button.tsx +0 -53
  406. package/dist/scaffolds/notis-notes/components/ui/card.tsx +0 -56
  407. package/dist/scaffolds/notis-notes/components.json +0 -20
  408. package/dist/scaffolds/notis-notes/lib/utils.ts +0 -6
  409. package/dist/scaffolds/notis-notes/metadata/screenshot-1.png +0 -0
  410. package/dist/scaffolds/notis-notes/notis.config.ts +0 -36
  411. package/dist/scaffolds/notis-notes/package.json +0 -31
  412. package/dist/scaffolds/notis-notes/postcss.config.mjs +0 -8
  413. package/dist/scaffolds/notis-notes/tailwind.config.ts +0 -58
  414. package/dist/scaffolds/notis-notes/tsconfig.json +0 -23
  415. package/dist/scaffolds/notis-notes/vite.config.ts +0 -10
  416. package/dist/scaffolds/notis-random/README.md +0 -33
  417. package/dist/scaffolds/notis-random/app/globals.css +0 -11
  418. package/dist/scaffolds/notis-random/app/history/page.tsx +0 -66
  419. package/dist/scaffolds/notis-random/app/layout.tsx +0 -7
  420. package/dist/scaffolds/notis-random/app/page.tsx +0 -222
  421. package/dist/scaffolds/notis-random/index.html +0 -12
  422. package/dist/scaffolds/notis-random/lib/notis-tools.ts +0 -109
  423. package/dist/scaffolds/notis-random/lib/rng.ts +0 -42
  424. package/dist/scaffolds/notis-random/lib/roll-record.ts +0 -102
  425. package/dist/scaffolds/notis-random/lib/utils.ts +0 -25
  426. package/dist/scaffolds/notis-random/metadata/screenshot-1.png +0 -0
  427. package/dist/scaffolds/notis-random/metadata/screenshot-2.png +0 -0
  428. package/dist/scaffolds/notis-random/notis.config.ts +0 -43
  429. package/dist/scaffolds/notis-random/package.json +0 -32
  430. package/dist/scaffolds/notis-random/postcss.config.mjs +0 -6
  431. package/dist/scaffolds/notis-random/src/dev-main.tsx +0 -70
  432. package/dist/scaffolds/notis-random/src/mock-runtime.ts +0 -128
  433. package/dist/scaffolds/notis-random/tailwind.config.ts +0 -43
  434. package/dist/scaffolds/notis-random/tsconfig.json +0 -23
  435. package/dist/scaffolds/notis-random/vite.config.ts +0 -11
  436. package/dist/scaffolds.json +0 -36
  437. package/skills/notis-apps/SKILL.md +0 -182
  438. package/skills/notis-apps/cli.md +0 -228
  439. package/skills/notis-cli/SKILL.md +0 -269
  440. package/src/command-specs/apps.js +0 -1668
  441. package/src/runtime/app-dev-server.js +0 -695
  442. package/src/runtime/app-dev-sessions.js +0 -153
  443. package/src/runtime/cli-mode.generated.js +0 -4
  444. package/src/runtime/cli-mode.js +0 -29
  445. package/src/runtime/desktop-auth.js +0 -93
  446. package/template/app/page.tsx +0 -90
  447. package/template/components/ui/card.tsx +0 -56
  448. package/template/metadata/screenshot-1.png +0 -0
  449. package/template/metadata/screenshot-2.png +0 -0
  450. package/template/metadata/screenshot-3.png +0 -0
  451. package/template/packages/sdk/package.json +0 -32
  452. package/template/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -273
  453. package/template/packages/sdk/src/config.ts +0 -71
  454. package/template/packages/sdk/src/hooks/useDatabase.ts +0 -76
  455. package/template/packages/sdk/src/hooks/useMultiSelect.ts +0 -503
  456. package/template/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  457. package/template/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  458. package/template/packages/sdk/src/hooks/useUpsertDocument.ts +0 -50
  459. package/template/packages/sdk/src/index.ts +0 -54
  460. package/template/packages/sdk/src/runtime.ts +0 -161
  461. package/template/packages/sdk/src/styles.css +0 -38
  462. package/template/packages/sdk/src/vite.ts +0 -56
  463. package/template/packages/sdk/tsconfig.json +0 -15
  464. /package/{template/packages → dist}/sdk/src/hooks/useTools.ts +0 -0
  465. /package/{template/packages → dist}/sdk/src/ui.ts +0 -0
package/README.md CHANGED
@@ -1,10 +1,14 @@
1
1
  # @notis_ai/cli
2
2
 
3
- Agent-first Notis CLI for apps and generic tool execution.
3
+ Agent-first Notis CLI for Spaces, Skills and generic tool execution.
4
4
 
5
5
  ## Install
6
6
 
7
- Use the Notis CLI through NPX. Install and sign into Notis Desktop to keep the local CLI auth profile current; do not rely on an installed `notis` command. Related skills such as `notis-cli` and `notis-apps` are delivered through normal Notis skill sync for the signed-in user.
7
+ Requires Node.js 22.12.0 or newer (Node 24 LTS recommended). Update Node.js before installing or running the CLI; the CLI never upgrades your host runtime.
8
+
9
+ Use the Notis CLI through NPX; do not rely on an installed `notis` command. Run `notis login` once to authorize a scoped, revocable OAuth credential in the browser — that is how the CLI signs in everywhere, including on a machine that also runs Notis Desktop.
10
+
11
+ After local login, the CLI idempotently adds static Notis guidance to detected Codex and Claude Code user instruction files without changing their hooks. Run `notis agents install` when you explicitly want memory hooks that load the user's profile at session start, recall only new relevant memories before prompts, and save completed turns as automatic cross-session context. Codex then asks you to review and trust those hooks once in `/hooks`.
8
12
 
9
13
  For CI, hosted agents, or internal scripts, pass a non-persisted token with `NOTIS_JWT=<token>`.
10
14
 
@@ -12,12 +16,41 @@ For CI, hosted agents, or internal scripts, pass a non-persisted token with `NOT
12
16
 
13
17
  ```bash
14
18
  npx --package @notis_ai/cli@latest -- notis --help
19
+ npx --package @notis_ai/cli@latest -- notis login
15
20
  npx --package @notis_ai/cli@latest -- notis doctor
16
- npx --package @notis_ai/cli@latest -- notis apps list
21
+ npx --package @notis_ai/cli@latest -- notis spaces list
17
22
  npx --package @notis_ai/cli@latest -- notis tools search "list Notis databases"
18
23
  ```
19
24
 
20
- The desktop app owns sign-in and keeps the CLI profile in sync automatically.
25
+ Use `notis login --paste-code` for the HTTPS copy-paste fallback on a remote machine.
26
+
27
+ ## Release channels
28
+
29
+ `@latest` is the only tag worth documenting, for beta accounts too.
30
+
31
+ The npm tag has to be chosen before the CLI starts, and the CLI only learns which Notis it talks to once it reads the profile — so no single install command can be right for both environments on its own. Instead the deployment answers the question: `/.well-known/oauth-protected-resource/cli` reports its channel, `notis login` pins it on the profile, and any later run that finds itself on the wrong build hands the whole invocation to the right one before it does anything else.
32
+
33
+ - `notis doctor` reports `release_channel`, `cli_version`, and a `channel` check.
34
+ - `--api-base <url>` decides the build for that one run, so a one-off call against another environment uses the matching CLI.
35
+ - `./dev.sh` profiles and source checkouts are never re-executed: whatever you started stays in control.
36
+ - `NOTIS_CLI_AUTO_CHANNEL=0` disables the hand-off; `doctor` then reports the mismatch instead of correcting it.
37
+
38
+ ## Profiles
39
+
40
+ A profile is one account paired with one API endpoint. Every profile keeps its own credential, so switching between them never signs any of them out.
41
+
42
+ ```bash
43
+ npx --package @notis_ai/cli@latest -- notis login --profile work
44
+ npx --package @notis_ai/cli@latest -- notis profile list
45
+ npx --package @notis_ai/cli@latest -- notis profile use work
46
+ npx --package @notis_ai/cli@latest -- notis --profile default tools search "..."
47
+ ```
48
+
49
+ `notis logout` revokes and removes the OAuth grant for one profile; `--all-profiles` clears every one.
50
+
51
+ Credential precedence within the selected profile is: an active `./dev.sh` worktree credential, then `NOTIS_JWT`, then the profile's OAuth grant.
52
+
53
+ `./dev.sh` exposes its test account as a lease-backed `dev-<workspace>-<hash>` profile bound to its loopback backend. The credential stays in the worktree rather than the shared account config. That synthetic profile is the default only inside its active worktree; naming any stored profile with `--profile` runs against that real account instead.
21
54
 
22
55
  The CLI defaults to `json` output in agent or non-TTY contexts and `table` output in interactive terminals.
23
56
 
@@ -26,173 +59,738 @@ The CLI defaults to `json` output in agent or non-TTY contexts and `table` outpu
26
59
  - `--json` — Shortcut for `--output json`
27
60
  - `--output <table|json|yaml|ndjson>` — Output mode override
28
61
  - `--non-interactive` — Disable prompts
29
- - `--profile <name>` — Select a stored profile
62
+ - `--profile <name>` — Run as a stored profile instead of the active one
30
63
  - `--api-base <url>` — Override the API base for one invocation
31
- - `--timeout-ms <n>` — HTTP timeout in milliseconds
64
+ - `--timeout-ms <n>` — Time limit in milliseconds for each call, automatic retries included
32
65
  - `--idempotency-key <key>` — Override the generated idempotency key for mutating commands
66
+ - `--no-retry` (or `NOTIS_NO_RETRY=1`): turn off automatic retries. By default the CLI retries an interrupted tool call (network error, timeout, 502, 503 or 504) when repeating it is safe: a read, or a write with an idempotency key. It makes up to 3 attempts within `--timeout-ms` and reports the count in `meta.attempts`, or `error.details.attempts` on a failure.
67
+
68
+ ## Authentication
69
+
70
+ ### `npx --package @notis_ai/cli@latest -- notis login`
71
+
72
+ Authorize a CLI profile in a browser with scoped OAuth access.
73
+
74
+ When to use: Run this once per account you want the CLI to reach. Pass --profile to add a second account without signing the first one out.
75
+
76
+ Options:
77
+ - `--no-browser` — Print the authorization URL without opening a browser.
78
+ - `--print-url` — Print the authorization URL even when opening a browser.
79
+ - `--mode <mode>` — auto (default) hands the browser callback to a background listener when this command cannot wait; browser waits in-process; code shows a one-time code to copy.
80
+ - `--paste-code` — Alias for --mode code.
81
+ - `--timeout-seconds <n>` — Authorization lifetime in seconds (default 300 while waiting in a terminal; 1800 for detached or code hand-offs).
82
+ - `--scope <scope>` — OAuth permission to request (repeatable). Default: every permission Notis offers the CLI.
83
+ - `--code <code>` — Redeem the code shown in the browser after a non-interactive login.
84
+
85
+ Examples:
86
+ - `npx --package @notis_ai/cli@latest -- notis login`
87
+ - `npx --package @notis_ai/cli@latest -- notis login --profile work`
88
+ - `npx --package @notis_ai/cli@latest -- notis login --profile nightly --api-base https://api-nightly.notis.ai`
89
+ - `npx --package @notis_ai/cli@latest -- notis login --no-browser --print-url`
90
+ - `npx --package @notis_ai/cli@latest -- notis login --mode browser`
91
+ - `npx --package @notis_ai/cli@latest -- notis login --mode code`
92
+ - `npx --package @notis_ai/cli@latest -- notis login --code 4f3c2b1a`
93
+
94
+ ### `npx --package @notis_ai/cli@latest -- notis logout`
95
+
96
+ Sign this computer out of one CLI profile: revoke and remove its OAuth credential.
97
+
98
+ When to use: Use this to disconnect a single account on this computer. Its sign-ins on other computers stay, and other profiles keep their credentials unless you pass --all-profiles.
99
+
100
+ Options:
101
+ - `--all-profiles` — Clear OAuth credentials and pending authorizations from every CLI profile.
102
+
103
+ Examples:
104
+ - `npx --package @notis_ai/cli@latest -- notis logout`
105
+ - `npx --package @notis_ai/cli@latest -- notis logout --profile work`
106
+ - `npx --package @notis_ai/cli@latest -- notis logout --all-profiles`
107
+
108
+
109
+ ## Coding-agent context
110
+
111
+ ### `npx --package @notis_ai/cli@latest -- notis agents install`
112
+
113
+ Install Notis instructions and recall/capture hooks for local Codex and Claude Code.
114
+
115
+ When to use: Run after login to give local coding agents durable Notis CLI guidance, session-start profile context, deduplicated relevant recall, and automatic completed-turn capture. Hosted Notis sandboxes are skipped unless --recall-only is given: that mode installs only recall hooks into the hosted agent's own config folder, signed in with the session's injected credential.
116
+
117
+ Options:
118
+ - `--codex-only` — Configure only Codex.
119
+ - `--claude-only` — Configure only Claude Code.
120
+ - `--no-memory-hooks` — Install static instructions and remove Notis recall/capture hooks.
121
+ - `--recall-only` — Hosted coding agents: install only recall hooks (no capture, no instructions) into CODEX_HOME or CLAUDE_CONFIG_DIR, signed in with the injected NOTIS_JWT.
122
+ - `--env-file <path>` — With --recall-only: a shell file each hook sources first to pick up the current injected sign-in.
123
+
124
+ Examples:
125
+ - `npx --package @notis_ai/cli@latest -- notis agents install`
126
+ - `npx --package @notis_ai/cli@latest -- notis agents install --codex-only`
127
+ - `npx --package @notis_ai/cli@latest -- notis agents install --claude-only`
128
+ - `npx --package @notis_ai/cli@latest -- notis agents install --no-memory-hooks`
129
+ - `npx --package @notis_ai/cli@latest -- notis agents install --recall-only --codex-only`
130
+
131
+
132
+ ## Skills
133
+
134
+ ### `npx --package @notis_ai/cli@latest -- notis skills list`
135
+
136
+ List every Skill you can see, with its kind, editability and Space links.
137
+
138
+ When to use: Find a Skill and its exact edit target before reading or editing it, or see what a Space and its sub-Spaces list. Links to Spaces you cannot open are omitted; an unavailable link gives no access.
139
+
140
+ Options:
141
+ - `--space <id>` — Only Skills listed by this Space and, by default, its sub-Spaces.
142
+ - `--no-child-spaces` — With --space: direct links of that Space only.
143
+ - `--include-disabled` — Include Skills you disabled.
144
+ - `--after <cursor>` — Continue from the next cursor of the previous page.
145
+ - `--limit <n>` — Page size between 1 and 100 (default 50).
146
+
147
+ Examples:
148
+ - `npx --package @notis_ai/cli@latest -- notis skills list`
149
+ - `npx --package @notis_ai/cli@latest -- notis skills list --space <space-id> --no-child-spaces --json`
150
+
151
+ ### `npx --package @notis_ai/cli@latest -- notis skills create <file>`
152
+
153
+ Create a native Skill, standalone or linked to an editable Space.
154
+
155
+ When to use: Create complete instructions or files without provider installation. Choose an optional Space destination, dry-run, and keep the exact request key on retry.
156
+
157
+ Options:
158
+ - `--request-id <key>` — Stable creation intent key; reuse after an uncertain reply.
159
+ - `--dry-run` — Validate without creating an identity or uploading files.
160
+
161
+ Examples:
162
+ - `npx --package @notis_ai/cli@latest -- notis skills create ./skill.json --request-id create-1 --dry-run`
163
+
164
+ ### `npx --package @notis_ai/cli@latest -- notis skills settings read <skill-id>`
165
+
166
+ Read a native Skill personal enablement, agent targets and settings revision.
167
+
168
+ When to use: Inspect direct-owner preferences without changing shared instructions or Space access.
169
+
170
+ Examples:
171
+
172
+ ### `npx --package @notis_ai/cli@latest -- notis skills settings update <file>`
173
+
174
+ Update personal native Skill settings with a current revision and stable retry key.
175
+
176
+ When to use: Enable or disable your agents without changing a shared Skill definition or another Space.
177
+
178
+ Options:
179
+ - `--request-id <key>` — Stable settings intent; reuse after a lost reply.
180
+ - `--dry-run` — Validate current ownership and revision without changing settings.
181
+
182
+ Examples:
183
+
184
+ ### `npx --package @notis_ai/cli@latest -- notis skills read [skill-id]`
185
+
186
+ Inspect a native Skill through direct ownership or an editable Space link.
187
+
188
+ When to use: Read the exact target and content version before editing. A Space target uses its current Editor authority, never a personal fallback.
189
+
190
+ Options:
191
+ - `--files` — Include every verified supporting file as base64.
192
+ - `--target <json>` — Exact {skill_id} or {space_id,binding_id} read target; do not combine with a Skill ID.
193
+
194
+ Examples:
195
+ - `npx --package @notis_ai/cli@latest -- notis skills read <skill-id> --files`
196
+ - `npx --package @notis_ai/cli@latest -- notis skills read --target '{"space_id":"<id>","binding_id":"<binding>"}' --files`
197
+
198
+ ### `npx --package @notis_ai/cli@latest -- notis skills update <file>`
199
+
200
+ Edit a native Skill through its direct or Space target, preserving its ID and supporting files.
201
+
202
+ When to use: Use the target/version from skills list or skills read, dry-run, then reuse the same request key and bytes to save or recover a lost reply. The same edit file works for a standalone or a Space target; an optional links key changes where the Skill is listed in the same transaction.
203
+
204
+ Options:
205
+ - `--request-id <key>` — Stable edit intent key; reuse after lost replies.
206
+ - `--dry-run` — Check current access, content and revisions without uploading or saving.
207
+
208
+ Examples:
209
+ - `npx --package @notis_ai/cli@latest -- notis skills update ./skill-edit.json --request-id edit-1 --dry-run`
210
+
211
+ ### `npx --package @notis_ai/cli@latest -- notis skills links <skill-id>`
212
+
213
+ Add, remove or move a Skill between Spaces; the Skill keeps its ID.
214
+
215
+ When to use: Change where a Skill is listed without editing its content. A move is one add plus one remove in one transaction. You must be an Editor of every Space you touch and able to edit the Skill; removing its last available link keeps it as your own standalone Skill.
216
+
217
+ Options:
218
+ - `--add <json>` — JSON array of {space_id, space_revision, alias?} links to add; alias defaults to the Skill name.
219
+ - `--remove <json>` — JSON array of {binding_id, binding_revision} links to remove, from skills list.
220
+ - `--request-id <key>` — Stable intent key; reuse it unchanged when retrying this change.
221
+
222
+ Examples:
223
+ - `npx --package @notis_ai/cli@latest -- notis skills links <skill-id> --add '[{"space_id":"<space-id>","space_revision":3}]' --request-id link-1`
224
+ - `npx --package @notis_ai/cli@latest -- notis skills links <skill-id> --add '[{"space_id":"<to-space-id>","space_revision":3}]' --remove '[{"binding_id":"<binding-id>","binding_revision":2}]' --request-id move-1`
225
+
226
+ ### `npx --package @notis_ai/cli@latest -- notis skills sync`
227
+
228
+ Synchronize account skills and keep the three Notis base skills current.
229
+
230
+ When to use: Run manually whenever local agent skills should be reconciled. Manual runs ignore the Desktop automatic-sync preference.
231
+
232
+ Options:
233
+ - `--electron-repeat` — Honor the automatic Desktop sync preference (used by Notis Desktop).
234
+
235
+ Examples:
236
+ - `npx --package @notis_ai/cli@latest -- notis skills sync`
237
+ - `npx --package @notis_ai/cli@latest -- notis skills sync --json`
238
+
239
+
240
+ ## Spaces
241
+
242
+ Build, verify and publish Space views, their linked Skills and resources. The product `notis-spaces` skill owns the workflow and the consequences of links, moves and the bin.
243
+
244
+ ### `npx --package @notis_ai/cli@latest -- notis spaces history list <space-id>`
245
+
246
+ Read a Space’s saved view versions, newest first.
247
+
248
+ When to use: Inspect when and by whom a view changed, before restoring or undoing a change.
249
+
250
+ Options:
251
+ - `--before <revision>` — Read versions before this cursor.
252
+
253
+ Examples:
254
+ - `npx --package @notis_ai/cli@latest -- notis spaces history list <space-id>`
255
+
256
+ ### `npx --package @notis_ai/cli@latest -- notis spaces history restore <space-id>`
257
+
258
+ Republish a saved view and its settings as a new version; records stay unchanged.
259
+
260
+ When to use: Restore a chosen version, or undo your last change using the version immediately before it.
261
+
262
+ Options:
263
+ - `--target-revision <revision>` — The saved version to restore.
264
+ - `--revision <revision>` — Current Space metadata revision from history list.
265
+ - `--request-id <id>` — Stable restore request ID; reuse on retry.
266
+ - `--dry-run` — Check current access, bindings and saved source without publishing.
267
+
268
+ Examples:
269
+ - `npx --package @notis_ai/cli@latest -- notis spaces history restore <space-id> --target-revision 2 --revision 5 --request-id undo-last-change --dry-run`
270
+
271
+ ### `npx --package @notis_ai/cli@latest -- notis spaces history read <space-id>`
272
+
273
+ Read the files of one saved Space version.
274
+
275
+ When to use: See exactly what a saved version contained, before comparing or restoring it. Editors only.
276
+
277
+ Options:
278
+ - `--revision <revision>` — The saved version from history list.
279
+ - `--path <path>` — Read only this file or folder.
280
+
281
+ Examples:
282
+ - `npx --package @notis_ai/cli@latest -- notis spaces history read <space-id> --revision 3 --path app/page.tsx`
283
+
284
+ ### `npx --package @notis_ai/cli@latest -- notis spaces history diff <space-id>`
285
+
286
+ Compare two saved Space versions, or one with the current version.
287
+
288
+ When to use: See what changed between versions. Prints the unified diff; pass --json for the full comparison.
289
+
290
+ Options:
291
+ - `--from <revision>` — The older saved version.
292
+ - `--to <revision>` — The newer saved version, or current (default).
293
+ - `--path <path>` — Compare only this file or folder.
294
+
295
+ Examples:
296
+ - `npx --package @notis_ai/cli@latest -- notis spaces history diff <space-id> --from 3`
297
+ - `npx --package @notis_ai/cli@latest -- notis spaces history diff <space-id> --from 3 --to 5 --json`
298
+
299
+ ### `npx --package @notis_ai/cli@latest -- notis spaces history name <space-id>`
300
+
301
+ Name a saved Space version, or clear its name.
302
+
303
+ When to use: Mark a version worth keeping, such as a launch. Named versions are kept past the usual retention.
304
+
305
+ Options:
306
+ - `--revision <revision>` — The saved version from history list.
307
+ - `--name <name>` — The version name.
308
+ - `--clear` — Remove the version name.
309
+
310
+ Examples:
311
+ - `npx --package @notis_ai/cli@latest -- notis spaces history name <space-id> --revision 3 --name "Launch"`
312
+ - `npx --package @notis_ai/cli@latest -- notis spaces history name <space-id> --revision 3 --clear`
313
+
314
+ ### `npx --package @notis_ai/cli@latest -- notis spaces history delete <space-id>`
315
+
316
+ Delete one saved Space version for good.
317
+
318
+ When to use: Only when the user asked to delete this version. It cannot be restored afterwards.
319
+
320
+ Options:
321
+ - `--revision <revision>` — The saved version from history list.
322
+ - `--yes` — Confirm the user asked to delete this version for good.
323
+
324
+ Examples:
325
+ - `npx --package @notis_ai/cli@latest -- notis spaces history delete <space-id> --revision 3 --yes`
326
+
327
+ ### `npx --package @notis_ai/cli@latest -- notis spaces screenshot <url>`
328
+
329
+ Capture a full-height PNG of a live view with your current access.
330
+
331
+ When to use: Check the actual deployed view; writes are blocked and current access is checked again before any output is saved.
332
+
333
+ Options:
334
+ - `--width <pixels>` — 1440 (default) or 390.
335
+ - `--output-dir <path>` — New output directory; defaults to a unique .notis/renders directory. Existing files are never overwritten.
336
+
337
+ Examples:
338
+ - `npx --package @notis_ai/cli@latest -- notis spaces screenshot <view-link> --width 390`
339
+
340
+ ### `npx --package @notis_ai/cli@latest -- notis spaces init <name> [dir]`
341
+
342
+ Scaffold an editable collection view with first-party record components.
343
+
344
+ When to use: Start a local Space collection source for an existing linked database. Does not create or deploy remote resources.
345
+
346
+ Options:
347
+ - `--database-key <key>` — Portable key of the database this Space links.
348
+ - `--path <path>` — Descriptive view path; defaults to records.
349
+ - `--title-property <id>` — Canonical title/number property ID, or the title column (default).
350
+
351
+ Examples:
352
+ - `npx --package @notis_ai/cli@latest -- notis spaces init Notes ./notes --database-key notes --path notes`
353
+
354
+ ### `npx --package @notis_ai/cli@latest -- notis spaces navigation bind <space-id>`
355
+
356
+ Bind a named destination for the next source publication without granting target access.
357
+
358
+ When to use: Connect a portable navigation alias to an existing Space or exact record before building and publishing.
359
+
360
+ Options:
361
+ - `--alias <name>` — Declared portable navigation alias.
362
+ - `--target <json>` — Exact {space_id,document_id?}, or null to remove the draft binding.
363
+ - `--revision <number>` — Current source Space metadata revision.
364
+ - `--dry-run` — Check current source/target access and revision without changing anything.
365
+
366
+ Examples:
367
+ - `npx --package @notis_ai/cli@latest -- notis spaces navigation bind <space-id> --alias history --target '{"space_id":"<history-id>"}' --revision 2 --dry-run`
368
+
369
+ ### `npx --package @notis_ai/cli@latest -- notis spaces resources name <space-id> <binding-id>`
33
370
 
34
- ## Apps
371
+ Give an included resource a portable alias before the first source revision.
35
372
 
36
- ### `npx --package @notis_ai/cli@latest -- notis apps list`
373
+ When to use: Prepare staged resources for source authoring without replacing their IDs, scope or owners.
37
374
 
38
- List apps the current profile can access.
375
+ Options:
376
+ - `--alias <name>` — Stable lowercase alias to use in source.
377
+ - `--revision <number>` — Current Space metadata revision.
378
+ - `--dry-run` — Check naming, current access and revision without changing metadata.
379
+
380
+ Examples:
381
+ - `npx --package @notis_ai/cli@latest -- notis spaces resources name <space-id> <binding-id> --alias weekly-report --revision 0 --dry-run`
39
382
 
40
- When to use: Discover existing apps before linking or deploying.
383
+ ### `npx --package @notis_ai/cli@latest -- notis spaces links list <space-id>`
384
+
385
+ List the databases, Skills, automations and records linked into one Space.
386
+
387
+ When to use: Find a link binding and its revision before removing it, including a link left behind by a deleted Skill.
41
388
 
42
389
  Examples:
43
- - `npx --package @notis_ai/cli@latest -- notis apps list`
44
- - `npx --package @notis_ai/cli@latest -- notis apps list --json`
390
+ - `npx --package @notis_ai/cli@latest -- notis spaces links list <space-id>`
45
391
 
46
- ### `npx --package @notis_ai/cli@latest -- notis apps init <name> [dir]`
392
+ ### `npx --package @notis_ai/cli@latest -- notis spaces links remove <space-id> <binding-id>`
47
393
 
48
- Scaffold a new Notis app project.
394
+ Remove one database, Skill or automation link from a Space by its binding.
49
395
 
50
- When to use: Start a new Notis app. Use --from with a bundled scaffold when one is close to the desired app; otherwise creates the bare Vite + React project.
396
+ When to use: Unlist a resource from a Space you edit, including a link whose Skill was deleted. The resource keeps its ID; removing the last available link of a live resource keeps it as its owner's standalone resource.
51
397
 
52
398
  Options:
53
- - `--from <slug>` — Start from a bundled scaffold listed by `notis apps scaffolds list`.
399
+ - `--revision <number>` — Current binding revision from spaces links list.
400
+ - `--request-id <key>` — Stable intent key; reuse it unchanged when retrying this removal.
54
401
 
55
402
  Examples:
56
- - `npx --package @notis_ai/cli@latest -- notis apps scaffolds list`
57
- - `npx --package @notis_ai/cli@latest -- notis apps init "Mind the Flo"`
58
- - `npx --package @notis_ai/cli@latest -- notis apps init "My CRM" --from notis-database`
59
- - `npx --package @notis_ai/cli@latest -- notis apps init "My App" ./my-app`
403
+ - `npx --package @notis_ai/cli@latest -- notis spaces links remove <space-id> <binding-id> --revision 1 --request-id remove-link-1`
60
404
 
61
- ### `npx --package @notis_ai/cli@latest -- notis apps scaffolds list`
405
+ ### `npx --package @notis_ai/cli@latest -- notis spaces aliases list`
62
406
 
63
- List bundled Notis app scaffolds.
407
+ List the old App page links you manage and the Space each one opens.
64
408
 
65
- When to use: Discover the fixed scaffold catalog shipped with the CLI before starting a new app.
409
+ When to use: Find an old App page link that opens a binned Space (trashed: true) before repointing it.
410
+
411
+ Options:
412
+ - `--legacy-id <id>` — Old App ID the links belong to.
413
+ - `--kind <kind>` — app (default), report or html.
66
414
 
67
415
  Examples:
68
- - `npx --package @notis_ai/cli@latest -- notis apps scaffolds list`
69
- - `npx --package @notis_ai/cli@latest -- notis apps init "My App" --from notis-database`
416
+ - `npx --package @notis_ai/cli@latest -- notis spaces aliases list --legacy-id <app-id>`
417
+
418
+ ### `npx --package @notis_ai/cli@latest -- notis spaces aliases repoint`
70
419
 
71
- ### `npx --package @notis_ai/cli@latest -- notis apps create <name> [dir]`
420
+ Point one old App page link at a live Space you edit.
72
421
 
73
- Create a new remote Notis app and optionally link a local project to it.
422
+ When to use: Repair an old App page link whose Space was binned. You must own the old App or edit the Space the link opens now, and edit the new Space; everyone who opens the link still needs their own access to it.
74
423
 
75
- When to use: Provision a fresh remote app before the first deploy. Pass a project directory to link it immediately.
424
+ Options:
425
+ - `--legacy-id <id>` — Old App ID the link belongs to.
426
+ - `--route <slug>` — Old App page route from spaces aliases list.
427
+ - `--space <space-id>` — Live Space the old link should open.
428
+ - `--expected-space <space-id>` — Space the link opens now; the change is refused if it moved since you listed it.
429
+ - `--selection-param <name>` — Declared view parameter that receives the old page selection, if any.
430
+ - `--request-id <key>` — Stable intent key; reuse it unchanged when retrying this change.
431
+ - `--dry-run` — Check authority and the new Space without changing the link.
76
432
 
77
433
  Examples:
78
- - `npx --package @notis_ai/cli@latest -- notis apps create "My App"`
79
- - `npx --package @notis_ai/cli@latest -- notis apps create "My App" .`
434
+ - `npx --package @notis_ai/cli@latest -- notis spaces aliases repoint --legacy-id <app-id> --route pages --space <space-id> --expected-space <binned-space-id> --request-id repoint-pages --dry-run`
80
435
 
81
- ### `npx --package @notis_ai/cli@latest -- notis apps dev [dir]`
436
+ ### `npx --package @notis_ai/cli@latest -- notis spaces pull <space-id> [dir]`
82
437
 
83
- Develop Notis apps inside the Electron desktop Portal with automatic local bundle reloads.
438
+ Pull one editable Space source snapshot, its resource list and its Skill folders into an empty directory.
84
439
 
85
- When to use: Run this inside a single app or a monorepo root with apps/<name>/notis.config.ts. It discovers every app, starts the local bundle server, registers desktop-local dev sessions, and opens the Electron Portal to the local development app.
440
+ When to use: Edit a Space you can administer: the source, its links (resources.json) and every editable linked Skill (skills/<alias>/) arrive together, with a local lock file so a later deploy sends only what you changed.
86
441
 
87
442
  Options:
88
- - `--port <number>` — Local bundle server port (default: 5173).
89
- - `--no-open` — Do not auto-open the desktop Portal local development app.
443
+ - `--revision <number>` — Exact published source revision; defaults to the current one.
90
444
 
91
445
  Examples:
92
- - `npx --package @notis_ai/cli@latest -- notis apps dev`
93
- - `npx --package @notis_ai/cli@latest -- notis apps dev ./my-app`
94
- - `npx --package @notis_ai/cli@latest -- notis apps dev ./workspace --port 5200`
446
+ - `npx --package @notis_ai/cli@latest -- notis spaces pull <space-id> ./space-source`
95
447
 
96
- ### `npx --package @notis_ai/cli@latest -- notis apps build [dir]`
448
+ ### `npx --package @notis_ai/cli@latest -- notis spaces verify [dir]`
97
449
 
98
- Build and package the app into .notis/output/.
450
+ Render one frozen Space with offline fixtures and validate its current action authorizations.
99
451
 
100
- When to use: Prepare the app for verification or deployment.
452
+ When to use: Check immutable build bytes and authoring compatibility without executing actions or publishing.
453
+
454
+ Options:
455
+ - `--space <key>` — Exact source key from the workspace index.
456
+ - `--space-id <id>` — Exact existing destination Space.
457
+ - `--reuse-grants <json>` — Explicit action-key to saved-grant-ID map. Otherwise your own connections are used.
458
+ - `--reuse-grants-only` — Never authorize new actions. Reuse only the supplied saved grants; other declarations remain unavailable. Requires existing bound databases.
101
459
 
102
460
  Examples:
103
- - `npx --package @notis_ai/cli@latest -- notis apps build`
104
- - `npx --package @notis_ai/cli@latest -- notis apps build ./my-app`
461
+ - `npx --package @notis_ai/cli@latest -- notis spaces verify . --space overview --space-id <space-id>`
105
462
 
106
- ### `npx --package @notis_ai/cli@latest -- notis apps verify [dir]`
463
+ ### `npx --package @notis_ai/cli@latest -- notis spaces preview [dir]`
107
464
 
108
- Headless render smoke each route in a stub-runtime harness.
465
+ Seal a checked unpublished revision of the same Space and return its authenticated preview link.
109
466
 
110
- When to use: After notis apps build, before deploy. Catches render-time crashes and missing runtime calls that the build step cannot detect.
467
+ When to use: Review a checked candidate using current Editor access without changing live source or cloning the Space.
111
468
 
112
469
  Options:
113
- - `--routes <slugs>` — Comma-separated route slugs. Default: every route in manifest.
114
- - `--port <n>` — Loopback port. Default: auto-pick.
115
- - `--skip-build` — Skip notis apps build; reuse existing .notis/output/.
116
- - `--mode <mode>` — stub | live. Default stub. Live posts to /portal_views/runtime_query with the CLI JWT.
117
- - `--no-browser` — Start the harness server and print URLs; do not drive agent-browser.
118
- - `--keep-open` — Leave server + browser session running after report (for manual triage).
470
+ - `--space <key>` — Exact source key from the workspace index.
471
+ - `--space-id <id>` — Exact existing destination Space.
472
+ - `--reuse-grants <json>` — Explicit action-key to saved-grant-ID map. Otherwise your own connections are used.
473
+ - `--reuse-grants-only` — Never authorize new actions. Reuse only the supplied saved grants; other declarations remain unavailable. Requires existing bound databases.
474
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
475
+ - `--dry-run` — Validate without uploading or publishing.
119
476
 
120
477
  Examples:
121
- - `npx --package @notis_ai/cli@latest -- notis apps verify`
122
- - `npx --package @notis_ai/cli@latest -- notis apps verify --routes notes`
123
- - `npx --package @notis_ai/cli@latest -- notis apps verify --mode live`
124
- - `npx --package @notis_ai/cli@latest -- notis apps verify --no-browser # start the harness, drive agent-browser yourself`
478
+ - `npx --package @notis_ai/cli@latest -- notis spaces preview . --space overview --space-id <space-id> --request-id release-1`
125
479
 
126
- ### `npx --package @notis_ai/cli@latest -- notis apps screenshot [dir]`
480
+ ### `npx --package @notis_ai/cli@latest -- notis spaces deploy [dir]`
127
481
 
128
- Capture listing screenshots of each route via the headless harness.
482
+ Publish one built Space with a retry-safe, independent source revision.
129
483
 
130
- When to use: Generate metadata/screenshot-N.png for the App Store listing. Apps are icon-led (like Raycast) — there is no cover image, only these screenshots. Run before notis apps verify / deploy / publish.
484
+ When to use: Update only the selected existing Space; this does not publish to the Store or change siblings.
131
485
 
132
486
  Options:
133
- - `--routes <slugs>` — Comma-separated route slugs. Default: every route in manifest.
134
- - `--port <n>` — Loopback port. Default: auto-pick.
135
- - `--width <px>` — Viewport width. Default: 2000.
136
- - `--height <px>` — Viewport height. Default: 1250 (16:10).
137
- - `--output-dir <dir>` — Where to write screenshot-N.png. Default: metadata/.
138
- - `--mode <mode>` — stub | live. Default stub. Live renders against real data via the CLI JWT (requires a linked app), so screenshots show actual content instead of empty states.
139
- - `--skip-build` — Skip notis apps build; reuse existing .notis/output/.
487
+ - `--space <key>` — Exact source key from the workspace index.
488
+ - `--space-id <id>` — Exact existing destination Space.
489
+ - `--reuse-grants <json>` — Explicit action-key to saved-grant-ID map. Otherwise your own connections are used.
490
+ - `--reuse-grants-only` — Never authorize new actions. Reuse only the supplied saved grants; other declarations remain unavailable. Requires existing bound databases.
491
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
492
+ - `--dry-run` — Validate without uploading or publishing.
493
+
494
+ Examples:
495
+ - `npx --package @notis_ai/cli@latest -- notis spaces deploy . --space overview --space-id <space-id> --request-id release-1`
496
+
497
+ ### `npx --package @notis_ai/cli@latest -- notis spaces promote <release-id> [dir]`
498
+
499
+ Publish the exact sealed Space revision, with its pending Skill and link changes, after current permission and concurrency checks.
500
+
501
+ When to use: Finish a reviewed preview without rebuilding or substituting a different candidate. The Skill edits, new Skills and list changes the preview carried go live in the same transaction.
502
+
503
+ Examples:
504
+ - `npx --package @notis_ai/cli@latest -- notis spaces promote <release-id>`
505
+
506
+ ### `npx --package @notis_ai/cli@latest -- notis spaces abandon <release-id>`
507
+
508
+ Close an unpublished Space preview without changing its live source, Skills or links, or deleting action history.
509
+
510
+ When to use: Stop using a candidate while preserving live source and completed effects.
140
511
 
141
512
  Examples:
142
- - `npx --package @notis_ai/cli@latest -- notis apps screenshot`
143
- - `npx --package @notis_ai/cli@latest -- notis apps screenshot --routes home,history`
144
- - `npx --package @notis_ai/cli@latest -- notis apps screenshot --mode live # populated screenshots from real data`
513
+ - `npx --package @notis_ai/cli@latest -- notis spaces abandon <release-id>`
145
514
 
146
- ### `npx --package @notis_ai/cli@latest -- notis apps link <app-id> [dir]`
515
+ ### `npx --package @notis_ai/cli@latest -- notis spaces list`
147
516
 
148
- Link a local project to a remote Notis app.
517
+ List Spaces currently available to your account.
149
518
 
150
- When to use: Connect a local project to an existing app for deployment.
519
+ When to use: Discover accessible Spaces without exposing an issuer-wide resource catalogue.
151
520
 
152
521
  Examples:
153
- - `npx --package @notis_ai/cli@latest -- notis apps link abc123`
154
- - `npx --package @notis_ai/cli@latest -- notis apps link abc123 ./my-app`
522
+ - `npx --package @notis_ai/cli@latest -- notis spaces list`
155
523
 
156
- ### `npx --package @notis_ai/cli@latest -- notis apps pull <app-id> [dir]`
524
+ ### `npx --package @notis_ai/cli@latest -- notis spaces get <space-id>`
157
525
 
158
- Download a Notis app source snapshot into a local project folder.
526
+ Read one accessible Space and its scoped resources.
159
527
 
160
- When to use: Edit an installed app locally. Pulls the persisted source, links the directory to the app/version, then continue with npm install, notis apps dev, notis apps build, and notis apps deploy.
528
+ When to use: Inspect the current published revision and named capabilities before executing.
161
529
 
162
530
  Options:
163
- - `--force` — Overwrite a non-empty target directory.
164
- - `--version <n>` — Pull a specific app source version (default: latest).
531
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
165
532
 
166
533
  Examples:
167
- - `npx --package @notis_ai/cli@latest -- notis apps pull abc123`
168
- - `npx --package @notis_ai/cli@latest -- notis apps pull abc123 ./my-app --force`
534
+ - `npx --package @notis_ai/cli@latest -- notis spaces get <space-id>`
169
535
 
170
- ### `npx --package @notis_ai/cli@latest -- notis apps deploy [dir]`
536
+ ### `npx --package @notis_ai/cli@latest -- notis spaces action <space-id> <action-id>`
171
537
 
172
- Build and upload the app to the linked Notis app.
538
+ Execute a declared action using its saved authorization.
173
539
 
174
- When to use: Ship the installed app to production for the linked user/team app. Requires a linked app (notis apps link). This command does not publish to the app store.
540
+ When to use: Use Space capabilities as the actual actor, with the saved issuer connection and payer.
175
541
 
176
542
  Options:
177
- - `--app-id <id>` — Override linked app ID.
178
- - `--skip-build` — Skip the build step (use existing .notis/output/).
179
- - `--direct` — Upload directly to Supabase storage, bypassing the backend server. Auto-fallback on network errors.
543
+ - `--revision <number>` — Exact published source revision.
544
+ - `--preview-release <id>` — Exact sealed candidate ID; requires current Editor access.
545
+ - `--schema-revision <number>` — Native schema revision; required for native row writes.
546
+ - `--inputs <json>` — Declared action input values; defaults to {}.
547
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
548
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
549
+ - `--dry-run` — Validate current access and action inputs without executing or billing.
180
550
 
181
551
  Examples:
182
- - `npx --package @notis_ai/cli@latest -- notis apps deploy`
183
- - `npx --package @notis_ai/cli@latest -- notis apps deploy --skip-build`
184
- - `npx --package @notis_ai/cli@latest -- notis apps deploy --app-id abc123`
185
- - `npx --package @notis_ai/cli@latest -- notis apps deploy --direct`
552
+ - `npx --package @notis_ai/cli@latest -- notis spaces action <space-id> refresh --revision 1 --inputs '{}' --request-id refresh-1 --dry-run`
186
553
 
187
- ### `npx --package @notis_ai/cli@latest -- notis apps doctor [dir]`
554
+ ### `npx --package @notis_ai/cli@latest -- notis spaces viewer-read <space-id> <operation>`
188
555
 
189
- Check project health and readiness.
556
+ Run one declared viewer read as yourself.
190
557
 
191
- When to use: Diagnose issues with a Notis app project.
558
+ When to use: Check what an explorer Space shows you: the databases or Skills you can open, with your own access and never an issuer grant.
559
+
560
+ Options:
561
+ - `--revision <number>` — Exact published source revision.
562
+ - `--preview-release <id>` — Exact sealed candidate ID; requires current Editor access.
563
+ - `--input <json>` — Read input, e.g. {"database_id":"<id>"}; defaults to {}.
564
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
565
+
566
+ Examples:
567
+ - `npx --package @notis_ai/cli@latest -- notis spaces viewer-read <space-id> list_databases --revision 3`
568
+ - `npx --package @notis_ai/cli@latest -- notis spaces viewer-read <space-id> query_database --revision 3 --input '{"database_id":"<id>","request":{"page_size":20}}'`
569
+
570
+ ### `npx --package @notis_ai/cli@latest -- notis spaces grants list <space-id>`
571
+
572
+ Inspect authorization records for a Space you can edit.
573
+
574
+ When to use: Inspect issuers and exact constraints without exposing connection secrets.
575
+
576
+ Options:
577
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
578
+
579
+ Examples:
580
+ - `npx --package @notis_ai/cli@latest -- notis spaces grants list <space-id>`
581
+
582
+ ### `npx --package @notis_ai/cli@latest -- notis spaces grants create <space-id>`
583
+
584
+ Authorize an exact template using your current connection.
585
+
586
+ When to use: Create a Space-bound authorization; the server resolves the signed-in issuer connection.
587
+
588
+ Options:
589
+ - `--template <file>` — Canonical action template JSON file.
590
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
591
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
592
+ - `--dry-run` — Validate the template and Editor access without creating a grant.
192
593
 
193
594
  Examples:
194
- - `npx --package @notis_ai/cli@latest -- notis apps doctor`
195
- - `npx --package @notis_ai/cli@latest -- notis apps doctor ./my-app`
595
+ - `npx --package @notis_ai/cli@latest -- notis spaces grants create <space-id> --template action.json --request-id grant-1 --dry-run`
596
+
597
+ ### `npx --package @notis_ai/cli@latest -- notis spaces grants revoke <grant-id>`
598
+
599
+ Revoke one saved Space authorization.
600
+
601
+ When to use: Stop future dispatches for an authorization you issued or can administer.
602
+
603
+ Examples:
604
+ - `npx --package @notis_ai/cli@latest -- notis spaces grants revoke <grant-id>`
605
+
606
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store list`
607
+
608
+ List Space Store listings you can see.
609
+
610
+ When to use: Find Space templates published to your team or approved for everyone, and your own listings.
611
+
612
+ Options:
613
+ - `--channel <team|public>` — Only one channel.
614
+
615
+ Examples:
616
+ - `npx --package @notis_ai/cli@latest -- notis spaces store list --channel team`
617
+
618
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store get <listing-id>`
619
+
620
+ Read one Store listing with its versions and your installs.
621
+
622
+ When to use: Check what a listing contains, its review state and whether your copies have an update.
623
+
624
+ Examples:
625
+ - `npx --package @notis_ai/cli@latest -- notis spaces store get <listing-id>`
626
+
627
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store installs`
628
+
629
+ List the Spaces you installed from the Store.
630
+
631
+ When to use: See which installed copies have an update or conflicts to resolve.
632
+
633
+ Examples:
634
+ - `npx --package @notis_ai/cli@latest -- notis spaces store installs`
635
+
636
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store publish <space-id>`
637
+
638
+ Publish a Space and its sub-Spaces as the next Store version.
639
+
640
+ When to use: Share a Space you own as an installable template: team listings publish at once, public ones wait for review. Notis runs the same safety scan and Owner check as the submission page and explains any refusal.
641
+
642
+ Options:
643
+ - `--channel <team|public>` — Where to publish.
644
+ - `--metadata <json>` — Listing name, tagline, description, category, icon, accent.
645
+ - `--starter <json>` — Starter row IDs per database ({"<database-id>":["<record-key>"]}).
646
+ - `--notes <text>` — Release notes for this version.
647
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
648
+ - `--dry-run` — Show the package counts and review diff without publishing.
649
+
650
+ Examples:
651
+ - `npx --package @notis_ai/cli@latest -- notis spaces store publish <space-id> --channel team --request-id publish-1 --dry-run`
652
+
653
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store install <listing-id>`
654
+
655
+ Install a Store listing as your own independent copy.
656
+
657
+ When to use: Add a published Space template to your account; your copy keeps your changes on later updates.
658
+
659
+ Options:
660
+ - `--name <name>` — Name of the installed top Space.
661
+ - `--parent <space-id>` — Install under one of your Spaces.
662
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
663
+ - `--dry-run` — Show what the copy contains without installing.
664
+
665
+ Examples:
666
+ - `npx --package @notis_ai/cli@latest -- notis spaces store install <listing-id> --request-id install-1`
667
+
668
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store update <install-id>`
669
+
670
+ Update an installed copy, keeping your changes, or resolve its conflicts.
671
+
672
+ When to use: Take a newer Store version: unchanged parts update, your edits stay, and parts both sides changed become conflicts you resolve.
673
+
674
+ Options:
675
+ - `--resolve <json>` — Per conflict key: "keep_mine" or "take_theirs".
676
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
677
+ - `--dry-run` — Show the three-way plan without changing anything.
678
+
679
+ Examples:
680
+ - `npx --package @notis_ai/cli@latest -- notis spaces store update <install-id> --request-id update-1 --dry-run`
681
+ - `npx --package @notis_ai/cli@latest -- notis spaces store update <install-id> --resolve '{"skill:<key>":"keep_mine"}' --request-id resolve-1`
682
+
683
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store unpublish <listing-id>`
684
+
685
+ Stop new installs of a Store listing.
686
+
687
+ When to use: Withdraw a listing: existing copies keep working and a version waiting for review is withdrawn.
688
+
689
+ Options:
690
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
691
+
692
+ Examples:
693
+ - `npx --package @notis_ai/cli@latest -- notis spaces store unpublish <listing-id> --request-id unpublish-1`
694
+
695
+ ### `npx --package @notis_ai/cli@latest -- notis spaces build [dir]`
696
+
697
+ Build one independent Space and save its frozen source/artifact snapshot.
698
+
699
+ When to use: Prepare a selected Space for verification without publishing it or changing siblings.
700
+
701
+ Options:
702
+ - `--space <key>` — Exact source key from the workspace Space index.
703
+
704
+ Examples:
705
+ - `npx --package @notis_ai/cli@latest -- notis spaces build . --space overview`
706
+
707
+ ### `npx --package @notis_ai/cli@latest -- notis spaces inspect [dir]`
708
+
709
+ Inspect one local Space definition and its declared capabilities.
710
+
711
+ When to use: Read the selected source definition without loading sibling definitions or account resources.
712
+
713
+ Options:
714
+ - `--space <key>` — Exact source key from the workspace Space index.
715
+
716
+ Examples:
717
+ - `npx --package @notis_ai/cli@latest -- notis spaces inspect . --space overview`
718
+
719
+
720
+ ## Views
721
+
722
+ ### `npx --package @notis_ai/cli@latest -- notis views find`
723
+
724
+ Find the views you can open for a record, database, view link, Space or search.
725
+
726
+ When to use: Get fresh view-qualified links and declared URL parameters before citing or opening a view.
727
+
728
+ Options:
729
+ - `--record-key <id>` — Find views that show this exact native record.
730
+ - `--database-id <id>` — Find views over this database.
731
+ - `--url <url>` — Resolve this view link and its current parameters.
732
+ - `--space-id <id>` — Describe this Space view.
733
+ - `--query <text>` — Search accessible view names, descriptions and readable context.
734
+
735
+ Examples:
736
+ - `npx --package @notis_ai/cli@latest -- notis views find --record-key <record-key>`
737
+ - `npx --package @notis_ai/cli@latest -- notis views find --url <view-link>`
738
+ - `npx --package @notis_ai/cli@latest -- notis views find --query inbox`
739
+
740
+ ### `npx --package @notis_ai/cli@latest -- notis views render <url>`
741
+
742
+ Render a live view as Markdown and a full-height PNG with your current access.
743
+
744
+ When to use: Check the actual deployed view; writes are blocked and current access is checked again before any output is saved.
745
+
746
+ Options:
747
+ - `--outputs <kinds>` — Comma-separated markdown,screenshot (default both).
748
+ - `--width <pixels>` — 1440 (default) or 390.
749
+ - `--output-dir <path>` — New output directory; defaults to a unique .notis/renders directory. Existing files are never overwritten.
750
+
751
+ Examples:
752
+ - `npx --package @notis_ai/cli@latest -- notis views render <view-link> --outputs markdown,screenshot`
753
+
754
+
755
+ ## Reports and saved HTML
756
+
757
+ Create independently authored interactive reports as Space views with the product `notis-spaces` guidance and its reports reference. Build and verify the selected source, deploy within the user's authorization, then render its current view link.
758
+
759
+ Save self-contained HTML pages and reports in Notis Notes with the Save HTML Skill that comes with it; pages and reports saved before Spaces open there too. Its generic file upload is attached to an existing note with a separate revision-checked write; a raw download URL is not a saved page link.
760
+
761
+ ## Hand-over
762
+
763
+ Give the branch you are on to a Notis agent, which continues the work in a git worktree on the Notis cloud computer. The caller chooses who runs it and how from the user's words and passes all three: `--route` (notis, codex or claude), `--intelligence` (low, medium or high) and `--speed` (normal, priority or flex, flex on Notis only). None has a default; `auto` leaves the agent or the intelligence to Notis, only when the user asks for that. `--branch-mode same` makes the agent commit onto your branch; the default cuts a new branch from it. The hand-over starts a Notis thread, shown in the Manager; follow it with `notis handover status <request-id>`. When a start cannot say whether the work began, check `notis handover status` before handing it over again.
764
+
765
+ ### `npx --package @notis_ai/cli@latest -- notis handover start <task>`
766
+
767
+ Hand the current branch to a Notis agent and keep working.
768
+
769
+ When to use: Use this when you want Notis to continue work on the branch you are on -- long refactors, test fixing, or anything that should keep running after you close the laptop. Choose the agent, intelligence and speed yourself from the user's words, even loose ones ("get Claude on it", "this one is tricky", "no rush"), and pass all three; with no agent named, codex for code work. Use auto only when the user asks Notis to pick.
770
+
771
+ Options:
772
+ - `--route <agent>` — Required. Which agent runs it: notis, codex or claude, or auto only when the user asks Notis to pick.
773
+ - `--intelligence <level>` — Required. low (quick, simple tasks), medium (most multi-step work and coding), high (hard reasoning, investigations, complex code), or auto only when the user asks Notis to pick.
774
+ - `--speed <speed>` — Required. normal (the usual choice), priority (faster, costs more; for Codex or Claude only when the user asks for their fast mode) or flex (cheaper and slower, Notis only).
775
+ - `--branch-mode <mode>` — same = the agent commits onto your branch. new = the agent cuts a new branch from it (default).
776
+ - `--repo <slug>` — Configured repository slug on the cloud computer, when you know it.
777
+ - `--no-wip` — Refuse on a dirty tree instead of committing the changes first.
778
+
779
+ Examples:
780
+ - `npx --package @notis_ai/cli@latest -- notis handover start "fix the failing auth tests" --route codex --intelligence medium --speed normal`
781
+ - `npx --package @notis_ai/cli@latest -- notis handover start "finish the migration" --branch-mode same --route codex --intelligence high --speed normal`
782
+ - `npx --package @notis_ai/cli@latest -- notis handover start "add integration tests" --route claude --intelligence medium --speed normal`
783
+ - `npx --package @notis_ai/cli@latest -- notis handover start "review and clean up this branch" --route notis --intelligence low --speed flex`
784
+
785
+ ### `npx --package @notis_ai/cli@latest -- notis handover status [request-id]`
786
+
787
+ Follow a hand-over, or list the work Notis is running for you.
788
+
789
+ When to use: Use this after a hand-over. Pass the request_id `handover start` returned to read its progress and result; with no id it lists the threads still running.
790
+
791
+ Examples:
792
+ - `npx --package @notis_ai/cli@latest -- notis handover status`
793
+ - `npx --package @notis_ai/cli@latest -- notis handover status 6f1c2e8a-4b7d-5c3e-9a1f-2d8b7e6c5a4f`
196
794
 
197
795
 
198
796
  ## Generic Tools
@@ -238,9 +836,11 @@ When to use: Use this as the escape hatch for integrations or Notis tools withou
238
836
 
239
837
  Options:
240
838
  - `--arguments <json>` — JSON object, @file path, or - for stdin.
839
+ - `--arguments-file <path>` — Read the JSON arguments object from a file.
241
840
  - `--file <argument-path=local-path>` — Upload a local file into a file-uploadable tool argument. Repeatable.
242
841
  - `--get-schema` — Display the tool parameter schema without executing.
243
842
  - `--dry-run` — Validate arguments against the tool schema without executing.
843
+ - `--yes` — Apply a change that asks for confirmation without the Continue? [y/N] prompt.
244
844
 
245
845
  Examples:
246
846
  - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --arguments '{"database_slug":"tasks","query":{}}'`
@@ -248,6 +848,7 @@ Examples:
248
848
  - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --get-schema`
249
849
  - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --dry-run --arguments '{"database_slug":"tasks","query":{}}'`
250
850
  - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --arguments @query.json`
851
+ - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --arguments-file query.json`
251
852
  - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --arguments - < query.json`
252
853
  - `npx --package @notis_ai/cli@latest -- notis tools exec composio-dropbox-upload_file --arguments '{"path":"/target/in/dropbox.pdf"}' --file content=./Invoice.pdf`
253
854
 
@@ -265,13 +866,65 @@ Examples:
265
866
 
266
867
  ### `npx --package @notis_ai/cli@latest -- notis tools link <toolkit>`
267
868
 
268
- Get the URL to connect an integration toolkit.
869
+ Connect or reconnect an integration toolkit.
870
+
871
+ When to use: Use this when a tool requires authentication or an active connection must be replaced.
269
872
 
270
- When to use: Use this when a tool requires authentication with an external service.
873
+ Options:
874
+ - `--reconnect` — Replace the existing account instead of adding another connection.
875
+ - `--connection-id <id>` — Exact connection id to replace when multiple accounts exist.
876
+ - `--label <label>` — Account label for a new or replacement connection.
877
+ - `--credentials <json>` — Credential JSON object, @file path, or - for stdin. Prefer stdin so secrets do not enter shell history.
271
878
 
272
879
  Examples:
273
880
  - `npx --package @notis_ai/cli@latest -- notis tools link github`
274
- - `npx --package @notis_ai/cli@latest -- notis tools link gmail --json`
881
+ - `npx --package @notis_ai/cli@latest -- notis tools link dataforseo --reconnect --credentials - < credentials.json`
882
+
883
+
884
+ ## Profile Commands
885
+
886
+ ### `npx --package @notis_ai/cli@latest -- notis profile list`
887
+
888
+ List every CLI profile with its account, API endpoint, and credential state.
889
+
890
+ When to use: Use this to see which accounts and environments this machine can reach before choosing one.
891
+
892
+ Examples:
893
+ - `npx --package @notis_ai/cli@latest -- notis profile list`
894
+ - `npx --package @notis_ai/cli@latest -- notis profile list --json`
895
+
896
+ ### `npx --package @notis_ai/cli@latest -- notis profile use <name>`
897
+
898
+ Switch the default profile without signing any profile out.
899
+
900
+ When to use: Use this to change which account and API subsequent commands target. Every other profile keeps its credential. Its skills replace the previous default's in the agent folders (Claude Code, Codex, Cursor) straight away.
901
+
902
+ Examples:
903
+ - `npx --package @notis_ai/cli@latest -- notis profile use work`
904
+ - `npx --package @notis_ai/cli@latest -- notis profile use default`
905
+
906
+ ### `npx --package @notis_ai/cli@latest -- notis profile show [name]`
907
+
908
+ Show one profile in detail, including scopes and credential expiry.
909
+
910
+ When to use: Use this to inspect exactly which account and endpoint a profile resolves to.
911
+
912
+ Examples:
913
+ - `npx --package @notis_ai/cli@latest -- notis profile show`
914
+ - `npx --package @notis_ai/cli@latest -- notis profile show work --json`
915
+
916
+ ### `npx --package @notis_ai/cli@latest -- notis profile remove <name>`
917
+
918
+ Delete a CLI profile from this machine.
919
+
920
+ When to use: Use this after logging a profile out. Removing a still-authorized profile requires --force and leaves the grant live server-side.
921
+
922
+ Options:
923
+ - `--force` — Discard a profile that still holds a credential.
924
+
925
+ Examples:
926
+ - `npx --package @notis_ai/cli@latest -- notis profile remove old-work`
927
+ - `npx --package @notis_ai/cli@latest -- notis profile remove old-work --force`
275
928
 
276
929
 
277
930
  ## Meta Commands
@@ -303,7 +956,7 @@ Describe a first-class CLI command in detail.
303
956
  When to use: Use this when an agent or human needs the exact shape, examples, and semantics of a command.
304
957
 
305
958
  Examples:
306
- - `npx --package @notis_ai/cli@latest -- notis describe apps deploy`
959
+ - `npx --package @notis_ai/cli@latest -- notis describe spaces deploy`
307
960
  - `npx --package @notis_ai/cli@latest -- notis describe tools exec`
308
961
 
309
962