psyclaw 0.24.0 → 0.25.1

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.
Files changed (277) hide show
  1. package/README.md +46 -53
  2. package/{dist/apps → apps}/panel/index.html +28 -50
  3. package/package.json +10 -20
  4. package/scripts/__pycache__/build_dist.cpython-314.pyc +0 -0
  5. package/scripts/__pycache__/build_whitepaper_docx.cpython-314.pyc +0 -0
  6. package/scripts/build_preprint_docx.py +729 -0
  7. package/scripts/build_preprint_figures.py +238 -0
  8. package/scripts/build_three_line_table_fixture.py +56 -0
  9. package/scripts/build_whitepaper_docx.py +768 -0
  10. package/scripts/check-branding.mjs +159 -0
  11. package/scripts/copy-panel.mjs +11 -0
  12. package/scripts/rebrand-pi.mjs +291 -0
  13. package/scripts/verify_docx.py +41 -0
  14. package/skills/core/citation-audit/SKILL.md +9 -9
  15. package/skills/core/evidence-capture/SKILL.md +9 -9
  16. package/skills/core/manifest.json +15 -15
  17. package/skills/core/research-brief/SKILL.md +8 -8
  18. package/skills/core/research-intake/SKILL.md +9 -9
  19. package/dist/src/adapters/pi/extension.d.ts +0 -19
  20. package/dist/src/adapters/pi/extension.js +0 -735
  21. package/dist/src/adapters/pi/extension.js.map +0 -1
  22. package/dist/src/adapters/pi/model.d.ts +0 -72
  23. package/dist/src/adapters/pi/model.js +0 -152
  24. package/dist/src/adapters/pi/model.js.map +0 -1
  25. package/dist/src/adapters/pi/resources.d.ts +0 -23
  26. package/dist/src/adapters/pi/resources.js +0 -54
  27. package/dist/src/adapters/pi/resources.js.map +0 -1
  28. package/dist/src/adapters/pi/rpc.d.ts +0 -56
  29. package/dist/src/adapters/pi/rpc.js +0 -248
  30. package/dist/src/adapters/pi/rpc.js.map +0 -1
  31. package/dist/src/adapters/pi/session.d.ts +0 -30
  32. package/dist/src/adapters/pi/session.js +0 -64
  33. package/dist/src/adapters/pi/session.js.map +0 -1
  34. package/dist/src/agents/catalog.d.ts +0 -30
  35. package/dist/src/agents/catalog.js +0 -118
  36. package/dist/src/agents/catalog.js.map +0 -1
  37. package/dist/src/agents/discover.d.ts +0 -28
  38. package/dist/src/agents/discover.js +0 -127
  39. package/dist/src/agents/discover.js.map +0 -1
  40. package/dist/src/agents/import.d.ts +0 -67
  41. package/dist/src/agents/import.js +0 -801
  42. package/dist/src/agents/import.js.map +0 -1
  43. package/dist/src/analysis/hooks.d.ts +0 -81
  44. package/dist/src/analysis/hooks.js +0 -139
  45. package/dist/src/analysis/hooks.js.map +0 -1
  46. package/dist/src/analysis/pre-registration.d.ts +0 -18
  47. package/dist/src/analysis/pre-registration.js +0 -86
  48. package/dist/src/analysis/pre-registration.js.map +0 -1
  49. package/dist/src/branding.d.ts +0 -43
  50. package/dist/src/branding.js +0 -127
  51. package/dist/src/branding.js.map +0 -1
  52. package/dist/src/chat.d.ts +0 -16
  53. package/dist/src/chat.js +0 -67
  54. package/dist/src/chat.js.map +0 -1
  55. package/dist/src/cli.d.ts +0 -2
  56. package/dist/src/cli.js +0 -316
  57. package/dist/src/cli.js.map +0 -1
  58. package/dist/src/core/citations.d.ts +0 -44
  59. package/dist/src/core/citations.js +0 -48
  60. package/dist/src/core/citations.js.map +0 -1
  61. package/dist/src/core/contracts.d.ts +0 -119
  62. package/dist/src/core/contracts.js +0 -2
  63. package/dist/src/core/contracts.js.map +0 -1
  64. package/dist/src/core/docx.d.ts +0 -11
  65. package/dist/src/core/docx.js +0 -46
  66. package/dist/src/core/docx.js.map +0 -1
  67. package/dist/src/core/doi.d.ts +0 -41
  68. package/dist/src/core/doi.js +0 -82
  69. package/dist/src/core/doi.js.map +0 -1
  70. package/dist/src/core/evidence-policy.d.ts +0 -24
  71. package/dist/src/core/evidence-policy.js +0 -308
  72. package/dist/src/core/evidence-policy.js.map +0 -1
  73. package/dist/src/core/filekind.d.ts +0 -15
  74. package/dist/src/core/filekind.js +0 -82
  75. package/dist/src/core/filekind.js.map +0 -1
  76. package/dist/src/core/hash.d.ts +0 -2
  77. package/dist/src/core/hash.js +0 -17
  78. package/dist/src/core/hash.js.map +0 -1
  79. package/dist/src/core/pricing.d.ts +0 -38
  80. package/dist/src/core/pricing.js +0 -110
  81. package/dist/src/core/pricing.js.map +0 -1
  82. package/dist/src/core/redact.d.ts +0 -12
  83. package/dist/src/core/redact.js +0 -48
  84. package/dist/src/core/redact.js.map +0 -1
  85. package/dist/src/core/references.d.ts +0 -55
  86. package/dist/src/core/references.js +0 -102
  87. package/dist/src/core/references.js.map +0 -1
  88. package/dist/src/core/schemas.d.ts +0 -162
  89. package/dist/src/core/schemas.js +0 -160
  90. package/dist/src/core/schemas.js.map +0 -1
  91. package/dist/src/extension.d.ts +0 -1
  92. package/dist/src/extension.js +0 -2
  93. package/dist/src/extension.js.map +0 -1
  94. package/dist/src/index.d.ts +0 -72
  95. package/dist/src/index.js +0 -73
  96. package/dist/src/index.js.map +0 -1
  97. package/dist/src/install/installer.d.ts +0 -147
  98. package/dist/src/install/installer.js +0 -743
  99. package/dist/src/install/installer.js.map +0 -1
  100. package/dist/src/integrations/contracts.d.ts +0 -35
  101. package/dist/src/integrations/contracts.js +0 -27
  102. package/dist/src/integrations/contracts.js.map +0 -1
  103. package/dist/src/integrations/mcp.d.ts +0 -155
  104. package/dist/src/integrations/mcp.js +0 -826
  105. package/dist/src/integrations/mcp.js.map +0 -1
  106. package/dist/src/knowledge-map/contracts.d.ts +0 -20
  107. package/dist/src/knowledge-map/contracts.js +0 -2
  108. package/dist/src/knowledge-map/contracts.js.map +0 -1
  109. package/dist/src/knowledge-map/index.d.ts +0 -4
  110. package/dist/src/knowledge-map/index.js +0 -39
  111. package/dist/src/knowledge-map/index.js.map +0 -1
  112. package/dist/src/literature/contracts.d.ts +0 -106
  113. package/dist/src/literature/contracts.js +0 -2
  114. package/dist/src/literature/contracts.js.map +0 -1
  115. package/dist/src/literature/fulltext.d.ts +0 -7
  116. package/dist/src/literature/fulltext.js +0 -24
  117. package/dist/src/literature/fulltext.js.map +0 -1
  118. package/dist/src/literature/knowledge-map.d.ts +0 -2
  119. package/dist/src/literature/knowledge-map.js +0 -20
  120. package/dist/src/literature/knowledge-map.js.map +0 -1
  121. package/dist/src/literature/ledger.d.ts +0 -3
  122. package/dist/src/literature/ledger.js +0 -17
  123. package/dist/src/literature/ledger.js.map +0 -1
  124. package/dist/src/literature/metadata.d.ts +0 -6
  125. package/dist/src/literature/metadata.js +0 -32
  126. package/dist/src/literature/metadata.js.map +0 -1
  127. package/dist/src/memory/store.d.ts +0 -22
  128. package/dist/src/memory/store.js +0 -73
  129. package/dist/src/memory/store.js.map +0 -1
  130. package/dist/src/orchestration/contracts.d.ts +0 -61
  131. package/dist/src/orchestration/contracts.js +0 -2
  132. package/dist/src/orchestration/contracts.js.map +0 -1
  133. package/dist/src/orchestration/pi-executor.d.ts +0 -28
  134. package/dist/src/orchestration/pi-executor.js +0 -169
  135. package/dist/src/orchestration/pi-executor.js.map +0 -1
  136. package/dist/src/orchestration/runner.d.ts +0 -196
  137. package/dist/src/orchestration/runner.js +0 -991
  138. package/dist/src/orchestration/runner.js.map +0 -1
  139. package/dist/src/orchestration/scheduler.d.ts +0 -8
  140. package/dist/src/orchestration/scheduler.js +0 -335
  141. package/dist/src/orchestration/scheduler.js.map +0 -1
  142. package/dist/src/panel/events.d.ts +0 -20
  143. package/dist/src/panel/events.js +0 -93
  144. package/dist/src/panel/events.js.map +0 -1
  145. package/dist/src/panel/extension.d.ts +0 -8
  146. package/dist/src/panel/extension.js +0 -114
  147. package/dist/src/panel/extension.js.map +0 -1
  148. package/dist/src/panel/literature-map.d.ts +0 -26
  149. package/dist/src/panel/literature-map.js +0 -34
  150. package/dist/src/panel/literature-map.js.map +0 -1
  151. package/dist/src/panel/projection.d.ts +0 -51
  152. package/dist/src/panel/projection.js +0 -288
  153. package/dist/src/panel/projection.js.map +0 -1
  154. package/dist/src/panel/server.d.ts +0 -46
  155. package/dist/src/panel/server.js +0 -1610
  156. package/dist/src/panel/server.js.map +0 -1
  157. package/dist/src/panel/usage.d.ts +0 -53
  158. package/dist/src/panel/usage.js +0 -150
  159. package/dist/src/panel/usage.js.map +0 -1
  160. package/dist/src/project/bootstrap.d.ts +0 -10
  161. package/dist/src/project/bootstrap.js +0 -83
  162. package/dist/src/project/bootstrap.js.map +0 -1
  163. package/dist/src/project/hitl.d.ts +0 -12
  164. package/dist/src/project/hitl.js +0 -43
  165. package/dist/src/project/hitl.js.map +0 -1
  166. package/dist/src/project/jsonl.d.ts +0 -16
  167. package/dist/src/project/jsonl.js +0 -93
  168. package/dist/src/project/jsonl.js.map +0 -1
  169. package/dist/src/project/manuscript.d.ts +0 -21
  170. package/dist/src/project/manuscript.js +0 -74
  171. package/dist/src/project/manuscript.js.map +0 -1
  172. package/dist/src/project/paths.d.ts +0 -38
  173. package/dist/src/project/paths.js +0 -166
  174. package/dist/src/project/paths.js.map +0 -1
  175. package/dist/src/project/versions.d.ts +0 -10
  176. package/dist/src/project/versions.js +0 -14
  177. package/dist/src/project/versions.js.map +0 -1
  178. package/dist/src/psyclaw-theme.d.ts +0 -88
  179. package/dist/src/psyclaw-theme.js +0 -89
  180. package/dist/src/psyclaw-theme.js.map +0 -1
  181. package/dist/src/research/brief.d.ts +0 -11
  182. package/dist/src/research/brief.js +0 -81
  183. package/dist/src/research/brief.js.map +0 -1
  184. package/dist/src/research/ledger.d.ts +0 -12
  185. package/dist/src/research/ledger.js +0 -43
  186. package/dist/src/research/ledger.js.map +0 -1
  187. package/dist/src/run.d.ts +0 -20
  188. package/dist/src/run.js +0 -34
  189. package/dist/src/run.js.map +0 -1
  190. package/dist/src/setup.d.ts +0 -54
  191. package/dist/src/setup.js +0 -221
  192. package/dist/src/setup.js.map +0 -1
  193. package/dist/src/skills/contracts.d.ts +0 -105
  194. package/dist/src/skills/contracts.js +0 -3
  195. package/dist/src/skills/contracts.js.map +0 -1
  196. package/dist/src/skills/preflight.d.ts +0 -10
  197. package/dist/src/skills/preflight.js +0 -39
  198. package/dist/src/skills/preflight.js.map +0 -1
  199. package/dist/src/skills/registry.d.ts +0 -28
  200. package/dist/src/skills/registry.js +0 -556
  201. package/dist/src/skills/registry.js.map +0 -1
  202. package/dist/src/style/artifact.d.ts +0 -6
  203. package/dist/src/style/artifact.js +0 -61
  204. package/dist/src/style/artifact.js.map +0 -1
  205. package/dist/src/style/cli-ui.d.ts +0 -41
  206. package/dist/src/style/cli-ui.js +0 -119
  207. package/dist/src/style/cli-ui.js.map +0 -1
  208. package/dist/src/style/contracts.d.ts +0 -34
  209. package/dist/src/style/contracts.js +0 -2
  210. package/dist/src/style/contracts.js.map +0 -1
  211. package/dist/src/style/registry.d.ts +0 -16
  212. package/dist/src/style/registry.js +0 -50
  213. package/dist/src/style/registry.js.map +0 -1
  214. package/dist/src/trust/manifest.d.ts +0 -42
  215. package/dist/src/trust/manifest.js +0 -53
  216. package/dist/src/trust/manifest.js.map +0 -1
  217. package/dist/src/trust/sbom.d.ts +0 -54
  218. package/dist/src/trust/sbom.js +0 -77
  219. package/dist/src/trust/sbom.js.map +0 -1
  220. package/dist/src/tui/app.d.ts +0 -3
  221. package/dist/src/tui/app.js +0 -103
  222. package/dist/src/tui/app.js.map +0 -1
  223. package/dist/src/tui/model.d.ts +0 -13
  224. package/dist/src/tui/model.js +0 -25
  225. package/dist/src/tui/model.js.map +0 -1
  226. package/dist/src/updates/check.d.ts +0 -43
  227. package/dist/src/updates/check.js +0 -68
  228. package/dist/src/updates/check.js.map +0 -1
  229. package/dist/src/updates/manifest.d.ts +0 -19
  230. package/dist/src/updates/manifest.js +0 -58
  231. package/dist/src/updates/manifest.js.map +0 -1
  232. package/dist/src/updates/registry.d.ts +0 -21
  233. package/dist/src/updates/registry.js +0 -82
  234. package/dist/src/updates/registry.js.map +0 -1
  235. package/dist/src/updates/skills.d.ts +0 -15
  236. package/dist/src/updates/skills.js +0 -39
  237. package/dist/src/updates/skills.js.map +0 -1
  238. package/dist/src/updates/status.d.ts +0 -7
  239. package/dist/src/updates/status.js +0 -37
  240. package/dist/src/updates/status.js.map +0 -1
  241. package/dist/src/updates/update.d.ts +0 -43
  242. package/dist/src/updates/update.js +0 -126
  243. package/dist/src/updates/update.js.map +0 -1
  244. package/dist/src/wizard.d.ts +0 -7
  245. package/dist/src/wizard.js +0 -90
  246. package/dist/src/wizard.js.map +0 -1
  247. package/dist/src/workflows/analysis-delegation.d.ts +0 -3
  248. package/dist/src/workflows/analysis-delegation.js +0 -96
  249. package/dist/src/workflows/analysis-delegation.js.map +0 -1
  250. package/dist/src/workflows/expert-review-runner.d.ts +0 -29
  251. package/dist/src/workflows/expert-review-runner.js +0 -35
  252. package/dist/src/workflows/expert-review-runner.js.map +0 -1
  253. package/dist/src/workflows/expert-review.d.ts +0 -140
  254. package/dist/src/workflows/expert-review.js +0 -111
  255. package/dist/src/workflows/expert-review.js.map +0 -1
  256. package/dist/src/workflows/institutional-fulltext.d.ts +0 -16
  257. package/dist/src/workflows/institutional-fulltext.js +0 -110
  258. package/dist/src/workflows/institutional-fulltext.js.map +0 -1
  259. package/dist/src/workflows/literature-review.d.ts +0 -3
  260. package/dist/src/workflows/literature-review.js +0 -76
  261. package/dist/src/workflows/literature-review.js.map +0 -1
  262. package/dist/src/workflows/meta-analysis.d.ts +0 -38
  263. package/dist/src/workflows/meta-analysis.js +0 -185
  264. package/dist/src/workflows/meta-analysis.js.map +0 -1
  265. package/dist/src/workflows/publish.d.ts +0 -51
  266. package/dist/src/workflows/publish.js +0 -153
  267. package/dist/src/workflows/publish.js.map +0 -1
  268. package/dist/src/workflows/spec.d.ts +0 -51
  269. package/dist/src/workflows/spec.js +0 -157
  270. package/dist/src/workflows/spec.js.map +0 -1
  271. package/dist/src/workflows/style-contract.d.ts +0 -24
  272. package/dist/src/workflows/style-contract.js +0 -23
  273. package/dist/src/workflows/style-contract.js.map +0 -1
  274. package/dist/src/workflows/writing-review.d.ts +0 -15
  275. package/dist/src/workflows/writing-review.js +0 -82
  276. package/dist/src/workflows/writing-review.js.map +0 -1
  277. package/package.json.psyclaw +0 -21
@@ -1,48 +0,0 @@
1
- import { sha256Text } from "./hash.js";
2
- import { readJsonl, appendJsonlIfMissing } from "../project/jsonl.js";
3
- import { assertSafeProjectPath } from "../project/paths.js";
4
- import { referenceFromVerification, upsertReference } from "./references.js";
5
- import { verifyDoi } from "./doi.js";
6
- export async function citationsPath(root) {
7
- return assertSafeProjectPath(root, ".psyclaw/citations.jsonl");
8
- }
9
- export async function listCitationUses(root) {
10
- return readJsonl(await citationsPath(root));
11
- }
12
- /**
13
- * Record one citation use: verify the DOI (real network unless a verifier is
14
- * injected), archive the reference when verifiable, then append the use with
15
- * its reason. The use is always recorded (with `verified` reflecting the
16
- * verification outcome) so the citation reason is never lost.
17
- */
18
- export async function recordCitationUse(root, input, verify = verifyDoi) {
19
- const doi = input.doi.trim();
20
- const reason = input.reason.trim();
21
- const context = input.context.trim();
22
- if (!doi || !reason || !context) {
23
- throw new Error("doi, reason, and context are all required");
24
- }
25
- const verification = await verify(doi);
26
- const reference = referenceFromVerification(verification);
27
- if (reference !== null) {
28
- await upsertReference(root, reference);
29
- }
30
- const surname = (reference?.authors[0]?.split(/\s+/).at(-1) ?? doi.split("/")[0] ?? doi).slice(0, 40);
31
- const citationId = `cite_${sha256Text(`${doi}\u0000${reason}\u0000${context}`).slice(0, 16)}`;
32
- const record = {
33
- schemaVersion: "psyclaw/citation-use/v1",
34
- citationId,
35
- doi,
36
- surname,
37
- ...(reference?.year === undefined ? {} : { year: reference.year }),
38
- reason,
39
- context,
40
- ...(input.section === undefined || input.section.trim() === "" ? {} : { section: input.section.trim() }),
41
- ...(input.claimId === undefined || input.claimId.trim() === "" ? {} : { claimId: input.claimId.trim() }),
42
- verified: verification.status === "verified",
43
- recordedAt: new Date().toISOString(),
44
- };
45
- const { appended } = await appendJsonlIfMissing(await citationsPath(root), record, (item) => item.citationId);
46
- return { record, reference, appended };
47
- }
48
- //# sourceMappingURL=citations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"citations.js","sourceRoot":"","sources":["../../../src/core/citations.ts"],"names":[],"mappings":"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"}
@@ -1,119 +0,0 @@
1
- export declare const CONTRACT_VERSION: "psyclaw/core/v1";
2
- export type Effect = "read" | "write" | "network" | "destructive";
3
- export type EvidenceLevel = "metadata" | "abstract" | "snippet" | "fulltext" | "user";
4
- export type ClaimStatus = "supported" | "uncertain" | "unsupported";
5
- export type Relation = "supports" | "contradicts" | "context";
6
- export type ResearchParadigm = "survey-observational" | "qualitative-thematic" | "experimental" | "quasi-experimental" | "longitudinal-panel" | "meta-analysis" | "ethnographic" | "historical-documentary" | "policy-legal" | "mixed-methods";
7
- export interface ResearchProject {
8
- id: string;
9
- root: string;
10
- paradigm: ResearchParadigm;
11
- goal: string;
12
- policyVersion: string;
13
- createdAt: string;
14
- }
15
- export interface SourceRef {
16
- kind: "doi" | "url" | "file" | "user" | "mcp";
17
- locator: string;
18
- title?: string;
19
- }
20
- export interface Evidence {
21
- id: string;
22
- source: SourceRef;
23
- level: EvidenceLevel;
24
- quote?: string;
25
- retrievedAt: string;
26
- sha256?: string;
27
- accessStatus: "verified" | "partial" | "unavailable";
28
- locators: EvidenceLocator[];
29
- }
30
- export interface EvidenceLocator {
31
- kind: "doi" | "url" | "file" | "page" | "section" | "offset" | "row";
32
- value: string;
33
- }
34
- export type ClaimKind = "existence" | "definition" | "method" | "result" | "interpretation";
35
- export interface Claim {
36
- recordType?: "claim";
37
- id: string;
38
- text: string;
39
- kind: ClaimKind;
40
- evidenceIds: string[];
41
- status: ClaimStatus;
42
- uncertainty?: string;
43
- }
44
- export interface ClaimEvidenceLink {
45
- recordType?: "claim-evidence-link";
46
- claimId: string;
47
- evidenceId: string;
48
- relation: Relation;
49
- locator?: EvidenceLocator;
50
- rationale: string;
51
- }
52
- export interface EvidencePolicy {
53
- paradigm: ResearchParadigm;
54
- claimKind: ClaimKind;
55
- minimumLevel: EvidenceLevel;
56
- locatorRequired: boolean;
57
- requiresIndependentSource: boolean;
58
- requiresArtifactRun: boolean;
59
- }
60
- export interface Artifact {
61
- id: string;
62
- path: string;
63
- sha256: string;
64
- producedBy: string;
65
- inputIds: string[];
66
- reproducible: boolean;
67
- }
68
- export interface ToolReceipt {
69
- schemaVersion: "psyclaw/tool-receipt/v1";
70
- runId: string;
71
- taskId: string;
72
- tool: string;
73
- effect: Effect;
74
- approval: "not-needed" | "approved" | "denied";
75
- idempotencyKey?: string;
76
- ok: boolean;
77
- /** Stable, non-sensitive diagnostic code for a denied or failed call. */
78
- reasonCode?: string;
79
- resultHash?: string;
80
- startedAt: string;
81
- finishedAt: string;
82
- }
83
- export interface GateResult {
84
- gateId: string;
85
- ok: boolean;
86
- severity: "block" | "warn";
87
- reason: string;
88
- claimIds?: string[];
89
- evidenceIds?: string[];
90
- }
91
- export interface MemoryRecord {
92
- id: string;
93
- kind: "profile" | "decision" | "fact" | "lesson" | "evidence";
94
- scope: "session" | "project" | "user";
95
- content: unknown;
96
- sourceRefs: string[];
97
- confidence: number;
98
- status: "pending" | "active" | "archived";
99
- createdAt: string;
100
- updatedAt: string;
101
- }
102
- export interface Handoff {
103
- schemaVersion: "psyclaw/handoff/v1";
104
- projectId: string;
105
- runId: string;
106
- goal: string;
107
- completed: string[];
108
- verified: string[];
109
- blocked: string[];
110
- nextSteps: string[];
111
- verificationCommands: string[];
112
- generatedAt: string;
113
- }
114
- export interface ResearchRequest {
115
- goal: string;
116
- paradigm: ResearchParadigm;
117
- output: "brief" | "ledger";
118
- sourcePaths: string[];
119
- }
@@ -1,2 +0,0 @@
1
- export const CONTRACT_VERSION = "psyclaw/core/v1";
2
- //# sourceMappingURL=contracts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/core/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAA0B,CAAC"}
@@ -1,11 +0,0 @@
1
- /** Plain text (whitespace-unwrapped) for evidence reading. */
2
- export declare function docxToText(path: string): Promise<string>;
3
- /** Markdown (structure preserved) for citation-audit and quoting. */
4
- export declare function docxToMarkdown(path: string): Promise<string>;
5
- /**
6
- * Export a Markdown file to DOCX (the convention target is
7
- * `paper/<name>_APA7.docx`). An optional reference document (e.g. a black and
8
- * white APA-7 template) is passed through `--reference-doc` so heading/table
9
- * styling follows the project template instead of pandoc defaults.
10
- */
11
- export declare function markdownToDocx(markdownPath: string, outputPath: string, referenceDoc?: string): Promise<void>;
@@ -1,46 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- /**
3
- * Word document conversion via Pandoc. Pandoc is already part of psyclaw's DOCX
4
- * export path; if it is unavailable, the caller should fall back to the
5
- * markitdown skill (read) or report the failure (write).
6
- */
7
- function runPandoc(args) {
8
- return new Promise((resolve, reject) => {
9
- const child = spawn("pandoc", args, {
10
- stdio: ["ignore", "pipe", "pipe"],
11
- shell: process.platform === "win32",
12
- });
13
- let output = "";
14
- let errorText = "";
15
- child.stdout?.on("data", (chunk) => { output += String(chunk); });
16
- child.stderr?.on("data", (chunk) => { errorText += String(chunk); });
17
- child.on("error", (error) => reject(new Error(`pandoc unavailable (${error.message}); install Pandoc or use the markitdown skill`)));
18
- child.on("close", (code) => {
19
- if (code === 0)
20
- resolve(output);
21
- else
22
- reject(new Error(`pandoc failed (exit ${code ?? "unknown"})${errorText ? `: ${errorText.trim().slice(0, 300)}` : ""}`));
23
- });
24
- });
25
- }
26
- /** Plain text (whitespace-unwrapped) for evidence reading. */
27
- export function docxToText(path) {
28
- return runPandoc([path, "-t", "plain", "--wrap=none"]);
29
- }
30
- /** Markdown (structure preserved) for citation-audit and quoting. */
31
- export function docxToMarkdown(path) {
32
- return runPandoc([path, "-t", "markdown", "--wrap=none"]);
33
- }
34
- /**
35
- * Export a Markdown file to DOCX (the convention target is
36
- * `paper/<name>_APA7.docx`). An optional reference document (e.g. a black and
37
- * white APA-7 template) is passed through `--reference-doc` so heading/table
38
- * styling follows the project template instead of pandoc defaults.
39
- */
40
- export async function markdownToDocx(markdownPath, outputPath, referenceDoc) {
41
- const args = [markdownPath, "-o", outputPath, "--wrap=none"];
42
- if (referenceDoc)
43
- args.push("--reference-doc", referenceDoc);
44
- await runPandoc(args);
45
- }
46
- //# sourceMappingURL=docx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/core/docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;YAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACpC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,OAAO,+CAA+C,CAAC,CAAC,CAAC,CAAC;QACrI,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,IAAI,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/H,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,YAAoB,EAAE,UAAkB,EAAE,YAAqB;IAClG,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
@@ -1,41 +0,0 @@
1
- /**
2
- * DOI utilities: real cross-source verification (Crossref + OpenAlex) and
3
- * open-access PDF lookup. Moved out of the panel server so the reference
4
- * archive and any other caller can use them without a server dependency.
5
- */
6
- export interface DoiVerification {
7
- schemaVersion: "psyclaw/doi-verify/v1";
8
- doi: string;
9
- status: "verified" | "unverified" | "error";
10
- crossref?: {
11
- title?: string;
12
- authors?: string[];
13
- year?: number;
14
- container?: string;
15
- };
16
- openalex?: {
17
- title?: string;
18
- citedBy?: number;
19
- };
20
- mismatch?: string;
21
- error?: string;
22
- verifiedAt: string;
23
- }
24
- export interface OpenAlexOaLookup {
25
- doi: string;
26
- oaPdfUrl: string | null;
27
- isOa: boolean;
28
- queriedAt: string;
29
- }
30
- /**
31
- * Real cross-source DOI verification via Crossref + OpenAlex. Never fabricates
32
- * a "verified" status: any network failure returns `error`.
33
- */
34
- export declare function verifyDoi(doi: string, fetchFn?: typeof fetch): Promise<DoiVerification>;
35
- /**
36
- * Look up an open-access PDF URL for a DOI via OpenAlex
37
- * (`open_access.oa_url` / `best_oa_location.pdf_url`). Returns null when the
38
- * work is not open access or the lookup fails; the caller must still verify
39
- * the returned URL before downloading it.
40
- */
41
- export declare function lookupOaPdfUrl(doi: string, fetchFn?: typeof fetch): Promise<OpenAlexOaLookup>;
@@ -1,82 +0,0 @@
1
- /**
2
- * DOI utilities: real cross-source verification (Crossref + OpenAlex) and
3
- * open-access PDF lookup. Moved out of the panel server so the reference
4
- * archive and any other caller can use them without a server dependency.
5
- */
6
- /**
7
- * Real cross-source DOI verification via Crossref + OpenAlex. Never fabricates
8
- * a "verified" status: any network failure returns `error`.
9
- */
10
- export async function verifyDoi(doi, fetchFn = fetch) {
11
- const normalized = doi.trim();
12
- const verifiedAt = new Date().toISOString();
13
- if (!/^10\.\d{4,9}\/\S+$/i.test(normalized)) {
14
- return { schemaVersion: "psyclaw/doi-verify/v1", doi: normalized, status: "error", error: "不是合法 DOI(应为 10.xxxx/…)", verifiedAt };
15
- }
16
- try {
17
- const [crossrefRes, openalexRes] = await Promise.all([
18
- fetchFn(`https://api.crossref.org/works/${encodeURIComponent(normalized)}`, { signal: AbortSignal.timeout(12_000) }),
19
- fetchFn(`https://api.openalex.org/works/doi:${encodeURIComponent(normalized)}`, { signal: AbortSignal.timeout(12_000) }),
20
- ]);
21
- const crossref = crossrefRes.ok
22
- ? await crossrefRes.json()
23
- : undefined;
24
- const openalex = openalexRes.ok
25
- ? await openalexRes.json()
26
- : undefined;
27
- const crossTitle = crossref?.message?.title?.[0];
28
- const openalexTitle = openalex?.title;
29
- const mismatch = crossTitle && openalexTitle && crossTitle.toLowerCase() !== openalexTitle.toLowerCase()
30
- ? `Crossref 与 OpenAlex 标题不一致:「${crossTitle}」vs「${openalexTitle}」`
31
- : undefined;
32
- const found = Boolean(crossref || openalex);
33
- return {
34
- schemaVersion: "psyclaw/doi-verify/v1",
35
- doi: normalized,
36
- status: found && !mismatch ? "verified" : mismatch ? "unverified" : "error",
37
- ...(crossref?.message ? {
38
- crossref: {
39
- ...(crossref.message.title?.[0] === undefined ? {} : { title: crossref.message.title[0] }),
40
- ...(crossref.message.author && crossref.message.author.length > 0
41
- ? { authors: crossref.message.author.slice(0, 10).map((author) => [author.given, author.family].filter(Boolean).join(" ")).filter(Boolean) }
42
- : {}),
43
- ...(crossref.message.issued?.["date-parts"]?.[0]?.[0] === undefined ? {} : { year: crossref.message.issued["date-parts"][0][0] }),
44
- ...(crossref.message["container-title"]?.[0] === undefined ? {} : { container: crossref.message["container-title"][0] }),
45
- },
46
- } : {}),
47
- ...(openalex ? { openalex: { ...(openalex.title === undefined ? {} : { title: openalex.title }), ...(openalex.cited_by_count === undefined ? {} : { citedBy: openalex.cited_by_count }) } } : {}),
48
- ...(mismatch ? { mismatch } : {}),
49
- ...(found ? {} : { error: "Crossref 与 OpenAlex 均未检索到该 DOI" }),
50
- verifiedAt,
51
- };
52
- }
53
- catch (error) {
54
- return { schemaVersion: "psyclaw/doi-verify/v1", doi: normalized, status: "error", error: error instanceof Error ? error.message : String(error), verifiedAt };
55
- }
56
- }
57
- /**
58
- * Look up an open-access PDF URL for a DOI via OpenAlex
59
- * (`open_access.oa_url` / `best_oa_location.pdf_url`). Returns null when the
60
- * work is not open access or the lookup fails; the caller must still verify
61
- * the returned URL before downloading it.
62
- */
63
- export async function lookupOaPdfUrl(doi, fetchFn = fetch) {
64
- const normalized = doi.trim();
65
- const queriedAt = new Date().toISOString();
66
- if (!/^10\.\d{4,9}\/\S+$/i.test(normalized)) {
67
- return { doi: normalized, oaPdfUrl: null, isOa: false, queriedAt };
68
- }
69
- try {
70
- const response = await fetchFn(`https://api.openalex.org/works/doi:${encodeURIComponent(normalized)}`, { signal: AbortSignal.timeout(12_000) });
71
- if (!response.ok)
72
- return { doi: normalized, oaPdfUrl: null, isOa: false, queriedAt };
73
- const body = await response.json();
74
- const isOa = Boolean(body.open_access?.is_oa || body.best_oa_location?.pdf_url);
75
- const oaPdfUrl = body.best_oa_location?.pdf_url ?? body.open_access?.oa_url ?? null;
76
- return { doi: normalized, oaPdfUrl: isOa ? oaPdfUrl : null, isOa, queriedAt };
77
- }
78
- catch {
79
- return { doi: normalized, oaPdfUrl: null, isOa: false, queriedAt };
80
- }
81
- }
82
- //# sourceMappingURL=doi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doi.js","sourceRoot":"","sources":["../../../src/core/doi.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { Claim, ClaimEvidenceLink, Evidence, EvidencePolicy, GateResult, ResearchParadigm } from "./contracts.js";
2
- export declare function defaultEvidencePolicy(paradigm: ResearchParadigm, claimKind: Claim["kind"]): EvidencePolicy;
3
- /**
4
- * The paradigm profile changes only the evidence thresholds and required
5
- * reporting, never the honesty/locator/source baseline. Qualitative and
6
- * ethnographic material is coded primary data: a theme does not need a second
7
- * independent source or a numeric artifact run, but it still needs a located,
8
- * non-user source. Absence of an effect size must not make a qualitative
9
- * finding invalid.
10
- */
11
- export declare function policiesForParadigm(paradigm: ResearchParadigm): EvidencePolicy[];
12
- /** Required report sections per paradigm, beyond the universal honesty baseline. */
13
- export declare const PARADIGM_REPORT_FIELDS: Record<ResearchParadigm, readonly string[]>;
14
- export interface EvidenceCheckContext {
15
- claims: readonly Claim[];
16
- evidence: readonly Evidence[];
17
- links: readonly ClaimEvidenceLink[];
18
- /** Explicit policies take precedence over the paradigm profile. */
19
- policies?: readonly EvidencePolicy[];
20
- /** Methodological paradigm; drives the profile when `policies` is absent. */
21
- paradigm?: ResearchParadigm;
22
- artifactRunClaimIds?: ReadonlySet<string>;
23
- }
24
- export declare function checkEvidenceSufficiency(ctx: EvidenceCheckContext): GateResult[];