psyclaw 0.27.15 → 0.27.19
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 +7 -7
- package/dist/apps/panel/index.html +8 -7
- package/dist/src/adapters/pi/extension.js +429 -175
- package/dist/src/adapters/pi/extension.js.map +1 -1
- package/dist/src/adapters/pi/search-tools.d.ts +21 -0
- package/dist/src/adapters/pi/search-tools.js +248 -0
- package/dist/src/adapters/pi/search-tools.js.map +1 -0
- package/dist/src/analysis/hooks.js +3 -3
- package/dist/src/analysis/hooks.js.map +1 -1
- package/dist/src/analysis/pre-registration.d.ts +5 -4
- package/dist/src/analysis/pre-registration.js +3 -3
- package/dist/src/analysis/pre-registration.js.map +1 -1
- package/dist/src/branding.d.ts +1 -1
- package/dist/src/branding.js +17 -12
- package/dist/src/branding.js.map +1 -1
- package/dist/src/chat.js +9 -0
- package/dist/src/chat.js.map +1 -1
- package/dist/src/cli-args.d.ts +2 -0
- package/dist/src/cli-args.js +7 -0
- package/dist/src/cli-args.js.map +1 -0
- package/dist/src/cli.js +7 -18
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/orchestration/contracts.d.ts +4 -1
- package/dist/src/panel/events.js +28 -1
- package/dist/src/panel/events.js.map +1 -1
- package/dist/src/panel/extension.d.ts +1 -1
- package/dist/src/panel/extension.js +16 -9
- package/dist/src/panel/extension.js.map +1 -1
- package/dist/src/panel/projection.d.ts +1 -1
- package/dist/src/panel/projection.js +30 -12
- package/dist/src/panel/projection.js.map +1 -1
- package/dist/src/panel/server.d.ts +11 -1
- package/dist/src/panel/server.js +86 -4
- package/dist/src/panel/server.js.map +1 -1
- package/dist/src/project/approvals.d.ts +8 -0
- package/dist/src/project/approvals.js +6 -7
- package/dist/src/project/approvals.js.map +1 -1
- package/dist/src/project/bootstrap.d.ts +0 -17
- package/dist/src/project/bootstrap.js +1 -87
- package/dist/src/project/bootstrap.js.map +1 -1
- package/dist/src/project/hitl.d.ts +4 -1
- package/dist/src/project/hitl.js +8 -5
- package/dist/src/project/hitl.js.map +1 -1
- package/dist/src/research/brief.js +1 -1
- package/dist/src/research/brief.js.map +1 -1
- package/dist/src/research/decision.d.ts +46 -0
- package/dist/src/research/decision.js +85 -0
- package/dist/src/research/decision.js.map +1 -0
- package/dist/src/style/cli-ui.js +4 -4
- package/dist/src/style/cli-ui.js.map +1 -1
- package/dist/src/tui/skill-manager.d.ts +1 -0
- package/dist/src/tui/skill-manager.js +6 -1
- package/dist/src/tui/skill-manager.js.map +1 -1
- package/dist/src/wizard.js +16 -7
- package/dist/src/wizard.js.map +1 -1
- package/dist/src/workflows/expert-review-runner.js +4 -6
- package/dist/src/workflows/expert-review-runner.js.map +1 -1
- package/dist/src/workflows/institutional-fulltext.js +3 -3
- package/dist/src/workflows/institutional-fulltext.js.map +1 -1
- package/dist/src/workflows/publish.js +3 -2
- package/dist/src/workflows/publish.js.map +1 -1
- package/dist/src/workflows/spec.js +1 -1
- package/dist/src/workflows/spec.js.map +1 -1
- package/dist/src/workflows/writing-review.js +40 -7
- package/dist/src/workflows/writing-review.js.map +1 -1
- package/package.json +3 -2
- package/scripts/psyclaw.mjs +27 -0
- package/scripts/rebrand-pi.mjs +88 -17
- package/skills/core/academic-grill/SKILL.md +9 -1
- package/skills/core/citation-audit/SKILL.md +2 -0
- package/skills/core/research-brief/SKILL.md +6 -0
- package/skills/core/research-intake/SKILL.md +1 -1
- package/skills/recommended/catalog.json +11 -28
- package/skills/recommended/mcp-catalog.json +13 -1
|
@@ -5,7 +5,7 @@ import { allocateProjectVersion } from "../project/versions.js";
|
|
|
5
5
|
import { checkEvidenceSufficiency } from "../core/evidence-policy.js";
|
|
6
6
|
import { loadLedger, readProject } from "../research/ledger.js";
|
|
7
7
|
import { allParadigms, finalizeWorkflow } from "./spec.js";
|
|
8
|
-
export const expertReviewWorkflowSpec = { id: "expert-review", version: "1.
|
|
8
|
+
export const expertReviewWorkflowSpec = { id: "expert-review", version: "1.1.0", description: "Run four independent review roles and produce evidence-grounded recommendations without changing the manuscript.", paradigms: allParadigms, steps: [{ id: "evidence", role: "verifier", effect: "read", description: "load and check the evidence ledger" }, { id: "method", role: "analyst", effect: "read", description: "review methods and claims" }, { id: "ethics", role: "critic", effect: "read", description: "review integrity, uncertainty, and ethics" }, { id: "editorial", role: "writer", effect: "read", description: "propose clarity and reporting revisions" }], requiredArtifacts: ["expert-review.md", "review-result.json", "review-suggestions.json"] };
|
|
9
9
|
export const expertReviewSpec = expertReviewWorkflowSpec;
|
|
10
10
|
export const DEFAULT_REVIEWER_ROLES = [{ id: "methodologist", label: "Methodologist", remit: "methods, design, and conclusion boundaries" }, { id: "evidence-auditor", label: "Evidence auditor", remit: "claim, source, locator, and conflict coverage" }, { id: "integrity-ethicist", label: "Integrity and ethics reviewer", remit: "uncertainty, ethics, privacy, and reporting risks" }, { id: "editor", label: "Academic editor", remit: "clarity, structure, and transparent revision suggestions" }];
|
|
11
11
|
export async function runExpertReview(root, options = {}) {
|
|
@@ -14,8 +14,6 @@ export async function runExpertReview(root, options = {}) {
|
|
|
14
14
|
const gates = checkEvidenceSufficiency({ ...ledger, paradigm: project.paradigm });
|
|
15
15
|
const version = await allocateProjectVersion(root, "manuscript-revision", `expert-review:${Date.now()}`);
|
|
16
16
|
const approval = options.approval;
|
|
17
|
-
if (!approval?.approved)
|
|
18
|
-
gates.push({ gateId: "expert-review:human-approval", ok: false, severity: "block", reason: "human approval is required before adopting review recommendations" });
|
|
19
17
|
const suggestions = [];
|
|
20
18
|
for (const claim of ledger.claims) {
|
|
21
19
|
const gate = gates.find((item) => item.claimIds?.includes(claim.id));
|
|
@@ -25,10 +23,10 @@ export async function runExpertReview(root, options = {}) {
|
|
|
25
23
|
suggestions.push({ id: `suggestion_${randomUUID().replaceAll("-", "")}`, role: "methodologist", priority: "warn", target: claim.id, suggestion: "replace causal or confirmatory wording with evidence-qualified language", rationale: "the claim is not a verified result artifact", status: "proposed" });
|
|
26
24
|
}
|
|
27
25
|
if (suggestions.length === 0)
|
|
28
|
-
suggestions.push({ id: `suggestion_${randomUUID().replaceAll("-", "")}`, role: "editor", priority: "warn", suggestion: "retain the current text
|
|
29
|
-
const result = { schemaVersion: "psyclaw/expert-review/v1", version, workflowVersion: expertReviewWorkflowSpec.version, roles: options.roles ?? DEFAULT_REVIEWER_ROLES,
|
|
26
|
+
suggestions.push({ id: `suggestion_${randomUUID().replaceAll("-", "")}`, role: "editor", priority: "warn", suggestion: "retain the current text; no evidence-based revision was identified", rationale: "the review did not identify a supported change", status: "proposed" });
|
|
27
|
+
const result = { schemaVersion: "psyclaw/expert-review/v1", version, workflowVersion: expertReviewWorkflowSpec.version, roles: options.roles ?? DEFAULT_REVIEWER_ROLES, adoption: approval ? { ...approval, at: approval.at ?? new Date().toISOString() } : { status: "not-requested" }, suggestions, findingCount: suggestions.length };
|
|
30
28
|
const markdown = [`# Expert Review ${version}`, "", `Research goal: ${project.goal}`, "", "Recommendations are proposals only; this workflow never edits manuscript text.", "", "## Recommendations", "", ...suggestions.map((item) => `- [${item.priority}] ${item.role}: ${item.suggestion}${item.target ? ` (${item.target})` : ""}`), ""].join("\n");
|
|
31
|
-
const receipt = { schemaVersion: "psyclaw/review-receipt/v1", runId: `review:${version}`, workflow: expertReviewWorkflowSpec.id, version, approval:
|
|
29
|
+
const receipt = { schemaVersion: "psyclaw/review-receipt/v1", runId: `review:${version}`, workflow: expertReviewWorkflowSpec.id, version, approval: "not-needed", actor: approval?.actor ?? null, idempotencyKey: `expert-review:${version}`, createdAt: new Date().toISOString() };
|
|
32
30
|
await appendJsonl(projectPaths(root).audit, { schemaVersion: "psyclaw/audit/v1", action: "expert-review", workflow: expertReviewWorkflowSpec.id, version, approval: receipt.approval, actor: receipt.actor, receipt: receipt.schemaVersion, at: receipt.createdAt });
|
|
33
31
|
return finalizeWorkflow(root, expertReviewWorkflowSpec, { gates, outputs: [{ path: "expert-review.md", contents: markdown }, { path: "review-result.json", contents: `${JSON.stringify(result, null, 2)}\n` }, { path: "review-suggestions.json", contents: `${JSON.stringify({ schemaVersion: "psyclaw/review-suggestions/v1", version, suggestions }, null, 2)}\n` }, { path: `expert-review-${version}.md`, contents: markdown }, { path: `review-receipt-${version}.json`, contents: `${JSON.stringify(receipt, null, 2)}\n` }], completed: ["four reviewer roles evaluated the ledger", "standardized review result produced", "revision suggestions recorded without editing source text"] });
|
|
34
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expert-review-runner.js","sourceRoot":"","sources":["../../../src/workflows/expert-review-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAA0C,MAAM,WAAW,CAAC;AAEnG,MAAM,CAAC,MAAM,wBAAwB,GAAiB,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"expert-review-runner.js","sourceRoot":"","sources":["../../../src/workflows/expert-review-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { allParadigms, finalizeWorkflow } from "./spec.js";
|
|
|
7
7
|
export const institutionalFulltextSpec = {
|
|
8
8
|
id: "institutional-fulltext",
|
|
9
9
|
version: "1.0.0",
|
|
10
|
-
description: "Prepare
|
|
10
|
+
description: "Prepare a traceable browser workflow for retrieving institutionally authorized full text after access confirmation.",
|
|
11
11
|
paradigms: allParadigms,
|
|
12
12
|
steps: [
|
|
13
13
|
{ id: "identify", role: "researcher", effect: "read", description: "normalize the DOI, publisher URL, or title supplied by the researcher" },
|
|
@@ -55,9 +55,9 @@ export async function runInstitutionalFulltext(root, identifier = "") {
|
|
|
55
55
|
`Target: ${target}`,
|
|
56
56
|
`Bridge: ${plan.bridge.adapter} (${plan.bridge.mode})`,
|
|
57
57
|
"",
|
|
58
|
-
"##
|
|
58
|
+
"## Access Confirmation",
|
|
59
59
|
"",
|
|
60
|
-
"The user must complete institutional authentication in the visible browser and confirm the exact article before download.",
|
|
60
|
+
"The user must complete institutional authentication in the visible browser and confirm the exact article before download. This confirms access and the download target; it is not a research-method decision.",
|
|
61
61
|
"",
|
|
62
62
|
"## Steps",
|
|
63
63
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"institutional-fulltext.js","sourceRoot":"","sources":["../../../src/workflows/institutional-fulltext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAA0C,MAAM,WAAW,CAAC;AAEnG,MAAM,CAAC,MAAM,yBAAyB,GAAiB;IACrD,EAAE,EAAE,wBAAwB;IAC5B,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"institutional-fulltext.js","sourceRoot":"","sources":["../../../src/workflows/institutional-fulltext.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,10 +57,11 @@ export async function publishManuscript(root, options = {}) {
|
|
|
57
57
|
if (!citationAudit.ok) {
|
|
58
58
|
const missing = citationAudit.missingPdfs.map((item) => `${item.doi} -> ${item.doiUrl}(下载到 ${item.expectedPath})`);
|
|
59
59
|
throw new Error([
|
|
60
|
-
"
|
|
61
|
-
citationAudit.citedDois.length === 0 ? "
|
|
60
|
+
"论文暂不适合定稿:参考文献核对尚未完成。",
|
|
61
|
+
citationAudit.citedDois.length === 0 ? "尚未登记正文引用及其来源。" : "",
|
|
62
62
|
citationAudit.missingVerification.length ? `未完成双源核验:${citationAudit.missingVerification.join(", ")}` : "",
|
|
63
63
|
missing.length ? `本地缺少引用论文 PDF:${missing.join(";")}` : "",
|
|
64
|
+
"请补齐后重新导出;当前分析报告仍可单独导出,但不能标为正式论文。",
|
|
64
65
|
].filter(Boolean).join(" "));
|
|
65
66
|
}
|
|
66
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/workflows/publish.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/workflows/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -132,7 +132,7 @@ export async function finalizeWorkflow(root, workflow, options) {
|
|
|
132
132
|
? ["outputs", "output index", "manifest", "verdict"]
|
|
133
133
|
: ["manifest", "verdict"],
|
|
134
134
|
blocked: blocked.map((gate) => gate.reason),
|
|
135
|
-
nextSteps: blocked.length === 0 ? ["
|
|
135
|
+
nextSteps: blocked.length === 0 ? ["review before external use"] : ["repair the reported workflow or evidence gaps and rerun verification"],
|
|
136
136
|
verificationCommands: ["pnpm typecheck", "pnpm test"],
|
|
137
137
|
generatedAt: new Date().toISOString(),
|
|
138
138
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/workflows/spec.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/workflows/spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { checkEvidenceSufficiency } from "../core/evidence-policy.js";
|
|
|
2
2
|
import { loadLedger, readProject } from "../research/ledger.js";
|
|
3
3
|
import { allParadigms, finalizeWorkflow } from "./spec.js";
|
|
4
4
|
import { allocateProjectVersion } from "../project/versions.js";
|
|
5
|
+
import { readManuscript } from "../project/manuscript.js";
|
|
6
|
+
import { checkCitations, listReferences } from "../core/references.js";
|
|
5
7
|
export const writingReviewSpec = {
|
|
6
8
|
id: "writing-review",
|
|
7
9
|
version: "1.0.0",
|
|
@@ -16,9 +18,15 @@ export const writingReviewSpec = {
|
|
|
16
18
|
};
|
|
17
19
|
const CAUSAL_PATTERN = /\b(?:causes?|leads? to|determines?|increases?|decreases?|drives?|improves?)\b/i;
|
|
18
20
|
const CONFIRMATORY_PATTERN = /\b(?:proves?|proven|established)\b/i;
|
|
21
|
+
const INTERNAL_PROSE_PATTERN = /\b(?:Claim|Evidence|ledger|gate|receipt|verifier|blocked outcome)\b|证据账本|受阻结局|门禁阻断|质量审计/iu;
|
|
22
|
+
function abstractText(markdown) {
|
|
23
|
+
const match = markdown.match(/(?:^|\n)#{1,3}\s*(?:摘要|Abstract)\s*\n([\s\S]*?)(?=\n#{1,3}\s|$)/i);
|
|
24
|
+
return match?.[1]?.trim() ?? "";
|
|
25
|
+
}
|
|
19
26
|
export async function runWritingReview(root) {
|
|
20
27
|
const project = await readProject(root);
|
|
21
28
|
const ledger = await loadLedger(root);
|
|
29
|
+
const [manuscript, references] = await Promise.all([readManuscript(root), listReferences(root)]);
|
|
22
30
|
const gates = checkEvidenceSufficiency({ ...ledger, paradigm: project.paradigm });
|
|
23
31
|
const version = await allocateProjectVersion(root, "manuscript-revision", `writing-review:${Date.now()}`);
|
|
24
32
|
const gateByClaim = new Map(gates.map((gate) => [gate.claimIds?.[0], gate]));
|
|
@@ -30,7 +38,7 @@ export async function runWritingReview(root) {
|
|
|
30
38
|
severity: "block",
|
|
31
39
|
rule: "unsupported-claim-asserted-as-supported",
|
|
32
40
|
claimId: claim.id,
|
|
33
|
-
message:
|
|
41
|
+
message: "这项研究陈述目前缺少足够且可定位的来源支持;请补充材料,或缩小表述范围并说明不确定性。",
|
|
34
42
|
});
|
|
35
43
|
}
|
|
36
44
|
if (claim.kind !== "result" && CAUSAL_PATTERN.test(claim.text)) {
|
|
@@ -38,7 +46,7 @@ export async function runWritingReview(root) {
|
|
|
38
46
|
severity: "warn",
|
|
39
47
|
rule: "causal-language-without-result-artifact",
|
|
40
48
|
claimId: claim.id,
|
|
41
|
-
message:
|
|
49
|
+
message: "当前研究设计不足以支持因果表述;请改写为关联性描述,或补充能够支持因果推断的设计与分析依据。",
|
|
42
50
|
});
|
|
43
51
|
}
|
|
44
52
|
if (claim.kind === "result" && CONFIRMATORY_PATTERN.test(claim.text)) {
|
|
@@ -46,7 +54,32 @@ export async function runWritingReview(root) {
|
|
|
46
54
|
severity: "warn",
|
|
47
55
|
rule: "confirmatory-language",
|
|
48
56
|
claimId: claim.id,
|
|
49
|
-
message:
|
|
57
|
+
message: "这项结果被写成了已经证实的事实;请结合效应大小、不确定性和研究设计边界调整措辞。",
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (manuscript.exists && manuscript.markdown.trim()) {
|
|
62
|
+
const citationCheck = checkCitations(manuscript.markdown, references);
|
|
63
|
+
if (citationCheck.unmatched > 0) {
|
|
64
|
+
findings.push({
|
|
65
|
+
severity: "warn",
|
|
66
|
+
rule: "in-text-reference-mismatch",
|
|
67
|
+
message: `正文中有 ${citationCheck.unmatched} 组作者—年份引文未能与已核验的参考文献记录对应;请逐项核对作者、年份、DOI 和文末条目。`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (INTERNAL_PROSE_PATTERN.test(manuscript.markdown)) {
|
|
71
|
+
findings.push({
|
|
72
|
+
severity: "warn",
|
|
73
|
+
rule: "internal-workflow-language-in-manuscript",
|
|
74
|
+
message: "正文含有系统内部校验术语;请按学科语境改写为研究陈述、证据来源、质量检查、结果指标、所需软件或无法分析等自然表达。",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const abstract = abstractText(manuscript.markdown);
|
|
78
|
+
if (/SHA-?256|文件哈希|(?:缺失|损坏).{0,20}(?:列|字段).{0,40}(?:[,,、;;].*){2,}/iu.test(abstract)) {
|
|
79
|
+
findings.push({
|
|
80
|
+
severity: "warn",
|
|
81
|
+
rule: "abstract-implementation-detail",
|
|
82
|
+
message: "摘要包含文件指纹或较细的字段级数据质量信息;请只保留总体数据质量及其对分析的影响,并把完整诊断移至方法或补充材料。",
|
|
50
83
|
});
|
|
51
84
|
}
|
|
52
85
|
}
|
|
@@ -58,13 +91,13 @@ export async function runWritingReview(root) {
|
|
|
58
91
|
suggestions: findings.map((finding) => ({ severity: finding.severity, rule: finding.rule, ...(finding.claimId ? { claimId: finding.claimId } : {}), suggestion: finding.message })),
|
|
59
92
|
};
|
|
60
93
|
const markdown = [
|
|
61
|
-
`#
|
|
94
|
+
`# 写作评审 ${version}`,
|
|
62
95
|
"",
|
|
63
|
-
|
|
96
|
+
`研究目标:${project.goal}`,
|
|
64
97
|
"",
|
|
65
|
-
"##
|
|
98
|
+
"## 修改建议",
|
|
66
99
|
"",
|
|
67
|
-
...(findings.length ? findings.map((finding) => `-
|
|
100
|
+
...(findings.length ? findings.map((finding) => `- ${finding.severity === "block" ? "需优先修改" : "建议修改"}:${finding.message}`) : ["- 暂未发现需要修改的问题。"]),
|
|
68
101
|
"",
|
|
69
102
|
].join("\n");
|
|
70
103
|
return finalizeWorkflow(root, writingReviewSpec, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writing-review.js","sourceRoot":"","sources":["../../../src/workflows/writing-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAA0C,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"writing-review.js","sourceRoot":"","sources":["../../../src/workflows/writing-review.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "psyclaw",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.19",
|
|
4
4
|
"description": "A standalone, evidence-grounded social-science research agent with research contracts, evidence gates, and recoverable workflows",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
"registry": "https://registry.npmjs.org/"
|
|
18
18
|
},
|
|
19
19
|
"bin": {
|
|
20
|
-
"psyclaw": "
|
|
20
|
+
"psyclaw": "scripts/psyclaw.mjs"
|
|
21
21
|
},
|
|
22
22
|
"files": [
|
|
23
23
|
"dist/src",
|
|
24
24
|
"dist/apps/panel/index.html",
|
|
25
25
|
"skills",
|
|
26
|
+
"scripts/psyclaw.mjs",
|
|
26
27
|
"scripts/rebrand-pi.mjs"
|
|
27
28
|
],
|
|
28
29
|
"engines": {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { rebrandPiRuntime } from "./rebrand-pi.mjs";
|
|
6
|
+
|
|
7
|
+
try {
|
|
8
|
+
// Keep PsyClaw's bundled runtime isolated from a separately installed Pi.
|
|
9
|
+
// Set both names because the locked runtime derives its preferred variable
|
|
10
|
+
// from the branded app name, while older/bundled entrypoints may still read
|
|
11
|
+
// Pi's legacy variable. Neither path may fall back to ~/.pi.
|
|
12
|
+
const agentDir = process.env.PSYCLAW_CODING_AGENT_DIR || join(homedir(), ".psyclaw", "agent");
|
|
13
|
+
const sessionDir = process.env.PSYCLAW_CODING_AGENT_SESSION_DIR || join(agentDir, "sessions");
|
|
14
|
+
process.env.PSYCLAW_CODING_AGENT_DIR = agentDir;
|
|
15
|
+
process.env.PSYCLAW_CODING_AGENT_SESSION_DIR = sessionDir;
|
|
16
|
+
process.env.PI_CODING_AGENT_DIR = agentDir;
|
|
17
|
+
process.env.PI_CODING_AGENT_SESSION_DIR = sessionDir;
|
|
18
|
+
|
|
19
|
+
// Pi reads its application name and config directory while its modules are
|
|
20
|
+
// first imported. Prepare the locked runtime before loading PsyClaw's CLI so
|
|
21
|
+
// a clean first launch cannot create the legacy ~/.pi directory.
|
|
22
|
+
await rebrandPiRuntime({ quiet: true });
|
|
23
|
+
await import("../dist/src/cli.js");
|
|
24
|
+
} catch (error) {
|
|
25
|
+
process.stderr.write(`PsyClaw could not start: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
26
|
+
process.exitCode = 1;
|
|
27
|
+
}
|
package/scripts/rebrand-pi.mjs
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { execFile } from "node:child_process";
|
|
14
14
|
import { readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
15
15
|
import { randomUUID } from "node:crypto";
|
|
16
|
-
import { basename, dirname, join } from "node:path";
|
|
16
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
17
17
|
import { fileURLToPath } from "node:url";
|
|
18
18
|
|
|
19
19
|
const NAME = "PsyClaw";
|
|
@@ -245,7 +245,13 @@ const MODE_PATCHES = [
|
|
|
245
245
|
// Enable the remaining input handlers only after managed-tool setup completes.
|
|
246
246
|
this.setupKeyHandlers();
|
|
247
247
|
this.setupEditorSubmitHandler();`,
|
|
248
|
-
next: `//
|
|
248
|
+
next: `// PsyClaw provides cross-platform Node search tools through its extension.
|
|
249
|
+
this.setupKeyHandlers();
|
|
250
|
+
this.setupEditorSubmitHandler();
|
|
251
|
+
// File completion remains optional; startup never downloads from GitHub.`,
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
old: `// Input must remain usable while optional search binaries are installed.
|
|
249
255
|
this.setupKeyHandlers();
|
|
250
256
|
this.setupEditorSubmitHandler();
|
|
251
257
|
const reportToolFailure = (status) => {
|
|
@@ -259,6 +265,10 @@ const MODE_PATCHES = [
|
|
|
259
265
|
}).catch((error) => {
|
|
260
266
|
this.showManagedToolStatus({ type: "warning", message: \`Search tools unavailable: \${error instanceof Error ? error.message : String(error)}\` });
|
|
261
267
|
});`,
|
|
268
|
+
next: `// PsyClaw provides cross-platform Node search tools through its extension.
|
|
269
|
+
this.setupKeyHandlers();
|
|
270
|
+
this.setupEditorSubmitHandler();
|
|
271
|
+
// File completion remains optional; startup never downloads from GitHub.`,
|
|
262
272
|
},
|
|
263
273
|
{
|
|
264
274
|
old: 'this.ui.terminal.setTitle(`${APP_TITLE} - ${sessionName} - ${cwdBasename}`);',
|
|
@@ -272,6 +282,31 @@ const MODE_PATCHES = [
|
|
|
272
282
|
old: 'then restart pi.',
|
|
273
283
|
next: 'then restart PsyClaw.',
|
|
274
284
|
},
|
|
285
|
+
{
|
|
286
|
+
old: `if (text === "/login" || text.startsWith("/login ")) {
|
|
287
|
+
const providerRef = text.startsWith("/login ") ? text.slice(7).trim() : undefined;
|
|
288
|
+
this.editor.setText("");
|
|
289
|
+
await this.handleLoginCommand(providerRef);
|
|
290
|
+
return;
|
|
291
|
+
}`,
|
|
292
|
+
next: `if (text === "/login" || text.startsWith("/login ")) {
|
|
293
|
+
this.editor.setText("");
|
|
294
|
+
this.showWarning("PsyClaw 已统一隐藏底层登录命令。请使用 /provider 配置或切换模型。");
|
|
295
|
+
return;
|
|
296
|
+
}`,
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
old: `if (text === "/logout") {
|
|
300
|
+
this.showOAuthSelector("logout");
|
|
301
|
+
this.editor.setText("");
|
|
302
|
+
return;
|
|
303
|
+
}`,
|
|
304
|
+
next: `if (text === "/logout") {
|
|
305
|
+
this.editor.setText("");
|
|
306
|
+
this.showWarning("PsyClaw 已统一隐藏底层退出命令。请使用 /provider 管理模型配置。");
|
|
307
|
+
return;
|
|
308
|
+
}`,
|
|
309
|
+
},
|
|
275
310
|
];
|
|
276
311
|
|
|
277
312
|
async function patchPackageJson(pkgPath) {
|
|
@@ -361,6 +396,30 @@ const SETTINGS_PATCHES = [
|
|
|
361
396
|
},
|
|
362
397
|
];
|
|
363
398
|
|
|
399
|
+
// PsyClaw owns provider setup through /provider. Keep Pi's authentication
|
|
400
|
+
// implementation available underneath, but do not expose its lower-level
|
|
401
|
+
// /login and /logout commands in autocomplete or command help.
|
|
402
|
+
const HIDDEN_PI_COMMANDS = ["login", "logout"];
|
|
403
|
+
|
|
404
|
+
async function applySlashCommandPatches(slashCommandsPath) {
|
|
405
|
+
let content = await readFile(slashCommandsPath, "utf8");
|
|
406
|
+
const applied = [];
|
|
407
|
+
for (const name of HIDDEN_PI_COMMANDS) {
|
|
408
|
+
const commandPattern = new RegExp(
|
|
409
|
+
`^\\s*\\{ name: "${name}", description: [^\\n]+\\},\\r?\\n`,
|
|
410
|
+
"m",
|
|
411
|
+
);
|
|
412
|
+
if (commandPattern.test(content)) {
|
|
413
|
+
content = content.replace(commandPattern, "");
|
|
414
|
+
applied.push(`hide /${name}`);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (applied.length > 0) {
|
|
418
|
+
await atomicReplace(slashCommandsPath, content, true);
|
|
419
|
+
}
|
|
420
|
+
return applied;
|
|
421
|
+
}
|
|
422
|
+
|
|
364
423
|
async function applySettingsPatches(settingsManagerPath) {
|
|
365
424
|
let content = await readFile(settingsManagerPath, "utf8");
|
|
366
425
|
const applied = [];
|
|
@@ -376,33 +435,45 @@ async function applySettingsPatches(settingsManagerPath) {
|
|
|
376
435
|
return applied;
|
|
377
436
|
}
|
|
378
437
|
|
|
379
|
-
async function
|
|
438
|
+
export async function rebrandPiRuntime(options = {}) {
|
|
380
439
|
const entry = import.meta.resolve("@earendil-works/pi-coding-agent");
|
|
381
440
|
const pkgDir = dirname(dirname(fileURLToPath(entry)));
|
|
382
441
|
const pkgPath = join(pkgDir, "package.json");
|
|
383
442
|
const modePath = join(pkgDir, "dist", "modes", "interactive", "interactive-mode.js");
|
|
384
443
|
const settingsManagerPath = join(pkgDir, "dist", "core", "settings-manager.js");
|
|
444
|
+
const slashCommandsPath = join(pkgDir, "dist", "core", "slash-commands.js");
|
|
385
445
|
|
|
386
446
|
const pkgResult = await patchPackageJson(pkgPath);
|
|
387
447
|
const applied = await applyModePatches(modePath);
|
|
388
448
|
const settingsApplied = await applySettingsPatches(settingsManagerPath);
|
|
449
|
+
const commandApplied = await applySlashCommandPatches(slashCommandsPath);
|
|
389
450
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
451
|
+
if (!options.quiet) {
|
|
452
|
+
process.stdout.write(
|
|
453
|
+
`psyclaw rebrand: piConfig ${pkgResult.applied ? "applied" : "already set"} · ${applied.length > 0 ? `patched ${applied.length} display string(s)` : "display strings already patched"} · ${settingsApplied.length > 0 ? `patched ${settingsApplied.length} setting default(s)` : "settings already patched"} · ${commandApplied.length > 0 ? `hidden ${commandApplied.length} Pi command(s)` : "Pi commands already filtered"} (${pkgDir})\n`,
|
|
454
|
+
);
|
|
455
|
+
if (applied.length > 0) {
|
|
456
|
+
for (const label of applied) {
|
|
457
|
+
process.stdout.write(` - ${label}…\n`);
|
|
458
|
+
}
|
|
396
459
|
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
460
|
+
if (settingsApplied.length > 0) {
|
|
461
|
+
for (const label of settingsApplied) {
|
|
462
|
+
process.stdout.write(` - ${label}…\n`);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
if (commandApplied.length > 0) {
|
|
466
|
+
for (const label of commandApplied) {
|
|
467
|
+
process.stdout.write(` - ${label}…\n`);
|
|
468
|
+
}
|
|
401
469
|
}
|
|
402
470
|
}
|
|
403
471
|
}
|
|
404
472
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
});
|
|
473
|
+
const invokedPath = process.argv[1] ? resolve(process.argv[1]) : "";
|
|
474
|
+
if (invokedPath === fileURLToPath(import.meta.url)) {
|
|
475
|
+
rebrandPiRuntime().catch((error) => {
|
|
476
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
477
|
+
process.exitCode = 1;
|
|
478
|
+
});
|
|
479
|
+
}
|
|
@@ -8,12 +8,18 @@ license: MIT
|
|
|
8
8
|
|
|
9
9
|
Interrogate the user's academic plan until both sides share a precise, defensible research specification. Be rigorous about the reasoning while remaining constructive toward the researcher.
|
|
10
10
|
|
|
11
|
+
When the user provides a dataset or topic without a mature research question, begin by doing intellectual work: inspect the available context and propose 2-4 theoretically meaningful, answerable questions or hypotheses. Briefly compare their value, feasibility, and inferential limits, recommend one, and then ask only for decisions the user genuinely needs to make.
|
|
12
|
+
|
|
11
13
|
## Interaction Contract
|
|
12
14
|
|
|
13
15
|
- Ask exactly one substantive question per turn.
|
|
14
16
|
- Give a concise recommended answer or decision with every question, including the reason and main trade-off. Clearly distinguish that recommendation from facts established by evidence.
|
|
15
17
|
- Resolve upstream decisions before downstream ones. Do not ask about an analysis technique while the construct, estimand, comparison, or data-generating process is still unclear.
|
|
16
18
|
- If the answer can be established from files, project state, registered evidence, code, or prior conversation, inspect those sources instead of asking the user.
|
|
19
|
+
- Enter a researcher decision only when at least two substantively defensible options remain after checking the available evidence and established methods, and the choice would change the research question, sample treatment, operationalization, estimand, analysis method, or interpretation. Record what evidence and methods were checked, explain why they cannot resolve the disagreement, and state the options, evidence, consequences, and your recommendation.
|
|
20
|
+
- Do not ask the researcher to decide software installation, dependency repair, file formatting, script debugging, reproducibility metadata, citation formatting, or a reporting omission that the agent can repair. Repair these directly inside an active `/run`, or report a concrete technical limitation without treating it as a research decision.
|
|
21
|
+
- A dataset supplied for analysis is exploratory by default unless the user says that hypotheses and analyses were fixed before seeing it. Do not lead with a preregistration question, do not ask for a preregistration URL, and do not imply that exploratory work is methodologically inferior. For explicitly confirmatory work, ask what was specified in advance only when that distinction affects analysis or interpretation.
|
|
22
|
+
- Use researcher-facing language. Keep internal terms such as Claim, Evidence, ledger, gate, audit, blocked, receipt, and dependency out of ordinary questions and proposed prose.
|
|
17
23
|
- Use the user's latest answer to choose the next unresolved branch. Do not dump a static questionnaire.
|
|
18
24
|
- When the user's answer creates a contradiction or leaves a consequential ambiguity, resolve it before advancing.
|
|
19
25
|
- Challenge unsupported assumptions, vague constructs, convenience samples, post-hoc outcomes, causal overreach, missing uncertainty, undisclosed researcher degrees of freedom, non-falsifiable claims, and conclusions that exceed the evidence.
|
|
@@ -68,7 +74,9 @@ After the interview is complete, update the initialized project without asking f
|
|
|
68
74
|
- `notes/research-spec.md`: the complete confirmed research specification and claims boundary;
|
|
69
75
|
- `notes/decisions.md`: consequential decisions, rationale, alternatives, owner, and status;
|
|
70
76
|
- `notes/plan.md`: dependency-ordered tasks derived from the confirmed specification, with inputs, outputs, approvals, status, and stop conditions;
|
|
71
|
-
- `notes/decision_request.md`: unresolved
|
|
77
|
+
- `notes/decision_request.md`: only unresolved substantive research trade-offs that meet the decision threshold above, or an explicit `Status: none` when there are none.
|
|
78
|
+
|
|
79
|
+
When no qualifying trade-off remains, set the status in `notes/research-spec.md` and `notes/plan.md` to `ready-for-run`. Do not use `awaiting-human-approval` as a routine completion state.
|
|
72
80
|
|
|
73
81
|
Preserve valid frontmatter and existing unrelated user content. Do not mark evidence, ethics approval, preregistration, data access, analysis, or review as completed unless project records establish it.
|
|
74
82
|
|
|
@@ -7,3 +7,5 @@ license: MIT
|
|
|
7
7
|
# Citation Audit
|
|
8
8
|
|
|
9
9
|
Split factual statements into Claims. Require a qualifying source and locator for every supported Claim, preserve contradictory evidence, and downgrade uncertainty instead of filling gaps. A title match, abstract-only record, or model memory is not proof of a result or causal statement.
|
|
10
|
+
|
|
11
|
+
These are internal checks. In the manuscript and normal conversation, use natural disciplinary prose rather than exposing Claim/Evidence IDs, ledgers, gates, audit labels, or blocked states. For the final reference check, enforce bidirectional matching between in-text citations and the reference list, consistent target style, correct work type, complete verified metadata, stable DOI, alphabetical or numbered ordering as required, and hanging indentation where the style requires it.
|
|
@@ -9,3 +9,9 @@ license: MIT
|
|
|
9
9
|
Follow intake -> capture -> ledger -> audit -> write -> handoff. Write only from accepted evidence and label gaps, contradictions, exploratory claims, and human decisions. Include a provenance manifest, verification verdict, and executable handoff; do not invent citations, data, methods, or numerical results.
|
|
10
10
|
|
|
11
11
|
For manuscript outputs, use continuous academic paragraphs rather than bullet-heavy notes. Apply a neutral submission format: Times New Roman for Latin text, SimSun/宋体 fallback for Chinese, black headings and body text, and no decorative color. Before finalization, ensure each factual or literature-dependent paragraph has a verified citation; if sources are insufficient, retrieve more or mark the section uncertain instead of fabricating references.
|
|
12
|
+
|
|
13
|
+
Keep internal workflow language out of reader-facing prose. Translate Claim/Evidence checks into ordinary scholarly reasoning and avoid bureaucratic terms such as audit, blocked outcome, dependency, receipt, or gate. In Chinese psychology writing, prefer context-specific terms such as research statement, supporting literature, quality check, outcome variable or indicator, required software, and unavailable analysis. Remove stacked modifiers and repeated methodological disclaimers; state each necessary limitation once in the most relevant section.
|
|
14
|
+
|
|
15
|
+
Follow the target venue's abstract instructions exactly. Without a supplied venue format, write one concise paragraph covering purpose, method, principal results, and conclusion; do not add explicit four-part labels by default. Keep column-level data diagnostics, hashes, implementation details, and exhaustive secondary results out of the abstract. Report data quality in aggregate in the manuscript and put complete variable-level diagnostics in supplementary material.
|
|
16
|
+
|
|
17
|
+
Reference use is part of the manuscript, not a separate inventory. Apply one citation style consistently, make every in-text citation match exactly one reference entry and vice versa, preserve the publication type, and verify author order, year, title, journal or proceedings, volume, issue, pages or article number, DOI, punctuation, ordering, and hanging indent from source metadata. Never fill missing fields from memory.
|
|
@@ -6,4 +6,4 @@ license: MIT
|
|
|
6
6
|
|
|
7
7
|
# Research Intake
|
|
8
8
|
|
|
9
|
-
Collect the research goal, paradigm, population or corpus, time range, language and geography, exploratory versus confirmatory status, ethics constraints, and desired output.
|
|
9
|
+
Collect the research goal, paradigm, population or corpus, time range, language and geography, exploratory versus confirmatory status, ethics constraints, and desired output. When a dataset arrives without a question, inspect its documented variables and context, propose 2-4 valuable and answerable research directions, and recommend one before asking the researcher to decide. Infer non-sensitive methodological defaults where the files and disciplinary conventions support them; ask only about choices that materially change the study. Treat post-data question development as exploratory, not as a failure. Discuss preregistration only for explicitly confirmatory work and never require a public link. Keep the design card in `.psyclaw/project.json` and never infer consent or access rights.
|