studiograph 1.3.48-next.218 → 1.3.48-next.219
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/admin/migrate-assets.js +1 -1
- package/dist/cli/commands/admin/migrate-assets.js.map +1 -1
- package/dist/core/artifact-export.js +5 -12
- package/dist/core/artifact-export.js.map +1 -1
- package/dist/core/artifact-frame-selectors.d.ts +42 -0
- package/dist/core/artifact-frame-selectors.js +65 -0
- package/dist/core/artifact-frame-selectors.js.map +1 -0
- package/dist/mcp/tools.js +74 -7
- package/dist/mcp/tools.js.map +1 -1
- package/dist/services/artifact-render-export.js +2 -6
- package/dist/services/artifact-render-export.js.map +1 -1
- package/dist/services/asset-finalize-service.js +1 -1
- package/dist/services/asset-finalize-service.js.map +1 -1
- package/dist/services/asset-listing.js +5 -2
- package/dist/services/asset-listing.js.map +1 -1
- package/dist/services/assets/base.d.ts +8 -3
- package/dist/services/assets/base.js +50 -2
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/local.js +3 -3
- package/dist/services/assets/local.js.map +1 -1
- package/dist/services/assets/r2.js +3 -3
- package/dist/services/assets/r2.js.map +1 -1
- package/dist/web/_app/immutable/assets/{0.zdobpY5A.css → 0.CdGwrROa.css} +1 -1
- package/dist/web/_app/immutable/assets/6.BLWoSeAD.css +1 -0
- package/dist/web/_app/immutable/assets/AssetLibraryPicker.5kCFSep0.css +1 -0
- package/dist/web/_app/immutable/assets/GridCell.Qb1eHKVF.css +1 -0
- package/dist/web/_app/immutable/assets/{inline-list.cqga56xT.css → inline-list.BNJWgLVw.css} +1 -1
- package/dist/web/_app/immutable/chunks/{Dg0AKBjg2.js → 0x9cTb9t2.js} +1 -1
- package/dist/web/_app/immutable/chunks/3WUkxtr0.js +1 -0
- package/dist/web/_app/immutable/chunks/{Ckuco_2b.js → 5-ZHglBe.js} +1 -1
- package/dist/web/_app/immutable/chunks/{vhC5Jy3I.js → 5709NBkH.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CbLO-N0U2.js → 669KOTM12.js} +2 -2
- package/dist/web/_app/immutable/chunks/AhE-kMOH.js +2 -0
- package/dist/web/_app/immutable/chunks/{nx1gFFg8.js → B2yEoero.js} +1 -1
- package/dist/web/_app/immutable/chunks/{ptjoRy3M.js → B4Hq1Mrm.js} +1 -1
- package/dist/web/_app/immutable/chunks/{B1W8XDtx.js → B4fk0_el.js} +1 -2
- package/dist/web/_app/immutable/chunks/{CiWxewf5.js → B8eK49fl.js} +1 -1
- package/dist/web/_app/immutable/chunks/BADsuH_f.js +1 -0
- package/dist/web/_app/immutable/chunks/BCDNTBNx.js +1 -0
- package/dist/web/_app/immutable/chunks/BE66xLsE.js +1 -0
- package/dist/web/_app/immutable/chunks/BHdkxQJT.js +1 -0
- package/dist/web/_app/immutable/chunks/BQ-N30Yp.js +1 -0
- package/dist/web/_app/immutable/chunks/BV3B8RXJ.js +1 -0
- package/dist/web/_app/immutable/chunks/{BJlxhEoD.js → BVUtKMul.js} +1 -1
- package/dist/web/_app/immutable/chunks/B_9vA1oT.js +1 -0
- package/dist/web/_app/immutable/chunks/B_c1fl31.js +1 -0
- package/dist/web/_app/immutable/chunks/B_oCV_HW.js +1 -0
- package/dist/web/_app/immutable/chunks/{BDsB8d3q.js → BapkUfka.js} +1 -1
- package/dist/web/_app/immutable/chunks/BiKWMbZr.js +8 -0
- package/dist/web/_app/immutable/chunks/{BR9ccr4m.js → Bio9K_HF.js} +1 -1
- package/dist/web/_app/immutable/chunks/BjuJM6rX.js +1 -0
- package/dist/web/_app/immutable/chunks/{1rZqB7hB.js → C2Dn6P7Z.js} +1 -1
- package/dist/web/_app/immutable/chunks/C9wPARwC.js +1 -0
- package/dist/web/_app/immutable/chunks/CI5eQLbe2.js +2 -0
- package/dist/web/_app/immutable/chunks/{C2ap5t26.js → CIO3oeXF.js} +1 -1
- package/dist/web/_app/immutable/chunks/{cqUU7CSz.js → CKMUPodH.js} +1 -1
- package/dist/web/_app/immutable/chunks/{Su2XO11t2.js → CLLcz7RG2.js} +1 -1
- package/dist/web/_app/immutable/chunks/CLOpZp3O.js +1 -0
- package/dist/web/_app/immutable/chunks/{C8CY4UOj.js → COIwtD-v.js} +3 -3
- package/dist/web/_app/immutable/chunks/CP9N8Fc9.js +1 -0
- package/dist/web/_app/immutable/chunks/CRAEjSkx2.js +1 -0
- package/dist/web/_app/immutable/chunks/CRO6mfRa.js +5 -0
- package/dist/web/_app/immutable/chunks/{CIouGziG.js → CfXJeylV.js} +1 -1
- package/dist/web/_app/immutable/chunks/{Bg2u3sit.js → CfpmkK4T.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DSURKQlq.js → CmpeF3Ju.js} +1 -1
- package/dist/web/_app/immutable/chunks/Cs6t-ixc.js +2 -0
- package/dist/web/_app/immutable/chunks/CsTK5WAk.js +1 -0
- package/dist/web/_app/immutable/chunks/{C_35QPUq2.js → D0i18s_f2.js} +1 -1
- package/dist/web/_app/immutable/chunks/{C_YXWOpP2.js → D2TW7sw82.js} +1 -1
- package/dist/web/_app/immutable/chunks/{B2JaS3Yd2.js → D2uuE6lp2.js} +1 -1
- package/dist/web/_app/immutable/chunks/D5Nx6OBM.js +1 -0
- package/dist/web/_app/immutable/chunks/D6tNSdqd2.js +1 -0
- package/dist/web/_app/immutable/chunks/{XcLU9zjm.js → DA3HEX3X.js} +1 -1
- package/dist/web/_app/immutable/chunks/DCw90lKP.js +2 -0
- package/dist/web/_app/immutable/chunks/{Dy2JCcUb.js → DFDg1NqS.js} +3 -3
- package/dist/web/_app/immutable/chunks/{Dzv-mIb32.js → DHIHsCUp2.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DG2mK6QI2.js → DOtHqjWV2.js} +1 -1
- package/dist/web/_app/immutable/chunks/{V_udsqeV.js → DT-C23Yk.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DiJ8_Zwm.js → DUQJ-qDF.js} +1 -1
- package/dist/web/_app/immutable/chunks/{es4c-7If2.js → DV7ywHP62.js} +1 -1
- package/dist/web/_app/immutable/chunks/DY4CNlzp.js +1 -0
- package/dist/web/_app/immutable/chunks/{BSAWGo3f2.js → D_uT5ACn2.js} +2 -2
- package/dist/web/_app/immutable/chunks/{CU2XB__q.js → Da2gd2m5.js} +1 -1
- package/dist/web/_app/immutable/chunks/{5_AZ__A22.js → DbcE1lZm2.js} +1 -1
- package/dist/web/_app/immutable/chunks/DirjMrLE.js +1 -0
- package/dist/web/_app/immutable/chunks/DkAEcieh.js +2 -0
- package/dist/web/_app/immutable/chunks/DlVx7JiC.js +6 -0
- package/dist/web/_app/immutable/chunks/{Dxz8K2yg.js → Dq7Sf_Wg.js} +1 -1
- package/dist/web/_app/immutable/chunks/DrZMu37z.js +1 -0
- package/dist/web/_app/immutable/chunks/DrqT76JD.js +1 -0
- package/dist/web/_app/immutable/chunks/{Cp300oQP2.js → DsSLvEPV2.js} +2 -2
- package/dist/web/_app/immutable/chunks/Dvw9eJwQ2.js +703 -0
- package/dist/web/_app/immutable/chunks/{BUC7AiTR.js → Dzj6EZcI.js} +1 -1
- package/dist/web/_app/immutable/chunks/E-8zKCFu.js +1 -0
- package/dist/web/_app/immutable/chunks/{jsCGHTOL.js → HByKAcP4.js} +1 -1
- package/dist/web/_app/immutable/chunks/{BLHOS1xy2.js → LyCWEn6z2.js} +1 -1
- package/dist/web/_app/immutable/chunks/OOG_vqkb.js +1 -0
- package/dist/web/_app/immutable/chunks/{Bhn97K2P.js → byAvLRUp.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CEzE0HR6.js → c1QZOscj.js} +2 -2
- package/dist/web/_app/immutable/chunks/elDMEPuQ.js +1 -0
- package/dist/web/_app/immutable/chunks/{mJ0zwK0U.js → jwO34NE_.js} +2 -2
- package/dist/web/_app/immutable/chunks/lROhorp_2.js +7 -0
- package/dist/web/_app/immutable/entry/app.Qcmt_5k3.js +2 -0
- package/dist/web/_app/immutable/entry/start.JwwosXwB.js +1 -0
- package/dist/web/_app/immutable/nodes/0.BpeUiuto.js +2 -0
- package/dist/web/_app/immutable/nodes/{1.hphDgSza.js → 1.bmjWBxcl.js} +1 -1
- package/dist/web/_app/immutable/nodes/{10.-VGJAgUF.js → 10.B_VNfwMf.js} +1 -1
- package/dist/web/_app/immutable/nodes/{11.CIcPnDnc.js → 11.hItfW6qt.js} +1 -1
- package/dist/web/_app/immutable/nodes/{12.sNyiO-Cy.js → 12.DTxj3srF.js} +1 -1
- package/dist/web/_app/immutable/nodes/{13.mlCuUABy.js → 13.apGFDUX8.js} +1 -1
- package/dist/web/_app/immutable/nodes/{15.BCtkizTs.js → 15.BORjZH6I.js} +1 -1
- package/dist/web/_app/immutable/nodes/{16.BAMfQi48.js → 16.BiT3-n2j.js} +1 -1
- package/dist/web/_app/immutable/nodes/{17.DUcTtp8X.js → 17.BA1A_DcP.js} +1 -1
- package/dist/web/_app/immutable/nodes/{18.CsQA_Z5r.js → 18.CLrcT2sE.js} +1 -1
- package/dist/web/_app/immutable/nodes/{2.CHs0LISt.js → 2.BXWCou4r.js} +4 -4
- package/dist/web/_app/immutable/nodes/3.DIjVLMUT.js +6 -0
- package/dist/web/_app/immutable/nodes/4.D19y99aM.js +11 -0
- package/dist/web/_app/immutable/nodes/{5.DxJ-ca6K.js → 5.mvuNFOyu.js} +1 -1
- package/dist/web/_app/immutable/nodes/6.ZBX17opf.js +6 -0
- package/dist/web/_app/immutable/nodes/{7.BCwL6BP4.js → 7.BS674z4m.js} +1 -1
- package/dist/web/_app/immutable/nodes/{8.DqUXSEot.js → 8.Uu2eS8JW.js} +1 -1
- package/dist/web/_app/immutable/nodes/{9.CXyZBd2f.js → 9.DRbW_ONq.js} +1 -1
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +17 -19
- package/package.json +1 -1
- package/dist/core/field-library.d.ts +0 -62
- package/dist/core/field-library.js +0 -129
- package/dist/core/field-library.js.map +0 -1
- package/dist/mcp/comment-virtual-entity.d.ts +0 -36
- package/dist/mcp/comment-virtual-entity.js +0 -71
- package/dist/mcp/comment-virtual-entity.js.map +0 -1
- package/dist/server/routes/field-library-api.d.ts +0 -28
- package/dist/server/routes/field-library-api.js +0 -126
- package/dist/server/routes/field-library-api.js.map +0 -1
- package/dist/services/asset-upload-service.d.ts +0 -56
- package/dist/services/asset-upload-service.js +0 -200
- package/dist/services/asset-upload-service.js.map +0 -1
- package/dist/web/_app/immutable/assets/6.8DITAz6q.css +0 -1
- package/dist/web/_app/immutable/assets/AssetLibraryPicker.BOFW0MvF.css +0 -1
- package/dist/web/_app/immutable/assets/GridCell.Box4DRM7.css +0 -1
- package/dist/web/_app/immutable/chunks/-4M4pI36.js +0 -2
- package/dist/web/_app/immutable/chunks/B6PQUbwI.js +0 -1
- package/dist/web/_app/immutable/chunks/B8hQ1anh.js +0 -1
- package/dist/web/_app/immutable/chunks/B9vBS3Cg.js +0 -1
- package/dist/web/_app/immutable/chunks/BZ8V_ZF1.js +0 -1
- package/dist/web/_app/immutable/chunks/BqVsZELu.js +0 -2
- package/dist/web/_app/immutable/chunks/Byhopala.js +0 -1
- package/dist/web/_app/immutable/chunks/C7WuWTsh.js +0 -1
- package/dist/web/_app/immutable/chunks/CCl_51cs.js +0 -1
- package/dist/web/_app/immutable/chunks/CIMQ3fjR.js +0 -1
- package/dist/web/_app/immutable/chunks/CJnlkE5I.js +0 -8
- package/dist/web/_app/immutable/chunks/CK4Nv938.js +0 -1
- package/dist/web/_app/immutable/chunks/CMpgBkhu.js +0 -1
- package/dist/web/_app/immutable/chunks/CNClHfhj.js +0 -1
- package/dist/web/_app/immutable/chunks/CSbFN36R.js +0 -1
- package/dist/web/_app/immutable/chunks/CYxbGkW1.js +0 -1
- package/dist/web/_app/immutable/chunks/CZaz-uIW2.js +0 -2
- package/dist/web/_app/immutable/chunks/ClFlcGK8.js +0 -1
- package/dist/web/_app/immutable/chunks/CnIJedXy.js +0 -2
- package/dist/web/_app/immutable/chunks/CwZT8Vh32.js +0 -7
- package/dist/web/_app/immutable/chunks/CyWCZOAO.js +0 -1
- package/dist/web/_app/immutable/chunks/D3QYCtln.js +0 -1
- package/dist/web/_app/immutable/chunks/D6P0eqhA.js +0 -1
- package/dist/web/_app/immutable/chunks/DNDwN3KV.js +0 -2
- package/dist/web/_app/immutable/chunks/DTh_hmEw2.js +0 -662
- package/dist/web/_app/immutable/chunks/DU7TXC0-.js +0 -1
- package/dist/web/_app/immutable/chunks/Dae4E9_w.js +0 -1
- package/dist/web/_app/immutable/chunks/Db65IR8b.js +0 -1
- package/dist/web/_app/immutable/chunks/DnR05sD4.js +0 -1
- package/dist/web/_app/immutable/chunks/GfBknz5R.js +0 -1
- package/dist/web/_app/immutable/chunks/M2OQNqj5.js +0 -1
- package/dist/web/_app/immutable/chunks/Mcs3bjP1.js +0 -5
- package/dist/web/_app/immutable/chunks/NVmayBBw.js +0 -1
- package/dist/web/_app/immutable/chunks/StSGhX-d2.js +0 -1
- package/dist/web/_app/immutable/chunks/UZABStSZ2.js +0 -1
- package/dist/web/_app/immutable/chunks/UeSyIbz22.js +0 -2
- package/dist/web/_app/immutable/chunks/VKtbttjd2.js +0 -1
- package/dist/web/_app/immutable/chunks/YCz51d-b.js +0 -6
- package/dist/web/_app/immutable/entry/app.C8V8pJux.js +0 -2
- package/dist/web/_app/immutable/entry/start.tnuHARwR.js +0 -1
- package/dist/web/_app/immutable/nodes/0.Dwap0d8o.js +0 -2
- package/dist/web/_app/immutable/nodes/3.DimALrCM.js +0 -6
- package/dist/web/_app/immutable/nodes/4.Bt6sOjw5.js +0 -11
- package/dist/web/_app/immutable/nodes/6.DyPAK7-T.js +0 -6
- /package/dist/web/_app/immutable/chunks/{BLs1h0Rh2.js → BLs1h0Rh.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{BzaxZ6j1.js → BzaxZ6j12.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{CWKmhwV0.js → CWKmhwV02.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{D0rBhnqB.js → D0rBhnqB2.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{DDbpVNi0.js → DDbpVNi02.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{hG-QCarB2.js → hG-QCarB.js} +0 -0
|
@@ -80,7 +80,7 @@ export async function runAssetMigration(deps) {
|
|
|
80
80
|
const ctype = detectContentType(filename);
|
|
81
81
|
assetIndex.put({
|
|
82
82
|
assetId, repo: repo.name, ownerType: ref.type, ownerId: ref.id,
|
|
83
|
-
filename, contentType: ctype, mediaType: getMediaType(ctype), name: filename,
|
|
83
|
+
filename, contentType: ctype, mediaType: getMediaType(ctype, filename), name: filename,
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
content = content.split(ref.url).join(publicUrlForAssetId(assetId, filename));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-assets.js","sourceRoot":"","sources":["../../../../src/cli/commands/admin/migrate-assets.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"migrate-assets.js","sourceRoot":"","sources":["../../../../src/cli/commands/admin/migrate-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { encodeBase64, escapeAttribute, escapeHtml, escapeScript, escapeStyle, } from './artifact-escape.js';
|
|
2
2
|
import { appendAssetToken } from './artifact-asset-urls.js';
|
|
3
|
+
import { frameStepperSelector, frameStepperVisibilityCss } from './artifact-frame-selectors.js';
|
|
3
4
|
function stripNetworkAssetTags(html) {
|
|
4
5
|
return html
|
|
5
6
|
.replace(/<link\b(?=[^>]*\brel\s*=\s*(?:"[^"]*\bstylesheet\b[^"]*"|'[^']*\bstylesheet\b[^']*'|[^\s>]*stylesheet[^\s>]*))[^>]*>/gi, '')
|
|
@@ -144,9 +145,9 @@ function standaloneFullscreenRuntimeTags(bundle, options) {
|
|
|
144
145
|
const stepper = options.context === 'fullscreen' ? bundle.display?.controls?.stepper : null;
|
|
145
146
|
if (!stepper)
|
|
146
147
|
return '';
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
// Same fallback chain as the in-app runtime + render/export paths — a deck
|
|
149
|
+
// that steps in fullscreen must step identically in its downloaded HTML.
|
|
150
|
+
const selector = frameStepperSelector(stepper.selector);
|
|
150
151
|
return `<script data-artifact-standalone-runtime>
|
|
151
152
|
(() => {
|
|
152
153
|
const selector = ${JSON.stringify(selector)};
|
|
@@ -364,15 +365,7 @@ html[data-artifact-context="fullscreen"][data-artifact-stepper="true"] [data-art
|
|
|
364
365
|
background: transparent !important;
|
|
365
366
|
box-shadow: none !important;
|
|
366
367
|
}
|
|
367
|
-
html[data-artifact-context="fullscreen"][data-artifact-stepper="true"]
|
|
368
|
-
display: none !important;
|
|
369
|
-
position: absolute !important;
|
|
370
|
-
inset: 0 auto auto 0 !important;
|
|
371
|
-
margin: 0 !important;
|
|
372
|
-
}
|
|
373
|
-
html[data-artifact-context="fullscreen"][data-artifact-stepper="true"] [data-artifact-frame][data-studiograph-active-frame] {
|
|
374
|
-
display: block !important;
|
|
375
|
-
}
|
|
368
|
+
${frameStepperVisibilityCss(frameStepperSelector(bundle.display?.controls?.stepper?.selector), 'html[data-artifact-context="fullscreen"][data-artifact-stepper="true"]')}
|
|
376
369
|
`
|
|
377
370
|
: '';
|
|
378
371
|
const pagedFullscreen = bundle.viewport.mode === 'paged'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-export.js","sourceRoot":"","sources":["../../src/core/artifact-export.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"artifact-export.js","sourceRoot":"","sources":["../../src/core/artifact-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact frame-selector roles — the single source of truth.
|
|
3
|
+
*
|
|
4
|
+
* Frames are detected by CSS selector in three distinct ROLES. They are
|
|
5
|
+
* deliberately not one constant: the stepper/export role includes bare
|
|
6
|
+
* `.slide` (defense-in-depth for decks authored before the
|
|
7
|
+
* `data-artifact-frame` contract), while the selection role excludes it so
|
|
8
|
+
* arbitrary `.slide`-classed elements never become selection frames.
|
|
9
|
+
*
|
|
10
|
+
* - STEPPER: which elements page in fullscreen/present and in the
|
|
11
|
+
* standalone export runtime. Honors the bundle's explicit
|
|
12
|
+
* `display.controls.stepper.selector` override.
|
|
13
|
+
* - EXPORT: which elements become per-frame screenshots/PDF pages in the
|
|
14
|
+
* Playwright render path. Same chain as STEPPER (one frame vocabulary
|
|
15
|
+
* across present + export).
|
|
16
|
+
* - SELECTION: which ancestors count as the containing frame when
|
|
17
|
+
* attributing an element selection in the editor canvas.
|
|
18
|
+
*/
|
|
19
|
+
export declare const FRAME_STEPPER_FALLBACK_SELECTOR = "[data-artifact-frame], [data-artifact-page], [data-artifact-slide], .slide, .page";
|
|
20
|
+
export declare const FRAME_EXPORT_FALLBACK_SELECTOR = "[data-artifact-frame], [data-artifact-page], [data-artifact-slide], .slide, .page";
|
|
21
|
+
export declare const FRAME_SELECTION_SELECTOR = "[data-artifact-frame],[data-artifact-page],[data-artifact-slide],.page";
|
|
22
|
+
/** Resolve the stepper/export selector: a non-empty explicit override wins,
|
|
23
|
+
* anything else (undefined, empty, whitespace) falls back to the shared
|
|
24
|
+
* chain. Centralizes the trim/empty handling that previously differed
|
|
25
|
+
* between call sites. */
|
|
26
|
+
export declare function frameStepperSelector(explicit?: unknown): string;
|
|
27
|
+
/**
|
|
28
|
+
* Fullscreen/present hide-show CSS for stepper frames, generated from the
|
|
29
|
+
* RESOLVED stepper selector. The stepper JS detects frames via this selector,
|
|
30
|
+
* so the CSS that hides inactive frames must target the same elements — a
|
|
31
|
+
* hardcoded `[data-artifact-frame]` rule next to a broader detection chain
|
|
32
|
+
* left `.slide`/`.page`/explicit-selector decks advancing their counter while
|
|
33
|
+
* every frame stayed visible.
|
|
34
|
+
*
|
|
35
|
+
* The active frame wins by appending `[data-studiograph-active-frame]` to each
|
|
36
|
+
* branch (one attribute of extra specificity beats the hide rule regardless of
|
|
37
|
+
* rule order, including id-bearing explicit selectors). Limitations, by
|
|
38
|
+
* design: top-level comma splitting only (commas inside `:is()`/`:not()` are
|
|
39
|
+
* not supported in stepper selectors), and branches containing CSS-invalid
|
|
40
|
+
* `<>{}` characters are dropped defensively.
|
|
41
|
+
*/
|
|
42
|
+
export declare function frameStepperVisibilityCss(selector: string, scope: string): string;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact frame-selector roles — the single source of truth.
|
|
3
|
+
*
|
|
4
|
+
* Frames are detected by CSS selector in three distinct ROLES. They are
|
|
5
|
+
* deliberately not one constant: the stepper/export role includes bare
|
|
6
|
+
* `.slide` (defense-in-depth for decks authored before the
|
|
7
|
+
* `data-artifact-frame` contract), while the selection role excludes it so
|
|
8
|
+
* arbitrary `.slide`-classed elements never become selection frames.
|
|
9
|
+
*
|
|
10
|
+
* - STEPPER: which elements page in fullscreen/present and in the
|
|
11
|
+
* standalone export runtime. Honors the bundle's explicit
|
|
12
|
+
* `display.controls.stepper.selector` override.
|
|
13
|
+
* - EXPORT: which elements become per-frame screenshots/PDF pages in the
|
|
14
|
+
* Playwright render path. Same chain as STEPPER (one frame vocabulary
|
|
15
|
+
* across present + export).
|
|
16
|
+
* - SELECTION: which ancestors count as the containing frame when
|
|
17
|
+
* attributing an element selection in the editor canvas.
|
|
18
|
+
*/
|
|
19
|
+
export const FRAME_STEPPER_FALLBACK_SELECTOR = '[data-artifact-frame], [data-artifact-page], [data-artifact-slide], .slide, .page';
|
|
20
|
+
export const FRAME_EXPORT_FALLBACK_SELECTOR = FRAME_STEPPER_FALLBACK_SELECTOR;
|
|
21
|
+
export const FRAME_SELECTION_SELECTOR = '[data-artifact-frame],[data-artifact-page],[data-artifact-slide],.page';
|
|
22
|
+
/** Resolve the stepper/export selector: a non-empty explicit override wins,
|
|
23
|
+
* anything else (undefined, empty, whitespace) falls back to the shared
|
|
24
|
+
* chain. Centralizes the trim/empty handling that previously differed
|
|
25
|
+
* between call sites. */
|
|
26
|
+
export function frameStepperSelector(explicit) {
|
|
27
|
+
if (typeof explicit === 'string' && explicit.trim())
|
|
28
|
+
return explicit.trim();
|
|
29
|
+
return FRAME_STEPPER_FALLBACK_SELECTOR;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Fullscreen/present hide-show CSS for stepper frames, generated from the
|
|
33
|
+
* RESOLVED stepper selector. The stepper JS detects frames via this selector,
|
|
34
|
+
* so the CSS that hides inactive frames must target the same elements — a
|
|
35
|
+
* hardcoded `[data-artifact-frame]` rule next to a broader detection chain
|
|
36
|
+
* left `.slide`/`.page`/explicit-selector decks advancing their counter while
|
|
37
|
+
* every frame stayed visible.
|
|
38
|
+
*
|
|
39
|
+
* The active frame wins by appending `[data-studiograph-active-frame]` to each
|
|
40
|
+
* branch (one attribute of extra specificity beats the hide rule regardless of
|
|
41
|
+
* rule order, including id-bearing explicit selectors). Limitations, by
|
|
42
|
+
* design: top-level comma splitting only (commas inside `:is()`/`:not()` are
|
|
43
|
+
* not supported in stepper selectors), and branches containing CSS-invalid
|
|
44
|
+
* `<>{}` characters are dropped defensively.
|
|
45
|
+
*/
|
|
46
|
+
export function frameStepperVisibilityCss(selector, scope) {
|
|
47
|
+
const branches = selector
|
|
48
|
+
.split(',')
|
|
49
|
+
.map((branch) => branch.trim())
|
|
50
|
+
.filter((branch) => branch && !/[<>{}]/.test(branch));
|
|
51
|
+
if (branches.length === 0)
|
|
52
|
+
return '';
|
|
53
|
+
const hide = branches.map((branch) => `${scope} ${branch}`).join(',\n');
|
|
54
|
+
const show = branches.map((branch) => `${scope} ${branch}[data-studiograph-active-frame]`).join(',\n');
|
|
55
|
+
return `${hide} {
|
|
56
|
+
display: none !important;
|
|
57
|
+
position: absolute !important;
|
|
58
|
+
inset: 0 auto auto 0 !important;
|
|
59
|
+
margin: 0 !important;
|
|
60
|
+
}
|
|
61
|
+
${show} {
|
|
62
|
+
display: block !important;
|
|
63
|
+
}`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=artifact-frame-selectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-frame-selectors.js","sourceRoot":"","sources":["../../src/core/artifact-frame-selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,mFAAmF,CAAC;AAEtF,MAAM,CAAC,MAAM,8BAA8B,GAAG,+BAA+B,CAAC;AAE9E,MAAM,CAAC,MAAM,wBAAwB,GACnC,wEAAwE,CAAC;AAE3E;;;0BAG0B;AAC1B,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5E,OAAO,+BAA+B,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,KAAa;IACvE,MAAM,QAAQ,GAAG,QAAQ;SACtB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,iCAAiC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvG,OAAO,GAAG,IAAI;;;;;;EAMd,IAAI;;EAEJ,CAAC;AACH,CAAC"}
|
package/dist/mcp/tools.js
CHANGED
|
@@ -24,7 +24,9 @@ import { join } from 'path';
|
|
|
24
24
|
import { isCuratedEntityType } from '../core/entity-types-catalog.js';
|
|
25
25
|
import { getAgentAllowedEntityTypes } from '../agent/prompts/entity-types-section.js';
|
|
26
26
|
import * as commentVirtualEntity from '../services/comment-virtual-entity.js';
|
|
27
|
-
import { buildActor, prepareCreatePayload, prepareUpdatePayload, diagnosedUpdate, DroppedAssetError, assertEntityRefs, applyPatchEntity, } from '../services/entity-mutations.js';
|
|
27
|
+
import { buildActor, prepareCreatePayload, prepareUpdatePayload, diagnosedUpdate, DroppedAssetError, assertEntityRefs, applyPatchEntity, bodyRevisionHash, } from '../services/entity-mutations.js';
|
|
28
|
+
import { StaleBaseRevisionError } from '../core/graph.js';
|
|
29
|
+
import { hashArtifactBody } from '../agent/tools/artifact-tools.js';
|
|
28
30
|
import { BridgeError, validateUserHandleInPayload, assertCanChangeUserHandle } from '../services/user-person-bridge.js';
|
|
29
31
|
import { extractAssetEmbeds, stripFrontmatter, assetEmbed } from '../core/embeds.js';
|
|
30
32
|
import { listRepoAssets, listWorkspaceAssets } from '../services/asset-listing.js';
|
|
@@ -159,6 +161,27 @@ function slugifyArtifactId(source) {
|
|
|
159
161
|
.slice(0, 80);
|
|
160
162
|
return slug || 'artifact';
|
|
161
163
|
}
|
|
164
|
+
/** Whether a bundle's entrypoint document is empty/whitespace (a blank canvas
|
|
165
|
+
* stub, or a truncated tool-input stream). Mirrors the in-app rule in
|
|
166
|
+
* chat.ts's persistArtifactFromChat — Phase 4's ArtifactStore unifies both. */
|
|
167
|
+
function bundleEntrypointBlank(bundle) {
|
|
168
|
+
const entry = bundle.files[bundle.entrypoint];
|
|
169
|
+
return typeof entry !== 'string' || entry.trim().length === 0;
|
|
170
|
+
}
|
|
171
|
+
/** Whether a stored artifact body is a blank stub (valid bundle whose
|
|
172
|
+
* entrypoint has no content). Parse failures count as NON-blank — never treat
|
|
173
|
+
* unknown content as safely overwritable. */
|
|
174
|
+
function artifactBodyIsBlank(body) {
|
|
175
|
+
try {
|
|
176
|
+
const validation = validateArtifactBundle(JSON.parse(body));
|
|
177
|
+
if (!validation.ok || !validation.bundle)
|
|
178
|
+
return false;
|
|
179
|
+
return bundleEntrypointBlank(validation.bundle);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
162
185
|
function artifactFrontmatter(bundle, options = {}) {
|
|
163
186
|
const data = {
|
|
164
187
|
name: bundle.title,
|
|
@@ -424,6 +447,11 @@ export function registerTools(server, wm, authService, ctx) {
|
|
|
424
447
|
path: relPathOf(entity.path, graph.getRepoPath()),
|
|
425
448
|
data: entity.data,
|
|
426
449
|
content,
|
|
450
|
+
// Artifact entries: the staleness token for edits. Pass back to
|
|
451
|
+
// create_artifact as base_hash so an edit derived from this read
|
|
452
|
+
// fails loudly (instead of silently clobbering) if the artifact
|
|
453
|
+
// changed in between.
|
|
454
|
+
...(entity.entityType === 'artifact' ? { artifact_hash: hashArtifactBody(content) } : {}),
|
|
427
455
|
});
|
|
428
456
|
}
|
|
429
457
|
catch (err) {
|
|
@@ -733,16 +761,21 @@ export function registerTools(server, wm, authService, ctx) {
|
|
|
733
761
|
bundle: z.unknown().describe('ArtifactBundle object with schemaVersion, artifactId, title, kind, viewport, optional libraries (three, d3, motion), files, and entrypoint.'),
|
|
734
762
|
entity_id: z.string().optional().describe('Existing artifact entity id to update, or desired id for a new artifact. Defaults to a slug from bundle.artifactId/title.'),
|
|
735
763
|
folder_path: z.string().optional().describe('Repo-relative subfolder for a newly created artifact. Ignored when updating an existing artifact.'),
|
|
764
|
+
base_hash: z.string().optional().describe('REQUIRED when updating an artifact that already has content: the artifact_hash returned by get_entity for that entry. It detects that the artifact changed since you read it (your edit would silently overwrite someone else\'s) and fails with guidance instead of clobbering. Optional only when filling a blank artifact.'),
|
|
765
|
+
replace: z.boolean().optional().describe('Set true to intentionally overwrite a non-blank artifact with a blank bundle (clearing it). Without it, blanking a populated artifact is refused.'),
|
|
736
766
|
});
|
|
737
767
|
reg('create_artifact', {
|
|
738
768
|
description: 'Create or update a persisted sandboxed Artifact Canvas entry from an HTML/CSS/JS ArtifactBundle. ' +
|
|
739
769
|
'Use this for slide decks, documents, social graphics, prototypes, diagrams, small interactive tools, ' +
|
|
740
770
|
'artifacts using curated local libraries (three, d3, motion), and other visual outputs. ' +
|
|
741
771
|
'Validates the bundle, writes an artifact graph entry, commits to git, and ' +
|
|
742
|
-
'broadcasts the same live entity_change event as the web agent.'
|
|
772
|
+
'broadcasts the same live entity_change event as the web agent. ' +
|
|
773
|
+
'To EDIT an existing artifact: call get_entity first, modify the full bundle from its content, and pass ' +
|
|
774
|
+
'its artifact_hash back as base_hash (REQUIRED when the artifact already has content) — a concurrent ' +
|
|
775
|
+
'change is then detected instead of silently overwritten.',
|
|
743
776
|
inputSchema: createArtifactSchema,
|
|
744
777
|
}, async (args) => {
|
|
745
|
-
const { repo, bundle: rawBundle, entity_id, folder_path } = createArtifactSchema.parse(args);
|
|
778
|
+
const { repo, bundle: rawBundle, entity_id, folder_path, base_hash, replace } = createArtifactSchema.parse(args);
|
|
746
779
|
if (!hasRepoAccess(user, repo, wm, authService))
|
|
747
780
|
return notFound(repo);
|
|
748
781
|
if (!canWriteRepo(user, repo, wm, authService)) {
|
|
@@ -762,14 +795,13 @@ export function registerTools(server, wm, authService, ctx) {
|
|
|
762
795
|
try {
|
|
763
796
|
const preferredId = entity_id || slugifyArtifactId(bundle.artifactId || bundle.title);
|
|
764
797
|
let resolvedId = preferredId;
|
|
765
|
-
let existing =
|
|
798
|
+
let existing = null;
|
|
766
799
|
if (entity_id) {
|
|
767
800
|
try {
|
|
768
|
-
graph.get('artifact', preferredId);
|
|
769
|
-
existing = true;
|
|
801
|
+
existing = graph.get('artifact', preferredId);
|
|
770
802
|
}
|
|
771
803
|
catch {
|
|
772
|
-
existing =
|
|
804
|
+
existing = null;
|
|
773
805
|
}
|
|
774
806
|
}
|
|
775
807
|
else {
|
|
@@ -784,12 +816,44 @@ export function registerTools(server, wm, authService, ctx) {
|
|
|
784
816
|
}
|
|
785
817
|
}
|
|
786
818
|
}
|
|
819
|
+
// The caller asserted "this is an edit of the version I read"
|
|
820
|
+
// (base_hash) but the target no longer resolves — deleted, moved, or
|
|
821
|
+
// renamed since the read. Recreating it from a possibly stale copy
|
|
822
|
+
// would silently resurrect deleted content; fail loudly instead.
|
|
823
|
+
if (!existing && entity_id && base_hash) {
|
|
824
|
+
return fail(new Error(`Artifact "${entity_id}" no longer exists in "${repo}" (deleted or moved since you read it). Re-check with get_entity or search_entities before retrying — refusing to recreate it from a possibly stale copy.`));
|
|
825
|
+
}
|
|
787
826
|
if (existing) {
|
|
827
|
+
const liveBody = graph.getLiveBody('artifact', resolvedId) ?? existing.document.content;
|
|
828
|
+
const targetIsBlank = artifactBodyIsBlank(liveBody);
|
|
829
|
+
// Agent-protocol staleness rules (mirror the in-app create_artifact
|
|
830
|
+
// baseHash rules; Phase 4's ArtifactStore unifies both surfaces):
|
|
831
|
+
// 1. Updating an artifact that already has content REQUIRES the
|
|
832
|
+
// artifact_hash from get_entity — an edit not derived from a
|
|
833
|
+
// read would silently drop someone else's changes.
|
|
834
|
+
if (!targetIsBlank && !base_hash) {
|
|
835
|
+
return fail(new Error('This artifact already has content — call get_entity first and pass its artifact_hash as base_hash, so a concurrent change is detected instead of silently overwritten.'));
|
|
836
|
+
}
|
|
837
|
+
// 2. The hash must match the LIVE body (the same source get_entity
|
|
838
|
+
// hashed) — otherwise the edit was derived from an outdated read.
|
|
839
|
+
if (base_hash && base_hash !== hashArtifactBody(liveBody)) {
|
|
840
|
+
return fail(new Error('Artifact changed since you read it (base_hash mismatch). Call get_entity again, re-apply your change to the current source, then retry with the new artifact_hash.'));
|
|
841
|
+
}
|
|
842
|
+
// 3. A blank bundle over a populated artifact is almost always a
|
|
843
|
+
// truncated/failed generation, not an intentional clear.
|
|
844
|
+
if (!targetIsBlank && bundleEntrypointBlank(bundle) && !replace) {
|
|
845
|
+
return fail(new Error('The new bundle is blank but this artifact has content. Pass replace: true only if you intend to clear it.'));
|
|
846
|
+
}
|
|
847
|
+
// Write-time optimistic concurrency (mirrors the in-app rule): the
|
|
848
|
+
// coordinator verifies the DISK body still matches what we read
|
|
849
|
+
// here, so two racing whole-bundle writes can't both land — the
|
|
850
|
+
// loser gets a conflict instead of silently clobbering.
|
|
788
851
|
const options = prepareUpdatePayload({
|
|
789
852
|
entityType: 'artifact',
|
|
790
853
|
entityId: resolvedId,
|
|
791
854
|
data: updateData,
|
|
792
855
|
content: body,
|
|
856
|
+
baseRevision: bodyRevisionHash(existing.document.content),
|
|
793
857
|
}, actor);
|
|
794
858
|
const { entity, frontmatter_changed, content_changed, noop, broadcast } = await diagnosedUpdate(graph, options, { data: updateData, content: body });
|
|
795
859
|
emitEntityChange('updated', repo, entity.entityType, entity.id);
|
|
@@ -826,6 +890,9 @@ export function registerTools(server, wm, authService, ctx) {
|
|
|
826
890
|
});
|
|
827
891
|
}
|
|
828
892
|
catch (err) {
|
|
893
|
+
if (err instanceof StaleBaseRevisionError) {
|
|
894
|
+
return fail(new Error('Another write landed on this artifact while yours was in flight. Call get_entity to re-read the current source, re-apply your change, then retry passing its artifact_hash as base_hash.'));
|
|
895
|
+
}
|
|
829
896
|
return fail(err);
|
|
830
897
|
}
|
|
831
898
|
});
|