@felan-ai/ext-codebase-memory 0.0.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/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Felan contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Felan contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE CHANGED
@@ -1,16 +1,16 @@
1
- @felan-ai/ext-codebase-memory
2
-
3
- This package adapts selected MIT-licensed behavior and prompt guidance from
4
- pi-cbm 1.2.1 at commit 921a749d5cea74bda8f647542627ef9518fec272
5
- (https://github.com/alexykn/pi-cbm). Copyright (c) 2026 alexykn.
6
-
7
- The runtime integration targets codebase-memory-mcp 0.10.8 at commit
8
- 46ae198fc11cda80e817acbc5f5908d7c2de7032
9
- (https://github.com/DeusData/codebase-memory-mcp), licensed under MIT.
10
-
11
- This package uses TypeBox 1.1.38 from https://github.com/sinclairzx81/typebox,
12
- licensed under the MIT License. Copyright (c) 2017-2026 Haydn Paterson.
13
-
14
- Felan's portable AgentRuntime implementation, binary gating, explicit installer,
15
- bounded grep augmentation, cache policy, and four-tool model surface are Felan
16
- changes. The optional binary is never bundled with this npm package.
1
+ @felan-ai/ext-codebase-memory
2
+
3
+ This package adapts selected MIT-licensed behavior and prompt guidance from
4
+ pi-cbm 1.2.1 at commit 921a749d5cea74bda8f647542627ef9518fec272
5
+ (https://github.com/alexykn/pi-cbm). Copyright (c) 2026 alexykn.
6
+
7
+ The runtime integration targets codebase-memory-mcp 0.10.8 at commit
8
+ 46ae198fc11cda80e817acbc5f5908d7c2de7032
9
+ (https://github.com/DeusData/codebase-memory-mcp), licensed under MIT.
10
+
11
+ This package uses TypeBox 1.1.38 from https://github.com/sinclairzx81/typebox,
12
+ licensed under the MIT License. Copyright (c) 2017-2026 Haydn Paterson.
13
+
14
+ Felan's portable AgentRuntime implementation, binary gating, explicit installer,
15
+ bounded grep augmentation, cache policy, and four-tool model surface are Felan
16
+ changes. The optional binary is never bundled with this npm package.
package/README.md CHANGED
@@ -1,81 +1,88 @@
1
- # @felan-ai/ext-codebase-memory
2
-
3
- Portable structural code exploration for Felan, backed by the reviewed
4
- `codebase-memory-mcp` 0.10.8 native executable.
5
-
6
- ## Behavior
7
-
8
- When the exact reviewed binary is available, the extension registers exactly
9
- four model tools:
10
-
11
- - `codebase_memory` proxies the bounded structural query surface and performs
12
- an explicit `index_repository` refresh for the active git repository.
13
- - `read_symbol` resolves and reads one named symbol.
14
- - `search_and_read_symbols` searches symbols and reads a bounded set of likely
15
- matches.
16
- - `search_code` searches indexed source text.
17
-
18
- The extension indexes once at session startup. It has no file watcher or
19
- periodic refresh. After edits, the model can call
20
- `codebase_memory({ command: "index_repository" })`, and local users can run
21
- `/codebase-memory refresh`. Direct file reads, grep, compiler output, and tests
22
- remain authoritative because an index can be stale.
23
-
24
- Grep and ripgrep calls made through `bash` or Codex `exec_command` receive a
25
- best-effort Codebase Memory appendix by default. Augmentation has its own
26
- 1.5-second deadline, never replaces the original command result, and emits
27
- hit/error telemetry only through a host-supplied callback.
28
-
29
- ## Availability and installation
30
-
31
- The package never bundles or installs a binary automatically. If the binary is
32
- missing, it registers no tools, capability instructions, or model prompt. A
33
- local interactive session shows one installation hint; a cloud host receives a
34
- hard error log while session startup continues without Codebase Memory.
35
-
36
- Local installation is always explicit through `/dependencies` or
37
- `/codebase-memory install`. Felan downloads a commit-pinned upstream installer,
38
- verifies its SHA-256 digest, requests the pinned 0.10.8 release, passes
39
- `--skip-config`, and installs only into `AgentRuntime.storage('agent')`. It
40
- never edits agent or repository configuration. Cloud hosts must place the exact
41
- reviewed binary on `PATH` in the execution image.
42
-
43
- ## Cache and limits
44
-
45
- Codebase Memory data is rooted at
46
- `AgentRuntime.storage('agent')/codebase-memory/cache`, so root sessions and
47
- subagents using the same runtime coordinate through one index. No tenant key is
48
- added inside that already scoped runtime storage.
49
-
50
- - Query timeout: 60 seconds
51
- - Index timeout: 20 minutes
52
- - Combined process output: 5 MiB
53
- - Maximum symbol read: 220 lines
54
- - Cache LRU: 2 GiB for host runtimes; 500 MiB for Docker and Daytona
55
-
56
- Set `extensionConfig.codebaseMemory.maxCacheBytes` to a positive integer to
57
- override the runtime cache limit. The persisted default `0` means “use the
58
- runtime-specific limit”; it is not a zero-byte cache.
59
-
60
- ## Public API
61
-
62
- The default export is the portable extension. Hosts may also use:
63
-
64
- - `createCodebaseMemoryExtension({ telemetry, log })`
65
- - `CODEBASE_MEMORY_CONFIG`
66
- - `inspectCodebaseMemoryRuntime(runtime)`
67
- - `installManagedCodebaseMemory(runtime, onStatus)`
68
- - `MANAGED_CODEBASE_MEMORY_VERSION`
69
-
70
- The binary client, project coordination, and symbol services are internal
71
- implementation details. The package intentionally provides no LSP integration.
72
-
73
- ## Development
74
-
75
- ```sh
76
- pnpm --filter @felan-ai/ext-codebase-memory build
77
- pnpm --filter @felan-ai/ext-codebase-memory type-check
78
- pnpm --filter @felan-ai/ext-codebase-memory test
79
- ```
80
-
81
- See [NOTICE](NOTICE) for the immutable upstream baselines and licensing.
1
+ # @felan-ai/ext-codebase-memory
2
+
3
+ Portable structural code exploration for Felan, backed by the reviewed
4
+ `codebase-memory-mcp` 0.10.8 native executable.
5
+
6
+ ## Behavior
7
+
8
+ When the exact reviewed binary is available, the extension registers exactly
9
+ four model tools:
10
+
11
+ - `codebase_memory` proxies the bounded structural query surface and performs
12
+ an explicit `index_repository` refresh for the active git repository.
13
+ - `read_symbol` resolves and reads one named symbol.
14
+ - `search_and_read_symbols` searches symbols and reads a bounded set of likely
15
+ matches.
16
+ - `search_code` searches indexed source text.
17
+
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
21
+ periodic refresh. After edits, the model can call
22
+ `codebase_memory({ command: "index_repository" })`, and local users can run
23
+ `/codebase-memory refresh`. Direct file reads, grep, compiler output, and tests
24
+ remain authoritative because an index can be stale.
25
+
26
+ Grep and ripgrep calls made through `bash` or Codex `exec_command` receive a
27
+ best-effort Codebase Memory appendix by default. Augmentation has its own
28
+ 1.5-second deadline, never replaces the original command result, and emits
29
+ hit/error telemetry only through a host-supplied callback.
30
+
31
+ ## Availability and installation
32
+
33
+ The package never bundles or installs a binary automatically. If the binary is
34
+ missing, it registers no tools, capability instructions, or model prompt. A
35
+ local interactive session shows one installation hint; a cloud host receives a
36
+ hard error log while session startup continues without Codebase Memory.
37
+
38
+ Local installation is always explicit through `/dependencies` or
39
+ `/codebase-memory install`. Felan downloads a commit-pinned upstream installer,
40
+ verifies its SHA-256 digest, requests the pinned 0.10.8 release, passes
41
+ `--skip-config`, and installs only into `AgentRuntime.storage('agent')`. It
42
+ never edits agent or repository configuration. Cloud hosts must place the exact
43
+ reviewed binary on `PATH` in the execution image.
44
+
45
+ ## Cache and limits
46
+
47
+ Codebase Memory data is rooted at
48
+ `AgentRuntime.storage('agent')/codebase-memory/cache`, so root sessions and
49
+ subagents using the same runtime coordinate through one index. No tenant key is
50
+ added inside that already scoped runtime storage.
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
+
57
+ - Query timeout: 60 seconds
58
+ - Index timeout: 20 minutes
59
+ - Combined process output: 5 MiB
60
+ - Maximum symbol read: 220 lines
61
+ - Cache LRU: 2 GiB for host runtimes; 500 MiB for Docker and Daytona
62
+
63
+ Set `extensionConfig.codebaseMemory.maxCacheBytes` to a positive integer to
64
+ override the runtime cache limit. The persisted default `0` means “use the
65
+ runtime-specific limit”; it is not a zero-byte cache.
66
+
67
+ ## Public API
68
+
69
+ The default export is the portable extension. Hosts may also use:
70
+
71
+ - `createCodebaseMemoryExtension({ telemetry, log })`
72
+ - `CODEBASE_MEMORY_CONFIG`
73
+ - `inspectCodebaseMemoryRuntime(runtime)`
74
+ - `installManagedCodebaseMemory(runtime, onStatus)`
75
+ - `MANAGED_CODEBASE_MEMORY_VERSION`
76
+
77
+ The binary client, project coordination, and symbol services are internal
78
+ implementation details. The package intentionally provides no LSP integration.
79
+
80
+ ## Development
81
+
82
+ ```sh
83
+ pnpm --filter @felan-ai/ext-codebase-memory build
84
+ pnpm --filter @felan-ai/ext-codebase-memory type-check
85
+ pnpm --filter @felan-ai/ext-codebase-memory test
86
+ ```
87
+
88
+ See [NOTICE](NOTICE) for the immutable upstream baselines and licensing.
package/dist/client.d.ts CHANGED
@@ -24,6 +24,7 @@ export interface CbmCallResult {
24
24
  readonly stderr: string;
25
25
  }
26
26
  export declare class CbmClient {
27
+ #private;
27
28
  private readonly runtime;
28
29
  readonly invocation: CbmInvocation;
29
30
  readonly cacheRoot: string;
@@ -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;AAGrE,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;IAKlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,UAAU,EAAE,aAAa;IALpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGV,OAAO,EAAE,YAAY,EAC7B,UAAU,EAAE,aAAa;IAM9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAqBjH;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA2B5E"}
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
- this.cacheRoot = joinRuntimePath(runtime.storage('agent').root, 'codebase-memory/cache');
15
- this.runtimeRoot = joinRuntimePath(runtime.storage('agent').root, 'codebase-memory/runtime');
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
- await this.runtime.storage('agent').mkdir('codebase-memory/runtime', { recursive: true });
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 shellCommand = [
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 },
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAsBhD,MAAM,OAAO,SAAS;IAKD;IACR;IALF,SAAS,CAAS;IAClB,WAAW,CAAS;IAE7B,YACmB,OAAqB,EAC7B,UAAyB;QADjB,YAAO,GAAP,OAAO,CAAc;QAC7B,eAAU,GAAV,UAAU,CAAe;QAElC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACzF,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAA6B,EAAE,UAA0B,EAAE;QACrF,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC5G,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG;YACnB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACnC,KAAK;YACL,QAAQ;YACR,UAAU,CAAC,OAAO,CAAC;YACnB,UAAU,CAAC,OAAO,CAAC;SACpB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE;YACpD,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE;YACzE,cAAc,EAAE,gBAAgB;YAChC,WAAW,EAAE,OAAO;YACpB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACnE,OAAO;SACR,CAAC,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAqB;IACnD,MAAM,UAAU,GAA0C;QACxD;YACE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,yCAAyC,CAAC;YAClG,MAAM,EAAE,SAAS;SAClB;QACD,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE;KACnD,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;gBAC5D,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,cAAc,EAAE,EAAE,GAAG,IAAI;gBACzB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM;YAAE,SAAS;QACjD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IACjH,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,kCAAkC,uBAAuB,oBAAoB;KACtF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,OAAO,KAAK,uBAAuB,CAAC;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,MAAkB;IACtD,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,6BAA6B,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,iBAAiB,gBAAgB,oBAAoB,CAAC,CAAC;IACvG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,CAAC,CAAC;IACpE,IAAI,QAAkF,CAAC;IACvF,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,+BAA+B,CAAC,CAAC;QAC3E,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAoB,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC9G,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,4CAA4C,CAAC,CAAC;IAChG,IAAI,IAAI,GAAY,IAAI,CAAC;IACzB,IAAI,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACzH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAC9B,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAsBhD,MAAM,OAAO,SAAS;IAMD;IACR;IANF,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,mBAAmB,CAAqB;IAEjD,YACmB,OAAqB,EAC7B,UAAyB;QADjB,YAAO,GAAP,OAAO,CAAc;QAC7B,eAAU,GAAV,UAAU,CAAe;QAElC,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACvD,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAA6B,EAAE,UAA0B,EAAE;QACrF,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC5G,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG;YACjB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACnC,KAAK;YACL,QAAQ;YACR,UAAU,CAAC,OAAO,CAAC;YACnB,UAAU,CAAC,OAAO,CAAC;SACpB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB;YAC3C,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,4BAA4B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,EAAE,CAAC;QAChF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE;YACpD,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE;YACzE,cAAc,EAAE,gBAAgB;YAChC,WAAW,EAAE,OAAO;YACpB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACnE,OAAO;SACR,CAAC,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAqB;IACnD,MAAM,UAAU,GAA0C;QACxD;YACE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,yCAAyC,CAAC;YAClG,MAAM,EAAE,SAAS;SAClB;QACD,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE;KACnD,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;gBAC5D,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,cAAc,EAAE,EAAE,GAAG,IAAI;gBACzB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM;YAAE,SAAS;QACjD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IACjH,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,kCAAkC,uBAAuB,oBAAoB;KACtF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,OAAO,KAAK,uBAAuB,CAAC;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,MAAkB;IACtD,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,6BAA6B,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,iBAAiB,gBAAgB,oBAAoB,CAAC,CAAC;IACvG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,CAAC,CAAC;IACpE,IAAI,QAAkF,CAAC;IACvF,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,+BAA+B,CAAC,CAAC;QAC3E,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAoB,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC9G,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,4CAA4C,CAAC,CAAC;IAChG,IAAI,IAAI,GAAY,IAAI,CAAC;IACzB,IAAI,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACzH,CAAC"}
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\"}. The index is built at startup and refreshed 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.";
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;
@@ -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,gqBAA8pB,CAAC;AAEntB,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;AAED,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,8BAAmC,GAAG,cAAc,CAyE1G;AAiBD,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"}
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"}. The index is built at startup and refreshed 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.`;
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, (message) => ctx.ui.setStatus('codebase-memory', `… ${message}`));
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', async (_event, ctx) => {
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
- await refresh(projects, ctx);
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
- ctx.ui.setStatus('codebase-memory', '… Indexing repository');
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
- ctx.ui.setStatus('codebase-memory', '✓ Codebase Memory indexed');
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
- export declare function joinRuntimePath(root: string, ...parts: string[]): 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":"AAAA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAKxE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
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"}
@@ -1,8 +1,32 @@
1
- export function joinRuntimePath(root, ...parts) {
2
- const separator = root.includes('\\') && !root.includes('/') ? '\\' : '/';
3
- return [root.replace(/[\\/]+$/u, ''), ...parts.map((part) => part.replace(/^[\\/]+|[\\/]+$/gu, ''))]
4
- .filter(Boolean)
5
- .join(separator);
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("'", `'"'"'`)}'`;
@@ -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,KAAe;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;SACjG,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,SAAS,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC"}
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 { ProjectService, SymbolService } from './services.js';
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
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnE,wBAAgB,aAAa,CAC3B,EAAE,EAAE,iBAAiB,EACrB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,aAAa,GACrB,IAAI,CA2EN"}
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":"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"}
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.0.0",
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": {
@@ -42,4 +43,4 @@
42
43
  "type-check": "tsc -p tsconfig.json --noEmit",
43
44
  "test": "vitest run"
44
45
  }
45
- }
46
+ }