@notis_ai/cli 0.2.2 → 0.2.4

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 (81) hide show
  1. package/README.md +19 -18
  2. package/config/notis_app_boundary_rules.json +50 -0
  3. package/dist/scaffolds/notis-database/app/globals.css +44 -0
  4. package/dist/scaffolds/notis-database/app/page.tsx +1091 -0
  5. package/dist/scaffolds/notis-database/components/ui/table.tsx +120 -0
  6. package/dist/scaffolds/notis-database/index.html +12 -0
  7. package/dist/scaffolds/notis-database/lib/types.ts +134 -0
  8. package/dist/scaffolds/notis-database/metadata/cover.png +0 -0
  9. package/dist/scaffolds/notis-database/metadata/screenshot-1.png +0 -0
  10. package/dist/scaffolds/notis-database/metadata/screenshot-2.png +0 -0
  11. package/dist/scaffolds/notis-database/metadata/screenshot-3.png +0 -0
  12. package/dist/scaffolds/notis-database/notis.config.ts +27 -0
  13. package/dist/scaffolds/notis-database/package.json +31 -0
  14. package/dist/scaffolds/notis-database/src/dev-main.tsx +23 -0
  15. package/dist/scaffolds/notis-database/src/mock-runtime.ts +557 -0
  16. package/dist/scaffolds/notis-database/tailwind.config.ts +59 -0
  17. package/dist/scaffolds/{notes → notis-database}/tsconfig.json +2 -1
  18. package/dist/scaffolds/notis-database/vite.config.ts +22 -0
  19. package/dist/scaffolds/notis-notes/app/layout.tsx +6 -0
  20. package/dist/scaffolds/{notes → notis-notes}/app/page.tsx +783 -80
  21. package/dist/scaffolds/notis-notes/components/ui/badge.tsx +28 -0
  22. package/dist/scaffolds/notis-notes/components/ui/button.tsx +53 -0
  23. package/dist/scaffolds/notis-notes/components/ui/card.tsx +56 -0
  24. package/dist/scaffolds/notis-notes/components.json +20 -0
  25. package/dist/scaffolds/notis-notes/lib/utils.ts +6 -0
  26. package/dist/scaffolds/notis-notes/metadata/cover.png +0 -0
  27. package/dist/scaffolds/notis-notes/metadata/screenshot-1.png +0 -0
  28. package/dist/scaffolds/notis-notes/metadata/screenshot-2.png +0 -0
  29. package/dist/scaffolds/notis-notes/metadata/screenshot-3.png +0 -0
  30. package/dist/scaffolds/{notes → notis-notes}/notis.config.ts +12 -7
  31. package/dist/scaffolds/{notes → notis-notes}/package.json +2 -2
  32. package/dist/scaffolds/notis-notes/postcss.config.mjs +8 -0
  33. package/dist/scaffolds/notis-notes/tsconfig.json +23 -0
  34. package/dist/scaffolds/notis-random/README.md +33 -0
  35. package/dist/scaffolds/notis-random/app/globals.css +11 -0
  36. package/dist/scaffolds/notis-random/app/history/page.tsx +66 -0
  37. package/dist/scaffolds/notis-random/app/layout.tsx +7 -0
  38. package/dist/scaffolds/notis-random/app/page.tsx +222 -0
  39. package/dist/scaffolds/notis-random/index.html +12 -0
  40. package/dist/scaffolds/notis-random/lib/notis-tools.ts +109 -0
  41. package/dist/scaffolds/notis-random/lib/rng.ts +42 -0
  42. package/dist/scaffolds/notis-random/lib/roll-record.ts +102 -0
  43. package/dist/scaffolds/notis-random/lib/utils.ts +25 -0
  44. package/dist/scaffolds/notis-random/metadata/cover.png +0 -0
  45. package/dist/scaffolds/notis-random/metadata/screenshot-1.png +0 -0
  46. package/dist/scaffolds/notis-random/metadata/screenshot-2.png +0 -0
  47. package/dist/scaffolds/notis-random/metadata/screenshot-3.png +0 -0
  48. package/dist/scaffolds/notis-random/notis.config.ts +43 -0
  49. package/dist/scaffolds/notis-random/package.json +32 -0
  50. package/dist/scaffolds/notis-random/postcss.config.mjs +6 -0
  51. package/dist/scaffolds/notis-random/src/dev-main.tsx +70 -0
  52. package/dist/scaffolds/notis-random/src/mock-runtime.ts +128 -0
  53. package/dist/scaffolds/notis-random/tailwind.config.ts +43 -0
  54. package/dist/scaffolds/notis-random/tsconfig.json +23 -0
  55. package/dist/scaffolds/notis-random/vite.config.ts +11 -0
  56. package/dist/scaffolds.json +27 -4
  57. package/package.json +3 -1
  58. package/skills/notis-apps/SKILL.md +2 -2
  59. package/skills/notis-cli/SKILL.md +18 -16
  60. package/skills/notis-query/cli.md +9 -10
  61. package/src/cli.js +30 -2
  62. package/src/command-specs/apps.js +42 -15
  63. package/src/command-specs/helpers.js +73 -45
  64. package/src/command-specs/meta.js +7 -7
  65. package/src/command-specs/tools.js +196 -83
  66. package/src/runtime/app-boundary-validator.js +65 -14
  67. package/src/runtime/profiles.js +10 -4
  68. package/src/runtime/transport.js +122 -37
  69. package/template/app/page.tsx +1 -1
  70. package/template/notis.config.ts +1 -1
  71. package/template/packages/sdk/src/hooks/useTool.ts +1 -1
  72. /package/dist/scaffolds/{notes → notis-database}/app/layout.tsx +0 -0
  73. /package/dist/scaffolds/{notes → notis-database}/components/ui/badge.tsx +0 -0
  74. /package/dist/scaffolds/{notes → notis-database}/components/ui/button.tsx +0 -0
  75. /package/dist/scaffolds/{notes → notis-database}/components/ui/card.tsx +0 -0
  76. /package/dist/scaffolds/{notes → notis-database}/components.json +0 -0
  77. /package/dist/scaffolds/{notes → notis-database}/lib/utils.ts +0 -0
  78. /package/dist/scaffolds/{notes → notis-database}/postcss.config.mjs +0 -0
  79. /package/dist/scaffolds/{notes → notis-notes}/app/globals.css +0 -0
  80. /package/dist/scaffolds/{notes → notis-notes}/tailwind.config.ts +0 -0
  81. /package/dist/scaffolds/{notes → notis-notes}/vite.config.ts +0 -0
package/README.md CHANGED
@@ -179,9 +179,9 @@ Examples:
179
179
 
180
180
  ### `npx --package @notis_ai/cli@latest -- notis tools toolkits`
181
181
 
182
- List toolkit namespaces available to the active user.
182
+ List toolkit namespaces and connection statuses available to the active user.
183
183
 
184
- When to use: Use this before searching or executing generic tools.
184
+ When to use: Use this to inspect connection state before searching or executing generic tools.
185
185
 
186
186
  Examples:
187
187
  - `npx --package @notis_ai/cli@latest -- notis tools toolkits`
@@ -194,11 +194,11 @@ Search across toolkit namespaces using natural language.
194
194
  When to use: Use this when you need a generic capability that does not have a first-class CLI command.
195
195
 
196
196
  Options:
197
- - `--toolkits <csv-or-json>` — Optional subset of toolkit ids to search.
197
+ - `--known-fields <text>` — Optional known field hints, such as channel_name:general or user_email:a@example.com.
198
198
 
199
199
  Examples:
200
200
  - `npx --package @notis_ai/cli@latest -- notis tools search "send an email"`
201
- - `npx --package @notis_ai/cli@latest -- notis tools search "update framer page" --toolkits mcp-framer`
201
+ - `npx --package @notis_ai/cli@latest -- notis tools search "post on LinkedIn" --known-fields "platform:linkedin"`
202
202
 
203
203
  ### `npx --package @notis_ai/cli@latest -- notis tools describe <tool-name>`
204
204
 
@@ -206,12 +206,9 @@ Describe a generic tool by name.
206
206
 
207
207
  When to use: Use this when you know the tool name and want its parameter schema before execution.
208
208
 
209
- Options:
210
- - `--toolkits <csv-or-json>` — Optional subset of toolkit ids to search.
211
-
212
209
  Examples:
213
- - `npx --package @notis_ai/cli@latest -- notis tools describe composio-gmail-default-send_email`
214
- - `npx --package @notis_ai/cli@latest -- notis tools describe notis-default-query --toolkits notis-default`
210
+ - `npx --package @notis_ai/cli@latest -- notis tools describe composio-gmail-send_email`
211
+ - `npx --package @notis_ai/cli@latest -- notis tools describe LOCAL_NOTIS_DATABASE_QUERY`
215
212
 
216
213
  ### `npx --package @notis_ai/cli@latest -- notis tools exec <tool-name>`
217
214
 
@@ -221,17 +218,18 @@ When to use: Use this as the escape hatch for integrations or Notis tools withou
221
218
 
222
219
  Options:
223
220
  - `--arguments <json>` — JSON object, @file path, or - for stdin.
221
+ - `--file <argument-path=local-path>` — Upload a local file into a file-uploadable tool argument. Repeatable.
224
222
  - `--get-schema` — Display the tool parameter schema without executing.
225
223
  - `--dry-run` — Validate arguments against the tool schema without executing.
226
- - `--toolkits <csv-or-json>` — Optional toolkit namespace(s) to use when resolving the tool.
227
224
 
228
225
  Examples:
229
- - `npx --package @notis_ai/cli@latest -- notis tools exec notis-default-query --arguments '{"database_slug":"tasks","query":{}}'`
230
- - `npx --package @notis_ai/cli@latest -- notis tools exec notis-default-get_database --arguments '{"database_slug":"tasks"}'`
231
- - `npx --package @notis_ai/cli@latest -- notis tools exec notis-default-query --get-schema`
232
- - `npx --package @notis_ai/cli@latest -- notis tools exec notis-default-query --dry-run --arguments '{"database_slug":"tasks","query":{}}'`
233
- - `npx --package @notis_ai/cli@latest -- notis tools exec notis-default-query --arguments @query.json`
234
- - `npx --package @notis_ai/cli@latest -- notis tools exec notis-default-query --arguments - < query.json`
226
+ - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --arguments '{"database_slug":"tasks","query":{}}'`
227
+ - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_GET_DATABASE --arguments '{"database_slug":"tasks"}'`
228
+ - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --get-schema`
229
+ - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --dry-run --arguments '{"database_slug":"tasks","query":{}}'`
230
+ - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --arguments @query.json`
231
+ - `npx --package @notis_ai/cli@latest -- notis tools exec LOCAL_NOTIS_DATABASE_QUERY --arguments - < query.json`
232
+ - `npx --package @notis_ai/cli@latest -- notis tools exec composio-dropbox-upload_file --arguments '{"path":"/target/in/dropbox.pdf"}' --file content=./Invoice.pdf`
235
233
 
236
234
  ### `npx --package @notis_ai/cli@latest -- notis tools exec-parallel <calls>`
237
235
 
@@ -239,8 +237,11 @@ Execute multiple tools concurrently.
239
237
 
240
238
  When to use: Use this when you need to run independent tool calls simultaneously for speed.
241
239
 
240
+ Options:
241
+ - `--file <argument-path=local-path>` — Unsupported for exec-parallel; use tools exec for file uploads.
242
+
242
243
  Examples:
243
- - `npx --package @notis_ai/cli@latest -- notis tools exec-parallel '[{"tool_name":"notis-default-query","arguments":{"database_slug":"tasks","query":{}}},{"tool_name":"notis-default-list_databases","arguments":{}}]'`
244
+ - `npx --package @notis_ai/cli@latest -- notis tools exec-parallel '[{"tool_name":"LOCAL_NOTIS_DATABASE_QUERY","arguments":{"database_slug":"tasks","query":{}}},{"tool_name":"LOCAL_NOTIS_DATABASE_LIST_DATABASES","arguments":{}}]'`
244
245
 
245
246
  ### `npx --package @notis_ai/cli@latest -- notis tools link <toolkit>`
246
247
 
@@ -267,7 +268,7 @@ Examples:
267
268
 
268
269
  ### `npx --package @notis_ai/cli@latest -- notis whoami`
269
270
 
270
- Display the active profile, user, and available toolkits.
271
+ Display the active profile, user, and available toolkit connection statuses.
271
272
 
272
273
  When to use: Use this to quickly confirm which account and environment a command will target.
273
274
 
@@ -0,0 +1,50 @@
1
+ {
2
+ "javascript": [
3
+ {
4
+ "pattern": "window\\.__NOTIS_RUNTIME__",
5
+ "message": "window.__NOTIS_RUNTIME__ is forbidden; rely on the portal-injected NotisProvider runtime."
6
+ },
7
+ {
8
+ "pattern": "document\\.(?:body|head|documentElement)\\b",
9
+ "message": "document.body, document.head, and document.documentElement are forbidden; apps must stay inside the app surface."
10
+ },
11
+ {
12
+ "pattern": "document\\.(?:querySelector|querySelectorAll|getElementById|getElementsByClassName|getElementsByTagName)\\s*\\(\\s*(['\"`])[^\\n]*\\[data-notis-",
13
+ "message": "querying portal-owned [data-notis-*] hooks is forbidden."
14
+ },
15
+ {
16
+ "pattern": "createPortal\\s*\\(",
17
+ "message": "React portals are unsupported in Notis apps until a shadow-safe overlay contract exists."
18
+ },
19
+ {
20
+ "pattern": "@radix-ui/react-portal",
21
+ "message": "@radix-ui/react-portal is unsupported in Notis apps until a shadow-safe overlay contract exists."
22
+ },
23
+ {
24
+ "pattern": "PortalPrimitive",
25
+ "message": "Radix portal primitives are unsupported in Notis apps until a shadow-safe overlay contract exists."
26
+ }
27
+ ],
28
+ "css": [
29
+ {
30
+ "pattern": ":root\\b",
31
+ "message": ":root selectors are forbidden; styles must stay inside the app surface."
32
+ },
33
+ {
34
+ "pattern": "(^|[\\s,>+~])html(?=[\\s.#[:{>+~,]|$)",
35
+ "message": "html selectors are forbidden; styles must stay inside the app surface."
36
+ },
37
+ {
38
+ "pattern": "(^|[\\s,>+~])body(?=[\\s.#[:{>+~,]|$)",
39
+ "message": "body selectors are forbidden; styles must stay inside the app surface."
40
+ },
41
+ {
42
+ "pattern": "\\[data-notis-(?!app-root\\b)[^\\]]*\\]",
43
+ "message": "portal-owned [data-notis-*] selectors are forbidden. Use [data-notis-app-root] only for the app surface itself."
44
+ },
45
+ {
46
+ "pattern": "\\[data-sidebar(?:=[^\\]]+)?\\]",
47
+ "message": "portal sidebar selectors are forbidden."
48
+ }
49
+ ]
50
+ }
@@ -0,0 +1,44 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /*
6
+ * The portal mounts the app inside [data-notis-app-root] (display: block,
7
+ * min-height: 100% from @notis/sdk/styles.css). Width 100% ensures the
8
+ * two-pane layout can stretch to the full content area; height stays on
9
+ * the SDK's min-height: 100% default so the page can grow with content.
10
+ * The page itself uses `h-screen` to guarantee a fixed viewport height
11
+ * for the two-pane divider and centered empty states.
12
+ */
13
+ [data-notis-app-root] {
14
+ width: 100%;
15
+ }
16
+
17
+ /*
18
+ * Dev-preview fallback tokens. Active only when the dev entrypoint sets the
19
+ * data-dev-preview attribute. Production bundle runs inside the portal
20
+ * shadow root where the host injects real theme tokens, so this rule is
21
+ * scoped narrowly enough to never collide with portal-provided values.
22
+ */
23
+ [data-dev-preview] {
24
+ --background: 0 0% 100%;
25
+ --foreground: 0 0% 4%;
26
+ --card: 0 0% 100%;
27
+ --card-foreground: 0 0% 4%;
28
+ --popover: 0 0% 100%;
29
+ --popover-foreground: 0 0% 4%;
30
+ --primary: 0 0% 9%;
31
+ --primary-foreground: 0 0% 98%;
32
+ --secondary: 240 5% 96%;
33
+ --secondary-foreground: 0 0% 9%;
34
+ --muted: 240 5% 96%;
35
+ --muted-foreground: 240 4% 46%;
36
+ --accent: 240 5% 96%;
37
+ --accent-foreground: 0 0% 9%;
38
+ --destructive: 0 84% 60%;
39
+ --destructive-foreground: 0 0% 98%;
40
+ --border: 240 6% 90%;
41
+ --input: 240 6% 90%;
42
+ --ring: 0 0% 4%;
43
+ --radius: 0.5rem;
44
+ }