@felan-ai/ext-codex 0.3.1 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,iBAAiB,EACrB,MAAM,EAAE,WAAW,GAClB,IAAI,CAuCN"}
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,iBAAiB,EACrB,MAAM,EAAE,WAAW,GAClB,IAAI,CA2EN"}
@@ -1,31 +1,32 @@
1
1
  import { supportsCodexModel } from './model-policy.js';
2
2
  export function registerPostAgentRunCompaction(pi, config) {
3
- let deferred = false;
3
+ let deferredAgentRun;
4
4
  let activeCompaction;
5
- pi.on('session_before_compact', (event, ctx) => {
6
- if (event.reason !== 'threshold') {
7
- deferred = false;
8
- return undefined;
5
+ let agentRun = 0;
6
+ let compactionAttemptAgentRun;
7
+ let pendingPiCompactionAgentRun;
8
+ const startDeferredCompaction = (ctx) => {
9
+ if (deferredAgentRun !== agentRun)
10
+ return;
11
+ if (compactionAttemptAgentRun === agentRun) {
12
+ deferredAgentRun = undefined;
13
+ return;
9
14
  }
10
15
  if (activeCompaction)
11
- return { cancel: true };
12
- if (!shouldDefer(event.reason, ctx, config))
13
- return undefined;
14
- deferred = true;
15
- return { cancel: true };
16
- });
17
- pi.on('agent_settled', (_event, ctx) => {
18
- if (!deferred)
19
16
  return;
20
- deferred = false;
17
+ deferredAgentRun = undefined;
21
18
  if (!supportsCodexModel(ctx.model))
22
19
  return;
23
- const operation = {};
20
+ const operation = { agentRun };
24
21
  activeCompaction = operation;
22
+ compactionAttemptAgentRun = agentRun;
25
23
  ctx.compact({
26
24
  onComplete: () => {
27
- if (activeCompaction === operation)
28
- activeCompaction = undefined;
25
+ if (activeCompaction !== operation)
26
+ return;
27
+ activeCompaction = undefined;
28
+ if (ctx.isIdle())
29
+ startDeferredCompaction(ctx);
29
30
  },
30
31
  onError: (error) => {
31
32
  if (activeCompaction !== operation)
@@ -34,14 +35,59 @@ export function registerPostAgentRunCompaction(pi, config) {
34
35
  if (!isAbortError(error)) {
35
36
  ctx.ui.notify(`Post-agent GPT compaction failed: ${error.message}`, 'error');
36
37
  }
38
+ if (ctx.isIdle())
39
+ startDeferredCompaction(ctx);
37
40
  },
38
41
  });
42
+ };
43
+ pi.on('session_before_compact', (event, ctx) => {
44
+ if (event.reason !== 'threshold') {
45
+ if (deferredAgentRun === agentRun)
46
+ deferredAgentRun = undefined;
47
+ pendingPiCompactionAgentRun = agentRun;
48
+ return undefined;
49
+ }
50
+ if (!shouldDefer(event.reason, ctx, config)) {
51
+ pendingPiCompactionAgentRun = agentRun;
52
+ return undefined;
53
+ }
54
+ if (compactionAttemptAgentRun !== agentRun)
55
+ deferredAgentRun = agentRun;
56
+ return { cancel: true };
57
+ });
58
+ pi.on('agent_settled', (_event, ctx) => {
59
+ startDeferredCompaction(ctx);
60
+ });
61
+ pi.on('agent_start', () => {
62
+ agentRun += 1;
63
+ });
64
+ pi.on('session_compact', (event, ctx) => {
65
+ if (pendingPiCompactionAgentRun === undefined
66
+ || !isCurrentSessionCompaction(event.compactionEntry, ctx))
67
+ return;
68
+ const completedAgentRun = pendingPiCompactionAgentRun;
69
+ pendingPiCompactionAgentRun = undefined;
70
+ if (deferredAgentRun === completedAgentRun)
71
+ deferredAgentRun = undefined;
72
+ if (completedAgentRun === agentRun)
73
+ compactionAttemptAgentRun = completedAgentRun;
39
74
  });
40
75
  pi.on('session_start', () => {
41
- deferred = false;
76
+ deferredAgentRun = undefined;
42
77
  activeCompaction = undefined;
78
+ agentRun += 1;
79
+ compactionAttemptAgentRun = undefined;
80
+ pendingPiCompactionAgentRun = undefined;
43
81
  });
44
82
  }
83
+ function isCurrentSessionCompaction(entry, ctx) {
84
+ try {
85
+ return ctx.sessionManager.getEntry(entry.id) === entry;
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
45
91
  function isAbortError(error) {
46
92
  return error.name === 'AbortError'
47
93
  || /(?:operation was aborted|compaction cancelled)$/iu.test(error.message);
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,UAAU,8BAA8B,CAC5C,EAAqB,EACrB,MAAmB;IAEnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,gBAAoC,CAAC;IAEzC,EAAE,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,gBAAgB;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9D,QAAQ,GAAG,IAAI,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,QAAQ,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO;QAC3C,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,gBAAgB,GAAG,SAAS,CAAC;QAC7B,GAAG,CAAC,OAAO,CAAC;YACV,UAAU,EAAE,GAAG,EAAE;gBACf,IAAI,gBAAgB,KAAK,SAAS;oBAAE,gBAAgB,GAAG,SAAS,CAAC;YACnE,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,gBAAgB,KAAK,SAAS;oBAAE,OAAO;gBAC3C,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC/E,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QAC1B,QAAQ,GAAG,KAAK,CAAC;QACjB,gBAAgB,GAAG,SAAS,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAY;IAChC,OAAO,KAAK,CAAC,IAAI,KAAK,YAAY;WAC7B,mDAAmD,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAClB,MAA2C,EAC3C,GAAqB,EACrB,MAAmB;IAEnB,OAAO,MAAM,CAAC,sBAAsB;WAC/B,MAAM,KAAK,WAAW;WACtB,CAAC,GAAG,CAAC,MAAM,EAAE;WACb,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,UAAU,8BAA8B,CAC5C,EAAqB,EACrB,MAAmB;IAEnB,IAAI,gBAAoC,CAAC;IACzC,IAAI,gBAAkD,CAAC;IACvD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,yBAA6C,CAAC;IAClD,IAAI,2BAA+C,CAAC;IAEpD,MAAM,uBAAuB,GAAG,CAAC,GAAqB,EAAQ,EAAE;QAC9D,IAAI,gBAAgB,KAAK,QAAQ;YAAE,OAAO;QAC1C,IAAI,yBAAyB,KAAK,QAAQ,EAAE,CAAC;YAC3C,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,gBAAgB;YAAE,OAAO;QAE7B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO;QAC3C,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC/B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,yBAAyB,GAAG,QAAQ,CAAC;QACrC,GAAG,CAAC,OAAO,CAAC;YACV,UAAU,EAAE,GAAG,EAAE;gBACf,IAAI,gBAAgB,KAAK,SAAS;oBAAE,OAAO;gBAC3C,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,IAAI,GAAG,CAAC,MAAM,EAAE;oBAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,gBAAgB,KAAK,SAAS;oBAAE,OAAO;gBAC3C,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC/E,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,EAAE;oBAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,EAAE,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,gBAAgB,KAAK,QAAQ;gBAAE,gBAAgB,GAAG,SAAS,CAAC;YAChE,2BAA2B,GAAG,QAAQ,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5C,2BAA2B,GAAG,QAAQ,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,yBAAyB,KAAK,QAAQ;YAAE,gBAAgB,GAAG,QAAQ,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACrC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACxB,QAAQ,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,2BAA2B,KAAK,SAAS;eACxC,CAAC,0BAA0B,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC;YAAE,OAAO;QACrE,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;QACtD,2BAA2B,GAAG,SAAS,CAAC;QACxC,IAAI,gBAAgB,KAAK,iBAAiB;YAAE,gBAAgB,GAAG,SAAS,CAAC;QACzE,IAAI,iBAAiB,KAAK,QAAQ;YAAE,yBAAyB,GAAG,iBAAiB,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QAC1B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,QAAQ,IAAI,CAAC,CAAC;QACd,yBAAyB,GAAG,SAAS,CAAC;QACtC,2BAA2B,GAAG,SAAS,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAqB,EACrB,GAAqB;IAErB,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAY;IAChC,OAAO,KAAK,CAAC,IAAI,KAAK,YAAY;WAC7B,mDAAmD,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAClB,MAA2C,EAC3C,GAAqB,EACrB,MAAmB;IAEnB,OAAO,MAAM,CAAC,sBAAsB;WAC/B,MAAM,KAAK,WAAW;WACtB,CAAC,GAAG,CAAC,MAAM,EAAE;WACb,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@felan-ai/ext-codex",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Codex-compatible structured tools and OpenAI request controls for Felan",
5
5
  "license": "MIT",
6
6
  "type": "module",