@actalk/inkos 1.3.1 → 1.3.2

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.
@@ -1,3 +1,8 @@
1
1
  import { Command } from "commander";
2
+ export declare function buildDoctorModelCandidates(preferredModel: string | undefined, discoveredModels: Array<{
3
+ id: string;
4
+ name: string;
5
+ }>): string[];
6
+ export declare function resolveDoctorModelsBaseUrl(service: string | undefined, baseUrl: string, resolveServiceModelsBaseUrl: (service: string) => string | undefined): string;
2
7
  export declare const doctorCommand: Command;
3
8
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,aAAa,SAyOtB,CAAC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,gBAAgB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,MAAM,EAAE,CAoBV;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,MAAM,EACf,2BAA2B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACnE,MAAM,CAKR;AAoBD,eAAO,MAAM,aAAa,SAwRtB,CAAC"}
@@ -3,6 +3,74 @@ import { readFile } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { findProjectRoot, log, GLOBAL_ENV_PATH } from "../utils.js";
5
5
  import { ensureNodeRuntimePinFiles, evaluateSqliteMemorySupport, inspectNodeRuntimePinFiles, } from "../runtime-requirements.js";
6
+ function buildDoctorProbePlans(preferredApiFormat, preferredStream) {
7
+ const plans = [];
8
+ const seen = new Set();
9
+ const push = (apiFormat, stream) => {
10
+ const key = `${apiFormat}:${stream ? "1" : "0"}`;
11
+ if (seen.has(key))
12
+ return;
13
+ seen.add(key);
14
+ plans.push({ apiFormat, stream });
15
+ };
16
+ if (preferredApiFormat) {
17
+ push(preferredApiFormat, preferredStream ?? false);
18
+ push(preferredApiFormat, !(preferredStream ?? false));
19
+ }
20
+ const alternate = preferredApiFormat === "responses" ? "chat" : "responses";
21
+ push(alternate, false);
22
+ push(alternate, true);
23
+ push("chat", false);
24
+ push("chat", true);
25
+ push("responses", false);
26
+ push("responses", true);
27
+ return plans;
28
+ }
29
+ export function buildDoctorModelCandidates(preferredModel, discoveredModels) {
30
+ const seen = new Set();
31
+ const candidates = [];
32
+ const push = (value) => {
33
+ if (!value || value.trim().length === 0)
34
+ return;
35
+ const model = value.trim();
36
+ if (seen.has(model))
37
+ return;
38
+ seen.add(model);
39
+ candidates.push(model);
40
+ };
41
+ push(preferredModel);
42
+ for (const model of discoveredModels)
43
+ push(model.id);
44
+ push("gpt-5.4");
45
+ push("gpt-4o");
46
+ push("claude-sonnet-4-6");
47
+ push("MiniMax-M2.7");
48
+ push("kimi-k2.5");
49
+ push("gemini-2.5-flash");
50
+ return candidates;
51
+ }
52
+ export function resolveDoctorModelsBaseUrl(service, baseUrl, resolveServiceModelsBaseUrl) {
53
+ if (!service || service.length === 0) {
54
+ return baseUrl;
55
+ }
56
+ return resolveServiceModelsBaseUrl(service) ?? baseUrl;
57
+ }
58
+ async function fetchDoctorModels(modelsBaseUrl, apiKey) {
59
+ const modelsUrl = modelsBaseUrl.replace(/\/$/, "") + "/models";
60
+ try {
61
+ const res = await fetch(modelsUrl, {
62
+ headers: { Authorization: `Bearer ${apiKey}` },
63
+ signal: AbortSignal.timeout(10_000),
64
+ });
65
+ if (!res.ok)
66
+ return [];
67
+ const json = await res.json();
68
+ return (json.data ?? []).map((model) => ({ id: model.id, name: model.id }));
69
+ }
70
+ catch {
71
+ return [];
72
+ }
73
+ }
6
74
  export const doctorCommand = new Command("doctor")
7
75
  .description("Check environment and project health")
8
76
  .option("--repair-node-runtime", "Write .nvmrc and .node-version pinned to Node 22 for this project")
@@ -142,7 +210,7 @@ export const doctorCommand = new Command("doctor")
142
210
  }
143
211
  // 6. API connectivity test
144
212
  try {
145
- const { createLLMClient, chatCompletion, LLMConfigSchema, isApiKeyOptionalForEndpoint } = await import("@actalk/inkos-core");
213
+ const { createLLMClient, chatCompletion, LLMConfigSchema, isApiKeyOptionalForEndpoint, resolveServiceModelsBaseUrl } = await import("@actalk/inkos-core");
146
214
  const { loadConfig } = await import("../utils.js");
147
215
  let llmConfig;
148
216
  try {
@@ -180,16 +248,56 @@ export const doctorCommand = new Command("doctor")
180
248
  ok: true,
181
249
  detail: `provider=${llmConfig.provider} model=${llmConfig.model} stream=${llmConfig.stream ?? true} baseUrl=${llmConfig.baseUrl}`,
182
250
  });
183
- const client = createLLMClient(llmConfig);
184
251
  log("\n [..] Testing API connectivity...");
185
- const response = await chatCompletion(client, llmConfig.model, [
186
- { role: "user", content: "Say OK" },
187
- ], { maxTokens: 16 });
252
+ let connected = false;
253
+ let detectedDetail = "";
254
+ let lastError = "Unknown error";
255
+ const modelsBaseUrl = resolveDoctorModelsBaseUrl(typeof llmConfig.service === "string" ? llmConfig.service : undefined, llmConfig.baseUrl, resolveServiceModelsBaseUrl);
256
+ const discoveredModels = (llmConfig.apiKey && modelsBaseUrl)
257
+ ? await fetchDoctorModels(modelsBaseUrl, llmConfig.apiKey)
258
+ : [];
259
+ const modelCandidates = (llmConfig.provider === "openai" || discoveredModels.length > 0)
260
+ ? buildDoctorModelCandidates(llmConfig.model, discoveredModels)
261
+ : [llmConfig.model];
262
+ const plans = llmConfig.provider === "openai"
263
+ ? buildDoctorProbePlans(llmConfig.apiFormat, llmConfig.stream)
264
+ : [{ apiFormat: (llmConfig.apiFormat ?? "chat"), stream: llmConfig.stream ?? true }];
265
+ for (const model of modelCandidates) {
266
+ for (const plan of plans) {
267
+ try {
268
+ const client = createLLMClient({
269
+ ...llmConfig,
270
+ model,
271
+ apiFormat: plan.apiFormat,
272
+ stream: plan.stream,
273
+ });
274
+ const response = await chatCompletion(client, model, [
275
+ { role: "user", content: "Say OK" },
276
+ ], { maxTokens: 16 });
277
+ connected = true;
278
+ detectedDetail = `OK (model: ${model}, apiFormat=${plan.apiFormat}, stream=${plan.stream}, tokens: ${response.usage.totalTokens})`;
279
+ break;
280
+ }
281
+ catch (error) {
282
+ lastError = error instanceof Error ? error.message : String(error);
283
+ }
284
+ }
285
+ if (connected) {
286
+ break;
287
+ }
288
+ }
188
289
  checks.push({
189
290
  name: "API Connectivity",
190
- ok: true,
191
- detail: `OK (model: ${llmConfig.model}, tokens: ${response.usage.totalTokens})`,
291
+ ok: connected,
292
+ detail: connected ? detectedDetail : lastError.split("\n")[0],
192
293
  });
294
+ if (!connected && llmConfig.provider === "openai") {
295
+ checks.push({
296
+ name: " Hint",
297
+ ok: false,
298
+ detail: "当前已自动尝试 chat/responses 与流式开关组合;如果仍失败,问题更可能在模型名、baseUrl 路径或服务商兼容性本身。",
299
+ });
300
+ }
193
301
  }
194
302
  }
195
303
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.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;AAcpC,eAAO,MAAM,WAAW,SAuIpB,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,SAwCpB,CAAC"}
@@ -1,103 +1,20 @@
1
1
  import { Command } from "commander";
2
- import { access, readFile, writeFile, mkdir } from "node:fs/promises";
3
- import { join, basename, resolve } from "node:path";
4
- import { log, logError, GLOBAL_ENV_PATH } from "../utils.js";
5
- async function hasGlobalConfig() {
6
- try {
7
- const content = await readFile(GLOBAL_ENV_PATH, "utf-8");
8
- return content.includes("INKOS_LLM_API_KEY=") && !content.includes("your-api-key-here");
9
- }
10
- catch {
11
- return false;
12
- }
13
- }
2
+ import { mkdir } from "node:fs/promises";
3
+ import { resolve } from "node:path";
4
+ import { log, logError } from "../utils.js";
5
+ import { initializeProjectDirectory } from "../project-bootstrap.js";
14
6
  export const initCommand = new Command("init")
15
7
  .description("Initialize an InkOS project (current directory by default)")
16
8
  .argument("[name]", "Project name (creates subdirectory). Omit to init current directory.")
17
9
  .option("--lang <language>", "Default writing language: zh (Chinese) or en (English)", "zh")
18
10
  .action(async (name, opts) => {
19
11
  const projectDir = name ? resolve(process.cwd(), name) : process.cwd();
20
- const projectName = basename(projectDir);
21
12
  try {
22
13
  await mkdir(projectDir, { recursive: true });
23
- // Check if inkos.json already exists
24
- const configPath = join(projectDir, "inkos.json");
25
- try {
26
- await access(configPath);
27
- throw new Error(`inkos.json already exists in ${projectDir}. Use a different directory or delete the existing project.`);
28
- }
29
- catch (e) {
30
- if (e instanceof Error && e.message.includes("already exists"))
31
- throw e;
32
- // File doesn't exist, good
33
- }
34
- await mkdir(join(projectDir, "books"), { recursive: true });
35
- await mkdir(join(projectDir, "radar"), { recursive: true });
36
- const config = {
37
- name: projectName,
38
- version: "0.1.0",
39
- language: opts.lang ?? "zh",
40
- llm: {
41
- provider: process.env.INKOS_LLM_PROVIDER ?? "openai",
42
- baseUrl: process.env.INKOS_LLM_BASE_URL ?? "",
43
- model: process.env.INKOS_LLM_MODEL ?? "",
44
- },
45
- notify: [],
46
- daemon: {
47
- schedule: {
48
- radarCron: "0 */6 * * *",
49
- writeCron: "*/15 * * * *",
50
- },
51
- maxConcurrentBooks: 3,
52
- },
53
- };
54
- await writeFile(join(projectDir, "inkos.json"), JSON.stringify(config, null, 2), "utf-8");
55
- await Promise.all([
56
- writeFile(join(projectDir, ".nvmrc"), "22\n", "utf-8"),
57
- writeFile(join(projectDir, ".node-version"), "22\n", "utf-8"),
58
- ]);
59
- const global = await hasGlobalConfig();
60
- if (global) {
61
- await writeFile(join(projectDir, ".env"), [
62
- "# Project-level LLM overrides (optional)",
63
- "# Global config at ~/.inkos/.env will be used by default.",
64
- "# Uncomment below to override for this project only:",
65
- "# INKOS_LLM_PROVIDER=openai",
66
- "# INKOS_LLM_BASE_URL=",
67
- "# INKOS_LLM_API_KEY=",
68
- "# INKOS_LLM_MODEL=",
69
- "",
70
- "# Web search (optional):",
71
- "# TAVILY_API_KEY=tvly-xxxxx",
72
- ].join("\n"), "utf-8");
73
- }
74
- else {
75
- await writeFile(join(projectDir, ".env"), [
76
- "# LLM Configuration",
77
- "# Tip: Run 'inkos config set-global' to set once for all projects.",
78
- "# Provider: openai (OpenAI / compatible proxy), anthropic (Anthropic native)",
79
- "INKOS_LLM_PROVIDER=openai",
80
- "INKOS_LLM_BASE_URL=",
81
- "INKOS_LLM_API_KEY=",
82
- "INKOS_LLM_MODEL=",
83
- "",
84
- "# Optional parameters (defaults shown):",
85
- "# INKOS_LLM_TEMPERATURE=0.7",
86
- "# INKOS_LLM_MAX_TOKENS=8192",
87
- "# INKOS_LLM_THINKING_BUDGET=0 # Anthropic extended thinking budget",
88
- "# INKOS_LLM_API_FORMAT=chat # chat (default) or responses (OpenAI Responses API)",
89
- "",
90
- "# Web search (optional, for auditor era-research):",
91
- "# TAVILY_API_KEY=tvly-xxxxx # Free at tavily.com (1000 searches/month)",
92
- "",
93
- "# Anthropic example:",
94
- "# INKOS_LLM_PROVIDER=anthropic",
95
- "# INKOS_LLM_PROVIDER=anthropic",
96
- "# INKOS_LLM_BASE_URL=",
97
- "# INKOS_LLM_MODEL=",
98
- ].join("\n"), "utf-8");
99
- }
100
- await writeFile(join(projectDir, ".gitignore"), [".env", "node_modules/", ".DS_Store"].join("\n"), "utf-8");
14
+ await initializeProjectDirectory(projectDir, {
15
+ language: (opts.lang === "en" ? "en" : "zh"),
16
+ overwriteSupportFiles: true,
17
+ });
101
18
  log(`Project initialized at ${projectDir}`);
102
19
  log("");
103
20
  const isEnglish = (opts.lang ?? "zh") === "en";
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
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"}
@@ -42,7 +42,7 @@ export function createInteractCommand(hooks = {}) {
42
42
  ? await hooks.createTools(projectRoot)
43
43
  : hooks.runInteraction
44
44
  ? {}
45
- : await createInteractionTools(projectRoot);
45
+ : await createInteractionTools(projectRoot, undefined, { requireApiKey: false });
46
46
  const runInteraction = hooks.runInteraction ?? processProjectInteractionInput;
47
47
  const result = await runInteraction({
48
48
  projectRoot,
@@ -1 +1 @@
1
- {"version":3,"file":"interact.js","sourceRoot":"","sources":["../../src/commands/interact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interact.js","sourceRoot":"","sources":["../../src/commands/interact.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,11 @@ export interface BrowserLaunchSpec {
11
11
  export interface StudioCommandHooks {
12
12
  readonly launchStudio?: (projectRoot: string, port: string) => Promise<void> | void;
13
13
  }
14
+ export declare function toNodeImportSpecifier(path: string): string;
14
15
  export declare function resolveBrowserLaunch(platform: NodeJS.Platform, url: string): BrowserLaunchSpec;
15
16
  export declare function resolveStudioLaunch(root: string): Promise<StudioLaunchSpec | null>;
16
17
  export declare function launchStudioWorkbench(root: string, port: string): Promise<void>;
18
+ export declare function launchStudioEntry(root: string, port: string, hooks?: StudioCommandHooks): Promise<void>;
17
19
  export declare function createStudioCommand(hooks?: StudioCommandHooks): Command;
18
20
  export declare const studioCommand: Command;
19
21
  //# sourceMappingURL=studio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../src/commands/studio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrF;AAgBD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,GACV,iBAAiB,CAQnB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAqDxF;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CrF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAa3E;AAED,eAAO,MAAM,aAAa,SAAwB,CAAC"}
1
+ {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../src/commands/studio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrF;AAqBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,GACV,iBAAiB,CAQnB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAqDxF;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CrF;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,kBAAuB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAS3E;AAED,eAAO,MAAM,aAAa,SAAwB,CAAC"}
@@ -4,6 +4,11 @@ import { spawn } from "node:child_process";
4
4
  import { dirname, join } from "node:path";
5
5
  import { access } from "node:fs/promises";
6
6
  import { fileURLToPath } from "node:url";
7
+ import { ensureProjectDirectoryInitialized } from "../project-bootstrap.js";
8
+ async function prepareStudioRoot(root) {
9
+ const initialized = await ensureProjectDirectoryInitialized(root, { language: "zh" });
10
+ return { root, initialized };
11
+ }
7
12
  async function firstAccessiblePath(paths) {
8
13
  for (const path of paths) {
9
14
  try {
@@ -17,6 +22,12 @@ async function firstAccessiblePath(paths) {
17
22
  return undefined;
18
23
  }
19
24
  const cliPackageRoot = join(dirname(fileURLToPath(import.meta.url)), "..", "..");
25
+ export function toNodeImportSpecifier(path) {
26
+ if (/^[A-Za-z]:[\\/]/.test(path)) {
27
+ return `file:///${path.replace(/\\/g, "/")}`;
28
+ }
29
+ return path;
30
+ }
20
31
  export function resolveBrowserLaunch(platform, url) {
21
32
  if (platform === "darwin") {
22
33
  return { command: "open", args: [url] };
@@ -41,7 +52,7 @@ export async function resolveStudioLaunch(root) {
41
52
  return {
42
53
  studioEntry: sourceEntry,
43
54
  command: "node",
44
- args: ["--import", localTsxLoader, sourceEntry, root],
55
+ args: ["--import", toNodeImportSpecifier(localTsxLoader), sourceEntry, root],
45
56
  };
46
57
  }
47
58
  const localTsx = await firstAccessiblePath([
@@ -78,7 +89,10 @@ export async function resolveStudioLaunch(root) {
78
89
  return null;
79
90
  }
80
91
  export async function launchStudioWorkbench(root, port) {
81
- const url = `http://localhost:${port}`;
92
+ const prepared = await prepareStudioRoot(root);
93
+ const url = prepared.initialized
94
+ ? `http://localhost:${port}#/services`
95
+ : `http://localhost:${port}`;
82
96
  const launch = await resolveStudioLaunch(root);
83
97
  if (!launch) {
84
98
  logError("InkOS Studio not found. If you cloned the repo, run:\n" +
@@ -112,6 +126,17 @@ export async function launchStudioWorkbench(root, port) {
112
126
  process.exit(code ?? 0);
113
127
  });
114
128
  }
129
+ export async function launchStudioEntry(root, port, hooks = {}) {
130
+ const prepared = await prepareStudioRoot(root);
131
+ if (prepared.initialized) {
132
+ log(`No inkos.json found in ${root}. Initialized a minimal InkOS project for Studio.`);
133
+ }
134
+ if (hooks.launchStudio) {
135
+ await hooks.launchStudio(prepared.root, port);
136
+ return;
137
+ }
138
+ await launchStudioWorkbench(prepared.root, port);
139
+ }
115
140
  export function createStudioCommand(hooks = {}) {
116
141
  return new Command("studio")
117
142
  .description("Start InkOS Studio web workbench")
@@ -119,11 +144,7 @@ export function createStudioCommand(hooks = {}) {
119
144
  .action(async (opts) => {
120
145
  const root = findProjectRoot();
121
146
  const port = opts.port;
122
- if (hooks.launchStudio) {
123
- await hooks.launchStudio(root, port);
124
- return;
125
- }
126
- await launchStudioWorkbench(root, port);
147
+ await launchStudioEntry(root, port, hooks);
127
148
  });
128
149
  }
129
150
  export const studioCommand = createStudioCommand();
@@ -1 +1 @@
1
- {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../src/commands/studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../src/commands/studio.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,OAAO,EAAyB,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAO1F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpF,QAAQ,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACjE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;CACnE;AAED,wBAAgB,aAAa,CAAC,KAAK,GAAE,YAAiB,GAAG,OAAO,CAiD/D;AAED,wBAAsB,UAAU,CAC9B,IAAI,GAAE,MAAM,EAAiB,EAC7B,KAAK,GAAE,YAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAGf"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,OAAO,EAAyB,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAO1F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpF,QAAQ,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACjE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;CACnE;AAED,wBAAgB,aAAa,CAAC,KAAK,GAAE,YAAiB,GAAG,OAAO,CA6C/D;AAED,wBAAsB,UAAU,CAC9B,IAAI,GAAE,MAAM,EAAiB,EAC7B,KAAK,GAAE,YAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAGf"}
package/dist/program.js CHANGED
@@ -24,7 +24,7 @@ import { analyticsCommand } from "./commands/analytics.js";
24
24
  import { evalCommand } from "./commands/eval.js";
25
25
  import { importCommand } from "./commands/import.js";
26
26
  import { fanficCommand } from "./commands/fanfic.js";
27
- import { createStudioCommand, launchStudioWorkbench } from "./commands/studio.js";
27
+ import { createStudioCommand, launchStudioEntry } from "./commands/studio.js";
28
28
  import { consolidateCommand } from "./commands/consolidate.js";
29
29
  import { createInteractCommand } from "./commands/interact.js";
30
30
  import { createTuiCommand } from "./commands/tui.js";
@@ -37,11 +37,7 @@ export function createProgram(hooks = {}) {
37
37
  .description("InkOS — Multi-agent novel production system")
38
38
  .version(version)
39
39
  .action(async () => {
40
- if (hooks.launchStudio) {
41
- await hooks.launchStudio(process.cwd(), "4567");
42
- return;
43
- }
44
- await launchStudioWorkbench(process.cwd(), "4567");
40
+ await launchStudioEntry(process.cwd(), "4567", { launchStudio: hooks.launchStudio });
45
41
  });
46
42
  program.addCommand(initCommand);
47
43
  program.addCommand(configCommand);
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface ProjectBootstrapOptions {
2
+ readonly language?: "zh" | "en";
3
+ readonly overwriteSupportFiles?: boolean;
4
+ }
5
+ export declare function initializeProjectDirectory(projectDir: string, options?: ProjectBootstrapOptions): Promise<void>;
6
+ export declare function ensureProjectDirectoryInitialized(projectDir: string, options?: Omit<ProjectBootstrapOptions, "overwriteSupportFiles">): Promise<boolean>;
7
+ //# sourceMappingURL=project-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-bootstrap.d.ts","sourceRoot":"","sources":["../src/project-bootstrap.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAwFD,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,uBAAuB,CAAM,GACnE,OAAO,CAAC,OAAO,CAAC,CAWlB"}
@@ -0,0 +1,116 @@
1
+ import { access, mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { basename, join } from "node:path";
3
+ import { GLOBAL_ENV_PATH } from "./utils.js";
4
+ async function hasGlobalConfig() {
5
+ try {
6
+ const content = await readFile(GLOBAL_ENV_PATH, "utf-8");
7
+ return content.includes("INKOS_LLM_API_KEY=") && !content.includes("your-api-key-here");
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ }
13
+ async function exists(path) {
14
+ try {
15
+ await access(path);
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ async function writeMaybe(path, content, overwrite) {
23
+ if (!overwrite && await exists(path)) {
24
+ return;
25
+ }
26
+ await writeFile(path, content, "utf-8");
27
+ }
28
+ function buildProjectConfig(projectDir, language) {
29
+ return {
30
+ name: basename(projectDir),
31
+ version: "0.1.0",
32
+ language,
33
+ llm: {
34
+ provider: "openai",
35
+ service: "custom",
36
+ configSource: "studio",
37
+ baseUrl: "",
38
+ model: "",
39
+ apiFormat: "chat",
40
+ stream: true,
41
+ },
42
+ notify: [],
43
+ inputGovernanceMode: "v2",
44
+ daemon: {
45
+ schedule: {
46
+ radarCron: "0 */6 * * *",
47
+ writeCron: "*/15 * * * *",
48
+ },
49
+ maxConcurrentBooks: 3,
50
+ },
51
+ };
52
+ }
53
+ function buildProjectEnvTemplate(globalConfigured) {
54
+ if (globalConfigured) {
55
+ return [
56
+ "# Project-level LLM overrides (optional)",
57
+ "# Global config at ~/.inkos/.env will be used by default.",
58
+ "# Switch Studio to '使用 Studio 配置' if you want per-project service settings.",
59
+ "# Uncomment below to override for this project only:",
60
+ "# INKOS_LLM_PROVIDER=openai",
61
+ "# INKOS_LLM_BASE_URL=",
62
+ "# INKOS_LLM_API_KEY=",
63
+ "# INKOS_LLM_MODEL=",
64
+ "",
65
+ "# Web search (optional):",
66
+ "# TAVILY_API_KEY=tvly-xxxxx",
67
+ "",
68
+ ].join("\n");
69
+ }
70
+ return [
71
+ "# Optional project-level LLM overrides",
72
+ "# Studio can manage provider / model / key without editing this file.",
73
+ "# Uncomment only if you want this directory to force env-based config:",
74
+ "# INKOS_LLM_PROVIDER=openai",
75
+ "# INKOS_LLM_BASE_URL=",
76
+ "# INKOS_LLM_API_KEY=",
77
+ "# INKOS_LLM_MODEL=",
78
+ "# INKOS_LLM_API_FORMAT=chat",
79
+ "# INKOS_LLM_STREAM=true",
80
+ "",
81
+ "# Web search (optional):",
82
+ "# TAVILY_API_KEY=tvly-xxxxx",
83
+ "",
84
+ ].join("\n");
85
+ }
86
+ export async function initializeProjectDirectory(projectDir, options = {}) {
87
+ const language = options.language ?? "zh";
88
+ const overwriteSupportFiles = options.overwriteSupportFiles ?? true;
89
+ const configPath = join(projectDir, "inkos.json");
90
+ if (await exists(configPath)) {
91
+ throw new Error(`inkos.json already exists in ${projectDir}. Use a different directory or delete the existing project.`);
92
+ }
93
+ await mkdir(projectDir, { recursive: true });
94
+ await mkdir(join(projectDir, "books"), { recursive: true });
95
+ await mkdir(join(projectDir, "radar"), { recursive: true });
96
+ await writeFile(configPath, JSON.stringify(buildProjectConfig(projectDir, language), null, 2), "utf-8");
97
+ const globalConfigured = await hasGlobalConfig();
98
+ await Promise.all([
99
+ writeMaybe(join(projectDir, ".env"), buildProjectEnvTemplate(globalConfigured), overwriteSupportFiles),
100
+ writeMaybe(join(projectDir, ".gitignore"), [".env", "node_modules/", ".DS_Store"].join("\n"), overwriteSupportFiles),
101
+ writeMaybe(join(projectDir, ".nvmrc"), "22\n", overwriteSupportFiles),
102
+ writeMaybe(join(projectDir, ".node-version"), "22\n", overwriteSupportFiles),
103
+ ]);
104
+ }
105
+ export async function ensureProjectDirectoryInitialized(projectDir, options = {}) {
106
+ const configPath = join(projectDir, "inkos.json");
107
+ if (await exists(configPath)) {
108
+ return false;
109
+ }
110
+ await initializeProjectDirectory(projectDir, {
111
+ language: options.language,
112
+ overwriteSupportFiles: false,
113
+ });
114
+ return true;
115
+ }
116
+ //# sourceMappingURL=project-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-bootstrap.js","sourceRoot":"","sources":["../src/project-bootstrap.ts"],"names":[],"mappings":"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"}
package/dist/tui/app.d.ts CHANGED
@@ -21,9 +21,9 @@ export declare function processTuiInput(projectRoot: string, input: string, tool
21
21
  chapterNumber?: number | undefined;
22
22
  }[];
23
23
  messages: {
24
+ role: "system" | "user" | "assistant";
24
25
  content: string;
25
26
  timestamp: number;
26
- role: "system" | "user" | "assistant";
27
27
  thinking?: string | undefined;
28
28
  toolExecutions?: {
29
29
  status: "completed" | "error" | "running" | "processing";
@@ -12,5 +12,7 @@ type CliInteractionToolHooks = {
12
12
  export declare function createCliInteractionToolsFromDeps(pipeline: CliPipelineLike, state: CliStateLike, hooks?: CliInteractionToolHooks): InteractionRuntimeTools;
13
13
  export declare function createInteractionToolsFromDepsCompat(_projectRoot: string, pipeline: CliPipelineLike, state: CliStateLike, hooks?: CliInteractionToolHooks): InteractionRuntimeTools;
14
14
  export { createInteractionToolsFromDepsCompat as createInteractionToolsFromDeps };
15
- export declare function createInteractionTools(projectRoot: string, hooks?: CliInteractionToolHooks): Promise<InteractionRuntimeTools>;
15
+ export declare function createInteractionTools(projectRoot: string, hooks?: CliInteractionToolHooks, options?: {
16
+ readonly requireApiKey?: boolean;
17
+ }): Promise<InteractionRuntimeTools>;
16
18
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tui/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EAEZ,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAG5B,KAAK,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC;AAChF,KAAK,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,wBAAwB,GAAG,SAAS,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,WAAW,CAAC,CAAC;AACxJ,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM;QACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,uBAAuB,GAC9B,uBAAuB,CAEzB;AAGD,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,uBAAuB,GAC9B,uBAAuB,CAEzB;AAED,OAAO,EAAE,oCAAoC,IAAI,8BAA8B,EAAE,CAAC;AAElF,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC,CAKlC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tui/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EAEZ,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAG5B,KAAK,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC;AAChF,KAAK,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,wBAAwB,GAAG,SAAS,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,WAAW,CAAC,CAAC;AACxJ,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM;QACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,uBAAuB,GAC9B,uBAAuB,CAEzB;AAGD,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,YAAY,EACnB,KAAK,CAAC,EAAE,uBAAuB,GAC9B,uBAAuB,CAEzB;AAED,OAAO,EAAE,oCAAoC,IAAI,8BAA8B,EAAE,CAAC;AAElF,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,OAAO,CAAC,uBAAuB,CAAC,CAKlC"}
package/dist/tui/tools.js CHANGED
@@ -8,8 +8,8 @@ export function createInteractionToolsFromDepsCompat(_projectRoot, pipeline, sta
8
8
  return createInteractionToolsFromDeps(pipeline, state, hooks);
9
9
  }
10
10
  export { createInteractionToolsFromDepsCompat as createInteractionToolsFromDeps };
11
- export async function createInteractionTools(projectRoot, hooks) {
12
- const config = await loadConfig({ projectRoot });
11
+ export async function createInteractionTools(projectRoot, hooks, options) {
12
+ const config = await loadConfig({ projectRoot, requireApiKey: options?.requireApiKey });
13
13
  const pipeline = new PipelineRunner(buildPipelineConfig(config, projectRoot));
14
14
  const state = new StateManager(projectRoot);
15
15
  return createInteractionToolsFromDeps(pipeline, state, hooks);
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tui/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,8BAA8B,GAE/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAa9D,MAAM,UAAU,iCAAiC,CAC/C,QAAyB,EACzB,KAAmB,EACnB,KAA+B;IAE/B,OAAO,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,oCAAoC,CAClD,YAAoB,EACpB,QAAyB,EACzB,KAAmB,EACnB,KAA+B;IAE/B,OAAO,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,OAAO,EAAE,oCAAoC,IAAI,8BAA8B,EAAE,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,KAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tui/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,8BAA8B,GAE/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAa9D,MAAM,UAAU,iCAAiC,CAC/C,QAAyB,EACzB,KAAmB,EACnB,KAA+B;IAE/B,OAAO,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,oCAAoC,CAClD,YAAoB,EACpB,QAAyB,EACzB,KAAmB,EACnB,KAA+B;IAE/B,OAAO,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,OAAO,EAAE,oCAAoC,IAAI,8BAA8B,EAAE,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,KAA+B,EAC/B,OAA8C;IAE9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,8BAA8B,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actalk/inkos",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "Autonomous AI novel writing CLI agent — 10-agent pipeline that writes, audits, and revises novels with continuity tracking. Supports LitRPG, Progression Fantasy, Isekai, Romantasy, Sci-Fi and more.",
5
5
  "keywords": [
6
6
  "ai-novel-writing",
@@ -34,8 +34,8 @@
34
34
  "directory": "packages/cli"
35
35
  },
36
36
  "dependencies": {
37
- "@actalk/inkos-core": "1.3.1",
38
- "@actalk/inkos-studio": "1.3.1",
37
+ "@actalk/inkos-core": "1.3.2",
38
+ "@actalk/inkos-studio": "1.3.2",
39
39
  "commander": "^13.0.0",
40
40
  "dotenv": "^16.4.0",
41
41
  "epub-gen-memory": "^1.0.10",