@ethlete/agent-rules 0.1.0-next.5 → 0.1.0-next.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.
- package/CHANGELOG.md +20 -0
- package/README.md +175 -4
- package/content/git-hooks/post-checkout.sh +10 -0
- package/content/git-hooks/pre-push.sh +5 -0
- package/content/hooks/context-warning.py +39 -11
- package/content/skills/git-commit/SKILL.md +6 -7
- package/content/skills/git-flow/SKILL.md +83 -0
- package/content/skills/handoff/SKILL.md +4 -0
- package/content/skills/query/SKILL.md +17 -13
- package/package.json +12 -1
- package/src/index.js +11 -10
- package/src/index.js.map +1 -1
- package/src/lib/commitlint.d.ts +10 -0
- package/src/lib/commitlint.js +51 -0
- package/src/lib/commitlint.js.map +1 -0
- package/src/lib/config.d.ts +28 -0
- package/src/lib/config.js +21 -3
- package/src/lib/config.js.map +1 -1
- package/src/lib/git-flow/build.d.ts +35 -0
- package/src/lib/git-flow/build.js +24 -0
- package/src/lib/git-flow/build.js.map +1 -0
- package/src/lib/git-flow/config.d.ts +59 -0
- package/src/lib/git-flow/config.js +50 -0
- package/src/lib/git-flow/config.js.map +1 -0
- package/src/lib/git-flow/index.d.ts +5 -0
- package/src/lib/git-flow/index.js +9 -0
- package/src/lib/git-flow/index.js.map +1 -0
- package/src/lib/git-flow/parse.d.ts +49 -0
- package/src/lib/git-flow/parse.js +274 -0
- package/src/lib/git-flow/parse.js.map +1 -0
- package/src/lib/git-flow/start.d.ts +22 -0
- package/src/lib/git-flow/start.js +24 -0
- package/src/lib/git-flow/start.js.map +1 -0
- package/src/lib/git-flow/validate.d.ts +34 -0
- package/src/lib/git-flow/validate.js +72 -0
- package/src/lib/git-flow/validate.js.map +1 -0
- package/src/lib/git-flow-command.d.ts +4 -0
- package/src/lib/git-flow-command.js +157 -0
- package/src/lib/git-flow-command.js.map +1 -0
- package/src/lib/git-flow-repair.d.ts +17 -0
- package/src/lib/git-flow-repair.js +150 -0
- package/src/lib/git-flow-repair.js.map +1 -0
- package/src/lib/git-flow-start.d.ts +20 -0
- package/src/lib/git-flow-start.js +147 -0
- package/src/lib/git-flow-start.js.map +1 -0
- package/src/lib/git.d.ts +27 -0
- package/src/lib/git.js +49 -0
- package/src/lib/git.js.map +1 -0
- package/src/lib/gitlab.d.ts +35 -0
- package/src/lib/gitlab.js +98 -0
- package/src/lib/gitlab.js.map +1 -0
- package/src/lib/jira.d.ts +28 -0
- package/src/lib/jira.js +83 -0
- package/src/lib/jira.js.map +1 -0
- package/src/lib/plan.d.ts +0 -1
- package/src/lib/plan.js +20 -4
- package/src/lib/plan.js.map +1 -1
- package/src/lib/prompt.d.ts +8 -0
- package/src/lib/prompt.js +27 -0
- package/src/lib/prompt.js.map +1 -0
- package/src/lib/render.d.ts +20 -2
- package/src/lib/render.js +31 -8
- package/src/lib/render.js.map +1 -1
- package/src/lib/sync.d.ts +0 -1
- package/src/lib/sync.js +2 -2
- package/src/lib/sync.js.map +1 -1
- package/src/lib/targets/claude-hooks.js +1 -1
- package/src/lib/targets/claude-hooks.js.map +1 -1
- package/src/lib/targets/claude.js +1 -1
- package/src/lib/targets/claude.js.map +1 -1
- package/src/lib/targets/codex-hooks.js +1 -1
- package/src/lib/targets/codex-hooks.js.map +1 -1
- package/src/lib/targets/codex.js +1 -1
- package/src/lib/targets/codex.js.map +1 -1
- package/src/lib/targets/copilot.js +1 -1
- package/src/lib/targets/copilot.js.map +1 -1
- package/src/lib/targets/cursor.js +1 -1
- package/src/lib/targets/cursor.js.map +1 -1
- package/src/lib/targets/git-hooks.d.ts +24 -0
- package/src/lib/targets/git-hooks.js +70 -0
- package/src/lib/targets/git-hooks.js.map +1 -0
- package/src/lib/targets/hooks-shared.d.ts +0 -1
- package/src/lib/targets/hooks-shared.js +7 -7
- package/src/lib/targets/hooks-shared.js.map +1 -1
- package/src/lib/targets/shared.d.ts +0 -1
- package/src/lib/targets/shared.js +1 -1
- package/src/lib/targets/shared.js.map +1 -1
package/src/lib/jira.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchJiraIssue = exports.resolveJiraCredentials = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
const TIMEOUT_MS = 15000;
|
|
7
|
+
const readEnv = (name) => {
|
|
8
|
+
var _a;
|
|
9
|
+
const value = (_a = process.env[name]) === null || _a === void 0 ? void 0 : _a.trim();
|
|
10
|
+
return value ? value : undefined;
|
|
11
|
+
};
|
|
12
|
+
const normalizeHost = (host) => {
|
|
13
|
+
const withScheme = /^https?:\/\//.test(host) ? host : `https://${host}`;
|
|
14
|
+
return withScheme.replace(/\/+$/, '');
|
|
15
|
+
};
|
|
16
|
+
const CREDENTIAL_HELP = [
|
|
17
|
+
`Set JIRA_HOST, JIRA_EMAIL and JIRA_API_TOKEN, or add a "jira" block to ${config_1.LOCAL_CONFIG_FILE_NAME} (gitignored):`,
|
|
18
|
+
' { "jira": { "host": "https://your-team.atlassian.net", "email": "you@example.com", "token": "…" } }',
|
|
19
|
+
'Create a token at https://id.atlassian.com/manage-profile/security/api-tokens.',
|
|
20
|
+
].join('\n');
|
|
21
|
+
/**
|
|
22
|
+
* The host may also be committed in `ethlete-agents.config.json` (it is not a secret); the email and
|
|
23
|
+
* token may only come from the environment or the gitignored local config.
|
|
24
|
+
*/
|
|
25
|
+
const resolveJiraCredentials = (options) => {
|
|
26
|
+
var _a, _b, _c, _d, _e;
|
|
27
|
+
const local = (0, config_1.readLocalConfig)(options.root);
|
|
28
|
+
const localJira = (_a = (local.exists && local.valid ? local.config.jira : undefined)) !== null && _a !== void 0 ? _a : {};
|
|
29
|
+
const host = (_c = (_b = readEnv('JIRA_HOST')) !== null && _b !== void 0 ? _b : localJira.host) !== null && _c !== void 0 ? _c : options.settings.host;
|
|
30
|
+
const email = (_d = readEnv('JIRA_EMAIL')) !== null && _d !== void 0 ? _d : localJira.email;
|
|
31
|
+
const token = (_e = readEnv('JIRA_API_TOKEN')) !== null && _e !== void 0 ? _e : localJira.token;
|
|
32
|
+
const missing = [...(host ? [] : ['host']), ...(email ? [] : ['email']), ...(token ? [] : ['API token'])];
|
|
33
|
+
if (!host || !email || !token) {
|
|
34
|
+
throw new Error(`Jira is not configured — missing ${missing.join(', ')}.\n${CREDENTIAL_HELP}`);
|
|
35
|
+
}
|
|
36
|
+
return { host: normalizeHost(host), email, token };
|
|
37
|
+
};
|
|
38
|
+
exports.resolveJiraCredentials = resolveJiraCredentials;
|
|
39
|
+
const request = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
const { url, credentials, describe } = options;
|
|
41
|
+
const authorization = Buffer.from(`${credentials.email}:${credentials.token}`).toString('base64');
|
|
42
|
+
const response = yield fetch(url, {
|
|
43
|
+
headers: { authorization: `Basic ${authorization}`, accept: 'application/json' },
|
|
44
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
45
|
+
});
|
|
46
|
+
if (response.status === 401 || response.status === 403) {
|
|
47
|
+
throw new Error(`Jira rejected the credentials (${response.status}).\n${CREDENTIAL_HELP}`);
|
|
48
|
+
}
|
|
49
|
+
if (response.status === 404)
|
|
50
|
+
throw new Error(`Jira has no ${describe}, or the token cannot see it.`);
|
|
51
|
+
if (!response.ok)
|
|
52
|
+
throw new Error(`Jira responded ${response.status} ${response.statusText} for ${describe}.`);
|
|
53
|
+
return (yield response.json());
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* A branch subject must be a plain string. A rich-text or select field configured as the subject
|
|
57
|
+
* field yields an object, which is a misconfiguration to report rather than something to stringify.
|
|
58
|
+
*/
|
|
59
|
+
const readSubjectField = (fields, field) => {
|
|
60
|
+
if (!field)
|
|
61
|
+
return undefined;
|
|
62
|
+
const value = fields[field];
|
|
63
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
64
|
+
};
|
|
65
|
+
const fetchJiraIssue = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
67
|
+
const { key, credentials, settings } = options;
|
|
68
|
+
const fields = ['summary', 'issuetype', 'parent', ...(settings.subjectField ? [settings.subjectField] : [])];
|
|
69
|
+
const issue = (yield request({
|
|
70
|
+
url: `${credentials.host}/rest/api/3/issue/${encodeURIComponent(key)}?fields=${fields.join(',')}`,
|
|
71
|
+
credentials,
|
|
72
|
+
describe: `issue ${key}`,
|
|
73
|
+
}));
|
|
74
|
+
return {
|
|
75
|
+
key: (_a = issue.key) !== null && _a !== void 0 ? _a : key,
|
|
76
|
+
summary: (_c = (_b = issue.fields) === null || _b === void 0 ? void 0 : _b.summary) !== null && _c !== void 0 ? _c : '',
|
|
77
|
+
issueType: (_f = (_e = (_d = issue.fields) === null || _d === void 0 ? void 0 : _d.issuetype) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : '',
|
|
78
|
+
parentKey: (_h = (_g = issue.fields) === null || _g === void 0 ? void 0 : _g.parent) === null || _h === void 0 ? void 0 : _h.key,
|
|
79
|
+
subject: readSubjectField((_j = issue.fields) !== null && _j !== void 0 ? _j : {}, settings.subjectField),
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
exports.fetchJiraIssue = fetchJiraIssue;
|
|
83
|
+
//# sourceMappingURL=jira.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/jira.ts"],"names":[],"mappings":"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"}
|
package/src/lib/plan.d.ts
CHANGED
package/src/lib/plan.js
CHANGED
|
@@ -11,6 +11,7 @@ const claude_hooks_1 = require("./targets/claude-hooks");
|
|
|
11
11
|
const claude_1 = require("./targets/claude");
|
|
12
12
|
const codex_1 = require("./targets/codex");
|
|
13
13
|
const codex_hooks_1 = require("./targets/codex-hooks");
|
|
14
|
+
const git_hooks_1 = require("./targets/git-hooks");
|
|
14
15
|
const hooks_shared_1 = require("./targets/hooks-shared");
|
|
15
16
|
const copilot_1 = require("./targets/copilot");
|
|
16
17
|
const cursor_1 = require("./targets/cursor");
|
|
@@ -66,7 +67,7 @@ const collectLocalConfigWarnings = (root) => {
|
|
|
66
67
|
}
|
|
67
68
|
const warnings = [];
|
|
68
69
|
if (local.unknownKeys.length > 0) {
|
|
69
|
-
warnings.push(`${config_1.LOCAL_CONFIG_FILE_NAME} contains unsupported key(s): ${local.unknownKeys.join(', ')} — the local file supports "disableHooks", "disableAutoHandoffSave" and "
|
|
70
|
+
warnings.push(`${config_1.LOCAL_CONFIG_FILE_NAME} contains unsupported key(s): ${local.unknownKeys.join(', ')} — the local file supports "disableHooks", "disableAutoHandoffSave", "sdkSourcePath" and "jira"; it never changes what sync writes.`);
|
|
70
71
|
}
|
|
71
72
|
warnings.push(...describeSdkSourcePath({ root, value: local.config.sdkSourcePath }));
|
|
72
73
|
const disable = local.config.disableHooks;
|
|
@@ -85,8 +86,19 @@ const collectLocalConfigWarnings = (root) => {
|
|
|
85
86
|
}
|
|
86
87
|
return warnings;
|
|
87
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* Only `.husky/` is written into, never `.git/hooks/`: the generated files are committed and CI's
|
|
91
|
+
* `check` diffs them, so a hook that lives outside the working tree could never be in sync.
|
|
92
|
+
*/
|
|
93
|
+
const collectGitHookWarnings = (config) => {
|
|
94
|
+
if (config.gitHooks.length === 0 || (0, fs_1.existsSync)((0, path_1.join)(config.root, git_hooks_1.HUSKY_DIR)))
|
|
95
|
+
return [];
|
|
96
|
+
return [
|
|
97
|
+
`gitHooks is set to ${config.gitHooks.join(', ')} but there is no ${git_hooks_1.HUSKY_DIR}/ directory — nothing was written. Install husky, or run \`npx ethlete-agents git-flow check\` from your own hooks.`,
|
|
98
|
+
];
|
|
99
|
+
};
|
|
88
100
|
const collectWarnings = (config) => {
|
|
89
|
-
const warnings = collectLocalConfigWarnings(config.root);
|
|
101
|
+
const warnings = [...collectLocalConfigWarnings(config.root), ...collectGitHookWarnings(config)];
|
|
90
102
|
if (!config.claudeMdImportsAgentsMd)
|
|
91
103
|
return warnings;
|
|
92
104
|
if (!config.targets.includes('codex')) {
|
|
@@ -102,8 +114,9 @@ const collectWarnings = (config) => {
|
|
|
102
114
|
* result and `check` diffs it.
|
|
103
115
|
*/
|
|
104
116
|
const buildPlan = (options) => {
|
|
105
|
-
const { config
|
|
117
|
+
const { config } = options;
|
|
106
118
|
(0, hooks_shared_1.assertKnownHooks)(config.hooks);
|
|
119
|
+
(0, git_hooks_1.assertKnownGitHooks)(config.gitHooks);
|
|
107
120
|
const { kept, skipped } = (0, filter_1.filterContent)((0, load_content_1.loadContent)(), config);
|
|
108
121
|
const skills = kept.filter((item) => item.frontmatter.kind === 'skill');
|
|
109
122
|
const emittedSkills = new Set(skills.map((item) => item.frontmatter.name));
|
|
@@ -112,7 +125,6 @@ const buildPlan = (options) => {
|
|
|
112
125
|
skills,
|
|
113
126
|
emittedSkills,
|
|
114
127
|
vars: config.vars,
|
|
115
|
-
version,
|
|
116
128
|
claudeMdImportsAgentsMd: config.claudeMdImportsAgentsMd,
|
|
117
129
|
hooks: config.hooks,
|
|
118
130
|
};
|
|
@@ -139,6 +151,10 @@ const buildPlan = (options) => {
|
|
|
139
151
|
context,
|
|
140
152
|
codexTarget: config.targets.includes('codex'),
|
|
141
153
|
existingHooks: readExisting(config.root, codex_hooks_1.CODEX_HOOKS_FILE),
|
|
154
|
+
}), ...(0, git_hooks_1.emitGitHooks)({
|
|
155
|
+
gitHooks: config.gitHooks,
|
|
156
|
+
huskyExists: (0, fs_1.existsSync)((0, path_1.join)(config.root, git_hooks_1.HUSKY_DIR)),
|
|
157
|
+
existing: Object.fromEntries(Object.keys(git_hooks_1.KNOWN_GIT_HOOKS).map((name) => [name, readExisting(config.root, (0, git_hooks_1.huskyHookPath)(name))])),
|
|
142
158
|
}));
|
|
143
159
|
return { files, skipped, danglingLinks: findDanglingLinks(kept, emittedSkills), warnings: collectWarnings(config) };
|
|
144
160
|
};
|
package/src/lib/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/plan.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.confirm = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const promises_1 = require("readline/promises");
|
|
6
|
+
/**
|
|
7
|
+
* Without a TTY there is nobody to ask, so an unattended run must pass `--yes` explicitly rather
|
|
8
|
+
* than have silence read as consent.
|
|
9
|
+
*/
|
|
10
|
+
const confirm = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
11
|
+
if (options.assumeYes)
|
|
12
|
+
return true;
|
|
13
|
+
if (!process.stdin.isTTY) {
|
|
14
|
+
console.error('Nothing to prompt on (no TTY). Re-run with --yes to proceed unattended.');
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const readline = (0, promises_1.createInterface)({ input: process.stdin, output: process.stdout });
|
|
18
|
+
try {
|
|
19
|
+
const answer = yield readline.question(`${options.question} [y/N] `);
|
|
20
|
+
return /^y(es)?$/i.test(answer.trim());
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
readline.close();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
exports.confirm = confirm;
|
|
27
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/prompt.ts"],"names":[],"mappings":";;;;AAAA,gDAAoD;AAEpD;;;GAGG;AACI,MAAM,OAAO,GAAG,CAAO,OAAiD,EAAE,EAAE;IACjF,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAEzF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,SAAS,CAAC,CAAC;QAErE,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC,CAAA,CAAC;AAlBW,QAAA,OAAO,WAkBlB"}
|
package/src/lib/render.d.ts
CHANGED
|
@@ -13,7 +13,14 @@ export type LinkResolver = {
|
|
|
13
13
|
};
|
|
14
14
|
export declare const START_MARKER = "<!-- ethlete:agent-rules:start -->";
|
|
15
15
|
export declare const END_MARKER = "<!-- ethlete:agent-rules:end -->";
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Never interpolate the package version here. `check` diffs whole file contents, so a version in
|
|
18
|
+
* the banner puts every generated file out of sync on a release bump that changed no content —
|
|
19
|
+
* turning each release into a repo-wide re-sync commit and a red CI in the meantime.
|
|
20
|
+
*/
|
|
21
|
+
export declare const BANNER = "<!-- Generated by @ethlete/agent-rules \u2014 DO NOT EDIT. Run `npx ethlete-agents sync`. -->";
|
|
22
|
+
/** `#` comment form for generated scripts, which must stay runnable. See {@link BANNER}. */
|
|
23
|
+
export declare const SHELL_BANNER = "# Generated by @ethlete/agent-rules \u2014 DO NOT EDIT. Run `npx ethlete-agents sync`.";
|
|
17
24
|
export declare const renderBody: (options: {
|
|
18
25
|
item: ContentItem;
|
|
19
26
|
vars: Record<string, string | string[]>;
|
|
@@ -31,9 +38,20 @@ export declare const renderDescription: (options: {
|
|
|
31
38
|
}) => string;
|
|
32
39
|
/**
|
|
33
40
|
* Rewrites the block between the markers, leaving everything a repo wrote around it untouched.
|
|
34
|
-
* A file without markers gets the block appended.
|
|
41
|
+
* A file without markers gets the block appended. Shell files pass their own `#` markers.
|
|
35
42
|
*/
|
|
36
43
|
export declare const replaceMarkedBlock: (options: {
|
|
37
44
|
existing: string;
|
|
38
45
|
block: string;
|
|
46
|
+
startMarker?: string;
|
|
47
|
+
endMarker?: string;
|
|
48
|
+
}) => string;
|
|
49
|
+
/**
|
|
50
|
+
* Takes the block back out, so switching a generated block off in the config removes it instead of
|
|
51
|
+
* leaving it behind — `sync`'s file-level pruning cannot reach inside a file the repo also owns.
|
|
52
|
+
*/
|
|
53
|
+
export declare const removeMarkedBlock: (options: {
|
|
54
|
+
existing: string;
|
|
55
|
+
startMarker: string;
|
|
56
|
+
endMarker: string;
|
|
39
57
|
}) => string;
|
package/src/lib/render.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.replaceMarkedBlock = exports.renderDescription = exports.substituteVars = exports.renderBody = exports.
|
|
3
|
+
exports.removeMarkedBlock = exports.replaceMarkedBlock = exports.renderDescription = exports.substituteVars = exports.renderBody = exports.SHELL_BANNER = exports.BANNER = exports.END_MARKER = exports.START_MARKER = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* `{% … %}`, not `{{ … }}`: content bodies routinely quote Angular templates, and an example
|
|
6
6
|
* containing `{{ count() }}` must not be mistaken for a template token.
|
|
@@ -8,8 +8,14 @@ exports.replaceMarkedBlock = exports.renderDescription = exports.substituteVars
|
|
|
8
8
|
const TOKEN_PATTERN = /\{%\s*([a-zA-Z0-9_:.-]+)\s*%\}/g;
|
|
9
9
|
exports.START_MARKER = '<!-- ethlete:agent-rules:start -->';
|
|
10
10
|
exports.END_MARKER = '<!-- ethlete:agent-rules:end -->';
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Never interpolate the package version here. `check` diffs whole file contents, so a version in
|
|
13
|
+
* the banner puts every generated file out of sync on a release bump that changed no content —
|
|
14
|
+
* turning each release into a repo-wide re-sync commit and a red CI in the meantime.
|
|
15
|
+
*/
|
|
16
|
+
exports.BANNER = '<!-- Generated by @ethlete/agent-rules — DO NOT EDIT. Run `npx ethlete-agents sync`. -->';
|
|
17
|
+
/** `#` comment form for generated scripts, which must stay runnable. See {@link BANNER}. */
|
|
18
|
+
exports.SHELL_BANNER = '# Generated by @ethlete/agent-rules — DO NOT EDIT. Run `npx ethlete-agents sync`.';
|
|
13
19
|
const renderValue = (value) => Array.isArray(value) ? value.map((entry) => `\`${entry}\``).join(', ') : value;
|
|
14
20
|
const renderBody = (options) => {
|
|
15
21
|
const { item, vars, links } = options;
|
|
@@ -56,18 +62,35 @@ const renderDescription = (options) => (0, exports.substituteVars)({
|
|
|
56
62
|
exports.renderDescription = renderDescription;
|
|
57
63
|
/**
|
|
58
64
|
* Rewrites the block between the markers, leaving everything a repo wrote around it untouched.
|
|
59
|
-
* A file without markers gets the block appended.
|
|
65
|
+
* A file without markers gets the block appended. Shell files pass their own `#` markers.
|
|
60
66
|
*/
|
|
61
67
|
const replaceMarkedBlock = (options) => {
|
|
68
|
+
var _a, _b;
|
|
62
69
|
const { existing, block } = options;
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const
|
|
70
|
+
const startMarker = (_a = options.startMarker) !== null && _a !== void 0 ? _a : exports.START_MARKER;
|
|
71
|
+
const endMarker = (_b = options.endMarker) !== null && _b !== void 0 ? _b : exports.END_MARKER;
|
|
72
|
+
const wrapped = `${startMarker}\n${block}\n${endMarker}`;
|
|
73
|
+
const start = existing.indexOf(startMarker);
|
|
74
|
+
const end = existing.indexOf(endMarker);
|
|
66
75
|
if (start === -1 || end === -1 || end < start) {
|
|
67
76
|
const separator = existing.trim().length > 0 ? `${existing.trimEnd()}\n\n` : '';
|
|
68
77
|
return `${separator}${wrapped}\n`;
|
|
69
78
|
}
|
|
70
|
-
return `${existing.slice(0, start)}${wrapped}${existing.slice(end +
|
|
79
|
+
return `${existing.slice(0, start)}${wrapped}${existing.slice(end + endMarker.length)}`;
|
|
71
80
|
};
|
|
72
81
|
exports.replaceMarkedBlock = replaceMarkedBlock;
|
|
82
|
+
/**
|
|
83
|
+
* Takes the block back out, so switching a generated block off in the config removes it instead of
|
|
84
|
+
* leaving it behind — `sync`'s file-level pruning cannot reach inside a file the repo also owns.
|
|
85
|
+
*/
|
|
86
|
+
const removeMarkedBlock = (options) => {
|
|
87
|
+
const { existing, startMarker, endMarker } = options;
|
|
88
|
+
const start = existing.indexOf(startMarker);
|
|
89
|
+
const end = existing.indexOf(endMarker);
|
|
90
|
+
if (start === -1 || end === -1 || end < start)
|
|
91
|
+
return existing;
|
|
92
|
+
const kept = `${existing.slice(0, start).trimEnd()}\n${existing.slice(end + endMarker.length).trimStart()}`;
|
|
93
|
+
return kept.trim().length > 0 ? kept : '';
|
|
94
|
+
};
|
|
95
|
+
exports.removeMarkedBlock = removeMarkedBlock;
|
|
73
96
|
//# sourceMappingURL=render.js.map
|
package/src/lib/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/render.ts"],"names":[],"mappings":";;;AAYA;;;GAGG;AACH,MAAM,aAAa,GAAG,iCAAiC,CAAC;AAE3C,QAAA,YAAY,GAAG,oCAAoC,CAAC;AACpD,QAAA,UAAU,GAAG,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/render.ts"],"names":[],"mappings":"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"}
|
package/src/lib/sync.d.ts
CHANGED
package/src/lib/sync.js
CHANGED
|
@@ -39,7 +39,7 @@ const describe = (change) => {
|
|
|
39
39
|
};
|
|
40
40
|
const sync = (options) => {
|
|
41
41
|
const config = (0, config_1.loadConfig)({ root: options.root, targetOverride: options.targets });
|
|
42
|
-
const { files, skipped, danglingLinks, warnings } = (0, plan_1.buildPlan)({ config
|
|
42
|
+
const { files, skipped, danglingLinks, warnings } = (0, plan_1.buildPlan)({ config });
|
|
43
43
|
const changes = diffPlan({ root: options.root, files, owned: (0, owned_paths_1.collectOwnedPaths)(options.root) });
|
|
44
44
|
console.log(`Targets: ${config.targets.join(', ')}`);
|
|
45
45
|
for (const warning of warnings) {
|
|
@@ -78,7 +78,7 @@ const sync = (options) => {
|
|
|
78
78
|
exports.sync = sync;
|
|
79
79
|
const check = (options) => {
|
|
80
80
|
const config = (0, config_1.loadConfig)({ root: options.root, targetOverride: options.targets });
|
|
81
|
-
const { files, warnings } = (0, plan_1.buildPlan)({ config
|
|
81
|
+
const { files, warnings } = (0, plan_1.buildPlan)({ config });
|
|
82
82
|
const changes = diffPlan({ root: options.root, files, owned: (0, owned_paths_1.collectOwnedPaths)(options.root) });
|
|
83
83
|
for (const warning of warnings) {
|
|
84
84
|
console.warn(` warn ${warning}`);
|
package/src/lib/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/sync.ts"],"names":[],"mappings":";;;AAAA,2BAAwG;AACxG,+BAA+C;AAC/C,qCAAmD;AACnD,+CAAkD;AAClD,iCAAmC;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../../libs/agent-rules/src/lib/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ const emitClaudeHooks = (options) => {
|
|
|
13
13
|
const { context, claudeTarget, existingSettings } = options;
|
|
14
14
|
const hooks = claudeTarget ? context.hooks : [];
|
|
15
15
|
return [
|
|
16
|
-
...(0, hooks_shared_1.emitHookScripts)({ hooks, hooksDir: HOOKS_DIR
|
|
16
|
+
...(0, hooks_shared_1.emitHookScripts)({ hooks, hooksDir: HOOKS_DIR }),
|
|
17
17
|
...(0, hooks_shared_1.emitHookSettings)({
|
|
18
18
|
path: exports.CLAUDE_SETTINGS_FILE,
|
|
19
19
|
existing: existingSettings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-hooks.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/claude-hooks.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AAEtD,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,gCAAgC,SAAS,IAAI,IAAI,kBAAkB,CAAC;AAEzG;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,OAI/B,EAAiB,EAAE;IAClB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhD,OAAO;QACL,GAAG,IAAA,8BAAe,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"claude-hooks.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/claude-hooks.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AAEtD,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,gCAAgC,SAAS,IAAI,IAAI,kBAAkB,CAAC;AAEzG;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,OAI/B,EAAiB,EAAE;IAClB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhD,OAAO;QACL,GAAG,IAAA,8BAAe,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAClD,GAAG,IAAA,+BAAgB,EAAC;YAClB,IAAI,EAAE,4BAAoB;YAC1B,QAAQ,EAAE,gBAAgB;YAC1B,KAAK;YACL,QAAQ,EAAE,SAAS;YACnB,UAAU;YACV,eAAe,EAAE,IAAI;SACtB,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,eAAe,mBAmB1B"}
|
|
@@ -13,7 +13,7 @@ const quoteList = (values) => values.map((value) => ` - '${value}'`).join('\n')
|
|
|
13
13
|
* rules directory is skipped entirely rather than loading everything twice.
|
|
14
14
|
*/
|
|
15
15
|
const emitClaude = (context) => {
|
|
16
|
-
const banner =
|
|
16
|
+
const banner = render_1.BANNER;
|
|
17
17
|
const links = (0, shared_1.makeLinks)({
|
|
18
18
|
context,
|
|
19
19
|
skill: (name) => `the **\`ethlete-${name}\`** skill`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/claude.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/claude.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AACnC,qCAA4F;AAE5F,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,0BAA0B,IAAI,EAAE,CAAC;AAEpE,MAAM,SAAS,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3F;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAChE,MAAM,MAAM,GAAG,eAAM,CAAC;IACtB,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC;QACtB,OAAO;QACP,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,YAAY;QACpD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,iCAAiC;KAC5E,CAAC,CAAC;IACH,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpF,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,yBAAyB,IAAI,KAAK;gBACxC,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,oBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AA1BW,QAAA,UAAU,cA0BrB"}
|
|
@@ -18,7 +18,7 @@ const emitCodexHooks = (options) => {
|
|
|
18
18
|
const { context, codexTarget, existingHooks } = options;
|
|
19
19
|
const hooks = codexTarget ? context.hooks : [];
|
|
20
20
|
return [
|
|
21
|
-
...(0, hooks_shared_1.emitHookScripts)({ hooks, hooksDir: HOOKS_DIR
|
|
21
|
+
...(0, hooks_shared_1.emitHookScripts)({ hooks, hooksDir: HOOKS_DIR }),
|
|
22
22
|
...(0, hooks_shared_1.emitHookSettings)({
|
|
23
23
|
path: exports.CODEX_HOOKS_FILE,
|
|
24
24
|
existing: existingHooks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-hooks.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/codex-hooks.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AAEtD,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,6CAA6C,SAAS,IAAI,IAAI,iBAAiB,CAAC;AAErH;;;;GAIG;AACI,MAAM,cAAc,GAAG,CAAC,OAI9B,EAAiB,EAAE;IAClB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,OAAO;QACL,GAAG,IAAA,8BAAe,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"codex-hooks.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/codex-hooks.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AAEtD,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,6CAA6C,SAAS,IAAI,IAAI,iBAAiB,CAAC;AAErH;;;;GAIG;AACI,MAAM,cAAc,GAAG,CAAC,OAI9B,EAAiB,EAAE;IAClB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,OAAO;QACL,GAAG,IAAA,8BAAe,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAClD,GAAG,IAAA,+BAAgB,EAAC;YAClB,IAAI,EAAE,wBAAgB;YACtB,QAAQ,EAAE,aAAa;YACvB,KAAK;YACL,QAAQ,EAAE,SAAS;YACnB,UAAU;YACV,eAAe,EAAE,KAAK;SACvB,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,cAAc,kBAmBzB"}
|
package/src/lib/targets/codex.js
CHANGED
|
@@ -20,7 +20,7 @@ const emitCodex = (options) => {
|
|
|
20
20
|
"On-demand guides live in `.agents/skills/ethlete-*/SKILL.md`; each one's frontmatter says when to read it. If your agent does not discover skills on its own, list that directory and read the matching guide before starting that kind of work — do not work from memory.",
|
|
21
21
|
].join('\n\n'));
|
|
22
22
|
}
|
|
23
|
-
const block = (0, shared_1.document)([
|
|
23
|
+
const block = (0, shared_1.document)([render_1.BANNER, ...sections]).trimEnd();
|
|
24
24
|
return [{ path: exports.CODEX_FILE, contents: (0, render_1.replaceMarkedBlock)({ existing, block }) }];
|
|
25
25
|
};
|
|
26
26
|
exports.emitCodex = emitCodex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/codex.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/codex.ts"],"names":[],"mappings":";;;AAAA,sCAAuD;AACvD,qCAAuF;AAE1E,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;;;;;GAMG;AACI,MAAM,SAAS,GAAG,CAAC,OAAmD,EAAiB,EAAE;IAC9F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAA,0BAAiB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CACX;YACE,mBAAmB;YACnB,4QAA4Q;SAC7Q,CAAC,IAAI,CAAC,MAAM,CAAC,CACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,CAAC,eAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAExD,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAU,EAAE,QAAQ,EAAE,IAAA,2BAAkB,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AAhBW,QAAA,SAAS,aAgBpB"}
|
|
@@ -11,7 +11,7 @@ exports.COPILOT_FILE = '.github/copilot-instructions.md';
|
|
|
11
11
|
*/
|
|
12
12
|
const emitCopilot = (options) => {
|
|
13
13
|
const { context, existing } = options;
|
|
14
|
-
const banner =
|
|
14
|
+
const banner = render_1.BANNER;
|
|
15
15
|
const sections = context.rules.map((item) => (0, shared_1.body)({ item, context, links: (0, shared_1.agentsSkillsLinks)(context) }));
|
|
16
16
|
const block = (0, shared_1.document)([banner, ...sections]).trimEnd();
|
|
17
17
|
return [{ path: exports.COPILOT_FILE, contents: (0, render_1.replaceMarkedBlock)({ existing, block }) }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/copilot.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/copilot.ts"],"names":[],"mappings":";;;AAAA,sCAAuD;AACvD,qCAAuF;AAE1E,QAAA,YAAY,GAAG,iCAAiC,CAAC;AAE9D;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAC,OAAmD,EAAiB,EAAE;IAChG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,MAAM,GAAG,eAAM,CAAC;IACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAA,0BAAiB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAExD,OAAO,CAAC,EAAE,IAAI,EAAE,oBAAY,EAAE,QAAQ,EAAE,IAAA,2BAAkB,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC,CAAC;AAPW,QAAA,WAAW,eAOtB"}
|
|
@@ -9,7 +9,7 @@ const shared_1 = require("./shared");
|
|
|
9
9
|
* agentskills.io-aware tool.
|
|
10
10
|
*/
|
|
11
11
|
const emitCursor = (context) => {
|
|
12
|
-
const banner =
|
|
12
|
+
const banner = render_1.BANNER;
|
|
13
13
|
const links = (0, shared_1.agentsSkillsLinks)(context);
|
|
14
14
|
return context.rules.map((item) => {
|
|
15
15
|
const { name, paths } = item.frontmatter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/cursor.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/cursor.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AACnC,qCAAgH;AAEhH;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAChE,MAAM,MAAM,GAAG,eAAM,CAAC;IACtB,MAAM,KAAK,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,MAAM,WAAW,GAAG;YAClB,KAAK;YACL,gBAAgB,IAAA,mBAAU,EAAC,IAAA,oBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;YAC5D,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;YACzD,mBAAmB;YACnB,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO;YACL,IAAI,EAAE,yBAAyB,IAAI,MAAM;YACzC,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EmittedFile } from './shared';
|
|
2
|
+
export declare const HUSKY_DIR = ".husky";
|
|
3
|
+
export declare const START_MARKER = "# ethlete:git-flow:start";
|
|
4
|
+
export declare const END_MARKER = "# ethlete:git-flow:end";
|
|
5
|
+
/**
|
|
6
|
+
* Git hooks a repo can opt into via the config's `gitHooks` array. Like the agent hooks these never
|
|
7
|
+
* default: a generated block that can reject a developer's push is a higher-stakes artifact than a
|
|
8
|
+
* markdown one, so a repo asks for it.
|
|
9
|
+
*/
|
|
10
|
+
export declare const KNOWN_GIT_HOOKS: Record<string, {
|
|
11
|
+
file: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const assertKnownGitHooks: (hooks: string[]) => void;
|
|
14
|
+
export declare const huskyHookPath: (name: string) => string;
|
|
15
|
+
/**
|
|
16
|
+
* Appends the check to whatever the repo already has in `.husky/<name>`, between markers — those
|
|
17
|
+
* files routinely hold a git-lfs hook that must keep running and must keep reading stdin first,
|
|
18
|
+
* which is why the appended block never consumes it.
|
|
19
|
+
*/
|
|
20
|
+
export declare const emitGitHooks: (options: {
|
|
21
|
+
gitHooks: string[];
|
|
22
|
+
huskyExists: boolean;
|
|
23
|
+
existing: Record<string, string>;
|
|
24
|
+
}) => EmittedFile[];
|