agentix-cli 0.53.0 → 0.54.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.
Files changed (134) hide show
  1. package/dist/{App-R62ZQVSF.js → App-VRTLAPRF.js} +2 -2
  2. package/dist/{ChatApp-AS567EFE.js → ChatApp-YENWPZT4.js} +2 -2
  3. package/dist/{agent-H4NB4BUA.js → agent-HVUGHYBF.js} +2 -2
  4. package/dist/{board-dashboard-E3MUVNVQ.js → board-dashboard-3XJVYDB3.js} +416 -180
  5. package/dist/board-dashboard-3XJVYDB3.js.map +1 -0
  6. package/dist/chunk-2D3RYIDU.js +3 -0
  7. package/dist/chunk-2D3RYIDU.js.map +1 -0
  8. package/dist/{chunk-CCMM5TP4.js → chunk-2TJYZF4E.js} +2 -2
  9. package/dist/{chunk-FSZXY53Z.js → chunk-33QV5O6P.js} +2 -2
  10. package/dist/{chunk-NF52Q3TV.js → chunk-37EABIOJ.js} +2 -2
  11. package/dist/chunk-3RCFUIYR.js +29 -0
  12. package/dist/chunk-3RCFUIYR.js.map +1 -0
  13. package/dist/{chunk-6OOK7Y4S.js → chunk-3W2KMI5O.js} +2 -2
  14. package/dist/{chunk-47EEUZBK.js → chunk-4FFWNPFX.js} +4 -4
  15. package/dist/chunk-4FFWNPFX.js.map +1 -0
  16. package/dist/{chunk-FS4WBYY3.js → chunk-4HNHHKJF.js} +2 -2
  17. package/dist/{chunk-SABOPOYX.js → chunk-6JHA3ZE6.js} +139 -139
  18. package/dist/chunk-6JHA3ZE6.js.map +1 -0
  19. package/dist/{chunk-QU6ZUKAD.js → chunk-BKDUCPZ3.js} +2 -2
  20. package/dist/{chunk-IDYP7G7Z.js → chunk-BMSPRUEJ.js} +33 -33
  21. package/dist/{chunk-IDYP7G7Z.js.map → chunk-BMSPRUEJ.js.map} +1 -1
  22. package/dist/{chunk-TH5KNJLA.js → chunk-ENRJ2QEH.js} +2 -2
  23. package/dist/{chunk-C5JXPMTW.js → chunk-HQMISQ7L.js} +2 -2
  24. package/dist/{chunk-7DPKPBRJ.js → chunk-KLDGJSR5.js} +2 -2
  25. package/dist/{ntfy-ZY2NPGBA.js → chunk-KZKDVIOE.js} +3 -3
  26. package/dist/chunk-KZKDVIOE.js.map +1 -0
  27. package/dist/{chunk-KB7YIM3W.js → chunk-M67AN4J7.js} +2 -2
  28. package/dist/{chunk-WKTFP3SK.js → chunk-NO2HOK4B.js} +2 -2
  29. package/dist/chunk-QD6IICK7.js +2 -0
  30. package/dist/chunk-QD6IICK7.js.map +1 -0
  31. package/dist/{chunk-OV35MJKS.js → chunk-QX4R5WY7.js} +2 -2
  32. package/dist/{chunk-PGJL5V6Y.js → chunk-QYHABRLM.js} +2 -2
  33. package/dist/{chunk-7OWXFLAM.js → chunk-TLFJVLVQ.js} +166 -160
  34. package/dist/chunk-TLFJVLVQ.js.map +1 -0
  35. package/dist/{chunk-OMTRHHZJ.js → chunk-UYMK3XNB.js} +44 -45
  36. package/dist/chunk-UYMK3XNB.js.map +1 -0
  37. package/dist/{chunk-VD4TMPJI.js → chunk-WLRHL2P7.js} +2 -2
  38. package/dist/chunk-WWMFNLKD.js +10 -0
  39. package/dist/chunk-WWMFNLKD.js.map +1 -0
  40. package/dist/{chunk-KJWBQZT7.js → chunk-XWU7O3S5.js} +2 -2
  41. package/dist/{chunk-KFG6WWFS.js → chunk-ZOJUHPD5.js} +2 -2
  42. package/dist/cli.js +1 -1
  43. package/dist/cli.js.map +1 -1
  44. package/dist/client-N4XQEAVL.js +2 -0
  45. package/dist/{compaction-NWPBPWY2.js → compaction-H5U32UU6.js} +2 -2
  46. package/dist/{config-3SW4V44Z.js → config-KHKIY6LI.js} +2 -2
  47. package/dist/config-mutator-ZZKFQ7HJ.js +2 -0
  48. package/dist/doctor-QICAXIQB.js +2 -0
  49. package/dist/index.d.ts +88 -0
  50. package/dist/index.js +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/memory-extract-F76BE6KA.js +2 -0
  53. package/dist/ntfy-52EXHVMD.js +2 -0
  54. package/dist/program-ZWNGK3RB.js +2 -0
  55. package/dist/{promote-DJFMTLRC.js → promote-H6ZHJXTY.js} +2 -2
  56. package/dist/push-HEDA6P3B.js +2 -0
  57. package/dist/push-HEDA6P3B.js.map +1 -0
  58. package/dist/push-keys-2DTD7YNQ.js +2 -0
  59. package/dist/push-store-LXTYULUF.js +2 -0
  60. package/dist/query-FTE4FLYK.js +2 -0
  61. package/dist/registry-HDOFVNRK.js +2 -0
  62. package/dist/{request-planner-2H7HCUCZ.js → request-planner-ABD4WIGM.js} +2 -2
  63. package/dist/{review-candidates-U7R64OCS.js → review-candidates-B6574GOJ.js} +2 -2
  64. package/dist/{routing-LVQH6WOJ.js → routing-BGKZOHOA.js} +2 -2
  65. package/dist/schedule-tool-UDHXTKWV.js +2 -0
  66. package/dist/scheduler-NQM3HVUY.js +2 -0
  67. package/dist/scheduler-NQM3HVUY.js.map +1 -0
  68. package/dist/{seat-2KGFNCIW.js → seat-VGST5AQB.js} +2 -2
  69. package/dist/seat-VGST5AQB.js.map +1 -0
  70. package/dist/{select-XGK27RPP.js → select-Y7SBUCGJ.js} +2 -2
  71. package/dist/{set-enabled-7YGN2FAZ.js → set-enabled-ARKMDLXN.js} +2 -2
  72. package/dist/{tool-HKDIZ6I4.js → tool-5EVYUN2G.js} +2 -2
  73. package/dist/wiki-GREI2TSP.js +2 -0
  74. package/dist/wiki-GREI2TSP.js.map +1 -0
  75. package/package.json +3 -1
  76. package/dist/board-dashboard-E3MUVNVQ.js.map +0 -1
  77. package/dist/chunk-47EEUZBK.js.map +0 -1
  78. package/dist/chunk-7OWXFLAM.js.map +0 -1
  79. package/dist/chunk-D4HAR3L3.js +0 -28
  80. package/dist/chunk-D4HAR3L3.js.map +0 -1
  81. package/dist/chunk-HRBKSZ34.js +0 -2
  82. package/dist/chunk-HRBKSZ34.js.map +0 -1
  83. package/dist/chunk-OMTRHHZJ.js.map +0 -1
  84. package/dist/chunk-SABOPOYX.js.map +0 -1
  85. package/dist/client-XTQDYMOX.js +0 -2
  86. package/dist/config-mutator-H32FXUYJ.js +0 -2
  87. package/dist/doctor-J6RCHFVE.js +0 -2
  88. package/dist/memory-extract-MGGXIZTE.js +0 -2
  89. package/dist/ntfy-ZY2NPGBA.js.map +0 -1
  90. package/dist/program-SQTOPCQW.js +0 -2
  91. package/dist/query-UAZUMU4N.js +0 -2
  92. package/dist/registry-4OUBA2TY.js +0 -2
  93. package/dist/schedule-tool-2BONJVCJ.js +0 -2
  94. package/dist/scheduler-7CEXDECA.js +0 -2
  95. package/dist/wiki-6YT7B5HU.js +0 -2
  96. /package/dist/{App-R62ZQVSF.js.map → App-VRTLAPRF.js.map} +0 -0
  97. /package/dist/{ChatApp-AS567EFE.js.map → ChatApp-YENWPZT4.js.map} +0 -0
  98. /package/dist/{agent-H4NB4BUA.js.map → agent-HVUGHYBF.js.map} +0 -0
  99. /package/dist/{chunk-CCMM5TP4.js.map → chunk-2TJYZF4E.js.map} +0 -0
  100. /package/dist/{chunk-FSZXY53Z.js.map → chunk-33QV5O6P.js.map} +0 -0
  101. /package/dist/{chunk-NF52Q3TV.js.map → chunk-37EABIOJ.js.map} +0 -0
  102. /package/dist/{chunk-6OOK7Y4S.js.map → chunk-3W2KMI5O.js.map} +0 -0
  103. /package/dist/{chunk-FS4WBYY3.js.map → chunk-4HNHHKJF.js.map} +0 -0
  104. /package/dist/{chunk-QU6ZUKAD.js.map → chunk-BKDUCPZ3.js.map} +0 -0
  105. /package/dist/{chunk-TH5KNJLA.js.map → chunk-ENRJ2QEH.js.map} +0 -0
  106. /package/dist/{chunk-C5JXPMTW.js.map → chunk-HQMISQ7L.js.map} +0 -0
  107. /package/dist/{chunk-7DPKPBRJ.js.map → chunk-KLDGJSR5.js.map} +0 -0
  108. /package/dist/{chunk-KB7YIM3W.js.map → chunk-M67AN4J7.js.map} +0 -0
  109. /package/dist/{chunk-WKTFP3SK.js.map → chunk-NO2HOK4B.js.map} +0 -0
  110. /package/dist/{chunk-OV35MJKS.js.map → chunk-QX4R5WY7.js.map} +0 -0
  111. /package/dist/{chunk-PGJL5V6Y.js.map → chunk-QYHABRLM.js.map} +0 -0
  112. /package/dist/{chunk-VD4TMPJI.js.map → chunk-WLRHL2P7.js.map} +0 -0
  113. /package/dist/{chunk-KJWBQZT7.js.map → chunk-XWU7O3S5.js.map} +0 -0
  114. /package/dist/{chunk-KFG6WWFS.js.map → chunk-ZOJUHPD5.js.map} +0 -0
  115. /package/dist/{client-XTQDYMOX.js.map → client-N4XQEAVL.js.map} +0 -0
  116. /package/dist/{compaction-NWPBPWY2.js.map → compaction-H5U32UU6.js.map} +0 -0
  117. /package/dist/{config-3SW4V44Z.js.map → config-KHKIY6LI.js.map} +0 -0
  118. /package/dist/{config-mutator-H32FXUYJ.js.map → config-mutator-ZZKFQ7HJ.js.map} +0 -0
  119. /package/dist/{doctor-J6RCHFVE.js.map → doctor-QICAXIQB.js.map} +0 -0
  120. /package/dist/{memory-extract-MGGXIZTE.js.map → memory-extract-F76BE6KA.js.map} +0 -0
  121. /package/dist/{program-SQTOPCQW.js.map → ntfy-52EXHVMD.js.map} +0 -0
  122. /package/dist/{promote-DJFMTLRC.js.map → program-ZWNGK3RB.js.map} +0 -0
  123. /package/dist/{query-UAZUMU4N.js.map → promote-H6ZHJXTY.js.map} +0 -0
  124. /package/dist/{registry-4OUBA2TY.js.map → push-keys-2DTD7YNQ.js.map} +0 -0
  125. /package/dist/{routing-LVQH6WOJ.js.map → push-store-LXTYULUF.js.map} +0 -0
  126. /package/dist/{schedule-tool-2BONJVCJ.js.map → query-FTE4FLYK.js.map} +0 -0
  127. /package/dist/{scheduler-7CEXDECA.js.map → registry-HDOFVNRK.js.map} +0 -0
  128. /package/dist/{request-planner-2H7HCUCZ.js.map → request-planner-ABD4WIGM.js.map} +0 -0
  129. /package/dist/{review-candidates-U7R64OCS.js.map → review-candidates-B6574GOJ.js.map} +0 -0
  130. /package/dist/{seat-2KGFNCIW.js.map → routing-BGKZOHOA.js.map} +0 -0
  131. /package/dist/{wiki-6YT7B5HU.js.map → schedule-tool-UDHXTKWV.js.map} +0 -0
  132. /package/dist/{select-XGK27RPP.js.map → select-Y7SBUCGJ.js.map} +0 -0
  133. /package/dist/{set-enabled-7YGN2FAZ.js.map → set-enabled-ARKMDLXN.js.map} +0 -0
  134. /package/dist/{tool-HKDIZ6I4.js.map → tool-5EVYUN2G.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -3073,6 +3073,47 @@ declare const daemonConfigSchema: z.ZodObject<{
3073
3073
  defaultPriority?: number | undefined;
3074
3074
  defaultTitle?: string | undefined;
3075
3075
  }>>;
3076
+ /** Web Push to the phone app (/app) — outbound only. The node that hosts
3077
+ * the app holds the subscriptions and sends; any other node sets
3078
+ * `relayTo` and forwards over the mesh. `chatId` "default" means every
3079
+ * subscribed phone, or a device id (tok_…) for one. */
3080
+ push: z.ZodDefault<z.ZodObject<{
3081
+ enabled: z.ZodDefault<z.ZodBoolean>;
3082
+ /** VAPID key pair written by `agentx app push-keys`. Relative paths
3083
+ * resolve from the folder AgentX runs in (the one holding agentx.json). */
3084
+ keysFile: z.ZodDefault<z.ZodString>;
3085
+ /** Contact for the push services: `mailto:you@example.com` or an
3086
+ * https:// URL. Required on the hosting node. */
3087
+ subject: z.ZodOptional<z.ZodString>;
3088
+ /** Mesh peer (id or name) that hosts the phone app. Set it on every
3089
+ * other node; leave it unset on the host. */
3090
+ relayTo: z.ZodOptional<z.ZodString>;
3091
+ /** How long a push service keeps trying an offline phone. */
3092
+ ttlSeconds: z.ZodDefault<z.ZodNumber>;
3093
+ /** Recent pushes kept for the app's Alerts tab. */
3094
+ keepRecent: z.ZodDefault<z.ZodNumber>;
3095
+ /** Push-service hosts a phone may subscribe with (a host or any
3096
+ * subdomain of it). The daemon POSTs to the stored address, so anything
3097
+ * else is refused. Defaults cover Chrome/Android, Firefox, Safari/iOS
3098
+ * and Edge. */
3099
+ allowedHosts: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
3100
+ }, "strip", z.ZodTypeAny, {
3101
+ enabled: boolean;
3102
+ keysFile: string;
3103
+ ttlSeconds: number;
3104
+ keepRecent: number;
3105
+ allowedHosts: string[];
3106
+ subject?: string | undefined;
3107
+ relayTo?: string | undefined;
3108
+ }, {
3109
+ enabled?: boolean | undefined;
3110
+ keysFile?: string | undefined;
3111
+ subject?: string | undefined;
3112
+ relayTo?: string | undefined;
3113
+ ttlSeconds?: number | undefined;
3114
+ keepRecent?: number | undefined;
3115
+ allowedHosts?: string[] | undefined;
3116
+ }>>;
3076
3117
  webrtc: z.ZodDefault<z.ZodObject<{
3077
3118
  enabled: z.ZodDefault<z.ZodBoolean>;
3078
3119
  /** ICE STUN servers for NAT discovery. Default is Google's public STUN. */
@@ -3231,6 +3272,15 @@ declare const daemonConfigSchema: z.ZodObject<{
3231
3272
  } | undefined;
3232
3273
  }>>;
3233
3274
  }, "strip", z.ZodTypeAny, {
3275
+ push: {
3276
+ enabled: boolean;
3277
+ keysFile: string;
3278
+ ttlSeconds: number;
3279
+ keepRecent: number;
3280
+ allowedHosts: string[];
3281
+ subject?: string | undefined;
3282
+ relayTo?: string | undefined;
3283
+ };
3234
3284
  gitlab: {
3235
3285
  enabled: boolean;
3236
3286
  host: string;
@@ -3353,6 +3403,15 @@ declare const daemonConfigSchema: z.ZodObject<{
3353
3403
  callUrlBase?: string | undefined;
3354
3404
  };
3355
3405
  }, {
3406
+ push?: {
3407
+ enabled?: boolean | undefined;
3408
+ keysFile?: string | undefined;
3409
+ subject?: string | undefined;
3410
+ relayTo?: string | undefined;
3411
+ ttlSeconds?: number | undefined;
3412
+ keepRecent?: number | undefined;
3413
+ allowedHosts?: string[] | undefined;
3414
+ } | undefined;
3356
3415
  gitlab?: {
3357
3416
  enabled?: boolean | undefined;
3358
3417
  token?: string | undefined;
@@ -3775,6 +3834,10 @@ declare const daemonConfigSchema: z.ZodObject<{
3775
3834
  chatId: string;
3776
3835
  accountId?: string | undefined;
3777
3836
  }>>;
3837
+ /** Channel `agentx notify` and Focus digests use when none is given.
3838
+ * Unset: `push` (the phone app) when channels.push is enabled, else
3839
+ * `ntfy`, so upgrading never points notify at a channel that is off. */
3840
+ channel: z.ZodOptional<z.ZodString>;
3778
3841
  /** Notify on these events */
3779
3842
  on: z.ZodDefault<z.ZodObject<{
3780
3843
  taskComplete: z.ZodDefault<z.ZodBoolean>;
@@ -3827,6 +3890,7 @@ declare const daemonConfigSchema: z.ZodObject<{
3827
3890
  taskQueued: boolean;
3828
3891
  };
3829
3892
  longTaskThreshold: number;
3893
+ channel?: string | undefined;
3830
3894
  destination?: {
3831
3895
  channel: string;
3832
3896
  chatId: string;
@@ -3840,6 +3904,7 @@ declare const daemonConfigSchema: z.ZodObject<{
3840
3904
  volume?: number | undefined;
3841
3905
  icon?: string | undefined;
3842
3906
  } | undefined;
3907
+ channel?: string | undefined;
3843
3908
  on?: {
3844
3909
  taskComplete?: boolean | undefined;
3845
3910
  taskError?: boolean | undefined;
@@ -5672,6 +5737,15 @@ declare const daemonConfigSchema: z.ZodObject<{
5672
5737
  baseUrl?: string | undefined;
5673
5738
  }>;
5674
5739
  channels: {
5740
+ push: {
5741
+ enabled: boolean;
5742
+ keysFile: string;
5743
+ ttlSeconds: number;
5744
+ keepRecent: number;
5745
+ allowedHosts: string[];
5746
+ subject?: string | undefined;
5747
+ relayTo?: string | undefined;
5748
+ };
5675
5749
  gitlab: {
5676
5750
  enabled: boolean;
5677
5751
  host: string;
@@ -5850,6 +5924,7 @@ declare const daemonConfigSchema: z.ZodObject<{
5850
5924
  taskQueued: boolean;
5851
5925
  };
5852
5926
  longTaskThreshold: number;
5927
+ channel?: string | undefined;
5853
5928
  destination?: {
5854
5929
  channel: string;
5855
5930
  chatId: string;
@@ -6280,6 +6355,15 @@ declare const daemonConfigSchema: z.ZodObject<{
6280
6355
  baseUrl?: string | undefined;
6281
6356
  }> | undefined;
6282
6357
  channels?: {
6358
+ push?: {
6359
+ enabled?: boolean | undefined;
6360
+ keysFile?: string | undefined;
6361
+ subject?: string | undefined;
6362
+ relayTo?: string | undefined;
6363
+ ttlSeconds?: number | undefined;
6364
+ keepRecent?: number | undefined;
6365
+ allowedHosts?: string[] | undefined;
6366
+ } | undefined;
6283
6367
  gitlab?: {
6284
6368
  enabled?: boolean | undefined;
6285
6369
  token?: string | undefined;
@@ -6452,6 +6536,7 @@ declare const daemonConfigSchema: z.ZodObject<{
6452
6536
  volume?: number | undefined;
6453
6537
  icon?: string | undefined;
6454
6538
  } | undefined;
6539
+ channel?: string | undefined;
6455
6540
  on?: {
6456
6541
  taskComplete?: boolean | undefined;
6457
6542
  taskError?: boolean | undefined;
@@ -7472,6 +7557,9 @@ declare class AgentXDaemon {
7472
7557
  /** Agent-memory HTTP surface — see memory-api.ts. */
7473
7558
  private handleMemoryApi;
7474
7559
  private handleWorkflowEvent;
7560
+ /** Forwards a push to the mesh peer hosting the phone app (its
7561
+ * /channel/send), for PushRelayAdapter. */
7562
+ private relayPush;
7475
7563
  /** Mesh-callable outbound send. A peer's workflow `action.send` invokes
7476
7564
  * this when the channel lives on this node (e.g. peer-server hosts
7477
7565
  * whatsapp; macbook's workflow forwards here). Just unwraps to the local
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as L}from"./chunk-Y57CULGE.js";import{a as St,b as kt,c as vt,d as xt,e as $t,f as Ct,g as Pt,ia as bt,ja as Tt,ka as Mt}from"./chunk-SABOPOYX.js";import"./chunk-D4HAR3L3.js";import"./chunk-TH5KNJLA.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-S7CVSKOX.js";import"./chunk-6OOK7Y4S.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-L53FTKEP.js";import{O as yt,l as lt,m as ct,n as dt,o as mt,p as pt}from"./chunk-IDYP7G7Z.js";import"./chunk-C5JXPMTW.js";import"./chunk-N6EWZGIX.js";import"./chunk-WP6KLXTP.js";import"./chunk-DP7RTNDM.js";import{A as D,B as z,C as V,a as ye,b as we,c as Se,d as Ae,e as Ie,f as Oe,g as Ne,h as He,i as je,j as Ue,k as _e,l as I,m as q,n as Be,o as qe,p as Ye,q as O,r as ze,s as Ve,t as Xe,u as x,v as Y,w as Qe,x as Ze,y as et,z as wt}from"./chunk-7DPKPBRJ.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-PGJL5V6Y.js";import{s as ut}from"./chunk-KFG6WWFS.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-FS4WBYY3.js";import"./chunk-KB7YIM3W.js";import"./chunk-DWADWDMU.js";import"./chunk-WKTFP3SK.js";import"./chunk-HRBKSZ34.js";import"./chunk-VWTBHLMX.js";import"./chunk-VD4TMPJI.js";import{a as gt,b as ft,e as ht}from"./chunk-KJWBQZT7.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-QU6ZUKAD.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-NF52Q3TV.js";import"./chunk-72SZI2UW.js";import"./chunk-FX3D7YON.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import{a as ke,b as ve,c as xe,d as $e,e as Ce,f as Pe,g as be,h as Te,i as Me,j as Re,l as Ee,m as Ge,o as T,p as W}from"./chunk-SZJMS7K4.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{a as Fe,b as Le,c as A,d as De}from"./chunk-VDMYBPYB.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{k as tt,m as st,n as ot,p as nt}from"./chunk-47EEUZBK.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";W();G();import{execa as Rt}from"execa";import{existsSync as se,promises as X}from"fs";import S from"path";import ie from"node-fetch";async function Et(o,e){let t=o.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${o}. Expected format: owner/repo`);let s=t[0],i=t[1],n=t[2];try{let a=n?`${s}/${i}/${n}`:`${s}/${i}`;await Rt("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${o}`);let r=S.resolve(e,".skills",`${s}_${i}`);if(se(r))return await ne(r,o);let d=S.resolve(e,".skills");return se(d)?await ne(d,o):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Gt(s,i,n,e)}}async function Gt(o,e,t,s){let i=[];try{let n=`https://api.github.com/repos/${o}/${e}/git/trees/main?recursive=1`,a=await ie(n);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let d=(await a.json()).tree.filter(p=>p.type==="blob"&&p.path.endsWith("SKILL.md"));if(t){let p=d.find(f=>f.path.includes(`/${t}/`)||f.path===`${t}/SKILL.md`);if(p){let f=await oe(o,e,p.path,s);f&&i.push(f)}}else for(let p of d){let f=await oe(o,e,p.path,s);f&&i.push(f)}}catch(n){m.error(`Failed to fetch skills from GitHub: ${n.message}`)}return i}async function oe(o,e,t,s){try{let i=`https://raw.githubusercontent.com/${o}/${e}/main/${t}`,n=await ie(i);if(!n.ok)return null;let a=await n.text(),r=A(a);if(r){r.source="remote",r.packageId=`${o}/${e}`;let d=S.dirname(t),p=S.resolve(s,".skills",`${o}_${e}`,d);await X.mkdir(p,{recursive:!0}),await X.writeFile(S.resolve(p,"SKILL.md"),a),r.path=S.resolve(p,"SKILL.md")}return r}catch{return null}}async function ne(o,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:o,deep:5});for(let n of i)try{let a=S.resolve(o,n),r=await X.readFile(a,"utf8"),d=A(r);d&&(d.source="remote",d.path=a,d.packageId=e,t.push(d))}catch{}return t}async function At(o,e,t,s,i){let n=["---",`name: ${o}`,`description: ${e}`];if(s?.length){n.push("tags:");for(let a of s)n.push(` - ${a}`)}if(i?.length){n.push("globs:");for(let a of i)n.push(` - ${a}`)}return n.push("---"),`${n.join(`
1
+ import{a as L}from"./chunk-Y57CULGE.js";import{a as St,b as kt,c as vt,d as xt,e as $t,f as Ct,g as Pt,la as bt,ma as Tt,na as Mt}from"./chunk-6JHA3ZE6.js";import"./chunk-3RCFUIYR.js";import"./chunk-ENRJ2QEH.js";import"./chunk-S7CVSKOX.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-3W2KMI5O.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-L53FTKEP.js";import{O as yt,l as lt,m as ct,n as dt,o as mt,p as pt}from"./chunk-BMSPRUEJ.js";import"./chunk-HQMISQ7L.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.js";import{A as D,B as z,C as V,a as ye,b as we,c as Se,d as Ae,e as Ie,f as Oe,g as Ne,h as He,i as je,j as Ue,k as _e,l as I,m as q,n as Be,o as qe,p as Ye,q as O,r as ze,s as Ve,t as Xe,u as x,v as Y,w as Qe,x as Ze,y as et,z as wt}from"./chunk-KLDGJSR5.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-QYHABRLM.js";import{s as ut}from"./chunk-ZOJUHPD5.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-4HNHHKJF.js";import"./chunk-M67AN4J7.js";import"./chunk-DWADWDMU.js";import"./chunk-NO2HOK4B.js";import"./chunk-QD6IICK7.js";import"./chunk-VWTBHLMX.js";import"./chunk-WLRHL2P7.js";import{a as gt,b as ft,e as ht}from"./chunk-XWU7O3S5.js";import"./chunk-PNWNVOEZ.js";import"./chunk-64P4QHSZ.js";import"./chunk-BKDUCPZ3.js";import"./chunk-TFVUOC2C.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-37EABIOJ.js";import"./chunk-72SZI2UW.js";import"./chunk-FX3D7YON.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import{a as ke,b as ve,c as xe,d as $e,e as Ce,f as Pe,g as be,h as Te,i as Me,j as Re,l as Ee,m as Ge,o as T,p as W}from"./chunk-SZJMS7K4.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{a as Fe,b as Le,c as A,d as De}from"./chunk-VDMYBPYB.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{k as tt,m as st,n as ot,p as nt}from"./chunk-4FFWNPFX.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";W();G();import{execa as Rt}from"execa";import{existsSync as se,promises as X}from"fs";import S from"path";import ie from"node-fetch";async function Et(o,e){let t=o.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${o}. Expected format: owner/repo`);let s=t[0],i=t[1],n=t[2];try{let a=n?`${s}/${i}/${n}`:`${s}/${i}`;await Rt("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${o}`);let r=S.resolve(e,".skills",`${s}_${i}`);if(se(r))return await ne(r,o);let d=S.resolve(e,".skills");return se(d)?await ne(d,o):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Gt(s,i,n,e)}}async function Gt(o,e,t,s){let i=[];try{let n=`https://api.github.com/repos/${o}/${e}/git/trees/main?recursive=1`,a=await ie(n);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let d=(await a.json()).tree.filter(p=>p.type==="blob"&&p.path.endsWith("SKILL.md"));if(t){let p=d.find(f=>f.path.includes(`/${t}/`)||f.path===`${t}/SKILL.md`);if(p){let f=await oe(o,e,p.path,s);f&&i.push(f)}}else for(let p of d){let f=await oe(o,e,p.path,s);f&&i.push(f)}}catch(n){m.error(`Failed to fetch skills from GitHub: ${n.message}`)}return i}async function oe(o,e,t,s){try{let i=`https://raw.githubusercontent.com/${o}/${e}/main/${t}`,n=await ie(i);if(!n.ok)return null;let a=await n.text(),r=A(a);if(r){r.source="remote",r.packageId=`${o}/${e}`;let d=S.dirname(t),p=S.resolve(s,".skills",`${o}_${e}`,d);await X.mkdir(p,{recursive:!0}),await X.writeFile(S.resolve(p,"SKILL.md"),a),r.path=S.resolve(p,"SKILL.md")}return r}catch{return null}}async function ne(o,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:o,deep:5});for(let n of i)try{let a=S.resolve(o,n),r=await X.readFile(a,"utf8"),d=A(r);d&&(d.source="remote",d.path=a,d.packageId=e,t.push(d))}catch{}return t}async function At(o,e,t,s,i){let n=["---",`name: ${o}`,`description: ${e}`];if(s?.length){n.push("tags:");for(let a of s)n.push(` - ${a}`)}if(i?.length){n.push("globs:");for(let a of i)n.push(` - ${a}`)}return n.push("---"),`${n.join(`
2
2
  `)}
3
3
 
4
4
  ${t}`}async function It(o){let{loadLocalSkills:e}=await import("./loader-EVHZ2R73.js");return e(o)}async function Ot(o,e,t,s,i){let a=[{role:"system",content:`You are a skill author for the Agent Skills ecosystem (skills.sh).