@agent-native/core 0.164.15 → 0.164.18
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 +1 -1
- package/corpus/templates/analytics/netlify.toml +4 -0
- package/corpus/templates/clips/actions/request-transcript.ts +10 -6
- package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +298 -3
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +3 -0
- package/corpus/templates/content/app/components/editor/extensions/NotionExtensions.tsx +18 -4
- package/corpus/templates/content/app/i18n-data.ts +160 -0
- package/corpus/templates/content/docs/solutions/2026-08-18-colored-text-highlighting-shape.md +693 -0
- package/corpus/templates/content/package.json +1 -0
- package/corpus/templates/content/shared/nfm.ts +14 -3
- package/corpus/templates/factory/AGENTS.md +24 -29
- package/corpus/templates/factory/actions/get-slack-feedback-context.ts +8 -28
- package/corpus/templates/factory/actions/get-triage-config.ts +1 -0
- package/corpus/templates/factory/actions/govern-agent-native-pull-request.ts +67 -59
- package/corpus/templates/factory/actions/list-triage-items.ts +6 -1
- package/corpus/templates/factory/actions/reconcile-triage-run.ts +7 -1
- package/corpus/templates/factory/actions/save-triage-config.ts +27 -7
- package/corpus/templates/factory/actions/start-builder-for-item.ts +113 -31
- package/corpus/templates/factory/actions/view-screen.ts +12 -0
- package/corpus/templates/factory/app/components/factory/FactorySettingsView.tsx +457 -0
- package/corpus/templates/factory/app/components/factory/FactoryWorkspaceActions.tsx +53 -0
- package/corpus/templates/factory/app/components/layout/Layout.tsx +2 -0
- package/corpus/templates/factory/app/components/layout/Sidebar.tsx +3 -1
- package/corpus/templates/factory/app/hooks/use-navigation-state.ts +10 -7
- package/corpus/templates/factory/app/i18n/en-US.ts +3 -0
- package/corpus/templates/factory/app/routes/agents.tsx +22 -1
- package/corpus/templates/factory/app/routes/factory-settings.tsx +34 -0
- package/corpus/templates/factory/app/routes/factory.tsx +33 -323
- package/corpus/templates/factory/server/connectors/slack.ts +62 -0
- package/corpus/templates/factory/server/db/schema.ts +1 -0
- package/corpus/templates/factory/server/lib/slack-feedback-prompt.ts +30 -0
- package/corpus/templates/factory/server/plugins/agent-chat.ts +9 -8
- package/corpus/templates/factory/server/plugins/factory-migrations.ts +7 -0
- package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +43 -25
- package/corpus/templates/factory/server/triage/ai-services-git.ts +2 -0
- package/corpus/templates/factory/server/triage/pr-monitor.ts +2 -1
- package/corpus/templates/factory/server/triage/pr-policy.ts +197 -19
- package/corpus/templates/factory/server/triage/review-skill-alignment.ts +127 -0
- package/corpus/templates/factory/server/triage/slack-client.ts +79 -6
- package/dist/client/MultiTabAssistantChat.js +28 -1
- package/dist/client/use-chat-threads.d.ts +1 -0
- package/dist/client/use-chat-threads.js +13 -3
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/integrations/plugin.js +18 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/auth.js +2 -2
- package/dist/vite/client.js +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { AgentToggleButton } from "@agent-native/core/client/agent-chat";
|
|
2
|
+
import { useT } from "@agent-native/core/client/i18n";
|
|
3
|
+
import { IconPlus } from "@tabler/icons-react";
|
|
4
|
+
import { Link, useLocation, useSearchParams } from "react-router";
|
|
5
|
+
|
|
6
|
+
import { Button } from "@/components/ui/button";
|
|
7
|
+
|
|
8
|
+
export const FACTORY_AGENTS_HREF = "/factory?tab=agents";
|
|
9
|
+
export const FACTORY_SETTINGS_HREF = "/factory-settings";
|
|
10
|
+
export const FACTORY_NEW_HREF = "/factory?new=1";
|
|
11
|
+
|
|
12
|
+
export function FactoryWorkspaceActions({
|
|
13
|
+
onNewFactory,
|
|
14
|
+
}: {
|
|
15
|
+
onNewFactory?: () => void;
|
|
16
|
+
}) {
|
|
17
|
+
const t = useT();
|
|
18
|
+
const location = useLocation();
|
|
19
|
+
const [searchParams] = useSearchParams();
|
|
20
|
+
const onAgents =
|
|
21
|
+
location.pathname === "/agents" ||
|
|
22
|
+
(location.pathname === "/factory" &&
|
|
23
|
+
searchParams.get("tab") === "agents" &&
|
|
24
|
+
!searchParams.get("factoryId"));
|
|
25
|
+
const onSettings = location.pathname === "/factory-settings";
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<div className="flex items-center gap-2">
|
|
29
|
+
<Button asChild variant={onAgents ? "default" : "outline"} size="sm">
|
|
30
|
+
<Link to={FACTORY_AGENTS_HREF}>{t("factoryRoute.agentsTab")}</Link>
|
|
31
|
+
</Button>
|
|
32
|
+
<Button asChild variant={onSettings ? "default" : "outline"} size="sm">
|
|
33
|
+
<Link to={FACTORY_SETTINGS_HREF}>
|
|
34
|
+
{t("factoryRoute.factorySettings")}
|
|
35
|
+
</Link>
|
|
36
|
+
</Button>
|
|
37
|
+
{onNewFactory ? (
|
|
38
|
+
<Button type="button" size="sm" onClick={onNewFactory}>
|
|
39
|
+
<IconPlus className="size-4" />
|
|
40
|
+
{t("factoryRoute.newFactory")}
|
|
41
|
+
</Button>
|
|
42
|
+
) : (
|
|
43
|
+
<Button asChild size="sm">
|
|
44
|
+
<Link to={FACTORY_NEW_HREF}>
|
|
45
|
+
<IconPlus className="size-4" />
|
|
46
|
+
{t("factoryRoute.newFactory")}
|
|
47
|
+
</Link>
|
|
48
|
+
</Button>
|
|
49
|
+
)}
|
|
50
|
+
<AgentToggleButton />
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
@@ -42,6 +42,8 @@ function routeOwnsToolbar(pathname: string): boolean {
|
|
|
42
42
|
pathname === "/chat" ||
|
|
43
43
|
pathname.startsWith("/chat/") ||
|
|
44
44
|
pathname === "/factory" ||
|
|
45
|
+
pathname === "/factory-settings" ||
|
|
46
|
+
pathname === "/agents" ||
|
|
45
47
|
pathname === "/database" ||
|
|
46
48
|
pathname.startsWith("/extensions")
|
|
47
49
|
);
|
|
@@ -444,7 +444,9 @@ export function Sidebar({
|
|
|
444
444
|
const isActive =
|
|
445
445
|
item.href === "/"
|
|
446
446
|
? isChatRoute
|
|
447
|
-
:
|
|
447
|
+
: item.href === "/factory"
|
|
448
|
+
? location.pathname === "/factory"
|
|
449
|
+
: location.pathname.startsWith(item.href);
|
|
448
450
|
const link = (
|
|
449
451
|
<Link
|
|
450
452
|
to={item.href}
|
|
@@ -25,27 +25,27 @@ export function useNavigationState() {
|
|
|
25
25
|
view: viewForPath(pathname),
|
|
26
26
|
path: appPath(pathname),
|
|
27
27
|
...(threadId ? { threadId } : {}),
|
|
28
|
-
...(pathname
|
|
28
|
+
...(pathname === "/factory" && searchParams.get("factoryId")
|
|
29
29
|
? { factoryId: searchParams.get("factoryId") ?? undefined }
|
|
30
30
|
: {}),
|
|
31
|
-
...(pathname
|
|
31
|
+
...(pathname === "/factory" && searchParams.get("tab")
|
|
32
32
|
? { factoryTab: searchParams.get("tab") ?? undefined }
|
|
33
33
|
: {}),
|
|
34
|
-
...(pathname
|
|
34
|
+
...(pathname === "/factory" && searchParams.get("automationId")
|
|
35
35
|
? {
|
|
36
36
|
factoryAutomationId:
|
|
37
37
|
searchParams.get("automationId") ?? undefined,
|
|
38
38
|
}
|
|
39
39
|
: {}),
|
|
40
|
-
...(pathname
|
|
40
|
+
...(pathname === "/factory" && searchParams.get("auditRunId")
|
|
41
41
|
? {
|
|
42
42
|
factoryAuditRunId: searchParams.get("auditRunId") ?? undefined,
|
|
43
43
|
}
|
|
44
44
|
: {}),
|
|
45
|
-
...(pathname
|
|
45
|
+
...(pathname === "/factory" && searchParams.get("node")
|
|
46
46
|
? { factoryNodeId: searchParams.get("node") ?? undefined }
|
|
47
47
|
: {}),
|
|
48
|
-
...(pathname
|
|
48
|
+
...(pathname === "/factory" && searchParams.get("edge")
|
|
49
49
|
? { factoryEdgeId: searchParams.get("edge") ?? undefined }
|
|
50
50
|
: {}),
|
|
51
51
|
};
|
|
@@ -73,7 +73,8 @@ function viewForPath(pathname: string): string {
|
|
|
73
73
|
if (pathname.startsWith("/extensions")) return "extensions";
|
|
74
74
|
if (pathname.startsWith("/observability")) return "observability";
|
|
75
75
|
if (pathname.startsWith("/agents")) return "agents";
|
|
76
|
-
if (pathname
|
|
76
|
+
if (pathname === "/factory-settings") return "factory-settings";
|
|
77
|
+
if (pathname === "/factory") return "factory";
|
|
77
78
|
if (pathname.startsWith("/settings/agent") || pathname.startsWith("/agent")) {
|
|
78
79
|
return "agent";
|
|
79
80
|
}
|
|
@@ -96,6 +97,8 @@ function pathForView(view?: string): string {
|
|
|
96
97
|
return "/observability";
|
|
97
98
|
case "factory":
|
|
98
99
|
return "/factory";
|
|
100
|
+
case "factory-settings":
|
|
101
|
+
return "/factory-settings";
|
|
99
102
|
case "agents":
|
|
100
103
|
return "/agents";
|
|
101
104
|
case "agent":
|
|
@@ -108,6 +108,8 @@ const messages = {
|
|
|
108
108
|
slackChannelPlaceholder: "For example, C0123456789",
|
|
109
109
|
slackChannelName: "Channel name",
|
|
110
110
|
slackChannelNamePlaceholder: "For example, product-agent-native-feedback",
|
|
111
|
+
builderSlackUserId: "@Builder.io Slack Member ID",
|
|
112
|
+
builderSlackUserIdPlaceholder: "For example, U096KN3EL2Y",
|
|
111
113
|
repository: "Repository",
|
|
112
114
|
repositoryPlaceholder: "For example, BuilderIO/agent-native",
|
|
113
115
|
enablePolling: "Enable one-minute observation polling",
|
|
@@ -165,6 +167,7 @@ const messages = {
|
|
|
165
167
|
rulesTab: "Rules",
|
|
166
168
|
automationsTab: "Automations",
|
|
167
169
|
agentsTab: "Agents",
|
|
170
|
+
factorySettings: "Factory Settings",
|
|
168
171
|
agenticAppsTitle: "Agentic apps",
|
|
169
172
|
agenticAppsEmpty: "No agentic apps in this workspace yet.",
|
|
170
173
|
createApp: "Create app",
|
|
@@ -1,8 +1,29 @@
|
|
|
1
|
+
import { useT } from "@agent-native/core/client/i18n";
|
|
2
|
+
import { IconArrowLeft } from "@tabler/icons-react";
|
|
3
|
+
import { Link } from "react-router";
|
|
4
|
+
|
|
1
5
|
import { FactoryAgentsView } from "@/components/factory/FactoryAgentsView";
|
|
6
|
+
import { FactoryWorkspaceActions } from "@/components/factory/FactoryWorkspaceActions";
|
|
7
|
+
import { Button } from "@/components/ui/button";
|
|
2
8
|
|
|
3
9
|
export default function AgentsRoute() {
|
|
10
|
+
const t = useT();
|
|
11
|
+
|
|
4
12
|
return (
|
|
5
|
-
<div className="h-full min-h-0 overflow-y-auto bg-background">
|
|
13
|
+
<div className="flex h-full min-h-0 flex-col overflow-y-auto bg-background">
|
|
14
|
+
<div className="flex items-center gap-3 px-4 py-4 lg:px-6">
|
|
15
|
+
<Button asChild type="button" variant="ghost" size="icon">
|
|
16
|
+
<Link to="/factory" aria-label={t("factoryRoute.backToFactories")}>
|
|
17
|
+
<IconArrowLeft className="size-4" />
|
|
18
|
+
</Link>
|
|
19
|
+
</Button>
|
|
20
|
+
<h1 className="text-sm font-medium sm:text-base">
|
|
21
|
+
{t("factoryRoute.agentsTitle")}
|
|
22
|
+
</h1>
|
|
23
|
+
<div className="ms-auto">
|
|
24
|
+
<FactoryWorkspaceActions />
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
6
27
|
<FactoryAgentsView />
|
|
7
28
|
</div>
|
|
8
29
|
);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useT } from "@agent-native/core/client/i18n";
|
|
2
|
+
import { IconArrowLeft } from "@tabler/icons-react";
|
|
3
|
+
import { Link } from "react-router";
|
|
4
|
+
|
|
5
|
+
import { FactorySettingsView } from "@/components/factory/FactorySettingsView";
|
|
6
|
+
import { FactoryWorkspaceActions } from "@/components/factory/FactoryWorkspaceActions";
|
|
7
|
+
import { Button } from "@/components/ui/button";
|
|
8
|
+
|
|
9
|
+
export function meta() {
|
|
10
|
+
return [{ title: "Factory" }];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export default function FactorySettingsRoute() {
|
|
14
|
+
const t = useT();
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<div className="flex h-full min-h-0 flex-col overflow-y-auto bg-background">
|
|
18
|
+
<div className="flex items-center gap-3 px-4 py-4 lg:px-6">
|
|
19
|
+
<Button asChild type="button" variant="ghost" size="icon">
|
|
20
|
+
<Link to="/factory" aria-label={t("factoryRoute.backToFactories")}>
|
|
21
|
+
<IconArrowLeft className="size-4" />
|
|
22
|
+
</Link>
|
|
23
|
+
</Button>
|
|
24
|
+
<h1 className="text-sm font-medium sm:text-base">
|
|
25
|
+
{t("factoryRoute.factorySettings")}
|
|
26
|
+
</h1>
|
|
27
|
+
<div className="ms-auto">
|
|
28
|
+
<FactoryWorkspaceActions />
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<FactorySettingsView />
|
|
32
|
+
</div>
|
|
33
|
+
);
|
|
34
|
+
}
|