@felan-ai/felan 0.35.1 → 0.35.3
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 +1 -1
- package/dist/agent-environment.d.ts +3 -0
- package/dist/agent-environment.d.ts.map +1 -0
- package/dist/agent-environment.js +35 -0
- package/dist/agent-environment.js.map +1 -0
- package/dist/client/client.d.ts +2 -2
- package/dist/daemon-host.js +5 -0
- package/dist/daemon-host.js.map +1 -1
- package/npm-shrinkwrap.json +15 -14
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ are unchanged; the model API identifier `azure-openai-responses` is also still
|
|
|
63
63
|
used by Azure model definitions.
|
|
64
64
|
|
|
65
65
|
Felan Code supports Node.js 22.19.0 or newer. Repository development and CI use
|
|
66
|
-
Node.js 22.
|
|
66
|
+
Node.js 22.23.4 with pnpm 9.15.5.
|
|
67
67
|
|
|
68
68
|
```sh
|
|
69
69
|
felan
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-environment.d.ts","sourceRoot":"","sources":["../src/agent-environment.ts"],"names":[],"mappings":"AAOA,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAM5G;AAGD,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAW3F"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { parseEnv } from 'node:util';
|
|
4
|
+
// The daemon outlives the client that spawned it, so the agent directory's .env overrides the inherited
|
|
5
|
+
// environment to keep configuration independent of which terminal started the daemon. It must run before
|
|
6
|
+
// daemon-scoped providers read the environment.
|
|
7
|
+
export function loadAgentEnvironment(agentDir, environment = process.env) {
|
|
8
|
+
let contents;
|
|
9
|
+
try {
|
|
10
|
+
contents = readFileSync(join(agentDir, '.env'), 'utf8');
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
return error.code === 'ENOENT';
|
|
14
|
+
}
|
|
15
|
+
Object.assign(environment, parseEnv(contents));
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
// Mirrors the daemon's launch target layout; the daemon validates the target itself afterwards.
|
|
19
|
+
export function daemonTargetAgentDir(targetArgument) {
|
|
20
|
+
try {
|
|
21
|
+
const target = JSON.parse(targetArgument ?? '');
|
|
22
|
+
if (!target || typeof target !== 'object')
|
|
23
|
+
return undefined;
|
|
24
|
+
const kind = Reflect.get(target, 'kind');
|
|
25
|
+
const agentDir = Reflect.get(target, 'agentDir');
|
|
26
|
+
const directory = Reflect.get(target, 'directory');
|
|
27
|
+
if (kind === 'production' && typeof agentDir === 'string')
|
|
28
|
+
return agentDir;
|
|
29
|
+
if (kind === 'isolated' && typeof directory === 'string')
|
|
30
|
+
return join(directory, 'agent');
|
|
31
|
+
}
|
|
32
|
+
catch { }
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=agent-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-environment.js","sourceRoot":"","sources":["../src/agent-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,wGAAwG;AACxG,yGAAyG;AACzG,gDAAgD;AAChD,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,cAAiC,OAAO,CAAC,GAAG;IACjG,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;IAChE,OAAO,KAAK,EAAE,CAAC;QAAC,OAAQ,KAA+B,CAAC,IAAI,KAAK,QAAQ,CAAC;IAAC,CAAC;IAC5E,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,oBAAoB,CAAC,cAAkC;IACrE,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,YAAY,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC3E,IAAI,IAAI,KAAK,UAAU,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/client/client.d.ts
CHANGED
|
@@ -105,9 +105,9 @@ export declare class SessionClient {
|
|
|
105
105
|
retryAt: number;
|
|
106
106
|
} | undefined;
|
|
107
107
|
get identity(): {
|
|
108
|
+
agentDir: string;
|
|
108
109
|
namespaceId: string;
|
|
109
110
|
instanceId: string;
|
|
110
|
-
agentDir: string;
|
|
111
111
|
rootSet: string[];
|
|
112
112
|
} | undefined;
|
|
113
113
|
get capabilities(): {
|
|
@@ -121,9 +121,9 @@ export declare class SessionClient {
|
|
|
121
121
|
capabilities?: ("ui.action" | "ui.status" | "ui.progress" | "ui.document" | "ui.view" | "native.events")[];
|
|
122
122
|
daemonVersion: string;
|
|
123
123
|
identity: {
|
|
124
|
+
agentDir: string;
|
|
124
125
|
namespaceId: string;
|
|
125
126
|
instanceId: string;
|
|
126
|
-
agentDir: string;
|
|
127
127
|
rootSet: string[];
|
|
128
128
|
};
|
|
129
129
|
protocol: 1;
|
package/dist/daemon-host.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { fileURLToPath } from 'node:url';
|
|
2
2
|
import { runDaemonProcess } from '@felan-ai/daemon/daemon-bootstrap';
|
|
3
|
+
import { daemonTargetAgentDir, loadAgentEnvironment } from './agent-environment.js';
|
|
3
4
|
import { FELAN_VERSION } from './version.js';
|
|
4
5
|
const manager = {
|
|
5
6
|
packageName: '@felan-ai/felan',
|
|
@@ -8,6 +9,10 @@ const manager = {
|
|
|
8
9
|
resolveProvider: specifier => import.meta.resolve(specifier),
|
|
9
10
|
packagedDefaultPath: fileURLToPath(new URL('./host.json', import.meta.url)),
|
|
10
11
|
};
|
|
12
|
+
const agentDir = daemonTargetAgentDir(process.argv[2]);
|
|
13
|
+
if (agentDir && !loadAgentEnvironment(agentDir)) {
|
|
14
|
+
process.stderr.write('Felan daemon could not read .env; using the inherited environment.\n');
|
|
15
|
+
}
|
|
11
16
|
try {
|
|
12
17
|
await runDaemonProcess(process.argv.slice(2), manager);
|
|
13
18
|
}
|
package/dist/daemon-host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-host.js","sourceRoot":"","sources":["../src/daemon-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAoB,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,OAAO,GAAgB;IAC3B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IAC5B,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5D,mBAAmB,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5E,CAAC;AAEF,IAAI,CAAC;IAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAAC,CAAC;AAC/D,MAAM,CAAC;IACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;IACjG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"daemon-host.js","sourceRoot":"","sources":["../src/daemon-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAoB,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,OAAO,GAAgB;IAC3B,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IAC5B,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5D,mBAAmB,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,IAAI,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;AAC/F,CAAC;AAED,IAAI,CAAC;IAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAAC,CAAC;AAC/D,MAAM,CAAC;IACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;IACjG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@felan-ai/felan",
|
|
3
|
-
"version": "0.35.
|
|
3
|
+
"version": "0.35.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@felan-ai/felan",
|
|
9
|
-
"version": "0.35.
|
|
9
|
+
"version": "0.35.3",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@felan-ai/daemon": "0.5.
|
|
12
|
+
"@felan-ai/daemon": "0.5.2",
|
|
13
13
|
"@agentclientprotocol/sdk": "1.4.0",
|
|
14
14
|
"@earendil-works/pi-coding-agent": "1.4.0",
|
|
15
15
|
"@earendil-works/pi-tui": "1.4.0",
|
|
@@ -19,31 +19,31 @@
|
|
|
19
19
|
"typebox": "1.1.38",
|
|
20
20
|
"@felan-ai/agent-core": "0.14.5",
|
|
21
21
|
"@felan-ai/ext-ask-user": "0.11.4",
|
|
22
|
-
"@felan-ai/ext-background-bash": "0.13.4",
|
|
23
22
|
"@felan-ai/ext-browser": "0.13.0",
|
|
24
|
-
"@felan-ai/ext-codebase-memory": "0.9.0",
|
|
25
23
|
"@felan-ai/ext-claude-code": "0.2.1",
|
|
24
|
+
"@felan-ai/ext-codebase-memory": "0.9.0",
|
|
25
|
+
"@felan-ai/ext-background-bash": "0.13.4",
|
|
26
26
|
"@felan-ai/ext-codex": "0.11.0",
|
|
27
|
+
"@felan-ai/ext-context-view": "0.9.1",
|
|
27
28
|
"@felan-ai/ext-context": "0.11.0",
|
|
28
29
|
"@felan-ai/ext-felan-api": "0.9.1",
|
|
29
30
|
"@felan-ai/ext-fusion": "0.3.4",
|
|
30
|
-
"@felan-ai/ext-context-view": "0.9.1",
|
|
31
31
|
"@felan-ai/ext-insights": "0.9.1",
|
|
32
32
|
"@felan-ai/ext-markitdown": "0.10.1",
|
|
33
|
-
"@felan-ai/ext-memory": "0.10.1",
|
|
34
33
|
"@felan-ai/ext-mcp": "0.9.1",
|
|
35
|
-
"@felan-ai/ext-
|
|
34
|
+
"@felan-ai/ext-memory": "0.10.1",
|
|
36
35
|
"@felan-ai/ext-model-tools": "0.5.0",
|
|
37
36
|
"@felan-ai/ext-powerline": "0.15.0",
|
|
38
37
|
"@felan-ai/ext-prewalk": "0.13.1",
|
|
39
|
-
"@felan-ai/ext-prompt-history": "0.8.4",
|
|
40
38
|
"@felan-ai/ext-rtk-optimizer": "0.11.1",
|
|
41
39
|
"@felan-ai/ext-session-compaction": "0.8.0",
|
|
40
|
+
"@felan-ai/ext-prompt-history": "0.8.4",
|
|
41
|
+
"@felan-ai/ext-output-style": "0.10.0",
|
|
42
42
|
"@felan-ai/ext-session-title": "0.8.0",
|
|
43
|
-
"@felan-ai/session-protocol": "0.4.1",
|
|
44
43
|
"@felan-ai/ext-subagents": "0.13.1",
|
|
45
|
-
"@felan-ai/ext-
|
|
46
|
-
"@felan-ai/
|
|
44
|
+
"@felan-ai/ext-tasks": "0.10.0",
|
|
45
|
+
"@felan-ai/session-protocol": "0.4.1",
|
|
46
|
+
"@felan-ai/ext-web-access": "0.12.1"
|
|
47
47
|
},
|
|
48
48
|
"bin": {
|
|
49
49
|
"felan": "./dist/cli.js"
|
|
@@ -590,8 +590,8 @@
|
|
|
590
590
|
}
|
|
591
591
|
},
|
|
592
592
|
"node_modules/@felan-ai/daemon": {
|
|
593
|
-
"version": "0.5.
|
|
594
|
-
"resolved": "https://registry.npmjs.org/@felan-ai/daemon/-/daemon-0.5.
|
|
593
|
+
"version": "0.5.2",
|
|
594
|
+
"resolved": "https://registry.npmjs.org/@felan-ai/daemon/-/daemon-0.5.2.tgz",
|
|
595
595
|
"license": "MIT",
|
|
596
596
|
"dependencies": {
|
|
597
597
|
"@earendil-works/pi-coding-agent": "1.4.0",
|
|
@@ -1722,6 +1722,7 @@
|
|
|
1722
1722
|
"version": "3.34.1",
|
|
1723
1723
|
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.34.1.tgz",
|
|
1724
1724
|
"integrity": "sha512-dLcOUxz8YCv1RZUMKq6GbyUf95pLbrqh34bPvpCZ1+CByFF31BEAFewZjsGCnVsZTKdThNENfGyAgk2TJqVwSw==",
|
|
1725
|
+
"deprecated": "Deprecated due to a bug in custom logger data redaction. See https://github.com/aws/aws-sdk-js-v3/issues/8393.",
|
|
1725
1726
|
"license": "Apache-2.0",
|
|
1726
1727
|
"dependencies": {
|
|
1727
1728
|
"@smithy/types": "^4.18.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@felan-ai/felan",
|
|
3
|
-
"version": "0.35.
|
|
3
|
+
"version": "0.35.3",
|
|
4
4
|
"description": "Felan Code: an open-source, model-portable coding agent built for cost-efficient, verifiable software work",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
88
|
"dependencies": {
|
|
89
|
-
"@felan-ai/daemon": "0.5.
|
|
89
|
+
"@felan-ai/daemon": "0.5.2",
|
|
90
90
|
"@agentclientprotocol/sdk": "1.4.0",
|
|
91
91
|
"@earendil-works/pi-coding-agent": "1.4.0",
|
|
92
92
|
"@earendil-works/pi-tui": "1.4.0",
|
|
@@ -95,32 +95,32 @@
|
|
|
95
95
|
"open": "11.0.0",
|
|
96
96
|
"typebox": "1.1.38",
|
|
97
97
|
"@felan-ai/agent-core": "0.14.5",
|
|
98
|
-
"@felan-ai/ext-ask-user": "0.11.4",
|
|
99
|
-
"@felan-ai/ext-browser": "0.13.0",
|
|
100
|
-
"@felan-ai/ext-codebase-memory": "0.9.0",
|
|
101
98
|
"@felan-ai/ext-background-bash": "0.13.4",
|
|
99
|
+
"@felan-ai/ext-browser": "0.13.0",
|
|
102
100
|
"@felan-ai/ext-claude-code": "0.2.1",
|
|
101
|
+
"@felan-ai/ext-codebase-memory": "0.9.0",
|
|
102
|
+
"@felan-ai/ext-ask-user": "0.11.4",
|
|
103
103
|
"@felan-ai/ext-codex": "0.11.0",
|
|
104
|
-
"@felan-ai/ext-context": "0.11.0",
|
|
105
|
-
"@felan-ai/ext-felan-api": "0.9.1",
|
|
106
104
|
"@felan-ai/ext-context-view": "0.9.1",
|
|
105
|
+
"@felan-ai/ext-felan-api": "0.9.1",
|
|
106
|
+
"@felan-ai/ext-context": "0.11.0",
|
|
107
|
+
"@felan-ai/ext-fusion": "0.3.4",
|
|
107
108
|
"@felan-ai/ext-insights": "0.9.1",
|
|
108
|
-
"@felan-ai/ext-markitdown": "0.10.1",
|
|
109
109
|
"@felan-ai/ext-mcp": "0.9.1",
|
|
110
|
-
"@felan-ai/ext-
|
|
110
|
+
"@felan-ai/ext-memory": "0.10.1",
|
|
111
111
|
"@felan-ai/ext-model-tools": "0.5.0",
|
|
112
|
+
"@felan-ai/ext-markitdown": "0.10.1",
|
|
112
113
|
"@felan-ai/ext-output-style": "0.10.0",
|
|
113
|
-
"@felan-ai/ext-
|
|
114
|
+
"@felan-ai/ext-powerline": "0.15.0",
|
|
114
115
|
"@felan-ai/ext-prewalk": "0.13.1",
|
|
115
116
|
"@felan-ai/ext-prompt-history": "0.8.4",
|
|
116
117
|
"@felan-ai/ext-rtk-optimizer": "0.11.1",
|
|
117
|
-
"@felan-ai/ext-powerline": "0.15.0",
|
|
118
118
|
"@felan-ai/ext-session-compaction": "0.8.0",
|
|
119
119
|
"@felan-ai/ext-session-title": "0.8.0",
|
|
120
|
+
"@felan-ai/ext-tasks": "0.10.0",
|
|
120
121
|
"@felan-ai/ext-subagents": "0.13.1",
|
|
121
122
|
"@felan-ai/ext-web-access": "0.12.1",
|
|
122
|
-
"@felan-ai/session-protocol": "0.4.1"
|
|
123
|
-
"@felan-ai/ext-tasks": "0.10.0"
|
|
123
|
+
"@felan-ai/session-protocol": "0.4.1"
|
|
124
124
|
},
|
|
125
125
|
"publishConfig": {
|
|
126
126
|
"access": "public",
|