@event4u/agent-config 8.5.0 → 8.7.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +54 -0
- package/dist/agent-src/commands/cost/report.md +20 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +30 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +15 -1
- package/dist/agent-src/contexts/execution/subagent-steering.md +54 -1
- package/dist/agent-src/contexts/model-recommendations.md +19 -0
- package/dist/agent-src/contexts/subagent-configuration.md +8 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +4 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +4 -4
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/install/emit_host_rules_cli.js +185 -0
- package/dist/install/emit_host_rules_cli.js.map +1 -0
- package/dist/install/install.mjs +6 -0
- package/dist/install/plan.js +4 -1
- package/dist/install/plan.js.map +1 -1
- package/dist/install/rule_scope.js +109 -0
- package/dist/install/rule_scope.js.map +1 -0
- package/dist/install/rule_scope_cli.js +77 -0
- package/dist/install/rule_scope_cli.js.map +1 -0
- package/dist/install/wizard-plan.js +14 -1
- package/dist/install/wizard-plan.js.map +1 -1
- package/dist/mcp/registry-manifest.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +963 -0
- package/dist/scripts/_lib/agent_settings.js.map +1 -0
- package/dist/scripts/_lib/agent_src.js +607 -0
- package/dist/scripts/_lib/agent_src.js.map +1 -0
- package/dist/scripts/_lib/claude_settings_hooks.js +209 -0
- package/dist/scripts/_lib/claude_settings_hooks.js.map +1 -0
- package/dist/scripts/_lib/model_tier.js +64 -0
- package/dist/scripts/_lib/model_tier.js.map +1 -0
- package/dist/scripts/_lib/script_output.js +140 -0
- package/dist/scripts/_lib/script_output.js.map +1 -0
- package/dist/scripts/_lib/user_global_paths.js +297 -0
- package/dist/scripts/_lib/user_global_paths.js.map +1 -0
- package/dist/scripts/condense.js +2181 -0
- package/dist/scripts/condense.js.map +1 -0
- package/dist/server/routes/install.js +18 -2
- package/dist/server/routes/install.js.map +1 -1
- package/dist/server/schemas/settings.js +2 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/CLAIMS.md +7 -0
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +125 -0
- package/docs/decisions/INDEX.md +1 -0
- package/docs/proof.md +2 -1
- package/package.json +1 -1
- package/src/config/agent-settings.template.yml +4 -2
- package/src/install/emit_host_rules_cli.ts +190 -0
- package/src/install/plan.ts +11 -1
- package/src/install/rule_scope.ts +120 -0
- package/src/install/rule_scope_cli.ts +79 -0
- package/src/install/wizard-plan.ts +22 -1
- package/src/scripts/_lib/auto_dispatch.ts +63 -0
- package/src/scripts/_lib/subagent_routing.ts +24 -0
- package/src/scripts/_lib/subagent_steering.ts +213 -3
- package/src/scripts/check_trigger_eval_presence.ts +171 -0
- package/src/scripts/install.sh +118 -4
- package/src/scripts/trigger_eval_grandfather.json +226 -0
- package/src/server/schemas/settings.ts +6 -0
package/dist/install/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/install/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/install/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install-time rule scoping — Pipeline B of consumer-scoped rule projection
|
|
3
|
+
* (road-to-request-scoped-rule-load Phase 1b).
|
|
4
|
+
*
|
|
5
|
+
* The projection filter (`rule_in_scope`, condense.ts) covered only the
|
|
6
|
+
* maintainer projection; the consumer install pipeline shipped rules
|
|
7
|
+
* unfiltered (dead `EXCLUDE_RULES` in install.sh; no exclude at all on the
|
|
8
|
+
* global payload). This module is the ONE scoping surface both install
|
|
9
|
+
* paths consume — it deliberately re-uses `rule_in_scope` so the install
|
|
10
|
+
* semantics can never drift from the projection semantics.
|
|
11
|
+
*
|
|
12
|
+
* ## The `source-of-truth.md` decision (Phase 1b Step 2 — recorded here)
|
|
13
|
+
*
|
|
14
|
+
* Before this module, `install.sh` excluded `source-of-truth.md` from
|
|
15
|
+
* PROJECT installs (hardcoded name) while the GLOBAL payload shipped it —
|
|
16
|
+
* the documented contradiction. Decision: the rule is excluded from BOTH
|
|
17
|
+
* consumer paths, always (even under legacy-all). Rationale: its Iron Law
|
|
18
|
+
* ("NEVER EDIT ANY GENERATED PROJECTION … ALWAYS WORK IN src/") describes
|
|
19
|
+
* THIS repository's build layout; in a consumer project there is no `src/`
|
|
20
|
+
* authoring tree and the installed files ARE the working surface — the rule
|
|
21
|
+
* is not merely useless there, it actively forbids legitimate consumer
|
|
22
|
+
* edits. Shipping it globally was the bug; project installs had it right.
|
|
23
|
+
* The compat list below is the pre-flip carrier of that decision; once the
|
|
24
|
+
* Phase-1 human gate flips consumer defaults to scoped, the rule drops out
|
|
25
|
+
* via its maintainer-only workspace tag and this list can retire.
|
|
26
|
+
*/
|
|
27
|
+
import * as fs from 'node:fs';
|
|
28
|
+
import * as path from 'node:path';
|
|
29
|
+
import { rule_in_scope } from '../scripts/condense.js';
|
|
30
|
+
/**
|
|
31
|
+
* Rules excluded from EVERY consumer install path regardless of scope —
|
|
32
|
+
* same treatment on project and global (see module doc for the decision).
|
|
33
|
+
*/
|
|
34
|
+
export const COMPAT_ALWAYS_EXCLUDED = ['source-of-truth.md'];
|
|
35
|
+
export const LEGACY_ALL = { workspaces: null, packs: null };
|
|
36
|
+
/** Non-empty string-array extraction; anything else → null (legacy-all). */
|
|
37
|
+
function _list(value) {
|
|
38
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
39
|
+
return value.map((v) => String(v));
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Extract `projection.rule_workspaces` / `projection.rule_packs` from an
|
|
45
|
+
* already-parsed settings object (same key contract as condense's
|
|
46
|
+
* `_read_projection_list` — absent / empty = legacy-all).
|
|
47
|
+
*/
|
|
48
|
+
export function ruleScopeFromSettings(settings) {
|
|
49
|
+
const proj = settings['projection'];
|
|
50
|
+
if (typeof proj !== 'object' || proj === null || Array.isArray(proj)) {
|
|
51
|
+
return LEGACY_ALL;
|
|
52
|
+
}
|
|
53
|
+
const p = proj;
|
|
54
|
+
return {
|
|
55
|
+
workspaces: _list(p['rule_workspaces']),
|
|
56
|
+
packs: _list(p['rule_packs']),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Whether a rule FILE (path into the shipped `dist/agent-src/rules` tree)
|
|
61
|
+
* arrives in a consumer install under `scope`.
|
|
62
|
+
*
|
|
63
|
+
* Delegates the scoping decision to the projection-path predicate
|
|
64
|
+
* (`rule_in_scope` — kernel always ships, untagged axes fail safe) and adds
|
|
65
|
+
* the compat exclusion on top. Non-rule files (non-`.md`) always arrive.
|
|
66
|
+
*/
|
|
67
|
+
export function ruleFileArrives(sourcePath, scope) {
|
|
68
|
+
if (!sourcePath.endsWith('.md')) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
const basename = path.basename(sourcePath);
|
|
72
|
+
if (COMPAT_ALWAYS_EXCLUDED.includes(basename)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return rule_in_scope(sourcePath, scope.workspaces, scope.packs);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Basenames from `rulesDir` that are EXCLUDED under `scope` — the shape the
|
|
79
|
+
* bash installer consumes (one basename per line via the CLI below).
|
|
80
|
+
*/
|
|
81
|
+
export function excludedRuleBasenames(rulesDir, scope) {
|
|
82
|
+
let entries;
|
|
83
|
+
try {
|
|
84
|
+
entries = fs.readdirSync(rulesDir).sort();
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
const out = [];
|
|
90
|
+
for (const name of entries) {
|
|
91
|
+
if (!name.endsWith('.md')) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const full = path.join(rulesDir, name);
|
|
95
|
+
try {
|
|
96
|
+
if (!fs.statSync(full).isFile()) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (!ruleFileArrives(full, scope)) {
|
|
104
|
+
out.push(name);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=rule_scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule_scope.js","sourceRoot":"","sources":["../../src/install/rule_scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* CLI twin surface of {@link module:install/rule_scope} for the bash
|
|
4
|
+
* installer (road-to-request-scoped-rule-load Phase 1b).
|
|
5
|
+
*
|
|
6
|
+
* Prints one EXCLUDED rule basename per line for the given rules source
|
|
7
|
+
* dir + consumer settings file. `install.sh` consumes this to replace its
|
|
8
|
+
* dead hardcoded `EXCLUDE_RULES` list; on any failure the caller falls back
|
|
9
|
+
* to the static compat exclusion (fail-safe: over-ship, never under-ship).
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* rule_scope_cli.ts --rules-dir <dist/agent-src/rules> [--settings <file>]
|
|
13
|
+
*
|
|
14
|
+
* Exit codes: 0 ok (list on stdout, possibly empty) · 2 usage error.
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from 'node:fs';
|
|
17
|
+
import * as path from 'node:path';
|
|
18
|
+
import process from 'node:process';
|
|
19
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
20
|
+
import { load_agent_settings } from '../scripts/_lib/agent_settings.js';
|
|
21
|
+
import { excludedRuleBasenames, ruleScopeFromSettings, LEGACY_ALL } from './rule_scope.js';
|
|
22
|
+
export function main(argv = process.argv.slice(2)) {
|
|
23
|
+
let rulesDir = '';
|
|
24
|
+
let settingsFile = '';
|
|
25
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
26
|
+
const arg = argv[i];
|
|
27
|
+
if (arg === '--rules-dir') {
|
|
28
|
+
rulesDir = argv[i + 1] ?? '';
|
|
29
|
+
i += 1;
|
|
30
|
+
}
|
|
31
|
+
else if (arg === '--settings') {
|
|
32
|
+
settingsFile = argv[i + 1] ?? '';
|
|
33
|
+
i += 1;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
process.stderr.write(`rule_scope_cli: unknown argument: ${arg}\n`);
|
|
37
|
+
return 2;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (rulesDir === '') {
|
|
41
|
+
process.stderr.write('usage: rule_scope_cli.ts --rules-dir <dir> [--settings <file>]\n');
|
|
42
|
+
return 2;
|
|
43
|
+
}
|
|
44
|
+
let scope = LEGACY_ALL;
|
|
45
|
+
if (settingsFile !== '' && fs.existsSync(settingsFile)) {
|
|
46
|
+
try {
|
|
47
|
+
const settings = load_agent_settings({ project_path: settingsFile });
|
|
48
|
+
scope = ruleScopeFromSettings(settings);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Unreadable settings → legacy-all (fail-safe: over-ship).
|
|
52
|
+
scope = LEGACY_ALL;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
for (const name of excludedRuleBasenames(path.resolve(rulesDir), scope)) {
|
|
56
|
+
process.stdout.write(`${name}\n`);
|
|
57
|
+
}
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
function _isCliEntry() {
|
|
61
|
+
if (process.argv[1] === undefined)
|
|
62
|
+
return false;
|
|
63
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
64
|
+
if (import.meta.url === argvUrl)
|
|
65
|
+
return true;
|
|
66
|
+
try {
|
|
67
|
+
return (fs.realpathSync(fileURLToPath(import.meta.url)) ===
|
|
68
|
+
fs.realpathSync(path.resolve(process.argv[1])));
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (_isCliEntry()) {
|
|
75
|
+
process.exit(main());
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=rule_scope_cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule_scope_cli.js","sourceRoot":"","sources":["../../src/install/rule_scope_cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import { homedir } from 'node:os';
|
|
21
21
|
import { isAbsolute, join, resolve } from 'node:path';
|
|
22
22
|
import { buildInstallPlan } from './plan.js';
|
|
23
|
+
import { ruleFileArrives, LEGACY_ALL } from './rule_scope.js';
|
|
23
24
|
/**
|
|
24
25
|
* Per-tool user-scope anchor directory, mirrored 1:1 from
|
|
25
26
|
* `scripts/install.py:USER_SCOPE_PATHS`. Values may use `~` for the
|
|
@@ -157,6 +158,8 @@ export function expandAnchor(anchor, home) {
|
|
|
157
158
|
*/
|
|
158
159
|
export function expandWizardSources(inputs) {
|
|
159
160
|
const { toolIds, packageRoot, home } = inputs;
|
|
161
|
+
const scope = inputs.ruleScope ?? LEGACY_ALL;
|
|
162
|
+
const ruleFilter = (srcFile) => ruleFileArrives(srcFile, scope);
|
|
160
163
|
const out = [];
|
|
161
164
|
for (const toolId of toolIds) {
|
|
162
165
|
const deploy = GLOBAL_DEPLOY_SOURCES[toolId];
|
|
@@ -167,7 +170,17 @@ export function expandWizardSources(inputs) {
|
|
|
167
170
|
for (const [srcRel, destSub] of deploy) {
|
|
168
171
|
const srcDir = join(packageRoot, srcRel);
|
|
169
172
|
const destDir = destSub.length === 0 ? destRoot : join(destRoot, destSub);
|
|
170
|
-
|
|
173
|
+
// Rule sources get the install-time scoping filter — the same
|
|
174
|
+
// predicate the projection path uses (Phase 1b: Pipeline B may
|
|
175
|
+
// never drift from Pipeline A).
|
|
176
|
+
const isRuleSource = srcRel === 'dist/agent-src/rules';
|
|
177
|
+
out.push({
|
|
178
|
+
toolId,
|
|
179
|
+
srcDir,
|
|
180
|
+
destDir,
|
|
181
|
+
kind: 'deployed',
|
|
182
|
+
...(isRuleSource ? { fileFilter: ruleFilter } : {}),
|
|
183
|
+
});
|
|
171
184
|
}
|
|
172
185
|
}
|
|
173
186
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-plan.js","sourceRoot":"","sources":["../../src/install/wizard-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard-plan.js","sourceRoot":"","sources":["../../src/install/wizard-plan.ts"],"names":[],"mappings":"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"}
|