@ryuenn3123/agentic-senior-core 6.5.3 → 6.6.0
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/.agents/plugins/agentic-senior-core/kilo-plugin/agentic-senior-core.js +42 -0
- package/.agents/plugins/agentic-senior-core/plugin.json +1 -1
- package/gemini-extension.json +1 -1
- package/lib/cli/commands/adapter.mjs +21 -2
- package/lib/cli/commands/global.mjs +51 -4
- package/lib/cli/commands/status.mjs +7 -2
- package/lib/cli/commands/uninstall.mjs +3 -1
- package/package.json +1 -1
- package/plugin.yaml +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Native Kilo / OpenCode Plugin for Agentic Senior Core
|
|
2
|
+
// Hooks into system prompt transform, session compaction, and shell environment.
|
|
3
|
+
|
|
4
|
+
const ASC_GUARDRAILS = `
|
|
5
|
+
# Agentic Senior Core Rules
|
|
6
|
+
- Write code like a staff engineer. Efficient, safe, maintainable.
|
|
7
|
+
- Before writing code: 1) Need built? 2) Codebase reuse? 3) Stdlib? 4) Dependency? 5) One function? 6) Minimum code.
|
|
8
|
+
- Parameterize all queries. Validate inputs at trust boundaries. Never commit secrets.
|
|
9
|
+
- Early returns over deep nesting. Delete code that carries no value.
|
|
10
|
+
`;
|
|
11
|
+
|
|
12
|
+
const server = async ({ project, directory, worktree }) => {
|
|
13
|
+
return {
|
|
14
|
+
"experimental.chat.system.transform": async (input, output) => {
|
|
15
|
+
if (Array.isArray(output.system)) {
|
|
16
|
+
const hasASC = output.system.some(item => typeof item === 'string' && item.includes('Agentic Senior Core'));
|
|
17
|
+
if (!hasASC) {
|
|
18
|
+
output.system.push(ASC_GUARDRAILS.trim());
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"experimental.session.compacting": async (input, output) => {
|
|
23
|
+
if (Array.isArray(output.context)) {
|
|
24
|
+
output.context.push(
|
|
25
|
+
"## Agentic Senior Core (Persisted Context)\n" +
|
|
26
|
+
"- Maintain strict security guardrails and non-breaking API contracts.\n" +
|
|
27
|
+
"- Prefer clean minimal logic over premature abstractions."
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"shell.env": async (input, output) => {
|
|
32
|
+
if (output.env) {
|
|
33
|
+
output.env.ASC_ENABLED = "1";
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default {
|
|
40
|
+
id: "agentic-senior-core",
|
|
41
|
+
server,
|
|
42
|
+
};
|
package/gemini-extension.json
CHANGED
|
@@ -60,8 +60,11 @@ const ADAPTER_TARGETS = {
|
|
|
60
60
|
},
|
|
61
61
|
kilocode: {
|
|
62
62
|
label: 'Kilo Code',
|
|
63
|
-
targetPath: '.
|
|
63
|
+
targetPath: '.kilo/rules/agentic-senior-core.md',
|
|
64
|
+
legacyTargetPath: '.kilocode/rules/agentic-senior-core.md',
|
|
65
|
+
pluginTargetPath: '.kilo/plugin/agentic-senior-core.js',
|
|
64
66
|
sourcePath: '.agents/plugins/agentic-senior-core/rules/agentic-senior-core.md',
|
|
67
|
+
pluginSourcePath: '.agents/plugins/agentic-senior-core/kilo-plugin/agentic-senior-core.js',
|
|
65
68
|
},
|
|
66
69
|
roo: {
|
|
67
70
|
label: 'Roo Code',
|
|
@@ -117,7 +120,23 @@ async function generateAdapter(targetDirectory, adapterKey) {
|
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
await fs.writeFile(targetPath, finalContent, 'utf8');
|
|
120
|
-
|
|
123
|
+
|
|
124
|
+
if (adapterKey === 'kilocode') {
|
|
125
|
+
if (adapter.pluginSourcePath && adapter.pluginTargetPath) {
|
|
126
|
+
const pluginSource = path.join(REPOSITORY_ROOT, adapter.pluginSourcePath);
|
|
127
|
+
const pluginTarget = path.join(targetDirectory, adapter.pluginTargetPath);
|
|
128
|
+
if (await pathExists(pluginSource)) {
|
|
129
|
+
await fs.mkdir(path.dirname(pluginTarget), { recursive: true });
|
|
130
|
+
await fs.copyFile(pluginSource, pluginTarget);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (adapter.legacyTargetPath) {
|
|
134
|
+
const legacyTarget = path.join(targetDirectory, adapter.legacyTargetPath);
|
|
135
|
+
await fs.mkdir(path.dirname(legacyTarget), { recursive: true });
|
|
136
|
+
await fs.writeFile(legacyTarget, finalContent, 'utf8');
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
121
140
|
console.log(` ${adapter.label}: ${adapter.targetPath} ... OK`);
|
|
122
141
|
return true;
|
|
123
142
|
}
|
|
@@ -56,10 +56,13 @@ const GLOBAL_TARGETS = {
|
|
|
56
56
|
},
|
|
57
57
|
kilocode: {
|
|
58
58
|
label: 'Kilo Code',
|
|
59
|
-
kind: '
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
kind: 'kilo-global',
|
|
60
|
+
rulesSourcePath: '.agents/plugins/agentic-senior-core/rules/agentic-senior-core.md',
|
|
61
|
+
pluginSourcePath: '.agents/plugins/agentic-senior-core/kilo-plugin/agentic-senior-core.js',
|
|
62
|
+
targetPath: () => path.join(HOME, '.config', 'kilo', 'rules', 'agentic-senior-core.md'),
|
|
63
|
+
legacyTargetPath: () => path.join(HOME, '.kilocode', 'rules', 'agentic-senior-core.md'),
|
|
64
|
+
pluginTargetPath: () => path.join(HOME, '.config', 'kilo', 'plugin', 'agentic-senior-core.js'),
|
|
65
|
+
note: 'Installs global plugin to ~/.config/kilo/plugin/ and rules to ~/.config/kilo/rules/.',
|
|
63
66
|
},
|
|
64
67
|
kiro: {
|
|
65
68
|
label: 'Kiro',
|
|
@@ -201,6 +204,46 @@ async function installCodexGlobal(target) {
|
|
|
201
204
|
return true;
|
|
202
205
|
}
|
|
203
206
|
|
|
207
|
+
async function installKiloGlobal(target) {
|
|
208
|
+
const rulesSource = path.join(REPOSITORY_ROOT, target.rulesSourcePath);
|
|
209
|
+
const pluginSource = path.join(REPOSITORY_ROOT, target.pluginSourcePath);
|
|
210
|
+
const rulesTarget = target.targetPath();
|
|
211
|
+
const pluginTarget = target.pluginTargetPath();
|
|
212
|
+
const legacyRulesTarget = target.legacyTargetPath();
|
|
213
|
+
|
|
214
|
+
if (!(await pathExists(rulesSource))) {
|
|
215
|
+
console.error(` ${target.label}: rules source not found ... FAIL`);
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
await fs.mkdir(path.dirname(rulesTarget), { recursive: true });
|
|
220
|
+
await fs.copyFile(rulesSource, rulesTarget);
|
|
221
|
+
|
|
222
|
+
await fs.mkdir(path.dirname(legacyRulesTarget), { recursive: true });
|
|
223
|
+
await fs.copyFile(rulesSource, legacyRulesTarget);
|
|
224
|
+
|
|
225
|
+
if (await pathExists(pluginSource)) {
|
|
226
|
+
await fs.mkdir(path.dirname(pluginTarget), { recursive: true });
|
|
227
|
+
await fs.copyFile(pluginSource, pluginTarget);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if (process.env.APPDATA) {
|
|
231
|
+
const appDataKiloPlugin = path.join(process.env.APPDATA, 'kilo', 'plugin', 'agentic-senior-core.js');
|
|
232
|
+
const appDataKiloRules = path.join(process.env.APPDATA, 'kilo', 'rules', 'agentic-senior-core.md');
|
|
233
|
+
try {
|
|
234
|
+
if (await pathExists(pluginSource)) {
|
|
235
|
+
await fs.mkdir(path.dirname(appDataKiloPlugin), { recursive: true });
|
|
236
|
+
await fs.copyFile(pluginSource, appDataKiloPlugin);
|
|
237
|
+
}
|
|
238
|
+
await fs.mkdir(path.dirname(appDataKiloRules), { recursive: true });
|
|
239
|
+
await fs.copyFile(rulesSource, appDataKiloRules);
|
|
240
|
+
} catch (_) {}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
console.log(` ${target.label}: ${rulesTarget} & ${pluginTarget} ... OK`);
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
|
|
204
247
|
async function installAntigravityIde(target) {
|
|
205
248
|
const pluginSource = path.join(REPOSITORY_ROOT, target.pluginSourcePath);
|
|
206
249
|
const rulesSource = path.join(REPOSITORY_ROOT, target.rulesSourcePath);
|
|
@@ -319,6 +362,10 @@ async function installGlobalTarget(targetKey) {
|
|
|
319
362
|
return await installCodexGlobal(target);
|
|
320
363
|
}
|
|
321
364
|
|
|
365
|
+
if (target.kind === 'kilo-global') {
|
|
366
|
+
return await installKiloGlobal(target);
|
|
367
|
+
}
|
|
368
|
+
|
|
322
369
|
const sourcePath = path.join(REPOSITORY_ROOT, target.sourcePath);
|
|
323
370
|
const targetPath = target.targetPath();
|
|
324
371
|
|
|
@@ -111,8 +111,13 @@ const IDE_CHECKS = [
|
|
|
111
111
|
{
|
|
112
112
|
name: 'Kilo Code',
|
|
113
113
|
type: 'adapter',
|
|
114
|
-
checkPaths: [
|
|
115
|
-
|
|
114
|
+
checkPaths: [
|
|
115
|
+
path.join(HOME, '.config', 'kilo'),
|
|
116
|
+
path.join(HOME, '.kilo'),
|
|
117
|
+
path.join(HOME, '.kilocode'),
|
|
118
|
+
...(process.env.APPDATA ? [path.join(process.env.APPDATA, 'kilo')] : []),
|
|
119
|
+
],
|
|
120
|
+
installHint: 'asc global --kilocode',
|
|
116
121
|
},
|
|
117
122
|
{
|
|
118
123
|
name: 'Roo Code',
|
|
@@ -14,7 +14,9 @@ const ADAPTER_FILES = [
|
|
|
14
14
|
{ label: 'Continue', path: '.continue/rules/agentic-senior-core.md' },
|
|
15
15
|
{ label: 'Zed', path: '.zed/rules/agentic-senior-core.md' },
|
|
16
16
|
{ label: 'Aider', path: 'CONVENTIONS.md' },
|
|
17
|
-
{ label: 'Kilo Code', path: '.
|
|
17
|
+
{ label: 'Kilo Code (modern rules)', path: '.kilo/rules/agentic-senior-core.md' },
|
|
18
|
+
{ label: 'Kilo Code (modern plugin)', path: '.kilo/plugin/agentic-senior-core.js' },
|
|
19
|
+
{ label: 'Kilo Code (legacy rules)', path: '.kilocode/rules/agentic-senior-core.md' },
|
|
18
20
|
{ label: 'Roo Code', path: '.roo/rules/agentic-senior-core.md' },
|
|
19
21
|
{ label: 'OpenHands', path: '.openhands/microagents/agentic-senior-core.md' },
|
|
20
22
|
{ label: 'ASC Compiled Validator', path: '.asc/hooks/pre-commit-validator.cjs' },
|
package/package.json
CHANGED
package/plugin.yaml
CHANGED