@codex-infinity/pi-infinity 0.61.1 → 0.61.3

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 (103) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +10 -0
  3. package/dist/core/agent-session.d.ts +9 -2
  4. package/dist/core/agent-session.d.ts.map +1 -1
  5. package/dist/core/agent-session.js +36 -23
  6. package/dist/core/agent-session.js.map +1 -1
  7. package/dist/core/export-html/index.d.ts +2 -2
  8. package/dist/core/export-html/index.d.ts.map +1 -1
  9. package/dist/core/export-html/index.js +2 -2
  10. package/dist/core/export-html/index.js.map +1 -1
  11. package/dist/core/export-html/tool-renderer.d.ts +2 -2
  12. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  13. package/dist/core/export-html/tool-renderer.js +41 -16
  14. package/dist/core/export-html/tool-renderer.js.map +1 -1
  15. package/dist/core/extensions/types.d.ts +31 -4
  16. package/dist/core/extensions/types.d.ts.map +1 -1
  17. package/dist/core/extensions/types.js.map +1 -1
  18. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  19. package/dist/core/extensions/wrapper.js +2 -8
  20. package/dist/core/extensions/wrapper.js.map +1 -1
  21. package/dist/core/package-manager.d.ts +2 -0
  22. package/dist/core/package-manager.d.ts.map +1 -1
  23. package/dist/core/package-manager.js +42 -1
  24. package/dist/core/package-manager.js.map +1 -1
  25. package/dist/core/system-prompt.d.ts.map +1 -1
  26. package/dist/core/system-prompt.js +3 -38
  27. package/dist/core/system-prompt.js.map +1 -1
  28. package/dist/core/tools/bash.d.ts +19 -9
  29. package/dist/core/tools/bash.d.ts.map +1 -1
  30. package/dist/core/tools/bash.js +154 -59
  31. package/dist/core/tools/bash.js.map +1 -1
  32. package/dist/core/tools/edit.d.ts +14 -2
  33. package/dist/core/tools/edit.d.ts.map +1 -1
  34. package/dist/core/tools/edit.js +92 -21
  35. package/dist/core/tools/edit.js.map +1 -1
  36. package/dist/core/tools/find.d.ts +11 -4
  37. package/dist/core/tools/find.d.ts.map +1 -1
  38. package/dist/core/tools/find.js +76 -27
  39. package/dist/core/tools/find.js.map +1 -1
  40. package/dist/core/tools/grep.d.ts +15 -4
  41. package/dist/core/tools/grep.d.ts.map +1 -1
  42. package/dist/core/tools/grep.js +83 -29
  43. package/dist/core/tools/grep.js.map +1 -1
  44. package/dist/core/tools/index.d.ts +57 -19
  45. package/dist/core/tools/index.d.ts.map +1 -1
  46. package/dist/core/tools/index.js +50 -26
  47. package/dist/core/tools/index.js.map +1 -1
  48. package/dist/core/tools/ls.d.ts +9 -3
  49. package/dist/core/tools/ls.d.ts.map +1 -1
  50. package/dist/core/tools/ls.js +67 -13
  51. package/dist/core/tools/ls.js.map +1 -1
  52. package/dist/core/tools/read.d.ts +10 -3
  53. package/dist/core/tools/read.d.ts.map +1 -1
  54. package/dist/core/tools/read.js +94 -45
  55. package/dist/core/tools/read.js.map +1 -1
  56. package/dist/core/tools/render-utils.d.ts +21 -0
  57. package/dist/core/tools/render-utils.d.ts.map +1 -0
  58. package/dist/core/tools/render-utils.js +49 -0
  59. package/dist/core/tools/render-utils.js.map +1 -0
  60. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  61. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  62. package/dist/core/tools/tool-definition-wrapper.js +30 -0
  63. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  64. package/dist/core/tools/write.d.ts +9 -3
  65. package/dist/core/tools/write.d.ts.map +1 -1
  66. package/dist/core/tools/write.js +161 -27
  67. package/dist/core/tools/write.js.map +1 -1
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/main.d.ts.map +1 -1
  73. package/dist/main.js +20 -3
  74. package/dist/main.js.map +1 -1
  75. package/dist/modes/interactive/components/tool-execution.d.ts +15 -40
  76. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  77. package/dist/modes/interactive/components/tool-execution.js +120 -670
  78. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  79. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  80. package/dist/modes/interactive/interactive-mode.js +4 -6
  81. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  82. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  83. package/dist/modes/interactive/theme/theme.js +12 -0
  84. package/dist/modes/interactive/theme/theme.js.map +1 -1
  85. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  86. package/dist/modes/rpc/rpc-mode.js +19 -6
  87. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  88. package/docs/extensions.md +41 -26
  89. package/docs/tui.md +2 -2
  90. package/examples/extensions/built-in-tool-renderer.ts +8 -8
  91. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  92. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  93. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  94. package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
  95. package/examples/extensions/minimal-mode.ts +14 -14
  96. package/examples/extensions/question.ts +2 -2
  97. package/examples/extensions/questionnaire.ts +2 -2
  98. package/examples/extensions/subagent/index.ts +23 -3
  99. package/examples/extensions/todo.ts +2 -2
  100. package/examples/extensions/truncated-tool.ts +2 -2
  101. package/examples/extensions/with-deps/package-lock.json +2 -2
  102. package/examples/extensions/with-deps/package.json +1 -1
  103. package/package.json +4 -4
@@ -29,7 +29,8 @@ import { expandPromptTemplate } from "./prompt-templates.js";
29
29
  import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
30
30
  import { BUILTIN_SLASH_COMMANDS } from "./slash-commands.js";
31
31
  import { buildSystemPrompt } from "./system-prompt.js";
32
- import { createAllTools } from "./tools/index.js";
32
+ import { createAllToolDefinitions } from "./tools/index.js";
33
+ import { createToolDefinitionFromAgentTool, wrapToolDefinition } from "./tools/tool-definition-wrapper.js";
33
34
  /**
34
35
  * Parse a skill block from message text.
35
36
  * Returns null if the text doesn't contain a skill block.
@@ -85,9 +86,10 @@ export class AgentSession {
85
86
  // Extension system
86
87
  this._extensionRunner = undefined;
87
88
  this._turnIndex = 0;
88
- this._baseToolRegistry = new Map();
89
+ this._baseToolDefinitions = new Map();
89
90
  // Tool registry for extension getTools/setTools
90
91
  this._toolRegistry = new Map();
92
+ this._toolDefinitions = new Map();
91
93
  this._toolPromptSnippets = new Map();
92
94
  this._toolPromptGuidelines = new Map();
93
95
  // Base system prompt (without extension appends) - used to apply fresh appends each turn
@@ -484,12 +486,15 @@ export class AgentSession {
484
486
  * Get all configured tools with name, description, and parameter schema.
485
487
  */
486
488
  getAllTools() {
487
- return Array.from(this._toolRegistry.values()).map((t) => ({
489
+ return Array.from(this._toolDefinitions.values()).map((t) => ({
488
490
  name: t.name,
489
491
  description: t.description,
490
492
  parameters: t.parameters,
491
493
  }));
492
494
  }
495
+ getToolDefinition(name) {
496
+ return this._toolDefinitions.get(name);
497
+ }
493
498
  /**
494
499
  * Set active tools by name.
495
500
  * Only tools in the registry can be enabled. Unknown tool names are ignored.
@@ -1763,22 +1768,30 @@ export class AgentSession {
1763
1768
  ...registeredTools,
1764
1769
  ...this._customTools.map((def) => ({ definition: def, extensionPath: "<sdk>" })),
1765
1770
  ];
1766
- this._toolPromptSnippets = new Map(allCustomTools
1767
- .map((registeredTool) => {
1768
- const snippet = this._normalizePromptSnippet(registeredTool.definition.promptSnippet);
1769
- return snippet ? [registeredTool.definition.name, snippet] : undefined;
1771
+ const definitionRegistry = new Map(this._baseToolDefinitions);
1772
+ for (const { definition } of allCustomTools) {
1773
+ definitionRegistry.set(definition.name, definition);
1774
+ }
1775
+ this._toolDefinitions = definitionRegistry;
1776
+ this._toolPromptSnippets = new Map(Array.from(definitionRegistry.values())
1777
+ .map((definition) => {
1778
+ const snippet = this._normalizePromptSnippet(definition.promptSnippet);
1779
+ return snippet ? [definition.name, snippet] : undefined;
1770
1780
  })
1771
1781
  .filter((entry) => entry !== undefined));
1772
- this._toolPromptGuidelines = new Map(allCustomTools
1773
- .map((registeredTool) => {
1774
- const guidelines = this._normalizePromptGuidelines(registeredTool.definition.promptGuidelines);
1775
- return guidelines.length > 0 ? [registeredTool.definition.name, guidelines] : undefined;
1782
+ this._toolPromptGuidelines = new Map(Array.from(definitionRegistry.values())
1783
+ .map((definition) => {
1784
+ const guidelines = this._normalizePromptGuidelines(definition.promptGuidelines);
1785
+ return guidelines.length > 0 ? [definition.name, guidelines] : undefined;
1776
1786
  })
1777
1787
  .filter((entry) => entry !== undefined));
1778
1788
  const wrappedExtensionTools = this._extensionRunner
1779
1789
  ? wrapRegisteredTools(allCustomTools, this._extensionRunner)
1780
1790
  : [];
1781
- const toolRegistry = new Map(this._baseToolRegistry);
1791
+ const toolRegistry = new Map(Array.from(this._baseToolDefinitions.values()).map((definition) => [
1792
+ definition.name,
1793
+ wrapToolDefinition(definition),
1794
+ ]));
1782
1795
  for (const tool of wrappedExtensionTools) {
1783
1796
  toolRegistry.set(tool.name, tool);
1784
1797
  }
@@ -1803,13 +1816,16 @@ export class AgentSession {
1803
1816
  _buildRuntime(options) {
1804
1817
  const autoResizeImages = this.settingsManager.getImageAutoResize();
1805
1818
  const shellCommandPrefix = this.settingsManager.getShellCommandPrefix();
1806
- const baseTools = this._baseToolsOverride
1807
- ? this._baseToolsOverride
1808
- : createAllTools(this._cwd, {
1819
+ const baseToolDefinitions = this._baseToolsOverride
1820
+ ? Object.fromEntries(Object.entries(this._baseToolsOverride).map(([name, tool]) => [
1821
+ name,
1822
+ createToolDefinitionFromAgentTool(tool),
1823
+ ]))
1824
+ : createAllToolDefinitions(this._cwd, {
1809
1825
  read: { autoResizeImages },
1810
1826
  bash: { commandPrefix: shellCommandPrefix },
1811
1827
  });
1812
- this._baseToolRegistry = new Map(Object.entries(baseTools).map(([name, tool]) => [name, tool]));
1828
+ this._baseToolDefinitions = new Map(Object.entries(baseToolDefinitions).map(([name, tool]) => [name, tool]));
1813
1829
  const extensionsResult = this._resourceLoader.getExtensions();
1814
1830
  if (options.flagValues) {
1815
1831
  for (const [name, value] of options.flagValues) {
@@ -2526,13 +2542,10 @@ export class AgentSession {
2526
2542
  async exportToHtml(outputPath) {
2527
2543
  const themeName = this.settingsManager.getTheme();
2528
2544
  // Create tool renderer if we have an extension runner (for custom tool HTML rendering)
2529
- let toolRenderer;
2530
- if (this._extensionRunner) {
2531
- toolRenderer = createToolHtmlRenderer({
2532
- getToolDefinition: (name) => this._extensionRunner.getToolDefinition(name),
2533
- theme,
2534
- });
2535
- }
2545
+ const toolRenderer = createToolHtmlRenderer({
2546
+ getToolDefinition: (name) => this.getToolDefinition(name),
2547
+ theme,
2548
+ });
2536
2549
  return await exportSessionToHtml(this.sessionManager, this.state, {
2537
2550
  outputPath,
2538
2551
  themeName,