@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 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 and exec shutdown behavior is adapted from
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, OpenAI request options,
18
- cached WebSocket transport selection, and local TUI tool labels. Felan
19
- implements process and file operations against AgentRuntime and uses Pi
20
- 0.84.2's native OpenAI Codex transport for connection reuse and cached
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.
@@ -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;AAU9B,QAAA,MAAM,cAAc,EAAE,cAgCrB,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"}
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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"}
@@ -0,0 +1,3 @@
1
+ import type { Skill } from '@felan-ai/agent-core';
2
+ export declare function injectCodexSkills(systemPrompt: string, skills: readonly Skill[] | undefined): string;
3
+ //# sourceMappingURL=prompt.d.ts.map
@@ -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, '&amp;')
55
+ .replace(/</gu, '&lt;')
56
+ .replace(/>/gu, '&gt;')
57
+ .replace(/"/gu, '&quot;')
58
+ .replace(/'/gu, '&apos;');
59
+ }
60
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAQA,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,MAAoC;IAEpC,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,YAAY,CAAC;IACpE,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SACjC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;SAChD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IACpD,OAAO,2BAA2B,CAAC,YAAY,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA8B;IACzD,MAAM,KAAK,GAAG;QACZ,mBAAmB;QACnB,WAAW;QACX,2DAA2D;QAC3D,sBAAsB;QACtB,oBAAoB;KACrB,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;IACnG,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,wIAAwI,CAAC,CAAC;IACrJ,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mHAAmH,CAAC,CAAC;IAChI,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,2BAA2B,CAAC,YAAoB,EAAE,OAAe;IACxE,MAAM,OAAO,GAAG,CAAC,8BAA8B,EAAE,iBAAiB,CAAC,CAAC;IACpE,IAAI,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,cAAc,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9D,OAAO,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;AACvG,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;SACxB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@felan-ai/ext-codex",
3
- "version": "0.1.5",
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.9"
35
+ "@felan-ai/agent-core": "0.4.12"
36
36
  },
37
37
  "publishConfig": {
38
38
  "access": "public",