abtars 0.1.0-alpha.1
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 +190 -0
- package/README.md +84 -0
- package/bundle/_registry.generated-M4WY2MMI.js +35 -0
- package/bundle/_registry.generated-M4WY2MMI.js.map +7 -0
- package/bundle/abtars-browser.js +162 -0
- package/bundle/abtars-browser.js.map +7 -0
- package/bundle/abtars-cli.js +1438 -0
- package/bundle/abtars-cli.js.map +7 -0
- package/bundle/abtars-restart.js +12 -0
- package/bundle/abtars-restart.js.map +7 -0
- package/bundle/abtars-rss.js +165 -0
- package/bundle/abtars-rss.js.map +7 -0
- package/bundle/abtars-task.js +258 -0
- package/bundle/abtars-task.js.map +7 -0
- package/bundle/abtars.js +4072 -0
- package/bundle/abtars.js.map +7 -0
- package/bundle/agent-api-rate-limit-OQNFMXTZ.js +38 -0
- package/bundle/agent-api-rate-limit-OQNFMXTZ.js.map +7 -0
- package/bundle/agent-registry-LT4JNQH6.js +18 -0
- package/bundle/agent-registry-LT4JNQH6.js.map +7 -0
- package/bundle/agents/default.md +29 -0
- package/bundle/anthropic-adapter-2APTH3LA.js +40 -0
- package/bundle/anthropic-adapter-2APTH3LA.js.map +7 -0
- package/bundle/bridge-lock-transport-4AC2G5G6.js +39 -0
- package/bundle/bridge-lock-transport-4AC2G5G6.js.map +7 -0
- package/bundle/browse-delivery-JXBY36GK.js +17 -0
- package/bundle/browse-delivery-JXBY36GK.js.map +7 -0
- package/bundle/browser-ELNDVPLC.js +18 -0
- package/bundle/browser-ELNDVPLC.js.map +7 -0
- package/bundle/capability-CIL3G4FI.js +17 -0
- package/bundle/capability-CIL3G4FI.js.map +7 -0
- package/bundle/chunk-265TPOPC.js +289 -0
- package/bundle/chunk-265TPOPC.js.map +7 -0
- package/bundle/chunk-2UENBO6M.js +223 -0
- package/bundle/chunk-2UENBO6M.js.map +7 -0
- package/bundle/chunk-2UPU3OW6.js +67 -0
- package/bundle/chunk-2UPU3OW6.js.map +7 -0
- package/bundle/chunk-2XU2X4OI.js +125 -0
- package/bundle/chunk-2XU2X4OI.js.map +7 -0
- package/bundle/chunk-3B7BBE4F.js +758 -0
- package/bundle/chunk-3B7BBE4F.js.map +7 -0
- package/bundle/chunk-3E545J66.js +69 -0
- package/bundle/chunk-3E545J66.js.map +7 -0
- package/bundle/chunk-5R2ANXQ7.js +510 -0
- package/bundle/chunk-5R2ANXQ7.js.map +7 -0
- package/bundle/chunk-6CPN4IGS.js +507 -0
- package/bundle/chunk-6CPN4IGS.js.map +7 -0
- package/bundle/chunk-6NR3OHEW.js +88 -0
- package/bundle/chunk-6NR3OHEW.js.map +7 -0
- package/bundle/chunk-6SETMHNN.js +206 -0
- package/bundle/chunk-6SETMHNN.js.map +7 -0
- package/bundle/chunk-6UCRKRWR.js +644 -0
- package/bundle/chunk-6UCRKRWR.js.map +7 -0
- package/bundle/chunk-AR6GO6YC.js +83 -0
- package/bundle/chunk-AR6GO6YC.js.map +7 -0
- package/bundle/chunk-AZJIODTQ.js +54 -0
- package/bundle/chunk-AZJIODTQ.js.map +7 -0
- package/bundle/chunk-BHMZ4RCC.js +3706 -0
- package/bundle/chunk-BHMZ4RCC.js.map +7 -0
- package/bundle/chunk-BQ2L4GMG.js +9175 -0
- package/bundle/chunk-BQ2L4GMG.js.map +7 -0
- package/bundle/chunk-BSSBCSCL.js +159 -0
- package/bundle/chunk-BSSBCSCL.js.map +7 -0
- package/bundle/chunk-BUUVFUPO.js +157 -0
- package/bundle/chunk-BUUVFUPO.js.map +7 -0
- package/bundle/chunk-CEVRHKJY.js +131 -0
- package/bundle/chunk-CEVRHKJY.js.map +7 -0
- package/bundle/chunk-CWOHNFUV.js +39 -0
- package/bundle/chunk-CWOHNFUV.js.map +7 -0
- package/bundle/chunk-D2DCBO6M.js +228 -0
- package/bundle/chunk-D2DCBO6M.js.map +7 -0
- package/bundle/chunk-FMWKEPM7.js +31 -0
- package/bundle/chunk-FMWKEPM7.js.map +7 -0
- package/bundle/chunk-GRNENTPA.js +145 -0
- package/bundle/chunk-GRNENTPA.js.map +7 -0
- package/bundle/chunk-GST5T3WZ.js +93 -0
- package/bundle/chunk-GST5T3WZ.js.map +7 -0
- package/bundle/chunk-GUQVJC3U.js +299 -0
- package/bundle/chunk-GUQVJC3U.js.map +7 -0
- package/bundle/chunk-HX7Y7EYP.js +3659 -0
- package/bundle/chunk-HX7Y7EYP.js.map +7 -0
- package/bundle/chunk-JCJS4ZIB.js +296 -0
- package/bundle/chunk-JCJS4ZIB.js.map +7 -0
- package/bundle/chunk-JW6RU47G.js +184 -0
- package/bundle/chunk-JW6RU47G.js.map +7 -0
- package/bundle/chunk-LSPKJQCI.js +24 -0
- package/bundle/chunk-LSPKJQCI.js.map +7 -0
- package/bundle/chunk-M6VBAPNT.js +16 -0
- package/bundle/chunk-M6VBAPNT.js.map +7 -0
- package/bundle/chunk-MPX525QO.js +129 -0
- package/bundle/chunk-MPX525QO.js.map +7 -0
- package/bundle/chunk-MW6WDLU7.js +130 -0
- package/bundle/chunk-MW6WDLU7.js.map +7 -0
- package/bundle/chunk-NT3OBORC.js +215 -0
- package/bundle/chunk-NT3OBORC.js.map +7 -0
- package/bundle/chunk-NWDBD4PA.js +50 -0
- package/bundle/chunk-NWDBD4PA.js.map +7 -0
- package/bundle/chunk-OP7BTAWY.js +29 -0
- package/bundle/chunk-OP7BTAWY.js.map +7 -0
- package/bundle/chunk-PLCY3GFH.js +77 -0
- package/bundle/chunk-PLCY3GFH.js.map +7 -0
- package/bundle/chunk-PNEDC45Y.js +97 -0
- package/bundle/chunk-PNEDC45Y.js.map +7 -0
- package/bundle/chunk-QBGBT5QS.js +81 -0
- package/bundle/chunk-QBGBT5QS.js.map +7 -0
- package/bundle/chunk-RVE2N7FA.js +70 -0
- package/bundle/chunk-RVE2N7FA.js.map +7 -0
- package/bundle/chunk-TZHIDLDS.js +71910 -0
- package/bundle/chunk-TZHIDLDS.js.map +7 -0
- package/bundle/chunk-UCQ2WC3B.js +126 -0
- package/bundle/chunk-UCQ2WC3B.js.map +7 -0
- package/bundle/chunk-UHRP745J.js +214 -0
- package/bundle/chunk-UHRP745J.js.map +7 -0
- package/bundle/chunk-V76TVMCM.js +58 -0
- package/bundle/chunk-V76TVMCM.js.map +7 -0
- package/bundle/chunk-VVEDVGCR.js +981 -0
- package/bundle/chunk-VVEDVGCR.js.map +7 -0
- package/bundle/chunk-W6FAL35D.js +102 -0
- package/bundle/chunk-W6FAL35D.js.map +7 -0
- package/bundle/chunk-X6TERNVJ.js +15902 -0
- package/bundle/chunk-X6TERNVJ.js.map +7 -0
- package/bundle/chunk-X76UX47U.js +47 -0
- package/bundle/chunk-X76UX47U.js.map +7 -0
- package/bundle/chunk-XREWVCUO.js +518 -0
- package/bundle/chunk-XREWVCUO.js.map +7 -0
- package/bundle/chunk-Y6XAEX2Q.js +408 -0
- package/bundle/chunk-Y6XAEX2Q.js.map +7 -0
- package/bundle/chunk-YOCTDKKL.js +28 -0
- package/bundle/chunk-YOCTDKKL.js.map +7 -0
- package/bundle/chunk-ZXPXCDA6.js +160 -0
- package/bundle/chunk-ZXPXCDA6.js.map +7 -0
- package/bundle/commands-BHVUOU3V.js +31 -0
- package/bundle/commands-BHVUOU3V.js.map +7 -0
- package/bundle/completion-buffer-P253ONKF.js +13 -0
- package/bundle/completion-buffer-P253ONKF.js.map +7 -0
- package/bundle/config-RGSDAPZN.js +19 -0
- package/bundle/config-RGSDAPZN.js.map +7 -0
- package/bundle/config-show-ERTATR6E.js +40 -0
- package/bundle/config-show-ERTATR6E.js.map +7 -0
- package/bundle/context-HCEGZNDC.js +72 -0
- package/bundle/context-HCEGZNDC.js.map +7 -0
- package/bundle/delegation-tools-GYTS2D6A.js +27 -0
- package/bundle/delegation-tools-GYTS2D6A.js.map +7 -0
- package/bundle/deploy-lib-import-32ZFKHWP.js +49 -0
- package/bundle/deploy-lib-import-32ZFKHWP.js.map +7 -0
- package/bundle/digital-signature-OFCGSHWO.js +13 -0
- package/bundle/digital-signature-OFCGSHWO.js.map +7 -0
- package/bundle/direct-api-transport-YR7SXXNN.js +860 -0
- package/bundle/direct-api-transport-YR7SXXNN.js.map +7 -0
- package/bundle/discord-adapter-YYWVMPPU.js +584 -0
- package/bundle/discord-adapter-YYWVMPPU.js.map +7 -0
- package/bundle/dist-MTMKARCP.js +1969 -0
- package/bundle/dist-MTMKARCP.js.map +7 -0
- package/bundle/dns-wakeup-27M7D2MR.js +107 -0
- package/bundle/dns-wakeup-27M7D2MR.js.map +7 -0
- package/bundle/doctor-QNUSDY73.js +248 -0
- package/bundle/doctor-QNUSDY73.js.map +7 -0
- package/bundle/ensure-invariants-NMXNS476.js +49 -0
- package/bundle/ensure-invariants-NMXNS476.js.map +7 -0
- package/bundle/env-schema-2KBHBDGN.js +19 -0
- package/bundle/env-schema-2KBHBDGN.js.map +7 -0
- package/bundle/esm-DDP6NCZG.js +100663 -0
- package/bundle/esm-DDP6NCZG.js.map +7 -0
- package/bundle/fallback-policy-L4QV2PEJ.js +46 -0
- package/bundle/fallback-policy-L4QV2PEJ.js.map +7 -0
- package/bundle/health-check-SPA7NT6N.js +56 -0
- package/bundle/health-check-SPA7NT6N.js.map +7 -0
- package/bundle/hook-system-6Q5YTR53.js +17 -0
- package/bundle/hook-system-6Q5YTR53.js.map +7 -0
- package/bundle/hotskills-K7BM4YLB.js +12 -0
- package/bundle/hotskills-K7BM4YLB.js.map +7 -0
- package/bundle/install-6HRZVKUM.js +15 -0
- package/bundle/install-6HRZVKUM.js.map +7 -0
- package/bundle/install-log-IAPHYKD4.js +28 -0
- package/bundle/install-log-IAPHYKD4.js.map +7 -0
- package/bundle/install-manifest-SPQRUNXL.js +102 -0
- package/bundle/install-manifest-SPQRUNXL.js.map +7 -0
- package/bundle/install-validate-PVLZXYLQ.js +53 -0
- package/bundle/install-validate-PVLZXYLQ.js.map +7 -0
- package/bundle/irc-adapter-OI5UZSQF.js +293 -0
- package/bundle/irc-adapter-OI5UZSQF.js.map +7 -0
- package/bundle/irc-config-55YO6EGB.js +88 -0
- package/bundle/irc-config-55YO6EGB.js.map +7 -0
- package/bundle/logs-ZNYXX5PA.js +19 -0
- package/bundle/logs-ZNYXX5PA.js.map +7 -0
- package/bundle/media-utils-XNNDTYFI.js +4662 -0
- package/bundle/media-utils-XNNDTYFI.js.map +7 -0
- package/bundle/message-pipeline-LLH5SYMO.js +33 -0
- package/bundle/message-pipeline-LLH5SYMO.js.map +7 -0
- package/bundle/meta.json +41304 -0
- package/bundle/model-health-registry-35LQNVQR.js +11 -0
- package/bundle/model-health-registry-35LQNVQR.js.map +7 -0
- package/bundle/notification-Y5S5MMLV.js +13 -0
- package/bundle/notification-Y5S5MMLV.js.map +7 -0
- package/bundle/openrouter-credits-EDY7ETAU.js +32 -0
- package/bundle/openrouter-credits-EDY7ETAU.js.map +7 -0
- package/bundle/passwd-RRFV4CC5.js +133 -0
- package/bundle/passwd-RRFV4CC5.js.map +7 -0
- package/bundle/paths-G33RZWZ7.js +17 -0
- package/bundle/paths-G33RZWZ7.js.map +7 -0
- package/bundle/peer-client-52XYMNI7.js +156 -0
- package/bundle/peer-client-52XYMNI7.js.map +7 -0
- package/bundle/peer-config-VK6EDLN5.js +16 -0
- package/bundle/peer-config-VK6EDLN5.js.map +7 -0
- package/bundle/peer-sessions-EAXTNQ36.js +49 -0
- package/bundle/peer-sessions-EAXTNQ36.js.map +7 -0
- package/bundle/pending-callback-RIMQZ7FJ.js +40 -0
- package/bundle/pending-callback-RIMQZ7FJ.js.map +7 -0
- package/bundle/phase-transport-KYERDL2O.js +22 -0
- package/bundle/phase-transport-KYERDL2O.js.map +7 -0
- package/bundle/public/css/dashboard.css +542 -0
- package/bundle/public/index.html +180 -0
- package/bundle/public/js/app.js +437 -0
- package/bundle/public/memory-universe.js +384 -0
- package/bundle/responses-adapter-AAQTY3K4.js +30 -0
- package/bundle/responses-adapter-AAQTY3K4.js.map +7 -0
- package/bundle/restore-ZE3SEPSS.js +46 -0
- package/bundle/restore-ZE3SEPSS.js.map +7 -0
- package/bundle/self-healer-utils-DMUUXC47.js +43 -0
- package/bundle/self-healer-utils-DMUUXC47.js.map +7 -0
- package/bundle/skill-stats-LLEXEXLR.js +22 -0
- package/bundle/skill-stats-LLEXEXLR.js.map +7 -0
- package/bundle/sleep-OYIUOVQD.js +19 -0
- package/bundle/sleep-OYIUOVQD.js.map +7 -0
- package/bundle/soul-loader-54WCVNLJ.js +16 -0
- package/bundle/soul-loader-54WCVNLJ.js.map +7 -0
- package/bundle/src-JL4PVO23.js +8 -0
- package/bundle/src-JL4PVO23.js.map +7 -0
- package/bundle/sse-parser-anthropic-P7CE2MH2.js +72 -0
- package/bundle/sse-parser-anthropic-P7CE2MH2.js.map +7 -0
- package/bundle/sse-parser-responses-EQQA5FWN.js +63 -0
- package/bundle/sse-parser-responses-EQQA5FWN.js.map +7 -0
- package/bundle/ssrf-guard-FZCBYIVW.js +64 -0
- package/bundle/ssrf-guard-FZCBYIVW.js.map +7 -0
- package/bundle/start-FH3GRMJ4.js +35 -0
- package/bundle/start-FH3GRMJ4.js.map +7 -0
- package/bundle/stream-single-WSG4D53C.js +33 -0
- package/bundle/stream-single-WSG4D53C.js.map +7 -0
- package/bundle/stt-2UH3RITX.js +14 -0
- package/bundle/stt-2UH3RITX.js.map +7 -0
- package/bundle/subagent-runtime-LE2ZXH3G.js +12 -0
- package/bundle/subagent-runtime-LE2ZXH3G.js.map +7 -0
- package/bundle/system-message-T5R3EYYN.js +30 -0
- package/bundle/system-message-T5R3EYYN.js.map +7 -0
- package/bundle/system-status-KQ6KHFJ6.js +189 -0
- package/bundle/system-status-KQ6KHFJ6.js.map +7 -0
- package/bundle/task-store-K7CQDEPI.js +22 -0
- package/bundle/task-store-K7CQDEPI.js.map +7 -0
- package/bundle/telegram-adapter-2V3XUMT5.js +1060 -0
- package/bundle/telegram-adapter-2V3XUMT5.js.map +7 -0
- package/bundle/tool-registry-MU3OX4UI.js +38 -0
- package/bundle/tool-registry-MU3OX4UI.js.map +7 -0
- package/bundle/tool-sandbox-VYOK4ZOA.js +20 -0
- package/bundle/tool-sandbox-VYOK4ZOA.js.map +7 -0
- package/bundle/transport-config-YLXU33RO.js +57 -0
- package/bundle/transport-config-YLXU33RO.js.map +7 -0
- package/bundle/update-QCW5LXRN.js +13 -0
- package/bundle/update-QCW5LXRN.js.map +7 -0
- package/bundle/update-check-27KZSAP6.js +12 -0
- package/bundle/update-check-27KZSAP6.js.map +7 -0
- package/bundle/usage-tracker-OVVEVMOY.js +17 -0
- package/bundle/usage-tracker-OVVEVMOY.js.map +7 -0
- package/bundle/user-registry-D4SD73UV.js +16 -0
- package/bundle/user-registry-D4SD73UV.js.map +7 -0
- package/core/professor.json +14 -0
- package/core/prompts/browsing_prompt.md +39 -0
- package/core/prompts/compaction.md +32 -0
- package/core/skills/memory/classification/SKILL.md +37 -0
- package/core/skills/memory/memory-anomalies/SKILL.md +39 -0
- package/core/skills/memory/memory-search/SKILL.md +48 -0
- package/core/skills/memory/topic-save/SKILL.md +44 -0
- package/core/skills/ops/cron/SKILL.md +51 -0
- package/core/skills/ops/gdrive-backup/SKILL.md +15 -0
- package/core/skills/ops/session-start/SKILL.md +11 -0
- package/core/skills/ops/skill-authoring/SKILL.md +54 -0
- package/core/skills/ops/system-health/SKILL.md +104 -0
- package/core/skills/ops/troubleshooting/SKILL.md +48 -0
- package/core/skills/ops/trust-gating/SKILL.md +30 -0
- package/core/skills/tools/a2a-communication/SKILL.md +68 -0
- package/core/skills/tools/browse-delegate/SKILL.md +27 -0
- package/core/skills/tools/browser/SKILL.md +36 -0
- package/core/skills/tools/clawhub/SKILL.md +44 -0
- package/core/skills/tools/delegation/SKILL.md +48 -0
- package/core/skills/tools/fxtwitter/SKILL.md +52 -0
- package/core/skills/tools/gmail/SKILL.md +44 -0
- package/core/skills/tools/irc-chat/SKILL.md +84 -0
- package/core/skills/tools/linear/SKILL.md +90 -0
- package/core/skills/tools/mcporter/SKILL.md +46 -0
- package/core/skills/tools/model-scout/SKILL.md +132 -0
- package/core/skills/tools/model-scout/scout-add-model.py +67 -0
- package/core/skills/tools/model-scout/scout-ollama.py +116 -0
- package/core/skills/tools/model-scout/scout-openrouter.py +85 -0
- package/core/skills/tools/nlm/SKILL.md +40 -0
- package/core/skills/tools/todo/SKILL.md +30 -0
- package/core/skills/tools/twitterX/SKILL.md +52 -0
- package/core/skills/tools/twitterX/scripts/abtars-tweet.js +532 -0
- package/core/skills/tools/twitterX/scripts/package.json +1 -0
- package/core/skills/tools/web-fetch/SKILL.md +29 -0
- package/package.json +59 -0
- package/scripts/abtars-daemon.service +23 -0
- package/scripts/abtars-fetch.sh +42 -0
- package/scripts/abtars-watchdog.service +13 -0
- package/scripts/abtars.sh +14 -0
- package/scripts/abtars@.service +21 -0
- package/scripts/browser-patchright.sh +79 -0
- package/scripts/com.abtars.daemon.plist +24 -0
- package/scripts/com.abtars.watchdog.plist +27 -0
- package/scripts/daily-backup.sh +62 -0
- package/scripts/doctor.sh +553 -0
- package/scripts/hooks/audit-logger.sh +22 -0
- package/scripts/upgrade-deps.sh +64 -0
- package/scripts/watchdog.sh +309 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""List free models from OpenRouter, compare against models.json catalog.
|
|
3
|
+
Usage:
|
|
4
|
+
scout-openrouter.py # list only
|
|
5
|
+
scout-openrouter.py --test # list + liveness test + write status to models.json
|
|
6
|
+
"""
|
|
7
|
+
import json, os, sys, urllib.request
|
|
8
|
+
|
|
9
|
+
config_dir = os.path.expanduser("~/.abtars/config")
|
|
10
|
+
tc_path = os.path.join(config_dir, "transport.json")
|
|
11
|
+
models_path = os.path.join(config_dir, "models.json")
|
|
12
|
+
do_test = "--test" in sys.argv
|
|
13
|
+
|
|
14
|
+
# Get API key from transport.json
|
|
15
|
+
try:
|
|
16
|
+
tc = json.load(open(tc_path))
|
|
17
|
+
env_var = tc["providers"].get("openrouter", {}).get("apiKeyEnv", "OPENROUTER_API_KEY")
|
|
18
|
+
key = os.environ.get(env_var, "")
|
|
19
|
+
except Exception:
|
|
20
|
+
key = os.environ.get("OPENROUTER_API_KEY", "")
|
|
21
|
+
|
|
22
|
+
if not key:
|
|
23
|
+
print("❌ No OpenRouter API key found"); sys.exit(1)
|
|
24
|
+
|
|
25
|
+
# Fetch models
|
|
26
|
+
req = urllib.request.Request("https://openrouter.ai/api/v1/models", headers={"Authorization": f"Bearer {key}"})
|
|
27
|
+
data = json.loads(urllib.request.urlopen(req, timeout=10).read())
|
|
28
|
+
free = [m for m in data["data"] if ":free" in m["id"]]
|
|
29
|
+
free.sort(key=lambda m: m.get("context_length") or 0, reverse=True)
|
|
30
|
+
|
|
31
|
+
# Load current catalog
|
|
32
|
+
try:
|
|
33
|
+
catalog = json.load(open(models_path))
|
|
34
|
+
except Exception:
|
|
35
|
+
catalog = {}
|
|
36
|
+
cataloged = {k for k in catalog if "openrouter" in catalog[k].get("transports", [])}
|
|
37
|
+
|
|
38
|
+
print(f"{'Model':<45} {'Ctx':>8} {'MaxOut':>8} {'Status'}")
|
|
39
|
+
print("-" * 80)
|
|
40
|
+
|
|
41
|
+
from datetime import date
|
|
42
|
+
today = date.today().isoformat()
|
|
43
|
+
|
|
44
|
+
for m in free[:30]:
|
|
45
|
+
mid = m["id"]
|
|
46
|
+
ctx = m.get("context_length") or 0
|
|
47
|
+
out = m.get("top_provider", {}).get("max_completion_tokens") or 0
|
|
48
|
+
short = mid.split("/")[-1].replace(":free", ":cloud") if "/" in mid else mid
|
|
49
|
+
status = "✓ cataloged" if short in cataloged or mid in cataloged else "NEW"
|
|
50
|
+
|
|
51
|
+
# Liveness test
|
|
52
|
+
if do_test and status == "NEW":
|
|
53
|
+
try:
|
|
54
|
+
test_req = urllib.request.Request(
|
|
55
|
+
"https://openrouter.ai/api/v1/chat/completions",
|
|
56
|
+
headers={"Authorization": f"Bearer {key}", "Content-Type": "application/json"},
|
|
57
|
+
data=json.dumps({"model": mid, "messages": [{"role": "user", "content": "Say OK"}], "max_tokens": 5}).encode()
|
|
58
|
+
)
|
|
59
|
+
resp = json.loads(urllib.request.urlopen(test_req, timeout=15).read())
|
|
60
|
+
content = resp.get("choices", [{}])[0].get("message", {}).get("content", "")
|
|
61
|
+
alive = bool(content.strip())
|
|
62
|
+
except Exception:
|
|
63
|
+
alive = False
|
|
64
|
+
status = f"{'✓ alive' if alive else '✗ dead'}"
|
|
65
|
+
|
|
66
|
+
# Write to models.json
|
|
67
|
+
if mid not in catalog:
|
|
68
|
+
catalog[mid] = {
|
|
69
|
+
"contextWindow": ctx, "maxOutput": out, "rank": 2 if ctx >= 200000 else 3,
|
|
70
|
+
"cost": {"input": 0.0, "output": 0.0},
|
|
71
|
+
"transports": ["openrouter"],
|
|
72
|
+
"description": f"Scouted {today}",
|
|
73
|
+
"validatedAt": today, "status": "alive" if alive else "dead"
|
|
74
|
+
}
|
|
75
|
+
else:
|
|
76
|
+
catalog[mid]["validatedAt"] = today
|
|
77
|
+
catalog[mid]["status"] = "alive" if alive else "dead"
|
|
78
|
+
|
|
79
|
+
print(f"{mid:<45} {ctx:>8} {out:>8} {status}")
|
|
80
|
+
|
|
81
|
+
if do_test:
|
|
82
|
+
with open(models_path, "w") as f:
|
|
83
|
+
json.dump(catalog, f, indent=2)
|
|
84
|
+
f.write("\n")
|
|
85
|
+
print(f"\n✓ models.json updated ({len(catalog)} entries)")
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nlm
|
|
3
|
+
description: Query the NotebookLM knowledge base (Layer 6) for answers grounded in curated reference material
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Knowledge Base Query (NotebookLM)
|
|
8
|
+
|
|
9
|
+
Query curated reference documents — research papers, technical docs, guides.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
nlm notebook query <NOTEBOOK_ID> "your question here" --json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Other commands:
|
|
16
|
+
```bash
|
|
17
|
+
nlm notebook list --json # list notebooks
|
|
18
|
+
nlm notebook create <name> --json # create notebook
|
|
19
|
+
nlm source list <NOTEBOOK_ID> --json # list sources
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Troubleshooting
|
|
23
|
+
|
|
24
|
+
If `nlm` returns `400 Bad Request` or auth errors, the session has expired. Fix:
|
|
25
|
+
```bash
|
|
26
|
+
nlm login
|
|
27
|
+
```
|
|
28
|
+
This opens a browser for Google re-authentication. Happens periodically when Google rotates session tokens.
|
|
29
|
+
|
|
30
|
+
Returns JSON: `answer`, `sources_used`.
|
|
31
|
+
|
|
32
|
+
## When to use
|
|
33
|
+
- Questions about uploaded reference material (docs, research, guides)
|
|
34
|
+
- Technical documentation lookups local memory wouldn't have
|
|
35
|
+
- Local memory search returned nothing and question is about curated knowledge
|
|
36
|
+
|
|
37
|
+
## When NOT to use
|
|
38
|
+
- Answer already in conversation context
|
|
39
|
+
- Personal memories / past conversations (use memory-search)
|
|
40
|
+
- Real-time / live information (knowledge base is static)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: todo
|
|
3
|
+
description: Manage a persistent todo list
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Todo Skill
|
|
8
|
+
|
|
9
|
+
Manage a persistent todo list via shell commands.
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
- `abtars-todo add "description"` — add new item
|
|
14
|
+
- `abtars-todo list` — show all items
|
|
15
|
+
- `abtars-todo done <N>` — mark item N as complete
|
|
16
|
+
- `abtars-todo remove <N>` — delete item N
|
|
17
|
+
|
|
18
|
+
Item numbers are 1-based, in the order they appear in the file.
|
|
19
|
+
|
|
20
|
+
## When to use
|
|
21
|
+
|
|
22
|
+
- User says "remind me", "don't forget", "add to my list", "todo", "emlékeztess", "ne felejtsd"
|
|
23
|
+
- User asks "what's on my list", "what do I need to do", "mi van a listámon"
|
|
24
|
+
- After completing a task the user previously asked to track
|
|
25
|
+
|
|
26
|
+
## When NOT to use
|
|
27
|
+
|
|
28
|
+
- For time-specific reminders with a specific date/time (use abtars-cron instead)
|
|
29
|
+
- For facts/preferences (use abmind store instead)
|
|
30
|
+
- For routine conversational messages
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: twitterX
|
|
3
|
+
description: Fetch Twitter/X feeds, timelines, replies, and search. Use when user asks about tweets, X feed, social media monitoring, or follow discovery.
|
|
4
|
+
requires:
|
|
5
|
+
files: [~/.abtars/workspace/twitterX]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Twitter/X Feed Tool
|
|
9
|
+
|
|
10
|
+
Fetch and analyze Twitter/X content via rettiwt-api + FxTwitter.
|
|
11
|
+
|
|
12
|
+
## Commands
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Feed (all follows, ranked)
|
|
16
|
+
node {baseDir}/scripts/abtars-tweet.js --feed
|
|
17
|
+
|
|
18
|
+
# Feed as markdown
|
|
19
|
+
node {baseDir}/scripts/abtars-tweet.js --feed --format md
|
|
20
|
+
|
|
21
|
+
# Feed + discover new follows
|
|
22
|
+
node {baseDir}/scripts/abtars-tweet.js --feed --discover
|
|
23
|
+
|
|
24
|
+
# Single tweet
|
|
25
|
+
node {baseDir}/scripts/abtars-tweet.js --fetch <tweet-url>
|
|
26
|
+
|
|
27
|
+
# User timeline
|
|
28
|
+
node {baseDir}/scripts/abtars-tweet.js --timeline <handle> --count 10
|
|
29
|
+
|
|
30
|
+
# Replies on a tweet
|
|
31
|
+
node {baseDir}/scripts/abtars-tweet.js --replies <tweet-id>
|
|
32
|
+
|
|
33
|
+
# Search
|
|
34
|
+
node {baseDir}/scripts/abtars-tweet.js --search "query"
|
|
35
|
+
|
|
36
|
+
# User profile
|
|
37
|
+
node {baseDir}/scripts/abtars-tweet.js --user <handle>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Config
|
|
41
|
+
|
|
42
|
+
- Follows files: `~/.abtars/workspace/twitterX/base.follows.json` and env `TWEET_FOLLOWS_FILE` (default: `agent.follows.json`)
|
|
43
|
+
- Cookies: `~/.abtars/secret/cookies/x-cookies.json` (required for authenticated endpoints)
|
|
44
|
+
- Output: `~/.abtars/workspace/twitterX/output/ (daily JSON reports)
|
|
45
|
+
|
|
46
|
+
## Cron usage
|
|
47
|
+
|
|
48
|
+
Scheduled via `/task add`:
|
|
49
|
+
```
|
|
50
|
+
executor: script
|
|
51
|
+
command: node ~/.abtars/skills/tools/twitterX/scripts/abtars-tweet.js --feed
|
|
52
|
+
```
|