@homericintelligence/athena-opencode 0.4.4

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.
Files changed (36) hide show
  1. package/LICENSE +29 -0
  2. package/NOTICE +22 -0
  3. package/README.md +45 -0
  4. package/package.json +29 -0
  5. package/plugin.js +54 -0
  6. package/skills/THIRD_PARTY_LICENSES.md +50 -0
  7. package/skills/_cli.py +152 -0
  8. package/skills/advise/SKILL.md +62 -0
  9. package/skills/advise/scripts/list_retrievable_skills.py +49 -0
  10. package/skills/brainstorm/SKILL.md +110 -0
  11. package/skills/change-review/SKILL.md +68 -0
  12. package/skills/change-review/references/scope-resolution.md +52 -0
  13. package/skills/change-review/scripts/resolve_scope.py +1219 -0
  14. package/skills/finalize-plan/SKILL.md +129 -0
  15. package/skills/git-worktrees/SKILL.md +113 -0
  16. package/skills/git-worktrees/scripts/prepare_worktree.py +153 -0
  17. package/skills/issue-review/SKILL.md +67 -0
  18. package/skills/learn/SKILL.md +208 -0
  19. package/skills/myrmidon-swarm/SKILL.md +93 -0
  20. package/skills/plan-issue/SKILL.md +70 -0
  21. package/skills/pr-review/SKILL.md +114 -0
  22. package/skills/pr-review/references/criteria.md +26 -0
  23. package/skills/pr-review/references/delivery.md +135 -0
  24. package/skills/pr-review/references/evidence.md +233 -0
  25. package/skills/pr-review/references/prevalidated.md +155 -0
  26. package/skills/pr-review/scripts/collect_evidence.py +1478 -0
  27. package/skills/pr-review/scripts/diff_context.py +74 -0
  28. package/skills/pr-review/scripts/materialize_snapshot.py +731 -0
  29. package/skills/pr-review/scripts/pr_identity.py +80 -0
  30. package/skills/pr-review/scripts/resolve_pr.py +258 -0
  31. package/skills/repo-review/SKILL.md +119 -0
  32. package/skills/systematic-debugging/SKILL.md +199 -0
  33. package/skills/systematic-debugging/scripts/repository_evidence.py +77 -0
  34. package/skills/test-driven-development/SKILL.md +75 -0
  35. package/skills/tidy/SKILL.md +71 -0
  36. package/skills/tidy/scripts/run_tidy.py +43 -0
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env python3
2
+ """Compute the two required pull-request diff lenses."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import json
7
+ import sys
8
+ from collections.abc import Sequence
9
+ from pathlib import Path
10
+
11
+ if __package__ in {None, ""}:
12
+ sys.path.insert(0, str(Path(__file__).resolve().parents[3]))
13
+
14
+ from pr_identity import require_commit_oid
15
+
16
+ from skills._cli import (
17
+ argument_parser,
18
+ git_read_arguments,
19
+ git_read_environment,
20
+ require_complete_git_history,
21
+ require_unambiguous_git_merge_base,
22
+ run_command,
23
+ )
24
+
25
+
26
+ def git(*arguments: str) -> str:
27
+ result = run_command(
28
+ ["git", *git_read_arguments(), *arguments],
29
+ capture_output=True,
30
+ env=git_read_environment(),
31
+ text=True,
32
+ check=False,
33
+ )
34
+ if result.returncode != 0:
35
+ raise RuntimeError(result.stderr.strip() or f"git {' '.join(arguments)} failed")
36
+ return result.stdout.strip()
37
+
38
+
39
+ def main(argv: Sequence[str] | None = None) -> int:
40
+ parser = argument_parser(description=__doc__)
41
+ parser.add_argument("base_ref", metavar="BASE_OID")
42
+ parser.add_argument("head_ref", metavar="HEAD_OID")
43
+ arguments = parser.parse_args(argv)
44
+ try:
45
+ base_ref = require_commit_oid(arguments.base_ref, "base OID")
46
+ head_ref = require_commit_oid(arguments.head_ref, "head OID")
47
+ require_complete_git_history()
48
+ git("rev-parse", "--verify", f"{base_ref}^{{commit}}")
49
+ git("rev-parse", "--verify", f"{head_ref}^{{commit}}")
50
+ merge_base = require_commit_oid(
51
+ require_unambiguous_git_merge_base(base_ref, head_ref), "merge base"
52
+ )
53
+ behind_count = int(git("rev-list", "--count", f"{head_ref}..{base_ref}"))
54
+ except (RuntimeError, ValueError) as error:
55
+ print(error, file=sys.stderr)
56
+ return 1
57
+ print(
58
+ json.dumps(
59
+ {
60
+ "base_ref": base_ref,
61
+ "head_ref": head_ref,
62
+ "merge_base": merge_base,
63
+ "behind_count": behind_count,
64
+ "author_intent_range": f"{merge_base}...{head_ref}",
65
+ "current_base_range": f"{base_ref}..{head_ref}",
66
+ },
67
+ sort_keys=True,
68
+ )
69
+ )
70
+ return 0
71
+
72
+
73
+ if __name__ == "__main__":
74
+ raise SystemExit(main())