@event4u/agent-config 1.19.0 → 1.20.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/.agent-src/commands/agent-handoff.md +14 -10
- package/.agent-src/commands/chat-history/import.md +170 -0
- package/.agent-src/commands/chat-history/learn.md +178 -0
- package/.agent-src/commands/chat-history/show.md +17 -18
- package/.agent-src/commands/chat-history.md +26 -25
- package/.agent-src/commands/council/default.md +4 -7
- package/.agent-src/commands/create-pr.md +28 -8
- package/.agent-src/commands/sync-gitignore.md +1 -1
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +76 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +3 -3
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +5 -12
- package/.agent-src/rules/direct-answers.md +10 -2
- package/.agent-src/rules/language-and-tone.md +37 -6
- package/.agent-src/rules/no-attribution-footers.md +48 -0
- package/.agent-src/rules/no-roadmap-references.md +1 -1
- package/.agent-src/rules/skill-quality.md +49 -0
- package/.agent-src/rules/user-interaction.md +21 -5
- package/.agent-src/skills/ai-council/SKILL.md +4 -5
- package/.agent-src/skills/dcf-modeling/SKILL.md +89 -0
- package/.agent-src/skills/funnel-analysis/SKILL.md +100 -0
- package/.agent-src/skills/md-language-check/SKILL.md +1 -1
- package/.agent-src/skills/okr-tree-modeling/SKILL.md +93 -0
- package/.agent-src/skills/rice-prioritization/SKILL.md +100 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +34 -2
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +104 -0
- package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/.agent-src/templates/agent-settings.md +5 -26
- package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +7 -5
- package/.agent-src/templates/scripts/work_engine/hooks/__init__.py +0 -4
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +0 -4
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +7 -51
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +1 -2
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +1 -2
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +2 -3
- package/.agent-src/templates/skill.md +30 -1
- package/.claude-plugin/marketplace.json +8 -4
- package/AGENTS.md +44 -3
- package/CHANGELOG.md +111 -0
- package/README.md +6 -6
- package/config/agent-settings.template.yml +19 -13
- package/config/gitignore-block.txt +4 -4
- package/docs/architecture.md +3 -3
- package/docs/catalog.md +14 -12
- package/docs/contracts/adr-chat-history-split.md +10 -1
- package/docs/contracts/command-clusters.md +1 -1
- package/docs/contracts/cross-wing-handoff.md +133 -0
- package/docs/contracts/file-ownership-matrix.json +341 -126
- package/docs/contracts/hook-architecture-v1.md +8 -1
- package/docs/contracts/memory-visibility-v1.md +8 -24
- package/docs/customization.md +1 -1
- package/docs/getting-started.md +21 -29
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/hook-payload-capture.md +221 -0
- package/docs/migrations/commands-1.15.0.md +17 -12
- package/docs/skills-catalog.md +5 -4
- package/llms.txt +4 -3
- package/package.json +1 -1
- package/scripts/agent-config +1 -1
- package/scripts/ai_council/_default_prices.py +4 -4
- package/scripts/ai_council/clients.py +1 -1
- package/scripts/ai_council/modes.py +3 -4
- package/scripts/ai_council/pricing.py +10 -9
- package/scripts/build_rule_trigger_matrix.py +1 -9
- package/scripts/chat_history.py +952 -596
- package/scripts/check_references.py +12 -2
- package/scripts/council_cli.py +54 -4
- package/scripts/hook_manifest.yaml +33 -0
- package/scripts/hooks/augment-chat-history.sh +10 -0
- package/scripts/hooks/cowork-dispatcher.sh +98 -0
- package/scripts/hooks/dispatch_hook.py +35 -0
- package/scripts/hooks_status.py +12 -1
- package/scripts/install-hooks.sh +2 -2
- package/scripts/install.sh +37 -0
- package/scripts/lint_handoffs.py +214 -0
- package/scripts/lint_hook_manifest.py +2 -1
- package/scripts/redact_hook_capture.py +148 -0
- package/scripts/schemas/skill.schema.json +5 -0
- package/scripts/skill_linter.py +163 -1
- package/scripts/update_prices.py +3 -3
- package/.agent-src/commands/chat-history/checkpoint.md +0 -126
- package/.agent-src/commands/chat-history/clear.md +0 -103
- package/.agent-src/commands/chat-history/resume.md +0 -183
- package/.agent-src/rules/chat-history-cadence.md +0 -143
- package/.agent-src/rules/chat-history-ownership.md +0 -124
- package/.agent-src/rules/chat-history-visibility.md +0 -97
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +0 -50
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +0 -49
- package/scripts/check_phase_coupling.py +0 -148
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""Phase 6 → Phase 2B coupling guard (Phase 0.3.3).
|
|
3
|
-
|
|
4
|
-
Re-runs the audit recorded in `agents/roadmaps/phase6-2b-coupling.md`
|
|
5
|
-
on every CI run. Fails the build if any of the 13 Phase-2B target
|
|
6
|
-
rules introduces a reference to one of the three Phase-6-owned rules
|
|
7
|
-
(`chat-history-cadence`, `chat-history-ownership`,
|
|
8
|
-
`chat-history-visibility`) — by rule name, `load_context:` entry, or
|
|
9
|
-
body link / cite.
|
|
10
|
-
|
|
11
|
-
Excluded from the coupling probe (separate infrastructure, not
|
|
12
|
-
reshaped by Phase 6):
|
|
13
|
-
|
|
14
|
-
- The CLI dispatcher subcommand `./agent-config chat-history:hook`
|
|
15
|
-
and any other `chat-history:*` colon-suffix command surface.
|
|
16
|
-
|
|
17
|
-
Exit codes: 0 = decoupling intact, 1 = coupling detected,
|
|
18
|
-
3 = internal error (target rule missing, unreadable file).
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
from __future__ import annotations
|
|
22
|
-
|
|
23
|
-
import argparse
|
|
24
|
-
import re
|
|
25
|
-
import sys
|
|
26
|
-
from pathlib import Path
|
|
27
|
-
|
|
28
|
-
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
29
|
-
SRC_RULES = REPO_ROOT / ".agent-src.uncompressed" / "rules"
|
|
30
|
-
COMP_RULES = REPO_ROOT / ".agent-src" / "rules"
|
|
31
|
-
|
|
32
|
-
# Phase 2B priority list — see road-to-structural-optimization.md § Phase 2 → 2B.
|
|
33
|
-
TARGET_RULES: tuple[str, ...] = (
|
|
34
|
-
"roadmap-progress-sync",
|
|
35
|
-
"user-interaction",
|
|
36
|
-
"augment-source-of-truth",
|
|
37
|
-
"command-suggestion-policy",
|
|
38
|
-
"artifact-engagement-recording",
|
|
39
|
-
"review-routing-awareness",
|
|
40
|
-
"autonomous-execution",
|
|
41
|
-
"docs-sync",
|
|
42
|
-
"cli-output-handling",
|
|
43
|
-
"augment-portability",
|
|
44
|
-
"ui-audit-gate",
|
|
45
|
-
"skill-quality",
|
|
46
|
-
"package-ci-checks",
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
# Phase 6 owns these three rule names. Match must be a *rule reference*,
|
|
50
|
-
# not a *dispatcher reference* (chat-history:hook etc).
|
|
51
|
-
PHASE6_RULES: tuple[str, ...] = (
|
|
52
|
-
"chat-history-cadence",
|
|
53
|
-
"chat-history-ownership",
|
|
54
|
-
"chat-history-visibility",
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
# Rule-reference pattern: rule name not immediately followed by `:` (which
|
|
58
|
-
# would mark it as a CLI subcommand like `chat-history:hook`). Allows
|
|
59
|
-
# trailing word-boundary characters typical of Markdown / YAML contexts.
|
|
60
|
-
_RULE_REF_RE = re.compile(
|
|
61
|
-
r"\bchat-history-(?:cadence|ownership|visibility)\b(?!:)"
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def _scan(file: Path) -> list[tuple[int, str]]:
|
|
66
|
-
"""Return [(line_no, line)] of rule-reference matches in `file`."""
|
|
67
|
-
if not file.is_file():
|
|
68
|
-
return []
|
|
69
|
-
hits: list[tuple[int, str]] = []
|
|
70
|
-
for i, line in enumerate(file.read_text(encoding="utf-8").splitlines(), 1):
|
|
71
|
-
if _RULE_REF_RE.search(line):
|
|
72
|
-
hits.append((i, line.strip()))
|
|
73
|
-
return hits
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def _check_surface(label: str, base: Path) -> tuple[int, list[str]]:
|
|
77
|
-
"""Scan `base` for all 13 Phase-2B targets; return (#hits, formatted lines)."""
|
|
78
|
-
if not base.is_dir():
|
|
79
|
-
return 0, [f"❌ {label} dir missing: {base}"]
|
|
80
|
-
out: list[str] = []
|
|
81
|
-
total = 0
|
|
82
|
-
for rule in TARGET_RULES:
|
|
83
|
-
path = base / f"{rule}.md"
|
|
84
|
-
if not path.is_file():
|
|
85
|
-
return 0, [f"❌ target rule missing: {path}"]
|
|
86
|
-
hits = _scan(path)
|
|
87
|
-
if not hits:
|
|
88
|
-
continue
|
|
89
|
-
total += len(hits)
|
|
90
|
-
for line_no, line in hits:
|
|
91
|
-
out.append(f" {label}/{rule}.md:{line_no} {line}")
|
|
92
|
-
return total, out
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def main() -> int:
|
|
96
|
-
parser = argparse.ArgumentParser(description=__doc__)
|
|
97
|
-
parser.add_argument(
|
|
98
|
-
"--quiet",
|
|
99
|
-
action="store_true",
|
|
100
|
-
help="suppress the per-rule breakdown when no coupling found",
|
|
101
|
-
)
|
|
102
|
-
args = parser.parse_args()
|
|
103
|
-
|
|
104
|
-
hits_src, lines_src = _check_surface("uncompressed", SRC_RULES)
|
|
105
|
-
if any(line.startswith("❌") for line in lines_src):
|
|
106
|
-
for line in lines_src:
|
|
107
|
-
print(line, file=sys.stderr)
|
|
108
|
-
return 3
|
|
109
|
-
hits_comp, lines_comp = _check_surface("compressed", COMP_RULES)
|
|
110
|
-
if any(line.startswith("❌") for line in lines_comp):
|
|
111
|
-
for line in lines_comp:
|
|
112
|
-
print(line, file=sys.stderr)
|
|
113
|
-
return 3
|
|
114
|
-
|
|
115
|
-
total = hits_src + hits_comp
|
|
116
|
-
|
|
117
|
-
if total == 0:
|
|
118
|
-
if not args.quiet:
|
|
119
|
-
print(
|
|
120
|
-
f"✅ Phase 6 → 2B decoupling intact: 0 rule-references "
|
|
121
|
-
f"across {len(TARGET_RULES)} Phase-2B targets "
|
|
122
|
-
f"(uncompressed + compressed surfaces)."
|
|
123
|
-
)
|
|
124
|
-
print(
|
|
125
|
-
" probe: rule names, load_context: entries, body "
|
|
126
|
-
"link/cite — dispatcher subcommand chat-history:hook "
|
|
127
|
-
"excluded by design."
|
|
128
|
-
)
|
|
129
|
-
return 0
|
|
130
|
-
|
|
131
|
-
print(
|
|
132
|
-
f"❌ Phase 6 → 2B coupling detected: {total} rule-reference(s) "
|
|
133
|
-
f"across Phase-2B targets:"
|
|
134
|
-
)
|
|
135
|
-
for line in lines_src + lines_comp:
|
|
136
|
-
print(line)
|
|
137
|
-
print(
|
|
138
|
-
"\n Action: see agents/roadmaps/phase6-2b-coupling.md. "
|
|
139
|
-
"Either drop the new reference, migrate it to the dispatcher "
|
|
140
|
-
"(chat-history:hook), or trigger the >0-hits branch in 0.3.2 "
|
|
141
|
-
"(Phase 6 ships call-signature contract before Phase 2B "
|
|
142
|
-
"touches the coupled rule)."
|
|
143
|
-
)
|
|
144
|
-
return 1
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if __name__ == "__main__":
|
|
148
|
-
sys.exit(main())
|