@aglyn/plugins-ai 1.0.0-beta.231 → 1.0.0-beta.232
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/package.json +17 -17
- package/src/lib/activity/ai-activity-actions.js +8 -4
- package/src/lib/activity/ai-activity-actions.js.map +1 -1
- package/src/lib/components/ai-job-follow.component.js +1 -0
- package/src/lib/components/ai-job-follow.component.js.map +1 -1
- package/src/lib/components/ai-job-links.js +13 -0
- package/src/lib/components/ai-job-links.js.map +1 -1
- package/src/lib/components/ai-jobs-list-page.component.js +1 -0
- package/src/lib/components/ai-jobs-list-page.component.js.map +1 -1
- package/src/lib/components/ai-media-create.component.d.ts +20 -7
- package/src/lib/components/ai-media-create.component.js +107 -55
- package/src/lib/components/ai-media-create.component.js.map +1 -1
- package/src/lib/components/ai-seo-fields-card.component.js +1 -0
- package/src/lib/components/ai-seo-fields-card.component.js.map +1 -1
- package/src/lib/components/ai-site-memory-card.component.d.ts +32 -0
- package/src/lib/components/ai-site-memory-card.component.js +187 -0
- package/src/lib/components/ai-site-memory-card.component.js.map +1 -0
- package/src/lib/components/ai-site-start-card.component.js +80 -77
- package/src/lib/components/ai-site-start-card.component.js.map +1 -1
- package/src/lib/components/ai-theme-proposal-card.component.js +4 -0
- package/src/lib/components/ai-theme-proposal-card.component.js.map +1 -1
- package/src/lib/components/ai-usage-strip.component.js +1 -0
- package/src/lib/components/ai-usage-strip.component.js.map +1 -1
- package/src/lib/components/assist-panel.component.d.ts +10 -0
- package/src/lib/components/assist-panel.component.js +119 -9
- package/src/lib/components/assist-panel.component.js.map +1 -1
- package/src/lib/components/assist-signals-page.component.js +2 -0
- package/src/lib/components/assist-signals-page.component.js.map +1 -1
- package/src/lib/components/billing-ai-allotments.component.js +3 -0
- package/src/lib/components/billing-ai-allotments.component.js.map +1 -1
- package/src/lib/components/billing-ai-top-users.component.js +1 -0
- package/src/lib/components/billing-ai-top-users.component.js.map +1 -1
- package/src/lib/components/billing-assist-overage-card.component.js +2 -0
- package/src/lib/components/billing-assist-overage-card.component.js.map +1 -1
- package/src/lib/components/member-ai-usage-card.component.js +10 -0
- package/src/lib/components/member-ai-usage-card.component.js.map +1 -1
- package/src/lib/components/staff-org-ai-card.component.js +1 -0
- package/src/lib/components/staff-org-ai-card.component.js.map +1 -1
- package/src/lib/components/staff-org-ai-conversations.component.d.ts +23 -0
- package/src/lib/components/staff-org-ai-conversations.component.js +346 -0
- package/src/lib/components/staff-org-ai-conversations.component.js.map +1 -0
- package/src/lib/jobs/ai-build-capabilities.d.ts +13 -1
- package/src/lib/jobs/ai-build-capabilities.js +101 -7
- package/src/lib/jobs/ai-build-capabilities.js.map +1 -1
- package/src/lib/jobs/ai-business-profile-prefill.d.ts +29 -0
- package/src/lib/jobs/ai-business-profile-prefill.js +85 -0
- package/src/lib/jobs/ai-business-profile-prefill.js.map +1 -0
- package/src/lib/jobs/ai-job-build-step.js +3 -1
- package/src/lib/jobs/ai-job-build-step.js.map +1 -1
- package/src/lib/jobs/ai-job-edit-step.d.ts +225 -0
- package/src/lib/jobs/ai-job-edit-step.js +631 -0
- package/src/lib/jobs/ai-job-edit-step.js.map +1 -0
- package/src/lib/jobs/ai-job-insight-step.js +21 -4
- package/src/lib/jobs/ai-job-insight-step.js.map +1 -1
- package/src/lib/jobs/ai-job-layout-language.d.ts +8 -3
- package/src/lib/jobs/ai-job-layout-language.js +8 -2
- package/src/lib/jobs/ai-job-layout-language.js.map +1 -1
- package/src/lib/jobs/ai-job-layout-step.js +7 -6
- package/src/lib/jobs/ai-job-layout-step.js.map +1 -1
- package/src/lib/jobs/ai-job-logic-step.d.ts +20 -0
- package/src/lib/jobs/ai-job-logic-step.js +87 -6
- package/src/lib/jobs/ai-job-logic-step.js.map +1 -1
- package/src/lib/jobs/ai-job-page-language.d.ts +52 -7
- package/src/lib/jobs/ai-job-page-language.js +72 -9
- package/src/lib/jobs/ai-job-page-language.js.map +1 -1
- package/src/lib/jobs/ai-job-page-step.js +12 -2
- package/src/lib/jobs/ai-job-page-step.js.map +1 -1
- package/src/lib/jobs/ai-job-plan-step.d.ts +19 -5
- package/src/lib/jobs/ai-job-plan-step.js +54 -20
- package/src/lib/jobs/ai-job-plan-step.js.map +1 -1
- package/src/lib/jobs/ai-job-site-content.d.ts +163 -0
- package/src/lib/jobs/ai-job-site-content.js +443 -0
- package/src/lib/jobs/ai-job-site-content.js.map +1 -0
- package/src/lib/jobs/ai-job-site-look.d.ts +112 -0
- package/src/lib/jobs/ai-job-site-look.js +322 -0
- package/src/lib/jobs/ai-job-site-look.js.map +1 -0
- package/src/lib/jobs/ai-job-site-step.d.ts +26 -5
- package/src/lib/jobs/ai-job-site-step.js +163 -24
- package/src/lib/jobs/ai-job-site-step.js.map +1 -1
- package/src/lib/jobs/ai-jobs-notify.d.ts +6 -1
- package/src/lib/jobs/ai-jobs-notify.js +15 -3
- package/src/lib/jobs/ai-jobs-notify.js.map +1 -1
- package/src/lib/layout-language/ai-layout-compiler.d.ts +9 -0
- package/src/lib/layout-language/ai-layout-compiler.js +120 -33
- package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
- package/src/lib/layout-language/ai-layout-frame.js +5 -4
- package/src/lib/layout-language/ai-layout-frame.js.map +1 -1
- package/src/lib/layout-language/ai-layout-language.d.ts +12 -5
- package/src/lib/layout-language/ai-layout-language.js +92 -9
- package/src/lib/layout-language/ai-layout-language.js.map +1 -1
- package/src/lib/layout-language/ai-layout-pictures.d.ts +144 -0
- package/src/lib/layout-language/ai-layout-pictures.js +214 -0
- package/src/lib/layout-language/ai-layout-pictures.js.map +1 -0
- package/src/lib/layout-language/ai-layout-store.d.ts +2 -0
- package/src/lib/layout-language/ai-layout-store.js +7 -1
- package/src/lib/layout-language/ai-layout-store.js.map +1 -1
- package/src/lib/model/ai-build-progress.js +4 -1
- package/src/lib/model/ai-build-progress.js.map +1 -1
- package/src/lib/model/ai-edit-job.d.ts +109 -0
- package/src/lib/model/ai-edit-job.js +157 -0
- package/src/lib/model/ai-edit-job.js.map +1 -0
- package/src/lib/model/ai-job-activity.js +1 -0
- package/src/lib/model/ai-job-activity.js.map +1 -1
- package/src/lib/model/ai-jobs.types.d.ts +3 -1
- package/src/lib/model/ai-jobs.types.js.map +1 -1
- package/src/lib/model/ai-logic-job.d.ts +18 -1
- package/src/lib/model/ai-logic-job.js +24 -3
- package/src/lib/model/ai-logic-job.js.map +1 -1
- package/src/lib/model/ai-media-credits.d.ts +8 -4
- package/src/lib/model/ai-media-credits.js +11 -4
- package/src/lib/model/ai-media-credits.js.map +1 -1
- package/src/lib/model/ai-media-kinds.d.ts +68 -0
- package/src/lib/model/ai-media-kinds.js +98 -0
- package/src/lib/model/ai-media-kinds.js.map +1 -0
- package/src/lib/model/ai-site-build-progress.d.ts +4 -0
- package/src/lib/model/ai-site-build-progress.js +28 -11
- package/src/lib/model/ai-site-build-progress.js.map +1 -1
- package/src/lib/model/ai-site-context.d.ts +111 -0
- package/src/lib/model/ai-site-context.js +222 -0
- package/src/lib/model/ai-site-context.js.map +1 -0
- package/src/lib/model/ai-site-job.d.ts +10 -2
- package/src/lib/model/ai-site-job.js +12 -5
- package/src/lib/model/ai-site-job.js.map +1 -1
- package/src/lib/model/ai-site-kinds.d.ts +164 -0
- package/src/lib/model/ai-site-kinds.js +1942 -0
- package/src/lib/model/ai-site-kinds.js.map +1 -0
- package/src/lib/model/ai-site-look.d.ts +150 -0
- package/src/lib/model/ai-site-look.js +1236 -0
- package/src/lib/model/ai-site-look.js.map +1 -0
- package/src/lib/model/ai-site-memory.d.ts +80 -0
- package/src/lib/model/ai-site-memory.js +171 -0
- package/src/lib/model/ai-site-memory.js.map +1 -0
- package/src/lib/model/ai-site-start.d.ts +10 -1
- package/src/lib/model/ai-site-start.js +16 -2
- package/src/lib/model/ai-site-start.js.map +1 -1
- package/src/lib/model/assist-follow-up.d.ts +92 -0
- package/src/lib/model/assist-follow-up.js +128 -0
- package/src/lib/model/assist-follow-up.js.map +1 -0
- package/src/lib/plugin-config.js +2 -0
- package/src/lib/plugin-config.js.map +1 -1
- package/src/lib/plugin.js +20 -1
- package/src/lib/plugin.js.map +1 -1
- package/src/lib/providers/anthropic.d.ts +9 -1
- package/src/lib/providers/anthropic.js +143 -9
- package/src/lib/providers/anthropic.js.map +1 -1
- package/src/lib/providers/catalog.d.ts +37 -7
- package/src/lib/providers/catalog.js +103 -11
- package/src/lib/providers/catalog.js.map +1 -1
- package/src/lib/providers/contract.d.ts +29 -0
- package/src/lib/providers/contract.js.map +1 -1
- package/src/lib/providers/image-contract.d.ts +22 -1
- package/src/lib/providers/image-contract.js +40 -1
- package/src/lib/providers/image-contract.js.map +1 -1
- package/src/lib/providers/image-endpoints.d.ts +24 -0
- package/src/lib/providers/image-endpoints.js +28 -0
- package/src/lib/providers/image-endpoints.js.map +1 -0
- package/src/lib/providers/model-choice.js +23 -2
- package/src/lib/providers/model-choice.js.map +1 -1
- package/src/lib/providers/routing.js +18 -0
- package/src/lib/providers/routing.js.map +1 -1
- package/src/lib/providers/vertex-image-endpoint.d.ts +48 -0
- package/src/lib/providers/vertex-image-endpoint.js +80 -0
- package/src/lib/providers/vertex-image-endpoint.js.map +1 -0
- package/src/lib/providers/vertex-image.d.ts +13 -27
- package/src/lib/providers/vertex-image.js +15 -42
- package/src/lib/providers/vertex-image.js.map +1 -1
- package/src/lib/runtime/ai-blog-post-generation.d.ts +62 -0
- package/src/lib/runtime/ai-blog-post-generation.js +89 -0
- package/src/lib/runtime/ai-blog-post-generation.js.map +1 -0
- package/src/lib/runtime/ai-dev-env.d.ts +53 -0
- package/src/lib/runtime/ai-dev-env.js +72 -0
- package/src/lib/runtime/ai-dev-env.js.map +1 -0
- package/src/lib/runtime/ai-dev-replay.d.ts +116 -0
- package/src/lib/runtime/ai-dev-replay.js +313 -0
- package/src/lib/runtime/ai-dev-replay.js.map +1 -0
- package/src/lib/runtime/ai-doctrine.js +5 -1
- package/src/lib/runtime/ai-doctrine.js.map +1 -1
- package/src/lib/runtime/ai-eval-live.js +4 -0
- package/src/lib/runtime/ai-eval-live.js.map +1 -1
- package/src/lib/runtime/ai-eval.d.ts +13 -1
- package/src/lib/runtime/ai-eval.js +84 -1
- package/src/lib/runtime/ai-eval.js.map +1 -1
- package/src/lib/runtime/ai-live-batch.d.ts +45 -0
- package/src/lib/runtime/ai-live-batch.js +89 -0
- package/src/lib/runtime/ai-live-batch.js.map +1 -0
- package/src/lib/runtime/ai-runtime.js +46 -2
- package/src/lib/runtime/ai-runtime.js.map +1 -1
- package/src/lib/runtime/site-context.d.ts +58 -0
- package/src/lib/runtime/site-context.js +127 -0
- package/src/lib/runtime/site-context.js.map +1 -0
- package/src/lib/server/ai-admin-conversations.d.ts +22 -0
- package/src/lib/server/ai-admin-conversations.js +197 -0
- package/src/lib/server/ai-admin-conversations.js.map +1 -0
- package/src/lib/server/ai-media-image.d.ts +5 -5
- package/src/lib/server/ai-media-image.js +25 -11
- package/src/lib/server/ai-media-image.js.map +1 -1
- package/src/lib/server/ai-media-raster-prompt.d.ts +34 -0
- package/src/lib/server/ai-media-raster-prompt.js +53 -0
- package/src/lib/server/ai-media-raster-prompt.js.map +1 -0
- package/src/lib/server/assist-chat.d.ts +11 -0
- package/src/lib/server/assist-chat.js +57 -18
- package/src/lib/server/assist-chat.js.map +1 -1
- package/src/lib/server/assist-edit-applied.js +16 -3
- package/src/lib/server/assist-edit-applied.js.map +1 -1
- package/src/lib/server/assist-view-context.d.ts +19 -1
- package/src/lib/server/assist-view-context.js +38 -1
- package/src/lib/server/assist-view-context.js.map +1 -1
- package/src/lib/server.js +10 -0
- package/src/lib/server.js.map +1 -1
- package/src/lib/subprocessors.js +17 -1
- package/src/lib/subprocessors.js.map +1 -1
- package/src/lib/tools/ai-blog-post-tool.d.ts +60 -0
- package/src/lib/tools/ai-blog-post-tool.js +175 -0
- package/src/lib/tools/ai-blog-post-tool.js.map +1 -0
- package/src/lib/usage/assist-usage.d.ts +3 -0
- package/src/lib/usage/assist-usage.js +4 -2
- package/src/lib/usage/assist-usage.js.map +1 -1
- package/src/lib/usage/staff-org-ai-conversations.d.ts +103 -0
- package/src/lib/usage/staff-org-ai-conversations.js +152 -0
- package/src/lib/usage/staff-org-ai-conversations.js.map +1 -0
|
@@ -32,6 +32,7 @@ import { applyAssistEdit, describeAssistEditCanvas } from "./assist-edit-canvas.
|
|
|
32
32
|
import { AssistEditCard } from "./assist-edit-card.component.js";
|
|
33
33
|
import { AssistBuildCard } from "./assist-build-card.component.js";
|
|
34
34
|
import { isAssistBuildProposal } from "../model/assist-build.js";
|
|
35
|
+
import { assistBesignerVersionOf, assistBuildDraftLinks, isLiveAssistFollowUp } from "../model/assist-follow-up.js";
|
|
35
36
|
import { startAssistBuildRequest } from "./ai-job-requests.js";
|
|
36
37
|
import { aiInsightSurfaceForPath } from "../model/ai-insight.js";
|
|
37
38
|
import { AssistJobsDrawer } from "./assist-jobs-drawer.component.js";
|
|
@@ -43,6 +44,39 @@ import { useAiModelChoice } from "./use-ai-model-choice.js";
|
|
|
43
44
|
import { usePublishAiUsageMeter } from "./use-ai-usage-meter.js";
|
|
44
45
|
import { pluginDocsHelp } from "@aglyn/aglyn/app-utils/docs-help";
|
|
45
46
|
import { HelpTip } from "@aglyn/shared-ui-jsx";
|
|
47
|
+
/** The key a follow-up waiting for its canvas is kept under, per org (AGL-3616). */ const followUpKey = (orgId)=>`aglyn-assist-follow-up:${orgId}`;
|
|
48
|
+
function loadFollowUp(orgId) {
|
|
49
|
+
if (!orgId || typeof sessionStorage === 'undefined') return null;
|
|
50
|
+
try {
|
|
51
|
+
var _sessionStorage_getItem;
|
|
52
|
+
const parsed = JSON.parse((_sessionStorage_getItem = sessionStorage.getItem(followUpKey(orgId))) != null ? _sessionStorage_getItem : 'null');
|
|
53
|
+
if (isLiveAssistFollowUp(parsed, Date.now())) return parsed;
|
|
54
|
+
// One past its time is never asked: forget it.
|
|
55
|
+
if (parsed !== null) sessionStorage.removeItem(followUpKey(orgId));
|
|
56
|
+
return null;
|
|
57
|
+
} catch (unused) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function saveFollowUp(orgId, followUp) {
|
|
62
|
+
if (!orgId || typeof sessionStorage === 'undefined') return;
|
|
63
|
+
try {
|
|
64
|
+
if (followUp) sessionStorage.setItem(followUpKey(orgId), JSON.stringify(followUp));
|
|
65
|
+
else sessionStorage.removeItem(followUpKey(orgId));
|
|
66
|
+
} catch (unused) {
|
|
67
|
+
// Storage that refuses only loses the re-ask; the draft still opens.
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The drafts this thread's builds made that open in the Besigner, newest
|
|
72
|
+
* build first (AGL-3616): what a follow-up such as "make the about page
|
|
73
|
+
* shorter" may open.
|
|
74
|
+
*/ export function assistThreadDraftLinks(messages, orgSlug) {
|
|
75
|
+
const jobs = messages.flatMap((message)=>message.buildJob ? [
|
|
76
|
+
message.buildJob
|
|
77
|
+
] : []).reverse();
|
|
78
|
+
return assistBuildDraftLinks(jobs, orgSlug);
|
|
79
|
+
}
|
|
46
80
|
/** What a stored build that never got its job says, rather than planning forever. */ const BUILD_NOT_STARTED = 'This build was not started. Ask again to plan it.';
|
|
47
81
|
const HISTORY_TURNS_SENT = 12;
|
|
48
82
|
const storageKey = (orgId)=>`aglyn-assist:${orgId}`;
|
|
@@ -309,6 +343,15 @@ function saveThread(orgId, messages) {
|
|
|
309
343
|
"."
|
|
310
344
|
]
|
|
311
345
|
}),
|
|
346
|
+
proposal.followUp && /*#__PURE__*/ _jsx(Typography, {
|
|
347
|
+
variant: "caption",
|
|
348
|
+
color: "text.secondary",
|
|
349
|
+
component: "div",
|
|
350
|
+
sx: {
|
|
351
|
+
mt: 1
|
|
352
|
+
},
|
|
353
|
+
children: `${brand} Assist asks “${proposal.followUp}” again there. Nothing changes until you apply the edit it proposes.`
|
|
354
|
+
}),
|
|
312
355
|
proposal.values.length > 0 && /*#__PURE__*/ _jsxs(Box, {
|
|
313
356
|
sx: {
|
|
314
357
|
mt: 1
|
|
@@ -340,7 +383,7 @@ function saveThread(orgId, messages) {
|
|
|
340
383
|
})
|
|
341
384
|
]
|
|
342
385
|
}),
|
|
343
|
-
/*#__PURE__*/ _jsxs(Typography, {
|
|
386
|
+
!proposal.followUp && /*#__PURE__*/ _jsxs(Typography, {
|
|
344
387
|
variant: "caption",
|
|
345
388
|
color: "text.secondary",
|
|
346
389
|
component: "div",
|
|
@@ -382,7 +425,7 @@ function saveThread(orgId, messages) {
|
|
|
382
425
|
});
|
|
383
426
|
}
|
|
384
427
|
export function AssistPanelComponent(props) {
|
|
385
|
-
var _ref;
|
|
428
|
+
var _ref, _ref1;
|
|
386
429
|
const { org, orgId, orgReady, scopedOrgId, orgSlug, hostId, productName, assistVisible, assistStaffPreview, generativeVisible, isStaff, aiPermissions: ai } = props;
|
|
387
430
|
const verdict = {
|
|
388
431
|
visible: assistVisible,
|
|
@@ -485,11 +528,14 @@ export function AssistPanelComponent(props) {
|
|
|
485
528
|
jobsVisible,
|
|
486
529
|
pathname
|
|
487
530
|
]);
|
|
488
|
-
const send = useCallback(async ()=>{
|
|
489
|
-
const question = input.trim();
|
|
531
|
+
const send = useCallback(async (asked)=>{
|
|
532
|
+
const question = (asked != null ? asked : input).trim();
|
|
490
533
|
if (!question || busy || !scopedOrgId || !ai.use) return;
|
|
491
534
|
setBusy(true);
|
|
492
|
-
setInput('');
|
|
535
|
+
if (asked === undefined) setInput('');
|
|
536
|
+
// The drafts this thread's builds made (AGL-3616): the chat sees refs and
|
|
537
|
+
// labels; the addresses stay here, for the card a follow-up raises.
|
|
538
|
+
const draftLinks = hostId ? assistThreadDraftLinks(messages, orgSlug) : [];
|
|
493
539
|
const history = messages.slice(-HISTORY_TURNS_SENT).map(({ role, text })=>({
|
|
494
540
|
role,
|
|
495
541
|
text
|
|
@@ -555,6 +601,12 @@ export function AssistPanelComponent(props) {
|
|
|
555
601
|
model: modelChoice.model
|
|
556
602
|
} : {}, canvasOutline ? {
|
|
557
603
|
canvas: canvasOutline
|
|
604
|
+
} : {}, draftLinks.length ? {
|
|
605
|
+
drafts: draftLinks.map(({ ref, label, noun })=>({
|
|
606
|
+
ref,
|
|
607
|
+
label,
|
|
608
|
+
noun
|
|
609
|
+
}))
|
|
558
610
|
} : {}))
|
|
559
611
|
});
|
|
560
612
|
if (!response.ok || !response.body) {
|
|
@@ -625,7 +677,18 @@ export function AssistPanelComponent(props) {
|
|
|
625
677
|
// to the view the question was asked from, plus a destination
|
|
626
678
|
// this client did not choose. Null on every turn that proposed
|
|
627
679
|
// nothing, which is most of them.
|
|
628
|
-
const
|
|
680
|
+
const resolved = (_event_proposal = event.proposal) != null ? _event_proposal : null;
|
|
681
|
+
// An open-draft proposal goes to that draft's own Besigner, from
|
|
682
|
+
// this panel's record of its build, and asks the request again
|
|
683
|
+
// there; one naming a draft this panel does not hold is dropped.
|
|
684
|
+
const draftLink = (resolved == null ? void 0 : resolved.draft) ? draftLinks.find((link)=>{
|
|
685
|
+
var _resolved_draft;
|
|
686
|
+
return link.ref === ((_resolved_draft = resolved.draft) == null ? void 0 : _resolved_draft.ref);
|
|
687
|
+
}) : null;
|
|
688
|
+
const proposal = (resolved == null ? void 0 : resolved.draft) ? draftLink ? _extends({}, resolved, {
|
|
689
|
+
href: draftLink.href,
|
|
690
|
+
followUp: question
|
|
691
|
+
}) : null : resolved;
|
|
629
692
|
// The edit proposal (AGL-2906), shape-checked before it can reach
|
|
630
693
|
// a card whose Apply drives the canvas.
|
|
631
694
|
const edit = isAssistEditProposal(event.edit) ? event.edit : null;
|
|
@@ -702,6 +765,50 @@ export function AssistPanelComponent(props) {
|
|
|
702
765
|
pathname,
|
|
703
766
|
user
|
|
704
767
|
]);
|
|
768
|
+
// A follow-up waiting for its draft's canvas (AGL-3616): kept per org, so a
|
|
769
|
+
// panel the Besigner's layout mounts afresh still asks it.
|
|
770
|
+
const [followUp, setFollowUp] = useState(null);
|
|
771
|
+
useEffect(()=>{
|
|
772
|
+
setFollowUp(loadFollowUp(scopedOrgId));
|
|
773
|
+
}, [
|
|
774
|
+
scopedOrgId
|
|
775
|
+
]);
|
|
776
|
+
const followUpVersion = (_ref = editorSession == null ? void 0 : editorSession.versionId) != null ? _ref : null;
|
|
777
|
+
useEffect(()=>{
|
|
778
|
+
if (!followUp) return;
|
|
779
|
+
if (!isLiveAssistFollowUp(followUp, Date.now())) {
|
|
780
|
+
setFollowUp(null);
|
|
781
|
+
saveFollowUp(scopedOrgId, null);
|
|
782
|
+
return;
|
|
783
|
+
}
|
|
784
|
+
// Asked once the draft's own canvas is open, so the edit rung reads it.
|
|
785
|
+
if (busy || !ai.use || pathname !== followUp.path) return;
|
|
786
|
+
if (!followUpVersion || followUpVersion !== assistBesignerVersionOf(followUp.path)) return;
|
|
787
|
+
setFollowUp(null);
|
|
788
|
+
saveFollowUp(scopedOrgId, null);
|
|
789
|
+
setOpen(true);
|
|
790
|
+
void send(followUp.question);
|
|
791
|
+
}, [
|
|
792
|
+
ai.use,
|
|
793
|
+
busy,
|
|
794
|
+
followUp,
|
|
795
|
+
followUpVersion,
|
|
796
|
+
pathname,
|
|
797
|
+
scopedOrgId,
|
|
798
|
+
send
|
|
799
|
+
]);
|
|
800
|
+
/** Keep a confirmed open-draft proposal's request for the draft's canvas. */ const holdFollowUp = useCallback((proposal)=>{
|
|
801
|
+
if (!proposal.followUp) return;
|
|
802
|
+
const pending = {
|
|
803
|
+
path: proposal.href,
|
|
804
|
+
question: proposal.followUp,
|
|
805
|
+
at: Date.now()
|
|
806
|
+
};
|
|
807
|
+
setFollowUp(pending);
|
|
808
|
+
saveFollowUp(scopedOrgId, pending);
|
|
809
|
+
}, [
|
|
810
|
+
scopedOrgId
|
|
811
|
+
]);
|
|
705
812
|
/**
|
|
706
813
|
* Retire a card once it has been acted on or waved away. Local state only
|
|
707
814
|
* — there is nothing to tell the server, because the proposal was never
|
|
@@ -851,7 +958,7 @@ export function AssistPanelComponent(props) {
|
|
|
851
958
|
badgeContent: jobsActivity ? jobsActivity.count : 0,
|
|
852
959
|
invisible: !jobsActivity,
|
|
853
960
|
overlap: "circular",
|
|
854
|
-
"data-ai-jobs-badge": (
|
|
961
|
+
"data-ai-jobs-badge": (_ref1 = jobsActivity == null ? void 0 : jobsActivity.state) != null ? _ref1 : undefined,
|
|
855
962
|
children: /*#__PURE__*/ _jsx(MdiIcon, {
|
|
856
963
|
path: mdiCreation.path,
|
|
857
964
|
fontSize: "medium"
|
|
@@ -1006,12 +1113,15 @@ export function AssistPanelComponent(props) {
|
|
|
1006
1113
|
brand: productName,
|
|
1007
1114
|
onConfirm: ()=>{
|
|
1008
1115
|
var _ref;
|
|
1009
|
-
var _message_proposal;
|
|
1116
|
+
var _message_proposal, _message_proposal1;
|
|
1010
1117
|
trackEvent('assistant_proposal_confirmed', {
|
|
1011
1118
|
action: (_ref = (_message_proposal = message.proposal) == null ? void 0 : _message_proposal.id) != null ? _ref : ''
|
|
1012
1119
|
});
|
|
1013
1120
|
resolveProposal(index);
|
|
1014
|
-
|
|
1121
|
+
// A follow-up keeps the panel open: its answer
|
|
1122
|
+
// arrives here once the draft's canvas is.
|
|
1123
|
+
if ((_message_proposal1 = message.proposal) == null ? void 0 : _message_proposal1.followUp) holdFollowUp(message.proposal);
|
|
1124
|
+
else setOpen(false);
|
|
1015
1125
|
},
|
|
1016
1126
|
onDismiss: ()=>resolveProposal(index)
|
|
1017
1127
|
}),
|