greplica 0.1.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 (115) hide show
  1. package/README.md +177 -0
  2. package/dist/apps/cli/main.d.ts +2 -0
  3. package/dist/apps/cli/main.js +404 -0
  4. package/dist/apps/cli/main.js.map +1 -0
  5. package/dist/apps/cli/repo-context.d.ts +2 -0
  6. package/dist/apps/cli/repo-context.js +58 -0
  7. package/dist/apps/cli/repo-context.js.map +1 -0
  8. package/dist/libs/agent-runner/codex.d.ts +2 -0
  9. package/dist/libs/agent-runner/codex.js +53 -0
  10. package/dist/libs/agent-runner/codex.js.map +1 -0
  11. package/dist/libs/agent-runner/metrics.d.ts +10 -0
  12. package/dist/libs/agent-runner/metrics.js +72 -0
  13. package/dist/libs/agent-runner/metrics.js.map +1 -0
  14. package/dist/libs/agent-runner/types.d.ts +23 -0
  15. package/dist/libs/agent-runner/types.js +2 -0
  16. package/dist/libs/agent-runner/types.js.map +1 -0
  17. package/dist/libs/config/greplica-config.d.ts +24 -0
  18. package/dist/libs/config/greplica-config.js +121 -0
  19. package/dist/libs/config/greplica-config.js.map +1 -0
  20. package/dist/libs/config/greplica-home.d.ts +1 -0
  21. package/dist/libs/config/greplica-home.js +6 -0
  22. package/dist/libs/config/greplica-home.js.map +1 -0
  23. package/dist/libs/env/load-local-env.d.ts +19 -0
  24. package/dist/libs/env/load-local-env.js +69 -0
  25. package/dist/libs/env/load-local-env.js.map +1 -0
  26. package/dist/libs/install/edit-marked-section.d.ts +1 -0
  27. package/dist/libs/install/edit-marked-section.js +22 -0
  28. package/dist/libs/install/edit-marked-section.js.map +1 -0
  29. package/dist/libs/install/install.d.ts +18 -0
  30. package/dist/libs/install/install.js +80 -0
  31. package/dist/libs/install/install.js.map +1 -0
  32. package/dist/libs/install/instruction-blocks.d.ts +1 -0
  33. package/dist/libs/install/instruction-blocks.js +13 -0
  34. package/dist/libs/install/instruction-blocks.js.map +1 -0
  35. package/dist/libs/install/paths.d.ts +12 -0
  36. package/dist/libs/install/paths.js +31 -0
  37. package/dist/libs/install/paths.js.map +1 -0
  38. package/dist/libs/knowledge-graph/claim.d.ts +11 -0
  39. package/dist/libs/knowledge-graph/claim.js +2 -0
  40. package/dist/libs/knowledge-graph/claim.js.map +1 -0
  41. package/dist/libs/knowledge-graph/commit.d.ts +10 -0
  42. package/dist/libs/knowledge-graph/commit.js +2 -0
  43. package/dist/libs/knowledge-graph/commit.js.map +1 -0
  44. package/dist/libs/knowledge-graph/edge.d.ts +13 -0
  45. package/dist/libs/knowledge-graph/edge.js +17 -0
  46. package/dist/libs/knowledge-graph/edge.js.map +1 -0
  47. package/dist/libs/knowledge-graph/folder-export.d.ts +6 -0
  48. package/dist/libs/knowledge-graph/folder-export.js +337 -0
  49. package/dist/libs/knowledge-graph/folder-export.js.map +1 -0
  50. package/dist/libs/knowledge-graph/graph-context/bm25.d.ts +9 -0
  51. package/dist/libs/knowledge-graph/graph-context/bm25.js +62 -0
  52. package/dist/libs/knowledge-graph/graph-context/bm25.js.map +1 -0
  53. package/dist/libs/knowledge-graph/graph-context/config.d.ts +39 -0
  54. package/dist/libs/knowledge-graph/graph-context/config.js +48 -0
  55. package/dist/libs/knowledge-graph/graph-context/config.js.map +1 -0
  56. package/dist/libs/knowledge-graph/graph-context/context-builder.d.ts +18 -0
  57. package/dist/libs/knowledge-graph/graph-context/context-builder.js +276 -0
  58. package/dist/libs/knowledge-graph/graph-context/context-builder.js.map +1 -0
  59. package/dist/libs/knowledge-graph/graph-context/documents.d.ts +20 -0
  60. package/dist/libs/knowledge-graph/graph-context/documents.js +81 -0
  61. package/dist/libs/knowledge-graph/graph-context/documents.js.map +1 -0
  62. package/dist/libs/knowledge-graph/graph-context/embedder.d.ts +6 -0
  63. package/dist/libs/knowledge-graph/graph-context/embedder.js +8 -0
  64. package/dist/libs/knowledge-graph/graph-context/embedder.js.map +1 -0
  65. package/dist/libs/knowledge-graph/graph-context/exact.d.ts +3 -0
  66. package/dist/libs/knowledge-graph/graph-context/exact.js +37 -0
  67. package/dist/libs/knowledge-graph/graph-context/exact.js.map +1 -0
  68. package/dist/libs/knowledge-graph/graph-context/local-embedder.d.ts +13 -0
  69. package/dist/libs/knowledge-graph/graph-context/local-embedder.js +74 -0
  70. package/dist/libs/knowledge-graph/graph-context/local-embedder.js.map +1 -0
  71. package/dist/libs/knowledge-graph/graph-context/openai-embedder.d.ts +14 -0
  72. package/dist/libs/knowledge-graph/graph-context/openai-embedder.js +59 -0
  73. package/dist/libs/knowledge-graph/graph-context/openai-embedder.js.map +1 -0
  74. package/dist/libs/knowledge-graph/graph-context/rank.d.ts +16 -0
  75. package/dist/libs/knowledge-graph/graph-context/rank.js +52 -0
  76. package/dist/libs/knowledge-graph/graph-context/rank.js.map +1 -0
  77. package/dist/libs/knowledge-graph/graph-context/render.d.ts +38 -0
  78. package/dist/libs/knowledge-graph/graph-context/render.js +114 -0
  79. package/dist/libs/knowledge-graph/graph-context/render.js.map +1 -0
  80. package/dist/libs/knowledge-graph/graph-context/types.d.ts +58 -0
  81. package/dist/libs/knowledge-graph/graph-context/types.js +2 -0
  82. package/dist/libs/knowledge-graph/graph-context/types.js.map +1 -0
  83. package/dist/libs/knowledge-graph/graph-context/vector.d.ts +3 -0
  84. package/dist/libs/knowledge-graph/graph-context/vector.js +25 -0
  85. package/dist/libs/knowledge-graph/graph-context/vector.js.map +1 -0
  86. package/dist/libs/knowledge-graph/proposal.d.ts +65 -0
  87. package/dist/libs/knowledge-graph/proposal.js +135 -0
  88. package/dist/libs/knowledge-graph/proposal.js.map +1 -0
  89. package/dist/libs/knowledge-graph/schema.d.ts +32 -0
  90. package/dist/libs/knowledge-graph/schema.js +2 -0
  91. package/dist/libs/knowledge-graph/schema.js.map +1 -0
  92. package/dist/libs/knowledge-graph/scope.d.ts +16 -0
  93. package/dist/libs/knowledge-graph/scope.js +2 -0
  94. package/dist/libs/knowledge-graph/scope.js.map +1 -0
  95. package/dist/libs/knowledge-graph/service.d.ts +54 -0
  96. package/dist/libs/knowledge-graph/service.js +89 -0
  97. package/dist/libs/knowledge-graph/service.js.map +1 -0
  98. package/dist/libs/knowledge-graph/validate-proposal.d.ts +9 -0
  99. package/dist/libs/knowledge-graph/validate-proposal.js +166 -0
  100. package/dist/libs/knowledge-graph/validate-proposal.js.map +1 -0
  101. package/dist/libs/storage/sqlite/db.d.ts +3 -0
  102. package/dist/libs/storage/sqlite/db.js +16 -0
  103. package/dist/libs/storage/sqlite/db.js.map +1 -0
  104. package/dist/libs/storage/sqlite/migrate.d.ts +2 -0
  105. package/dist/libs/storage/sqlite/migrate.js +56 -0
  106. package/dist/libs/storage/sqlite/migrate.js.map +1 -0
  107. package/dist/libs/storage/sqlite/repository.d.ts +95 -0
  108. package/dist/libs/storage/sqlite/repository.js +310 -0
  109. package/dist/libs/storage/sqlite/repository.js.map +1 -0
  110. package/dist/libs/storage/sqlite/schema.d.ts +1 -0
  111. package/dist/libs/storage/sqlite/schema.js +93 -0
  112. package/dist/libs/storage/sqlite/schema.js.map +1 -0
  113. package/package.json +37 -0
  114. package/skills/greplica-bootstrap/SKILL.md +116 -0
  115. package/skills/greplica-update-working-memory/SKILL.md +183 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../libs/install/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const greplicaInstructionBlock = "## Greplica\n\nUse Greplica when you need repo context that is not already in the conversation, especially before working on unfamiliar code, tracing how something works, or making changes that depend on prior decisions.\n\n```bash\ngreplica graph context \"<natural-language question about the current task>\"\n```\n\nUse the returned claims, components, flows, and code anchors to choose what to inspect next. Treat Greplica as navigation and prior context, not final truth: verify facts against current files before editing.\n\nRun `greplica-bootstrap` once per repo to initialize memory. Near the end of useful sessions, run `greplica-update-working-memory` to save durable decisions, changed flows, constraints, and follow-up work.\n";
@@ -0,0 +1,13 @@
1
+ export const greplicaInstructionBlock = `## Greplica
2
+
3
+ Use Greplica when you need repo context that is not already in the conversation, especially before working on unfamiliar code, tracing how something works, or making changes that depend on prior decisions.
4
+
5
+ \`\`\`bash
6
+ greplica graph context "<natural-language question about the current task>"
7
+ \`\`\`
8
+
9
+ Use the returned claims, components, flows, and code anchors to choose what to inspect next. Treat Greplica as navigation and prior context, not final truth: verify facts against current files before editing.
10
+
11
+ Run \`greplica-bootstrap\` once per repo to initialize memory. Near the end of useful sessions, run \`greplica-update-working-memory\` to save durable decisions, changed flows, constraints, and follow-up work.
12
+ `;
13
+ //# sourceMappingURL=instruction-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction-blocks.js","sourceRoot":"","sources":["../../../libs/install/instruction-blocks.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;CAWvC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type InstallPlatform = "codex" | "claude";
2
+ export type InstructionScope = "user" | "project" | "none";
3
+ export type InstallEmbedding = "local" | "openai";
4
+ export declare const skillNames: readonly ["greplica-bootstrap", "greplica-update-working-memory"];
5
+ export type SkillName = (typeof skillNames)[number];
6
+ export interface PlatformPaths {
7
+ skillsRoot: string;
8
+ userInstructionFile: string;
9
+ projectInstructionFile: string;
10
+ }
11
+ export declare function packageRoot(): string;
12
+ export declare function platformPaths(platform: InstallPlatform, projectRoot: string): PlatformPaths;
@@ -0,0 +1,31 @@
1
+ import { existsSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ export const skillNames = ["greplica-bootstrap", "greplica-update-working-memory"];
6
+ export function packageRoot() {
7
+ let current = dirname(fileURLToPath(import.meta.url));
8
+ while (current !== dirname(current)) {
9
+ if (existsSync(join(current, "package.json")) && existsSync(join(current, "skills")))
10
+ return current;
11
+ current = dirname(current);
12
+ }
13
+ throw new Error("Could not locate Greplica package root with bundled skills.");
14
+ }
15
+ export function platformPaths(platform, projectRoot) {
16
+ if (platform === "codex") {
17
+ const codexHome = process.env.CODEX_HOME ?? join(homedir(), ".codex");
18
+ return {
19
+ skillsRoot: join(codexHome, "skills"),
20
+ userInstructionFile: join(codexHome, "AGENTS.md"),
21
+ projectInstructionFile: join(projectRoot, "AGENTS.md"),
22
+ };
23
+ }
24
+ const claudeHome = join(homedir(), ".claude");
25
+ return {
26
+ skillsRoot: join(claudeHome, "skills"),
27
+ userInstructionFile: join(claudeHome, "CLAUDE.md"),
28
+ projectInstructionFile: join(projectRoot, "CLAUDE.md"),
29
+ };
30
+ }
31
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../libs/install/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,oBAAoB,EAAE,gCAAgC,CAAU,CAAC;AAS5F,MAAM,UAAU,WAAW;IACzB,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,OAAO,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAAE,OAAO,OAAO,CAAC;QACrG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAyB,EAAE,WAAmB;IAC1E,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtE,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;YACrC,mBAAmB,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;YACjD,sBAAsB,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;SACvD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;QACtC,mBAAmB,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC;QAClD,sBAAsB,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;KACvD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ClaimId } from "./schema.js";
2
+ export type ClaimKind = "fact" | "requirement" | "decision" | "task" | "question" | "risk";
3
+ export type ClaimTruth = "code_verified" | "source_verified" | "unknown";
4
+ export type ClaimIntent = "intended" | "accidental" | "unknown";
5
+ export interface Claim {
6
+ id: ClaimId;
7
+ kind: ClaimKind;
8
+ text: string;
9
+ truth: ClaimTruth;
10
+ intent: ClaimIntent;
11
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../libs/knowledge-graph/claim.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { GraphScopeId, MemoryCommitId } from "./schema.js";
2
+ export interface MemoryCommit {
3
+ id: MemoryCommitId;
4
+ scope_id: GraphScopeId;
5
+ parent_memory_commit_id?: MemoryCommitId;
6
+ git_commit_sha?: string;
7
+ title: string;
8
+ summary?: string;
9
+ created_at: string;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../libs/knowledge-graph/commit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { EdgeId, GraphObjectType } from "./schema.js";
2
+ export type EdgeKind = "about" | "contains" | "touches" | "supersedes" | "evidenced_by";
3
+ export type EdgeMetadata = Record<string, unknown>;
4
+ export interface Edge {
5
+ id: EdgeId;
6
+ from_id: string;
7
+ from_type: GraphObjectType;
8
+ to_id: string;
9
+ to_type: GraphObjectType;
10
+ kind: EdgeKind;
11
+ metadata?: EdgeMetadata;
12
+ }
13
+ export declare function isAllowedEdge(edge: Pick<Edge, "from_type" | "to_type" | "kind">): boolean;
@@ -0,0 +1,17 @@
1
+ export function isAllowedEdge(edge) {
2
+ switch (edge.kind) {
3
+ case "about":
4
+ return edge.from_type === "claim" && (edge.to_type === "component" || edge.to_type === "flow");
5
+ case "contains":
6
+ return ((edge.from_type === "component" && edge.to_type === "component") ||
7
+ (edge.from_type === "flow" && edge.to_type === "flow"));
8
+ case "touches":
9
+ return edge.from_type === "flow" && edge.to_type === "component";
10
+ case "supersedes":
11
+ return (edge.from_type === edge.to_type &&
12
+ (edge.from_type === "component" || edge.from_type === "flow" || edge.from_type === "claim"));
13
+ case "evidenced_by":
14
+ return edge.from_type === "claim" && edge.to_type === "source";
15
+ }
16
+ }
17
+ //# sourceMappingURL=edge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../libs/knowledge-graph/edge.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,aAAa,CAAC,IAAkD;IAC9E,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAEjG,KAAK,UAAU;YACb,OAAO,CACL,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC;gBAChE,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CACvD,CAAC;QAEJ,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC;QAEnE,KAAK,YAAY;YACf,OAAO,CACL,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO;gBAC/B,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,CAC5F,CAAC;QAEJ,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC;IACnE,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { GraphReadResult } from "./service.js";
2
+ export interface ExportedGraphFile {
3
+ path: string;
4
+ content: string;
5
+ }
6
+ export declare function buildGraphFolderExport(graph: GraphReadResult): ExportedGraphFile[];
@@ -0,0 +1,337 @@
1
+ import { createHash } from "node:crypto";
2
+ import { posix as path } from "node:path";
3
+ export function buildGraphFolderExport(graph) {
4
+ const components = buildEntityIndex("component", graph.components, graph.edges);
5
+ const flows = buildEntityIndex("flow", graph.flows, graph.edges);
6
+ const claimsBySubjectId = buildClaimsBySubjectId(graph.claims, graph.edges);
7
+ const touchedComponentIdsByFlowId = buildTouchedComponentIdsByFlowId(graph.edges);
8
+ const flowIdsByTouchedComponentId = invertMap(touchedComponentIdsByFlowId);
9
+ const evidenceByClaimId = buildEvidenceByClaimId(graph.edges);
10
+ const sourceById = new Map(graph.sources.map((source) => [source.id, source]));
11
+ const files = [
12
+ {
13
+ path: "index.md",
14
+ content: renderRootIndex(graph, components, flows),
15
+ },
16
+ {
17
+ path: "sources.md",
18
+ content: renderSources(graph.sources, graph.claims, evidenceByClaimId),
19
+ },
20
+ ];
21
+ for (const component of sortByName(graph.components)) {
22
+ files.push({
23
+ path: `${components.pathsById.get(component.id) ?? `components/${segmentForId(component.id, "component")}`}/index.md`,
24
+ content: renderComponentIndex({
25
+ component,
26
+ components,
27
+ flows,
28
+ claims: claimsBySubjectId.get(component.id) ?? [],
29
+ relatedFlowIds: flowIdsByTouchedComponentId.get(component.id) ?? [],
30
+ evidenceByClaimId,
31
+ sourceById,
32
+ }),
33
+ });
34
+ }
35
+ for (const flow of sortByName(graph.flows)) {
36
+ files.push({
37
+ path: `${flows.pathsById.get(flow.id) ?? `flows/${segmentForId(flow.id, "flow")}`}/index.md`,
38
+ content: renderFlowIndex({
39
+ flow,
40
+ flows,
41
+ components,
42
+ claims: claimsBySubjectId.get(flow.id) ?? [],
43
+ touchedComponentIds: touchedComponentIdsByFlowId.get(flow.id) ?? [],
44
+ evidenceByClaimId,
45
+ sourceById,
46
+ }),
47
+ });
48
+ }
49
+ return files.sort((left, right) => left.path.localeCompare(right.path));
50
+ }
51
+ function buildEntityIndex(type, entities, edges) {
52
+ const byId = new Map(entities.map((entity) => [entity.id, entity]));
53
+ const childrenByParentId = new Map();
54
+ const parentCandidatesByChildId = new Map();
55
+ for (const edge of edges) {
56
+ if (edge.kind !== "contains" || edge.from_type !== type || edge.to_type !== type)
57
+ continue;
58
+ if (!byId.has(edge.from_id) || !byId.has(edge.to_id))
59
+ continue;
60
+ appendToMap(childrenByParentId, edge.from_id, edge.to_id);
61
+ appendToMap(parentCandidatesByChildId, edge.to_id, edge.from_id);
62
+ }
63
+ sortMapValues(childrenByParentId, byId);
64
+ sortMapValues(parentCandidatesByChildId, byId);
65
+ const parentByChildId = new Map();
66
+ for (const [childId, parentIds] of parentCandidatesByChildId) {
67
+ const parentId = parentIds[0];
68
+ if (parentId !== undefined)
69
+ parentByChildId.set(childId, parentId);
70
+ }
71
+ const roots = sortByName(entities)
72
+ .map((entity) => entity.id)
73
+ .filter((id) => !parentByChildId.has(id));
74
+ const pathsById = new Map();
75
+ for (const entity of entities) {
76
+ pathsById.set(entity.id, entityPath(type, entity.id, byId, parentByChildId, new Set()));
77
+ }
78
+ return { byId, childrenByParentId, parentByChildId, pathsById, roots };
79
+ }
80
+ function entityPath(type, id, byId, parentByChildId, visiting) {
81
+ const entity = byId.get(id);
82
+ const segment = segmentForId(id, type);
83
+ const root = `${type}s`;
84
+ if (entity === undefined || visiting.has(id))
85
+ return `${root}/${segment}`;
86
+ const parentId = parentByChildId.get(id);
87
+ if (parentId === undefined || !byId.has(parentId))
88
+ return `${root}/${segment}`;
89
+ visiting.add(id);
90
+ const parentPath = entityPath(type, parentId, byId, parentByChildId, visiting);
91
+ visiting.delete(id);
92
+ return `${parentPath}/${segment}`;
93
+ }
94
+ function renderRootIndex(graph, components, flows) {
95
+ return lines("# Graph View", "", "Current graph view: main + working.", "", `Components: ${graph.components.length}`, `Flows: ${graph.flows.length}`, `Claims: ${graph.claims.length}`, `Sources: ${graph.sources.length}`, "", "## Components", "", ...renderEntityTree("index.md", components.roots, components), "", "## Flows", "", ...renderEntityTree("index.md", flows.roots, flows), "", "## Sources", "", "- [sources](sources.md)");
96
+ }
97
+ function renderComponentIndex(input) {
98
+ const content = [`# ${input.component.name}`, "", `ID: \`${input.component.id}\``];
99
+ const currentPath = `${input.components.pathsById.get(input.component.id) ?? ""}/index.md`;
100
+ const parentId = input.components.parentByChildId.get(input.component.id);
101
+ const childIds = input.components.childrenByParentId.get(input.component.id) ?? [];
102
+ if (input.component.code_anchor !== undefined)
103
+ content.push(`Code anchor: \`${input.component.code_anchor}\``);
104
+ if (parentId !== undefined) {
105
+ content.push(`Parent component: ${linkToEntity(currentPath, parentId, input.components) ?? `\`${parentId}\``}`);
106
+ }
107
+ pushEntitySection(content, "Child Components", currentPath, childIds, input.components);
108
+ pushEntitySection(content, "Related Flows", currentPath, input.relatedFlowIds, input.flows);
109
+ pushClaimSection(content, input.claims, input.evidenceByClaimId, input.sourceById);
110
+ return lines(...content);
111
+ }
112
+ function renderFlowIndex(input) {
113
+ const content = [`# ${input.flow.name}`, "", `ID: \`${input.flow.id}\``];
114
+ const currentPath = `${input.flows.pathsById.get(input.flow.id) ?? ""}/index.md`;
115
+ const parentId = input.flows.parentByChildId.get(input.flow.id);
116
+ const childIds = input.flows.childrenByParentId.get(input.flow.id) ?? [];
117
+ if (parentId !== undefined)
118
+ content.push(`Parent flow: ${linkToEntity(currentPath, parentId, input.flows) ?? `\`${parentId}\``}`);
119
+ pushEntitySection(content, "Child Flows", currentPath, childIds, input.flows);
120
+ pushEntitySection(content, "Touched Components", currentPath, input.touchedComponentIds, input.components);
121
+ pushClaimSection(content, input.claims, input.evidenceByClaimId, input.sourceById);
122
+ return lines(...content);
123
+ }
124
+ function renderSources(sources, claims, evidenceByClaimId) {
125
+ const claimById = new Map(claims.map((claim) => [claim.id, claim]));
126
+ const claimIdsBySourceId = new Map();
127
+ for (const [claimId, evidence] of evidenceByClaimId) {
128
+ for (const item of evidence)
129
+ appendToMap(claimIdsBySourceId, item.sourceId, claimId);
130
+ }
131
+ const content = ["# Sources", ""];
132
+ for (const source of sortByTitle(sources)) {
133
+ content.push(`## ${source.title ?? source.ref}`, "", `\`${source.id}\` | \`${source.kind}\` | \`${source.ref}\``, "");
134
+ const claimIds = claimIdsBySourceId.get(source.id) ?? [];
135
+ if (claimIds.length === 0) {
136
+ content.push("- No claims reference this source.");
137
+ }
138
+ else {
139
+ for (const claimId of claimIds.sort()) {
140
+ const claim = claimById.get(claimId);
141
+ content.push(`- \`${claimId}\`${claim === undefined ? "" : ` ${claim.text}`}`);
142
+ }
143
+ }
144
+ content.push("");
145
+ }
146
+ if (sources.length === 0)
147
+ content.push("No sources.");
148
+ return lines(...content);
149
+ }
150
+ function renderClaims(claims, evidenceByClaimId, sourceById) {
151
+ if (claims.length === 0)
152
+ return [];
153
+ const content = [];
154
+ for (const [kind, kindClaims] of groupedClaims(claims)) {
155
+ content.push(`### ${claimKindTitle(kind)}`, "");
156
+ for (const claim of kindClaims) {
157
+ const evidence = evidenceByClaimId.get(claim.id) ?? [];
158
+ const evidenceText = evidence.length === 0 ? "" : ` Evidence: ${renderEvidence(evidence, sourceById)}.`;
159
+ content.push(`- \`${claim.id}\`${claimMetadata(claim)}: ${claim.text}${evidenceText}`);
160
+ }
161
+ content.push("");
162
+ }
163
+ return content;
164
+ }
165
+ function pushEntitySection(content, title, currentPath, ids, index) {
166
+ if (ids.length === 0)
167
+ return;
168
+ content.push("", `## ${title}`, "", ...renderEntityLinks(currentPath, ids, index));
169
+ }
170
+ function pushClaimSection(content, claims, evidenceByClaimId, sourceById) {
171
+ const renderedClaims = renderClaims(claims, evidenceByClaimId, sourceById);
172
+ if (renderedClaims.length === 0)
173
+ return;
174
+ content.push("", "## Claims", "", ...renderedClaims);
175
+ }
176
+ function renderEntityTree(currentPath, ids, index, depth = 0) {
177
+ if (ids.length === 0 && depth === 0)
178
+ return ["- None."];
179
+ const content = [];
180
+ for (const id of ids) {
181
+ const entity = index.byId.get(id);
182
+ if (entity === undefined)
183
+ continue;
184
+ const indent = " ".repeat(depth);
185
+ content.push(`${indent}- ${linkToEntity(currentPath, id, index) ?? entity.name}`);
186
+ content.push(...renderEntityTree(currentPath, index.childrenByParentId.get(id) ?? [], index, depth + 1));
187
+ }
188
+ return content;
189
+ }
190
+ function renderEntityLinks(currentPath, ids, index) {
191
+ return ids
192
+ .map((id) => linkToEntity(currentPath, id, index))
193
+ .filter((link) => link !== undefined)
194
+ .map((link) => `- ${link}`);
195
+ }
196
+ function linkToEntity(currentPath, id, index) {
197
+ const entity = index.byId.get(id);
198
+ const entityPath = index.pathsById.get(id);
199
+ if (entity === undefined || entityPath === undefined)
200
+ return undefined;
201
+ const target = relativeFolderLink(currentPath, `${entityPath}/index.md`);
202
+ return `[${entity.name}](${target})`;
203
+ }
204
+ function relativeFolderLink(fromIndexPath, toIndexPath) {
205
+ const fromDirectory = path.dirname(fromIndexPath);
206
+ const toDirectory = path.dirname(toIndexPath);
207
+ const relative = path.relative(fromDirectory, toDirectory);
208
+ return relative.length === 0 ? "./" : `${relative}/`;
209
+ }
210
+ function buildClaimsBySubjectId(claims, edges) {
211
+ const claimById = new Map(claims.map((claim) => [claim.id, claim]));
212
+ const claimsBySubjectId = new Map();
213
+ for (const edge of edges) {
214
+ if (edge.kind !== "about" || edge.from_type !== "claim")
215
+ continue;
216
+ const claim = claimById.get(edge.from_id);
217
+ if (claim === undefined)
218
+ continue;
219
+ appendToMap(claimsBySubjectId, edge.to_id, claim);
220
+ }
221
+ for (const [subjectId, subjectClaims] of claimsBySubjectId) {
222
+ claimsBySubjectId.set(subjectId, sortByClaimKind(subjectClaims));
223
+ }
224
+ return claimsBySubjectId;
225
+ }
226
+ function groupedClaims(claims) {
227
+ const groups = new Map();
228
+ for (const claim of sortByClaimKind(claims))
229
+ appendToMap(groups, claim.kind, claim);
230
+ return [...groups.entries()];
231
+ }
232
+ function claimKindTitle(kind) {
233
+ switch (kind) {
234
+ case "decision":
235
+ return "Decisions";
236
+ case "fact":
237
+ return "Facts";
238
+ case "question":
239
+ return "Questions";
240
+ case "requirement":
241
+ return "Requirements";
242
+ case "risk":
243
+ return "Risks";
244
+ case "task":
245
+ return "Tasks";
246
+ }
247
+ }
248
+ function claimMetadata(claim) {
249
+ const metadata = [];
250
+ if (claim.truth !== "code_verified")
251
+ metadata.push(claim.truth);
252
+ if (claim.intent !== "intended")
253
+ metadata.push(`${claim.intent} intent`);
254
+ return metadata.length === 0 ? "" : ` (${metadata.join(", ")})`;
255
+ }
256
+ function renderEvidence(evidence, sourceById) {
257
+ return evidence
258
+ .map((item) => {
259
+ const source = sourceById.get(item.sourceId);
260
+ return source?.title ?? source?.ref ?? item.sourceId;
261
+ })
262
+ .join("; ");
263
+ }
264
+ function buildTouchedComponentIdsByFlowId(edges) {
265
+ const touchedComponentIdsByFlowId = new Map();
266
+ for (const edge of edges) {
267
+ if (edge.kind !== "touches" || edge.from_type !== "flow" || edge.to_type !== "component")
268
+ continue;
269
+ appendToMap(touchedComponentIdsByFlowId, edge.from_id, edge.to_id);
270
+ }
271
+ for (const [flowId, componentIds] of touchedComponentIdsByFlowId)
272
+ touchedComponentIdsByFlowId.set(flowId, componentIds.sort());
273
+ return touchedComponentIdsByFlowId;
274
+ }
275
+ function buildEvidenceByClaimId(edges) {
276
+ const evidenceByClaimId = new Map();
277
+ for (const edge of edges) {
278
+ if (edge.kind !== "evidenced_by" || edge.from_type !== "claim" || edge.to_type !== "source")
279
+ continue;
280
+ const reason = typeof edge.metadata?.reason === "string" ? edge.metadata.reason : undefined;
281
+ appendToMap(evidenceByClaimId, edge.from_id, { sourceId: edge.to_id, reason });
282
+ }
283
+ return evidenceByClaimId;
284
+ }
285
+ function invertMap(input) {
286
+ const output = new Map();
287
+ for (const [fromId, toIds] of input) {
288
+ for (const toId of toIds)
289
+ appendToMap(output, toId, fromId);
290
+ }
291
+ for (const [id, values] of output)
292
+ output.set(id, values.sort());
293
+ return output;
294
+ }
295
+ function appendToMap(map, key, value) {
296
+ const values = map.get(key);
297
+ if (values === undefined) {
298
+ map.set(key, [value]);
299
+ return;
300
+ }
301
+ values.push(value);
302
+ }
303
+ function sortMapValues(map, byId) {
304
+ for (const [key, ids] of map) {
305
+ map.set(key, ids.sort((left, right) => {
306
+ const leftEntity = byId.get(left);
307
+ const rightEntity = byId.get(right);
308
+ return (leftEntity?.name ?? left).localeCompare(rightEntity?.name ?? right);
309
+ }));
310
+ }
311
+ }
312
+ function sortByName(items) {
313
+ return [...items].sort((left, right) => left.name.localeCompare(right.name));
314
+ }
315
+ function sortByTitle(items) {
316
+ return [...items].sort((left, right) => (left.title ?? left.ref).localeCompare(right.title ?? right.ref));
317
+ }
318
+ function sortByClaimKind(claims) {
319
+ return [...claims].sort((left, right) => {
320
+ const kind = left.kind.localeCompare(right.kind);
321
+ if (kind !== 0)
322
+ return kind;
323
+ return left.id.localeCompare(right.id);
324
+ });
325
+ }
326
+ function segmentForId(id, type) {
327
+ const withoutPrefix = id.startsWith(`${type}.`) ? id.slice(type.length + 1) : id;
328
+ const slugged = withoutPrefix.replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase();
329
+ return slugged.length > 0 ? slugged : `${type}-${shortHash(id)}`;
330
+ }
331
+ function shortHash(value) {
332
+ return createHash("sha1").update(value).digest("hex").slice(0, 8);
333
+ }
334
+ function lines(...values) {
335
+ return `${values.filter((value) => value !== undefined).join("\n").replace(/\n{3,}/g, "\n\n").trimEnd()}\n`;
336
+ }
337
+ //# sourceMappingURL=folder-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-export.js","sourceRoot":"","sources":["../../../libs/knowledge-graph/folder-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { GraphContextConfig } from "./config.js";
2
+ import type { ContextDocument } from "./documents.js";
3
+ export interface ScoreEntry {
4
+ id: string;
5
+ score: number;
6
+ rank: number;
7
+ }
8
+ export declare function scoreBm25(query: string, documents: ContextDocument[], config: GraphContextConfig): ScoreEntry[];
9
+ export declare function tokenize(text: string): string[];
@@ -0,0 +1,62 @@
1
+ export function scoreBm25(query, documents, config) {
2
+ const queryTokens = tokenize(query);
3
+ if (queryTokens.length === 0 || documents.length === 0)
4
+ return [];
5
+ const tokenized = documents.map((document) => ({
6
+ id: document.key,
7
+ tokens: tokenize(document.text),
8
+ }));
9
+ const avgDocLength = tokenized.reduce((sum, document) => sum + document.tokens.length, 0) / tokenized.length || 1;
10
+ const uniqueQueryTokens = [...new Set(queryTokens)];
11
+ const documentFrequency = new Map();
12
+ for (const token of uniqueQueryTokens) {
13
+ documentFrequency.set(token, tokenized.filter((document) => document.tokens.includes(token)).length);
14
+ }
15
+ const scored = tokenized
16
+ .map((document) => {
17
+ let score = 0;
18
+ for (const token of queryTokens) {
19
+ const tf = document.tokens.filter((candidate) => candidate === token).length;
20
+ if (tf === 0)
21
+ continue;
22
+ const df = documentFrequency.get(token) ?? 0;
23
+ const idf = Math.log((tokenized.length - df + 0.5) / (df + 0.5) + 1);
24
+ const { k1, b } = config.ranking.bm25;
25
+ score += (idf * tf * (k1 + 1)) / (tf + k1 * (1 - b + (b * document.tokens.length) / avgDocLength));
26
+ }
27
+ return { id: document.id, score };
28
+ })
29
+ .filter((entry) => entry.score > 0)
30
+ .sort((a, b) => b.score - a.score || a.id.localeCompare(b.id));
31
+ const maxScore = scored[0]?.score ?? 1;
32
+ return scored.map((entry, index) => ({
33
+ id: entry.id,
34
+ score: entry.score / maxScore,
35
+ rank: index + 1,
36
+ }));
37
+ }
38
+ export function tokenize(text) {
39
+ const tokens = text
40
+ .toLowerCase()
41
+ .split(/[^a-z0-9_./-]+/)
42
+ .map((token) => token.trim())
43
+ .filter((token) => token.length > 1);
44
+ return tokens.flatMap((token) => [token, ...tokenVariants(token)]);
45
+ }
46
+ function tokenVariants(token) {
47
+ if (!/^[a-z]+$/.test(token))
48
+ return [];
49
+ const variants = [];
50
+ if (token.endsWith("ing") && token.length > 5)
51
+ variants.push(token.slice(0, -3));
52
+ if (token.endsWith("ed") && token.length > 4)
53
+ variants.push(token.slice(0, -2));
54
+ if (token.endsWith("es") && token.length > 4)
55
+ variants.push(token.slice(0, -2));
56
+ if (token.endsWith("s") && token.length > 3)
57
+ variants.push(token.slice(0, -1));
58
+ if (token.endsWith("ation") && token.length > 7)
59
+ variants.push(`${token.slice(0, -5)}e`);
60
+ return variants.filter((variant) => variant.length > 1 && variant !== token);
61
+ }
62
+ //# sourceMappingURL=bm25.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bm25.js","sourceRoot":"","sources":["../../../../libs/knowledge-graph/graph-context/bm25.ts"],"names":[],"mappings":"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"}