@f5-sales-demo/pi-agent-core 23.0.3 → 23.2.1

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.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. package/src/agent.ts +13 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@f5-sales-demo/pi-agent-core",
4
- "version": "23.0.3",
4
+ "version": "23.2.1",
5
5
  "description": "General-purpose agent with transport abstraction, state management, and attachment support",
6
6
  "homepage": "https://github.com/f5-sales-demo/xcsh",
7
7
  "author": "Can Boluk",
@@ -35,8 +35,8 @@
35
35
  "fmt": "biome format --write ."
36
36
  },
37
37
  "dependencies": {
38
- "@f5-sales-demo/pi-ai": "23.0.3",
39
- "@f5-sales-demo/pi-utils": "23.0.3"
38
+ "@f5-sales-demo/pi-ai": "23.2.1",
39
+ "@f5-sales-demo/pi-utils": "23.2.1"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@sinclair/typebox": "0.34.52",
package/src/agent.ts CHANGED
@@ -261,6 +261,7 @@ export class Agent {
261
261
  #contextMessages?: AgentLoopConfig["getContextMessages"];
262
262
  #runConversationTurn?: AgentLoopConfig["runConversationTurn"];
263
263
  #transformContext?: (messages: AgentMessage[], signal?: AbortSignal) => Promise<AgentMessage[]>;
264
+ #sessionContextTransform?: (messages: AgentMessage[]) => AgentMessage[];
264
265
  #steeringQueue: AgentMessage[] = [];
265
266
  #steeringWaiters = new Set<() => void>();
266
267
  #followUpQueue: AgentMessage[] = [];
@@ -570,6 +571,14 @@ export class Agent {
570
571
  this.#runConversationTurn = scope;
571
572
  }
572
573
 
574
+ /** Compose the owning session's transient context before extension transforms. */
575
+ setSessionContextTransform(transform: (messages: AgentMessage[]) => AgentMessage[]): () => void {
576
+ this.#sessionContextTransform = transform;
577
+ return () => {
578
+ if (this.#sessionContextTransform === transform) this.#sessionContextTransform = undefined;
579
+ };
580
+ }
581
+
573
582
  setContextMessagesProvider(provider?: AgentLoopConfig["getContextMessages"]): () => void {
574
583
  this.#contextMessages = provider;
575
584
  return () => {
@@ -849,7 +858,10 @@ export class Agent {
849
858
  preferWebsockets: this.#preferWebsockets,
850
859
  convertToLlm: this.#convertToLlm,
851
860
  getContextMessages: messages => this.#contextMessages?.(messages) ?? [],
852
- transformContext: this.#transformContext,
861
+ transformContext: async (messages, signal) => {
862
+ const prepared = this.#sessionContextTransform?.(messages) ?? messages;
863
+ return this.#transformContext ? this.#transformContext(prepared, signal) : prepared;
864
+ },
853
865
  // Per-turn: compose the extension hook with any server-tool injection for
854
866
  // THIS prompt (e.g. Office "Search the web"). No-op when neither is present.
855
867
  onPayload: composeOnPayload(