@agent-native/core 0.78.0 → 0.78.2
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/core/CHANGELOG.md +15 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +269 -237
- package/corpus/core/src/agent/types.ts +22 -0
- package/corpus/core/src/client/AgentPanel.tsx +8 -0
- package/corpus/core/src/client/AssistantChat.tsx +40 -0
- package/corpus/core/src/client/agent-chat.ts +173 -0
- package/corpus/core/src/client/composer/TiptapComposer.tsx +316 -60
- package/corpus/core/src/client/composer/extensions/MentionReference.tsx +3 -0
- package/corpus/core/src/client/composer/types.ts +22 -0
- package/corpus/core/src/client/index.ts +5 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +10 -0
- package/corpus/core/src/server/request-context.ts +8 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +13 -0
- package/corpus/templates/assets/.agents/skills/asset-generation/SKILL.md +10 -2
- package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +14 -7
- package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +12 -0
- package/corpus/templates/assets/AGENTS.md +18 -3
- package/corpus/templates/assets/actions/_image-model-default.ts +24 -0
- package/corpus/templates/assets/actions/dismiss-variant-slots.ts +15 -22
- package/corpus/templates/assets/actions/generate-asset.ts +30 -23
- package/corpus/templates/assets/actions/generate-image-batch.ts +76 -29
- package/corpus/templates/assets/actions/generate-image.ts +46 -30
- package/corpus/templates/assets/actions/generate-video.ts +18 -3
- package/corpus/templates/assets/actions/list-assets.ts +39 -8
- package/corpus/templates/assets/actions/list-libraries.ts +24 -2
- package/corpus/templates/assets/actions/navigate.ts +1 -1
- package/corpus/templates/assets/actions/open-asset-picker.ts +38 -1
- package/corpus/templates/assets/actions/refresh-generation-run.ts +10 -0
- package/corpus/templates/assets/actions/save-generated-image.ts +21 -19
- package/corpus/templates/assets/actions/variant-slots.ts +131 -28
- package/corpus/templates/assets/actions/view-screen.ts +9 -0
- package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +425 -0
- package/corpus/templates/assets/app/components/layout/Header.tsx +3 -1
- package/corpus/templates/assets/app/components/layout/Layout.tsx +5 -0
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -6
- package/corpus/templates/assets/app/hooks/use-navigation-state.ts +47 -21
- package/corpus/templates/assets/app/i18n-data.ts +1815 -0
- package/corpus/templates/assets/app/lib/libraries.ts +6 -0
- package/corpus/templates/assets/app/lib/picker-chat-handoff.ts +71 -0
- package/corpus/templates/assets/app/routes/_index.tsx +4 -0
- package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -2
- package/corpus/templates/assets/app/routes/audit.tsx +1 -1
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +1557 -2164
- package/corpus/templates/assets/app/routes/brand-kits._index.tsx +7 -191
- package/corpus/templates/assets/app/routes/brand-kits.tsx +1 -5
- package/corpus/templates/assets/app/routes/libraries.tsx +4 -4
- package/corpus/templates/assets/app/routes/library.$id.tsx +9 -7
- package/corpus/templates/assets/app/routes/library.tsx +1454 -175
- package/corpus/templates/assets/server/db/index.ts +1 -1
- package/corpus/templates/assets/server/lib/generation.ts +86 -15
- package/corpus/templates/assets/server/plugins/agent-chat.ts +196 -0
- package/corpus/templates/assets/server/plugins/db.ts +5 -0
- package/corpus/templates/assets/shared/api.ts +6 -3
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +50 -29
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/types.d.ts +21 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +5 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +2 -2
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +6 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +15 -3
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/agent-chat.d.ts +32 -0
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +113 -0
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +2 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +228 -56
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/extensions/MentionReference.d.ts.map +1 -1
- package/dist/client/composer/extensions/MentionReference.js +3 -0
- package/dist/client/composer/extensions/MentionReference.js.map +1 -1
- package/dist/client/composer/types.d.ts +21 -0
- package/dist/client/composer/types.d.ts.map +1 -1
- package/dist/client/composer/types.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +5 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/request-context.d.ts +8 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ for (const type of ["asset-library", "image-library"] as const) {
|
|
|
13
13
|
sharesTable: schema.assetLibraryShares,
|
|
14
14
|
displayName: "Asset Library",
|
|
15
15
|
titleColumn: "title",
|
|
16
|
-
getResourcePath: (library) => `/
|
|
16
|
+
getResourcePath: (library) => `/library/${library.id}`,
|
|
17
17
|
getDb,
|
|
18
18
|
});
|
|
19
19
|
}
|
|
@@ -65,6 +65,17 @@ export interface GenerateProviderOutput {
|
|
|
65
65
|
const MANAGED_PROVIDER_MAX_ATTEMPTS = 3;
|
|
66
66
|
const MANAGED_PROVIDER_RETRY_DELAY_MS =
|
|
67
67
|
process.env.NODE_ENV === "test" ? 0 : 2500;
|
|
68
|
+
// A single managed image generation can legitimately run longer than one
|
|
69
|
+
// request's abort window (pro models routinely exceed 90s). The request always
|
|
70
|
+
// carries the run id as an idempotency key, so re-POSTing the same key replays
|
|
71
|
+
// the finished result (or answers 409 "request in progress") instead of
|
|
72
|
+
// starting a second, double-charged generation. When a request aborts client
|
|
73
|
+
// side, hits an upstream gateway timeout, or reports in-progress, we poll the
|
|
74
|
+
// same key until it resolves rather than failing. ~40 polls * 6s ≈ 4 min.
|
|
75
|
+
const MANAGED_PROVIDER_INFLIGHT_MAX_POLLS =
|
|
76
|
+
process.env.NODE_ENV === "test" ? 6 : 40;
|
|
77
|
+
const MANAGED_PROVIDER_INFLIGHT_POLL_MS =
|
|
78
|
+
process.env.NODE_ENV === "test" ? 0 : 6000;
|
|
68
79
|
|
|
69
80
|
export async function getGeminiApiKey(): Promise<string> {
|
|
70
81
|
const key = await resolveSecret("GEMINI_API_KEY");
|
|
@@ -135,12 +146,19 @@ function isRetryableProviderError(err: unknown): boolean {
|
|
|
135
146
|
class BuilderImageGenerationError extends Error {
|
|
136
147
|
readonly status?: number;
|
|
137
148
|
readonly detail?: string;
|
|
149
|
+
readonly code?: string;
|
|
138
150
|
|
|
139
|
-
constructor(
|
|
151
|
+
constructor(
|
|
152
|
+
message: string,
|
|
153
|
+
status?: number,
|
|
154
|
+
detail?: string,
|
|
155
|
+
code?: string,
|
|
156
|
+
) {
|
|
140
157
|
super(message);
|
|
141
158
|
this.name = "BuilderImageGenerationError";
|
|
142
159
|
this.status = status;
|
|
143
160
|
this.detail = detail;
|
|
161
|
+
this.code = code;
|
|
144
162
|
}
|
|
145
163
|
}
|
|
146
164
|
|
|
@@ -151,12 +169,32 @@ function isRetryableBuilderImageGenerationError(err: unknown): boolean {
|
|
|
151
169
|
);
|
|
152
170
|
}
|
|
153
171
|
|
|
172
|
+
// A client-side abort, an upstream gateway timeout, or the service's explicit
|
|
173
|
+
// 409 "request_in_progress" all mean the generation is still running under this
|
|
174
|
+
// idempotency key. Re-POSTing the same key replays the finished result once the
|
|
175
|
+
// service completes, so these are polled rather than surfaced as failures.
|
|
176
|
+
function isInFlightImageGenerationError(err: unknown): boolean {
|
|
177
|
+
if (!(err instanceof BuilderImageGenerationError)) return false;
|
|
178
|
+
return (
|
|
179
|
+
err.code === "client_timeout" ||
|
|
180
|
+
err.code === "request_in_progress" ||
|
|
181
|
+
err.status === 504 ||
|
|
182
|
+
err.status === 409
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
|
|
154
186
|
function generationRetryDelay(attempt: number): Promise<void> {
|
|
155
187
|
return new Promise((resolve) => {
|
|
156
188
|
setTimeout(resolve, attempt * MANAGED_PROVIDER_RETRY_DELAY_MS);
|
|
157
189
|
});
|
|
158
190
|
}
|
|
159
191
|
|
|
192
|
+
function generationPollDelay(): Promise<void> {
|
|
193
|
+
return new Promise((resolve) => {
|
|
194
|
+
setTimeout(resolve, MANAGED_PROVIDER_INFLIGHT_POLL_MS);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
|
|
160
198
|
interface BuilderImageGenerationResponse {
|
|
161
199
|
id: string;
|
|
162
200
|
status: "completed";
|
|
@@ -231,9 +269,14 @@ export async function generateWithBuilderImageApi(
|
|
|
231
269
|
signal: AbortSignal.timeout(90_000),
|
|
232
270
|
}).catch((err) => {
|
|
233
271
|
if ((err as Error)?.name === "AbortError") {
|
|
272
|
+
// The socket aborted, but the service keeps generating under this
|
|
273
|
+
// idempotency key. Flag it so the retry loop polls the key instead of
|
|
274
|
+
// starting a fresh (double-charged) generation.
|
|
234
275
|
throw new BuilderImageGenerationError(
|
|
235
276
|
"Builder-managed image generation timed out.",
|
|
236
277
|
504,
|
|
278
|
+
undefined,
|
|
279
|
+
"client_timeout",
|
|
237
280
|
);
|
|
238
281
|
}
|
|
239
282
|
throw err;
|
|
@@ -242,10 +285,12 @@ export async function generateWithBuilderImageApi(
|
|
|
242
285
|
if (!response.ok) {
|
|
243
286
|
const text = await response.text().catch(() => "");
|
|
244
287
|
const detail = extractBuilderErrorDetail(text);
|
|
288
|
+
const code = extractBuilderErrorCode(text);
|
|
245
289
|
throw new BuilderImageGenerationError(
|
|
246
290
|
`Builder-managed image generation failed (${response.status})${detail ? `: ${detail}` : "."}`,
|
|
247
291
|
response.status,
|
|
248
292
|
detail,
|
|
293
|
+
code,
|
|
249
294
|
);
|
|
250
295
|
}
|
|
251
296
|
|
|
@@ -286,28 +331,41 @@ export async function generateWithBuilderImageApi(
|
|
|
286
331
|
async function generateWithRetryingBuilderImageApi(
|
|
287
332
|
input: GenerateProviderInput,
|
|
288
333
|
): Promise<GenerateProviderOutput> {
|
|
289
|
-
let
|
|
290
|
-
|
|
334
|
+
let transientAttempts = 0;
|
|
335
|
+
let inFlightPolls = 0;
|
|
336
|
+
for (;;) {
|
|
291
337
|
try {
|
|
292
|
-
if (attempt > 0) {
|
|
293
|
-
await generationRetryDelay(attempt);
|
|
294
|
-
}
|
|
295
338
|
return await generateWithBuilderImageApi(input);
|
|
296
339
|
} catch (err) {
|
|
297
|
-
|
|
340
|
+
// The generation is still running under this idempotency key. Poll the
|
|
341
|
+
// same key — a pending request returns 409 immediately and the final
|
|
342
|
+
// poll returns the stored image as an idempotent replay (no re-charge) —
|
|
343
|
+
// until it resolves or we exhaust the polling budget.
|
|
344
|
+
if (isInFlightImageGenerationError(err)) {
|
|
345
|
+
if (inFlightPolls >= MANAGED_PROVIDER_INFLIGHT_MAX_POLLS) {
|
|
346
|
+
throw new BuilderImageGenerationError(
|
|
347
|
+
"Builder-managed image generation is still running after the wait budget. It may finish shortly — try again to pick up the result.",
|
|
348
|
+
504,
|
|
349
|
+
err instanceof BuilderImageGenerationError ? err.detail : undefined,
|
|
350
|
+
"client_timeout",
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
inFlightPolls += 1;
|
|
354
|
+
await generationPollDelay();
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
// Fresh transient server errors get a few quick retries with backoff.
|
|
298
358
|
if (
|
|
299
|
-
|
|
300
|
-
|
|
359
|
+
isRetryableBuilderImageGenerationError(err) &&
|
|
360
|
+
transientAttempts < MANAGED_PROVIDER_MAX_ATTEMPTS - 1
|
|
301
361
|
) {
|
|
302
|
-
|
|
362
|
+
transientAttempts += 1;
|
|
363
|
+
await generationRetryDelay(transientAttempts);
|
|
364
|
+
continue;
|
|
303
365
|
}
|
|
366
|
+
throw err;
|
|
304
367
|
}
|
|
305
368
|
}
|
|
306
|
-
throw lastError instanceof Error
|
|
307
|
-
? lastError
|
|
308
|
-
: new BuilderImageGenerationError(
|
|
309
|
-
"Builder-managed image generation failed.",
|
|
310
|
-
);
|
|
311
369
|
}
|
|
312
370
|
|
|
313
371
|
export async function generateWithManagedImageProvider(
|
|
@@ -392,6 +450,19 @@ function extractBuilderErrorDetail(text: string): string {
|
|
|
392
450
|
return trimmed.slice(0, 300);
|
|
393
451
|
}
|
|
394
452
|
|
|
453
|
+
// The managed service tags errors with a stable machine code (e.g.
|
|
454
|
+
// "request_in_progress") in the JSON body. It drives retry vs. poll decisions.
|
|
455
|
+
function extractBuilderErrorCode(text: string): string | undefined {
|
|
456
|
+
const trimmed = text.trim();
|
|
457
|
+
if (!trimmed) return undefined;
|
|
458
|
+
try {
|
|
459
|
+
const parsed = JSON.parse(trimmed) as { code?: unknown };
|
|
460
|
+
return typeof parsed?.code === "string" ? parsed.code : undefined;
|
|
461
|
+
} catch {
|
|
462
|
+
return undefined;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
395
466
|
function readProviderErrorDetail(value: unknown): string | null {
|
|
396
467
|
if (typeof value === "string") return value;
|
|
397
468
|
if (!value || typeof value !== "object") return null;
|
|
@@ -3,8 +3,11 @@ import {
|
|
|
3
3
|
createAgentChatPlugin,
|
|
4
4
|
loadActionsFromStaticRegistry,
|
|
5
5
|
} from "@agent-native/core/server";
|
|
6
|
+
import { accessFilter } from "@agent-native/core/sharing";
|
|
7
|
+
import { and, asc, desc, inArray, isNull } from "drizzle-orm";
|
|
6
8
|
|
|
7
9
|
import actionsRegistry from "../../.generated/actions-registry.js";
|
|
10
|
+
import { getDb, schema } from "../db/index.js";
|
|
8
11
|
import "../register-secrets.js";
|
|
9
12
|
|
|
10
13
|
const INITIAL_TOOL_NAMES = [
|
|
@@ -44,5 +47,198 @@ export default createAgentChatPlugin({
|
|
|
44
47
|
initialToolNames: INITIAL_TOOL_NAMES,
|
|
45
48
|
actions: loadActionsFromStaticRegistry(actionsRegistry),
|
|
46
49
|
resolveOrgId: async (event) => (await getOrgContext(event)).orgId,
|
|
50
|
+
mentionProviders: {
|
|
51
|
+
mediaTypes: {
|
|
52
|
+
label: "Media type",
|
|
53
|
+
icon: "file",
|
|
54
|
+
search: (query: string) => {
|
|
55
|
+
const q = query.trim().toLowerCase();
|
|
56
|
+
return [
|
|
57
|
+
{
|
|
58
|
+
id: "media-type:image",
|
|
59
|
+
label: "Image",
|
|
60
|
+
description: "Generate image assets",
|
|
61
|
+
icon: "file",
|
|
62
|
+
refType: "media-type",
|
|
63
|
+
refId: "image",
|
|
64
|
+
slotKey: "media-type",
|
|
65
|
+
slotLabel: "Media",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "media-type:video",
|
|
69
|
+
label: "Video",
|
|
70
|
+
description: "Generate video assets",
|
|
71
|
+
icon: "file",
|
|
72
|
+
refType: "media-type",
|
|
73
|
+
refId: "video",
|
|
74
|
+
slotKey: "media-type",
|
|
75
|
+
slotLabel: "Media",
|
|
76
|
+
},
|
|
77
|
+
].filter((item) =>
|
|
78
|
+
q
|
|
79
|
+
? item.label.toLowerCase().includes(q) ||
|
|
80
|
+
item.refId.toLowerCase().includes(q)
|
|
81
|
+
: true,
|
|
82
|
+
);
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
presets: {
|
|
86
|
+
label: "Presets",
|
|
87
|
+
icon: "document",
|
|
88
|
+
search: async (query: string) => {
|
|
89
|
+
try {
|
|
90
|
+
const db = getDb();
|
|
91
|
+
const libraryRows = await db
|
|
92
|
+
.select({
|
|
93
|
+
id: schema.assetLibraries.id,
|
|
94
|
+
title: schema.assetLibraries.title,
|
|
95
|
+
})
|
|
96
|
+
.from(schema.assetLibraries)
|
|
97
|
+
.where(
|
|
98
|
+
and(
|
|
99
|
+
accessFilter(schema.assetLibraries, schema.assetLibraryShares),
|
|
100
|
+
isNull(schema.assetLibraries.archivedAt),
|
|
101
|
+
),
|
|
102
|
+
)
|
|
103
|
+
.orderBy(desc(schema.assetLibraries.updatedAt));
|
|
104
|
+
const libraryIds = libraryRows.map((library) => library.id);
|
|
105
|
+
if (!libraryIds.length) return [];
|
|
106
|
+
const libraryTitleById = new Map(
|
|
107
|
+
libraryRows.map((library) => [library.id, library.title]),
|
|
108
|
+
);
|
|
109
|
+
const rows = await db
|
|
110
|
+
.select({
|
|
111
|
+
id: schema.assetGenerationPresets.id,
|
|
112
|
+
libraryId: schema.assetGenerationPresets.libraryId,
|
|
113
|
+
title: schema.assetGenerationPresets.title,
|
|
114
|
+
description: schema.assetGenerationPresets.description,
|
|
115
|
+
aspectRatio: schema.assetGenerationPresets.aspectRatio,
|
|
116
|
+
imageSize: schema.assetGenerationPresets.imageSize,
|
|
117
|
+
model: schema.assetGenerationPresets.model,
|
|
118
|
+
mediaType: schema.assetGenerationPresets.mediaType,
|
|
119
|
+
sortOrder: schema.assetGenerationPresets.sortOrder,
|
|
120
|
+
})
|
|
121
|
+
.from(schema.assetGenerationPresets)
|
|
122
|
+
.where(inArray(schema.assetGenerationPresets.libraryId, libraryIds))
|
|
123
|
+
.orderBy(
|
|
124
|
+
asc(schema.assetGenerationPresets.sortOrder),
|
|
125
|
+
asc(schema.assetGenerationPresets.title),
|
|
126
|
+
);
|
|
127
|
+
const q = query.trim().toLowerCase();
|
|
128
|
+
return rows
|
|
129
|
+
.filter((preset) => {
|
|
130
|
+
if (!q) return true;
|
|
131
|
+
const libraryTitle = libraryTitleById.get(preset.libraryId) ?? "";
|
|
132
|
+
return [
|
|
133
|
+
preset.id,
|
|
134
|
+
preset.title,
|
|
135
|
+
preset.description ?? "",
|
|
136
|
+
libraryTitle,
|
|
137
|
+
preset.aspectRatio,
|
|
138
|
+
preset.imageSize,
|
|
139
|
+
preset.model,
|
|
140
|
+
preset.mediaType,
|
|
141
|
+
]
|
|
142
|
+
.join(" ")
|
|
143
|
+
.toLowerCase()
|
|
144
|
+
.includes(q);
|
|
145
|
+
})
|
|
146
|
+
.slice(0, 20)
|
|
147
|
+
.map((preset) => {
|
|
148
|
+
const libraryTitle =
|
|
149
|
+
libraryTitleById.get(preset.libraryId) ?? "Brand kit";
|
|
150
|
+
return {
|
|
151
|
+
id: `preset:${preset.id}`,
|
|
152
|
+
label: preset.title,
|
|
153
|
+
description: `${libraryTitle} · ${preset.aspectRatio} · ${preset.imageSize} · ${preset.model}`,
|
|
154
|
+
icon: "document",
|
|
155
|
+
refType: "preset",
|
|
156
|
+
refId: preset.id,
|
|
157
|
+
refPath: `/library/${preset.libraryId}`,
|
|
158
|
+
slotKey: "preset",
|
|
159
|
+
slotLabel: "Preset",
|
|
160
|
+
metadata: {
|
|
161
|
+
libraryId: preset.libraryId,
|
|
162
|
+
libraryTitle,
|
|
163
|
+
requiredSlotKey: "brand-kit",
|
|
164
|
+
requiredRefId: preset.libraryId,
|
|
165
|
+
mediaType: preset.mediaType,
|
|
166
|
+
},
|
|
167
|
+
relatedReferences: [
|
|
168
|
+
{
|
|
169
|
+
label: libraryTitle,
|
|
170
|
+
icon: "folder",
|
|
171
|
+
source: "brandKits",
|
|
172
|
+
refType: "brand-kit",
|
|
173
|
+
refId: preset.libraryId,
|
|
174
|
+
refPath: `/library/${preset.libraryId}`,
|
|
175
|
+
slotKey: "brand-kit",
|
|
176
|
+
slotLabel: "Brand kit",
|
|
177
|
+
clearsSlots: ["preset"],
|
|
178
|
+
metadata: {
|
|
179
|
+
libraryId: preset.libraryId,
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
} catch (err) {
|
|
186
|
+
console.error("[assets] Preset mention provider failed:", err);
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
brandKits: {
|
|
192
|
+
label: "Brand kits",
|
|
193
|
+
icon: "folder",
|
|
194
|
+
search: async (query: string) => {
|
|
195
|
+
try {
|
|
196
|
+
const rows = await getDb()
|
|
197
|
+
.select({
|
|
198
|
+
id: schema.assetLibraries.id,
|
|
199
|
+
title: schema.assetLibraries.title,
|
|
200
|
+
description: schema.assetLibraries.description,
|
|
201
|
+
updatedAt: schema.assetLibraries.updatedAt,
|
|
202
|
+
})
|
|
203
|
+
.from(schema.assetLibraries)
|
|
204
|
+
.where(
|
|
205
|
+
and(
|
|
206
|
+
accessFilter(schema.assetLibraries, schema.assetLibraryShares),
|
|
207
|
+
isNull(schema.assetLibraries.archivedAt),
|
|
208
|
+
),
|
|
209
|
+
)
|
|
210
|
+
.orderBy(desc(schema.assetLibraries.updatedAt));
|
|
211
|
+
const q = query.trim().toLowerCase();
|
|
212
|
+
return rows
|
|
213
|
+
.filter((library) => {
|
|
214
|
+
if (!q) return true;
|
|
215
|
+
return [library.id, library.title, library.description ?? ""]
|
|
216
|
+
.join(" ")
|
|
217
|
+
.toLowerCase()
|
|
218
|
+
.includes(q);
|
|
219
|
+
})
|
|
220
|
+
.slice(0, 20)
|
|
221
|
+
.map((library) => ({
|
|
222
|
+
id: `brand-kit:${library.id}`,
|
|
223
|
+
label: library.title,
|
|
224
|
+
description: library.description ?? `/library/${library.id}`,
|
|
225
|
+
icon: "folder",
|
|
226
|
+
refType: "brand-kit",
|
|
227
|
+
refId: library.id,
|
|
228
|
+
refPath: `/library/${library.id}`,
|
|
229
|
+
slotKey: "brand-kit",
|
|
230
|
+
slotLabel: "Brand kit",
|
|
231
|
+
clearsSlots: ["preset"],
|
|
232
|
+
metadata: {
|
|
233
|
+
libraryId: library.id,
|
|
234
|
+
},
|
|
235
|
+
}));
|
|
236
|
+
} catch (err) {
|
|
237
|
+
console.error("[assets] Brand kit mention provider failed:", err);
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
},
|
|
47
243
|
runSoftTimeoutMs: 240_000,
|
|
48
244
|
});
|
|
@@ -297,6 +297,11 @@ export default runMigrations(
|
|
|
297
297
|
CREATE INDEX IF NOT EXISTS image_libraries_owner_org_updated_idx
|
|
298
298
|
ON image_libraries (owner_email, org_id, updated_at)`,
|
|
299
299
|
},
|
|
300
|
+
{
|
|
301
|
+
version: 34,
|
|
302
|
+
sql: `CREATE INDEX IF NOT EXISTS image_assets_library_created_idx
|
|
303
|
+
ON image_assets (library_id, created_at)`,
|
|
304
|
+
},
|
|
300
305
|
],
|
|
301
306
|
// Preserve the legacy migration table name so existing Images deployments do
|
|
302
307
|
// not rerun historical additive migrations after the app slug becomes Assets.
|
|
@@ -134,6 +134,7 @@ export interface ImageLibrarySummary {
|
|
|
134
134
|
videoCount?: number;
|
|
135
135
|
coverAsset?: ImageAssetPreview | null;
|
|
136
136
|
previewAssets?: ImageAssetPreview[];
|
|
137
|
+
folders?: AssetFolderSummary[];
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
export interface ImageAssetPreview {
|
|
@@ -199,6 +200,8 @@ export interface AssetVariantState {
|
|
|
199
200
|
collectionId?: string | null;
|
|
200
201
|
presetId?: string | null;
|
|
201
202
|
sessionId?: string | null;
|
|
203
|
+
threadId?: string | null;
|
|
204
|
+
variantScopeId?: string | null;
|
|
202
205
|
prompt: string;
|
|
203
206
|
slots: Array<{
|
|
204
207
|
slotId: string;
|
|
@@ -225,9 +228,9 @@ export interface GenerationPresetSummary {
|
|
|
225
228
|
category: ImageCategory;
|
|
226
229
|
mediaType: AssetMediaType;
|
|
227
230
|
promptTemplate?: string | null;
|
|
228
|
-
aspectRatio: AspectRatio;
|
|
229
|
-
imageSize: ImageSize;
|
|
230
|
-
model: ImageModel;
|
|
231
|
+
aspectRatio: AspectRatio | VideoAspectRatio;
|
|
232
|
+
imageSize: ImageSize | VideoResolution;
|
|
233
|
+
model: ImageModel | VideoModel;
|
|
231
234
|
textPolicy: string;
|
|
232
235
|
referencePolicy: GenerationPresetReferencePolicy;
|
|
233
236
|
settings: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -2997,6 +2997,11 @@ export function createProductionAgentHandler(options) {
|
|
|
2997
2997
|
if (requestRunCtx) {
|
|
2998
2998
|
requestRunCtx.browserTabId = requestBrowserTabId;
|
|
2999
2999
|
requestRunCtx.chatScope = requestChatScope;
|
|
3000
|
+
// Let template extraContext / system-prompt builders detect the durable
|
|
3001
|
+
// background worker so they can skip heavy hang-prone enrichment (e.g. the
|
|
3002
|
+
// analytics data-dictionary read) that otherwise stalls the worker before
|
|
3003
|
+
// it claims its run. Set early — before the system-prompt build runs.
|
|
3004
|
+
requestRunCtx.isBackgroundWorker = isBackgroundWorker;
|
|
3000
3005
|
}
|
|
3001
3006
|
const requestMode = body.mode === "plan" ? "plan" : "act";
|
|
3002
3007
|
const hasMessageText = typeof message === "string" && message.trim().length > 0;
|
|
@@ -3196,13 +3201,13 @@ export function createProductionAgentHandler(options) {
|
|
|
3196
3201
|
// Run all independent pre-send steps in parallel. Each of these hits
|
|
3197
3202
|
// the DB or invokes an action; running them sequentially was the
|
|
3198
3203
|
// single biggest contributor to pre-LLM latency.
|
|
3199
|
-
const
|
|
3200
|
-
const
|
|
3204
|
+
const enrichedMessageThunk = () => enrichMessage(requestMessage, references);
|
|
3205
|
+
const loopSettingsThunk = () => readAgentLoopSettings({
|
|
3201
3206
|
userEmail: ownerEmail ?? getRequestUserEmail() ?? null,
|
|
3202
3207
|
orgId: getRequestOrgId() ?? null,
|
|
3203
3208
|
}).catch(() => readAgentLoopSettings({}));
|
|
3204
3209
|
let systemPromptError = null;
|
|
3205
|
-
const
|
|
3210
|
+
const systemPromptThunk = () => (async () => {
|
|
3206
3211
|
const sysPromptStart = Date.now();
|
|
3207
3212
|
try {
|
|
3208
3213
|
return typeof options.systemPrompt === "function"
|
|
@@ -3217,7 +3222,7 @@ export function createProductionAgentHandler(options) {
|
|
|
3217
3222
|
setupMarks.sysPromptMs = Date.now() - sysPromptStart;
|
|
3218
3223
|
}
|
|
3219
3224
|
})();
|
|
3220
|
-
const
|
|
3225
|
+
const screenContextThunk = () => (async () => {
|
|
3221
3226
|
const screenStart = Date.now();
|
|
3222
3227
|
try {
|
|
3223
3228
|
const viewScreenAction = resolvedActions["view-screen"];
|
|
@@ -3249,7 +3254,7 @@ export function createProductionAgentHandler(options) {
|
|
|
3249
3254
|
}
|
|
3250
3255
|
return "";
|
|
3251
3256
|
})();
|
|
3252
|
-
const
|
|
3257
|
+
const urlContextThunk = () => (async () => {
|
|
3253
3258
|
try {
|
|
3254
3259
|
const url = (await readAppStateForBrowserTab("__url__", requestBrowserTabId));
|
|
3255
3260
|
if (url && (url.pathname || url.search || url.hash)) {
|
|
@@ -3283,7 +3288,7 @@ export function createProductionAgentHandler(options) {
|
|
|
3283
3288
|
// with text selected on the page. Treat anything older than 5 minutes
|
|
3284
3289
|
// as stale and ignore it.
|
|
3285
3290
|
const SELECTION_TTL_MS = 5 * 60 * 1000;
|
|
3286
|
-
const
|
|
3291
|
+
const selectionContextThunk = () => (async () => {
|
|
3287
3292
|
try {
|
|
3288
3293
|
const sel = (await readAppState("pending-selection-context"));
|
|
3289
3294
|
if (!sel?.text)
|
|
@@ -3304,7 +3309,7 @@ export function createProductionAgentHandler(options) {
|
|
|
3304
3309
|
// so the agent knows what files, skills, jobs, and custom agents exist.
|
|
3305
3310
|
// Templates can opt out via `skipFilesContext: true` when the inventory
|
|
3306
3311
|
// is unrelated to the app's job (e.g. a voice-first macro tracker).
|
|
3307
|
-
const
|
|
3312
|
+
const filesContextThunk = () => (async () => {
|
|
3308
3313
|
let filesContext = "";
|
|
3309
3314
|
if (options.skipFilesContext)
|
|
3310
3315
|
return filesContext;
|
|
@@ -3387,23 +3392,32 @@ export function createProductionAgentHandler(options) {
|
|
|
3387
3392
|
}
|
|
3388
3393
|
return filesContext;
|
|
3389
3394
|
})();
|
|
3390
|
-
// Durable bg worker: a pre-send
|
|
3391
|
-
//
|
|
3392
|
-
//
|
|
3393
|
-
//
|
|
3394
|
-
// preStart≈18s).
|
|
3395
|
-
//
|
|
3396
|
-
//
|
|
3397
|
-
//
|
|
3398
|
-
//
|
|
3399
|
-
//
|
|
3400
|
-
//
|
|
3401
|
-
|
|
3395
|
+
// Durable bg worker: a pre-send step that HANGS (rather than erroring) would
|
|
3396
|
+
// otherwise stall the worker until the foreground inline-recovery grace
|
|
3397
|
+
// (~16s) — wasting the entire 15-min durable budget and leaving the run
|
|
3398
|
+
// un-claimed (the exact analytics symptom: diag stuck at model_done,
|
|
3399
|
+
// preStart≈18s). `presendCap` takes a THUNK (not an eagerly-started promise):
|
|
3400
|
+
// the work runs INSIDE the cap, after the timer is armed, so a step whose
|
|
3401
|
+
// own synchronous prefix is heavy can still be timed out — an eagerly-created
|
|
3402
|
+
// promise would start (and could block the loop) before the cap ever wrapped
|
|
3403
|
+
// it. On timeout it records `presend_timeout:<label>` so a stalled phase is
|
|
3404
|
+
// attributable, then degrades to the fallback so the worker proceeds to
|
|
3405
|
+
// claim. Foreground keeps the un-capped path (thunk invoked immediately), so
|
|
3406
|
+
// its behaviour is unchanged. A rejected step (e.g. enrichMessage has no
|
|
3407
|
+
// .catch) resolves to the fallback instead of rejecting the whole batch.
|
|
3408
|
+
const presendCap = (label, thunk, fallback, ms) => {
|
|
3402
3409
|
if (!isBackgroundWorker)
|
|
3403
|
-
return
|
|
3410
|
+
return thunk();
|
|
3404
3411
|
return new Promise((resolve) => {
|
|
3405
|
-
const timer = setTimeout(() =>
|
|
3406
|
-
|
|
3412
|
+
const timer = setTimeout(() => {
|
|
3413
|
+
workerStep(`presend_timeout:${label}`);
|
|
3414
|
+
resolve(fallback);
|
|
3415
|
+
}, ms);
|
|
3416
|
+
// Defer invocation one microtask so every sibling cap arms its timer
|
|
3417
|
+
// before any thunk's synchronous prefix runs.
|
|
3418
|
+
void Promise.resolve()
|
|
3419
|
+
.then(thunk)
|
|
3420
|
+
.then((v) => {
|
|
3407
3421
|
clearTimeout(timer);
|
|
3408
3422
|
resolve(v);
|
|
3409
3423
|
}, () => {
|
|
@@ -3421,13 +3435,13 @@ export function createProductionAgentHandler(options) {
|
|
|
3421
3435
|
source: "default",
|
|
3422
3436
|
};
|
|
3423
3437
|
const [systemPrompt, screenBlock, urlBlock, selectionBlock, filesContext, loopSettings, enrichedMessage,] = await Promise.all([
|
|
3424
|
-
presendCap(
|
|
3425
|
-
presendCap(
|
|
3426
|
-
presendCap(
|
|
3427
|
-
presendCap(
|
|
3428
|
-
presendCap(
|
|
3429
|
-
presendCap(
|
|
3430
|
-
presendCap(
|
|
3438
|
+
presendCap("systemPrompt", systemPromptThunk, "", 13000),
|
|
3439
|
+
presendCap("screen", screenContextThunk, "", 9000),
|
|
3440
|
+
presendCap("url", urlContextThunk, "", 9000),
|
|
3441
|
+
presendCap("selection", selectionContextThunk, "", 9000),
|
|
3442
|
+
presendCap("files", filesContextThunk, "", 12000),
|
|
3443
|
+
presendCap("loopSettings", loopSettingsThunk, fallbackLoopSettings, 9000),
|
|
3444
|
+
presendCap("enrichedMessage", enrichedMessageThunk, requestMessage, 9000),
|
|
3431
3445
|
]);
|
|
3432
3446
|
setupMark("ctxAll");
|
|
3433
3447
|
// DIAGNOSTIC-ONLY: all parallel context gathering (system prompt, screen,
|
|
@@ -3909,6 +3923,13 @@ export function createProductionAgentHandler(options) {
|
|
|
3909
3923
|
// DIAGNOSTIC-ONLY: last stage before startRun fires. A worker that reaches
|
|
3910
3924
|
// prestart but never workerStarted is hanging inside startRun itself.
|
|
3911
3925
|
workerStep("prestart");
|
|
3926
|
+
// DIAGNOSTIC-ONLY: peak-ish RSS (MB) + assembled system-prompt size (KB) at
|
|
3927
|
+
// prestart. The analytics bg worker dies right after model_done; if the
|
|
3928
|
+
// FOREGROUND (identical build, writes land) is already near the ~1024MB
|
|
3929
|
+
// Netlify function limit, an OOM kill in the heavier worker explains the
|
|
3930
|
+
// freeze. Both numbers ride along in the existing setup-timings detail.
|
|
3931
|
+
setupMarks.rssMB = Math.round(process.memoryUsage().rss / 1048576);
|
|
3932
|
+
setupMarks.promptKB = Math.round((systemPrompt?.length ?? 0) / 1024);
|
|
3912
3933
|
const setupDetail = Object.entries(setupMarks)
|
|
3913
3934
|
.map(([k, v]) => `${k}=${v}`)
|
|
3914
3935
|
.join(" ") + ` total=${Date.now() - setupT0}`;
|