@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":"artifact-storage.js","sourceRoot":"","sources":["../../../src/lib/session-pages/artifact-storage.ts"],"names":[],"mappings":"
|
|
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,23 @@
|
|
|
1
|
+
import { type QualityFinding } from './artifact-quality-audit';
|
|
2
|
+
export interface SessionQualityIssue {
|
|
3
|
+
path: string;
|
|
4
|
+
findings: QualityFinding[];
|
|
5
|
+
}
|
|
6
|
+
export interface SessionQualityReport {
|
|
7
|
+
issues: SessionQualityIssue[];
|
|
8
|
+
/** Actionable findings only (excludes deferred heuristics like contrast). */
|
|
9
|
+
actionableIssues: SessionQualityIssue[];
|
|
10
|
+
/** Flat lines suitable for plan.openAdvisories / tool output (actionable only). */
|
|
11
|
+
advisoryLines: string[];
|
|
12
|
+
errorCount: number;
|
|
13
|
+
warningCount: number;
|
|
14
|
+
deferredWarningCount: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Re-audit every HTML artifact in the session. Used by the consistency pass
|
|
18
|
+
* to prove polish work actually cleared quality findings.
|
|
19
|
+
*/
|
|
20
|
+
export declare function auditSessionHtmlArtifacts(sessionId: string): Promise<SessionQualityReport>;
|
|
21
|
+
/** Compact path → finding lines for openAdvisories storage (actionable only). */
|
|
22
|
+
export declare function sessionQualityToAdvisoryLines(report: SessionQualityReport): string[];
|
|
23
|
+
//# sourceMappingURL=audit-session-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-session-html.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/audit-session-html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAKjF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAC7B,6EAA6E;IAC7E,gBAAgB,EAAE,mBAAmB,EAAE,CAAA;IACvC,mFAAmF;IACnF,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuEhG;AAED,iFAAiF;AACjF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAIpF"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.auditSessionHtmlArtifacts = auditSessionHtmlArtifacts;
|
|
4
|
+
exports.sessionQualityToAdvisoryLines = sessionQualityToAdvisoryLines;
|
|
5
|
+
const artifact_quality_audit_1 = require("./artifact-quality-audit");
|
|
6
|
+
const deferred_quality_rules_1 = require("./deferred-quality-rules");
|
|
7
|
+
const list_session_artifacts_1 = require("./list-session-artifacts");
|
|
8
|
+
const read_session_artifacts_1 = require("./read-session-artifacts");
|
|
9
|
+
/**
|
|
10
|
+
* Re-audit every HTML artifact in the session. Used by the consistency pass
|
|
11
|
+
* to prove polish work actually cleared quality findings.
|
|
12
|
+
*/
|
|
13
|
+
async function auditSessionHtmlArtifacts(sessionId) {
|
|
14
|
+
const files = await (0, list_session_artifacts_1.listSessionArtifacts)(sessionId);
|
|
15
|
+
const htmlPaths = files
|
|
16
|
+
.map((file) => file.path)
|
|
17
|
+
.filter((path) => path.toLowerCase().endsWith('.html') && path !== 'plan.json');
|
|
18
|
+
if (htmlPaths.length === 0) {
|
|
19
|
+
// Empty HTML set used to report clean:true, which let the parent mark the
|
|
20
|
+
// whole plan done after a failed publish left only plan.json on disk.
|
|
21
|
+
const missing = {
|
|
22
|
+
rule: 'missing-html-pages',
|
|
23
|
+
severity: 'error',
|
|
24
|
+
message: 'No HTML artifacts published yet. Call publishSessionArtifacts to create index.html (updateSessionArtifact cannot create files).',
|
|
25
|
+
};
|
|
26
|
+
const issue = { path: '(session)', findings: [missing] };
|
|
27
|
+
return {
|
|
28
|
+
issues: [issue],
|
|
29
|
+
actionableIssues: [issue],
|
|
30
|
+
advisoryLines: [`[error] (session): [missing-html-pages] ${missing.message}`],
|
|
31
|
+
errorCount: 1,
|
|
32
|
+
warningCount: 0,
|
|
33
|
+
deferredWarningCount: 0,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const artifacts = await (0, read_session_artifacts_1.readSessionArtifacts)(sessionId, htmlPaths);
|
|
37
|
+
const issues = [];
|
|
38
|
+
const actionableIssues = [];
|
|
39
|
+
let errorCount = 0;
|
|
40
|
+
let warningCount = 0;
|
|
41
|
+
let deferredWarningCount = 0;
|
|
42
|
+
for (const artifact of artifacts) {
|
|
43
|
+
if (!artifact.found || !artifact.content)
|
|
44
|
+
continue;
|
|
45
|
+
const findings = (0, artifact_quality_audit_1.auditHtmlArtifact)(artifact.content).findings;
|
|
46
|
+
if (findings.length === 0)
|
|
47
|
+
continue;
|
|
48
|
+
issues.push({ path: artifact.path, findings });
|
|
49
|
+
const actionable = [];
|
|
50
|
+
for (const finding of findings) {
|
|
51
|
+
if (finding.severity === 'error') {
|
|
52
|
+
errorCount += 1;
|
|
53
|
+
actionable.push(finding);
|
|
54
|
+
}
|
|
55
|
+
else if ((0, deferred_quality_rules_1.isDeferredQualityRule)(finding.rule)) {
|
|
56
|
+
deferredWarningCount += 1;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Non-error warnings are informational only — never drive consistency
|
|
60
|
+
// subagents (that caused endless same-page update loops).
|
|
61
|
+
warningCount += 1;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (actionable.length > 0) {
|
|
65
|
+
actionableIssues.push({ path: artifact.path, findings: actionable });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const advisoryLines = actionableIssues.flatMap((issue) => issue.findings.map((finding) => `[${finding.severity}] ${issue.path}: [${finding.rule}] ${finding.message}`));
|
|
69
|
+
return {
|
|
70
|
+
issues,
|
|
71
|
+
actionableIssues,
|
|
72
|
+
advisoryLines,
|
|
73
|
+
errorCount,
|
|
74
|
+
warningCount,
|
|
75
|
+
deferredWarningCount,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Compact path → finding lines for openAdvisories storage (actionable only). */
|
|
79
|
+
function sessionQualityToAdvisoryLines(report) {
|
|
80
|
+
return report.actionableIssues.flatMap((issue) => issue.findings.map((finding) => `${issue.path}: [${finding.rule}] ${finding.message}`));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=audit-session-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-session-html.js","sourceRoot":"","sources":["../../../src/lib/session-pages/audit-session-html.ts"],"names":[],"mappings":";;AAyBA,8DAuEC;AAGD,sEAIC;AAvGD,qEAAiF;AACjF,qEAAgE;AAChE,qEAA+D;AAC/D,qEAA+D;AAkB/D;;;GAGG;AACI,KAAK,UAAU,yBAAyB,CAAC,SAAiB;IAC/D,MAAM,KAAK,GAAG,MAAM,IAAA,6CAAoB,EAAC,SAAS,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,KAAK;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,WAAW,CAAC,CAAA;IAEjF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,OAAO,GAAmB;YAC9B,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,OAAO;YACjB,OAAO,EACL,iIAAiI;SACpI,CAAA;QACD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAA;QACxD,OAAO;YACL,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,aAAa,EAAE,CAAC,2CAA2C,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7E,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,oBAAoB,EAAE,CAAC;SACxB,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAA,6CAAoB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAClE,MAAM,MAAM,GAA0B,EAAE,CAAA;IACxC,MAAM,gBAAgB,GAA0B,EAAE,CAAA;IAClD,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,oBAAoB,GAAG,CAAC,CAAA;IAE5B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,SAAQ;QAClD,MAAM,QAAQ,GAAG,IAAA,0CAAiB,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAA;QAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QACnC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;QAE9C,MAAM,UAAU,GAAqB,EAAE,CAAA;QACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,UAAU,IAAI,CAAC,CAAA;gBACf,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC;iBAAM,IAAI,IAAA,8CAAqB,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,oBAAoB,IAAI,CAAC,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,sEAAsE;gBACtE,0DAA0D;gBAC1D,YAAY,IAAI,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAChB,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CACzF,CACF,CAAA;IAED,OAAO;QACL,MAAM;QACN,gBAAgB;QAChB,aAAa;QACb,UAAU;QACV,YAAY;QACZ,oBAAoB;KACrB,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,SAAgB,6BAA6B,CAAC,MAA4B;IACxE,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/C,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CACvF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static WCAG contrast analysis for generated Tailwind pages.
|
|
3
|
+
*
|
|
4
|
+
* Walks the markup with a tag stack, tracking the effective text color and
|
|
5
|
+
* background inherited from Tailwind utility classes (default palette +
|
|
6
|
+
* arbitrary hex values). Every element that directly contains text gets its
|
|
7
|
+
* WCAG contrast ratio checked against the nearest known background.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately conservative: anything unresolvable (CSS variables, gradients,
|
|
10
|
+
* low-alpha backgrounds, inline styles) suppresses checking for that subtree
|
|
11
|
+
* rather than guessing — the goal is zero false positives on egregious
|
|
12
|
+
* failures (white-on-white), not exhaustive coverage.
|
|
13
|
+
*/
|
|
14
|
+
export interface ContrastIssue {
|
|
15
|
+
ratio: number;
|
|
16
|
+
textToken: string;
|
|
17
|
+
bgToken: string;
|
|
18
|
+
snippet: string;
|
|
19
|
+
severity: 'error' | 'warning';
|
|
20
|
+
}
|
|
21
|
+
export declare function contrastRatio(hexA: string, hexB: string): number | null;
|
|
22
|
+
/** CSS custom properties defined with plain hex values in <style> blocks. */
|
|
23
|
+
export declare function extractCssVarColors(html: string): Map<string, string>;
|
|
24
|
+
export declare function checkContrast(html: string): ContrastIssue[];
|
|
25
|
+
//# sourceMappingURL=contrast-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contrast-check.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/contrast-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B;AA4DD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvE;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOrE;AAsGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CA6G3D"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Static WCAG contrast analysis for generated Tailwind pages.
|
|
4
|
+
*
|
|
5
|
+
* Walks the markup with a tag stack, tracking the effective text color and
|
|
6
|
+
* background inherited from Tailwind utility classes (default palette +
|
|
7
|
+
* arbitrary hex values). Every element that directly contains text gets its
|
|
8
|
+
* WCAG contrast ratio checked against the nearest known background.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately conservative: anything unresolvable (CSS variables, gradients,
|
|
11
|
+
* low-alpha backgrounds, inline styles) suppresses checking for that subtree
|
|
12
|
+
* rather than guessing — the goal is zero false positives on egregious
|
|
13
|
+
* failures (white-on-white), not exhaustive coverage.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.contrastRatio = contrastRatio;
|
|
17
|
+
exports.extractCssVarColors = extractCssVarColors;
|
|
18
|
+
exports.checkContrast = checkContrast;
|
|
19
|
+
const SHADES = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'];
|
|
20
|
+
// Tailwind v3 default palette.
|
|
21
|
+
const FAMILIES = {
|
|
22
|
+
slate: ['f8fafc', 'f1f5f9', 'e2e8f0', 'cbd5e1', '94a3b8', '64748b', '475569', '334155', '1e293b', '0f172a', '020617'],
|
|
23
|
+
gray: ['f9fafb', 'f3f4f6', 'e5e7eb', 'd1d5db', '9ca3af', '6b7280', '4b5563', '374151', '1f2937', '111827', '030712'],
|
|
24
|
+
zinc: ['fafafa', 'f4f4f5', 'e4e4e7', 'd4d4d8', 'a1a1aa', '71717a', '52525b', '3f3f46', '27272a', '18181b', '09090b'],
|
|
25
|
+
neutral: ['fafafa', 'f5f5f5', 'e5e5e5', 'd4d4d4', 'a3a3a3', '737373', '525252', '404040', '262626', '171717', '0a0a0a'],
|
|
26
|
+
stone: ['fafaf9', 'f5f5f4', 'e7e5e4', 'd6d3d1', 'a8a29e', '78716c', '57534e', '44403c', '292524', '1c1917', '0c0a09'],
|
|
27
|
+
red: ['fef2f2', 'fee2e2', 'fecaca', 'fca5a5', 'f87171', 'ef4444', 'dc2626', 'b91c1c', '991b1b', '7f1d1d', '450a0a'],
|
|
28
|
+
orange: ['fff7ed', 'ffedd5', 'fed7aa', 'fdba74', 'fb923c', 'f97316', 'ea580c', 'c2410c', '9a3412', '7c2d12', '431407'],
|
|
29
|
+
amber: ['fffbeb', 'fef3c7', 'fde68a', 'fcd34d', 'fbbf24', 'f59e0b', 'd97706', 'b45309', '92400e', '78350f', '451a03'],
|
|
30
|
+
yellow: ['fefce8', 'fef9c3', 'fef08a', 'fde047', 'facc15', 'eab308', 'ca8a04', 'a16207', '854d0e', '713f12', '422006'],
|
|
31
|
+
lime: ['f7fee7', 'ecfccb', 'd9f99d', 'bef264', 'a3e635', '84cc16', '65a30d', '4d7c0f', '3f6212', '365314', '1a2e05'],
|
|
32
|
+
green: ['f0fdf4', 'dcfce7', 'bbf7d0', '86efac', '4ade80', '22c55e', '16a34a', '15803d', '166534', '14532d', '052e16'],
|
|
33
|
+
emerald: ['ecfdf5', 'd1fae5', 'a7f3d0', '6ee7b7', '34d399', '10b981', '059669', '047857', '065f46', '064e3b', '022c22'],
|
|
34
|
+
teal: ['f0fdfa', 'ccfbf1', '99f6e4', '5eead4', '2dd4bf', '14b8a6', '0d9488', '0f766e', '115e59', '134e4a', '042f2e'],
|
|
35
|
+
cyan: ['ecfeff', 'cffafe', 'a5f3fc', '67e8f9', '22d3ee', '06b6d4', '0891b2', '0e7490', '155e75', '164e63', '083344'],
|
|
36
|
+
sky: ['f0f9ff', 'e0f2fe', 'bae6fd', '7dd3fc', '38bdf8', '0ea5e9', '0284c7', '0369a1', '075985', '0c4a6e', '082f49'],
|
|
37
|
+
blue: ['eff6ff', 'dbeafe', 'bfdbfe', '93c5fd', '60a5fa', '3b82f6', '2563eb', '1d4ed8', '1e40af', '1e3a8a', '172554'],
|
|
38
|
+
indigo: ['eef2ff', 'e0e7ff', 'c7d2fe', 'a5b4fc', '818cf8', '6366f1', '4f46e5', '4338ca', '3730a3', '312e81', '1e1b4b'],
|
|
39
|
+
violet: ['f5f3ff', 'ede9fe', 'ddd6fe', 'c4b5fd', 'a78bfa', '8b5cf6', '7c3aed', '6d28d9', '5b21b6', '4c1d95', '2e1065'],
|
|
40
|
+
purple: ['faf5ff', 'f3e8ff', 'e9d5ff', 'd8b4fe', 'c084fc', 'a855f7', '9333ea', '7e22ce', '6b21a8', '581c87', '3b0764'],
|
|
41
|
+
fuchsia: ['fdf4ff', 'fae8ff', 'f5d0fe', 'f0abfc', 'e879f9', 'd946ef', 'c026d3', 'a21caf', '86198f', '701a75', '4a044e'],
|
|
42
|
+
pink: ['fdf2f8', 'fce7f3', 'fbcfe8', 'f9a8d4', 'f472b6', 'ec4899', 'db2777', 'be185d', '9d174d', '831843', '500724'],
|
|
43
|
+
rose: ['fff1f2', 'ffe4e6', 'fecdd3', 'fda4af', 'fb7185', 'f43f5e', 'e11d48', 'be123c', '9f1239', '881337', '4c0519'],
|
|
44
|
+
};
|
|
45
|
+
const PALETTE = new Map();
|
|
46
|
+
for (const [family, hexes] of Object.entries(FAMILIES)) {
|
|
47
|
+
hexes.forEach((hex, index) => PALETTE.set(`${family}-${SHADES[index]}`, hex));
|
|
48
|
+
}
|
|
49
|
+
PALETTE.set('white', 'ffffff');
|
|
50
|
+
PALETTE.set('black', '000000');
|
|
51
|
+
/** UNKNOWN suppresses checks for the subtree (gradient, var(), low alpha…). */
|
|
52
|
+
const UNKNOWN = 'unknown';
|
|
53
|
+
function parseHex(hex) {
|
|
54
|
+
let value = hex.replace(/^#/, '').toLowerCase();
|
|
55
|
+
if (value.length === 3)
|
|
56
|
+
value = value.split('').map((c) => c + c).join('');
|
|
57
|
+
if (value.length === 8)
|
|
58
|
+
value = value.slice(0, 6);
|
|
59
|
+
if (!/^[0-9a-f]{6}$/.test(value))
|
|
60
|
+
return null;
|
|
61
|
+
return [
|
|
62
|
+
Number.parseInt(value.slice(0, 2), 16),
|
|
63
|
+
Number.parseInt(value.slice(2, 4), 16),
|
|
64
|
+
Number.parseInt(value.slice(4, 6), 16),
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
function luminance(rgb) {
|
|
68
|
+
const [r, g, b] = rgb.map((channel) => {
|
|
69
|
+
const c = channel / 255;
|
|
70
|
+
return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
|
|
71
|
+
});
|
|
72
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
73
|
+
}
|
|
74
|
+
function contrastRatio(hexA, hexB) {
|
|
75
|
+
const a = parseHex(hexA);
|
|
76
|
+
const b = parseHex(hexB);
|
|
77
|
+
if (!a || !b)
|
|
78
|
+
return null;
|
|
79
|
+
const la = luminance(a);
|
|
80
|
+
const lb = luminance(b);
|
|
81
|
+
const [light, dark] = la >= lb ? [la, lb] : [lb, la];
|
|
82
|
+
return (light + 0.05) / (dark + 0.05);
|
|
83
|
+
}
|
|
84
|
+
/** CSS custom properties defined with plain hex values in <style> blocks. */
|
|
85
|
+
function extractCssVarColors(html) {
|
|
86
|
+
const vars = new Map();
|
|
87
|
+
const styles = [...html.matchAll(/<style[^>]*>([\s\S]*?)<\/style>/gi)].map((m) => m[1]).join('\n');
|
|
88
|
+
for (const match of styles.matchAll(/(--[a-zA-Z0-9_-]+)\s*:\s*#([0-9a-fA-F]{3,8})\b/g)) {
|
|
89
|
+
vars.set(match[1], match[2]);
|
|
90
|
+
}
|
|
91
|
+
return vars;
|
|
92
|
+
}
|
|
93
|
+
/** Resolve a Tailwind color token ("slate-500", "white", "[#aabbcc]", "[var(--x)]") to hex. */
|
|
94
|
+
function resolveColorToken(token, cssVars) {
|
|
95
|
+
var _a;
|
|
96
|
+
const [base, alphaRaw] = token.split('/');
|
|
97
|
+
const alpha = alphaRaw !== undefined ? Number.parseInt(alphaRaw, 10) : 100;
|
|
98
|
+
const arbitrary = base.match(/^\[#([0-9a-fA-F]{3,8})\]$/);
|
|
99
|
+
if (arbitrary)
|
|
100
|
+
return { hex: arbitrary[1], alpha };
|
|
101
|
+
const varRef = base.match(/^\[var\((--[a-zA-Z0-9_-]+)\)\]$/);
|
|
102
|
+
if (varRef)
|
|
103
|
+
return { hex: (_a = cssVars.get(varRef[1])) !== null && _a !== void 0 ? _a : UNKNOWN, alpha };
|
|
104
|
+
if (base.startsWith('['))
|
|
105
|
+
return { hex: UNKNOWN, alpha };
|
|
106
|
+
const named = PALETTE.get(base);
|
|
107
|
+
return { hex: named !== null && named !== void 0 ? named : null, alpha };
|
|
108
|
+
}
|
|
109
|
+
const VOID_TAGS = new Set([
|
|
110
|
+
'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr',
|
|
111
|
+
]);
|
|
112
|
+
const SKIP_SUBTREES = new Set(['script', 'style', 'svg', 'head', 'title']);
|
|
113
|
+
const NON_COLOR_TEXT = /^text-(?:xs|sm|base|lg|[2-9]?xl|left|center|right|justify|start|end|wrap|nowrap|balance|pretty|clip|ellipsis)$/;
|
|
114
|
+
function classTokens(attrs) {
|
|
115
|
+
var _a, _b;
|
|
116
|
+
const match = attrs.match(/class\s*=\s*("([^"]*)"|'([^']*)')/i);
|
|
117
|
+
const raw = match ? ((_b = (_a = match[2]) !== null && _a !== void 0 ? _a : match[3]) !== null && _b !== void 0 ? _b : '') : '';
|
|
118
|
+
return raw.split(/\s+/).filter(Boolean);
|
|
119
|
+
}
|
|
120
|
+
function extractColors(tokens, cssVars) {
|
|
121
|
+
const result = {};
|
|
122
|
+
let hasGradient = false;
|
|
123
|
+
const gradientStops = [];
|
|
124
|
+
for (const token of tokens) {
|
|
125
|
+
// Variant-prefixed utilities (hover:, md:, dark:…) don't affect base state.
|
|
126
|
+
if (token.includes(':'))
|
|
127
|
+
continue;
|
|
128
|
+
if (token.startsWith('text-')) {
|
|
129
|
+
const rest = token.slice(5);
|
|
130
|
+
if (NON_COLOR_TEXT.test(token)) {
|
|
131
|
+
if (/^text-(?:[2-9]xl)$/.test(token))
|
|
132
|
+
result.large = true;
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (/^(?:transparent|current|inherit)/.test(rest))
|
|
136
|
+
continue;
|
|
137
|
+
const { hex } = resolveColorToken(rest, cssVars);
|
|
138
|
+
if (hex)
|
|
139
|
+
result.text = { hex, token };
|
|
140
|
+
}
|
|
141
|
+
else if (token.startsWith('from-') || token.startsWith('via-') || token.startsWith('to-')) {
|
|
142
|
+
// Gradient stops — collected as a multi-stop background approximation.
|
|
143
|
+
const rest = token.replace(/^(from|via|to)-/, '');
|
|
144
|
+
const { hex, alpha } = resolveColorToken(rest, cssVars);
|
|
145
|
+
if (hex && hex !== UNKNOWN && alpha >= 50)
|
|
146
|
+
gradientStops.push(hex);
|
|
147
|
+
}
|
|
148
|
+
else if (token.startsWith('bg-')) {
|
|
149
|
+
const rest = token.slice(3);
|
|
150
|
+
if (/^(?:gradient|none|cover|contain|center|top|bottom|left|right|repeat|no-repeat|fixed|local|scroll|origin|clip|auto)/.test(rest)) {
|
|
151
|
+
if (rest.startsWith('gradient'))
|
|
152
|
+
hasGradient = true;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (/^(?:transparent|current|inherit)/.test(rest))
|
|
156
|
+
continue;
|
|
157
|
+
const { hex, alpha } = resolveColorToken(rest, cssVars);
|
|
158
|
+
if (!hex)
|
|
159
|
+
continue;
|
|
160
|
+
// Low-alpha backgrounds blend with the parent — treat as inherit.
|
|
161
|
+
if (alpha < 50) {
|
|
162
|
+
result.bg = { hex: '', token, keepParent: true };
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
result.bg = { hex, token };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// A gradient without a resolvable solid bg: approximate with ALL resolvable
|
|
169
|
+
// stops (text passes if readable against ANY of them); tint-only gradients
|
|
170
|
+
// (all stops low-alpha) inherit the parent; nothing resolvable → suppress.
|
|
171
|
+
if (hasGradient && !result.bg) {
|
|
172
|
+
result.bg =
|
|
173
|
+
gradientStops.length > 0
|
|
174
|
+
? { hex: `grad:${gradientStops.join(',')}`, token: 'bg-gradient' }
|
|
175
|
+
: { hex: '', token: 'bg-gradient', keepParent: true };
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
const TAG_PATTERN = /<(\/)?([a-zA-Z][a-zA-Z0-9-]*)((?:[^>"']|"[^"]*"|'[^']*')*)>|([^<]+)/g;
|
|
180
|
+
const ERROR_THRESHOLD = 2.0;
|
|
181
|
+
const NORMAL_TEXT_THRESHOLD = 4.5;
|
|
182
|
+
const LARGE_TEXT_THRESHOLD = 3.0;
|
|
183
|
+
function checkContrast(html) {
|
|
184
|
+
var _a, _b, _c;
|
|
185
|
+
const issues = new Map();
|
|
186
|
+
const cssVars = extractCssVarColors(html);
|
|
187
|
+
// Shell default: light scheme, white canvas, near-black preflight text.
|
|
188
|
+
const stack = [{ tag: 'root', text: '000000', bg: 'ffffff', textToken: 'default', bgToken: 'page background', large: false, bgApprox: false }];
|
|
189
|
+
let skipDepth = 0;
|
|
190
|
+
let skipTag = '';
|
|
191
|
+
TAG_PATTERN.lastIndex = 0;
|
|
192
|
+
let match;
|
|
193
|
+
while ((match = TAG_PATTERN.exec(html)) !== null) {
|
|
194
|
+
const [, closing, tagRaw, attrs, textContent] = match;
|
|
195
|
+
if (textContent !== undefined) {
|
|
196
|
+
if (skipDepth > 0)
|
|
197
|
+
continue;
|
|
198
|
+
const trimmed = textContent.replace(/&[a-z#0-9]+;/gi, 'x').trim();
|
|
199
|
+
if (!trimmed)
|
|
200
|
+
continue;
|
|
201
|
+
const frame = stack[stack.length - 1];
|
|
202
|
+
if (!frame.text || !frame.bg || frame.text === UNKNOWN || frame.bg === UNKNOWN)
|
|
203
|
+
continue;
|
|
204
|
+
let ratio;
|
|
205
|
+
if (frame.bg.startsWith('grad:')) {
|
|
206
|
+
// Gradient: readable against ANY resolvable stop counts as readable.
|
|
207
|
+
const ratios = frame.bg
|
|
208
|
+
.slice(5)
|
|
209
|
+
.split(',')
|
|
210
|
+
.map((stop) => contrastRatio(frame.text, stop))
|
|
211
|
+
.filter((value) => value !== null);
|
|
212
|
+
ratio = ratios.length > 0 ? Math.max(...ratios) : null;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
ratio = contrastRatio(frame.text, frame.bg);
|
|
216
|
+
}
|
|
217
|
+
if (ratio === null)
|
|
218
|
+
continue;
|
|
219
|
+
const threshold = frame.large ? LARGE_TEXT_THRESHOLD : NORMAL_TEXT_THRESHOLD;
|
|
220
|
+
if (ratio >= threshold)
|
|
221
|
+
continue;
|
|
222
|
+
const key = `${frame.textToken}|${frame.bgToken}`;
|
|
223
|
+
if (!issues.has(key)) {
|
|
224
|
+
issues.set(key, {
|
|
225
|
+
ratio: Math.round(ratio * 100) / 100,
|
|
226
|
+
textToken: (_a = frame.textToken) !== null && _a !== void 0 ? _a : 'inherited',
|
|
227
|
+
bgToken: (_b = frame.bgToken) !== null && _b !== void 0 ? _b : 'inherited',
|
|
228
|
+
snippet: trimmed.slice(0, 60),
|
|
229
|
+
// Approximated backgrounds never block — advisory only.
|
|
230
|
+
severity: ratio < ERROR_THRESHOLD && !frame.bgApprox ? 'error' : 'warning',
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
const tag = tagRaw.toLowerCase();
|
|
236
|
+
if (skipDepth > 0) {
|
|
237
|
+
if (tag === skipTag)
|
|
238
|
+
skipDepth += closing ? -1 : 1;
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
if (closing) {
|
|
242
|
+
for (let i = stack.length - 1; i > 0; i--) {
|
|
243
|
+
if (stack[i].tag === tag) {
|
|
244
|
+
stack.length = i;
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
if (SKIP_SUBTREES.has(tag)) {
|
|
251
|
+
if (!/\/\s*$/.test(attrs)) {
|
|
252
|
+
skipDepth = 1;
|
|
253
|
+
skipTag = tag;
|
|
254
|
+
}
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
if (VOID_TAGS.has(tag) || /\/\s*$/.test(attrs))
|
|
258
|
+
continue;
|
|
259
|
+
const parent = stack[stack.length - 1];
|
|
260
|
+
const tokens = classTokens(attrs);
|
|
261
|
+
const colors = extractColors(tokens, cssVars);
|
|
262
|
+
// Overlay pattern: an absolutely-positioned full-cover child with a
|
|
263
|
+
// background (hero overlays) becomes the EFFECTIVE background for its
|
|
264
|
+
// parent's later content — patch the parent frame to match render truth.
|
|
265
|
+
if (tokens.includes('absolute') &&
|
|
266
|
+
(tokens.includes('inset-0') || (tokens.includes('top-0') && tokens.includes('left-0'))) &&
|
|
267
|
+
colors.bg &&
|
|
268
|
+
!colors.bg.keepParent) {
|
|
269
|
+
parent.bg = colors.bg.hex;
|
|
270
|
+
parent.bgToken = colors.bg.token;
|
|
271
|
+
parent.bgApprox = true;
|
|
272
|
+
}
|
|
273
|
+
const bgIsApprox = colors.bg
|
|
274
|
+
? colors.bg.keepParent
|
|
275
|
+
? parent.bgApprox
|
|
276
|
+
: colors.bg.hex.startsWith('grad:')
|
|
277
|
+
: parent.bgApprox;
|
|
278
|
+
stack.push({
|
|
279
|
+
tag,
|
|
280
|
+
text: colors.text ? colors.text.hex : parent.text,
|
|
281
|
+
bg: colors.bg ? (colors.bg.keepParent ? parent.bg : colors.bg.hex) : parent.bg,
|
|
282
|
+
textToken: colors.text ? colors.text.token : parent.textToken,
|
|
283
|
+
bgToken: colors.bg && !colors.bg.keepParent ? colors.bg.token : parent.bgToken,
|
|
284
|
+
large: (_c = colors.large) !== null && _c !== void 0 ? _c : parent.large,
|
|
285
|
+
bgApprox: bgIsApprox,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
return [...issues.values()];
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=contrast-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contrast-check.js","sourceRoot":"","sources":["../../../src/lib/session-pages/contrast-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Warning rules that are heuristic and historically cause endless mid-build
|
|
2
|
+
* fix loops (static contrast especially). They remain visible in full audits
|
|
3
|
+
* but must NOT ride back as publish advisories or consistency openAdvisories
|
|
4
|
+
* that the parent treats as mandatory work. */
|
|
5
|
+
export declare const DEFERRED_QUALITY_RULES: Set<string>;
|
|
6
|
+
export declare function isDeferredQualityRule(rule: string): boolean;
|
|
7
|
+
//# sourceMappingURL=deferred-quality-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred-quality-rules.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/deferred-quality-rules.ts"],"names":[],"mappings":"AAAA;;;+CAG+C;AAC/C,eAAO,MAAM,sBAAsB,aAYjC,CAAA;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFERRED_QUALITY_RULES = void 0;
|
|
4
|
+
exports.isDeferredQualityRule = isDeferredQualityRule;
|
|
5
|
+
/** Warning rules that are heuristic and historically cause endless mid-build
|
|
6
|
+
* fix loops (static contrast especially). They remain visible in full audits
|
|
7
|
+
* but must NOT ride back as publish advisories or consistency openAdvisories
|
|
8
|
+
* that the parent treats as mandatory work. */
|
|
9
|
+
exports.DEFERRED_QUALITY_RULES = new Set([
|
|
10
|
+
'low-contrast',
|
|
11
|
+
'unreadable-contrast',
|
|
12
|
+
'ai-palette-cliche',
|
|
13
|
+
'inert-dark-variants',
|
|
14
|
+
'hard-coded-scheme-color',
|
|
15
|
+
'dead-link',
|
|
16
|
+
'thin-styling',
|
|
17
|
+
'missing-reduced-motion',
|
|
18
|
+
'inline-handler',
|
|
19
|
+
'generic-title',
|
|
20
|
+
'static-controls',
|
|
21
|
+
]);
|
|
22
|
+
function isDeferredQualityRule(rule) {
|
|
23
|
+
return exports.DEFERRED_QUALITY_RULES.has(rule);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=deferred-quality-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred-quality-rules.js","sourceRoot":"","sources":["../../../src/lib/session-pages/deferred-quality-rules.ts"],"names":[],"mappings":";;;AAkBA,sDAEC;AApBD;;;+CAG+C;AAClC,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,cAAc;IACd,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,yBAAyB;IACzB,WAAW;IACX,cAAc;IACd,wBAAwB;IACxB,gBAAgB;IAChB,eAAe;IACf,iBAAiB;CAClB,CAAC,CAAA;AAEF,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,8BAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-session-artifact.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-session-artifact.d.ts","sourceRoot":"","sources":["../../../src/lib/session-pages/delete-session-artifact.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,2BAA2B,CAAC,CAmBtC"}
|
|
@@ -1,56 +1,27 @@
|
|
|
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.deleteSessionArtifact = deleteSessionArtifact;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
4
|
const session_artifact_yjs_store_1 = require("../../realtime/session-artifact-yjs-store");
|
|
5
|
+
const list_library_items_1 = require("../library/list-library-items");
|
|
10
6
|
const artifact_storage_1 = require("./artifact-storage");
|
|
7
|
+
const list_session_artifacts_1 = require("./list-session-artifacts");
|
|
11
8
|
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
9
|
async function deleteSessionArtifact(sessionId, artifactPath) {
|
|
10
|
+
var _a, _b;
|
|
31
11
|
const normalizedPath = (0, paths_1.normalizeArtifactPath)(artifactPath);
|
|
32
|
-
|
|
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) {
|
|
12
|
+
if (!(await (0, artifact_storage_1.sessionArtifactExistsOnStorage)(sessionId, normalizedPath))) {
|
|
48
13
|
throw new Error(`Session artifact not found: ${normalizedPath}`);
|
|
49
14
|
}
|
|
50
15
|
(0, session_artifact_yjs_store_1.getSessionArtifactYjsStore)().evictDocument(sessionId, normalizedPath);
|
|
51
16
|
await (0, artifact_storage_1.deleteArtifactStorageFiles)(sessionId, normalizedPath);
|
|
52
|
-
const
|
|
53
|
-
|
|
17
|
+
const remaining = await (0, list_session_artifacts_1.listSessionArtifacts)(sessionId);
|
|
18
|
+
if (remaining.length === 0) {
|
|
19
|
+
await (0, list_library_items_1.clearChatHasArtifacts)(sessionId);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const previewPath = (_b = (_a = remaining.find((file) => file.path === 'index.html')) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : remaining[0].path;
|
|
23
|
+
await (0, list_library_items_1.markChatHasArtifacts)(sessionId, previewPath, remaining.length);
|
|
24
|
+
}
|
|
54
25
|
return { path: normalizedPath };
|
|
55
26
|
}
|
|
56
27
|
//# sourceMappingURL=delete-session-artifact.js.map
|