mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
Merge remote-tracking branch 'origin/swiftyos/secrt-1646-review-chat-logic-and-route-models-in-chatpy-and-modelspy' into swiftyos/chat-ui
This commit is contained in:
@@ -1778,6 +1778,7 @@ class AIListGeneratorBlock(AIBlockBase):
|
||||
|```
|
||||
|
||||
|Do not include any explanations or additional text, just respond with the list in the format specified above.
|
||||
|Do not include code fences or any other formatting, just the raw list.
|
||||
"""
|
||||
# If a focus is provided, add it to the prompt
|
||||
if input_data.focus:
|
||||
|
||||
@@ -52,10 +52,36 @@ async def get_user_onboarding(user_id: str):
|
||||
)
|
||||
|
||||
|
||||
async def reset_user_onboarding(user_id: str):
|
||||
return await UserOnboarding.prisma().upsert(
|
||||
where={"userId": user_id},
|
||||
data={
|
||||
"create": UserOnboardingCreateInput(userId=user_id),
|
||||
"update": {
|
||||
"completedSteps": [],
|
||||
"walletShown": False,
|
||||
"notified": [],
|
||||
"usageReason": None,
|
||||
"integrations": [],
|
||||
"otherIntegrations": None,
|
||||
"selectedStoreListingVersionId": None,
|
||||
"agentInput": prisma.Json({}),
|
||||
"onboardingAgentExecutionId": None,
|
||||
"agentRuns": 0,
|
||||
"lastRunAt": None,
|
||||
"consecutiveRunDays": 0,
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
async def update_user_onboarding(user_id: str, data: UserOnboardingUpdate):
|
||||
update: UserOnboardingUpdateInput = {}
|
||||
onboarding = await get_user_onboarding(user_id)
|
||||
if data.completedSteps is not None:
|
||||
update["completedSteps"] = list(set(data.completedSteps))
|
||||
update["completedSteps"] = list(
|
||||
set(data.completedSteps + onboarding.completedSteps)
|
||||
)
|
||||
for step in (
|
||||
OnboardingStep.AGENT_NEW_RUN,
|
||||
OnboardingStep.MARKETPLACE_VISIT,
|
||||
@@ -71,11 +97,11 @@ async def update_user_onboarding(user_id: str, data: UserOnboardingUpdate):
|
||||
OnboardingStep.RUN_AGENTS_100,
|
||||
):
|
||||
if step in data.completedSteps:
|
||||
await reward_user(user_id, step)
|
||||
if data.walletShown is not None:
|
||||
await reward_user(user_id, step, onboarding)
|
||||
if data.walletShown:
|
||||
update["walletShown"] = data.walletShown
|
||||
if data.notified is not None:
|
||||
update["notified"] = list(set(data.notified))
|
||||
update["notified"] = list(set(data.notified + onboarding.notified))
|
||||
if data.usageReason is not None:
|
||||
update["usageReason"] = data.usageReason
|
||||
if data.integrations is not None:
|
||||
@@ -88,7 +114,7 @@ async def update_user_onboarding(user_id: str, data: UserOnboardingUpdate):
|
||||
update["agentInput"] = SafeJson(data.agentInput)
|
||||
if data.onboardingAgentExecutionId is not None:
|
||||
update["onboardingAgentExecutionId"] = data.onboardingAgentExecutionId
|
||||
if data.agentRuns is not None:
|
||||
if data.agentRuns is not None and data.agentRuns > onboarding.agentRuns:
|
||||
update["agentRuns"] = data.agentRuns
|
||||
if data.lastRunAt is not None:
|
||||
update["lastRunAt"] = data.lastRunAt
|
||||
@@ -104,7 +130,7 @@ async def update_user_onboarding(user_id: str, data: UserOnboardingUpdate):
|
||||
)
|
||||
|
||||
|
||||
async def reward_user(user_id: str, step: OnboardingStep):
|
||||
async def reward_user(user_id: str, step: OnboardingStep, onboarding: UserOnboarding):
|
||||
reward = 0
|
||||
match step:
|
||||
# Reward user when they clicked New Run during onboarding
|
||||
@@ -138,8 +164,6 @@ async def reward_user(user_id: str, step: OnboardingStep):
|
||||
if reward == 0:
|
||||
return
|
||||
|
||||
onboarding = await get_user_onboarding(user_id)
|
||||
|
||||
# Skip if already rewarded
|
||||
if step in onboarding.rewardedFor:
|
||||
return
|
||||
|
||||
@@ -52,6 +52,7 @@ from backend.data.onboarding import (
|
||||
get_recommended_agents,
|
||||
get_user_onboarding,
|
||||
onboarding_enabled,
|
||||
reset_user_onboarding,
|
||||
update_user_onboarding,
|
||||
)
|
||||
from backend.data.user import (
|
||||
@@ -259,6 +260,16 @@ async def is_onboarding_enabled():
|
||||
return await onboarding_enabled()
|
||||
|
||||
|
||||
@v1_router.post(
|
||||
"/onboarding/reset",
|
||||
summary="Reset onboarding progress",
|
||||
tags=["onboarding"],
|
||||
dependencies=[Security(requires_user)],
|
||||
)
|
||||
async def reset_onboarding(user_id: Annotated[str, Security(get_user_id)]):
|
||||
return await reset_user_onboarding(user_id)
|
||||
|
||||
|
||||
########################################################
|
||||
##################### Blocks ###########################
|
||||
########################################################
|
||||
|
||||
8
autogpt_platform/backend/poetry.lock
generated
8
autogpt_platform/backend/poetry.lock
generated
@@ -272,14 +272,14 @@ trio = ["trio (>=0.26.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "apscheduler"
|
||||
version = "3.11.0"
|
||||
version = "3.11.1"
|
||||
description = "In-process task scheduler with Cron-like capabilities"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "APScheduler-3.11.0-py3-none-any.whl", hash = "sha256:fc134ca32e50f5eadcc4938e3a4545ab19131435e851abb40b34d63d5141c6da"},
|
||||
{file = "apscheduler-3.11.0.tar.gz", hash = "sha256:4c622d250b0955a65d5d0eb91c33e6d43fd879834bf541e0a18661ae60460133"},
|
||||
{file = "apscheduler-3.11.1-py3-none-any.whl", hash = "sha256:6162cb5683cb09923654fa9bdd3130c4be4bfda6ad8990971c9597ecd52965d2"},
|
||||
{file = "apscheduler-3.11.1.tar.gz", hash = "sha256:0db77af6400c84d1747fe98a04b8b58f0080c77d11d338c4f507a9752880f221"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@@ -7277,4 +7277,4 @@ cffi = ["cffi (>=1.11)"]
|
||||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = ">=3.10,<3.14"
|
||||
content-hash = "ff0f6f8d90793ea95f1f7008f7c845432ff46fca0937d5068b4f7cfec0ee7674"
|
||||
content-hash = "4d7134993527a5ff91b531a4e28b36bcab7cef2db18cf00702a950e34ae9ea1d"
|
||||
|
||||
@@ -13,7 +13,7 @@ aio-pika = "^9.5.5"
|
||||
aiohttp = "^3.10.0"
|
||||
aiodns = "^3.5.0"
|
||||
anthropic = "^0.59.0"
|
||||
apscheduler = "^3.11.0"
|
||||
apscheduler = "^3.11.1"
|
||||
autogpt-libs = { path = "../autogpt_libs", develop = true }
|
||||
bleach = { extras = ["css"], version = "^6.2.0" }
|
||||
click = "^8.2.0"
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
import BackendAPI from "@/lib/autogpt-server-api";
|
||||
import { postV1ResetOnboardingProgress } from "@/app/api/__generated__/endpoints/onboarding/onboarding";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default async function OnboardingResetPage() {
|
||||
const api = new BackendAPI();
|
||||
await api.updateUserOnboarding({
|
||||
completedSteps: [],
|
||||
walletShown: false,
|
||||
notified: [],
|
||||
usageReason: null,
|
||||
integrations: [],
|
||||
otherIntegrations: "",
|
||||
selectedStoreListingVersionId: null,
|
||||
agentInput: {},
|
||||
onboardingAgentExecutionId: null,
|
||||
});
|
||||
await postV1ResetOnboardingProgress();
|
||||
redirect("/onboarding/1-welcome");
|
||||
}
|
||||
|
||||
@@ -906,6 +906,23 @@
|
||||
"security": [{ "HTTPBearerJWT": [] }]
|
||||
}
|
||||
},
|
||||
"/api/onboarding/reset": {
|
||||
"post": {
|
||||
"tags": ["v1", "onboarding"],
|
||||
"summary": "Reset onboarding progress",
|
||||
"operationId": "postV1Reset onboarding progress",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Successful Response",
|
||||
"content": { "application/json": { "schema": {} } }
|
||||
},
|
||||
"401": {
|
||||
"$ref": "#/components/responses/HTTP401NotAuthenticatedError"
|
||||
}
|
||||
},
|
||||
"security": [{ "HTTPBearerJWT": [] }]
|
||||
}
|
||||
},
|
||||
"/api/blocks": {
|
||||
"get": {
|
||||
"tags": ["v1", "blocks"],
|
||||
|
||||
@@ -653,6 +653,23 @@ export default function useAgentGraph(
|
||||
getToolFuncName,
|
||||
]);
|
||||
|
||||
const resetEdgeBeads = useCallback(() => {
|
||||
setXYEdges((edges) =>
|
||||
edges.map(
|
||||
(edge): CustomEdge => ({
|
||||
...edge,
|
||||
data: {
|
||||
...edge.data,
|
||||
edgeColor: edge.data?.edgeColor ?? "grey",
|
||||
beadUp: 0,
|
||||
beadDown: 0,
|
||||
beadData: new Map(),
|
||||
},
|
||||
}),
|
||||
),
|
||||
);
|
||||
}, [setXYEdges]);
|
||||
|
||||
const _saveAgent = useCallback(async () => {
|
||||
// FIXME: frontend IDs should be resolved better (e.g. returned from the server)
|
||||
// currently this relies on block_id and position
|
||||
@@ -670,6 +687,7 @@ export default function useAgentGraph(
|
||||
let newSavedAgent: Graph;
|
||||
if (savedAgent && graphsEquivalent(savedAgent, payload)) {
|
||||
console.warn("No need to save: Graph is the same as version on server");
|
||||
resetEdgeBeads();
|
||||
return savedAgent;
|
||||
} else {
|
||||
console.debug(
|
||||
@@ -731,20 +749,7 @@ export default function useAgentGraph(
|
||||
);
|
||||
|
||||
// Reset bead count
|
||||
setXYEdges((edges) =>
|
||||
edges.map(
|
||||
(edge): CustomEdge => ({
|
||||
...edge,
|
||||
data: {
|
||||
...edge.data,
|
||||
edgeColor: edge.data?.edgeColor ?? "grey",
|
||||
beadUp: 0,
|
||||
beadDown: 0,
|
||||
beadData: new Map(),
|
||||
},
|
||||
}),
|
||||
),
|
||||
);
|
||||
resetEdgeBeads();
|
||||
return newSavedAgent;
|
||||
}, [
|
||||
api,
|
||||
@@ -757,6 +762,7 @@ export default function useAgentGraph(
|
||||
pathname,
|
||||
router,
|
||||
searchParams,
|
||||
resetEdgeBeads,
|
||||
]);
|
||||
|
||||
const saveAgent = useCallback(async () => {
|
||||
|
||||
@@ -52,10 +52,10 @@ export function getRunMilestoneSteps(
|
||||
): OnboardingStep[] {
|
||||
const steps: OnboardingStep[] = [];
|
||||
|
||||
if (newRunCount === 10) steps.push("RUN_AGENTS");
|
||||
if (newRunCount === 100) steps.push("RUN_AGENTS_100");
|
||||
if (consecutiveDays === 3) steps.push("RUN_3_DAYS");
|
||||
if (consecutiveDays === 14) steps.push("RUN_14_DAYS");
|
||||
if (newRunCount >= 10) steps.push("RUN_AGENTS");
|
||||
if (newRunCount >= 100) steps.push("RUN_AGENTS_100");
|
||||
if (consecutiveDays >= 3) steps.push("RUN_3_DAYS");
|
||||
if (consecutiveDays >= 14) steps.push("RUN_14_DAYS");
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
@@ -188,7 +188,9 @@ export default function OnboardingProvider({
|
||||
|
||||
updateState({
|
||||
agentRuns: newRunCount,
|
||||
completedSteps: [...state.completedSteps, ...milestoneSteps],
|
||||
completedSteps: Array.from(
|
||||
new Set([...state.completedSteps, ...milestoneSteps]),
|
||||
),
|
||||
...consecutiveData,
|
||||
});
|
||||
}, [state, updateState]);
|
||||
|
||||
Reference in New Issue
Block a user