@actalk/inkos 1.6.3 → 1.7.0-canary.53.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 (57) hide show
  1. package/dist/commands/audit.d.ts.map +1 -1
  2. package/dist/commands/audit.js +30 -1
  3. package/dist/commands/audit.js.map +1 -1
  4. package/dist/commands/auto.d.ts +3 -0
  5. package/dist/commands/auto.d.ts.map +1 -0
  6. package/dist/commands/auto.js +136 -0
  7. package/dist/commands/auto.js.map +1 -0
  8. package/dist/commands/config.d.ts.map +1 -1
  9. package/dist/commands/config.js +5 -2
  10. package/dist/commands/config.js.map +1 -1
  11. package/dist/commands/doctor.d.ts.map +1 -1
  12. package/dist/commands/doctor.js +11 -7
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/fanfic.d.ts.map +1 -1
  15. package/dist/commands/fanfic.js +6 -5
  16. package/dist/commands/fanfic.js.map +1 -1
  17. package/dist/commands/genre.d.ts +8 -0
  18. package/dist/commands/genre.d.ts.map +1 -1
  19. package/dist/commands/genre.js +55 -21
  20. package/dist/commands/genre.js.map +1 -1
  21. package/dist/commands/init.d.ts.map +1 -1
  22. package/dist/commands/init.js +10 -5
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/revise.d.ts.map +1 -1
  25. package/dist/commands/revise.js +32 -1
  26. package/dist/commands/revise.js.map +1 -1
  27. package/dist/commands/short-fiction.js +1 -1
  28. package/dist/commands/short-fiction.js.map +1 -1
  29. package/dist/commands/translate.d.ts +3 -0
  30. package/dist/commands/translate.d.ts.map +1 -0
  31. package/dist/commands/translate.js +107 -0
  32. package/dist/commands/translate.js.map +1 -0
  33. package/dist/commands/write.d.ts.map +1 -1
  34. package/dist/commands/write.js +52 -4
  35. package/dist/commands/write.js.map +1 -1
  36. package/dist/localization.d.ts +37 -1
  37. package/dist/localization.d.ts.map +1 -1
  38. package/dist/localization.js +159 -2
  39. package/dist/localization.js.map +1 -1
  40. package/dist/notify-helper.d.ts +17 -0
  41. package/dist/notify-helper.d.ts.map +1 -0
  42. package/dist/notify-helper.js +27 -0
  43. package/dist/notify-helper.js.map +1 -0
  44. package/dist/program.d.ts.map +1 -1
  45. package/dist/program.js +4 -0
  46. package/dist/program.js.map +1 -1
  47. package/dist/project-bootstrap.js +1 -1
  48. package/dist/project-bootstrap.js.map +1 -1
  49. package/dist/tui/slash-autocomplete.d.ts +3 -1
  50. package/dist/tui/slash-autocomplete.d.ts.map +1 -1
  51. package/dist/tui/slash-autocomplete.js +20 -16
  52. package/dist/tui/slash-autocomplete.js.map +1 -1
  53. package/dist/utils.d.ts +1 -1
  54. package/dist/utils.d.ts.map +1 -1
  55. package/dist/utils.js +2 -0
  56. package/dist/utils.js.map +1 -1
  57. package/package.json +4 -4
@@ -3,6 +3,53 @@ import { writeFile, mkdir, readFile } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { listAvailableGenres, readGenreProfile, getBuiltinGenresDir } from "@actalk/inkos-core";
5
5
  import { findProjectRoot, log, logError } from "../utils.js";
6
+ import { resolveCliLanguage } from "../localization.js";
7
+ export function buildGenreTemplate(params, language = "zh") {
8
+ if (language === "en") {
9
+ return `---
10
+ name: ${params.name}
11
+ id: ${params.id}
12
+ chapterTypes: ["progression", "setup", "transition", "payoff"]
13
+ fatigueWords: ["shocked", "unbelievable", "incredible"]
14
+ numericalSystem: ${params.numerical}
15
+ powerScaling: ${params.power}
16
+ eraResearch: ${params.era}
17
+ pacingRule: "A clear advance or payoff every 2-3 chapters"
18
+ satisfactionTypes: ["goal achieved", "obstacle overcome", "truth revealed"]
19
+ auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19]
20
+ ---
21
+
22
+ ## Genre Taboos
23
+
24
+ - (add taboos for this genre)
25
+
26
+ ## Narrative Guidance
27
+
28
+ (describe the narrative focus and style requirements for this genre)
29
+ `;
30
+ }
31
+ return `---
32
+ name: ${params.name}
33
+ id: ${params.id}
34
+ chapterTypes: ["推进章", "布局章", "过渡章", "回收章"]
35
+ fatigueWords: ["震惊", "不可思议", "难以置信"]
36
+ numericalSystem: ${params.numerical}
37
+ powerScaling: ${params.power}
38
+ eraResearch: ${params.era}
39
+ pacingRule: "每2-3章有一个明确的进展或反馈"
40
+ satisfactionTypes: ["目标达成", "困难克服", "真相揭示"]
41
+ auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19]
42
+ ---
43
+
44
+ ## 题材禁忌
45
+
46
+ - (根据题材添加禁忌)
47
+
48
+ ## 叙事指导
49
+
50
+ (根据题材描述叙事重心和风格要求)
51
+ `;
52
+ }
6
53
  export const genreCommand = new Command("genre")
7
54
  .description("Manage genre profiles");
8
55
  genreCommand
@@ -68,6 +115,7 @@ genreCommand
68
115
  .option("--numerical", "Enable numerical system", false)
69
116
  .option("--power", "Enable power scaling", false)
70
117
  .option("--era", "Enable era research", false)
118
+ .option("--lang <language>", "Template language: zh or en (defaults to INKOS_LOCALE/LANG, then zh)")
71
119
  .action(async (id, opts) => {
72
120
  try {
73
121
  const root = findProjectRoot();
@@ -82,27 +130,13 @@ genreCommand
82
130
  catch { /* file doesn't exist, good */ }
83
131
  await mkdir(genresDir, { recursive: true });
84
132
  const name = opts.name || id;
85
- const template = `---
86
- name: ${name}
87
- id: ${id}
88
- chapterTypes: ["推进章", "布局章", "过渡章", "回收章"]
89
- fatigueWords: ["震惊", "不可思议", "难以置信"]
90
- numericalSystem: ${opts.numerical}
91
- powerScaling: ${opts.power}
92
- eraResearch: ${opts.era}
93
- pacingRule: "每2-3章有一个明确的进展或反馈"
94
- satisfactionTypes: ["目标达成", "困难克服", "真相揭示"]
95
- auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19]
96
- ---
97
-
98
- ## 题材禁忌
99
-
100
- - (根据题材添加禁忌)
101
-
102
- ## 叙事指导
103
-
104
- (根据题材描述叙事重心和风格要求)
105
- `;
133
+ const template = buildGenreTemplate({
134
+ id,
135
+ name,
136
+ numerical: opts.numerical,
137
+ power: opts.power,
138
+ era: opts.era,
139
+ }, resolveCliLanguage(opts.lang));
106
140
  await writeFile(filePath, template, "utf-8");
107
141
  log(`Created genre profile: ${filePath}`);
108
142
  log(`Edit the file to customize chapter types, fatigue words, rules, etc.`);
@@ -1 +1 @@
1
- {"version":3,"file":"genre.js","sourceRoot":"","sources":["../../src/commands/genre.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genre.js","sourceRoot":"","sources":["../../src/commands/genre.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,WAAW,SAwCpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,WAAW,SA2CpB,CAAC"}
@@ -18,16 +18,20 @@ export const initCommand = new Command("init")
18
18
  log(`Project initialized at ${projectDir}`);
19
19
  log("");
20
20
  const isEnglish = (opts.lang ?? "zh") === "en";
21
- const exampleCreate = isEnglish
22
- ? " inkos book create --title 'My Novel' --genre progression --platform royalroad --lang en"
23
- : " inkos book create --title '我的小说' --genre xuanhuan --platform tomato";
21
+ const exampleCreateLines = isEnglish
22
+ ? [" inkos book create --title 'My Novel' --genre progression --platform royalroad --lang en"]
23
+ : [
24
+ " inkos book create --title '我的小说' --genre xuanhuan --platform tomato",
25
+ " # English project? Re-run with: inkos init --lang en",
26
+ ];
24
27
  if (global) {
25
28
  log("Global LLM config detected. Ready to go!");
26
29
  log("");
27
30
  log("Next steps:");
28
31
  if (name)
29
32
  log(` cd ${name}`);
30
- log(exampleCreate);
33
+ for (const line of exampleCreateLines)
34
+ log(line);
31
35
  }
32
36
  else {
33
37
  log("Next steps:");
@@ -37,7 +41,8 @@ export const initCommand = new Command("init")
37
41
  log(" inkos config set-global --provider openai --base-url <your-api-url> --api-key <your-key> --model <your-model>");
38
42
  log(" # Option 2: Edit .env for this project only");
39
43
  log("");
40
- log(exampleCreate);
44
+ for (const line of exampleCreateLines)
45
+ log(line);
41
46
  }
42
47
  log(" inkos write next <book-id>");
43
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,4DAA4D,CAAC;KACzE,QAAQ,CAAC,QAAQ,EAAE,sEAAsE,CAAC;KAC1F,MAAM,CAAC,mBAAmB,EAAE,wDAAwD,EAAE,IAAI,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAuB,EAAE,EAAE;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,0BAA0B,CAAC,UAAU,EAAE;YAC3C,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QAEH,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;QAC/C,MAAM,aAAa,GAAG,SAAS;YAC7B,CAAC,CAAC,2FAA2F;YAC7F,CAAC,CAAC,uEAAuE,CAAC;QAC5E,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAChD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,aAAa,CAAC,CAAC;YACnB,IAAI,IAAI;gBAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC9B,GAAG,CAAC,aAAa,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,aAAa,CAAC,CAAC;YACnB,IAAI,IAAI;gBAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC9B,GAAG,CAAC,0DAA0D,CAAC,CAAC;YAChE,GAAG,CAAC,iHAAiH,CAAC,CAAC;YACvH,GAAG,CAAC,+CAA+C,CAAC,CAAC;YACrD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,aAAa,CAAC,CAAC;QACrB,CAAC;QACD,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,4DAA4D,CAAC;KACzE,QAAQ,CAAC,QAAQ,EAAE,sEAAsE,CAAC;KAC1F,MAAM,CAAC,mBAAmB,EAAE,wDAAwD,EAAE,IAAI,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAuB,EAAE,EAAE;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,0BAA0B,CAAC,UAAU,EAAE;YAC3C,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QAEH,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;QAC/C,MAAM,kBAAkB,GAAG,SAAS;YAClC,CAAC,CAAC,CAAC,2FAA2F,CAAC;YAC/F,CAAC,CAAC;gBACA,uEAAuE;gBACvE,wDAAwD;aACzD,CAAC;QACJ,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAChD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,aAAa,CAAC,CAAC;YACnB,IAAI,IAAI;gBAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,kBAAkB;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,aAAa,CAAC,CAAC;YACnB,IAAI,IAAI;gBAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC9B,GAAG,CAAC,0DAA0D,CAAC,CAAC;YAChE,GAAG,CAAC,iHAAiH,CAAC,CAAC;YACvH,GAAG,CAAC,+CAA+C,CAAC,CAAC;YACrD,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,KAAK,MAAM,IAAI,IAAI,kBAAkB;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"revise.d.ts","sourceRoot":"","sources":["../../src/commands/revise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SAqDtB,CAAC"}
1
+ {"version":3,"file":"revise.d.ts","sourceRoot":"","sources":["../../src/commands/revise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,aAAa,SAmFtB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { Command } from "commander";
2
- import { DEFAULT_REVISE_MODE, PipelineRunner } from "@actalk/inkos-core";
2
+ import { DEFAULT_REVISE_MODE, PipelineRunner, StateManager, resolveRevisionGate } from "@actalk/inkos-core";
3
3
  import { loadConfig, buildPipelineConfig, findProjectRoot, resolveBookId, log, logError } from "../utils.js";
4
+ import { formatNotifyCommandTitle, formatNotifyFailureBody, formatNotifyReviseBody, resolveCliLanguage, } from "../localization.js";
5
+ import { sendCommandNotification } from "../notify-helper.js";
4
6
  export const reviseCommand = new Command("revise")
5
7
  .description("Revise a chapter based on audit issues")
6
8
  .argument("[book-id]", "Book ID (auto-detected if only one book)")
@@ -8,7 +10,10 @@ export const reviseCommand = new Command("revise")
8
10
  .option("--mode <mode>", "Revise mode: spot-fix, polish, rewrite, rework, anti-detect", DEFAULT_REVISE_MODE)
9
11
  .option("--brief <text>", "One-off creative guidance for this revise/rewrite only")
10
12
  .option("--json", "Output JSON")
13
+ .option("--notify", "Send a notification to configured notify channels when the command finishes")
11
14
  .action(async (bookIdArg, chapterStr, opts) => {
15
+ let notifyLanguage = "zh";
16
+ let notifyBookName;
12
17
  try {
13
18
  const config = await loadConfig();
14
19
  const root = findProjectRoot();
@@ -22,8 +27,14 @@ export const reviseCommand = new Command("revise")
22
27
  bookId = await resolveBookId(bookIdArg, root);
23
28
  chapterNumber = chapterStr ? parseInt(chapterStr, 10) : undefined;
24
29
  }
30
+ const state = new StateManager(root);
31
+ const book = await state.loadBookConfig(bookId);
32
+ const language = resolveCliLanguage(book.language);
33
+ notifyLanguage = language;
34
+ notifyBookName = book.title ?? bookId;
25
35
  const pipeline = new PipelineRunner(buildPipelineConfig(config, root, {
26
36
  externalContext: opts.brief,
37
+ revisionGate: resolveRevisionGate(book, config.writing),
27
38
  }));
28
39
  const mode = opts.mode;
29
40
  if (!opts.json)
@@ -46,8 +57,28 @@ export const reviseCommand = new Command("revise")
46
57
  log(` - ${fix}`);
47
58
  }
48
59
  }
60
+ // Unlike write commands, the pipeline sends no notification for
61
+ // reviseDraft, so --notify always sends the completion notification here.
62
+ if (opts.notify) {
63
+ await sendCommandNotification({
64
+ title: formatNotifyCommandTitle(language, "revise", notifyBookName, true),
65
+ body: formatNotifyReviseBody(language, {
66
+ chapterNumber: result.chapterNumber,
67
+ applied: result.applied,
68
+ wordCount: result.wordCount,
69
+ fixedCount: result.fixedIssues.length,
70
+ skippedReason: result.skippedReason,
71
+ }),
72
+ }, config);
73
+ }
49
74
  }
50
75
  catch (e) {
76
+ if (opts.notify) {
77
+ await sendCommandNotification({
78
+ title: formatNotifyCommandTitle(notifyLanguage, "revise", notifyBookName, false),
79
+ body: formatNotifyFailureBody(notifyLanguage, e),
80
+ });
81
+ }
51
82
  if (opts.json) {
52
83
  log(JSON.stringify({ error: String(e) }));
53
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"revise.js","sourceRoot":"","sources":["../../src/commands/revise.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revise.js","sourceRoot":"","sources":["../../src/commands/revise.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export const shortCommand = new Command("short")
9
9
  shortCommand
10
10
  .command("run")
11
11
  .description("Run a short fiction chain from a direction")
12
- .requiredOption("--direction <text>", "Story direction, e.g. 女频短篇 婚姻背叛 证据反杀")
12
+ .requiredOption("--direction <text>", "Story direction, e.g. \"女频短篇 婚姻背叛 证据反杀\" or \"female-lead short: marriage betrayal, evidence payback\"")
13
13
  .option("--reference <path>", "Optional reference notes/text")
14
14
  .option("--story-id <id>", "Output story id under shorts/")
15
15
  .option("--out-dir <path>", "Output directory", "shorts")
@@ -1 +1 @@
1
- {"version":3,"file":"short-fiction.js","sourceRoot":"","sources":["../../src/commands/short-fiction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"short-fiction.js","sourceRoot":"","sources":["../../src/commands/short-fiction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const translateCommand: Command;
3
+ //# sourceMappingURL=translate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,gBAAgB,SAC2C,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { Command } from "commander";
2
+ import { createLLMTranslationModel, createTranslationProjectFromFile, runTranslationProject, writeTranslationExport, } from "@actalk/inkos-core";
3
+ import { createClient, findProjectRoot, loadConfig, log, logError } from "../utils.js";
4
+ export const translateCommand = new Command("translate")
5
+ .description("Translate and localize novels/scripts across languages");
6
+ translateCommand
7
+ .command("init")
8
+ .description("Create a translation project from EPUB/PDF/TXT/Markdown")
9
+ .requiredOption("--from <path>", "Source file path")
10
+ .requiredOption("--source <language>", "Source language, e.g. ja, en, zh, ko, auto")
11
+ .requiredOption("--target <language>", "Target language, e.g. zh, en, ja")
12
+ .option("--title <title>", "Override translation title")
13
+ .option("--segment-max-chars <n>", "Max chars per segment before splitting long paragraphs", parseInt)
14
+ .option("--json", "Output JSON")
15
+ .action(async (opts) => {
16
+ try {
17
+ const root = findProjectRoot();
18
+ const result = await createTranslationProjectFromFile(root, {
19
+ filePath: opts.from,
20
+ sourceLanguage: opts.source,
21
+ targetLanguage: opts.target,
22
+ title: opts.title,
23
+ segmentMaxChars: opts.segmentMaxChars,
24
+ });
25
+ if (opts.json) {
26
+ log(JSON.stringify(result, null, 2));
27
+ }
28
+ else {
29
+ log(`Translation project created: ${result.manifest.id}`);
30
+ log(`Title: ${result.manifest.title}`);
31
+ log(`Chapters: ${result.manifest.chapters.length}`);
32
+ log(`Manifest: ${result.manifestPath}`);
33
+ }
34
+ }
35
+ catch (error) {
36
+ fail("Failed to create translation project", error, opts.json);
37
+ }
38
+ });
39
+ translateCommand
40
+ .command("run")
41
+ .description("Translate pending segments and write a review report")
42
+ .argument("<project-id>", "Translation project ID under translations/")
43
+ .option("--batch-size <n>", "Segments per model call", parseInt)
44
+ .option("--max-tokens <n>", "Max output tokens per translation batch", parseInt)
45
+ .option("--json", "Output JSON")
46
+ .action(async (projectId, opts) => {
47
+ try {
48
+ const root = findProjectRoot();
49
+ const config = await loadConfig({ requireApiKey: true, projectRoot: root });
50
+ const model = createLLMTranslationModel({
51
+ client: createClient(config),
52
+ model: config.llm.model,
53
+ maxTokens: opts.maxTokens,
54
+ });
55
+ const result = await runTranslationProject(root, projectId, {
56
+ model,
57
+ batchSize: opts.batchSize,
58
+ });
59
+ if (opts.json) {
60
+ log(JSON.stringify(result, null, 2));
61
+ }
62
+ else {
63
+ log(`Translated segments: ${result.translatedSegments}`);
64
+ log(`Reviewed chapters: ${result.reviewedChapters}`);
65
+ log(`Report: ${result.reportPath}`);
66
+ }
67
+ }
68
+ catch (error) {
69
+ fail("Translation run failed", error, opts.json);
70
+ }
71
+ });
72
+ translateCommand
73
+ .command("export")
74
+ .description("Export translated text to Markdown/TXT/EPUB")
75
+ .argument("<project-id>", "Translation project ID under translations/")
76
+ .option("--format <format>", "Output format: md, txt, epub", "md")
77
+ .option("--output <path>", "Output file path")
78
+ .option("--json", "Output JSON")
79
+ .action(async (projectId, opts) => {
80
+ try {
81
+ const root = findProjectRoot();
82
+ const result = await writeTranslationExport(root, projectId, {
83
+ format: opts.format,
84
+ outputPath: opts.output,
85
+ });
86
+ if (opts.json) {
87
+ log(JSON.stringify(result, null, 2));
88
+ }
89
+ else {
90
+ log(`Exported ${result.chaptersExported} chapter(s)`);
91
+ log(`Output: ${result.outputPath}`);
92
+ }
93
+ }
94
+ catch (error) {
95
+ fail("Translation export failed", error, opts.json);
96
+ }
97
+ });
98
+ function fail(prefix, error, json) {
99
+ if (json) {
100
+ log(JSON.stringify({ error: String(error) }));
101
+ }
102
+ else {
103
+ logError(`${prefix}: ${error}`);
104
+ }
105
+ process.exit(1);
106
+ }
107
+ //# sourceMappingURL=translate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SACO,CAAC"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,YAAY,SACO,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { Command } from "commander";
2
- import { PipelineRunner, StateManager } from "@actalk/inkos-core";
2
+ import { PipelineRunner, StateManager, resolveChapterReviewMode } from "@actalk/inkos-core";
3
3
  import { readdir, stat, unlink } from "node:fs/promises";
4
4
  import { join } from "node:path";
5
5
  import { createInterface } from "node:readline";
6
6
  import { loadConfig, buildPipelineConfig, findProjectRoot, getLegacyMigrationHint, resolveContext, resolveBookId, log, logError } from "../utils.js";
7
- import { formatWriteNextComplete, formatWriteNextProgress, formatWriteNextResultLines, resolveCliLanguage } from "../localization.js";
7
+ import { formatNotifyBatchWriteBody, formatNotifyCommandTitle, formatNotifyFailureBody, formatWriteNextComplete, formatWriteNextProgress, formatWriteNextResultLines, resolveCliLanguage, } from "../localization.js";
8
+ import { sendCommandNotification } from "../notify-helper.js";
8
9
  export const writeCommand = new Command("write")
9
10
  .description("Write chapters");
10
11
  writeCommand
@@ -17,7 +18,10 @@ writeCommand
17
18
  .option("--context-file <path>", "Read guidance from file")
18
19
  .option("--json", "Output JSON")
19
20
  .option("-q, --quiet", "Suppress console output")
21
+ .option("--notify", "Send a notification to configured notify channels when the command finishes")
20
22
  .action(async (bookIdArg, opts) => {
23
+ let notifyLanguage = "zh";
24
+ let notifyBookName;
21
25
  try {
22
26
  const root = findProjectRoot();
23
27
  const bookId = await resolveBookId(bookIdArg, root);
@@ -25,12 +29,18 @@ writeCommand
25
29
  const state = new StateManager(root);
26
30
  const book = await state.loadBookConfig(bookId);
27
31
  const language = resolveCliLanguage(book.language);
32
+ notifyLanguage = language;
33
+ notifyBookName = book.title ?? bookId;
28
34
  const migrationHint = await getLegacyMigrationHint(root, bookId);
29
35
  if (migrationHint && !opts.json) {
30
36
  log(`[migration] ${migrationHint}`);
31
37
  }
32
38
  const config = await loadConfig();
33
- const pipeline = new PipelineRunner(buildPipelineConfig(config, root, { externalContext: context, quiet: opts.quiet }));
39
+ const pipeline = new PipelineRunner(buildPipelineConfig(config, root, {
40
+ externalContext: context,
41
+ quiet: opts.quiet,
42
+ chapterReviewMode: resolveChapterReviewMode(book, config.writing),
43
+ }));
34
44
  const count = parseInt(opts.count, 10);
35
45
  const wordCount = opts.words ? parseInt(opts.words, 10) : undefined;
36
46
  const results = [];
@@ -68,8 +78,30 @@ writeCommand
68
78
  else {
69
79
  log(formatWriteNextComplete(language));
70
80
  }
81
+ // The pipeline itself already sends one notification per completed
82
+ // chapter whenever notify channels are configured (runner.ts, end of
83
+ // writeNextChapter). A single-chapter run would therefore duplicate that
84
+ // exact notification — only send a command-level batch summary when this
85
+ // run wrote more than one chapter.
86
+ if (opts.notify && results.length > 1) {
87
+ await sendCommandNotification({
88
+ title: formatNotifyCommandTitle(language, "write-next", notifyBookName, true),
89
+ body: formatNotifyBatchWriteBody(language, results.map((r) => ({
90
+ chapterNumber: r.chapterNumber,
91
+ title: r.title,
92
+ wordCount: r.wordCount,
93
+ auditPassed: r.auditResult.passed,
94
+ }))),
95
+ }, config);
96
+ }
71
97
  }
72
98
  catch (e) {
99
+ if (opts.notify) {
100
+ await sendCommandNotification({
101
+ title: formatNotifyCommandTitle(notifyLanguage, "write-next", notifyBookName, false),
102
+ body: formatNotifyFailureBody(notifyLanguage, e),
103
+ });
104
+ }
73
105
  if (opts.json) {
74
106
  log(JSON.stringify({ error: String(e) }));
75
107
  }
@@ -87,7 +119,10 @@ writeCommand
87
119
  .option("--words <n>", "Words per chapter (overrides book config)")
88
120
  .option("--brief <text>", "One-off creative guidance for this rewrite only")
89
121
  .option("--json", "Output JSON")
122
+ .option("--notify", "Send a notification to configured notify channels when the command finishes")
90
123
  .action(async (args, opts) => {
124
+ let notifyLanguage = "zh";
125
+ let notifyBookName;
91
126
  try {
92
127
  const root = findProjectRoot();
93
128
  let bookId;
@@ -119,6 +154,9 @@ writeCommand
119
154
  }
120
155
  }
121
156
  const state = new StateManager(root);
157
+ const book = await state.loadBookConfig(bookId);
158
+ notifyLanguage = resolveCliLanguage(book.language);
159
+ notifyBookName = book.title ?? bookId;
122
160
  const bookDir = state.bookDir(bookId);
123
161
  const chaptersDir = join(bookDir, "chapters");
124
162
  const restoreFrom = chapter - 1;
@@ -170,9 +208,9 @@ writeCommand
170
208
  const config = await loadConfig();
171
209
  const pipeline = new PipelineRunner(buildPipelineConfig(config, root, {
172
210
  externalContext: opts.brief,
211
+ chapterReviewMode: resolveChapterReviewMode(book, config.writing),
173
212
  }));
174
213
  const result = await pipeline.writeNextChapter(bookId, wordCount);
175
- const book = await state.loadBookConfig(bookId);
176
214
  const language = resolveCliLanguage(book.language);
177
215
  if (opts.json) {
178
216
  log(JSON.stringify(result, null, 2));
@@ -190,8 +228,18 @@ writeCommand
190
228
  log(line);
191
229
  }
192
230
  }
231
+ // Success notification intentionally skipped: the pipeline already sent
232
+ // the per-chapter notification for this exact chapter (runner.ts, end of
233
+ // writeNextChapter) — a command-level one would be a duplicate. --notify
234
+ // only adds the failure notification for this command.
193
235
  }
194
236
  catch (e) {
237
+ if (opts.notify) {
238
+ await sendCommandNotification({
239
+ title: formatNotifyCommandTitle(notifyLanguage, "write-rewrite", notifyBookName, false),
240
+ body: formatNotifyFailureBody(notifyLanguage, e),
241
+ });
242
+ }
195
243
  if (opts.json) {
196
244
  log(JSON.stringify({ error: String(e) }));
197
245
  }