@felan-ai/ext-codex 0.1.5 → 0.1.6
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 -6
- package/README.md +29 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/prompt.d.ts +3 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +60 -0
- package/dist/prompt.js.map +1 -0
- package/package.json +2 -2
package/NOTICE
CHANGED
|
@@ -5,7 +5,8 @@ Includes selected code and behavior adapted from
|
|
|
5
5
|
62d1501ac0c6acb39c4b4d225a9e9056a7ba3b91,
|
|
6
6
|
https://github.com/IgorWarzocha/howaboua-pi-stuff/tree/62d1501ac0c6acb39c4b4d225a9e9056a7ba3b91/packages/pi-codex-conversion.
|
|
7
7
|
|
|
8
|
-
Additional patch replacement
|
|
8
|
+
Additional patch replacement, exec shutdown, and structured skill-prompt
|
|
9
|
+
preservation behavior is adapted from
|
|
9
10
|
@howaboua/pi-codex-conversion 3.0.15 at npm gitHead
|
|
10
11
|
b4b99630cda3c066749af0fb3ac9b8184b2a4c7d,
|
|
11
12
|
https://github.com/IgorWarzocha/howaboua-pi-stuff/tree/b4b99630cda3c066749af0fb3ac9b8184b2a4c7d/packages/pi-codex-conversion.
|
|
@@ -14,11 +15,11 @@ Copyright (c) 2026 Umberto B.
|
|
|
14
15
|
Licensed under the MIT License included in this package.
|
|
15
16
|
|
|
16
17
|
Adapted portions include structured tool schemas and output conventions,
|
|
17
|
-
patch parsing and matching, model activation policy,
|
|
18
|
-
cached WebSocket transport selection,
|
|
19
|
-
implements process and file operations against
|
|
20
|
-
0.84.2's native OpenAI Codex transport for connection
|
|
21
|
-
continuation.
|
|
18
|
+
patch parsing and matching, model activation policy, structured skill-prompt
|
|
19
|
+
preservation, OpenAI request options, cached WebSocket transport selection,
|
|
20
|
+
and local TUI tool labels. Felan implements process and file operations against
|
|
21
|
+
AgentRuntime and uses Pi 0.84.2's native OpenAI Codex transport for connection
|
|
22
|
+
reuse and cached continuation.
|
|
22
23
|
|
|
23
24
|
This package uses @earendil-works/pi-tui 0.84.2 from
|
|
24
25
|
https://github.com/earendil-works/pi, licensed under the MIT License.
|
package/README.md
CHANGED
|
@@ -10,6 +10,10 @@ Active mode replaces `read`, `bash`, `edit`, and `write` with
|
|
|
10
10
|
restores the ordinary tools. All shell and filesystem operations use the
|
|
11
11
|
current `AgentRuntime`.
|
|
12
12
|
Runtimes without persistent-process support keep Felan's ordinary coding tools.
|
|
13
|
+
Because Pi normally exposes skill metadata only while `read` is active, Codex
|
|
14
|
+
mode restores that metadata from Pi's structured prompt options. Matching
|
|
15
|
+
skills remain progressively disclosed: the model opens the selected `SKILL.md`
|
|
16
|
+
through `exec_command` and loads referenced files only as needed.
|
|
13
17
|
The local TUI presents Codex tool calls with friendly action labels while
|
|
14
18
|
headless modes continue to expose the stable tool names and raw results.
|
|
15
19
|
|
|
@@ -63,3 +67,28 @@ pnpm --filter @felan-ai/ext-codex test
|
|
|
63
67
|
```
|
|
64
68
|
|
|
65
69
|
See [NOTICE](NOTICE) for upstream attribution.
|
|
70
|
+
|
|
71
|
+
## Package boundary and requirements
|
|
72
|
+
|
|
73
|
+
Agent Core owns the runtime contract and Pi owns provider transport. This
|
|
74
|
+
package owns provider/model eligibility, structured tool replacement, request
|
|
75
|
+
controls, PTY/session handling, and bounded image delivery; it does not register
|
|
76
|
+
or replace a provider. Filesystem, process, PTY, and image reads go through the
|
|
77
|
+
active `AgentRuntime`.
|
|
78
|
+
|
|
79
|
+
The package requires a compatible `@felan-ai/agent-core` peer, TypeBox, and
|
|
80
|
+
Pi-TUI. Runtime adapters without persistent-process support retain Felan's
|
|
81
|
+
ordinary coding tools rather than registering unusable Codex controls. Host
|
|
82
|
+
mode remains current-user access and is not a sandbox.
|
|
83
|
+
|
|
84
|
+
## Related documentation
|
|
85
|
+
|
|
86
|
+
- [Codex tools configuration](../../docs/user-guide/configuration.md#codex-tools)
|
|
87
|
+
- [Runtime and security](../../docs/concepts/runtime-and-security.md)
|
|
88
|
+
- [Extension catalog](../../docs/reference/extension-catalog.md)
|
|
89
|
+
|
|
90
|
+
## Attribution
|
|
91
|
+
|
|
92
|
+
Selected implementation behavior is adapted from the reviewed
|
|
93
|
+
`@howaboua/pi-codex-conversion` sources. See [NOTICE](NOTICE) and
|
|
94
|
+
[LICENSE](LICENSE) for source commits and attribution.
|
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,EAEL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAW9B,QAAA,MAAM,cAAc,EAAE,cAqCrB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACzF,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACjF,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,eAAe,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import {} from '@felan-ai/agent-core';
|
|
|
2
2
|
import { readCodexConfig } from './config.js';
|
|
3
3
|
import { ExecSessionManager } from './exec-session-manager.js';
|
|
4
4
|
import { supportsCodexModel, supportsImageInput } from './model-policy.js';
|
|
5
|
+
import { injectCodexSkills } from './prompt.js';
|
|
5
6
|
import { applyCodexRequestOptions } from './request-options.js';
|
|
6
7
|
import { CODEX_TOOL_NAMES, createCodexTools, registerPatchResultEvent } from './tools.js';
|
|
7
8
|
const REPLACED_TOOL_NAMES = new Set(['read', 'bash', 'edit', 'write']);
|
|
@@ -32,6 +33,12 @@ const codexExtension = async (pi) => {
|
|
|
32
33
|
};
|
|
33
34
|
pi.on('session_start', (_event, ctx) => synchronizeTools(ctx.model));
|
|
34
35
|
pi.on('model_select', (event) => synchronizeTools(event.model));
|
|
36
|
+
pi.on('before_agent_start', (event, ctx) => {
|
|
37
|
+
if (!supportsCodexModel(ctx.model) || !pi.runtime.processes)
|
|
38
|
+
return undefined;
|
|
39
|
+
const systemPrompt = injectCodexSkills(event.systemPrompt, event.systemPromptOptions.skills);
|
|
40
|
+
return systemPrompt === event.systemPrompt ? undefined : { systemPrompt };
|
|
41
|
+
});
|
|
35
42
|
pi.on('before_provider_request', (event, ctx) => (applyCodexRequestOptions(event.payload, ctx, config)));
|
|
36
43
|
pi.on('session_shutdown', async () => {
|
|
37
44
|
await sessions.shutdown();
|
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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"}
|
package/dist/prompt.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAUlD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,GACnC,MAAM,CAOR"}
|
package/dist/prompt.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
const SKILLS_SECTION_OPEN = '<skills_instructions>';
|
|
2
|
+
export function injectCodexSkills(systemPrompt, skills) {
|
|
3
|
+
if (systemPrompt.includes(SKILLS_SECTION_OPEN))
|
|
4
|
+
return systemPrompt;
|
|
5
|
+
const visibleSkills = (skills ?? [])
|
|
6
|
+
.filter((skill) => !skill.disableModelInvocation)
|
|
7
|
+
.map(({ name, description, filePath }) => ({ name, description, filePath }));
|
|
8
|
+
if (visibleSkills.length === 0)
|
|
9
|
+
return systemPrompt;
|
|
10
|
+
return insertBeforeTrailingContext(systemPrompt, formatSkillsSection(visibleSkills));
|
|
11
|
+
}
|
|
12
|
+
function formatSkillsSection(skills) {
|
|
13
|
+
const lines = [
|
|
14
|
+
SKILLS_SECTION_OPEN,
|
|
15
|
+
'## Skills',
|
|
16
|
+
'Skills are local instructions stored in `SKILL.md` files.',
|
|
17
|
+
'### Available skills',
|
|
18
|
+
'<available_skills>',
|
|
19
|
+
];
|
|
20
|
+
for (const skill of skills) {
|
|
21
|
+
lines.push(' <skill>');
|
|
22
|
+
lines.push(` <name>${escapeXml(skill.name)}</name>`);
|
|
23
|
+
lines.push(` <description>${escapeXml(skill.description)}</description>`);
|
|
24
|
+
lines.push(` <location>${escapeXml(skill.filePath)}</location>`);
|
|
25
|
+
lines.push(' </skill>');
|
|
26
|
+
}
|
|
27
|
+
lines.push('</available_skills>');
|
|
28
|
+
lines.push('### How to use skills');
|
|
29
|
+
lines.push('- Use a skill when the user names it or the request clearly matches its description.');
|
|
30
|
+
lines.push('- Use the minimal required set. If multiple skills apply, state the order briefly.');
|
|
31
|
+
lines.push('- Open each selected `SKILL.md` before acting, resolve relative paths from its directory, and load only the referenced files you need.');
|
|
32
|
+
lines.push('- Prefer existing skill scripts, assets, and templates over recreating them.');
|
|
33
|
+
lines.push('### Fallback');
|
|
34
|
+
lines.push('- If a skill is missing or its path cannot be read, say so briefly and continue with the best available approach.');
|
|
35
|
+
lines.push('</skills_instructions>');
|
|
36
|
+
return lines.join('\n');
|
|
37
|
+
}
|
|
38
|
+
function insertBeforeTrailingContext(systemPrompt, section) {
|
|
39
|
+
const markers = ['\nCurrent working directory:', '\nCurrent date:'];
|
|
40
|
+
let insertionIndex = systemPrompt.length;
|
|
41
|
+
for (const marker of markers) {
|
|
42
|
+
const index = systemPrompt.lastIndexOf(marker);
|
|
43
|
+
if (index !== -1)
|
|
44
|
+
insertionIndex = Math.min(insertionIndex, index);
|
|
45
|
+
}
|
|
46
|
+
if (insertionIndex === systemPrompt.length) {
|
|
47
|
+
const separator = systemPrompt.endsWith('\n') ? '\n' : '\n\n';
|
|
48
|
+
return `${systemPrompt}${separator}${section}`;
|
|
49
|
+
}
|
|
50
|
+
return `${systemPrompt.slice(0, insertionIndex)}\n\n${section}${systemPrompt.slice(insertionIndex)}`;
|
|
51
|
+
}
|
|
52
|
+
function escapeXml(value) {
|
|
53
|
+
return value
|
|
54
|
+
.replace(/&/gu, '&')
|
|
55
|
+
.replace(/</gu, '<')
|
|
56
|
+
.replace(/>/gu, '>')
|
|
57
|
+
.replace(/"/gu, '"')
|
|
58
|
+
.replace(/'/gu, ''');
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@felan-ai/ext-codex",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Codex-compatible structured tools and OpenAI request controls for Felan",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@felan-ai/agent-core": "^0.4.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@felan-ai/agent-core": "0.4.
|
|
35
|
+
"@felan-ai/agent-core": "0.4.12"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public",
|