@codex-infinity/pi-infinity 0.61.3 → 0.62.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.
Files changed (102) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +2 -2
  3. package/dist/cli/file-processor.d.ts.map +1 -1
  4. package/dist/cli/file-processor.js +4 -0
  5. package/dist/cli/file-processor.js.map +1 -1
  6. package/dist/core/agent-session.d.ts +2 -1
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +32 -30
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/export-html/index.d.ts.map +1 -1
  11. package/dist/core/export-html/index.js.map +1 -1
  12. package/dist/core/extensions/index.d.ts +3 -2
  13. package/dist/core/extensions/index.d.ts.map +1 -1
  14. package/dist/core/extensions/index.js.map +1 -1
  15. package/dist/core/extensions/loader.d.ts.map +1 -1
  16. package/dist/core/extensions/loader.js +12 -2
  17. package/dist/core/extensions/loader.js.map +1 -1
  18. package/dist/core/extensions/runner.d.ts +4 -7
  19. package/dist/core/extensions/runner.d.ts.map +1 -1
  20. package/dist/core/extensions/runner.js +27 -38
  21. package/dist/core/extensions/runner.js.map +1 -1
  22. package/dist/core/extensions/types.d.ts +13 -5
  23. package/dist/core/extensions/types.d.ts.map +1 -1
  24. package/dist/core/extensions/types.js.map +1 -1
  25. package/dist/core/index.d.ts +1 -0
  26. package/dist/core/index.d.ts.map +1 -1
  27. package/dist/core/index.js +1 -0
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/output-guard.d.ts +6 -0
  30. package/dist/core/output-guard.d.ts.map +1 -0
  31. package/dist/core/output-guard.js +59 -0
  32. package/dist/core/output-guard.js.map +1 -0
  33. package/dist/core/package-manager.d.ts +1 -0
  34. package/dist/core/package-manager.d.ts.map +1 -1
  35. package/dist/core/package-manager.js +77 -10
  36. package/dist/core/package-manager.js.map +1 -1
  37. package/dist/core/prompt-templates.d.ts +2 -1
  38. package/dist/core/prompt-templates.d.ts.map +1 -1
  39. package/dist/core/prompt-templates.js +30 -32
  40. package/dist/core/prompt-templates.js.map +1 -1
  41. package/dist/core/resource-loader.d.ts +6 -5
  42. package/dist/core/resource-loader.d.ts.map +1 -1
  43. package/dist/core/resource-loader.js +133 -107
  44. package/dist/core/resource-loader.js.map +1 -1
  45. package/dist/core/sdk.d.ts +1 -1
  46. package/dist/core/sdk.d.ts.map +1 -1
  47. package/dist/core/sdk.js.map +1 -1
  48. package/dist/core/skills.d.ts +2 -1
  49. package/dist/core/skills.d.ts.map +1 -1
  50. package/dist/core/skills.js +25 -1
  51. package/dist/core/skills.js.map +1 -1
  52. package/dist/core/slash-commands.d.ts +2 -3
  53. package/dist/core/slash-commands.d.ts.map +1 -1
  54. package/dist/core/slash-commands.js.map +1 -1
  55. package/dist/core/source-info.d.ts +18 -0
  56. package/dist/core/source-info.d.ts.map +1 -0
  57. package/dist/core/source-info.js +19 -0
  58. package/dist/core/source-info.js.map +1 -0
  59. package/dist/core/tools/read.d.ts.map +1 -1
  60. package/dist/core/tools/read.js +18 -8
  61. package/dist/core/tools/read.js.map +1 -1
  62. package/dist/index.d.ts +2 -1
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +1 -0
  65. package/dist/index.js.map +1 -1
  66. package/dist/main.d.ts.map +1 -1
  67. package/dist/main.js +9 -6
  68. package/dist/main.js.map +1 -1
  69. package/dist/modes/interactive/interactive-mode.d.ts +4 -11
  70. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  71. package/dist/modes/interactive/interactive-mode.js +140 -86
  72. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  73. package/dist/modes/interactive/theme/theme.d.ts +3 -0
  74. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  75. package/dist/modes/interactive/theme/theme.js +1 -0
  76. package/dist/modes/interactive/theme/theme.js.map +1 -1
  77. package/dist/modes/print-mode.d.ts.map +1 -1
  78. package/dist/modes/print-mode.js +5 -11
  79. package/dist/modes/print-mode.js.map +1 -1
  80. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  81. package/dist/modes/rpc/rpc-mode.js +8 -14
  82. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  83. package/dist/modes/rpc/rpc-types.d.ts +3 -4
  84. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  85. package/dist/modes/rpc/rpc-types.js.map +1 -1
  86. package/dist/utils/image-resize.d.ts +5 -5
  87. package/dist/utils/image-resize.d.ts.map +1 -1
  88. package/dist/utils/image-resize.js +45 -94
  89. package/dist/utils/image-resize.js.map +1 -1
  90. package/docs/extensions.md +31 -6
  91. package/docs/rpc.md +11 -2
  92. package/examples/extensions/commands.ts +3 -3
  93. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  94. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  95. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  96. package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
  97. package/examples/extensions/with-deps/package-lock.json +2 -2
  98. package/examples/extensions/with-deps/package.json +1 -1
  99. package/examples/sdk/04-skills.ts +8 -2
  100. package/examples/sdk/08-prompt-templates.ts +2 -1
  101. package/examples/sdk/12-full-control.ts +0 -1
  102. package/package.json +4 -4
@@ -27,7 +27,7 @@ import { createToolHtmlRenderer } from "./export-html/tool-renderer.js";
27
27
  import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
28
28
  import { expandPromptTemplate } from "./prompt-templates.js";
29
29
  import { CURRENT_SESSION_VERSION, getLatestCompactionEntry } from "./session-manager.js";
30
- import { BUILTIN_SLASH_COMMANDS } from "./slash-commands.js";
30
+ import { createSyntheticSourceInfo } from "./source-info.js";
31
31
  import { buildSystemPrompt } from "./system-prompt.js";
32
32
  import { createAllToolDefinitions } from "./tools/index.js";
33
33
  import { createToolDefinitionFromAgentTool, wrapToolDefinition } from "./tools/tool-definition-wrapper.js";
@@ -483,17 +483,18 @@ export class AgentSession {
483
483
  return this.agent.state.tools.map((t) => t.name);
484
484
  }
485
485
  /**
486
- * Get all configured tools with name, description, and parameter schema.
486
+ * Get all configured tools with name, description, parameter schema, and source metadata.
487
487
  */
488
488
  getAllTools() {
489
- return Array.from(this._toolDefinitions.values()).map((t) => ({
490
- name: t.name,
491
- description: t.description,
492
- parameters: t.parameters,
489
+ return Array.from(this._toolDefinitions.values()).map(({ definition, sourceInfo }) => ({
490
+ name: definition.name,
491
+ description: definition.description,
492
+ parameters: definition.parameters,
493
+ sourceInfo,
493
494
  }));
494
495
  }
495
496
  getToolDefinition(name) {
496
- return this._toolDefinitions.get(name);
497
+ return this._toolDefinitions.get(name)?.definition;
497
498
  }
498
499
  /**
499
500
  * Set active tools by name.
@@ -1649,36 +1650,24 @@ export class AgentSession {
1649
1650
  this.agent.setModel(refreshedModel);
1650
1651
  }
1651
1652
  _bindExtensionCore(runner) {
1652
- const normalizeLocation = (source) => {
1653
- if (source === "user" || source === "project" || source === "path") {
1654
- return source;
1655
- }
1656
- return undefined;
1657
- };
1658
- const reservedBuiltins = new Set(BUILTIN_SLASH_COMMANDS.map((command) => command.name));
1659
1653
  const getCommands = () => {
1660
- const extensionCommands = runner
1661
- .getRegisteredCommandsWithPaths()
1662
- .filter(({ command }) => !reservedBuiltins.has(command.name))
1663
- .map(({ command, extensionPath }) => ({
1664
- name: command.name,
1654
+ const extensionCommands = runner.getRegisteredCommands().map((command) => ({
1655
+ name: command.invocationName,
1665
1656
  description: command.description,
1666
1657
  source: "extension",
1667
- path: extensionPath,
1658
+ sourceInfo: command.sourceInfo,
1668
1659
  }));
1669
1660
  const templates = this.promptTemplates.map((template) => ({
1670
1661
  name: template.name,
1671
1662
  description: template.description,
1672
1663
  source: "prompt",
1673
- location: normalizeLocation(template.source),
1674
- path: template.filePath,
1664
+ sourceInfo: template.sourceInfo,
1675
1665
  }));
1676
1666
  const skills = this._resourceLoader.getSkills().skills.map((skill) => ({
1677
1667
  name: `skill:${skill.name}`,
1678
1668
  description: skill.description,
1679
1669
  source: "skill",
1680
- location: normalizeLocation(skill.source),
1681
- path: skill.filePath,
1670
+ sourceInfo: skill.sourceInfo,
1682
1671
  }));
1683
1672
  return [...extensionCommands, ...templates, ...skills];
1684
1673
  };
@@ -1766,21 +1755,33 @@ export class AgentSession {
1766
1755
  const registeredTools = this._extensionRunner?.getAllRegisteredTools() ?? [];
1767
1756
  const allCustomTools = [
1768
1757
  ...registeredTools,
1769
- ...this._customTools.map((def) => ({ definition: def, extensionPath: "<sdk>" })),
1758
+ ...this._customTools.map((definition) => ({
1759
+ definition,
1760
+ sourceInfo: createSyntheticSourceInfo(`<sdk:${definition.name}>`, { source: "sdk" }),
1761
+ })),
1770
1762
  ];
1771
- const definitionRegistry = new Map(this._baseToolDefinitions);
1772
- for (const { definition } of allCustomTools) {
1773
- definitionRegistry.set(definition.name, definition);
1763
+ const definitionRegistry = new Map(Array.from(this._baseToolDefinitions.entries()).map(([name, definition]) => [
1764
+ name,
1765
+ {
1766
+ definition,
1767
+ sourceInfo: createSyntheticSourceInfo(`<builtin:${name}>`, { source: "builtin" }),
1768
+ },
1769
+ ]));
1770
+ for (const tool of allCustomTools) {
1771
+ definitionRegistry.set(tool.definition.name, {
1772
+ definition: tool.definition,
1773
+ sourceInfo: tool.sourceInfo,
1774
+ });
1774
1775
  }
1775
1776
  this._toolDefinitions = definitionRegistry;
1776
1777
  this._toolPromptSnippets = new Map(Array.from(definitionRegistry.values())
1777
- .map((definition) => {
1778
+ .map(({ definition }) => {
1778
1779
  const snippet = this._normalizePromptSnippet(definition.promptSnippet);
1779
1780
  return snippet ? [definition.name, snippet] : undefined;
1780
1781
  })
1781
1782
  .filter((entry) => entry !== undefined));
1782
1783
  this._toolPromptGuidelines = new Map(Array.from(definitionRegistry.values())
1783
- .map((definition) => {
1784
+ .map(({ definition }) => {
1784
1785
  const guidelines = this._normalizePromptGuidelines(definition.promptGuidelines);
1785
1786
  return guidelines.length > 0 ? [definition.name, guidelines] : undefined;
1786
1787
  })
@@ -2491,6 +2492,7 @@ export class AgentSession {
2491
2492
  total: totalInput + totalOutput + totalCacheRead + totalCacheWrite,
2492
2493
  },
2493
2494
  cost: totalCost,
2495
+ contextUsage: this.getContextUsage(),
2494
2496
  };
2495
2497
  }
2496
2498
  getContextUsage() {