@actalk/inkos-core 0.3.6 → 0.4.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 (110) hide show
  1. package/dist/agents/architect.d.ts.map +1 -1
  2. package/dist/agents/architect.js +17 -3
  3. package/dist/agents/architect.js.map +1 -1
  4. package/dist/agents/base.d.ts +10 -0
  5. package/dist/agents/base.d.ts.map +1 -1
  6. package/dist/agents/base.js +12 -0
  7. package/dist/agents/base.js.map +1 -1
  8. package/dist/agents/continuity.d.ts +3 -1
  9. package/dist/agents/continuity.d.ts.map +1 -1
  10. package/dist/agents/continuity.js +78 -13
  11. package/dist/agents/continuity.js.map +1 -1
  12. package/dist/agents/post-write-validator.d.ts +16 -0
  13. package/dist/agents/post-write-validator.d.ts.map +1 -0
  14. package/dist/agents/post-write-validator.js +204 -0
  15. package/dist/agents/post-write-validator.js.map +1 -0
  16. package/dist/agents/reviser.d.ts +1 -1
  17. package/dist/agents/reviser.d.ts.map +1 -1
  18. package/dist/agents/reviser.js +16 -3
  19. package/dist/agents/reviser.js.map +1 -1
  20. package/dist/agents/sensitive-words.d.ts +22 -0
  21. package/dist/agents/sensitive-words.d.ts.map +1 -0
  22. package/dist/agents/sensitive-words.js +91 -0
  23. package/dist/agents/sensitive-words.js.map +1 -0
  24. package/dist/agents/writer-prompts.d.ts +1 -1
  25. package/dist/agents/writer-prompts.d.ts.map +1 -1
  26. package/dist/agents/writer-prompts.js +122 -11
  27. package/dist/agents/writer-prompts.js.map +1 -1
  28. package/dist/agents/writer.d.ts +15 -0
  29. package/dist/agents/writer.d.ts.map +1 -1
  30. package/dist/agents/writer.js +150 -5
  31. package/dist/agents/writer.js.map +1 -1
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +4 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/llm/provider.d.ts +1 -0
  37. package/dist/llm/provider.d.ts.map +1 -1
  38. package/dist/llm/provider.js +9 -4
  39. package/dist/llm/provider.js.map +1 -1
  40. package/dist/models/book-rules.d.ts.map +1 -1
  41. package/dist/models/book-rules.js +15 -7
  42. package/dist/models/book-rules.js.map +1 -1
  43. package/dist/models/book.d.ts +4 -4
  44. package/dist/models/book.d.ts.map +1 -1
  45. package/dist/models/book.js +0 -3
  46. package/dist/models/book.js.map +1 -1
  47. package/dist/models/project.d.ts +23 -7
  48. package/dist/models/project.d.ts.map +1 -1
  49. package/dist/models/project.js +13 -6
  50. package/dist/models/project.js.map +1 -1
  51. package/dist/notify/webhook.d.ts +1 -1
  52. package/dist/notify/webhook.d.ts.map +1 -1
  53. package/dist/notify/webhook.js.map +1 -1
  54. package/dist/pipeline/agent.d.ts.map +1 -1
  55. package/dist/pipeline/agent.js +76 -8
  56. package/dist/pipeline/agent.js.map +1 -1
  57. package/dist/pipeline/runner.d.ts +14 -1
  58. package/dist/pipeline/runner.d.ts.map +1 -1
  59. package/dist/pipeline/runner.js +267 -30
  60. package/dist/pipeline/runner.js.map +1 -1
  61. package/dist/pipeline/scheduler.d.ts +20 -2
  62. package/dist/pipeline/scheduler.d.ts.map +1 -1
  63. package/dist/pipeline/scheduler.js +162 -32
  64. package/dist/pipeline/scheduler.js.map +1 -1
  65. package/dist/state/manager.d.ts.map +1 -1
  66. package/dist/state/manager.js +3 -0
  67. package/dist/state/manager.js.map +1 -1
  68. package/dist/utils/web-search.d.ts +13 -0
  69. package/dist/utils/web-search.d.ts.map +1 -0
  70. package/dist/utils/web-search.js +37 -0
  71. package/dist/utils/web-search.js.map +1 -0
  72. package/genres/horror.md +1 -1
  73. package/genres/other.md +1 -1
  74. package/genres/urban.md +1 -1
  75. package/genres/xianxia.md +1 -1
  76. package/genres/xuanhuan.md +1 -1
  77. package/package.json +11 -8
  78. package/LICENSE +0 -21
  79. package/dist/__tests__/ai-tells.test.d.ts +0 -2
  80. package/dist/__tests__/ai-tells.test.d.ts.map +0 -1
  81. package/dist/__tests__/ai-tells.test.js +0 -78
  82. package/dist/__tests__/ai-tells.test.js.map +0 -1
  83. package/dist/__tests__/detection-insights.test.d.ts +0 -2
  84. package/dist/__tests__/detection-insights.test.d.ts.map +0 -1
  85. package/dist/__tests__/detection-insights.test.js +0 -50
  86. package/dist/__tests__/detection-insights.test.js.map +0 -1
  87. package/dist/__tests__/detector.test.d.ts +0 -2
  88. package/dist/__tests__/detector.test.d.ts.map +0 -1
  89. package/dist/__tests__/detector.test.js +0 -71
  90. package/dist/__tests__/detector.test.js.map +0 -1
  91. package/dist/__tests__/models.test.d.ts +0 -2
  92. package/dist/__tests__/models.test.d.ts.map +0 -1
  93. package/dist/__tests__/models.test.js +0 -328
  94. package/dist/__tests__/models.test.js.map +0 -1
  95. package/dist/__tests__/state-manager.test.d.ts +0 -2
  96. package/dist/__tests__/state-manager.test.d.ts.map +0 -1
  97. package/dist/__tests__/state-manager.test.js +0 -264
  98. package/dist/__tests__/state-manager.test.js.map +0 -1
  99. package/dist/__tests__/style-analyzer.test.d.ts +0 -2
  100. package/dist/__tests__/style-analyzer.test.d.ts.map +0 -1
  101. package/dist/__tests__/style-analyzer.test.js +0 -53
  102. package/dist/__tests__/style-analyzer.test.js.map +0 -1
  103. package/dist/__tests__/webhook.test.d.ts +0 -2
  104. package/dist/__tests__/webhook.test.d.ts.map +0 -1
  105. package/dist/__tests__/webhook.test.js +0 -62
  106. package/dist/__tests__/webhook.test.js.map +0 -1
  107. package/dist/__tests__/writer-parser.test.d.ts +0 -2
  108. package/dist/__tests__/writer-parser.test.d.ts.map +0 -1
  109. package/dist/__tests__/writer-parser.test.js +0 -195
  110. package/dist/__tests__/writer-parser.test.js.map +0 -1
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=detection-insights.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detection-insights.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/detection-insights.test.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { analyzeDetectionInsights } from "../agents/detection-insights.js";
3
- describe("analyzeDetectionInsights", () => {
4
- it("returns zeros for empty history", () => {
5
- const stats = analyzeDetectionInsights([]);
6
- expect(stats.totalDetections).toBe(0);
7
- expect(stats.totalRewrites).toBe(0);
8
- expect(stats.avgOriginalScore).toBe(0);
9
- expect(stats.chapterBreakdown).toHaveLength(0);
10
- });
11
- it("correctly counts detections and rewrites", () => {
12
- const history = [
13
- { chapterNumber: 1, timestamp: "2026-01-01T00:00:00Z", provider: "custom", score: 0.8, action: "detect", attempt: 0 },
14
- { chapterNumber: 1, timestamp: "2026-01-01T00:01:00Z", provider: "custom", score: 0.6, action: "rewrite", attempt: 1 },
15
- { chapterNumber: 1, timestamp: "2026-01-01T00:02:00Z", provider: "custom", score: 0.4, action: "rewrite", attempt: 2 },
16
- { chapterNumber: 2, timestamp: "2026-01-02T00:00:00Z", provider: "custom", score: 0.3, action: "detect", attempt: 0 },
17
- ];
18
- const stats = analyzeDetectionInsights(history);
19
- expect(stats.totalDetections).toBe(2);
20
- expect(stats.totalRewrites).toBe(2);
21
- });
22
- it("calculates per-chapter breakdown", () => {
23
- const history = [
24
- { chapterNumber: 1, timestamp: "2026-01-01T00:00:00Z", provider: "custom", score: 0.9, action: "detect", attempt: 0 },
25
- { chapterNumber: 1, timestamp: "2026-01-01T00:01:00Z", provider: "custom", score: 0.5, action: "rewrite", attempt: 1 },
26
- { chapterNumber: 2, timestamp: "2026-01-02T00:00:00Z", provider: "custom", score: 0.3, action: "detect", attempt: 0 },
27
- ];
28
- const stats = analyzeDetectionInsights(history);
29
- expect(stats.chapterBreakdown).toHaveLength(2);
30
- const ch1 = stats.chapterBreakdown.find((c) => c.chapterNumber === 1);
31
- expect(ch1?.originalScore).toBe(0.9);
32
- expect(ch1?.finalScore).toBe(0.5);
33
- expect(ch1?.rewriteAttempts).toBe(1);
34
- const ch2 = stats.chapterBreakdown.find((c) => c.chapterNumber === 2);
35
- expect(ch2?.originalScore).toBe(0.3);
36
- expect(ch2?.finalScore).toBe(0.3);
37
- expect(ch2?.rewriteAttempts).toBe(0);
38
- });
39
- it("calculates score reduction average", () => {
40
- const history = [
41
- { chapterNumber: 1, timestamp: "2026-01-01T00:00:00Z", provider: "custom", score: 0.8, action: "detect", attempt: 0 },
42
- { chapterNumber: 1, timestamp: "2026-01-01T00:01:00Z", provider: "custom", score: 0.4, action: "rewrite", attempt: 1 },
43
- ];
44
- const stats = analyzeDetectionInsights(history);
45
- expect(stats.avgOriginalScore).toBe(0.8);
46
- expect(stats.avgFinalScore).toBe(0.4);
47
- expect(stats.avgScoreReduction).toBe(0.4);
48
- });
49
- });
50
- //# sourceMappingURL=detection-insights.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detection-insights.test.js","sourceRoot":"","sources":["../../src/__tests__/detection-insights.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=detector.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detector.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/detector.test.ts"],"names":[],"mappings":""}
@@ -1,71 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { detectAIContent } from "../agents/detector.js";
3
- const mockFetch = vi.fn();
4
- vi.stubGlobal("fetch", mockFetch);
5
- beforeEach(() => {
6
- mockFetch.mockReset();
7
- vi.stubEnv("TEST_API_KEY", "test-key-123");
8
- });
9
- const baseConfig = {
10
- provider: "custom",
11
- apiUrl: "https://api.detect.test/v1/detect",
12
- apiKeyEnv: "TEST_API_KEY",
13
- threshold: 0.5,
14
- enabled: true,
15
- autoRewrite: false,
16
- maxRetries: 3,
17
- };
18
- describe("detectAIContent", () => {
19
- it("throws when API key env is not set", async () => {
20
- vi.stubEnv("MISSING_KEY", "");
21
- delete process.env.MISSING_KEY;
22
- const config = { ...baseConfig, apiKeyEnv: "MISSING_KEY" };
23
- await expect(detectAIContent(config, "test")).rejects.toThrow("Detection API key not found");
24
- });
25
- it("calls custom API with correct headers and body", async () => {
26
- mockFetch.mockResolvedValueOnce({
27
- ok: true,
28
- json: async () => ({ score: 0.75 }),
29
- });
30
- const result = await detectAIContent(baseConfig, "test content");
31
- expect(mockFetch).toHaveBeenCalledOnce();
32
- const [url, opts] = mockFetch.mock.calls[0];
33
- expect(url).toBe("https://api.detect.test/v1/detect");
34
- expect(opts.headers.Authorization).toBe("Bearer test-key-123");
35
- expect(result.score).toBe(0.75);
36
- expect(result.provider).toBe("custom");
37
- });
38
- it("handles GPTZero provider format", async () => {
39
- mockFetch.mockResolvedValueOnce({
40
- ok: true,
41
- json: async () => ({
42
- documents: [{ completely_generated_prob: 0.92 }],
43
- }),
44
- });
45
- const gptzeroConfig = { ...baseConfig, provider: "gptzero" };
46
- const result = await detectAIContent(gptzeroConfig, "test content");
47
- expect(result.score).toBe(0.92);
48
- expect(result.provider).toBe("gptzero");
49
- });
50
- it("handles Originality provider format", async () => {
51
- mockFetch.mockResolvedValueOnce({
52
- ok: true,
53
- json: async () => ({
54
- score: { ai: 0.3, original: 0.7 },
55
- }),
56
- });
57
- const origConfig = { ...baseConfig, provider: "originality" };
58
- const result = await detectAIContent(origConfig, "test content");
59
- expect(result.score).toBe(0.3);
60
- expect(result.provider).toBe("originality");
61
- });
62
- it("throws on non-ok response", async () => {
63
- mockFetch.mockResolvedValueOnce({
64
- ok: false,
65
- status: 429,
66
- text: async () => "Rate limited",
67
- });
68
- await expect(detectAIContent(baseConfig, "test")).rejects.toThrow("Detection API failed: 429");
69
- });
70
- });
71
- //# sourceMappingURL=detector.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detector.test.js","sourceRoot":"","sources":["../../src/__tests__/detector.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=models.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/models.test.ts"],"names":[],"mappings":""}
@@ -1,328 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { BookConfigSchema, PlatformSchema, GenreSchema, BookStatusSchema, } from "../models/book.js";
3
- import { ChapterMetaSchema, ChapterStatusSchema } from "../models/chapter.js";
4
- import { ProjectConfigSchema, LLMConfigSchema, NotifyChannelSchema, } from "../models/project.js";
5
- // ---------------------------------------------------------------------------
6
- // BookConfig
7
- // ---------------------------------------------------------------------------
8
- describe("BookConfigSchema", () => {
9
- const validBook = {
10
- id: "test-book-1",
11
- title: "Test Novel",
12
- platform: "tomato",
13
- genre: "xuanhuan",
14
- status: "active",
15
- targetChapters: 200,
16
- chapterWordCount: 3000,
17
- createdAt: "2026-01-01T00:00:00Z",
18
- updatedAt: "2026-01-01T00:00:00Z",
19
- };
20
- it("accepts a valid BookConfig", () => {
21
- const result = BookConfigSchema.parse(validBook);
22
- expect(result.id).toBe("test-book-1");
23
- expect(result.title).toBe("Test Novel");
24
- expect(result.platform).toBe("tomato");
25
- });
26
- it("applies default targetChapters and chapterWordCount", () => {
27
- const minimal = {
28
- id: "b1",
29
- title: "B1",
30
- platform: "qidian",
31
- genre: "xianxia",
32
- status: "incubating",
33
- createdAt: "2026-01-01T00:00:00Z",
34
- updatedAt: "2026-01-01T00:00:00Z",
35
- };
36
- const result = BookConfigSchema.parse(minimal);
37
- expect(result.targetChapters).toBe(200);
38
- expect(result.chapterWordCount).toBe(3000);
39
- });
40
- it("rejects empty id", () => {
41
- expect(() => BookConfigSchema.parse({ ...validBook, id: "" })).toThrow();
42
- });
43
- it("rejects empty title", () => {
44
- expect(() => BookConfigSchema.parse({ ...validBook, title: "" })).toThrow();
45
- });
46
- it("rejects invalid platform", () => {
47
- expect(() => BookConfigSchema.parse({ ...validBook, platform: "kindle" })).toThrow();
48
- });
49
- it("rejects invalid genre", () => {
50
- expect(() => BookConfigSchema.parse({ ...validBook, genre: "romance" })).toThrow();
51
- });
52
- it("rejects invalid status", () => {
53
- expect(() => BookConfigSchema.parse({ ...validBook, status: "archived" })).toThrow();
54
- });
55
- it("rejects chapterWordCount below 1000", () => {
56
- expect(() => BookConfigSchema.parse({ ...validBook, chapterWordCount: 500 })).toThrow();
57
- });
58
- it("rejects targetChapters below 1", () => {
59
- expect(() => BookConfigSchema.parse({ ...validBook, targetChapters: 0 })).toThrow();
60
- });
61
- it("rejects non-integer targetChapters", () => {
62
- expect(() => BookConfigSchema.parse({ ...validBook, targetChapters: 10.5 })).toThrow();
63
- });
64
- it("rejects invalid datetime strings", () => {
65
- expect(() => BookConfigSchema.parse({ ...validBook, createdAt: "not-a-date" })).toThrow();
66
- });
67
- });
68
- describe("PlatformSchema", () => {
69
- it.each(["tomato", "feilu", "qidian", "other"])("accepts '%s'", (value) => {
70
- expect(PlatformSchema.parse(value)).toBe(value);
71
- });
72
- it("rejects unknown platform", () => {
73
- expect(() => PlatformSchema.parse("amazon")).toThrow();
74
- });
75
- });
76
- describe("GenreSchema", () => {
77
- const validGenres = [
78
- "xuanhuan",
79
- "xianxia",
80
- "urban",
81
- "game",
82
- "fanfic",
83
- "horror",
84
- "short",
85
- "other",
86
- ];
87
- it.each(validGenres)("accepts '%s'", (value) => {
88
- expect(GenreSchema.parse(value)).toBe(value);
89
- });
90
- it("rejects unknown genre", () => {
91
- expect(() => GenreSchema.parse("scifi")).toThrow();
92
- });
93
- });
94
- describe("BookStatusSchema", () => {
95
- const validStatuses = [
96
- "incubating",
97
- "outlining",
98
- "active",
99
- "paused",
100
- "completed",
101
- "dropped",
102
- ];
103
- it.each(validStatuses)("accepts '%s'", (value) => {
104
- expect(BookStatusSchema.parse(value)).toBe(value);
105
- });
106
- it("rejects unknown status", () => {
107
- expect(() => BookStatusSchema.parse("archived")).toThrow();
108
- });
109
- });
110
- // ---------------------------------------------------------------------------
111
- // ChapterMeta
112
- // ---------------------------------------------------------------------------
113
- describe("ChapterMetaSchema", () => {
114
- const validChapter = {
115
- number: 1,
116
- title: "Chapter One",
117
- status: "drafted",
118
- wordCount: 3000,
119
- createdAt: "2026-01-01T00:00:00Z",
120
- updatedAt: "2026-01-01T00:00:00Z",
121
- auditIssues: [],
122
- };
123
- it("accepts a valid ChapterMeta", () => {
124
- const result = ChapterMetaSchema.parse(validChapter);
125
- expect(result.number).toBe(1);
126
- expect(result.title).toBe("Chapter One");
127
- expect(result.status).toBe("drafted");
128
- });
129
- it("applies default wordCount of 0", () => {
130
- const minimal = {
131
- number: 5,
132
- title: "Ch5",
133
- status: "card-generated",
134
- createdAt: "2026-01-01T00:00:00Z",
135
- updatedAt: "2026-01-01T00:00:00Z",
136
- };
137
- const result = ChapterMetaSchema.parse(minimal);
138
- expect(result.wordCount).toBe(0);
139
- });
140
- it("applies default empty auditIssues", () => {
141
- const minimal = {
142
- number: 1,
143
- title: "Ch1",
144
- status: "drafted",
145
- createdAt: "2026-01-01T00:00:00Z",
146
- updatedAt: "2026-01-01T00:00:00Z",
147
- };
148
- const result = ChapterMetaSchema.parse(minimal);
149
- expect(result.auditIssues).toEqual([]);
150
- });
151
- it("accepts optional reviewNote", () => {
152
- const withNote = { ...validChapter, reviewNote: "Looks good" };
153
- const result = ChapterMetaSchema.parse(withNote);
154
- expect(result.reviewNote).toBe("Looks good");
155
- });
156
- it("omits reviewNote when not provided", () => {
157
- const result = ChapterMetaSchema.parse(validChapter);
158
- expect(result.reviewNote).toBeUndefined();
159
- });
160
- it("rejects chapter number < 1", () => {
161
- expect(() => ChapterMetaSchema.parse({ ...validChapter, number: 0 })).toThrow();
162
- });
163
- it("rejects negative chapter number", () => {
164
- expect(() => ChapterMetaSchema.parse({ ...validChapter, number: -1 })).toThrow();
165
- });
166
- it("rejects invalid status", () => {
167
- expect(() => ChapterMetaSchema.parse({ ...validChapter, status: "writing" })).toThrow();
168
- });
169
- it("rejects non-integer chapter number", () => {
170
- expect(() => ChapterMetaSchema.parse({ ...validChapter, number: 1.5 })).toThrow();
171
- });
172
- });
173
- describe("ChapterStatusSchema", () => {
174
- const allStatuses = [
175
- "card-generated",
176
- "drafting",
177
- "drafted",
178
- "auditing",
179
- "audit-passed",
180
- "audit-failed",
181
- "revising",
182
- "ready-for-review",
183
- "approved",
184
- "rejected",
185
- "published",
186
- ];
187
- it.each(allStatuses)("accepts '%s'", (value) => {
188
- expect(ChapterStatusSchema.parse(value)).toBe(value);
189
- });
190
- it("has exactly 11 valid statuses", () => {
191
- expect(ChapterStatusSchema.options).toHaveLength(11);
192
- });
193
- it("rejects unknown status", () => {
194
- expect(() => ChapterStatusSchema.parse("editing")).toThrow();
195
- });
196
- });
197
- // ---------------------------------------------------------------------------
198
- // ProjectConfig
199
- // ---------------------------------------------------------------------------
200
- describe("ProjectConfigSchema", () => {
201
- const validProject = {
202
- name: "my-project",
203
- version: "0.1.0",
204
- llm: {
205
- provider: "anthropic",
206
- baseUrl: "https://api.example.com/v1",
207
- apiKey: "sk-test-key",
208
- model: "claude-sonnet-4-5-20250514",
209
- },
210
- notify: [],
211
- };
212
- it("accepts a valid ProjectConfig", () => {
213
- const result = ProjectConfigSchema.parse(validProject);
214
- expect(result.name).toBe("my-project");
215
- expect(result.version).toBe("0.1.0");
216
- });
217
- it("applies default daemon config", () => {
218
- const result = ProjectConfigSchema.parse(validProject);
219
- expect(result.daemon.maxConcurrentBooks).toBe(3);
220
- expect(result.daemon.schedule.radarCron).toBe("0 9 * * *");
221
- expect(result.daemon.schedule.writeCron).toBe("0 14 * * *");
222
- expect(result.daemon.schedule.auditCron).toBe("0 17 * * *");
223
- });
224
- it("applies default empty notify array", () => {
225
- const withoutNotify = {
226
- name: "p1",
227
- version: "0.1.0",
228
- llm: validProject.llm,
229
- };
230
- const result = ProjectConfigSchema.parse(withoutNotify);
231
- expect(result.notify).toEqual([]);
232
- });
233
- it("rejects wrong version", () => {
234
- expect(() => ProjectConfigSchema.parse({ ...validProject, version: "1.0.0" })).toThrow();
235
- });
236
- it("rejects empty project name", () => {
237
- expect(() => ProjectConfigSchema.parse({ ...validProject, name: "" })).toThrow();
238
- });
239
- it("rejects missing LLM config", () => {
240
- expect(() => ProjectConfigSchema.parse({ name: "p", version: "0.1.0" })).toThrow();
241
- });
242
- });
243
- describe("LLMConfigSchema", () => {
244
- it("accepts valid LLM config", () => {
245
- const result = LLMConfigSchema.parse({
246
- provider: "openai",
247
- baseUrl: "https://api.openai.com/v1",
248
- apiKey: "sk-xxx",
249
- model: "gpt-4o",
250
- });
251
- expect(result.provider).toBe("openai");
252
- });
253
- it("rejects invalid provider", () => {
254
- expect(() => LLMConfigSchema.parse({
255
- provider: "mistral",
256
- baseUrl: "https://api.example.com",
257
- apiKey: "key",
258
- model: "m",
259
- })).toThrow();
260
- });
261
- it("rejects invalid URL", () => {
262
- expect(() => LLMConfigSchema.parse({
263
- provider: "custom",
264
- baseUrl: "not-a-url",
265
- apiKey: "key",
266
- model: "m",
267
- })).toThrow();
268
- });
269
- it("defaults apiKey to empty string when omitted", () => {
270
- const result = LLMConfigSchema.parse({
271
- provider: "anthropic",
272
- baseUrl: "https://api.example.com",
273
- model: "m",
274
- });
275
- expect(result.apiKey).toBe("");
276
- });
277
- it("rejects empty model", () => {
278
- expect(() => LLMConfigSchema.parse({
279
- provider: "anthropic",
280
- baseUrl: "https://api.example.com",
281
- apiKey: "key",
282
- model: "",
283
- })).toThrow();
284
- });
285
- });
286
- describe("NotifyChannelSchema", () => {
287
- it("accepts telegram channel", () => {
288
- const result = NotifyChannelSchema.parse({
289
- type: "telegram",
290
- botToken: "123:ABC",
291
- chatId: "-100123",
292
- });
293
- expect(result.type).toBe("telegram");
294
- });
295
- it("accepts feishu channel", () => {
296
- const result = NotifyChannelSchema.parse({
297
- type: "feishu",
298
- webhookUrl: "https://open.feishu.cn/webhook/xxx",
299
- });
300
- expect(result.type).toBe("feishu");
301
- });
302
- it("accepts wechat-work channel", () => {
303
- const result = NotifyChannelSchema.parse({
304
- type: "wechat-work",
305
- webhookUrl: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx",
306
- });
307
- expect(result.type).toBe("wechat-work");
308
- });
309
- it("rejects telegram with missing botToken", () => {
310
- expect(() => NotifyChannelSchema.parse({
311
- type: "telegram",
312
- chatId: "-100",
313
- })).toThrow();
314
- });
315
- it("rejects feishu with invalid URL", () => {
316
- expect(() => NotifyChannelSchema.parse({
317
- type: "feishu",
318
- webhookUrl: "not-a-url",
319
- })).toThrow();
320
- });
321
- it("rejects unknown channel type", () => {
322
- expect(() => NotifyChannelSchema.parse({
323
- type: "slack",
324
- webhookUrl: "https://hooks.slack.com/xxx",
325
- })).toThrow();
326
- });
327
- });
328
- //# sourceMappingURL=models.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.test.js","sourceRoot":"","sources":["../../src/__tests__/models.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=state-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/state-manager.test.ts"],"names":[],"mappings":""}