@actalk/inkos-core 1.5.0 → 1.6.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 (187) hide show
  1. package/dist/agent/agent-session.d.ts +4 -0
  2. package/dist/agent/agent-session.d.ts.map +1 -1
  3. package/dist/agent/agent-session.js +78 -5
  4. package/dist/agent/agent-session.js.map +1 -1
  5. package/dist/agent/agent-system-prompt.d.ts +2 -0
  6. package/dist/agent/agent-system-prompt.d.ts.map +1 -1
  7. package/dist/agent/agent-system-prompt.js +181 -16
  8. package/dist/agent/agent-system-prompt.js.map +1 -1
  9. package/dist/agent/agent-tools.d.ts +97 -1
  10. package/dist/agent/agent-tools.d.ts.map +1 -1
  11. package/dist/agent/agent-tools.js +434 -3
  12. package/dist/agent/agent-tools.js.map +1 -1
  13. package/dist/agent/film-authoring-tools.d.ts +89 -0
  14. package/dist/agent/film-authoring-tools.d.ts.map +1 -0
  15. package/dist/agent/film-authoring-tools.js +336 -0
  16. package/dist/agent/film-authoring-tools.js.map +1 -0
  17. package/dist/agent/index.d.ts +2 -1
  18. package/dist/agent/index.d.ts.map +1 -1
  19. package/dist/agent/index.js +2 -1
  20. package/dist/agent/index.js.map +1 -1
  21. package/dist/agent/llm-stub.d.ts +19 -0
  22. package/dist/agent/llm-stub.d.ts.map +1 -0
  23. package/dist/agent/llm-stub.js +134 -0
  24. package/dist/agent/llm-stub.js.map +1 -0
  25. package/dist/agents/composer.d.ts.map +1 -1
  26. package/dist/agents/composer.js +24 -12
  27. package/dist/agents/composer.js.map +1 -1
  28. package/dist/agents/researcher.d.ts +38 -0
  29. package/dist/agents/researcher.d.ts.map +1 -0
  30. package/dist/agents/researcher.js +164 -0
  31. package/dist/agents/researcher.js.map +1 -0
  32. package/dist/agents/script-storyboard.d.ts +51 -0
  33. package/dist/agents/script-storyboard.d.ts.map +1 -0
  34. package/dist/agents/script-storyboard.js +368 -0
  35. package/dist/agents/script-storyboard.js.map +1 -0
  36. package/dist/index.d.ts +23 -2
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +24 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/interaction/action-envelope.d.ts +669 -1
  41. package/dist/interaction/action-envelope.d.ts.map +1 -1
  42. package/dist/interaction/action-envelope.js +87 -0
  43. package/dist/interaction/action-envelope.js.map +1 -1
  44. package/dist/interaction/edit-controller.d.ts.map +1 -1
  45. package/dist/interaction/edit-controller.js +91 -1
  46. package/dist/interaction/edit-controller.js.map +1 -1
  47. package/dist/interaction/intents.d.ts +2 -2
  48. package/dist/interaction/project-control.d.ts +1 -1
  49. package/dist/interaction/session-transcript-schema.d.ts +22 -22
  50. package/dist/interaction/session.d.ts +14 -14
  51. package/dist/interaction/session.d.ts.map +1 -1
  52. package/dist/interaction/session.js +1 -1
  53. package/dist/interaction/session.js.map +1 -1
  54. package/dist/interactive-film/authoring-generate.d.ts +4 -0
  55. package/dist/interactive-film/authoring-generate.d.ts.map +1 -0
  56. package/dist/interactive-film/authoring-generate.js +16 -0
  57. package/dist/interactive-film/authoring-generate.js.map +1 -0
  58. package/dist/interactive-film/authoring-store.d.ts +35 -0
  59. package/dist/interactive-film/authoring-store.d.ts.map +1 -0
  60. package/dist/interactive-film/authoring-store.js +114 -0
  61. package/dist/interactive-film/authoring-store.js.map +1 -0
  62. package/dist/interactive-film/authoring-tools.d.ts +9 -0
  63. package/dist/interactive-film/authoring-tools.d.ts.map +1 -0
  64. package/dist/interactive-film/authoring-tools.js +19 -0
  65. package/dist/interactive-film/authoring-tools.js.map +1 -0
  66. package/dist/interactive-film/delta.d.ts +591 -0
  67. package/dist/interactive-film/delta.d.ts.map +1 -0
  68. package/dist/interactive-film/delta.js +54 -0
  69. package/dist/interactive-film/delta.js.map +1 -0
  70. package/dist/interactive-film/emotion.d.ts +20 -0
  71. package/dist/interactive-film/emotion.d.ts.map +1 -0
  72. package/dist/interactive-film/emotion.js +57 -0
  73. package/dist/interactive-film/emotion.js.map +1 -0
  74. package/dist/interactive-film/evaluator.d.ts +7 -0
  75. package/dist/interactive-film/evaluator.d.ts.map +1 -0
  76. package/dist/interactive-film/evaluator.js +40 -0
  77. package/dist/interactive-film/evaluator.js.map +1 -0
  78. package/dist/interactive-film/export-html.d.ts +6 -0
  79. package/dist/interactive-film/export-html.d.ts.map +1 -0
  80. package/dist/interactive-film/export-html.js +84 -0
  81. package/dist/interactive-film/export-html.js.map +1 -0
  82. package/dist/interactive-film/export-ink.d.ts +3 -0
  83. package/dist/interactive-film/export-ink.d.ts.map +1 -0
  84. package/dist/interactive-film/export-ink.js +51 -0
  85. package/dist/interactive-film/export-ink.js.map +1 -0
  86. package/dist/interactive-film/film-context.d.ts +4 -0
  87. package/dist/interactive-film/film-context.d.ts.map +1 -0
  88. package/dist/interactive-film/film-context.js +30 -0
  89. package/dist/interactive-film/film-context.js.map +1 -0
  90. package/dist/interactive-film/generate.d.ts +13 -0
  91. package/dist/interactive-film/generate.d.ts.map +1 -0
  92. package/dist/interactive-film/generate.js +32 -0
  93. package/dist/interactive-film/generate.js.map +1 -0
  94. package/dist/interactive-film/graph-schema.d.ts +819 -0
  95. package/dist/interactive-film/graph-schema.d.ts.map +1 -0
  96. package/dist/interactive-film/graph-schema.js +84 -0
  97. package/dist/interactive-film/graph-schema.js.map +1 -0
  98. package/dist/interactive-film/graph-store.d.ts +5 -0
  99. package/dist/interactive-film/graph-store.d.ts.map +1 -0
  100. package/dist/interactive-film/graph-store.js +24 -0
  101. package/dist/interactive-film/graph-store.js.map +1 -0
  102. package/dist/interactive-film/memory-link.d.ts +9 -0
  103. package/dist/interactive-film/memory-link.d.ts.map +1 -0
  104. package/dist/interactive-film/memory-link.js +15 -0
  105. package/dist/interactive-film/memory-link.js.map +1 -0
  106. package/dist/interactive-film/node-image.d.ts +29 -0
  107. package/dist/interactive-film/node-image.d.ts.map +1 -0
  108. package/dist/interactive-film/node-image.js +52 -0
  109. package/dist/interactive-film/node-image.js.map +1 -0
  110. package/dist/interactive-film/paths.d.ts +14 -0
  111. package/dist/interactive-film/paths.d.ts.map +1 -0
  112. package/dist/interactive-film/paths.js +60 -0
  113. package/dist/interactive-film/paths.js.map +1 -0
  114. package/dist/interactive-film/validation.d.ts +14 -0
  115. package/dist/interactive-film/validation.d.ts.map +1 -0
  116. package/dist/interactive-film/validation.js +292 -0
  117. package/dist/interactive-film/validation.js.map +1 -0
  118. package/dist/llm/provider.d.ts.map +1 -1
  119. package/dist/llm/provider.js +53 -16
  120. package/dist/llm/provider.js.map +1 -1
  121. package/dist/models/book.d.ts +13 -0
  122. package/dist/models/book.d.ts.map +1 -1
  123. package/dist/models/book.js +3 -0
  124. package/dist/models/book.js.map +1 -1
  125. package/dist/models/input-governance.d.ts +14 -5
  126. package/dist/models/input-governance.d.ts.map +1 -1
  127. package/dist/models/input-governance.js +3 -0
  128. package/dist/models/input-governance.js.map +1 -1
  129. package/dist/models/project.d.ts +63 -10
  130. package/dist/models/project.d.ts.map +1 -1
  131. package/dist/models/project.js +11 -0
  132. package/dist/models/project.js.map +1 -1
  133. package/dist/pipeline/runner.js +1 -1
  134. package/dist/pipeline/runner.js.map +1 -1
  135. package/dist/pipeline/script-storyboard-runner.d.ts +127 -0
  136. package/dist/pipeline/script-storyboard-runner.d.ts.map +1 -0
  137. package/dist/pipeline/script-storyboard-runner.js +446 -0
  138. package/dist/pipeline/script-storyboard-runner.js.map +1 -0
  139. package/dist/play/play-agents.d.ts.map +1 -1
  140. package/dist/play/play-agents.js +5 -2
  141. package/dist/play/play-agents.js.map +1 -1
  142. package/dist/play/play-store.d.ts +2 -2
  143. package/dist/skills/builtin-prompts.d.ts +10 -0
  144. package/dist/skills/builtin-prompts.d.ts.map +1 -0
  145. package/dist/skills/builtin-prompts.js +152 -0
  146. package/dist/skills/builtin-prompts.js.map +1 -0
  147. package/dist/skills/builtin.d.ts +3 -0
  148. package/dist/skills/builtin.d.ts.map +1 -0
  149. package/dist/skills/builtin.js +252 -0
  150. package/dist/skills/builtin.js.map +1 -0
  151. package/dist/skills/context-planner.d.ts +17 -0
  152. package/dist/skills/context-planner.d.ts.map +1 -0
  153. package/dist/skills/context-planner.js +48 -0
  154. package/dist/skills/context-planner.js.map +1 -0
  155. package/dist/skills/external-loader.d.ts +20 -0
  156. package/dist/skills/external-loader.d.ts.map +1 -0
  157. package/dist/skills/external-loader.js +126 -0
  158. package/dist/skills/external-loader.js.map +1 -0
  159. package/dist/skills/index.d.ts +8 -0
  160. package/dist/skills/index.d.ts.map +1 -0
  161. package/dist/skills/index.js +8 -0
  162. package/dist/skills/index.js.map +1 -0
  163. package/dist/skills/prompt-pack.d.ts +33 -0
  164. package/dist/skills/prompt-pack.d.ts.map +1 -0
  165. package/dist/skills/prompt-pack.js +82 -0
  166. package/dist/skills/prompt-pack.js.map +1 -0
  167. package/dist/skills/registry.d.ts +6 -0
  168. package/dist/skills/registry.d.ts.map +1 -0
  169. package/dist/skills/registry.js +101 -0
  170. package/dist/skills/registry.js.map +1 -0
  171. package/dist/skills/types.d.ts +146 -0
  172. package/dist/skills/types.d.ts.map +1 -0
  173. package/dist/skills/types.js +32 -0
  174. package/dist/skills/types.js.map +1 -0
  175. package/dist/state/manager.d.ts +8 -2
  176. package/dist/state/manager.d.ts.map +1 -1
  177. package/dist/state/manager.js +58 -5
  178. package/dist/state/manager.js.map +1 -1
  179. package/dist/utils/context-assembly.d.ts +3 -0
  180. package/dist/utils/context-assembly.d.ts.map +1 -1
  181. package/dist/utils/context-assembly.js +3 -0
  182. package/dist/utils/context-assembly.js.map +1 -1
  183. package/dist/utils/web-search.d.ts +6 -1
  184. package/dist/utils/web-search.d.ts.map +1 -1
  185. package/dist/utils/web-search.js +8 -4
  186. package/dist/utils/web-search.js.map +1 -1
  187. package/package.json +14 -3
@@ -0,0 +1,126 @@
1
+ import { readFile, readdir, stat } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { delimiter, isAbsolute, join } from "node:path";
4
+ import yaml from "js-yaml";
5
+ import { CapabilitySkillManifestSchema, } from "./types.js";
6
+ export async function loadExternalCapabilitySkills(input) {
7
+ const skillDirs = await discoverSkillDirs(input.externalDirs);
8
+ const skills = [];
9
+ const diagnostics = [];
10
+ for (const dir of skillDirs) {
11
+ const skillPath = join(dir, "SKILL.md");
12
+ try {
13
+ skills.push(await loadSkillManifest(skillPath));
14
+ }
15
+ catch (error) {
16
+ diagnostics.push({
17
+ path: skillPath,
18
+ message: error instanceof Error ? error.message : String(error),
19
+ });
20
+ }
21
+ }
22
+ return { skills, diagnostics };
23
+ }
24
+ export async function loadConfiguredCapabilitySkills(input) {
25
+ const candidates = configuredSkillDirs(input);
26
+ const skills = [];
27
+ const diagnostics = [];
28
+ for (const candidate of candidates) {
29
+ try {
30
+ const result = await loadExternalCapabilitySkills({ externalDirs: [candidate.path] });
31
+ skills.push(...result.skills);
32
+ diagnostics.push(...result.diagnostics);
33
+ }
34
+ catch (error) {
35
+ if (!candidate.explicit && isMissingPathError(error))
36
+ continue;
37
+ diagnostics.push({
38
+ path: candidate.path,
39
+ message: error instanceof Error ? error.message : String(error),
40
+ });
41
+ }
42
+ }
43
+ return { skills, diagnostics };
44
+ }
45
+ function configuredSkillDirs(input) {
46
+ const env = input.env ?? process.env;
47
+ const envDirs = (env.INKOS_SKILL_DIRS ?? "")
48
+ .split(delimiter)
49
+ .map((value) => value.trim())
50
+ .filter(Boolean);
51
+ const userRoot = input.userRoot ?? join(homedir(), ".inkos");
52
+ return [
53
+ { path: join(input.projectRoot, ".inkos", "skills"), explicit: false },
54
+ { path: join(userRoot, "skills"), explicit: false },
55
+ ...envDirs.map((path) => ({ path, explicit: true })),
56
+ ];
57
+ }
58
+ function isMissingPathError(error) {
59
+ return typeof error === "object"
60
+ && error !== null
61
+ && "code" in error
62
+ && error.code === "ENOENT";
63
+ }
64
+ async function discoverSkillDirs(externalDirs) {
65
+ const dirs = [];
66
+ for (const dir of externalDirs) {
67
+ if (!isAbsolute(dir)) {
68
+ throw new Error(`External skill directory must be absolute: ${dir}`);
69
+ }
70
+ const info = await stat(dir);
71
+ if (!info.isDirectory()) {
72
+ throw new Error(`External skill path is not a directory: ${dir}`);
73
+ }
74
+ if (await hasSkillManifest(dir)) {
75
+ dirs.push(dir);
76
+ continue;
77
+ }
78
+ const entries = await readdir(dir, { withFileTypes: true });
79
+ for (const entry of entries) {
80
+ if (!entry.isDirectory())
81
+ continue;
82
+ const child = join(dir, entry.name);
83
+ if (await hasSkillManifest(child))
84
+ dirs.push(child);
85
+ }
86
+ }
87
+ return [...new Set(dirs)].sort();
88
+ }
89
+ async function hasSkillManifest(dir) {
90
+ try {
91
+ const info = await stat(join(dir, "SKILL.md"));
92
+ return info.isFile();
93
+ }
94
+ catch {
95
+ return false;
96
+ }
97
+ }
98
+ async function loadSkillManifest(skillPath) {
99
+ const raw = await readFile(skillPath, "utf-8");
100
+ const parsed = parseFrontmatter(raw);
101
+ if (!parsed.data || typeof parsed.data !== "object" || Array.isArray(parsed.data)) {
102
+ throw new Error("SKILL.md frontmatter must be a YAML object.");
103
+ }
104
+ return CapabilitySkillManifestSchema.parse({
105
+ ...parsed.data,
106
+ body: parsed.body.trim(),
107
+ source: "external",
108
+ });
109
+ }
110
+ function parseFrontmatter(raw) {
111
+ const normalized = raw.replace(/^\uFEFF/, "");
112
+ if (!normalized.startsWith("---\n")) {
113
+ throw new Error("SKILL.md must start with YAML frontmatter delimiters.");
114
+ }
115
+ const end = normalized.indexOf("\n---", 4);
116
+ if (end < 0) {
117
+ throw new Error("SKILL.md is missing closing YAML frontmatter delimiter.");
118
+ }
119
+ const frontmatter = normalized.slice(4, end).trim();
120
+ const body = normalized.slice(end + "\n---".length).replace(/^\r?\n/, "");
121
+ return {
122
+ data: yaml.load(frontmatter),
123
+ body,
124
+ };
125
+ }
126
+ //# sourceMappingURL=external-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-loader.js","sourceRoot":"","sources":["../../src/skills/external-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { BUILTIN_CAPABILITY_SKILLS } from "./builtin.js";
2
+ export { BUILTIN_PROMPTS, BUILTIN_PROMPT_PACKS, type BuiltinPrompt } from "./builtin-prompts.js";
3
+ export { buildSkillContextPlan, contextNeedById, contextNeedPurpose, type SkillContextPlan, type SkillContextPlanInput, } from "./context-planner.js";
4
+ export { loadConfiguredCapabilitySkills, loadExternalCapabilitySkills, type ExternalSkillDiagnostic, type LoadConfiguredCapabilitySkillsInput, type LoadExternalCapabilitySkillsInput, type LoadExternalCapabilitySkillsResult, } from "./external-loader.js";
5
+ export { PromptPackPromptNotFoundError, getBuiltinPrompt, listBuiltinPromptPacks, listBuiltinPrompts, loadPromptPackPrompt, promptOverridePath, type LoadedPromptPackPrompt, type LoadPromptPackPromptInput, type PromptSource, } from "./prompt-pack.js";
6
+ export { createSkillRegistry, type CreateSkillRegistryOptions } from "./registry.js";
7
+ export { CapabilitySkillManifestSchema, PromptPackManifestSchema, SkillContextNeedSchema, SkillContextRetrievalSchema, SkillContextTierSchema, type CapabilitySkillManifest, type PromptPackManifest, type SkillContextNeed, type SkillContextRetrieval, type SkillContextTier, type SkillRegistry, type SkillResolutionInput, type SkillResolutionResult, } from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mCAAmC,EACxC,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,GACxC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { BUILTIN_CAPABILITY_SKILLS } from "./builtin.js";
2
+ export { BUILTIN_PROMPTS, BUILTIN_PROMPT_PACKS } from "./builtin-prompts.js";
3
+ export { buildSkillContextPlan, contextNeedById, contextNeedPurpose, } from "./context-planner.js";
4
+ export { loadConfiguredCapabilitySkills, loadExternalCapabilitySkills, } from "./external-loader.js";
5
+ export { PromptPackPromptNotFoundError, getBuiltinPrompt, listBuiltinPromptPacks, listBuiltinPrompts, loadPromptPackPrompt, promptOverridePath, } from "./prompt-pack.js";
6
+ export { createSkillRegistry } from "./registry.js";
7
+ export { CapabilitySkillManifestSchema, PromptPackManifestSchema, SkillContextNeedSchema, SkillContextRetrievalSchema, SkillContextTierSchema, } from "./types.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AACjG,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,kBAAkB,GAGnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,GAK7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,GAInB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAmC,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,GASvB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type BuiltinPrompt } from "./builtin-prompts.js";
2
+ export type PromptSource = "project" | "user" | "builtin";
3
+ export interface LoadedPromptPackPrompt {
4
+ readonly promptId: string;
5
+ readonly content: string;
6
+ readonly source: PromptSource;
7
+ readonly path?: string;
8
+ readonly title?: string;
9
+ readonly packId?: string;
10
+ }
11
+ export interface LoadPromptPackPromptInput {
12
+ readonly promptId: string;
13
+ readonly projectRoot?: string;
14
+ readonly userRoot?: string;
15
+ }
16
+ export declare class PromptPackPromptNotFoundError extends Error {
17
+ readonly promptId: string;
18
+ readonly code = "PROMPT_PACK_PROMPT_NOT_FOUND";
19
+ constructor(promptId: string);
20
+ }
21
+ export declare function listBuiltinPromptPacks(): readonly {
22
+ id: string;
23
+ title: string;
24
+ source: "user" | "builtin" | "project" | "external";
25
+ description: string;
26
+ prompts: string[];
27
+ }[];
28
+ export declare function listBuiltinPrompts(): ReadonlyArray<BuiltinPrompt>;
29
+ export declare function getBuiltinPrompt(promptId: string): LoadedPromptPackPrompt | undefined;
30
+ export declare function loadPromptPackPrompt(input: LoadPromptPackPromptInput): Promise<LoadedPromptPackPrompt>;
31
+ export declare function appendPromptPackGuidance(basePrompt: string, input: LoadPromptPackPromptInput): Promise<string>;
32
+ export declare function promptOverridePath(root: string, promptId: string): string;
33
+ //# sourceMappingURL=prompt-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-pack.d.ts","sourceRoot":"","sources":["../../src/skills/prompt-pack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyC,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEjG,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IAG1C,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAFrC,QAAQ,CAAC,IAAI,kCAAkC;gBAE1B,QAAQ,EAAE,MAAM;CAItC;AAID,wBAAgB,sBAAsB;;;;;;IAErC;AAED,wBAAgB,kBAAkB,IAAI,aAAa,CAAC,aAAa,CAAC,CAEjE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAWrF;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAuB5G;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIzE"}
@@ -0,0 +1,82 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { BUILTIN_PROMPTS, BUILTIN_PROMPT_PACKS } from "./builtin-prompts.js";
4
+ export class PromptPackPromptNotFoundError extends Error {
5
+ promptId;
6
+ code = "PROMPT_PACK_PROMPT_NOT_FOUND";
7
+ constructor(promptId) {
8
+ super(`Prompt pack prompt not found: ${promptId}`);
9
+ this.promptId = promptId;
10
+ this.name = "PromptPackPromptNotFoundError";
11
+ }
12
+ }
13
+ const BUILTIN_PROMPT_BY_ID = new Map(BUILTIN_PROMPTS.map((prompt) => [prompt.id, prompt]));
14
+ export function listBuiltinPromptPacks() {
15
+ return BUILTIN_PROMPT_PACKS;
16
+ }
17
+ export function listBuiltinPrompts() {
18
+ return BUILTIN_PROMPTS;
19
+ }
20
+ export function getBuiltinPrompt(promptId) {
21
+ const normalized = normalizePromptId(promptId);
22
+ const prompt = BUILTIN_PROMPT_BY_ID.get(normalized);
23
+ if (!prompt)
24
+ return undefined;
25
+ return {
26
+ promptId: prompt.id,
27
+ content: prompt.content,
28
+ source: "builtin",
29
+ title: prompt.title,
30
+ packId: prompt.packId,
31
+ };
32
+ }
33
+ export async function loadPromptPackPrompt(input) {
34
+ const promptId = normalizePromptId(input.promptId);
35
+ if (input.projectRoot) {
36
+ const projectPath = promptOverridePath(input.projectRoot, promptId);
37
+ const content = await readTextIfExists(projectPath);
38
+ if (content !== undefined) {
39
+ return { promptId, content, source: "project", path: projectPath };
40
+ }
41
+ }
42
+ if (input.userRoot) {
43
+ const userPath = promptOverridePath(input.userRoot, promptId);
44
+ const content = await readTextIfExists(userPath);
45
+ if (content !== undefined) {
46
+ return { promptId, content, source: "user", path: userPath };
47
+ }
48
+ }
49
+ const builtin = getBuiltinPrompt(promptId);
50
+ if (builtin)
51
+ return builtin;
52
+ throw new PromptPackPromptNotFoundError(promptId);
53
+ }
54
+ export async function appendPromptPackGuidance(basePrompt, input) {
55
+ const prompt = await loadPromptPackPrompt(input);
56
+ const content = prompt.content.trim();
57
+ if (!content)
58
+ return basePrompt;
59
+ return [
60
+ basePrompt,
61
+ "",
62
+ `## Prompt Pack Guidance (${prompt.promptId}, source: ${prompt.source})`,
63
+ content,
64
+ ].join("\n");
65
+ }
66
+ export function promptOverridePath(root, promptId) {
67
+ const normalized = normalizePromptId(promptId);
68
+ const parts = normalized.split(".");
69
+ return join(root, "prompt", ...parts.slice(0, -1), `${parts.at(-1)}.md`);
70
+ }
71
+ function normalizePromptId(promptId) {
72
+ return promptId.trim().toLowerCase();
73
+ }
74
+ async function readTextIfExists(path) {
75
+ try {
76
+ return await readFile(path, "utf-8");
77
+ }
78
+ catch {
79
+ return undefined;
80
+ }
81
+ }
82
+ //# sourceMappingURL=prompt-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-pack.js","sourceRoot":"","sources":["../../src/skills/prompt-pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CapabilitySkillManifest, SkillRegistry } from "./types.js";
2
+ export interface CreateSkillRegistryOptions {
3
+ readonly skills?: ReadonlyArray<CapabilitySkillManifest>;
4
+ }
5
+ export declare function createSkillRegistry(options?: CreateSkillRegistryOptions): SkillRegistry;
6
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,aAAa,EAGd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;CAC1D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,aAAa,CA2D3F"}
@@ -0,0 +1,101 @@
1
+ import { BUILTIN_CAPABILITY_SKILLS } from "./builtin.js";
2
+ export function createSkillRegistry(options = {}) {
3
+ const skills = dedupeSkills([
4
+ ...BUILTIN_CAPABILITY_SKILLS,
5
+ ...(options.skills ?? []),
6
+ ]);
7
+ const byId = new Map(skills.map((skill) => [skill.id, skill]));
8
+ return {
9
+ listSkills() {
10
+ return skills;
11
+ },
12
+ getSkill(id) {
13
+ return byId.get(normalizeSkillId(id));
14
+ },
15
+ resolveSkills(input) {
16
+ const disabled = new Set(normalizeIdList(input.disabledSkills));
17
+ const requested = normalizeIdList(input.requestedSkills);
18
+ const candidates = normalizeIdList(input.candidateSkills);
19
+ const missingSkillIds = [];
20
+ const disabledSkillIds = [...disabled].filter((id) => byId.has(id));
21
+ const used = new Map();
22
+ const forcedSkillIds = [];
23
+ for (const id of requested) {
24
+ const skill = byId.get(id);
25
+ if (!skill) {
26
+ missingSkillIds.push(id);
27
+ continue;
28
+ }
29
+ if (disabled.has(id))
30
+ continue;
31
+ used.set(id, skill);
32
+ forcedSkillIds.push(id);
33
+ }
34
+ const autoSkillIds = [];
35
+ for (const id of candidates) {
36
+ const skill = byId.get(id);
37
+ if (!skill || disabled.has(id) || used.has(id))
38
+ continue;
39
+ used.set(id, skill);
40
+ autoSkillIds.push(id);
41
+ }
42
+ for (const skill of skills) {
43
+ if (disabled.has(skill.id) || used.has(skill.id))
44
+ continue;
45
+ if (!matchesSkill(skill, input))
46
+ continue;
47
+ used.set(skill.id, skill);
48
+ autoSkillIds.push(skill.id);
49
+ }
50
+ return {
51
+ usedSkills: [...used.values()],
52
+ forcedSkillIds,
53
+ autoSkillIds,
54
+ missingSkillIds: dedupeStrings(missingSkillIds),
55
+ disabledSkillIds,
56
+ availableSkillIds: skills.map((skill) => skill.id),
57
+ };
58
+ },
59
+ };
60
+ }
61
+ function dedupeSkills(skills) {
62
+ const byId = new Map();
63
+ for (const skill of skills) {
64
+ byId.set(normalizeSkillId(skill.id), {
65
+ ...skill,
66
+ id: normalizeSkillId(skill.id),
67
+ });
68
+ }
69
+ return [...byId.values()].sort((left, right) => left.id.localeCompare(right.id));
70
+ }
71
+ function normalizeIdList(values) {
72
+ return dedupeStrings((values ?? []).map(normalizeSkillId).filter(Boolean));
73
+ }
74
+ function normalizeSkillId(value) {
75
+ return value.trim().toLowerCase();
76
+ }
77
+ function dedupeStrings(values) {
78
+ const out = [];
79
+ const seen = new Set();
80
+ for (const value of values) {
81
+ if (!value || seen.has(value))
82
+ continue;
83
+ seen.add(value);
84
+ out.push(value);
85
+ }
86
+ return out;
87
+ }
88
+ function matchesSkill(skill, input) {
89
+ const sessionKind = input.sessionKind?.trim().toLowerCase();
90
+ if (sessionKind && skill.sessionKinds.some((kind) => kind.toLowerCase() === sessionKind)) {
91
+ return true;
92
+ }
93
+ const instruction = input.instruction?.trim().toLowerCase();
94
+ if (!instruction)
95
+ return false;
96
+ return skill.triggers.some((trigger) => {
97
+ const normalized = trigger.trim().toLowerCase();
98
+ return normalized.length > 0 && instruction.includes(normalized);
99
+ });
100
+ }
101
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAYzD,MAAM,UAAU,mBAAmB,CAAC,UAAsC,EAAE;IAC1E,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,GAAG,yBAAyB;QAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;KAC1B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,UAAU;YACR,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,QAAQ,CAAC,EAAU;YACjB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,aAAa,CAAC,KAA2B;YACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC1D,MAAM,eAAe,GAAa,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmC,CAAC;YACxD,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzB,SAAS;gBACX,CAAC;gBACD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACpB,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YAED,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,SAAS;gBACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACpB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;oBAAE,SAAS;gBAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC1B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,cAAc;gBACd,YAAY;gBACZ,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC;gBAC/C,gBAAgB;gBAChB,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;aACnB,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAA8C;IAClE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YACnC,GAAG,KAAK;YACR,EAAE,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,eAAe,CAAC,MAAyC;IAChE,OAAO,aAAa,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,aAAa,CAAC,MAA6B;IAClD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,KAA8B,EAAE,KAA2B;IAC/E,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5D,IAAI,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5D,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { z } from "zod";
2
+ export declare const SkillContextTierSchema: z.ZodEnum<["protected", "compressible"]>;
3
+ export type SkillContextTier = z.infer<typeof SkillContextTierSchema>;
4
+ export declare const SkillContextRetrievalSchema: z.ZodEnum<["full", "sections", "semantic"]>;
5
+ export type SkillContextRetrieval = z.infer<typeof SkillContextRetrievalSchema>;
6
+ export declare const SkillContextNeedSchema: z.ZodObject<{
7
+ id: z.ZodString;
8
+ purpose: z.ZodString;
9
+ sources: z.ZodArray<z.ZodString, "many">;
10
+ tier: z.ZodEnum<["protected", "compressible"]>;
11
+ appliesTo: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
12
+ retrieval: z.ZodDefault<z.ZodEnum<["full", "sections", "semantic"]>>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ id: string;
15
+ purpose: string;
16
+ sources: string[];
17
+ tier: "protected" | "compressible";
18
+ appliesTo: string[];
19
+ retrieval: "full" | "sections" | "semantic";
20
+ }, {
21
+ id: string;
22
+ purpose: string;
23
+ sources: string[];
24
+ tier: "protected" | "compressible";
25
+ appliesTo?: string[] | undefined;
26
+ retrieval?: "full" | "sections" | "semantic" | undefined;
27
+ }>;
28
+ export type SkillContextNeed = z.infer<typeof SkillContextNeedSchema>;
29
+ export declare const CapabilitySkillManifestSchema: z.ZodObject<{
30
+ id: z.ZodString;
31
+ name: z.ZodString;
32
+ description: z.ZodString;
33
+ whenToUse: z.ZodString;
34
+ triggers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
35
+ sessionKinds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
36
+ promptPacks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
37
+ toolHints: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
38
+ contextNeeds: z.ZodDefault<z.ZodArray<z.ZodObject<{
39
+ id: z.ZodString;
40
+ purpose: z.ZodString;
41
+ sources: z.ZodArray<z.ZodString, "many">;
42
+ tier: z.ZodEnum<["protected", "compressible"]>;
43
+ appliesTo: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
44
+ retrieval: z.ZodDefault<z.ZodEnum<["full", "sections", "semantic"]>>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ id: string;
47
+ purpose: string;
48
+ sources: string[];
49
+ tier: "protected" | "compressible";
50
+ appliesTo: string[];
51
+ retrieval: "full" | "sections" | "semantic";
52
+ }, {
53
+ id: string;
54
+ purpose: string;
55
+ sources: string[];
56
+ tier: "protected" | "compressible";
57
+ appliesTo?: string[] | undefined;
58
+ retrieval?: "full" | "sections" | "semantic" | undefined;
59
+ }>, "many">>;
60
+ body: z.ZodDefault<z.ZodString>;
61
+ source: z.ZodDefault<z.ZodEnum<["builtin", "project", "user", "external"]>>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ id: string;
64
+ name: string;
65
+ body: string;
66
+ source: "user" | "builtin" | "project" | "external";
67
+ description: string;
68
+ whenToUse: string;
69
+ triggers: string[];
70
+ sessionKinds: string[];
71
+ promptPacks: string[];
72
+ toolHints: string[];
73
+ contextNeeds: {
74
+ id: string;
75
+ purpose: string;
76
+ sources: string[];
77
+ tier: "protected" | "compressible";
78
+ appliesTo: string[];
79
+ retrieval: "full" | "sections" | "semantic";
80
+ }[];
81
+ }, {
82
+ id: string;
83
+ name: string;
84
+ description: string;
85
+ whenToUse: string;
86
+ body?: string | undefined;
87
+ source?: "user" | "builtin" | "project" | "external" | undefined;
88
+ triggers?: string[] | undefined;
89
+ sessionKinds?: string[] | undefined;
90
+ promptPacks?: string[] | undefined;
91
+ toolHints?: string[] | undefined;
92
+ contextNeeds?: {
93
+ id: string;
94
+ purpose: string;
95
+ sources: string[];
96
+ tier: "protected" | "compressible";
97
+ appliesTo?: string[] | undefined;
98
+ retrieval?: "full" | "sections" | "semantic" | undefined;
99
+ }[] | undefined;
100
+ }>;
101
+ export type CapabilitySkillManifest = z.infer<typeof CapabilitySkillManifestSchema>;
102
+ export declare const PromptPackManifestSchema: z.ZodObject<{
103
+ id: z.ZodString;
104
+ title: z.ZodString;
105
+ description: z.ZodString;
106
+ prompts: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
107
+ source: z.ZodDefault<z.ZodEnum<["builtin", "project", "user", "external"]>>;
108
+ }, "strip", z.ZodTypeAny, {
109
+ id: string;
110
+ title: string;
111
+ source: "user" | "builtin" | "project" | "external";
112
+ description: string;
113
+ prompts: string[];
114
+ }, {
115
+ id: string;
116
+ title: string;
117
+ description: string;
118
+ source?: "user" | "builtin" | "project" | "external" | undefined;
119
+ prompts?: string[] | undefined;
120
+ }>;
121
+ export type PromptPackManifest = z.infer<typeof PromptPackManifestSchema>;
122
+ export interface SkillResolutionInput {
123
+ readonly requestedSkills?: ReadonlyArray<string>;
124
+ readonly disabledSkills?: ReadonlyArray<string>;
125
+ readonly sessionKind?: string;
126
+ readonly instruction?: string;
127
+ /**
128
+ * Optional future seam for an agent/model to propose candidate skill ids.
129
+ * The registry validates and filters those ids instead of relying on prose.
130
+ */
131
+ readonly candidateSkills?: ReadonlyArray<string>;
132
+ }
133
+ export interface SkillResolutionResult {
134
+ readonly usedSkills: ReadonlyArray<CapabilitySkillManifest>;
135
+ readonly forcedSkillIds: ReadonlyArray<string>;
136
+ readonly autoSkillIds: ReadonlyArray<string>;
137
+ readonly missingSkillIds: ReadonlyArray<string>;
138
+ readonly disabledSkillIds: ReadonlyArray<string>;
139
+ readonly availableSkillIds: ReadonlyArray<string>;
140
+ }
141
+ export interface SkillRegistry {
142
+ listSkills(): ReadonlyArray<CapabilitySkillManifest>;
143
+ getSkill(id: string): CapabilitySkillManifest | undefined;
144
+ resolveSkills(input: SkillResolutionInput): SkillResolutionResult;
145
+ }
146
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB,0CAAwC,CAAC;AAC5E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,2BAA2B,6CAA2C,CAAC;AACpF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAC5D,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,IAAI,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAC1D,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAAC;CACnE"}
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ export const SkillContextTierSchema = z.enum(["protected", "compressible"]);
3
+ export const SkillContextRetrievalSchema = z.enum(["full", "sections", "semantic"]);
4
+ export const SkillContextNeedSchema = z.object({
5
+ id: z.string().min(1),
6
+ purpose: z.string().min(1),
7
+ sources: z.array(z.string().min(1)).min(1),
8
+ tier: SkillContextTierSchema,
9
+ appliesTo: z.array(z.string().min(1)).default([]),
10
+ retrieval: SkillContextRetrievalSchema.default("semantic"),
11
+ });
12
+ export const CapabilitySkillManifestSchema = z.object({
13
+ id: z.string().min(1),
14
+ name: z.string().min(1),
15
+ description: z.string().min(1),
16
+ whenToUse: z.string().min(1),
17
+ triggers: z.array(z.string().min(1)).default([]),
18
+ sessionKinds: z.array(z.string().min(1)).default([]),
19
+ promptPacks: z.array(z.string().min(1)).default([]),
20
+ toolHints: z.array(z.string().min(1)).default([]),
21
+ contextNeeds: z.array(SkillContextNeedSchema).default([]),
22
+ body: z.string().default(""),
23
+ source: z.enum(["builtin", "project", "user", "external"]).default("builtin"),
24
+ });
25
+ export const PromptPackManifestSchema = z.object({
26
+ id: z.string().min(1),
27
+ title: z.string().min(1),
28
+ description: z.string().min(1),
29
+ prompts: z.array(z.string().min(1)).default([]),
30
+ source: z.enum(["builtin", "project", "user", "external"]).default("builtin"),
31
+ });
32
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"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"}
@@ -31,8 +31,14 @@ export declare class StateManager {
31
31
  getNextChapterNumber(bookId: string): Promise<number>;
32
32
  getPersistedChapterCount(bookId: string): Promise<number>;
33
33
  loadChapterIndex(bookId: string): Promise<ReadonlyArray<ChapterMeta>>;
34
- saveChapterIndex(bookId: string, index: ReadonlyArray<ChapterMeta>): Promise<void>;
35
- saveChapterIndexAt(bookDir: string, index: ReadonlyArray<ChapterMeta>): Promise<void>;
34
+ private rebuildChapterIndexFromFiles;
35
+ private rebuildChapterIndexFromFilesAt;
36
+ saveChapterIndex(bookId: string, index: ReadonlyArray<ChapterMeta>, options?: {
37
+ readonly allowEmptyWithChapterFiles?: boolean;
38
+ }): Promise<void>;
39
+ saveChapterIndexAt(bookDir: string, index: ReadonlyArray<ChapterMeta>, options?: {
40
+ readonly allowEmptyWithChapterFiles?: boolean;
41
+ }): Promise<void>;
36
42
  snapshotState(bookId: string, chapterNumber: number): Promise<void>;
37
43
  snapshotStateAt(bookDir: string, chapterNumber: number): Promise<void>;
38
44
  isCompleteBookDirectory(bookDir: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/state/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/state/manager.ts"],"names":[],"mappings":"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"}