@agent-native/toolkit 0.228.2 → 0.229.0-nightly-20261113212325
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/dist/app/providers/BuilderSignupActivation.d.ts.map +1 -1
- package/dist/app/providers/BuilderSignupActivation.js +25 -3
- package/dist/app/providers/BuilderSignupActivation.js.map +1 -1
- package/package.json +4 -4
- package/src/app/onboarding/FirstRunOnboarding.spec.tsx +0 -6
- package/src/app/providers/BuilderSignupActivation.spec.tsx +42 -8
- package/src/app/providers/BuilderSignupActivation.tsx +34 -5
- package/src/app/settings/shell/pages/resource-pages.spec.tsx +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderSignupActivation.d.ts","sourceRoot":"","sources":["../../../src/app/providers/BuilderSignupActivation.tsx"],"names":[],"mappings":"AAQA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BuilderSignupActivation.d.ts","sourceRoot":"","sources":["../../../src/app/providers/BuilderSignupActivation.tsx"],"names":[],"mappings":"AAQA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBpE,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,EAAE,MAAM,GACnB;IACD,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAqLA;AAOD,wBAAgB,4BAA4B,CAAC,EAC3C,UAAU,EACV,QAAQ,EACR,WAAmB,EACnB,WAAW,GACZ,EAAE;IACD,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAgDA;AAED,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,EACZ,eAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE;IACD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAwBA"}
|
|
@@ -16,6 +16,7 @@ const attempts = new Map();
|
|
|
16
16
|
export function useBuilderSignupActivation(userId, experimentId) {
|
|
17
17
|
const queryClient = useQueryClient();
|
|
18
18
|
const attemptKey = `${experimentId}:${userId}`;
|
|
19
|
+
const refreshedConnection = useRef(undefined);
|
|
19
20
|
const recoveryAttempts = useRef(new Map());
|
|
20
21
|
const [activation, setActivation] = useState();
|
|
21
22
|
const eligibility = useQuery({
|
|
@@ -30,6 +31,17 @@ export function useBuilderSignupActivation(userId, experimentId) {
|
|
|
30
31
|
? 2000
|
|
31
32
|
: false,
|
|
32
33
|
});
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (userId &&
|
|
36
|
+
refreshedConnection.current !== attemptKey &&
|
|
37
|
+
(eligibility.data === "connected" ||
|
|
38
|
+
(activation?.userId === userId && activation.refreshReadiness))) {
|
|
39
|
+
refreshedConnection.current = attemptKey;
|
|
40
|
+
// Provider readiness is cached outside React Query and may have been
|
|
41
|
+
// checked before the signup callback finished saving credentials.
|
|
42
|
+
window.dispatchEvent(new Event("agent-engine:configured-changed"));
|
|
43
|
+
}
|
|
44
|
+
}, [activation, attemptKey, eligibility.data, userId]);
|
|
33
45
|
useEffect(() => {
|
|
34
46
|
if (eligibility.error && userId) {
|
|
35
47
|
void track("builder_signup_experiment_client_failed", {
|
|
@@ -55,7 +67,15 @@ export function useBuilderSignupActivation(userId, experimentId) {
|
|
|
55
67
|
});
|
|
56
68
|
attempts.set(attemptKey, attempt);
|
|
57
69
|
}
|
|
58
|
-
const settle = () =>
|
|
70
|
+
const settle = (status) => {
|
|
71
|
+
setActivation((current) => current?.userId === userId
|
|
72
|
+
? {
|
|
73
|
+
userId,
|
|
74
|
+
status: "settled",
|
|
75
|
+
refreshReadiness: status === "connected",
|
|
76
|
+
}
|
|
77
|
+
: current);
|
|
78
|
+
};
|
|
59
79
|
void attempt.then(settle, (error) => {
|
|
60
80
|
if (attempts.get(attemptKey) === attempt)
|
|
61
81
|
attempts.delete(attemptKey);
|
|
@@ -85,8 +105,10 @@ export function useBuilderSignupActivation(userId, experimentId) {
|
|
|
85
105
|
useEffect(() => {
|
|
86
106
|
if ((activation?.status === "checking" || activation?.status === "paused") &&
|
|
87
107
|
activation.userId === userId &&
|
|
88
|
-
eligibility.data === "disabled") {
|
|
89
|
-
|
|
108
|
+
(eligibility.data === "disabled" || eligibility.data === "connected")) {
|
|
109
|
+
// A previously confirmed activation can finish while the browser is
|
|
110
|
+
// paused. Refresh even if its recent-completion signal has expired.
|
|
111
|
+
setActivation({ userId, status: "settled", refreshReadiness: true });
|
|
90
112
|
void queryClient.invalidateQueries();
|
|
91
113
|
}
|
|
92
114
|
else if (activation?.status === "checking" &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderSignupActivation.js","sourceRoot":"","sources":["../../../src/app/providers/BuilderSignupActivation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AAExF,MAAM,QAAQ,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"BuilderSignupActivation.js","sourceRoot":"","sources":["../../../src/app/providers/BuilderSignupActivation.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.229.0-nightly-20261113212325",
|
|
4
4
|
"description": "Reusable app-building UI and helpers for Agent-Native apps.",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -716,7 +716,7 @@
|
|
|
716
716
|
"y-protocols": "^1.0.7",
|
|
717
717
|
"yjs": "^13.6.33",
|
|
718
718
|
"zod": "^4.3.6",
|
|
719
|
-
"@agent-native/agentkit": "^0.
|
|
719
|
+
"@agent-native/agentkit": "^0.229.0-nightly-20261113212325"
|
|
720
720
|
},
|
|
721
721
|
"devDependencies": {
|
|
722
722
|
"@excalidraw/excalidraw": "0.18.1",
|
|
@@ -740,10 +740,10 @@
|
|
|
740
740
|
"typescript-7": "npm:typescript@^7.0.2",
|
|
741
741
|
"vite": "8.1.0",
|
|
742
742
|
"vitest": "^4.1.5",
|
|
743
|
-
"@agent-native/core": "^0.
|
|
743
|
+
"@agent-native/core": "^0.229.0-nightly-20261113212325"
|
|
744
744
|
},
|
|
745
745
|
"peerDependencies": {
|
|
746
|
-
"@agent-native/core": "
|
|
746
|
+
"@agent-native/core": "0.229.0-nightly-20261113212325",
|
|
747
747
|
"@excalidraw/excalidraw": ">=0.18",
|
|
748
748
|
"@excalidraw/mermaid-to-excalidraw": ">=2",
|
|
749
749
|
"@tanstack/react-query": "^5.99.2",
|
|
@@ -79,12 +79,6 @@ vi.mock("@agent-native/core/client/feature-flags/use-feature-flag", () => ({
|
|
|
79
79
|
useFeatureFlagState: () => ({ status: "ready", enabled: true }),
|
|
80
80
|
}));
|
|
81
81
|
|
|
82
|
-
vi.mock("@agent-native/core/client/use-action", () => ({
|
|
83
|
-
useActionMutation: () => ({
|
|
84
|
-
mutateAsync: (...args: unknown[]) => mocks.recordCreditsV2Exposure(...args),
|
|
85
|
-
}),
|
|
86
|
-
}));
|
|
87
|
-
|
|
88
82
|
vi.mock("@agent-native/core/client/use-action", async (importOriginal) => ({
|
|
89
83
|
...(await importOriginal<
|
|
90
84
|
typeof import("@agent-native/core/client/use-action")
|
|
@@ -10,7 +10,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
10
10
|
).IS_REACT_ACT_ENVIRONMENT = true;
|
|
11
11
|
|
|
12
12
|
const mocks = vi.hoisted(() => ({
|
|
13
|
-
status: vi.fn<() => Promise<"eligible" | "disabled">>(),
|
|
13
|
+
status: vi.fn<() => Promise<"eligible" | "connected" | "disabled">>(),
|
|
14
14
|
activate: vi.fn<() => Promise<"connected" | "fallback" | "disabled">>(),
|
|
15
15
|
}));
|
|
16
16
|
|
|
@@ -107,6 +107,33 @@ describe("BuilderSignupActivation", () => {
|
|
|
107
107
|
container.remove();
|
|
108
108
|
});
|
|
109
109
|
|
|
110
|
+
it.each(["connected", "eligible"] as const)(
|
|
111
|
+
"refreshes the composer after successful activation with initial status %s",
|
|
112
|
+
async (status) => {
|
|
113
|
+
mocks.status.mockResolvedValue(status);
|
|
114
|
+
mocks.activate.mockImplementation(async () => {
|
|
115
|
+
mocks.status.mockResolvedValue("connected");
|
|
116
|
+
return "connected";
|
|
117
|
+
});
|
|
118
|
+
const refresh = vi.fn();
|
|
119
|
+
window.addEventListener("agent-engine:configured-changed", refresh);
|
|
120
|
+
try {
|
|
121
|
+
await render(`readiness-${status}-user`);
|
|
122
|
+
await vi.waitFor(() => expect(refresh).toHaveBeenCalledOnce());
|
|
123
|
+
expect(mocks.activate).toHaveBeenCalledTimes(
|
|
124
|
+
status === "eligible" ? 1 : 0,
|
|
125
|
+
);
|
|
126
|
+
expect(container.querySelector("[inert]")).toBeNull();
|
|
127
|
+
await act(async () => {
|
|
128
|
+
await queryClient.refetchQueries();
|
|
129
|
+
});
|
|
130
|
+
expect(refresh).toHaveBeenCalledOnce();
|
|
131
|
+
} finally {
|
|
132
|
+
window.removeEventListener("agent-engine:configured-changed", refresh);
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
);
|
|
136
|
+
|
|
110
137
|
it("reports eligibility resolution separately from confirmed activation", async () => {
|
|
111
138
|
mocks.status.mockReturnValue(new Promise(() => {}));
|
|
112
139
|
await render("pending-user");
|
|
@@ -196,13 +223,20 @@ describe("BuilderSignupActivation", () => {
|
|
|
196
223
|
.querySelector("button")
|
|
197
224
|
?.getAttribute("data-startup-interaction-blocked"),
|
|
198
225
|
).toBe("true");
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
226
|
+
const refresh = vi.fn();
|
|
227
|
+
window.addEventListener("agent-engine:configured-changed", refresh);
|
|
228
|
+
try {
|
|
229
|
+
mocks.status.mockResolvedValue("disabled");
|
|
230
|
+
await act(async () => {
|
|
231
|
+
await queryClient.invalidateQueries();
|
|
232
|
+
});
|
|
233
|
+
await vi.waitFor(() =>
|
|
234
|
+
expect(container.querySelector("[role='status']")).toBeNull(),
|
|
235
|
+
);
|
|
236
|
+
expect(refresh).toHaveBeenCalledOnce();
|
|
237
|
+
} finally {
|
|
238
|
+
window.removeEventListener("agent-engine:configured-changed", refresh);
|
|
239
|
+
}
|
|
206
240
|
});
|
|
207
241
|
|
|
208
242
|
it("keeps unknown eligibility deferred with an interactive Retry notice until status is confirmed", async () => {
|
|
@@ -16,7 +16,10 @@ import {
|
|
|
16
16
|
} from "../onboarding/first-run-startup-gate-context.js";
|
|
17
17
|
import { FirstRunOnboardingStartupGate } from "../onboarding/first-run-startup-gate.js";
|
|
18
18
|
|
|
19
|
-
const attempts = new Map<
|
|
19
|
+
const attempts = new Map<
|
|
20
|
+
string,
|
|
21
|
+
ReturnType<typeof activateBuilderSignupAssignment>
|
|
22
|
+
>();
|
|
20
23
|
|
|
21
24
|
// Runs a pending Builder signup activation for the signed-in user and reports
|
|
22
25
|
// whether it is still in progress. Anything outside the cover that opens UI,
|
|
@@ -32,11 +35,13 @@ export function useBuilderSignupActivation(
|
|
|
32
35
|
} {
|
|
33
36
|
const queryClient = useQueryClient();
|
|
34
37
|
const attemptKey = `${experimentId}:${userId}`;
|
|
38
|
+
const refreshedConnection = useRef<string | undefined>(undefined);
|
|
35
39
|
const recoveryAttempts = useRef(new Map<string, number>());
|
|
36
40
|
const [activation, setActivation] = useState<{
|
|
37
41
|
userId: string;
|
|
38
42
|
status: "running" | "checking" | "paused" | "settled";
|
|
39
43
|
failedAt?: number;
|
|
44
|
+
refreshReadiness?: boolean;
|
|
40
45
|
}>();
|
|
41
46
|
const eligibility = useQuery({
|
|
42
47
|
queryKey: ["builder-signup-eligibility", experimentId, userId],
|
|
@@ -51,6 +56,19 @@ export function useBuilderSignupActivation(
|
|
|
51
56
|
? 2000
|
|
52
57
|
: false,
|
|
53
58
|
});
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (
|
|
61
|
+
userId &&
|
|
62
|
+
refreshedConnection.current !== attemptKey &&
|
|
63
|
+
(eligibility.data === "connected" ||
|
|
64
|
+
(activation?.userId === userId && activation.refreshReadiness))
|
|
65
|
+
) {
|
|
66
|
+
refreshedConnection.current = attemptKey;
|
|
67
|
+
// Provider readiness is cached outside React Query and may have been
|
|
68
|
+
// checked before the signup callback finished saving credentials.
|
|
69
|
+
window.dispatchEvent(new Event("agent-engine:configured-changed"));
|
|
70
|
+
}
|
|
71
|
+
}, [activation, attemptKey, eligibility.data, userId]);
|
|
54
72
|
useEffect(() => {
|
|
55
73
|
if (eligibility.error && userId) {
|
|
56
74
|
void track("builder_signup_experiment_client_failed", {
|
|
@@ -78,10 +96,19 @@ export function useBuilderSignupActivation(
|
|
|
78
96
|
});
|
|
79
97
|
attempts.set(attemptKey, attempt);
|
|
80
98
|
}
|
|
81
|
-
const settle = (
|
|
99
|
+
const settle = (
|
|
100
|
+
status: Awaited<ReturnType<typeof activateBuilderSignupAssignment>>,
|
|
101
|
+
) => {
|
|
82
102
|
setActivation((current) =>
|
|
83
|
-
current?.userId === userId
|
|
103
|
+
current?.userId === userId
|
|
104
|
+
? {
|
|
105
|
+
userId,
|
|
106
|
+
status: "settled",
|
|
107
|
+
refreshReadiness: status === "connected",
|
|
108
|
+
}
|
|
109
|
+
: current,
|
|
84
110
|
);
|
|
111
|
+
};
|
|
85
112
|
void attempt.then(settle, (error: unknown) => {
|
|
86
113
|
if (attempts.get(attemptKey) === attempt) attempts.delete(attemptKey);
|
|
87
114
|
void track("builder_signup_experiment_client_failed", {
|
|
@@ -114,9 +141,11 @@ export function useBuilderSignupActivation(
|
|
|
114
141
|
if (
|
|
115
142
|
(activation?.status === "checking" || activation?.status === "paused") &&
|
|
116
143
|
activation.userId === userId &&
|
|
117
|
-
eligibility.data === "disabled"
|
|
144
|
+
(eligibility.data === "disabled" || eligibility.data === "connected")
|
|
118
145
|
) {
|
|
119
|
-
|
|
146
|
+
// A previously confirmed activation can finish while the browser is
|
|
147
|
+
// paused. Refresh even if its recent-completion signal has expired.
|
|
148
|
+
setActivation({ userId, status: "settled", refreshReadiness: true });
|
|
120
149
|
void queryClient.invalidateQueries();
|
|
121
150
|
} else if (
|
|
122
151
|
activation?.status === "checking" &&
|
|
@@ -41,9 +41,6 @@ vi.mock("../../../resources/ResourceEditor.js", () => ({
|
|
|
41
41
|
ResourceEditor: () => null,
|
|
42
42
|
}));
|
|
43
43
|
|
|
44
|
-
vi.mock("@agent-native/core/client/org/hooks", () => ({
|
|
45
|
-
useOrg: () => ({ data: orgState.value, isLoading: false }),
|
|
46
|
-
}));
|
|
47
44
|
vi.mock("@agent-native/core/client/org/hooks", () => ({
|
|
48
45
|
useOrg: () => ({ data: orgState.value, isLoading: false }),
|
|
49
46
|
}));
|