bkper 4.23.0 → 4.24.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 (69) hide show
  1. package/README.md +4 -0
  2. package/lib/agent/{auth-commands.d.ts → extensions/auth-commands.d.ts} +1 -1
  3. package/lib/agent/extensions/auth-commands.d.ts.map +1 -0
  4. package/lib/agent/{auth-commands.js → extensions/auth-commands.js} +1 -1
  5. package/lib/agent/extensions/auth-commands.js.map +1 -0
  6. package/lib/agent/extensions/bkper-ai-provider.d.ts.map +1 -0
  7. package/lib/agent/extensions/bkper-ai-provider.js.map +1 -0
  8. package/lib/agent/extensions/builtins.d.ts +23 -0
  9. package/lib/agent/extensions/builtins.d.ts.map +1 -0
  10. package/lib/agent/extensions/builtins.js +52 -0
  11. package/lib/agent/extensions/builtins.js.map +1 -0
  12. package/lib/agent/extensions/core-concepts-preload.d.ts.map +1 -0
  13. package/lib/agent/{core-concepts-preload.js → extensions/core-concepts-preload.js} +2 -2
  14. package/lib/agent/extensions/core-concepts-preload.js.map +1 -0
  15. package/lib/agent/extensions/handoff.d.ts +54 -0
  16. package/lib/agent/extensions/handoff.d.ts.map +1 -0
  17. package/lib/agent/extensions/handoff.js +364 -0
  18. package/lib/agent/extensions/handoff.js.map +1 -0
  19. package/lib/agent/extensions/image-fallback.d.ts.map +1 -0
  20. package/lib/agent/extensions/image-fallback.js.map +1 -0
  21. package/lib/agent/extensions/startup.d.ts +8 -0
  22. package/lib/agent/extensions/startup.d.ts.map +1 -0
  23. package/lib/agent/extensions/startup.js +118 -0
  24. package/lib/agent/extensions/startup.js.map +1 -0
  25. package/lib/agent/interactive/interactive-mode.d.ts +8 -0
  26. package/lib/agent/interactive/interactive-mode.d.ts.map +1 -0
  27. package/lib/agent/interactive/interactive-mode.js +79 -0
  28. package/lib/agent/interactive/interactive-mode.js.map +1 -0
  29. package/lib/agent/interactive/run-agent-mode.d.ts +19 -0
  30. package/lib/agent/interactive/run-agent-mode.d.ts.map +1 -0
  31. package/lib/agent/interactive/run-agent-mode.js +116 -0
  32. package/lib/agent/interactive/run-agent-mode.js.map +1 -0
  33. package/lib/agent/interactive/session-keybindings.d.ts +17 -0
  34. package/lib/agent/interactive/session-keybindings.d.ts.map +1 -0
  35. package/lib/agent/interactive/session-keybindings.js +50 -0
  36. package/lib/agent/interactive/session-keybindings.js.map +1 -0
  37. package/lib/agent/interactive/session-restore.d.ts +40 -0
  38. package/lib/agent/interactive/session-restore.d.ts.map +1 -0
  39. package/lib/agent/interactive/session-restore.js +177 -0
  40. package/lib/agent/interactive/session-restore.js.map +1 -0
  41. package/lib/agent/interactive/settings.d.ts +26 -0
  42. package/lib/agent/interactive/settings.d.ts.map +1 -0
  43. package/lib/agent/interactive/settings.js +25 -0
  44. package/lib/agent/interactive/settings.js.map +1 -0
  45. package/lib/commands/agent-command.d.ts +1 -1
  46. package/lib/commands/agent-command.d.ts.map +1 -1
  47. package/lib/commands/agent-command.js +1 -1
  48. package/lib/commands/agent-command.js.map +1 -1
  49. package/lib/docs-compliance/rules.d.ts.map +1 -1
  50. package/lib/docs-compliance/rules.js +0 -68
  51. package/lib/docs-compliance/rules.js.map +1 -1
  52. package/package.json +2 -1
  53. package/lib/agent/auth-commands.d.ts.map +0 -1
  54. package/lib/agent/auth-commands.js.map +0 -1
  55. package/lib/agent/bkper-ai-provider.d.ts.map +0 -1
  56. package/lib/agent/bkper-ai-provider.js.map +0 -1
  57. package/lib/agent/core-concepts-preload.d.ts.map +0 -1
  58. package/lib/agent/core-concepts-preload.js.map +0 -1
  59. package/lib/agent/image-fallback.d.ts.map +0 -1
  60. package/lib/agent/image-fallback.js.map +0 -1
  61. package/lib/agent/run-agent-mode.d.ts +0 -110
  62. package/lib/agent/run-agent-mode.d.ts.map +0 -1
  63. package/lib/agent/run-agent-mode.js +0 -556
  64. package/lib/agent/run-agent-mode.js.map +0 -1
  65. /package/lib/agent/{bkper-ai-provider.d.ts → extensions/bkper-ai-provider.d.ts} +0 -0
  66. /package/lib/agent/{bkper-ai-provider.js → extensions/bkper-ai-provider.js} +0 -0
  67. /package/lib/agent/{core-concepts-preload.d.ts → extensions/core-concepts-preload.d.ts} +0 -0
  68. /package/lib/agent/{image-fallback.d.ts → extensions/image-fallback.d.ts} +0 -0
  69. /package/lib/agent/{image-fallback.js → extensions/image-fallback.js} +0 -0
package/README.md CHANGED
@@ -200,6 +200,10 @@ bkper agent --help
200
200
 
201
201
  When the selected model cannot read images, the agent briefly uses Bkper's default model to transcribe attached or opened images, then continues with the selected model; a status message is shown while this happens.
202
202
 
203
+ Use `/handoff <goal>` to continue long-running work in a new focused session. If you omit the goal, the agent opens an empty goal editor. The new session is linked to the original, with the relevant context drafted in the input editor for you to adjust or submit.
204
+
205
+ Auto-handoff is enabled by default and offers a handoff shortly before context compaction. Auto-handoff and Auto-compact are independent and can each be turned on or off from `/settings`.
206
+
203
207
  ---
204
208
 
205
209
  ## Data Management
@@ -1,5 +1,5 @@
1
1
  import { type ExtensionAPI, type ProviderConfig } from '@earendil-works/pi-coding-agent';
2
- import { type BkperAuthenticationResult, type BkperLogoutResult, type OAuthInteractionOptions } from '../auth/local-auth-service.js';
2
+ import { type BkperAuthenticationResult, type BkperLogoutResult, type OAuthInteractionOptions } from '../../auth/local-auth-service.js';
3
3
  import { type BkperAiThinkingLevel } from './bkper-ai-provider.js';
4
4
  export declare const BKPER_AGENT_LOGIN_COMMAND = "bkper-agent-login";
5
5
  export declare const BKPER_AGENT_LOGOUT_COMMAND = "bkper-agent-logout";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-commands.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/auth-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,YAAY,EAEjB,KAAK,cAAc,EACtB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAIH,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAKH,KAAK,oBAAoB,EAC5B,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D,eAAO,MAAM,8BAA8B,2BAA2B,CAAC;AAEvE,UAAU,iBAAiB;IACvB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,UAAU,gBAAgB;IACtB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAChE;AAED,UAAU,SAAS;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD;AAkBD,wBAAgB,8BAA8B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,gBAAgB,GAChC,IAAI,CAqEN;AAED,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EAAE,EACzB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAC7C,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,SAAS,EAC5D,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,EAAE,OAAO,EACtB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,MAAM,GAAG,SAAS,CAWpB;AAED,MAAM,WAAW,4BAA4B;IACzC,iBAAiB,CACb,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtC,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1C,eAAe,IAAI,OAAO,CAAC;IAC3B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACtC,eAAe,IAAI,OAAO,CAAC,SAAS;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAoWD,wBAAgB,+BAA+B,CAC3C,EAAE,EAAE,YAAY,EAChB,YAAY,GAAE,4BAA6D,EAC3E,iBAAiB,CAAC,EAAE,yBAAyB,GAC9C,IAAI,CAgBN"}
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { spawn } from 'node:child_process';
11
11
  import { LoginDialogComponent, } from '@earendil-works/pi-coding-agent';
12
- import { authenticateBkper, isLoggedIn, logoutBkper, } from '../auth/local-auth-service.js';
12
+ import { authenticateBkper, isLoggedIn, logoutBkper, } from '../../auth/local-auth-service.js';
13
13
  import { BKPER_AI_PROVIDER_ID, findDefaultBkperAiModel, getBkperAiDefaultThinkingLevel, getBkperAiProviderConfig, } from './bkper-ai-provider.js';
14
14
  export const BKPER_AGENT_LOGIN_COMMAND = 'bkper-agent-login';
15
15
  export const BKPER_AGENT_LOGOUT_COMMAND = 'bkper-agent-logout';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-commands.js","sourceRoot":"","sources":["../../../src/agent/extensions/auth-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bkper-ai-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EAEjB,MAAM,iCAAiC,CAAC;AAEzC,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAItE,QAAA,MAAM,eAAe,sEAAuE,CAAC;AAE7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD;AAmCD,wBAAgB,yBAAyB,CACrC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,MAAM,GAAG,SAAS,CA0BpB;AA0FD,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,oBAAoB,EACvE,MAAM,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,oBAAoB,GAAG,SAAS,GACxC,oBAAoB,GAAG,SAAS,CAIlC;AAED,wBAAgB,wBAAwB,CACpC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,OAAO,GAAE,OAAO,KAAa,GAC9B,cAAc,CAgBhB;AAED,wBAAgB,uBAAuB,CACnC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,IAAI,CAEN"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bkper-ai-provider.js","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":";;;;;;;;;AAMA,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAEtE,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AACtD,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AAC/D,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AAoC7F,SAAS,0BAA0B;IAC/B,OAAO,IAAI,KAAK,CACZ,GAAG,yBAAyB,4CAA4C;QACpE,sEAAsE,CAC7E,CAAC;AACN,CAAC;AAED,MAAM,UAAU,yBAAyB,CACrC,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,iBAAiB,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzD,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACD,GAAG,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAAC,WAAM,CAAC;QACL,MAAM,0BAA0B,EAAE,CAAC;IACvC,CAAC;IAED,IACI,iBAAiB,CAAC,IAAI,EAAE,KAAK,iBAAiB;QAC9C,GAAG,CAAC,MAAM,KAAK,2BAA2B;QAC1C,GAAG,CAAC,QAAQ,KAAK,EAAE;QACnB,GAAG,CAAC,QAAQ,KAAK,EAAE;QACnB,GAAG,CAAC,MAAM,KAAK,EAAE;QACjB,GAAG,CAAC,IAAI,KAAK,EAAE,EACjB,CAAC;QACC,MAAM,0BAA0B,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAC9C,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA0B;IACvD,IAAI,eAAe,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC,sBAAsB,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB,CACxB,MAAgB;IAEhB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3F,OAAO;QACH,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QAC5C,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC5B,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;QACpB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;QACxB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;KACvB,CAAC;AACN,CAAC;AAED,SAAS,8BAA8B,CAAC,KAAa;IACjD,OAAO,KAAK,GAAG,IAAK,CAAC;AACzB,CAAC;AAED,SAAS,eAAe,CACpB,KAA0B,EAC1B,cAAkC;;IAElC,MAAM,KAAK,GAAG,MAAA,MAAA,KAAK,CAAC,gBAAgB,0CAAE,MAAM,CACxC,CAAC,QAAQ,EAAgC,EAAE,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,CAC1F,mCAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvB,OAAO;QACH,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,MAAA,KAAK,CAAC,YAAY,mCAAI,KAAK,CAAC,EAAE;QACpC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC;QAChE,gBAAgB,EAAE,mBAAmB,CAAC,KAAK,CAAC,eAAe,CAAC;QAC5D,KAAK;QACL,IAAI,EAAE;YACF,KAAK,EAAE,8BAA8B,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACzE,MAAM,EAAE,8BAA8B,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;YAC3E,SAAS,EAAE,8BAA8B,CACrC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAC3C;YACD,UAAU,EAAE,8BAA8B,CACtC,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAC1C;SACJ;QACD,aAAa,EAAE,KAAK,CAAC,cAAc;QACnC,SAAS,EAAE,KAAK,CAAC,iBAAiB;QAClC,MAAM,EAAE;YACJ,qBAAqB,EAAE,KAAK;YAC5B,qBAAqB,EAAE,QAAQ;YAC/B,0BAA0B,EAAE,KAAK;SACpC;QACD,YAAY,EAAE,KAAK,CAAC,EAAE,KAAK,cAAc;QACzC,yBAAyB,EAAE,uBAAuB,CAAC,KAAK,CAAC;KAC5D,CAAC;AACN,CAAC;AAED,SAAe,kBAAkB,CAC7B,OAAe,EACf,OAAqB,EACrB,MAAoB;;;QAEpB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,OAAO,SAAS,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,cAAc,GAAG,MAAA,OAAO,CAAC,aAAa,mCAAI,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,EAAE,CAAC;QACpE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7E,CAAC;CAAA;AAED,MAAM,UAAU,uBAAuB,CACnC,MAAyB;;IAEzB,OAAO,CACH,MAAA,MAAM,CAAC,IAAI,CACP,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,oBAAoB,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAClF,mCAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,oBAAoB,CAAC,CACrE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC1C,KAAuC;IAEvC,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,MAAK,oBAAoB;QAC3C,CAAC,CAAC,KAAK,CAAC,yBAAyB;QACjC,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,MAA0C,OAAO,CAAC,GAAG,EACrD,UAAwB,KAAK;;IAE7B,MAAM,OAAO,GAAG,MAAA,yBAAyB,CAAC,GAAG,CAAC,mCAAI,4BAA4B,CAAC;IAE/E,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,MAAM,EAAE,mBAAmB;QAC3B,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE;YACL,iBAAiB,EAAE,WAAW;YAC9B,YAAY,EAAE,WAAW;SAC5B;QACD,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;KAC5E,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,EAA0C,EAC1C,MAA0C,OAAO,CAAC,GAAG;IAErD,EAAE,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ExtensionAPI, type LoadExtensionsResult } from '@earendil-works/pi-coding-agent';
2
+ import { runStartupMaintenance } from '../startup-maintenance.js';
3
+ import { type ProviderCredentialManager } from './auth-commands.js';
4
+ type ExtensionLoadError = {
5
+ path: string;
6
+ error: string;
7
+ };
8
+ type BuiltinsSettings = {
9
+ getQuietStartup(): boolean;
10
+ getCompactionReserveTokens(): number;
11
+ };
12
+ export declare const BKPER_AGENT_BUILTINS_EXTENSION_NAME = "Bkper Agent built-ins";
13
+ export declare const BKPER_AGENT_BUILTINS_EXTENSION_PATH = "<inline:bkper-agent-builtins>";
14
+ export declare function isBkperAgentVerboseDiagnosticsEnabled(env?: Record<string, string | undefined>): boolean;
15
+ export declare function normalizeBkperAgentExtensionErrors(errors: ExtensionLoadError[], options: {
16
+ verbose: boolean;
17
+ }): ExtensionLoadError[];
18
+ export declare function normalizeBkperAgentExtensions(base: LoadExtensionsResult, options: {
19
+ verbose: boolean;
20
+ }): LoadExtensionsResult;
21
+ export declare function registerBkperAgentBuiltins(pi: ExtensionAPI, startupMaintenance?: typeof runStartupMaintenance, settingsManager?: BuiltinsSettings, env?: Record<string, string | undefined>, credentialManager?: ProviderCredentialManager): void;
22
+ export {};
23
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAEH,KAAK,yBAAyB,EACjC,MAAM,oBAAoB,CAAC;AAc5B,KAAK,kBAAkB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,eAAe,IAAI,OAAO,CAAC;IAC3B,0BAA0B,IAAI,MAAM,CAAC;CACxC,CAAC;AAKF,eAAO,MAAM,mCAAmC,0BAA0B,CAAC;AAC3E,eAAO,MAAM,mCAAmC,kCAAkC,CAAC;AAGnF,wBAAgB,qCAAqC,CACjD,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,OAAO,CAET;AAuBD,wBAAgB,kCAAkC,CAC9C,MAAM,EAAE,kBAAkB,EAAE,EAC5B,OAAO,EAAE;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,GAC5B,kBAAkB,EAAE,CAatB;AAED,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,GAC5B,oBAAoB,CAMtB;AAED,wBAAgB,0BAA0B,CACtC,EAAE,EAAE,YAAY,EAChB,kBAAkB,GAAE,OAAO,qBAA6C,EACxE,eAAe,CAAC,EAAE,gBAAgB,EAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,iBAAiB,CAAC,EAAE,yBAAyB,GAC9C,IAAI,CAkBN"}
@@ -0,0 +1,52 @@
1
+ import { getAgentDir, } from '@earendil-works/pi-coding-agent';
2
+ import { runStartupMaintenance } from '../startup-maintenance.js';
3
+ import { registerBkperAgentAuthExtension, } from './auth-commands.js';
4
+ import { getBkperAiBaseUrlOverride, registerBkperAiProvider, } from './bkper-ai-provider.js';
5
+ import { registerBkperCoreConceptsPreloadExtension } from './core-concepts-preload.js';
6
+ import { FileAutoHandoffSettings, getAutoHandoffSettingsPath, registerBkperHandoffExtension, } from './handoff.js';
7
+ import { registerBkperImageFallbackExtension } from './image-fallback.js';
8
+ import { registerBkperAgentStartupExtension } from './startup.js';
9
+ // Pi currently labels inline extension factories as <inline:N>.
10
+ // Keep Bkper's label synthetic too: Pi resolves plain extension paths as files.
11
+ const INLINE_EXTENSION_PATH_PATTERN = /^<inline:\d+>$/;
12
+ export const BKPER_AGENT_BUILTINS_EXTENSION_NAME = 'Bkper Agent built-ins';
13
+ export const BKPER_AGENT_BUILTINS_EXTENSION_PATH = '<inline:bkper-agent-builtins>';
14
+ const BUILT_IN_BKPER_AGENT_FEATURE_ERROR = `${BKPER_AGENT_BUILTINS_EXTENSION_NAME} failed to start.`;
15
+ export function isBkperAgentVerboseDiagnosticsEnabled(env = process.env) {
16
+ return env.BKPER_AGENT_DEBUG === '1' || env.PI_VERBOSE === '1';
17
+ }
18
+ function isBkperAgentInlineExtensionPath(path) {
19
+ return INLINE_EXTENSION_PATH_PATTERN.test(path);
20
+ }
21
+ function normalizeBkperAgentExtension(extension) {
22
+ if (!isBkperAgentInlineExtensionPath(extension.path)) {
23
+ return extension;
24
+ }
25
+ return Object.assign(Object.assign({}, extension), { path: BKPER_AGENT_BUILTINS_EXTENSION_PATH, resolvedPath: BKPER_AGENT_BUILTINS_EXTENSION_PATH, sourceInfo: Object.assign(Object.assign({}, extension.sourceInfo), { path: BKPER_AGENT_BUILTINS_EXTENSION_PATH, source: 'inline' }) });
26
+ }
27
+ export function normalizeBkperAgentExtensionErrors(errors, options) {
28
+ return errors.map(error => {
29
+ if (!isBkperAgentInlineExtensionPath(error.path)) {
30
+ return error;
31
+ }
32
+ return {
33
+ path: BKPER_AGENT_BUILTINS_EXTENSION_PATH,
34
+ error: options.verbose
35
+ ? `${BUILT_IN_BKPER_AGENT_FEATURE_ERROR}\nDetails: ${error.path} ${error.error}`
36
+ : BUILT_IN_BKPER_AGENT_FEATURE_ERROR,
37
+ };
38
+ });
39
+ }
40
+ export function normalizeBkperAgentExtensions(base, options) {
41
+ return Object.assign(Object.assign({}, base), { extensions: base.extensions.map(normalizeBkperAgentExtension), errors: normalizeBkperAgentExtensionErrors(base.errors, options) });
42
+ }
43
+ export function registerBkperAgentBuiltins(pi, startupMaintenance = runStartupMaintenance, settingsManager, env = process.env, credentialManager) {
44
+ const bkperAiBaseUrlOverride = getBkperAiBaseUrlOverride(env);
45
+ registerBkperCoreConceptsPreloadExtension(pi);
46
+ registerBkperAgentStartupExtension(pi, startupMaintenance, settingsManager, bkperAiBaseUrlOverride);
47
+ registerBkperAgentAuthExtension(pi, undefined, credentialManager);
48
+ registerBkperAiProvider(pi, env);
49
+ registerBkperImageFallbackExtension(pi);
50
+ registerBkperHandoffExtension(pi, new FileAutoHandoffSettings(getAutoHandoffSettingsPath(getAgentDir())), () => { var _a; return (_a = settingsManager === null || settingsManager === void 0 ? void 0 : settingsManager.getCompactionReserveTokens()) !== null && _a !== void 0 ? _a : 16384; });
51
+ }
52
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../src/agent/extensions/builtins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-concepts-preload.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAUpE,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACrB,MAAM,CAaR;AAgBD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,uCAAuC,IAAI,6BAA6B,CAMvF;AAED,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,wBAAwB,GAChC,wBAAwB,CAoB1B;AAED,wBAAgB,gCAAgC,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAEjF;AAeD,wBAAgB,yCAAyC,CACrD,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAC5B,UAAU,GAAE,6BAAyE,GACtF,IAAI,CAkBN"}
@@ -7,8 +7,8 @@ const AUTOMATION_PATTERN = /\b(bot|bots|app|apps|automation|automations)\b/i;
7
7
  const SEMANTIC_PATTERN = /\b(bkper|book|books|account|accounts|group|groups|transaction|transactions|balance|balances|incoming|outgoing|asset|assets|liability|liabilities|receivable|receivables|payable|payables|statement|statements|ledger|flow|flows|movement|movements|collection|collections|tax)\b/i;
8
8
  export function resolveBkperDocPathFromModuleDir(moduleDir, relativePath) {
9
9
  const candidates = [
10
- path.resolve(moduleDir, '..', 'docs', relativePath),
11
- path.resolve(moduleDir, '..', '..', 'skill', 'references', relativePath),
10
+ path.resolve(moduleDir, '..', '..', 'docs', relativePath),
11
+ path.resolve(moduleDir, '..', '..', '..', 'skill', 'references', relativePath),
12
12
  ];
13
13
  for (const candidate of candidates) {
14
14
  if (existsSync(candidate)) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-concepts-preload.js","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { type ExtensionAPI, type ExtensionContext } from '@earendil-works/pi-coding-agent';
2
+ import { type KeyId, type SettingItem } from '@earendil-works/pi-tui';
3
+ export declare const AUTO_HANDOFF_LEAD_TOKENS = 8192;
4
+ export interface AutoHandoffSettings {
5
+ isEnabled(): boolean;
6
+ setEnabled(enabled: boolean): void;
7
+ }
8
+ export interface HandoffGenerationRequest {
9
+ conversation: string;
10
+ goal?: string;
11
+ }
12
+ export interface HandoffDependencies {
13
+ generatePrompt(request: HandoffGenerationRequest, context: ExtensionContext): Promise<string>;
14
+ }
15
+ export interface MutableSettingsList {
16
+ items: SettingItem[];
17
+ filteredItems: SettingItem[];
18
+ onChange(id: string, newValue: string): void;
19
+ }
20
+ export interface AutoHandoffSettingsHost {
21
+ showSettingsSelector(): void;
22
+ editorContainer: {
23
+ children: unknown[];
24
+ };
25
+ }
26
+ type KeybindingsConfigValue = string | string[] | undefined;
27
+ type KeybindingsConfig = Record<string, KeybindingsConfigValue>;
28
+ export interface BkperHandoffShortcutHost {
29
+ defaultEditor: {
30
+ onExtensionShortcut?: (data: string) => boolean;
31
+ };
32
+ keybindings: {
33
+ getResolvedBindings(): KeybindingsConfig;
34
+ };
35
+ session: {
36
+ prompt(text: string): Promise<void>;
37
+ };
38
+ }
39
+ export declare function getBkperHandoffShortcut(bindings: KeybindingsConfig): KeyId | undefined;
40
+ export declare function installBkperHandoffShortcut(host: BkperHandoffShortcutHost): void;
41
+ export declare function calculateAutoHandoffThreshold(contextWindow: number, reserveTokens: number): number;
42
+ export declare function getHandoffReminderThreshold(lastPromptTokens: number): number;
43
+ export declare function addAutoHandoffSetting(settingsList: MutableSettingsList, settings: AutoHandoffSettings): void;
44
+ export declare function installAutoHandoffSettingsIntegration(host: AutoHandoffSettingsHost, settings: AutoHandoffSettings): void;
45
+ export declare function getAutoHandoffSettingsPath(agentDir: string): string;
46
+ export declare class FileAutoHandoffSettings implements AutoHandoffSettings {
47
+ private readonly filePath;
48
+ constructor(filePath: string);
49
+ isEnabled(): boolean;
50
+ setEnabled(enabled: boolean): void;
51
+ }
52
+ export declare function registerBkperHandoffExtension(pi: Pick<ExtensionAPI, 'on' | 'registerCommand' | 'sendUserMessage'>, settings: AutoHandoffSettings, reserveTokens: () => number, dependencies?: HandoffDependencies): void;
53
+ export {};
54
+ //# sourceMappingURL=handoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/handoff.ts"],"names":[],"mappings":"AAIA,OAAO,EAIH,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAa,KAAK,KAAK,EAAE,KAAK,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAEhF,eAAO,MAAM,wBAAwB,OAAO,CAAC;AA4B7C,MAAM,WAAW,mBAAmB;IAChC,SAAS,IAAI,OAAO,CAAC;IACrB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,cAAc,CACV,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,uBAAuB;IACpC,oBAAoB,IAAI,IAAI,CAAC;IAC7B,eAAe,EAAE;QACb,QAAQ,EAAE,OAAO,EAAE,CAAC;KACvB,CAAC;CACL;AAED,KAAK,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAC5D,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAEhE,MAAM,WAAW,wBAAwB;IACrC,aAAa,EAAE;QACX,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;KACnD,CAAC;IACF,WAAW,EAAE;QACT,mBAAmB,IAAI,iBAAiB,CAAC;KAC5C,CAAC;IACF,OAAO,EAAE;QACL,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACvC,CAAC;CACL;AA+CD,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,iBAAiB,GAC5B,KAAK,GAAG,SAAS,CAInB;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAmBhF;AA+BD,wBAAgB,6BAA6B,CACzC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,MAAM,CAER;AAED,wBAAgB,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAE5E;AAUD,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,mBAAmB,GAC9B,IAAI,CAqBN;AAQD,wBAAgB,qCAAqC,CACjD,IAAI,EAAE,uBAAuB,EAC7B,QAAQ,EAAE,mBAAmB,GAC9B,IAAI,CASN;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,qBAAa,uBAAwB,YAAW,mBAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAE7C,SAAS,IAAI,OAAO;IAIpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAkBrC;AA8JD,wBAAgB,6BAA6B,CACzC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,iBAAiB,GAAG,iBAAiB,CAAC,EACpE,QAAQ,EAAE,mBAAmB,EAC7B,aAAa,EAAE,MAAM,MAAM,EAC3B,YAAY,GAAE,mBAAyC,GACxD,IAAI,CAoEN"}
@@ -0,0 +1,364 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { randomUUID } from 'node:crypto';
11
+ import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
12
+ import path from 'node:path';
13
+ import { BorderedLoader, convertToLlm, serializeConversation, } from '@earendil-works/pi-coding-agent';
14
+ import { matchesKey } from '@earendil-works/pi-tui';
15
+ export const AUTO_HANDOFF_LEAD_TOKENS = 8192;
16
+ const BKPER_HANDOFF_SHORTCUT = 'ctrl+h';
17
+ const AUTO_HANDOFF_SETTING_ID = 'auto-handoff';
18
+ const MAX_SESSION_NAME_LENGTH = 80;
19
+ const HANDOFF_SYSTEM_PROMPT = `You are a context transfer assistant. Given a conversation history and the user's goal for a new thread, generate a focused prompt that:
20
+
21
+ 1. Summarizes only the context relevant to the goal, including decisions, approaches, and key findings.
22
+ 2. Lists relevant files that were discussed, read, or modified.
23
+ 3. Clearly states the next task based on the user's goal.
24
+ 4. Includes important constraints, unresolved questions, and verification status.
25
+ 5. Is self-contained so the new session can proceed without the old conversation.
26
+
27
+ Format the response as a concise prompt for the new session. Do not include a preamble such as "Here's the prompt".
28
+
29
+ Use this structure:
30
+ ## Context
31
+ [Relevant context and decisions]
32
+
33
+ ## Files
34
+ [Relevant files, or "None identified"]
35
+
36
+ ## Task
37
+ [Concrete next task]
38
+
39
+ ## Constraints
40
+ [Important constraints and verification status]`;
41
+ class HandoffCancelledError extends Error {
42
+ }
43
+ function normalizeError(error) {
44
+ return error instanceof Error ? error : new Error(String(error));
45
+ }
46
+ function isRecord(value) {
47
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
48
+ }
49
+ function keybindingConfigIncludesShortcut(configuredBinding, shortcut) {
50
+ const normalizedShortcut = shortcut.toLowerCase();
51
+ const configuredShortcuts = Array.isArray(configuredBinding)
52
+ ? configuredBinding
53
+ : [configuredBinding];
54
+ return configuredShortcuts.some(configuredShortcut => (configuredShortcut === null || configuredShortcut === void 0 ? void 0 : configuredShortcut.toLowerCase()) === normalizedShortcut);
55
+ }
56
+ function isShortcutClaimedByBindings(bindings, shortcut) {
57
+ return Object.values(bindings).some(binding => keybindingConfigIncludesShortcut(binding, shortcut));
58
+ }
59
+ export function getBkperHandoffShortcut(bindings) {
60
+ return isShortcutClaimedByBindings(bindings, BKPER_HANDOFF_SHORTCUT)
61
+ ? undefined
62
+ : BKPER_HANDOFF_SHORTCUT;
63
+ }
64
+ export function installBkperHandoffShortcut(host) {
65
+ const shortcut = getBkperHandoffShortcut(host.keybindings.getResolvedBindings());
66
+ if (!shortcut) {
67
+ return;
68
+ }
69
+ const originalShortcut = host.defaultEditor.onExtensionShortcut;
70
+ host.defaultEditor.onExtensionShortcut = data => {
71
+ if (originalShortcut === null || originalShortcut === void 0 ? void 0 : originalShortcut.call(host.defaultEditor, data)) {
72
+ return true;
73
+ }
74
+ if (!matchesKey(data, shortcut)) {
75
+ return false;
76
+ }
77
+ // Session prompt dispatch executes extension commands immediately, even mid-turn.
78
+ void host.session.prompt('/handoff');
79
+ return true;
80
+ };
81
+ }
82
+ function readStoredSettings(filePath) {
83
+ try {
84
+ const parsed = JSON.parse(readFileSync(filePath, 'utf8'));
85
+ if (!isRecord(parsed)) {
86
+ return {};
87
+ }
88
+ const autoHandoff = parsed.autoHandoff;
89
+ return Object.assign(Object.assign({}, parsed), { autoHandoff: isRecord(autoHandoff)
90
+ ? Object.assign(Object.assign({}, autoHandoff), { enabled: typeof autoHandoff.enabled === 'boolean'
91
+ ? autoHandoff.enabled
92
+ : undefined }) : undefined });
93
+ }
94
+ catch (error) {
95
+ const code = isRecord(error) ? error.code : undefined;
96
+ if (code === 'ENOENT' || error instanceof SyntaxError) {
97
+ return {};
98
+ }
99
+ throw error;
100
+ }
101
+ }
102
+ export function calculateAutoHandoffThreshold(contextWindow, reserveTokens) {
103
+ return Math.max(0, contextWindow - reserveTokens - AUTO_HANDOFF_LEAD_TOKENS);
104
+ }
105
+ export function getHandoffReminderThreshold(lastPromptTokens) {
106
+ return lastPromptTokens + AUTO_HANDOFF_LEAD_TOKENS;
107
+ }
108
+ function insertSetting(items, setting) {
109
+ if (items.some(item => item.id === setting.id)) {
110
+ return;
111
+ }
112
+ const autoCompactIndex = items.findIndex(item => item.id === 'autocompact');
113
+ items.splice(autoCompactIndex >= 0 ? autoCompactIndex : 0, 0, setting);
114
+ }
115
+ export function addAutoHandoffSetting(settingsList, settings) {
116
+ const setting = {
117
+ id: AUTO_HANDOFF_SETTING_ID,
118
+ label: 'Auto-handoff',
119
+ description: 'Offer a focused new session shortly before context compaction',
120
+ currentValue: settings.isEnabled() ? 'true' : 'false',
121
+ values: ['true', 'false'],
122
+ };
123
+ insertSetting(settingsList.items, setting);
124
+ if (settingsList.filteredItems !== settingsList.items) {
125
+ insertSetting(settingsList.filteredItems, setting);
126
+ }
127
+ const originalOnChange = settingsList.onChange.bind(settingsList);
128
+ settingsList.onChange = (id, newValue) => {
129
+ if (id === AUTO_HANDOFF_SETTING_ID) {
130
+ settings.setEnabled(newValue === 'true');
131
+ return;
132
+ }
133
+ originalOnChange(id, newValue);
134
+ };
135
+ }
136
+ function hasSettingsList(value) {
137
+ return isRecord(value) && typeof value.getSettingsList === 'function';
138
+ }
139
+ export function installAutoHandoffSettingsIntegration(host, settings) {
140
+ const showSettingsSelector = host.showSettingsSelector.bind(host);
141
+ host.showSettingsSelector = () => {
142
+ showSettingsSelector();
143
+ const selector = host.editorContainer.children.find(hasSettingsList);
144
+ if (selector) {
145
+ addAutoHandoffSetting(selector.getSettingsList(), settings);
146
+ }
147
+ };
148
+ }
149
+ export function getAutoHandoffSettingsPath(agentDir) {
150
+ return path.join(agentDir, 'bkper-settings.json');
151
+ }
152
+ export class FileAutoHandoffSettings {
153
+ constructor(filePath) {
154
+ this.filePath = filePath;
155
+ }
156
+ isEnabled() {
157
+ var _a, _b;
158
+ return (_b = (_a = readStoredSettings(this.filePath).autoHandoff) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : true;
159
+ }
160
+ setEnabled(enabled) {
161
+ const current = readStoredSettings(this.filePath);
162
+ const next = Object.assign(Object.assign({}, current), { autoHandoff: Object.assign(Object.assign({}, current.autoHandoff), { enabled }) });
163
+ mkdirSync(path.dirname(this.filePath), { recursive: true });
164
+ const temporaryPath = `${this.filePath}.${process.pid}.${randomUUID()}.tmp`;
165
+ try {
166
+ writeFileSync(temporaryPath, `${JSON.stringify(next, null, 2)}\n`, 'utf8');
167
+ renameSync(temporaryPath, this.filePath);
168
+ }
169
+ finally {
170
+ rmSync(temporaryPath, { force: true });
171
+ }
172
+ }
173
+ }
174
+ function entryToMessage(entry) {
175
+ if (entry.type === 'message') {
176
+ return entry.message;
177
+ }
178
+ if (entry.type === 'compaction') {
179
+ return {
180
+ role: 'compactionSummary',
181
+ summary: entry.summary,
182
+ tokensBefore: entry.tokensBefore,
183
+ timestamp: new Date(entry.timestamp).getTime(),
184
+ };
185
+ }
186
+ return undefined;
187
+ }
188
+ function contextMessages(context) {
189
+ return context.sessionManager
190
+ .buildContextEntries()
191
+ .map(entryToMessage)
192
+ .filter(message => message !== undefined);
193
+ }
194
+ function serializeCurrentConversation(context) {
195
+ return serializeConversation(convertToLlm(contextMessages(context)));
196
+ }
197
+ function generateWithCurrentModel(context, systemPrompt, prompt, loadingMessage) {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ if (!context.model) {
200
+ throw new Error('No model selected.');
201
+ }
202
+ const outcome = yield context.ui.custom((tui, theme, _keybindings, done) => {
203
+ const loader = new BorderedLoader(tui, theme, loadingMessage);
204
+ loader.onAbort = () => done({ status: 'cancelled' });
205
+ void context.modelRegistry
206
+ .complete(context.model, {
207
+ systemPrompt,
208
+ messages: [
209
+ {
210
+ role: 'user',
211
+ content: [{ type: 'text', text: prompt }],
212
+ timestamp: Date.now(),
213
+ },
214
+ ],
215
+ }, {
216
+ signal: loader.signal,
217
+ cacheRetention: 'none',
218
+ sessionId: randomUUID(),
219
+ })
220
+ .then(response => {
221
+ var _a;
222
+ if (response.stopReason === 'aborted') {
223
+ done({ status: 'cancelled' });
224
+ return;
225
+ }
226
+ if (response.stopReason === 'error') {
227
+ done({
228
+ status: 'failed',
229
+ error: new Error((_a = response.errorMessage) !== null && _a !== void 0 ? _a : 'Handoff generation failed.'),
230
+ });
231
+ return;
232
+ }
233
+ const text = response.content
234
+ .filter((content) => content.type === 'text')
235
+ .map(content => content.text)
236
+ .join('\n')
237
+ .trim();
238
+ if (!text) {
239
+ done({ status: 'failed', error: new Error('Handoff generation was empty.') });
240
+ return;
241
+ }
242
+ done({ status: 'completed', text });
243
+ })
244
+ .catch(error => done({ status: 'failed', error: normalizeError(error) }));
245
+ return loader;
246
+ });
247
+ if (outcome.status === 'cancelled') {
248
+ throw new HandoffCancelledError('Handoff cancelled.');
249
+ }
250
+ if (outcome.status === 'failed') {
251
+ throw outcome.error;
252
+ }
253
+ return outcome.text;
254
+ });
255
+ }
256
+ const defaultDependencies = {
257
+ generatePrompt: (request, context) => {
258
+ var _a;
259
+ return generateWithCurrentModel(context, HANDOFF_SYSTEM_PROMPT, `## Conversation History\n\n${request.conversation}\n\n## Goal for New Session\n\n${(_a = request.goal) !== null && _a !== void 0 ? _a : ''}`, 'Preparing handoff...');
260
+ },
261
+ };
262
+ function sessionNameFromGoal(goal) {
263
+ const normalized = goal.replace(/\s+/g, ' ').trim();
264
+ if (normalized.length <= MAX_SESSION_NAME_LENGTH) {
265
+ return normalized;
266
+ }
267
+ return `${normalized.slice(0, MAX_SESSION_NAME_LENGTH - 1).trimEnd()}…`;
268
+ }
269
+ function performHandoff(goal, context, dependencies) {
270
+ return __awaiter(this, void 0, void 0, function* () {
271
+ const conversation = serializeCurrentConversation(context);
272
+ if (!conversation) {
273
+ context.ui.notify('No conversation to hand off.', 'warning');
274
+ return;
275
+ }
276
+ let prompt;
277
+ try {
278
+ prompt = yield dependencies.generatePrompt({ conversation, goal }, context);
279
+ }
280
+ catch (error) {
281
+ if (error instanceof HandoffCancelledError) {
282
+ context.ui.notify('Handoff cancelled.', 'info');
283
+ return;
284
+ }
285
+ context.ui.notify(`Handoff failed: ${normalizeError(error).message}`, 'error');
286
+ return;
287
+ }
288
+ const parentSession = context.sessionManager.getSessionFile();
289
+ const result = yield context.newSession({
290
+ parentSession,
291
+ setup: (sessionManager) => __awaiter(this, void 0, void 0, function* () {
292
+ sessionManager.appendSessionInfo(sessionNameFromGoal(goal));
293
+ }),
294
+ withSession: (replacementContext) => __awaiter(this, void 0, void 0, function* () {
295
+ replacementContext.ui.setEditorText(prompt);
296
+ replacementContext.ui.notify('Handoff ready. Submit when ready.', 'info');
297
+ }),
298
+ });
299
+ if (result.cancelled) {
300
+ context.ui.notify('Handoff cancelled.', 'info');
301
+ }
302
+ });
303
+ }
304
+ export function registerBkperHandoffExtension(pi, settings, reserveTokens, dependencies = defaultDependencies) {
305
+ let lastPromptTokens;
306
+ let pendingConfirmedGoal;
307
+ const resetAutomaticState = () => {
308
+ lastPromptTokens = undefined;
309
+ pendingConfirmedGoal = undefined;
310
+ };
311
+ pi.on('session_start', resetAutomaticState);
312
+ pi.on('session_compact', resetAutomaticState);
313
+ pi.registerCommand('handoff', {
314
+ description: 'Continue the current work in a focused new session',
315
+ handler: (args, context) => __awaiter(this, void 0, void 0, function* () {
316
+ if (context.mode !== 'tui') {
317
+ context.ui.notify('Handoff requires interactive mode.', 'error');
318
+ return;
319
+ }
320
+ if (!context.model) {
321
+ context.ui.notify('No model selected.', 'error');
322
+ return;
323
+ }
324
+ let goal = args.trim();
325
+ if (!goal && pendingConfirmedGoal) {
326
+ goal = pendingConfirmedGoal;
327
+ pendingConfirmedGoal = undefined;
328
+ }
329
+ if (!goal) {
330
+ const editedGoal = yield context.ui.editor('Handoff goal', '');
331
+ if (editedGoal === undefined || !editedGoal.trim()) {
332
+ context.ui.notify('Handoff cancelled.', 'info');
333
+ return;
334
+ }
335
+ goal = editedGoal.trim();
336
+ }
337
+ yield context.waitForIdle();
338
+ yield performHandoff(goal, context, dependencies);
339
+ }),
340
+ });
341
+ pi.on('agent_settled', (_event, context) => __awaiter(this, void 0, void 0, function* () {
342
+ if (context.mode !== 'tui' || !settings.isEnabled() || !context.model) {
343
+ return;
344
+ }
345
+ const usage = context.getContextUsage();
346
+ if (!usage || usage.tokens === null) {
347
+ return;
348
+ }
349
+ const threshold = lastPromptTokens === undefined
350
+ ? calculateAutoHandoffThreshold(usage.contextWindow, reserveTokens())
351
+ : getHandoffReminderThreshold(lastPromptTokens);
352
+ if (usage.tokens < threshold) {
353
+ return;
354
+ }
355
+ lastPromptTokens = usage.tokens;
356
+ const goal = yield context.ui.editor('Handoff goal', '');
357
+ if (goal === undefined || !goal.trim()) {
358
+ return;
359
+ }
360
+ pendingConfirmedGoal = goal.trim();
361
+ pi.sendUserMessage('/handoff');
362
+ }));
363
+ }
364
+ //# sourceMappingURL=handoff.js.map