@codex-infinity/pi-infinity 0.61.2 → 0.62.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.
- package/CHANGELOG.md +54 -0
- package/README.md +2 -2
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +4 -0
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/core/agent-session.d.ts +10 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +60 -46
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/export-html/index.d.ts +2 -2
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +2 -2
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts +2 -2
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +41 -16
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/index.d.ts +3 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +12 -2
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +4 -7
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +27 -38
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +44 -9
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js +2 -8
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/output-guard.d.ts +6 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +59 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +27 -8
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +2 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +30 -32
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/resource-loader.d.ts +6 -5
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +133 -107
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/skills.d.ts +2 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +25 -1
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts +2 -3
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +3 -38
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts +19 -9
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +154 -59
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +14 -2
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +92 -21
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +11 -4
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +76 -27
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +15 -4
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +83 -29
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +57 -19
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +50 -26
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +9 -3
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +67 -13
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts +10 -3
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +110 -51
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +21 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +49 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +30 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/write.d.ts +9 -3
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +161 -27
- package/dist/core/tools/write.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +29 -9
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +15 -40
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +120 -670
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +4 -11
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +144 -92
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +3 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +1 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +5 -11
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +27 -20
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +3 -4
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/image-resize.d.ts +5 -5
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js +45 -94
- package/dist/utils/image-resize.js.map +1 -1
- package/docs/extensions.md +72 -32
- package/docs/tui.md +2 -2
- package/examples/extensions/built-in-tool-renderer.ts +8 -8
- package/examples/extensions/commands.ts +3 -3
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
- package/examples/extensions/minimal-mode.ts +14 -14
- package/examples/extensions/question.ts +2 -2
- package/examples/extensions/questionnaire.ts +2 -2
- package/examples/extensions/subagent/index.ts +2 -2
- package/examples/extensions/todo.ts +2 -2
- package/examples/extensions/truncated-tool.ts +2 -2
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/04-skills.ts +8 -2
- package/examples/sdk/08-prompt-templates.ts +2 -1
- package/examples/sdk/12-full-control.ts +0 -1
- package/package.json +4 -4
|
@@ -27,9 +27,10 @@ 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 {
|
|
30
|
+
import { createSyntheticSourceInfo } from "./source-info.js";
|
|
31
31
|
import { buildSystemPrompt } from "./system-prompt.js";
|
|
32
|
-
import {
|
|
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.
|
|
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
|
|
@@ -481,15 +483,19 @@ export class AgentSession {
|
|
|
481
483
|
return this.agent.state.tools.map((t) => t.name);
|
|
482
484
|
}
|
|
483
485
|
/**
|
|
484
|
-
* Get all configured tools with name, description, and
|
|
486
|
+
* Get all configured tools with name, description, parameter schema, and source metadata.
|
|
485
487
|
*/
|
|
486
488
|
getAllTools() {
|
|
487
|
-
return Array.from(this.
|
|
488
|
-
name:
|
|
489
|
-
description:
|
|
490
|
-
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,
|
|
491
494
|
}));
|
|
492
495
|
}
|
|
496
|
+
getToolDefinition(name) {
|
|
497
|
+
return this._toolDefinitions.get(name)?.definition;
|
|
498
|
+
}
|
|
493
499
|
/**
|
|
494
500
|
* Set active tools by name.
|
|
495
501
|
* Only tools in the registry can be enabled. Unknown tool names are ignored.
|
|
@@ -1644,36 +1650,24 @@ export class AgentSession {
|
|
|
1644
1650
|
this.agent.setModel(refreshedModel);
|
|
1645
1651
|
}
|
|
1646
1652
|
_bindExtensionCore(runner) {
|
|
1647
|
-
const normalizeLocation = (source) => {
|
|
1648
|
-
if (source === "user" || source === "project" || source === "path") {
|
|
1649
|
-
return source;
|
|
1650
|
-
}
|
|
1651
|
-
return undefined;
|
|
1652
|
-
};
|
|
1653
|
-
const reservedBuiltins = new Set(BUILTIN_SLASH_COMMANDS.map((command) => command.name));
|
|
1654
1653
|
const getCommands = () => {
|
|
1655
|
-
const extensionCommands = runner
|
|
1656
|
-
.
|
|
1657
|
-
.filter(({ command }) => !reservedBuiltins.has(command.name))
|
|
1658
|
-
.map(({ command, extensionPath }) => ({
|
|
1659
|
-
name: command.name,
|
|
1654
|
+
const extensionCommands = runner.getRegisteredCommands().map((command) => ({
|
|
1655
|
+
name: command.invocationName,
|
|
1660
1656
|
description: command.description,
|
|
1661
1657
|
source: "extension",
|
|
1662
|
-
|
|
1658
|
+
sourceInfo: command.sourceInfo,
|
|
1663
1659
|
}));
|
|
1664
1660
|
const templates = this.promptTemplates.map((template) => ({
|
|
1665
1661
|
name: template.name,
|
|
1666
1662
|
description: template.description,
|
|
1667
1663
|
source: "prompt",
|
|
1668
|
-
|
|
1669
|
-
path: template.filePath,
|
|
1664
|
+
sourceInfo: template.sourceInfo,
|
|
1670
1665
|
}));
|
|
1671
1666
|
const skills = this._resourceLoader.getSkills().skills.map((skill) => ({
|
|
1672
1667
|
name: `skill:${skill.name}`,
|
|
1673
1668
|
description: skill.description,
|
|
1674
1669
|
source: "skill",
|
|
1675
|
-
|
|
1676
|
-
path: skill.filePath,
|
|
1670
|
+
sourceInfo: skill.sourceInfo,
|
|
1677
1671
|
}));
|
|
1678
1672
|
return [...extensionCommands, ...templates, ...skills];
|
|
1679
1673
|
};
|
|
@@ -1761,24 +1755,44 @@ export class AgentSession {
|
|
|
1761
1755
|
const registeredTools = this._extensionRunner?.getAllRegisteredTools() ?? [];
|
|
1762
1756
|
const allCustomTools = [
|
|
1763
1757
|
...registeredTools,
|
|
1764
|
-
...this._customTools.map((
|
|
1758
|
+
...this._customTools.map((definition) => ({
|
|
1759
|
+
definition,
|
|
1760
|
+
sourceInfo: createSyntheticSourceInfo(`<sdk:${definition.name}>`, { source: "sdk" }),
|
|
1761
|
+
})),
|
|
1765
1762
|
];
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
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
|
+
});
|
|
1775
|
+
}
|
|
1776
|
+
this._toolDefinitions = definitionRegistry;
|
|
1777
|
+
this._toolPromptSnippets = new Map(Array.from(definitionRegistry.values())
|
|
1778
|
+
.map(({ definition }) => {
|
|
1779
|
+
const snippet = this._normalizePromptSnippet(definition.promptSnippet);
|
|
1780
|
+
return snippet ? [definition.name, snippet] : undefined;
|
|
1770
1781
|
})
|
|
1771
1782
|
.filter((entry) => entry !== undefined));
|
|
1772
|
-
this._toolPromptGuidelines = new Map(
|
|
1773
|
-
.map((
|
|
1774
|
-
const guidelines = this._normalizePromptGuidelines(
|
|
1775
|
-
return guidelines.length > 0 ? [
|
|
1783
|
+
this._toolPromptGuidelines = new Map(Array.from(definitionRegistry.values())
|
|
1784
|
+
.map(({ definition }) => {
|
|
1785
|
+
const guidelines = this._normalizePromptGuidelines(definition.promptGuidelines);
|
|
1786
|
+
return guidelines.length > 0 ? [definition.name, guidelines] : undefined;
|
|
1776
1787
|
})
|
|
1777
1788
|
.filter((entry) => entry !== undefined));
|
|
1778
1789
|
const wrappedExtensionTools = this._extensionRunner
|
|
1779
1790
|
? wrapRegisteredTools(allCustomTools, this._extensionRunner)
|
|
1780
1791
|
: [];
|
|
1781
|
-
const toolRegistry = new Map(this.
|
|
1792
|
+
const toolRegistry = new Map(Array.from(this._baseToolDefinitions.values()).map((definition) => [
|
|
1793
|
+
definition.name,
|
|
1794
|
+
wrapToolDefinition(definition),
|
|
1795
|
+
]));
|
|
1782
1796
|
for (const tool of wrappedExtensionTools) {
|
|
1783
1797
|
toolRegistry.set(tool.name, tool);
|
|
1784
1798
|
}
|
|
@@ -1803,13 +1817,16 @@ export class AgentSession {
|
|
|
1803
1817
|
_buildRuntime(options) {
|
|
1804
1818
|
const autoResizeImages = this.settingsManager.getImageAutoResize();
|
|
1805
1819
|
const shellCommandPrefix = this.settingsManager.getShellCommandPrefix();
|
|
1806
|
-
const
|
|
1807
|
-
? this._baseToolsOverride
|
|
1808
|
-
|
|
1820
|
+
const baseToolDefinitions = this._baseToolsOverride
|
|
1821
|
+
? Object.fromEntries(Object.entries(this._baseToolsOverride).map(([name, tool]) => [
|
|
1822
|
+
name,
|
|
1823
|
+
createToolDefinitionFromAgentTool(tool),
|
|
1824
|
+
]))
|
|
1825
|
+
: createAllToolDefinitions(this._cwd, {
|
|
1809
1826
|
read: { autoResizeImages },
|
|
1810
1827
|
bash: { commandPrefix: shellCommandPrefix },
|
|
1811
1828
|
});
|
|
1812
|
-
this.
|
|
1829
|
+
this._baseToolDefinitions = new Map(Object.entries(baseToolDefinitions).map(([name, tool]) => [name, tool]));
|
|
1813
1830
|
const extensionsResult = this._resourceLoader.getExtensions();
|
|
1814
1831
|
if (options.flagValues) {
|
|
1815
1832
|
for (const [name, value] of options.flagValues) {
|
|
@@ -2526,13 +2543,10 @@ export class AgentSession {
|
|
|
2526
2543
|
async exportToHtml(outputPath) {
|
|
2527
2544
|
const themeName = this.settingsManager.getTheme();
|
|
2528
2545
|
// Create tool renderer if we have an extension runner (for custom tool HTML rendering)
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
theme,
|
|
2534
|
-
});
|
|
2535
|
-
}
|
|
2546
|
+
const toolRenderer = createToolHtmlRenderer({
|
|
2547
|
+
getToolDefinition: (name) => this.getToolDefinition(name),
|
|
2548
|
+
theme,
|
|
2549
|
+
});
|
|
2536
2550
|
return await exportSessionToHtml(this.sessionManager, this.state, {
|
|
2537
2551
|
outputPath,
|
|
2538
2552
|
themeName,
|