@ryuenn3123/agentic-senior-core 2.5.4 → 2.5.5

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,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-04-17T04:00:01.015Z",
2
+ "generatedAt": "2026-04-17T04:24:00.020Z",
3
3
  "reportName": "memory-continuity-benchmark",
4
4
  "schemaVersion": "1.0.0",
5
5
  "passed": true,
package/.cursorrules CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.5.4
3
+ Generated by Agentic-Senior-Core CLI v2.5.5
4
4
  Timestamp: 2026-04-15T00:14:51.184Z
5
5
  Selected profile: beginner
6
6
  Selected policy file: .agent-context/policies/llm-judge-threshold.json
package/.windsurfrules CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.5.4
3
+ Generated by Agentic-Senior-Core CLI v2.5.5
4
4
  Timestamp: 2026-04-15T00:14:51.184Z
5
5
  Selected profile: beginner
6
6
  Selected policy file: .agent-context/policies/llm-judge-threshold.json
@@ -77,7 +77,7 @@ export function parseInitArguments(commandArguments) {
77
77
  tokenOptimize: true,
78
78
  memoryContinuity: true,
79
79
  tokenAgent: 'copilot',
80
- includeMcpTemplate: false,
80
+ includeMcpTemplate: true,
81
81
  scaffoldDocs: undefined,
82
82
  docsLang: 'en',
83
83
  docsLangProvided: false,
@@ -202,6 +202,11 @@ export function parseInitArguments(commandArguments) {
202
202
  continue;
203
203
  }
204
204
 
205
+ if (currentArgument === '--no-mcp-template') {
206
+ parsedInitOptions.includeMcpTemplate = false;
207
+ continue;
208
+ }
209
+
205
210
  if (currentArgument === '--scaffold-docs') {
206
211
  parsedInitOptions.scaffoldDocs = true;
207
212
  continue;
@@ -932,7 +937,7 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
932
937
  console.log(`- Project docs language: ${scaffoldingResult.docsLanguage}`);
933
938
  }
934
939
  console.log(`- Repository workflows copied: no (workflows remain source-repo assets)`);
935
- console.log(`- MCP template file: ${shouldIncludeMcpTemplate ? 'created (.vscode/mcp.json)' : 'not created by default (use --mcp-template)'}`);
940
+ console.log(`- MCP configuration: ${shouldIncludeMcpTemplate ? 'auto-configured for your IDEs (VS Code, Cursor, Zed, Gemini)' : 'disabled (--no-mcp-template)'}`);
936
941
  if (isMemoryContinuityEnabled) {
937
942
  console.log('- Memory continuity policy: enabled (index + selective hydration)');
938
943
  } else {
@@ -390,4 +390,18 @@ export async function compileDynamicContext({
390
390
 
391
391
  await fs.writeFile(path.join(resolvedTargetDirectoryPath, '.cursorrules'), compiledRules, 'utf8');
392
392
  await fs.writeFile(path.join(resolvedTargetDirectoryPath, '.windsurfrules'), compiledRules, 'utf8');
393
+
394
+ // Gemini (Antigravity Editor) instructions
395
+ const geminiDir = path.join(resolvedTargetDirectoryPath, '.gemini');
396
+ if (!(await pathExists(geminiDir))) {
397
+ await fs.mkdir(geminiDir, { recursive: true });
398
+ }
399
+ await fs.writeFile(path.join(geminiDir, 'instructions.md'), compiledRules, 'utf8');
400
+
401
+ // Copilot instructions (also used by some generic IDE extensions)
402
+ const githubDir = path.join(resolvedTargetDirectoryPath, '.github');
403
+ if (!(await pathExists(githubDir))) {
404
+ await fs.mkdir(githubDir, { recursive: true });
405
+ }
406
+ await fs.writeFile(path.join(githubDir, 'copilot-instructions.md'), compiledRules, 'utf8');
393
407
  }
package/lib/cli/utils.mjs CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import fs from 'node:fs/promises';
6
6
  import path from 'node:path';
7
+ import os from 'node:os';
7
8
 
8
9
  import {
9
10
  REPO_ROOT,
@@ -51,7 +52,8 @@ export function printUsage() {
51
52
  console.log(' --no-token-optimize Disable token optimization policy during init');
52
53
  console.log(' --memory-continuity Explicitly enable cross-session memory continuity policy during init (default behavior)');
53
54
  console.log(' --no-memory-continuity Disable memory continuity policy during init');
54
- console.log(' --mcp-template Create .vscode/mcp.json workspace template (MCP trust/start remains manual in IDE)');
55
+ console.log(' --mcp-template Explicitly enable cross-IDE MCP auto-configuration (default behavior)');
56
+ console.log(' --no-mcp-template Disable automatic MCP configuration across your IDEs');
55
57
  console.log(' --scaffold-docs Force project documentation scaffolding (architecture, database, API, flow)');
56
58
  console.log(' --no-scaffold-docs Skip project documentation scaffolding');
57
59
  console.log(' --docs-lang Optional override for generated project docs language (default: en)');
@@ -137,29 +139,96 @@ export async function copyGovernanceAssetsToTarget(
137
139
  }
138
140
 
139
141
  if (shouldIncludeMcpTemplate) {
140
- const vscodeDirectoryPath = path.join(resolvedTargetDirectoryPath, '.vscode');
141
- const workspaceMcpConfigurationPath = path.join(vscodeDirectoryPath, 'mcp.json');
142
+ const projectName = path.basename(resolvedTargetDirectoryPath);
143
+ const mcpArgs = ['./scripts/mcp-server.mjs'];
142
144
 
143
- const workspaceMcpConfiguration = {
145
+ // 1. VS Code & 2. Cursor (Workspace Local Settings)
146
+ const ideLocalDirs = ['.vscode', '.cursor'];
147
+ const workspaceMcpConfig = {
144
148
  servers: {
145
149
  'agentic-senior-core': {
146
150
  type: 'stdio',
147
151
  command: 'node',
148
152
  cwd: '${workspaceFolder}',
149
- args: ['./scripts/mcp-server.mjs'],
153
+ args: mcpArgs,
150
154
  },
151
155
  },
152
156
  };
153
157
 
154
- if (!(await pathExists(workspaceMcpConfigurationPath))) {
155
- await ensureDirectory(vscodeDirectoryPath);
156
- await fs.writeFile(
157
- workspaceMcpConfigurationPath,
158
- JSON.stringify(workspaceMcpConfiguration, null, 2) + '\n',
159
- 'utf8'
160
- );
158
+ for (const ideDir of ideLocalDirs) {
159
+ const dirPath = path.join(resolvedTargetDirectoryPath, ideDir);
160
+ const mcpJsonPath = path.join(dirPath, 'mcp.json');
161
+
162
+ if (!(await pathExists(mcpJsonPath))) {
163
+ await ensureDirectory(dirPath);
164
+ await fs.writeFile(mcpJsonPath, JSON.stringify(workspaceMcpConfig, null, 2) + '\n', 'utf8');
165
+ }
166
+ }
167
+
168
+ // 3. Zed IDE (Workspace Local Settings)
169
+ const zedDirPath = path.join(resolvedTargetDirectoryPath, '.zed');
170
+ const zedSettingsPath = path.join(zedDirPath, 'settings.json');
171
+ const zedMcpConfig = {
172
+ context_servers: {
173
+ 'agentic-senior-core': {
174
+ command: 'node',
175
+ env: {},
176
+ args: mcpArgs,
177
+ },
178
+ },
179
+ };
180
+
181
+ if (!(await pathExists(zedSettingsPath))) {
182
+ await ensureDirectory(zedDirPath);
183
+ await fs.writeFile(zedSettingsPath, JSON.stringify(zedMcpConfig, null, 2) + '\n', 'utf8');
184
+ } else {
185
+ try {
186
+ const existingZedContent = await fs.readFile(zedSettingsPath, 'utf8');
187
+ const parsedZedSettings = JSON.parse(existingZedContent);
188
+ if (!parsedZedSettings.context_servers) {
189
+ parsedZedSettings.context_servers = {};
190
+ }
191
+ if (!parsedZedSettings.context_servers['agentic-senior-core']) {
192
+ parsedZedSettings.context_servers['agentic-senior-core'] = zedMcpConfig.context_servers['agentic-senior-core'];
193
+ await fs.writeFile(zedSettingsPath, JSON.stringify(parsedZedSettings, null, 2) + '\n', 'utf8');
194
+ }
195
+ } catch (err) {
196
+ // Fallback or ignore if user has broken JSON
197
+ }
198
+ }
199
+
200
+ // 4. Antigravity / Gemini (Global Settings)
201
+ try {
202
+ const globalGeminiDir = path.join(os.homedir(), '.gemini', 'antigravity');
203
+ const globalGeminiMcpPath = path.join(globalGeminiDir, 'mcp_config.json');
204
+
205
+ if (await pathExists(globalGeminiDir)) {
206
+ let geminiConfig = { mcpServers: {} };
207
+ if (await pathExists(globalGeminiMcpPath)) {
208
+ const content = await fs.readFile(globalGeminiMcpPath, 'utf8');
209
+ if (content.trim()) {
210
+ try { geminiConfig = JSON.parse(content); } catch (e) {}
211
+ }
212
+ }
213
+ if (!geminiConfig.mcpServers) geminiConfig.mcpServers = {};
214
+
215
+ const safeProjectName = projectName.replace(/[^a-zA-Z0-9_-]/g, '-');
216
+ const uniqueServerName = `agentic-senior-core-${safeProjectName}`;
217
+
218
+ // For global configs, we use absolute path for cwd
219
+ geminiConfig.mcpServers[uniqueServerName] = {
220
+ command: 'node',
221
+ args: mcpArgs,
222
+ cwd: resolvedTargetDirectoryPath,
223
+ };
224
+
225
+ await fs.writeFile(globalGeminiMcpPath, JSON.stringify(geminiConfig, null, 2) + '\n', 'utf8');
226
+ }
227
+ } catch (err) {
228
+ // Ignore global injection errors (e.g. permission issues or user doesn't use it)
161
229
  }
162
230
  }
231
+
163
232
  }
164
233
 
165
234
  export async function askChoice(promptMessage, options, userInterface) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuenn3123/agentic-senior-core",
3
- "version": "2.5.4",
3
+ "version": "2.5.5",
4
4
  "type": "module",
5
5
  "description": "Force your AI Agent to code like a Staff Engineer, not a Junior.",
6
6
  "bin": {