opencode-novel 0.0.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 (196) hide show
  1. package/README.md +110 -0
  2. package/assets/templates/bible-glossary.md +4 -0
  3. package/assets/templates/bible-rules.md +5 -0
  4. package/assets/templates/bible-world.md +8 -0
  5. package/assets/templates/chapter.md +21 -0
  6. package/assets/templates/character.md +27 -0
  7. package/assets/templates/faction.md +14 -0
  8. package/assets/templates/location.md +11 -0
  9. package/assets/templates/thread.md +16 -0
  10. package/dist/agents/editor.d.ts +2 -0
  11. package/dist/agents/experts.d.ts +13 -0
  12. package/dist/agents/index.d.ts +7 -0
  13. package/dist/agents/muse.d.ts +2 -0
  14. package/dist/agents/novel.d.ts +2 -0
  15. package/dist/agents/security.d.ts +1 -0
  16. package/dist/agents/sentinel.d.ts +2 -0
  17. package/dist/agents/types.d.ts +3 -0
  18. package/dist/cli.d.ts +2 -0
  19. package/dist/cli.js +3716 -0
  20. package/dist/config/defaults.d.ts +2 -0
  21. package/dist/config/load.d.ts +16 -0
  22. package/dist/config/schema.d.ts +203 -0
  23. package/dist/config/types.d.ts +5 -0
  24. package/dist/features/builtin-commands/commands.d.ts +2 -0
  25. package/dist/features/builtin-commands/index.d.ts +2 -0
  26. package/dist/features/builtin-commands/templates/novel-apply-candidates.d.ts +1 -0
  27. package/dist/features/builtin-commands/templates/novel-bible.d.ts +1 -0
  28. package/dist/features/builtin-commands/templates/novel-bootstrap.d.ts +1 -0
  29. package/dist/features/builtin-commands/templates/novel-chapter-draft.d.ts +1 -0
  30. package/dist/features/builtin-commands/templates/novel-chapter-plan.d.ts +1 -0
  31. package/dist/features/builtin-commands/templates/novel-chapter-review.d.ts +1 -0
  32. package/dist/features/builtin-commands/templates/novel-character-report.d.ts +1 -0
  33. package/dist/features/builtin-commands/templates/novel-character.d.ts +1 -0
  34. package/dist/features/builtin-commands/templates/novel-config-check.d.ts +1 -0
  35. package/dist/features/builtin-commands/templates/novel-continuation.d.ts +1 -0
  36. package/dist/features/builtin-commands/templates/novel-continuity-check.d.ts +1 -0
  37. package/dist/features/builtin-commands/templates/novel-entities-audit.d.ts +1 -0
  38. package/dist/features/builtin-commands/templates/novel-export.d.ts +1 -0
  39. package/dist/features/builtin-commands/templates/novel-extract-entities.d.ts +1 -0
  40. package/dist/features/builtin-commands/templates/novel-faction.d.ts +1 -0
  41. package/dist/features/builtin-commands/templates/novel-foreshadowing-audit.d.ts +1 -0
  42. package/dist/features/builtin-commands/templates/novel-graph.d.ts +1 -0
  43. package/dist/features/builtin-commands/templates/novel-import.d.ts +1 -0
  44. package/dist/features/builtin-commands/templates/novel-index.d.ts +1 -0
  45. package/dist/features/builtin-commands/templates/novel-init.d.ts +1 -0
  46. package/dist/features/builtin-commands/templates/novel-outline.d.ts +1 -0
  47. package/dist/features/builtin-commands/templates/novel-polish.d.ts +1 -0
  48. package/dist/features/builtin-commands/templates/novel-rewrite.d.ts +1 -0
  49. package/dist/features/builtin-commands/templates/novel-snapshot.d.ts +1 -0
  50. package/dist/features/builtin-commands/templates/novel-style-check.d.ts +1 -0
  51. package/dist/features/builtin-commands/templates/novel-style-guide.d.ts +1 -0
  52. package/dist/features/builtin-commands/templates/novel-summary.d.ts +1 -0
  53. package/dist/features/builtin-commands/templates/novel-thread.d.ts +1 -0
  54. package/dist/features/builtin-commands/types.d.ts +11 -0
  55. package/dist/features/builtin-skills/artifacts.d.ts +16 -0
  56. package/dist/features/builtin-skills/index.d.ts +4 -0
  57. package/dist/features/builtin-skills/skills/audience-classifier.d.ts +1 -0
  58. package/dist/features/builtin-skills/skills/emotion-classifier.d.ts +1 -0
  59. package/dist/features/builtin-skills/skills/genre-classifier.d.ts +1 -0
  60. package/dist/features/builtin-skills/skills/market-tagger.d.ts +1 -0
  61. package/dist/features/builtin-skills/skills/novel-character-expert.d.ts +1 -0
  62. package/dist/features/builtin-skills/skills/novel-continuation-expert.d.ts +1 -0
  63. package/dist/features/builtin-skills/skills/novel-continuity-sentinel.d.ts +1 -0
  64. package/dist/features/builtin-skills/skills/novel-entity-extractor.d.ts +1 -0
  65. package/dist/features/builtin-skills/skills/novel-faction-relations.d.ts +1 -0
  66. package/dist/features/builtin-skills/skills/novel-flaw-finder.d.ts +1 -0
  67. package/dist/features/builtin-skills/skills/novel-foreshadowing-unresolved.d.ts +1 -0
  68. package/dist/features/builtin-skills/skills/novel-oracle.d.ts +1 -0
  69. package/dist/features/builtin-skills/skills/novel-polish-expert.d.ts +1 -0
  70. package/dist/features/builtin-skills/skills/novel-summary-expert.d.ts +1 -0
  71. package/dist/features/builtin-skills/skills/novel-timeline-keeper.d.ts +1 -0
  72. package/dist/features/builtin-skills/skills/novel-worldbible-keeper.d.ts +1 -0
  73. package/dist/features/builtin-skills/skills/profile-aggregator.d.ts +1 -0
  74. package/dist/features/builtin-skills/skills/structure-classifier.d.ts +1 -0
  75. package/dist/features/builtin-skills/skills/taxonomy-registry.d.ts +1 -0
  76. package/dist/features/builtin-skills/skills/trope-classifier.d.ts +1 -0
  77. package/dist/features/builtin-skills/skills.d.ts +2 -0
  78. package/dist/features/builtin-skills/taxonomy/index.d.ts +3 -0
  79. package/dist/features/builtin-skills/taxonomy/references.d.ts +8 -0
  80. package/dist/features/builtin-skills/taxonomy/registry.d.ts +2 -0
  81. package/dist/features/builtin-skills/taxonomy/types.d.ts +42 -0
  82. package/dist/features/builtin-skills/types.d.ts +11 -0
  83. package/dist/index.d.ts +3 -0
  84. package/dist/index.js +61966 -0
  85. package/dist/novel.schema.json +904 -0
  86. package/dist/plugin-handlers/config-handler.d.ts +9 -0
  87. package/dist/plugin-handlers/index.d.ts +1 -0
  88. package/dist/shared/errors/diagnostics.d.ts +19 -0
  89. package/dist/shared/fs/paths.d.ts +3 -0
  90. package/dist/shared/fs/read.d.ts +5 -0
  91. package/dist/shared/fs/write.d.ts +8 -0
  92. package/dist/shared/hashing/hash8.d.ts +1 -0
  93. package/dist/shared/hashing/sha256.d.ts +2 -0
  94. package/dist/shared/markdown/frontmatter.d.ts +15 -0
  95. package/dist/shared/opencode/artifacts.d.ts +12 -0
  96. package/dist/shared/strings/chinese-number.d.ts +1 -0
  97. package/dist/shared/strings/slug.d.ts +1 -0
  98. package/dist/shared/strings/text-encoding.d.ts +2 -0
  99. package/dist/shared/tool-output.d.ts +6 -0
  100. package/dist/tools/novel-apply-candidates/index.d.ts +2 -0
  101. package/dist/tools/novel-apply-candidates/render.d.ts +2 -0
  102. package/dist/tools/novel-apply-candidates/tool.d.ts +6 -0
  103. package/dist/tools/novel-apply-candidates/types.d.ts +52 -0
  104. package/dist/tools/novel-bible/index.d.ts +2 -0
  105. package/dist/tools/novel-bible/render.d.ts +3 -0
  106. package/dist/tools/novel-bible/tool.d.ts +6 -0
  107. package/dist/tools/novel-bible/types.d.ts +26 -0
  108. package/dist/tools/novel-bootstrap/index.d.ts +2 -0
  109. package/dist/tools/novel-bootstrap/tool.d.ts +6 -0
  110. package/dist/tools/novel-bootstrap/types.d.ts +38 -0
  111. package/dist/tools/novel-candidates-write/index.d.ts +2 -0
  112. package/dist/tools/novel-candidates-write/tool.d.ts +6 -0
  113. package/dist/tools/novel-candidates-write/types.d.ts +13 -0
  114. package/dist/tools/novel-chapter-plan/index.d.ts +2 -0
  115. package/dist/tools/novel-chapter-plan/tool.d.ts +6 -0
  116. package/dist/tools/novel-chapter-plan/types.d.ts +32 -0
  117. package/dist/tools/novel-character-report/index.d.ts +2 -0
  118. package/dist/tools/novel-character-report/render.d.ts +2 -0
  119. package/dist/tools/novel-character-report/tool.d.ts +6 -0
  120. package/dist/tools/novel-character-report/types.d.ts +23 -0
  121. package/dist/tools/novel-config-check/index.d.ts +2 -0
  122. package/dist/tools/novel-config-check/tool.d.ts +4 -0
  123. package/dist/tools/novel-config-check/types.d.ts +15 -0
  124. package/dist/tools/novel-context-pack/index.d.ts +2 -0
  125. package/dist/tools/novel-context-pack/tool.d.ts +6 -0
  126. package/dist/tools/novel-context-pack/types.d.ts +37 -0
  127. package/dist/tools/novel-continuity-check/index.d.ts +2 -0
  128. package/dist/tools/novel-continuity-check/render.d.ts +9 -0
  129. package/dist/tools/novel-continuity-check/tool.d.ts +6 -0
  130. package/dist/tools/novel-continuity-check/types.d.ts +37 -0
  131. package/dist/tools/novel-entity-gaps/index.d.ts +2 -0
  132. package/dist/tools/novel-entity-gaps/render.d.ts +5 -0
  133. package/dist/tools/novel-entity-gaps/tool.d.ts +6 -0
  134. package/dist/tools/novel-entity-gaps/types.d.ts +33 -0
  135. package/dist/tools/novel-export/docx.d.ts +5 -0
  136. package/dist/tools/novel-export/epub.d.ts +10 -0
  137. package/dist/tools/novel-export/index.d.ts +2 -0
  138. package/dist/tools/novel-export/preflight.d.ts +19 -0
  139. package/dist/tools/novel-export/render.d.ts +6 -0
  140. package/dist/tools/novel-export/tool.d.ts +6 -0
  141. package/dist/tools/novel-export/types.d.ts +109 -0
  142. package/dist/tools/novel-foreshadowing-audit/index.d.ts +2 -0
  143. package/dist/tools/novel-foreshadowing-audit/render.d.ts +5 -0
  144. package/dist/tools/novel-foreshadowing-audit/tool.d.ts +6 -0
  145. package/dist/tools/novel-foreshadowing-audit/types.d.ts +40 -0
  146. package/dist/tools/novel-graph/index.d.ts +2 -0
  147. package/dist/tools/novel-graph/render.d.ts +5 -0
  148. package/dist/tools/novel-graph/tool.d.ts +6 -0
  149. package/dist/tools/novel-graph/types.d.ts +21 -0
  150. package/dist/tools/novel-import/index.d.ts +2 -0
  151. package/dist/tools/novel-import/tool.d.ts +7 -0
  152. package/dist/tools/novel-import/types.d.ts +47 -0
  153. package/dist/tools/novel-index/index.d.ts +2 -0
  154. package/dist/tools/novel-index/render.d.ts +35 -0
  155. package/dist/tools/novel-index/tool.d.ts +6 -0
  156. package/dist/tools/novel-index/types.d.ts +41 -0
  157. package/dist/tools/novel-outline/index.d.ts +2 -0
  158. package/dist/tools/novel-outline/tool.d.ts +6 -0
  159. package/dist/tools/novel-outline/types.d.ts +37 -0
  160. package/dist/tools/novel-scaffold/index.d.ts +2 -0
  161. package/dist/tools/novel-scaffold/scaffold.d.ts +18 -0
  162. package/dist/tools/novel-scaffold/templates.d.ts +5 -0
  163. package/dist/tools/novel-scaffold/tool.d.ts +6 -0
  164. package/dist/tools/novel-scaffold/types.d.ts +19 -0
  165. package/dist/tools/novel-scan/helpers.d.ts +88 -0
  166. package/dist/tools/novel-scan/index.d.ts +3 -0
  167. package/dist/tools/novel-scan/scan.d.ts +17 -0
  168. package/dist/tools/novel-scan/tool.d.ts +6 -0
  169. package/dist/tools/novel-scan/types.d.ts +106 -0
  170. package/dist/tools/novel-scene-check/index.d.ts +2 -0
  171. package/dist/tools/novel-scene-check/render.d.ts +11 -0
  172. package/dist/tools/novel-scene-check/tool.d.ts +6 -0
  173. package/dist/tools/novel-scene-check/types.d.ts +38 -0
  174. package/dist/tools/novel-setup/index.d.ts +2 -0
  175. package/dist/tools/novel-setup/tool.d.ts +6 -0
  176. package/dist/tools/novel-setup/types.d.ts +35 -0
  177. package/dist/tools/novel-snapshot/index.d.ts +2 -0
  178. package/dist/tools/novel-snapshot/tool.d.ts +6 -0
  179. package/dist/tools/novel-snapshot/types.d.ts +26 -0
  180. package/dist/tools/novel-structure-check/index.d.ts +2 -0
  181. package/dist/tools/novel-structure-check/render.d.ts +14 -0
  182. package/dist/tools/novel-structure-check/tool.d.ts +6 -0
  183. package/dist/tools/novel-structure-check/types.d.ts +42 -0
  184. package/dist/tools/novel-style-check/index.d.ts +2 -0
  185. package/dist/tools/novel-style-check/render.d.ts +8 -0
  186. package/dist/tools/novel-style-check/tool.d.ts +6 -0
  187. package/dist/tools/novel-style-check/types.d.ts +39 -0
  188. package/dist/tools/skill/index.d.ts +3 -0
  189. package/dist/tools/skill/loader.d.ts +5 -0
  190. package/dist/tools/skill/tool.d.ts +5 -0
  191. package/dist/tools/skill/types.d.ts +14 -0
  192. package/dist/tools/slashcommand/index.d.ts +3 -0
  193. package/dist/tools/slashcommand/loader.d.ts +5 -0
  194. package/dist/tools/slashcommand/tool.d.ts +6 -0
  195. package/dist/tools/slashcommand/types.d.ts +14 -0
  196. package/package.json +55 -0
@@ -0,0 +1,904 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://opencode.ai/schema/opencode-novel.schema.json",
4
+ "title": "OpenCode Novel Configuration",
5
+ "description": "Configuration schema for opencode-novel plugin",
6
+ "type": "object",
7
+ "properties": {
8
+ "projectRoot": {
9
+ "type": "string"
10
+ },
11
+ "manuscriptDir": {
12
+ "default": "manuscript",
13
+ "type": "string"
14
+ },
15
+ "language": {
16
+ "default": "zh",
17
+ "type": "string",
18
+ "enum": [
19
+ "zh",
20
+ "en"
21
+ ]
22
+ },
23
+ "encoding": {
24
+ "default": "auto",
25
+ "type": "string",
26
+ "enum": [
27
+ "auto",
28
+ "utf8",
29
+ "utf8-bom",
30
+ "utf16le",
31
+ "utf16be",
32
+ "gbk",
33
+ "gb18030"
34
+ ]
35
+ },
36
+ "styleGuide": {
37
+ "default": {
38
+ "taboos": [],
39
+ "rating": "G",
40
+ "lexicon": {
41
+ "preferred": [],
42
+ "avoid": []
43
+ },
44
+ "checks": {
45
+ "catchphrase": {
46
+ "maxCount": 10,
47
+ "reportMissing": true
48
+ }
49
+ }
50
+ },
51
+ "type": "object",
52
+ "properties": {
53
+ "pov": {
54
+ "type": "string",
55
+ "enum": [
56
+ "first",
57
+ "third_limited",
58
+ "third_omniscient",
59
+ "multi"
60
+ ]
61
+ },
62
+ "tense": {
63
+ "type": "string",
64
+ "enum": [
65
+ "past",
66
+ "present",
67
+ "mixed"
68
+ ]
69
+ },
70
+ "tone": {
71
+ "type": "string"
72
+ },
73
+ "taboos": {
74
+ "default": [],
75
+ "type": "array",
76
+ "items": {
77
+ "type": "string"
78
+ }
79
+ },
80
+ "rating": {
81
+ "default": "G",
82
+ "type": "string"
83
+ },
84
+ "lexicon": {
85
+ "default": {
86
+ "preferred": [],
87
+ "avoid": []
88
+ },
89
+ "type": "object",
90
+ "properties": {
91
+ "preferred": {
92
+ "default": [],
93
+ "type": "array",
94
+ "items": {
95
+ "type": "string"
96
+ }
97
+ },
98
+ "avoid": {
99
+ "default": [],
100
+ "type": "array",
101
+ "items": {
102
+ "type": "string"
103
+ }
104
+ }
105
+ }
106
+ },
107
+ "checks": {
108
+ "default": {
109
+ "catchphrase": {
110
+ "maxCount": 10,
111
+ "reportMissing": true
112
+ }
113
+ },
114
+ "type": "object",
115
+ "properties": {
116
+ "catchphrase": {
117
+ "default": {
118
+ "maxCount": 10,
119
+ "reportMissing": true
120
+ },
121
+ "type": "object",
122
+ "properties": {
123
+ "maxCount": {
124
+ "default": 10,
125
+ "type": "integer",
126
+ "minimum": 0,
127
+ "maximum": 9007199254740991
128
+ },
129
+ "reportMissing": {
130
+ "default": true,
131
+ "type": "boolean"
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }
138
+ },
139
+ "naming": {
140
+ "default": {
141
+ "chapterIdPattern": "^ch\\d{4}$",
142
+ "threadIdPattern": "^th-[\\w\\u4e00-\\u9fa5-]+$",
143
+ "characterIdPattern": "^char-[\\w\\u4e00-\\u9fa5-]+$",
144
+ "factionIdPattern": "^fac-[\\w\\u4e00-\\u9fa5-]+$",
145
+ "locationIdPattern": "^loc-[\\w\\u4e00-\\u9fa5-]+$",
146
+ "dateFormat": "ISO"
147
+ },
148
+ "type": "object",
149
+ "properties": {
150
+ "chapterIdPattern": {
151
+ "default": "^ch\\d{4}$",
152
+ "type": "string"
153
+ },
154
+ "threadIdPattern": {
155
+ "default": "^th-[\\w\\u4e00-\\u9fa5-]+$",
156
+ "type": "string"
157
+ },
158
+ "characterIdPattern": {
159
+ "default": "^char-[\\w\\u4e00-\\u9fa5-]+$",
160
+ "type": "string"
161
+ },
162
+ "factionIdPattern": {
163
+ "default": "^fac-[\\w\\u4e00-\\u9fa5-]+$",
164
+ "type": "string"
165
+ },
166
+ "locationIdPattern": {
167
+ "default": "^loc-[\\w\\u4e00-\\u9fa5-]+$",
168
+ "type": "string"
169
+ },
170
+ "dateFormat": {
171
+ "default": "ISO",
172
+ "type": "string"
173
+ }
174
+ }
175
+ },
176
+ "frontmatter": {
177
+ "type": "object",
178
+ "propertyNames": {
179
+ "type": "string"
180
+ },
181
+ "additionalProperties": {}
182
+ },
183
+ "index": {
184
+ "default": {
185
+ "outputDir": ".opencode/novel",
186
+ "cacheDir": ".opencode/novel/cache",
187
+ "stableSortLocale": "zh-CN",
188
+ "writeDerivedFiles": true
189
+ },
190
+ "type": "object",
191
+ "properties": {
192
+ "outputDir": {
193
+ "default": ".opencode/novel",
194
+ "type": "string"
195
+ },
196
+ "cacheDir": {
197
+ "default": ".opencode/novel/cache",
198
+ "type": "string"
199
+ },
200
+ "stableSortLocale": {
201
+ "default": "zh-CN",
202
+ "type": "string"
203
+ },
204
+ "writeDerivedFiles": {
205
+ "default": true,
206
+ "type": "boolean"
207
+ }
208
+ }
209
+ },
210
+ "continuity": {
211
+ "default": {
212
+ "enabled": true,
213
+ "rules": [],
214
+ "strictMode": false
215
+ },
216
+ "type": "object",
217
+ "properties": {
218
+ "enabled": {
219
+ "default": true,
220
+ "type": "boolean"
221
+ },
222
+ "rules": {
223
+ "default": [],
224
+ "type": "array",
225
+ "items": {
226
+ "type": "object",
227
+ "properties": {
228
+ "id": {
229
+ "type": "string"
230
+ },
231
+ "enabled": {
232
+ "default": true,
233
+ "type": "boolean"
234
+ },
235
+ "severity": {
236
+ "default": "warn",
237
+ "type": "string",
238
+ "enum": [
239
+ "error",
240
+ "warn",
241
+ "info"
242
+ ]
243
+ },
244
+ "params": {
245
+ "type": "object",
246
+ "propertyNames": {
247
+ "type": "string"
248
+ },
249
+ "additionalProperties": {}
250
+ }
251
+ },
252
+ "required": [
253
+ "id"
254
+ ]
255
+ }
256
+ },
257
+ "strictMode": {
258
+ "default": false,
259
+ "type": "boolean"
260
+ }
261
+ }
262
+ },
263
+ "threads": {
264
+ "default": {
265
+ "enabled": true,
266
+ "requireClosePlan": true,
267
+ "staleDaysWarn": 30
268
+ },
269
+ "type": "object",
270
+ "properties": {
271
+ "enabled": {
272
+ "default": true,
273
+ "type": "boolean"
274
+ },
275
+ "requireClosePlan": {
276
+ "default": true,
277
+ "type": "boolean"
278
+ },
279
+ "staleDaysWarn": {
280
+ "default": 30,
281
+ "type": "integer",
282
+ "minimum": 0,
283
+ "maximum": 9007199254740991
284
+ }
285
+ }
286
+ },
287
+ "structure": {
288
+ "default": {
289
+ "enabled": true,
290
+ "required_beats": [
291
+ "setup",
292
+ "inciting_incident",
293
+ "midpoint",
294
+ "climax",
295
+ "resolution"
296
+ ],
297
+ "min_coverage": 0.8
298
+ },
299
+ "type": "object",
300
+ "properties": {
301
+ "enabled": {
302
+ "default": true,
303
+ "type": "boolean"
304
+ },
305
+ "required_beats": {
306
+ "default": [
307
+ "setup",
308
+ "inciting_incident",
309
+ "midpoint",
310
+ "climax",
311
+ "resolution"
312
+ ],
313
+ "type": "array",
314
+ "items": {
315
+ "type": "string",
316
+ "minLength": 1
317
+ }
318
+ },
319
+ "min_coverage": {
320
+ "default": 0.8,
321
+ "type": "number",
322
+ "minimum": 0,
323
+ "maximum": 1
324
+ }
325
+ }
326
+ },
327
+ "scene": {
328
+ "default": {
329
+ "enabled": true,
330
+ "required_fields": [
331
+ "scene_id",
332
+ "objective",
333
+ "conflict",
334
+ "outcome"
335
+ ]
336
+ },
337
+ "type": "object",
338
+ "properties": {
339
+ "enabled": {
340
+ "default": true,
341
+ "type": "boolean"
342
+ },
343
+ "required_fields": {
344
+ "default": [
345
+ "scene_id",
346
+ "objective",
347
+ "conflict",
348
+ "outcome"
349
+ ],
350
+ "type": "array",
351
+ "items": {
352
+ "type": "string",
353
+ "enum": [
354
+ "scene_id",
355
+ "objective",
356
+ "conflict",
357
+ "outcome",
358
+ "hook"
359
+ ]
360
+ }
361
+ }
362
+ }
363
+ },
364
+ "export": {
365
+ "default": {
366
+ "formats": [
367
+ "md"
368
+ ],
369
+ "chapterOrder": "by_id",
370
+ "includeFrontmatter": false,
371
+ "outputDir": "export",
372
+ "docx": {
373
+ "template": "default"
374
+ },
375
+ "preflight": {
376
+ "enabled": false,
377
+ "checks": [
378
+ "index",
379
+ "continuity",
380
+ "foreshadowing"
381
+ ],
382
+ "failOn": "error"
383
+ }
384
+ },
385
+ "type": "object",
386
+ "properties": {
387
+ "formats": {
388
+ "default": [
389
+ "md"
390
+ ],
391
+ "type": "array",
392
+ "items": {
393
+ "type": "string",
394
+ "enum": [
395
+ "md",
396
+ "html",
397
+ "epub",
398
+ "docx"
399
+ ]
400
+ }
401
+ },
402
+ "chapterOrder": {
403
+ "default": "by_id",
404
+ "type": "string",
405
+ "enum": [
406
+ "by_id",
407
+ "by_timeline",
408
+ "custom"
409
+ ]
410
+ },
411
+ "includeFrontmatter": {
412
+ "default": false,
413
+ "type": "boolean"
414
+ },
415
+ "outputDir": {
416
+ "default": "export",
417
+ "type": "string"
418
+ },
419
+ "docx": {
420
+ "default": {
421
+ "template": "default"
422
+ },
423
+ "type": "object",
424
+ "properties": {
425
+ "template": {
426
+ "default": "default",
427
+ "type": "string",
428
+ "enum": [
429
+ "default",
430
+ "manuscript"
431
+ ]
432
+ }
433
+ }
434
+ },
435
+ "preflight": {
436
+ "default": {
437
+ "enabled": false,
438
+ "checks": [
439
+ "index",
440
+ "continuity",
441
+ "foreshadowing",
442
+ "structure",
443
+ "arc",
444
+ "pacing"
445
+ ],
446
+ "failOn": "error"
447
+ },
448
+ "type": "object",
449
+ "properties": {
450
+ "enabled": {
451
+ "default": false,
452
+ "type": "boolean"
453
+ },
454
+ "checks": {
455
+ "default": [
456
+ "index",
457
+ "continuity",
458
+ "foreshadowing",
459
+ "structure",
460
+ "arc",
461
+ "pacing"
462
+ ],
463
+ "type": "array",
464
+ "items": {
465
+ "type": "string",
466
+ "enum": [
467
+ "index",
468
+ "continuity",
469
+ "foreshadowing",
470
+ "style",
471
+ "structure",
472
+ "scene",
473
+ "arc",
474
+ "pacing"
475
+ ]
476
+ }
477
+ },
478
+ "failOn": {
479
+ "default": "error",
480
+ "type": "string",
481
+ "enum": [
482
+ "error",
483
+ "warn"
484
+ ]
485
+ }
486
+ }
487
+ }
488
+ }
489
+ },
490
+ "contextPack": {
491
+ "default": {
492
+ "maxChars": 12000,
493
+ "include": {
494
+ "bible": true,
495
+ "characters": true,
496
+ "openThreads": true,
497
+ "lastChapters": 3
498
+ },
499
+ "redaction": {
500
+ "enabled": false,
501
+ "patterns": []
502
+ }
503
+ },
504
+ "type": "object",
505
+ "properties": {
506
+ "maxChars": {
507
+ "default": 12000,
508
+ "type": "integer",
509
+ "exclusiveMinimum": 0,
510
+ "maximum": 9007199254740991
511
+ },
512
+ "include": {
513
+ "default": {
514
+ "bible": true,
515
+ "characters": true,
516
+ "openThreads": true,
517
+ "lastChapters": 3
518
+ },
519
+ "type": "object",
520
+ "properties": {
521
+ "bible": {
522
+ "default": true,
523
+ "type": "boolean"
524
+ },
525
+ "characters": {
526
+ "default": true,
527
+ "type": "boolean"
528
+ },
529
+ "openThreads": {
530
+ "default": true,
531
+ "type": "boolean"
532
+ },
533
+ "lastChapters": {
534
+ "default": 3,
535
+ "type": "integer",
536
+ "minimum": 0,
537
+ "maximum": 9007199254740991
538
+ }
539
+ }
540
+ },
541
+ "redaction": {
542
+ "default": {
543
+ "enabled": false,
544
+ "patterns": []
545
+ },
546
+ "type": "object",
547
+ "properties": {
548
+ "enabled": {
549
+ "default": false,
550
+ "type": "boolean"
551
+ },
552
+ "patterns": {
553
+ "default": [],
554
+ "type": "array",
555
+ "items": {
556
+ "type": "string"
557
+ }
558
+ }
559
+ }
560
+ }
561
+ }
562
+ },
563
+ "agents_enabled": {
564
+ "default": true,
565
+ "type": "boolean"
566
+ },
567
+ "agent_name_prefix": {
568
+ "default": "novel-",
569
+ "type": "string"
570
+ },
571
+ "agents_preset": {
572
+ "default": "core",
573
+ "type": "string",
574
+ "enum": [
575
+ "core",
576
+ "full"
577
+ ]
578
+ },
579
+ "agents_primary": {
580
+ "default": [
581
+ "novel"
582
+ ],
583
+ "type": "array",
584
+ "items": {
585
+ "type": "string"
586
+ }
587
+ },
588
+ "disabled_agents": {
589
+ "default": [],
590
+ "type": "array",
591
+ "items": {
592
+ "type": "string"
593
+ }
594
+ },
595
+ "agents_force_override": {
596
+ "default": false,
597
+ "type": "boolean"
598
+ },
599
+ "agents": {
600
+ "default": {},
601
+ "type": "object",
602
+ "propertyNames": {
603
+ "type": "string"
604
+ },
605
+ "additionalProperties": {
606
+ "type": "object",
607
+ "properties": {
608
+ "model": {
609
+ "type": "string"
610
+ },
611
+ "variant": {
612
+ "type": "string"
613
+ },
614
+ "temperature": {
615
+ "type": "number",
616
+ "minimum": 0,
617
+ "maximum": 2
618
+ },
619
+ "top_p": {
620
+ "type": "number",
621
+ "minimum": 0,
622
+ "maximum": 1
623
+ },
624
+ "maxTokens": {
625
+ "type": "integer",
626
+ "exclusiveMinimum": 0,
627
+ "maximum": 9007199254740991
628
+ },
629
+ "category": {
630
+ "type": "string"
631
+ },
632
+ "prompt": {
633
+ "type": "string"
634
+ },
635
+ "prompt_append": {
636
+ "type": "string"
637
+ },
638
+ "tools": {
639
+ "type": "object",
640
+ "propertyNames": {
641
+ "type": "string"
642
+ },
643
+ "additionalProperties": {
644
+ "type": "boolean"
645
+ }
646
+ },
647
+ "permission": {
648
+ "type": "object",
649
+ "propertyNames": {
650
+ "type": "string"
651
+ },
652
+ "additionalProperties": {}
653
+ }
654
+ },
655
+ "additionalProperties": {}
656
+ }
657
+ },
658
+ "customTemplatesDir": {
659
+ "type": "string"
660
+ },
661
+ "customRulesDir": {
662
+ "type": "string"
663
+ },
664
+ "skills": {
665
+ "type": "object",
666
+ "propertyNames": {
667
+ "type": "string"
668
+ },
669
+ "additionalProperties": {}
670
+ },
671
+ "import": {
672
+ "default": {
673
+ "enabled": true,
674
+ "defaultMode": "copy",
675
+ "includeGlobs": [
676
+ "**/*.md",
677
+ "**/*.txt"
678
+ ],
679
+ "excludeGlobs": [
680
+ ".git/**",
681
+ ".opencode/**",
682
+ "manuscript/**",
683
+ "node_modules/**",
684
+ "dist/**",
685
+ "build/**",
686
+ "out/**",
687
+ ".cache/**"
688
+ ],
689
+ "chapterDetection": {
690
+ "mode": "heading_heuristic",
691
+ "patterns": [
692
+ {
693
+ "id": "zh_chapter",
694
+ "regex": "^\\s*#*\\s*第([0-9一二三四五六七八九十百千万两〇零]+)\\s*章(.*)$",
695
+ "flags": "i"
696
+ },
697
+ {
698
+ "id": "en_chapter",
699
+ "regex": "^\\s*#*\\s*Chapter\\s+(\\d+)\\s*[::-]?\\s*(.*)$",
700
+ "flags": "i"
701
+ }
702
+ ],
703
+ "enableLooseH1AfterFirstMatch": true
704
+ },
705
+ "chapterId": {
706
+ "scheme": "from_heading",
707
+ "prefix": "ch",
708
+ "pad": 4,
709
+ "specialPrefix": "sp"
710
+ },
711
+ "multiChapterFiles": "split",
712
+ "manuscriptExistsPolicy": "merge"
713
+ },
714
+ "type": "object",
715
+ "properties": {
716
+ "enabled": {
717
+ "default": true,
718
+ "type": "boolean"
719
+ },
720
+ "defaultMode": {
721
+ "default": "copy",
722
+ "type": "string",
723
+ "enum": [
724
+ "copy",
725
+ "analyze"
726
+ ]
727
+ },
728
+ "includeGlobs": {
729
+ "default": [
730
+ "**/*.md",
731
+ "**/*.txt"
732
+ ],
733
+ "type": "array",
734
+ "items": {
735
+ "type": "string"
736
+ }
737
+ },
738
+ "excludeGlobs": {
739
+ "default": [
740
+ ".git/**",
741
+ ".opencode/**",
742
+ "manuscript/**",
743
+ "node_modules/**",
744
+ "dist/**",
745
+ "build/**",
746
+ "out/**",
747
+ ".cache/**"
748
+ ],
749
+ "type": "array",
750
+ "items": {
751
+ "type": "string"
752
+ }
753
+ },
754
+ "chapterDetection": {
755
+ "default": {
756
+ "mode": "heading_heuristic",
757
+ "patterns": [
758
+ {
759
+ "id": "zh_chapter",
760
+ "regex": "^\\s*#*\\s*第([0-9一二三四五六七八九十百千万两〇零]+)\\s*章(.*)$",
761
+ "flags": "i"
762
+ },
763
+ {
764
+ "id": "en_chapter",
765
+ "regex": "^\\s*#*\\s*Chapter\\s+(\\d+)\\s*[::-]?\\s*(.*)$",
766
+ "flags": "i"
767
+ }
768
+ ],
769
+ "enableLooseH1AfterFirstMatch": true
770
+ },
771
+ "type": "object",
772
+ "properties": {
773
+ "mode": {
774
+ "default": "heading_heuristic",
775
+ "type": "string",
776
+ "const": "heading_heuristic"
777
+ },
778
+ "patterns": {
779
+ "default": [
780
+ {
781
+ "id": "zh_chapter",
782
+ "regex": "^\\s*#*\\s*第([0-9一二三四五六七八九十百千万两〇零]+)\\s*章(.*)$",
783
+ "flags": "i"
784
+ },
785
+ {
786
+ "id": "en_chapter",
787
+ "regex": "^\\s*#*\\s*Chapter\\s+(\\d+)\\s*[::-]?\\s*(.*)$",
788
+ "flags": "i"
789
+ }
790
+ ],
791
+ "type": "array",
792
+ "items": {
793
+ "type": "object",
794
+ "properties": {
795
+ "id": {
796
+ "type": "string"
797
+ },
798
+ "regex": {
799
+ "type": "string"
800
+ },
801
+ "flags": {
802
+ "type": "string"
803
+ }
804
+ },
805
+ "required": [
806
+ "id",
807
+ "regex"
808
+ ]
809
+ }
810
+ },
811
+ "enableLooseH1AfterFirstMatch": {
812
+ "default": true,
813
+ "type": "boolean"
814
+ }
815
+ }
816
+ },
817
+ "chapterId": {
818
+ "default": {
819
+ "scheme": "from_heading",
820
+ "prefix": "ch",
821
+ "pad": 4,
822
+ "specialPrefix": "sp"
823
+ },
824
+ "type": "object",
825
+ "properties": {
826
+ "scheme": {
827
+ "default": "from_heading",
828
+ "type": "string",
829
+ "const": "from_heading"
830
+ },
831
+ "prefix": {
832
+ "default": "ch",
833
+ "type": "string"
834
+ },
835
+ "pad": {
836
+ "default": 4,
837
+ "type": "integer",
838
+ "exclusiveMinimum": 0,
839
+ "maximum": 9007199254740991
840
+ },
841
+ "specialPrefix": {
842
+ "default": "sp",
843
+ "type": "string"
844
+ }
845
+ }
846
+ },
847
+ "multiChapterFiles": {
848
+ "default": "split",
849
+ "type": "string",
850
+ "const": "split"
851
+ },
852
+ "manuscriptExistsPolicy": {
853
+ "default": "merge",
854
+ "type": "string",
855
+ "const": "merge"
856
+ }
857
+ }
858
+ },
859
+ "compat": {
860
+ "default": {
861
+ "export_slashcommand_tool": true,
862
+ "export_skill_tool": true,
863
+ "export_skill_mcp_tool": false
864
+ },
865
+ "type": "object",
866
+ "properties": {
867
+ "export_slashcommand_tool": {
868
+ "default": true,
869
+ "type": "boolean"
870
+ },
871
+ "export_skill_tool": {
872
+ "default": true,
873
+ "type": "boolean"
874
+ },
875
+ "export_skill_mcp_tool": {
876
+ "default": false,
877
+ "type": "boolean"
878
+ }
879
+ }
880
+ },
881
+ "disabled_commands": {
882
+ "default": [],
883
+ "type": "array",
884
+ "items": {
885
+ "type": "string"
886
+ }
887
+ },
888
+ "disabled_skills": {
889
+ "default": [],
890
+ "type": "array",
891
+ "items": {
892
+ "type": "string"
893
+ }
894
+ },
895
+ "disabled_rules": {
896
+ "default": [],
897
+ "type": "array",
898
+ "items": {
899
+ "type": "string"
900
+ }
901
+ }
902
+ },
903
+ "additionalProperties": {}
904
+ }