@notis_ai/cli 0.2.0-beta.19.1 → 0.2.0-beta.196.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.
- package/README.md +822 -135
- package/bin/check-runtime.js +15 -0
- package/bin/notis.js +2 -0
- package/config/notis_app_boundary_rules.json +50 -0
- package/config/notis_app_design_rules.json +135 -0
- package/config/portal-route-roots.json +48 -0
- package/dist/agent-hooks/notis-agent-hook.mjs +45587 -0
- package/dist/base-skills/notis-apps/SKILL.md +93 -0
- package/dist/base-skills/notis-apps/references/architecture.md +114 -0
- package/dist/base-skills/notis-apps/references/context.md +81 -0
- package/dist/base-skills/notis-apps/references/design.md +97 -0
- package/dist/base-skills/notis-apps/references/memory.md +58 -0
- package/dist/base-skills/notis-apps/references/reading.md +67 -0
- package/dist/base-skills/notis-apps/references/release.md +107 -0
- package/dist/base-skills/notis-apps/references/sdk.md +116 -0
- package/dist/base-skills/notis-apps/references/troubleshooting.md +24 -0
- package/dist/base-skills/notis-apps/references/views.md +142 -0
- package/dist/base-skills/notis-cli/SKILL.md +154 -0
- package/dist/base-skills/notis-cli/references/app-delivery.md +19 -0
- package/dist/base-skills/notis-cli/references/intelligence.md +94 -0
- package/dist/base-skills/notis-cli/references/native-databases.md +21 -0
- package/dist/base-skills/notis-cli/references/tool-examples.md +56 -0
- package/dist/base-skills/notis-cli/references/troubleshooting.md +39 -0
- package/dist/base-skills/notis-query/SKILL.md +41 -0
- package/dist/base-skills/notis-query/references/database-discovery.md +60 -0
- package/dist/base-skills/notis-query/references/documents.md +63 -0
- package/dist/base-skills/notis-query/references/query.md +76 -0
- package/{template/packages/notis-sdk → dist/sdk}/package.json +14 -4
- package/dist/sdk/src/agentContext.ts +36 -0
- package/dist/sdk/src/bundleModule.ts +79 -0
- package/dist/sdk/src/components/Dialog.tsx +46 -0
- package/dist/sdk/src/components/DocumentEditor.tsx +106 -0
- package/dist/sdk/src/components/DocumentPage.tsx +141 -0
- package/dist/sdk/src/components/Markdown.tsx +60 -0
- package/dist/sdk/src/components/MarkdownEditor.tsx +121 -0
- package/dist/sdk/src/components/MultiSelectActionBar.tsx +285 -0
- package/dist/sdk/src/components/MultiSelectCheckbox.tsx +97 -0
- package/dist/sdk/src/components/MultiSelectDragOverlay.tsx +39 -0
- package/dist/sdk/src/components/NotisCommentBoundary.tsx +172 -0
- package/dist/sdk/src/components/NotisSelectionBoundary.tsx +59 -0
- package/dist/sdk/src/components/RecordComponents.tsx +33 -0
- package/dist/sdk/src/components/RenderChartData.tsx +19 -0
- package/dist/sdk/src/components/ShortcutHints.tsx +56 -0
- package/dist/sdk/src/components/Skeleton.tsx +24 -0
- package/dist/sdk/src/config.ts +239 -0
- package/dist/sdk/src/documents.ts +258 -0
- package/dist/sdk/src/hooks/useAction.ts +28 -0
- package/dist/sdk/src/hooks/useActiveResource.ts +19 -0
- package/dist/sdk/src/hooks/useAgentContext.ts +23 -0
- package/dist/sdk/src/hooks/useCloudComputer.ts +95 -0
- package/dist/sdk/src/hooks/useCloudComputerShell.ts +114 -0
- package/dist/sdk/src/hooks/useCollectionInteractions.ts +838 -0
- package/dist/sdk/src/hooks/useDatabaseSchema.ts +49 -0
- package/dist/sdk/src/hooks/useDatabaseSubscription.ts +76 -0
- package/dist/sdk/src/hooks/useDocument.ts +43 -0
- package/dist/sdk/src/hooks/useDocuments.ts +84 -0
- package/dist/sdk/src/hooks/useHandover.ts +78 -0
- package/dist/sdk/src/hooks/useLongPressSelection.ts +79 -0
- package/dist/sdk/src/hooks/useMultiSelect.ts +95 -0
- package/dist/sdk/src/hooks/useNativeDocumentBody.ts +50 -0
- package/dist/sdk/src/hooks/useNativeDocuments.ts +83 -0
- package/dist/sdk/src/hooks/useNotis.ts +42 -0
- package/dist/sdk/src/hooks/useNotisNavigation.ts +67 -0
- package/dist/sdk/src/hooks/useQuery.ts +74 -0
- package/dist/sdk/src/hooks/useTool.ts +65 -0
- package/dist/sdk/src/hooks/useToolQuery.ts +12 -0
- package/dist/sdk/src/hooks/useTopBarSearch.ts +81 -0
- package/dist/sdk/src/hooks/useUpsertDocument.ts +95 -0
- package/dist/sdk/src/hooks/useViewParams.ts +121 -0
- package/dist/sdk/src/hooks/useViewerReads.ts +129 -0
- package/dist/sdk/src/index.ts +200 -0
- package/dist/sdk/src/interactions/actions.ts +59 -0
- package/dist/sdk/src/interactions/shortcuts.tsx +740 -0
- package/dist/sdk/src/interactions/visibility.ts +13 -0
- package/dist/sdk/src/interactions.ts +45 -0
- package/dist/sdk/src/nativeData.ts +39 -0
- package/dist/sdk/src/presentation.tsx +82 -0
- package/dist/sdk/src/provider.tsx +49 -0
- package/dist/sdk/src/queryCache.ts +172 -0
- package/dist/sdk/src/queryErrors.ts +51 -0
- package/dist/sdk/src/runtime.ts +603 -0
- package/dist/sdk/src/space.ts +425 -0
- package/dist/sdk/src/styles.css +290 -0
- package/dist/sdk/src/tailwind.ts +66 -0
- package/dist/sdk/src/vite.ts +83 -0
- package/dist/skill-sync/index.js +2143 -0
- package/dist/skill-sync/index.js.map +7 -0
- package/dist/skill-sync-worker.mjs +3487 -0
- package/dist/space-harness/host.js +66 -0
- package/dist/view-renderer/dist/host.css +1 -0
- package/dist/view-renderer/dist/host.js +1042 -0
- package/dist/view-renderer/dist/theme.css +73 -0
- package/dist/view-renderer/src/dom.js +180 -0
- package/dist/view-renderer/src/errors.js +8 -0
- package/dist/view-renderer/src/host.tsx +173 -0
- package/dist/view-renderer/src/index.js +4 -0
- package/dist/view-renderer/src/pool.js +76 -0
- package/dist/view-renderer/src/remote-broker.js +59 -0
- package/dist/view-renderer/src/renderer.js +201 -0
- package/package.json +25 -8
- package/skills/notis-apps/cli.md +406 -0
- package/skills/notis-cli/AGENT_INSTRUCTIONS.md +39 -0
- package/skills/notis-onboarding/BRIEF.md +133 -0
- package/skills/notis-query/cli.md +39 -0
- package/src/agent-hook-entry.js +5 -0
- package/src/cli.js +294 -25
- package/src/command-specs/agents.js +392 -0
- package/src/command-specs/apps.js +1476 -203
- package/src/command-specs/auth.js +114 -137
- package/src/command-specs/diagnostics.js +730 -0
- package/src/command-specs/files.js +29 -0
- package/src/command-specs/handover.js +374 -0
- package/src/command-specs/helpers.js +86 -82
- package/src/command-specs/index.js +31 -6
- package/src/command-specs/meta.js +150 -18
- package/src/command-specs/onboarding.js +290 -0
- package/src/command-specs/profile.js +358 -0
- package/src/command-specs/skills.js +304 -0
- package/src/command-specs/smoke.js +386 -0
- package/src/command-specs/spaces.js +572 -0
- package/src/command-specs/tools.js +455 -139
- package/src/command-specs/views.js +69 -0
- package/src/runtime/agent-browser.js +700 -0
- package/src/runtime/agent-memory-state.js +126 -0
- package/src/runtime/agent-setup.js +383 -0
- package/src/runtime/app-boundary-validator.js +407 -0
- package/src/runtime/app-changelog.js +79 -0
- package/src/runtime/app-data-literals.js +82 -0
- package/src/runtime/app-platform.js +2752 -237
- package/src/runtime/app-registry-scaffolds.js +367 -0
- package/src/runtime/app-test-server.js +293 -0
- package/src/runtime/assets/store-screenshot-dark.png +0 -0
- package/src/runtime/auth-recovery.js +110 -0
- package/src/runtime/base-skills.d.ts +20 -0
- package/src/runtime/base-skills.js +167 -0
- package/src/runtime/channel.js +133 -0
- package/src/runtime/confined-space-build.js +74 -0
- package/src/runtime/confined-space-verify.js +49 -0
- package/src/runtime/delegated-context.js +68 -0
- package/src/runtime/errors.js +1 -0
- package/src/runtime/git.js +233 -0
- package/src/runtime/login-listener.js +15 -0
- package/src/runtime/native-record-files.js +47 -0
- package/src/runtime/oauth.js +2622 -0
- package/src/runtime/output.js +37 -5
- package/src/runtime/ports.js +31 -0
- package/src/runtime/profiles.js +906 -55
- package/src/runtime/retired-sdk-files.js +20 -0
- package/src/runtime/screenshot-framing.js +85 -0
- package/src/runtime/skill-sync/cloud-client.ts +121 -0
- package/src/runtime/skill-sync/index.ts +905 -0
- package/src/runtime/skill-sync/local-scanner.ts +1259 -0
- package/src/runtime/skill-sync/native-identity.ts +102 -0
- package/src/runtime/skill-sync/native-plan.ts +59 -0
- package/src/runtime/skill-sync/symlink-manager.ts +433 -0
- package/src/runtime/skill-sync/sync-plan.ts +54 -0
- package/src/runtime/skill-sync/types.ts +157 -0
- package/src/runtime/skill-sync/write-cloud-skill.ts +50 -0
- package/src/runtime/skill-sync-service.js +109 -0
- package/src/runtime/source-root.js +32 -0
- package/src/runtime/space-collection-scaffold.js +66 -0
- package/src/runtime/space-database-structures.js +229 -0
- package/src/runtime/space-fixture-broker.js +50 -0
- package/src/runtime/space-lock.js +337 -0
- package/src/runtime/space-platform.js +105 -0
- package/src/runtime/space-source.js +281 -0
- package/src/runtime/space-test-server.js +327 -0
- package/src/runtime/space-verification.js +89 -0
- package/src/runtime/space-verify-browser-worker.js +51 -0
- package/src/runtime/space-view-manifest.js +254 -0
- package/src/runtime/store-screenshot.js +146 -0
- package/src/runtime/sync-skills.d.ts +37 -0
- package/src/runtime/sync-skills.js +231 -0
- package/src/runtime/telemetry.js +92 -0
- package/src/runtime/transport.js +331 -45
- package/src/runtime/view-render.js +49 -0
- package/src/skill-sync-worker-entry.js +2 -0
- package/src/skill-sync-worker.js +50 -0
- package/src/space-harness-host.ts +103 -0
- package/template/.harness/index.html.tmpl +435 -0
- package/template/CHANGELOG.md +5 -0
- package/template/app/globals.css +29 -3
- package/template/app/layout.tsx +6 -3
- package/template/app/page.tsx +49 -42
- package/template/components/page-heading.tsx +23 -0
- package/template/components/ui/badge.tsx +7 -4
- package/template/components/ui/button.tsx +1 -1
- package/template/components/ui/card.tsx +24 -11
- package/template/components/ui/native-select.tsx +24 -0
- package/template/notis.config.ts +24 -6
- package/template/package-lock.json +3642 -0
- package/template/package.json +19 -16
- package/template/postcss.config.mjs +1 -1
- package/template/tailwind.config.ts +1 -6
- package/template/tsconfig.json +1 -0
- package/src/command-specs/db.js +0 -163
- package/src/runtime/app-preview-server.js +0 -312
- package/template/packages/notis-sdk/src/config.ts +0 -48
- package/template/packages/notis-sdk/src/helpers.ts +0 -131
- package/template/packages/notis-sdk/src/hooks/useAppState.ts +0 -50
- package/template/packages/notis-sdk/src/hooks/useCollectionItem.ts +0 -58
- package/template/packages/notis-sdk/src/hooks/useDatabase.ts +0 -87
- package/template/packages/notis-sdk/src/hooks/useDocument.ts +0 -61
- package/template/packages/notis-sdk/src/hooks/useNotis.ts +0 -31
- package/template/packages/notis-sdk/src/hooks/useNotisNavigation.ts +0 -49
- package/template/packages/notis-sdk/src/hooks/useTool.ts +0 -49
- package/template/packages/notis-sdk/src/hooks/useUpsertDocument.ts +0 -57
- package/template/packages/notis-sdk/src/index.ts +0 -47
- package/template/packages/notis-sdk/src/provider.tsx +0 -44
- package/template/packages/notis-sdk/src/runtime.ts +0 -159
- package/template/packages/notis-sdk/src/styles.css +0 -123
- package/template/packages/notis-sdk/src/vite.ts +0 -54
- package/template/packages/notis-sdk/tsconfig.json +0 -15
- /package/{template/packages/notis-sdk → dist/sdk}/src/hooks/useBackend.ts +0 -0
- /package/{template/packages/notis-sdk → dist/sdk}/src/hooks/useTools.ts +0 -0
- /package/{template/packages/notis-sdk → dist/sdk}/src/ui.ts +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { useNotisRuntime } from '../provider';
|
|
5
|
+
import { invalidateCloudComputerFacts } from './useCloudComputer';
|
|
6
|
+
import type {
|
|
7
|
+
SpaceCloudComputerLevel,
|
|
8
|
+
SpaceCloudComputerRunResult,
|
|
9
|
+
SpaceCloudComputerStatus,
|
|
10
|
+
SpaceCloudComputerUploadInput,
|
|
11
|
+
SpaceCloudComputerUploadResult,
|
|
12
|
+
} from '../space';
|
|
13
|
+
|
|
14
|
+
export interface UseCloudComputerShellResult {
|
|
15
|
+
/**
|
|
16
|
+
* The level this Space declares (`'read'` or `'shell'`) when this host offers the cloud computer,
|
|
17
|
+
* else null (Sites, links, verification harnesses, older hosts): keep the page's own fallback.
|
|
18
|
+
*/
|
|
19
|
+
level: SpaceCloudComputerLevel | null;
|
|
20
|
+
/** True when `run` and `upload` are offered: the host offers the cloud computer and the Space declares `'shell'`. */
|
|
21
|
+
available: boolean;
|
|
22
|
+
/** The viewer's approval for this Space's current code (either level), or null while it is read. */
|
|
23
|
+
status: SpaceCloudComputerStatus | null;
|
|
24
|
+
approved: boolean;
|
|
25
|
+
loading: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Run one non-interactive command on the viewer's own cloud computer. Same result as the shell tool.
|
|
28
|
+
* Pass the same `requestId` when the page retries this run itself: a run is never repeated for one key.
|
|
29
|
+
*/
|
|
30
|
+
run(command: string, options?: RunOptions): Promise<SpaceCloudComputerRunResult>;
|
|
31
|
+
/** Write one file (at most 1 MiB) straight to the cloud computer; it never travels by URL or chat. */
|
|
32
|
+
upload(file: SpaceCloudComputerUploadInput): Promise<SpaceCloudComputerUploadResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Ask the host to show its approval prompt, for either declared level. Only the person's click in
|
|
35
|
+
* that prompt approves; once allowed, every `useCloudComputer()` reads the facts again.
|
|
36
|
+
*/
|
|
37
|
+
requestApproval(): Promise<SpaceCloudComputerStatus | null>;
|
|
38
|
+
refresh(): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
type RunOptions = { cwd?: string; timeoutMs?: number; maxOutputLength?: number; requestId?: string };
|
|
42
|
+
|
|
43
|
+
const unavailable = async (): Promise<never> => {
|
|
44
|
+
throw new Error('The cloud computer is not available in this Space.');
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The viewer's approval and, for `cloudComputer: 'shell'`, commands and file writes on the signed-in
|
|
49
|
+
* viewer's own cloud computer, from a Space page.
|
|
50
|
+
*
|
|
51
|
+
* ```tsx
|
|
52
|
+
* const shell = useCloudComputerShell();
|
|
53
|
+
* if (!shell.level) return <AskNotisFallback />;
|
|
54
|
+
* if (!shell.approved) return <Button onClick={() => shell.requestApproval()}>Allow</Button>;
|
|
55
|
+
* const result = await shell.run(`bash ${SCRIPTS}/workspace.sh sync ${quote(repo)} ${quote(name)}`);
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* Requires `cloudComputer` in `defineSpace` and the viewer's approval, which the Portal asks for in
|
|
59
|
+
* its own prompt and which covers only the exact code the viewer allowed: any new release asks again.
|
|
60
|
+
*/
|
|
61
|
+
export function useCloudComputerShell(): UseCloudComputerShellResult {
|
|
62
|
+
const runtime = useNotisRuntime();
|
|
63
|
+
const transport = runtime?.spaceCloudComputer;
|
|
64
|
+
const declared = runtime?.space?.cloudComputer;
|
|
65
|
+
const level: SpaceCloudComputerLevel | null = transport && (declared === 'read' || declared === 'shell') ? declared : null;
|
|
66
|
+
const available = level === 'shell';
|
|
67
|
+
const [status, setStatus] = useState<SpaceCloudComputerStatus | null>(null);
|
|
68
|
+
const [loading, setLoading] = useState(Boolean(level));
|
|
69
|
+
const mounted = useRef(true);
|
|
70
|
+
useEffect(() => () => { mounted.current = false; }, []);
|
|
71
|
+
|
|
72
|
+
const refresh = useCallback(async () => {
|
|
73
|
+
if (!level || !transport) return;
|
|
74
|
+
setLoading(true);
|
|
75
|
+
try {
|
|
76
|
+
const next = await transport.status();
|
|
77
|
+
if (mounted.current) setStatus(next);
|
|
78
|
+
} catch {
|
|
79
|
+
if (mounted.current) setStatus(null);
|
|
80
|
+
} finally {
|
|
81
|
+
if (mounted.current) setLoading(false);
|
|
82
|
+
}
|
|
83
|
+
}, [level, transport]);
|
|
84
|
+
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
mounted.current = true;
|
|
87
|
+
void refresh();
|
|
88
|
+
}, [refresh]);
|
|
89
|
+
|
|
90
|
+
const run = useCallback(async (command: string, options: RunOptions = {}) => {
|
|
91
|
+
if (!available || !transport) return unavailable();
|
|
92
|
+
return transport.run({ command, ...(options.cwd ? { cwd: options.cwd } : {}),
|
|
93
|
+
...(options.timeoutMs ? { timeout_ms: options.timeoutMs } : {}),
|
|
94
|
+
...(options.maxOutputLength ? { max_output_length: options.maxOutputLength } : {}),
|
|
95
|
+
...(options.requestId ? { request_id: options.requestId } : {}) });
|
|
96
|
+
}, [available, transport]);
|
|
97
|
+
|
|
98
|
+
const upload = useCallback(async (file: SpaceCloudComputerUploadInput) => {
|
|
99
|
+
if (!available || !transport) return unavailable();
|
|
100
|
+
return transport.upload(file);
|
|
101
|
+
}, [available, transport]);
|
|
102
|
+
|
|
103
|
+
const requestApproval = useCallback(async () => {
|
|
104
|
+
if (!level || !transport) return null;
|
|
105
|
+
const next = await transport.requestApproval();
|
|
106
|
+
if (mounted.current) setStatus(next);
|
|
107
|
+
// A facts read refused before the approval must not keep showing "unavailable".
|
|
108
|
+
if (next?.approved === true) invalidateCloudComputerFacts(runtime);
|
|
109
|
+
return next;
|
|
110
|
+
}, [level, runtime, transport]);
|
|
111
|
+
|
|
112
|
+
return { level, available, status, approved: status?.approved === true, loading: Boolean(level) && loading,
|
|
113
|
+
run, upload, requestApproval, refresh };
|
|
114
|
+
}
|