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,95 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { MemoryCommit } from "../../knowledge-graph/commit.js";
3
+ import type { Edge } from "../../knowledge-graph/edge.js";
4
+ import type { MemoryCommitProposal } from "../../knowledge-graph/proposal.js";
5
+ import type { Component, Flow, GraphObjectType, Source } from "../../knowledge-graph/schema.js";
6
+ import type { Claim } from "../../knowledge-graph/claim.js";
7
+ import type { GraphScope, GraphScopeKind } from "../../knowledge-graph/scope.js";
8
+ export interface RepoRecord {
9
+ id: string;
10
+ remote_url: string | null;
11
+ root_path: string | null;
12
+ repo_name: string;
13
+ default_branch: string;
14
+ }
15
+ export interface UpsertRepoInput {
16
+ repo_root?: string;
17
+ remote_url?: string;
18
+ repo_name: string;
19
+ default_branch: string;
20
+ }
21
+ export interface CreateScopeInput {
22
+ repo_id: string;
23
+ kind: GraphScopeKind;
24
+ name: string;
25
+ parent_scope_id?: string;
26
+ ref?: string;
27
+ }
28
+ export interface CreateMemoryCommitInput {
29
+ scope_id: string;
30
+ git_commit_sha?: string;
31
+ title: string;
32
+ summary?: string;
33
+ }
34
+ export type EmbeddingObjectType = "claim" | "component" | "flow";
35
+ export interface GraphObjectEmbeddingRecord {
36
+ repo_id: string;
37
+ object_type: EmbeddingObjectType;
38
+ object_id: string;
39
+ provider: string;
40
+ model: string;
41
+ dimensions: number;
42
+ embedding: Buffer;
43
+ created_at: string;
44
+ }
45
+ export interface InsertGraphObjectEmbeddingInput {
46
+ repo_id: string;
47
+ object_type: EmbeddingObjectType;
48
+ object_id: string;
49
+ provider: string;
50
+ model: string;
51
+ dimensions: number;
52
+ embedding: Buffer;
53
+ }
54
+ export declare class SqliteRepository {
55
+ private readonly db;
56
+ constructor(db: Database.Database);
57
+ upsertRepo(input: UpsertRepoInput): {
58
+ repo: RepoRecord;
59
+ created: boolean;
60
+ };
61
+ getRepoByRemote(remoteUrl: string): RepoRecord | undefined;
62
+ getRepoByRootPath(rootPath: string): RepoRecord | undefined;
63
+ requireRepo(remoteUrl: string): RepoRecord;
64
+ private findRepo;
65
+ private updateRepo;
66
+ ensureScope(input: CreateScopeInput): GraphScope;
67
+ requireWorkingScope(repoId: string): GraphScope;
68
+ readGraphView(repoId: string): {
69
+ components: Component[];
70
+ flows: Flow[];
71
+ claims: Claim[];
72
+ sources: Source[];
73
+ edges: Edge[];
74
+ };
75
+ createMemoryCommit(input: CreateMemoryCommitInput): MemoryCommit;
76
+ createProposalRecords(scopeId: string, memoryCommitId: string, proposal: MemoryCommitProposal): void;
77
+ subjectExists(type: GraphObjectType, id: string): boolean;
78
+ subjectType(id: string): GraphObjectType | undefined;
79
+ listGraphObjectEmbeddings(input: {
80
+ repo_id: string;
81
+ provider: string;
82
+ model: string;
83
+ dimensions: number;
84
+ }): GraphObjectEmbeddingRecord[];
85
+ insertGraphObjectEmbeddings(inputs: InsertGraphObjectEmbeddingInput[]): void;
86
+ private createMembership;
87
+ private currentScopeIds;
88
+ private membershipsForScopes;
89
+ private loadComponents;
90
+ private loadFlows;
91
+ private loadClaims;
92
+ private loadSources;
93
+ private loadEdges;
94
+ private loadByIds;
95
+ }
@@ -0,0 +1,310 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ export class SqliteRepository {
3
+ db;
4
+ constructor(db) {
5
+ this.db = db;
6
+ }
7
+ upsertRepo(input) {
8
+ const existing = this.findRepo(input);
9
+ if (existing)
10
+ return { repo: this.updateRepo(existing.repo, input, existing.matchedBy), created: false };
11
+ const repo = {
12
+ id: makeId("repo", identityKey(input)),
13
+ remote_url: input.remote_url ?? null,
14
+ root_path: input.repo_root ?? null,
15
+ repo_name: input.repo_name,
16
+ default_branch: input.default_branch,
17
+ };
18
+ this.db
19
+ .prepare(`INSERT INTO repos (id, remote_url, root_path, repo_name, default_branch)
20
+ VALUES (@id, @remote_url, @root_path, @repo_name, @default_branch)`)
21
+ .run(repo);
22
+ return { repo, created: true };
23
+ }
24
+ getRepoByRemote(remoteUrl) {
25
+ return this.db.prepare("SELECT * FROM repos WHERE remote_url = ?").get(remoteUrl);
26
+ }
27
+ getRepoByRootPath(rootPath) {
28
+ return this.db.prepare("SELECT * FROM repos WHERE root_path = ?").get(rootPath);
29
+ }
30
+ requireRepo(remoteUrl) {
31
+ const repo = this.getRepoByRemote(remoteUrl);
32
+ if (!repo) {
33
+ throw new Error(`Repo memory is not ready for ${remoteUrl}. Run 'greplica doctor' to diagnose setup.`);
34
+ }
35
+ return repo;
36
+ }
37
+ findRepo(input) {
38
+ if (input.remote_url !== undefined) {
39
+ const byRemote = this.getRepoByRemote(input.remote_url);
40
+ if (byRemote !== undefined)
41
+ return { repo: byRemote, matchedBy: "remote" };
42
+ }
43
+ if (input.repo_root !== undefined) {
44
+ for (const rootPath of rootPathCandidates(input.repo_root)) {
45
+ const byRootPath = this.getRepoByRootPath(rootPath);
46
+ if (byRootPath !== undefined)
47
+ return { repo: byRootPath, matchedBy: "root" };
48
+ }
49
+ }
50
+ return undefined;
51
+ }
52
+ updateRepo(existing, input, matchedBy) {
53
+ const shouldUpdateRootPath = matchedBy === "root" || existing.root_path === null || existing.root_path === input.repo_root;
54
+ const repo = {
55
+ id: existing.id,
56
+ remote_url: input.remote_url ?? existing.remote_url,
57
+ root_path: shouldUpdateRootPath ? (input.repo_root ?? existing.root_path) : existing.root_path,
58
+ repo_name: input.repo_name,
59
+ default_branch: input.default_branch,
60
+ };
61
+ this.db
62
+ .prepare(`UPDATE repos
63
+ SET remote_url = @remote_url,
64
+ root_path = @root_path,
65
+ repo_name = @repo_name,
66
+ default_branch = @default_branch
67
+ WHERE id = @id`)
68
+ .run(repo);
69
+ return repo;
70
+ }
71
+ ensureScope(input) {
72
+ const existing = this.db
73
+ .prepare("SELECT * FROM graph_scopes WHERE repo_id = ? AND kind = ? AND name = ?")
74
+ .get(input.repo_id, input.kind, input.name);
75
+ if (existing)
76
+ return existing;
77
+ const scope = {
78
+ id: makeId("scope", `${input.repo_id}:${input.kind}:${input.name}`),
79
+ kind: input.kind,
80
+ name: input.name,
81
+ parent_scope_id: input.parent_scope_id,
82
+ ref: input.ref,
83
+ created_at: now(),
84
+ };
85
+ this.db
86
+ .prepare(`INSERT INTO graph_scopes (id, repo_id, kind, name, parent_scope_id, ref, created_at)
87
+ VALUES (@id, @repo_id, @kind, @name, @parent_scope_id, @ref, @created_at)`)
88
+ .run({ ...scope, repo_id: input.repo_id });
89
+ return scope;
90
+ }
91
+ requireWorkingScope(repoId) {
92
+ const scope = this.db
93
+ .prepare("SELECT * FROM graph_scopes WHERE repo_id = ? AND kind = 'working' AND name = 'working'")
94
+ .get(repoId);
95
+ if (!scope)
96
+ throw new Error("Working scope is missing. Run 'greplica doctor' to diagnose setup.");
97
+ return scope;
98
+ }
99
+ readGraphView(repoId) {
100
+ const scopeIds = this.currentScopeIds(repoId);
101
+ const memberships = this.membershipsForScopes(scopeIds);
102
+ const rawEdges = this.loadEdges(selectIds(memberships, "edge"));
103
+ const active = activeSubjectKeys(memberships, rawEdges);
104
+ const edges = rawEdges.filter((edge) => active.has(subjectKey("edge", edge.id)) &&
105
+ active.has(subjectKey(edge.from_type, edge.from_id)) &&
106
+ (edge.to_type === "source" || active.has(subjectKey(edge.to_type, edge.to_id))));
107
+ return {
108
+ components: this.loadComponents(selectActiveIds(memberships, active, "component")),
109
+ flows: this.loadFlows(selectActiveIds(memberships, active, "flow")),
110
+ claims: this.loadClaims(selectActiveIds(memberships, active, "claim")),
111
+ sources: this.loadSources([...new Set(edges.filter((edge) => edge.to_type === "source").map((edge) => edge.to_id))]),
112
+ edges,
113
+ };
114
+ }
115
+ createMemoryCommit(input) {
116
+ const parent = this.db
117
+ .prepare("SELECT id FROM memory_commits WHERE scope_id = ? ORDER BY created_at DESC LIMIT 1")
118
+ .get(input.scope_id);
119
+ const memoryCommit = {
120
+ id: `mc_${randomUUID()}`,
121
+ scope_id: input.scope_id,
122
+ parent_memory_commit_id: parent?.id,
123
+ git_commit_sha: input.git_commit_sha,
124
+ title: input.title,
125
+ summary: input.summary,
126
+ created_at: now(),
127
+ };
128
+ this.db
129
+ .prepare(`INSERT INTO memory_commits
130
+ (id, scope_id, parent_memory_commit_id, git_commit_sha, title, summary, created_at)
131
+ VALUES
132
+ (@id, @scope_id, @parent_memory_commit_id, @git_commit_sha, @title, @summary, @created_at)`)
133
+ .run(memoryCommit);
134
+ return memoryCommit;
135
+ }
136
+ createProposalRecords(scopeId, memoryCommitId, proposal) {
137
+ const write = this.db.transaction(() => {
138
+ for (const component of proposal.creates.components ?? []) {
139
+ this.db
140
+ .prepare("INSERT INTO components (id, name, code_anchor) VALUES (@id, @name, @code_anchor)")
141
+ .run(component);
142
+ this.createMembership(scopeId, "component", component.id, memoryCommitId);
143
+ }
144
+ for (const flow of proposal.creates.flows ?? []) {
145
+ this.db.prepare("INSERT INTO flows (id, name) VALUES (@id, @name)").run(flow);
146
+ this.createMembership(scopeId, "flow", flow.id, memoryCommitId);
147
+ }
148
+ for (const claim of proposal.creates.claims ?? []) {
149
+ this.db
150
+ .prepare("INSERT INTO claims (id, kind, text, truth, intent) VALUES (@id, @kind, @text, @truth, @intent)")
151
+ .run(claim);
152
+ this.createMembership(scopeId, "claim", claim.id, memoryCommitId);
153
+ }
154
+ for (const source of proposal.creates.sources ?? []) {
155
+ this.db
156
+ .prepare("INSERT INTO sources (id, kind, ref, title) VALUES (@id, @kind, @ref, @title)")
157
+ .run(source);
158
+ }
159
+ for (const edge of proposal.creates.edges ?? []) {
160
+ this.db
161
+ .prepare(`INSERT INTO edges (id, from_id, from_type, to_id, to_type, kind, metadata)
162
+ VALUES (@id, @from_id, @from_type, @to_id, @to_type, @kind, @metadata)`)
163
+ .run({ ...edge, metadata: edge.metadata === undefined ? null : JSON.stringify(edge.metadata) });
164
+ this.createMembership(scopeId, "edge", edge.id, memoryCommitId);
165
+ }
166
+ });
167
+ write();
168
+ }
169
+ subjectExists(type, id) {
170
+ const table = tableForType(type);
171
+ const row = this.db.prepare(`SELECT id FROM ${table} WHERE id = ?`).get(id);
172
+ return row !== undefined;
173
+ }
174
+ subjectType(id) {
175
+ for (const type of ["component", "flow", "claim", "edge", "source"]) {
176
+ if (this.subjectExists(type, id))
177
+ return type;
178
+ }
179
+ return undefined;
180
+ }
181
+ listGraphObjectEmbeddings(input) {
182
+ return this.db
183
+ .prepare(`SELECT repo_id, object_type, object_id, provider, model, dimensions, embedding, created_at
184
+ FROM graph_object_embeddings
185
+ WHERE repo_id = @repo_id
186
+ AND provider = @provider
187
+ AND model = @model
188
+ AND dimensions = @dimensions`)
189
+ .all(input);
190
+ }
191
+ insertGraphObjectEmbeddings(inputs) {
192
+ if (inputs.length === 0)
193
+ return;
194
+ const insert = this.db.prepare(`INSERT OR IGNORE INTO graph_object_embeddings
195
+ (repo_id, object_type, object_id, provider, model, dimensions, embedding, created_at)
196
+ VALUES
197
+ (@repo_id, @object_type, @object_id, @provider, @model, @dimensions, @embedding, @created_at)`);
198
+ const write = this.db.transaction((records) => {
199
+ for (const record of records)
200
+ insert.run({ ...record, created_at: now() });
201
+ });
202
+ write(inputs);
203
+ }
204
+ createMembership(scopeId, subjectType, subjectId, memoryCommitId) {
205
+ this.db
206
+ .prepare(`INSERT INTO graph_memberships (scope_id, subject_type, subject_id, memory_commit_id)
207
+ VALUES (?, ?, ?, ?)`)
208
+ .run(scopeId, subjectType, subjectId, memoryCommitId);
209
+ }
210
+ currentScopeIds(repoId) {
211
+ const rows = this.db
212
+ .prepare("SELECT id FROM graph_scopes WHERE repo_id = ? AND kind IN ('main', 'working') ORDER BY kind")
213
+ .all(repoId);
214
+ return rows.map((row) => row.id);
215
+ }
216
+ membershipsForScopes(scopeIds) {
217
+ if (scopeIds.length === 0)
218
+ return [];
219
+ return this.db
220
+ .prepare(`SELECT subject_type, subject_id FROM graph_memberships WHERE scope_id IN (${placeholders(scopeIds)})`)
221
+ .all(...scopeIds);
222
+ }
223
+ loadComponents(ids) {
224
+ return this.loadByIds("components", ids);
225
+ }
226
+ loadFlows(ids) {
227
+ return this.loadByIds("flows", ids);
228
+ }
229
+ loadClaims(ids) {
230
+ return this.loadByIds("claims", ids);
231
+ }
232
+ loadSources(ids) {
233
+ return this.loadByIds("sources", ids);
234
+ }
235
+ loadEdges(ids) {
236
+ if (ids.length === 0)
237
+ return [];
238
+ const rows = this.db
239
+ .prepare(`SELECT * FROM edges WHERE id IN (${placeholders(ids)})`)
240
+ .all(...ids);
241
+ return rows.map((row) => ({
242
+ ...row,
243
+ metadata: row.metadata === null ? undefined : JSON.parse(row.metadata),
244
+ }));
245
+ }
246
+ loadByIds(table, ids) {
247
+ if (ids.length === 0)
248
+ return [];
249
+ return this.db.prepare(`SELECT * FROM ${table} WHERE id IN (${placeholders(ids)})`).all(...ids);
250
+ }
251
+ }
252
+ function activeSubjectKeys(memberships, edges) {
253
+ const active = new Set(memberships.map((membership) => subjectKey(membership.subject_type, membership.subject_id)));
254
+ const superseded = new Set(edges
255
+ .filter((edge) => edge.kind === "supersedes")
256
+ .map((edge) => subjectKey(edge.to_type, edge.to_id)));
257
+ for (const key of superseded) {
258
+ active.delete(key);
259
+ }
260
+ return active;
261
+ }
262
+ function selectIds(memberships, type) {
263
+ return [...new Set(memberships.filter((membership) => membership.subject_type === type).map((membership) => membership.subject_id))];
264
+ }
265
+ function selectActiveIds(memberships, active, type) {
266
+ return selectIds(memberships, type).filter((id) => active.has(subjectKey(type, id)));
267
+ }
268
+ function subjectKey(type, id) {
269
+ return `${type}:${id}`;
270
+ }
271
+ function tableForType(type) {
272
+ switch (type) {
273
+ case "component":
274
+ return "components";
275
+ case "flow":
276
+ return "flows";
277
+ case "claim":
278
+ return "claims";
279
+ case "edge":
280
+ return "edges";
281
+ case "source":
282
+ return "sources";
283
+ }
284
+ }
285
+ function makeId(prefix, value) {
286
+ const hash = createHash("sha1").update(value).digest("hex").slice(0, 16);
287
+ return `${prefix}_${hash}`;
288
+ }
289
+ function identityKey(input) {
290
+ if (input.remote_url !== undefined)
291
+ return input.remote_url;
292
+ if (input.repo_root !== undefined)
293
+ return `root:${input.repo_root}`;
294
+ throw new Error("Repo memory needs either a remote URL or a root path.");
295
+ }
296
+ function rootPathCandidates(rootPath) {
297
+ const candidates = [rootPath];
298
+ if (rootPath.startsWith("/private/var/"))
299
+ candidates.push(rootPath.slice("/private".length));
300
+ if (rootPath.startsWith("/var/"))
301
+ candidates.push(`/private${rootPath}`);
302
+ return candidates;
303
+ }
304
+ function now() {
305
+ return new Date().toISOString();
306
+ }
307
+ function placeholders(values) {
308
+ return values.map(() => "?").join(", ");
309
+ }
310
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../libs/storage/sqlite/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const schemaSql = "\nCREATE TABLE IF NOT EXISTS repos (\n id TEXT PRIMARY KEY,\n remote_url TEXT UNIQUE,\n root_path TEXT UNIQUE,\n repo_name TEXT NOT NULL,\n default_branch TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS graph_scopes (\n id TEXT PRIMARY KEY,\n repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,\n kind TEXT NOT NULL,\n name TEXT NOT NULL,\n parent_scope_id TEXT REFERENCES graph_scopes(id) ON DELETE SET NULL,\n ref TEXT,\n created_at TEXT NOT NULL,\n UNIQUE(repo_id, kind, name)\n);\n\nCREATE TABLE IF NOT EXISTS memory_commits (\n id TEXT PRIMARY KEY,\n scope_id TEXT NOT NULL REFERENCES graph_scopes(id) ON DELETE CASCADE,\n parent_memory_commit_id TEXT REFERENCES memory_commits(id) ON DELETE SET NULL,\n git_commit_sha TEXT,\n title TEXT NOT NULL,\n summary TEXT,\n created_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS components (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n code_anchor TEXT\n);\n\nCREATE TABLE IF NOT EXISTS flows (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS claims (\n id TEXT PRIMARY KEY,\n kind TEXT NOT NULL,\n text TEXT NOT NULL,\n truth TEXT NOT NULL,\n intent TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS sources (\n id TEXT PRIMARY KEY,\n kind TEXT NOT NULL,\n ref TEXT NOT NULL,\n title TEXT\n);\n\nCREATE TABLE IF NOT EXISTS edges (\n id TEXT PRIMARY KEY,\n from_id TEXT NOT NULL,\n from_type TEXT NOT NULL,\n to_id TEXT NOT NULL,\n to_type TEXT NOT NULL,\n kind TEXT NOT NULL,\n metadata TEXT\n);\n\nCREATE TABLE IF NOT EXISTS graph_memberships (\n scope_id TEXT NOT NULL REFERENCES graph_scopes(id) ON DELETE CASCADE,\n subject_type TEXT NOT NULL,\n subject_id TEXT NOT NULL,\n memory_commit_id TEXT NOT NULL REFERENCES memory_commits(id) ON DELETE CASCADE,\n PRIMARY KEY(scope_id, subject_type, subject_id)\n);\n\nCREATE TABLE IF NOT EXISTS graph_object_embeddings (\n repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,\n object_type TEXT NOT NULL,\n object_id TEXT NOT NULL,\n provider TEXT NOT NULL,\n model TEXT NOT NULL,\n dimensions INTEGER NOT NULL,\n embedding BLOB NOT NULL,\n created_at TEXT NOT NULL,\n PRIMARY KEY(repo_id, object_type, object_id, provider, model, dimensions)\n);\n\nCREATE INDEX IF NOT EXISTS graph_scopes_repo_idx ON graph_scopes(repo_id);\nCREATE INDEX IF NOT EXISTS memory_commits_scope_idx ON memory_commits(scope_id);\nCREATE INDEX IF NOT EXISTS graph_memberships_scope_idx ON graph_memberships(scope_id);\nCREATE INDEX IF NOT EXISTS graph_memberships_subject_idx ON graph_memberships(subject_type, subject_id);\nCREATE INDEX IF NOT EXISTS graph_object_embeddings_repo_idx ON graph_object_embeddings(repo_id);\n";
@@ -0,0 +1,93 @@
1
+ export const schemaSql = `
2
+ CREATE TABLE IF NOT EXISTS repos (
3
+ id TEXT PRIMARY KEY,
4
+ remote_url TEXT UNIQUE,
5
+ root_path TEXT UNIQUE,
6
+ repo_name TEXT NOT NULL,
7
+ default_branch TEXT NOT NULL
8
+ );
9
+
10
+ CREATE TABLE IF NOT EXISTS graph_scopes (
11
+ id TEXT PRIMARY KEY,
12
+ repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
13
+ kind TEXT NOT NULL,
14
+ name TEXT NOT NULL,
15
+ parent_scope_id TEXT REFERENCES graph_scopes(id) ON DELETE SET NULL,
16
+ ref TEXT,
17
+ created_at TEXT NOT NULL,
18
+ UNIQUE(repo_id, kind, name)
19
+ );
20
+
21
+ CREATE TABLE IF NOT EXISTS memory_commits (
22
+ id TEXT PRIMARY KEY,
23
+ scope_id TEXT NOT NULL REFERENCES graph_scopes(id) ON DELETE CASCADE,
24
+ parent_memory_commit_id TEXT REFERENCES memory_commits(id) ON DELETE SET NULL,
25
+ git_commit_sha TEXT,
26
+ title TEXT NOT NULL,
27
+ summary TEXT,
28
+ created_at TEXT NOT NULL
29
+ );
30
+
31
+ CREATE TABLE IF NOT EXISTS components (
32
+ id TEXT PRIMARY KEY,
33
+ name TEXT NOT NULL,
34
+ code_anchor TEXT
35
+ );
36
+
37
+ CREATE TABLE IF NOT EXISTS flows (
38
+ id TEXT PRIMARY KEY,
39
+ name TEXT NOT NULL
40
+ );
41
+
42
+ CREATE TABLE IF NOT EXISTS claims (
43
+ id TEXT PRIMARY KEY,
44
+ kind TEXT NOT NULL,
45
+ text TEXT NOT NULL,
46
+ truth TEXT NOT NULL,
47
+ intent TEXT NOT NULL
48
+ );
49
+
50
+ CREATE TABLE IF NOT EXISTS sources (
51
+ id TEXT PRIMARY KEY,
52
+ kind TEXT NOT NULL,
53
+ ref TEXT NOT NULL,
54
+ title TEXT
55
+ );
56
+
57
+ CREATE TABLE IF NOT EXISTS edges (
58
+ id TEXT PRIMARY KEY,
59
+ from_id TEXT NOT NULL,
60
+ from_type TEXT NOT NULL,
61
+ to_id TEXT NOT NULL,
62
+ to_type TEXT NOT NULL,
63
+ kind TEXT NOT NULL,
64
+ metadata TEXT
65
+ );
66
+
67
+ CREATE TABLE IF NOT EXISTS graph_memberships (
68
+ scope_id TEXT NOT NULL REFERENCES graph_scopes(id) ON DELETE CASCADE,
69
+ subject_type TEXT NOT NULL,
70
+ subject_id TEXT NOT NULL,
71
+ memory_commit_id TEXT NOT NULL REFERENCES memory_commits(id) ON DELETE CASCADE,
72
+ PRIMARY KEY(scope_id, subject_type, subject_id)
73
+ );
74
+
75
+ CREATE TABLE IF NOT EXISTS graph_object_embeddings (
76
+ repo_id TEXT NOT NULL REFERENCES repos(id) ON DELETE CASCADE,
77
+ object_type TEXT NOT NULL,
78
+ object_id TEXT NOT NULL,
79
+ provider TEXT NOT NULL,
80
+ model TEXT NOT NULL,
81
+ dimensions INTEGER NOT NULL,
82
+ embedding BLOB NOT NULL,
83
+ created_at TEXT NOT NULL,
84
+ PRIMARY KEY(repo_id, object_type, object_id, provider, model, dimensions)
85
+ );
86
+
87
+ CREATE INDEX IF NOT EXISTS graph_scopes_repo_idx ON graph_scopes(repo_id);
88
+ CREATE INDEX IF NOT EXISTS memory_commits_scope_idx ON memory_commits(scope_id);
89
+ CREATE INDEX IF NOT EXISTS graph_memberships_scope_idx ON graph_memberships(scope_id);
90
+ CREATE INDEX IF NOT EXISTS graph_memberships_subject_idx ON graph_memberships(subject_type, subject_id);
91
+ CREATE INDEX IF NOT EXISTS graph_object_embeddings_repo_idx ON graph_object_embeddings(repo_id);
92
+ `;
93
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../libs/storage/sqlite/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FxB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "greplica",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+ssh://git@github.com/Autoloops/greplica.git"
9
+ },
10
+ "bin": {
11
+ "greplica": "dist/apps/cli/main.js"
12
+ },
13
+ "scripts": {
14
+ "build": "tsc -p tsconfig.build.json",
15
+ "prepare": "npm run build",
16
+ "typecheck": "tsc --noEmit",
17
+ "eval:bootstrap-current": "npm run build && node dist/evals/cases/bootstrap-current-repo-at-8038fe8/run.js",
18
+ "eval:coding-proposal-apply-atomicity": "npm run build && node dist/evals/cases/coding-proposal-apply-atomicity-at-d6ebf80/run.js",
19
+ "eval:search-current": "npm run build && node dist/evals/cases/search-current-repo-at-8038fe8/run.js",
20
+ "eval:update-working-memory-source-evidence": "npm run build && node dist/evals/cases/update-working-memory-source-evidence-at-0438915/run.js"
21
+ },
22
+ "files": [
23
+ "dist/apps",
24
+ "dist/libs",
25
+ "skills",
26
+ "README.md"
27
+ ],
28
+ "dependencies": {
29
+ "@huggingface/transformers": "^4.2.0",
30
+ "better-sqlite3": "^11.9.1"
31
+ },
32
+ "devDependencies": {
33
+ "@types/better-sqlite3": "^7.6.13",
34
+ "@types/node": "^22.15.3",
35
+ "typescript": "^5.8.3"
36
+ }
37
+ }