@actalk/inkos-core 0.4.9 → 0.5.0

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 (88) hide show
  1. package/dist/agents/architect.d.ts +2 -1
  2. package/dist/agents/architect.d.ts.map +1 -1
  3. package/dist/agents/architect.js +77 -5
  4. package/dist/agents/architect.js.map +1 -1
  5. package/dist/agents/continuity.d.ts +2 -0
  6. package/dist/agents/continuity.d.ts.map +1 -1
  7. package/dist/agents/continuity.js +146 -34
  8. package/dist/agents/continuity.js.map +1 -1
  9. package/dist/agents/en-prompt-sections.d.ts +8 -0
  10. package/dist/agents/en-prompt-sections.d.ts.map +1 -0
  11. package/dist/agents/en-prompt-sections.js +119 -0
  12. package/dist/agents/en-prompt-sections.js.map +1 -0
  13. package/dist/agents/fanfic-canon-importer.d.ts +14 -0
  14. package/dist/agents/fanfic-canon-importer.d.ts.map +1 -0
  15. package/dist/agents/fanfic-canon-importer.js +99 -0
  16. package/dist/agents/fanfic-canon-importer.js.map +1 -0
  17. package/dist/agents/fanfic-dimensions.d.ts +14 -0
  18. package/dist/agents/fanfic-dimensions.d.ts.map +1 -0
  19. package/dist/agents/fanfic-dimensions.js +63 -0
  20. package/dist/agents/fanfic-dimensions.js.map +1 -0
  21. package/dist/agents/fanfic-prompt-sections.d.ts +5 -0
  22. package/dist/agents/fanfic-prompt-sections.d.ts.map +1 -0
  23. package/dist/agents/fanfic-prompt-sections.js +85 -0
  24. package/dist/agents/fanfic-prompt-sections.js.map +1 -0
  25. package/dist/agents/post-write-validator.d.ts.map +1 -1
  26. package/dist/agents/post-write-validator.js +65 -0
  27. package/dist/agents/post-write-validator.js.map +1 -1
  28. package/dist/agents/reviser.d.ts.map +1 -1
  29. package/dist/agents/reviser.js +17 -3
  30. package/dist/agents/reviser.js.map +1 -1
  31. package/dist/agents/settler-prompts.d.ts +1 -1
  32. package/dist/agents/settler-prompts.d.ts.map +1 -1
  33. package/dist/agents/settler-prompts.js +7 -2
  34. package/dist/agents/settler-prompts.js.map +1 -1
  35. package/dist/agents/writer-prompts.d.ts +7 -2
  36. package/dist/agents/writer-prompts.d.ts.map +1 -1
  37. package/dist/agents/writer-prompts.js +43 -20
  38. package/dist/agents/writer-prompts.js.map +1 -1
  39. package/dist/agents/writer.d.ts +1 -1
  40. package/dist/agents/writer.d.ts.map +1 -1
  41. package/dist/agents/writer.js +49 -5
  42. package/dist/agents/writer.js.map +1 -1
  43. package/dist/index.d.ts +6 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +6 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/models/book-rules.d.ts +6 -0
  48. package/dist/models/book-rules.d.ts.map +1 -1
  49. package/dist/models/book-rules.js +2 -0
  50. package/dist/models/book-rules.js.map +1 -1
  51. package/dist/models/book.d.ts +15 -4
  52. package/dist/models/book.d.ts.map +1 -1
  53. package/dist/models/book.js +5 -7
  54. package/dist/models/book.js.map +1 -1
  55. package/dist/models/genre-profile.d.ts +3 -0
  56. package/dist/models/genre-profile.d.ts.map +1 -1
  57. package/dist/models/genre-profile.js +1 -0
  58. package/dist/models/genre-profile.js.map +1 -1
  59. package/dist/models/project.d.ts +3 -0
  60. package/dist/models/project.d.ts.map +1 -1
  61. package/dist/models/project.js +1 -0
  62. package/dist/models/project.js.map +1 -1
  63. package/dist/pipeline/agent.d.ts.map +1 -1
  64. package/dist/pipeline/agent.js +41 -0
  65. package/dist/pipeline/agent.js.map +1 -1
  66. package/dist/pipeline/runner.d.ts +5 -1
  67. package/dist/pipeline/runner.d.ts.map +1 -1
  68. package/dist/pipeline/runner.js +72 -6
  69. package/dist/pipeline/runner.js.map +1 -1
  70. package/dist/utils/analytics.d.ts +39 -0
  71. package/dist/utils/analytics.d.ts.map +1 -0
  72. package/dist/utils/analytics.js +50 -0
  73. package/dist/utils/analytics.js.map +1 -0
  74. package/dist/utils/config-loader.d.ts +9 -0
  75. package/dist/utils/config-loader.d.ts.map +1 -0
  76. package/dist/utils/config-loader.js +60 -0
  77. package/dist/utils/config-loader.js.map +1 -0
  78. package/genres/cozy.md +43 -0
  79. package/genres/cultivation.md +42 -0
  80. package/genres/dungeon-core.md +40 -0
  81. package/genres/isekai.md +43 -0
  82. package/genres/litrpg.md +43 -0
  83. package/genres/progression.md +41 -0
  84. package/genres/romantasy.md +45 -0
  85. package/genres/sci-fi.md +42 -0
  86. package/genres/system-apocalypse.md +40 -0
  87. package/genres/tower-climber.md +41 -0
  88. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/utils/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type ProjectConfig } from "../models/project.js";
2
+ export declare const GLOBAL_CONFIG_DIR: string;
3
+ export declare const GLOBAL_ENV_PATH: string;
4
+ /**
5
+ * Load project config from inkos.json with .env overrides.
6
+ * Shared by CLI and Studio — single source of truth for config loading.
7
+ */
8
+ export declare function loadProjectConfig(root: string): Promise<ProjectConfig>;
9
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE/E,eAAO,MAAM,iBAAiB,QAA4B,CAAC;AAC3D,eAAO,MAAM,eAAe,QAAkC,CAAC;AAE/D;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkD5E"}
@@ -0,0 +1,60 @@
1
+ import { readFile, access } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { ProjectConfigSchema } from "../models/project.js";
5
+ export const GLOBAL_CONFIG_DIR = join(homedir(), ".inkos");
6
+ export const GLOBAL_ENV_PATH = join(GLOBAL_CONFIG_DIR, ".env");
7
+ /**
8
+ * Load project config from inkos.json with .env overrides.
9
+ * Shared by CLI and Studio — single source of truth for config loading.
10
+ */
11
+ export async function loadProjectConfig(root) {
12
+ // Load global ~/.inkos/.env first, then project .env overrides
13
+ const { config: loadEnv } = await import("dotenv");
14
+ loadEnv({ path: GLOBAL_ENV_PATH });
15
+ loadEnv({ path: join(root, ".env"), override: true });
16
+ const configPath = join(root, "inkos.json");
17
+ try {
18
+ await access(configPath);
19
+ }
20
+ catch {
21
+ throw new Error(`inkos.json not found in ${root}.\nMake sure you are inside an InkOS project directory (cd into the project created by 'inkos init').`);
22
+ }
23
+ const raw = await readFile(configPath, "utf-8");
24
+ let config;
25
+ try {
26
+ config = JSON.parse(raw);
27
+ }
28
+ catch {
29
+ throw new Error(`inkos.json in ${root} is not valid JSON. Check the file for syntax errors.`);
30
+ }
31
+ // .env overrides inkos.json for LLM settings
32
+ const env = process.env;
33
+ const llm = (config.llm ?? {});
34
+ if (env.INKOS_LLM_PROVIDER)
35
+ llm.provider = env.INKOS_LLM_PROVIDER;
36
+ if (env.INKOS_LLM_BASE_URL)
37
+ llm.baseUrl = env.INKOS_LLM_BASE_URL;
38
+ if (env.INKOS_LLM_MODEL)
39
+ llm.model = env.INKOS_LLM_MODEL;
40
+ if (env.INKOS_LLM_TEMPERATURE)
41
+ llm.temperature = parseFloat(env.INKOS_LLM_TEMPERATURE);
42
+ if (env.INKOS_LLM_MAX_TOKENS)
43
+ llm.maxTokens = parseInt(env.INKOS_LLM_MAX_TOKENS, 10);
44
+ if (env.INKOS_LLM_THINKING_BUDGET)
45
+ llm.thinkingBudget = parseInt(env.INKOS_LLM_THINKING_BUDGET, 10);
46
+ if (env.INKOS_LLM_API_FORMAT)
47
+ llm.apiFormat = env.INKOS_LLM_API_FORMAT;
48
+ config.llm = llm;
49
+ // Global language override
50
+ if (env.INKOS_DEFAULT_LANGUAGE)
51
+ config.language = env.INKOS_DEFAULT_LANGUAGE;
52
+ // API key ONLY from env — never stored in inkos.json
53
+ const apiKey = env.INKOS_LLM_API_KEY;
54
+ if (!apiKey) {
55
+ throw new Error("INKOS_LLM_API_KEY not set. Run 'inkos config set-global' or add it to project .env file.");
56
+ }
57
+ llm.apiKey = apiKey;
58
+ return ProjectConfigSchema.parse(config);
59
+ }
60
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}
package/genres/cozy.md ADDED
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: Cozy Fantasy
3
+ id: cozy
4
+ language: en
5
+ chapterTypes: ["Slice-of-Life", "Community", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: false
8
+ powerScaling: false
9
+ eraResearch: false
10
+ pacingRule: "Slow, meditative pacing. Each chapter advances an emotional arc or community bond. Seasonal/cyclical structure works well."
11
+ satisfactionTypes: ["Relationship Deepened", "Community Problem Solved", "Emotional Breakthrough", "Craft Mastered", "Found Family Moment", "Small Wonder Discovered"]
12
+ auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Genre bait-and-switch — if you promise cozy, never introduce world-ending threats or graphic violence
18
+ - Conflict resolution without work — problems must not solve themselves
19
+ - Manic pixie dream characters who exist only to change the protagonist
20
+ - Nostalgic falseness — romanticizing a "simpler time" without substance
21
+ - Cruel humor — humor must be gentle, never at someone's expense
22
+ - Existential stakes masquerading as low-stakes — keep threats emotional, not apocalyptic
23
+ - Purple prose describing food/nature without advancing character or community arc
24
+
25
+ ## Emotional Arc Rules
26
+
27
+ - Stakes are high emotionally but not existentially — characters care, the world doesn't end
28
+ - Conflict types: personal growth, community problems, relationship tension, small dangers, moral dilemmas
29
+ - Community is a character — setting and relationships are as important as the individual protagonist
30
+ - Hope must always be present — even sad moments don't end in despair
31
+ - Found family bonds drive the emotional core
32
+ - Character arcs follow: isolation/grief -> small interactions -> gradual opening -> emotional breakthrough -> integration
33
+ - Comforting sensory details matter: tea, baked goods, warm spaces, seasonal textures
34
+
35
+ ## Pacing Guidance
36
+
37
+ - Chapter length: 2-3k words with space for reflection
38
+ - Chapter structure: quiet opening -> small event or interaction -> internal response/growth -> gentle transition -> soft ending (not cliffhanger)
39
+ - No cliffhangers — chapters end with peace, hope, or gentle anticipation
40
+ - Seasonal/cyclical structure works well (calendar-based chapter rhythm)
41
+ - Downtime scenes must still plant hooks, advance relationships, or build contrast
42
+ - Slice-of-life texture woven with an emotional throughline — pure plotless chapters risk feeling static
43
+ - Every quiet scene must shift something: a realization, a decision, an intimacy, a small loss
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: English Cultivation
3
+ id: cultivation
4
+ language: en
5
+ chapterTypes: ["Training", "Breakthrough", "Combat", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: false
8
+ powerScaling: true
9
+ eraResearch: false
10
+ pacingRule: "Training/meditation alternates with application/combat. Breakthrough every 5-10 chapters early, every 15-25 late. Each stage must feel earned through discipline."
11
+ satisfactionTypes: ["Stage Breakthrough", "Technique Mastery", "Tribulation Survived", "Martial Victory", "Philosophical Insight", "Core Formation"]
12
+ auditDimensions: [1,2,3,4,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Cultivation that feels instant or effortless — it must read like genuine labor
18
+ - Breakthrough scenes treated as throwaway moments — each tier transition deserves a full dramatic scene
19
+ - Ignoring philosophical/spiritual depth — meditation and inner balance matter as much as combat power
20
+ - Adopting full Chinese cultural trappings without adaptation — this is Western cultivation, use accessible naming (Copper/Iron/Jade/Gold, not Qi Condensation/Core Formation unless earned)
21
+ - Power gains disconnected from training, sacrifice, or problem-solving
22
+ - Cultivation stages with no meaningful difference in capability between them
23
+
24
+ ## Cultivation Rules
25
+
26
+ - Typical Western cultivation stages: Qi Foundation / Energy Gathering -> Core Formation -> Immortal Ascension -> Tribulation / Transcendence (or custom equivalents)
27
+ - Each stage represents meaningful power transformation — characters at different stages should not compete directly without explanation
28
+ - Cultivation must feel like work: meditation scenes with five-sense description, not abstract philosophy lectures
29
+ - Breakthrough scenes show struggle, transformation, and cost — not instant "ding" level-ups
30
+ - Martial integration: cultivation combines with physical combat training, not just sitting and meditating
31
+ - Philosophical elements add depth but must emerge through experience, not exposition
32
+ - Spiritual attribute development: sensitivity to energy, intuition, capacity increases are valid non-numerical progression markers
33
+
34
+ ## Pacing Guidance
35
+
36
+ - Mix detailed training scenes (showing struggle, failure, epiphanies) with montages covering longer periods
37
+ - 1-2 detailed breakthrough scenes per cultivation stage — these are the genre's peak moments
38
+ - Combat tests what was learned in training — progression and action feed each other
39
+ - Internal struggle escalates with power: pride, responsibility, temptation, and enemies grow alongside cultivation
40
+ - Sect/academy politics and mentorship relationships provide non-combat tension
41
+ - Early: frequent small gains. Mid: longer plateaus with harder breakthroughs. Late: rare, climactic stage transitions
42
+ - The journey of cultivation is the story — readers came for the grind, not just the destination
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: Dungeon Core
3
+ id: dungeon-core
4
+ language: en
5
+ chapterTypes: ["Strategy", "Adventurer POV", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: true
8
+ powerScaling: false
9
+ eraResearch: false
10
+ pacingRule: "Alternate dungeon POV (planning/building) with adventurer POV (exploration/combat) every 1-2 chapters. Expansion milestone every 5-8 chapters."
11
+ satisfactionTypes: ["Trap Success", "Floor Expansion", "Minion Evolution", "Adventurer Defeated", "Resource Milestone", "Core Upgrade"]
12
+ auditDimensions: [1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Dungeon leaving its location — immobility is the core constraint, not a bug
18
+ - No consequence for poor trap design or weak minions — adventurers must punish strategic failure
19
+ - Overemphasis on adventurer POV (>70%) — this is dungeon core, not dungeon crawl
20
+ - Lone-wolf dungeon with zero NPC dialogue or relationships
21
+ - Resource management without scarcity — dungeon must make meaningful choices between defense, expansion, and treasure
22
+ - Dungeon core invulnerable or never at risk — core vulnerability is the central tension
23
+
24
+ ## Non-Human POV Rules
25
+
26
+ - Establish dungeon's sensory and cognitive limitations clearly — it "feels" through mana flows, vibrations, minion senses
27
+ - Split POV works best: dungeon core chapters (strategic, omniscient within dungeon) alternating with adventurer/NPC chapters (ground-level human perspective)
28
+ - Dungeon may think differently: slower consciousness, different time perception, alien emotional range
29
+ - Dungeon learns about the outside world through adventurers, scouts, or other filtered means
30
+ - Show the dungeon learning and adapting: "Adventurers bypassed arrow trap by..." leads to next iteration improvements
31
+
32
+ ## Pacing Guidance
33
+
34
+ - Early: Simple dungeon (3-4 rooms, basic traps, weak monsters). Dungeon learns the system
35
+ - Mid: Expanding territory, specialized rooms, sophisticated trap combinations, creature breeding
36
+ - Late: Sprawling complex, hundreds of minions, political relationships with other dungeons/factions, regional economic impact
37
+ - Dungeon POV chapters (2-3k words): internal monologue, planning, resource management, strategy
38
+ - Adventurer POV chapters (2-3k words): exploration, discovery, combat, adaptation
39
+ - End dungeon chapters on suspense (adventurers approaching); end adventurer chapters revealing dungeon's plan
40
+ - Each room/trap/creature must feel purposeful — readers enjoy creative dungeon design with clear strategic reasoning
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: Isekai / Portal Fantasy
3
+ id: isekai
4
+ language: en
5
+ chapterTypes: ["Exploration", "Adaptation", "Setup", "Transition", "Payoff", "Combat"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: false
8
+ powerScaling: true
9
+ eraResearch: false
10
+ pacingRule: "Establish new world rules by chapter 3. Cultural adaptation and fish-out-of-water moments every 2-3 chapters early. Skip tutorial-town syndrome — no 50 pages hitting rats."
11
+ satisfactionTypes: ["World Rule Discovered", "Cultural Clash Resolved", "Real-World Skill Applied", "New Ability Gained", "Relationship Formed", "Identity Established in New World"]
12
+ auditDimensions: [1,2,3,4,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - "Tutorial town" syndrome — 50+ pages of killing rats or low-stakes grinding before the real story starts
18
+ - New world that feels identical to Earth with a fantasy skin
19
+ - MC treating new world's culture as quaint or inferior without narrative consequence
20
+ - No real consequences for cultural misunderstandings — fish-out-of-water must have stakes
21
+ - Pacing too slow in the "culture learning" phase — drip-feed rules through action, not lectures
22
+ - MC's origin world becoming irrelevant after chapter 3 — the contrast is the genre's engine
23
+ - Isekai truck or summoning ritual with zero personality — make the transportation event matter
24
+
25
+ ## World Transition Rules
26
+
27
+ - Transportation event (summoning, reincarnation, portal) must be distinct and memorable
28
+ - Brief real-world grounding: who was MC before? What skills, knowledge, relationships do they carry?
29
+ - Arrival scene: disorientation is real — sensory overload, language barriers, physical discomfort
30
+ - First guide/NPC explains world basics through interaction, not monologue
31
+ - By chapter 3, readers must understand the new world's basic operating system
32
+ - MC's real-world knowledge creates both advantages and dangerous blind spots
33
+ - New world must feel real: consistent geography, politics, cultures, economics — not a game lobby
34
+
35
+ ## Pacing Guidance
36
+
37
+ - Opening: transportation event -> brief real-world grounding -> arrival and disorientation -> first guide -> first concrete goal
38
+ - Early chapters: cultural fish-out-of-water drives comedy and drama (every 2-3 chapters)
39
+ - MC bringing real-world skills that apply in surprising ways is a core satisfaction — seed these early
40
+ - Learning the new world's magic/power system should feel like genuine discovery, not tutorial text
41
+ - Relationship building with new world characters grounds the MC emotionally
42
+ - Clash between home culture and new world values creates natural conflict without needing a villain
43
+ - Mid-to-late story: MC's identity shifts from "outsider" to "participant" — track this arc explicitly
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: LitRPG
3
+ id: litrpg
4
+ language: en
5
+ chapterTypes: ["Progression", "Setup", "Transition", "Payoff", "Combat"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: true
8
+ powerScaling: true
9
+ eraResearch: false
10
+ pacingRule: "Every 1-3 chapters early: level-up or stat gain. Mid-story every 5-10 chapters. Late story: tier transitions spaced far apart."
11
+ satisfactionTypes: ["Level Up", "Skill Unlock", "Loot Drop", "Boss Kill", "Tier Breakthrough", "System Secret Revealed"]
12
+ auditDimensions: [1,2,3,4,5,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - System rules changing arbitrarily after being established — readers track every number
18
+ - Unexplained power jumps — growth must follow established system logic
19
+ - "Blue Box Madness" — stat dumps every chapter or pages-long stat sheets
20
+ - Instant mastery — acquiring a skill and immediately excelling at it
21
+ - Overpowered MC from the start — removes all tension
22
+ - System message overload interrupting action scenes
23
+ - Female characters reduced to "perfect girlfriend" or "sickly daughter" tropes
24
+
25
+ ## System Design Rules
26
+
27
+ - Once stats, skills, and system rules are established, they cannot be contradicted
28
+ - Stat blocks punctuate achievement moments, not routine actions
29
+ - Derivative stats (HP, Mana) must depend logically on primary stats
30
+ - Skill unlocks must feel earned — tied to risk, sacrifice, or problem-solving
31
+ - Same-type resource absorption must show diminishing returns, not flat gains
32
+ - System UI (blue boxes) appears after action/revelation, never mid-combat
33
+ - Give the system a consistent voice/personality — formal, archaic, playful, or clinical
34
+
35
+ ## Pacing Guidance
36
+
37
+ - Chapter length sweet spot: 2.8k-3.5k words depending on stat density
38
+ - Chapter structure: Hook/recap -> Action/exploration -> System interaction/stat gain -> Cliffhanger
39
+ - Early chapters: frequent level-ups to hook readers (every 1-3 chapters)
40
+ - Mid-story: harder gains, every 5-10 chapters; narrative tension rises
41
+ - Late story: tier/rank transitions are rare and climactic
42
+ - Test pacing: Book 3 MC decisively defeats Book 1 version, but challenges never feel trivial
43
+ - Describe stats in narration first (audiobook-friendly), then include stat sheet for detail readers
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: Progression Fantasy
3
+ id: progression
4
+ language: en
5
+ chapterTypes: ["Training", "Breakthrough", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: false
8
+ powerScaling: true
9
+ eraResearch: false
10
+ pacingRule: "Tier advancement every 2-4 chapters early, every 8-15 mid-story, every 20+ late-story. Each tier must feel fundamentally different."
11
+ satisfactionTypes: ["Tier Breakthrough", "Technique Mastery", "Rival Surpassed", "Mentor Transcended", "Power Combination Discovered", "Impossible Challenge Overcome"]
12
+ auditDimensions: [1,2,3,4,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Power loss without extraordinary justification — progress loss drives readers away faster than anything
18
+ - Instant power-ups from found items or bloodline awakenings without buildup
19
+ - Training montages only — readers want detailed training scenes showing struggle and epiphany
20
+ - Arbitrary advancement blocks that feel like artificial gates rather than organic difficulty
21
+ - Tier progression that contradicts established power hierarchy
22
+ - Characters at different tiers competing directly without explanation
23
+
24
+ ## Power System Rules
25
+
26
+ - Progress must be quantifiable — even without explicit numbers, use measurable tiers (Stage 3 cultivator, Master swordsman)
27
+ - Clear power tiers with meaningful differences between each (Color, Metal, Letter, or custom)
28
+ - Each tier should represent meaningful power difference — not just cosmetic upgrades
29
+ - Earned growth only — power gains connect to effort, sacrifice, or problem-solving
30
+ - Book-to-book comparison: Book 3 MC decisively defeats Book 1 version
31
+ - Mix training montages (covering weeks) with 1-2 detailed breakthrough scenes per tier
32
+ - Physical transformations can signal tier transitions: eye color, aura, physical presence
33
+
34
+ ## Pacing Guidance
35
+
36
+ - Chapter structure: Training/learning -> Application/testing -> Breakthrough trigger -> Advancement or cliffhanger
37
+ - Maintain tension as MC grows: introduce enemies/challenges that scale differently or present new threat types
38
+ - Internal struggle must escalate with power — new power unlocks pride, responsibility, temptation, enemies
39
+ - Strongest threats need not be physical: political, magical, spiritual, temporal
40
+ - Early: MC is underdog among peers. Mid: MC formidable but others advance too. Late: MC among strongest but faces tier-transcending threats
41
+ - Rivalry with a peer who also progresses keeps tension alive across the full arc
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: Romantasy
3
+ id: romantasy
4
+ language: en
5
+ chapterTypes: ["Romance", "Action", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: false
8
+ powerScaling: false
9
+ eraResearch: false
10
+ pacingRule: "Romance beats at every act break. Chemistry scenes every 2-3 chapters. Fantasy romance: consummation at 60-75%. Romantic fantasy: romance resolution aligned with plot resolution."
11
+ satisfactionTypes: ["Chemistry Moment", "Vulnerability Shared", "Obstacle Overcome Together", "First Kiss", "Relationship Defined", "HEA/HFN Achieved"]
12
+ auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Chemistry that isn't earned — readers must understand why characters care for each other
18
+ - Love interest who doesn't drive protagonist's transformation
19
+ - Easy romance without real conflict — tension is mandatory
20
+ - Fantasy romance without HEA/HFN ending — readers feel betrayed
21
+ - Mislabeling heat level — communicate clearly in story setup; readers self-select
22
+ - World-building that feels like afterthought to romance — setting must complicate or enable the relationship
23
+ - Love triangles dragged out without decisive resolution
24
+ - "Tell" emotions instead of showing them — inner feelings shown through action, not declaration
25
+
26
+ ## Romance Rules
27
+
28
+ - Show attraction subtly: physical detail notices, lingering touches, involuntary reactions (heartbeat, breath catching)
29
+ - Banter and wit: clever dialogue showing mutual understanding and intellectual challenge
30
+ - Vulnerability moments: characters sharing weakness, fear, secrets, past trauma
31
+ - Shared goals reveal compatibility: working together toward a goal shows how the partner handles conflict
32
+ - Conflict must be real — external barriers (class, species, faction, magic) or internal barriers (fear, trust, past wounds)
33
+ - Fantasy setting complicates romance: magic bonds, soul connections, species differences, political marriages
34
+ - Action scenes show relationship dynamics — fighting together reveals trust and compatibility
35
+ - Heat level must be consistent throughout — don't escalate or pull back without narrative reason
36
+
37
+ ## Pacing Guidance
38
+
39
+ - Fantasy romance: heavy romance focus early, building to consummation around 60-75%, resolution after romance established
40
+ - Romantic fantasy: romance subplot woven through action plot, key romantic moments at act breaks, romance resolution aligned with plot resolution
41
+ - Chemistry scenes every 2-3 chapters minimum — readers came for the relationship
42
+ - Sexual tension can heighten during/after action (adrenaline, relief, protective instincts)
43
+ - Break up long dialogue-heavy romance scenes with physical action or setting detail
44
+ - Enemies-to-lovers needs slow burn: opposition -> forced proximity -> grudging respect -> attraction -> surrender
45
+ - Second-chance romance: history adds depth and pain; show how characters have changed
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: Science Fiction
3
+ id: sci-fi
4
+ language: en
5
+ chapterTypes: ["Exploration", "Combat", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: false
8
+ powerScaling: false
9
+ eraResearch: true
10
+ pacingRule: "Worldbuilding emerges through action, not exposition. Tech reveals tied to plot-critical moments. Political/exploration arcs alternate with action every 2-4 chapters."
11
+ satisfactionTypes: ["Discovery", "Tech Breakthrough", "Political Victory", "First Contact", "Mystery Solved", "Survival Against Odds"]
12
+ auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Tech rules changing to serve plot convenience — once physics/tech is established, it must stay consistent
18
+ - Technology solving everything — every tech must have limitations; introduce problems tech cannot fix (corruption, emotion, human greed)
19
+ - Info-dumping science/tech explanations outside of plot-critical moments
20
+ - Ignoring logical consequences of technology — FTL, AI, biotech all have societal implications
21
+ - Hand-waving hard-science concepts in hard sci-fi without clear intent to treat science as soft
22
+ - Characters behaving as if from present day when story is set centuries ahead — cultural/linguistic adaptation matters
23
+
24
+ ## Tech Consistency Rules
25
+
26
+ - Every technology must have defined limitations and side effects
27
+ - New technologies create new problems — they don't just solve old ones
28
+ - If the story uses FTL, hyperdrives, or teleportation, establish rules and stick to them
29
+ - Hard sci-fi: explain the science, make it plausible, build consequences. Readers will check
30
+ - Space opera: science can be soft, but internal rules must be consistent across the narrative
31
+ - Show technology through character interaction, not textbook entries
32
+ - Era research required: reference real science correctly, extrapolate plausibly
33
+
34
+ ## Pacing Guidance
35
+
36
+ - Hard sci-fi: logical problem-solving drives pacing — each chapter should advance understanding or create new constraints
37
+ - Space opera: epic scale requires political/interpersonal arcs between action sequences
38
+ - Exploration chapters establish wonder and worldbuilding through character experience
39
+ - Political complexity: factions with competing interests, diplomacy alongside combat
40
+ - Tech reveals at plot-critical moments only — never dump specs for their own sake
41
+ - Action scenes grounded in established physics/tech rules — no surprise capabilities
42
+ - Settings spanning star systems need clear spatial orientation for readers
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: System Apocalypse
3
+ id: system-apocalypse
4
+ language: en
5
+ chapterTypes: ["Survival", "Combat", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: true
8
+ powerScaling: true
9
+ eraResearch: false
10
+ pacingRule: "Early (ch 1-15): survival pressure every chapter. Mid (ch 15-50): power-up + faction politics every 3-5 chapters. Late: expansion and existential threats."
11
+ satisfactionTypes: ["Survival Against Odds", "Level Up", "Territory Claimed", "Faction Victory", "System Secret Revealed", "Societal Rebuild Milestone"]
12
+ auditDimensions: [1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Day Zero that doesn't permanently change the world — no reverting to normal
18
+ - Early chapters without genuine survival danger — readers demand real stakes from page one
19
+ - System arrival with no in-world explanation (even a vague one)
20
+ - Ignoring real-world geography and consequences when set on Earth
21
+ - Factions that are binary good/evil — competing interests, not cartoon villainy
22
+ - MC becoming unstoppable too fast — power fantasy must be earned through survival
23
+ - Tech usage without addressing fuel, ammo, and infrastructure collapse
24
+
25
+ ## World Rules
26
+
27
+ - Day Zero must establish in chapters 1-3: how a normal person reacts, first death or near-death, and that old rules are gone
28
+ - Infrastructure failure is real: food, water, electricity, medicine stop working
29
+ - Resource scarcity drives conflict: water, ammunition, medical supplies, safe shelter
30
+ - Factions form quickly: government remnants, criminal networks, cults, survival communities, warlords
31
+ - Real-world grounding: name real locations, acknowledge real infrastructure, maintain daylight cycles and weather
32
+ - System mechanics integrate logically — show why old-world tech fails or doesn't in a magical world
33
+
34
+ ## Pacing Guidance
35
+
36
+ - Early (ch 1-15): Survival, confusion, learning system. MC is weak, struggles with low-tier threats. Shorter chapters (2-3k words)
37
+ - Mid (ch 15-50): Growing stronger, claiming territory, faction politics. Power fantasy increases; survival becomes strategic
38
+ - Late: Expansion, faction wars, world-scale threats. MC powerful but not unstoppable; challenges are existential/political
39
+ - Introduce new threat types as MC grows — defeating zombies leads to intelligent predators, rival factions, interdimensional invasions
40
+ - Balance survival pressure with power progression — desperation early, strategy mid, leadership late
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: Tower Climbing
3
+ id: tower-climber
4
+ language: en
5
+ chapterTypes: ["Floor Challenge", "Progression", "Setup", "Transition", "Payoff"]
6
+ fatigueWords: ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "comprehensive", "nuanced", "embark", "foster", "underscore", "bolstered", "crucial"]
7
+ numericalSystem: false
8
+ powerScaling: true
9
+ eraResearch: false
10
+ pacingRule: "Each floor arc spans 3-8 chapters: introduction, exploration, confrontation, advancement. Difficulty must escalate visibly between floors."
11
+ satisfactionTypes: ["Floor Cleared", "Boss Defeated", "New Ability Gained", "Floor Secret Discovered", "Rival Surpassed", "Summit Progress"]
12
+ auditDimensions: [1,2,3,4,6,7,8,9,10,13,14,15,16,17,18,19,24,25,26]
13
+ ---
14
+
15
+ ## Genre Prohibitions
16
+
17
+ - Floors that are cosmetic reskins of each other — each floor must present materially different challenges
18
+ - Floor difficulty that doesn't escalate predictably — readers must understand power requirements
19
+ - No clear summit goal — readers need to know what success at the top looks like
20
+ - Horizontal progression (going sideways) instead of vertical climbing
21
+ - Skipping floors without earned justification
22
+ - Boss fights that are won through deus ex machina instead of preparation and growth
23
+
24
+ ## Floor Design Rules
25
+
26
+ - Each floor must introduce a distinct biome, challenge type, or rule set
27
+ - Floor transitions are natural progression checkpoints — use them for stat gains, ability unlocks, or narrative reveals
28
+ - Environmental detail matters: readers experience each floor as a new world
29
+ - Floor bosses or trials must test something the climber learned on that floor
30
+ - Difficulty tiers should be transparent to readers — they should anticipate what the next floor demands
31
+ - Allow brief rest/preparation between floors for character moments and strategic planning
32
+
33
+ ## Pacing Guidance
34
+
35
+ - Floor introduction: establish new environment, threats, and rules (1-2 chapters)
36
+ - Exploration and problem-solving: MC adapts to floor's unique challenges (1-3 chapters)
37
+ - Confrontation: floor boss, puzzle, or trial that tests everything learned (1-2 chapters)
38
+ - Advancement: reward, brief respite, foreshadowing of next floor (0.5-1 chapter)
39
+ - Early floors move fast (2-3 chapters each) to hook readers with progression
40
+ - Later floors slow down (5-8 chapters) as complexity and stakes increase
41
+ - The summit should feel like a destination worth the climb — seed hints about what awaits throughout
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actalk/inkos-core",
3
- "version": "0.4.9",
3
+ "version": "0.5.0",
4
4
  "description": "InkOS core: models, agents, pipeline, LLM integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@anthropic-ai/sdk": "^0.78.0",
27
+ "dotenv": "^16.4.0",
27
28
  "js-yaml": "^4.1.1",
28
29
  "openai": "^4.80.0",
29
30
  "zod": "^3.24.0"