Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/memos-local-plugin/core/pipeline/memory-core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1804,6 +1804,7 @@ export function createMemoryCore(
status: dto.status,
sourceEpisodeIds: [],
inducedBy: "import",
decisionGuidance: (dto as any).decisionGuidance ?? { preference: [], antiPattern: [] },
vec: null,
createdAt: dto.createdAt ?? Date.now(),
updatedAt: dto.updatedAt ?? Date.now(),
Expand Down
6 changes: 5 additions & 1 deletion apps/memos-local-plugin/core/skill/crystallize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,11 @@ export async function crystallizeDraft(
],
{
op: "skill.crystallize",
schemaHint: "skill-crystallize.v2",
schemaHint:
'skill-crystallize.v2\n{"name":"snake_case","display_title":"string","summary":"string","parameters":[{"name":"string","type":"string|number|boolean|enum","required":true,"description":"string"}],"preconditions":["string"],"steps":[{"title":"string","body":"string"}],"examples":[{"input":"string","expected":"string"}],"decision_guidance":{"preference":["string"],"anti_pattern":["string"]},"tags":["string"]}',
malformedRetries: 2,
temperature: 0,
maxTokens: 4096,
},
);
const draft = normaliseDraft(rsp.value, input);
Expand Down
2 changes: 1 addition & 1 deletion apps/memos-local-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"docs"
],
"scripts": {
"build": "tsc -p tsconfig.json",
"build": "tsc -p tsconfig.build.json",
"build:web": "vite build --config vite.config.ts",
"build:site": "cd site && vite build",
"build:all": "npm run build && npm run build:web && npm run build:site",
Expand Down
29 changes: 29 additions & 0 deletions apps/memos-local-plugin/tests/unit/skill/verifier.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,35 @@ describe("skill/verifier", () => {
expect(r.unmappedTokens).toContain("kubectl");
});

it("does not count plain prose words as coverage tokens", () => {
const draft = makeDraft({
summary: "Create modular storage backends with consistent interface",
steps: [
{
title: "Implement storage backend",
body: "Create a modular implementation that mirrors JSONStore with load and save methods.",
},
],
});
const evidence = [
trace(
"tr_1",
"Add a YAML storage backend",
"Wrote YAMLStore mirroring JSONStore with load and save methods.",
),
trace(
"tr_2",
"Verify storage files",
"Checked task_cli/storage/yaml_store.py and __init__.py exports.",
),
];
const r = verifyDraft({ draft, evidence }, { log });
expect(r.ok).toBe(true);
expect(r.unmappedTokens).not.toContain("modular");
expect(r.unmappedTokens).not.toContain("interface");
expect(r.unmappedTokens).not.toContain("implementation");
});

it("fails when there is no evidence at all", () => {
const r = verifyDraft({ draft: makeDraft(), evidence: [] }, { log });
expect(r.ok).toBe(false);
Expand Down
14 changes: 14 additions & 0 deletions apps/memos-local-plugin/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"extends": "./tsconfig.json",
"include": [
"core/**/*.ts",
"agent-contract/**/*.ts",
"server/**/*.ts",
"bridge/**/*.ts",
"adapters/openclaw/**/*.ts",
"scripts/**/*.ts",
"site/scripts/**/*.ts",
"bridge.cts"
],
"exclude": ["node_modules", "dist", "web", "site/src", "adapters/hermes", "tests"]
}