@multiplayer-app/sandbox 0.0.7 → 0.0.9
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/agents/content-generator.agent.d.ts +4 -0
- package/dist/agents/content-generator.agent.d.ts.map +1 -0
- package/dist/agents/content-generator.agent.js +41 -0
- package/dist/agents/content-generator.agent.js.map +1 -0
- package/dist/agents/html-generator.agent.d.ts +1 -3
- package/dist/agents/html-generator.agent.d.ts.map +1 -1
- package/dist/agents/html-generator.agent.js +4 -93
- package/dist/agents/html-generator.agent.js.map +1 -1
- package/dist/agents/markdown-generator.agent.d.ts.map +1 -1
- package/dist/agents/markdown-generator.agent.js +12 -10
- package/dist/agents/markdown-generator.agent.js.map +1 -1
- package/dist/agents/shared/content-generator-system-prompt.d.ts +3 -0
- package/dist/agents/shared/content-generator-system-prompt.d.ts.map +1 -0
- package/dist/agents/shared/content-generator-system-prompt.js +32 -0
- package/dist/agents/shared/content-generator-system-prompt.js.map +1 -0
- package/dist/agents/shared/get-session-artifact-content.tool.d.ts +7 -0
- package/dist/agents/shared/get-session-artifact-content.tool.d.ts.map +1 -0
- package/dist/agents/shared/get-session-artifact-content.tool.js +44 -0
- package/dist/agents/shared/get-session-artifact-content.tool.js.map +1 -0
- package/dist/agents/shared/list-session-artifact-paths.tool.d.ts +5 -0
- package/dist/agents/shared/list-session-artifact-paths.tool.d.ts.map +1 -0
- package/dist/agents/shared/list-session-artifact-paths.tool.js +37 -0
- package/dist/agents/shared/list-session-artifact-paths.tool.js.map +1 -0
- package/dist/agents/shared/publish-session-artifacts.tool.d.ts +1 -10
- package/dist/agents/shared/publish-session-artifacts.tool.d.ts.map +1 -1
- package/dist/agents/shared/publish-session-artifacts.tool.js +97 -81
- package/dist/agents/shared/publish-session-artifacts.tool.js.map +1 -1
- package/dist/agents/shared/update-session-artifacts.tool.d.ts +18 -0
- package/dist/agents/shared/update-session-artifacts.tool.d.ts.map +1 -0
- package/dist/agents/shared/update-session-artifacts.tool.js +146 -0
- package/dist/agents/shared/update-session-artifacts.tool.js.map +1 -0
- package/dist/agents/shared/validate-artifact-content.tools.d.ts +12 -0
- package/dist/agents/shared/validate-artifact-content.tools.d.ts.map +1 -0
- package/dist/agents/shared/validate-artifact-content.tools.js +131 -0
- package/dist/agents/shared/validate-artifact-content.tools.js.map +1 -0
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +2 -4
- package/dist/agents.js.map +1 -1
- package/dist/ai-agent.service.d.ts.map +1 -1
- package/dist/ai-agent.service.js +0 -2
- package/dist/ai-agent.service.js.map +1 -1
- package/dist/create-builder-api.d.ts +4 -0
- package/dist/create-builder-api.d.ts.map +1 -1
- package/dist/create-builder-api.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/chat-access.d.ts +19 -0
- package/dist/lib/chat-access.d.ts.map +1 -0
- package/dist/lib/chat-access.js +75 -0
- package/dist/lib/chat-access.js.map +1 -0
- package/dist/lib/list-user-chats.d.ts +22 -0
- package/dist/lib/list-user-chats.d.ts.map +1 -0
- package/dist/lib/list-user-chats.js +48 -0
- package/dist/lib/list-user-chats.js.map +1 -0
- package/dist/lib/session-artifacts/apply-hashline-edits.d.ts +3 -0
- package/dist/lib/session-artifacts/apply-hashline-edits.d.ts.map +1 -0
- package/dist/lib/session-artifacts/apply-hashline-edits.js +25 -0
- package/dist/lib/session-artifacts/apply-hashline-edits.js.map +1 -0
- package/dist/lib/session-artifacts/artifact-text-edit.d.ts +8 -0
- package/dist/lib/session-artifacts/artifact-text-edit.d.ts.map +1 -0
- package/dist/lib/session-artifacts/artifact-text-edit.js +23 -0
- package/dist/lib/session-artifacts/artifact-text-edit.js.map +1 -0
- package/dist/lib/session-artifacts/hashline-diff-guide.d.ts +3 -0
- package/dist/lib/session-artifacts/hashline-diff-guide.d.ts.map +1 -0
- package/dist/lib/session-artifacts/hashline-diff-guide.js +19 -0
- package/dist/lib/session-artifacts/hashline-diff-guide.js.map +1 -0
- package/dist/lib/session-artifacts/hashline-tag.d.ts +33 -0
- package/dist/lib/session-artifacts/hashline-tag.d.ts.map +1 -0
- package/dist/lib/session-artifacts/hashline-tag.js +80 -0
- package/dist/lib/session-artifacts/hashline-tag.js.map +1 -0
- package/dist/lib/session-artifacts/parse-hashline-diff.d.ts +10 -0
- package/dist/lib/session-artifacts/parse-hashline-diff.d.ts.map +1 -0
- package/dist/lib/session-artifacts/parse-hashline-diff.js +33 -0
- package/dist/lib/session-artifacts/parse-hashline-diff.js.map +1 -0
- package/dist/lib/session-pages/artifact-storage-paths.d.ts +13 -0
- package/dist/lib/session-pages/artifact-storage-paths.d.ts.map +1 -0
- package/dist/lib/session-pages/artifact-storage-paths.js +46 -0
- package/dist/lib/session-pages/artifact-storage-paths.js.map +1 -0
- package/dist/lib/session-pages/artifact-storage.d.ts +8 -0
- package/dist/lib/session-pages/artifact-storage.d.ts.map +1 -0
- package/dist/lib/session-pages/artifact-storage.js +113 -0
- package/dist/lib/session-pages/artifact-storage.js.map +1 -0
- package/dist/lib/session-pages/delete-session-artifact.d.ts +5 -0
- package/dist/lib/session-pages/delete-session-artifact.d.ts.map +1 -0
- package/dist/lib/session-pages/delete-session-artifact.js +56 -0
- package/dist/lib/session-pages/delete-session-artifact.js.map +1 -0
- package/dist/lib/session-pages/index.d.ts +3 -4
- package/dist/lib/session-pages/index.d.ts.map +1 -1
- package/dist/lib/session-pages/index.js +6 -8
- package/dist/lib/session-pages/index.js.map +1 -1
- package/dist/lib/session-pages/inject-preview-error-reporter.d.ts +3 -0
- package/dist/lib/session-pages/inject-preview-error-reporter.d.ts.map +1 -0
- package/dist/lib/session-pages/inject-preview-error-reporter.js +30 -0
- package/dist/lib/session-pages/inject-preview-error-reporter.js.map +1 -0
- package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -1
- package/dist/lib/session-pages/list-session-artifacts.js +19 -3
- package/dist/lib/session-pages/list-session-artifacts.js.map +1 -1
- package/dist/lib/session-pages/paths.d.ts +0 -1
- package/dist/lib/session-pages/paths.d.ts.map +1 -1
- package/dist/lib/session-pages/paths.js +0 -8
- package/dist/lib/session-pages/paths.js.map +1 -1
- package/dist/lib/session-pages/read-session-artifacts.d.ts +9 -0
- package/dist/lib/session-pages/read-session-artifacts.d.ts.map +1 -0
- package/dist/lib/session-pages/read-session-artifacts.js +56 -0
- package/dist/lib/session-pages/read-session-artifacts.js.map +1 -0
- package/dist/lib/session-pages/session-pico-css.d.ts +5 -0
- package/dist/lib/session-pages/session-pico-css.d.ts.map +1 -0
- package/dist/lib/session-pages/session-pico-css.js +11 -0
- package/dist/lib/session-pages/session-pico-css.js.map +1 -0
- package/dist/lib/session-pages/write-session-artifacts.d.ts +0 -10
- package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
- package/dist/lib/session-pages/write-session-artifacts.js +9 -57
- package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
- package/dist/lib/socket/artifact-events.d.ts +1 -1
- package/dist/lib/socket/artifact-events.d.ts.map +1 -1
- package/dist/lib/socket/artifact-events.js.map +1 -1
- package/dist/middleware/index.d.ts +2 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +38 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/validation/activity.validation.d.ts +5 -0
- package/dist/middleware/validation/activity.validation.d.ts.map +1 -0
- package/dist/middleware/validation/activity.validation.js +19 -0
- package/dist/middleware/validation/activity.validation.js.map +1 -0
- package/dist/middleware/validation/agent.validation.d.ts +4 -0
- package/dist/middleware/validation/agent.validation.d.ts.map +1 -0
- package/dist/middleware/validation/agent.validation.js +25 -0
- package/dist/middleware/validation/agent.validation.js.map +1 -0
- package/dist/middleware/validation/chat.validation.d.ts +12 -0
- package/dist/middleware/validation/chat.validation.d.ts.map +1 -0
- package/dist/middleware/validation/chat.validation.js +94 -0
- package/dist/middleware/validation/chat.validation.js.map +1 -0
- package/dist/middleware/validation/index.d.ts +4 -0
- package/dist/middleware/validation/index.d.ts.map +1 -0
- package/dist/middleware/validation/index.js +40 -0
- package/dist/middleware/validation/index.js.map +1 -0
- package/dist/middleware/validation/zod-validate.d.ts +5 -0
- package/dist/middleware/validation/zod-validate.d.ts.map +1 -0
- package/dist/middleware/validation/zod-validate.js +25 -0
- package/dist/middleware/validation/zod-validate.js.map +1 -0
- package/dist/realtime/reset-session-artifact-y-docs.d.ts.map +1 -1
- package/dist/realtime/reset-session-artifact-y-docs.js +6 -1
- package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -1
- package/dist/realtime/session-artifact-document-id.d.ts.map +1 -1
- package/dist/realtime/session-artifact-document-id.js +0 -2
- package/dist/realtime/session-artifact-document-id.js.map +1 -1
- package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -1
- package/dist/realtime/session-artifact-y-socket-io.js +0 -11
- package/dist/realtime/session-artifact-y-socket-io.js.map +1 -1
- package/dist/realtime/session-artifact-yjs-store.d.ts +22 -5
- package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
- package/dist/realtime/session-artifact-yjs-store.js +118 -52
- package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
- package/dist/routes/activities/get.d.ts +3 -0
- package/dist/routes/activities/get.d.ts.map +1 -0
- package/dist/routes/activities/get.js +28 -0
- package/dist/routes/activities/get.js.map +1 -0
- package/dist/routes/activities/index.d.ts +2 -0
- package/dist/routes/activities/index.d.ts.map +1 -0
- package/dist/routes/activities/index.js +16 -0
- package/dist/routes/activities/index.js.map +1 -0
- package/dist/routes/activities/list.d.ts +3 -0
- package/dist/routes/activities/list.d.ts.map +1 -0
- package/dist/routes/activities/list.js +41 -0
- package/dist/routes/activities/list.js.map +1 -0
- package/dist/routes/activities/source-types.d.ts +3 -0
- package/dist/routes/activities/source-types.d.ts.map +1 -0
- package/dist/routes/activities/source-types.js +33 -0
- package/dist/routes/activities/source-types.js.map +1 -0
- package/dist/routes/activities/summary.d.ts +3 -0
- package/dist/routes/activities/summary.d.ts.map +1 -0
- package/dist/routes/activities/summary.js +38 -0
- package/dist/routes/activities/summary.js.map +1 -0
- package/dist/routes/agents/getConfig.d.ts +3 -0
- package/dist/routes/agents/getConfig.d.ts.map +1 -0
- package/dist/routes/agents/getConfig.js +16 -0
- package/dist/routes/agents/getConfig.js.map +1 -0
- package/dist/routes/agents/index.d.ts +2 -0
- package/dist/routes/agents/index.d.ts.map +1 -0
- package/dist/routes/agents/index.js +13 -0
- package/dist/routes/agents/index.js.map +1 -0
- package/dist/routes/agents/upsertPreferences.d.ts +4 -0
- package/dist/routes/agents/upsertPreferences.d.ts.map +1 -0
- package/dist/routes/agents/upsertPreferences.js +42 -0
- package/dist/routes/agents/upsertPreferences.js.map +1 -0
- package/dist/routes/chats/abort.d.ts +2 -2
- package/dist/routes/chats/abort.d.ts.map +1 -1
- package/dist/routes/chats/abort.js +10 -5
- package/dist/routes/chats/abort.js.map +1 -1
- package/dist/routes/chats/actions.d.ts +2 -2
- package/dist/routes/chats/actions.d.ts.map +1 -1
- package/dist/routes/chats/actions.js +12 -12
- package/dist/routes/chats/actions.js.map +1 -1
- package/dist/routes/chats/artifacts.d.ts +2 -2
- package/dist/routes/chats/artifacts.d.ts.map +1 -1
- package/dist/routes/chats/artifacts.js +15 -4
- package/dist/routes/chats/artifacts.js.map +1 -1
- package/dist/routes/chats/chat-route-errors.d.ts +3 -0
- package/dist/routes/chats/chat-route-errors.d.ts.map +1 -0
- package/dist/routes/chats/chat-route-errors.js +23 -0
- package/dist/routes/chats/chat-route-errors.js.map +1 -0
- package/dist/routes/chats/delete.d.ts +2 -2
- package/dist/routes/chats/delete.d.ts.map +1 -1
- package/dist/routes/chats/delete.js +12 -3
- package/dist/routes/chats/delete.js.map +1 -1
- package/dist/routes/chats/get.d.ts +2 -2
- package/dist/routes/chats/get.d.ts.map +1 -1
- package/dist/routes/chats/get.js +8 -4
- package/dist/routes/chats/get.js.map +1 -1
- package/dist/routes/chats/getStream.d.ts +2 -2
- package/dist/routes/chats/getStream.d.ts.map +1 -1
- package/dist/routes/chats/getStream.js +16 -8
- package/dist/routes/chats/getStream.js.map +1 -1
- package/dist/routes/chats/index.d.ts.map +1 -1
- package/dist/routes/chats/index.js +19 -13
- package/dist/routes/chats/index.js.map +1 -1
- package/dist/routes/chats/invite-participants.d.ts +3 -0
- package/dist/routes/chats/invite-participants.d.ts.map +1 -0
- package/dist/routes/chats/invite-participants.js +56 -0
- package/dist/routes/chats/invite-participants.js.map +1 -0
- package/dist/routes/chats/list.d.ts +2 -2
- package/dist/routes/chats/list.d.ts.map +1 -1
- package/dist/routes/chats/list.js +22 -25
- package/dist/routes/chats/list.js.map +1 -1
- package/dist/routes/chats/messages.d.ts +2 -2
- package/dist/routes/chats/messages.d.ts.map +1 -1
- package/dist/routes/chats/messages.js +13 -6
- package/dist/routes/chats/messages.js.map +1 -1
- package/dist/routes/chats/multiUserMessages.d.ts +2 -2
- package/dist/routes/chats/multiUserMessages.d.ts.map +1 -1
- package/dist/routes/chats/multiUserMessages.js +19 -19
- package/dist/routes/chats/multiUserMessages.js.map +1 -1
- package/dist/routes/chats/remove-participants.d.ts +3 -0
- package/dist/routes/chats/remove-participants.d.ts.map +1 -0
- package/dist/routes/chats/remove-participants.js +46 -0
- package/dist/routes/chats/remove-participants.js.map +1 -0
- package/dist/routes/chats/stream.d.ts +2 -2
- package/dist/routes/chats/stream.d.ts.map +1 -1
- package/dist/routes/chats/stream.js +28 -11
- package/dist/routes/chats/stream.js.map +1 -1
- package/dist/routes/chats/title.d.ts +2 -2
- package/dist/routes/chats/title.d.ts.map +1 -1
- package/dist/routes/chats/title.js +14 -8
- package/dist/routes/chats/title.js.map +1 -1
- package/dist/routes/chats/updateToolCall.d.ts +2 -2
- package/dist/routes/chats/updateToolCall.d.ts.map +1 -1
- package/dist/routes/chats/updateToolCall.js +16 -20
- package/dist/routes/chats/updateToolCall.js.map +1 -1
- package/dist/routes/route-errors.d.ts +3 -0
- package/dist/routes/route-errors.d.ts.map +1 -0
- package/dist/routes/route-errors.js +13 -0
- package/dist/routes/route-errors.js.map +1 -0
- package/dist/routes/schemas.d.ts +80 -0
- package/dist/routes/schemas.d.ts.map +1 -1
- package/dist/routes/schemas.js +95 -1
- package/dist/routes/schemas.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +77 -9
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/tenants/credentials.d.ts +5 -0
- package/dist/routes/tenants/credentials.d.ts.map +1 -0
- package/dist/routes/tenants/credentials.js +50 -0
- package/dist/routes/tenants/credentials.js.map +1 -0
- package/dist/routes/tenants/index.d.ts +2 -0
- package/dist/routes/tenants/index.d.ts.map +1 -0
- package/dist/routes/tenants/index.js +10 -0
- package/dist/routes/tenants/index.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ARTIFACT_LATEST_STATE_SUFFIX = void 0;
|
|
4
|
+
exports.artifactLatestStatePath = artifactLatestStatePath;
|
|
5
|
+
exports.artifactSnapshotPath = artifactSnapshotPath;
|
|
6
|
+
exports.isArtifactLatestStatePath = isArtifactLatestStatePath;
|
|
7
|
+
exports.isArtifactSnapshotPath = isArtifactSnapshotPath;
|
|
8
|
+
exports.isArtifactStorageSidecar = isArtifactStorageSidecar;
|
|
9
|
+
exports.artifactPathFromLatestStatePath = artifactPathFromLatestStatePath;
|
|
10
|
+
exports.isSnapshotForArtifact = isSnapshotForArtifact;
|
|
11
|
+
const paths_1 = require("./paths");
|
|
12
|
+
exports.ARTIFACT_LATEST_STATE_SUFFIX = '.latest.state';
|
|
13
|
+
const SNAPSHOT_SEGMENT = '.snapshot-';
|
|
14
|
+
/** Relative path for the persisted Yjs update blob. */
|
|
15
|
+
function artifactLatestStatePath(artifactPath) {
|
|
16
|
+
const base = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
17
|
+
return `${base}${exports.ARTIFACT_LATEST_STATE_SUFFIX}`;
|
|
18
|
+
}
|
|
19
|
+
/** Relative path for a point-in-time content snapshot. */
|
|
20
|
+
function artifactSnapshotPath(artifactPath, at) {
|
|
21
|
+
const base = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
22
|
+
const stamp = at.toISOString().replace(/[:.]/g, '-');
|
|
23
|
+
return `${base}${SNAPSHOT_SEGMENT}${stamp}`;
|
|
24
|
+
}
|
|
25
|
+
function isArtifactLatestStatePath(relativePath) {
|
|
26
|
+
return relativePath.endsWith(exports.ARTIFACT_LATEST_STATE_SUFFIX);
|
|
27
|
+
}
|
|
28
|
+
function isArtifactSnapshotPath(relativePath) {
|
|
29
|
+
return relativePath.includes(SNAPSHOT_SEGMENT);
|
|
30
|
+
}
|
|
31
|
+
/** Sidecar files managed by the artifact storage layer (not user-facing artifacts). */
|
|
32
|
+
function isArtifactStorageSidecar(relativePath) {
|
|
33
|
+
return isArtifactLatestStatePath(relativePath) || isArtifactSnapshotPath(relativePath);
|
|
34
|
+
}
|
|
35
|
+
function artifactPathFromLatestStatePath(statePath) {
|
|
36
|
+
if (!isArtifactLatestStatePath(statePath)) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return statePath.slice(0, -exports.ARTIFACT_LATEST_STATE_SUFFIX.length);
|
|
40
|
+
}
|
|
41
|
+
/** Whether `relativePath` is a dated snapshot for `artifactPath`. */
|
|
42
|
+
function isSnapshotForArtifact(relativePath, artifactPath) {
|
|
43
|
+
const base = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
44
|
+
return relativePath.startsWith(`${base}${SNAPSHOT_SEGMENT}`);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=artifact-storage-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-storage-paths.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage-paths.ts"],"names":[],"mappings":";;;AAMA,0DAGC;AAGD,oDAIC;AAED,8DAEC;AAED,wDAEC;AAGD,4DAEC;AAED,0EAKC;AAGD,sDAGC;AA1CD,mCAA+C;AAElC,QAAA,4BAA4B,GAAG,eAAe,CAAA;AAC3D,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAErC,uDAAuD;AACvD,SAAgB,uBAAuB,CAAC,YAAoB;IAC1D,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,oCAA4B,EAAE,CAAA;AACjD,CAAC;AAED,0DAA0D;AAC1D,SAAgB,oBAAoB,CAAC,YAAoB,EAAE,EAAQ;IACjE,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACpD,OAAO,GAAG,IAAI,GAAG,gBAAgB,GAAG,KAAK,EAAE,CAAA;AAC7C,CAAC;AAED,SAAgB,yBAAyB,CAAC,YAAoB;IAC5D,OAAO,YAAY,CAAC,QAAQ,CAAC,oCAA4B,CAAC,CAAA;AAC5D,CAAC;AAED,SAAgB,sBAAsB,CAAC,YAAoB;IACzD,OAAO,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AAChD,CAAC;AAED,uFAAuF;AACvF,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,OAAO,yBAAyB,CAAC,YAAY,CAAC,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAA;AACxF,CAAC;AAED,SAAgB,+BAA+B,CAAC,SAAiB;IAC/D,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,oCAA4B,CAAC,MAAM,CAAC,CAAA;AACjE,CAAC;AAED,qEAAqE;AACrE,SAAgB,qBAAqB,CAAC,YAAoB,EAAE,YAAoB;IAC9E,MAAM,IAAI,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAChD,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAA;AAC9D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function writeArtifactLatestState(sessionId: string, artifactPath: string, state: Uint8Array): Promise<void>;
|
|
2
|
+
export declare function readArtifactLatestState(sessionId: string, artifactPath: string): Promise<Uint8Array | null>;
|
|
3
|
+
export declare function writeArtifactContentSnapshot(sessionId: string, artifactPath: string, content: string): Promise<void>;
|
|
4
|
+
export declare function readArtifactContentSnapshot(sessionId: string, artifactPath: string): Promise<string | null>;
|
|
5
|
+
export declare function writeArtifactNamedSnapshot(sessionId: string, artifactPath: string, content: string, at?: Date): Promise<string>;
|
|
6
|
+
export declare function listArtifactSnapshotPaths(sessionId: string, artifactPath: string): Promise<string[]>;
|
|
7
|
+
export declare function deleteArtifactStorageFiles(sessionId: string, artifactPath: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=artifact-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-storage.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage.ts"],"names":[],"mappings":"AASA,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAW5B;AAED,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,EAAE,GAAE,IAAiB,GACpB,OAAO,CAAC,MAAM,CAAC,CAMjB;AAgCD,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB;AAED,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.writeArtifactLatestState = writeArtifactLatestState;
|
|
7
|
+
exports.readArtifactLatestState = readArtifactLatestState;
|
|
8
|
+
exports.writeArtifactContentSnapshot = writeArtifactContentSnapshot;
|
|
9
|
+
exports.readArtifactContentSnapshot = readArtifactContentSnapshot;
|
|
10
|
+
exports.writeArtifactNamedSnapshot = writeArtifactNamedSnapshot;
|
|
11
|
+
exports.listArtifactSnapshotPaths = listArtifactSnapshotPaths;
|
|
12
|
+
exports.deleteArtifactStorageFiles = deleteArtifactStorageFiles;
|
|
13
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
14
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
15
|
+
const artifact_storage_paths_1 = require("./artifact-storage-paths");
|
|
16
|
+
const paths_1 = require("./paths");
|
|
17
|
+
async function writeArtifactLatestState(sessionId, artifactPath, state) {
|
|
18
|
+
const relativeStatePath = (0, artifact_storage_paths_1.artifactLatestStatePath)(artifactPath);
|
|
19
|
+
const absolutePath = (0, paths_1.resolveArtifactPath)(sessionId, relativeStatePath);
|
|
20
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(absolutePath), { recursive: true });
|
|
21
|
+
await promises_1.default.writeFile(absolutePath, Buffer.from(state));
|
|
22
|
+
}
|
|
23
|
+
async function readArtifactLatestState(sessionId, artifactPath) {
|
|
24
|
+
try {
|
|
25
|
+
const absolutePath = (0, paths_1.resolveArtifactPath)(sessionId, (0, artifact_storage_paths_1.artifactLatestStatePath)(artifactPath));
|
|
26
|
+
const data = await promises_1.default.readFile(absolutePath);
|
|
27
|
+
return new Uint8Array(data);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error.code === 'ENOENT') {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function writeArtifactContentSnapshot(sessionId, artifactPath, content) {
|
|
37
|
+
const absolutePath = (0, paths_1.resolveArtifactPath)(sessionId, artifactPath);
|
|
38
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(absolutePath), { recursive: true });
|
|
39
|
+
await promises_1.default.writeFile(absolutePath, content, 'utf8');
|
|
40
|
+
}
|
|
41
|
+
async function readArtifactContentSnapshot(sessionId, artifactPath) {
|
|
42
|
+
try {
|
|
43
|
+
const absolutePath = (0, paths_1.resolveArtifactPath)(sessionId, artifactPath);
|
|
44
|
+
return await promises_1.default.readFile(absolutePath, 'utf8');
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error.code === 'ENOENT') {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function writeArtifactNamedSnapshot(sessionId, artifactPath, content, at = new Date()) {
|
|
54
|
+
const relativePath = (0, artifact_storage_paths_1.artifactSnapshotPath)(artifactPath, at);
|
|
55
|
+
const absolutePath = (0, paths_1.resolveArtifactPath)(sessionId, relativePath);
|
|
56
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(absolutePath), { recursive: true });
|
|
57
|
+
await promises_1.default.writeFile(absolutePath, content, 'utf8');
|
|
58
|
+
return relativePath;
|
|
59
|
+
}
|
|
60
|
+
async function walkFiles(dir, root, onFile) {
|
|
61
|
+
let entries;
|
|
62
|
+
try {
|
|
63
|
+
entries = await promises_1.default.readdir(dir, { withFileTypes: true });
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error.code === 'ENOENT') {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
for (const entry of entries) {
|
|
72
|
+
const absolute = node_path_1.default.join(dir, entry.name);
|
|
73
|
+
if (entry.isDirectory()) {
|
|
74
|
+
await walkFiles(absolute, root, onFile);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (!entry.isFile()) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const relative = node_path_1.default.relative(root, absolute).split(node_path_1.default.sep).join('/');
|
|
81
|
+
await onFile(relative);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async function listArtifactSnapshotPaths(sessionId, artifactPath) {
|
|
85
|
+
const root = (0, paths_1.getSessionDir)(sessionId);
|
|
86
|
+
const normalized = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
87
|
+
const snapshots = [];
|
|
88
|
+
await walkFiles(root, root, (relativePath) => {
|
|
89
|
+
if ((0, artifact_storage_paths_1.isSnapshotForArtifact)(relativePath, normalized)) {
|
|
90
|
+
snapshots.push(relativePath);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return snapshots.sort((a, b) => a.localeCompare(b));
|
|
94
|
+
}
|
|
95
|
+
async function deleteArtifactStorageFiles(sessionId, artifactPath) {
|
|
96
|
+
const normalized = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
97
|
+
const targets = [
|
|
98
|
+
(0, paths_1.resolveArtifactPath)(sessionId, normalized),
|
|
99
|
+
(0, paths_1.resolveArtifactPath)(sessionId, (0, artifact_storage_paths_1.artifactLatestStatePath)(normalized)),
|
|
100
|
+
...(await listArtifactSnapshotPaths(sessionId, normalized)).map((snapshotPath) => (0, paths_1.resolveArtifactPath)(sessionId, snapshotPath)),
|
|
101
|
+
];
|
|
102
|
+
await Promise.all(targets.map(async (absolutePath) => {
|
|
103
|
+
try {
|
|
104
|
+
await promises_1.default.unlink(absolutePath);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (error.code !== 'ENOENT') {
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=artifact-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-storage.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-session-artifact.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;CACb;AAqBD,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,CAAC,CA+BtC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deleteSessionArtifact = deleteSessionArtifact;
|
|
7
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
|
|
10
|
+
const artifact_storage_1 = require("./artifact-storage");
|
|
11
|
+
const paths_1 = require("./paths");
|
|
12
|
+
async function pruneEmptyParentDirs(startDir, stopDir) {
|
|
13
|
+
let current = startDir;
|
|
14
|
+
const resolvedStop = node_path_1.default.resolve(stopDir);
|
|
15
|
+
while (current !== resolvedStop && current.startsWith(`${resolvedStop}${node_path_1.default.sep}`)) {
|
|
16
|
+
let entries;
|
|
17
|
+
try {
|
|
18
|
+
entries = await promises_1.default.readdir(current);
|
|
19
|
+
}
|
|
20
|
+
catch (_a) {
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
if (entries.length > 0) {
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
await promises_1.default.rmdir(current);
|
|
27
|
+
current = node_path_1.default.dirname(current);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function deleteSessionArtifact(sessionId, artifactPath) {
|
|
31
|
+
const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
32
|
+
const sessionRoot = node_path_1.default.resolve((0, paths_1.getSessionDir)(sessionId));
|
|
33
|
+
const [state, content] = await Promise.all([
|
|
34
|
+
(0, artifact_storage_1.readArtifactLatestState)(sessionId, normalizedPath),
|
|
35
|
+
(0, artifact_storage_1.readArtifactContentSnapshot)(sessionId, normalizedPath),
|
|
36
|
+
]);
|
|
37
|
+
let exists = Boolean(state === null || state === void 0 ? void 0 : state.byteLength) || content !== null;
|
|
38
|
+
if (!exists) {
|
|
39
|
+
try {
|
|
40
|
+
await promises_1.default.access((0, paths_1.resolveArtifactPath)(sessionId, normalizedPath));
|
|
41
|
+
exists = true;
|
|
42
|
+
}
|
|
43
|
+
catch (_a) {
|
|
44
|
+
exists = false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (!exists) {
|
|
48
|
+
throw new Error(`Session artifact not found: ${normalizedPath}`);
|
|
49
|
+
}
|
|
50
|
+
(0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().evictDocument(sessionId, normalizedPath);
|
|
51
|
+
await (0, artifact_storage_1.deleteArtifactStorageFiles)(sessionId, normalizedPath);
|
|
52
|
+
const contentParent = node_path_1.default.dirname(node_path_1.default.join(sessionRoot, normalizedPath));
|
|
53
|
+
await pruneEmptyParentDirs(contentParent, sessionRoot);
|
|
54
|
+
return { path: normalizedPath };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=delete-session-artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-session-artifact.js","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":";;;;;AAiCA,sDAkCC;AAnED,gEAAiC;AACjC,0DAA4B;AAC5B,0FAAsF;AACtF,yDAI2B;AAC3B,mCAAmF;AAMnF,KAAK,UAAU,oBAAoB,CAAC,QAAgB,EAAE,OAAe;IACnE,IAAI,OAAO,GAAG,QAAQ,CAAA;IACtB,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1C,OAAO,OAAO,KAAK,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,mBAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACpF,IAAI,OAAiB,CAAA;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;QAAC,WAAM,CAAC;YACP,MAAK;QACP,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAK;QACP,CAAC;QACD,MAAM,kBAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,YAAoB;IAEpB,MAAM,cAAc,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAC1D,MAAM,WAAW,GAAG,mBAAI,CAAC,OAAO,CAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,CAAC,CAAA;IAE1D,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,IAAA,0CAAuB,EAAC,SAAS,EAAE,cAAc,CAAC;QAClD,IAAA,8CAA2B,EAAC,SAAS,EAAE,cAAc,CAAC;KACvD,CAAC,CAAA;IAEF,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,IAAI,OAAO,KAAK,IAAI,CAAA;IAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAA,2BAAmB,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAA;YAC/D,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;QAAC,WAAM,CAAC;YACP,MAAM,GAAG,KAAK,CAAA;QAChB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,cAAc,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,IAAA,uDAA0B,GAAE,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAErE,MAAM,IAAA,6CAA0B,EAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAE3D,MAAM,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;IAC1E,MAAM,oBAAoB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IAEtD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { assertValidSessionId, getSessionDir, getSessionsRoot, normalizeArtifactPath, resolveArtifactPath, } from './paths';
|
|
1
|
+
export { getSessionDir, getSessionsRoot, normalizeArtifactPath, resolveArtifactPath, } from './paths';
|
|
3
2
|
export { listSessionArtifacts, type SessionArtifactEntry } from './list-session-artifacts';
|
|
4
|
-
export {
|
|
3
|
+
export { readSessionArtifacts, sessionArtifactExists, type ReadSessionArtifactResult, } from './read-session-artifacts';
|
|
4
|
+
export { deleteSessionArtifact, type DeleteSessionArtifactResult, } from './delete-session-artifact';
|
|
5
5
|
export { resolveArtifactNotifyUserIds } from './resolve-artifact-notify-user-ids';
|
|
6
|
-
export { readLatestSessionArtifactText, type ReadLatestSessionArtifactResult, } from './read-session-artifact';
|
|
7
6
|
export { writeSessionArtifacts, type SessionArtifactFile, type WriteSessionArtifactsInput, type WriteSessionArtifactsResult, } from './write-session-artifacts';
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC1F,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,qBAAqB,EACrB,KAAK,2BAA2B,GACjC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,2BAA2B,CAAA"}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.writeSessionArtifacts = exports.
|
|
4
|
-
var default_session_styles_1 = require("./default-session-styles");
|
|
5
|
-
Object.defineProperty(exports, "DEFAULT_SESSION_STYLES", { enumerable: true, get: function () { return default_session_styles_1.DEFAULT_SESSION_STYLES; } });
|
|
3
|
+
exports.writeSessionArtifacts = exports.resolveArtifactNotifyUserIds = exports.deleteSessionArtifact = exports.sessionArtifactExists = exports.readSessionArtifacts = exports.listSessionArtifacts = exports.resolveArtifactPath = exports.normalizeArtifactPath = exports.getSessionsRoot = exports.getSessionDir = void 0;
|
|
6
4
|
var paths_1 = require("./paths");
|
|
7
|
-
Object.defineProperty(exports, "assertValidSessionId", { enumerable: true, get: function () { return paths_1.assertValidSessionId; } });
|
|
8
5
|
Object.defineProperty(exports, "getSessionDir", { enumerable: true, get: function () { return paths_1.getSessionDir; } });
|
|
9
6
|
Object.defineProperty(exports, "getSessionsRoot", { enumerable: true, get: function () { return paths_1.getSessionsRoot; } });
|
|
10
7
|
Object.defineProperty(exports, "normalizeArtifactPath", { enumerable: true, get: function () { return paths_1.normalizeArtifactPath; } });
|
|
11
8
|
Object.defineProperty(exports, "resolveArtifactPath", { enumerable: true, get: function () { return paths_1.resolveArtifactPath; } });
|
|
12
9
|
var list_session_artifacts_1 = require("./list-session-artifacts");
|
|
13
10
|
Object.defineProperty(exports, "listSessionArtifacts", { enumerable: true, get: function () { return list_session_artifacts_1.listSessionArtifacts; } });
|
|
14
|
-
var
|
|
15
|
-
Object.defineProperty(exports, "
|
|
11
|
+
var read_session_artifacts_1 = require("./read-session-artifacts");
|
|
12
|
+
Object.defineProperty(exports, "readSessionArtifacts", { enumerable: true, get: function () { return read_session_artifacts_1.readSessionArtifacts; } });
|
|
13
|
+
Object.defineProperty(exports, "sessionArtifactExists", { enumerable: true, get: function () { return read_session_artifacts_1.sessionArtifactExists; } });
|
|
14
|
+
var delete_session_artifact_1 = require("./delete-session-artifact");
|
|
15
|
+
Object.defineProperty(exports, "deleteSessionArtifact", { enumerable: true, get: function () { return delete_session_artifact_1.deleteSessionArtifact; } });
|
|
16
16
|
var resolve_artifact_notify_user_ids_1 = require("./resolve-artifact-notify-user-ids");
|
|
17
17
|
Object.defineProperty(exports, "resolveArtifactNotifyUserIds", { enumerable: true, get: function () { return resolve_artifact_notify_user_ids_1.resolveArtifactNotifyUserIds; } });
|
|
18
|
-
var read_session_artifact_1 = require("./read-session-artifact");
|
|
19
|
-
Object.defineProperty(exports, "readLatestSessionArtifactText", { enumerable: true, get: function () { return read_session_artifact_1.readLatestSessionArtifactText; } });
|
|
20
18
|
var write_session_artifacts_1 = require("./write-session-artifacts");
|
|
21
19
|
Object.defineProperty(exports, "writeSessionArtifacts", { enumerable: true, get: function () { return write_session_artifacts_1.writeSessionArtifacts; } });
|
|
22
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/session-pages/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/session-pages/index.ts"],"names":[],"mappings":";;;AAAA,iCAKgB;AAJd,sGAAA,aAAa,OAAA;AACb,wGAAA,eAAe,OAAA;AACf,8GAAA,qBAAqB,OAAA;AACrB,4GAAA,mBAAmB,OAAA;AAErB,mEAA0F;AAAjF,8HAAA,oBAAoB,OAAA;AAC7B,mEAIiC;AAH/B,8HAAA,oBAAoB,OAAA;AACpB,+HAAA,qBAAqB,OAAA;AAGvB,qEAGkC;AAFhC,gIAAA,qBAAqB,OAAA;AAGvB,uFAAiF;AAAxE,gJAAA,4BAA4B,OAAA;AACrC,qEAKkC;AAJhC,gIAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function buildPreviewErrorReporterScript(sessionId: string, previewPath: string): string;
|
|
2
|
+
export declare function injectPreviewErrorReporter(html: string, sessionId: string, previewPath: string): string;
|
|
3
|
+
//# sourceMappingURL=inject-preview-error-reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-preview-error-reporter.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/inject-preview-error-reporter.ts"],"names":[],"mappings":"AAMA,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,CAoBR"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildPreviewErrorReporterScript = buildPreviewErrorReporterScript;
|
|
4
|
+
exports.injectPreviewErrorReporter = injectPreviewErrorReporter;
|
|
5
|
+
const REPORTER_MARKER = 'id="multiplayer-artifact-preview-error-reporter"';
|
|
6
|
+
function escapeJsString(value) {
|
|
7
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
8
|
+
}
|
|
9
|
+
function buildPreviewErrorReporterScript(sessionId, previewPath) {
|
|
10
|
+
const meta = `{sessionId:"${escapeJsString(sessionId)}",path:"${escapeJsString(previewPath)}"}`;
|
|
11
|
+
return `<script ${REPORTER_MARKER}>(function(){var meta=${meta};function report(d){try{parent.postMessage(Object.assign({type:"artifact-preview-error"},meta,d),"*")}catch(e){}}window.addEventListener("error",function(e){report({kind:"error",message:e.message||String(e.error||"Unknown error"),filename:e.filename||"",lineno:e.lineno||0,colno:e.colno||0,at:new Date().toISOString()})});window.addEventListener("unhandledrejection",function(e){report({kind:"unhandledrejection",message:String(e.reason),filename:"",lineno:0,colno:0,at:new Date().toISOString()})})})();</script>`;
|
|
12
|
+
}
|
|
13
|
+
function injectPreviewErrorReporter(html, sessionId, previewPath) {
|
|
14
|
+
if (html.includes(REPORTER_MARKER)) {
|
|
15
|
+
return html;
|
|
16
|
+
}
|
|
17
|
+
const script = buildPreviewErrorReporterScript(sessionId, previewPath);
|
|
18
|
+
const headMatch = html.match(/<head(\s[^>]*)?>/i);
|
|
19
|
+
if (headMatch && headMatch.index !== undefined) {
|
|
20
|
+
const insertAt = headMatch.index + headMatch[0].length;
|
|
21
|
+
return `${html.slice(0, insertAt)}${script}${html.slice(insertAt)}`;
|
|
22
|
+
}
|
|
23
|
+
const htmlMatch = html.match(/<html(\s[^>]*)?>/i);
|
|
24
|
+
if (htmlMatch && htmlMatch.index !== undefined) {
|
|
25
|
+
const insertAt = htmlMatch.index + htmlMatch[0].length;
|
|
26
|
+
return `${html.slice(0, insertAt)}${script}${html.slice(insertAt)}`;
|
|
27
|
+
}
|
|
28
|
+
return `${script}${html}`;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=inject-preview-error-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-preview-error-reporter.js","sourceRoot":"","sources":["../../../src/lib/session-pages/inject-preview-error-reporter.ts"],"names":[],"mappings":";;AAMA,0EAGC;AAED,gEAwBC;AAnCD,MAAM,eAAe,GAAG,kDAAkD,CAAA;AAE1E,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED,SAAgB,+BAA+B,CAAC,SAAiB,EAAE,WAAmB;IACpF,MAAM,IAAI,GAAG,eAAe,cAAc,CAAC,SAAS,CAAC,WAAW,cAAc,CAAC,WAAW,CAAC,IAAI,CAAA;IAC/F,OAAO,WAAW,eAAe,yBAAyB,IAAI,kgBAAkgB,CAAA;AAClkB,CAAC;AAED,SAAgB,0BAA0B,CACxC,IAAY,EACZ,SAAiB,EACjB,WAAmB;IAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAG,+BAA+B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IAEtE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACjD,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACtD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACjD,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACtD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;IACrE,CAAC;IAED,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAA;AAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/list-session-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/list-session-artifacts.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAqCD,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAY7F"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.listSessionArtifacts = listSessionArtifacts;
|
|
7
7
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const artifact_storage_paths_1 = require("./artifact-storage-paths");
|
|
9
10
|
const paths_1 = require("./paths");
|
|
10
11
|
async function walk(dir, root, out) {
|
|
11
12
|
let entries;
|
|
@@ -26,15 +27,30 @@ async function walk(dir, root, out) {
|
|
|
26
27
|
if (!entry.isFile())
|
|
27
28
|
continue;
|
|
28
29
|
const relative = node_path_1.default.relative(root, absolute).split(node_path_1.default.sep).join('/');
|
|
29
|
-
const normalized = (0, paths_1.normalizeArtifactPath)(relative);
|
|
30
30
|
const stat = await promises_1.default.stat(absolute);
|
|
31
|
-
|
|
31
|
+
if ((0, artifact_storage_paths_1.isArtifactStorageSidecar)(relative)) {
|
|
32
|
+
if ((0, artifact_storage_paths_1.artifactPathFromLatestStatePath)(relative)) {
|
|
33
|
+
const base = (0, artifact_storage_paths_1.artifactPathFromLatestStatePath)(relative);
|
|
34
|
+
if (!out.has(base)) {
|
|
35
|
+
out.set(base, 0);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const normalized = (0, paths_1.normalizeArtifactPath)(relative);
|
|
41
|
+
out.set(normalized, stat.size);
|
|
32
42
|
}
|
|
33
43
|
}
|
|
34
44
|
async function listSessionArtifacts(sessionId) {
|
|
45
|
+
var _a;
|
|
35
46
|
const root = (0, paths_1.getSessionDir)(sessionId);
|
|
47
|
+
const byPath = new Map();
|
|
48
|
+
await walk(root, root, byPath);
|
|
36
49
|
const files = [];
|
|
37
|
-
|
|
50
|
+
for (const [artifactPath, bytes] of byPath) {
|
|
51
|
+
const contentBytes = (_a = byPath.get(artifactPath)) !== null && _a !== void 0 ? _a : bytes;
|
|
52
|
+
files.push({ path: artifactPath, bytes: contentBytes });
|
|
53
|
+
}
|
|
38
54
|
return files.sort((a, b) => a.path.localeCompare(b.path));
|
|
39
55
|
}
|
|
40
56
|
//# sourceMappingURL=list-session-artifacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/list-session-artifacts.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"list-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/list-session-artifacts.ts"],"names":[],"mappings":";;;;;AAgDA,oDAYC;AA5DD,gEAAiC;AACjC,0DAA4B;AAC5B,qEAGiC;AACjC,mCAA8D;AAO9D,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,IAAY,EAAE,GAAwB;IACrE,IAAI,OAAO,CAAA;IACX,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAM;QAC9D,MAAM,KAAK,CAAA;IACb,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YAC/B,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAQ;QAE7B,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,mBAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxE,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,IAAA,iDAAwB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,IAAA,wDAA+B,EAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,IAAA,wDAA+B,EAAC,QAAQ,CAAE,CAAA;gBACvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;YACD,SAAQ;QACV,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,6BAAqB,EAAC,QAAQ,CAAC,CAAA;QAClD,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,SAAiB;;IAC1D,MAAM,IAAI,GAAG,IAAA,qBAAa,EAAC,SAAS,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAE9B,MAAM,KAAK,GAA2B,EAAE,CAAA;IACxC,KAAK,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAA,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,mCAAI,KAAK,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export declare function getSessionsRoot(): string;
|
|
2
|
-
export declare function assertValidSessionId(sessionId: string): void;
|
|
3
2
|
export declare function getSessionDir(sessionId: string): string;
|
|
4
3
|
/** Normalize and validate a relative artifact path within a session directory. */
|
|
5
4
|
export declare function normalizeArtifactPath(relativePath: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAelE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CASnF"}
|
|
@@ -4,23 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getSessionsRoot = getSessionsRoot;
|
|
7
|
-
exports.assertValidSessionId = assertValidSessionId;
|
|
8
7
|
exports.getSessionDir = getSessionDir;
|
|
9
8
|
exports.normalizeArtifactPath = normalizeArtifactPath;
|
|
10
9
|
exports.resolveArtifactPath = resolveArtifactPath;
|
|
11
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
12
11
|
const context_1 = require("../../context");
|
|
13
|
-
const SESSION_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
14
12
|
function getSessionsRoot() {
|
|
15
13
|
return (0, context_1.getBuilderApiContext)().config.sessions.rootDir;
|
|
16
14
|
}
|
|
17
|
-
function assertValidSessionId(sessionId) {
|
|
18
|
-
if (!SESSION_ID_PATTERN.test(sessionId)) {
|
|
19
|
-
throw new Error('Invalid session id');
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
15
|
function getSessionDir(sessionId) {
|
|
23
|
-
assertValidSessionId(sessionId);
|
|
24
16
|
return node_path_1.default.join(getSessionsRoot(), sessionId);
|
|
25
17
|
}
|
|
26
18
|
/** Normalize and validate a relative artifact path within a session directory. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/lib/session-pages/paths.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/lib/session-pages/paths.ts"],"names":[],"mappings":";;;;;AAGA,0CAEC;AAED,sCAEC;AAGD,sDAeC;AAED,kDASC;AAtCD,0DAA4B;AAC5B,2CAAoD;AAEpD,SAAgB,eAAe;IAC7B,OAAO,IAAA,8BAAoB,GAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAA;AACvD,CAAC;AAED,SAAgB,aAAa,CAAC,SAAiB;IAC7C,OAAO,mBAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AAED,kFAAkF;AAClF,SAAgB,qBAAqB,CAAC,YAAoB;IACxD,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACrD,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,UAAU,GAAG,mBAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,YAAoB;IACzE,MAAM,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAA;IAE9E,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,mBAAI,CAAC,GAAG,EAAE,CAAC,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ReadSessionArtifactResult {
|
|
2
|
+
path: string;
|
|
3
|
+
found: boolean;
|
|
4
|
+
bytes: number;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function sessionArtifactExists(sessionId: string, artifactPath: string): Promise<boolean>;
|
|
8
|
+
export declare function readSessionArtifacts(sessionId: string, paths: string[]): Promise<ReadSessionArtifactResult[]>;
|
|
9
|
+
//# sourceMappingURL=read-session-artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/read-session-artifacts.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBrG;AAMD,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA2BtC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sessionArtifactExists = sessionArtifactExists;
|
|
7
|
+
exports.readSessionArtifacts = readSessionArtifacts;
|
|
8
|
+
const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
|
|
9
|
+
const artifact_storage_paths_1 = require("./artifact-storage-paths");
|
|
10
|
+
const paths_1 = require("./paths");
|
|
11
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
12
|
+
async function sessionArtifactExists(sessionId, artifactPath) {
|
|
13
|
+
const normalized = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
14
|
+
const candidates = [
|
|
15
|
+
(0, paths_1.resolveArtifactPath)(sessionId, normalized),
|
|
16
|
+
(0, paths_1.resolveArtifactPath)(sessionId, (0, artifact_storage_paths_1.artifactLatestStatePath)(normalized)),
|
|
17
|
+
];
|
|
18
|
+
const found = await Promise.all(candidates.map(async (absolutePath) => {
|
|
19
|
+
try {
|
|
20
|
+
await promises_1.default.access(absolutePath);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch (_a) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
return found.some(Boolean);
|
|
28
|
+
}
|
|
29
|
+
async function readArtifactText(sessionId, artifactPath) {
|
|
30
|
+
return (0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().getLatestText(sessionId, artifactPath);
|
|
31
|
+
}
|
|
32
|
+
async function readSessionArtifacts(sessionId, paths) {
|
|
33
|
+
const results = [];
|
|
34
|
+
for (const rawPath of paths) {
|
|
35
|
+
const artifactPath = (0, paths_1.normalizeArtifactPath)(rawPath);
|
|
36
|
+
if (!(await sessionArtifactExists(sessionId, artifactPath))) {
|
|
37
|
+
results.push({
|
|
38
|
+
path: artifactPath,
|
|
39
|
+
found: false,
|
|
40
|
+
bytes: 0,
|
|
41
|
+
content: '',
|
|
42
|
+
});
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const content = await readArtifactText(sessionId, artifactPath);
|
|
46
|
+
const bytes = Buffer.byteLength(content, 'utf8');
|
|
47
|
+
results.push({
|
|
48
|
+
path: artifactPath,
|
|
49
|
+
found: true,
|
|
50
|
+
bytes,
|
|
51
|
+
content,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return results;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=read-session-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/read-session-artifacts.ts"],"names":[],"mappings":";;;;;AAYA,sDAiBC;AAMD,oDA8BC;AAjED,0FAAsF;AACtF,qEAAkE;AAClE,mCAAoE;AACpE,gEAAiC;AAS1B,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,YAAoB;IACjF,MAAM,UAAU,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IACtD,MAAM,UAAU,GAAG;QACjB,IAAA,2BAAmB,EAAC,SAAS,EAAE,UAAU,CAAC;QAC1C,IAAA,2BAAmB,EAAC,SAAS,EAAE,IAAA,gDAAuB,EAAC,UAAU,CAAC,CAAC;KACpE,CAAA;IACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,YAAoB;IACrE,OAAO,IAAA,uDAA0B,GAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AAC5E,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,KAAe;IAEf,MAAM,OAAO,GAAgC,EAAE,CAAA;IAE/C,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAA;QACnD,IAAI,CAAC,CAAC,MAAM,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,EAAE;aACZ,CAAC,CAAA;YACF,SAAQ;QACV,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAE/D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,IAAI;YACX,KAAK;YACL,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Pico CSS v2 from jsDelivr — injected into each published .html file. */
|
|
2
|
+
export declare const PICO_CSS_HREF = "https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css";
|
|
3
|
+
export declare const SESSION_PICO_CSS_LINK = "<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css\">";
|
|
4
|
+
export declare function htmlIncludesPicoCss(html: string): boolean;
|
|
5
|
+
//# sourceMappingURL=session-pico-css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-pico-css.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/session-pico-css.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,eAAO,MAAM,aAAa,kEAAkE,CAAA;AAE5F,eAAO,MAAM,qBAAqB,qGAAoD,CAAA;AAEtF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SESSION_PICO_CSS_LINK = exports.PICO_CSS_HREF = void 0;
|
|
4
|
+
exports.htmlIncludesPicoCss = htmlIncludesPicoCss;
|
|
5
|
+
/** Pico CSS v2 from jsDelivr — injected into each published .html file. */
|
|
6
|
+
exports.PICO_CSS_HREF = 'https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css';
|
|
7
|
+
exports.SESSION_PICO_CSS_LINK = `<link rel="stylesheet" href="${exports.PICO_CSS_HREF}">`;
|
|
8
|
+
function htmlIncludesPicoCss(html) {
|
|
9
|
+
return html.includes('pico.min.css') || html.includes('@picocss/pico');
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=session-pico-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-pico-css.js","sourceRoot":"","sources":["../../../src/lib/session-pages/session-pico-css.ts"],"names":[],"mappings":";;;AAKA,kDAEC;AAPD,2EAA2E;AAC9D,QAAA,aAAa,GAAG,+DAA+D,CAAA;AAE/E,QAAA,qBAAqB,GAAG,gCAAgC,qBAAa,IAAI,CAAA;AAEtF,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -5,23 +5,13 @@ export interface SessionArtifactFile {
|
|
|
5
5
|
export interface WriteSessionArtifactsInput {
|
|
6
6
|
sessionId: string;
|
|
7
7
|
files: SessionArtifactFile[];
|
|
8
|
-
/** Entry file for preview URL (default index.html). */
|
|
9
|
-
previewPath?: string;
|
|
10
|
-
/** Prepend bundled base styles when publishing styles.css (default true). */
|
|
11
|
-
includeBaseStyles?: boolean;
|
|
12
8
|
}
|
|
13
9
|
export interface PublishedSessionArtifact {
|
|
14
10
|
path: string;
|
|
15
11
|
bytes: number;
|
|
16
12
|
}
|
|
17
13
|
export interface WriteSessionArtifactsResult {
|
|
18
|
-
sessionId: string;
|
|
19
|
-
directory: string;
|
|
20
|
-
/** All artifacts on disk after this publish (includes unchanged files). */
|
|
21
14
|
artifacts: PublishedSessionArtifact[];
|
|
22
|
-
/** Paths written or overwritten in this call only. */
|
|
23
|
-
updatedArtifacts: PublishedSessionArtifact[];
|
|
24
|
-
previewUrl: string;
|
|
25
15
|
}
|
|
26
16
|
export declare function writeSessionArtifacts(input: WriteSessionArtifactsInput): Promise<WriteSessionArtifactsResult>;
|
|
27
17
|
//# sourceMappingURL=write-session-artifacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/write-session-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"write-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/write-session-artifacts.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,wBAAwB,EAAE,CAAA;CACtC;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAmBtC"}
|