@multiplayer-app/sandbox 0.0.30 → 0.0.32
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/html-generator.agent.d.ts +3 -1
- package/dist/agents/html-generator.agent.d.ts.map +1 -1
- package/dist/agents/html-generator.agent.js +90 -4
- 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 +5 -10
- package/dist/agents/markdown-generator.agent.js.map +1 -1
- package/dist/agents/shared/app-vm.tools.d.ts +4 -0
- package/dist/agents/shared/app-vm.tools.d.ts.map +1 -0
- package/dist/agents/shared/app-vm.tools.js +105 -0
- package/dist/agents/shared/app-vm.tools.js.map +1 -0
- package/dist/agents/shared/build-plan.tools.d.ts +5 -0
- package/dist/agents/shared/build-plan.tools.d.ts.map +1 -0
- package/dist/agents/shared/build-plan.tools.js +176 -0
- package/dist/agents/shared/build-plan.tools.js.map +1 -0
- package/dist/agents/shared/session-quality-report.tool.d.ts +7 -0
- package/dist/agents/shared/session-quality-report.tool.d.ts.map +1 -0
- package/dist/agents/shared/session-quality-report.tool.js +97 -0
- package/dist/agents/shared/session-quality-report.tool.js.map +1 -0
- package/dist/agents/shared/session-vm-bridge.d.ts +49 -0
- package/dist/agents/shared/session-vm-bridge.d.ts.map +1 -0
- package/dist/agents/shared/session-vm-bridge.js +9 -0
- package/dist/agents/shared/session-vm-bridge.js.map +1 -0
- package/dist/agents/skills/a11y.skill.d.ts +3 -0
- package/dist/agents/skills/a11y.skill.d.ts.map +1 -0
- package/dist/agents/skills/a11y.skill.js +23 -0
- package/dist/agents/skills/a11y.skill.js.map +1 -0
- package/dist/agents/skills/account-skill-loader.d.ts +13 -0
- package/dist/agents/skills/account-skill-loader.d.ts.map +1 -0
- package/dist/agents/skills/account-skill-loader.js +42 -0
- package/dist/agents/skills/account-skill-loader.js.map +1 -0
- package/dist/agents/skills/app-scaffold.skill.d.ts +3 -0
- package/dist/agents/skills/app-scaffold.skill.d.ts.map +1 -0
- package/dist/agents/skills/app-scaffold.skill.js +30 -0
- package/dist/agents/skills/app-scaffold.skill.js.map +1 -0
- package/dist/agents/skills/copywriting.skill.d.ts +3 -0
- package/dist/agents/skills/copywriting.skill.d.ts.map +1 -0
- package/dist/agents/skills/copywriting.skill.js +35 -0
- package/dist/agents/skills/copywriting.skill.js.map +1 -0
- package/dist/agents/skills/custom-skill-repository.d.ts +40 -0
- package/dist/agents/skills/custom-skill-repository.d.ts.map +1 -0
- package/dist/agents/skills/custom-skill-repository.js +3 -0
- package/dist/agents/skills/custom-skill-repository.js.map +1 -0
- package/dist/agents/skills/data-viz.skill.d.ts +3 -0
- package/dist/agents/skills/data-viz.skill.d.ts.map +1 -0
- package/dist/agents/skills/data-viz.skill.js +42 -0
- package/dist/agents/skills/data-viz.skill.js.map +1 -0
- package/dist/agents/skills/designer.skill.d.ts +3 -0
- package/dist/agents/skills/designer.skill.d.ts.map +1 -0
- package/dist/agents/skills/designer.skill.js +139 -0
- package/dist/agents/skills/designer.skill.js.map +1 -0
- package/dist/agents/skills/forms.skill.d.ts +3 -0
- package/dist/agents/skills/forms.skill.d.ts.map +1 -0
- package/dist/agents/skills/forms.skill.js +37 -0
- package/dist/agents/skills/forms.skill.js.map +1 -0
- package/dist/agents/skills/index.d.ts +6 -0
- package/dist/agents/skills/index.d.ts.map +1 -0
- package/dist/agents/skills/index.js +18 -0
- package/dist/agents/skills/index.js.map +1 -0
- package/dist/agents/skills/interactions.skill.d.ts +3 -0
- package/dist/agents/skills/interactions.skill.d.ts.map +1 -0
- package/dist/agents/skills/interactions.skill.js +31 -0
- package/dist/agents/skills/interactions.skill.js.map +1 -0
- package/dist/agents/skills/registry.d.ts +23 -0
- package/dist/agents/skills/registry.d.ts.map +1 -0
- package/dist/agents/skills/registry.js +75 -0
- package/dist/agents/skills/registry.js.map +1 -0
- package/dist/agents/skills/skill-injection.d.ts +52 -0
- package/dist/agents/skills/skill-injection.d.ts.map +1 -0
- package/dist/agents/skills/skill-injection.js +210 -0
- package/dist/agents/skills/skill-injection.js.map +1 -0
- package/dist/agents/skills/types.d.ts +12 -0
- package/dist/agents/skills/types.d.ts.map +1 -0
- package/dist/agents/skills/types.js +3 -0
- package/dist/agents/skills/types.js.map +1 -0
- package/dist/builder-api-config.d.ts +7 -0
- package/dist/builder-api-config.d.ts.map +1 -1
- package/dist/builder-api-config.js.map +1 -1
- package/dist/context.d.ts +7 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +19 -0
- package/dist/context.js.map +1 -1
- package/dist/create-builder-api.d.ts +2 -3
- package/dist/create-builder-api.d.ts.map +1 -1
- package/dist/create-builder-api.js +18 -0
- package/dist/create-builder-api.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/library/list-library-items.d.ts +2 -2
- package/dist/lib/library/list-library-items.d.ts.map +1 -1
- package/dist/lib/library/list-library-items.js +49 -7
- package/dist/lib/library/list-library-items.js.map +1 -1
- package/dist/lib/notebooks/notebook-assistant.d.ts +12 -0
- package/dist/lib/notebooks/notebook-assistant.d.ts.map +1 -1
- package/dist/lib/notebooks/notebook-assistant.js +35 -8
- package/dist/lib/notebooks/notebook-assistant.js.map +1 -1
- package/dist/lib/object-storage/index.d.ts +3 -0
- package/dist/lib/object-storage/index.d.ts.map +1 -0
- package/dist/lib/object-storage/index.js +19 -0
- package/dist/lib/object-storage/index.js.map +1 -0
- package/dist/lib/object-storage/keys.d.ts +10 -0
- package/dist/lib/object-storage/keys.d.ts.map +1 -0
- package/dist/lib/object-storage/keys.js +51 -0
- package/dist/lib/object-storage/keys.js.map +1 -0
- package/dist/lib/object-storage/s3-object-store.d.ts +14 -0
- package/dist/lib/object-storage/s3-object-store.d.ts.map +1 -0
- package/dist/lib/object-storage/s3-object-store.js +64 -0
- package/dist/lib/object-storage/s3-object-store.js.map +1 -0
- package/dist/lib/session-pages/artifact-quality-audit.d.ts +16 -0
- package/dist/lib/session-pages/artifact-quality-audit.d.ts.map +1 -0
- package/dist/lib/session-pages/artifact-quality-audit.js +293 -0
- package/dist/lib/session-pages/artifact-quality-audit.js.map +1 -0
- package/dist/lib/session-pages/artifact-storage.d.ts +3 -0
- package/dist/lib/session-pages/artifact-storage.d.ts.map +1 -1
- package/dist/lib/session-pages/artifact-storage.js +94 -85
- package/dist/lib/session-pages/artifact-storage.js.map +1 -1
- package/dist/lib/session-pages/audit-session-html.d.ts +23 -0
- package/dist/lib/session-pages/audit-session-html.d.ts.map +1 -0
- package/dist/lib/session-pages/audit-session-html.js +82 -0
- package/dist/lib/session-pages/audit-session-html.js.map +1 -0
- package/dist/lib/session-pages/contrast-check.d.ts +25 -0
- package/dist/lib/session-pages/contrast-check.d.ts.map +1 -0
- package/dist/lib/session-pages/contrast-check.js +290 -0
- package/dist/lib/session-pages/contrast-check.js.map +1 -0
- package/dist/lib/session-pages/deferred-quality-rules.d.ts +7 -0
- package/dist/lib/session-pages/deferred-quality-rules.d.ts.map +1 -0
- package/dist/lib/session-pages/deferred-quality-rules.js +25 -0
- package/dist/lib/session-pages/deferred-quality-rules.js.map +1 -0
- package/dist/lib/session-pages/delete-session-artifact.d.ts.map +1 -1
- package/dist/lib/session-pages/delete-session-artifact.js +12 -41
- package/dist/lib/session-pages/delete-session-artifact.js.map +1 -1
- package/dist/lib/session-pages/delete-session-artifacts.d.ts +0 -6
- package/dist/lib/session-pages/delete-session-artifacts.d.ts.map +1 -1
- package/dist/lib/session-pages/delete-session-artifacts.js +51 -15
- package/dist/lib/session-pages/delete-session-artifacts.js.map +1 -1
- package/dist/lib/session-pages/list-session-artifacts.d.ts.map +1 -1
- package/dist/lib/session-pages/list-session-artifacts.js +48 -48
- package/dist/lib/session-pages/list-session-artifacts.js.map +1 -1
- package/dist/lib/session-pages/read-session-artifacts.d.ts.map +1 -1
- package/dist/lib/session-pages/read-session-artifacts.js +4 -26
- package/dist/lib/session-pages/read-session-artifacts.js.map +1 -1
- package/dist/lib/session-pages/resolve-session-account-id.d.ts +3 -0
- package/dist/lib/session-pages/resolve-session-account-id.d.ts.map +1 -0
- package/dist/lib/session-pages/resolve-session-account-id.js +31 -0
- package/dist/lib/session-pages/resolve-session-account-id.js.map +1 -0
- package/dist/lib/session-pages/write-session-artifacts.d.ts +0 -2
- package/dist/lib/session-pages/write-session-artifacts.d.ts.map +1 -1
- package/dist/lib/session-pages/write-session-artifacts.js +8 -0
- package/dist/lib/session-pages/write-session-artifacts.js.map +1 -1
- package/dist/lib/session-plans/build-plan.d.ts +64 -0
- package/dist/lib/session-plans/build-plan.d.ts.map +1 -0
- package/dist/lib/session-plans/build-plan.js +134 -0
- package/dist/lib/session-plans/build-plan.js.map +1 -0
- package/dist/lib/yjs-pending/flush-lock.d.ts +6 -0
- package/dist/lib/yjs-pending/flush-lock.d.ts.map +1 -0
- package/dist/lib/yjs-pending/flush-lock.js +43 -0
- package/dist/lib/yjs-pending/flush-lock.js.map +1 -0
- package/dist/lib/yjs-pending/flush-worker.d.ts +5 -0
- package/dist/lib/yjs-pending/flush-worker.d.ts.map +1 -0
- package/dist/lib/yjs-pending/flush-worker.js +75 -0
- package/dist/lib/yjs-pending/flush-worker.js.map +1 -0
- package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts +22 -0
- package/dist/lib/yjs-pending/yjs-pending-updates-repository.d.ts.map +1 -0
- package/dist/lib/yjs-pending/yjs-pending-updates-repository.js +3 -0
- package/dist/lib/yjs-pending/yjs-pending-updates-repository.js.map +1 -0
- package/dist/lib/yjs-pending/yjs-persistence.d.ts +23 -0
- package/dist/lib/yjs-pending/yjs-persistence.d.ts.map +1 -0
- package/dist/lib/yjs-pending/yjs-persistence.js +222 -0
- package/dist/lib/yjs-pending/yjs-persistence.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 +1 -6
- package/dist/realtime/reset-session-artifact-y-docs.js.map +1 -1
- package/dist/realtime/session-artifact-y-socket-io.d.ts +0 -5
- package/dist/realtime/session-artifact-y-socket-io.d.ts.map +1 -1
- package/dist/realtime/session-artifact-y-socket-io.js +5 -69
- package/dist/realtime/session-artifact-y-socket-io.js.map +1 -1
- package/dist/realtime/session-artifact-yjs-store.d.ts +3 -35
- package/dist/realtime/session-artifact-yjs-store.d.ts.map +1 -1
- package/dist/realtime/session-artifact-yjs-store.js +75 -235
- package/dist/realtime/session-artifact-yjs-store.js.map +1 -1
- package/dist/routes/chats/multiUserMessages.d.ts.map +1 -1
- package/dist/routes/chats/multiUserMessages.js +2 -1
- package/dist/routes/chats/multiUserMessages.js.map +1 -1
- package/dist/routes/chats/stream.d.ts.map +1 -1
- package/dist/routes/chats/stream.js +2 -1
- package/dist/routes/chats/stream.js.map +1 -1
- package/dist/routes/notebooks/assistant-generate.d.ts.map +1 -1
- package/dist/routes/notebooks/assistant-generate.js +3 -1
- package/dist/routes/notebooks/assistant-generate.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +26 -6
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/skills.d.ts +2 -0
- package/dist/routes/skills.d.ts.map +1 -0
- package/dist/routes/skills.js +140 -0
- package/dist/routes/skills.js.map +1 -0
- package/dist/routes/tenants/credentials.js +3 -3
- package/dist/routes/tenants/credentials.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-session-artifact.js","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-session-artifact.js","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":";;AAaA,sDAsBC;AAnCD,0FAAsF;AACtF,sEAA2F;AAC3F,yDAG2B;AAC3B,qEAA+D;AAC/D,mCAA+C;AAMxC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,YAAoB;;IAEpB,MAAM,cAAc,GAAG,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAA;IAC1D,IAAI,CAAC,CAAC,MAAM,IAAA,iDAA8B,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,+BAA+B,cAAc,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,IAAA,uDAA0B,GAAE,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IACrE,MAAM,IAAA,6CAA0B,EAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAE3D,MAAM,SAAS,GAAG,MAAM,IAAA,6CAAoB,EAAC,SAAS,CAAC,CAAA;IACvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAA,0CAAqB,EAAC,SAAS,CAAC,CAAA;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GACf,MAAA,MAAA,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,IAAI,mCAAI,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,CAAA;QAClF,MAAM,IAAA,yCAAoB,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
export interface DeleteAllSessionArtifactsResult {
|
|
2
2
|
removed: string[];
|
|
3
3
|
}
|
|
4
|
-
/**
|
|
5
|
-
* Remove every artifact of a session: evicts the Yjs documents from memory and
|
|
6
|
-
* deletes the whole session directory (content, latest state, snapshots).
|
|
7
|
-
* Used when a session/chat is deleted so test and abandoned sessions leave no
|
|
8
|
-
* garbage on disk. Safe to call for sessions without artifacts.
|
|
9
|
-
*/
|
|
10
4
|
export declare function deleteAllSessionArtifacts(sessionId: string): Promise<DeleteAllSessionArtifactsResult>;
|
|
11
5
|
//# sourceMappingURL=delete-session-artifacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifacts.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,+BAA+B,CAAC,CA6B1C"}
|
|
@@ -1,26 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
36
|
exports.deleteAllSessionArtifacts = deleteAllSessionArtifacts;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
37
|
const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
|
|
38
|
+
const context_1 = require("../../context");
|
|
39
|
+
const list_library_items_1 = require("../library/list-library-items");
|
|
40
|
+
const s3 = __importStar(require("../object-storage/s3-object-store"));
|
|
41
|
+
const keys_1 = require("../object-storage/keys");
|
|
42
|
+
const resolve_session_account_id_1 = require("./resolve-session-account-id");
|
|
10
43
|
const list_session_artifacts_1 = require("./list-session-artifacts");
|
|
11
44
|
const paths_1 = require("./paths");
|
|
12
|
-
/**
|
|
13
|
-
* Remove every artifact of a session: evicts the Yjs documents from memory and
|
|
14
|
-
* deletes the whole session directory (content, latest state, snapshots).
|
|
15
|
-
* Used when a session/chat is deleted so test and abandoned sessions leave no
|
|
16
|
-
* garbage on disk. Safe to call for sessions without artifacts.
|
|
17
|
-
*/
|
|
18
45
|
async function deleteAllSessionArtifacts(sessionId) {
|
|
19
46
|
const store = (0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)();
|
|
20
47
|
let removed = [];
|
|
21
48
|
try {
|
|
22
|
-
|
|
23
|
-
removed = artifacts.map((artifact) => (0, paths_1.normalizeArtifactPath)(artifact.path));
|
|
49
|
+
removed = (await (0, list_session_artifacts_1.listSessionArtifacts)(sessionId)).map((artifact) => (0, paths_1.normalizeArtifactPath)(artifact.path));
|
|
24
50
|
}
|
|
25
51
|
catch (_a) {
|
|
26
52
|
removed = [];
|
|
@@ -28,8 +54,18 @@ async function deleteAllSessionArtifacts(sessionId) {
|
|
|
28
54
|
for (const artifactPath of removed) {
|
|
29
55
|
store.evictDocument(sessionId, artifactPath);
|
|
30
56
|
}
|
|
31
|
-
|
|
32
|
-
|
|
57
|
+
try {
|
|
58
|
+
const accountId = await (0, resolve_session_account_id_1.resolveSessionAccountId)(sessionId);
|
|
59
|
+
await (0, context_1.getYjsPendingUpdatesRepository)().deleteByDocumentIdPrefix(`session:${sessionId}:`);
|
|
60
|
+
await s3.deleteByPrefix((0, keys_1.sessionArtifactsPrefix)(accountId, sessionId));
|
|
61
|
+
}
|
|
62
|
+
catch (_b) {
|
|
63
|
+
await (0, context_1.getYjsPendingUpdatesRepository)()
|
|
64
|
+
.deleteByDocumentIdPrefix(`session:${sessionId}:`)
|
|
65
|
+
.catch(() => undefined);
|
|
66
|
+
}
|
|
67
|
+
(0, resolve_session_account_id_1.clearSessionAccountIdCache)(sessionId);
|
|
68
|
+
await (0, list_library_items_1.clearChatHasArtifacts)(sessionId);
|
|
33
69
|
return { removed };
|
|
34
70
|
}
|
|
35
71
|
//# sourceMappingURL=delete-session-artifacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifacts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,8DA+BC;AA5CD,0FAAsF;AACtF,2CAA8D;AAC9D,sEAAqE;AACrE,sEAAuD;AACvD,iDAA+D;AAC/D,6EAAkG;AAClG,qEAA+D;AAC/D,mCAA+C;AAMxC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB;IAEjB,MAAM,KAAK,GAAG,IAAA,uDAA0B,GAAE,CAAA;IAE1C,IAAI,OAAO,GAAa,EAAE,CAAA;IAC1B,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,IAAA,6CAAoB,EAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACjE,IAAA,6BAAqB,EAAC,QAAQ,CAAC,IAAI,CAAC,CACrC,CAAA;IACH,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;QACnC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,oDAAuB,EAAC,SAAS,CAAC,CAAA;QAC1D,MAAM,IAAA,wCAA8B,GAAE,CAAC,wBAAwB,CAAC,WAAW,SAAS,GAAG,CAAC,CAAA;QACxF,MAAM,EAAE,CAAC,cAAc,CAAC,IAAA,6BAAsB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IACvE,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAA,wCAA8B,GAAE;aACnC,wBAAwB,CAAC,WAAW,SAAS,GAAG,CAAC;aACjD,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC3B,CAAC;IAED,IAAA,uDAA0B,EAAC,SAAS,CAAC,CAAA;IACrC,MAAM,IAAA,0CAAqB,EAAC,SAAS,CAAC,CAAA;IACtC,OAAO,EAAE,OAAO,EAAE,CAAA;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAiB7F"}
|
|
@@ -1,56 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
36
|
exports.listSessionArtifacts = listSessionArtifacts;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const paths_1 = require("./paths");
|
|
11
|
-
async function walk(dir, root, out) {
|
|
12
|
-
let entries;
|
|
13
|
-
try {
|
|
14
|
-
entries = await promises_1.default.readdir(dir, { withFileTypes: true });
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
if (error.code === 'ENOENT')
|
|
18
|
-
return;
|
|
19
|
-
throw error;
|
|
20
|
-
}
|
|
21
|
-
for (const entry of entries) {
|
|
22
|
-
const absolute = node_path_1.default.join(dir, entry.name);
|
|
23
|
-
if (entry.isDirectory()) {
|
|
24
|
-
await walk(absolute, root, out);
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
if (!entry.isFile())
|
|
28
|
-
continue;
|
|
29
|
-
const relative = node_path_1.default.relative(root, absolute).split(node_path_1.default.sep).join('/');
|
|
30
|
-
const stat = await promises_1.default.stat(absolute);
|
|
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);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
37
|
+
const keys_1 = require("../object-storage/keys");
|
|
38
|
+
const s3 = __importStar(require("../object-storage/s3-object-store"));
|
|
39
|
+
const resolve_session_account_id_1 = require("./resolve-session-account-id");
|
|
44
40
|
async function listSessionArtifacts(sessionId) {
|
|
45
|
-
|
|
46
|
-
const
|
|
41
|
+
const accountId = await (0, resolve_session_account_id_1.resolveSessionAccountId)(sessionId);
|
|
42
|
+
const prefix = (0, keys_1.sessionArtifactsPrefix)(accountId, sessionId);
|
|
43
|
+
const objects = await s3.listKeysByPrefix(prefix);
|
|
47
44
|
const byPath = new Map();
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
for (const { key, size } of objects) {
|
|
46
|
+
if (!(0, keys_1.isSessionArtifactUserFacingKey)(prefix, key)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const relative = (0, keys_1.relativeSessionArtifactPath)(prefix, key);
|
|
50
|
+
byPath.set(relative, size);
|
|
53
51
|
}
|
|
54
|
-
return
|
|
52
|
+
return [...byPath.entries()]
|
|
53
|
+
.map(([artifactPath, bytes]) => ({ path: artifactPath, bytes }))
|
|
54
|
+
.sort((a, b) => a.path.localeCompare(b.path));
|
|
55
55
|
}
|
|
56
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,oDAiBC;AA9BD,iDAI+B;AAC/B,sEAAuD;AACvD,6EAAsE;AAO/D,KAAK,UAAU,oBAAoB,CAAC,SAAiB;IAC1D,MAAM,SAAS,GAAG,MAAM,IAAA,oDAAuB,EAAC,SAAS,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,IAAA,6BAAsB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IAExC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,IAAA,qCAA8B,EAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACjD,SAAQ;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,IAAA,kCAA2B,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACzD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;SAC/D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/read-session-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/read-session-artifacts.ts"],"names":[],"mappings":"AAIA,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,CAErG;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAyBtC"}
|
|
@@ -1,33 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.sessionArtifactExists = sessionArtifactExists;
|
|
7
4
|
exports.readSessionArtifacts = readSessionArtifacts;
|
|
8
5
|
const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
|
|
9
|
-
const
|
|
6
|
+
const artifact_storage_1 = require("./artifact-storage");
|
|
10
7
|
const paths_1 = require("./paths");
|
|
11
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
12
8
|
async function sessionArtifactExists(sessionId, artifactPath) {
|
|
13
|
-
|
|
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);
|
|
9
|
+
return (0, artifact_storage_1.sessionArtifactExistsOnStorage)(sessionId, (0, paths_1.normalizeArtifactPath)(artifactPath));
|
|
31
10
|
}
|
|
32
11
|
async function readSessionArtifacts(sessionId, paths) {
|
|
33
12
|
const results = [];
|
|
@@ -42,12 +21,11 @@ async function readSessionArtifacts(sessionId, paths) {
|
|
|
42
21
|
});
|
|
43
22
|
continue;
|
|
44
23
|
}
|
|
45
|
-
const content = await
|
|
46
|
-
const bytes = Buffer.byteLength(content, 'utf8');
|
|
24
|
+
const content = await (0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().getLatestText(sessionId, artifactPath);
|
|
47
25
|
results.push({
|
|
48
26
|
path: artifactPath,
|
|
49
27
|
found: true,
|
|
50
|
-
bytes,
|
|
28
|
+
bytes: Buffer.byteLength(content, 'utf8'),
|
|
51
29
|
content,
|
|
52
30
|
});
|
|
53
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/read-session-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/read-session-artifacts.ts"],"names":[],"mappings":";;AAWA,sDAEC;AAED,oDA4BC;AA3CD,0FAAsF;AACtF,yDAAmE;AACnE,mCAA+C;AASxC,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,YAAoB;IACjF,OAAO,IAAA,iDAA8B,EAAC,SAAS,EAAE,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAC,CAAA;AACvF,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,IAAA,uDAA0B,GAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACzF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;YACzC,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-session-account-id.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/resolve-session-account-id.ts"],"names":[],"mappings":"AAIA,wBAAgB,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAMnE;AAED,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBhF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearSessionAccountIdCache = clearSessionAccountIdCache;
|
|
4
|
+
exports.resolveSessionAccountId = resolveSessionAccountId;
|
|
5
|
+
const context_1 = require("../../context");
|
|
6
|
+
const SESSION_ACCOUNT_CACHE = new Map();
|
|
7
|
+
function clearSessionAccountIdCache(sessionId) {
|
|
8
|
+
if (sessionId) {
|
|
9
|
+
SESSION_ACCOUNT_CACHE.delete(sessionId);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
SESSION_ACCOUNT_CACHE.clear();
|
|
13
|
+
}
|
|
14
|
+
async function resolveSessionAccountId(sessionId) {
|
|
15
|
+
var _a;
|
|
16
|
+
const cached = SESSION_ACCOUNT_CACHE.get(sessionId);
|
|
17
|
+
if (cached) {
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
const chat = await (0, context_1.getBuilderApiRepositories)().chatRepository.findById(sessionId);
|
|
21
|
+
if (!chat) {
|
|
22
|
+
throw new Error(`Session chat not found: ${sessionId}`);
|
|
23
|
+
}
|
|
24
|
+
const accountId = (_a = chat.tenants) === null || _a === void 0 ? void 0 : _a.account;
|
|
25
|
+
if (!accountId) {
|
|
26
|
+
throw new Error(`Session ${sessionId} has no tenants.account`);
|
|
27
|
+
}
|
|
28
|
+
SESSION_ACCOUNT_CACHE.set(sessionId, accountId);
|
|
29
|
+
return accountId;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=resolve-session-account-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-session-account-id.js","sourceRoot":"","sources":["../../../src/lib/session-pages/resolve-session-account-id.ts"],"names":[],"mappings":";;AAIA,gEAMC;AAED,0DAkBC;AA9BD,2CAAyD;AAEzD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAA;AAEvD,SAAgB,0BAA0B,CAAC,SAAkB;IAC3D,IAAI,SAAS,EAAE,CAAC;QACd,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACvC,OAAM;IACR,CAAC;IACD,qBAAqB,CAAC,KAAK,EAAE,CAAA;AAC/B,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAAC,SAAiB;;IAC7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACnD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,mCAAyB,GAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,SAAS,GAAG,MAAC,IAAI,CAAC,OAA4C,0CAAE,OAAO,CAAA;IAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,yBAAyB,CAAC,CAAA;IAChE,CAAC;IAED,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC/C,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
export interface SessionArtifactFile {
|
|
2
2
|
path: string;
|
|
3
3
|
content: string;
|
|
4
|
-
/** For .html files: when true, content is a body/main fragment wrapped in a Pico template server-side. */
|
|
5
4
|
fragment?: boolean;
|
|
6
|
-
/** Optional document title when publishing an HTML fragment. */
|
|
7
5
|
title?: string;
|
|
8
6
|
}
|
|
9
7
|
export interface WriteSessionArtifactsInput {
|
|
@@ -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":"AAMA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;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,CAmCtC"}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.writeSessionArtifacts = writeSessionArtifacts;
|
|
4
4
|
const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
|
|
5
|
+
const list_library_items_1 = require("../library/list-library-items");
|
|
5
6
|
const html_artifact_template_1 = require("./html-artifact-template");
|
|
7
|
+
const list_session_artifacts_1 = require("./list-session-artifacts");
|
|
6
8
|
const paths_1 = require("./paths");
|
|
7
9
|
async function writeSessionArtifacts(input) {
|
|
10
|
+
var _a, _b, _c, _d, _e;
|
|
8
11
|
if (input.files.length === 0) {
|
|
9
12
|
return { artifacts: [] };
|
|
10
13
|
}
|
|
@@ -24,6 +27,11 @@ async function writeSessionArtifacts(input) {
|
|
|
24
27
|
bytes: published.bytes,
|
|
25
28
|
});
|
|
26
29
|
}
|
|
30
|
+
const allFiles = await (0, list_session_artifacts_1.listSessionArtifacts)(input.sessionId);
|
|
31
|
+
const previewPath = (_d = (_b = (_a = allFiles.find((file) => file.path === 'index.html')) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : (_c = allFiles[0]) === null || _c === void 0 ? void 0 : _c.path) !== null && _d !== void 0 ? _d : (_e = artifacts[0]) === null || _e === void 0 ? void 0 : _e.path;
|
|
32
|
+
if (previewPath) {
|
|
33
|
+
await (0, list_library_items_1.markChatHasArtifacts)(input.sessionId, previewPath, allFiles.length);
|
|
34
|
+
}
|
|
27
35
|
return {
|
|
28
36
|
artifacts,
|
|
29
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/write-session-artifacts.ts"],"names":[],"mappings":";;AA2BA,
|
|
1
|
+
{"version":3,"file":"write-session-artifacts.js","sourceRoot":"","sources":["../../../src/lib/session-pages/write-session-artifacts.ts"],"names":[],"mappings":";;AA2BA,sDAqCC;AAhED,0FAAsF;AACtF,sEAAoE;AACpE,qEAAqE;AACrE,qEAA+D;AAC/D,mCAA+C;AAuBxC,KAAK,UAAU,qBAAqB,CACzC,KAAiC;;IAEjC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAA;IAC1B,CAAC;IACD,MAAM,KAAK,GAAG,IAAA,uDAA0B,GAAE,CAAA;IAC1C,MAAM,SAAS,GAA+B,EAAE,CAAA;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,OAAO,GACX,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1C,CAAC,CAAC,IAAA,mDAA0B,EAAC,IAAI,CAAC,OAAO,EAAE;gBACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;YACF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;QAClB,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QAC3F,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,IAAA,6CAAoB,EAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5D,MAAM,WAAW,GACf,MAAA,MAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,IAAI,mCACzD,MAAA,QAAQ,CAAC,CAAC,CAAC,0CAAE,IAAI,mCACjB,MAAA,SAAS,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAA;IACpB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAA,yCAAoB,EAAC,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export type BuildTaskStatus = 'pending' | 'in_progress' | 'done' | 'skipped';
|
|
2
|
+
export interface BuildTask {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
description: string;
|
|
6
|
+
status: BuildTaskStatus;
|
|
7
|
+
/** Artifact paths this task produced or edited. */
|
|
8
|
+
paths?: string[];
|
|
9
|
+
note?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Non-blocking audit findings deferred to the consistency-pass task. */
|
|
12
|
+
export interface OpenAdvisory {
|
|
13
|
+
path: string;
|
|
14
|
+
/** Full advisory lines as returned by publish (`path: [rule] message…`). */
|
|
15
|
+
findings: string[];
|
|
16
|
+
recordedAt: string;
|
|
17
|
+
}
|
|
18
|
+
export interface BuildPlan {
|
|
19
|
+
title: string;
|
|
20
|
+
/** Design contract for the whole session: exact palette hexes, font pairing,
|
|
21
|
+
* tone, layout pack. Injected into every artifact subagent. */
|
|
22
|
+
designBrief?: string;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
updatedAt: string;
|
|
25
|
+
tasks: BuildTask[];
|
|
26
|
+
/** Quality advisories waiting for the mandatory consistency pass. */
|
|
27
|
+
openAdvisories?: OpenAdvisory[];
|
|
28
|
+
}
|
|
29
|
+
export declare const BUILD_PLAN_PATH = "plan.json";
|
|
30
|
+
/** Last task must be an explicit consistency/polish pass (enforced at create). */
|
|
31
|
+
export declare function isConsistencyPassTask(task: {
|
|
32
|
+
title: string;
|
|
33
|
+
description: string;
|
|
34
|
+
}): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* designBrief must be specific enough to build from — accent hex, fonts, pack.
|
|
37
|
+
* Vague briefs produce Inter/indigo template pages.
|
|
38
|
+
*/
|
|
39
|
+
export declare function assertDesignBriefQuality(brief: string): void;
|
|
40
|
+
export declare function createBuildPlan(title: string, tasks: Array<{
|
|
41
|
+
title: string;
|
|
42
|
+
description: string;
|
|
43
|
+
}>, now: string, designBrief?: string): BuildPlan;
|
|
44
|
+
/** Merge publish advisories into the plan for the consistency pass to consume. */
|
|
45
|
+
export declare function recordOpenAdvisories(plan: BuildPlan, advisories: string[], now: string): BuildPlan;
|
|
46
|
+
/** Drop advisories for paths that were polished (or all when paths omitted). */
|
|
47
|
+
export declare function clearOpenAdvisories(plan: BuildPlan, paths?: string[], now?: string): BuildPlan;
|
|
48
|
+
export declare function parseBuildPlan(content: string): BuildPlan | null;
|
|
49
|
+
export declare function serializeBuildPlan(plan: BuildPlan): string;
|
|
50
|
+
export interface TaskUpdate {
|
|
51
|
+
taskId: string;
|
|
52
|
+
status: BuildTaskStatus;
|
|
53
|
+
paths?: string[];
|
|
54
|
+
note?: string;
|
|
55
|
+
}
|
|
56
|
+
/** Apply a task update; returns null when the task id is unknown. */
|
|
57
|
+
export declare function applyTaskUpdate(plan: BuildPlan, update: TaskUpdate, now: string): BuildPlan | null;
|
|
58
|
+
export declare function nextPendingTask(plan: BuildPlan): BuildTask | undefined;
|
|
59
|
+
export declare function planProgress(plan: BuildPlan): {
|
|
60
|
+
done: number;
|
|
61
|
+
total: number;
|
|
62
|
+
remaining: number;
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=build-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-plan.d.ts","sourceRoot":"","sources":["../../../src/lib/session-plans/build-plan.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAA;AAE5E,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,eAAe,CAAA;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb;mEAC+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAChC;AAED,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE3F;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAwB5D;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,EACpD,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,GACnB,SAAS,CAcX;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,GAAG,EAAE,MAAM,GACV,SAAS,CAoBX;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,SAAS,CAUX;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAUhE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAclG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAEtE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAGhG"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BUILD_PLAN_PATH = void 0;
|
|
4
|
+
exports.isConsistencyPassTask = isConsistencyPassTask;
|
|
5
|
+
exports.assertDesignBriefQuality = assertDesignBriefQuality;
|
|
6
|
+
exports.createBuildPlan = createBuildPlan;
|
|
7
|
+
exports.recordOpenAdvisories = recordOpenAdvisories;
|
|
8
|
+
exports.clearOpenAdvisories = clearOpenAdvisories;
|
|
9
|
+
exports.parseBuildPlan = parseBuildPlan;
|
|
10
|
+
exports.serializeBuildPlan = serializeBuildPlan;
|
|
11
|
+
exports.applyTaskUpdate = applyTaskUpdate;
|
|
12
|
+
exports.nextPendingTask = nextPendingTask;
|
|
13
|
+
exports.planProgress = planProgress;
|
|
14
|
+
exports.BUILD_PLAN_PATH = 'plan.json';
|
|
15
|
+
/** Last task must be an explicit consistency/polish pass (enforced at create). */
|
|
16
|
+
function isConsistencyPassTask(task) {
|
|
17
|
+
return /\b(consistency|polish|qa|quality)\b/i.test(`${task.title} ${task.description}`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* designBrief must be specific enough to build from — accent hex, fonts, pack.
|
|
21
|
+
* Vague briefs produce Inter/indigo template pages.
|
|
22
|
+
*/
|
|
23
|
+
function assertDesignBriefQuality(brief) {
|
|
24
|
+
if (!/#[0-9a-fA-F]{3,8}\b/.test(brief)) {
|
|
25
|
+
throw new Error('designBrief must include an exact accent hex (e.g. #0EA5E9). Pick a topic-fit color — avoid default indigo.');
|
|
26
|
+
}
|
|
27
|
+
if (!/\b(product|launch|editorial)\b/i.test(brief)) {
|
|
28
|
+
throw new Error('designBrief must name a layout pack: product | launch | editorial.');
|
|
29
|
+
}
|
|
30
|
+
if (!/fonts\.googleapis\.com/i.test(brief) &&
|
|
31
|
+
!/\b(?:fonts?|typeface|typography)\b/i.test(brief)) {
|
|
32
|
+
throw new Error('designBrief must name a Google Font pairing (display + body), e.g. "Manrope + Source Sans 3".');
|
|
33
|
+
}
|
|
34
|
+
if (!/\b(?:atmosphere|wash|mesh|grain|glass|orb|blur|gradient)\b/i.test(brief)) {
|
|
35
|
+
throw new Error('designBrief must include an atmosphere note (e.g. soft accent wash, blur orb, glass nav) so pages are not flat white.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function createBuildPlan(title, tasks, now, designBrief) {
|
|
39
|
+
return {
|
|
40
|
+
title,
|
|
41
|
+
...(designBrief ? { designBrief } : {}),
|
|
42
|
+
createdAt: now,
|
|
43
|
+
updatedAt: now,
|
|
44
|
+
tasks: tasks.map((task, index) => ({
|
|
45
|
+
id: `t${index + 1}`,
|
|
46
|
+
title: task.title,
|
|
47
|
+
description: task.description,
|
|
48
|
+
status: 'pending',
|
|
49
|
+
})),
|
|
50
|
+
openAdvisories: [],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Merge publish advisories into the plan for the consistency pass to consume. */
|
|
54
|
+
function recordOpenAdvisories(plan, advisories, now) {
|
|
55
|
+
var _a, _b, _c;
|
|
56
|
+
if (advisories.length === 0)
|
|
57
|
+
return plan;
|
|
58
|
+
const byPath = new Map();
|
|
59
|
+
for (const existing of (_a = plan.openAdvisories) !== null && _a !== void 0 ? _a : []) {
|
|
60
|
+
byPath.set(existing.path, [...existing.findings]);
|
|
61
|
+
}
|
|
62
|
+
for (const line of advisories) {
|
|
63
|
+
const path = (_b = line.split(':')[0]) === null || _b === void 0 ? void 0 : _b.trim();
|
|
64
|
+
if (!path)
|
|
65
|
+
continue;
|
|
66
|
+
const prev = (_c = byPath.get(path)) !== null && _c !== void 0 ? _c : [];
|
|
67
|
+
if (!prev.includes(line))
|
|
68
|
+
prev.push(line);
|
|
69
|
+
byPath.set(path, prev);
|
|
70
|
+
}
|
|
71
|
+
plan.openAdvisories = [...byPath.entries()].map(([path, findings]) => ({
|
|
72
|
+
path,
|
|
73
|
+
findings,
|
|
74
|
+
recordedAt: now,
|
|
75
|
+
}));
|
|
76
|
+
plan.updatedAt = now;
|
|
77
|
+
return plan;
|
|
78
|
+
}
|
|
79
|
+
/** Drop advisories for paths that were polished (or all when paths omitted). */
|
|
80
|
+
function clearOpenAdvisories(plan, paths, now) {
|
|
81
|
+
var _a;
|
|
82
|
+
if (!((_a = plan.openAdvisories) === null || _a === void 0 ? void 0 : _a.length))
|
|
83
|
+
return plan;
|
|
84
|
+
if (!paths || paths.length === 0) {
|
|
85
|
+
plan.openAdvisories = [];
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const remove = new Set(paths.map((path) => path.replace(/^\.\//, '')));
|
|
89
|
+
plan.openAdvisories = plan.openAdvisories.filter((entry) => !remove.has(entry.path));
|
|
90
|
+
}
|
|
91
|
+
if (now)
|
|
92
|
+
plan.updatedAt = now;
|
|
93
|
+
return plan;
|
|
94
|
+
}
|
|
95
|
+
function parseBuildPlan(content) {
|
|
96
|
+
try {
|
|
97
|
+
const parsed = JSON.parse(content);
|
|
98
|
+
if (!parsed || !Array.isArray(parsed.tasks)) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return parsed;
|
|
102
|
+
}
|
|
103
|
+
catch (_a) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function serializeBuildPlan(plan) {
|
|
108
|
+
return JSON.stringify(plan, null, 2);
|
|
109
|
+
}
|
|
110
|
+
/** Apply a task update; returns null when the task id is unknown. */
|
|
111
|
+
function applyTaskUpdate(plan, update, now) {
|
|
112
|
+
var _a;
|
|
113
|
+
const task = plan.tasks.find((candidate) => candidate.id === update.taskId);
|
|
114
|
+
if (!task) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
task.status = update.status;
|
|
118
|
+
if (update.paths) {
|
|
119
|
+
task.paths = [...new Set([...((_a = task.paths) !== null && _a !== void 0 ? _a : []), ...update.paths])];
|
|
120
|
+
}
|
|
121
|
+
if (update.note !== undefined) {
|
|
122
|
+
task.note = update.note;
|
|
123
|
+
}
|
|
124
|
+
plan.updatedAt = now;
|
|
125
|
+
return plan;
|
|
126
|
+
}
|
|
127
|
+
function nextPendingTask(plan) {
|
|
128
|
+
return plan.tasks.find((task) => task.status === 'pending' || task.status === 'in_progress');
|
|
129
|
+
}
|
|
130
|
+
function planProgress(plan) {
|
|
131
|
+
const done = plan.tasks.filter((task) => task.status === 'done' || task.status === 'skipped').length;
|
|
132
|
+
return { done, total: plan.tasks.length, remaining: plan.tasks.length - done };
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=build-plan.js.map
|