@notis_ai/cli 0.2.13 → 0.2.15
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 +125 -21
- package/dist/agent-hooks/notis-agent-hook.mjs +19750 -0
- package/{skills → dist/base-skills}/notis-apps/SKILL.md +93 -58
- package/{skills → dist/base-skills}/notis-cli/SKILL.md +9 -9
- package/dist/base-skills/notis-query/SKILL.md +705 -0
- package/dist/skill-sync/index.js +1528 -0
- package/dist/skill-sync/index.js.map +7 -0
- package/package.json +5 -2
- package/skills/notis-apps/cli.md +44 -18
- package/skills/notis-cli/AGENT_INSTRUCTIONS.md +39 -0
- package/skills/notis-onboarding/BRIEF.md +16 -0
- package/src/agent-hook-entry.js +5 -0
- package/src/cli.js +23 -14
- package/src/command-specs/agents.js +392 -0
- package/src/command-specs/apps.js +1090 -418
- package/src/command-specs/auth.js +63 -10
- package/src/command-specs/handover.js +374 -0
- package/src/command-specs/index.js +9 -0
- package/src/command-specs/onboarding.js +69 -5
- package/src/command-specs/skills.js +56 -0
- package/src/command-specs/tools.js +6 -0
- package/src/runtime/agent-memory-state.js +126 -0
- package/src/runtime/agent-setup.js +383 -0
- package/src/runtime/app-dev-consumers.js +154 -0
- package/src/runtime/app-dev-host-lock.js +80 -0
- package/src/runtime/app-dev-roots.js +284 -0
- package/src/runtime/app-dev-server.js +229 -30
- package/src/runtime/app-dev-sessions.js +105 -145
- package/src/runtime/app-platform.js +1499 -161
- package/src/runtime/app-registry-scaffolds.js +367 -0
- package/src/runtime/base-skills.d.ts +20 -0
- package/src/runtime/base-skills.js +167 -0
- package/src/runtime/delegated-context.js +68 -0
- package/src/runtime/git.js +233 -0
- package/src/runtime/login-listener.js +15 -0
- package/src/runtime/oauth.js +1506 -141
- package/src/runtime/output.js +7 -0
- package/src/runtime/ports.js +16 -0
- package/src/runtime/profiles.js +0 -5
- package/src/runtime/skill-sync/cloud-client.ts +96 -0
- package/src/runtime/skill-sync/index.ts +644 -0
- package/src/runtime/skill-sync/local-scanner.ts +1046 -0
- package/src/runtime/skill-sync/symlink-manager.ts +383 -0
- package/src/runtime/skill-sync/sync-plan.ts +22 -0
- package/src/runtime/skill-sync/types.ts +103 -0
- package/src/runtime/skill-sync/write-cloud-skill.ts +50 -0
- package/src/runtime/store-screenshot.js +6 -1
- package/src/runtime/sync-skills.d.ts +37 -0
- package/src/runtime/sync-skills.js +215 -0
- package/src/runtime/transport.js +19 -2
- package/template/.harness/index.html.tmpl +116 -47
- package/template/app/layout.tsx +5 -1
- package/template/notis.config.ts +1 -0
- package/template/packages/sdk/package.json +2 -1
- package/template/packages/sdk/src/components/DocumentEditor.tsx +13 -3
- package/template/packages/sdk/src/components/MarkdownEditor.tsx +121 -0
- package/template/packages/sdk/src/components/MultiSelectActionBar.tsx +37 -119
- package/template/packages/sdk/src/components/MultiSelectCheckbox.tsx +5 -1
- package/template/packages/sdk/src/components/MultiSelectDragOverlay.tsx +1 -1
- package/template/packages/sdk/src/components/NotisSelectionBoundary.tsx +55 -0
- package/template/packages/sdk/src/components/ShortcutHints.tsx +56 -0
- package/template/packages/sdk/src/config.ts +71 -0
- package/template/packages/sdk/src/documents.ts +28 -1
- package/template/packages/sdk/src/hooks/useActiveResource.ts +19 -0
- package/template/packages/sdk/src/hooks/useCloudComputer.ts +97 -0
- package/template/packages/sdk/src/hooks/useCollectionInteractions.ts +709 -0
- package/template/packages/sdk/src/hooks/useDatabaseSubscription.ts +76 -0
- package/template/packages/sdk/src/hooks/useHandover.ts +78 -0
- package/template/packages/sdk/src/hooks/useMultiSelect.ts +44 -482
- package/template/packages/sdk/src/hooks/useTool.ts +5 -4
- package/template/packages/sdk/src/index.ts +64 -2
- package/template/packages/sdk/src/interactions/actions.ts +46 -0
- package/template/packages/sdk/src/interactions/shortcuts.tsx +628 -0
- package/template/packages/sdk/src/interactions.ts +41 -0
- package/template/packages/sdk/src/provider.tsx +2 -1
- package/template/packages/sdk/src/runtime.ts +219 -3
- package/dist/scaffolds/notis-database/CHANGELOG.md +0 -5
- package/dist/scaffolds/notis-database/app/globals.css +0 -44
- package/dist/scaffolds/notis-database/app/layout.tsx +0 -6
- package/dist/scaffolds/notis-database/app/page.tsx +0 -1088
- package/dist/scaffolds/notis-database/components/ui/badge.tsx +0 -28
- package/dist/scaffolds/notis-database/components/ui/button.tsx +0 -53
- package/dist/scaffolds/notis-database/components/ui/card.tsx +0 -56
- package/dist/scaffolds/notis-database/components/ui/table.tsx +0 -120
- package/dist/scaffolds/notis-database/components.json +0 -20
- package/dist/scaffolds/notis-database/index.html +0 -12
- package/dist/scaffolds/notis-database/lib/types.ts +0 -132
- package/dist/scaffolds/notis-database/lib/utils.ts +0 -6
- package/dist/scaffolds/notis-database/metadata/screenshot-1.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-database/metadata/screenshot-4.png +0 -0
- package/dist/scaffolds/notis-database/metadata/screenshot-5.png +0 -0
- package/dist/scaffolds/notis-database/metadata/screenshot-fixtures.json +0 -1839
- package/dist/scaffolds/notis-database/notis.config.ts +0 -73
- package/dist/scaffolds/notis-database/package-lock.json +0 -3935
- package/dist/scaffolds/notis-database/package.json +0 -32
- package/dist/scaffolds/notis-database/packages/sdk/package.json +0 -36
- package/dist/scaffolds/notis-database/packages/sdk/src/components/DocumentEditor.tsx +0 -93
- package/dist/scaffolds/notis-database/packages/sdk/src/components/Markdown.tsx +0 -60
- package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
- package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
- package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
- package/dist/scaffolds/notis-database/packages/sdk/src/config.ts +0 -196
- package/dist/scaffolds/notis-database/packages/sdk/src/documents.ts +0 -229
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useBackend.ts +0 -41
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocument.ts +0 -78
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocuments.ts +0 -121
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotis.ts +0 -34
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTool.ts +0 -64
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTools.ts +0 -56
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
- package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
- package/dist/scaffolds/notis-database/packages/sdk/src/index.ts +0 -83
- package/dist/scaffolds/notis-database/packages/sdk/src/provider.tsx +0 -43
- package/dist/scaffolds/notis-database/packages/sdk/src/runtime.ts +0 -220
- package/dist/scaffolds/notis-database/packages/sdk/src/styles.css +0 -186
- package/dist/scaffolds/notis-database/packages/sdk/src/ui.ts +0 -15
- package/dist/scaffolds/notis-database/packages/sdk/src/vite.ts +0 -56
- package/dist/scaffolds/notis-database/packages/sdk/tsconfig.json +0 -15
- package/dist/scaffolds/notis-database/postcss.config.mjs +0 -8
- package/dist/scaffolds/notis-database/src/dev-main.tsx +0 -23
- package/dist/scaffolds/notis-database/src/mock-runtime.ts +0 -561
- package/dist/scaffolds/notis-database/tailwind.config.ts +0 -59
- package/dist/scaffolds/notis-database/tsconfig.json +0 -23
- package/dist/scaffolds/notis-database/vite.config.ts +0 -22
- package/dist/scaffolds/notis-journal/CHANGELOG.md +0 -29
- package/dist/scaffolds/notis-journal/app/globals.css +0 -37
- package/dist/scaffolds/notis-journal/app/insights/page.tsx +0 -513
- package/dist/scaffolds/notis-journal/app/journal-core.tsx +0 -362
- package/dist/scaffolds/notis-journal/app/journal-ui.tsx +0 -337
- package/dist/scaffolds/notis-journal/app/layout.tsx +0 -6
- package/dist/scaffolds/notis-journal/app/page.tsx +0 -486
- package/dist/scaffolds/notis-journal/components/ui/badge.tsx +0 -28
- package/dist/scaffolds/notis-journal/components/ui/button.tsx +0 -53
- package/dist/scaffolds/notis-journal/components/ui/card.tsx +0 -56
- package/dist/scaffolds/notis-journal/components.json +0 -20
- package/dist/scaffolds/notis-journal/index.html +0 -12
- package/dist/scaffolds/notis-journal/lib/utils.ts +0 -6
- 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 +0 -132
- package/dist/scaffolds/notis-journal/notis.config.ts +0 -93
- package/dist/scaffolds/notis-journal/package-lock.json +0 -4615
- package/dist/scaffolds/notis-journal/package.json +0 -34
- package/dist/scaffolds/notis-journal/packages/sdk/package.json +0 -36
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/DocumentEditor.tsx +0 -93
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/Markdown.tsx +0 -60
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
- package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
- package/dist/scaffolds/notis-journal/packages/sdk/src/config.ts +0 -196
- package/dist/scaffolds/notis-journal/packages/sdk/src/documents.ts +0 -229
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useBackend.ts +0 -41
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocument.ts +0 -78
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocuments.ts +0 -121
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotis.ts +0 -34
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTool.ts +0 -64
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTools.ts +0 -56
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
- package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
- package/dist/scaffolds/notis-journal/packages/sdk/src/index.ts +0 -83
- package/dist/scaffolds/notis-journal/packages/sdk/src/provider.tsx +0 -43
- package/dist/scaffolds/notis-journal/packages/sdk/src/runtime.ts +0 -220
- package/dist/scaffolds/notis-journal/packages/sdk/src/styles.css +0 -186
- package/dist/scaffolds/notis-journal/packages/sdk/src/ui.ts +0 -15
- package/dist/scaffolds/notis-journal/packages/sdk/src/vite.ts +0 -56
- package/dist/scaffolds/notis-journal/packages/sdk/tsconfig.json +0 -15
- package/dist/scaffolds/notis-journal/postcss.config.mjs +0 -8
- package/dist/scaffolds/notis-journal/skills/journal-onboarding/SKILL.md +0 -120
- package/dist/scaffolds/notis-journal/src/dev-main.tsx +0 -58
- package/dist/scaffolds/notis-journal/src/mock-runtime.ts +0 -197
- package/dist/scaffolds/notis-journal/tailwind.config.ts +0 -58
- package/dist/scaffolds/notis-journal/tsconfig.json +0 -23
- package/dist/scaffolds/notis-journal/vite.config.ts +0 -10
- package/dist/scaffolds/notis-notes/CHANGELOG.md +0 -5
- package/dist/scaffolds/notis-notes/app/globals.css +0 -3
- package/dist/scaffolds/notis-notes/app/layout.tsx +0 -6
- package/dist/scaffolds/notis-notes/app/page.tsx +0 -1943
- package/dist/scaffolds/notis-notes/app/phosphor-icons.ts +0 -596
- package/dist/scaffolds/notis-notes/components/ui/badge.tsx +0 -28
- package/dist/scaffolds/notis-notes/components/ui/button.tsx +0 -53
- package/dist/scaffolds/notis-notes/components/ui/card.tsx +0 -56
- package/dist/scaffolds/notis-notes/components.json +0 -20
- package/dist/scaffolds/notis-notes/lib/utils.ts +0 -6
- package/dist/scaffolds/notis-notes/lib/visible-properties.ts +0 -144
- package/dist/scaffolds/notis-notes/metadata/screenshot-1.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-notes/metadata/screenshot-4.png +0 -0
- package/dist/scaffolds/notis-notes/metadata/screenshot-5.png +0 -0
- package/dist/scaffolds/notis-notes/metadata/screenshot-fixtures.json +0 -752
- package/dist/scaffolds/notis-notes/notis.config.ts +0 -80
- package/dist/scaffolds/notis-notes/package-lock.json +0 -4636
- package/dist/scaffolds/notis-notes/package.json +0 -35
- package/dist/scaffolds/notis-notes/packages/sdk/package.json +0 -36
- package/dist/scaffolds/notis-notes/packages/sdk/src/components/DocumentEditor.tsx +0 -93
- package/dist/scaffolds/notis-notes/packages/sdk/src/components/Markdown.tsx +0 -60
- package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
- package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
- package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
- package/dist/scaffolds/notis-notes/packages/sdk/src/config.ts +0 -196
- package/dist/scaffolds/notis-notes/packages/sdk/src/documents.ts +0 -229
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useBackend.ts +0 -41
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocument.ts +0 -78
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocuments.ts +0 -121
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotis.ts +0 -34
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTool.ts +0 -64
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTools.ts +0 -56
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
- package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
- package/dist/scaffolds/notis-notes/packages/sdk/src/index.ts +0 -83
- package/dist/scaffolds/notis-notes/packages/sdk/src/provider.tsx +0 -43
- package/dist/scaffolds/notis-notes/packages/sdk/src/runtime.ts +0 -220
- package/dist/scaffolds/notis-notes/packages/sdk/src/styles.css +0 -186
- package/dist/scaffolds/notis-notes/packages/sdk/src/ui.ts +0 -15
- package/dist/scaffolds/notis-notes/packages/sdk/src/vite.ts +0 -56
- package/dist/scaffolds/notis-notes/packages/sdk/tsconfig.json +0 -15
- package/dist/scaffolds/notis-notes/postcss.config.mjs +0 -8
- package/dist/scaffolds/notis-notes/tailwind.config.ts +0 -58
- package/dist/scaffolds/notis-notes/tsconfig.json +0 -23
- package/dist/scaffolds/notis-notes/vite.config.ts +0 -10
- package/dist/scaffolds/notis-random/CHANGELOG.md +0 -15
- package/dist/scaffolds/notis-random/README.md +0 -33
- package/dist/scaffolds/notis-random/app/globals.css +0 -11
- package/dist/scaffolds/notis-random/app/history/page.tsx +0 -67
- package/dist/scaffolds/notis-random/app/layout.tsx +0 -7
- package/dist/scaffolds/notis-random/app/page.tsx +0 -289
- package/dist/scaffolds/notis-random/components/ui/button.tsx +0 -50
- package/dist/scaffolds/notis-random/components/ui/card.tsx +0 -16
- package/dist/scaffolds/notis-random/components/ui/input.tsx +0 -23
- package/dist/scaffolds/notis-random/components.json +0 -20
- package/dist/scaffolds/notis-random/index.html +0 -12
- package/dist/scaffolds/notis-random/lib/notis-tools.ts +0 -128
- package/dist/scaffolds/notis-random/lib/rng.ts +0 -202
- package/dist/scaffolds/notis-random/lib/roll-record.ts +0 -189
- package/dist/scaffolds/notis-random/lib/utils.ts +0 -25
- 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/metadata/screenshot-3.png +0 -0
- package/dist/scaffolds/notis-random/metadata/screenshot-4.png +0 -0
- package/dist/scaffolds/notis-random/metadata/screenshot-5.png +0 -0
- package/dist/scaffolds/notis-random/metadata/screenshot-fixtures.json +0 -753
- package/dist/scaffolds/notis-random/notis.config.ts +0 -86
- package/dist/scaffolds/notis-random/package-lock.json +0 -4513
- package/dist/scaffolds/notis-random/package.json +0 -36
- package/dist/scaffolds/notis-random/packages/sdk/package.json +0 -36
- package/dist/scaffolds/notis-random/packages/sdk/src/components/DocumentEditor.tsx +0 -93
- package/dist/scaffolds/notis-random/packages/sdk/src/components/Markdown.tsx +0 -60
- package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
- package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
- package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
- package/dist/scaffolds/notis-random/packages/sdk/src/config.ts +0 -196
- package/dist/scaffolds/notis-random/packages/sdk/src/documents.ts +0 -229
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useBackend.ts +0 -41
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocument.ts +0 -78
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocuments.ts +0 -121
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotis.ts +0 -34
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTool.ts +0 -64
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTools.ts +0 -56
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
- package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
- package/dist/scaffolds/notis-random/packages/sdk/src/index.ts +0 -83
- package/dist/scaffolds/notis-random/packages/sdk/src/provider.tsx +0 -43
- package/dist/scaffolds/notis-random/packages/sdk/src/runtime.ts +0 -220
- package/dist/scaffolds/notis-random/packages/sdk/src/styles.css +0 -186
- package/dist/scaffolds/notis-random/packages/sdk/src/ui.ts +0 -15
- package/dist/scaffolds/notis-random/packages/sdk/src/vite.ts +0 -56
- package/dist/scaffolds/notis-random/packages/sdk/tsconfig.json +0 -15
- package/dist/scaffolds/notis-random/postcss.config.mjs +0 -6
- package/dist/scaffolds/notis-random/src/dev-main.tsx +0 -70
- package/dist/scaffolds/notis-random/src/mock-runtime.ts +0 -129
- package/dist/scaffolds/notis-random/tailwind.config.ts +0 -50
- package/dist/scaffolds/notis-random/tsconfig.json +0 -23
- package/dist/scaffolds/notis-random/vite.config.ts +0 -11
- package/dist/scaffolds.json +0 -49
- package/template/metadata/screenshot-1.png +0 -0
- package/template/metadata/screenshot-2.png +0 -0
- package/template/metadata/screenshot-3.png +0 -0
|
@@ -25,7 +25,21 @@ export type DatabasePropertyType =
|
|
|
25
25
|
| 'status'
|
|
26
26
|
| 'relation'
|
|
27
27
|
| 'formula'
|
|
28
|
-
| 'files'
|
|
28
|
+
| 'files'
|
|
29
|
+
| 'secret';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The value of a `secret` property. The platform stores a pointer to a
|
|
33
|
+
* credential held elsewhere and never the credential itself, so there is
|
|
34
|
+
* deliberately nothing here to read the secret material from — only whether
|
|
35
|
+
* one is attached, which credential it is, and its lifecycle state.
|
|
36
|
+
*/
|
|
37
|
+
export interface SecretPropertyValue {
|
|
38
|
+
present: boolean;
|
|
39
|
+
reference: string | null;
|
|
40
|
+
status: string | null;
|
|
41
|
+
metadata: Record<string, unknown> | null;
|
|
42
|
+
}
|
|
29
43
|
|
|
30
44
|
export interface DatabasePropertyOption {
|
|
31
45
|
id?: string | null;
|
|
@@ -57,7 +71,7 @@ export interface DatabaseDescriptor {
|
|
|
57
71
|
* (pdf, xlsx, pptx, ...). Future content types (canvas, ...) extend this
|
|
58
72
|
* union without changing the component contracts.
|
|
59
73
|
*/
|
|
60
|
-
export type DocumentContentType = 'markdown' | 'file';
|
|
74
|
+
export type DocumentContentType = 'markdown' | 'file' | 'view';
|
|
61
75
|
|
|
62
76
|
export interface DocumentRecord {
|
|
63
77
|
id: string;
|
|
@@ -72,6 +86,9 @@ export interface DocumentRecord {
|
|
|
72
86
|
contentBlocknote?: Array<Record<string, unknown>> | null;
|
|
73
87
|
contentMarkdown?: string | null;
|
|
74
88
|
plainText?: string | null;
|
|
89
|
+
viewType?: string | null;
|
|
90
|
+
viewState?: Record<string, unknown> | null;
|
|
91
|
+
viewRevision?: number | null;
|
|
75
92
|
createdAt?: string | null;
|
|
76
93
|
lastEditedTime?: string | null;
|
|
77
94
|
}
|
|
@@ -88,6 +105,14 @@ export interface ToolDescriptor {
|
|
|
88
105
|
inputSchema?: ToolInputSchema;
|
|
89
106
|
}
|
|
90
107
|
|
|
108
|
+
export interface ToolCallOptions {
|
|
109
|
+
/**
|
|
110
|
+
* Coalesce an identical in-flight call. Only opt in for idempotent reads;
|
|
111
|
+
* mutations must execute once per invocation.
|
|
112
|
+
*/
|
|
113
|
+
dedupe?: boolean;
|
|
114
|
+
}
|
|
115
|
+
|
|
91
116
|
// ---------------------------------------------------------------------------
|
|
92
117
|
// Route types
|
|
93
118
|
// ---------------------------------------------------------------------------
|
|
@@ -155,6 +180,37 @@ export interface NotisRuntimeContext {
|
|
|
155
180
|
screenshotScenario?: string | null;
|
|
156
181
|
}
|
|
157
182
|
|
|
183
|
+
// ---------------------------------------------------------------------------
|
|
184
|
+
// App context shared with Notis
|
|
185
|
+
// ---------------------------------------------------------------------------
|
|
186
|
+
|
|
187
|
+
export type ContextAttributeValue = string | number | boolean | null;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* The specific thing currently in focus inside an app view. The host stamps
|
|
191
|
+
* app/view provenance onto this value before it reaches chat, so apps only
|
|
192
|
+
* describe their own resource rather than impersonating another surface.
|
|
193
|
+
*/
|
|
194
|
+
export interface ContextResource {
|
|
195
|
+
id: string;
|
|
196
|
+
kind: string;
|
|
197
|
+
label: string;
|
|
198
|
+
url?: string | null;
|
|
199
|
+
revision?: string | null;
|
|
200
|
+
attributes?: Record<string, ContextAttributeValue>;
|
|
201
|
+
snapshot?: {
|
|
202
|
+
format: 'text' | 'markdown';
|
|
203
|
+
content: string;
|
|
204
|
+
} | null;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/** A quote copied from an app, kept separate from the user's prompt. */
|
|
208
|
+
export interface ContextSelection {
|
|
209
|
+
id: string;
|
|
210
|
+
text: string;
|
|
211
|
+
resource?: ContextResource | null;
|
|
212
|
+
}
|
|
213
|
+
|
|
158
214
|
// ---------------------------------------------------------------------------
|
|
159
215
|
// Host-provided UI
|
|
160
216
|
// ---------------------------------------------------------------------------
|
|
@@ -175,6 +231,38 @@ export interface NotisDocumentEditorProps {
|
|
|
175
231
|
onSavingChange?: (saving: boolean) => void;
|
|
176
232
|
}
|
|
177
233
|
|
|
234
|
+
export interface NotisMarkdownEditorSavePayload {
|
|
235
|
+
markdown: string;
|
|
236
|
+
expectedRevision?: string | null;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export interface NotisMarkdownEditorSaveResult {
|
|
240
|
+
revision?: string | null;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Storage-neutral host markdown editor. The app owns persistence through
|
|
245
|
+
* `onSave`; the host only supplies Notis' editing experience.
|
|
246
|
+
*/
|
|
247
|
+
export interface NotisMarkdownEditorProps {
|
|
248
|
+
/** Stable identity of the edited resource. Changing it starts a fresh editor. */
|
|
249
|
+
resourceKey?: string;
|
|
250
|
+
value: string;
|
|
251
|
+
revision?: string | null;
|
|
252
|
+
readOnly?: boolean;
|
|
253
|
+
autosaveMs?: number;
|
|
254
|
+
placeholder?: string;
|
|
255
|
+
className?: string;
|
|
256
|
+
onChange?: (markdown: string) => void;
|
|
257
|
+
/** Persist an uploaded media/file block and return its durable URL. */
|
|
258
|
+
onUploadFile?: (file: File) => Promise<string>;
|
|
259
|
+
onSave?: (
|
|
260
|
+
payload: NotisMarkdownEditorSavePayload,
|
|
261
|
+
) => Promise<NotisMarkdownEditorSaveResult | void>;
|
|
262
|
+
onDirtyChange?: (dirty: boolean) => void;
|
|
263
|
+
onSavingChange?: (saving: boolean) => void;
|
|
264
|
+
}
|
|
265
|
+
|
|
178
266
|
/**
|
|
179
267
|
* Components the host (portal) injects through the runtime. Apps consume them
|
|
180
268
|
* via the SDK wrappers (e.g. `DocumentEditor`), which fall back gracefully
|
|
@@ -182,12 +270,91 @@ export interface NotisDocumentEditorProps {
|
|
|
182
270
|
*/
|
|
183
271
|
export interface NotisRuntimeUI {
|
|
184
272
|
DocumentEditor?: ComponentType<NotisDocumentEditorProps>;
|
|
273
|
+
MarkdownEditor?: ComponentType<NotisMarkdownEditorProps>;
|
|
185
274
|
}
|
|
186
275
|
|
|
187
276
|
// ---------------------------------------------------------------------------
|
|
188
277
|
// NotisRuntime
|
|
189
278
|
// ---------------------------------------------------------------------------
|
|
190
279
|
|
|
280
|
+
/**
|
|
281
|
+
* Options for `NotisRuntime.subscribeDatabase`.
|
|
282
|
+
*/
|
|
283
|
+
export interface SubscribeDatabaseOptions {
|
|
284
|
+
/**
|
|
285
|
+
* Called with `true` once a live change feed is attached, and with `false`
|
|
286
|
+
* when it drops or is torn down. Hosts without a change feed (dev harness,
|
|
287
|
+
* screenshot stub, vite preview) never call it, so `live` stays false there.
|
|
288
|
+
*/
|
|
289
|
+
onStatusChange?: (live: boolean) => void;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Work an app hands to the Notis manager chat through `NotisRuntime.handover`.
|
|
294
|
+
*/
|
|
295
|
+
export interface HandoverPayload {
|
|
296
|
+
/** Optional starter message. Omit it to open a context-only composer. */
|
|
297
|
+
prompt?: string;
|
|
298
|
+
/**
|
|
299
|
+
* Key of a skill declared in `notis.config.ts` -> `skills[].key`. The host
|
|
300
|
+
* rejects a key this app does not declare. Omit to hand over plain work.
|
|
301
|
+
*/
|
|
302
|
+
skill?: string;
|
|
303
|
+
/**
|
|
304
|
+
* Accepted for forward compatibility. The portal never submits a composer on
|
|
305
|
+
* the user's behalf today, so every handover resolves `drafted`; `sent` is
|
|
306
|
+
* reserved for a host that can genuinely dispatch the run.
|
|
307
|
+
*/
|
|
308
|
+
autoSend?: boolean;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export interface HandoverResult {
|
|
312
|
+
/** `drafted` when the user still has to press send, `sent` when it went straight through. */
|
|
313
|
+
status: 'drafted' | 'sent';
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* The user's cloud computer, as far as an app may see it.
|
|
318
|
+
*
|
|
319
|
+
* `exists` is false when the user has never had a sandbox provisioned. A
|
|
320
|
+
* `status` of anything other than `'running'` means the VM is asleep; reading
|
|
321
|
+
* these facts never wakes it.
|
|
322
|
+
*/
|
|
323
|
+
export interface CloudComputerSandboxFacts {
|
|
324
|
+
exists: boolean;
|
|
325
|
+
status: string | null;
|
|
326
|
+
provider: string | null;
|
|
327
|
+
created_at: string | null;
|
|
328
|
+
updated_at: string | null;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Whether a CLI inside the cloud computer is signed in.
|
|
333
|
+
*
|
|
334
|
+
* `authenticated: null` means *unknown*, never *signed out*: the sandbox was
|
|
335
|
+
* not running, or the probe could not answer. `reason` says which
|
|
336
|
+
* (`'sandbox_not_running'`, `'no_sandbox'`, `'sandbox_status_unknown'`,
|
|
337
|
+
* `'probe_failed'`, `'not_signed_in'`).
|
|
338
|
+
*/
|
|
339
|
+
export interface CloudComputerCliAuthFacts {
|
|
340
|
+
authenticated: boolean | null;
|
|
341
|
+
account: string | null;
|
|
342
|
+
checked_at: string | null;
|
|
343
|
+
reason: string | null;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
export interface CloudComputerFacts {
|
|
347
|
+
/**
|
|
348
|
+
* False when this host cannot answer at all — no cloud computer on the user's
|
|
349
|
+
* plan, or the platform could not resolve the facts. Render whatever the app
|
|
350
|
+
* did before rather than an error.
|
|
351
|
+
*/
|
|
352
|
+
available: boolean;
|
|
353
|
+
reason?: string | null;
|
|
354
|
+
sandbox: CloudComputerSandboxFacts | null;
|
|
355
|
+
cli_auth: { gh: CloudComputerCliAuthFacts };
|
|
356
|
+
}
|
|
357
|
+
|
|
191
358
|
export interface NotisRuntime {
|
|
192
359
|
app: AppDescriptor;
|
|
193
360
|
route: RouteDescriptor;
|
|
@@ -195,6 +362,51 @@ export interface NotisRuntime {
|
|
|
195
362
|
context: NotisRuntimeContext;
|
|
196
363
|
ui?: NotisRuntimeUI;
|
|
197
364
|
|
|
365
|
+
/** Publish or clear the focused resource inside the current app view. */
|
|
366
|
+
publishActiveResource?(resource: ContextResource | null): void;
|
|
367
|
+
|
|
368
|
+
/** Remember a copied quote so the host can recover it across iframe paste. */
|
|
369
|
+
captureContextSelection?(selection: ContextSelection): void;
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Subscribe to changes on an app-owned database. Returns an unsubscribe.
|
|
373
|
+
*
|
|
374
|
+
* The change notification is only a signal — it carries no rows. Consumers
|
|
375
|
+
* react by refetching through the normal tool path, so app scoping,
|
|
376
|
+
* permissions and billing are unchanged. Use the `useDatabaseSubscription`
|
|
377
|
+
* hook rather than calling this directly.
|
|
378
|
+
*/
|
|
379
|
+
subscribeDatabase?(
|
|
380
|
+
slug: string,
|
|
381
|
+
onChange: () => void,
|
|
382
|
+
options?: SubscribeDatabaseOptions,
|
|
383
|
+
): () => void;
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Hand a piece of work to the Notis manager chat. The app cannot run an
|
|
387
|
+
* agent itself: it describes the job, and the manager surface owns progress,
|
|
388
|
+
* billing, cancellation and the transcript. Results come back to the app
|
|
389
|
+
* through its own databases (see `useDatabaseSubscription`).
|
|
390
|
+
*
|
|
391
|
+
* Use the `useHandover` hook rather than calling this directly. Hosts
|
|
392
|
+
* without a manager chat (the dev harness, the vite preview) leave it
|
|
393
|
+
* undefined, so keep whatever fallback the app already offers.
|
|
394
|
+
*/
|
|
395
|
+
handover?(payload: HandoverPayload): Promise<HandoverResult>;
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Read-only facts about the user's cloud computer. Requires
|
|
399
|
+
* `capabilities.cloudComputer: 'read'` in `notis.config.ts` plus the user's
|
|
400
|
+
* approval; resolving it never creates, resumes or commands a sandbox.
|
|
401
|
+
*
|
|
402
|
+
* Use the `useCloudComputer` hook rather than calling this directly. Hosts
|
|
403
|
+
* without a cloud computer (the dev harness, the vite preview) answer
|
|
404
|
+
* `{ available: false }`, so keep whatever fallback the app already has.
|
|
405
|
+
* `{ refresh: true }` bypasses the host's short answer cache — the hook's
|
|
406
|
+
* refresh() sends it so a just-completed sign-in becomes visible.
|
|
407
|
+
*/
|
|
408
|
+
cloudComputerFacts?(options?: { refresh?: boolean }): Promise<CloudComputerFacts>;
|
|
409
|
+
|
|
198
410
|
navigate?: (payload: { kind: string; [key: string]: unknown }) => void;
|
|
199
411
|
|
|
200
412
|
registerTopBarSearch?: (
|
|
@@ -210,7 +422,11 @@ export interface NotisRuntime {
|
|
|
210
422
|
setTopBarSearchLoading?: (loading: boolean) => void;
|
|
211
423
|
|
|
212
424
|
listTools(): Promise<ToolDescriptor[]>;
|
|
213
|
-
callTool<TResult = unknown>(
|
|
425
|
+
callTool<TResult = unknown>(
|
|
426
|
+
name: string,
|
|
427
|
+
args?: Record<string, unknown>,
|
|
428
|
+
options?: ToolCallOptions,
|
|
429
|
+
): Promise<TResult>;
|
|
214
430
|
|
|
215
431
|
request(path: string, options?: {
|
|
216
432
|
method?: string;
|
|
@@ -1,44 +0,0 @@
|
|
|
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
|
-
}
|