@event4u/agent-config 9.12.0 → 9.14.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 +110 -238
- package/README.md +1 -1
- package/dist/agent-src/commands/optimize/deep.md +147 -0
- package/dist/agent-src/commands/optimize.md +12 -6
- package/dist/agent-src/rules/active-remediation.md +0 -2
- package/dist/agent-src/rules/architecture.md +0 -1
- package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -4
- package/dist/agent-src/rules/autonomous-execution.md +1 -2
- package/dist/agent-src/rules/broken-access-control.md +0 -2
- package/dist/agent-src/rules/code-comment-discipline.md +0 -3
- package/dist/agent-src/rules/code-provenance.md +0 -3
- package/dist/agent-src/rules/communication-through-line.md +2 -3
- package/dist/agent-src/rules/content-quoting-floor.md +0 -2
- package/dist/agent-src/rules/context-hygiene.md +1 -3
- package/dist/agent-src/rules/decision-revisit-gate.md +0 -2
- package/dist/agent-src/rules/design-fidelity.md +29 -0
- package/dist/agent-src/rules/domain-adoption-policy.md +0 -3
- package/dist/agent-src/rules/downstream-changes.md +10 -1
- package/dist/agent-src/rules/external-reference-deep-dive.md +0 -7
- package/dist/agent-src/rules/fast-path-marker-visibility.md +0 -1
- package/dist/agent-src/rules/git-history-discipline.md +0 -7
- package/dist/agent-src/rules/guidelines.md +0 -2
- package/dist/agent-src/rules/improve-before-implement.md +4 -2
- package/dist/agent-src/rules/invite-challenge.md +0 -4
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -2
- package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -2
- package/dist/agent-src/rules/missing-tool-handling.md +0 -1
- package/dist/agent-src/rules/no-attribution-footers.md +0 -3
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +8 -5
- package/dist/agent-src/rules/no-pr-progress-comments.md +1 -3
- package/dist/agent-src/rules/no-roadmap-references.md +0 -2
- package/dist/agent-src/rules/output-discipline.md +0 -1
- package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -2
- package/dist/agent-src/rules/preservation-guard.md +0 -3
- package/dist/agent-src/rules/role-mode-adherence.md +0 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +0 -2
- package/dist/agent-src/rules/senior-engineering-discipline.md +0 -2
- package/dist/agent-src/rules/session-canary.md +0 -2
- package/dist/agent-src/rules/size-enforcement.md +0 -5
- package/dist/agent-src/rules/source-confidentiality.md +0 -3
- package/dist/agent-src/rules/source-discovery-gate.md +0 -2
- package/dist/agent-src/rules/think-before-action.md +3 -3
- package/dist/agent-src/rules/token-budget-discipline.md +0 -1
- package/dist/agent-src/rules/token-efficiency.md +1 -2
- package/dist/agent-src/rules/tool-safety.md +0 -1
- package/dist/agent-src/rules/user-interaction.md +0 -3
- package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
- package/dist/agent-src/skills/agent-docs-writing/SKILL.md +8 -0
- package/dist/agent-src/skills/analysis-skill-router/SKILL.md +55 -86
- package/dist/agent-src/skills/character-consistency/SKILL.md +7 -4
- package/dist/agent-src/skills/decision-record/SKILL.md +8 -0
- package/dist/agent-src/skills/design-review/SKILL.md +11 -0
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +8 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +34 -3
- package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +7 -4
- package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +201 -0
- package/dist/agent-src/skills/performance/SKILL.md +14 -0
- package/dist/agent-src/skills/pixar-storyteller/SKILL.md +8 -5
- package/dist/agent-src/skills/scene-expander/SKILL.md +9 -6
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +10 -0
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +14 -37
- package/dist/agent-src/skills/video-director/SKILL.md +9 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +55 -0
- package/dist/cli-delegate/{chunk-QFKQLQ7X.js → chunk-GCVFLBP2.js} +399 -365
- package/dist/cli-delegate/cmd_export.js +1 -1
- package/dist/cli-delegate/cmd_prune.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +1 -1
- package/dist/cli-delegate/cmd_uninstall.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +123 -73
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +10 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +8 -6
- package/dist/hooks/dispatch.js +174 -13
- package/dist/install/install.mjs +648 -614
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +783 -507
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +2 -2
- package/docs/MIGRATION.md +1 -1
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +71 -0
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +24 -1
- package/docs/guidelines/code-clarity.md +9 -2
- package/docs/guidelines/design-fidelity-mechanics.md +44 -0
- package/llms.txt +63 -27
- package/package.json +4 -4
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +55 -0
- package/src/config/agent-settings.template.yml +8 -0
- package/src/scripts/_lib/counted_probe.ts +142 -0
- package/src/scripts/_lib/exec_evidence.ts +5 -0
- package/src/scripts/_lib/overbuild_lens_contract.ts +196 -0
- package/src/scripts/_lib/release_scope.ts +207 -0
- package/src/scripts/_lib/scoped_projection.ts +212 -0
- package/src/scripts/ai_council/stance_tally.ts +37 -2
- package/src/scripts/audit_auto_rules.ts +9 -9
- package/src/scripts/audit_likelihood.ts +3 -3
- package/src/scripts/audit_overlap.ts +2 -2
- package/src/scripts/audit_skill_overlap.ts +233 -95
- package/src/scripts/audit_skill_overlap_allowlist.json +4 -0
- package/src/scripts/build_proof.ts +15 -1
- package/src/scripts/check_artefact_count_messaging.ts +128 -15
- package/src/scripts/check_dependency_floors.ts +16 -6
- package/src/scripts/check_gate_coverage.ts +6 -6
- package/src/scripts/check_kernel_rule_bundle.ts +5 -4
- package/src/scripts/check_token_quality_golden.ts +0 -18
- package/src/scripts/code_graph/loader.ts +35 -6
- package/src/scripts/compile_router.ts +3 -8
- package/src/scripts/condense.ts +2 -2
- package/src/scripts/count_scoped_projection.ts +104 -0
- package/src/scripts/explain_run.ts +0 -1
- package/src/scripts/generate_pack_manifests.ts +3 -20
- package/src/scripts/hooks/block_kernel_rule_writes.ts +145 -10
- package/src/scripts/hooks/block_no_verify.ts +101 -0
- package/src/scripts/install.ts +13 -90
- package/src/scripts/lint_agent_security.ts +5 -4
- package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
- package/src/scripts/lint_regression.ts +92 -1
- package/src/scripts/lint_skill_descriptions.ts +93 -5
- package/src/scripts/project_thin_rules.ts +2 -2
- package/src/scripts/release.ts +107 -3
- package/src/scripts/resolve_lint_scope.ts +53 -0
- package/src/scripts/router_telemetry.ts +0 -5
- package/src/scripts/runtime_dispatcher.ts +40 -0
- package/src/scripts/schemas/pack.schema.json +1 -5
- package/src/scripts/schemas/rule.schema.json +1 -2
- package/src/scripts/self_review_gate.ts +15 -73
- package/src/scripts/skill_linter.ts +160 -11
- package/src/scripts/sweep_dead_scan_roots.ts +550 -0
- package/src/scripts/trigger_coverage.ts +11 -37
- package/src/scripts/update_counts.ts +90 -11
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Discovery Manifest — Summary
|
|
2
2
|
|
|
3
|
-
- Generated: `2026-08-
|
|
3
|
+
- Generated: `2026-08-02T13:19:19Z`
|
|
4
4
|
- Scanner: `c24312e116f8`
|
|
5
|
-
- Artefacts: **
|
|
5
|
+
- Artefacts: **594**
|
|
6
6
|
- Unassigned: **0**
|
|
7
7
|
|
|
8
8
|
## `engineering` — Engineering
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
| Pack | Artefacts |
|
|
13
13
|
|---|---|
|
|
14
|
-
| `engineering-base` — Engineering Base |
|
|
14
|
+
| `engineering-base` — Engineering Base | 117 |
|
|
15
15
|
| `git` — Git | 4 |
|
|
16
16
|
| `php` — PHP | 6 |
|
|
17
17
|
| `laravel` — Laravel | 25 |
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
|
|
106
106
|
| Pack | Artefacts |
|
|
107
107
|
|---|---|
|
|
108
|
-
| `meta` — Meta |
|
|
108
|
+
| `meta` — Meta | 289 |
|
|
109
109
|
| `memory` — Memory | 9 |
|
|
110
110
|
| `analytics` — Analytics | 4 |
|
|
111
111
|
| `product-reasoning` — Product Reasoning | 11 |
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"checksum": "sha256:
|
|
3
|
-
"generated_at": "2026-08-
|
|
2
|
+
"checksum": "sha256:a347c7095a23d76820eb7e6128cc05342a022825cbadb9f599f2d6fd26196d16",
|
|
3
|
+
"generated_at": "2026-08-02T13:19:19Z",
|
|
4
4
|
"packs": [
|
|
5
5
|
{
|
|
6
6
|
"always_on": false,
|
|
7
|
-
"artefact_count":
|
|
7
|
+
"artefact_count": 117,
|
|
8
8
|
"artefacts": [
|
|
9
9
|
"src/domains/engineering-base/mission/upgrade/command.md",
|
|
10
10
|
"src/rules/active-remediation.md",
|
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
"src/skills/mobile-e2e-strategy/SKILL.md",
|
|
84
84
|
"src/skills/multi-tenancy/SKILL.md",
|
|
85
85
|
"src/skills/openapi/SKILL.md",
|
|
86
|
+
"src/skills/overbuild-review-lens/SKILL.md",
|
|
86
87
|
"src/skills/performance-analysis/SKILL.md",
|
|
87
88
|
"src/skills/performance/SKILL.md",
|
|
88
89
|
"src/skills/playwright-architect/SKILL.md",
|
|
@@ -124,14 +125,14 @@
|
|
|
124
125
|
"src/skills/worktree-lifecycle/SKILL.md"
|
|
125
126
|
],
|
|
126
127
|
"by_lifecycle": {
|
|
127
|
-
"active":
|
|
128
|
+
"active": 115,
|
|
128
129
|
"archived": 0,
|
|
129
130
|
"deprecated": 0,
|
|
130
131
|
"experimental": 2
|
|
131
132
|
},
|
|
132
133
|
"by_trust_level": {
|
|
133
134
|
"advisory": 0,
|
|
134
|
-
"core":
|
|
135
|
+
"core": 114,
|
|
135
136
|
"experimental": 2,
|
|
136
137
|
"professional": 1,
|
|
137
138
|
"restricted": 0
|
|
@@ -1312,7 +1313,7 @@
|
|
|
1312
1313
|
},
|
|
1313
1314
|
{
|
|
1314
1315
|
"always_on": true,
|
|
1315
|
-
"artefact_count":
|
|
1316
|
+
"artefact_count": 289,
|
|
1316
1317
|
"artefacts": [
|
|
1317
1318
|
"src/agent-src/templates/agents/proposal.example.md",
|
|
1318
1319
|
"src/domains/ai-video/image/analyse/command.md",
|
|
@@ -1413,6 +1414,7 @@
|
|
|
1413
1414
|
"src/domains/meta/optimize/agents-dir/command.md",
|
|
1414
1415
|
"src/domains/meta/optimize/augmentignore/command.md",
|
|
1415
1416
|
"src/domains/meta/optimize/command.md",
|
|
1417
|
+
"src/domains/meta/optimize/deep/command.md",
|
|
1416
1418
|
"src/domains/meta/optimize/project/command.md",
|
|
1417
1419
|
"src/domains/meta/optimize/prompt/command.md",
|
|
1418
1420
|
"src/domains/meta/optimize/rtk/command.md",
|
|
@@ -1604,14 +1606,14 @@
|
|
|
1604
1606
|
"src/skills/verify-repair-loop/SKILL.md"
|
|
1605
1607
|
],
|
|
1606
1608
|
"by_lifecycle": {
|
|
1607
|
-
"active":
|
|
1609
|
+
"active": 288,
|
|
1608
1610
|
"archived": 0,
|
|
1609
1611
|
"deprecated": 0,
|
|
1610
1612
|
"experimental": 1
|
|
1611
1613
|
},
|
|
1612
1614
|
"by_trust_level": {
|
|
1613
1615
|
"advisory": 0,
|
|
1614
|
-
"core":
|
|
1616
|
+
"core": 287,
|
|
1615
1617
|
"experimental": 2,
|
|
1616
1618
|
"professional": 0,
|
|
1617
1619
|
"restricted": 0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Discovery — Trust Report
|
|
2
2
|
|
|
3
|
-
- Generated: `2026-08-
|
|
3
|
+
- Generated: `2026-08-02T13:19:19Z`
|
|
4
4
|
- Workspaces tracked: **10**
|
|
5
5
|
- Human-review-required artefacts: **3**
|
|
6
6
|
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
| Workspace | core | professional | experimental | advisory | restricted |
|
|
10
10
|
|---|---|---|---|---|---|
|
|
11
|
-
| `agent-config-maintainer` |
|
|
11
|
+
| `agent-config-maintainer` | 318 | 0 | 3 | 0 | 0 |
|
|
12
12
|
| `construction` | 25 | 0 | 0 | 0 | 0 |
|
|
13
|
-
| `engineering` |
|
|
13
|
+
| `engineering` | 180 | 62 | 3 | 0 | 0 |
|
|
14
14
|
| `finance` | 28 | 4 | 0 | 1 | 0 |
|
|
15
15
|
| `founder` | 32 | 0 | 1 | 1 | 0 |
|
|
16
16
|
| `gtm` | 30 | 13 | 1 | 0 | 0 |
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"checksum": "sha256:
|
|
3
|
-
"generated_at": "2026-08-
|
|
2
|
+
"checksum": "sha256:a347c7095a23d76820eb7e6128cc05342a022825cbadb9f599f2d6fd26196d16",
|
|
3
|
+
"generated_at": "2026-08-02T13:19:19Z",
|
|
4
4
|
"scanner_version": "c24312e116f8",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
{
|
|
7
|
-
"artefact_count":
|
|
7
|
+
"artefact_count": 199,
|
|
8
8
|
"default_packs": [
|
|
9
9
|
"engineering-base",
|
|
10
10
|
"git"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"packs": [
|
|
31
31
|
{
|
|
32
|
-
"artefact_count":
|
|
32
|
+
"artefact_count": 117,
|
|
33
33
|
"artefacts": [
|
|
34
34
|
"src/domains/engineering-base/mission/upgrade/command.md",
|
|
35
35
|
"src/rules/active-remediation.md",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"src/skills/mobile-e2e-strategy/SKILL.md",
|
|
109
109
|
"src/skills/multi-tenancy/SKILL.md",
|
|
110
110
|
"src/skills/openapi/SKILL.md",
|
|
111
|
+
"src/skills/overbuild-review-lens/SKILL.md",
|
|
111
112
|
"src/skills/performance-analysis/SKILL.md",
|
|
112
113
|
"src/skills/performance/SKILL.md",
|
|
113
114
|
"src/skills/playwright-architect/SKILL.md",
|
|
@@ -622,7 +623,7 @@
|
|
|
622
623
|
]
|
|
623
624
|
},
|
|
624
625
|
{
|
|
625
|
-
"artefact_count":
|
|
626
|
+
"artefact_count": 313,
|
|
626
627
|
"default_packs": [
|
|
627
628
|
"meta",
|
|
628
629
|
"memory",
|
|
@@ -635,7 +636,7 @@
|
|
|
635
636
|
"optional_packs": [],
|
|
636
637
|
"packs": [
|
|
637
638
|
{
|
|
638
|
-
"artefact_count":
|
|
639
|
+
"artefact_count": 289,
|
|
639
640
|
"artefacts": [
|
|
640
641
|
"src/agent-src/templates/agents/proposal.example.md",
|
|
641
642
|
"src/domains/ai-video/image/analyse/command.md",
|
|
@@ -736,6 +737,7 @@
|
|
|
736
737
|
"src/domains/meta/optimize/agents-dir/command.md",
|
|
737
738
|
"src/domains/meta/optimize/augmentignore/command.md",
|
|
738
739
|
"src/domains/meta/optimize/command.md",
|
|
740
|
+
"src/domains/meta/optimize/deep/command.md",
|
|
739
741
|
"src/domains/meta/optimize/project/command.md",
|
|
740
742
|
"src/domains/meta/optimize/prompt/command.md",
|
|
741
743
|
"src/domains/meta/optimize/rtk/command.md",
|
package/dist/hooks/dispatch.js
CHANGED
|
@@ -17175,6 +17175,27 @@ var _SHELL_SEPARATORS = /* @__PURE__ */ new Set(["&&", "||", ";", "|"]);
|
|
|
17175
17175
|
var _NO_VERIFY_FLAGS = /* @__PURE__ */ new Set(["--no-verify"]);
|
|
17176
17176
|
var _NO_VERIFY_SHORT = /* @__PURE__ */ new Set(["-n"]);
|
|
17177
17177
|
var _HOOKS_PATH_RE = /^core\.hooksPath\s*=/i;
|
|
17178
|
+
var _HOOKS_PATH_KEY_RE = /^core\.hooksPath$/i;
|
|
17179
|
+
var _GIT_GLOBAL_OPTS_WITH_VALUE = /* @__PURE__ */ new Set([
|
|
17180
|
+
"-C",
|
|
17181
|
+
"-c",
|
|
17182
|
+
"--config",
|
|
17183
|
+
"--git-dir",
|
|
17184
|
+
"--work-tree",
|
|
17185
|
+
"--namespace",
|
|
17186
|
+
"--exec-path",
|
|
17187
|
+
"--super-prefix"
|
|
17188
|
+
]);
|
|
17189
|
+
var _CONFIG_READ_OR_RESTORE = /* @__PURE__ */ new Set([
|
|
17190
|
+
"--get",
|
|
17191
|
+
"--get-all",
|
|
17192
|
+
"--get-regexp",
|
|
17193
|
+
"--get-urlmatch",
|
|
17194
|
+
"--list",
|
|
17195
|
+
"-l",
|
|
17196
|
+
"--unset",
|
|
17197
|
+
"--unset-all"
|
|
17198
|
+
]);
|
|
17178
17199
|
var ShlexError = class extends Error {
|
|
17179
17200
|
};
|
|
17180
17201
|
function shlexSplit(s) {
|
|
@@ -17285,7 +17306,53 @@ function _git_base(tokens) {
|
|
|
17285
17306
|
}
|
|
17286
17307
|
return null;
|
|
17287
17308
|
}
|
|
17309
|
+
function _is_config_hookspath_write(git_tokens) {
|
|
17310
|
+
const rest = git_tokens.slice(1);
|
|
17311
|
+
let subIdx = -1;
|
|
17312
|
+
for (let k = 0; k < rest.length; k += 1) {
|
|
17313
|
+
const tok = rest[k];
|
|
17314
|
+
if (!tok.startsWith("-")) {
|
|
17315
|
+
subIdx = k;
|
|
17316
|
+
break;
|
|
17317
|
+
}
|
|
17318
|
+
if (_GIT_GLOBAL_OPTS_WITH_VALUE.has(tok)) {
|
|
17319
|
+
k += 1;
|
|
17320
|
+
}
|
|
17321
|
+
}
|
|
17322
|
+
if (subIdx === -1 || rest[subIdx] !== "config") {
|
|
17323
|
+
return [false, ""];
|
|
17324
|
+
}
|
|
17325
|
+
const args = rest.slice(subIdx + 1);
|
|
17326
|
+
if (args.some((t) => _CONFIG_READ_OR_RESTORE.has(t))) {
|
|
17327
|
+
return [false, ""];
|
|
17328
|
+
}
|
|
17329
|
+
for (let k = 0; k < args.length; k += 1) {
|
|
17330
|
+
const tok = args[k];
|
|
17331
|
+
if (_HOOKS_PATH_RE.test(tok)) {
|
|
17332
|
+
return [
|
|
17333
|
+
true,
|
|
17334
|
+
`'git config ${tok}' disables git hooks via hooksPath (git-history-discipline)`
|
|
17335
|
+
];
|
|
17336
|
+
}
|
|
17337
|
+
if (!_HOOKS_PATH_KEY_RE.test(tok)) {
|
|
17338
|
+
continue;
|
|
17339
|
+
}
|
|
17340
|
+
const next = args.slice(k + 1).find((t) => !t.startsWith("-"));
|
|
17341
|
+
if (next !== void 0) {
|
|
17342
|
+
return [
|
|
17343
|
+
true,
|
|
17344
|
+
`'git config ${tok} ${next}' disables git hooks via hooksPath (git-history-discipline)`
|
|
17345
|
+
];
|
|
17346
|
+
}
|
|
17347
|
+
return [false, ""];
|
|
17348
|
+
}
|
|
17349
|
+
return [false, ""];
|
|
17350
|
+
}
|
|
17288
17351
|
function _is_blocked(git_tokens) {
|
|
17352
|
+
const [cfgBlocked, cfgReason] = _is_config_hookspath_write(git_tokens);
|
|
17353
|
+
if (cfgBlocked) {
|
|
17354
|
+
return [cfgBlocked, cfgReason];
|
|
17355
|
+
}
|
|
17289
17356
|
let i = 1;
|
|
17290
17357
|
while (i < git_tokens.length) {
|
|
17291
17358
|
const tok = git_tokens[i];
|
|
@@ -17554,32 +17621,126 @@ function targets_kernel_rule(filePath) {
|
|
|
17554
17621
|
if (segments.length === 0) {
|
|
17555
17622
|
return null;
|
|
17556
17623
|
}
|
|
17557
|
-
const
|
|
17558
|
-
if (!is_kernel_rule(
|
|
17624
|
+
const basename6 = segments[segments.length - 1];
|
|
17625
|
+
if (!is_kernel_rule(basename6)) {
|
|
17559
17626
|
return null;
|
|
17560
17627
|
}
|
|
17561
17628
|
const dirSegments = segments.slice(0, -1);
|
|
17562
17629
|
if (!dirSegments.includes("rules")) {
|
|
17563
17630
|
return null;
|
|
17564
17631
|
}
|
|
17565
|
-
return
|
|
17632
|
+
return basename6.replace(/\.md$/, "");
|
|
17633
|
+
}
|
|
17634
|
+
var _MUTATOR_VERBS = /* @__PURE__ */ new Set([
|
|
17635
|
+
"sed",
|
|
17636
|
+
"tee",
|
|
17637
|
+
"truncate",
|
|
17638
|
+
"rm",
|
|
17639
|
+
"shred"
|
|
17640
|
+
]);
|
|
17641
|
+
var _DEST_LAST_VERBS = /* @__PURE__ */ new Set(["mv", "cp", "install", "rsync"]);
|
|
17642
|
+
function _bash_targets_kernel_rule(command) {
|
|
17643
|
+
const tokens = command.split(/\s+/).filter((t) => t.length > 0);
|
|
17644
|
+
const stripped = tokens.map((t) => t.replace(/^['"]|['"]$/g, ""));
|
|
17645
|
+
const ruleOf = (t) => targets_kernel_rule(t);
|
|
17646
|
+
if (!stripped.some((t) => ruleOf(t) !== null)) {
|
|
17647
|
+
return null;
|
|
17648
|
+
}
|
|
17649
|
+
for (let i = 0; i < stripped.length; i += 1) {
|
|
17650
|
+
const tok = stripped[i];
|
|
17651
|
+
const inline = /^>{1,2}(.+)$/.exec(tok);
|
|
17652
|
+
if (inline) {
|
|
17653
|
+
const r = ruleOf(inline[1]);
|
|
17654
|
+
if (r !== null) {
|
|
17655
|
+
return r;
|
|
17656
|
+
}
|
|
17657
|
+
}
|
|
17658
|
+
if (tok === ">" || tok === ">>") {
|
|
17659
|
+
const next = stripped[i + 1];
|
|
17660
|
+
if (typeof next === "string") {
|
|
17661
|
+
const r = ruleOf(next);
|
|
17662
|
+
if (r !== null) {
|
|
17663
|
+
return r;
|
|
17664
|
+
}
|
|
17665
|
+
}
|
|
17666
|
+
}
|
|
17667
|
+
}
|
|
17668
|
+
const verbs = /* @__PURE__ */ new Set();
|
|
17669
|
+
let prevWasSeparator = true;
|
|
17670
|
+
for (const tok of stripped) {
|
|
17671
|
+
if (["&&", "||", ";", "|"].includes(tok)) {
|
|
17672
|
+
prevWasSeparator = true;
|
|
17673
|
+
continue;
|
|
17674
|
+
}
|
|
17675
|
+
if (prevWasSeparator && !tok.startsWith("-")) {
|
|
17676
|
+
verbs.add(path32.basename(tok));
|
|
17677
|
+
prevWasSeparator = false;
|
|
17678
|
+
}
|
|
17679
|
+
}
|
|
17680
|
+
const sedInPlace = verbs.has("sed") && stripped.some((t) => /^-i/.test(t));
|
|
17681
|
+
for (const verb of verbs) {
|
|
17682
|
+
if (verb === "sed" && !sedInPlace) {
|
|
17683
|
+
continue;
|
|
17684
|
+
}
|
|
17685
|
+
if (_MUTATOR_VERBS.has(verb)) {
|
|
17686
|
+
const hit = stripped.map(ruleOf).find((r) => r !== null);
|
|
17687
|
+
if (hit !== void 0 && hit !== null) {
|
|
17688
|
+
return hit;
|
|
17689
|
+
}
|
|
17690
|
+
}
|
|
17691
|
+
if (_DEST_LAST_VERBS.has(verb)) {
|
|
17692
|
+
const last = stripped[stripped.length - 1];
|
|
17693
|
+
const r = ruleOf(last);
|
|
17694
|
+
if (r !== null) {
|
|
17695
|
+
return r;
|
|
17696
|
+
}
|
|
17697
|
+
}
|
|
17698
|
+
}
|
|
17699
|
+
return null;
|
|
17566
17700
|
}
|
|
17567
17701
|
function check_envelope(envelope) {
|
|
17568
17702
|
const { tool, paths } = _extract(envelope);
|
|
17569
|
-
if (!tool
|
|
17703
|
+
if (!tool) {
|
|
17570
17704
|
return [false, ""];
|
|
17571
17705
|
}
|
|
17572
|
-
|
|
17573
|
-
|
|
17574
|
-
|
|
17575
|
-
|
|
17576
|
-
|
|
17577
|
-
|
|
17578
|
-
|
|
17706
|
+
const deny = (ruleName) => [
|
|
17707
|
+
true,
|
|
17708
|
+
`kernel rule ${ruleName} is immutable \u2014 tighten-only via the override exception registry; see docs/contracts/kernel-membership.md`
|
|
17709
|
+
];
|
|
17710
|
+
if (EDIT_TOOLS.has(tool)) {
|
|
17711
|
+
for (const p of paths) {
|
|
17712
|
+
const ruleName = targets_kernel_rule(p);
|
|
17713
|
+
if (ruleName !== null) {
|
|
17714
|
+
return deny(ruleName);
|
|
17715
|
+
}
|
|
17716
|
+
}
|
|
17717
|
+
return [false, ""];
|
|
17718
|
+
}
|
|
17719
|
+
if (COMMAND_TOOLS.has(tool)) {
|
|
17720
|
+
const cmd = _extract_command3(envelope);
|
|
17721
|
+
if (cmd !== null) {
|
|
17722
|
+
const ruleName = _bash_targets_kernel_rule(cmd);
|
|
17723
|
+
if (ruleName !== null) {
|
|
17724
|
+
return deny(ruleName);
|
|
17725
|
+
}
|
|
17579
17726
|
}
|
|
17580
17727
|
}
|
|
17581
17728
|
return [false, ""];
|
|
17582
17729
|
}
|
|
17730
|
+
function _extract_command3(envelope) {
|
|
17731
|
+
const payload = _isObject6(envelope["payload"]) ? envelope["payload"] : envelope;
|
|
17732
|
+
const ti = _isObject6(payload["tool_input"]) ? payload["tool_input"] : _isObject6(envelope["tool_input"]) ? envelope["tool_input"] : null;
|
|
17733
|
+
for (const src of [ti, payload]) {
|
|
17734
|
+
if (src === null) {
|
|
17735
|
+
continue;
|
|
17736
|
+
}
|
|
17737
|
+
const v = src["command"];
|
|
17738
|
+
if (typeof v === "string" && v) {
|
|
17739
|
+
return v;
|
|
17740
|
+
}
|
|
17741
|
+
}
|
|
17742
|
+
return null;
|
|
17743
|
+
}
|
|
17583
17744
|
function _asObject2(v) {
|
|
17584
17745
|
return _isObject6(v) ? v : null;
|
|
17585
17746
|
}
|
|
@@ -17833,7 +17994,7 @@ function rtk_available(env = process.env) {
|
|
|
17833
17994
|
}
|
|
17834
17995
|
return false;
|
|
17835
17996
|
}
|
|
17836
|
-
function
|
|
17997
|
+
function _extract_command4(envelope) {
|
|
17837
17998
|
const payload = _isObject7(envelope["payload"]) ? envelope["payload"] : {};
|
|
17838
17999
|
const tool_input = _isObject7(payload["tool_input"]) ? payload["tool_input"] : {};
|
|
17839
18000
|
for (const src of [tool_input["command"], payload["command"], envelope["command"]]) {
|
|
@@ -17886,7 +18047,7 @@ function main24() {
|
|
|
17886
18047
|
if (!_enabled2(root)) return EXIT_ALLOW5;
|
|
17887
18048
|
if (!rtk_available()) return EXIT_ALLOW5;
|
|
17888
18049
|
if (detectRtkCached().identity !== "token-killer") return EXIT_ALLOW5;
|
|
17889
|
-
const command =
|
|
18050
|
+
const command = _extract_command4(envelope);
|
|
17890
18051
|
if (!command) return EXIT_ALLOW5;
|
|
17891
18052
|
const verdict = classify(command);
|
|
17892
18053
|
if (!verdict.eligible) return EXIT_ALLOW5;
|