@felan-ai/ext-codebase-memory 0.1.0 → 0.1.1
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.
- package/README.md +8 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -5
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -7
- package/dist/index.js.map +1 -1
- package/dist/runtime-path.d.ts +6 -1
- package/dist/runtime-path.d.ts.map +1 -1
- package/dist/runtime-path.js +29 -5
- package/dist/runtime-path.js.map +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +36 -0
- package/dist/tools.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -15,7 +15,9 @@ four model tools:
|
|
|
15
15
|
matches.
|
|
16
16
|
- `search_code` searches indexed source text.
|
|
17
17
|
|
|
18
|
-
The extension
|
|
18
|
+
The extension starts one background index at session startup without delaying
|
|
19
|
+
session readiness. It shows `cbm: idx` only while indexing and `cbm: install`
|
|
20
|
+
only while installing, then clears the status. It has no file watcher or
|
|
19
21
|
periodic refresh. After edits, the model can call
|
|
20
22
|
`codebase_memory({ command: "index_repository" })`, and local users can run
|
|
21
23
|
`/codebase-memory refresh`. Direct file reads, grep, compiler output, and tests
|
|
@@ -47,6 +49,11 @@ Codebase Memory data is rooted at
|
|
|
47
49
|
subagents using the same runtime coordinate through one index. No tenant key is
|
|
48
50
|
added inside that already scoped runtime storage.
|
|
49
51
|
|
|
52
|
+
Daemon coordination remains keyed by that agent-storage root. POSIX runtimes
|
|
53
|
+
use an owner-private `/tmp/felan-cbm-<key>` rendezvous so CBM's Unix socket path
|
|
54
|
+
stays below platform limits; Windows keeps the rendezvous under
|
|
55
|
+
`AgentRuntime.storage('agent')/codebase-memory/runtime`.
|
|
56
|
+
|
|
50
57
|
- Query timeout: 60 seconds
|
|
51
58
|
- Index timeout: 20 minutes
|
|
52
59
|
- Combined process output: 5 MiB
|
package/dist/client.d.ts
CHANGED
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAOrE,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,gBAAgB,QAAc,CAAC;AAC5C,eAAO,MAAM,gBAAgB,QAAkB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,SAAS;;IAMlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,UAAU,EAAE,aAAa;IANpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAIV,OAAO,EAAE,YAAY,EAC7B,UAAU,EAAE,aAAa;IAS9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CA0BjH;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA2B5E"}
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { joinRuntimePath, shellQuote } from './runtime-path.js';
|
|
1
|
+
import { codebaseMemoryRuntimeDirectory, joinRuntimePath, shellQuote, } from './runtime-path.js';
|
|
2
2
|
export const CODEBASE_MEMORY_VERSION = '0.10.8';
|
|
3
3
|
export const QUERY_TIMEOUT_MS = 60_000;
|
|
4
4
|
export const INDEX_TIMEOUT_MS = 20 * 60_000;
|
|
@@ -8,23 +8,32 @@ export class CbmClient {
|
|
|
8
8
|
invocation;
|
|
9
9
|
cacheRoot;
|
|
10
10
|
runtimeRoot;
|
|
11
|
+
#runtimeStoragePath;
|
|
11
12
|
constructor(runtime, invocation) {
|
|
12
13
|
this.runtime = runtime;
|
|
13
14
|
this.invocation = invocation;
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
const agentStorageRoot = runtime.storage('agent').root;
|
|
16
|
+
const runtimeDirectory = codebaseMemoryRuntimeDirectory(agentStorageRoot);
|
|
17
|
+
this.cacheRoot = joinRuntimePath(agentStorageRoot, 'codebase-memory/cache');
|
|
18
|
+
this.runtimeRoot = runtimeDirectory.root;
|
|
19
|
+
this.#runtimeStoragePath = runtimeDirectory.storagePath;
|
|
16
20
|
}
|
|
17
21
|
async call(command, args, options = {}) {
|
|
18
22
|
const timeout = options.timeoutMs ?? (command === 'index_repository' ? INDEX_TIMEOUT_MS : QUERY_TIMEOUT_MS);
|
|
19
|
-
|
|
23
|
+
if (this.#runtimeStoragePath) {
|
|
24
|
+
await this.runtime.storage('agent').mkdir(this.#runtimeStoragePath, { recursive: true });
|
|
25
|
+
}
|
|
20
26
|
const encoded = JSON.stringify(args);
|
|
21
|
-
const
|
|
27
|
+
const invocation = [
|
|
22
28
|
shellQuote(this.invocation.command),
|
|
23
29
|
'cli',
|
|
24
30
|
'--json',
|
|
25
31
|
shellQuote(command),
|
|
26
32
|
shellQuote(encoded),
|
|
27
33
|
].join(' ');
|
|
34
|
+
const shellCommand = this.#runtimeStoragePath
|
|
35
|
+
? invocation
|
|
36
|
+
: `umask 077 && mkdir -p -- ${shellQuote(this.runtimeRoot)} && ${invocation}`;
|
|
28
37
|
const result = await this.runtime.shell(shellCommand, {
|
|
29
38
|
cwd: this.runtime.cwd,
|
|
30
39
|
env: { CBM_CACHE_DIR: this.cacheRoot, CBM_RUNTIME_DIR: this.runtimeRoot },
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FelanExtension } from '@felan-ai/agent-core';
|
|
2
2
|
import { type CodebaseMemoryTelemetry } from './cache.js';
|
|
3
|
-
export declare const CODEBASE_MEMORY_CAPABILITY_INSTRUCTIONS = "Use Codebase Memory for structural code exploration before broad raw searches: read_symbol reads a known symbol, search_and_read_symbols finds and reads likely implementations, search_code searches indexed text, and codebase_memory proxies other structural queries or refreshes with {command:\"index_repository\"}.
|
|
3
|
+
export declare const CODEBASE_MEMORY_CAPABILITY_INSTRUCTIONS = "Use Codebase Memory for structural code exploration before broad raw searches: read_symbol reads a known symbol, search_and_read_symbols finds and reads likely implementations, search_code searches indexed text, and codebase_memory proxies other structural queries or refreshes with {command:\"index_repository\"}. A background index starts at session startup and refreshes only when the model calls index_repository or the user invokes /codebase-memory. It may be stale after edits. Direct reads, grep, compiler output, and tests remain authoritative; grep output can include bounded Codebase Memory augmentation. Keep symbol reads focused and at no more than 220 lines per symbol.";
|
|
4
4
|
export interface CodebaseMemoryExtensionOptions {
|
|
5
5
|
readonly telemetry?: CodebaseMemoryTelemetry;
|
|
6
6
|
readonly log?: (level: 'error' | 'info', message: string, fields: Record<string, unknown>) => void;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQ1D,eAAO,MAAM,uCAAuC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQ1D,eAAO,MAAM,uCAAuC,+qBAA6qB,CAAC;AAEluB,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACpG;AAMD,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,8BAAmC,GAAG,cAAc,CAoF1G;AAoBD,QAAA,MAAM,uBAAuB,gBAAkC,CAAC;AAChE,eAAe,uBAAuB,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,uBAAuB,IAAI,+BAA+B,EAC1D,SAAS,IAAI,4BAA4B,GAC1C,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,IAAI,4BAA4B,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { registerGrepAugmentation } from './grep-augmentation.js';
|
|
|
6
6
|
import { installManagedCbm } from './installer.js';
|
|
7
7
|
import { ProjectService, SymbolService } from './services.js';
|
|
8
8
|
import { registerTools } from './tools.js';
|
|
9
|
-
export const CODEBASE_MEMORY_CAPABILITY_INSTRUCTIONS = `Use Codebase Memory for structural code exploration before broad raw searches: read_symbol reads a known symbol, search_and_read_symbols finds and reads likely implementations, search_code searches indexed text, and codebase_memory proxies other structural queries or refreshes with {command:"index_repository"}.
|
|
9
|
+
export const CODEBASE_MEMORY_CAPABILITY_INSTRUCTIONS = `Use Codebase Memory for structural code exploration before broad raw searches: read_symbol reads a known symbol, search_and_read_symbols finds and reads likely implementations, search_code searches indexed text, and codebase_memory proxies other structural queries or refreshes with {command:"index_repository"}. A background index starts at session startup and refreshes only when the model calls index_repository or the user invokes /codebase-memory. It may be stale after edits. Direct reads, grep, compiler output, and tests remain authoritative; grep output can include bounded Codebase Memory augmentation. Keep symbol reads focused and at no more than 220 lines per symbol.`;
|
|
10
10
|
export function createCodebaseMemoryExtension(options = {}) {
|
|
11
11
|
const log = options.log ?? ((level, message, fields) => {
|
|
12
12
|
if (level === 'error')
|
|
@@ -22,6 +22,7 @@ export function createCodebaseMemoryExtension(options = {}) {
|
|
|
22
22
|
let detection = await detectCbm(pi.runtime);
|
|
23
23
|
let hintShown = false;
|
|
24
24
|
let projects;
|
|
25
|
+
let activeIndexSession;
|
|
25
26
|
const activate = (available) => {
|
|
26
27
|
const client = new CbmClient(pi.runtime, available.invocation);
|
|
27
28
|
const configured = pi.config.maxCacheBytes;
|
|
@@ -51,7 +52,7 @@ export function createCodebaseMemoryExtension(options = {}) {
|
|
|
51
52
|
if (action === 'install') {
|
|
52
53
|
if (!await ctx.ui.confirm('Install Codebase Memory', 'Download the pinned reviewed installer and Codebase Memory 0.10.8 binary into Felan agent storage?'))
|
|
53
54
|
return;
|
|
54
|
-
detection = await installManagedCbm(pi.runtime, (
|
|
55
|
+
detection = await installManagedCbm(pi.runtime, () => ctx.ui.setStatus('codebase-memory', 'cbm: install'));
|
|
55
56
|
ctx.ui.setStatus('codebase-memory', undefined);
|
|
56
57
|
ctx.ui.notify(detectionMessage(detection), detection.available ? 'info' : 'error');
|
|
57
58
|
return;
|
|
@@ -65,7 +66,10 @@ export function createCodebaseMemoryExtension(options = {}) {
|
|
|
65
66
|
await refresh(projects, ctx);
|
|
66
67
|
},
|
|
67
68
|
});
|
|
68
|
-
pi.on('session_start',
|
|
69
|
+
pi.on('session_start', (_event, ctx) => {
|
|
70
|
+
if (activeIndexSession)
|
|
71
|
+
activeIndexSession.active = false;
|
|
72
|
+
activeIndexSession = undefined;
|
|
69
73
|
if (!projects) {
|
|
70
74
|
if (pi.runtime.kind === 'host' && ctx.hasUI && !hintShown) {
|
|
71
75
|
hintShown = true;
|
|
@@ -73,7 +77,15 @@ export function createCodebaseMemoryExtension(options = {}) {
|
|
|
73
77
|
}
|
|
74
78
|
return;
|
|
75
79
|
}
|
|
76
|
-
|
|
80
|
+
const session = { active: true };
|
|
81
|
+
activeIndexSession = session;
|
|
82
|
+
void refresh(projects, ctx, session);
|
|
83
|
+
});
|
|
84
|
+
pi.on('session_shutdown', (_event, ctx) => {
|
|
85
|
+
if (activeIndexSession)
|
|
86
|
+
activeIndexSession.active = false;
|
|
87
|
+
activeIndexSession = undefined;
|
|
88
|
+
ctx.ui.setStatus('codebase-memory', undefined);
|
|
77
89
|
});
|
|
78
90
|
};
|
|
79
91
|
associateExtensionConfig(extension, CODEBASE_MEMORY_CONFIG);
|
|
@@ -82,13 +94,19 @@ export function createCodebaseMemoryExtension(options = {}) {
|
|
|
82
94
|
function detectionMessage(detection) {
|
|
83
95
|
return detection.available ? 'Codebase Memory installed. Restart Felan to activate it.' : detection.reason;
|
|
84
96
|
}
|
|
85
|
-
async function refresh(projects, ctx) {
|
|
86
|
-
|
|
97
|
+
async function refresh(projects, ctx, session) {
|
|
98
|
+
if (session && !session.active)
|
|
99
|
+
return;
|
|
100
|
+
ctx.ui.setStatus('codebase-memory', 'cbm: idx');
|
|
87
101
|
try {
|
|
88
102
|
await projects.index(ctx.signal);
|
|
89
|
-
|
|
103
|
+
if (session && !session.active)
|
|
104
|
+
return;
|
|
105
|
+
ctx.ui.setStatus('codebase-memory', undefined);
|
|
90
106
|
}
|
|
91
107
|
catch (error) {
|
|
108
|
+
if (session && !session.active)
|
|
109
|
+
return;
|
|
92
110
|
ctx.ui.setStatus('codebase-memory', undefined);
|
|
93
111
|
if (ctx.hasUI)
|
|
94
112
|
ctx.ui.notify(`Codebase Memory index failed: ${error instanceof Error ? error.message : String(error)}`, 'warning');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAGzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAgC,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,MAAM,uCAAuC,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime-path.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
export declare function joinRuntimePath(root: string, ...
|
|
1
|
+
export declare function joinRuntimePath(root: string, ...segments: readonly string[]): string;
|
|
2
|
+
export declare function codebaseMemoryRuntimeDirectory(agentStorageRoot: string): {
|
|
3
|
+
readonly root: string;
|
|
4
|
+
readonly storagePath?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function isWindowsRuntimePath(path: string): boolean;
|
|
2
7
|
export declare function shellQuote(value: string): string;
|
|
3
8
|
//# sourceMappingURL=runtime-path.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-path.d.ts","sourceRoot":"","sources":["../src/runtime-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-path.d.ts","sourceRoot":"","sources":["../src/runtime-path.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAUpF;AAED,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAYA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
package/dist/runtime-path.js
CHANGED
|
@@ -1,8 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
const WINDOWS_RUNTIME_STORAGE_PATH = 'codebase-memory/runtime';
|
|
3
|
+
export function joinRuntimePath(root, ...segments) {
|
|
4
|
+
const windows = isWindowsRuntimePath(root);
|
|
5
|
+
const separator = windows ? '\\' : '/';
|
|
6
|
+
const normalizedRoot = windows ? root.replace(/\//gu, '\\') : root.replace(/\\/gu, '/');
|
|
7
|
+
const parts = segments.flatMap((segment) => segment.split(/[\\/]+/u)).filter(Boolean);
|
|
8
|
+
const trimmedRoot = normalizedRoot.replace(/[\\/]+$/u, '');
|
|
9
|
+
const prefix = trimmedRoot || (normalizedRoot.startsWith(separator) ? separator : '');
|
|
10
|
+
if (parts.length === 0)
|
|
11
|
+
return prefix || normalizedRoot;
|
|
12
|
+
if (!prefix)
|
|
13
|
+
return parts.join(separator);
|
|
14
|
+
return `${prefix}${prefix.endsWith(separator) ? '' : separator}${parts.join(separator)}`;
|
|
15
|
+
}
|
|
16
|
+
export function codebaseMemoryRuntimeDirectory(agentStorageRoot) {
|
|
17
|
+
if (isWindowsRuntimePath(agentStorageRoot)) {
|
|
18
|
+
return {
|
|
19
|
+
root: joinRuntimePath(agentStorageRoot, WINDOWS_RUNTIME_STORAGE_PATH),
|
|
20
|
+
storagePath: WINDOWS_RUNTIME_STORAGE_PATH,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
// CBM appends daemon and socket names, while Darwin limits AF_UNIX paths to 104 bytes.
|
|
24
|
+
// A fixed-width hash keeps agent-storage scoping without inheriting its unbounded path length.
|
|
25
|
+
const key = createHash('sha256').update(agentStorageRoot).digest('hex').slice(0, 24);
|
|
26
|
+
return { root: `/tmp/felan-cbm-${key}` };
|
|
27
|
+
}
|
|
28
|
+
export function isWindowsRuntimePath(path) {
|
|
29
|
+
return /^[A-Za-z]:[\\/]/u.test(path) || /^\\\\/u.test(path) || (path.includes('\\') && !path.includes('/'));
|
|
6
30
|
}
|
|
7
31
|
export function shellQuote(value) {
|
|
8
32
|
return `'${value.replaceAll("'", `'"'"'`)}'`;
|
package/dist/runtime-path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-path.js","sourceRoot":"","sources":["../src/runtime-path.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"runtime-path.js","sourceRoot":"","sources":["../src/runtime-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAE/D,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,GAAG,QAA2B;IAC1E,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,WAAW,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,IAAI,cAAc,CAAC;IACxD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,gBAAwB;IAIrE,IAAI,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,eAAe,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;YACrE,WAAW,EAAE,4BAA4B;SAC1C,CAAC;IACJ,CAAC;IAED,uFAAuF;IACvF,+FAA+F;IAC/F,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrF,OAAO,EAAE,IAAI,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FelanExtensionAPI } from '@felan-ai/agent-core';
|
|
2
2
|
import type { CbmClient } from './client.js';
|
|
3
|
-
import type
|
|
3
|
+
import { type ProjectService, type SymbolService } from './services.js';
|
|
4
4
|
export declare function registerTools(pi: FelanExtensionAPI, client: CbmClient, projects: ProjectService, symbols: SymbolService): void;
|
|
5
5
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,sBAAsB,CAAC;AAGrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBlF,wBAAgB,aAAa,CAC3B,EAAE,EAAE,iBAAiB,EACrB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,aAAa,GACrB,IAAI,CA2GN"}
|
package/dist/tools.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { Text } from '@earendil-works/pi-tui';
|
|
1
2
|
import { Type } from 'typebox';
|
|
3
|
+
import { asRecord } from './services.js';
|
|
2
4
|
const MaxSymbolLines = Type.Optional(Type.Integer({ minimum: 1, maximum: 220, default: 220 }));
|
|
3
5
|
const ProxyCommand = Type.Union([
|
|
4
6
|
Type.Literal('index_repository'),
|
|
@@ -37,6 +39,11 @@ export function registerTools(pi, client, projects, symbols) {
|
|
|
37
39
|
}, signal === undefined ? {} : { signal })).data;
|
|
38
40
|
return toolResult(data);
|
|
39
41
|
},
|
|
42
|
+
renderCall(params, theme) {
|
|
43
|
+
const input = params;
|
|
44
|
+
const args = asRecord(input.arguments);
|
|
45
|
+
return renderToolCall(theme, 'codebase_memory', input.command, firstString(args.query, args.pattern, args.function_name, args.qualified_name, args.name, args.qn_pattern, args.name_pattern, args.file_pattern, args.path_filter));
|
|
46
|
+
},
|
|
40
47
|
},
|
|
41
48
|
{
|
|
42
49
|
name: 'read_symbol',
|
|
@@ -50,6 +57,10 @@ export function registerTools(pi, client, projects, symbols) {
|
|
|
50
57
|
max_symbol_lines: MaxSymbolLines,
|
|
51
58
|
}, { additionalProperties: false }),
|
|
52
59
|
execute: async (_id, params, signal) => toolResult(await symbols.read(params, signal)),
|
|
60
|
+
renderCall(params, theme) {
|
|
61
|
+
const input = params;
|
|
62
|
+
return renderToolCall(theme, 'read_symbol', input.name ?? input.qualified_name, input.file_path);
|
|
63
|
+
},
|
|
53
64
|
},
|
|
54
65
|
{
|
|
55
66
|
name: 'search_and_read_symbols',
|
|
@@ -64,6 +75,10 @@ export function registerTools(pi, client, projects, symbols) {
|
|
|
64
75
|
max_symbol_lines: MaxSymbolLines,
|
|
65
76
|
}, { additionalProperties: false }),
|
|
66
77
|
execute: async (_id, params, signal) => toolResult(await symbols.searchAndRead(params, signal)),
|
|
78
|
+
renderCall(params, theme) {
|
|
79
|
+
const input = params;
|
|
80
|
+
return renderToolCall(theme, 'search_and_read_symbols', input.query, input.file_pattern);
|
|
81
|
+
},
|
|
67
82
|
},
|
|
68
83
|
{
|
|
69
84
|
name: 'search_code',
|
|
@@ -84,6 +99,10 @@ export function registerTools(pi, client, projects, symbols) {
|
|
|
84
99
|
const project = await projects.project(signal);
|
|
85
100
|
return toolResult((await client.call('search_code', { ...input, project }, signal === undefined ? {} : { signal })).data);
|
|
86
101
|
},
|
|
102
|
+
renderCall(params, theme) {
|
|
103
|
+
const input = params;
|
|
104
|
+
return renderToolCall(theme, 'search_code', input.pattern, input.file_pattern ?? input.path_filter);
|
|
105
|
+
},
|
|
87
106
|
},
|
|
88
107
|
];
|
|
89
108
|
for (const tool of tools)
|
|
@@ -95,4 +114,21 @@ function toolResult(data) {
|
|
|
95
114
|
details: { data },
|
|
96
115
|
};
|
|
97
116
|
}
|
|
117
|
+
function renderToolCall(theme, label, ...values) {
|
|
118
|
+
const detail = compactToolDetail(values);
|
|
119
|
+
const title = theme.fg('toolTitle', theme.bold(label));
|
|
120
|
+
return new Text(detail ? `${title} ${theme.fg('accent', detail)}` : title, 0, 0);
|
|
121
|
+
}
|
|
122
|
+
function compactToolDetail(values) {
|
|
123
|
+
const normalized = values
|
|
124
|
+
.filter((value) => typeof value === 'string' && value.length > 0)
|
|
125
|
+
.map((value) => value.replace(/[\p{Cc}\p{Cf}]/gu, ' ').replace(/\s+/gu, ' ').trim())
|
|
126
|
+
.filter((value) => value.length > 0)
|
|
127
|
+
.join(' · ');
|
|
128
|
+
const characters = [...normalized];
|
|
129
|
+
return characters.length <= 120 ? normalized : `${characters.slice(0, 119).join('')}…`;
|
|
130
|
+
}
|
|
131
|
+
function firstString(...values) {
|
|
132
|
+
return values.find((value) => typeof value === 'string' && value.length > 0);
|
|
133
|
+
}
|
|
98
134
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@felan-ai/ext-codebase-memory",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Portable Codebase Memory tools and grep augmentation for Felan",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
+
"@earendil-works/pi-tui": "0.84.4",
|
|
28
29
|
"typebox": "1.1.38"
|
|
29
30
|
},
|
|
30
31
|
"peerDependencies": {
|