@qihuang02/world-book-mcp 0.0.4-beta.2 → 0.0.4-beta.3
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 +2 -2
- package/README_ZH.md +2 -2
- package/dist/core/character-card-importer.js +2 -4
- package/dist/core/character-card-importer.js.map +1 -1
- package/dist/core/character-card-query.js +2 -3
- package/dist/core/character-card-query.js.map +1 -1
- package/dist/core/worldbook-importer.js +2 -4
- package/dist/core/worldbook-importer.js.map +1 -1
- package/dist/core/worldbook-query.js +2 -4
- package/dist/core/worldbook-query.js.map +1 -1
- package/dist/resources/usage-resources.js +1 -1
- package/dist/resources/usage-resources.js.map +1 -1
- package/dist/storage/path-policy.d.ts +0 -2
- package/dist/storage/path-policy.js +0 -2
- package/dist/storage/path-policy.js.map +1 -1
- package/dist/storage/project-store.d.ts +0 -1
- package/dist/storage/project-store.js +18 -69
- package/dist/storage/project-store.js.map +1 -1
- package/dist/storage/workspace-store.d.ts +2 -0
- package/dist/storage/workspace-store.js +8 -10
- package/dist/storage/workspace-store.js.map +1 -1
- package/dist/utils/json.d.ts +8 -2
- package/dist/utils/json.js +19 -3
- package/dist/utils/json.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -73,7 +73,7 @@ Not supported yet:
|
|
|
73
73
|
|
|
74
74
|
## `.worldbook/` Workspace
|
|
75
75
|
|
|
76
|
-
The primary role of `init_project` is to create or reuse the
|
|
76
|
+
The primary role of `init_project` is to create or reuse the single MCP workspace project in the current project directory. Project metadata is stored only in `.worldbook/project.json`, and split draft entries are stored in `.worldbook/draft/`; the old `output/projects` storage path is no longer created or read:
|
|
77
77
|
|
|
78
78
|
```text
|
|
79
79
|
.
|
|
@@ -123,7 +123,7 @@ Patch `match.uid` first matches the `sourceUid` preserved from an imported World
|
|
|
123
123
|
| Workflow, Projects, and Specs | `get_worldbook_workflow` | Returns the recommended tool flow for a task type. When `wants_character_card=true`, the character card flow is appended automatically. |
|
|
124
124
|
| Workflow, Projects, and Specs | `get_tool_usage_guide` | Queries a tool's purpose, when to call it, required fields, sample input, common mistakes, and next steps. |
|
|
125
125
|
| Workflow, Projects, and Specs | `init_project` | Initializes `.worldbook/project.json` and `.worldbook/draft/`; safely creates a root template JSON when no Tavern-format JSON exists; existing projects can be reused or overwritten with `if_exists`. |
|
|
126
|
-
| Workflow, Projects, and Specs | `list_projects` |
|
|
126
|
+
| Workflow, Projects, and Specs | `list_projects` | Returns the current `.worldbook/project.json` workspace project, or an empty list if no workspace exists. |
|
|
127
127
|
| Workflow, Projects, and Specs | `get_project` | Views project details or a summary. |
|
|
128
128
|
| Workflow, Projects, and Specs | `get_entry_template` | Returns a World Book entry template. |
|
|
129
129
|
| Workflow, Projects, and Specs | `explain_worldbook_config` | Explains configuration fields such as position, constant, order, keys, and recursion. |
|
package/README_ZH.md
CHANGED
|
@@ -73,7 +73,7 @@ args = ["-y", "@qihuang02/world-book-mcp"]
|
|
|
73
73
|
|
|
74
74
|
## `.worldbook/` 工作目录
|
|
75
75
|
|
|
76
|
-
`init_project`
|
|
76
|
+
`init_project` 的主作用是在当前项目目录创建/复用单一 MCP 工作区 project。project 元信息只保存在 `.worldbook/project.json`,草稿分片保存在 `.worldbook/draft/`;旧的 `output/projects` 路径不再创建也不再读取:
|
|
77
77
|
|
|
78
78
|
```text
|
|
79
79
|
.
|
|
@@ -123,7 +123,7 @@ patch 的 `match.uid` 优先匹配从已导入世界书保留的 `sourceUid`,
|
|
|
123
123
|
| 工作流、项目与规范 | `get_worldbook_workflow` | 根据任务类型返回推荐 tool 流程。`wants_character_card=true` 时会自动追加角色卡流程。 |
|
|
124
124
|
| 工作流、项目与规范 | `get_tool_usage_guide` | 查询某个 tool 的用途、调用时机、必填字段、示例输入、常见错误和下一步。 |
|
|
125
125
|
| 工作流、项目与规范 | `init_project` | 初始化 `.worldbook/project.json` 与 `.worldbook/draft/`;若根目录没有酒馆格式 JSON,会安全创建模板 JSON;已有项目可用 `if_exists` 控制复用或覆盖。 |
|
|
126
|
-
| 工作流、项目与规范 | `list_projects` |
|
|
126
|
+
| 工作流、项目与规范 | `list_projects` | 返回当前 `.worldbook/project.json` 工作区项目;未初始化时返回空列表。 |
|
|
127
127
|
| 工作流、项目与规范 | `get_project` | 查看项目详情或摘要。 |
|
|
128
128
|
| 工作流、项目与规范 | `get_entry_template` | 返回世界书条目模板。 |
|
|
129
129
|
| 工作流、项目与规范 | `explain_worldbook_config` | 解释 position、constant、order、keys、递归等配置。 |
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
1
|
import { CharacterCardConfigSchema } from "../schemas/character-card.js";
|
|
3
|
-
import {
|
|
2
|
+
import { readJsonFile } from "../utils/json.js";
|
|
4
3
|
export async function importCharacterCardFromFile(filePath) {
|
|
5
|
-
|
|
6
|
-
return characterCardToProjectData(safeJsonParse(text));
|
|
4
|
+
return characterCardToProjectData(await readJsonFile(filePath));
|
|
7
5
|
}
|
|
8
6
|
export function characterCardToProjectData(card) {
|
|
9
7
|
const data = card.data ?? {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-card-importer.js","sourceRoot":"","sources":["../../src/core/character-card-importer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"character-card-importer.js","sourceRoot":"","sources":["../../src/core/character-card-importer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { safeJsonParse } from "../utils/json.js";
|
|
1
|
+
import { readJsonFile } from "../utils/json.js";
|
|
3
2
|
import { resolveReadableCardPath } from "../storage/path-policy.js";
|
|
4
3
|
export async function queryCharacterCard(input) {
|
|
5
4
|
const resolvedPath = resolveReadableCardPath(input.path);
|
|
6
|
-
const card =
|
|
5
|
+
const card = await readJsonFile(resolvedPath);
|
|
7
6
|
switch (input.mode) {
|
|
8
7
|
case "summary":
|
|
9
8
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-card-query.js","sourceRoot":"","sources":["../../src/core/character-card-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"character-card-query.js","sourceRoot":"","sources":["../../src/core/character-card-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAqD;IAC5F,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAM,YAAY,CAAC,CAAC;IAEnD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,cAAc,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,IAAI,CAAC,CAAC;gBACjE,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI;gBAC/C,qBAAqB,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;gBACtE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;aACzC,CAAC;QACJ,KAAK,mBAAmB;YACtB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;gBAClC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,IAAI,EAAE;aAClD,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS;gBACjD,mBAAmB,EAAE,IAAI,CAAC,IAAI,EAAE,mBAAmB,IAAI,EAAE;aAC1D,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
1
|
import { SillyTavernWorldbookSchema } from "../schemas/sillytavern-worldbook.js";
|
|
3
|
-
import {
|
|
2
|
+
import { readJsonFile } from "../utils/json.js";
|
|
4
3
|
import { numberToPosition } from "./position-map.js";
|
|
5
4
|
export async function importWorldbookFromFile(path) {
|
|
6
|
-
const
|
|
7
|
-
const book = SillyTavernWorldbookSchema.parse(safeJsonParse(text));
|
|
5
|
+
const book = await readJsonFile(path, SillyTavernWorldbookSchema);
|
|
8
6
|
return { book, draft: worldbookToDraft(book) };
|
|
9
7
|
}
|
|
10
8
|
export function worldbookToDraft(book) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worldbook-importer.js","sourceRoot":"","sources":["../../src/core/worldbook-importer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"worldbook-importer.js","sourceRoot":"","sources":["../../src/core/worldbook-importer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAA6D,MAAM,qCAAqC,CAAC;AAE5I,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAY;IACxD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;IAClE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,CAAC;SACtI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;SAC7B,GAAG,CAAC,YAAY,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,KAAgC;IACpD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE;QAC5C,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC;QAChC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;QACrB,aAAa,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;QACvC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,SAAS,EAAE,KAAK,CAAC,GAAG;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,YAAY;QAC1D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO;QACvB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;QACvC,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAgC;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChF,IAAI,uCAAuC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,uBAAuB,CAAC;IAC1F,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3D,IAAI,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9D,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACjF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
1
|
import { SillyTavernWorldbookSchema } from "../schemas/sillytavern-worldbook.js";
|
|
3
|
-
import {
|
|
2
|
+
import { readJsonFile } from "../utils/json.js";
|
|
4
3
|
import { resolveReadableWorldbookPath } from "../storage/path-policy.js";
|
|
5
4
|
import { numberToPosition } from "./position-map.js";
|
|
6
5
|
export async function queryWorldbook(input) {
|
|
7
6
|
const resolvedPath = resolveReadableWorldbookPath(input.path);
|
|
8
|
-
const
|
|
9
|
-
const book = SillyTavernWorldbookSchema.parse(safeJsonParse(text));
|
|
7
|
+
const book = await readJsonFile(resolvedPath, SillyTavernWorldbookSchema);
|
|
10
8
|
const entries = Object.values(book.entries).sort((a, b) => a.uid - b.uid);
|
|
11
9
|
switch (input.mode) {
|
|
12
10
|
case "brief":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worldbook-query.js","sourceRoot":"","sources":["../../src/core/worldbook-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"worldbook-query.js","sourceRoot":"","sources":["../../src/core/worldbook-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAkC,MAAM,qCAAqC,CAAC;AACjH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAsE;IACzG,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1E,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;aAC9B,CAAC;QACJ,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACjD,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;aACjG,CAAC;QACJ,CAAC;QACD,KAAK,OAAO;YACV,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,OAAO,CAAC,MAAM;gBAC3B,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAChE,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAClE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;aAChE,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAgC;IAC/C,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,GAAG;QACf,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ;QAC5D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO;QACvB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAgC;IAClD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const RESOURCES = {
|
|
2
|
-
"usage-guide": `# world-book-mcp 使用指南\n\n首次使用空白目录时先调用 init_project。kind=worldbook 会创建独立世界书模板;kind=character_card 或 mixed 会创建 chara_card_v3 模板,其中 mixed 适合角色卡 + 内嵌世界书一体化项目。推荐 agent 使用 upsert_worldbook_entry / upsert_worldbook_entries 写条目:只提交 comment、keys、content 等核心字段,MCP 自动补全完整世界书 entry 结构并校验。旧的全量 draft 提交逻辑已降级为内部/兼容层,不作为默认公开接口。\n\n同一 project 的写入会在 MCP 进程内串行化,并返回 revision;高并发 agent 可传 expected_revision 做冲突检测。patch apply 会先写入导出 JSON,再更新 project;若 project 更新失败会尽力恢复导出文件。patch match.uid 优先匹配导入时保留的 sourceUid;新建草稿建议使用 index 或 comment 定位。`,
|
|
2
|
+
"usage-guide": `# world-book-mcp 使用指南\n\n首次使用空白目录时先调用 init_project。project 元信息只保存在 .worldbook/project.json,草稿分片保存在 .worldbook/draft/;旧的 output/projects 路径不再创建也不再读取。kind=worldbook 会创建独立世界书模板;kind=character_card 或 mixed 会创建 chara_card_v3 模板,其中 mixed 适合角色卡 + 内嵌世界书一体化项目。推荐 agent 使用 upsert_worldbook_entry / upsert_worldbook_entries 写条目:只提交 comment、keys、content 等核心字段,MCP 自动补全完整世界书 entry 结构并校验。旧的全量 draft 提交逻辑已降级为内部/兼容层,不作为默认公开接口。\n\n同一 project 的写入会在 MCP 进程内串行化,并返回 revision;高并发 agent 可传 expected_revision 做冲突检测。patch apply 会先写入导出 JSON,再更新 project;若 project 更新失败会尽力恢复导出文件。patch match.uid 优先匹配导入时保留的 sourceUid;新建草稿建议使用 index 或 comment 定位。`,
|
|
3
3
|
"workflow/from-text": `# 从文本生成世界书\n\n1. init_project(已有 project 可跳过)\n2. ingest_text_source\n3. create_extraction_outline\n4. 由 AI 填写提取结果\n5. submit_extraction_result\n6. plan_worldbook_entries\n7. upsert_worldbook_entry 或 upsert_worldbook_entries\n8. validate_worldbook_draft\n9. generate_worldbook_json\n10. query_worldbook`,
|
|
4
4
|
"workflow/from-web-research": `# 从网页搜索摘要生成世界书\n\n网页搜索由宿主 AI 完成。MCP 只接收整理后的标题、URL、摘要、事实列表和可靠性。然后流程与文本生成相同。`,
|
|
5
5
|
"rules/config": `# 配置规则\n\n- before_char=0,适合世界观总纲。\n- after_char=1,适合角色详情、NPC、物品、场景。\n- at_depth=4 只建议 depth=0。\n- constant=true 是蓝灯常驻。\n- constant=false 是绿灯关键词触发,必须有 keys。\n- 所有条目 preventRecursion 和 excludeRecursion 都必须为 true。`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-resources.js","sourceRoot":"","sources":["../../src/resources/usage-resources.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAA2B;IACxC,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"usage-resources.js","sourceRoot":"","sources":["../../src/resources/usage-resources.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAA2B;IACxC,aAAa,EAAE,2mBAA2mB;IAC1nB,oBAAoB,EAAE,gTAAgT;IACtU,4BAA4B,EAAE,4EAA4E;IAC1G,cAAc,EAAE,qNAAqN;IACrO,oBAAoB,EAAE,uFAAuF;CAC9G,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,EAAE,eAAe,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5E,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;SAC/D,CAAC,CAAC,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
export const ROOT_DIR = process.cwd();
|
|
4
|
-
export const OUTPUT_DIR = path.resolve(ROOT_DIR, "output");
|
|
5
|
-
export const PROJECTS_DIR = path.resolve(OUTPUT_DIR, "projects");
|
|
6
4
|
export const EXPORTS_DIR = path.resolve(ROOT_DIR);
|
|
7
5
|
export const BACKUPS_DIR = path.resolve(ROOT_DIR, ".worldbook", "backups");
|
|
8
6
|
export const CARDS_DIR = path.resolve(ROOT_DIR);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-policy.js","sourceRoot":"","sources":["../../src/storage/path-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"path-policy.js","sourceRoot":"","sources":["../../src/storage/path-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { type Project } from "../schemas/project.js";
|
|
|
2
2
|
export declare function ensureStorage(): Promise<void>;
|
|
3
3
|
export declare function createProject(name: string, projectId?: string): Promise<Project>;
|
|
4
4
|
export declare function loadProject(projectId: string): Promise<Project>;
|
|
5
|
-
export declare function saveProject(project: Project): Promise<Project>;
|
|
6
5
|
export declare function updateProject(projectId: string, mutator: (project: Project) => Project | Promise<Project>, options?: {
|
|
7
6
|
expectedRevision?: number;
|
|
8
7
|
}): Promise<Project>;
|
|
@@ -1,56 +1,22 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
1
|
import { ProjectSchema } from "../schemas/project.js";
|
|
4
2
|
import { createId, nowIso } from "../utils/ids.js";
|
|
5
|
-
import {
|
|
6
|
-
import { PROJECTS_DIR } from "./path-policy.js";
|
|
7
|
-
import { isWorkspaceProject, loadWorkspaceProjectIfMatches, writeWorkspaceProject } from "./workspace-store.js";
|
|
3
|
+
import { ensureWorkspaceDirs, initWorkspaceProject, isWorkspaceProject, loadWorkspaceProjectIfExists, loadWorkspaceProjectIfMatches, writeWorkspaceProject } from "./workspace-store.js";
|
|
8
4
|
export async function ensureStorage() {
|
|
9
|
-
await
|
|
10
|
-
}
|
|
11
|
-
function projectPath(projectId) {
|
|
12
|
-
return path.join(PROJECTS_DIR, `${projectId}.json`);
|
|
5
|
+
await ensureWorkspaceDirs();
|
|
13
6
|
}
|
|
14
7
|
export async function createProject(name, projectId) {
|
|
15
|
-
await
|
|
16
|
-
const timestamp = nowIso();
|
|
17
|
-
const project = {
|
|
18
|
-
id: projectId ?? createId("project"),
|
|
19
|
-
name,
|
|
20
|
-
sources: [],
|
|
21
|
-
research: [],
|
|
22
|
-
patches: [],
|
|
23
|
-
characterCardPatches: [],
|
|
24
|
-
pendingDecisions: [],
|
|
25
|
-
recordedDecisions: [],
|
|
26
|
-
revision: 0,
|
|
27
|
-
createdAt: timestamp,
|
|
28
|
-
updatedAt: timestamp,
|
|
29
|
-
};
|
|
30
|
-
await writeProject(project);
|
|
8
|
+
const { project } = await initWorkspaceProject({ name, projectId: projectId ?? createId("project"), ifExists: "return_existing" });
|
|
31
9
|
return project;
|
|
32
10
|
}
|
|
33
11
|
export async function loadProject(projectId) {
|
|
34
12
|
const workspaceProject = await loadWorkspaceProjectIfMatches(projectId);
|
|
35
13
|
if (workspaceProject)
|
|
36
14
|
return workspaceProject;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
15
|
+
const error = new Error(`未找到 .worldbook/project.json 或 project_id 不匹配: ${projectId}`);
|
|
16
|
+
error.code = "ENOENT";
|
|
17
|
+
throw error;
|
|
40
18
|
}
|
|
41
19
|
const projectQueues = new Map();
|
|
42
|
-
// 保留给完整 Project 替换场景;常规修改请优先使用 updateProject,以获得更明确的 revision 冲突检测语义。
|
|
43
|
-
export async function saveProject(project) {
|
|
44
|
-
return enqueueProjectWrite(project.id, async () => {
|
|
45
|
-
const latest = await loadProjectIfExists(project.id);
|
|
46
|
-
const updated = { ...project, revision: (latest?.revision ?? project.revision ?? 0) + 1, updatedAt: nowIso() };
|
|
47
|
-
if (await isWorkspaceProject(project.id))
|
|
48
|
-
await writeWorkspaceProject(updated);
|
|
49
|
-
else
|
|
50
|
-
await writeProject(updated);
|
|
51
|
-
return updated;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
20
|
export async function updateProject(projectId, mutator, options = {}) {
|
|
55
21
|
return enqueueProjectWrite(projectId, async () => {
|
|
56
22
|
const project = await loadProject(projectId);
|
|
@@ -58,28 +24,14 @@ export async function updateProject(projectId, mutator, options = {}) {
|
|
|
58
24
|
throw new Error(`project revision conflict: expected ${options.expectedRevision}, current ${project.revision}`);
|
|
59
25
|
}
|
|
60
26
|
const next = await mutator(project);
|
|
61
|
-
const updated = { ...next, id: project.id, revision: project.revision + 1, updatedAt: nowIso() };
|
|
62
|
-
if (await isWorkspaceProject(project.id))
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
27
|
+
const updated = ProjectSchema.parse({ ...next, id: project.id, revision: project.revision + 1, updatedAt: nowIso() });
|
|
28
|
+
if (!await isWorkspaceProject(project.id)) {
|
|
29
|
+
throw new Error(`project_id 不匹配,当前工作区不是 ${project.id}`);
|
|
30
|
+
}
|
|
31
|
+
await writeWorkspaceProject(updated);
|
|
66
32
|
return updated;
|
|
67
33
|
});
|
|
68
34
|
}
|
|
69
|
-
async function writeProject(project) {
|
|
70
|
-
await ensureStorage();
|
|
71
|
-
await fs.writeFile(projectPath(project.id), toPrettyJson(project), "utf8");
|
|
72
|
-
}
|
|
73
|
-
async function loadProjectIfExists(projectId) {
|
|
74
|
-
try {
|
|
75
|
-
return await loadProject(projectId);
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
if (error.code === "ENOENT")
|
|
79
|
-
return undefined;
|
|
80
|
-
throw error;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
35
|
function enqueueProjectWrite(projectId, operation) {
|
|
84
36
|
const previous = projectQueues.get(projectId) ?? Promise.resolve();
|
|
85
37
|
const next = previous.catch(() => undefined).then(operation);
|
|
@@ -93,19 +45,16 @@ export async function loadOrCreateProject(projectId, fallbackName) {
|
|
|
93
45
|
if (projectId) {
|
|
94
46
|
return loadProject(projectId);
|
|
95
47
|
}
|
|
48
|
+
const existing = await loadWorkspaceProjectIfExists();
|
|
49
|
+
if (existing)
|
|
50
|
+
return loadProject(existing.id);
|
|
96
51
|
return createProject(fallbackName);
|
|
97
52
|
}
|
|
98
53
|
export async function listProjects() {
|
|
99
|
-
await
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (!file.endsWith(".json"))
|
|
104
|
-
continue;
|
|
105
|
-
const text = await fs.readFile(path.join(PROJECTS_DIR, file), "utf8");
|
|
106
|
-
projects.push(ProjectSchema.parse(safeJsonParse(text)));
|
|
107
|
-
}
|
|
108
|
-
return projects.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
54
|
+
const project = await loadWorkspaceProjectIfExists();
|
|
55
|
+
if (!project)
|
|
56
|
+
return [];
|
|
57
|
+
return [await loadProject(project.id)];
|
|
109
58
|
}
|
|
110
59
|
export function summarizeProject(project, includeContent = false) {
|
|
111
60
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-store.js","sourceRoot":"","sources":["../../src/storage/project-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"project-store.js","sourceRoot":"","sources":["../../src/storage/project-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import { ProjectSchema } from "../schemas/project.js";
|
|
4
4
|
import { WorldbookDraftEntrySchema } from "../schemas/worldbook-draft.js";
|
|
5
5
|
import { createId, nowIso } from "../utils/ids.js";
|
|
6
|
-
import {
|
|
6
|
+
import { readJsonFile, toPrettyJson, writeJsonFile } from "../utils/json.js";
|
|
7
7
|
import { assertInside, ROOT_DIR, sanitizeFilename, writeTextFileSafely } from "./path-policy.js";
|
|
8
8
|
export const WORKSPACE_DIR = path.resolve(ROOT_DIR, ".worldbook");
|
|
9
9
|
export const WORKSPACE_PROJECT_PATH = path.resolve(WORKSPACE_DIR, "project.json");
|
|
@@ -52,7 +52,7 @@ export async function loadWorkspaceProjectIfMatches(projectId) {
|
|
|
52
52
|
export async function writeWorkspaceProject(project) {
|
|
53
53
|
await ensureWorkspaceDirs();
|
|
54
54
|
const { draft: _draft, ...metadata } = project;
|
|
55
|
-
await
|
|
55
|
+
await writeJsonFile(WORKSPACE_PROJECT_PATH, metadata);
|
|
56
56
|
if (project.draft)
|
|
57
57
|
await writeWorkspaceDraftEntries(project.draft);
|
|
58
58
|
}
|
|
@@ -65,8 +65,7 @@ export async function readWorkspaceDraftEntries() {
|
|
|
65
65
|
return undefined;
|
|
66
66
|
const entries = [];
|
|
67
67
|
for (const file of files) {
|
|
68
|
-
|
|
69
|
-
entries.push(WorldbookDraftEntrySchema.parse(safeJsonParse(text)));
|
|
68
|
+
entries.push(await readJsonFile(path.join(WORKSPACE_DRAFT_DIR, file), WorldbookDraftEntrySchema));
|
|
70
69
|
}
|
|
71
70
|
return entries;
|
|
72
71
|
}
|
|
@@ -79,7 +78,7 @@ export async function readWorkspaceDraftEntries() {
|
|
|
79
78
|
export async function writeWorkspaceDraftEntry(entry) {
|
|
80
79
|
await ensureWorkspaceDirs();
|
|
81
80
|
const outputPath = draftEntryPath(entry.comment);
|
|
82
|
-
await
|
|
81
|
+
await writeJsonFile(outputPath, entry);
|
|
83
82
|
return outputPath;
|
|
84
83
|
}
|
|
85
84
|
export async function writeWorkspaceDraftEntries(entries) {
|
|
@@ -134,7 +133,7 @@ export async function findRootTavernJsonFiles() {
|
|
|
134
133
|
continue;
|
|
135
134
|
const filePath = path.resolve(ROOT_DIR, file.name);
|
|
136
135
|
try {
|
|
137
|
-
const parsed =
|
|
136
|
+
const parsed = await readJsonFile(filePath);
|
|
138
137
|
if (isTavernJson(parsed))
|
|
139
138
|
result.push(filePath);
|
|
140
139
|
}
|
|
@@ -151,16 +150,15 @@ export function workspacePaths() {
|
|
|
151
150
|
draft_dir: WORKSPACE_DRAFT_DIR,
|
|
152
151
|
};
|
|
153
152
|
}
|
|
154
|
-
async function ensureWorkspaceDirs() {
|
|
153
|
+
export async function ensureWorkspaceDirs() {
|
|
155
154
|
await fs.mkdir(WORKSPACE_DRAFT_DIR, { recursive: true });
|
|
156
155
|
}
|
|
157
156
|
async function clearWorkspaceDraftEntries() {
|
|
158
157
|
await fs.rm(WORKSPACE_DRAFT_DIR, { recursive: true, force: true });
|
|
159
158
|
}
|
|
160
|
-
async function loadWorkspaceProjectIfExists() {
|
|
159
|
+
export async function loadWorkspaceProjectIfExists() {
|
|
161
160
|
try {
|
|
162
|
-
|
|
163
|
-
return ProjectSchema.parse(safeJsonParse(text));
|
|
161
|
+
return await readJsonFile(WORKSPACE_PROJECT_PATH, ProjectSchema);
|
|
164
162
|
}
|
|
165
163
|
catch (error) {
|
|
166
164
|
if (error.code === "ENOENT")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-store.js","sourceRoot":"","sources":["../../src/storage/workspace-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace-store.js","sourceRoot":"","sources":["../../src/storage/workspace-store.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/json.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
1
|
+
import type { z, ZodTypeAny } from "zod";
|
|
2
|
+
export declare function stringifyPrettyJson(value: unknown): string;
|
|
3
|
+
export declare function parseJsonLike<T = unknown>(text: string): T;
|
|
4
|
+
export declare function readJsonFile<T = unknown>(filePath: string): Promise<T>;
|
|
5
|
+
export declare function readJsonFile<TSchema extends ZodTypeAny>(filePath: string, schema: TSchema): Promise<z.infer<TSchema>>;
|
|
6
|
+
export declare function writeJsonFile(filePath: string, value: unknown): Promise<void>;
|
|
7
|
+
export declare const toPrettyJson: typeof stringifyPrettyJson;
|
|
8
|
+
export declare const safeJsonParse: typeof parseJsonLike;
|
package/dist/utils/json.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
export function stringifyPrettyJson(value) {
|
|
2
3
|
return `${JSON.stringify(value, null, 2)}\n`;
|
|
3
4
|
}
|
|
4
|
-
export function
|
|
5
|
-
|
|
5
|
+
export function parseJsonLike(text) {
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(text);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
11
|
+
throw new Error(`JSON 解析失败: ${message}`);
|
|
12
|
+
}
|
|
6
13
|
}
|
|
14
|
+
export async function readJsonFile(filePath, schema) {
|
|
15
|
+
const parsed = parseJsonLike(await fs.readFile(filePath, "utf8"));
|
|
16
|
+
return schema ? schema.parse(parsed) : parsed;
|
|
17
|
+
}
|
|
18
|
+
export async function writeJsonFile(filePath, value) {
|
|
19
|
+
await fs.writeFile(filePath, stringifyPrettyJson(value), "utf8");
|
|
20
|
+
}
|
|
21
|
+
export const toPrettyJson = stringifyPrettyJson;
|
|
22
|
+
export const safeJsonParse = parseJsonLike;
|
|
7
23
|
//# sourceMappingURL=json.js.map
|
package/dist/utils/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGlC,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAAc,IAAY;IACrD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAmB;IACtE,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,KAAc;IAClE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC"}
|