psyclaw 0.25.1 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -60
- package/{apps → dist/apps}/panel/index.html +50 -28
- package/dist/src/adapters/pi/extension.d.ts +19 -0
- package/dist/src/adapters/pi/extension.js +735 -0
- package/dist/src/adapters/pi/extension.js.map +1 -0
- package/dist/src/adapters/pi/model.d.ts +72 -0
- package/dist/src/adapters/pi/model.js +152 -0
- package/dist/src/adapters/pi/model.js.map +1 -0
- package/dist/src/adapters/pi/resources.d.ts +23 -0
- package/dist/src/adapters/pi/resources.js +54 -0
- package/dist/src/adapters/pi/resources.js.map +1 -0
- package/dist/src/adapters/pi/rpc.d.ts +58 -0
- package/dist/src/adapters/pi/rpc.js +253 -0
- package/dist/src/adapters/pi/rpc.js.map +1 -0
- package/dist/src/adapters/pi/session.d.ts +30 -0
- package/dist/src/adapters/pi/session.js +64 -0
- package/dist/src/adapters/pi/session.js.map +1 -0
- package/dist/src/agents/catalog.d.ts +30 -0
- package/dist/src/agents/catalog.js +118 -0
- package/dist/src/agents/catalog.js.map +1 -0
- package/dist/src/agents/discover.d.ts +28 -0
- package/dist/src/agents/discover.js +127 -0
- package/dist/src/agents/discover.js.map +1 -0
- package/dist/src/agents/import.d.ts +67 -0
- package/dist/src/agents/import.js +789 -0
- package/dist/src/agents/import.js.map +1 -0
- package/dist/src/analysis/hooks.d.ts +81 -0
- package/dist/src/analysis/hooks.js +139 -0
- package/dist/src/analysis/hooks.js.map +1 -0
- package/dist/src/analysis/pre-registration.d.ts +18 -0
- package/dist/src/analysis/pre-registration.js +86 -0
- package/dist/src/analysis/pre-registration.js.map +1 -0
- package/dist/src/branding.d.ts +44 -0
- package/dist/src/branding.js +128 -0
- package/dist/src/branding.js.map +1 -0
- package/dist/src/chat.d.ts +16 -0
- package/dist/src/chat.js +95 -0
- package/dist/src/chat.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +316 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/core/citations.d.ts +44 -0
- package/dist/src/core/citations.js +48 -0
- package/dist/src/core/citations.js.map +1 -0
- package/dist/src/core/contracts.d.ts +119 -0
- package/dist/src/core/contracts.js +2 -0
- package/dist/src/core/contracts.js.map +1 -0
- package/dist/src/core/docx.d.ts +11 -0
- package/dist/src/core/docx.js +46 -0
- package/dist/src/core/docx.js.map +1 -0
- package/dist/src/core/doi.d.ts +41 -0
- package/dist/src/core/doi.js +82 -0
- package/dist/src/core/doi.js.map +1 -0
- package/dist/src/core/evidence-policy.d.ts +24 -0
- package/dist/src/core/evidence-policy.js +308 -0
- package/dist/src/core/evidence-policy.js.map +1 -0
- package/dist/src/core/filekind.d.ts +15 -0
- package/dist/src/core/filekind.js +82 -0
- package/dist/src/core/filekind.js.map +1 -0
- package/dist/src/core/hash.d.ts +2 -0
- package/dist/src/core/hash.js +17 -0
- package/dist/src/core/hash.js.map +1 -0
- package/dist/src/core/pricing.d.ts +38 -0
- package/dist/src/core/pricing.js +110 -0
- package/dist/src/core/pricing.js.map +1 -0
- package/dist/src/core/redact.d.ts +12 -0
- package/dist/src/core/redact.js +48 -0
- package/dist/src/core/redact.js.map +1 -0
- package/dist/src/core/references.d.ts +55 -0
- package/dist/src/core/references.js +102 -0
- package/dist/src/core/references.js.map +1 -0
- package/dist/src/core/schemas.d.ts +162 -0
- package/dist/src/core/schemas.js +160 -0
- package/dist/src/core/schemas.js.map +1 -0
- package/dist/src/extension.d.ts +1 -0
- package/dist/src/extension.js +2 -0
- package/dist/src/extension.js.map +1 -0
- package/dist/src/index.d.ts +72 -0
- package/dist/src/index.js +73 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/install/installer.d.ts +147 -0
- package/dist/src/install/installer.js +721 -0
- package/dist/src/install/installer.js.map +1 -0
- package/dist/src/integrations/contracts.d.ts +35 -0
- package/dist/src/integrations/contracts.js +27 -0
- package/dist/src/integrations/contracts.js.map +1 -0
- package/dist/src/integrations/mcp.d.ts +155 -0
- package/dist/src/integrations/mcp.js +826 -0
- package/dist/src/integrations/mcp.js.map +1 -0
- package/dist/src/knowledge-map/contracts.d.ts +20 -0
- package/dist/src/knowledge-map/contracts.js +2 -0
- package/dist/src/knowledge-map/contracts.js.map +1 -0
- package/dist/src/knowledge-map/index.d.ts +4 -0
- package/dist/src/knowledge-map/index.js +39 -0
- package/dist/src/knowledge-map/index.js.map +1 -0
- package/dist/src/literature/contracts.d.ts +106 -0
- package/dist/src/literature/contracts.js +2 -0
- package/dist/src/literature/contracts.js.map +1 -0
- package/dist/src/literature/fulltext.d.ts +7 -0
- package/dist/src/literature/fulltext.js +24 -0
- package/dist/src/literature/fulltext.js.map +1 -0
- package/dist/src/literature/knowledge-map.d.ts +2 -0
- package/dist/src/literature/knowledge-map.js +20 -0
- package/dist/src/literature/knowledge-map.js.map +1 -0
- package/dist/src/literature/ledger.d.ts +3 -0
- package/dist/src/literature/ledger.js +17 -0
- package/dist/src/literature/ledger.js.map +1 -0
- package/dist/src/literature/metadata.d.ts +6 -0
- package/dist/src/literature/metadata.js +32 -0
- package/dist/src/literature/metadata.js.map +1 -0
- package/dist/src/memory/store.d.ts +22 -0
- package/dist/src/memory/store.js +73 -0
- package/dist/src/memory/store.js.map +1 -0
- package/dist/src/orchestration/contracts.d.ts +61 -0
- package/dist/src/orchestration/contracts.js +2 -0
- package/dist/src/orchestration/contracts.js.map +1 -0
- package/dist/src/orchestration/pi-executor.d.ts +28 -0
- package/dist/src/orchestration/pi-executor.js +169 -0
- package/dist/src/orchestration/pi-executor.js.map +1 -0
- package/dist/src/orchestration/runner.d.ts +196 -0
- package/dist/src/orchestration/runner.js +991 -0
- package/dist/src/orchestration/runner.js.map +1 -0
- package/dist/src/orchestration/scheduler.d.ts +8 -0
- package/dist/src/orchestration/scheduler.js +335 -0
- package/dist/src/orchestration/scheduler.js.map +1 -0
- package/dist/src/panel/events.d.ts +20 -0
- package/dist/src/panel/events.js +93 -0
- package/dist/src/panel/events.js.map +1 -0
- package/dist/src/panel/extension.d.ts +8 -0
- package/dist/src/panel/extension.js +115 -0
- package/dist/src/panel/extension.js.map +1 -0
- package/dist/src/panel/literature-map.d.ts +26 -0
- package/dist/src/panel/literature-map.js +34 -0
- package/dist/src/panel/literature-map.js.map +1 -0
- package/dist/src/panel/projection.d.ts +51 -0
- package/dist/src/panel/projection.js +288 -0
- package/dist/src/panel/projection.js.map +1 -0
- package/dist/src/panel/server.d.ts +46 -0
- package/dist/src/panel/server.js +1610 -0
- package/dist/src/panel/server.js.map +1 -0
- package/dist/src/panel/usage.d.ts +53 -0
- package/dist/src/panel/usage.js +150 -0
- package/dist/src/panel/usage.js.map +1 -0
- package/dist/src/project/bootstrap.d.ts +10 -0
- package/dist/src/project/bootstrap.js +83 -0
- package/dist/src/project/bootstrap.js.map +1 -0
- package/dist/src/project/hitl.d.ts +12 -0
- package/dist/src/project/hitl.js +43 -0
- package/dist/src/project/hitl.js.map +1 -0
- package/dist/src/project/jsonl.d.ts +16 -0
- package/dist/src/project/jsonl.js +93 -0
- package/dist/src/project/jsonl.js.map +1 -0
- package/dist/src/project/manuscript.d.ts +21 -0
- package/dist/src/project/manuscript.js +74 -0
- package/dist/src/project/manuscript.js.map +1 -0
- package/dist/src/project/paths.d.ts +38 -0
- package/dist/src/project/paths.js +166 -0
- package/dist/src/project/paths.js.map +1 -0
- package/dist/src/project/versions.d.ts +10 -0
- package/dist/src/project/versions.js +14 -0
- package/dist/src/project/versions.js.map +1 -0
- package/dist/src/psyclaw-theme.d.ts +88 -0
- package/dist/src/psyclaw-theme.js +89 -0
- package/dist/src/psyclaw-theme.js.map +1 -0
- package/dist/src/research/brief.d.ts +11 -0
- package/dist/src/research/brief.js +81 -0
- package/dist/src/research/brief.js.map +1 -0
- package/dist/src/research/ledger.d.ts +12 -0
- package/dist/src/research/ledger.js +43 -0
- package/dist/src/research/ledger.js.map +1 -0
- package/dist/src/run.d.ts +20 -0
- package/dist/src/run.js +34 -0
- package/dist/src/run.js.map +1 -0
- package/dist/src/setup.d.ts +54 -0
- package/dist/src/setup.js +221 -0
- package/dist/src/setup.js.map +1 -0
- package/dist/src/skills/contracts.d.ts +105 -0
- package/dist/src/skills/contracts.js +3 -0
- package/dist/src/skills/contracts.js.map +1 -0
- package/dist/src/skills/preflight.d.ts +10 -0
- package/dist/src/skills/preflight.js +39 -0
- package/dist/src/skills/preflight.js.map +1 -0
- package/dist/src/skills/registry.d.ts +28 -0
- package/dist/src/skills/registry.js +540 -0
- package/dist/src/skills/registry.js.map +1 -0
- package/dist/src/style/artifact.d.ts +6 -0
- package/dist/src/style/artifact.js +61 -0
- package/dist/src/style/artifact.js.map +1 -0
- package/dist/src/style/cli-ui.d.ts +41 -0
- package/dist/src/style/cli-ui.js +119 -0
- package/dist/src/style/cli-ui.js.map +1 -0
- package/dist/src/style/contracts.d.ts +34 -0
- package/dist/src/style/contracts.js +2 -0
- package/dist/src/style/contracts.js.map +1 -0
- package/dist/src/style/registry.d.ts +16 -0
- package/dist/src/style/registry.js +50 -0
- package/dist/src/style/registry.js.map +1 -0
- package/dist/src/trust/manifest.d.ts +42 -0
- package/dist/src/trust/manifest.js +53 -0
- package/dist/src/trust/manifest.js.map +1 -0
- package/dist/src/trust/sbom.d.ts +54 -0
- package/dist/src/trust/sbom.js +77 -0
- package/dist/src/trust/sbom.js.map +1 -0
- package/dist/src/tui/app.d.ts +3 -0
- package/dist/src/tui/app.js +103 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/model.d.ts +13 -0
- package/dist/src/tui/model.js +25 -0
- package/dist/src/tui/model.js.map +1 -0
- package/dist/src/updates/check.d.ts +43 -0
- package/dist/src/updates/check.js +68 -0
- package/dist/src/updates/check.js.map +1 -0
- package/dist/src/updates/manifest.d.ts +19 -0
- package/dist/src/updates/manifest.js +58 -0
- package/dist/src/updates/manifest.js.map +1 -0
- package/dist/src/updates/registry.d.ts +21 -0
- package/dist/src/updates/registry.js +82 -0
- package/dist/src/updates/registry.js.map +1 -0
- package/dist/src/updates/skills.d.ts +15 -0
- package/dist/src/updates/skills.js +39 -0
- package/dist/src/updates/skills.js.map +1 -0
- package/dist/src/updates/status.d.ts +7 -0
- package/dist/src/updates/status.js +37 -0
- package/dist/src/updates/status.js.map +1 -0
- package/dist/src/updates/update.d.ts +43 -0
- package/dist/src/updates/update.js +128 -0
- package/dist/src/updates/update.js.map +1 -0
- package/dist/src/wizard.d.ts +7 -0
- package/dist/src/wizard.js +90 -0
- package/dist/src/wizard.js.map +1 -0
- package/dist/src/workflows/analysis-delegation.d.ts +3 -0
- package/dist/src/workflows/analysis-delegation.js +96 -0
- package/dist/src/workflows/analysis-delegation.js.map +1 -0
- package/dist/src/workflows/expert-review-runner.d.ts +29 -0
- package/dist/src/workflows/expert-review-runner.js +35 -0
- package/dist/src/workflows/expert-review-runner.js.map +1 -0
- package/dist/src/workflows/expert-review.d.ts +140 -0
- package/dist/src/workflows/expert-review.js +111 -0
- package/dist/src/workflows/expert-review.js.map +1 -0
- package/dist/src/workflows/institutional-fulltext.d.ts +16 -0
- package/dist/src/workflows/institutional-fulltext.js +110 -0
- package/dist/src/workflows/institutional-fulltext.js.map +1 -0
- package/dist/src/workflows/literature-review.d.ts +3 -0
- package/dist/src/workflows/literature-review.js +76 -0
- package/dist/src/workflows/literature-review.js.map +1 -0
- package/dist/src/workflows/meta-analysis.d.ts +38 -0
- package/dist/src/workflows/meta-analysis.js +185 -0
- package/dist/src/workflows/meta-analysis.js.map +1 -0
- package/dist/src/workflows/publish.d.ts +51 -0
- package/dist/src/workflows/publish.js +153 -0
- package/dist/src/workflows/publish.js.map +1 -0
- package/dist/src/workflows/spec.d.ts +51 -0
- package/dist/src/workflows/spec.js +157 -0
- package/dist/src/workflows/spec.js.map +1 -0
- package/dist/src/workflows/style-contract.d.ts +24 -0
- package/dist/src/workflows/style-contract.js +23 -0
- package/dist/src/workflows/style-contract.js.map +1 -0
- package/dist/src/workflows/writing-review.d.ts +15 -0
- package/dist/src/workflows/writing-review.js +82 -0
- package/dist/src/workflows/writing-review.js.map +1 -0
- package/package.json +20 -8
- package/scripts/rebrand-pi.mjs +6 -5
- package/scripts/__pycache__/build_dist.cpython-314.pyc +0 -0
- package/scripts/__pycache__/build_whitepaper_docx.cpython-314.pyc +0 -0
- package/scripts/build_preprint_docx.py +0 -729
- package/scripts/build_preprint_figures.py +0 -238
- package/scripts/build_three_line_table_fixture.py +0 -56
- package/scripts/build_whitepaper_docx.py +0 -768
- package/scripts/check-branding.mjs +0 -159
- package/scripts/copy-panel.mjs +0 -11
- package/scripts/verify_docx.py +0 -41
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { readdir, readFile } from "node:fs/promises";
|
|
4
|
-
import { extname, join, relative, resolve, sep } from "node:path";
|
|
5
|
-
import process from "node:process";
|
|
6
|
-
|
|
7
|
-
const root = resolve(import.meta.dirname, "..");
|
|
8
|
-
const legacyName = `psy${"pi"}`;
|
|
9
|
-
const scanRoots = [
|
|
10
|
-
"apps",
|
|
11
|
-
"docs",
|
|
12
|
-
"evals",
|
|
13
|
-
"scripts",
|
|
14
|
-
"skills",
|
|
15
|
-
"src",
|
|
16
|
-
"tests",
|
|
17
|
-
];
|
|
18
|
-
const rootFiles = [
|
|
19
|
-
"AGENTS.md",
|
|
20
|
-
"CHANGELOG.md",
|
|
21
|
-
"CLAUDE.md",
|
|
22
|
-
"LICENSE",
|
|
23
|
-
"PRODUCT.md",
|
|
24
|
-
"README.md",
|
|
25
|
-
"package.json",
|
|
26
|
-
"package.json.psyclaw",
|
|
27
|
-
"pnpm-lock.yaml",
|
|
28
|
-
"tsconfig.json",
|
|
29
|
-
"vitest.config.ts",
|
|
30
|
-
];
|
|
31
|
-
const skippedDirectories = new Set([
|
|
32
|
-
".git",
|
|
33
|
-
".obsidian",
|
|
34
|
-
"coverage",
|
|
35
|
-
"dist",
|
|
36
|
-
"node_modules",
|
|
37
|
-
"raw",
|
|
38
|
-
]);
|
|
39
|
-
const skippedExtensions = new Set([
|
|
40
|
-
".docx",
|
|
41
|
-
".gif",
|
|
42
|
-
".ico",
|
|
43
|
-
".jpeg",
|
|
44
|
-
".jpg",
|
|
45
|
-
".pdf",
|
|
46
|
-
".png",
|
|
47
|
-
".webp",
|
|
48
|
-
".zip",
|
|
49
|
-
]);
|
|
50
|
-
const manifest = JSON.parse(await readFile(join(root, "package.json"), "utf8"));
|
|
51
|
-
const governance = JSON.parse(await readFile(join(root, "package.json.psyclaw"), "utf8"));
|
|
52
|
-
|
|
53
|
-
function displayPath(path) {
|
|
54
|
-
return relative(root, path).split(sep).join("/");
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function isAllowedProvenance(path, line) {
|
|
58
|
-
if (displayPath(path) !== "package.json.psyclaw") return false;
|
|
59
|
-
const provenance = new RegExp(
|
|
60
|
-
`^\\s*"ref"\\s*:\\s*"${legacyName}@[0-9a-f]{40}"\\s*$`,
|
|
61
|
-
"i",
|
|
62
|
-
);
|
|
63
|
-
return provenance.test(line);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async function collectFiles(path) {
|
|
67
|
-
const entries = await readdir(path, { withFileTypes: true });
|
|
68
|
-
const files = [];
|
|
69
|
-
for (const entry of entries) {
|
|
70
|
-
if (entry.isSymbolicLink()) continue;
|
|
71
|
-
const child = join(path, entry.name);
|
|
72
|
-
if (entry.isDirectory()) {
|
|
73
|
-
if (!skippedDirectories.has(entry.name)) {
|
|
74
|
-
files.push(...await collectFiles(child));
|
|
75
|
-
}
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (entry.isFile() && !skippedExtensions.has(extname(entry.name).toLowerCase())) {
|
|
79
|
-
files.push(child);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return files;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const candidates = rootFiles.map((path) => join(root, path));
|
|
86
|
-
for (const path of scanRoots) {
|
|
87
|
-
candidates.push(...await collectFiles(join(root, path)));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const forbidden = [];
|
|
91
|
-
const allowed = [];
|
|
92
|
-
const contractFailures = [];
|
|
93
|
-
for (const path of candidates) {
|
|
94
|
-
const content = await readFile(path, "utf8");
|
|
95
|
-
for (const [index, line] of content.split(/\r?\n/u).entries()) {
|
|
96
|
-
if (!line.toLowerCase().includes(legacyName)) continue;
|
|
97
|
-
const match = `${displayPath(path)}:${index + 1}`;
|
|
98
|
-
if (isAllowedProvenance(path, line)) {
|
|
99
|
-
allowed.push(match);
|
|
100
|
-
} else {
|
|
101
|
-
forbidden.push(match);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (manifest.name !== "psyclaw") contractFailures.push("package.json name must be psyclaw");
|
|
107
|
-
if (manifest.bin?.psyclaw !== "dist/src/cli.js") {
|
|
108
|
-
contractFailures.push("package.json must expose the psyclaw CLI bin");
|
|
109
|
-
}
|
|
110
|
-
if (manifest.scripts?.postinstall !== undefined) {
|
|
111
|
-
contractFailures.push("package.json must not mutate dependencies during postinstall");
|
|
112
|
-
}
|
|
113
|
-
if (manifest.publishConfig?.registry !== "https://registry.npmjs.org/") {
|
|
114
|
-
contractFailures.push("package.json publishConfig must use the official npm registry");
|
|
115
|
-
}
|
|
116
|
-
if (manifest.publishConfig?.access !== "public") {
|
|
117
|
-
contractFailures.push("package.json publishConfig must declare public access");
|
|
118
|
-
}
|
|
119
|
-
const expectedExtensions = ["./dist/src/extension.js", "./dist/src/panel/extension.js"];
|
|
120
|
-
if (JSON.stringify(manifest.pi?.extensions) !== JSON.stringify(expectedExtensions)) {
|
|
121
|
-
contractFailures.push("package.json Pi extensions must point to packaged dist files");
|
|
122
|
-
}
|
|
123
|
-
if (governance.id !== "psyclaw") contractFailures.push("package governance id must be psyclaw");
|
|
124
|
-
if (governance.schemaVersion !== "psyclaw/package-governance/v1") {
|
|
125
|
-
contractFailures.push("package governance schema must use the psyclaw namespace");
|
|
126
|
-
}
|
|
127
|
-
if (governance.apiVersion !== manifest.version.replace(/\.0$/u, "")) {
|
|
128
|
-
contractFailures.push("package governance apiVersion must match the package major/minor version");
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const versionSurfaces = [
|
|
132
|
-
["README.md", `v${manifest.version}`],
|
|
133
|
-
["PRODUCT.md", `Version ${manifest.version}`],
|
|
134
|
-
["CHANGELOG.md", `## v${manifest.version}`],
|
|
135
|
-
["docs/使用白皮书.md", `| 版本 | ${manifest.version}`],
|
|
136
|
-
["apps/website/index.html", `PsyClaw v${manifest.version}`],
|
|
137
|
-
];
|
|
138
|
-
for (const [path, marker] of versionSurfaces) {
|
|
139
|
-
const content = await readFile(join(root, path), "utf8");
|
|
140
|
-
if (!content.includes(marker)) contractFailures.push(`${path} is missing ${marker}`);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
if (allowed.length !== 1) {
|
|
144
|
-
contractFailures.push(`expected one pinned predecessor provenance ref, found ${allowed.length}`);
|
|
145
|
-
}
|
|
146
|
-
if (forbidden.length > 0) {
|
|
147
|
-
contractFailures.push("legacy product identifier found in release sources");
|
|
148
|
-
contractFailures.push(...forbidden.map((match) => `legacy identifier at ${match}`));
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
if (contractFailures.length > 0) {
|
|
152
|
-
process.stderr.write("branding check failed:\n");
|
|
153
|
-
for (const failure of contractFailures) process.stderr.write(` - ${failure}\n`);
|
|
154
|
-
process.exitCode = 1;
|
|
155
|
-
} else {
|
|
156
|
-
process.stdout.write(
|
|
157
|
-
`branding check passed: PsyClaw ${manifest.version}; retained provenance: ${allowed[0]}\n`,
|
|
158
|
-
);
|
|
159
|
-
}
|
package/scripts/copy-panel.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { cpSync, mkdirSync } from "node:fs";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
|
|
5
|
-
const root = join(dirname(fileURLToPath(import.meta.url)), "..");
|
|
6
|
-
const source = join(root, "apps", "panel", "index.html");
|
|
7
|
-
const target = join(root, "dist", "apps", "panel", "index.html");
|
|
8
|
-
|
|
9
|
-
mkdirSync(dirname(target), { recursive: true });
|
|
10
|
-
cpSync(source, target);
|
|
11
|
-
console.log(`copied panel asset -> ${target}`);
|
package/scripts/verify_docx.py
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""Structure + visual regression verifier for a DOCX artifact."""
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import argparse
|
|
6
|
-
import json
|
|
7
|
-
import tempfile
|
|
8
|
-
from pathlib import Path
|
|
9
|
-
|
|
10
|
-
from psyclaw.output.docx_contract import inspect_docx
|
|
11
|
-
from psyclaw.output.docx_visual import compare_visual_manifests, render_docx
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def main() -> int:
|
|
15
|
-
parser = argparse.ArgumentParser()
|
|
16
|
-
parser.add_argument("docx")
|
|
17
|
-
parser.add_argument("--baseline", help="existing visual_manifest.json")
|
|
18
|
-
parser.add_argument("--output-dir", help="keep render intermediates here")
|
|
19
|
-
args = parser.parse_args()
|
|
20
|
-
|
|
21
|
-
contract = inspect_docx(args.docx)
|
|
22
|
-
if not contract["ok"]:
|
|
23
|
-
print(json.dumps(contract, ensure_ascii=False, indent=2))
|
|
24
|
-
return 1
|
|
25
|
-
if args.output_dir:
|
|
26
|
-
rendered = render_docx(args.docx, args.output_dir)
|
|
27
|
-
else:
|
|
28
|
-
with tempfile.TemporaryDirectory(prefix="psyclaw_docx_verify_") as td:
|
|
29
|
-
rendered = render_docx(args.docx, td)
|
|
30
|
-
if args.baseline and rendered.get("ok"):
|
|
31
|
-
rendered["comparison"] = compare_visual_manifests(
|
|
32
|
-
rendered, json.loads(Path(args.baseline).read_text(encoding="utf-8")))
|
|
33
|
-
if args.baseline and args.output_dir and rendered.get("ok"):
|
|
34
|
-
rendered["comparison"] = compare_visual_manifests(
|
|
35
|
-
rendered, json.loads(Path(args.baseline).read_text(encoding="utf-8")))
|
|
36
|
-
print(json.dumps({"contract": contract, "render": rendered}, ensure_ascii=False, indent=2))
|
|
37
|
-
return 0 if rendered.get("ok") and rendered.get("comparison", {"ok": True})["ok"] else 1
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if __name__ == "__main__":
|
|
41
|
-
raise SystemExit(main())
|