kibi-cli 0.11.0 → 0.11.3

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 (69) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +36 -0
  3. package/dist/commands/check.d.ts.map +1 -1
  4. package/dist/commands/check.js +1 -1
  5. package/dist/commands/init-helpers.d.ts.map +1 -1
  6. package/dist/commands/init-helpers.js +2 -3
  7. package/dist/commands/migrate.d.ts.map +1 -1
  8. package/dist/commands/migrate.js +7 -2
  9. package/dist/commands/skills.d.ts +14 -0
  10. package/dist/commands/skills.d.ts.map +1 -0
  11. package/dist/commands/skills.js +86 -0
  12. package/dist/commands/sync/manifest.d.ts +1 -1
  13. package/dist/commands/sync/manifest.d.ts.map +1 -1
  14. package/dist/commands/sync/manifest.js +7 -4
  15. package/dist/commands/sync/staging.d.ts.map +1 -1
  16. package/dist/commands/sync/staging.js +2 -1
  17. package/dist/commands/sync.d.ts.map +1 -1
  18. package/dist/commands/sync.js +3 -1
  19. package/dist/extractors/manifest.d.ts.map +1 -1
  20. package/dist/extractors/manifest.js +3 -1
  21. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  22. package/dist/extractors/symbol-coordinates.js +1 -1
  23. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  24. package/dist/extractors/symbols-coordinator.js +2 -1
  25. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  26. package/dist/extractors/symbols-ts.js +3 -1
  27. package/dist/prolog.d.ts.map +1 -1
  28. package/dist/prolog.js +14 -1
  29. package/dist/public/ignore-policy.d.ts.map +1 -1
  30. package/dist/public/ignore-policy.js +8 -4
  31. package/dist/public/operational-artifacts.d.ts.map +1 -1
  32. package/dist/public/operational-artifacts.js +1 -0
  33. package/dist/public/skills/kibi-usage/SKILL.md +205 -0
  34. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +123 -0
  35. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +89 -0
  36. package/dist/public/skills/kibi-usage/resources/workflows.md +28 -0
  37. package/dist/public/skills.d.ts +42 -0
  38. package/dist/public/skills.d.ts.map +1 -0
  39. package/dist/public/skills.js +270 -0
  40. package/dist/search-ranking.d.ts.map +1 -1
  41. package/dist/traceability/evidence-model.d.ts.map +1 -1
  42. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  43. package/dist/traceability/staged-diagnostics.js +1 -1
  44. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  45. package/dist/traceability/staged-symbols-manifest.js +8 -2
  46. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  47. package/dist/traceability/symbol-extract.js +4 -1
  48. package/dist/utils/config.d.ts +3 -18
  49. package/dist/utils/config.d.ts.map +1 -1
  50. package/dist/utils/config.js +4 -40
  51. package/dist/utils/manifest-paths.d.ts.map +1 -1
  52. package/dist/utils/manifest-paths.js +3 -1
  53. package/dist/utils/schema-version.d.ts.map +1 -1
  54. package/dist/utils/strict-modeling.d.ts +1 -1
  55. package/dist/utils/strict-modeling.d.ts.map +1 -1
  56. package/dist/utils/strict-modeling.js +13 -3
  57. package/package.json +7 -13
  58. package/schema/config.json +0 -68
  59. package/src/public/ignore-policy.ts +26 -10
  60. package/src/public/operational-artifacts.ts +2 -1
  61. package/src/public/skills/kibi-usage/SKILL.md +205 -0
  62. package/src/public/skills/kibi-usage/resources/fact-lanes.md +123 -0
  63. package/src/public/skills/kibi-usage/resources/relationship-directions.md +89 -0
  64. package/src/public/skills/kibi-usage/resources/workflows.md +28 -0
  65. package/src/public/skills.ts +427 -0
  66. package/dist/public/brief-config.d.ts +0 -4
  67. package/dist/public/brief-config.d.ts.map +0 -1
  68. package/dist/public/brief-config.js +0 -21
  69. package/src/public/brief-config.ts +0 -25
@@ -0,0 +1,270 @@
1
+ import { existsSync, readFileSync, readdirSync, realpathSync, statSync, } from "node:fs";
2
+ import { dirname, isAbsolute, join, normalize, relative, resolve, } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import matter from "gray-matter";
5
+ const SKILL_MARKDOWN_MAX_BYTES = 256 * 1024;
6
+ const RESOURCE_MAX_BYTES = 128 * 1024;
7
+ const SKILL_FILE_NAME = "SKILL.md";
8
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
9
+ let bundledSkillsDir = resolve(moduleDir, "skills");
10
+ const defaultBundledSkillsDir = bundledSkillsDir;
11
+ export function setBundledSkillsDir(dir) {
12
+ bundledSkillsDir = dir;
13
+ }
14
+ export function resetBundledSkillsDir() {
15
+ bundledSkillsDir = defaultBundledSkillsDir;
16
+ }
17
+ export class SkillNotFoundError extends Error {
18
+ constructor(id) {
19
+ super(`Skill not found: ${id}`);
20
+ this.name = "SkillNotFoundError";
21
+ }
22
+ }
23
+ export class SkillResourceNotFoundError extends Error {
24
+ constructor(id, resourcePath) {
25
+ super(`Skill resource not found: ${id}/${resourcePath}`);
26
+ this.name = "SkillResourceNotFoundError";
27
+ }
28
+ }
29
+ export class SkillResourceOutOfBoundsError extends Error {
30
+ constructor(id, resourcePath) {
31
+ super(`Skill resource escapes bundle root: ${id}/${resourcePath}`);
32
+ this.name = "SkillResourceOutOfBoundsError";
33
+ }
34
+ }
35
+ export class SkillValidationError extends Error {
36
+ field;
37
+ constructor(field, message) {
38
+ super(message);
39
+ this.name = "SkillValidationError";
40
+ this.field = field;
41
+ }
42
+ }
43
+ export class SkillOversizeError extends Error {
44
+ maxBytes;
45
+ actualBytes;
46
+ constructor(pathLike, maxBytes, actualBytes) {
47
+ super(`Skill file exceeds ${maxBytes} bytes: ${pathLike} (${actualBytes} bytes)`);
48
+ this.name = "SkillOversizeError";
49
+ this.maxBytes = maxBytes;
50
+ this.actualBytes = actualBytes;
51
+ }
52
+ }
53
+ export function listBundledSkills() {
54
+ // implements REQ-001
55
+ if (!existsSync(bundledSkillsDir)) {
56
+ return [];
57
+ }
58
+ return readdirSync(bundledSkillsDir, { withFileTypes: true })
59
+ .filter((entry) => entry.isDirectory())
60
+ .map((entry) => join(bundledSkillsDir, entry.name))
61
+ .filter((rootDir) => existsSync(join(rootDir, SKILL_FILE_NAME)))
62
+ .map((rootDir) => parseSkillBundle(rootDir).manifest)
63
+ .sort((left, right) => left.id.localeCompare(right.id));
64
+ }
65
+ export function loadBundledSkill(id) {
66
+ // implements REQ-001
67
+ const rootDir = findBundledSkillRoot(id);
68
+ if (!rootDir) {
69
+ throw new SkillNotFoundError(id);
70
+ }
71
+ return parseSkillBundle(rootDir);
72
+ }
73
+ export function readBundledSkillResource(id, resourcePath) {
74
+ // implements REQ-001
75
+ const bundle = loadBundledSkill(id);
76
+ const declaredResource = normalizeResourcePath(resourcePath);
77
+ if (!declaredResource || isPathOutOfBounds(resourcePath)) {
78
+ throw new SkillResourceOutOfBoundsError(id, resourcePath);
79
+ }
80
+ if (!isDeclaredResource(bundle.manifest, declaredResource)) {
81
+ throw new SkillResourceNotFoundError(id, resourcePath);
82
+ }
83
+ const candidatePath = resolve(bundle.rootDir, declaredResource);
84
+ let realResourcePath;
85
+ let realRootDir;
86
+ try {
87
+ realResourcePath = realpathSync(candidatePath);
88
+ realRootDir = realpathSync(bundle.rootDir);
89
+ }
90
+ catch {
91
+ throw new SkillResourceNotFoundError(id, resourcePath);
92
+ }
93
+ if (!isWithinRoot(realRootDir, realResourcePath)) {
94
+ throw new SkillResourceOutOfBoundsError(id, resourcePath);
95
+ }
96
+ assertMaxBytes(candidatePath, RESOURCE_MAX_BYTES);
97
+ return readFileSync(candidatePath, "utf8");
98
+ }
99
+ export function validateSkillBundle(pathLike) {
100
+ // implements REQ-001
101
+ const skillFilePath = resolveSkillFilePath(pathLike);
102
+ const errors = [];
103
+ if (!existsSync(skillFilePath)) {
104
+ errors.push(new SkillValidationError("SKILL.md", `Missing ${SKILL_FILE_NAME}`));
105
+ return { valid: false, errors };
106
+ }
107
+ const parsed = matter(readFileSync(skillFilePath, "utf8"));
108
+ errors.push(...validateManifestData(parsed.data));
109
+ if (errors.length === 0) {
110
+ validateBundleContents(skillFilePath, coerceManifest(parsed.data), errors);
111
+ }
112
+ return { valid: errors.length === 0, errors };
113
+ }
114
+ function validateBundleContents(skillFilePath, manifest, errors) {
115
+ try {
116
+ assertMaxBytes(skillFilePath, SKILL_MARKDOWN_MAX_BYTES);
117
+ }
118
+ catch (error) {
119
+ errors.push(new SkillValidationError("SKILL.md", error instanceof Error ? error.message : String(error)));
120
+ }
121
+ const rootDir = dirname(skillFilePath);
122
+ let realRootDir;
123
+ try {
124
+ realRootDir = realpathSync(rootDir);
125
+ }
126
+ catch (error) {
127
+ errors.push(new SkillValidationError("SKILL.md", error instanceof Error ? error.message : String(error)));
128
+ return;
129
+ }
130
+ for (const resource of manifest.resources ?? []) {
131
+ const resourcePath = resolve(rootDir, resource);
132
+ try {
133
+ if (!existsSync(resourcePath)) {
134
+ errors.push(new SkillValidationError("resources", `Missing skill resource: ${resource}`));
135
+ continue;
136
+ }
137
+ const realResourcePath = realpathSync(resourcePath);
138
+ if (!isWithinRoot(realRootDir, realResourcePath)) {
139
+ errors.push(new SkillValidationError("resources", `Skill resource escapes bundle root: ${resource}`));
140
+ continue;
141
+ }
142
+ assertMaxBytes(resourcePath, RESOURCE_MAX_BYTES);
143
+ }
144
+ catch (error) {
145
+ errors.push(new SkillValidationError("resources", error instanceof Error ? error.message : String(error)));
146
+ }
147
+ }
148
+ }
149
+ function findBundledSkillRoot(id) {
150
+ if (!existsSync(bundledSkillsDir)) {
151
+ return undefined;
152
+ }
153
+ for (const entry of readdirSync(bundledSkillsDir, { withFileTypes: true })) {
154
+ if (!entry.isDirectory()) {
155
+ continue;
156
+ }
157
+ const rootDir = join(bundledSkillsDir, entry.name);
158
+ const skillFilePath = join(rootDir, SKILL_FILE_NAME);
159
+ if (!existsSync(skillFilePath)) {
160
+ continue;
161
+ }
162
+ const manifest = parseSkillBundle(rootDir).manifest;
163
+ if (manifest.id === id) {
164
+ return rootDir;
165
+ }
166
+ }
167
+ return undefined;
168
+ }
169
+ function parseSkillBundle(rootDir) {
170
+ const skillFilePath = join(rootDir, SKILL_FILE_NAME);
171
+ assertMaxBytes(skillFilePath, SKILL_MARKDOWN_MAX_BYTES);
172
+ const parsed = matter(readFileSync(skillFilePath, "utf8"));
173
+ const errors = validateManifestData(parsed.data);
174
+ if (errors.length > 0) {
175
+ throw errors[0];
176
+ }
177
+ return {
178
+ manifest: coerceManifest(parsed.data),
179
+ body: parsed.content,
180
+ rootDir: resolve(rootDir),
181
+ };
182
+ }
183
+ function validateManifestData(data) {
184
+ const errors = [];
185
+ const requiredFields = [
186
+ "id",
187
+ "name",
188
+ "description",
189
+ "version",
190
+ "kibiCompatibility",
191
+ ];
192
+ for (const field of requiredFields) {
193
+ if (typeof data[field] !== "string" || data[field].trim() === "") {
194
+ errors.push(new SkillValidationError(field, `Missing required skill field: ${field}`));
195
+ }
196
+ }
197
+ if (typeof data.version === "string" &&
198
+ !/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(data.version)) {
199
+ errors.push(new SkillValidationError("version", `Invalid skill version: ${data.version}`));
200
+ }
201
+ if (data.tags !== undefined && !isStringArray(data.tags)) {
202
+ errors.push(new SkillValidationError("tags", "Skill tags must be strings"));
203
+ }
204
+ if (data.resources !== undefined) {
205
+ if (!isStringArray(data.resources)) {
206
+ errors.push(new SkillValidationError("resources", "Skill resources must be strings"));
207
+ }
208
+ else {
209
+ for (const resource of data.resources) {
210
+ const normalized = normalizeResourcePath(resource);
211
+ if (!normalized || isPathOutOfBounds(resource)) {
212
+ errors.push(new SkillValidationError("resources", `Invalid skill resource: ${resource}`));
213
+ }
214
+ }
215
+ }
216
+ }
217
+ return errors;
218
+ }
219
+ function coerceManifest(data) {
220
+ const manifest = {
221
+ id: String(data.id),
222
+ name: String(data.name),
223
+ description: String(data.description),
224
+ version: String(data.version),
225
+ kibiCompatibility: String(data.kibiCompatibility),
226
+ };
227
+ if (isStringArray(data.tags)) {
228
+ manifest.tags = data.tags;
229
+ }
230
+ if (isStringArray(data.resources)) {
231
+ manifest.resources = data.resources.map((resource) => normalizeResourcePath(resource));
232
+ }
233
+ return manifest;
234
+ }
235
+ function isStringArray(value) {
236
+ return (Array.isArray(value) && value.every((item) => typeof item === "string"));
237
+ }
238
+ function normalizeResourcePath(pathLike) {
239
+ return normalize(pathLike).replaceAll("\\", "/");
240
+ }
241
+ function isPathOutOfBounds(pathLike) {
242
+ const normalized = normalizeResourcePath(pathLike);
243
+ return (isAbsolute(pathLike) ||
244
+ normalized === ".." ||
245
+ normalized.startsWith("../") ||
246
+ normalized.includes("/../"));
247
+ }
248
+ function isDeclaredResource(manifest, resourcePath) {
249
+ return (manifest.resources ?? []).some((declared) => normalizeResourcePath(declared) === resourcePath);
250
+ }
251
+ function isWithinRoot(rootDir, candidatePath) {
252
+ const relativePath = relative(rootDir, candidatePath);
253
+ return (relativePath === "" ||
254
+ (!relativePath.startsWith("..") && !isAbsolute(relativePath)));
255
+ }
256
+ function assertMaxBytes(pathLike, maxBytes) {
257
+ const size = statSync(pathLike).size;
258
+ if (size > maxBytes) {
259
+ throw new SkillOversizeError(pathLike, maxBytes, size);
260
+ }
261
+ }
262
+ function resolveSkillFilePath(pathLike) {
263
+ const resolved = resolve(pathLike);
264
+ if (existsSync(resolved) && statSync(resolved).isDirectory()) {
265
+ return join(resolved, SKILL_FILE_NAME);
266
+ }
267
+ return resolved.endsWith(SKILL_FILE_NAME)
268
+ ? resolved
269
+ : join(resolved, SKILL_FILE_NAME);
270
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"search-ranking.d.ts","sourceRoot":"","sources":["../src/search-ranking.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgDD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CA8BxB;AAmGD,wBAAsB,gBAAgB,CAEpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BxB"}
1
+ {"version":3,"file":"search-ranking.d.ts","sourceRoot":"","sources":["../src/search-ranking.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgDD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CA8BxB;AAsGD,wBAAsB,gBAAgB,CAEpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"evidence-model.d.ts","sourceRoot":"","sources":["../../src/traceability/evidence-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence-model.d.ts","sourceRoot":"","sources":["../../src/traceability/evidence-model.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAEvE,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,0CACA,CAAC;AAE1C,mEAAmE;AACnE,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAE9D,oEAAoE;AACpE,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,UAAU,GACV,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GACxB,sBAAsB,GACtB,0BAA0B,CAAC;AAE/B,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,CAAC;IAC7C,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,yBAAyB;IACxC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACtD,kFAAkF;IAClF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,0DAA0D;AAC1D,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,4BAA4B,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,WAAW,EAAE,OAAO,0BAA0B,CAAC;IAC/C,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,YAAY,CAAC;IACnB,oEAAoE;IACpE,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,0EAA0E;AAC1E,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,oBAAoB,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,6EAA6E;AAC7E,MAAM,MAAM,cAAc,GACtB,uBAAuB,GACvB,8BAA8B,GAC9B,qBAAqB,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,2EAA2E;IAC3E,eAAe,EAAE,yBAAyB,CAAC;IAC3C,wDAAwD;IACxD,IAAI,EAAE,cAAc,CAAC;CACtB;AAMD,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAK7E;AAED,oEAAoE;AACpE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,EAAE,CAQV;AAED,gFAAgF;AAChF,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,EAAE,CAMV;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAYzE;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAK1E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,EAAE,CAQV"}
@@ -1 +1 @@
1
- {"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,sBAAsB,GAC9B,8BAA8B,GAC9B,wBAAwB,GACxB,wCAAwC,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,EAAE,EAAE,sBAAsB,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gDAAgD;IAChD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AAsDD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,EAAE,CAoCxB"}
1
+ {"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EAIxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,sBAAsB,GAC9B,8BAA8B,GAC9B,wBAAwB,GACxB,wCAAwC,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,EAAE,EAAE,sBAAsB,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gDAAgD;IAChD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AAsDD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,EAAE,CAoCxB"}
@@ -1,4 +1,4 @@
1
- import { KIBI_ENTITY_SCHEMA_DOC, KIBI_SYMBOL_COORDINATES_PATH, KIBI_SYMBOLS_MANIFEST_PATH, getBehaviorSourcePaths, getMissingBehaviorSourcePaths, hasOverrideRationale, } from "./evidence-model.js";
1
+ import { KIBI_ENTITY_SCHEMA_DOC, KIBI_SYMBOLS_MANIFEST_PATH, KIBI_SYMBOL_COORDINATES_PATH, getBehaviorSourcePaths, getMissingBehaviorSourcePaths, hasOverrideRationale, } from "./evidence-model.js";
2
2
  function formatFileList(paths) {
3
3
  return paths.join(", ");
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"staged-symbols-manifest.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-symbols-manifest.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA8BlD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAAC;IACtD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC7D;AAmQD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,+BAA+B,CA0ElC;AAoBD,wBAAgB,4CAA4C,CAAC,OAAO,EAAE;IACpE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,qCAAqC,CA6CxC"}
1
+ {"version":3,"file":"staged-symbols-manifest.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-symbols-manifest.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA8BlD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAAC;IACtD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC7D;AA8QD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,+BAA+B,CA8ElC;AAoBD,wBAAgB,4CAA4C,CAAC,OAAO,EAAE;IACpE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,qCAAqC,CAmDxC"}
@@ -135,7 +135,9 @@ function normalizeAuthoredManifestSymbolsForSourceFile(records, sourceFile) {
135
135
  links: normalizeLinks(record.links),
136
136
  relationships: normalizeRelationships(record.relationships),
137
137
  tags: Array.isArray(record.tags)
138
- ? record.tags.filter((tag) => typeof tag === "string").sort()
138
+ ? record.tags
139
+ .filter((tag) => typeof tag === "string")
140
+ .sort()
139
141
  : [],
140
142
  owner: typeof record.owner === "string" ? record.owner : null,
141
143
  priority: typeof record.priority === "string" ? record.priority : null,
@@ -218,7 +220,11 @@ export function assessStagedSymbolsManifest(options) {
218
220
  }
219
221
  const sourcePaths = uniqueSorted(requiredRefreshPaths);
220
222
  if (sourcePaths.length === 0) {
221
- return { state: "not_required", sourcePaths: [], path: paths.coordinatesPath };
223
+ return {
224
+ state: "not_required",
225
+ sourcePaths: [],
226
+ path: paths.coordinatesPath,
227
+ };
222
228
  }
223
229
  if (sourcePaths.every((sourcePath) => freshPaths.has(sourcePath))) {
224
230
  return { state: "fresh", sourcePaths, path: paths.coordinatesPath };
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-extract.d.ts","sourceRoot":"","sources":["../../src/traceability/symbol-extract.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,KAAK,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAU7D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAE9D,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG5E;AA+ND,wBAAgB,4BAA4B,CAE1C,UAAU,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,cAAc,GAC9B,eAAe,EAAE,CA+JnB"}
1
+ {"version":3,"file":"symbol-extract.d.ts","sourceRoot":"","sources":["../../src/traceability/symbol-extract.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,KAAK,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAU7D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAE9D,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG5E;AAkOD,wBAAgB,4BAA4B,CAE1C,UAAU,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,cAAc,GAC9B,eAAe,EAAE,CA+JnB"}
@@ -92,7 +92,10 @@ function extractRelationshipsFromManifestRecord(record) {
92
92
  if (relationship &&
93
93
  typeof relationship.type === "string" &&
94
94
  typeof relationship.target === "string") {
95
- relationships.push({ type: relationship.type, to: relationship.target });
95
+ relationships.push({
96
+ type: relationship.type,
97
+ to: relationship.target,
98
+ });
96
99
  }
97
100
  }
98
101
  }
@@ -12,23 +12,6 @@ export interface KbConfigPaths {
12
12
  facts?: string;
13
13
  symbols?: string;
14
14
  }
15
- export interface BriefsConfig {
16
- enabled: boolean;
17
- retention?: {
18
- maxPerBranch?: number;
19
- maxAgeDays?: number;
20
- keepUnread?: boolean;
21
- };
22
- channels: {
23
- vscode: boolean;
24
- tui: boolean;
25
- };
26
- tui: {
27
- toast: boolean;
28
- appendPrompt: boolean;
29
- idleDelayMs?: number;
30
- };
31
- }
32
15
  /**
33
16
  * Shared configuration for Kibi.
34
17
  * Stored in .kb/config.json
@@ -36,7 +19,6 @@ export interface BriefsConfig {
36
19
  export interface KbConfig {
37
20
  paths: KbConfigPaths;
38
21
  schemaVersion?: number | string;
39
- briefs?: BriefsConfig;
40
22
  /**
41
23
  * @deprecated defaultBranch is deprecated. Branch lifecycle now follows git naturally
42
24
  * without requiring a configured default. This field is ignored but kept for compatibility.
@@ -45,6 +27,9 @@ export interface KbConfig {
45
27
  checks?: ChecksConfig;
46
28
  }
47
29
  export type { ChecksConfig, SymbolTraceabilityOptions };
30
+ /**
31
+ * Default configuration values for new repositories.
32
+ */
48
33
  export declare const DEFAULT_CONFIG: KbConfig & {
49
34
  $schema: string;
50
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE;QACV,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,GAAG,EAAE,OAAO,CAAC;KACd,CAAC;IACF,GAAG,EAAE;QACH,KAAK,EAAE,OAAO,CAAC;QACf,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,YAAY,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAwBxD,eAAO,MAAM,cAAc,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAgBxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAShC,CAAC;AA8CF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,QAAQ,CAiChE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,QAAQ,CAiCpE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,YAAY,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAExD;;GAEG;AAEH,eAAO,MAAM,cAAc,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAgBxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAUhC,CAAC;AA4BF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,QAAQ,CAgChE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,QAAQ,CAgCpE"}
@@ -22,25 +22,9 @@ import { LATEST_KB_SCHEMA_VERSION } from "./schema-version.js";
22
22
  /**
23
23
  * Default configuration values for new repositories.
24
24
  */
25
- const DEFAULT_BRIEFS_CONFIG = {
26
- enabled: true,
27
- retention: {
28
- maxPerBranch: 200,
29
- maxAgeDays: 14,
30
- keepUnread: true,
31
- },
32
- channels: {
33
- vscode: true,
34
- tui: true,
35
- },
36
- tui: {
37
- toast: true,
38
- appendPrompt: true,
39
- idleDelayMs: 1500,
40
- },
41
- };
42
25
  // implements REQ-003
43
26
  export const DEFAULT_CONFIG = {
27
+ // implements REQ-003
44
28
  $schema: "https://raw.githubusercontent.com/Looted/kibi/master/packages/cli/schema/config.json",
45
29
  schemaVersion: LATEST_KB_SCHEMA_VERSION,
46
30
  paths: {
@@ -53,13 +37,13 @@ export const DEFAULT_CONFIG = {
53
37
  facts: "documentation/facts",
54
38
  symbols: "documentation/symbols.yaml",
55
39
  },
56
- briefs: DEFAULT_BRIEFS_CONFIG,
57
40
  checks: DEFAULT_CHECKS_CONFIG,
58
41
  };
59
42
  /**
60
43
  * Default paths used by sync command (backward compatible glob patterns).
61
44
  */
62
45
  export const DEFAULT_SYNC_PATHS = {
46
+ // implements REQ-003
63
47
  requirements: "requirements/**/*.md",
64
48
  scenarios: "scenarios/**/*.md",
65
49
  tests: "tests/**/*.md",
@@ -69,24 +53,6 @@ export const DEFAULT_SYNC_PATHS = {
69
53
  facts: "facts/**/*.md",
70
54
  symbols: "symbols.yaml",
71
55
  };
72
- function mergeBriefsConfig(userBriefs) {
73
- return {
74
- ...DEFAULT_BRIEFS_CONFIG,
75
- ...userBriefs,
76
- channels: {
77
- ...DEFAULT_BRIEFS_CONFIG.channels,
78
- ...userBriefs?.channels,
79
- },
80
- tui: {
81
- ...DEFAULT_BRIEFS_CONFIG.tui,
82
- ...userBriefs?.tui,
83
- },
84
- retention: {
85
- ...DEFAULT_BRIEFS_CONFIG.retention,
86
- ...userBriefs?.retention,
87
- },
88
- };
89
- }
90
56
  function readUserConfig(configPath) {
91
57
  if (!existsSync(configPath)) {
92
58
  return {
@@ -124,12 +90,11 @@ export function loadConfig(cwd = process.cwd()) {
124
90
  ...DEFAULT_CONFIG.paths,
125
91
  ...userConfig.paths,
126
92
  },
127
- ...((userConfig.schemaVersion !== undefined || useDefaultSchemaVersion)
93
+ ...(userConfig.schemaVersion !== undefined || useDefaultSchemaVersion
128
94
  ? {
129
95
  schemaVersion: userConfig.schemaVersion ?? DEFAULT_CONFIG.schemaVersion,
130
96
  }
131
97
  : {}),
132
- briefs: mergeBriefsConfig(userConfig.briefs),
133
98
  ...(userConfig.defaultBranch !== undefined
134
99
  ? { defaultBranch: userConfig.defaultBranch }
135
100
  : {}),
@@ -164,12 +129,11 @@ export function loadSyncConfig(cwd = process.cwd()) {
164
129
  ...DEFAULT_SYNC_PATHS,
165
130
  ...userConfig.paths,
166
131
  },
167
- ...((userConfig.schemaVersion !== undefined || useDefaultSchemaVersion)
132
+ ...(userConfig.schemaVersion !== undefined || useDefaultSchemaVersion
168
133
  ? {
169
134
  schemaVersion: userConfig.schemaVersion ?? DEFAULT_CONFIG.schemaVersion,
170
135
  }
171
136
  : {}),
172
- briefs: mergeBriefsConfig(userConfig.briefs),
173
137
  ...(userConfig.defaultBranch !== undefined
174
138
  ? { defaultBranch: userConfig.defaultBranch }
175
139
  : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-paths.d.ts","sourceRoot":"","sources":["../../src/utils/manifest-paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAuEhF,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CASlD;AAGD,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAER"}
1
+ {"version":3,"file":"manifest-paths.d.ts","sourceRoot":"","sources":["../../src/utils/manifest-paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAkFhF,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CASlD;AAGD,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAER"}
@@ -42,7 +42,9 @@ function resolveDefaultSymbolsPath(workspaceRoot) {
42
42
  path.join(workspaceRoot, "symbols.yaml"),
43
43
  path.join(workspaceRoot, "symbols.yml"),
44
44
  ];
45
- return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0] ?? path.join(workspaceRoot, DEFAULT_SYMBOLS_PATH);
45
+ return (candidates.find((candidate) => existsSync(candidate)) ??
46
+ candidates[0] ??
47
+ path.join(workspaceRoot, DEFAULT_SYMBOLS_PATH));
46
48
  }
47
49
  function deriveCoordinatesPath(symbolsPath) {
48
50
  return path.join(path.dirname(symbolsPath), path.basename(DEFAULT_COORDINATES_PATH));
@@ -1 +1 @@
1
- {"version":3,"file":"schema-version.d.ts","sourceRoot":"","sources":["../../src/utils/schema-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAG9E,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAChD,MAAM,GAAG,IAAI,CAgBf;AAGD,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,mBAAmB,GAC3B,mBAAmB,CA8CrB"}
1
+ {"version":3,"file":"schema-version.d.ts","sourceRoot":"","sources":["../../src/utils/schema-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAG9E,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAChD,MAAM,GAAG,IAAI,CAgBf;AAGD,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,mBAAmB,GAC3B,mBAAmB,CA6CrB"}
@@ -1,6 +1,6 @@
1
- import { type KbConfigPaths } from "./config.js";
2
1
  import type { BaseEntity, FactFields } from "../types/entities.js";
3
2
  import type { BaseRelationship } from "../types/relationships.js";
3
+ import { type KbConfigPaths } from "./config.js";
4
4
  export interface SemanticClaim {
5
5
  source: string;
6
6
  subjectKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"strict-modeling.d.ts","sourceRoot":"","sources":["../../src/utils/strict-modeling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strict-modeling.d.ts","sourceRoot":"","sources":["../../src/utils/strict-modeling.ts"],"names":[],"mappings":"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"}
@@ -90,7 +90,11 @@ export function buildStrictWriteSet(input) {
90
90
  status: "active",
91
91
  source: buildEntitySourcePath(sourcePaths.facts, ids.observationFactId),
92
92
  text_ref: textRef,
93
- tags: buildUniqueTags([...metadataTags, "lane:observation", "review:required"]),
93
+ tags: buildUniqueTags([
94
+ ...metadataTags,
95
+ "lane:observation",
96
+ "review:required",
97
+ ]),
94
98
  fact_kind: "observation",
95
99
  subject_key: ids.normalizedSubjectKey,
96
100
  property_key: ids.normalizedPropertyKey,
@@ -138,7 +142,11 @@ export function buildStrictWriteSet(input) {
138
142
  status: "active",
139
143
  source: buildEntitySourcePath(sourcePaths.facts, ids.propertyFactId),
140
144
  text_ref: textRef,
141
- tags: buildUniqueTags([...metadataTags, "lane:strict", "fact:property_value"]),
145
+ tags: buildUniqueTags([
146
+ ...metadataTags,
147
+ "lane:strict",
148
+ "fact:property_value",
149
+ ]),
142
150
  fact_kind: "property_value",
143
151
  subject_key: ids.normalizedSubjectKey,
144
152
  property_key: ids.normalizedPropertyKey,
@@ -176,7 +184,9 @@ export function modelRequirementClaims(inputs) {
176
184
  const modeled = [];
177
185
  for (const input of inputs) {
178
186
  const writeSet = buildStrictWriteSet(input);
179
- const stableId = writeSet.isStrict ? writeSet.req.id : writeSet.observationFact.id;
187
+ const stableId = writeSet.isStrict
188
+ ? writeSet.req.id
189
+ : writeSet.observationFact.id;
180
190
  if (seen.has(stableId)) {
181
191
  continue;
182
192
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kibi-cli",
3
- "version": "0.11.0",
3
+ "version": "0.11.3",
4
4
  "type": "module",
5
5
  "description": "Kibi CLI for knowledge base management",
6
6
  "engines": {
@@ -11,15 +11,9 @@
11
11
  "bin": {
12
12
  "kibi": "bin/kibi"
13
13
  },
14
- "files": [
15
- "dist",
16
- "bin",
17
- "schema",
18
- "src/schemas",
19
- "src/public"
20
- ],
14
+ "files": ["dist", "bin", "schema", "src/schemas", "src/public"],
21
15
  "scripts": {
22
- "build": "tsc -p tsconfig.json",
16
+ "build": "tsc -p tsconfig.json && mkdir -p dist/public/skills && cp -r src/public/skills/. dist/public/skills/",
23
17
  "prepack": "npm run build"
24
18
  },
25
19
  "exports": {
@@ -75,10 +69,6 @@
75
69
  "types": "./dist/public/check-types.d.ts",
76
70
  "default": "./dist/public/check-types.js"
77
71
  },
78
- "./brief-config": {
79
- "types": "./dist/public/brief-config.d.ts",
80
- "default": "./dist/public/brief-config.js"
81
- },
82
72
  "./schema-version": {
83
73
  "types": "./dist/public/schema-version.d.ts",
84
74
  "default": "./dist/public/schema-version.js"
@@ -87,6 +77,10 @@
87
77
  "types": "./dist/public/operational-artifacts.d.ts",
88
78
  "default": "./dist/public/operational-artifacts.js"
89
79
  },
80
+ "./skills": {
81
+ "types": "./dist/public/skills.d.ts",
82
+ "default": "./dist/public/skills.js"
83
+ },
90
84
  "./ignore-policy": {
91
85
  "types": "./dist/public/ignore-policy.d.ts",
92
86
  "import": "./dist/public/ignore-policy.js",