@felan-ai/ext-context 0.1.0-alpha.0 → 0.1.0-alpha.2
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/NOTICE +7 -0
- package/README.md +36 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +169 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/NOTICE
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
@felan-ai/ext-context
|
|
2
|
+
|
|
3
|
+
Includes code adapted from pi-progressive-context in the pi-extensions
|
|
4
|
+
repository (git@github.com:mslavov/pi-extensions.git), source commit 9571293.
|
|
5
|
+
|
|
6
|
+
Copyright (c) 2026 Milko Slavov
|
|
7
|
+
Licensed under the MIT License included in this package.
|
package/README.md
CHANGED
|
@@ -1,3 +1,38 @@
|
|
|
1
1
|
# @felan-ai/ext-context
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Runtime-portable progressive loading of nested `AGENTS.md` and `CLAUDE.md`
|
|
4
|
+
instructions for Felan sessions.
|
|
5
|
+
|
|
6
|
+
Felan loads instructions at the session cwd separately. This extension discovers
|
|
7
|
+
instructions below that cwd after the agent successfully reads a file or the user
|
|
8
|
+
submits a decoded CLI `@file` block. It walks from the cwd toward the observed
|
|
9
|
+
file, skips the cwd itself, and loads at most one instruction file per nested
|
|
10
|
+
directory with this precedence:
|
|
11
|
+
|
|
12
|
+
1. `AGENTS.md`
|
|
13
|
+
2. `CLAUDE.md`
|
|
14
|
+
|
|
15
|
+
Loaded files are normalized and deduplicated for the session. They are appended
|
|
16
|
+
to each subsequent model context as one hidden `pi-progressive-context` message,
|
|
17
|
+
so the instructions remain available after context compaction. A new session
|
|
18
|
+
clears all discovered and processed paths.
|
|
19
|
+
|
|
20
|
+
All file access goes through the cwd-contained `AgentRuntime`. Missing or
|
|
21
|
+
unreadable files are nonfatal, and directories already checked during the
|
|
22
|
+
session are not retried. Runtime containment rejects lexical traversal and
|
|
23
|
+
symlink escapes.
|
|
24
|
+
|
|
25
|
+
Use `/progressive-context` to show the nested instruction files loaded in the
|
|
26
|
+
current session.
|
|
27
|
+
|
|
28
|
+
## Trigger limitations
|
|
29
|
+
|
|
30
|
+
- Progressive context affects the model call after a file read or attachment.
|
|
31
|
+
- Images do not expose original filesystem paths through Pi input events.
|
|
32
|
+
- CLI `@file` blocks and successful structured `read` results are supported;
|
|
33
|
+
shell commands that read files do not emit structured file-read events.
|
|
34
|
+
|
|
35
|
+
## Attribution
|
|
36
|
+
|
|
37
|
+
This package adapts the MIT-licensed `pi-progressive-context` implementation.
|
|
38
|
+
See [NOTICE](NOTICE) for source details.
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACf,MAAM,sBAAsB,CAAC;AAiB9B,QAAA,MAAM,gBAAgB,EAAE,cAuDvB,CAAC;AA4IF,eAAe,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,171 @@
|
|
|
1
|
-
|
|
1
|
+
import { dirname, isAbsolute, normalize, resolve } from 'node:path';
|
|
2
|
+
const CONTEXT_FILE_CANDIDATES = ['AGENTS.md', 'CLAUDE.md'];
|
|
3
|
+
const CUSTOM_TYPE = 'pi-progressive-context';
|
|
4
|
+
const decoder = new TextDecoder();
|
|
5
|
+
const contextExtension = (pi) => {
|
|
6
|
+
const state = {
|
|
7
|
+
loadedContextFiles: new Map(),
|
|
8
|
+
processedDirs: new Set(),
|
|
9
|
+
};
|
|
10
|
+
pi.on('session_start', (_event, ctx) => {
|
|
11
|
+
state.loadedContextFiles.clear();
|
|
12
|
+
state.processedDirs.clear();
|
|
13
|
+
ctx.ui.setStatus('progressive-context', undefined);
|
|
14
|
+
});
|
|
15
|
+
pi.on('tool_result', async (event, ctx) => {
|
|
16
|
+
if (event.toolName !== 'read' || event.isError)
|
|
17
|
+
return;
|
|
18
|
+
const filePath = typeof event.input.path === 'string' ? event.input.path : undefined;
|
|
19
|
+
if (!filePath)
|
|
20
|
+
return;
|
|
21
|
+
await discoverForPath(filePath, ctx, state, pi.runtime.readFile.bind(pi.runtime));
|
|
22
|
+
});
|
|
23
|
+
pi.on('input', async (event, ctx) => {
|
|
24
|
+
for (const filePath of parseFileBlockNames(event.text)) {
|
|
25
|
+
await discoverForPath(filePath, ctx, state, pi.runtime.readFile.bind(pi.runtime));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
pi.on('context', (event) => {
|
|
29
|
+
if (state.loadedContextFiles.size === 0)
|
|
30
|
+
return;
|
|
31
|
+
return {
|
|
32
|
+
messages: [
|
|
33
|
+
...event.messages,
|
|
34
|
+
{
|
|
35
|
+
role: 'custom',
|
|
36
|
+
customType: CUSTOM_TYPE,
|
|
37
|
+
content: formatProgressiveContext([...state.loadedContextFiles.values()]),
|
|
38
|
+
display: false,
|
|
39
|
+
timestamp: Date.now(),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
pi.registerCommand('progressive-context', {
|
|
45
|
+
description: 'Show progressively loaded nested AGENTS.md / CLAUDE.md files',
|
|
46
|
+
handler: async (_args, ctx) => {
|
|
47
|
+
const output = formatLoadedFiles([...state.loadedContextFiles.values()]);
|
|
48
|
+
if (ctx.hasUI) {
|
|
49
|
+
ctx.ui.notify(output, 'info');
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.error(output);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
async function discoverForPath(observedPath, ctx, state, readFile) {
|
|
58
|
+
const filePath = resolveObservedPath(observedPath, ctx.cwd);
|
|
59
|
+
if (!filePath)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
await readFile(filePath);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
let discovered = false;
|
|
68
|
+
for (const dir of collectNestedDirs(ctx.cwd, dirname(filePath))) {
|
|
69
|
+
const dirKey = comparisonPath(dir);
|
|
70
|
+
if (state.processedDirs.has(dirKey))
|
|
71
|
+
continue;
|
|
72
|
+
state.processedDirs.add(dirKey);
|
|
73
|
+
const contextFile = await loadContextFileFromDir(dir, readFile);
|
|
74
|
+
if (!contextFile)
|
|
75
|
+
continue;
|
|
76
|
+
const fileKey = comparisonPath(contextFile.path);
|
|
77
|
+
if (state.loadedContextFiles.has(fileKey))
|
|
78
|
+
continue;
|
|
79
|
+
state.loadedContextFiles.set(fileKey, contextFile);
|
|
80
|
+
discovered = true;
|
|
81
|
+
}
|
|
82
|
+
if (discovered) {
|
|
83
|
+
const count = state.loadedContextFiles.size;
|
|
84
|
+
ctx.ui.setStatus('progressive-context', `${count} nested context file${count === 1 ? '' : 's'}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function resolveObservedPath(observedPath, cwd) {
|
|
88
|
+
let path = observedPath.trim();
|
|
89
|
+
if (path.startsWith('@'))
|
|
90
|
+
path = path.slice(1);
|
|
91
|
+
if (!path)
|
|
92
|
+
return undefined;
|
|
93
|
+
const cwdPath = normalize(resolve(cwd));
|
|
94
|
+
const filePath = normalize(isAbsolute(path) ? resolve(path) : resolve(cwdPath, path));
|
|
95
|
+
return isPathInsideOrEqual(filePath, cwdPath) ? filePath : undefined;
|
|
96
|
+
}
|
|
97
|
+
function collectNestedDirs(cwd, fileDir) {
|
|
98
|
+
const cwdPath = normalize(resolve(cwd));
|
|
99
|
+
let current = normalize(resolve(fileDir));
|
|
100
|
+
const dirs = [];
|
|
101
|
+
while (comparisonPath(current) !== comparisonPath(cwdPath) && isPathInsideOrEqual(current, cwdPath)) {
|
|
102
|
+
dirs.push(current);
|
|
103
|
+
const parent = normalize(dirname(current));
|
|
104
|
+
if (comparisonPath(parent) === comparisonPath(current))
|
|
105
|
+
break;
|
|
106
|
+
current = parent;
|
|
107
|
+
}
|
|
108
|
+
return dirs.reverse();
|
|
109
|
+
}
|
|
110
|
+
async function loadContextFileFromDir(dir, readFile) {
|
|
111
|
+
for (const fileName of CONTEXT_FILE_CANDIDATES) {
|
|
112
|
+
const filePath = normalize(resolve(dir, fileName));
|
|
113
|
+
try {
|
|
114
|
+
return { path: filePath, content: decoder.decode(await readFile(filePath)) };
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function isPathInsideOrEqual(path, root) {
|
|
122
|
+
const normalizedPath = comparisonPath(path);
|
|
123
|
+
const normalizedRoot = comparisonPath(root);
|
|
124
|
+
return normalizedPath === normalizedRoot || normalizedPath.startsWith(withTrailingSlash(normalizedRoot));
|
|
125
|
+
}
|
|
126
|
+
function comparisonPath(path) {
|
|
127
|
+
const normalized = normalize(path).replace(/\\/g, '/');
|
|
128
|
+
return process.platform === 'win32' ? normalized.toLowerCase() : normalized;
|
|
129
|
+
}
|
|
130
|
+
function withTrailingSlash(path) {
|
|
131
|
+
return path.endsWith('/') ? path : `${path}/`;
|
|
132
|
+
}
|
|
133
|
+
function parseFileBlockNames(text) {
|
|
134
|
+
const names = new Set();
|
|
135
|
+
const fileTagPattern = /<file\s+[^>]*\bname=(["'])(.*?)\1[^>]*>/gi;
|
|
136
|
+
let match;
|
|
137
|
+
while ((match = fileTagPattern.exec(text)) !== null) {
|
|
138
|
+
const name = decodeXmlAttribute(match[2] ?? '').trim();
|
|
139
|
+
if (name)
|
|
140
|
+
names.add(name);
|
|
141
|
+
}
|
|
142
|
+
return [...names];
|
|
143
|
+
}
|
|
144
|
+
function decodeXmlAttribute(value) {
|
|
145
|
+
return value
|
|
146
|
+
.replace(/"/g, '"')
|
|
147
|
+
.replace(/'/g, "'")
|
|
148
|
+
.replace(/</g, '<')
|
|
149
|
+
.replace(/>/g, '>')
|
|
150
|
+
.replace(/&/g, '&');
|
|
151
|
+
}
|
|
152
|
+
function formatProgressiveContext(files) {
|
|
153
|
+
return [
|
|
154
|
+
'# Progressive Project Context',
|
|
155
|
+
'',
|
|
156
|
+
'The following nested AGENTS.md / CLAUDE.md files became relevant because files under their directories were read or attached. Follow these instructions for work in the corresponding paths.',
|
|
157
|
+
'',
|
|
158
|
+
...files.map((file) => `## ${file.path}\n\n${file.content.trimEnd()}`),
|
|
159
|
+
].join('\n');
|
|
160
|
+
}
|
|
161
|
+
function formatLoadedFiles(files) {
|
|
162
|
+
if (files.length === 0)
|
|
163
|
+
return 'No progressive context files loaded.';
|
|
164
|
+
return [
|
|
165
|
+
'Progressive Context',
|
|
166
|
+
`Loaded ${files.length} nested context file${files.length === 1 ? '' : 's'}:`,
|
|
167
|
+
...files.map((file) => `- ${file.path}`),
|
|
168
|
+
].join('\n');
|
|
169
|
+
}
|
|
2
170
|
export default contextExtension;
|
|
3
171
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@felan-ai/ext-context",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.2",
|
|
4
4
|
"description": "Progressive-context extension for Felan",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
13
|
"LICENSE",
|
|
14
|
+
"NOTICE",
|
|
14
15
|
"README.md"
|
|
15
16
|
],
|
|
16
17
|
"exports": {
|
|
@@ -20,7 +21,7 @@
|
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
23
|
-
"@felan-ai/agent-core": "0.1.0-alpha.
|
|
24
|
+
"@felan-ai/agent-core": "0.1.0-alpha.2"
|
|
24
25
|
},
|
|
25
26
|
"publishConfig": {
|
|
26
27
|
"access": "public",
|
|
@@ -29,6 +30,6 @@
|
|
|
29
30
|
"scripts": {
|
|
30
31
|
"build": "tsc -p tsconfig.build.json",
|
|
31
32
|
"type-check": "tsc -p tsconfig.json --noEmit",
|
|
32
|
-
"test": "vitest run
|
|
33
|
+
"test": "vitest run"
|
|
33
34
|
}
|
|
34
35
|
}
|