@agent-native/core 0.135.1 → 0.135.3
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +12 -0
- package/corpus/core/docs/content/getting-started-actions.mdx +235 -0
- package/corpus/core/docs/content/getting-started-database.mdx +253 -0
- package/corpus/core/docs/content/getting-started-pages.mdx +190 -0
- package/corpus/core/docs/content/getting-started.mdx +57 -613
- package/corpus/core/docs/content/what-is-agent-native.mdx +155 -298
- package/corpus/core/package.json +1 -1
- package/corpus/templates/clips/actions/add-comment.ts +6 -2
- package/corpus/templates/clips/app/components/player/comments-panel.tsx +9 -2
- package/corpus/templates/clips/app/components/player/playback-comment-overlay.tsx +44 -27
- package/corpus/templates/clips/app/components/player/scrubber.tsx +10 -2
- package/corpus/templates/clips/app/components/player/video-player.tsx +4 -0
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +22 -15
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +1 -0
- package/corpus/templates/content/app/components/editor/database/sidebar.tsx +23 -10
- package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +20 -9
- package/corpus/templates/content/app/components/sidebar/document-sidebar-actions.ts +31 -0
- package/corpus/templates/content/changelog/2026-07-26-viewers-can-favorite-shared-pages.md +6 -0
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/docs/content/getting-started-actions.mdx +235 -0
- package/docs/content/getting-started-database.mdx +253 -0
- package/docs/content/getting-started-pages.mdx +190 -0
- package/docs/content/getting-started.mdx +57 -613
- package/docs/content/what-is-agent-native.mdx +155 -298
- package/package.json +1 -1
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { useAvatarUrl } from "@agent-native/core/client/hooks";
|
|
2
|
+
|
|
3
|
+
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
|
+
|
|
6
|
+
export const PLAYBACK_COMMENT_VISIBLE_MS = 1_000;
|
|
2
7
|
|
|
3
8
|
export function getPlaybackCommentVisibleMs(playbackRate = 1): number {
|
|
4
9
|
const safePlaybackRate =
|
|
@@ -50,50 +55,62 @@ export function PlaybackCommentOverlay({
|
|
|
50
55
|
comments,
|
|
51
56
|
currentMs,
|
|
52
57
|
playbackRate = 1,
|
|
58
|
+
onClick,
|
|
53
59
|
}: {
|
|
54
60
|
comments: PlaybackComment[] | undefined;
|
|
55
61
|
currentMs: number;
|
|
56
62
|
playbackRate?: number;
|
|
63
|
+
onClick?: () => void;
|
|
57
64
|
}) {
|
|
58
65
|
const activeComments = getActivePlaybackComments(
|
|
59
66
|
comments,
|
|
60
67
|
currentMs,
|
|
61
68
|
playbackRate,
|
|
62
69
|
);
|
|
70
|
+
const avatarUrl = useAvatarUrl(activeComments[0]?.authorEmail);
|
|
63
71
|
if (activeComments.length === 0) return null;
|
|
64
72
|
|
|
73
|
+
const [comment, ...rest] = activeComments;
|
|
74
|
+
const author = displayAuthor(comment);
|
|
75
|
+
const Card = (onClick ? "button" : "div") as "button" | "div";
|
|
76
|
+
|
|
65
77
|
return (
|
|
66
78
|
<div
|
|
67
79
|
data-player-ui
|
|
68
80
|
className="pointer-events-none absolute inset-x-3 bottom-[5.25rem] z-20 flex justify-center sm:inset-x-6"
|
|
69
81
|
aria-live="polite"
|
|
70
82
|
>
|
|
71
|
-
<
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
</
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
83
|
+
<Card
|
|
84
|
+
key={comment.id}
|
|
85
|
+
type={onClick ? "button" : undefined}
|
|
86
|
+
onClick={onClick}
|
|
87
|
+
className={cn(
|
|
88
|
+
"animate-in fade-in slide-in-from-bottom-2 flex w-full max-w-xl flex-col gap-1.5 rounded-xl bg-black/85 px-3 py-2.5 text-left text-white shadow-2xl ring-1 ring-white/15 backdrop-blur-md duration-200",
|
|
89
|
+
onClick && "pointer-events-auto cursor-pointer hover:bg-black/95",
|
|
90
|
+
)}
|
|
91
|
+
>
|
|
92
|
+
<div className="flex max-w-full items-start gap-2.5">
|
|
93
|
+
<Avatar aria-hidden="true" className="size-7 shrink-0">
|
|
94
|
+
{avatarUrl ? <AvatarImage src={avatarUrl} alt={author} /> : null}
|
|
95
|
+
<AvatarFallback className="bg-white/15 text-[10px] font-semibold text-white">
|
|
96
|
+
{initials(author)}
|
|
97
|
+
</AvatarFallback>
|
|
98
|
+
</Avatar>
|
|
99
|
+
<div className="min-w-0">
|
|
100
|
+
<p className="truncate text-xs font-semibold text-white/80">
|
|
101
|
+
{author}
|
|
102
|
+
</p>
|
|
103
|
+
<p className="line-clamp-3 break-words text-sm leading-5 text-white">
|
|
104
|
+
{comment.content}
|
|
105
|
+
</p>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
{rest.length > 0 && (
|
|
109
|
+
<p className="pl-[2.375rem] text-xs text-white/60">
|
|
110
|
+
+{rest.length} other comment{rest.length > 1 ? "s" : ""}
|
|
111
|
+
</p>
|
|
112
|
+
)}
|
|
113
|
+
</Card>
|
|
97
114
|
</div>
|
|
98
115
|
);
|
|
99
116
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IconMessage2Filled } from "@tabler/icons-react";
|
|
1
2
|
import { useMemo, useRef, useState } from "react";
|
|
2
3
|
|
|
3
4
|
import { cn } from "@/lib/utils";
|
|
@@ -225,10 +226,17 @@ export function Scrubber(props: ScrubberProps) {
|
|
|
225
226
|
e.stopPropagation();
|
|
226
227
|
onSeek(ms);
|
|
227
228
|
}}
|
|
228
|
-
className="absolute
|
|
229
|
+
className="absolute top-1/2 -translate-x-1/2 -translate-y-1/2 flex h-4 w-4 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-md ring-2 ring-background transition-transform hover:scale-125"
|
|
229
230
|
style={{ left: (ms / Math.max(1, durationMs)) * 100 + "%" }}
|
|
230
231
|
aria-label={`${list.length} comment${list.length > 1 ? "s" : ""}`}
|
|
231
|
-
|
|
232
|
+
>
|
|
233
|
+
<IconMessage2Filled className="h-2.5 w-2.5" />
|
|
234
|
+
{list.length > 1 && (
|
|
235
|
+
<span className="absolute -top-1.5 -right-1.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-primary px-0.5 text-[8px] font-bold leading-none text-primary-foreground ring-2 ring-background">
|
|
236
|
+
{list.length}
|
|
237
|
+
</span>
|
|
238
|
+
)}
|
|
239
|
+
</button>
|
|
232
240
|
))}
|
|
233
241
|
|
|
234
242
|
{/* Reaction dots */}
|
|
@@ -218,6 +218,8 @@ export interface VideoPlayerProps {
|
|
|
218
218
|
* lifecycle instead of polling an imperative-handle getter.
|
|
219
219
|
*/
|
|
220
220
|
onVideoElementChange?: (video: HTMLVideoElement | null) => void;
|
|
221
|
+
/** Called when the viewer clicks the timestamped-comment overlay. */
|
|
222
|
+
onCommentClick?: () => void;
|
|
221
223
|
}
|
|
222
224
|
|
|
223
225
|
export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
|
|
@@ -255,6 +257,7 @@ export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
|
|
|
255
257
|
recordingId,
|
|
256
258
|
role,
|
|
257
259
|
onVideoElementChange,
|
|
260
|
+
onCommentClick,
|
|
258
261
|
} = props;
|
|
259
262
|
|
|
260
263
|
const resolvedVideoSrc = useMemo(
|
|
@@ -1651,6 +1654,7 @@ export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
|
|
|
1651
1654
|
comments={comments}
|
|
1652
1655
|
currentMs={currentMs}
|
|
1653
1656
|
playbackRate={speed}
|
|
1657
|
+
onClick={onCommentClick}
|
|
1654
1658
|
/>
|
|
1655
1659
|
) : null}
|
|
1656
1660
|
|
|
@@ -261,15 +261,26 @@ export default function RecordingPage() {
|
|
|
261
261
|
// The compact layout stacks the panel below the video, so switching tabs
|
|
262
262
|
// alone leaves the user looking at the player. Desktop always renders the
|
|
263
263
|
// side aside, so nothing to scroll there.
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
264
|
+
const openSidePanel = useCallback(
|
|
265
|
+
(next: SidePanel) => {
|
|
266
|
+
setPanel(next);
|
|
267
|
+
if (!isCompactLayout) return;
|
|
268
|
+
requestAnimationFrame(() => {
|
|
269
|
+
document
|
|
270
|
+
.getElementById("clip-activity-panel")
|
|
271
|
+
?.scrollIntoView({ block: "start" });
|
|
272
|
+
});
|
|
273
|
+
},
|
|
274
|
+
[isCompactLayout],
|
|
275
|
+
);
|
|
276
|
+
const openInsightsPanel = useCallback(
|
|
277
|
+
() => openSidePanel("insights"),
|
|
278
|
+
[openSidePanel],
|
|
279
|
+
);
|
|
280
|
+
const openCommentsPanel = useCallback(
|
|
281
|
+
() => openSidePanel("comments"),
|
|
282
|
+
[openSidePanel],
|
|
283
|
+
);
|
|
273
284
|
const transcriptKickedRef = useRef<string | null>(null);
|
|
274
285
|
// When the recording lands in the processing state but never flips to
|
|
275
286
|
// 'ready', stop spinning forever and surface an error banner so the user
|
|
@@ -1608,6 +1619,7 @@ export default function RecordingPage() {
|
|
|
1608
1619
|
cta={firstCta}
|
|
1609
1620
|
onCtaClick={() => tracking.reportCtaClick()}
|
|
1610
1621
|
onTimeUpdate={(ms) => setCurrentMs(ms)}
|
|
1622
|
+
onCommentClick={openCommentsPanel}
|
|
1611
1623
|
className="h-full w-full rounded-none sm:rounded-xl"
|
|
1612
1624
|
/>
|
|
1613
1625
|
{commentOpen ? (
|
|
@@ -1667,12 +1679,7 @@ export default function RecordingPage() {
|
|
|
1667
1679
|
className="shrink-0"
|
|
1668
1680
|
onOpen={() => {
|
|
1669
1681
|
if (isCompactLayout) {
|
|
1670
|
-
|
|
1671
|
-
requestAnimationFrame(() => {
|
|
1672
|
-
document
|
|
1673
|
-
.getElementById("clip-activity-panel")
|
|
1674
|
-
?.scrollIntoView({ block: "start" });
|
|
1675
|
-
});
|
|
1682
|
+
openCommentsPanel();
|
|
1676
1683
|
return;
|
|
1677
1684
|
}
|
|
1678
1685
|
setCommentAtMs(resolvePlaybackMs());
|
|
@@ -997,6 +997,7 @@ export default function ShareRoute() {
|
|
|
997
997
|
cta={firstCta}
|
|
998
998
|
onCtaClick={() => tracking.reportCtaClick()}
|
|
999
999
|
onTimeUpdate={(ms) => setCurrentMs(ms)}
|
|
1000
|
+
onCommentClick={() => setPanel("comments")}
|
|
1000
1001
|
className="h-full w-full rounded-none sm:rounded-xl"
|
|
1001
1002
|
/>
|
|
1002
1003
|
</div>
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
import { useEffect, useState, type MouseEvent, type ReactNode } from "react";
|
|
22
22
|
import { Link } from "react-router";
|
|
23
23
|
|
|
24
|
+
import { documentSidebarActionAvailability } from "@/components/sidebar/document-sidebar-actions";
|
|
24
25
|
import { Button } from "@/components/ui/button";
|
|
25
26
|
import {
|
|
26
27
|
Collapsible,
|
|
@@ -717,14 +718,12 @@ function DatabaseSidebarRow({
|
|
|
717
718
|
};
|
|
718
719
|
}) {
|
|
719
720
|
const t = useT();
|
|
720
|
-
const canEdit
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
721
|
+
const { canEdit, canManage, canFavorite, hasMenuActions } =
|
|
722
|
+
documentSidebarActionAvailability(item.document, {
|
|
723
|
+
favoriteAvailable: Boolean(onToggleFavorite),
|
|
724
|
+
manageAvailable: Boolean(onDeleteItem),
|
|
725
|
+
});
|
|
725
726
|
const canCreateChild = canEdit && Boolean(onCreateChildPage);
|
|
726
|
-
const hasMenuActions =
|
|
727
|
-
Boolean(onToggleFavorite) || (canManage && Boolean(onDeleteItem));
|
|
728
727
|
function handleClick(event: MouseEvent<HTMLAnchorElement>) {
|
|
729
728
|
if (
|
|
730
729
|
event.defaultPrevented ||
|
|
@@ -828,7 +827,7 @@ function DatabaseSidebarRow({
|
|
|
828
827
|
</button>
|
|
829
828
|
</DropdownMenuTrigger>
|
|
830
829
|
<DropdownMenuContent align="start" className="w-48">
|
|
831
|
-
{onToggleFavorite ? (
|
|
830
|
+
{canFavorite && onToggleFavorite ? (
|
|
832
831
|
<DropdownMenuItem onSelect={() => onToggleFavorite(item)}>
|
|
833
832
|
<IconStar
|
|
834
833
|
className={cn(
|
|
@@ -841,7 +840,10 @@ function DatabaseSidebarRow({
|
|
|
841
840
|
: t("sidebar.pinToSidebar")}
|
|
842
841
|
</DropdownMenuItem>
|
|
843
842
|
) : null}
|
|
844
|
-
{
|
|
843
|
+
{canFavorite &&
|
|
844
|
+
onToggleFavorite &&
|
|
845
|
+
canManage &&
|
|
846
|
+
onDeleteItem ? (
|
|
845
847
|
<DropdownMenuSeparator />
|
|
846
848
|
) : null}
|
|
847
849
|
{canManage && onDeleteItem ? (
|
|
@@ -857,7 +859,7 @@ function DatabaseSidebarRow({
|
|
|
857
859
|
</DropdownMenu>
|
|
858
860
|
)}
|
|
859
861
|
|
|
860
|
-
{canCreateChild
|
|
862
|
+
{canCreateChild ? (
|
|
861
863
|
<DropdownMenu>
|
|
862
864
|
<Tooltip>
|
|
863
865
|
<TooltipTrigger asChild>
|
|
@@ -866,6 +868,7 @@ function DatabaseSidebarRow({
|
|
|
866
868
|
type="button"
|
|
867
869
|
className="flex size-6 items-center justify-center rounded text-foreground hover:bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
868
870
|
aria-label={t("sidebar.addChildTo", { title })}
|
|
871
|
+
data-sidebar-add-child
|
|
869
872
|
>
|
|
870
873
|
<IconPlus size={14} />
|
|
871
874
|
</button>
|
|
@@ -888,6 +891,16 @@ function DatabaseSidebarRow({
|
|
|
888
891
|
) : null}
|
|
889
892
|
</DropdownMenuContent>
|
|
890
893
|
</DropdownMenu>
|
|
894
|
+
) : (
|
|
895
|
+
<button
|
|
896
|
+
type="button"
|
|
897
|
+
className="flex size-6 cursor-not-allowed items-center justify-center rounded text-muted-foreground/50"
|
|
898
|
+
aria-label={t("sidebar.addChildTo", { title })}
|
|
899
|
+
data-sidebar-add-child
|
|
900
|
+
disabled
|
|
901
|
+
>
|
|
902
|
+
<IconPlus size={14} />
|
|
903
|
+
</button>
|
|
891
904
|
)}
|
|
892
905
|
</div>
|
|
893
906
|
)}
|
|
@@ -33,6 +33,8 @@ import {
|
|
|
33
33
|
} from "@/components/ui/tooltip";
|
|
34
34
|
import { cn } from "@/lib/utils";
|
|
35
35
|
|
|
36
|
+
import { documentSidebarActionAvailability } from "./document-sidebar-actions";
|
|
37
|
+
|
|
36
38
|
interface DocumentTreeItemProps {
|
|
37
39
|
node: DocumentTreeNode;
|
|
38
40
|
depth: number;
|
|
@@ -97,12 +99,8 @@ export function DocumentTreeItem({
|
|
|
97
99
|
const isActive = node.id === activeId;
|
|
98
100
|
const isLocalFileNode = node.source?.mode === "local-files";
|
|
99
101
|
const isLocalFolder = isLocalFileNode && node.source?.kind === "folder";
|
|
100
|
-
const canEdit
|
|
101
|
-
|
|
102
|
-
node.canManage === true ||
|
|
103
|
-
node.accessRole === "owner" ||
|
|
104
|
-
node.accessRole === "admin";
|
|
105
|
-
const hasMenuActions = canEdit || canManage;
|
|
102
|
+
const { canEdit, canManage, canFavorite, hasMenuActions } =
|
|
103
|
+
documentSidebarActionAvailability(node, { favoriteAvailable: true });
|
|
106
104
|
const canCreateChild = canEdit && !isLocalFileNode;
|
|
107
105
|
const [contextSheetOpen, setContextSheetOpen] = useState(false);
|
|
108
106
|
const indent = depth * 12 + 12;
|
|
@@ -224,7 +222,7 @@ export function DocumentTreeItem({
|
|
|
224
222
|
</button>
|
|
225
223
|
</DropdownMenuTrigger>
|
|
226
224
|
<DropdownMenuContent align="start" className="w-48">
|
|
227
|
-
{
|
|
225
|
+
{canFavorite && (
|
|
228
226
|
<DropdownMenuItem
|
|
229
227
|
onClick={(e) => {
|
|
230
228
|
e.stopPropagation();
|
|
@@ -240,7 +238,7 @@ export function DocumentTreeItem({
|
|
|
240
238
|
: t("sidebar.pinToSidebar")}
|
|
241
239
|
</DropdownMenuItem>
|
|
242
240
|
)}
|
|
243
|
-
{
|
|
241
|
+
{canFavorite && canManage && <DropdownMenuSeparator />}
|
|
244
242
|
{canEdit && !isLocalFileNode && (
|
|
245
243
|
<DropdownMenuItem
|
|
246
244
|
onSelect={(event) => {
|
|
@@ -269,7 +267,7 @@ export function DocumentTreeItem({
|
|
|
269
267
|
</DropdownMenu>
|
|
270
268
|
)}
|
|
271
269
|
|
|
272
|
-
{canCreateChild
|
|
270
|
+
{canCreateChild ? (
|
|
273
271
|
<DropdownMenu>
|
|
274
272
|
<Tooltip>
|
|
275
273
|
<TooltipTrigger asChild>
|
|
@@ -280,6 +278,7 @@ export function DocumentTreeItem({
|
|
|
280
278
|
aria-label={t("sidebar.addChildTo", {
|
|
281
279
|
title: node.title || t("sidebar.untitled"),
|
|
282
280
|
})}
|
|
281
|
+
data-sidebar-add-child
|
|
283
282
|
onClick={(e) => e.stopPropagation()}
|
|
284
283
|
>
|
|
285
284
|
<IconPlus size={14} />
|
|
@@ -309,6 +308,18 @@ export function DocumentTreeItem({
|
|
|
309
308
|
</DropdownMenuItem>
|
|
310
309
|
</DropdownMenuContent>
|
|
311
310
|
</DropdownMenu>
|
|
311
|
+
) : (
|
|
312
|
+
<button
|
|
313
|
+
type="button"
|
|
314
|
+
className="flex h-7 w-7 cursor-not-allowed items-center justify-center rounded text-muted-foreground/50"
|
|
315
|
+
aria-label={t("sidebar.addChildTo", {
|
|
316
|
+
title: node.title || t("sidebar.untitled"),
|
|
317
|
+
})}
|
|
318
|
+
data-sidebar-add-child
|
|
319
|
+
disabled
|
|
320
|
+
>
|
|
321
|
+
<IconPlus size={14} />
|
|
322
|
+
</button>
|
|
312
323
|
)}
|
|
313
324
|
</div>
|
|
314
325
|
</div>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Document } from "@shared/api";
|
|
2
|
+
|
|
3
|
+
type SidebarDocumentAccess = Pick<
|
|
4
|
+
Document,
|
|
5
|
+
"accessRole" | "canEdit" | "canManage"
|
|
6
|
+
>;
|
|
7
|
+
|
|
8
|
+
export function documentSidebarActionAvailability(
|
|
9
|
+
document: SidebarDocumentAccess,
|
|
10
|
+
{
|
|
11
|
+
favoriteAvailable,
|
|
12
|
+
manageAvailable = true,
|
|
13
|
+
}: {
|
|
14
|
+
favoriteAvailable: boolean;
|
|
15
|
+
manageAvailable?: boolean;
|
|
16
|
+
},
|
|
17
|
+
) {
|
|
18
|
+
const canEdit = document.canEdit !== false;
|
|
19
|
+
const canManage =
|
|
20
|
+
document.canManage === true ||
|
|
21
|
+
document.accessRole === "owner" ||
|
|
22
|
+
document.accessRole === "admin";
|
|
23
|
+
const canFavorite = favoriteAvailable;
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
canEdit,
|
|
27
|
+
canManage,
|
|
28
|
+
canFavorite,
|
|
29
|
+
hasMenuActions: canFavorite || (canManage && manageAvailable),
|
|
30
|
+
};
|
|
31
|
+
}
|
package/dist/collab/routes.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ export declare const getCollabState: import("h3").EventHandlerWithFetch<import("
|
|
|
26
26
|
* Body: { update: string (base64), requestSource?: string }
|
|
27
27
|
*/
|
|
28
28
|
export declare const postCollabUpdate: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
29
|
-
error: string;
|
|
30
29
|
ok?: undefined;
|
|
30
|
+
error: string;
|
|
31
31
|
} | {
|
|
32
32
|
error?: undefined;
|
|
33
33
|
ok: boolean;
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* Body: { json: any, fieldName?: string, type?: "map"|"array", requestSource?: string }
|
|
14
14
|
*/
|
|
15
15
|
export declare const postCollabJson: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
16
|
-
ok?: undefined;
|
|
17
16
|
error: string;
|
|
17
|
+
ok?: undefined;
|
|
18
18
|
} | {
|
|
19
19
|
error?: undefined;
|
|
20
20
|
ok: boolean;
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
|
|
14
14
|
count: number;
|
|
15
15
|
updated?: undefined;
|
|
16
|
-
error?: undefined;
|
|
17
16
|
ok?: undefined;
|
|
17
|
+
error?: undefined;
|
|
18
18
|
} | {
|
|
19
19
|
updated: number;
|
|
20
|
-
error?: undefined;
|
|
21
20
|
ok?: undefined;
|
|
21
|
+
error?: undefined;
|
|
22
22
|
count?: undefined;
|
|
23
23
|
} | {
|
|
24
24
|
updated?: undefined;
|
|
@@ -48,8 +48,8 @@ export declare function handleUpdateResource(event: any): Promise<import("./stor
|
|
|
48
48
|
}>;
|
|
49
49
|
/** DELETE /_agent-native/resources/:id — delete a resource */
|
|
50
50
|
export declare function handleDeleteResource(event: any): Promise<{
|
|
51
|
-
ok?: undefined;
|
|
52
51
|
error: string;
|
|
52
|
+
ok?: undefined;
|
|
53
53
|
} | {
|
|
54
54
|
error?: undefined;
|
|
55
55
|
ok: boolean;
|
package/dist/secrets/routes.d.ts
CHANGED
|
@@ -34,37 +34,37 @@ export declare function createListSecretsHandler(): import("h3").EventHandlerWit
|
|
|
34
34
|
/** POST /_agent-native/secrets/:key — write a secret. */
|
|
35
35
|
export declare function createWriteSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
36
36
|
error: string;
|
|
37
|
-
ok?: undefined;
|
|
38
37
|
status?: undefined;
|
|
38
|
+
ok?: undefined;
|
|
39
39
|
} | {
|
|
40
|
-
error?: undefined;
|
|
41
40
|
ok: boolean;
|
|
42
41
|
status: string;
|
|
42
|
+
error?: undefined;
|
|
43
43
|
} | {
|
|
44
|
-
ok?: undefined;
|
|
45
44
|
error: string;
|
|
46
45
|
removed?: undefined;
|
|
46
|
+
ok?: undefined;
|
|
47
47
|
} | {
|
|
48
|
-
error?: undefined;
|
|
49
48
|
ok: boolean;
|
|
50
49
|
removed: boolean;
|
|
50
|
+
error?: undefined;
|
|
51
51
|
}>>;
|
|
52
52
|
/**
|
|
53
53
|
* POST /_agent-native/secrets/:key/test — re-run the validator against the
|
|
54
54
|
* current stored value without changing anything. Useful for the "Test" button.
|
|
55
55
|
*/
|
|
56
56
|
export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
57
|
-
ok?: undefined;
|
|
58
57
|
error: string;
|
|
59
58
|
note?: undefined;
|
|
59
|
+
ok?: undefined;
|
|
60
60
|
} | {
|
|
61
|
-
error?: undefined;
|
|
62
61
|
ok: boolean;
|
|
63
62
|
note?: undefined;
|
|
64
|
-
} | {
|
|
65
63
|
error?: undefined;
|
|
64
|
+
} | {
|
|
66
65
|
ok: boolean;
|
|
67
66
|
note: string;
|
|
67
|
+
error?: undefined;
|
|
68
68
|
} | {
|
|
69
69
|
note?: undefined;
|
|
70
70
|
ok: boolean;
|
|
@@ -95,12 +95,12 @@ export interface AdHocSecretPayload {
|
|
|
95
95
|
export declare function createAdHocSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<AdHocSecretPayload[] | {
|
|
96
96
|
error: string;
|
|
97
97
|
} | {
|
|
98
|
-
error?: undefined;
|
|
99
98
|
ok: boolean;
|
|
100
99
|
key: string;
|
|
101
|
-
} | {
|
|
102
100
|
error?: undefined;
|
|
101
|
+
} | {
|
|
103
102
|
ok: boolean;
|
|
104
103
|
removed: boolean;
|
|
104
|
+
error?: undefined;
|
|
105
105
|
}>>;
|
|
106
106
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -27,11 +27,11 @@ export declare function resolveAgentEngineApiKeyWriteTarget(event: H3Event, scop
|
|
|
27
27
|
export declare function createAgentEngineApiKeyHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
28
28
|
error: any;
|
|
29
29
|
} | {
|
|
30
|
+
error?: undefined;
|
|
30
31
|
ok: boolean;
|
|
31
32
|
key: string;
|
|
32
33
|
baseUrlKey?: string;
|
|
33
34
|
scope: AgentEngineApiKeyScope;
|
|
34
|
-
error?: undefined;
|
|
35
35
|
}>>;
|
|
36
36
|
export {};
|
|
37
37
|
//# sourceMappingURL=agent-engine-api-key-route.d.ts.map
|
|
@@ -26,9 +26,9 @@ export declare function createRealtimeTokenHandler(): import("h3").EventHandlerW
|
|
|
26
26
|
expiresAt?: undefined;
|
|
27
27
|
ttlSeconds?: undefined;
|
|
28
28
|
} | {
|
|
29
|
+
error?: undefined;
|
|
29
30
|
token: string;
|
|
30
31
|
expiresAt: string;
|
|
31
32
|
ttlSeconds: number;
|
|
32
|
-
error?: undefined;
|
|
33
33
|
}>>;
|
|
34
34
|
//# sourceMappingURL=realtime-token.d.ts.map
|