@aglyn/plugins-ai 1.0.0-beta.256 → 1.0.0-beta.258

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.
Files changed (88) hide show
  1. package/package.json +17 -17
  2. package/src/lib/components/assist-panel.component.js +21 -8
  3. package/src/lib/components/assist-panel.component.js.map +1 -1
  4. package/src/lib/insights/ai-figure-readers.js +15 -8
  5. package/src/lib/insights/ai-figure-readers.js.map +1 -1
  6. package/src/lib/jobs/ai-job-build-step.d.ts +9 -0
  7. package/src/lib/jobs/ai-job-build-step.js +19 -3
  8. package/src/lib/jobs/ai-job-build-step.js.map +1 -1
  9. package/src/lib/jobs/ai-job-form-step.js +3 -3
  10. package/src/lib/jobs/ai-job-form-step.js.map +1 -1
  11. package/src/lib/jobs/ai-job-insight-step.js +1 -1
  12. package/src/lib/jobs/ai-job-insight-step.js.map +1 -1
  13. package/src/lib/jobs/ai-job-page-language.d.ts +19 -0
  14. package/src/lib/jobs/ai-job-page-language.js +24 -4
  15. package/src/lib/jobs/ai-job-page-language.js.map +1 -1
  16. package/src/lib/jobs/ai-job-page-sections.js +12 -1
  17. package/src/lib/jobs/ai-job-page-sections.js.map +1 -1
  18. package/src/lib/jobs/ai-job-page-step.d.ts +14 -0
  19. package/src/lib/jobs/ai-job-page-step.js +69 -20
  20. package/src/lib/jobs/ai-job-page-step.js.map +1 -1
  21. package/src/lib/jobs/ai-job-seo-step.js +3 -2
  22. package/src/lib/jobs/ai-job-seo-step.js.map +1 -1
  23. package/src/lib/jobs/ai-layout-stock-photos.d.ts +10 -5
  24. package/src/lib/jobs/ai-layout-stock-photos.js +89 -7
  25. package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
  26. package/src/lib/jobs/fixtures/ai-stock-photo-copper-kettle-recordings.d.ts +21 -0
  27. package/src/lib/jobs/fixtures/ai-stock-photo-copper-kettle-recordings.js +126 -0
  28. package/src/lib/jobs/fixtures/ai-stock-photo-copper-kettle-recordings.js.map +1 -0
  29. package/src/lib/layout-language/ai-layout-compiler.js +52 -52
  30. package/src/lib/layout-language/ai-layout-compiler.js.map +1 -1
  31. package/src/lib/layout-language/ai-layout-copy.d.ts +9 -5
  32. package/src/lib/layout-language/ai-layout-copy.js +22 -14
  33. package/src/lib/layout-language/ai-layout-copy.js.map +1 -1
  34. package/src/lib/layout-language/ai-layout-frame.js +4 -4
  35. package/src/lib/layout-language/ai-layout-frame.js.map +1 -1
  36. package/src/lib/layout-language/ai-layout-pictures.d.ts +44 -15
  37. package/src/lib/layout-language/ai-layout-pictures.js +29 -8
  38. package/src/lib/layout-language/ai-layout-pictures.js.map +1 -1
  39. package/src/lib/model/ai-build-job.js +14 -0
  40. package/src/lib/model/ai-build-job.js.map +1 -1
  41. package/src/lib/model/ai-host-publish-context.d.ts +6 -0
  42. package/src/lib/model/ai-host-publish-context.js +15 -2
  43. package/src/lib/model/ai-host-publish-context.js.map +1 -1
  44. package/src/lib/model/assist-follow-up.d.ts +35 -0
  45. package/src/lib/model/assist-follow-up.js +44 -4
  46. package/src/lib/model/assist-follow-up.js.map +1 -1
  47. package/src/lib/providers/anthropic.js +17 -4
  48. package/src/lib/providers/anthropic.js.map +1 -1
  49. package/src/lib/providers/cache-write-hour.d.ts +37 -0
  50. package/src/lib/providers/cache-write-hour.js +46 -0
  51. package/src/lib/providers/cache-write-hour.js.map +1 -0
  52. package/src/lib/providers/contract.d.ts +16 -3
  53. package/src/lib/providers/contract.js.map +1 -1
  54. package/src/lib/providers/routing.d.ts +13 -0
  55. package/src/lib/providers/routing.js +27 -11
  56. package/src/lib/providers/routing.js.map +1 -1
  57. package/src/lib/runtime/ai-dev-env.d.ts +13 -3
  58. package/src/lib/runtime/ai-dev-env.js +17 -3
  59. package/src/lib/runtime/ai-dev-env.js.map +1 -1
  60. package/src/lib/runtime/ai-dev-replay.js +4 -2
  61. package/src/lib/runtime/ai-dev-replay.js.map +1 -1
  62. package/src/lib/runtime/ai-doctrine-validators.d.ts +41 -1
  63. package/src/lib/runtime/ai-doctrine-validators.js +263 -2
  64. package/src/lib/runtime/ai-doctrine-validators.js.map +1 -1
  65. package/src/lib/runtime/ai-doctrine.js +7 -1
  66. package/src/lib/runtime/ai-doctrine.js.map +1 -1
  67. package/src/lib/runtime/ai-eval-live.js +1 -1
  68. package/src/lib/runtime/ai-eval-live.js.map +1 -1
  69. package/src/lib/runtime/ai-eval.d.ts +1 -1
  70. package/src/lib/runtime/ai-eval.js +18 -1
  71. package/src/lib/runtime/ai-eval.js.map +1 -1
  72. package/src/lib/runtime/ai-palette.generated.js +162 -2
  73. package/src/lib/runtime/ai-palette.generated.js.map +1 -1
  74. package/src/lib/runtime/ai-placeholder-tokens.d.ts +70 -0
  75. package/src/lib/runtime/ai-placeholder-tokens.js +169 -0
  76. package/src/lib/runtime/ai-placeholder-tokens.js.map +1 -0
  77. package/src/lib/runtime/ai-repeated-items.js +5 -2
  78. package/src/lib/runtime/ai-repeated-items.js.map +1 -1
  79. package/src/lib/runtime/ai-runtime.js +2 -3
  80. package/src/lib/runtime/ai-runtime.js.map +1 -1
  81. package/src/lib/server/assist-chat.js +8 -3
  82. package/src/lib/server/assist-chat.js.map +1 -1
  83. package/src/lib/server/assist-view-context.d.ts +5 -1
  84. package/src/lib/server/assist-view-context.js +8 -3
  85. package/src/lib/server/assist-view-context.js.map +1 -1
  86. package/src/lib/usage/assist-usage.d.ts +2 -0
  87. package/src/lib/usage/assist-usage.js +8 -3
  88. package/src/lib/usage/assist-usage.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aglyn/plugins-ai",
3
- "version": "1.0.0-beta.256",
3
+ "version": "1.0.0-beta.258",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://aglyn.com",
6
6
  "repository": {
@@ -25,22 +25,22 @@
25
25
  "./package.json": "./package.json"
26
26
  },
27
27
  "dependencies": {
28
- "@aglyn/aglyn": "1.0.0-beta.256",
29
- "@aglyn/shared-data-enums": "1.0.0-beta.256",
30
- "@aglyn/shared-data-mdi": "1.0.0-beta.256",
31
- "@aglyn/shared-data-types": "1.0.0-beta.256",
32
- "@aglyn/shared-ui-email-campaigns": "1.0.0-beta.256",
33
- "@aglyn/shared-ui-jsx": "1.0.0-beta.256",
34
- "@aglyn/shared-ui-snackstack": "1.0.0-beta.256",
35
- "@aglyn/shared-ui-theme": "1.0.0-beta.256",
36
- "@aglyn/shared-util-email": "1.0.0-beta.256",
37
- "@aglyn/shared-util-errors": "1.0.0-beta.256",
38
- "@aglyn/shared-util-http": "1.0.0-beta.256",
39
- "@aglyn/shared-util-timestamp": "1.0.0-beta.256",
40
- "@aglyn/shared-util-tools": "1.0.0-beta.256",
41
- "@aglyn/tenant-data-admin": "1.0.0-beta.256",
42
- "@aglyn/tenant-feature-instance": "1.0.0-beta.256",
43
- "@aglyn/tenant-runtime": "1.0.0-beta.256",
28
+ "@aglyn/aglyn": "1.0.0-beta.258",
29
+ "@aglyn/shared-data-enums": "1.0.0-beta.258",
30
+ "@aglyn/shared-data-mdi": "1.0.0-beta.258",
31
+ "@aglyn/shared-data-types": "1.0.0-beta.258",
32
+ "@aglyn/shared-ui-email-campaigns": "1.0.0-beta.258",
33
+ "@aglyn/shared-ui-jsx": "1.0.0-beta.258",
34
+ "@aglyn/shared-ui-snackstack": "1.0.0-beta.258",
35
+ "@aglyn/shared-ui-theme": "1.0.0-beta.258",
36
+ "@aglyn/shared-util-email": "1.0.0-beta.258",
37
+ "@aglyn/shared-util-errors": "1.0.0-beta.258",
38
+ "@aglyn/shared-util-http": "1.0.0-beta.258",
39
+ "@aglyn/shared-util-timestamp": "1.0.0-beta.258",
40
+ "@aglyn/shared-util-tools": "1.0.0-beta.258",
41
+ "@aglyn/tenant-data-admin": "1.0.0-beta.258",
42
+ "@aglyn/tenant-feature-instance": "1.0.0-beta.258",
43
+ "@aglyn/tenant-runtime": "1.0.0-beta.258",
44
44
  "@swc/helpers": "0.5.23"
45
45
  },
46
46
  "peerDependencies": {
@@ -19,6 +19,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
19
19
  import { canvas, checkEntitlement, lockdownRefusalText, parseLockdownRefusal } from "@aglyn/aglyn";
20
20
  import { editorSessionsRevision, openEditorSession, subscribeEditorSessions } from "@aglyn/aglyn/plugin-manager/editor-sessions";
21
21
  import { trackEvent } from "@aglyn/aglyn/app-utils/analytics-events";
22
+ import { CANVAS_ROOT_ELEMENT_ID } from "@aglyn/aglyn/foundation/constants/canvas";
22
23
  import { mdiChevronDown, mdiCreation, mdiChevronUp, mdiClose, mdiOpenInNew, mdiSend, mdiThumbDownOutline, mdiThumbUpOutline } from "@aglyn/shared-data-mdi";
23
24
  import { AppLink, MdiIcon } from "@aglyn/shared-ui-jsx";
24
25
  import { useSnackbar } from "@aglyn/shared-ui-snackstack";
@@ -32,7 +33,7 @@ import { applyAssistEdit, describeAssistEditCanvas } from "./assist-edit-canvas.
32
33
  import { AssistEditCard } from "./assist-edit-card.component.js";
33
34
  import { AssistBuildCard } from "./assist-build-card.component.js";
34
35
  import { isAssistBuildProposal } from "../model/assist-build.js";
35
- import { assistBesignerVersionOf, assistBuildDraftLinks, isLiveAssistFollowUp } from "../model/assist-follow-up.js";
36
+ import { assistBuildDraftLinks, isAssistFollowUpDue, isLiveAssistFollowUp } from "../model/assist-follow-up.js";
36
37
  import { startAssistBuildRequest } from "./ai-job-requests.js";
37
38
  import { aiInsightSurfaceForPath } from "../model/ai-insight.js";
38
39
  import { AssistJobsDrawer } from "./assist-jobs-drawer.component.js";
@@ -536,7 +537,7 @@ export function AssistPanelComponent(props) {
536
537
  // The open editor, re-read whenever one opens, closes or reports a change —
537
538
  // so a card raised on a live version offers Apply once its new version is
538
539
  // the one open.
539
- useSyncExternalStore(subscribeEditorSessions, editorSessionsRevision, editorSessionsRevision);
540
+ const editorRevision = useSyncExternalStore(subscribeEditorSessions, editorSessionsRevision, editorSessionsRevision);
540
541
  const editorSession = openEditorSession();
541
542
  // Thread is per-org, session-persisted; switching orgs swaps threads.
542
543
  // Keyed on the SCOPED org (AGL-1934): gating only the render would still
@@ -684,11 +685,13 @@ export function AssistPanelComponent(props) {
684
685
  } : {}, canvasOutline ? {
685
686
  canvas: canvasOutline
686
687
  } : {}, draftLinks.length ? {
687
- drafts: draftLinks.map(({ ref, label, noun })=>({
688
+ drafts: draftLinks.map(({ ref, label, noun, href })=>_extends({
688
689
  ref,
689
690
  label,
690
691
  noun
691
- }))
692
+ }, canvasOutline && href === pathname ? {
693
+ open: true
694
+ } : {}))
692
695
  } : {}))
693
696
  });
694
697
  if (!response.ok || !response.body) {
@@ -763,9 +766,10 @@ export function AssistPanelComponent(props) {
763
766
  // An open-draft proposal goes to that draft's own Besigner, from
764
767
  // this panel's record of its build, and asks the request again
765
768
  // there; one naming a draft this panel does not hold is dropped.
769
+ // Never the draft already open here (AGL-3833).
766
770
  const draftLink = (resolved == null ? void 0 : resolved.draft) ? draftLinks.find((link)=>{
767
771
  var _resolved_draft;
768
- return link.ref === ((_resolved_draft = resolved.draft) == null ? void 0 : _resolved_draft.ref);
772
+ return link.ref === ((_resolved_draft = resolved.draft) == null ? void 0 : _resolved_draft.ref) && link.href !== pathname;
769
773
  }) : null;
770
774
  const proposal = (resolved == null ? void 0 : resolved.draft) ? draftLink ? _extends({}, resolved, {
771
775
  href: draftLink.href,
@@ -874,18 +878,27 @@ export function AssistPanelComponent(props) {
874
878
  saveFollowUp(scopedOrgId, null);
875
879
  return;
876
880
  }
877
- // Asked once the draft's own canvas is open, so the edit rung reads it.
878
- if (busy || !ai.use || pathname !== followUp.path) return;
879
- if (!followUpVersion || followUpVersion !== assistBesignerVersionOf(followUp.path)) return;
881
+ // Asked once the draft's own canvas is open AND loaded, so the edit rung
882
+ // reads it (AGL-3833). The editor reports its version as it mounts, before
883
+ // the document reaches the canvas; it reports again once it has.
884
+ if (busy || !ai.use) return;
885
+ const stand = {
886
+ path: pathname != null ? pathname : '',
887
+ versionId: followUpVersion,
888
+ canvasLoaded: Boolean(canvas.getNode(CANVAS_ROOT_ELEMENT_ID))
889
+ };
890
+ if (!isAssistFollowUpDue(followUp, stand)) return;
880
891
  setFollowUp(null);
881
892
  saveFollowUp(scopedOrgId, null);
882
893
  setOpen(true);
883
894
  void send(followUp.question);
895
+ // The revision is how a canvas that finished loading reaches this effect.
884
896
  }, [
885
897
  ai.use,
886
898
  busy,
887
899
  followUp,
888
900
  followUpVersion,
901
+ editorRevision,
889
902
  pathname,
890
903
  scopedOrgId,
891
904
  send