@notis_ai/cli 0.2.4 → 0.2.6
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.
- package/README.md +47 -5
- package/dist/scaffolds/notis-database/CHANGELOG.md +5 -0
- package/dist/scaffolds/notis-database/metadata/screenshot-1.png +0 -0
- package/dist/scaffolds/notis-database/notis.config.ts +0 -1
- package/dist/scaffolds/notis-database/src/mock-runtime.ts +1 -0
- package/dist/scaffolds/notis-journal/CHANGELOG.md +25 -0
- package/dist/scaffolds/notis-journal/app/globals.css +37 -0
- package/dist/scaffolds/notis-journal/app/insights/page.tsx +513 -0
- package/dist/scaffolds/notis-journal/app/journal-core.tsx +362 -0
- package/dist/scaffolds/notis-journal/app/journal-ui.tsx +337 -0
- package/dist/scaffolds/notis-journal/app/layout.tsx +6 -0
- package/dist/scaffolds/notis-journal/app/page.tsx +485 -0
- package/dist/scaffolds/notis-journal/components/ui/badge.tsx +28 -0
- package/dist/scaffolds/notis-journal/components/ui/button.tsx +53 -0
- package/dist/scaffolds/notis-journal/components/ui/card.tsx +56 -0
- package/dist/scaffolds/notis-journal/components.json +20 -0
- package/dist/scaffolds/notis-journal/index.html +12 -0
- package/dist/scaffolds/notis-journal/lib/utils.ts +6 -0
- package/dist/scaffolds/notis-journal/metadata/screenshot-1.png +0 -0
- package/dist/scaffolds/notis-journal/metadata/screenshot-2.png +0 -0
- package/dist/scaffolds/notis-journal/metadata/screenshot-3.png +0 -0
- package/dist/scaffolds/notis-journal/metadata/screenshot-4.png +0 -0
- package/dist/scaffolds/notis-journal/metadata/screenshot-5.png +0 -0
- package/dist/scaffolds/notis-journal/metadata/screenshot-6.png +0 -0
- package/dist/scaffolds/notis-journal/metadata/screenshot-fixtures.json +132 -0
- package/dist/scaffolds/notis-journal/notis.config.ts +93 -0
- package/dist/scaffolds/notis-journal/package.json +34 -0
- package/dist/scaffolds/notis-journal/packages/sdk/package.json +36 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/DocumentEditor.tsx +93 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/Markdown.tsx +60 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectActionBar.tsx +278 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectCheckbox.tsx +91 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectDragOverlay.tsx +39 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/config.ts +145 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/documents.ts +229 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useBackend.ts +41 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDatabaseSchema.ts +85 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocument.ts +78 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocuments.ts +121 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useMultiSelect.ts +539 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotis.ts +34 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotisNavigation.ts +49 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTool.ts +64 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTools.ts +56 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTopBarSearch.ts +73 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useUpsertDocument.ts +95 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/index.ts +83 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/provider.tsx +43 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/runtime.ts +220 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/styles.css +186 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/ui.ts +15 -0
- package/dist/scaffolds/notis-journal/packages/sdk/src/vite.ts +56 -0
- package/dist/scaffolds/notis-journal/packages/sdk/tsconfig.json +15 -0
- package/dist/scaffolds/notis-journal/postcss.config.mjs +8 -0
- package/dist/scaffolds/notis-journal/skills/journal-onboarding/SKILL.md +120 -0
- package/dist/scaffolds/notis-journal/src/dev-main.tsx +58 -0
- package/dist/scaffolds/notis-journal/src/mock-runtime.ts +197 -0
- package/dist/scaffolds/notis-journal/tailwind.config.ts +58 -0
- package/dist/scaffolds/notis-journal/tsconfig.json +23 -0
- package/dist/scaffolds/notis-journal/vite.config.ts +10 -0
- package/dist/scaffolds/notis-notes/CHANGELOG.md +5 -0
- package/dist/scaffolds/notis-notes/app/page.tsx +325 -543
- package/dist/scaffolds/notis-notes/metadata/screenshot-1.png +0 -0
- package/dist/scaffolds/notis-notes/notis.config.ts +0 -1
- package/dist/scaffolds/notis-random/CHANGELOG.md +5 -0
- package/dist/scaffolds/notis-random/metadata/screenshot-1.png +0 -0
- package/dist/scaffolds/notis-random/metadata/screenshot-2.png +0 -0
- package/dist/scaffolds/notis-random/notis.config.ts +0 -1
- package/dist/scaffolds/notis-random/src/mock-runtime.ts +1 -0
- package/dist/scaffolds.json +11 -0
- package/package.json +3 -3
- package/skills/notis-apps/SKILL.md +64 -6
- package/skills/notis-apps/cli.md +38 -2
- package/skills/notis-cli/SKILL.md +20 -2
- package/skills/notis-query/cli.md +1 -1
- package/src/command-specs/apps.js +529 -16
- package/src/command-specs/index.js +1 -1
- package/src/command-specs/meta.js +8 -2
- package/src/command-specs/tools.js +50 -37
- package/src/runtime/agent-browser.js +273 -1
- package/src/runtime/app-changelog.js +79 -0
- package/src/runtime/app-dev-server.js +113 -6
- package/src/runtime/app-dev-sessions.js +176 -12
- package/src/runtime/app-platform.js +200 -39
- package/src/runtime/assets/store-screenshot-dark.png +0 -0
- package/src/runtime/desktop-auth.js +93 -0
- package/src/runtime/profiles.js +37 -15
- package/src/runtime/store-screenshot.js +138 -0
- package/src/runtime/transport.js +21 -82
- package/template/.harness/index.html.tmpl +128 -6
- package/template/CHANGELOG.md +5 -0
- package/template/app/page.tsx +11 -41
- package/template/notis.config.ts +0 -1
- package/template/package-lock.json +4137 -0
- package/template/package.json +1 -0
- package/template/packages/sdk/package.json +4 -0
- package/template/packages/sdk/src/components/DocumentEditor.tsx +93 -0
- package/template/packages/sdk/src/components/Markdown.tsx +60 -0
- package/template/packages/sdk/src/components/MultiSelectActionBar.tsx +7 -2
- package/template/packages/sdk/src/config.ts +74 -0
- package/template/packages/sdk/src/documents.ts +229 -0
- package/template/packages/sdk/src/hooks/useDatabaseSchema.ts +85 -0
- package/template/packages/sdk/src/hooks/useDocument.ts +78 -0
- package/template/packages/sdk/src/hooks/useDocuments.ts +121 -0
- package/template/packages/sdk/src/hooks/useMultiSelect.ts +38 -2
- package/template/packages/sdk/src/hooks/useUpsertDocument.ts +54 -9
- package/template/packages/sdk/src/index.ts +30 -1
- package/template/packages/sdk/src/runtime.ts +76 -17
- package/template/packages/sdk/src/styles.css +148 -0
- package/dist/scaffolds/notis-database/metadata/cover.png +0 -0
- package/dist/scaffolds/notis-database/metadata/screenshot-2.png +0 -0
- package/dist/scaffolds/notis-database/metadata/screenshot-3.png +0 -0
- package/dist/scaffolds/notis-notes/metadata/cover.png +0 -0
- package/dist/scaffolds/notis-notes/metadata/screenshot-2.png +0 -0
- package/dist/scaffolds/notis-notes/metadata/screenshot-3.png +0 -0
- package/dist/scaffolds/notis-random/metadata/cover.png +0 -0
- package/dist/scaffolds/notis-random/metadata/screenshot-3.png +0 -0
- package/template/metadata/cover.png +0 -0
- package/template/packages/sdk/src/hooks/useDatabase.ts +0 -76
|
Binary file
|
|
@@ -8,7 +8,6 @@ export default defineNotisApp({
|
|
|
8
8
|
author: { name: 'Notis' },
|
|
9
9
|
categories: ['Productivity'],
|
|
10
10
|
tagline: 'Folder-based notes with gallery, table, and calendar views.',
|
|
11
|
-
versionNotes: 'Initial scaffold release.',
|
|
12
11
|
databases: ['note_folders', 'notes'],
|
|
13
12
|
routes: [
|
|
14
13
|
{
|
|
Binary file
|
|
Binary file
|
package/dist/scaffolds.json
CHANGED
|
@@ -12,6 +12,17 @@
|
|
|
12
12
|
],
|
|
13
13
|
"tagline": "Explore every database and schema in your Notis workspace."
|
|
14
14
|
},
|
|
15
|
+
{
|
|
16
|
+
"slug": "notis-journal",
|
|
17
|
+
"name": "5 Minutes Journal",
|
|
18
|
+
"description": "A display-only five-minute journal built from your morning and evening check-ins with Notis. Browse daily mood, energy, motivation, gratitude, intentions, affirmations, highlights, lessons, and free-form reflections, then use Stats to see trends and ritual consistency over time.",
|
|
19
|
+
"icon": "phosphor:notebook",
|
|
20
|
+
"categories": [
|
|
21
|
+
"Personal",
|
|
22
|
+
"Productivity"
|
|
23
|
+
],
|
|
24
|
+
"tagline": "Five intentional minutes with Notis, split between morning and evening."
|
|
25
|
+
},
|
|
15
26
|
{
|
|
16
27
|
"slug": "notis-notes",
|
|
17
28
|
"name": "Notis Notes",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@notis_ai/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "Agent-first Notis CLI for apps and generic tool execution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"node": ">=18.0.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"commander": "^12.0.0"
|
|
32
|
+
"commander": "^12.0.0",
|
|
33
|
+
"sharp": "^0.34.5"
|
|
33
34
|
},
|
|
34
|
-
"devDependencies": {},
|
|
35
35
|
"keywords": [
|
|
36
36
|
"notis",
|
|
37
37
|
"cli",
|
|
@@ -26,11 +26,13 @@ Use the Notis CLI for the app lifecycle:
|
|
|
26
26
|
npx --package @notis_ai/cli@latest -- notis apps init
|
|
27
27
|
npx --package @notis_ai/cli@latest -- notis apps dev
|
|
28
28
|
npx --package @notis_ai/cli@latest -- notis apps build
|
|
29
|
+
npx --package @notis_ai/cli@latest -- notis apps screenshot
|
|
29
30
|
npx --package @notis_ai/cli@latest -- notis apps verify
|
|
30
31
|
npx --package @notis_ai/cli@latest -- notis apps create
|
|
31
32
|
npx --package @notis_ai/cli@latest -- notis apps link
|
|
32
33
|
npx --package @notis_ai/cli@latest -- notis apps pull
|
|
33
34
|
npx --package @notis_ai/cli@latest -- notis apps deploy
|
|
35
|
+
npx --package @notis_ai/cli@latest -- notis apps publish --confirm-ready
|
|
34
36
|
npx --package @notis_ai/cli@latest -- notis apps doctor
|
|
35
37
|
```
|
|
36
38
|
|
|
@@ -46,11 +48,17 @@ npx --package @notis_ai/cli@latest -- notis apps ...
|
|
|
46
48
|
- Build standard pages in `app/`. Do not write raw `views/<slug>/index.js` files.
|
|
47
49
|
- Keep navigation in `notis.config.ts` `routes`; each route needs a stable `slug`.
|
|
48
50
|
- Reference existing databases by slug in `notis.config.ts`; do not assume deploy creates databases automatically.
|
|
51
|
+
- Every native database is owned by exactly one app. Creating one with `LOCAL_NOTIS_DATABASE_UPSERT_DATABASE` requires the owning app's slug or id in the `app` argument (create the app first with `LOCAL_NOTIS_CREATE_APP` if needed); deleting an app deletes its databases and their documents.
|
|
49
52
|
- Declare runtime tool access in `notis.config.ts` `tools`.
|
|
50
53
|
- Use `@notis/sdk` hooks instead of direct runtime access.
|
|
51
54
|
- Do not rely on `window.__NOTIS_RUNTIME__` or portal-owned DOM hooks.
|
|
52
55
|
- `npx --package @notis_ai/cli@latest -- notis apps deploy` updates an installed app. It does not publish to the public App Store.
|
|
53
|
-
-
|
|
56
|
+
- **Local development first; deploy is user-gated.** Iterate with `apps dev` and hand off for the **user** to test in the desktop **Local development** sidebar group. Do not run `apps create` / `apps deploy` on your own — a clean build/verify is not permission to deploy. Deploy only when the user has tested the local build and explicitly asks. Finishing a build without deploying is the expected outcome.
|
|
57
|
+
- **Installed app links are explicit.** A mounted dev session updates an installed app only when the checkout is linked by app id in `.notis/state.json` and the active dev-session registry mirrors that id. Name or slug matches may be suggestions, never update targets.
|
|
58
|
+
- **Store submission is separately user-gated.** Run `apps publish --confirm-ready` only after the user explicitly confirms the current App Details page is ready. Deploy that exact approved state first; never infer Store approval from a deploy request.
|
|
59
|
+
- **Bump `notisAppVersion` for every Store update.** `package.json` must contain a semver `notisAppVersion`; increment it beyond the currently published registry version before deploying an update.
|
|
60
|
+
- **Keep release history in one root `CHANGELOG.md`.** Put the newest entry first and use `## [Release title] - YYYY-MM-DD`, or `{PR_MERGE_DATE}` before publication. Do not add new `versionNotes` fields to `notis.config.ts`. App Details reads **What’s New** and **Version History** from the deployed package manifest; the Store reads the latest published snapshot, so unpublished workspace edits never change it. The manifest exposes `package.json` `notisAppVersion` as the package version shown in App Details.
|
|
61
|
+
- Public submissions still use the registry review flow; the CLI invokes the same authenticated submission endpoint as App Details.
|
|
54
62
|
- Use Phosphor icon names with the `phosphor:` prefix. Do not use emoji icons.
|
|
55
63
|
- Prefer scaffolded shadcn components and portal theme tokens over custom visual systems.
|
|
56
64
|
|
|
@@ -70,27 +78,48 @@ npx --package @notis_ai/cli@latest -- notis apps init "My App"
|
|
|
70
78
|
npx --package @notis_ai/cli@latest -- notis apps pull <app-id> ./my-app
|
|
71
79
|
```
|
|
72
80
|
|
|
73
|
-
3. Install dependencies and develop:
|
|
81
|
+
3. Install dependencies and develop. Keep `apps dev` running and **hand off to the user** — it is what surfaces the app in the desktop **Local development** sidebar group, and letting the user test there is the finish line for a build request:
|
|
74
82
|
|
|
75
83
|
```bash
|
|
76
84
|
npm install
|
|
77
85
|
npx --package @notis_ai/cli@latest -- notis apps dev
|
|
78
86
|
```
|
|
79
87
|
|
|
80
|
-
|
|
88
|
+
The desktop lists a dev app only if its session is in the per-workspace registry it polls: `<workspace>/.context/app-dev-sessions.json`. A current CLI auto-resolves the nearest `.context` registry; on older CLIs (or when launched outside the workspace), pass `NOTIS_APP_DEV_SESSIONS_FILE="$CONDUCTOR_WORKSPACE_PATH/.context/app-dev-sessions.json"`. After starting, confirm your app's `devSlug` is in that file with a fresh `lastHeartbeatAt` — if it isn't, the session landed in the global `~/.notis` registry and the app won't appear in the sidebar.
|
|
89
|
+
|
|
90
|
+
4. Build, capture listing screenshots, and verify (still local — this does not deploy):
|
|
81
91
|
|
|
82
92
|
```bash
|
|
83
93
|
npx --package @notis_ai/cli@latest -- notis apps build
|
|
94
|
+
npx --package @notis_ai/cli@latest -- notis apps screenshot
|
|
84
95
|
npx --package @notis_ai/cli@latest -- notis apps verify
|
|
85
96
|
```
|
|
86
97
|
|
|
87
|
-
|
|
98
|
+
Declare 3–6 screenshots in `notis.config.ts`, each with a `path`, descriptive
|
|
99
|
+
`alt`, and optional `route`/`scenario`/`focus`/`theme`. Use `focus` to crop to a
|
|
100
|
+
real app root instead of empty browser canvas, and use `theme: 'light'` or
|
|
101
|
+
`theme: 'dark'` for a matching Portal render and Store frame. Paired light/dark
|
|
102
|
+
entries may reuse the same route and scenario. `notis apps screenshot` renders
|
|
103
|
+
those configured states in a headless harness and writes exact 2000x1250 PNGs
|
|
104
|
+
under `metadata/`, using the deterministic Store presentation by default. Use
|
|
105
|
+
`--raw` only for an unframed diagnostic capture. Apps are icon-led like Raycast:
|
|
106
|
+
the app icon represents the app everywhere, so there is no cover image — only
|
|
107
|
+
these screenshots. Re-run after changing routes or UI; it overwrites the set and
|
|
108
|
+
drops stale files. Use `--routes home,history` to capture a subset.
|
|
109
|
+
|
|
110
|
+
5. **Only after the user has tested the local build and explicitly asks to deploy**, create or link the remote app, then deploy (this installs or updates the app on the user's account, where it appears under **Workspace** rather than Local development). After first install, keep `.notis/state.json` linked to that installed app id so future dev-session actions become **Update** instead of another **Install**:
|
|
88
111
|
|
|
89
112
|
```bash
|
|
90
113
|
npx --package @notis_ai/cli@latest -- notis apps create "My App" .
|
|
91
114
|
npx --package @notis_ai/cli@latest -- notis apps deploy
|
|
92
115
|
```
|
|
93
116
|
|
|
117
|
+
6. **Only after the user explicitly confirms App Details is ready for Store review**, submit the deployed version:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
npx --package @notis_ai/cli@latest -- notis apps publish --confirm-ready
|
|
121
|
+
```
|
|
122
|
+
|
|
94
123
|
or:
|
|
95
124
|
|
|
96
125
|
```bash
|
|
@@ -104,20 +133,48 @@ Expected project shape:
|
|
|
104
133
|
|
|
105
134
|
```text
|
|
106
135
|
notis.config.ts
|
|
136
|
+
CHANGELOG.md # complete Store release history, newest entry first
|
|
107
137
|
vite.config.ts
|
|
108
138
|
app/
|
|
109
139
|
components/
|
|
110
|
-
metadata/
|
|
140
|
+
metadata/ # screenshot-N.png only — generated by `notis apps screenshot`
|
|
111
141
|
.notis/output/
|
|
112
142
|
```
|
|
113
143
|
|
|
144
|
+
`metadata/` holds 3–6 listing screenshots (`screenshot-1.png`, `screenshot-2.png`,
|
|
145
|
+
…). Each must be an exact 2000x1250 PNG no larger than 2 MB, with descriptive
|
|
146
|
+
alt text declared in `notis.config.ts`. There is no `cover.png`: apps are icon-led like Raycast and the icon set in
|
|
147
|
+
`notis.config.ts` represents the app in the Store. Generate screenshots with
|
|
148
|
+
`notis apps screenshot` rather than authoring PNGs by hand.
|
|
149
|
+
|
|
114
150
|
`notis.config.ts` owns:
|
|
115
151
|
|
|
116
|
-
- app metadata: name, title, description, icon, categories, tagline
|
|
152
|
+
- app metadata: name, title, description, icon, accent, categories, tagline
|
|
153
|
+
- listing screenshots: stable path, alt text, and optional capture route/scenario/focus/theme
|
|
117
154
|
- database slug references
|
|
118
155
|
- route definitions
|
|
119
156
|
- tool access
|
|
120
157
|
|
|
158
|
+
`CHANGELOG.md` owns Store release copy. Keep all releases in that single file:
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
# My App Changelog
|
|
162
|
+
|
|
163
|
+
## [A Better Workflow] - {PR_MERGE_DATE}
|
|
164
|
+
|
|
165
|
+
- Added a faster daily workflow.
|
|
166
|
+
|
|
167
|
+
## [Initial Release] - 2026-07-01
|
|
168
|
+
|
|
169
|
+
- Published the first version.
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Store publication is blocked until the deployed manifest contains at least one
|
|
173
|
+
valid entry. Ordinary local development and deployment still work when an app
|
|
174
|
+
is not being prepared for the Store.
|
|
175
|
+
|
|
176
|
+
**Icon & accent.** Set `icon` to a `phosphor:<name>` value (e.g. `phosphor:dice-five`) or `metadata/icon.png`. When `icon` is unset, the app shows its **two-letter initials** everywhere (store, sidebar, app details). `accent` optionally pins the avatar color to one of `blue | violet | emerald | amber | rose | sky | fuchsia | teal`; when unset a stable color is derived automatically from the app id. Both flow from `notis.config.ts` through deploy onto the app row and listing, and can also be changed later with the `update_app` tool (`{ "icon": "phosphor:...", "accent": "emerald" }`).
|
|
177
|
+
|
|
121
178
|
Example:
|
|
122
179
|
|
|
123
180
|
```ts
|
|
@@ -128,6 +185,7 @@ export default defineNotisApp({
|
|
|
128
185
|
title: 'My App',
|
|
129
186
|
description: 'A focused Notis app.',
|
|
130
187
|
icon: 'phosphor:squares-four',
|
|
188
|
+
accent: 'blue',
|
|
131
189
|
databases: ['tasks'],
|
|
132
190
|
routes: [
|
|
133
191
|
{
|
package/skills/notis-apps/cli.md
CHANGED
|
@@ -137,9 +137,9 @@ Examples:
|
|
|
137
137
|
|
|
138
138
|
### `npx --package @notis_ai/cli@latest -- notis apps verify [dir]`
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
Validate every route and the production Store listing contract.
|
|
141
141
|
|
|
142
|
-
When to use: After notis apps
|
|
142
|
+
When to use: After notis apps screenshot, before deploy. Catches render-time crashes, missing runtime calls, and incomplete listing media that the build step cannot detect.
|
|
143
143
|
|
|
144
144
|
Options:
|
|
145
145
|
- `--routes <slugs>` — Comma-separated route slugs. Default: every route in manifest.
|
|
@@ -155,6 +155,28 @@ Examples:
|
|
|
155
155
|
- `npx --package @notis_ai/cli@latest -- notis apps verify --mode live`
|
|
156
156
|
- `npx --package @notis_ai/cli@latest -- notis apps verify --no-browser # start the harness, drive agent-browser yourself`
|
|
157
157
|
|
|
158
|
+
### `npx --package @notis_ai/cli@latest -- notis apps screenshot [dir]`
|
|
159
|
+
|
|
160
|
+
Capture configured listing route/scenario states via the headless harness.
|
|
161
|
+
|
|
162
|
+
When to use: Generate the 3–6 declared metadata/screenshot-N.png files for the App Store listing. Apps are icon-led (like Raycast) — there is no cover image, only these screenshots. Each screenshot may set a focus selector to remove empty canvas and a light or dark theme that also controls its Store frame. Run before notis apps verify / deploy / publish.
|
|
163
|
+
|
|
164
|
+
Options:
|
|
165
|
+
- `--routes <slugs>` — Comma-separated route slugs. Default: every configured screenshot state.
|
|
166
|
+
- `--port <n>` — Loopback port. Default: auto-pick.
|
|
167
|
+
- `--width <px>` — Viewport width. Default: 2000.
|
|
168
|
+
- `--height <px>` — Viewport height. Default: 1250 (16:10).
|
|
169
|
+
- `--output-dir <dir>` — Where to write screenshot-N.png. Default: metadata/.
|
|
170
|
+
- `--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.
|
|
171
|
+
- `--raw` — Write the unframed harness capture instead of the default Store presentation.
|
|
172
|
+
- `--skip-build` — Skip notis apps build; reuse existing .notis/output/.
|
|
173
|
+
|
|
174
|
+
Examples:
|
|
175
|
+
- `npx --package @notis_ai/cli@latest -- notis apps screenshot # honors notis.config.ts screenshot scenarios`
|
|
176
|
+
- `npx --package @notis_ai/cli@latest -- notis apps screenshot --routes home,history`
|
|
177
|
+
- `npx --package @notis_ai/cli@latest -- notis apps screenshot --mode live # populated screenshots from real data`
|
|
178
|
+
- `npx --package @notis_ai/cli@latest -- notis apps screenshot --raw # diagnostic capture without Store framing`
|
|
179
|
+
|
|
158
180
|
### `npx --package @notis_ai/cli@latest -- notis apps link <app-id> [dir]`
|
|
159
181
|
|
|
160
182
|
Link a local project to a remote Notis app.
|
|
@@ -196,6 +218,20 @@ Examples:
|
|
|
196
218
|
- `npx --package @notis_ai/cli@latest -- notis apps deploy --app-id abc123`
|
|
197
219
|
- `npx --package @notis_ai/cli@latest -- notis apps deploy --direct`
|
|
198
220
|
|
|
221
|
+
### `npx --package @notis_ai/cli@latest -- notis apps publish [dir]`
|
|
222
|
+
|
|
223
|
+
Submit the deployed app for Store review.
|
|
224
|
+
|
|
225
|
+
When to use: After the user explicitly confirms the App Details page and Store listing are ready. Requires the current local project to match the latest deployed version.
|
|
226
|
+
|
|
227
|
+
Options:
|
|
228
|
+
- `--app-id <id>` — Override linked app ID.
|
|
229
|
+
- `--confirm-ready` — Confirm the user approved the current App Details page for Store submission.
|
|
230
|
+
|
|
231
|
+
Examples:
|
|
232
|
+
- `npx --package @notis_ai/cli@latest -- notis apps publish --confirm-ready`
|
|
233
|
+
- `npx --package @notis_ai/cli@latest -- notis apps publish ./my-app --confirm-ready`
|
|
234
|
+
|
|
199
235
|
### `npx --package @notis_ai/cli@latest -- notis apps doctor [dir]`
|
|
200
236
|
|
|
201
237
|
Check project health and readiness.
|
|
@@ -140,8 +140,9 @@ This is the main escape hatch for:
|
|
|
140
140
|
- `npx --package @notis_ai/cli@latest -- notis tools exec <tool-name> --arguments '<json>'`
|
|
141
141
|
6. If multiple independent calls are needed, use:
|
|
142
142
|
- `npx --package @notis_ai/cli@latest -- notis tools exec-parallel '<json-array>'`
|
|
143
|
-
7. If the toolkit is not connected yet,
|
|
143
|
+
7. If the toolkit is not connected yet, start its connection flow:
|
|
144
144
|
- `npx --package @notis_ai/cli@latest -- notis tools link <toolkit>`
|
|
145
|
+
- For a revoked or invalid credential-based connection, reconnect with credential JSON on stdin: `npx --package @notis_ai/cli@latest -- notis tools link <toolkit> --reconnect --credentials -`
|
|
145
146
|
|
|
146
147
|
### Tool access rules
|
|
147
148
|
|
|
@@ -150,6 +151,8 @@ This is the main escape hatch for:
|
|
|
150
151
|
- When you know the tool name but not the argument shape, use `npx --package @notis_ai/cli@latest -- notis tools describe` or `--get-schema` before execution.
|
|
151
152
|
- Use `--dry-run` before mutating calls when you want schema validation without execution.
|
|
152
153
|
- If a toolkit is missing, use `npx --package @notis_ai/cli@latest -- notis tools link <toolkit>` to start the connection flow.
|
|
154
|
+
- Use `--reconnect` to replace an existing connection. If multiple accounts exist, select one with `--connection-id <id>`.
|
|
155
|
+
- For API keys, basic auth, or other credential JSON, prefer `--credentials -` and pipe or redirect stdin. Avoid inline secrets because they can enter shell history and process listings.
|
|
153
156
|
|
|
154
157
|
### Toolkit mental model
|
|
155
158
|
|
|
@@ -202,6 +205,12 @@ Connect a missing toolkit:
|
|
|
202
205
|
npx --package @notis_ai/cli@latest -- notis tools link github
|
|
203
206
|
```
|
|
204
207
|
|
|
208
|
+
Reconnect a credential-based toolkit without putting the secret in shell history:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
npx --package @notis_ai/cli@latest -- notis tools link dataforseo --reconnect --credentials - < credentials.json
|
|
212
|
+
```
|
|
213
|
+
|
|
205
214
|
## Native database access
|
|
206
215
|
|
|
207
216
|
Native Notis databases are accessed through the generic tool workflow, not a first-class database command group. Use these canonical tool names:
|
|
@@ -209,7 +218,7 @@ Native Notis databases are accessed through the generic tool workflow, not a fir
|
|
|
209
218
|
- `LOCAL_NOTIS_DATABASE_LIST_DATABASES` -- list databases accessible to the current profile
|
|
210
219
|
- `LOCAL_NOTIS_DATABASE_GET_DATABASE` -- inspect read-only metadata and schema detail
|
|
211
220
|
- `LOCAL_NOTIS_DATABASE_QUERY` -- query documents from a database
|
|
212
|
-
- `LOCAL_NOTIS_DATABASE_UPSERT_DATABASE` -- create or update a database schema
|
|
221
|
+
- `LOCAL_NOTIS_DATABASE_UPSERT_DATABASE` -- create or update a database schema. Every database belongs to a Notis app: creation requires the owning app's slug or id in the `app` argument (create the app first with `LOCAL_NOTIS_CREATE_APP` if needed)
|
|
213
222
|
|
|
214
223
|
Example workflow before building an app:
|
|
215
224
|
|
|
@@ -239,6 +248,15 @@ Most importantly: if you do not currently have the tool you need, especially for
|
|
|
239
248
|
|
|
240
249
|
## Troubleshooting
|
|
241
250
|
|
|
251
|
+
### CLI returns `auth_expired`
|
|
252
|
+
|
|
253
|
+
Local CLI auth is renewed by Notis Desktop. In JSON/agent mode, follow the
|
|
254
|
+
first hint exactly: on macOS it is an executable `open -a 'Notis'` (or
|
|
255
|
+
`open -a 'Notis Beta'`) command when the owning desktop app is not running.
|
|
256
|
+
Wait for the app to restore the signed-in session, then rerun the original
|
|
257
|
+
command. Do not copy refresh tokens into commands or try to refresh the shared
|
|
258
|
+
desktop session yourself.
|
|
259
|
+
|
|
242
260
|
### Deploy fails with "network_error" or "fetch failed"
|
|
243
261
|
|
|
244
262
|
The backend server at `http://localhost:3001` is not running. Solutions:
|
|
@@ -13,7 +13,7 @@ For CI, hosted agents, or internal scripts, pass a non-persisted token with `NOT
|
|
|
13
13
|
- `LOCAL_NOTIS_DATABASE_LIST_DATABASES` — list native databases.
|
|
14
14
|
- `LOCAL_NOTIS_DATABASE_GET_DATABASE` — inspect one database schema.
|
|
15
15
|
- `LOCAL_NOTIS_DATABASE_QUERY` — query native database documents.
|
|
16
|
-
- `LOCAL_NOTIS_DATABASE_UPSERT_DATABASE` — create or update database schema.
|
|
16
|
+
- `LOCAL_NOTIS_DATABASE_UPSERT_DATABASE` — create or update database schema. Creation requires the owning app's slug or id in the `app` argument (every database belongs to a Notis app).
|
|
17
17
|
|
|
18
18
|
## Workflow
|
|
19
19
|
|