@codemap-ai/core 0.2.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 (114) hide show
  1. package/LICENSE +21 -0
  2. package/dist/config.d.ts +40 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +229 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.d.ts +27 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +29 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/agent-pack-doctor.d.ts +36 -0
  11. package/dist/lib/agent-pack-doctor.d.ts.map +1 -0
  12. package/dist/lib/agent-pack-doctor.js +325 -0
  13. package/dist/lib/agent-pack-doctor.js.map +1 -0
  14. package/dist/lib/agent-pack-installer.d.ts +35 -0
  15. package/dist/lib/agent-pack-installer.d.ts.map +1 -0
  16. package/dist/lib/agent-pack-installer.js +371 -0
  17. package/dist/lib/agent-pack-installer.js.map +1 -0
  18. package/dist/lib/agent-pack.d.ts +36 -0
  19. package/dist/lib/agent-pack.d.ts.map +1 -0
  20. package/dist/lib/agent-pack.js +119 -0
  21. package/dist/lib/agent-pack.js.map +1 -0
  22. package/dist/lib/agent-workflow.d.ts +37 -0
  23. package/dist/lib/agent-workflow.d.ts.map +1 -0
  24. package/dist/lib/agent-workflow.js +329 -0
  25. package/dist/lib/agent-workflow.js.map +1 -0
  26. package/dist/lib/api-types.d.ts +32 -0
  27. package/dist/lib/api-types.d.ts.map +1 -0
  28. package/dist/lib/api-types.js +3 -0
  29. package/dist/lib/api-types.js.map +1 -0
  30. package/dist/lib/auto-inject.d.ts +16 -0
  31. package/dist/lib/auto-inject.d.ts.map +1 -0
  32. package/dist/lib/auto-inject.js +80 -0
  33. package/dist/lib/auto-inject.js.map +1 -0
  34. package/dist/lib/bundled-runtime.d.ts +9 -0
  35. package/dist/lib/bundled-runtime.d.ts.map +1 -0
  36. package/dist/lib/bundled-runtime.js +20 -0
  37. package/dist/lib/bundled-runtime.js.map +1 -0
  38. package/dist/lib/codemap-api.d.ts +22 -0
  39. package/dist/lib/codemap-api.d.ts.map +1 -0
  40. package/dist/lib/codemap-api.js +74 -0
  41. package/dist/lib/codemap-api.js.map +1 -0
  42. package/dist/lib/import-health.d.ts +38 -0
  43. package/dist/lib/import-health.d.ts.map +1 -0
  44. package/dist/lib/import-health.js +186 -0
  45. package/dist/lib/import-health.js.map +1 -0
  46. package/dist/lib/local-index.d.ts +52 -0
  47. package/dist/lib/local-index.d.ts.map +1 -0
  48. package/dist/lib/local-index.js +262 -0
  49. package/dist/lib/local-index.js.map +1 -0
  50. package/dist/lib/markdown-fence.d.ts +8 -0
  51. package/dist/lib/markdown-fence.d.ts.map +1 -0
  52. package/dist/lib/markdown-fence.js +98 -0
  53. package/dist/lib/markdown-fence.js.map +1 -0
  54. package/dist/lib/mcp-auth.d.ts +39 -0
  55. package/dist/lib/mcp-auth.d.ts.map +1 -0
  56. package/dist/lib/mcp-auth.js +184 -0
  57. package/dist/lib/mcp-auth.js.map +1 -0
  58. package/dist/lib/monorepo-root.d.ts +7 -0
  59. package/dist/lib/monorepo-root.d.ts.map +1 -0
  60. package/dist/lib/monorepo-root.js +23 -0
  61. package/dist/lib/monorepo-root.js.map +1 -0
  62. package/dist/lib/onboarding.d.ts +5 -0
  63. package/dist/lib/onboarding.d.ts.map +1 -0
  64. package/dist/lib/onboarding.js +96 -0
  65. package/dist/lib/onboarding.js.map +1 -0
  66. package/dist/lib/open-url.d.ts +7 -0
  67. package/dist/lib/open-url.d.ts.map +1 -0
  68. package/dist/lib/open-url.js +38 -0
  69. package/dist/lib/open-url.js.map +1 -0
  70. package/dist/lib/regex-utils.d.ts +2 -0
  71. package/dist/lib/regex-utils.d.ts.map +1 -0
  72. package/dist/lib/regex-utils.js +4 -0
  73. package/dist/lib/regex-utils.js.map +1 -0
  74. package/dist/lib/server-instructions.d.ts +2 -0
  75. package/dist/lib/server-instructions.d.ts.map +1 -0
  76. package/dist/lib/server-instructions.js +34 -0
  77. package/dist/lib/server-instructions.js.map +1 -0
  78. package/dist/lib/session-context.d.ts +2 -0
  79. package/dist/lib/session-context.d.ts.map +1 -0
  80. package/dist/lib/session-context.js +40 -0
  81. package/dist/lib/session-context.js.map +1 -0
  82. package/dist/lib/session-tracker.d.ts +16 -0
  83. package/dist/lib/session-tracker.d.ts.map +1 -0
  84. package/dist/lib/session-tracker.js +32 -0
  85. package/dist/lib/session-tracker.js.map +1 -0
  86. package/dist/lib/sqlite-index-store.d.ts +165 -0
  87. package/dist/lib/sqlite-index-store.d.ts.map +1 -0
  88. package/dist/lib/sqlite-index-store.js +609 -0
  89. package/dist/lib/sqlite-index-store.js.map +1 -0
  90. package/dist/lib/tool-response.d.ts +97 -0
  91. package/dist/lib/tool-response.d.ts.map +1 -0
  92. package/dist/lib/tool-response.js +127 -0
  93. package/dist/lib/tool-response.js.map +1 -0
  94. package/dist/lib/uuid-schema.d.ts +8 -0
  95. package/dist/lib/uuid-schema.d.ts.map +1 -0
  96. package/dist/lib/uuid-schema.js +10 -0
  97. package/dist/lib/uuid-schema.js.map +1 -0
  98. package/dist/lib/workspace-git.d.ts +16 -0
  99. package/dist/lib/workspace-git.d.ts.map +1 -0
  100. package/dist/lib/workspace-git.js +53 -0
  101. package/dist/lib/workspace-git.js.map +1 -0
  102. package/dist/lib/workspace-project.d.ts +61 -0
  103. package/dist/lib/workspace-project.d.ts.map +1 -0
  104. package/dist/lib/workspace-project.js +231 -0
  105. package/dist/lib/workspace-project.js.map +1 -0
  106. package/dist/lib/workspace-resolver.d.ts +16 -0
  107. package/dist/lib/workspace-resolver.d.ts.map +1 -0
  108. package/dist/lib/workspace-resolver.js +59 -0
  109. package/dist/lib/workspace-resolver.js.map +1 -0
  110. package/dist/lib/workspace-zip.d.ts +12 -0
  111. package/dist/lib/workspace-zip.d.ts.map +1 -0
  112. package/dist/lib/workspace-zip.js +126 -0
  113. package/dist/lib/workspace-zip.js.map +1 -0
  114. package/package.json +44 -0
@@ -0,0 +1,40 @@
1
+ import path from "node:path";
2
+ import { readLocalIndex } from "./local-index.js";
3
+ import { tryGetCurrentWorkspaceInfo } from "./workspace-git.js";
4
+ function formatAge(date) {
5
+ const mins = Math.floor((Date.now() - date.getTime()) / 60_000);
6
+ if (mins < 1)
7
+ return "just now";
8
+ if (mins < 60)
9
+ return `${mins}m ago`;
10
+ const hrs = Math.floor(mins / 60);
11
+ if (hrs < 24)
12
+ return `${hrs}h ago`;
13
+ return `${Math.floor(hrs / 24)}d ago`;
14
+ }
15
+ export async function buildSessionContext(cwd) {
16
+ const store = await readLocalIndex();
17
+ if (!store) {
18
+ return [
19
+ "[CodeMap] No local index found.",
20
+ "→ Call refresh_local_index before reading or editing files.",
21
+ ].join("\n");
22
+ }
23
+ const meta = store.getMeta();
24
+ const summary = store.getSummary();
25
+ const projectName = path.basename(summary.workspaceRootPath);
26
+ const indexedAgo = meta?.indexedAt ? formatAge(new Date(meta.indexedAt)) : "never";
27
+ const lines = [
28
+ `[CodeMap] ${projectName} · ${summary.fileCount} files · ${summary.symbolCount} symbols · indexed ${indexedAgo}`,
29
+ ];
30
+ // Stale check
31
+ if (meta?.commitSha && meta.workspaceRootPath) {
32
+ const gitInfo = await tryGetCurrentWorkspaceInfo(meta.workspaceRootPath).catch(() => null);
33
+ if (gitInfo && gitInfo.commitSha !== meta.commitSha) {
34
+ lines.push(`⚠ INDEX STALE (was ${meta.commitSha.slice(0, 7)}, HEAD moved) — call refresh_local_index first.`);
35
+ }
36
+ }
37
+ lines.push("→ For broad tasks with unclear files: call explore_task(task=<description>)");
38
+ return lines.join("\n");
39
+ }
40
+ //# sourceMappingURL=session-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/lib/session-context.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,SAAS,SAAS,CAAC,IAAU;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAChE,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAChC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,OAAO,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,GAAG,GAAG,OAAO,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IAErC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,iCAAiC;YACjC,6DAA6D;SAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEnF,MAAM,KAAK,GAAa;QACtB,aAAa,WAAW,MAAM,OAAO,CAAC,SAAS,YAAY,OAAO,CAAC,WAAW,sBAAsB,UAAU,EAAE;KACjH,CAAC;IAEF,cAAc;IACd,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3F,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,iDAAiD,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAE1F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ type TrackedTool = "explore_task";
2
+ interface SessionState {
3
+ calledExploreTask: boolean;
4
+ taskCount: number;
5
+ }
6
+ declare class SessionTracker {
7
+ private state;
8
+ markCalled(tool: TrackedTool): void;
9
+ incrementTask(): void;
10
+ getContextScore(): number;
11
+ getWarnings(): string[];
12
+ getState(): Readonly<SessionState>;
13
+ }
14
+ export declare const sessionTracker: SessionTracker;
15
+ export {};
16
+ //# sourceMappingURL=session-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/lib/session-tracker.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,cAAc,CAAC;AAElC,UAAU,YAAY;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,cAAc;IAClB,OAAO,CAAC,KAAK,CAGX;IAEF,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAInC,aAAa,IAAI,IAAI;IAIrB,eAAe,IAAI,MAAM;IAMzB,WAAW,IAAI,MAAM,EAAE;IAQvB,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC;CAGnC;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -0,0 +1,32 @@
1
+ class SessionTracker {
2
+ state = {
3
+ calledExploreTask: false,
4
+ taskCount: 0,
5
+ };
6
+ markCalled(tool) {
7
+ if (tool === "explore_task")
8
+ this.state.calledExploreTask = true;
9
+ }
10
+ incrementTask() {
11
+ this.state.taskCount++;
12
+ }
13
+ getContextScore() {
14
+ let score = 0;
15
+ if (this.state.calledExploreTask)
16
+ score += 40;
17
+ return score;
18
+ }
19
+ getWarnings() {
20
+ const warnings = [];
21
+ if (!this.state.calledExploreTask && this.state.taskCount > 0) {
22
+ warnings.push("explore_task not called — editing without full dependency context increases regression risk.");
23
+ }
24
+ return warnings;
25
+ }
26
+ getState() {
27
+ return { ...this.state };
28
+ }
29
+ }
30
+ // Singleton — one per MCP server process (one per session)
31
+ export const sessionTracker = new SessionTracker();
32
+ //# sourceMappingURL=session-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/lib/session-tracker.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc;IACV,KAAK,GAAiB;QAC5B,iBAAiB,EAAE,KAAK;QACxB,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,UAAU,CAAC,IAAiB;QAC1B,IAAI,IAAI,KAAK,cAAc;YAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACnE,CAAC;IAED,aAAa;QACX,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAED,eAAe;QACb,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB;YAAE,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;QAChH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -0,0 +1,165 @@
1
+ import type { ParsedExportDraft, ParsedImportDraft, ParsedSymbolDraft, WorkspaceFileCandidate } from "@codemap-ai/code-index";
2
+ import type { CodebaseSearchResponse, FileContent } from "./api-types.js";
3
+ export interface LocalIndexSummary {
4
+ workspaceRootPath: string;
5
+ cachePath: string;
6
+ indexedAt: string | null;
7
+ fileCount: number;
8
+ symbolCount: number;
9
+ stale: boolean;
10
+ }
11
+ export interface LocalImportedBy {
12
+ sourceFilePath: string;
13
+ moduleSpecifier: string;
14
+ importKind: string;
15
+ resolutionKind: string;
16
+ startLine: number;
17
+ startCol: number;
18
+ endLine: number;
19
+ endCol: number;
20
+ }
21
+ export interface LocalIndexedFile {
22
+ path: string;
23
+ dirPath: string;
24
+ baseName: string;
25
+ extension: string | null;
26
+ language: string | null;
27
+ mimeType: string | null;
28
+ sizeBytes: number;
29
+ lineCount: number | null;
30
+ parseStatus: string;
31
+ isBinary: boolean;
32
+ isText: boolean;
33
+ contentSha256: string | null;
34
+ content: string | null;
35
+ symbols: ParsedSymbolDraft[];
36
+ imports: ParsedImportDraft[];
37
+ importedBy: LocalImportedBy[];
38
+ exports: ParsedExportDraft[];
39
+ }
40
+ export interface LocalFileParseResponse {
41
+ file: {
42
+ fileId: string | null;
43
+ path: string;
44
+ language: string | null;
45
+ lineCount: number | null;
46
+ parseStatus: string;
47
+ sizeBytes: number | null;
48
+ mimeType: string | null;
49
+ extension: string | null;
50
+ importParseStatus: string;
51
+ };
52
+ imports: Array<{
53
+ id: string;
54
+ moduleSpecifier: string;
55
+ importKind: string;
56
+ isResolved: boolean;
57
+ resolutionKind: string;
58
+ targetPathText: string | null;
59
+ targetExternalSymbolKey: string | null;
60
+ startLine: number;
61
+ startCol: number;
62
+ endLine: number;
63
+ endCol: number;
64
+ }>;
65
+ importedBy: LocalImportedBy[];
66
+ exports: Array<{
67
+ id: string;
68
+ symbolId: string | null;
69
+ exportName: string;
70
+ exportKind: string;
71
+ symbolDisplayName: string | null;
72
+ sourceModuleSpecifier: null;
73
+ symbolStartLine: number | null;
74
+ symbolStartCol: number | null;
75
+ symbolEndLine: number | null;
76
+ symbolEndCol: number | null;
77
+ startLine: number;
78
+ startCol: number;
79
+ endLine: number;
80
+ endCol: number;
81
+ }>;
82
+ symbols: Array<{
83
+ id: string;
84
+ displayName: string;
85
+ kind: string;
86
+ signature: string | null;
87
+ returnType: string | null;
88
+ doc: string | null;
89
+ heritage: Array<{
90
+ kind: string;
91
+ targetName: string;
92
+ }>;
93
+ isExported: boolean;
94
+ parentSymbolName: string | null;
95
+ startLine: number | null;
96
+ startCol: number | null;
97
+ endLine: number | null;
98
+ endCol: number | null;
99
+ }>;
100
+ blastRadius: {
101
+ totalCount: number;
102
+ directCount: number;
103
+ maxDepth: number;
104
+ hasCycles: boolean;
105
+ files: Array<{
106
+ path: string;
107
+ language: string | null;
108
+ depth: number;
109
+ incomingCount: number;
110
+ outgoingCount: number;
111
+ }>;
112
+ };
113
+ cycles: [];
114
+ }
115
+ export declare function sqliteIndexDbPath(workspaceRootPath: string): string;
116
+ export declare class SQLiteIndexStore {
117
+ private db;
118
+ readonly dbPath: string;
119
+ private constructor();
120
+ static open(dbPath: string): SQLiteIndexStore;
121
+ static exists(dbPath: string): boolean;
122
+ getMeta(): {
123
+ indexedAt: string;
124
+ commitSha: string | null;
125
+ workspaceRootPath: string;
126
+ cachePath: string;
127
+ } | null;
128
+ getAllFilePaths(): string[];
129
+ /**
130
+ * Remove a single file and all its associated data from the index.
131
+ * Returns true if rows were deleted, false if the file wasn't in the index.
132
+ */
133
+ removeFileFromIndex(filePath: string): boolean;
134
+ isStale(currentFiles: WorkspaceFileCandidate[]): boolean;
135
+ getSummary(stale?: boolean): LocalIndexSummary;
136
+ listFiles(limit?: number): Array<{
137
+ path: string;
138
+ language: string | null;
139
+ lineCount: number | null;
140
+ parseStatus: string;
141
+ }>;
142
+ write(files: LocalIndexedFile[], meta: {
143
+ indexedAt: string;
144
+ commitSha: string | null;
145
+ workspaceRootPath: string;
146
+ cachePath: string;
147
+ parserName: string;
148
+ parserVersion: string;
149
+ }): void;
150
+ /**
151
+ * Upsert a single file's data. Replaces manifest/files/symbols/imports/exports rows
152
+ * for the file and rebuilds imported_by entries where this file is the target.
153
+ * Does NOT update imported_by entries in OTHER files that import this file
154
+ * (those are managed by the importer's own upsert).
155
+ */
156
+ upsertFile(file: LocalIndexedFile, opts?: {
157
+ keepImportedByForFile?: boolean;
158
+ }): void;
159
+ search(query: string, symbolKinds: string[] | null): CodebaseSearchResponse;
160
+ getFileContent(filePath: string, startLine?: number, endLine?: number): FileContent | null;
161
+ getFileParse(filePath: string): LocalFileParseResponse | null;
162
+ hasCycle(filePath: string): boolean;
163
+ close(): void;
164
+ }
165
+ //# sourceMappingURL=sqlite-index-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-index-store.d.ts","sourceRoot":"","sources":["../../src/lib/sqlite-index-store.ts"],"names":[],"mappings":"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"}