psycgod-sage 2.5.6 → 2.5.7
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/python/bridge.ts"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAmBD,wBAAgB,UAAU,IAAI,aAAa,GAAG,IAAI,CAYjD;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/python/bridge.ts"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAmBD,wBAAgB,UAAU,IAAI,aAAa,GAAG,IAAI,CAYjD;AAgCD,wBAAgB,gBAAgB,IAAI,OAAO,CAa1C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAuBpD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAQzC;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAQjD"}
|
package/dist/python/bridge.js
CHANGED
|
@@ -25,6 +25,25 @@ export function findPython() {
|
|
|
25
25
|
}
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
|
+
function pythonSageImportable(python) {
|
|
29
|
+
// Cheap probe: imports the package without loading the full CLI.
|
|
30
|
+
return runCandidate(python, ['-c', 'import sage']).status === 0;
|
|
31
|
+
}
|
|
32
|
+
function installPythonSage(python) {
|
|
33
|
+
console.log('Installing Python SAGE core from PyPI...');
|
|
34
|
+
const install = runCandidate(python, ['-m', 'pip', 'install', '--upgrade', 'psycgod-sage'], 'inherit');
|
|
35
|
+
if (install.status === 0) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
// PEP 668 "externally managed environment" (Debian/Ubuntu/Homebrew Python)
|
|
39
|
+
// rejects plain pip installs; retry as a user install.
|
|
40
|
+
const userInstall = runCandidate(python, ['-m', 'pip', 'install', '--upgrade', '--user', '--break-system-packages', 'psycgod-sage'], 'inherit');
|
|
41
|
+
if (userInstall.status !== 0) {
|
|
42
|
+
console.error('Failed to install Python SAGE core: psycgod-sage');
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
28
47
|
export function ensurePythonSage() {
|
|
29
48
|
const python = findPython();
|
|
30
49
|
if (!python) {
|
|
@@ -32,25 +51,32 @@ export function ensurePythonSage() {
|
|
|
32
51
|
console.error('Install Python, then retry: npm install -g psycgod-sage');
|
|
33
52
|
return false;
|
|
34
53
|
}
|
|
35
|
-
|
|
36
|
-
if (probe.status === 0) {
|
|
54
|
+
if (pythonSageImportable(python)) {
|
|
37
55
|
return true;
|
|
38
56
|
}
|
|
39
|
-
|
|
40
|
-
const install = runCandidate(python, ['-m', 'pip', 'install', '--upgrade', 'psycgod-sage'], 'inherit');
|
|
41
|
-
if (install.status !== 0) {
|
|
42
|
-
console.error('Failed to install Python SAGE core: psycgod-sage');
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
return runCandidate(python, ['-m', 'sage', '--version']).status === 0;
|
|
57
|
+
return installPythonSage(python) && pythonSageImportable(python);
|
|
46
58
|
}
|
|
47
59
|
export function runPythonSage(args) {
|
|
48
60
|
const python = findPython();
|
|
49
|
-
if (!python
|
|
61
|
+
if (!python) {
|
|
62
|
+
console.error('SAGE npm launcher needs Python 3.10+ on PATH.');
|
|
63
|
+
console.error('Install Python, then retry: npm install -g psycgod-sage');
|
|
50
64
|
return 1;
|
|
51
65
|
}
|
|
66
|
+
// Run directly: the common case pays one Python start, not three. Only when
|
|
67
|
+
// the run fails AND the package is missing do we install and retry once.
|
|
52
68
|
const result = runCandidate(python, ['-m', 'sage', ...args], 'inherit');
|
|
53
|
-
|
|
69
|
+
if (result.status === 0) {
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
if (pythonSageImportable(python)) {
|
|
73
|
+
return typeof result.status === 'number' ? result.status : 1;
|
|
74
|
+
}
|
|
75
|
+
if (!installPythonSage(python)) {
|
|
76
|
+
return 1;
|
|
77
|
+
}
|
|
78
|
+
const retry = runCandidate(python, ['-m', 'sage', ...args], 'inherit');
|
|
79
|
+
return typeof retry.status === 'number' ? retry.status : 1;
|
|
54
80
|
}
|
|
55
81
|
export function setupPythonSage() {
|
|
56
82
|
const python = findPython();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/python/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAO1C,MAAM,iBAAiB,GAAoB;IACzC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;IACrC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;IACrC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;CACvC,CAAC;AAEF,IAAI,YAAY,GAAyB,IAAI,CAAC;AAE9C,SAAS,YAAY,CAAC,SAAwB,EAAE,IAAc,EAAE,QAA4B,MAAM;IAChG,OAAO,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE;QACtE,KAAK;QACL,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,YAAY,GAAG,SAAS,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/python/bridge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "psycgod-sage",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.7",
|
|
4
4
|
"mcpName": "io.github.PsYcGoD/sage",
|
|
5
5
|
"description": "npm/npx launcher for the canonical PyPI SAGE CLI wrapper for AI coding agents",
|
|
6
6
|
"author": "PsYcGoD",
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
"dist",
|
|
16
16
|
"bin"
|
|
17
17
|
],
|
|
18
|
-
"scripts": {
|
|
19
|
-
"build": "tsc",
|
|
20
|
-
"dev": "tsc --watch",
|
|
21
|
-
"test": "vitest",
|
|
22
|
-
"lint": "eslint src",
|
|
23
|
-
"postinstall": "node ./dist/cli/postinstall.js",
|
|
24
|
-
"prepublishOnly": "npm run build"
|
|
25
|
-
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc --watch",
|
|
21
|
+
"test": "vitest",
|
|
22
|
+
"lint": "eslint src",
|
|
23
|
+
"postinstall": "node ./dist/cli/postinstall.js",
|
|
24
|
+
"prepublishOnly": "npm run build"
|
|
25
|
+
},
|
|
26
26
|
"dependencies": {},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/better-sqlite3": "^7.6.11",
|