@caupulican/pi-adaptative 0.76.2 → 0.77.0

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 (95) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +9 -0
  3. package/dist/cli/args.d.ts +2 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +23 -0
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/core/agent-session-services.d.ts +1 -0
  8. package/dist/core/agent-session-services.d.ts.map +1 -1
  9. package/dist/core/agent-session-services.js +1 -0
  10. package/dist/core/agent-session-services.js.map +1 -1
  11. package/dist/core/agent-session.d.ts +4 -1
  12. package/dist/core/agent-session.d.ts.map +1 -1
  13. package/dist/core/agent-session.js +23 -4
  14. package/dist/core/agent-session.js.map +1 -1
  15. package/dist/core/extensions/runner.d.ts +1 -1
  16. package/dist/core/extensions/runner.d.ts.map +1 -1
  17. package/dist/core/extensions/runner.js +8 -2
  18. package/dist/core/extensions/runner.js.map +1 -1
  19. package/dist/core/extensions/types.d.ts +7 -5
  20. package/dist/core/extensions/types.d.ts.map +1 -1
  21. package/dist/core/extensions/types.js.map +1 -1
  22. package/dist/core/model-registry.d.ts.map +1 -1
  23. package/dist/core/model-registry.js +65 -13
  24. package/dist/core/model-registry.js.map +1 -1
  25. package/dist/core/model-resolver.d.ts.map +1 -1
  26. package/dist/core/model-resolver.js +1 -1
  27. package/dist/core/model-resolver.js.map +1 -1
  28. package/dist/core/resolve-config-value.d.ts +9 -1
  29. package/dist/core/resolve-config-value.d.ts.map +1 -1
  30. package/dist/core/resolve-config-value.js +134 -11
  31. package/dist/core/resolve-config-value.js.map +1 -1
  32. package/dist/core/sdk.d.ts +2 -0
  33. package/dist/core/sdk.d.ts.map +1 -1
  34. package/dist/core/sdk.js +4 -5
  35. package/dist/core/sdk.js.map +1 -1
  36. package/dist/core/session-manager.d.ts +3 -5
  37. package/dist/core/session-manager.d.ts.map +1 -1
  38. package/dist/core/session-manager.js +42 -17
  39. package/dist/core/session-manager.js.map +1 -1
  40. package/dist/core/system-prompt.d.ts.map +1 -1
  41. package/dist/core/system-prompt.js +0 -3
  42. package/dist/core/system-prompt.js.map +1 -1
  43. package/dist/index.d.ts +1 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/main.d.ts.map +1 -1
  48. package/dist/main.js +15 -2
  49. package/dist/main.js.map +1 -1
  50. package/dist/migrations.d.ts.map +1 -1
  51. package/dist/migrations.js +118 -1
  52. package/dist/migrations.js.map +1 -1
  53. package/dist/modes/interactive/components/login-dialog.d.ts +1 -3
  54. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  55. package/dist/modes/interactive/components/login-dialog.js +2 -4
  56. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  57. package/dist/modes/interactive/interactive-mode.d.ts +2 -0
  58. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  59. package/dist/modes/interactive/interactive-mode.js +51 -6
  60. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  61. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  62. package/dist/modes/interactive/theme/theme.js +10 -0
  63. package/dist/modes/interactive/theme/theme.js.map +1 -1
  64. package/dist/utils/deprecation.d.ts +4 -0
  65. package/dist/utils/deprecation.d.ts.map +1 -0
  66. package/dist/utils/deprecation.js +13 -0
  67. package/dist/utils/deprecation.js.map +1 -0
  68. package/dist/utils/json.d.ts +3 -0
  69. package/dist/utils/json.d.ts.map +1 -0
  70. package/dist/utils/json.js +7 -0
  71. package/dist/utils/json.js.map +1 -0
  72. package/docs/custom-provider.md +13 -10
  73. package/docs/extensions.md +12 -6
  74. package/docs/models.md +25 -12
  75. package/docs/providers.md +13 -5
  76. package/docs/quickstart.md +1 -0
  77. package/docs/rpc.md +2 -1
  78. package/docs/sdk.md +6 -0
  79. package/docs/session-format.md +1 -1
  80. package/docs/sessions.md +8 -0
  81. package/docs/usage.md +9 -0
  82. package/examples/extensions/README.md +1 -0
  83. package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
  84. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  85. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  86. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  87. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  88. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  89. package/examples/extensions/input-transform-streaming.ts +39 -0
  90. package/examples/extensions/sandbox/package-lock.json +2 -2
  91. package/examples/extensions/sandbox/package.json +1 -1
  92. package/examples/extensions/with-deps/package-lock.json +2 -2
  93. package/examples/extensions/with-deps/package.json +1 -1
  94. package/npm-shrinkwrap.json +56 -56
  95. package/package.json +5 -5
@@ -95,6 +95,7 @@ export class AgentSession {
95
95
  _extensionRunnerRef;
96
96
  _initialActiveToolNames;
97
97
  _allowedToolNames;
98
+ _excludedToolNames;
98
99
  _baseToolsOverride;
99
100
  _sessionStartEvent;
100
101
  _extensionUIContext;
@@ -125,6 +126,7 @@ export class AgentSession {
125
126
  this._extensionRunnerRef = config.extensionRunnerRef;
126
127
  this._initialActiveToolNames = config.initialActiveToolNames;
127
128
  this._allowedToolNames = config.allowedToolNames ? new Set(config.allowedToolNames) : undefined;
129
+ this._excludedToolNames = config.excludedToolNames ? new Set(config.excludedToolNames) : undefined;
128
130
  this._baseToolsOverride = config.baseToolsOverride;
129
131
  this._sessionStartEvent = config.sessionStartEvent ?? { type: "session_start", reason: "startup" };
130
132
  // Always subscribe to agent events for internal handling
@@ -540,6 +542,16 @@ export class AgentSession {
540
542
  * Call this when completely done with the session.
541
543
  */
542
544
  dispose() {
545
+ try {
546
+ this.abortRetry();
547
+ this.abortCompaction();
548
+ this.abortBranchSummary();
549
+ this.abortBash();
550
+ this.agent.abort();
551
+ }
552
+ catch {
553
+ // Dispose must succeed even if an abort hook throws.
554
+ }
543
555
  this._extensionRunner.invalidate("This extension ctx is stale after session replacement or reload. Do not use a captured pi or command ctx after ctx.newSession(), ctx.fork(), ctx.switchSession(), or ctx.reload(). For newSession, fork, and switchSession, move post-replacement work into withSession and use the ctx passed to withSession. For reload, do not use the old ctx after await ctx.reload().");
544
556
  this._disconnectFromAgent();
545
557
  this._eventListeners = [];
@@ -580,13 +592,14 @@ export class AgentSession {
580
592
  return this.agent.state.tools.map((t) => t.name);
581
593
  }
582
594
  /**
583
- * Get all configured tools with name, description, parameter schema, and source metadata.
595
+ * Get all configured tools with name, description, parameter schema, prompt guidelines, and source metadata.
584
596
  */
585
597
  getAllTools() {
586
598
  return Array.from(this._toolDefinitions.values()).map(({ definition, sourceInfo }) => ({
587
599
  name: definition.name,
588
600
  description: definition.description,
589
601
  parameters: definition.parameters,
602
+ promptGuidelines: definition.promptGuidelines,
590
603
  sourceInfo,
591
604
  }));
592
605
  }
@@ -742,7 +755,12 @@ export class AgentSession {
742
755
  });
743
756
  this._retryAttempt = 0;
744
757
  }
745
- return await this._checkCompaction(msg);
758
+ if (await this._checkCompaction(msg)) {
759
+ return true;
760
+ }
761
+ // The agent loop drains both queues before emitting agent_end. Any messages
762
+ // here were queued by agent_end extension handlers and need a continuation.
763
+ return this.agent.hasQueuedMessages();
746
764
  }
747
765
  /**
748
766
  * Send a prompt to the agent.
@@ -782,7 +800,7 @@ export class AgentSession {
782
800
  let currentText = text;
783
801
  let currentImages = options?.images;
784
802
  if (this._extensionRunner.hasHandlers("input")) {
785
- const inputResult = await this._extensionRunner.emitInput(currentText, currentImages, options?.source ?? "interactive");
803
+ const inputResult = await this._extensionRunner.emitInput(currentText, currentImages, options?.source ?? "interactive", this.isStreaming ? options?.streamingBehavior : undefined);
786
804
  if (inputResult.action === "handled") {
787
805
  preflightResult?.(true);
788
806
  return;
@@ -1924,7 +1942,8 @@ export class AgentSession {
1924
1942
  const previousRegistryNames = new Set(this._toolRegistry.keys());
1925
1943
  const previousActiveToolNames = this.getActiveToolNames();
1926
1944
  const allowedToolNames = this._allowedToolNames;
1927
- const isAllowedTool = (name) => !allowedToolNames || allowedToolNames.has(name);
1945
+ const excludedToolNames = this._excludedToolNames;
1946
+ const isAllowedTool = (name) => (!allowedToolNames || allowedToolNames.has(name)) && !excludedToolNames?.has(name);
1928
1947
  const registeredTools = this._extensionRunner.getAllRegisteredTools();
1929
1948
  const allCustomTools = [
1930
1949
  ...registeredTools,