kibi-cli 0.17.0 → 0.19.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 (241) hide show
  1. package/dist/cli-json-command.d.ts +1 -2
  2. package/dist/cli-json-command.d.ts.map +1 -1
  3. package/dist/cli-json-command.js +88 -44
  4. package/dist/cli-operation-loader.d.ts +3 -0
  5. package/dist/cli-operation-loader.d.ts.map +1 -0
  6. package/dist/cli-operation-loader.js +58 -0
  7. package/dist/cli-operation-metadata.d.ts +82 -0
  8. package/dist/cli-operation-metadata.d.ts.map +1 -0
  9. package/dist/cli-operation-metadata.js +106 -0
  10. package/dist/cli-protocol.d.ts +1 -1
  11. package/dist/cli-protocol.d.ts.map +1 -1
  12. package/dist/cli-protocol.js +4 -3
  13. package/dist/cli-register-foundation.d.ts.map +1 -1
  14. package/dist/cli-register-foundation.js +14 -17
  15. package/dist/cli-register-json.d.ts +3 -0
  16. package/dist/cli-register-json.d.ts.map +1 -0
  17. package/dist/cli-register-json.js +35 -0
  18. package/dist/cli-register-maintenance.d.ts.map +1 -1
  19. package/dist/cli-register-maintenance.js +41 -8
  20. package/dist/cli-register-reporting.d.ts.map +1 -1
  21. package/dist/cli-register-reporting.js +18 -14
  22. package/dist/cli-register-skills.d.ts.map +1 -1
  23. package/dist/cli-register-skills.js +8 -6
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +3 -2
  26. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  27. package/dist/commands/aggregated-checks.js +1 -0
  28. package/dist/commands/check.d.ts.map +1 -1
  29. package/dist/commands/check.js +30 -12
  30. package/dist/commands/coverage.d.ts +5 -0
  31. package/dist/commands/coverage.d.ts.map +1 -1
  32. package/dist/commands/coverage.js +6 -1
  33. package/dist/commands/discovery-shared.d.ts +2 -1
  34. package/dist/commands/discovery-shared.d.ts.map +1 -1
  35. package/dist/commands/discovery-shared.js +35 -13
  36. package/dist/commands/discovery-table.d.ts.map +1 -1
  37. package/dist/commands/discovery-table.js +96 -5
  38. package/dist/commands/engine.d.ts +8 -0
  39. package/dist/commands/engine.d.ts.map +1 -0
  40. package/dist/commands/engine.js +100 -0
  41. package/dist/commands/gaps.js +1 -1
  42. package/dist/commands/graph.js +1 -1
  43. package/dist/commands/query.d.ts.map +1 -1
  44. package/dist/commands/query.js +3 -1
  45. package/dist/commands/search.d.ts.map +1 -1
  46. package/dist/commands/search.js +3 -1
  47. package/dist/commands/status.d.ts.map +1 -1
  48. package/dist/commands/status.js +2 -1
  49. package/dist/commands/sync/cache.d.ts +12 -0
  50. package/dist/commands/sync/cache.d.ts.map +1 -1
  51. package/dist/commands/sync/cache.js +38 -1
  52. package/dist/commands/sync/persistence.d.ts +10 -1
  53. package/dist/commands/sync/persistence.d.ts.map +1 -1
  54. package/dist/commands/sync/persistence.js +276 -43
  55. package/dist/commands/sync/staging.d.ts +10 -1
  56. package/dist/commands/sync/staging.d.ts.map +1 -1
  57. package/dist/commands/sync/staging.js +84 -1
  58. package/dist/commands/sync.d.ts.map +1 -1
  59. package/dist/commands/sync.js +521 -27
  60. package/dist/commands/usage-metrics.d.ts +66 -2
  61. package/dist/commands/usage-metrics.d.ts.map +1 -1
  62. package/dist/commands/usage-metrics.js +34 -24
  63. package/dist/commands/usage-remediation.d.ts +9 -0
  64. package/dist/commands/usage-remediation.d.ts.map +1 -0
  65. package/dist/commands/usage-remediation.js +52 -0
  66. package/dist/engine-daemon.d.ts +3 -0
  67. package/dist/engine-daemon.d.ts.map +1 -0
  68. package/dist/engine-daemon.js +34 -0
  69. package/dist/engine.d.ts +63 -0
  70. package/dist/engine.d.ts.map +1 -0
  71. package/dist/engine.js +1256 -0
  72. package/dist/extractors/markdown.d.ts +8 -0
  73. package/dist/extractors/markdown.d.ts.map +1 -1
  74. package/dist/extractors/markdown.js +69 -2
  75. package/dist/extractors/relationships.d.ts +2 -0
  76. package/dist/extractors/relationships.d.ts.map +1 -1
  77. package/dist/extractors/relationships.js +15 -17
  78. package/dist/operations/modeling/logic-modeling.d.ts.map +1 -1
  79. package/dist/operations/modeling/logic-modeling.js +14 -5
  80. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  81. package/dist/operations/modeling/model-requirement.js +27 -2
  82. package/dist/operations/modeling/predicate-applyplan.d.ts +1 -1
  83. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  84. package/dist/operations/modeling/predicate-applyplan.js +18 -6
  85. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  86. package/dist/operations/modeling/predicate-inference.js +5 -17
  87. package/dist/operations/modeling/predicate-loader.js +1 -1
  88. package/dist/operations/modeling/predicate-types.d.ts +9 -1
  89. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  90. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  91. package/dist/operations/modeling/suggest-predicates.js +35 -11
  92. package/dist/operations/mutation/audit.js +1 -1
  93. package/dist/operations/mutation/contradictions.d.ts +1 -1
  94. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  95. package/dist/operations/mutation/contradictions.js +23 -18
  96. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  97. package/dist/operations/mutation/serialization.js +6 -3
  98. package/dist/operations/mutation/upsert.d.ts +3 -1
  99. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  100. package/dist/operations/mutation/upsert.js +51 -12
  101. package/dist/operations/mutation/validate-upsert.d.ts.map +1 -1
  102. package/dist/operations/mutation/validate-upsert.js +18 -2
  103. package/dist/operations/mutation/validation.d.ts.map +1 -1
  104. package/dist/operations/mutation/validation.js +8 -0
  105. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
  106. package/dist/operations/semantic-advisor/analysis-receipt.js +7 -1
  107. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  108. package/dist/operations/semantic-advisor/analyze-prose.js +76 -61
  109. package/dist/operations/semantic-advisor/clauses.d.ts +1 -0
  110. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  111. package/dist/operations/semantic-advisor/clauses.js +7 -7
  112. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts +18 -0
  113. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -0
  114. package/dist/operations/semantic-advisor/ingestion-boundary.js +167 -0
  115. package/dist/operations/semantic-advisor/shared.d.ts +8 -0
  116. package/dist/operations/semantic-advisor/shared.d.ts.map +1 -1
  117. package/dist/operations/semantic-advisor/shared.js +37 -3
  118. package/dist/operations/semantic-advisor/types.d.ts +5 -0
  119. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  120. package/dist/prolog/codec.d.ts.map +1 -1
  121. package/dist/prolog/codec.js +9 -2
  122. package/dist/prolog.d.ts +14 -0
  123. package/dist/prolog.d.ts.map +1 -1
  124. package/dist/prolog.js +279 -69
  125. package/dist/public/diagnostic-usage.d.ts +17 -0
  126. package/dist/public/diagnostic-usage.d.ts.map +1 -0
  127. package/dist/public/diagnostic-usage.js +152 -0
  128. package/dist/public/distribution-parity.d.ts +90 -0
  129. package/dist/public/distribution-parity.d.ts.map +1 -0
  130. package/dist/public/distribution-parity.js +367 -0
  131. package/dist/public/impact/full-kb-quality.d.ts +2 -0
  132. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  133. package/dist/public/impact/full-kb-quality.js +53 -1
  134. package/dist/public/impact-diagnostics.d.ts +2 -0
  135. package/dist/public/impact-diagnostics.d.ts.map +1 -1
  136. package/dist/public/impact-diagnostics.js +1 -0
  137. package/dist/public/operations/catalog.d.ts +151 -6
  138. package/dist/public/operations/catalog.d.ts.map +1 -1
  139. package/dist/public/operations/check-executor.d.ts.map +1 -1
  140. package/dist/public/operations/check-executor.js +4 -0
  141. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  142. package/dist/public/operations/discovery-entities.js +3 -2
  143. package/dist/public/operations/discovery-executors.d.ts +6 -0
  144. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  145. package/dist/public/operations/discovery-executors.js +58 -5
  146. package/dist/public/operations/index.d.ts +4 -0
  147. package/dist/public/operations/index.d.ts.map +1 -1
  148. package/dist/public/operations/index.js +4 -0
  149. package/dist/public/operations/legacy-migration-plan.d.ts +113 -0
  150. package/dist/public/operations/legacy-migration-plan.d.ts.map +1 -0
  151. package/dist/public/operations/legacy-migration-plan.js +409 -0
  152. package/dist/public/operations/node-ports.d.ts.map +1 -1
  153. package/dist/public/operations/node-ports.js +90 -0
  154. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  155. package/dist/public/operations/prolog-json.js +14 -4
  156. package/dist/public/operations/repair-plan.d.ts +184 -0
  157. package/dist/public/operations/repair-plan.d.ts.map +1 -0
  158. package/dist/public/operations/repair-plan.js +397 -0
  159. package/dist/public/operations/runtime-types.d.ts +38 -0
  160. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  161. package/dist/public/operations/specs/check.d.ts +2 -2
  162. package/dist/public/operations/specs/check.js +2 -2
  163. package/dist/public/operations/specs/discovery.d.ts +1 -1
  164. package/dist/public/operations/specs/discovery.js +1 -1
  165. package/dist/public/operations/specs/modeling.d.ts +19 -1
  166. package/dist/public/operations/specs/modeling.d.ts.map +1 -1
  167. package/dist/public/operations/specs/modeling.js +16 -1
  168. package/dist/public/operations/specs/mutation-schemas.d.ts +96 -1
  169. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  170. package/dist/public/operations/specs/mutation-schemas.js +40 -1
  171. package/dist/public/operations/specs/reporting.d.ts +42 -1
  172. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  173. package/dist/public/operations/specs/reporting.js +70 -6
  174. package/dist/public/operations/specs/semantic.js +1 -1
  175. package/dist/public/operations/specs/upsert.d.ts +96 -1
  176. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  177. package/dist/public/operations/workspace-snapshot.d.ts +10 -0
  178. package/dist/public/operations/workspace-snapshot.d.ts.map +1 -0
  179. package/dist/public/operations/workspace-snapshot.js +20 -0
  180. package/dist/public/schemas/entity.d.ts.map +1 -1
  181. package/dist/public/schemas/entity.js +43 -1
  182. package/dist/public/skills/init-kibi/SKILL.md +2 -2
  183. package/dist/public/skills/kibi-freshness/SKILL.md +2 -2
  184. package/dist/public/skills/kibi-traceability/SKILL.md +8 -2
  185. package/dist/public/skills/kibi-usage/SKILL.md +12 -6
  186. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +1 -1
  187. package/dist/public/skills/kibi-usage/resources/logic-ir.md +1 -1
  188. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
  189. package/dist/public/skills/kibi-usage/resources/workflows.md +19 -2
  190. package/dist/public/telemetry-acceptance.d.ts +89 -0
  191. package/dist/public/telemetry-acceptance.d.ts.map +1 -0
  192. package/dist/public/telemetry-acceptance.js +597 -0
  193. package/dist/public/telemetry-remediation.d.ts +33 -0
  194. package/dist/public/telemetry-remediation.d.ts.map +1 -0
  195. package/dist/public/telemetry-remediation.js +257 -0
  196. package/dist/public/verification-receipt.d.ts +75 -0
  197. package/dist/public/verification-receipt.d.ts.map +1 -0
  198. package/dist/public/verification-receipt.js +129 -0
  199. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  200. package/dist/runtime/cli-runtime.js +33 -37
  201. package/dist/schemas/entity.schema.json +96 -2
  202. package/dist/traceability/temp-kb.d.ts.map +1 -1
  203. package/dist/traceability/temp-kb.js +36 -3
  204. package/dist/types/entities.d.ts +1 -0
  205. package/dist/types/entities.d.ts.map +1 -1
  206. package/dist/utils/rule-registry.d.ts +2 -0
  207. package/dist/utils/rule-registry.d.ts.map +1 -1
  208. package/package.json +36 -4
  209. package/src/public/diagnostic-usage.ts +206 -0
  210. package/src/public/distribution-parity.ts +580 -0
  211. package/src/public/impact/full-kb-quality.ts +74 -1
  212. package/src/public/impact-diagnostics.ts +16 -0
  213. package/src/public/operations/check-executor.ts +4 -0
  214. package/src/public/operations/discovery-entities.ts +3 -2
  215. package/src/public/operations/discovery-executors.ts +68 -5
  216. package/src/public/operations/index.ts +4 -0
  217. package/src/public/operations/legacy-migration-plan.ts +688 -0
  218. package/src/public/operations/node-ports.ts +109 -0
  219. package/src/public/operations/prolog-json.ts +15 -3
  220. package/src/public/operations/repair-plan.ts +562 -0
  221. package/src/public/operations/runtime-types.ts +47 -0
  222. package/src/public/operations/specs/check.ts +2 -2
  223. package/src/public/operations/specs/discovery.ts +1 -1
  224. package/src/public/operations/specs/modeling.ts +19 -1
  225. package/src/public/operations/specs/mutation-schemas.ts +47 -1
  226. package/src/public/operations/specs/reporting.ts +91 -6
  227. package/src/public/operations/specs/semantic.ts +1 -1
  228. package/src/public/operations/workspace-snapshot.ts +28 -0
  229. package/src/public/schemas/entity.ts +44 -1
  230. package/src/public/skills/init-kibi/SKILL.md +2 -2
  231. package/src/public/skills/kibi-freshness/SKILL.md +2 -2
  232. package/src/public/skills/kibi-traceability/SKILL.md +8 -2
  233. package/src/public/skills/kibi-usage/SKILL.md +12 -6
  234. package/src/public/skills/kibi-usage/resources/fact-lanes.md +1 -1
  235. package/src/public/skills/kibi-usage/resources/logic-ir.md +1 -1
  236. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
  237. package/src/public/skills/kibi-usage/resources/workflows.md +19 -2
  238. package/src/public/telemetry-acceptance.ts +859 -0
  239. package/src/public/telemetry-remediation.ts +462 -0
  240. package/src/public/verification-receipt.ts +170 -0
  241. package/src/schemas/entity.schema.json +96 -2
@@ -1,8 +1,72 @@
1
1
  import type { CommandResult } from "../cli.js";
2
- interface UsageMetricsOptions {
2
+ import { type TelemetryAcceptanceReport, type TelemetryUsageEvent } from "../public/telemetry-acceptance.js";
3
+ export interface UsageMetricsOptions {
3
4
  format?: "json" | "table";
4
5
  limit?: string;
6
+ requireAcceptance?: boolean;
7
+ }
8
+ export interface UsageLogRow extends TelemetryUsageEvent {
9
+ branch?: string;
10
+ active_branch?: string;
11
+ sourceFile?: string;
12
+ args?: {
13
+ sourceFile?: string;
14
+ [key: string]: unknown;
15
+ };
16
+ business_args?: Readonly<{
17
+ sourceFile?: string;
18
+ [key: string]: unknown;
19
+ }>;
20
+ result_summary?: string;
21
+ violation_count?: number;
22
+ error?: string;
23
+ error_message?: string;
24
+ error_category?: string;
25
+ error_stage?: string;
26
+ }
27
+ export interface UsageMetricsReport {
28
+ rowCount: number;
29
+ dateRange: {
30
+ first: string | null;
31
+ last: string | null;
32
+ };
33
+ toolCounts: Record<string, number>;
34
+ branchCounts: Record<string, number>;
35
+ outcomeCounts: {
36
+ success: number;
37
+ error: number;
38
+ };
39
+ telemetry: {
40
+ completeCount: number;
41
+ missingCount: number;
42
+ completenessRate: number;
43
+ };
44
+ zeroResults: {
45
+ count: number;
46
+ rate: number;
47
+ byTool: Record<string, number>;
48
+ topSourceFiles: Array<{
49
+ sourceFile: string;
50
+ count: number;
51
+ }>;
52
+ };
53
+ kbCheck: {
54
+ violationTrend: Array<{
55
+ timestamp: string;
56
+ violationCount: number;
57
+ }>;
58
+ };
59
+ upsertErrors: {
60
+ categories: Record<string, number>;
61
+ };
62
+ errors: {
63
+ categories: Record<string, number>;
64
+ stages: Record<string, number>;
65
+ byTool: Record<string, number>;
66
+ };
67
+ acceptance: TelemetryAcceptanceReport;
5
68
  }
6
69
  export declare function usageMetricsCommand(options: UsageMetricsOptions): Promise<CommandResult | undefined>;
7
- export {};
70
+ export declare function parseUsageLog(contents: string): UsageLogRow[];
71
+ export declare function buildUsageMetricsReport(rows: UsageLogRow[], limit: number, now?: Date): UsageMetricsReport;
8
72
  //# sourceMappingURL=usage-metrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-metrics.d.ts","sourceRoot":"","sources":["../../src/commands/usage-metrics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAuBpC"}
1
+ {"version":3,"file":"usage-metrics.d.ts","sourceRoot":"","sources":["../../src/commands/usage-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import Table from "cli-table3";
4
+ import { analyzeTelemetryAcceptance, parseTelemetryUsageLog, } from "../public/telemetry-acceptance.js";
4
5
  // implements REQ-003
5
6
  export async function usageMetricsCommand(options) {
6
7
  const limit = Number.parseInt(options.limit || "10", 10);
@@ -15,36 +16,23 @@ export async function usageMetricsCommand(options) {
15
16
  }
16
17
  const rows = parseUsageLog(readFileSync(usageLogPath, "utf8"));
17
18
  const report = buildUsageMetricsReport(rows, limit);
19
+ const gateResult = options.requireAcceptance === true && report.acceptance.status !== "passed"
20
+ ? { exitCode: 1 }
21
+ : undefined;
18
22
  if (options.format === "json") {
19
23
  console.log(JSON.stringify(report, null, 2));
20
- return;
24
+ return gateResult;
21
25
  }
22
26
  console.log(renderUsageMetricsReport(report));
23
- return;
24
- }
25
- function parseUsageLog(contents) {
26
- const rows = [];
27
- for (const [index, line] of contents.split(/\r?\n/).entries()) {
28
- const trimmed = line.trim();
29
- if (!trimmed) {
30
- continue;
31
- }
32
- let parsed;
33
- try {
34
- parsed = JSON.parse(trimmed);
35
- }
36
- catch (error) {
37
- const message = error instanceof Error ? error.message : String(error);
38
- throw new Error(`Failed to parse .kb/usage.log line ${index + 1}: ${message}`);
39
- }
40
- if (!parsed || typeof parsed !== "object") {
41
- throw new Error(`Failed to parse .kb/usage.log line ${index + 1}: expected object`);
42
- }
43
- rows.push(parsed);
27
+ if (gateResult) {
28
+ console.error(`Telemetry acceptance gate: ${report.acceptance.status}. Review the acceptance metrics and quality diagnostics before completion.`);
44
29
  }
45
- return rows;
30
+ return gateResult;
31
+ }
32
+ export function parseUsageLog(contents) {
33
+ return parseTelemetryUsageLog(contents);
46
34
  }
47
- function buildUsageMetricsReport(rows, limit) {
35
+ export function buildUsageMetricsReport(rows, limit, now = new Date()) {
48
36
  const timestamps = rows
49
37
  .map((row) => row.timestamp)
50
38
  .filter((value) => typeof value === "string")
@@ -140,6 +128,7 @@ function buildUsageMetricsReport(rows, limit) {
140
128
  stages: mapToSortedObject(errorStages),
141
129
  byTool: mapToSortedObject(errorsByTool),
142
130
  },
131
+ acceptance: analyzeTelemetryAcceptance(rows, now),
143
132
  };
144
133
  }
145
134
  function hasCompleteTelemetry(row) {
@@ -271,6 +260,7 @@ function mapToSortedObject(counts) {
271
260
  function renderUsageMetricsReport(report) {
272
261
  const sections = [
273
262
  renderSummaryTable(report),
263
+ renderAcceptanceTable(report.acceptance),
274
264
  renderCountsTable("Tool Counts", "Tool", report.toolCounts),
275
265
  renderCountsTable("Branch Counts", "Branch", report.branchCounts),
276
266
  renderCountsTable("Outcome Counts", "Outcome", report.outcomeCounts),
@@ -284,6 +274,26 @@ function renderUsageMetricsReport(report) {
284
274
  ].filter(Boolean);
285
275
  return sections.join("\n\n");
286
276
  }
277
+ function renderAcceptanceTable(report) {
278
+ const table = new Table({
279
+ head: ["Metric", "Status", "Observed", "Rate"],
280
+ colWidths: [36, 24, 18, 14],
281
+ wordWrap: true,
282
+ });
283
+ for (const metric of report.metrics) {
284
+ table.push([
285
+ metric.id,
286
+ metric.status,
287
+ `${metric.numerator}/${metric.denominator}`,
288
+ metric.rate === undefined ? "-" : formatRate(metric.rate),
289
+ ]);
290
+ }
291
+ return [
292
+ `Telemetry Acceptance (${report.version})`,
293
+ `Status: ${report.status}; evidence fresh: ${report.scope.fresh ? "yes" : "no"}`,
294
+ table.toString(),
295
+ ].join("\n");
296
+ }
287
297
  function renderSummaryTable(report) {
288
298
  const table = new Table({
289
299
  head: ["Field", "Value"],
@@ -0,0 +1,9 @@
1
+ import type { CommandResult } from "../cli.js";
2
+ import { type TelemetryRemediationReport } from "../public/telemetry-remediation.js";
3
+ export interface UsageRemediationOptions {
4
+ readonly format?: "json" | "table";
5
+ readonly limit?: string;
6
+ }
7
+ export declare function renderUsageRemediationReport(report: TelemetryRemediationReport, limit: number): string;
8
+ export declare function usageRemediationCommand(options: UsageRemediationOptions): Promise<CommandResult | undefined>;
9
+ //# sourceMappingURL=usage-remediation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-remediation.d.ts","sourceRoot":"","sources":["../../src/commands/usage-remediation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,GACZ,MAAM,CA0BR;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA0BpC"}
@@ -0,0 +1,52 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import Table from "cli-table3";
4
+ import { parseTelemetryUsageLog } from "../public/telemetry-acceptance.js";
5
+ import { buildTelemetryRemediationReport, } from "../public/telemetry-remediation.js";
6
+ export function renderUsageRemediationReport(report, limit) {
7
+ const table = new Table({
8
+ head: ["Rank", "Metric", "Line", "Target", "Reason", "Repair"],
9
+ colWidths: [7, 28, 8, 26, 42, 48],
10
+ wordWrap: true,
11
+ });
12
+ for (const item of report.items.slice(0, limit)) {
13
+ table.push([
14
+ item.rank,
15
+ item.metric,
16
+ item.event?.logLine ?? "report",
17
+ item.target,
18
+ item.reason,
19
+ item.action,
20
+ ]);
21
+ }
22
+ const suffix = report.items.length > limit
23
+ ? `\nShowing ${limit}/${report.items.length} remediation items.`
24
+ : "";
25
+ return ([
26
+ `Telemetry remediation: ${report.status} (${report.summary.eventItems} event, ${report.summary.reportItems} report-level)`,
27
+ table.toString(),
28
+ ].join("\n") + suffix);
29
+ }
30
+ export async function usageRemediationCommand(options) {
31
+ const limit = Number.parseInt(options.limit ?? "50", 10);
32
+ if (!Number.isFinite(limit) || limit < 1) {
33
+ console.error("Error: --limit must be a positive integer");
34
+ return { exitCode: 1 };
35
+ }
36
+ if (options.format !== undefined &&
37
+ !["json", "table"].includes(options.format)) {
38
+ console.error("Error: --format must be json or table");
39
+ return { exitCode: 1 };
40
+ }
41
+ const usageLogPath = path.join(process.cwd(), ".kb", "usage.log");
42
+ if (!existsSync(usageLogPath)) {
43
+ console.error(`Error: usage log not found at ${usageLogPath}`);
44
+ return { exitCode: 1 };
45
+ }
46
+ const events = parseTelemetryUsageLog(readFileSync(usageLogPath, "utf8"));
47
+ const report = buildTelemetryRemediationReport(events);
48
+ console.log(options.format === "json"
49
+ ? JSON.stringify(report, null, 2)
50
+ : renderUsageRemediationReport(report, limit));
51
+ return undefined;
52
+ }
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=engine-daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-daemon.d.ts","sourceRoot":"","sources":["../src/engine-daemon.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import { writeFileSync } from "node:fs";
3
+ import { runEngineDaemon } from "./engine.js";
4
+ function requiredArg(args, name) {
5
+ const index = args.indexOf(name);
6
+ const value = index >= 0 ? args[index + 1] : undefined;
7
+ if (value === undefined || value.length === 0) {
8
+ throw new Error(`Missing ${name} argument`);
9
+ }
10
+ return value;
11
+ }
12
+ const args = process.argv.slice(2);
13
+ try {
14
+ await runEngineDaemon({
15
+ workspaceRoot: requiredArg(args, "--workspace"),
16
+ branch: requiredArg(args, "--branch"),
17
+ socketPath: requiredArg(args, "--socket"),
18
+ });
19
+ }
20
+ catch (error) {
21
+ const message = error instanceof Error ? error.message : String(error);
22
+ console.error(message);
23
+ const socketIndex = args.indexOf("--socket");
24
+ const socketPath = socketIndex >= 0 ? args[socketIndex + 1] : undefined;
25
+ if (socketPath) {
26
+ try {
27
+ writeFileSync(`${socketPath}.error`, `${message}\n`, { mode: 0o600 });
28
+ }
29
+ catch {
30
+ // Preserve the process exit code even if the diagnostic path is gone.
31
+ }
32
+ }
33
+ process.exitCode = 1;
34
+ }
@@ -0,0 +1,63 @@
1
+ import type { PrologQueryResult } from "./public/operations/runtime-types.js";
2
+ import type { PrologEntityQueryInput, PrologEntityQueryResult, PrologSearchQueryInput, PrologSearchQueryResult } from "./public/operations/runtime-types.js";
3
+ export declare const ENGINE_PROTOCOL_VERSION = 1;
4
+ export declare const ENGINE_IDLE_TIMEOUT_MS: number;
5
+ export declare const ENGINE_PACKAGE_VERSIONS: string;
6
+ /**
7
+ * Cross the kernel durability boundary before a journaled mutation is
8
+ * acknowledged. SWI flushes completed RDF transaction records to its journal
9
+ * stream; fsyncing the journal and atomic CURRENT pointer makes that flush
10
+ * survive a host crash as well as a process crash.
11
+ */
12
+ export declare function fsyncJournaledBranchStore(branchPath: string): void;
13
+ export declare function engineSocketPath(workspaceRoot: string, branch: string): string;
14
+ export declare function enginePidPath(workspaceRoot: string, branch: string): string;
15
+ export declare function engineStartLockPath(workspaceRoot: string, branch: string): string;
16
+ export type EngineClientOptions = {
17
+ readonly workspaceRoot: string;
18
+ readonly branch: string;
19
+ readonly timeout?: number;
20
+ };
21
+ /** PrologPort-compatible client used by CLI and MCP operation runtimes. */
22
+ export declare class EngineClient {
23
+ private readonly workspaceRoot;
24
+ private readonly branch;
25
+ private readonly timeout;
26
+ private socket;
27
+ private daemon;
28
+ private inputBuffer;
29
+ private requestId;
30
+ private pending;
31
+ private requestTail;
32
+ private lastResult;
33
+ constructor(options: EngineClientOptions);
34
+ start(allowSpawn?: boolean): Promise<void>;
35
+ private attachSocket;
36
+ private handleResponse;
37
+ private request;
38
+ query(goal: string, signal?: AbortSignal): Promise<PrologQueryResult>;
39
+ queryBatch(goals: readonly string[]): Promise<PrologQueryResult>;
40
+ queryEntities(input: PrologEntityQueryInput): Promise<PrologEntityQueryResult>;
41
+ searchEntities(input: PrologSearchQueryInput): Promise<PrologSearchQueryResult>;
42
+ /** Best-effort cancellation for a queued request. */
43
+ cancel(requestId: number): void;
44
+ nextSolution(): Promise<PrologQueryResult | null>;
45
+ save(): Promise<PrologQueryResult>;
46
+ storageStatus(): Promise<PrologQueryResult>;
47
+ checkpoint(): Promise<PrologQueryResult>;
48
+ queryStatusJson(): Promise<PrologQueryResult>;
49
+ compact(): Promise<PrologQueryResult>;
50
+ exportStorage(targetDirectory: string): Promise<PrologQueryResult>;
51
+ invalidateCache(): void;
52
+ isRunning(): boolean;
53
+ getPid(): number;
54
+ stop(startIfMissing?: boolean): Promise<void>;
55
+ terminate(): Promise<void>;
56
+ }
57
+ export declare function ensureJournaledBranchStoreAsync(branchPath: string): Promise<void>;
58
+ export declare function runEngineDaemon(options: {
59
+ readonly workspaceRoot: string;
60
+ readonly branch: string;
61
+ readonly socketPath: string;
62
+ }): Promise<void>;
63
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}