psycgod-sage 1.0.17 → 1.0.20
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/dist/install/hooks.d.ts.map +1 -1
- package/dist/install/hooks.js +37 -8
- package/dist/install/hooks.js.map +1 -1
- package/dist/install/index.d.ts.map +1 -1
- package/dist/install/index.js +3 -2
- package/dist/install/index.js.map +1 -1
- package/dist/install/targets.d.ts +2 -2
- package/dist/install/targets.d.ts.map +1 -1
- package/dist/install/targets.js +27 -7
- package/dist/install/targets.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,eAAe,QA6BpB,CAAC;AAEF,QAAA,MAAM,eAAe,QAqBpB,CAAC;AAkBF,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,QAAA,MAAM,YAAY,EAAE,UAAU,EAS7B,CAAC;AAEF,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAcpD;AA+ED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/install/hooks.js
CHANGED
|
@@ -27,8 +27,7 @@ def main():
|
|
|
27
27
|
return 0
|
|
28
28
|
|
|
29
29
|
print("SAGE enforcement: shell commands must start with one of:", ", ".join(SAGE_PREFIXES), file=sys.stderr)
|
|
30
|
-
print("
|
|
31
|
-
print("Use:", f"{SAGE_PREFIXES[0]} {command}", file=sys.stderr)
|
|
30
|
+
print("The blocked command is intentionally not printed to avoid leaking secrets.", file=sys.stderr)
|
|
32
31
|
return 2
|
|
33
32
|
|
|
34
33
|
if __name__ == "__main__":
|
|
@@ -49,9 +48,8 @@ process.stdin.on('end', () => {
|
|
|
49
48
|
const command = String(toolInput.command || '').trim();
|
|
50
49
|
if (SAGE_PREFIXES.some(prefix => command.startsWith(prefix))) process.exit(0);
|
|
51
50
|
console.error('SAGE enforcement: shell commands must start with one of: ' + SAGE_PREFIXES.join(', '));
|
|
52
|
-
console.error('
|
|
53
|
-
|
|
54
|
-
process.exit(2);
|
|
51
|
+
console.error('The blocked command is intentionally not printed to avoid leaking secrets.');
|
|
52
|
+
process.exit(2);
|
|
55
53
|
} catch {
|
|
56
54
|
process.exit(0);
|
|
57
55
|
}
|
|
@@ -90,8 +88,9 @@ export async function installHooks() {
|
|
|
90
88
|
if (success)
|
|
91
89
|
installed++;
|
|
92
90
|
}
|
|
93
|
-
catch {
|
|
94
|
-
|
|
91
|
+
catch (error) {
|
|
92
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
93
|
+
console.warn(`SAGE: could not install ${target.name} hook (${message})`);
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
return installed;
|
|
@@ -124,11 +123,41 @@ async function installHook(target) {
|
|
|
124
123
|
settings = {};
|
|
125
124
|
}
|
|
126
125
|
}
|
|
127
|
-
settings.hooks = target.settingsContent.hooks;
|
|
126
|
+
settings.hooks = mergeHooks(settings.hooks, target.settingsContent.hooks);
|
|
128
127
|
writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
|
|
129
128
|
}
|
|
130
129
|
return true;
|
|
131
130
|
}
|
|
131
|
+
function mergeHooks(existing, incoming) {
|
|
132
|
+
if (!existing || typeof existing !== 'object') {
|
|
133
|
+
return incoming;
|
|
134
|
+
}
|
|
135
|
+
const merged = { ...existing };
|
|
136
|
+
for (const [key, value] of Object.entries(incoming || {})) {
|
|
137
|
+
if (Array.isArray(value) && Array.isArray(merged[key])) {
|
|
138
|
+
for (const item of value) {
|
|
139
|
+
const encoded = JSON.stringify(item);
|
|
140
|
+
if (!merged[key].some((existingItem) => JSON.stringify(existingItem) === encoded)) {
|
|
141
|
+
merged[key].push(item);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (merged[key] === undefined) {
|
|
146
|
+
merged[key] = value;
|
|
147
|
+
}
|
|
148
|
+
else if (merged[key] &&
|
|
149
|
+
typeof merged[key] === 'object' &&
|
|
150
|
+
value &&
|
|
151
|
+
typeof value === 'object' &&
|
|
152
|
+
!Array.isArray(value)) {
|
|
153
|
+
merged[key] = mergeHooks(merged[key], value);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
merged[key] = value;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return merged;
|
|
160
|
+
}
|
|
132
161
|
function expandPath(path) {
|
|
133
162
|
if (path.startsWith('~/') || path.startsWith('~\\') || path === '~') {
|
|
134
163
|
const rest = path.slice(1).replace(/^[/\\]/, '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,eAAe,GAAG;;;;;mBAKL,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"AAMA,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"AAMA,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAc7D"}
|
package/dist/install/index.js
CHANGED
|
@@ -11,8 +11,9 @@ export async function injectAllAgentConfigs() {
|
|
|
11
11
|
if (success)
|
|
12
12
|
injected++;
|
|
13
13
|
}
|
|
14
|
-
catch {
|
|
15
|
-
|
|
14
|
+
catch (error) {
|
|
15
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
16
|
+
console.warn(`SAGE: could not update ${target.name} config (${message})`);
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
return injected;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,OAAO;gBAAE,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ export declare const SAGE_RUN_PREFIX = "npx -y psycgod-sage run --";
|
|
|
2
2
|
export declare const PYPI_RUN_PREFIX = "sage run --";
|
|
3
3
|
export declare const SAGE_BLOCK_START = "# SAGE MANAGED BLOCK START";
|
|
4
4
|
export declare const SAGE_BLOCK_END = "# SAGE MANAGED BLOCK END";
|
|
5
|
-
export declare const SAGE_INSTRUCTION = "# SAGE MANAGED BLOCK START\n## SAGE Integration - MANDATORY\n\nRoute every shell command through SAGE. Do not run bare terminal commands.\n\nAllowed wrappers:\n- npm/npx install: `npx -y psycgod-sage run -- <command>`\n- PyPI/pip install: `sage run -- <command>`\n\nRules:\n- Python: `npx -y psycgod-sage run -- python script.py` or `sage run -- python script.py`\n- Packages: `npx -y psycgod-sage run -- npm install` or `sage run -- npm install`\n- Tests: `npx -y psycgod-sage run -- pytest` or `sage run -- pytest`\n- If the wrapper fails before the target command starts, stop and report the wrapper failure.\n\nWhy:\n- npm/npx SAGE delegates to the canonical PyPI SAGE core, so behavior matches `psycgod-sage`.\n- Tracks local command history for the user.\n- Compresses noisy output before it reaches AI context.\n- Captures safe proof metrics for token savings and ML V1 prediction.\n- Keeps raw commands and output local unless the user enables higher telemetry.\n\nExamples:\n- Wrong: `python test.py`\n- Correct: `npx -y psycgod-sage run -- python test.py`\n- Correct with PyPI: `sage run -- python test.py`\n- Wrong: `git status`\n- Correct: `npx -y psycgod-sage run -- git status`\n\nML V1 is included. Optional ML V2 can be installed later by the user with:\n`npx -y psycgod-sage ml setup`\n# SAGE MANAGED BLOCK END\n";
|
|
6
|
-
export declare const SAGE_INSTRUCTION_SHORT = "# SAGE MANAGED BLOCK START\n# SAGE Integration - MANDATORY\n# Route all shell commands through: npx -y psycgod-sage run -- <command>\n# Or with PyPI/pip: sage run -- <command>\n# SAGE MANAGED BLOCK END\n";
|
|
5
|
+
export declare const SAGE_INSTRUCTION = "# SAGE MANAGED BLOCK START\n## SAGE Integration - MANDATORY\n\nWhen a user asks for any coding, repo, file, debugging, documentation, or project task, start through SAGE automatically. The user should not need to type `sage`.\n\nFirst actions for normal repo work:\n- Inspect files with SAGE MCP tools first: `mcp__sage__sage_tree`, `mcp__sage__sage_glob`, `mcp__sage__sage_grep`, `mcp__sage__sage_read_file`\n- Use `mcp__sage__sage_write_file` / `mcp__sage__sage_edit_file` for file changes when available\n- Route every terminal command through a SAGE wrapper\n\nRoute every shell command through SAGE. Do not run bare terminal commands.\n\nAllowed wrappers:\n- npm/npx install: `npx -y psycgod-sage run -- <command>`\n- PyPI/pip install: `sage run -- <command>`\n\nRules:\n- Python: `npx -y psycgod-sage run -- python script.py` or `sage run -- python script.py`\n- Packages: `npx -y psycgod-sage run -- npm install` or `sage run -- npm install`\n- Tests: `npx -y psycgod-sage run -- pytest` or `sage run -- pytest`\n- If the wrapper fails before the target command starts, stop and report the wrapper failure.\n\nWhy:\n- npm/npx SAGE delegates to the canonical PyPI SAGE core, so behavior matches `psycgod-sage`.\n- Tracks local command history for the user.\n- Compresses noisy output before it reaches AI context.\n- Captures safe proof metrics for token savings and ML V1 prediction.\n- Keeps raw commands and output local unless the user enables higher telemetry.\n\nExamples:\n- Wrong: `python test.py`\n- Correct: `npx -y psycgod-sage run -- python test.py`\n- Correct with PyPI: `sage run -- python test.py`\n- Wrong: `git status`\n- Correct: `npx -y psycgod-sage run -- git status`\n\nFor agents with native file/search/edit tools, shell wrapping is not enough. Use SAGE MCP tools for repository work:\n- `mcp__sage__sage_read_file` instead of direct `Read`\n- `mcp__sage__sage_grep` instead of direct `Grep`\n- `mcp__sage__sage_glob` instead of direct `Glob`\n- `mcp__sage__sage_tree` instead of direct tree/listing tools\n- `mcp__sage__sage_write_file` and `mcp__sage__sage_edit_file` instead of direct `Write` or `Edit`\n\nExample user request:\n- User: \"Please help me with my general book in this folder\"\n- Correct agent start: use `mcp__sage__sage_tree`/`sage_glob`/`sage_grep`/`sage_read_file`, then use `npx -y psycgod-sage run -- <command>` only when a terminal command is needed.\n- Wrong agent start: direct `Read`, `Grep`, `Glob`, `python`, `git`, `npm`, or `ls`.\n\nML V1 is included. Optional ML V2 can be installed later by the user with:\n`npx -y psycgod-sage ml setup`\n# SAGE MANAGED BLOCK END\n";
|
|
6
|
+
export declare const SAGE_INSTRUCTION_SHORT = "# SAGE MANAGED BLOCK START\n# SAGE Integration - MANDATORY\n# Start user repo/file/debugging tasks with SAGE MCP tools when available.\n# Route all shell commands through: npx -y psycgod-sage run -- <command>\n# Or with PyPI/pip: sage run -- <command>\n# SAGE MANAGED BLOCK END\n";
|
|
7
7
|
export interface AgentTarget {
|
|
8
8
|
name: string;
|
|
9
9
|
path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/install/targets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAC5D,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAC7D,eAAO,MAAM,cAAc,6BAA6B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../src/install/targets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAC5D,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAC7D,eAAO,MAAM,cAAc,6BAA6B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,ykFAmD5B,CAAC;AAEF,eAAO,MAAM,sBAAsB,4RAMlC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;CACxC;AAED,eAAO,MAAM,aAAa,EAAE,WAAW,EA+BtC,CAAC"}
|
package/dist/install/targets.js
CHANGED
|
@@ -3,9 +3,16 @@ export const SAGE_RUN_PREFIX = 'npx -y psycgod-sage run --';
|
|
|
3
3
|
export const PYPI_RUN_PREFIX = 'sage run --';
|
|
4
4
|
export const SAGE_BLOCK_START = '# SAGE MANAGED BLOCK START';
|
|
5
5
|
export const SAGE_BLOCK_END = '# SAGE MANAGED BLOCK END';
|
|
6
|
-
export const SAGE_INSTRUCTION = `${SAGE_BLOCK_START}
|
|
7
|
-
## SAGE Integration - MANDATORY
|
|
8
|
-
|
|
6
|
+
export const SAGE_INSTRUCTION = `${SAGE_BLOCK_START}
|
|
7
|
+
## SAGE Integration - MANDATORY
|
|
8
|
+
|
|
9
|
+
When a user asks for any coding, repo, file, debugging, documentation, or project task, start through SAGE automatically. The user should not need to type \`sage\`.
|
|
10
|
+
|
|
11
|
+
First actions for normal repo work:
|
|
12
|
+
- Inspect files with SAGE MCP tools first: \`mcp__sage__sage_tree\`, \`mcp__sage__sage_glob\`, \`mcp__sage__sage_grep\`, \`mcp__sage__sage_read_file\`
|
|
13
|
+
- Use \`mcp__sage__sage_write_file\` / \`mcp__sage__sage_edit_file\` for file changes when available
|
|
14
|
+
- Route every terminal command through a SAGE wrapper
|
|
15
|
+
|
|
9
16
|
Route every shell command through SAGE. Do not run bare terminal commands.
|
|
10
17
|
|
|
11
18
|
Allowed wrappers:
|
|
@@ -25,19 +32,32 @@ Why:
|
|
|
25
32
|
- Captures safe proof metrics for token savings and ML V1 prediction.
|
|
26
33
|
- Keeps raw commands and output local unless the user enables higher telemetry.
|
|
27
34
|
|
|
28
|
-
Examples:
|
|
35
|
+
Examples:
|
|
29
36
|
- Wrong: \`python test.py\`
|
|
30
37
|
- Correct: \`${SAGE_RUN_PREFIX} python test.py\`
|
|
31
38
|
- Correct with PyPI: \`${PYPI_RUN_PREFIX} python test.py\`
|
|
32
39
|
- Wrong: \`git status\`
|
|
33
40
|
- Correct: \`${SAGE_RUN_PREFIX} git status\`
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
\`
|
|
41
|
+
|
|
42
|
+
For agents with native file/search/edit tools, shell wrapping is not enough. Use SAGE MCP tools for repository work:
|
|
43
|
+
- \`mcp__sage__sage_read_file\` instead of direct \`Read\`
|
|
44
|
+
- \`mcp__sage__sage_grep\` instead of direct \`Grep\`
|
|
45
|
+
- \`mcp__sage__sage_glob\` instead of direct \`Glob\`
|
|
46
|
+
- \`mcp__sage__sage_tree\` instead of direct tree/listing tools
|
|
47
|
+
- \`mcp__sage__sage_write_file\` and \`mcp__sage__sage_edit_file\` instead of direct \`Write\` or \`Edit\`
|
|
48
|
+
|
|
49
|
+
Example user request:
|
|
50
|
+
- User: "Please help me with my general book in this folder"
|
|
51
|
+
- Correct agent start: use \`mcp__sage__sage_tree\`/\`sage_glob\`/\`sage_grep\`/\`sage_read_file\`, then use \`${SAGE_RUN_PREFIX} <command>\` only when a terminal command is needed.
|
|
52
|
+
- Wrong agent start: direct \`Read\`, \`Grep\`, \`Glob\`, \`python\`, \`git\`, \`npm\`, or \`ls\`.
|
|
53
|
+
|
|
54
|
+
ML V1 is included. Optional ML V2 can be installed later by the user with:
|
|
55
|
+
\`npx -y psycgod-sage ml setup\`
|
|
37
56
|
${SAGE_BLOCK_END}
|
|
38
57
|
`;
|
|
39
58
|
export const SAGE_INSTRUCTION_SHORT = `${SAGE_BLOCK_START}
|
|
40
59
|
# SAGE Integration - MANDATORY
|
|
60
|
+
# Start user repo/file/debugging tasks with SAGE MCP tools when available.
|
|
41
61
|
# Route all shell commands through: ${SAGE_RUN_PREFIX} <command>
|
|
42
62
|
# Or with PyPI/pip: ${PYPI_RUN_PREFIX} <command>
|
|
43
63
|
${SAGE_BLOCK_END}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/install/targets.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,gBAAgB
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/install/targets.ts"],"names":[],"mappings":"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"}
|