abelworkflow 1.1.2 → 1.2.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/LICENSE +21 -0
- package/README.md +30 -29
- package/extensions/gpt-responses-compat.ts +213 -0
- package/extensions/k2think-compat.ts +40 -0
- package/lib/cli/args.mjs +5 -19
- package/lib/cli/main.mjs +105 -72
- package/lib/cli/prompts.mjs +9 -2
- package/lib/config/dotenv.mjs +1 -1
- package/lib/config/jsonc.mjs +1 -1
- package/lib/config/store.mjs +197 -45
- package/lib/config/toml.mjs +147 -453
- package/lib/installer/assets.mjs +67 -45
- package/lib/installer/install.mjs +202 -45
- package/lib/installer/links.mjs +124 -101
- package/lib/installer/lock.mjs +82 -0
- package/lib/installer/state.mjs +14 -21
- package/lib/paths.mjs +9 -9
- package/lib/providers/claude.mjs +58 -114
- package/lib/providers/codex.mjs +101 -198
- package/lib/providers/pi.mjs +332 -439
- package/lib/providers/skills.mjs +88 -68
- package/lib/providers/url.mjs +35 -0
- package/lib/templates/workflow/commands/abel-design.md +23 -161
- package/lib/templates/workflow/commands/abel-diagnose.md +30 -56
- package/lib/templates/workflow/commands/abel-implement.md +30 -150
- package/lib/templates/workflow/commands/abel-init.md +1 -1
- package/lib/tools/cli-installer.mjs +29 -190
- package/package.json +7 -9
- package/skills/context7-auto-research/context7-api.cjs +75 -17
- package/skills/dev-browser/SKILL.md +15 -1
- package/skills/dev-browser/dist/scripts/start.d.ts +0 -1
- package/skills/dev-browser/dist/scripts/start.js +8 -36
- package/skills/dev-browser/dist/src/client.d.ts +3 -4
- package/skills/dev-browser/dist/src/client.js +117 -117
- package/skills/dev-browser/dist/src/entrypoint.d.ts +1 -1
- package/skills/dev-browser/dist/src/entrypoint.js +38 -31
- package/skills/dev-browser/dist/src/index.d.ts +0 -1
- package/skills/dev-browser/dist/src/index.js +0 -1
- package/skills/dev-browser/dist/src/page-api.d.ts +0 -1
- package/skills/dev-browser/dist/src/page-api.js +0 -1
- package/skills/dev-browser/dist/src/relay.d.ts +0 -1
- package/skills/dev-browser/dist/src/relay.js +53 -7
- package/skills/dev-browser/dist/src/runtime.d.ts +3 -14
- package/skills/dev-browser/dist/src/runtime.js +5 -15
- package/skills/dev-browser/dist/src/snapshot/browser-script.d.ts +0 -1
- package/skills/dev-browser/dist/src/snapshot/browser-script.js +0 -1
- package/skills/dev-browser/dist/src/snapshot/index.d.ts +0 -1
- package/skills/dev-browser/dist/src/snapshot/index.js +0 -1
- package/skills/dev-browser/dist/src/snapshot/inject.d.ts +0 -1
- package/skills/dev-browser/dist/src/snapshot/inject.js +0 -1
- package/skills/dev-browser/dist/src/standalone.d.ts +0 -1
- package/skills/dev-browser/dist/src/standalone.js +2 -3
- package/skills/dev-browser/dist/src/startup.d.ts +3 -12
- package/skills/dev-browser/dist/src/startup.js +6 -10
- package/skills/dev-browser/dist/src/target-registry.d.ts +0 -1
- package/skills/dev-browser/dist/src/target-registry.js +0 -1
- package/skills/dev-browser/dist/src/types.d.ts +0 -1
- package/skills/dev-browser/dist/src/types.js +0 -1
- package/skills/dev-browser/package-lock.json +1 -1
- package/skills/dev-browser/package.json +2 -2
- package/skills/grok-search/.env.example +1 -1
- package/skills/grok-search/SKILL.md +13 -16
- package/skills/grok-search/scripts/_dotenv.py +1 -1
- package/skills/grok-search/scripts/groksearch_cli.py +271 -195
- package/skills/time/SKILL.md +5 -2
- package/skills/time/scripts/time_cli.py +61 -22
- package/extensions/pi-gpt-responses-compat/index.ts +0 -25
- package/lib/templates/codex/config-base.toml +0 -103
- package/skills/dev-browser/dist/scripts/start.d.ts.map +0 -1
- package/skills/dev-browser/dist/scripts/start.js.map +0 -1
- package/skills/dev-browser/dist/src/client.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/client.js.map +0 -1
- package/skills/dev-browser/dist/src/entrypoint.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/entrypoint.js.map +0 -1
- package/skills/dev-browser/dist/src/index.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/index.js.map +0 -1
- package/skills/dev-browser/dist/src/page-api.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/page-api.js.map +0 -1
- package/skills/dev-browser/dist/src/relay.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/relay.js.map +0 -1
- package/skills/dev-browser/dist/src/runtime.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/runtime.js.map +0 -1
- package/skills/dev-browser/dist/src/snapshot/browser-script.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/snapshot/browser-script.js.map +0 -1
- package/skills/dev-browser/dist/src/snapshot/index.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/snapshot/index.js.map +0 -1
- package/skills/dev-browser/dist/src/snapshot/inject.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/snapshot/inject.js.map +0 -1
- package/skills/dev-browser/dist/src/standalone.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/standalone.js.map +0 -1
- package/skills/dev-browser/dist/src/startup.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/startup.js.map +0 -1
- package/skills/dev-browser/dist/src/target-registry.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/target-registry.js.map +0 -1
- package/skills/dev-browser/dist/src/types.d.ts.map +0 -1
- package/skills/dev-browser/dist/src/types.js.map +0 -1
- package/skills/grok-search/gitignore.template +0 -4
- package/skills/grok-search/scripts/groksearch_entry.py +0 -131
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""Cross-platform bootstrap entrypoint for GrokSearch CLI."""
|
|
3
|
-
|
|
4
|
-
import os
|
|
5
|
-
import shutil
|
|
6
|
-
import subprocess
|
|
7
|
-
import sys
|
|
8
|
-
from pathlib import Path
|
|
9
|
-
from typing import Optional
|
|
10
|
-
|
|
11
|
-
from _dotenv import load_dotenv
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
ROOT_DIR = Path(__file__).resolve().parent.parent
|
|
15
|
-
REQ_FILE = ROOT_DIR / "requirements.txt"
|
|
16
|
-
CLI_PY = ROOT_DIR / "scripts" / "groksearch_cli.py"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def venv_dir() -> Path:
|
|
20
|
-
configured = os.environ.get("GROKSEARCH_VENV_DIR")
|
|
21
|
-
if not configured:
|
|
22
|
-
return ROOT_DIR / ".venv"
|
|
23
|
-
dir_path = Path(configured).expanduser()
|
|
24
|
-
if dir_path.is_absolute():
|
|
25
|
-
return dir_path
|
|
26
|
-
return ROOT_DIR / dir_path
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def venv_python() -> Optional[Path]:
|
|
30
|
-
dir_path = venv_dir()
|
|
31
|
-
candidates = []
|
|
32
|
-
if sys.platform == "win32":
|
|
33
|
-
candidates.extend(
|
|
34
|
-
[
|
|
35
|
-
dir_path / "Scripts" / "python.exe",
|
|
36
|
-
dir_path / "Scripts" / "python",
|
|
37
|
-
]
|
|
38
|
-
)
|
|
39
|
-
candidates.append(dir_path / "bin" / "python")
|
|
40
|
-
for candidate in candidates:
|
|
41
|
-
if candidate.is_file():
|
|
42
|
-
return candidate
|
|
43
|
-
return None
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def python_spec() -> Optional[str]:
|
|
47
|
-
for name in ("GROKSEARCH_PYTHON", "AGENTS_SKILLS_PYTHON"):
|
|
48
|
-
value = os.environ.get(name)
|
|
49
|
-
if value:
|
|
50
|
-
return value
|
|
51
|
-
return None
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def has_uv() -> bool:
|
|
55
|
-
return shutil.which("uv") is not None
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def find_system_python() -> Optional[str]:
|
|
59
|
-
env_python = os.environ.get("AGENTS_SKILLS_PYTHON")
|
|
60
|
-
if env_python and Path(env_python).is_file():
|
|
61
|
-
return env_python
|
|
62
|
-
if sys.executable and Path(sys.executable).is_file():
|
|
63
|
-
return sys.executable
|
|
64
|
-
for command in ("python3", "python"):
|
|
65
|
-
found = shutil.which(command)
|
|
66
|
-
if found:
|
|
67
|
-
return found
|
|
68
|
-
return None
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def create_venv() -> None:
|
|
72
|
-
dir_path = venv_dir()
|
|
73
|
-
if has_uv():
|
|
74
|
-
command = ["uv", "venv"]
|
|
75
|
-
spec = python_spec()
|
|
76
|
-
if spec:
|
|
77
|
-
command.extend(["--python", spec])
|
|
78
|
-
command.append(str(dir_path))
|
|
79
|
-
subprocess.run(command, check=True)
|
|
80
|
-
return
|
|
81
|
-
python_bin = find_system_python()
|
|
82
|
-
if not python_bin:
|
|
83
|
-
print("Error: No usable uv or python found. Cannot create virtual environment.", file=sys.stderr)
|
|
84
|
-
sys.exit(1)
|
|
85
|
-
subprocess.run([python_bin, "-m", "venv", str(dir_path)], check=True)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
def install_deps(python_bin: Path) -> None:
|
|
89
|
-
check = subprocess.run(
|
|
90
|
-
[str(python_bin), "-c", "import httpx, tenacity"],
|
|
91
|
-
stdout=subprocess.DEVNULL,
|
|
92
|
-
stderr=subprocess.DEVNULL,
|
|
93
|
-
)
|
|
94
|
-
if check.returncode == 0:
|
|
95
|
-
return
|
|
96
|
-
if has_uv() and REQ_FILE.is_file():
|
|
97
|
-
subprocess.run(["uv", "pip", "install", "--python", str(python_bin), "-r", str(REQ_FILE)], check=True)
|
|
98
|
-
return
|
|
99
|
-
if REQ_FILE.is_file():
|
|
100
|
-
subprocess.run([str(python_bin), "-m", "pip", "install", "-r", str(REQ_FILE)], check=True)
|
|
101
|
-
return
|
|
102
|
-
subprocess.run([str(python_bin), "-m", "pip", "install", "httpx", "tenacity"], check=True)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def validate_venv_dir() -> None:
|
|
106
|
-
dir_path = venv_dir()
|
|
107
|
-
if dir_path.exists() and not dir_path.is_dir():
|
|
108
|
-
print(f"Error: {dir_path} exists but is not a directory.", file=sys.stderr)
|
|
109
|
-
sys.exit(1)
|
|
110
|
-
if dir_path.is_dir() and not (dir_path / "pyvenv.cfg").exists() and venv_python() is None:
|
|
111
|
-
print(f"Error: {dir_path} exists but is not a valid venv.", file=sys.stderr)
|
|
112
|
-
sys.exit(1)
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def main() -> None:
|
|
116
|
-
load_dotenv()
|
|
117
|
-
validate_venv_dir()
|
|
118
|
-
python_bin = venv_python()
|
|
119
|
-
if python_bin is None:
|
|
120
|
-
create_venv()
|
|
121
|
-
python_bin = venv_python()
|
|
122
|
-
if python_bin is None:
|
|
123
|
-
print("Error: Failed to locate python in venv after creation.", file=sys.stderr)
|
|
124
|
-
sys.exit(1)
|
|
125
|
-
install_deps(python_bin)
|
|
126
|
-
result = subprocess.run([str(python_bin), str(CLI_PY)] + sys.argv[1:])
|
|
127
|
-
sys.exit(result.returncode)
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if __name__ == "__main__":
|
|
131
|
-
main()
|