test: cover actual OpenClaw run artifact adoption
This commit is contained in:
parent
b68fc811c9
commit
56845ab79f
@ -181,6 +181,9 @@ local users can open or download them directly from that workspace path.
|
|||||||
Gateway clients can use:
|
Gateway clients can use:
|
||||||
|
|
||||||
- `xworkmate.artifacts.prepare` before `chat.send` to allocate a task artifact directory.
|
- `xworkmate.artifacts.prepare` before `chat.send` to allocate a task artifact directory.
|
||||||
|
- Pass the prepared `artifactScope`/`artifactDirectory` to `chat.send` and, if
|
||||||
|
`chat.send` returns a different OpenClaw `runId`, prepare/export with that
|
||||||
|
actual `runId` instead of the bridge request id.
|
||||||
- `xworkmate.artifacts.list` for a metadata-only manifest and Markdown table.
|
- `xworkmate.artifacts.list` for a metadata-only manifest and Markdown table.
|
||||||
- `xworkmate.artifacts.read` with `artifactScope` and `relativePath` for one task file.
|
- `xworkmate.artifacts.read` with `artifactScope` and `relativePath` for one task file.
|
||||||
- `xworkmate.artifacts.read` with `artifactRef` for a plugin-returned task file.
|
- `xworkmate.artifacts.read` with `artifactRef` for a plugin-returned task file.
|
||||||
|
|||||||
@ -254,6 +254,36 @@ describe("exportXWorkmateArtifacts", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("adopts root Word documents into only the current task scope", async () => {
|
||||||
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), "tmp-openclaw-multi-session-plugins-"));
|
||||||
|
const sinceUnixMs = Date.now() - 1_000;
|
||||||
|
await fs.writeFile(path.join(root, "article.docx"), "docx-content");
|
||||||
|
|
||||||
|
const result = await exportXWorkmateArtifacts({
|
||||||
|
params: {
|
||||||
|
sessionKey: "draft-article",
|
||||||
|
runId: "openclaw-run-1",
|
||||||
|
sinceUnixMs,
|
||||||
|
maxInlineBytes: 0,
|
||||||
|
},
|
||||||
|
pluginConfig: { workspaceDir: root },
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.artifactScope).toBe("tasks/draft-article/openclaw-run-1");
|
||||||
|
expect(result.artifacts).toHaveLength(1);
|
||||||
|
expect(result.artifacts[0]).toMatchObject({
|
||||||
|
relativePath: "article.docx",
|
||||||
|
artifactScope: "tasks/draft-article/openclaw-run-1",
|
||||||
|
scopeKind: "task",
|
||||||
|
contentType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||||
|
});
|
||||||
|
expect(result.artifacts[0]?.encoding).toBeUndefined();
|
||||||
|
expect(await fs.readFile(path.join(root, "tasks", "draft-article", "openclaw-run-1", "article.docx"), "utf8")).toBe(
|
||||||
|
"docx-content",
|
||||||
|
);
|
||||||
|
await expect(fs.stat(path.join(root, "tasks", "draft-article", "turn-1", "article.docx"))).rejects.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
it("does not adopt old workspace root files into a later task scope", async () => {
|
it("does not adopt old workspace root files into a later task scope", async () => {
|
||||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "tmp-openclaw-multi-session-plugins-"));
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), "tmp-openclaw-multi-session-plugins-"));
|
||||||
await prepareXWorkmateArtifacts({
|
await prepareXWorkmateArtifacts({
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user