abtars 0.2.0 → 0.2.1-alpha.10

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 (146) hide show
  1. package/README.md +15 -18
  2. package/bundle/{_registry.generated-6GO2PAMD.js → _registry.generated-4P6KTBTH.js} +8 -8
  3. package/bundle/_registry.generated-G2FSGHNY.js +36 -0
  4. package/bundle/_registry.generated-G2FSGHNY.js.map +7 -0
  5. package/bundle/_registry.generated-N74SMTUJ.js +36 -0
  6. package/bundle/_registry.generated-N74SMTUJ.js.map +7 -0
  7. package/bundle/_registry.generated-Y4VT5MBX.js +36 -0
  8. package/bundle/_registry.generated-Y4VT5MBX.js.map +7 -0
  9. package/bundle/abtars-browser.js +0 -1
  10. package/bundle/abtars-browser.js.map +2 -2
  11. package/bundle/abtars-cli.js +589 -547
  12. package/bundle/abtars-cli.js.map +4 -4
  13. package/bundle/abtars-restart.js +1 -1
  14. package/bundle/abtars-rss.js +0 -1
  15. package/bundle/abtars-rss.js.map +2 -2
  16. package/bundle/abtars-task.js +1 -2
  17. package/bundle/abtars-task.js.map +2 -2
  18. package/bundle/abtars.js +58 -33
  19. package/bundle/abtars.js.map +2 -2
  20. package/bundle/{agent-registry-SYUFNSVB.js → agent-registry-TM7EISOV.js} +2 -2
  21. package/bundle/{browse-delivery-64GQIUHG.js → browse-delivery-VTLEAVYA.js} +4 -4
  22. package/bundle/{browser-5H2Q7GEC.js → browser-JQGYFZAG.js} +5 -5
  23. package/bundle/browser-M4KDLN75.js +19 -0
  24. package/bundle/browser-REIXOJ6S.js +19 -0
  25. package/bundle/browser-VG2GTEND.js +19 -0
  26. package/bundle/{chunk-KFENC7BM.js → chunk-4YOTNYAE.js} +2 -2
  27. package/bundle/{chunk-KWBGYWDO.js → chunk-7I5C2U3C.js} +1 -1
  28. package/bundle/chunk-7I5C2U3C.js.map +7 -0
  29. package/bundle/{chunk-7STAQF5O.js → chunk-CNWXVXGH.js} +4 -4
  30. package/bundle/{chunk-7STAQF5O.js.map → chunk-CNWXVXGH.js.map} +2 -2
  31. package/bundle/{chunk-JX3ZZU3O.js → chunk-CU3O53U3.js} +28 -14
  32. package/bundle/chunk-CU3O53U3.js.map +7 -0
  33. package/bundle/chunk-EZZBO2QK.js +85 -0
  34. package/bundle/chunk-EZZBO2QK.js.map +7 -0
  35. package/bundle/{chunk-XLLSPBBT.js → chunk-GPL57SRN.js} +2 -2
  36. package/bundle/chunk-GPL57SRN.js.map +7 -0
  37. package/bundle/{chunk-PQ62LZNA.js → chunk-HEHD3GG5.js} +2 -2
  38. package/bundle/{chunk-A5OJYQNU.js → chunk-HTGVYNPE.js} +4 -4
  39. package/bundle/{chunk-WUTCGJDZ.js → chunk-HZRUBJ4Q.js} +148 -9
  40. package/bundle/chunk-HZRUBJ4Q.js.map +7 -0
  41. package/bundle/{chunk-ZVDVNSXK.js → chunk-J7CFCY4U.js} +2 -2
  42. package/bundle/{chunk-HXJRZWKA.js → chunk-JRK3UFBS.js} +106 -58
  43. package/bundle/chunk-JRK3UFBS.js.map +7 -0
  44. package/bundle/{chunk-GZUQQWBZ.js → chunk-KJOCXWJ5.js} +3 -3
  45. package/bundle/chunk-KJOCXWJ5.js.map +7 -0
  46. package/bundle/{chunk-K7P74UNQ.js → chunk-LDKSCXGL.js} +3 -3
  47. package/bundle/{chunk-K7P74UNQ.js.map → chunk-LDKSCXGL.js.map} +2 -2
  48. package/bundle/chunk-MNKLPRGY.js +138 -0
  49. package/bundle/chunk-MNKLPRGY.js.map +7 -0
  50. package/bundle/chunk-O73EZGKR.js +135 -0
  51. package/bundle/chunk-O73EZGKR.js.map +7 -0
  52. package/bundle/{chunk-OZ4IZFV4.js → chunk-Q7F5R2LL.js} +1 -1
  53. package/bundle/{chunk-OZ4IZFV4.js.map → chunk-Q7F5R2LL.js.map} +2 -2
  54. package/bundle/{chunk-XOCP5BMO.js → chunk-URAQLQ2U.js} +2 -2
  55. package/bundle/chunk-URAQLQ2U.js.map +7 -0
  56. package/bundle/{chunk-PPSB2ZIN.js → chunk-VREI2GUO.js} +18 -7
  57. package/bundle/chunk-VREI2GUO.js.map +7 -0
  58. package/bundle/chunk-VYR25H37.js +135 -0
  59. package/bundle/chunk-VYR25H37.js.map +7 -0
  60. package/bundle/{commands-E3Y4QUNF.js → commands-J6JAZ7D2.js} +5 -5
  61. package/bundle/{deploy-lib-import-ODLDL2DB.js → deploy-lib-import-PJXUADPS.js} +18 -16
  62. package/bundle/{direct-api-transport-TRV45NO6.js → direct-api-transport-ZSJHKYBX.js} +1 -1
  63. package/bundle/direct-api-transport-ZSJHKYBX.js.map +7 -0
  64. package/bundle/{discord-adapter-5DS7UTBE.js → discord-adapter-OCWSJTJU.js} +8 -8
  65. package/bundle/{doctor-R54GZPKL.js → doctor-XOGVHA4W.js} +13 -2
  66. package/bundle/{doctor-R54GZPKL.js.map → doctor-XOGVHA4W.js.map} +2 -2
  67. package/bundle/{install-RSLOS3Q5.js → install-6H3APAIJ.js} +3 -3
  68. package/bundle/{irc-adapter-RKRUSZXB.js → irc-adapter-AIEP6OX6.js} +6 -2
  69. package/bundle/irc-adapter-AIEP6OX6.js.map +7 -0
  70. package/bundle/{message-pipeline-CFVO73CK.js → message-pipeline-TCPHRBAK.js} +5 -5
  71. package/bundle/meta.json +4005 -3868
  72. package/bundle/{phase-transport-FEZ4SIJJ.js → phase-transport-ME2XDRR2.js} +3 -3
  73. package/bundle/restore-UH2UE2K5.js +151 -0
  74. package/bundle/restore-UH2UE2K5.js.map +7 -0
  75. package/bundle/rollback-D7AYTC7Z.js +11 -0
  76. package/bundle/{sleep-BPWX3FCN.js → sleep-IOWYTSMK.js} +2 -2
  77. package/bundle/{soul-bundle-BRIUDEQ2.js → soul-bundle-AH5S3MVI.js} +2 -2
  78. package/bundle/{soul-loader-GBXJ7EBH.js → soul-loader-N5FA4I6C.js} +3 -3
  79. package/bundle/soul-loader-N5FA4I6C.js.map +7 -0
  80. package/bundle/{start-4IWBKLWO.js → start-CBVKNEAT.js} +1 -1
  81. package/bundle/{subagent-runtime-MDBO6LHS.js → subagent-runtime-OOJXCKJF.js} +2 -2
  82. package/bundle/subagent-runtime-OOJXCKJF.js.map +7 -0
  83. package/bundle/{system-status-WAY63BYC.js → system-status-4JP36OKC.js} +12 -5
  84. package/bundle/{system-status-WAY63BYC.js.map → system-status-4JP36OKC.js.map} +2 -2
  85. package/bundle/{task-store-KIBFZL5A.js → task-store-LC7ZMS72.js} +2 -2
  86. package/bundle/task-store-LC7ZMS72.js.map +7 -0
  87. package/bundle/{telegram-adapter-MVA33IO2.js → telegram-adapter-QXHJQLLX.js} +5 -5
  88. package/bundle/{update-check-O5MS6B3L.js → update-check-XVY2IK2L.js} +2 -2
  89. package/bundle/update-check-XVY2IK2L.js.map +7 -0
  90. package/core/skills/tools/rss/SKILL.md +51 -0
  91. package/install-manifest.json +4 -3
  92. package/package.json +3 -4
  93. package/scripts/abtars-daemon.service +1 -1
  94. package/scripts/abtars-watchdog.service +1 -1
  95. package/scripts/abtars.sh +3 -5
  96. package/scripts/abtars@.service +1 -1
  97. package/scripts/build-and-deploy.sh +6 -0
  98. package/scripts/com.abtars.daemon.plist +1 -1
  99. package/scripts/com.abtars.watchdog.plist +1 -1
  100. package/scripts/daily-backup.sh +1 -61
  101. package/scripts/doctor.sh +48 -33
  102. package/scripts/watchdog.sh +53 -8
  103. package/bundle/chunk-GZUQQWBZ.js.map +0 -7
  104. package/bundle/chunk-HXJRZWKA.js.map +0 -7
  105. package/bundle/chunk-JX3ZZU3O.js.map +0 -7
  106. package/bundle/chunk-KWBGYWDO.js.map +0 -7
  107. package/bundle/chunk-PPSB2ZIN.js.map +0 -7
  108. package/bundle/chunk-WUTCGJDZ.js.map +0 -7
  109. package/bundle/chunk-XLLSPBBT.js.map +0 -7
  110. package/bundle/chunk-XOCP5BMO.js.map +0 -7
  111. package/bundle/direct-api-transport-TRV45NO6.js.map +0 -7
  112. package/bundle/irc-adapter-RKRUSZXB.js.map +0 -7
  113. package/bundle/passwd-QSHZJ2CG.js +0 -134
  114. package/bundle/passwd-QSHZJ2CG.js.map +0 -7
  115. package/bundle/restore-ROJF22R2.js +0 -47
  116. package/bundle/restore-ROJF22R2.js.map +0 -7
  117. package/core/core_templates/SOUL.md +0 -24
  118. package/core/core_templates/agent_notes.md +0 -7
  119. package/core/core_templates/core_facts.md +0 -10
  120. package/core/core_templates/user_profile.md +0 -7
  121. package/core/skills/tools/fxtwitter/SKILL.md +0 -52
  122. package/core/skills/tools/twitterX/SKILL.md +0 -52
  123. package/core/skills/tools/twitterX/scripts/abtars-tweet.js +0 -532
  124. package/core/skills/tools/twitterX/scripts/package.json +0 -1
  125. /package/bundle/{_registry.generated-6GO2PAMD.js.map → _registry.generated-4P6KTBTH.js.map} +0 -0
  126. /package/bundle/{agent-registry-SYUFNSVB.js.map → agent-registry-TM7EISOV.js.map} +0 -0
  127. /package/bundle/{browse-delivery-64GQIUHG.js.map → browse-delivery-VTLEAVYA.js.map} +0 -0
  128. /package/bundle/{browser-5H2Q7GEC.js.map → browser-JQGYFZAG.js.map} +0 -0
  129. /package/bundle/{commands-E3Y4QUNF.js.map → browser-M4KDLN75.js.map} +0 -0
  130. /package/bundle/{deploy-lib-import-ODLDL2DB.js.map → browser-REIXOJ6S.js.map} +0 -0
  131. /package/bundle/{install-RSLOS3Q5.js.map → browser-VG2GTEND.js.map} +0 -0
  132. /package/bundle/{chunk-KFENC7BM.js.map → chunk-4YOTNYAE.js.map} +0 -0
  133. /package/bundle/{chunk-PQ62LZNA.js.map → chunk-HEHD3GG5.js.map} +0 -0
  134. /package/bundle/{chunk-A5OJYQNU.js.map → chunk-HTGVYNPE.js.map} +0 -0
  135. /package/bundle/{chunk-ZVDVNSXK.js.map → chunk-J7CFCY4U.js.map} +0 -0
  136. /package/bundle/{message-pipeline-CFVO73CK.js.map → commands-J6JAZ7D2.js.map} +0 -0
  137. /package/bundle/{phase-transport-FEZ4SIJJ.js.map → deploy-lib-import-PJXUADPS.js.map} +0 -0
  138. /package/bundle/{discord-adapter-5DS7UTBE.js.map → discord-adapter-OCWSJTJU.js.map} +0 -0
  139. /package/bundle/{sleep-BPWX3FCN.js.map → install-6H3APAIJ.js.map} +0 -0
  140. /package/bundle/{soul-bundle-BRIUDEQ2.js.map → message-pipeline-TCPHRBAK.js.map} +0 -0
  141. /package/bundle/{soul-loader-GBXJ7EBH.js.map → phase-transport-ME2XDRR2.js.map} +0 -0
  142. /package/bundle/{subagent-runtime-MDBO6LHS.js.map → rollback-D7AYTC7Z.js.map} +0 -0
  143. /package/bundle/{task-store-KIBFZL5A.js.map → sleep-IOWYTSMK.js.map} +0 -0
  144. /package/bundle/{update-check-O5MS6B3L.js.map → soul-bundle-AH5S3MVI.js.map} +0 -0
  145. /package/bundle/{start-4IWBKLWO.js.map → start-CBVKNEAT.js.map} +0 -0
  146. /package/bundle/{telegram-adapter-MVA33IO2.js.map → telegram-adapter-QXHJQLLX.js.map} +0 -0
package/README.md CHANGED
@@ -29,31 +29,28 @@ abTARS (agent brain)
29
29
  ## Quick Start
30
30
 
31
31
  ```bash
32
- npm install -g abtars
33
- abtars init
32
+ npm install -g abtars@alpha abmind@alpha
33
+ abmind install
34
+ abtars install
35
+ abtars update
36
+ abtars onboard
37
+ sudo $(which abtars) daemon install
34
38
  ```
35
39
 
36
- The init wizard walks you through:
37
- 1. Telegram bot token (from [@BotFather](https://t.me/BotFather))
38
- 2. Model provider (kiro-cli, gemini-cli, ollama, or OpenRouter)
39
- 3. Your user ID
40
-
41
- Then start:
42
-
43
- ```bash
44
- abtars start
45
- ```
40
+ Full installation guide: **[docs/wiki/install.md](docs/wiki/install.md)**
46
41
 
47
42
  ## Documentation
48
43
 
49
- Full docs, configuration reference, and guides: **[Wiki](https://github.com/aksika/abtars/wiki)**
44
+ Docs live in the repo at **[docs/wiki/](docs/wiki/)** — always up to date with the code.
50
45
 
51
- - [Installation](https://github.com/aksika/abtars/wiki/Installation)
52
- - [Configuration](https://github.com/aksika/abtars/wiki/Configuration)
53
- - [Commands](https://github.com/aksika/abtars/wiki/Commands)
46
+ - [Installation](docs/wiki/install.md)
47
+ - [Configuration](docs/wiki/commands.md)
48
+ - [Commands](docs/wiki/cli.md)
54
49
  - [Memory System (abmind)](https://github.com/aksika/abmind)
55
- - [Skills & Extensions](https://github.com/aksika/abtars/wiki/Skills)
56
- - [Deployment & Watchdog](https://github.com/aksika/abtars/wiki/Deployment)
50
+ - [Skills & Extensions](docs/wiki/skills.md)
51
+ - [Deployment & Supervision](docs/wiki/supervision.md)
52
+
53
+ > **Note:** The [aksika.github.io](https://aksika.github.io/abtars/) site may be outdated. Always refer to the docs in this repo.
57
54
 
58
55
  ## Supported Transports
59
56
 
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
+ import {
4
+ sleep_exports
5
+ } from "./chunk-7I5C2U3C.js";
3
6
  import {
4
7
  browser_exports
5
- } from "./chunk-GZUQQWBZ.js";
6
- import "./chunk-K7P74UNQ.js";
8
+ } from "./chunk-MNKLPRGY.js";
9
+ import "./chunk-LDKSCXGL.js";
7
10
  import {
8
11
  hotskills_exports
9
12
  } from "./chunk-RE3F3CFW.js";
10
- import {
11
- sleep_exports
12
- } from "./chunk-KWBGYWDO.js";
13
- import "./chunk-PQ62LZNA.js";
13
+ import "./chunk-HEHD3GG5.js";
14
14
  import "./chunk-JAJ3DUQ2.js";
15
15
  import "./chunk-BYDUMHXT.js";
16
16
  import "./chunk-UDZIZB5F.js";
17
17
  import "./chunk-TBLYGCPQ.js";
18
- import "./chunk-XLLSPBBT.js";
18
+ import "./chunk-GPL57SRN.js";
19
19
  import "./chunk-MZWMYN4O.js";
20
20
  import "./chunk-KSEIWT4T.js";
21
21
  import "./chunk-EX2SRTUE.js";
@@ -33,4 +33,4 @@ var capabilities = [
33
33
  export {
34
34
  capabilities
35
35
  };
36
- //# sourceMappingURL=_registry.generated-6GO2PAMD.js.map
36
+ //# sourceMappingURL=_registry.generated-4P6KTBTH.js.map
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
+ import {
4
+ sleep_exports
5
+ } from "./chunk-7I5C2U3C.js";
6
+ import {
7
+ browser_exports
8
+ } from "./chunk-KJOCXWJ5.js";
9
+ import "./chunk-LDKSCXGL.js";
10
+ import {
11
+ hotskills_exports
12
+ } from "./chunk-RE3F3CFW.js";
13
+ import "./chunk-HEHD3GG5.js";
14
+ import "./chunk-JAJ3DUQ2.js";
15
+ import "./chunk-BYDUMHXT.js";
16
+ import "./chunk-UDZIZB5F.js";
17
+ import "./chunk-TBLYGCPQ.js";
18
+ import "./chunk-GPL57SRN.js";
19
+ import "./chunk-MZWMYN4O.js";
20
+ import "./chunk-KSEIWT4T.js";
21
+ import "./chunk-EX2SRTUE.js";
22
+ import "./chunk-PZE3J7ER.js";
23
+ import "./chunk-2BY6I4P5.js";
24
+ import "./chunk-MJ6PHMOK.js";
25
+ import "./chunk-7K2YZTLD.js";
26
+
27
+ // src/capabilities/_registry.generated.ts
28
+ var capabilities = [
29
+ { name: "browser", module: browser_exports },
30
+ { name: "hotskills", module: hotskills_exports },
31
+ { name: "sleep", module: sleep_exports }
32
+ ];
33
+ export {
34
+ capabilities
35
+ };
36
+ //# sourceMappingURL=_registry.generated-G2FSGHNY.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/capabilities/_registry.generated.ts"],
4
+ "sourcesContent": ["// AUTO-GENERATED by esbuild.config.js \u2014 do not edit\n// Static capability registry for bundled builds\n\nimport * as cap0 from \"./browser/index.js\";\nimport * as cap1 from \"./hotskills/index.js\";\nimport * as cap2 from \"./sleep/index.js\";\n\nexport const capabilities = [\n { name: \"browser\", module: cap0 },\n { name: \"hotskills\", module: cap1 },\n { name: \"sleep\", module: cap2 },\n];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAM,eAAe;AAAA,EAC1B,EAAE,MAAM,WAAW,QAAQ,gBAAK;AAAA,EAChC,EAAE,MAAM,aAAa,QAAQ,kBAAK;AAAA,EAClC,EAAE,MAAM,SAAS,QAAQ,cAAK;AAChC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
+ import {
4
+ sleep_exports
5
+ } from "./chunk-7I5C2U3C.js";
6
+ import {
7
+ browser_exports
8
+ } from "./chunk-VYR25H37.js";
9
+ import "./chunk-LDKSCXGL.js";
10
+ import {
11
+ hotskills_exports
12
+ } from "./chunk-RE3F3CFW.js";
13
+ import "./chunk-HEHD3GG5.js";
14
+ import "./chunk-JAJ3DUQ2.js";
15
+ import "./chunk-BYDUMHXT.js";
16
+ import "./chunk-UDZIZB5F.js";
17
+ import "./chunk-TBLYGCPQ.js";
18
+ import "./chunk-GPL57SRN.js";
19
+ import "./chunk-MZWMYN4O.js";
20
+ import "./chunk-KSEIWT4T.js";
21
+ import "./chunk-EX2SRTUE.js";
22
+ import "./chunk-PZE3J7ER.js";
23
+ import "./chunk-2BY6I4P5.js";
24
+ import "./chunk-MJ6PHMOK.js";
25
+ import "./chunk-7K2YZTLD.js";
26
+
27
+ // src/capabilities/_registry.generated.ts
28
+ var capabilities = [
29
+ { name: "browser", module: browser_exports },
30
+ { name: "hotskills", module: hotskills_exports },
31
+ { name: "sleep", module: sleep_exports }
32
+ ];
33
+ export {
34
+ capabilities
35
+ };
36
+ //# sourceMappingURL=_registry.generated-N74SMTUJ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/capabilities/_registry.generated.ts"],
4
+ "sourcesContent": ["// AUTO-GENERATED by esbuild.config.js \u2014 do not edit\n// Static capability registry for bundled builds\n\nimport * as cap0 from \"./browser/index.js\";\nimport * as cap1 from \"./hotskills/index.js\";\nimport * as cap2 from \"./sleep/index.js\";\n\nexport const capabilities = [\n { name: \"browser\", module: cap0 },\n { name: \"hotskills\", module: cap1 },\n { name: \"sleep\", module: cap2 },\n];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAM,eAAe;AAAA,EAC1B,EAAE,MAAM,WAAW,QAAQ,gBAAK;AAAA,EAChC,EAAE,MAAM,aAAa,QAAQ,kBAAK;AAAA,EAClC,EAAE,MAAM,SAAS,QAAQ,cAAK;AAChC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
+ import {
4
+ sleep_exports
5
+ } from "./chunk-7I5C2U3C.js";
6
+ import {
7
+ browser_exports
8
+ } from "./chunk-O73EZGKR.js";
9
+ import "./chunk-LDKSCXGL.js";
10
+ import {
11
+ hotskills_exports
12
+ } from "./chunk-RE3F3CFW.js";
13
+ import "./chunk-HEHD3GG5.js";
14
+ import "./chunk-JAJ3DUQ2.js";
15
+ import "./chunk-BYDUMHXT.js";
16
+ import "./chunk-UDZIZB5F.js";
17
+ import "./chunk-TBLYGCPQ.js";
18
+ import "./chunk-GPL57SRN.js";
19
+ import "./chunk-MZWMYN4O.js";
20
+ import "./chunk-KSEIWT4T.js";
21
+ import "./chunk-EX2SRTUE.js";
22
+ import "./chunk-PZE3J7ER.js";
23
+ import "./chunk-2BY6I4P5.js";
24
+ import "./chunk-MJ6PHMOK.js";
25
+ import "./chunk-7K2YZTLD.js";
26
+
27
+ // src/capabilities/_registry.generated.ts
28
+ var capabilities = [
29
+ { name: "browser", module: browser_exports },
30
+ { name: "hotskills", module: hotskills_exports },
31
+ { name: "sleep", module: sleep_exports }
32
+ ];
33
+ export {
34
+ capabilities
35
+ };
36
+ //# sourceMappingURL=_registry.generated-Y4VT5MBX.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/capabilities/_registry.generated.ts"],
4
+ "sourcesContent": ["// AUTO-GENERATED by esbuild.config.js \u2014 do not edit\n// Static capability registry for bundled builds\n\nimport * as cap0 from \"./browser/index.js\";\nimport * as cap1 from \"./hotskills/index.js\";\nimport * as cap2 from \"./sleep/index.js\";\n\nexport const capabilities = [\n { name: \"browser\", module: cap0 },\n { name: \"hotskills\", module: cap1 },\n { name: \"sleep\", module: cap2 },\n];\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAM,eAAe;AAAA,EAC1B,EAAE,MAAM,WAAW,QAAQ,gBAAK;AAAA,EAChC,EAAE,MAAM,aAAa,QAAQ,kBAAK;AAAA,EAClC,EAAE,MAAM,SAAS,QAAQ,cAAK;AAChC;",
6
+ "names": []
7
+ }
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env node
2
1
  #!/usr/bin/env node
3
2
  import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
4
3
  import {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/cli/abtars-browser.ts"],
4
- "sourcesContent": ["#!/usr/bin/env node\n/**\n * abtars-browser \u2014 standalone CLI for agent-initiated browser control.\n *\n * Gives the LLM agent direct control over a headless Chromium browser.\n * Follows the same pattern as abmind recall and abmind store.\n *\n * Usage:\n * abtars-browser --action navigate --url \"https://example.com\" --session-id default\n * abtars-browser --action fill --selector \"#email\" --value \"user@example.com\" --session-id auth\n * abtars-browser --action click --selector \"text=Sign In\" --session-id auth\n * abtars-browser --action extract_text --session-id auth\n * abtars-browser --action screenshot --full-page --session-id auth\n * abtars-browser --action get_page_info --session-id auth\n * abtars-browser --action close_session --session-id auth\n *\n * Output (success):\n * { \"success\": true, \"title\": \"Example\", \"url\": \"https://example.com\", \"status\": 200 }\n *\n * Output (error):\n * { \"success\": false, \"error\": \"navigate action requires --url\" }\n */\n\nimport * as net from \"node:net\";\nimport * as fs from \"node:fs\";\nimport type { BrowserAction, BrowserActionType, BrowserToolResult } from \"../types/browser.js\";\nimport { BrowserManager } from \"../capabilities/browser/browser-manager.js\";\nimport { BrowserTool } from \"../capabilities/browser/browser-tool.js\";\nimport { DomainAllowlist } from \"../capabilities/browser/domain-allowlist.js\";\nimport { getDefaultSocketPath } from \"../capabilities/browser/browser-ipc-server.js\";\n\n/** The 7 valid browser action types. */\nconst VALID_ACTIONS: ReadonlySet<string> = new Set<BrowserActionType>([\n \"navigate\",\n \"click\",\n \"fill\",\n \"extract_text\",\n \"screenshot\",\n \"get_page_info\",\n \"close_session\",\n \"set_cookie\",\n]);\n\nexport type RawBrowserArgs = {\n action?: string;\n url?: string;\n selector?: string;\n value?: string;\n sessionId: string;\n fullPage: boolean;\n cookieFile?: string;\n engine?: string;\n};\n\n/**\n * Parse raw CLI argv into a RawBrowserArgs object.\n * Exported for unit testing.\n */\nexport function parseArgs(argv: string[]): RawBrowserArgs {\n const args = argv.slice(2);\n const parsed: RawBrowserArgs = { sessionId: \"default\", fullPage: false };\n\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--action\": parsed.action = args[++i] ?? \"\"; break;\n case \"--url\": parsed.url = args[++i] ?? \"\"; break;\n case \"--selector\": parsed.selector = args[++i] ?? \"\"; break;\n case \"--value\": parsed.value = args[++i] ?? \"\"; break;\n case \"--session-id\": parsed.sessionId = args[++i] ?? \"default\"; break;\n case \"--full-page\": parsed.fullPage = true; break;\n case \"--cookie-file\": parsed.cookieFile = args[++i] ?? \"\"; break;\n case \"--engine\": parsed.engine = args[++i] ?? \"\"; break;\n }\n }\n\n return parsed;\n}\n\n/**\n * Validate raw CLI arguments and return either a parsed BrowserAction or an error string.\n * Exported for unit testing.\n */\nexport function validateArgs(\n raw: RawBrowserArgs,\n): { ok: true; action: BrowserAction; raw: RawBrowserArgs } | { ok: false; error: string } {\n // Validate action is one of the 7 valid types\n if (!raw.action) {\n return { ok: false, error: \"--action is required\" };\n }\n if (!VALID_ACTIONS.has(raw.action)) {\n return {\n ok: false,\n error: `Invalid action \"${raw.action}\". Valid actions: ${[...VALID_ACTIONS].join(\", \")}`,\n };\n }\n\n const actionType = raw.action as BrowserActionType;\n\n // Validate required params per action\n switch (actionType) {\n case \"navigate\":\n if (!raw.url) return { ok: false, error: \"navigate action requires --url\" };\n break;\n case \"click\":\n if (!raw.selector) return { ok: false, error: \"click action requires --selector\" };\n break;\n case \"fill\":\n if (!raw.selector) return { ok: false, error: \"fill action requires --selector\" };\n if (raw.value === undefined) return { ok: false, error: \"fill action requires --value\" };\n break;\n case \"set_cookie\":\n if (!raw.cookieFile) return { ok: false, error: \"set_cookie action requires --cookie-file\" };\n break;\n // extract_text, screenshot, get_page_info, close_session have no extra required params\n }\n\n return {\n ok: true,\n raw,\n action: {\n action: actionType,\n sessionId: raw.sessionId,\n url: raw.url,\n selector: raw.selector,\n value: raw.value,\n fullPage: raw.fullPage,\n cookieFile: raw.cookieFile,\n },\n };\n}\n\n// --- CLI entry point (only runs when executed directly) ---\n\n/**\n * Try executing the action via the main process IPC socket.\n * Returns null if socket unavailable (caller should fall back to ephemeral).\n */\nexport function executeViaIpc(\n action: BrowserAction,\n socketPath?: string,\n): Promise<BrowserToolResult | null> {\n const sock = socketPath ?? getDefaultSocketPath();\n\n if (!fs.existsSync(sock)) return Promise.resolve(null);\n\n return new Promise<BrowserToolResult | null>((resolve) => {\n const conn = net.createConnection(sock, () => {\n conn.end(JSON.stringify(action) + \"\\n\");\n });\n\n let data = \"\";\n conn.on(\"data\", (chunk) => { data += chunk.toString(); });\n\n conn.on(\"end\", () => {\n try {\n resolve(JSON.parse(data.trim()) as BrowserToolResult);\n } catch {\n resolve(null);\n }\n });\n\n conn.on(\"error\", () => resolve(null));\n\n // Don't hang forever if main process is stuck.\n conn.setTimeout(60_000, () => {\n conn.destroy();\n resolve(null);\n });\n });\n}\n\nasync function main() {\n const raw = parseArgs(process.argv);\n const validation = validateArgs(raw);\n\n if (!validation.ok) {\n console.log(JSON.stringify({ success: false, error: validation.error }));\n process.exit(1);\n }\n\n // Try IPC to main process first (sessions persist across calls).\n const ipcResult = await executeViaIpc(validation.action);\n if (ipcResult !== null) {\n console.log(JSON.stringify(ipcResult));\n return;\n }\n\n // Fallback: ephemeral browser (no session persistence).\n if (validation.raw.engine) process.env[\"BROWSER_ENGINE\"] = validation.raw.engine;\n else if (!process.env[\"BROWSER_ENGINE\"]) process.env[\"BROWSER_ENGINE\"] = \"patchright\";\n const browserManager = new BrowserManager();\n const allowlist = DomainAllowlist.fromEnv();\n const tool = new BrowserTool(browserManager, allowlist);\n\n try {\n const result = await tool.execute(validation.action);\n console.log(JSON.stringify(result));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n console.log(JSON.stringify({ success: false, error: message }));\n } finally {\n await browserManager.shutdown();\n }\n}\n\n// Only run when executed as a script, not when imported for testing\nconst isDirectRun =\n process.argv[1]?.endsWith(\"abtars-browser.ts\") ||\n process.argv[1]?.endsWith(\"abtars-browser.js\");\nif (isDirectRun) {\n main();\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * abtars-browser \u2014 standalone CLI for agent-initiated browser control.\n *\n * Gives the LLM agent direct control over a headless Chromium browser.\n * Follows the same pattern as abmind recall and abmind store.\n *\n * Usage:\n * abtars-browser --action navigate --url \"https://example.com\" --session-id default\n * abtars-browser --action fill --selector \"#email\" --value \"user@example.com\" --session-id auth\n * abtars-browser --action click --selector \"text=Sign In\" --session-id auth\n * abtars-browser --action extract_text --session-id auth\n * abtars-browser --action screenshot --full-page --session-id auth\n * abtars-browser --action get_page_info --session-id auth\n * abtars-browser --action close_session --session-id auth\n *\n * Output (success):\n * { \"success\": true, \"title\": \"Example\", \"url\": \"https://example.com\", \"status\": 200 }\n *\n * Output (error):\n * { \"success\": false, \"error\": \"navigate action requires --url\" }\n */\n\nimport * as net from \"node:net\";\nimport * as fs from \"node:fs\";\nimport type { BrowserAction, BrowserActionType, BrowserToolResult } from \"../types/browser.js\";\nimport { BrowserManager } from \"../capabilities/browser/browser-manager.js\";\nimport { BrowserTool } from \"../capabilities/browser/browser-tool.js\";\nimport { DomainAllowlist } from \"../capabilities/browser/domain-allowlist.js\";\nimport { getDefaultSocketPath } from \"../capabilities/browser/browser-ipc-server.js\";\n\n/** The 7 valid browser action types. */\nconst VALID_ACTIONS: ReadonlySet<string> = new Set<BrowserActionType>([\n \"navigate\",\n \"click\",\n \"fill\",\n \"extract_text\",\n \"screenshot\",\n \"get_page_info\",\n \"close_session\",\n \"set_cookie\",\n]);\n\nexport type RawBrowserArgs = {\n action?: string;\n url?: string;\n selector?: string;\n value?: string;\n sessionId: string;\n fullPage: boolean;\n cookieFile?: string;\n engine?: string;\n};\n\n/**\n * Parse raw CLI argv into a RawBrowserArgs object.\n * Exported for unit testing.\n */\nexport function parseArgs(argv: string[]): RawBrowserArgs {\n const args = argv.slice(2);\n const parsed: RawBrowserArgs = { sessionId: \"default\", fullPage: false };\n\n for (let i = 0; i < args.length; i++) {\n switch (args[i]) {\n case \"--action\": parsed.action = args[++i] ?? \"\"; break;\n case \"--url\": parsed.url = args[++i] ?? \"\"; break;\n case \"--selector\": parsed.selector = args[++i] ?? \"\"; break;\n case \"--value\": parsed.value = args[++i] ?? \"\"; break;\n case \"--session-id\": parsed.sessionId = args[++i] ?? \"default\"; break;\n case \"--full-page\": parsed.fullPage = true; break;\n case \"--cookie-file\": parsed.cookieFile = args[++i] ?? \"\"; break;\n case \"--engine\": parsed.engine = args[++i] ?? \"\"; break;\n }\n }\n\n return parsed;\n}\n\n/**\n * Validate raw CLI arguments and return either a parsed BrowserAction or an error string.\n * Exported for unit testing.\n */\nexport function validateArgs(\n raw: RawBrowserArgs,\n): { ok: true; action: BrowserAction; raw: RawBrowserArgs } | { ok: false; error: string } {\n // Validate action is one of the 7 valid types\n if (!raw.action) {\n return { ok: false, error: \"--action is required\" };\n }\n if (!VALID_ACTIONS.has(raw.action)) {\n return {\n ok: false,\n error: `Invalid action \"${raw.action}\". Valid actions: ${[...VALID_ACTIONS].join(\", \")}`,\n };\n }\n\n const actionType = raw.action as BrowserActionType;\n\n // Validate required params per action\n switch (actionType) {\n case \"navigate\":\n if (!raw.url) return { ok: false, error: \"navigate action requires --url\" };\n break;\n case \"click\":\n if (!raw.selector) return { ok: false, error: \"click action requires --selector\" };\n break;\n case \"fill\":\n if (!raw.selector) return { ok: false, error: \"fill action requires --selector\" };\n if (raw.value === undefined) return { ok: false, error: \"fill action requires --value\" };\n break;\n case \"set_cookie\":\n if (!raw.cookieFile) return { ok: false, error: \"set_cookie action requires --cookie-file\" };\n break;\n // extract_text, screenshot, get_page_info, close_session have no extra required params\n }\n\n return {\n ok: true,\n raw,\n action: {\n action: actionType,\n sessionId: raw.sessionId,\n url: raw.url,\n selector: raw.selector,\n value: raw.value,\n fullPage: raw.fullPage,\n cookieFile: raw.cookieFile,\n },\n };\n}\n\n// --- CLI entry point (only runs when executed directly) ---\n\n/**\n * Try executing the action via the main process IPC socket.\n * Returns null if socket unavailable (caller should fall back to ephemeral).\n */\nexport function executeViaIpc(\n action: BrowserAction,\n socketPath?: string,\n): Promise<BrowserToolResult | null> {\n const sock = socketPath ?? getDefaultSocketPath();\n\n if (!fs.existsSync(sock)) return Promise.resolve(null);\n\n return new Promise<BrowserToolResult | null>((resolve) => {\n const conn = net.createConnection(sock, () => {\n conn.end(JSON.stringify(action) + \"\\n\");\n });\n\n let data = \"\";\n conn.on(\"data\", (chunk) => { data += chunk.toString(); });\n\n conn.on(\"end\", () => {\n try {\n resolve(JSON.parse(data.trim()) as BrowserToolResult);\n } catch {\n resolve(null);\n }\n });\n\n conn.on(\"error\", () => resolve(null));\n\n // Don't hang forever if main process is stuck.\n conn.setTimeout(60_000, () => {\n conn.destroy();\n resolve(null);\n });\n });\n}\n\nasync function main() {\n const raw = parseArgs(process.argv);\n const validation = validateArgs(raw);\n\n if (!validation.ok) {\n console.log(JSON.stringify({ success: false, error: validation.error }));\n process.exit(1);\n }\n\n // Try IPC to main process first (sessions persist across calls).\n const ipcResult = await executeViaIpc(validation.action);\n if (ipcResult !== null) {\n console.log(JSON.stringify(ipcResult));\n return;\n }\n\n // Fallback: ephemeral browser (no session persistence).\n if (validation.raw.engine) process.env[\"BROWSER_ENGINE\"] = validation.raw.engine;\n else if (!process.env[\"BROWSER_ENGINE\"]) process.env[\"BROWSER_ENGINE\"] = \"patchright\";\n const browserManager = new BrowserManager();\n const allowlist = DomainAllowlist.fromEnv();\n const tool = new BrowserTool(browserManager, allowlist);\n\n try {\n const result = await tool.execute(validation.action);\n console.log(JSON.stringify(result));\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n console.log(JSON.stringify({ success: false, error: message }));\n } finally {\n await browserManager.shutdown();\n }\n}\n\n// Only run when executed as a script, not when imported for testing\nconst isDirectRun =\n process.argv[1]?.endsWith(\"abtars-browser.ts\") ||\n process.argv[1]?.endsWith(\"abtars-browser.js\");\nif (isDirectRun) {\n main();\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }