opendevbrowser 0.0.33 → 0.0.34
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/README.md +1 -1
- package/dist/{accessibility-snapshot-JSPFVWZ6.js → accessibility-snapshot-VCBXK47S.js} +7 -7
- package/dist/{active-window-2OB2MSCR.js → active-window-7EUN36LZ.js} +7 -7
- package/dist/{annotate-VDZBZBKZ.js → annotate-VLBK7YB6.js} +6 -6
- package/dist/{attr-7XIO4MCH.js → attr-JNANQKM6.js} +6 -6
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/manager-types.d.ts +3 -0
- package/dist/browser/manager-types.d.ts.map +1 -1
- package/dist/browser/ops-browser-manager.d.ts.map +1 -1
- package/dist/browser/screencast-recorder.d.ts +1 -0
- package/dist/browser/screencast-recorder.d.ts.map +1 -1
- package/dist/{canvas-N4PAA274.js → canvas-V5LO4JVL.js} +6 -6
- package/dist/{capture-desktop-T5YO3EBI.js → capture-desktop-FKVDWTVG.js} +7 -7
- package/dist/{capture-window-UKEUBWKH.js → capture-window-QVPM2DN2.js} +7 -7
- package/dist/{check-PQB6KKMN.js → check-V3CWZ56S.js} +6 -6
- package/dist/{checked-RNZIMCU6.js → checked-Q27Q6YZN.js} +6 -6
- package/dist/{chunk-FBKPDILE.js → chunk-5FDXH4CS.js} +315 -37
- package/dist/chunk-5FDXH4CS.js.map +1 -0
- package/dist/{chunk-J3KYGJRQ.js → chunk-G6NQ7WYD.js} +2 -2
- package/dist/{chunk-27W46IKI.js → chunk-GC2FWISX.js} +22 -11
- package/dist/chunk-GC2FWISX.js.map +1 -0
- package/dist/{chunk-MJF67OTH.js → chunk-NX2XYJP5.js} +2 -2
- package/dist/{chunk-FDBUB7BM.js → chunk-OJAUKABV.js} +2 -2
- package/dist/{chunk-HMRANSDX.js → chunk-QXJDJDSZ.js} +34 -13
- package/dist/chunk-QXJDJDSZ.js.map +1 -0
- package/dist/{chunk-SKFB5ICF.js → chunk-TI5I6UWY.js} +8 -3
- package/dist/chunk-TI5I6UWY.js.map +1 -0
- package/dist/{chunk-W6YPVNDX.js → chunk-VTGG5ZU2.js} +2 -2
- package/dist/{chunk-YRRRUGSQ.js → chunk-VX47SJZM.js} +2 -2
- package/dist/{chunk-JROW6ZNN.js → chunk-VY47VKXU.js} +3 -3
- package/dist/{chunk-NURQB55J.js → chunk-WY72GYAH.js} +2 -2
- package/dist/{chunk-EOX6U6Q4.js → chunk-XRDCSHKZ.js} +158 -110
- package/dist/chunk-XRDCSHKZ.js.map +1 -0
- package/dist/{chunk-52ZIOWVU.js → chunk-Z3HIX2SE.js} +3 -3
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/index.js +75 -75
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/parse.d.ts +1 -0
- package/dist/cli/utils/parse.d.ts.map +1 -1
- package/dist/{click-U7ZFKSB4.js → click-EQDRSLR3.js} +6 -6
- package/dist/{clone-component-SWYAORTU.js → clone-component-SISUXTJS.js} +5 -5
- package/dist/{clone-page-WJ6UJOJG.js → clone-page-MLDPCBOY.js} +5 -5
- package/dist/{close-VKIGIKVT.js → close-2LQMJVOA.js} +5 -5
- package/dist/{close-NAVIHZ2T.js → close-7J7EV237.js} +5 -5
- package/dist/{connect-XVG2MOZL.js → connect-JFRSIW5M.js} +6 -6
- package/dist/{console-poll-XI5BZPL7.js → console-poll-NSVVUNEC.js} +6 -6
- package/dist/{cookie-import-QELKE7TK.js → cookie-import-B7IQTGTN.js} +5 -5
- package/dist/{cookie-list-QDA6KWIY.js → cookie-list-YHG7JCZZ.js} +5 -5
- package/dist/{daemon-CA4UIIZQ.js → daemon-ENU4FOV4.js} +4 -4
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/{debug-trace-snapshot-AT4GAO57.js → debug-trace-snapshot-KLGU2AWY.js} +6 -6
- package/dist/{dialog-O3V2IBFH.js → dialog-MUVQIERS.js} +6 -6
- package/dist/{disconnect-NAX5TPTG.js → disconnect-KELQJ45J.js} +5 -5
- package/dist/{enabled-VT4FJXDX.js → enabled-SF6UU5HG.js} +6 -6
- package/dist/{goto-GBJG5NC4.js → goto-AZQWXYPG.js} +6 -6
- package/dist/guidance/context.d.ts.map +1 -1
- package/dist/guidance/recipes/generic.d.ts.map +1 -1
- package/dist/guidance/recipes/pinterest.d.ts.map +1 -1
- package/dist/guidance/recipes/site-recipe-validation.d.ts +27 -0
- package/dist/guidance/recipes/site-recipe-validation.d.ts.map +1 -0
- package/dist/guidance/types.d.ts +1 -0
- package/dist/guidance/types.d.ts.map +1 -1
- package/dist/{help-SUI4H77K.js → help-B44IBHXL.js} +3 -3
- package/dist/{hover-476ZNQZE.js → hover-MQRAKKVU.js} +6 -6
- package/dist/{html-5C4TXOV3.js → html-PLRTU2WS.js} +6 -6
- package/dist/index.js +49 -14
- package/dist/index.js.map +1 -1
- package/dist/{inspector-73ARPCIV.js → inspector-IY4GBIT6.js} +7 -7
- package/dist/{inspector-audit-QT6QY7KS.js → inspector-audit-7MQCRJHD.js} +9 -9
- package/dist/{inspector-plan-JRNSGN2Z.js → inspector-plan-ZAUDHBET.js} +7 -7
- package/dist/inspiredesign/contract.d.ts +1 -0
- package/dist/inspiredesign/contract.d.ts.map +1 -1
- package/dist/inspiredesign/reference-pattern-board.d.ts +5 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
- package/dist/{inspiredesign-IPVZDLSQ.js → inspiredesign-VHPEO3UK.js} +80 -27
- package/dist/inspiredesign-VHPEO3UK.js.map +1 -0
- package/dist/{launch-B35YDRQC.js → launch-OCTWPTV5.js} +6 -6
- package/dist/{list-YETWKTKY.js → list-HUSYADUS.js} +5 -5
- package/dist/{list-JV55JVGB.js → list-JWKAMAUA.js} +5 -5
- package/dist/{macro-resolve-DQK4B3W3.js → macro-resolve-WOXMPZDQ.js} +6 -6
- package/dist/{network-poll-4GWHCJXI.js → network-poll-WHB62OEF.js} +6 -6
- package/dist/{new-XDCQPIEG.js → new-IKZBYBNK.js} +5 -5
- package/dist/{open-GIM3ZCSV.js → open-UA2VI6ZP.js} +5 -5
- package/dist/opendevbrowser.js +49 -14
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/{perf-26VBXDPI.js → perf-DICS3VKH.js} +6 -6
- package/dist/{pointer-down-O3VSNAXW.js → pointer-down-2XPRZFJC.js} +7 -7
- package/dist/{pointer-drag-WQ5QGE6J.js → pointer-drag-7NY4BOLH.js} +7 -7
- package/dist/{pointer-move-4N4D7JY2.js → pointer-move-FWEXMH37.js} +7 -7
- package/dist/{pointer-up-CQC4NPDX.js → pointer-up-VU2OHK5D.js} +7 -7
- package/dist/{press-XGJD45CU.js → press-W7IZ3FCX.js} +6 -6
- package/dist/{product-video-HD4ZOUI7.js → product-video-XCZ6CHR5.js} +7 -7
- package/dist/providers/browser-output-artifacts.d.ts +13 -0
- package/dist/providers/browser-output-artifacts.d.ts.map +1 -0
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-KKNPJSQK.js → providers-XCNSU3T6.js} +2 -2
- package/dist/public-surface/generated-manifest.d.ts +3 -3
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/{research-VUWWEQ4R.js → research-AYCKHOWK.js} +7 -7
- package/dist/{review-LZ3TA7U7.js → review-PP2UNSMJ.js} +7 -7
- package/dist/{review-desktop-LAO7U7T3.js → review-desktop-3JOJFUEJ.js} +7 -7
- package/dist/{rpc-HKNIVFGC.js → rpc-7EPTJQQ6.js} +6 -6
- package/dist/{run-SHCF53FO.js → run-P6UJS3D4.js} +4 -4
- package/dist/{screencast-start-JHMQZVWJ.js → screencast-start-ZZYNH2HT.js} +6 -6
- package/dist/{screencast-stop-RWQTWWQS.js → screencast-stop-Y6ADFOFA.js} +6 -6
- package/dist/{screenshot-QHFYO6PB.js → screenshot-CJB7PMAF.js} +6 -6
- package/dist/{scroll-L3FTMAV4.js → scroll-BP5MA4ZT.js} +6 -6
- package/dist/{scroll-into-view-JVDHX4WU.js → scroll-into-view-O3RDWLM2.js} +6 -6
- package/dist/{select-X4BO7GTB.js → select-QLCNRI36.js} +6 -6
- package/dist/{serve-JIMIBCNO.js → serve-OO2MQWGL.js} +5 -5
- package/dist/{shopping-EGSDP2GL.js → shopping-UYHCYPAH.js} +7 -7
- package/dist/{snapshot-QGJ7RDNV.js → snapshot-SXYZ3CMC.js} +6 -6
- package/dist/{status-CKGPNYIH.js → status-AL2AHVA5.js} +5 -5
- package/dist/{status-LEBY2X7N.js → status-QQW7REK4.js} +7 -7
- package/dist/{status-capabilities-6QTWNGKM.js → status-capabilities-AVHJYQQQ.js} +7 -7
- package/dist/{text-VUZU7D3L.js → text-B6Z47EOA.js} +6 -6
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/tools/product_video_run.d.ts.map +1 -1
- package/dist/{type-N5SURP74.js → type-LR3F3SQY.js} +6 -6
- package/dist/{uncheck-JFMK3SSY.js → uncheck-5PJEHR7J.js} +6 -6
- package/dist/{upload-KFUYLL7M.js → upload-HQ3QN2OW.js} +6 -6
- package/dist/{use-CNMPP2ED.js → use-KFZLMRUH.js} +5 -5
- package/dist/{value-J335MPZE.js → value-TKUFUK5I.js} +6 -6
- package/dist/{visible-YQZWWPBZ.js → visible-P5Z2N2QR.js} +6 -6
- package/dist/{wait-IC7YJJPJ.js → wait-BYSHJPSC.js} +6 -6
- package/dist/{windows-AGVQ3KX3.js → windows-6GTD25EU.js} +7 -7
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/dist/chunk-27W46IKI.js.map +0 -1
- package/dist/chunk-EOX6U6Q4.js.map +0 -1
- package/dist/chunk-FBKPDILE.js.map +0 -1
- package/dist/chunk-HMRANSDX.js.map +0 -1
- package/dist/chunk-SKFB5ICF.js.map +0 -1
- package/dist/inspiredesign-IPVZDLSQ.js.map +0 -1
- /package/dist/{accessibility-snapshot-JSPFVWZ6.js.map → accessibility-snapshot-VCBXK47S.js.map} +0 -0
- /package/dist/{active-window-2OB2MSCR.js.map → active-window-7EUN36LZ.js.map} +0 -0
- /package/dist/{annotate-VDZBZBKZ.js.map → annotate-VLBK7YB6.js.map} +0 -0
- /package/dist/{attr-7XIO4MCH.js.map → attr-JNANQKM6.js.map} +0 -0
- /package/dist/{canvas-N4PAA274.js.map → canvas-V5LO4JVL.js.map} +0 -0
- /package/dist/{capture-desktop-T5YO3EBI.js.map → capture-desktop-FKVDWTVG.js.map} +0 -0
- /package/dist/{capture-window-UKEUBWKH.js.map → capture-window-QVPM2DN2.js.map} +0 -0
- /package/dist/{check-PQB6KKMN.js.map → check-V3CWZ56S.js.map} +0 -0
- /package/dist/{checked-RNZIMCU6.js.map → checked-Q27Q6YZN.js.map} +0 -0
- /package/dist/{chunk-J3KYGJRQ.js.map → chunk-G6NQ7WYD.js.map} +0 -0
- /package/dist/{chunk-MJF67OTH.js.map → chunk-NX2XYJP5.js.map} +0 -0
- /package/dist/{chunk-FDBUB7BM.js.map → chunk-OJAUKABV.js.map} +0 -0
- /package/dist/{chunk-W6YPVNDX.js.map → chunk-VTGG5ZU2.js.map} +0 -0
- /package/dist/{chunk-YRRRUGSQ.js.map → chunk-VX47SJZM.js.map} +0 -0
- /package/dist/{chunk-JROW6ZNN.js.map → chunk-VY47VKXU.js.map} +0 -0
- /package/dist/{chunk-NURQB55J.js.map → chunk-WY72GYAH.js.map} +0 -0
- /package/dist/{chunk-52ZIOWVU.js.map → chunk-Z3HIX2SE.js.map} +0 -0
- /package/dist/{click-U7ZFKSB4.js.map → click-EQDRSLR3.js.map} +0 -0
- /package/dist/{clone-component-SWYAORTU.js.map → clone-component-SISUXTJS.js.map} +0 -0
- /package/dist/{clone-page-WJ6UJOJG.js.map → clone-page-MLDPCBOY.js.map} +0 -0
- /package/dist/{close-VKIGIKVT.js.map → close-2LQMJVOA.js.map} +0 -0
- /package/dist/{close-NAVIHZ2T.js.map → close-7J7EV237.js.map} +0 -0
- /package/dist/{connect-XVG2MOZL.js.map → connect-JFRSIW5M.js.map} +0 -0
- /package/dist/{console-poll-XI5BZPL7.js.map → console-poll-NSVVUNEC.js.map} +0 -0
- /package/dist/{cookie-import-QELKE7TK.js.map → cookie-import-B7IQTGTN.js.map} +0 -0
- /package/dist/{cookie-list-QDA6KWIY.js.map → cookie-list-YHG7JCZZ.js.map} +0 -0
- /package/dist/{daemon-CA4UIIZQ.js.map → daemon-ENU4FOV4.js.map} +0 -0
- /package/dist/{debug-trace-snapshot-AT4GAO57.js.map → debug-trace-snapshot-KLGU2AWY.js.map} +0 -0
- /package/dist/{dialog-O3V2IBFH.js.map → dialog-MUVQIERS.js.map} +0 -0
- /package/dist/{disconnect-NAX5TPTG.js.map → disconnect-KELQJ45J.js.map} +0 -0
- /package/dist/{enabled-VT4FJXDX.js.map → enabled-SF6UU5HG.js.map} +0 -0
- /package/dist/{goto-GBJG5NC4.js.map → goto-AZQWXYPG.js.map} +0 -0
- /package/dist/{help-SUI4H77K.js.map → help-B44IBHXL.js.map} +0 -0
- /package/dist/{hover-476ZNQZE.js.map → hover-MQRAKKVU.js.map} +0 -0
- /package/dist/{html-5C4TXOV3.js.map → html-PLRTU2WS.js.map} +0 -0
- /package/dist/{inspector-73ARPCIV.js.map → inspector-IY4GBIT6.js.map} +0 -0
- /package/dist/{inspector-audit-QT6QY7KS.js.map → inspector-audit-7MQCRJHD.js.map} +0 -0
- /package/dist/{inspector-plan-JRNSGN2Z.js.map → inspector-plan-ZAUDHBET.js.map} +0 -0
- /package/dist/{launch-B35YDRQC.js.map → launch-OCTWPTV5.js.map} +0 -0
- /package/dist/{list-YETWKTKY.js.map → list-HUSYADUS.js.map} +0 -0
- /package/dist/{list-JV55JVGB.js.map → list-JWKAMAUA.js.map} +0 -0
- /package/dist/{macro-resolve-DQK4B3W3.js.map → macro-resolve-WOXMPZDQ.js.map} +0 -0
- /package/dist/{network-poll-4GWHCJXI.js.map → network-poll-WHB62OEF.js.map} +0 -0
- /package/dist/{new-XDCQPIEG.js.map → new-IKZBYBNK.js.map} +0 -0
- /package/dist/{open-GIM3ZCSV.js.map → open-UA2VI6ZP.js.map} +0 -0
- /package/dist/{perf-26VBXDPI.js.map → perf-DICS3VKH.js.map} +0 -0
- /package/dist/{pointer-down-O3VSNAXW.js.map → pointer-down-2XPRZFJC.js.map} +0 -0
- /package/dist/{pointer-drag-WQ5QGE6J.js.map → pointer-drag-7NY4BOLH.js.map} +0 -0
- /package/dist/{pointer-move-4N4D7JY2.js.map → pointer-move-FWEXMH37.js.map} +0 -0
- /package/dist/{pointer-up-CQC4NPDX.js.map → pointer-up-VU2OHK5D.js.map} +0 -0
- /package/dist/{press-XGJD45CU.js.map → press-W7IZ3FCX.js.map} +0 -0
- /package/dist/{product-video-HD4ZOUI7.js.map → product-video-XCZ6CHR5.js.map} +0 -0
- /package/dist/{providers-KKNPJSQK.js.map → providers-XCNSU3T6.js.map} +0 -0
- /package/dist/{research-VUWWEQ4R.js.map → research-AYCKHOWK.js.map} +0 -0
- /package/dist/{review-LZ3TA7U7.js.map → review-PP2UNSMJ.js.map} +0 -0
- /package/dist/{review-desktop-LAO7U7T3.js.map → review-desktop-3JOJFUEJ.js.map} +0 -0
- /package/dist/{rpc-HKNIVFGC.js.map → rpc-7EPTJQQ6.js.map} +0 -0
- /package/dist/{run-SHCF53FO.js.map → run-P6UJS3D4.js.map} +0 -0
- /package/dist/{screencast-start-JHMQZVWJ.js.map → screencast-start-ZZYNH2HT.js.map} +0 -0
- /package/dist/{screencast-stop-RWQTWWQS.js.map → screencast-stop-Y6ADFOFA.js.map} +0 -0
- /package/dist/{screenshot-QHFYO6PB.js.map → screenshot-CJB7PMAF.js.map} +0 -0
- /package/dist/{scroll-L3FTMAV4.js.map → scroll-BP5MA4ZT.js.map} +0 -0
- /package/dist/{scroll-into-view-JVDHX4WU.js.map → scroll-into-view-O3RDWLM2.js.map} +0 -0
- /package/dist/{select-X4BO7GTB.js.map → select-QLCNRI36.js.map} +0 -0
- /package/dist/{serve-JIMIBCNO.js.map → serve-OO2MQWGL.js.map} +0 -0
- /package/dist/{shopping-EGSDP2GL.js.map → shopping-UYHCYPAH.js.map} +0 -0
- /package/dist/{snapshot-QGJ7RDNV.js.map → snapshot-SXYZ3CMC.js.map} +0 -0
- /package/dist/{status-CKGPNYIH.js.map → status-AL2AHVA5.js.map} +0 -0
- /package/dist/{status-LEBY2X7N.js.map → status-QQW7REK4.js.map} +0 -0
- /package/dist/{status-capabilities-6QTWNGKM.js.map → status-capabilities-AVHJYQQQ.js.map} +0 -0
- /package/dist/{text-VUZU7D3L.js.map → text-B6Z47EOA.js.map} +0 -0
- /package/dist/{type-N5SURP74.js.map → type-LR3F3SQY.js.map} +0 -0
- /package/dist/{uncheck-JFMK3SSY.js.map → uncheck-5PJEHR7J.js.map} +0 -0
- /package/dist/{upload-KFUYLL7M.js.map → upload-HQ3QN2OW.js.map} +0 -0
- /package/dist/{use-CNMPP2ED.js.map → use-KFZLMRUH.js.map} +0 -0
- /package/dist/{value-J335MPZE.js.map → value-TKUFUK5I.js.map} +0 -0
- /package/dist/{visible-YQZWWPBZ.js.map → visible-P5Z2N2QR.js.map} +0 -0
- /package/dist/{wait-IC7YJJPJ.js.map → wait-BYSHJPSC.js.map} +0 -0
- /package/dist/{windows-AGVQ3KX3.js.map → windows-6GTD25EU.js.map} +0 -0
|
@@ -11245,10 +11245,15 @@ var pinterestGuidance = {
|
|
|
11245
11245
|
var PINTEREST_PIN_ID_PATTERN = /^\d+$/;
|
|
11246
11246
|
var RESERVED_PINTEREST_BOARD_PATHS = /* @__PURE__ */ new Set([
|
|
11247
11247
|
"about",
|
|
11248
|
+
"ads",
|
|
11248
11249
|
"board",
|
|
11249
11250
|
"business",
|
|
11251
|
+
"careers",
|
|
11252
|
+
"contact",
|
|
11250
11253
|
"create",
|
|
11254
|
+
"developers",
|
|
11251
11255
|
"explore",
|
|
11256
|
+
"help",
|
|
11252
11257
|
"ideas",
|
|
11253
11258
|
"login",
|
|
11254
11259
|
"messages",
|
|
@@ -11257,11 +11262,13 @@ var RESERVED_PINTEREST_BOARD_PATHS = /* @__PURE__ */ new Set([
|
|
|
11257
11262
|
"search",
|
|
11258
11263
|
"settings",
|
|
11259
11264
|
"shopping",
|
|
11265
|
+
"terms",
|
|
11260
11266
|
"today"
|
|
11261
11267
|
]);
|
|
11262
11268
|
var RESERVED_PINTEREST_IDEA_PATHS = /* @__PURE__ */ new Set(["create", "edit", "search"]);
|
|
11263
11269
|
var RESERVED_PINTEREST_PROFILE_TABS = /* @__PURE__ */ new Set([
|
|
11264
11270
|
"activity",
|
|
11271
|
+
"boards",
|
|
11265
11272
|
"comments",
|
|
11266
11273
|
"created",
|
|
11267
11274
|
"followers",
|
|
@@ -11870,13 +11877,25 @@ var rejectionReasonForReference = (reference) => {
|
|
|
11870
11877
|
}
|
|
11871
11878
|
return "Reference evidence was diagnostic, empty, or too weak for creative synthesis.";
|
|
11872
11879
|
};
|
|
11873
|
-
var
|
|
11874
|
-
|
|
11875
|
-
|
|
11876
|
-
|
|
11877
|
-
|
|
11878
|
-
|
|
11879
|
-
|
|
11880
|
+
var hasCapturedEvidence = (reference) => reference.captureStatus === "captured" || reference.capture?.visual?.status === "captured";
|
|
11881
|
+
var capturedButRejectedReason = (diagnosticReasons) => diagnosticReasons.length > 0 ? `Captured browser evidence was rejected because it only exposed diagnostic signals: ${diagnosticReasons.join(", ")}.` : "Captured browser evidence was rejected because it did not contain usable creative reference evidence.";
|
|
11882
|
+
var buildRejectedReferences = (references) => references.filter((reference) => !hasInspiredesignUsableReferenceEvidence(reference)).map((reference) => {
|
|
11883
|
+
const diagnosticReasons = referenceDiagnosticReasons(reference);
|
|
11884
|
+
const captured = hasCapturedEvidence(reference);
|
|
11885
|
+
return {
|
|
11886
|
+
id: reference.id,
|
|
11887
|
+
url: reference.url,
|
|
11888
|
+
reason: rejectionReasonForReference(reference),
|
|
11889
|
+
fetchStatus: reference.fetchStatus,
|
|
11890
|
+
captureStatus: reference.captureStatus,
|
|
11891
|
+
...captured ? { captured: true } : {},
|
|
11892
|
+
...diagnosticReasons.length > 0 ? { diagnosticReasons } : {},
|
|
11893
|
+
...captured ? {
|
|
11894
|
+
capturedButRejectedReason: capturedButRejectedReason(diagnosticReasons),
|
|
11895
|
+
evidenceGap: "Design-facing artifacts require creative layout evidence; diagnostic browser chrome is kept only as rejection metadata."
|
|
11896
|
+
} : {}
|
|
11897
|
+
};
|
|
11898
|
+
});
|
|
11880
11899
|
var buildQualitySummary = (references, rankedEntries, rejectedReferences) => {
|
|
11881
11900
|
const diagnosticOnlyReasons = [...new Set(references.flatMap(referenceDiagnosticReasons))];
|
|
11882
11901
|
const rankedIds = new Set(rankedEntries.map((entry) => entry.id));
|
|
@@ -11900,6 +11919,40 @@ var buildQualitySummary = (references, rankedEntries, rejectedReferences) => {
|
|
|
11900
11919
|
var summarizeInspiredesignReferenceQuality = (board) => ({ ...board.qualitySummary });
|
|
11901
11920
|
var isInspiredesignReadyReference = (reference) => reference.intentMatched && reference.score >= MIN_READY_REFERENCE_SCORE && reference.confidence >= MIN_READY_REFERENCE_CONFIDENCE;
|
|
11902
11921
|
var isInspiredesignDesignReference = (reference) => !isPinterestOwnedReferenceUrl(reference.url) || isPinterestVisualReferenceUrl(reference.url) && isInspiredesignReadyReference(reference);
|
|
11922
|
+
var buildNotReadyRejectedReference = (reference) => {
|
|
11923
|
+
const captured = reference.capturedVia.length > 0;
|
|
11924
|
+
return {
|
|
11925
|
+
id: reference.id,
|
|
11926
|
+
url: reference.url,
|
|
11927
|
+
reason: reference.intentMatched ? "Reference evidence did not meet the design-ready ranking threshold." : "Reference evidence did not match the requested design intent.",
|
|
11928
|
+
fetchStatus: reference.capturedVia.includes("fetch") ? "captured" : "skipped",
|
|
11929
|
+
captureStatus: reference.capturedVia.some((method) => method !== "fetch") ? "captured" : "off",
|
|
11930
|
+
...captured ? {
|
|
11931
|
+
captured: true,
|
|
11932
|
+
capturedButRejectedReason: "Captured reference evidence did not satisfy design-ready ranking gates.",
|
|
11933
|
+
evidenceGap: "Design-facing artifacts require design-ready creative evidence; non-ready captures are kept only as rejection metadata."
|
|
11934
|
+
} : {}
|
|
11935
|
+
};
|
|
11936
|
+
};
|
|
11937
|
+
var mergeRejectedReferences = (rejectedReferences) => {
|
|
11938
|
+
const seen = /* @__PURE__ */ new Set();
|
|
11939
|
+
return rejectedReferences.filter((reference) => {
|
|
11940
|
+
if (seen.has(reference.id)) return false;
|
|
11941
|
+
seen.add(reference.id);
|
|
11942
|
+
return true;
|
|
11943
|
+
});
|
|
11944
|
+
};
|
|
11945
|
+
var buildInspiredesignRankedArtifactPatternBoard = (designBoard, sourceBoard) => {
|
|
11946
|
+
const designReferenceIds = new Set(designBoard.references.map((reference) => reference.id));
|
|
11947
|
+
const notReadyReferences = sourceBoard.references.filter((reference) => !designReferenceIds.has(reference.id)).map(buildNotReadyRejectedReference);
|
|
11948
|
+
return {
|
|
11949
|
+
...designBoard,
|
|
11950
|
+
rejectedReferences: mergeRejectedReferences([
|
|
11951
|
+
...sourceBoard.rejectedReferences,
|
|
11952
|
+
...notReadyReferences
|
|
11953
|
+
])
|
|
11954
|
+
};
|
|
11955
|
+
};
|
|
11903
11956
|
var buildInspiredesignDesignReferencePatternBoard = (board, designVectors) => {
|
|
11904
11957
|
const references = board.references.filter(isInspiredesignDesignReference);
|
|
11905
11958
|
const notReadyCount = board.references.length - references.length;
|
|
@@ -13906,6 +13959,7 @@ var buildInspiredesignPacket = (input) => {
|
|
|
13906
13959
|
visualEvidence,
|
|
13907
13960
|
screenshotIndex,
|
|
13908
13961
|
rankedReferences: designReferencePatternBoard.references,
|
|
13962
|
+
referencePatternBoard,
|
|
13909
13963
|
metaPromptMarkdown,
|
|
13910
13964
|
evidence: buildEvidencePayload({
|
|
13911
13965
|
brief,
|
|
@@ -14498,6 +14552,7 @@ var DEFAULT_INSPIREDESIGN_BRIEF = "Digital photography studio landing page";
|
|
|
14498
14552
|
var DEFAULT_INSPIREDESIGN_QUERY = "cinematic photography studio landing page inspiration";
|
|
14499
14553
|
var DEFAULT_RESEARCH_TOPIC = "browser automation provider recovery";
|
|
14500
14554
|
var DEFAULT_PROVIDER = "provider diagnostics";
|
|
14555
|
+
var DEFAULT_PINTEREST_REFERENCE_URL = "https://www.pinterest.com/pin/27654985208435505/";
|
|
14501
14556
|
var isCanvasGenerationPlanIssue = (value) => {
|
|
14502
14557
|
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
14503
14558
|
const record = value;
|
|
@@ -14522,12 +14577,28 @@ var inspiredesignCookieFlags = (context) => {
|
|
|
14522
14577
|
if (selectedProviderIsPinterest(context)) return " --use-cookies --cookie-policy required";
|
|
14523
14578
|
return context.useCookies === true ? " --use-cookies" : "";
|
|
14524
14579
|
};
|
|
14580
|
+
var pinterestRecoveryUrls = (context) => {
|
|
14581
|
+
if (!isPinterestScopedRecovery(context)) return [];
|
|
14582
|
+
const urls = context.referenceUrls ?? [];
|
|
14583
|
+
const canonicalUrls = urls.map(normalizePinterestReferenceUrl).filter((url) => url !== null);
|
|
14584
|
+
return [...new Set(canonicalUrls)];
|
|
14585
|
+
};
|
|
14586
|
+
var inspiredesignRecoveryExampleUrls = (context) => selectedProviderIsPinterest(context) ? [DEFAULT_PINTEREST_REFERENCE_URL] : ["https://example.com/usable-reference"];
|
|
14525
14587
|
var inspiredesignHarvestCommand = (context) => {
|
|
14526
14588
|
const brief = typeof context.details?.brief === "string" ? context.details.brief : DEFAULT_INSPIREDESIGN_BRIEF;
|
|
14527
14589
|
const query = context.query ?? DEFAULT_INSPIREDESIGN_QUERY;
|
|
14528
14590
|
const provider = selectedInspiredesignProvider(context);
|
|
14529
14591
|
const browserMode = inspiredesignBrowserMode(context);
|
|
14530
14592
|
const cookieFlags = inspiredesignCookieFlags(context);
|
|
14593
|
+
const urls = pinterestRecoveryUrls(context);
|
|
14594
|
+
if (urls.length > 0) {
|
|
14595
|
+
const urlFlags = urls.map((url) => `--url ${quote(url)}`).join(" ");
|
|
14596
|
+
return {
|
|
14597
|
+
id: "inspiredesign-harvest-url-recovery",
|
|
14598
|
+
label: "Recover Inspired Design harvest with explicit Pinterest URLs",
|
|
14599
|
+
command: `npx opendevbrowser inspiredesign harvest --brief ${quote(brief)} --provider social/pinterest ${urlFlags} --max-references 5 --visual-evidence required --browser-mode extension --use-cookies --cookie-policy required --challenge-automation-mode browser_with_helper --mode json --output-format json`
|
|
14600
|
+
};
|
|
14601
|
+
}
|
|
14531
14602
|
return {
|
|
14532
14603
|
id: "inspiredesign-harvest-rerun",
|
|
14533
14604
|
label: "Rerun Inspired Design harvest with explicit evidence settings",
|
|
@@ -14848,7 +14919,7 @@ var buildEvidenceRecoveryGuidance = (context, readiness, reasonCode, actionLabel
|
|
|
14848
14919
|
label: "Use explicit high-quality visual references when provider discovery is blocked",
|
|
14849
14920
|
params: {
|
|
14850
14921
|
brief: typeof context.details?.brief === "string" ? context.details.brief : DEFAULT_INSPIREDESIGN_BRIEF,
|
|
14851
|
-
urls:
|
|
14922
|
+
urls: inspiredesignRecoveryExampleUrls(context),
|
|
14852
14923
|
visualEvidence: "required",
|
|
14853
14924
|
browserMode: inspiredesignBrowserMode(context),
|
|
14854
14925
|
...selectedProviderIsPinterest(context) ? { useCookies: true, cookiePolicy: "required" } : {}
|
|
@@ -15538,22 +15609,75 @@ var researchFailureMessage = (content) => boundedInlineText({
|
|
|
15538
15609
|
target: "meta.json"
|
|
15539
15610
|
});
|
|
15540
15611
|
var CANVAS_CONTINUATION_BLOCKED_COMMAND = "Unavailable until nextStepGuidance.readiness is ready.";
|
|
15612
|
+
var CANVAS_PLAN_OMITTED_GUIDANCE = "Canvas plan request omitted until nextStepGuidance.readiness is ready.";
|
|
15541
15613
|
var canContinueInspiredesignInCanvas = (guidance) => guidance?.readiness === "ready";
|
|
15542
|
-
var
|
|
15543
|
-
|
|
15544
|
-
|
|
15545
|
-
|
|
15546
|
-
|
|
15547
|
-
|
|
15548
|
-
recoverySummary,
|
|
15549
|
-
"Do not submit this payload to Canvas until usable ranked references pass the readiness checks."
|
|
15550
|
-
],
|
|
15551
|
-
mustNot: [
|
|
15552
|
-
"Do not submit canvas.plan.set while nextStepGuidance.readiness is not ready.",
|
|
15553
|
-
"Do not treat rejected or not-ready references as Canvas design direction."
|
|
15554
|
-
]
|
|
15555
|
-
}
|
|
15614
|
+
var scrubCanvasPlanReference = (value) => value.includes(INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest) ? CANVAS_PLAN_OMITTED_GUIDANCE : value;
|
|
15615
|
+
var scrubGuideEntryCanvasReferences = (entry) => ({
|
|
15616
|
+
...entry,
|
|
15617
|
+
expectedContents: entry.expectedContents.map(scrubCanvasPlanReference),
|
|
15618
|
+
howToUse: entry.howToUse.map(scrubCanvasPlanReference),
|
|
15619
|
+
mustNot: entry.mustNot.map(scrubCanvasPlanReference)
|
|
15556
15620
|
});
|
|
15621
|
+
var scrubArtifactGuideCanvasReferences = (guide) => {
|
|
15622
|
+
const scrubbed = {};
|
|
15623
|
+
for (const [key, entry] of Object.entries(guide)) {
|
|
15624
|
+
if (entry) {
|
|
15625
|
+
scrubbed[key] = scrubGuideEntryCanvasReferences(entry);
|
|
15626
|
+
}
|
|
15627
|
+
}
|
|
15628
|
+
return scrubbed;
|
|
15629
|
+
};
|
|
15630
|
+
var scrubContractSectionGuideCanvasReferences = (guide) => {
|
|
15631
|
+
const scrubbed = {};
|
|
15632
|
+
for (const [key, entry] of Object.entries(guide)) {
|
|
15633
|
+
scrubbed[key] = scrubGuideEntryCanvasReferences(entry);
|
|
15634
|
+
}
|
|
15635
|
+
return scrubbed;
|
|
15636
|
+
};
|
|
15637
|
+
var blockInspiredesignCanvasArtifactGuide = (handoff) => {
|
|
15638
|
+
const artifactGuide = { ...handoff.artifactGuide };
|
|
15639
|
+
delete artifactGuide[INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest];
|
|
15640
|
+
return artifactGuide;
|
|
15641
|
+
};
|
|
15642
|
+
var blockInspiredesignNotReadyArtifacts = (handoff) => {
|
|
15643
|
+
const referenceSynthesis = plainObject(handoff.implementationContext.referenceSynthesis);
|
|
15644
|
+
const blockedArtifacts = /* @__PURE__ */ new Set([
|
|
15645
|
+
INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest,
|
|
15646
|
+
INSPIREDESIGN_HANDOFF_FILES.prototypeGuidance
|
|
15647
|
+
]);
|
|
15648
|
+
const requiredArtifacts = isStringArray(referenceSynthesis.requiredArtifacts) ? referenceSynthesis.requiredArtifacts.filter((artifact) => !blockedArtifacts.has(artifact)) : [];
|
|
15649
|
+
const artifactGuide = { ...handoff.artifactGuide };
|
|
15650
|
+
delete artifactGuide[INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest];
|
|
15651
|
+
delete artifactGuide[INSPIREDESIGN_HANDOFF_FILES.prototypeGuidance];
|
|
15652
|
+
return {
|
|
15653
|
+
...handoff,
|
|
15654
|
+
artifactGuide: scrubArtifactGuideCanvasReferences(artifactGuide),
|
|
15655
|
+
contractSectionGuide: scrubContractSectionGuideCanvasReferences(handoff.contractSectionGuide),
|
|
15656
|
+
implementationContext: {
|
|
15657
|
+
...handoff.implementationContext,
|
|
15658
|
+
referenceSynthesis: {
|
|
15659
|
+
...referenceSynthesis,
|
|
15660
|
+
requiredArtifacts
|
|
15661
|
+
}
|
|
15662
|
+
}
|
|
15663
|
+
};
|
|
15664
|
+
};
|
|
15665
|
+
var blockPrototypeGuidanceInDesignMarkdown = (markdown, prototypeGuidanceMarkdown) => {
|
|
15666
|
+
const withoutCanvasDeliverable = markdown.replace(
|
|
15667
|
+
/\n- Diagnostic `canvasPlanRequest` preview; do not submit to Canvas until next-step guidance is ready/g,
|
|
15668
|
+
`
|
|
15669
|
+
- ${CANVAS_PLAN_OMITTED_GUIDANCE}`
|
|
15670
|
+
);
|
|
15671
|
+
const withoutPrototypeDeliverable = withoutCanvasDeliverable.replace(
|
|
15672
|
+
/\n- Prototype guidance Markdown for the first HTML pass/g,
|
|
15673
|
+
""
|
|
15674
|
+
);
|
|
15675
|
+
if (!prototypeGuidanceMarkdown) return withoutPrototypeDeliverable;
|
|
15676
|
+
return withoutPrototypeDeliverable.replace(
|
|
15677
|
+
prototypeGuidanceMarkdown,
|
|
15678
|
+
"# 6. Optional Prototype Plan\n\n- Prototype guidance omitted because next-step guidance is not ready."
|
|
15679
|
+
);
|
|
15680
|
+
};
|
|
15557
15681
|
var buildMissingInspiredesignGuidanceHandoff = () => {
|
|
15558
15682
|
const summary = "Canvas continuation unavailable until nextStepGuidance.readiness is ready.";
|
|
15559
15683
|
return {
|
|
@@ -16010,6 +16134,7 @@ var renderInspiredesign = (args) => {
|
|
|
16010
16134
|
const followthroughSummary = prependPrimaryConstraint(args.designAgentHandoff.summary, args.meta);
|
|
16011
16135
|
const canContinueInCanvas = canContinueInspiredesignInCanvas(args.nextStepGuidance);
|
|
16012
16136
|
const prototypeGuidanceMarkdown = canContinueInCanvas ? args.prototypeGuidanceMarkdown : null;
|
|
16137
|
+
const designMarkdown = canContinueInCanvas ? args.designMarkdown : blockPrototypeGuidanceInDesignMarkdown(args.designMarkdown, args.prototypeGuidanceMarkdown);
|
|
16013
16138
|
const commandExamples2 = {
|
|
16014
16139
|
...args.designAgentHandoff.commandExamples,
|
|
16015
16140
|
continueInCanvas: canContinueInCanvas ? args.designAgentHandoff.commandExamples.continueInCanvas : CANVAS_CONTINUATION_BLOCKED_COMMAND
|
|
@@ -16022,8 +16147,8 @@ var renderInspiredesign = (args) => {
|
|
|
16022
16147
|
...args.nextStepGuidance ? { nextStepGuidance: args.nextStepGuidance } : {}
|
|
16023
16148
|
});
|
|
16024
16149
|
const handoff = args.nextStepGuidance ? renderedWorkflowHandoff : buildMissingInspiredesignGuidanceHandoff();
|
|
16025
|
-
const blockedCanvasArtifactGuide = canContinueInCanvas ? args.designAgentHandoff.artifactGuide : blockInspiredesignCanvasArtifactGuide(args.designAgentHandoff
|
|
16026
|
-
const
|
|
16150
|
+
const blockedCanvasArtifactGuide = canContinueInCanvas ? args.designAgentHandoff.artifactGuide : blockInspiredesignCanvasArtifactGuide(args.designAgentHandoff);
|
|
16151
|
+
const renderedDesignAgentHandoffBase = {
|
|
16027
16152
|
...args.designAgentHandoff,
|
|
16028
16153
|
...handoff,
|
|
16029
16154
|
summary: handoff.followthroughSummary,
|
|
@@ -16031,17 +16156,18 @@ var renderInspiredesign = (args) => {
|
|
|
16031
16156
|
artifactGuide: blockedCanvasArtifactGuide,
|
|
16032
16157
|
commandExamples: commandExamples2
|
|
16033
16158
|
};
|
|
16159
|
+
const renderedDesignAgentHandoff = canContinueInCanvas ? renderedDesignAgentHandoffBase : blockInspiredesignNotReadyArtifacts(renderedDesignAgentHandoffBase);
|
|
16034
16160
|
const contextPayload = {
|
|
16035
16161
|
brief: args.brief,
|
|
16036
16162
|
advancedBriefMarkdown: args.advancedBriefMarkdown,
|
|
16037
16163
|
urls: args.urls,
|
|
16038
16164
|
designContract: args.designContract,
|
|
16039
|
-
canvasPlanRequest: args.canvasPlanRequest,
|
|
16165
|
+
...canContinueInCanvas ? { canvasPlanRequest: args.canvasPlanRequest } : {},
|
|
16040
16166
|
designAgentHandoff: renderedDesignAgentHandoff,
|
|
16041
16167
|
...args.nextStepGuidance ? { nextStepGuidance: args.nextStepGuidance } : {},
|
|
16042
16168
|
generationPlan: args.generationPlan,
|
|
16043
16169
|
implementationPlan: args.implementationPlan,
|
|
16044
|
-
designMarkdown
|
|
16170
|
+
designMarkdown,
|
|
16045
16171
|
implementationPlanMarkdown: args.implementationPlanMarkdown,
|
|
16046
16172
|
prototypeGuidanceMarkdown,
|
|
16047
16173
|
evidence: args.evidence,
|
|
@@ -16052,10 +16178,9 @@ var renderInspiredesign = (args) => {
|
|
|
16052
16178
|
meta: args.meta
|
|
16053
16179
|
};
|
|
16054
16180
|
const files = [
|
|
16055
|
-
{ path: INSPIREDESIGN_HANDOFF_FILES.designMarkdown, content:
|
|
16181
|
+
{ path: INSPIREDESIGN_HANDOFF_FILES.designMarkdown, content: designMarkdown },
|
|
16056
16182
|
{ path: INSPIREDESIGN_HANDOFF_FILES.advancedBrief, content: args.advancedBriefMarkdown },
|
|
16057
16183
|
{ path: INSPIREDESIGN_HANDOFF_FILES.designContract, content: args.designContract },
|
|
16058
|
-
{ path: INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest, content: args.canvasPlanRequest },
|
|
16059
16184
|
{
|
|
16060
16185
|
path: INSPIREDESIGN_HANDOFF_FILES.designAgentHandoff,
|
|
16061
16186
|
content: renderedDesignAgentHandoff
|
|
@@ -16072,6 +16197,9 @@ var renderInspiredesign = (args) => {
|
|
|
16072
16197
|
if (prototypeGuidanceMarkdown) {
|
|
16073
16198
|
files.push({ path: INSPIREDESIGN_HANDOFF_FILES.prototypeGuidance, content: prototypeGuidanceMarkdown });
|
|
16074
16199
|
}
|
|
16200
|
+
if (canContinueInCanvas) {
|
|
16201
|
+
files.push({ path: INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest, content: args.canvasPlanRequest });
|
|
16202
|
+
}
|
|
16075
16203
|
const captureAttemptFields = {
|
|
16076
16204
|
...captureAttemptSummary ? { captureAttemptSummary } : {},
|
|
16077
16205
|
...captureAttemptReport ? { captureAttemptReport } : {}
|
|
@@ -16095,7 +16223,7 @@ var renderInspiredesign = (args) => {
|
|
|
16095
16223
|
brief: args.brief,
|
|
16096
16224
|
advancedBriefMarkdown: args.advancedBriefMarkdown,
|
|
16097
16225
|
urls: args.urls,
|
|
16098
|
-
canvasPlanRequest: args.canvasPlanRequest,
|
|
16226
|
+
...canContinueInCanvas ? { canvasPlanRequest: args.canvasPlanRequest } : {},
|
|
16099
16227
|
designAgentHandoff: renderedDesignAgentHandoff,
|
|
16100
16228
|
...args.nextStepGuidance ? { nextStepGuidance: args.nextStepGuidance } : {},
|
|
16101
16229
|
designContract: args.designContract,
|
|
@@ -16118,7 +16246,7 @@ var renderInspiredesign = (args) => {
|
|
|
16118
16246
|
return {
|
|
16119
16247
|
response: {
|
|
16120
16248
|
mode: args.mode,
|
|
16121
|
-
markdown:
|
|
16249
|
+
markdown: designMarkdown,
|
|
16122
16250
|
implementationPlanMarkdown: args.implementationPlanMarkdown,
|
|
16123
16251
|
prototypeGuidanceMarkdown,
|
|
16124
16252
|
...handoff,
|
|
@@ -16242,6 +16370,10 @@ var reasonCodeForInspiredesign = (source) => {
|
|
|
16242
16370
|
if (hasWeakTopReference2(source)) return "weak_reference";
|
|
16243
16371
|
return "design_ready";
|
|
16244
16372
|
};
|
|
16373
|
+
var dedupeInspiredesignReferenceUrls = (source) => {
|
|
16374
|
+
const urls = [...source.urls ?? [], ...source.discovery.acceptedUrls].map((url) => url.trim()).filter((url) => url.length > 0);
|
|
16375
|
+
return [...new Set(urls)];
|
|
16376
|
+
};
|
|
16245
16377
|
var resolveInspiredesignSiteRecipe = (source) => {
|
|
16246
16378
|
const providerRecipe = source.requestedProviders.map((providerId) => resolveSiteRecipeForProvider(providerId)).find((recipe) => recipe !== void 0);
|
|
16247
16379
|
if (providerRecipe) return providerRecipe.id;
|
|
@@ -16250,12 +16382,14 @@ var resolveInspiredesignSiteRecipe = (source) => {
|
|
|
16250
16382
|
};
|
|
16251
16383
|
var createInspiredesignGuidanceContext = (source) => {
|
|
16252
16384
|
const siteRecipeId = resolveInspiredesignSiteRecipe(source);
|
|
16385
|
+
const referenceUrls = dedupeInspiredesignReferenceUrls(source);
|
|
16253
16386
|
return {
|
|
16254
16387
|
workflow: "inspiredesign",
|
|
16255
16388
|
reasonCode: reasonCodeForInspiredesign(source),
|
|
16256
16389
|
requestedProviders: source.requestedProviders,
|
|
16257
16390
|
...siteRecipeId ? { siteRecipeId } : {},
|
|
16258
16391
|
...source.query ? { query: source.query } : {},
|
|
16392
|
+
...referenceUrls.length > 0 ? { referenceUrls } : {},
|
|
16259
16393
|
...source.browserMode ? { browserMode: source.browserMode } : {},
|
|
16260
16394
|
...source.cookiePolicy ? { cookiePolicy: source.cookiePolicy } : {},
|
|
16261
16395
|
...typeof source.useCookies === "boolean" ? { useCookies: source.useCookies } : {},
|
|
@@ -16282,6 +16416,110 @@ var createInspiredesignGuidanceContext = (source) => {
|
|
|
16282
16416
|
};
|
|
16283
16417
|
};
|
|
16284
16418
|
|
|
16419
|
+
// src/guidance/recipes/site-recipe-validation.ts
|
|
16420
|
+
var normalizeNonBlank = (values) => values.map((value) => value.trim()).filter((value) => value.length > 0);
|
|
16421
|
+
var incompatible = (message) => ({ ok: false, message });
|
|
16422
|
+
var supportsBrowserNativeRecovery = (recipe) => typeof recipe?.browserNativeDiscovery?.buildSearchUrl === "function";
|
|
16423
|
+
var isCanonicalRecipeReferenceUrl = (recipe, url) => {
|
|
16424
|
+
if (recipe.id === "social/pinterest") {
|
|
16425
|
+
return normalizePinterestReferenceUrl(url) !== null;
|
|
16426
|
+
}
|
|
16427
|
+
return true;
|
|
16428
|
+
};
|
|
16429
|
+
var isPinterestLikeHostname = (value) => {
|
|
16430
|
+
const hostname = value.toLowerCase();
|
|
16431
|
+
return [
|
|
16432
|
+
hostname === "pinterest.com",
|
|
16433
|
+
hostname.endsWith(".pinterest.com"),
|
|
16434
|
+
hostname.startsWith("pinterest."),
|
|
16435
|
+
hostname.includes(".pinterest.")
|
|
16436
|
+
].some(Boolean);
|
|
16437
|
+
};
|
|
16438
|
+
var isPinterestLikeUrl = (value) => {
|
|
16439
|
+
try {
|
|
16440
|
+
return isPinterestLikeHostname(new URL(value).hostname);
|
|
16441
|
+
} catch {
|
|
16442
|
+
return false;
|
|
16443
|
+
}
|
|
16444
|
+
};
|
|
16445
|
+
var isNonCanonicalPinterestLikeUrl = (url) => (resolveSiteRecipeForUrl(url)?.id === "social/pinterest" || isPinterestLikeUrl(url)) && normalizePinterestReferenceUrl(url) === null;
|
|
16446
|
+
var requiresProviderUrlSiteRecipeCompatibility = ({
|
|
16447
|
+
providers,
|
|
16448
|
+
urls,
|
|
16449
|
+
query
|
|
16450
|
+
}) => {
|
|
16451
|
+
const providerIds = normalizeNonBlank(providers);
|
|
16452
|
+
if (providerIds.length === 0) return false;
|
|
16453
|
+
if (!query?.trim()) return true;
|
|
16454
|
+
return false;
|
|
16455
|
+
};
|
|
16456
|
+
var validateProviderScopedUrlCanonicality = ({
|
|
16457
|
+
providers,
|
|
16458
|
+
urls
|
|
16459
|
+
}) => {
|
|
16460
|
+
const providerHasPinterest = normalizeNonBlank(providers).some((providerId) => resolveSiteRecipeForProvider(providerId)?.id === "social/pinterest");
|
|
16461
|
+
if (!providerHasPinterest) return { ok: true };
|
|
16462
|
+
const nonCanonicalPinterestUrl = normalizeNonBlank(urls).find((url) => normalizePinterestReferenceUrl(url) === null);
|
|
16463
|
+
if (!nonCanonicalPinterestUrl) return { ok: true };
|
|
16464
|
+
return incompatible(
|
|
16465
|
+
`URL ${nonCanonicalPinterestUrl} is not a canonical social/pinterest reference URL for provider-scoped recovery.`
|
|
16466
|
+
);
|
|
16467
|
+
};
|
|
16468
|
+
var validateProviderUrlSiteRecipeCompatibility = ({
|
|
16469
|
+
providers,
|
|
16470
|
+
urls
|
|
16471
|
+
}) => {
|
|
16472
|
+
const providerIds = normalizeNonBlank(providers);
|
|
16473
|
+
const referenceUrls = normalizeNonBlank(urls);
|
|
16474
|
+
if (providerIds.length === 0) {
|
|
16475
|
+
return incompatible("Provider-scoped URL recovery requires at least one provider.");
|
|
16476
|
+
}
|
|
16477
|
+
if (referenceUrls.length === 0) {
|
|
16478
|
+
return incompatible("Provider-scoped URL recovery requires at least one URL.");
|
|
16479
|
+
}
|
|
16480
|
+
const providerRecipes = providerIds.map((providerId) => ({
|
|
16481
|
+
providerId,
|
|
16482
|
+
recipe: resolveSiteRecipeForProvider(providerId)
|
|
16483
|
+
}));
|
|
16484
|
+
const missingProviderRecipe = providerRecipes.find((entry) => entry.recipe === void 0);
|
|
16485
|
+
if (missingProviderRecipe) {
|
|
16486
|
+
return incompatible(`Provider ${missingProviderRecipe.providerId} does not support URL-only site recipe recovery.`);
|
|
16487
|
+
}
|
|
16488
|
+
const nonNativeProviderRecipe = providerRecipes.find((entry) => !supportsBrowserNativeRecovery(entry.recipe));
|
|
16489
|
+
if (nonNativeProviderRecipe) {
|
|
16490
|
+
return incompatible(`Provider ${nonNativeProviderRecipe.providerId} does not support browser-native URL-only site recipe recovery.`);
|
|
16491
|
+
}
|
|
16492
|
+
const urlRecipes = referenceUrls.map((url) => ({
|
|
16493
|
+
url,
|
|
16494
|
+
recipe: resolveSiteRecipeForUrl(url)
|
|
16495
|
+
}));
|
|
16496
|
+
const missingUrlRecipe = urlRecipes.find((entry) => entry.recipe === void 0);
|
|
16497
|
+
if (missingUrlRecipe) {
|
|
16498
|
+
return incompatible(`URL ${missingUrlRecipe.url} does not match a browser-native site recipe for provider-scoped recovery.`);
|
|
16499
|
+
}
|
|
16500
|
+
const nonNativeUrlRecipe = urlRecipes.find((entry) => !supportsBrowserNativeRecovery(entry.recipe));
|
|
16501
|
+
if (nonNativeUrlRecipe) {
|
|
16502
|
+
return incompatible(`URL ${nonNativeUrlRecipe.url} does not match a browser-native site recipe for provider-scoped recovery.`);
|
|
16503
|
+
}
|
|
16504
|
+
const recipeIds = /* @__PURE__ */ new Set([
|
|
16505
|
+
...providerRecipes.map((entry) => entry.recipe?.id),
|
|
16506
|
+
...urlRecipes.map((entry) => entry.recipe?.id)
|
|
16507
|
+
]);
|
|
16508
|
+
if (recipeIds.size !== 1) {
|
|
16509
|
+
return incompatible("Provider-scoped URL recovery requires every provider and URL to resolve to the same site recipe.");
|
|
16510
|
+
}
|
|
16511
|
+
const recipeId = providerRecipes[0]?.recipe?.id;
|
|
16512
|
+
if (!recipeId) {
|
|
16513
|
+
return incompatible("Provider-scoped URL recovery could not resolve a site recipe.");
|
|
16514
|
+
}
|
|
16515
|
+
const recipe = providerRecipes[0]?.recipe;
|
|
16516
|
+
const nonReferenceUrl = recipe ? urlRecipes.find((entry) => !isCanonicalRecipeReferenceUrl(recipe, entry.url)) : void 0;
|
|
16517
|
+
if (nonReferenceUrl) {
|
|
16518
|
+
return incompatible(`URL ${nonReferenceUrl.url} is not a canonical ${recipeId} reference URL for provider-scoped recovery.`);
|
|
16519
|
+
}
|
|
16520
|
+
return { ok: true, recipeId };
|
|
16521
|
+
};
|
|
16522
|
+
|
|
16285
16523
|
// src/inspiredesign/reference-discovery.ts
|
|
16286
16524
|
var normalizeHttpUrl = (value) => {
|
|
16287
16525
|
try {
|
|
@@ -19465,8 +19703,18 @@ var normalizeInspiredesignInput = (input) => {
|
|
|
19465
19703
|
if (query && input.harvest !== true) {
|
|
19466
19704
|
throw new Error("Inspiredesign workflow query is only supported when harvest is true.");
|
|
19467
19705
|
}
|
|
19468
|
-
|
|
19469
|
-
|
|
19706
|
+
const canonicality = validateProviderScopedUrlCanonicality({ providers, urls });
|
|
19707
|
+
if (!canonicality.ok) {
|
|
19708
|
+
throw new Error(`Inspiredesign workflow ${canonicality.message}`);
|
|
19709
|
+
}
|
|
19710
|
+
if (requiresProviderUrlSiteRecipeCompatibility({ providers, urls, query })) {
|
|
19711
|
+
if (input.harvest !== true) {
|
|
19712
|
+
throw new Error("Inspiredesign workflow providers require query unless harvest uses compatible URL recovery.");
|
|
19713
|
+
}
|
|
19714
|
+
const compatibility = validateProviderUrlSiteRecipeCompatibility({ providers, urls });
|
|
19715
|
+
if (!compatibility.ok) {
|
|
19716
|
+
throw new Error(`Inspiredesign workflow ${compatibility.message}`);
|
|
19717
|
+
}
|
|
19470
19718
|
}
|
|
19471
19719
|
if (input.harvest === true && !query && urls.length === 0) {
|
|
19472
19720
|
throw new Error("Inspiredesign harvest requires query or URL references.");
|
|
@@ -19656,6 +19904,27 @@ var capMixedInspiredesignDiscovery = (siteDiscovery, standardDiscovery, maxRefer
|
|
|
19656
19904
|
rejected: [...siteDiscovery.rejected, ...standardDiscovery.rejected]
|
|
19657
19905
|
};
|
|
19658
19906
|
};
|
|
19907
|
+
var filterStandardDiscoveryForSiteRecipe = (siteRecipe, discovery) => {
|
|
19908
|
+
if (siteRecipe.id !== "social/pinterest") return discovery;
|
|
19909
|
+
const accepted = [];
|
|
19910
|
+
const rejected = [...discovery.rejected];
|
|
19911
|
+
discovery.accepted.forEach((candidate) => {
|
|
19912
|
+
if (!isNonCanonicalPinterestLikeUrl(candidate.url)) {
|
|
19913
|
+
accepted.push(candidate);
|
|
19914
|
+
return;
|
|
19915
|
+
}
|
|
19916
|
+
rejected.push({
|
|
19917
|
+
status: "rejected",
|
|
19918
|
+
reason: "invalid_url",
|
|
19919
|
+
rawUrl: candidate.url,
|
|
19920
|
+
...candidate.title ? { title: candidate.title } : {},
|
|
19921
|
+
source: candidate.source,
|
|
19922
|
+
provider: candidate.provider,
|
|
19923
|
+
rank: candidate.rank
|
|
19924
|
+
});
|
|
19925
|
+
});
|
|
19926
|
+
return { accepted, rejected };
|
|
19927
|
+
};
|
|
19659
19928
|
var discoverInspiredesignReferences = async (runtime, workflowInput, envelope, timeoutMs) => {
|
|
19660
19929
|
if (!workflowInput.query) {
|
|
19661
19930
|
return emptyInspiredesignDiscoveryDiagnostics(workflowInput, typeof runtime.search === "function");
|
|
@@ -19700,7 +19969,10 @@ var discoverInspiredesignReferences = async (runtime, workflowInput, envelope, t
|
|
|
19700
19969
|
}
|
|
19701
19970
|
);
|
|
19702
19971
|
const searchFailures = searchResult2.failures.length > 0 ? searchResult2.failures : failureFromInspiredesignDiscoveryError({ ...workflowInput, providers: standardProviderIds }, searchResult2.error);
|
|
19703
|
-
const discovery3 =
|
|
19972
|
+
const discovery3 = filterStandardDiscoveryForSiteRecipe(
|
|
19973
|
+
siteRecipe,
|
|
19974
|
+
normalizeInspiredesignDiscoveryRecords(searchResult2.records)
|
|
19975
|
+
);
|
|
19704
19976
|
const siteResult2 = await runSiteRecipeDiscovery();
|
|
19705
19977
|
const siteDiscovery = normalizeInspiredesignDiscoveryRecords(siteResult2.records);
|
|
19706
19978
|
const combinedDiscovery = capMixedInspiredesignDiscovery(
|
|
@@ -21539,7 +21811,10 @@ var runInspiredesignWorkflow = async (runtime, input, options = {}) => {
|
|
|
21539
21811
|
visualEvidence: packet.visualEvidence,
|
|
21540
21812
|
screenshotIndex: packet.screenshotIndex,
|
|
21541
21813
|
rankedReferences: packet.rankedReferences,
|
|
21542
|
-
referencePatternBoard:
|
|
21814
|
+
referencePatternBoard: buildInspiredesignRankedArtifactPatternBoard(
|
|
21815
|
+
packet.generationPlan.referencePatternBoard,
|
|
21816
|
+
packet.referencePatternBoard
|
|
21817
|
+
),
|
|
21543
21818
|
metaPromptMarkdown: packet.metaPromptMarkdown,
|
|
21544
21819
|
nextStepGuidance,
|
|
21545
21820
|
meta: metaWithGuidance
|
|
@@ -24346,6 +24621,8 @@ var mergeBudgets = (base, partial) => {
|
|
|
24346
24621
|
};
|
|
24347
24622
|
|
|
24348
24623
|
export {
|
|
24624
|
+
WORKFLOW_ARTIFACT_DIRECTORY,
|
|
24625
|
+
resolveWorkflowArtifactRoot,
|
|
24349
24626
|
CHALLENGE_AUTOMATION_MODES,
|
|
24350
24627
|
isChallengeAutomationMode,
|
|
24351
24628
|
resolveChallengeAutomationPolicy,
|
|
@@ -24399,8 +24676,6 @@ export {
|
|
|
24399
24676
|
createShoppingProviders,
|
|
24400
24677
|
createShoppingProviderById,
|
|
24401
24678
|
createWebProvider,
|
|
24402
|
-
WORKFLOW_ARTIFACT_DIRECTORY,
|
|
24403
|
-
resolveWorkflowArtifactRoot,
|
|
24404
24679
|
resolveTimebox,
|
|
24405
24680
|
isWithinTimebox,
|
|
24406
24681
|
filterByTimebox,
|
|
@@ -24410,6 +24685,9 @@ export {
|
|
|
24410
24685
|
renderResearch,
|
|
24411
24686
|
renderShopping,
|
|
24412
24687
|
renderInspiredesign,
|
|
24688
|
+
requiresProviderUrlSiteRecipeCompatibility,
|
|
24689
|
+
validateProviderScopedUrlCanonicality,
|
|
24690
|
+
validateProviderUrlSiteRecipeCompatibility,
|
|
24413
24691
|
resolveInspiredesignCaptureMode,
|
|
24414
24692
|
workflowTestUtils,
|
|
24415
24693
|
runResearchWorkflow,
|
|
@@ -24421,4 +24699,4 @@ export {
|
|
|
24421
24699
|
createProviderRuntime,
|
|
24422
24700
|
createDefaultRuntime
|
|
24423
24701
|
};
|
|
24424
|
-
//# sourceMappingURL=chunk-
|
|
24702
|
+
//# sourceMappingURL=chunk-5FDXH4CS.js.map
|