@notis_ai/cli 0.2.0-beta.178.1 → 0.2.0-beta.1792022492092.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 (124) hide show
  1. package/README.md +548 -98
  2. package/config/portal-route-roots.json +47 -0
  3. package/dist/agent-hooks/notis-agent-hook.mjs +32901 -5934
  4. package/dist/base-skills/notis-apps/SKILL.md +76 -51
  5. package/dist/base-skills/notis-apps/references/architecture.md +116 -164
  6. package/dist/base-skills/notis-apps/references/design.md +26 -107
  7. package/dist/base-skills/notis-apps/references/memory.md +58 -0
  8. package/dist/base-skills/notis-apps/references/reading.md +52 -74
  9. package/dist/base-skills/notis-apps/references/release.md +105 -96
  10. package/dist/base-skills/notis-apps/references/sdk.md +115 -60
  11. package/dist/base-skills/notis-apps/references/troubleshooting.md +22 -21
  12. package/dist/base-skills/notis-apps/references/views.md +145 -0
  13. package/dist/base-skills/notis-cli/SKILL.md +29 -12
  14. package/dist/base-skills/notis-cli/references/app-delivery.md +12 -11
  15. package/dist/base-skills/notis-cli/references/intelligence.md +94 -0
  16. package/dist/base-skills/notis-cli/references/native-databases.md +6 -5
  17. package/dist/base-skills/notis-cli/references/tool-examples.md +4 -4
  18. package/dist/base-skills/notis-query/SKILL.md +34 -60
  19. package/dist/base-skills/notis-query/references/database-discovery.md +60 -59
  20. package/dist/base-skills/notis-query/references/documents.md +53 -39
  21. package/dist/base-skills/notis-query/references/query.md +57 -524
  22. package/dist/sdk/src/bundleModule.ts +79 -0
  23. package/dist/sdk/src/components/DocumentEditor.tsx +6 -3
  24. package/dist/sdk/src/components/DocumentPage.tsx +144 -0
  25. package/dist/sdk/src/components/RecordComponents.tsx +33 -0
  26. package/dist/sdk/src/components/RenderChartData.tsx +19 -0
  27. package/dist/sdk/src/config.ts +4 -26
  28. package/dist/sdk/src/documents.ts +2 -0
  29. package/dist/sdk/src/hooks/useAction.ts +28 -0
  30. package/dist/sdk/src/hooks/useBackend.ts +3 -2
  31. package/dist/sdk/src/hooks/useCloudComputer.ts +35 -4
  32. package/dist/sdk/src/hooks/useCloudComputerShell.ts +114 -0
  33. package/dist/sdk/src/hooks/useCollectionInteractions.ts +4 -2
  34. package/dist/sdk/src/hooks/useHandover.ts +7 -7
  35. package/dist/sdk/src/hooks/useNativeDocumentBody.ts +50 -0
  36. package/dist/sdk/src/hooks/useNativeDocuments.ts +83 -0
  37. package/dist/sdk/src/hooks/useNotis.ts +3 -0
  38. package/dist/sdk/src/hooks/useNotisNavigation.ts +26 -11
  39. package/dist/sdk/src/hooks/useQuery.ts +7 -4
  40. package/dist/sdk/src/hooks/useViewParams.ts +121 -0
  41. package/dist/sdk/src/hooks/useViewerReads.ts +129 -0
  42. package/dist/sdk/src/index.ts +36 -0
  43. package/dist/sdk/src/interactions/shortcuts.tsx +42 -5
  44. package/dist/sdk/src/nativeData.ts +39 -0
  45. package/dist/sdk/src/presentation.tsx +82 -0
  46. package/dist/sdk/src/provider.tsx +9 -4
  47. package/dist/sdk/src/queryCache.ts +5 -3
  48. package/dist/sdk/src/queryErrors.ts +51 -0
  49. package/dist/sdk/src/runtime.ts +163 -13
  50. package/dist/sdk/src/space.ts +425 -0
  51. package/dist/sdk/src/styles.css +96 -72
  52. package/dist/sdk/src/vite.ts +11 -1
  53. package/dist/skill-sync/index.js +571 -80
  54. package/dist/skill-sync/index.js.map +4 -4
  55. package/dist/skill-sync-worker.mjs +858 -233
  56. package/dist/space-harness/host.js +66 -0
  57. package/dist/view-renderer/dist/host.css +1 -0
  58. package/dist/view-renderer/dist/host.js +1028 -0
  59. package/dist/view-renderer/dist/theme.css +73 -0
  60. package/dist/view-renderer/src/dom.js +180 -0
  61. package/dist/view-renderer/src/errors.js +8 -0
  62. package/dist/view-renderer/src/host.tsx +175 -0
  63. package/dist/view-renderer/src/index.js +4 -0
  64. package/dist/view-renderer/src/pool.js +76 -0
  65. package/dist/view-renderer/src/remote-broker.js +59 -0
  66. package/dist/view-renderer/src/renderer.js +201 -0
  67. package/package.json +16 -5
  68. package/skills/notis-apps/cli.md +323 -163
  69. package/skills/notis-cli/AGENT_INSTRUCTIONS.md +3 -3
  70. package/skills/notis-onboarding/BRIEF.md +7 -3
  71. package/src/command-specs/apps.js +2 -1
  72. package/src/command-specs/auth.js +2 -2
  73. package/src/command-specs/files.js +29 -0
  74. package/src/command-specs/handover.js +331 -79
  75. package/src/command-specs/helpers.js +2 -0
  76. package/src/command-specs/index.js +11 -5
  77. package/src/command-specs/profile.js +42 -1
  78. package/src/command-specs/skills.js +242 -1
  79. package/src/command-specs/spaces.js +645 -0
  80. package/src/command-specs/tools.js +0 -6
  81. package/src/command-specs/views.js +69 -0
  82. package/src/runtime/agent-browser.js +92 -29
  83. package/src/runtime/app-boundary-validator.js +7 -4
  84. package/src/runtime/app-data-literals.js +82 -0
  85. package/src/runtime/app-platform.js +321 -253
  86. package/src/runtime/computer-identity.d.ts +30 -0
  87. package/src/runtime/computer-identity.js +151 -0
  88. package/src/runtime/config-lock.js +135 -0
  89. package/src/runtime/confined-space-build.js +74 -0
  90. package/src/runtime/confined-space-verify.js +49 -0
  91. package/src/runtime/delegated-context.js +5 -21
  92. package/src/runtime/native-record-files.js +47 -0
  93. package/src/runtime/oauth.js +18 -1
  94. package/src/runtime/profiles.js +5 -107
  95. package/src/runtime/retired-sdk-files.js +20 -0
  96. package/src/runtime/screenshot-framing.js +85 -0
  97. package/src/runtime/skill-sync/cloud-client.ts +26 -4
  98. package/src/runtime/skill-sync/index.ts +230 -35
  99. package/src/runtime/skill-sync/local-scanner.ts +188 -29
  100. package/src/runtime/skill-sync/native-identity.ts +102 -0
  101. package/src/runtime/skill-sync/native-plan.ts +70 -0
  102. package/src/runtime/skill-sync/sync-plan.ts +16 -9
  103. package/src/runtime/skill-sync/types.ts +32 -6
  104. package/src/runtime/source-root.js +32 -0
  105. package/src/runtime/space-collection-scaffold.js +66 -0
  106. package/src/runtime/space-database-structures.js +229 -0
  107. package/src/runtime/space-fixture-broker.js +50 -0
  108. package/src/runtime/space-lock.js +337 -0
  109. package/src/runtime/space-platform.js +105 -0
  110. package/src/runtime/space-source.js +281 -0
  111. package/src/runtime/space-test-server.js +327 -0
  112. package/src/runtime/space-verification.js +89 -0
  113. package/src/runtime/space-verify-browser-worker.js +51 -0
  114. package/src/runtime/space-view-manifest.js +254 -0
  115. package/src/runtime/store-screenshot.js +10 -7
  116. package/src/runtime/sync-skills.d.ts +3 -1
  117. package/src/runtime/sync-skills.js +10 -2
  118. package/src/runtime/transport.js +8 -6
  119. package/src/runtime/view-render.js +49 -0
  120. package/src/skill-sync-worker.js +14 -2
  121. package/src/space-harness-host.ts +103 -0
  122. package/template/.harness/index.html.tmpl +7 -10
  123. package/template/app/globals.css +1 -0
  124. package/src/command-specs/reports.js +0 -97
package/README.md CHANGED
@@ -1,6 +1,6 @@
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
 
@@ -18,7 +18,7 @@ For CI, hosted agents, or internal scripts, pass a non-persisted token with `NOT
18
18
  npx --package @notis_ai/cli@latest -- notis --help
19
19
  npx --package @notis_ai/cli@latest -- notis login
20
20
  npx --package @notis_ai/cli@latest -- notis doctor
21
- npx --package @notis_ai/cli@latest -- notis apps list
21
+ npx --package @notis_ai/cli@latest -- notis spaces list
22
22
  npx --package @notis_ai/cli@latest -- notis tools search "list Notis databases"
23
23
  ```
24
24
 
@@ -92,9 +92,9 @@ Examples:
92
92
 
93
93
  ### `npx --package @notis_ai/cli@latest -- notis logout`
94
94
 
95
- Revoke and remove the OAuth credential for one CLI profile.
95
+ Sign this computer out of one CLI profile: revoke and remove its OAuth credential.
96
96
 
97
- When to use: Use this to disconnect a single account. Other profiles keep their credentials unless you pass --all-profiles.
97
+ 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.
98
98
 
99
99
  Options:
100
100
  - `--all-profiles` — Clear OAuth credentials and pending authorizations from every CLI profile.
@@ -127,6 +127,98 @@ Examples:
127
127
 
128
128
  ## Skills
129
129
 
130
+ ### `npx --package @notis_ai/cli@latest -- notis skills list`
131
+
132
+ List every Skill you can see, with its kind, editability and Space links.
133
+
134
+ 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.
135
+
136
+ Options:
137
+ - `--space <id>` — Only Skills listed by this Space and, by default, its sub-Spaces.
138
+ - `--no-child-spaces` — With --space: direct links of that Space only.
139
+ - `--include-disabled` — Include Skills you disabled.
140
+ - `--after <cursor>` — Continue from the next cursor of the previous page.
141
+ - `--limit <n>` — Page size between 1 and 100 (default 50).
142
+
143
+ Examples:
144
+ - `npx --package @notis_ai/cli@latest -- notis skills list`
145
+ - `npx --package @notis_ai/cli@latest -- notis skills list --space <space-id> --no-child-spaces --json`
146
+
147
+ ### `npx --package @notis_ai/cli@latest -- notis skills create <file>`
148
+
149
+ Create a native Skill, standalone or linked to an editable Space.
150
+
151
+ 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.
152
+
153
+ Options:
154
+ - `--request-id <key>` — Stable creation intent key; reuse after an uncertain reply.
155
+ - `--dry-run` — Validate without creating an identity or uploading files.
156
+
157
+ Examples:
158
+ - `npx --package @notis_ai/cli@latest -- notis skills create ./skill.json --request-id create-1 --dry-run`
159
+
160
+ ### `npx --package @notis_ai/cli@latest -- notis skills settings read <skill-id>`
161
+
162
+ Read a native Skill personal enablement, agent targets and settings revision.
163
+
164
+ When to use: Inspect direct-owner preferences without changing shared instructions or Space access.
165
+
166
+ Examples:
167
+
168
+ ### `npx --package @notis_ai/cli@latest -- notis skills settings update <file>`
169
+
170
+ Update personal native Skill settings with a current revision and stable retry key.
171
+
172
+ When to use: Enable or disable your agents without changing a shared Skill definition or another Space.
173
+
174
+ Options:
175
+ - `--request-id <key>` — Stable settings intent; reuse after a lost reply.
176
+ - `--dry-run` — Validate current ownership and revision without changing settings.
177
+
178
+ Examples:
179
+
180
+ ### `npx --package @notis_ai/cli@latest -- notis skills read [skill-id]`
181
+
182
+ Inspect a native Skill through direct ownership or an editable Space link.
183
+
184
+ When to use: Read the exact target and content version before editing. A Space target uses its current Editor authority, never a personal fallback.
185
+
186
+ Options:
187
+ - `--files` — Include every verified supporting file as base64.
188
+ - `--target <json>` — Exact {skill_id} or {space_id,binding_id} read target; do not combine with a Skill ID.
189
+
190
+ Examples:
191
+ - `npx --package @notis_ai/cli@latest -- notis skills read <skill-id> --files`
192
+ - `npx --package @notis_ai/cli@latest -- notis skills read --target '{"space_id":"<id>","binding_id":"<binding>"}' --files`
193
+
194
+ ### `npx --package @notis_ai/cli@latest -- notis skills update <file>`
195
+
196
+ Edit a native Skill through its direct or Space target, preserving its ID and supporting files.
197
+
198
+ 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.
199
+
200
+ Options:
201
+ - `--request-id <key>` — Stable edit intent key; reuse after lost replies.
202
+ - `--dry-run` — Check current access, content and revisions without uploading or saving.
203
+
204
+ Examples:
205
+ - `npx --package @notis_ai/cli@latest -- notis skills update ./skill-edit.json --request-id edit-1 --dry-run`
206
+
207
+ ### `npx --package @notis_ai/cli@latest -- notis skills links <skill-id>`
208
+
209
+ Add, remove or move a Skill between Spaces; the Skill keeps its ID.
210
+
211
+ 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.
212
+
213
+ Options:
214
+ - `--add <json>` — JSON array of {space_id, space_revision, alias?} links to add; alias defaults to the Skill name.
215
+ - `--remove <json>` — JSON array of {binding_id, binding_revision} links to remove, from skills list.
216
+ - `--request-id <key>` — Stable intent key; reuse it unchanged when retrying this change.
217
+
218
+ Examples:
219
+ - `npx --package @notis_ai/cli@latest -- notis skills links <skill-id> --add '[{"space_id":"<space-id>","space_revision":3}]' --request-id link-1`
220
+ - `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`
221
+
130
222
  ### `npx --package @notis_ai/cli@latest -- notis skills sync`
131
223
 
132
224
  Synchronize account skills and keep the three Notis base skills current.
@@ -141,7 +233,441 @@ Examples:
141
233
  - `npx --package @notis_ai/cli@latest -- notis skills sync --json`
142
234
 
143
235
 
144
- ## Apps
236
+ ## Spaces
237
+
238
+ Build, verify and publish Space views, their linked Skills and resources. The product `notis-apps` skill owns the workflow and the consequences of links, moves and the bin.
239
+
240
+ ### `npx --package @notis_ai/cli@latest -- notis spaces screenshot <url>`
241
+
242
+ Capture a full-height PNG of a live view with your current access.
243
+
244
+ When to use: Check the actual deployed view; writes are blocked and current access is checked again before any output is saved.
245
+
246
+ Options:
247
+ - `--width <pixels>` — 1440 (default) or 390.
248
+ - `--output-dir <path>` — New output directory; defaults to a unique .notis/renders directory. Existing files are never overwritten.
249
+
250
+ Examples:
251
+ - `npx --package @notis_ai/cli@latest -- notis spaces screenshot <view-link> --width 390`
252
+
253
+ ### `npx --package @notis_ai/cli@latest -- notis spaces init <name> [dir]`
254
+
255
+ Scaffold an editable collection view with first-party record components.
256
+
257
+ When to use: Start a local Space collection source for an existing linked database. Does not create or deploy remote resources.
258
+
259
+ Options:
260
+ - `--database-key <key>` — Portable key of the database this Space links.
261
+ - `--path <path>` — Descriptive view path; defaults to records.
262
+ - `--title-property <id>` — Canonical title/number property ID, or the title column (default).
263
+
264
+ Examples:
265
+ - `npx --package @notis_ai/cli@latest -- notis spaces init Notes ./notes --database-key notes --path notes`
266
+
267
+ ### `npx --package @notis_ai/cli@latest -- notis spaces navigation bind <space-id>`
268
+
269
+ Bind a named destination for the next source publication without granting target access.
270
+
271
+ When to use: Connect a portable navigation alias to an existing Space or exact record before building and publishing.
272
+
273
+ Options:
274
+ - `--alias <name>` — Declared portable navigation alias.
275
+ - `--target <json>` — Exact {space_id,document_id?}, or null to remove the draft binding.
276
+ - `--revision <number>` — Current source Space metadata revision.
277
+ - `--dry-run` — Check current source/target access and revision without changing anything.
278
+
279
+ Examples:
280
+ - `npx --package @notis_ai/cli@latest -- notis spaces navigation bind <space-id> --alias history --target '{"space_id":"<history-id>"}' --revision 2 --dry-run`
281
+
282
+ ### `npx --package @notis_ai/cli@latest -- notis spaces resources name <space-id> <binding-id>`
283
+
284
+ Give an included resource a portable alias before the first source revision.
285
+
286
+ When to use: Prepare staged resources for source authoring without replacing their IDs, scope or owners.
287
+
288
+ Options:
289
+ - `--alias <name>` — Stable lowercase alias to use in source.
290
+ - `--revision <number>` — Current Space metadata revision.
291
+ - `--dry-run` — Check naming, current access and revision without changing metadata.
292
+
293
+ Examples:
294
+ - `npx --package @notis_ai/cli@latest -- notis spaces resources name <space-id> <binding-id> --alias weekly-report --revision 0 --dry-run`
295
+
296
+ ### `npx --package @notis_ai/cli@latest -- notis spaces links list <space-id>`
297
+
298
+ List the databases, Skills, automations and records linked into one Space.
299
+
300
+ When to use: Find a link binding and its revision before removing it, including a link left behind by a deleted Skill.
301
+
302
+ Examples:
303
+ - `npx --package @notis_ai/cli@latest -- notis spaces links list <space-id>`
304
+
305
+ ### `npx --package @notis_ai/cli@latest -- notis spaces links remove <space-id> <binding-id>`
306
+
307
+ Remove one database, Skill or automation link from a Space by its binding.
308
+
309
+ 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.
310
+
311
+ Options:
312
+ - `--revision <number>` — Current binding revision from spaces links list.
313
+ - `--request-id <key>` — Stable intent key; reuse it unchanged when retrying this removal.
314
+
315
+ Examples:
316
+ - `npx --package @notis_ai/cli@latest -- notis spaces links remove <space-id> <binding-id> --revision 1 --request-id remove-link-1`
317
+
318
+ ### `npx --package @notis_ai/cli@latest -- notis spaces aliases list`
319
+
320
+ List the old App page links you manage and the Space each one opens.
321
+
322
+ When to use: Find an old App page link that opens a binned Space (trashed: true) before repointing it.
323
+
324
+ Options:
325
+ - `--legacy-id <id>` — Old App ID the links belong to.
326
+ - `--kind <kind>` — app (default), report or html.
327
+
328
+ Examples:
329
+ - `npx --package @notis_ai/cli@latest -- notis spaces aliases list --legacy-id <app-id>`
330
+
331
+ ### `npx --package @notis_ai/cli@latest -- notis spaces aliases repoint`
332
+
333
+ Point one old App page link at a live Space you edit.
334
+
335
+ 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.
336
+
337
+ Options:
338
+ - `--legacy-id <id>` — Old App ID the link belongs to.
339
+ - `--route <slug>` — Old App page route from spaces aliases list.
340
+ - `--space <space-id>` — Live Space the old link should open.
341
+ - `--expected-space <space-id>` — Space the link opens now; the change is refused if it moved since you listed it.
342
+ - `--selection-param <name>` — Declared view parameter that receives the old page selection, if any.
343
+ - `--request-id <key>` — Stable intent key; reuse it unchanged when retrying this change.
344
+ - `--dry-run` — Check authority and the new Space without changing the link.
345
+
346
+ Examples:
347
+ - `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`
348
+
349
+ ### `npx --package @notis_ai/cli@latest -- notis spaces pull <space-id> [dir]`
350
+
351
+ Pull one editable Space source snapshot, its resource list and its Skill folders into an empty directory.
352
+
353
+ 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.
354
+
355
+ Options:
356
+ - `--revision <number>` — Exact published source revision; defaults to the current one.
357
+
358
+ Examples:
359
+ - `npx --package @notis_ai/cli@latest -- notis spaces pull <space-id> ./space-source`
360
+
361
+ ### `npx --package @notis_ai/cli@latest -- notis spaces verify [dir]`
362
+
363
+ Render one frozen Space with offline fixtures and validate its current action authorizations.
364
+
365
+ When to use: Check immutable build bytes and authoring compatibility without executing actions or publishing.
366
+
367
+ Options:
368
+ - `--space <key>` — Exact source key from the workspace index.
369
+ - `--space-id <id>` — Exact existing destination Space.
370
+ - `--reuse-grants <json>` — Explicit action-key to saved-grant-ID map. Otherwise your own connections are used.
371
+ - `--reuse-grants-only` — Never authorize new actions. Reuse only the supplied saved grants; other declarations remain unavailable. Requires existing bound databases.
372
+
373
+ Examples:
374
+ - `npx --package @notis_ai/cli@latest -- notis spaces verify . --space overview --space-id <space-id>`
375
+
376
+ ### `npx --package @notis_ai/cli@latest -- notis spaces preview [dir]`
377
+
378
+ Seal a checked unpublished revision of the same Space and return its authenticated preview link.
379
+
380
+ When to use: Review a checked candidate using current Editor access without changing live source or cloning the Space.
381
+
382
+ Options:
383
+ - `--space <key>` — Exact source key from the workspace index.
384
+ - `--space-id <id>` — Exact existing destination Space.
385
+ - `--reuse-grants <json>` — Explicit action-key to saved-grant-ID map. Otherwise your own connections are used.
386
+ - `--reuse-grants-only` — Never authorize new actions. Reuse only the supplied saved grants; other declarations remain unavailable. Requires existing bound databases.
387
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
388
+ - `--dry-run` — Validate without uploading or publishing.
389
+
390
+ Examples:
391
+ - `npx --package @notis_ai/cli@latest -- notis spaces preview . --space overview --space-id <space-id> --request-id release-1`
392
+
393
+ ### `npx --package @notis_ai/cli@latest -- notis spaces deploy [dir]`
394
+
395
+ Publish one built Space with a retry-safe, independent source revision.
396
+
397
+ When to use: Update only the selected existing Space; this does not publish to the Store or change siblings.
398
+
399
+ Options:
400
+ - `--space <key>` — Exact source key from the workspace index.
401
+ - `--space-id <id>` — Exact existing destination Space.
402
+ - `--reuse-grants <json>` — Explicit action-key to saved-grant-ID map. Otherwise your own connections are used.
403
+ - `--reuse-grants-only` — Never authorize new actions. Reuse only the supplied saved grants; other declarations remain unavailable. Requires existing bound databases.
404
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
405
+ - `--dry-run` — Validate without uploading or publishing.
406
+
407
+ Examples:
408
+ - `npx --package @notis_ai/cli@latest -- notis spaces deploy . --space overview --space-id <space-id> --request-id release-1`
409
+
410
+ ### `npx --package @notis_ai/cli@latest -- notis spaces promote <release-id> [dir]`
411
+
412
+ Publish the exact sealed Space revision, with its pending Skill and link changes, after current permission and concurrency checks.
413
+
414
+ 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.
415
+
416
+ Examples:
417
+ - `npx --package @notis_ai/cli@latest -- notis spaces promote <release-id>`
418
+
419
+ ### `npx --package @notis_ai/cli@latest -- notis spaces abandon <release-id>`
420
+
421
+ Close an unpublished Space preview without changing its live source, Skills or links, or deleting action history.
422
+
423
+ When to use: Stop using a candidate while preserving live source and completed effects.
424
+
425
+ Examples:
426
+ - `npx --package @notis_ai/cli@latest -- notis spaces abandon <release-id>`
427
+
428
+ ### `npx --package @notis_ai/cli@latest -- notis spaces list`
429
+
430
+ List Spaces currently available to your account.
431
+
432
+ When to use: Discover accessible Spaces without exposing an issuer-wide resource catalogue.
433
+
434
+ Examples:
435
+ - `npx --package @notis_ai/cli@latest -- notis spaces list`
436
+
437
+ ### `npx --package @notis_ai/cli@latest -- notis spaces get <space-id>`
438
+
439
+ Read one accessible Space and its scoped resources.
440
+
441
+ When to use: Inspect the current published revision and named capabilities before executing.
442
+
443
+ Options:
444
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
445
+
446
+ Examples:
447
+ - `npx --package @notis_ai/cli@latest -- notis spaces get <space-id>`
448
+
449
+ ### `npx --package @notis_ai/cli@latest -- notis spaces action <space-id> <action-id>`
450
+
451
+ Execute a declared action using its saved authorization.
452
+
453
+ When to use: Use Space capabilities as the actual actor, with the saved issuer connection and payer.
454
+
455
+ Options:
456
+ - `--revision <number>` — Exact published source revision.
457
+ - `--preview-release <id>` — Exact sealed candidate ID; requires current Editor access.
458
+ - `--schema-revision <number>` — Native schema revision; required for native row writes.
459
+ - `--inputs <json>` — Declared action input values; defaults to {}.
460
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
461
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
462
+ - `--dry-run` — Validate current access and action inputs without executing or billing.
463
+
464
+ Examples:
465
+ - `npx --package @notis_ai/cli@latest -- notis spaces action <space-id> refresh --revision 1 --inputs '{}' --request-id refresh-1 --dry-run`
466
+
467
+ ### `npx --package @notis_ai/cli@latest -- notis spaces viewer-read <space-id> <operation>`
468
+
469
+ Run one declared viewer read as yourself.
470
+
471
+ 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.
472
+
473
+ Options:
474
+ - `--revision <number>` — Exact published source revision.
475
+ - `--preview-release <id>` — Exact sealed candidate ID; requires current Editor access.
476
+ - `--input <json>` — Read input, e.g. {"database_id":"<id>"}; defaults to {}.
477
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
478
+
479
+ Examples:
480
+ - `npx --package @notis_ai/cli@latest -- notis spaces viewer-read <space-id> list_databases --revision 3`
481
+ - `npx --package @notis_ai/cli@latest -- notis spaces viewer-read <space-id> query_database --revision 3 --input '{"database_id":"<id>","request":{"page_size":20}}'`
482
+
483
+ ### `npx --package @notis_ai/cli@latest -- notis spaces grants list <space-id>`
484
+
485
+ Inspect authorization records for a Space you can edit.
486
+
487
+ When to use: Inspect issuers and exact constraints without exposing connection secrets.
488
+
489
+ Options:
490
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
491
+
492
+ Examples:
493
+ - `npx --package @notis_ai/cli@latest -- notis spaces grants list <space-id>`
494
+
495
+ ### `npx --package @notis_ai/cli@latest -- notis spaces grants create <space-id>`
496
+
497
+ Authorize an exact template using your current connection.
498
+
499
+ When to use: Create a Space-bound authorization; the server resolves the signed-in issuer connection.
500
+
501
+ Options:
502
+ - `--template <file>` — Canonical action template JSON file.
503
+ - `--record <record-key>` — Fixed record context, when this is a record-scoped Space.
504
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
505
+ - `--dry-run` — Validate the template and Editor access without creating a grant.
506
+
507
+ Examples:
508
+ - `npx --package @notis_ai/cli@latest -- notis spaces grants create <space-id> --template action.json --request-id grant-1 --dry-run`
509
+
510
+ ### `npx --package @notis_ai/cli@latest -- notis spaces grants revoke <grant-id>`
511
+
512
+ Revoke one saved Space authorization.
513
+
514
+ When to use: Stop future dispatches for an authorization you issued or can administer.
515
+
516
+ Examples:
517
+ - `npx --package @notis_ai/cli@latest -- notis spaces grants revoke <grant-id>`
518
+
519
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store list`
520
+
521
+ List Space Store listings you can see.
522
+
523
+ When to use: Find Space templates published to your team or approved for everyone, and your own listings.
524
+
525
+ Options:
526
+ - `--channel <team|public>` — Only one channel.
527
+
528
+ Examples:
529
+ - `npx --package @notis_ai/cli@latest -- notis spaces store list --channel team`
530
+
531
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store get <listing-id>`
532
+
533
+ Read one Store listing with its versions and your installs.
534
+
535
+ When to use: Check what a listing contains, its review state and whether your copies have an update.
536
+
537
+ Examples:
538
+ - `npx --package @notis_ai/cli@latest -- notis spaces store get <listing-id>`
539
+
540
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store installs`
541
+
542
+ List the Spaces you installed from the Store.
543
+
544
+ When to use: See which installed copies have an update or conflicts to resolve.
545
+
546
+ Examples:
547
+ - `npx --package @notis_ai/cli@latest -- notis spaces store installs`
548
+
549
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store publish <space-id>`
550
+
551
+ Publish a Space and its sub-Spaces as the next Store version.
552
+
553
+ When to use: Share a Space as an installable template: team listings publish at once, public ones wait for review.
554
+
555
+ Options:
556
+ - `--channel <team|public>` — Where to publish.
557
+ - `--metadata <json>` — Listing name, tagline, description, category, icon, accent.
558
+ - `--starter <json>` — Starter row IDs per database ({"<database-id>":["<record-key>"]}).
559
+ - `--notes <text>` — Release notes for this version.
560
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
561
+ - `--dry-run` — Show the package counts and review diff without publishing.
562
+
563
+ Examples:
564
+ - `npx --package @notis_ai/cli@latest -- notis spaces store publish <space-id> --channel team --request-id publish-1 --dry-run`
565
+
566
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store install <listing-id>`
567
+
568
+ Install a Store listing as your own independent copy.
569
+
570
+ When to use: Add a published Space template to your account; your copy keeps your changes on later updates.
571
+
572
+ Options:
573
+ - `--name <name>` — Name of the installed top Space.
574
+ - `--parent <space-id>` — Install under one of your Spaces.
575
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
576
+ - `--dry-run` — Show what the copy contains without installing.
577
+
578
+ Examples:
579
+ - `npx --package @notis_ai/cli@latest -- notis spaces store install <listing-id> --request-id install-1`
580
+
581
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store update <install-id>`
582
+
583
+ Update an installed copy, keeping your changes, or resolve its conflicts.
584
+
585
+ When to use: Take a newer Store version: unchanged parts update, your edits stay, and parts both sides changed become conflicts you resolve.
586
+
587
+ Options:
588
+ - `--resolve <json>` — Per conflict key: "keep_mine" or "take_theirs".
589
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
590
+ - `--dry-run` — Show the three-way plan without changing anything.
591
+
592
+ Examples:
593
+ - `npx --package @notis_ai/cli@latest -- notis spaces store update <install-id> --request-id update-1 --dry-run`
594
+ - `npx --package @notis_ai/cli@latest -- notis spaces store update <install-id> --resolve '{"skill:<key>":"keep_mine"}' --request-id resolve-1`
595
+
596
+ ### `npx --package @notis_ai/cli@latest -- notis spaces store unpublish <listing-id>`
597
+
598
+ Stop new installs of a Store listing.
599
+
600
+ When to use: Withdraw a listing: existing copies keep working and a version waiting for review is withdrawn.
601
+
602
+ Options:
603
+ - `--request-id <key>` — Stable intent key. Reuse after timeouts or lost replies.
604
+
605
+ Examples:
606
+ - `npx --package @notis_ai/cli@latest -- notis spaces store unpublish <listing-id> --request-id unpublish-1`
607
+
608
+ ### `npx --package @notis_ai/cli@latest -- notis spaces build [dir]`
609
+
610
+ Build one independent Space and save its frozen source/artifact snapshot.
611
+
612
+ When to use: Prepare a selected Space for verification without publishing it or changing siblings.
613
+
614
+ Options:
615
+ - `--space <key>` — Exact source key from the workspace Space index.
616
+
617
+ Examples:
618
+ - `npx --package @notis_ai/cli@latest -- notis spaces build . --space overview`
619
+
620
+ ### `npx --package @notis_ai/cli@latest -- notis spaces inspect [dir]`
621
+
622
+ Inspect one local Space definition and its declared capabilities.
623
+
624
+ When to use: Read the selected source definition without loading sibling definitions or account resources.
625
+
626
+ Options:
627
+ - `--space <key>` — Exact source key from the workspace Space index.
628
+
629
+ Examples:
630
+ - `npx --package @notis_ai/cli@latest -- notis spaces inspect . --space overview`
631
+
632
+
633
+ ## Views
634
+
635
+ ### `npx --package @notis_ai/cli@latest -- notis views find`
636
+
637
+ Find the views you can open for a record, database, view link, Space or search.
638
+
639
+ When to use: Get fresh view-qualified links and declared URL parameters before citing or opening a view.
640
+
641
+ Options:
642
+ - `--record-key <id>` — Find views that show this exact native record.
643
+ - `--database-id <id>` — Find views over this database.
644
+ - `--url <url>` — Resolve this view link and its current parameters.
645
+ - `--space-id <id>` — Describe this Space view.
646
+ - `--query <text>` — Search accessible view names, descriptions and readable context.
647
+
648
+ Examples:
649
+ - `npx --package @notis_ai/cli@latest -- notis views find --record-key <record-key>`
650
+ - `npx --package @notis_ai/cli@latest -- notis views find --url <view-link>`
651
+ - `npx --package @notis_ai/cli@latest -- notis views find --query inbox`
652
+
653
+ ### `npx --package @notis_ai/cli@latest -- notis views render <url>`
654
+
655
+ Render a live view as Markdown and a full-height PNG with your current access.
656
+
657
+ When to use: Check the actual deployed view; writes are blocked and current access is checked again before any output is saved.
658
+
659
+ Options:
660
+ - `--outputs <kinds>` — Comma-separated markdown,screenshot (default both).
661
+ - `--width <pixels>` — 1440 (default) or 390.
662
+ - `--output-dir <path>` — New output directory; defaults to a unique .notis/renders directory. Existing files are never overwritten.
663
+
664
+ Examples:
665
+ - `npx --package @notis_ai/cli@latest -- notis views render <view-link> --outputs markdown,screenshot`
666
+
667
+
668
+ ## Legacy Apps
669
+
670
+ For accounts not yet moved to Spaces. A legacy App cannot declare Skills; Skills are linked to Spaces.
145
671
 
146
672
  ### `npx --package @notis_ai/cli@latest -- notis apps list`
147
673
 
@@ -329,121 +855,45 @@ Examples:
329
855
  - `npx --package @notis_ai/cli@latest -- notis apps doctor ./my-app`
330
856
 
331
857
 
332
- ## Reports
333
-
334
- Reports save standalone live SDK documents without an app or database. They do not deploy an app or change shared app routes.
335
-
336
- Use the standalone report build profile and author exactly one SDK route. Keep readable content in a separate context file. Build, verify, inspect the preview, then save. Save rebuilds and stub-verifies a frozen artifact before persistence; local verification does not prove that live data loaded in the saved report.
337
-
338
- To revise, read the current document and recover its source from the short-lived `report_source_url`. Pass `--document-id` and the freshly read `--expected-revision`. Read back the saved record and inspect its native URL. See the product `notis-reports` skill for the full authoring contract.
339
-
340
- ### `npx --package @notis_ai/cli@latest -- notis reports init <name> [dir]`
341
-
342
- Init a standalone live SDK report.
343
-
344
- When to use: Author a private standalone document using the shared view runtime; no app or database is required.
345
-
346
- Examples:
347
- - `npx --package @notis_ai/cli@latest -- notis reports init "Weekly report" ./weekly-report`
348
-
349
- ### `npx --package @notis_ai/cli@latest -- notis reports build [dir]`
858
+ ## Reports and saved HTML
350
859
 
351
- Build a standalone live SDK report.
352
-
353
- When to use: Author a private standalone document using the shared view runtime; no app or database is required.
354
-
355
- Examples:
356
- - `npx --package @notis_ai/cli@latest -- notis reports build ./weekly-report`
357
-
358
- ### `npx --package @notis_ai/cli@latest -- notis reports verify [dir]`
359
-
360
- Verify a standalone live SDK report.
361
-
362
- When to use: Author a private standalone document using the shared view runtime; no app or database is required.
363
-
364
- Options:
365
- - `--routes <slugs>` — Comma-separated route slugs. Default: every route in manifest.
366
- - `--port <n>` — Loopback port. Default: auto-pick.
367
- - `--skip-build` — Skip notis apps build; reuse existing .notis/output/.
368
- - `--mode <mode>` — stub | live. Default stub. Live posts to /portal_views/runtime_query with the CLI JWT and fails routes whose runtime calls all errored.
369
- - `--no-browser` — Start the harness server and print URLs; do not drive agent-browser.
370
- - `--keep-open` — Leave server + browser session running after report (for manual triage).
371
- - `--document-id <id>` — Saved report for live verification.
372
- - `--expected-revision <revision>` — Saved report revision for live verification.
373
-
374
- Examples:
375
- - `npx --package @notis_ai/cli@latest -- notis reports verify ./weekly-report`
376
-
377
- ### `npx --package @notis_ai/cli@latest -- notis reports preview [dir]`
378
-
379
- Preview a standalone live SDK report.
380
-
381
- When to use: Author a private standalone document using the shared view runtime; no app or database is required.
382
-
383
- Options:
384
- - `--routes <slugs>` — Comma-separated route slugs. Default: every route in manifest.
385
- - `--port <n>` — Loopback port. Default: auto-pick.
386
- - `--skip-build` — Skip notis apps build; reuse existing .notis/output/.
387
- - `--mode <mode>` — stub | live. Default stub. Live posts to /portal_views/runtime_query with the CLI JWT and fails routes whose runtime calls all errored.
388
- - `--no-browser` — Start the harness server and print URLs; do not drive agent-browser.
389
- - `--keep-open` — Leave server + browser session running after report (for manual triage).
390
- - `--document-id <id>` — Saved report for live verification.
391
- - `--expected-revision <revision>` — Saved report revision for live verification.
392
-
393
- Examples:
394
- - `npx --package @notis_ai/cli@latest -- notis reports preview ./weekly-report`
395
-
396
- ### `npx --package @notis_ai/cli@latest -- notis reports save [dir]`
397
-
398
- Build, verify and save a standalone live report document.
399
-
400
- When to use: Persist an independently owned report, not an app release.
401
-
402
- Options:
403
- - `--document-id <id>` — Existing report document to update.
404
- - `--expected-revision <revision>` — Current saved report revision; required for updates.
405
- - `--title <title>` — Required, including updates. Document title.
406
- - `--context-file <file>` — Required. UTF-8 readable report content and structure.
407
-
408
- Examples:
409
- - `npx --package @notis_ai/cli@latest -- notis reports save ./weekly-report --title "Weekly review" --context-file ./context.md`
860
+ Create independently authored interactive reports as Space views with the product `notis-reports` and `notis-apps` guidance. Build and verify the selected source, deploy within the user's authorization, then render its current view link.
410
861
 
862
+ 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.
411
863
 
412
864
  ## Hand-over
413
865
 
414
- Give the branch you are on to a Notis agent, which continues the work in a git worktree on the Notis cloud computer. `--route` picks the agent: the hosted Notis agent, or the user's own Codex/Claude Code in the cloud sandbox or on their Mac. `--branch-mode same` makes the agent commit onto your branch; the default cuts a new branch from it.
866
+ 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.
415
867
 
416
868
  ### `npx --package @notis_ai/cli@latest -- notis handover start <task>`
417
869
 
418
870
  Hand the current branch to a Notis agent and keep working.
419
871
 
420
- 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. Pick the agent with --route.
872
+ 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.
421
873
 
422
874
  Options:
875
+ - `--route <agent>` — Required. Which agent runs it: notis, codex or claude, or auto only when the user asks Notis to pick.
876
+ - `--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.
877
+ - `--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).
423
878
  - `--branch-mode <mode>` — same = the agent commits onto your branch. new = the agent cuts a new branch from it (default).
424
- - `--route <target>` — Which agent runs it: notis (hosted, default), codex_cloud, claude_cloud, codex_local, claude_local, or auto.
425
879
  - `--repo <slug>` — Configured repository slug on the cloud computer, when you know it.
426
880
  - `--no-wip` — Refuse on a dirty tree instead of committing the changes first.
427
881
 
428
882
  Examples:
429
- - `npx --package @notis_ai/cli@latest -- notis handover start "fix the failing auth tests"`
430
- - `npx --package @notis_ai/cli@latest -- notis handover start "finish the migration" --branch-mode same --route codex_cloud`
431
- - `npx --package @notis_ai/cli@latest -- notis handover start "add integration tests" --route claude_cloud`
432
- - `npx --package @notis_ai/cli@latest -- notis handover start "review and clean up this branch" --route claude_local`
883
+ - `npx --package @notis_ai/cli@latest -- notis handover start "fix the failing auth tests" --route codex --intelligence medium --speed normal`
884
+ - `npx --package @notis_ai/cli@latest -- notis handover start "finish the migration" --branch-mode same --route codex --intelligence high --speed normal`
885
+ - `npx --package @notis_ai/cli@latest -- notis handover start "add integration tests" --route claude --intelligence medium --speed normal`
886
+ - `npx --package @notis_ai/cli@latest -- notis handover start "review and clean up this branch" --route notis --intelligence low --speed flex`
433
887
 
434
- ### `npx --package @notis_ai/cli@latest -- notis handover status`
888
+ ### `npx --package @notis_ai/cli@latest -- notis handover status [request-id]`
435
889
 
436
- Show the coding-agent threads Notis is running for you.
890
+ Follow a hand-over, or list the work Notis is running for you.
437
891
 
438
- When to use: Use this after a hand-over to see whether the agent is still working.
439
-
440
- Options:
441
- - `--provider <provider>` — Filter to codex or claude_code.
442
- - `--refresh` — Force a live refresh instead of cached state.
892
+ 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.
443
893
 
444
894
  Examples:
445
895
  - `npx --package @notis_ai/cli@latest -- notis handover status`
446
- - `npx --package @notis_ai/cli@latest -- notis handover status --provider codex --refresh`
896
+ - `npx --package @notis_ai/cli@latest -- notis handover status 6f1c2e8a-4b7d-5c3e-9a1f-2d8b7e6c5a4f`
447
897
 
448
898
 
449
899
  ## Generic Tools
@@ -549,7 +999,7 @@ Examples:
549
999
 
550
1000
  Switch the default profile without signing any profile out.
551
1001
 
552
- When to use: Use this to change which account and API subsequent commands target. Every other profile keeps its credential.
1002
+ 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.
553
1003
 
554
1004
  Examples:
555
1005
  - `npx --package @notis_ai/cli@latest -- notis profile use work`