@mariozechner/pi-coding-agent 0.55.0 → 0.55.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.
- package/CHANGELOG.md +38 -0
- package/README.md +1 -1
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +5 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +15 -3
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +5 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +27 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-registry.d.ts +10 -0
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +21 -2
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +23 -2
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +14 -7
- package/dist/core/session-manager.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +10 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +9 -2
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +63 -19
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/custom-provider.md +32 -0
- package/docs/extensions.md +17 -0
- 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/subagent/agents.ts +2 -3
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +6 -5
- package/examples/server-web-client/node_modules/.vite/deps/_metadata.json +0 -8
- package/examples/server-web-client/node_modules/.vite/deps/package.json +0 -3
|
@@ -7,6 +7,13 @@ import ignore from "ignore";
|
|
|
7
7
|
import { minimatch } from "minimatch";
|
|
8
8
|
import { CONFIG_DIR_NAME } from "../config.js";
|
|
9
9
|
import { parseGitUrl } from "../utils/git.js";
|
|
10
|
+
const NETWORK_TIMEOUT_MS = 10000;
|
|
11
|
+
function isOfflineModeEnabled() {
|
|
12
|
+
const value = process.env.PI_OFFLINE;
|
|
13
|
+
if (!value)
|
|
14
|
+
return false;
|
|
15
|
+
return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
|
|
16
|
+
}
|
|
10
17
|
const RESOURCE_TYPES = ["extensions", "skills", "prompts", "themes"];
|
|
11
18
|
const FILE_PATTERNS = {
|
|
12
19
|
extensions: /\.(ts|js)$/,
|
|
@@ -669,6 +676,9 @@ export class DefaultPackageManager {
|
|
|
669
676
|
}
|
|
670
677
|
}
|
|
671
678
|
async updateSourceForScope(source, scope) {
|
|
679
|
+
if (isOfflineModeEnabled()) {
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
672
682
|
const parsed = this.parseSource(source);
|
|
673
683
|
if (parsed.type === "npm") {
|
|
674
684
|
if (parsed.pinned)
|
|
@@ -699,6 +709,9 @@ export class DefaultPackageManager {
|
|
|
699
709
|
continue;
|
|
700
710
|
}
|
|
701
711
|
const installMissing = async () => {
|
|
712
|
+
if (isOfflineModeEnabled()) {
|
|
713
|
+
return false;
|
|
714
|
+
}
|
|
702
715
|
if (!onMissing) {
|
|
703
716
|
await this.installParsedSource(parsed, scope);
|
|
704
717
|
return true;
|
|
@@ -730,7 +743,7 @@ export class DefaultPackageManager {
|
|
|
730
743
|
if (!installed)
|
|
731
744
|
continue;
|
|
732
745
|
}
|
|
733
|
-
else if (scope === "temporary" && !parsed.pinned) {
|
|
746
|
+
else if (scope === "temporary" && !parsed.pinned && !isOfflineModeEnabled()) {
|
|
734
747
|
await this.refreshTemporaryGitSource(parsed, sourceStr);
|
|
735
748
|
}
|
|
736
749
|
metadata.baseDir = installedPath;
|
|
@@ -845,6 +858,9 @@ export class DefaultPackageManager {
|
|
|
845
858
|
* - For pinned packages: check if installed version matches the pinned version
|
|
846
859
|
*/
|
|
847
860
|
async npmNeedsUpdate(source, installedPath) {
|
|
861
|
+
if (isOfflineModeEnabled()) {
|
|
862
|
+
return false;
|
|
863
|
+
}
|
|
848
864
|
const installedVersion = this.getInstalledNpmVersion(installedPath);
|
|
849
865
|
if (!installedVersion)
|
|
850
866
|
return true;
|
|
@@ -877,7 +893,9 @@ export class DefaultPackageManager {
|
|
|
877
893
|
}
|
|
878
894
|
}
|
|
879
895
|
async getLatestNpmVersion(packageName) {
|
|
880
|
-
const response = await fetch(`https://registry.npmjs.org/${packageName}/latest
|
|
896
|
+
const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`, {
|
|
897
|
+
signal: AbortSignal.timeout(NETWORK_TIMEOUT_MS),
|
|
898
|
+
});
|
|
881
899
|
if (!response.ok)
|
|
882
900
|
throw new Error(`Failed to fetch npm registry: ${response.status}`);
|
|
883
901
|
const data = (await response.json());
|
|
@@ -998,6 +1016,9 @@ export class DefaultPackageManager {
|
|
|
998
1016
|
}
|
|
999
1017
|
}
|
|
1000
1018
|
async refreshTemporaryGitSource(source, sourceStr) {
|
|
1019
|
+
if (isOfflineModeEnabled()) {
|
|
1020
|
+
return;
|
|
1021
|
+
}
|
|
1001
1022
|
try {
|
|
1002
1023
|
await this.withProgress("pull", sourceStr, `Refreshing ${sourceStr}...`, async () => {
|
|
1003
1024
|
await this.updateGit(source, "temporary");
|