agentix-cli 0.117.0 → 0.118.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 (136) hide show
  1. package/README.md +5 -5
  2. package/dist/{App-UQP7UQYV.js → App-XMSNIAU6.js} +2 -2
  3. package/dist/{ChatApp-VGSP5O6N.js → ChatApp-BFYTIQF3.js} +2 -2
  4. package/dist/{agent-MO27U4Y7.js → agent-E6W5VBYH.js} +2 -2
  5. package/dist/{board-dashboard-CSS7XMIZ.js → board-dashboard-D5FQZKO4.js} +215 -101
  6. package/dist/board-dashboard-D5FQZKO4.js.map +1 -0
  7. package/dist/chunk-23SQSUBI.js +3 -0
  8. package/dist/chunk-23SQSUBI.js.map +1 -0
  9. package/dist/{chunk-VRXJW6JJ.js → chunk-2G227TF3.js} +2 -2
  10. package/dist/{chunk-HVZVFCJX.js → chunk-4PQREYBU.js} +2 -2
  11. package/dist/{chunk-4FU4BFCH.js → chunk-5NTWGUSJ.js} +3 -3
  12. package/dist/chunk-5NTWGUSJ.js.map +1 -0
  13. package/dist/{chunk-2WK5A3UV.js → chunk-5PR6DZYW.js} +3 -3
  14. package/dist/chunk-5PR6DZYW.js.map +1 -0
  15. package/dist/{chunk-4ELAUGOP.js → chunk-5UFIHT66.js} +2 -2
  16. package/dist/{chunk-CUZTLQH2.js → chunk-6PC4EZ4P.js} +2 -2
  17. package/dist/chunk-AD4QZZVN.js +8 -0
  18. package/dist/{failure-candidates-PBPF45GN.js.map → chunk-AD4QZZVN.js.map} +1 -1
  19. package/dist/chunk-B6OXEIOF.js +126 -0
  20. package/dist/chunk-B6OXEIOF.js.map +1 -0
  21. package/dist/chunk-BDJWN3PL.js +4 -0
  22. package/dist/chunk-BDJWN3PL.js.map +1 -0
  23. package/dist/{chunk-OJ7KM2UO.js → chunk-FSXWNVGL.js} +2 -2
  24. package/dist/{chunk-746KHKT4.js → chunk-FTZCNID3.js} +2 -2
  25. package/dist/{chunk-PFK3QO6S.js → chunk-GJKYOEDE.js} +2 -2
  26. package/dist/{chunk-BQ2HJ7TS.js → chunk-HK7TU5NX.js} +2 -2
  27. package/dist/{chunk-FJI5GRBH.js → chunk-IMLLHT7U.js} +3 -3
  28. package/dist/chunk-IMLLHT7U.js.map +1 -0
  29. package/dist/chunk-IOYRRGK7.js +2 -0
  30. package/dist/chunk-IOYRRGK7.js.map +1 -0
  31. package/dist/{chunk-T2VDHVYW.js → chunk-IVCFXLAR.js} +2 -2
  32. package/dist/{chunk-W7WNRPNQ.js → chunk-NDPU6AX2.js} +2 -2
  33. package/dist/{chunk-45GOH6F7.js → chunk-NG677JHW.js} +8 -8
  34. package/dist/chunk-NG677JHW.js.map +1 -0
  35. package/dist/{chunk-MSP25HE5.js → chunk-PVQPXZHE.js} +5 -5
  36. package/dist/{chunk-5PPMPCHG.js → chunk-RJBRYUKU.js} +2 -2
  37. package/dist/{chunk-QLWGLRT5.js → chunk-TJ7IUHC7.js} +2 -2
  38. package/dist/{chunk-J2YLOGNN.js → chunk-U46G24CD.js} +2 -2
  39. package/dist/{chunk-IZMXAXW3.js → chunk-V4PVGEWI.js} +196 -197
  40. package/dist/chunk-V4PVGEWI.js.map +1 -0
  41. package/dist/chunk-WCXXXAHV.js +3 -0
  42. package/dist/{chunk-DMHQIACQ.js.map → chunk-WCXXXAHV.js.map} +1 -1
  43. package/dist/{chunk-45YETJY4.js → chunk-XGOBZCYC.js} +2 -2
  44. package/dist/{chunk-CKQ2YDFP.js → chunk-ZDWE47LM.js} +8 -8
  45. package/dist/chunk-ZDWE47LM.js.map +1 -0
  46. package/dist/cli.js +1 -1
  47. package/dist/{client-5UMNDY7Z.js → client-TSYZXEH7.js} +2 -2
  48. package/dist/{config-O44DOHFW.js → config-QAE3LNFQ.js} +2 -2
  49. package/dist/config-mutator-WRQ7MFQL.js +2 -0
  50. package/dist/{doctor-NKPH74F7.js → doctor-PVLVKLRA.js} +2 -2
  51. package/dist/failure-candidates-JNGUVBDG.js +2 -0
  52. package/dist/{grants-BRAVOGBP.js → grants-V2ZNLWSJ.js} +2 -2
  53. package/dist/index.d.ts +69 -2
  54. package/dist/index.js +1 -1
  55. package/dist/program-ZYG3YPH2.js +721 -0
  56. package/dist/program-ZYG3YPH2.js.map +1 -0
  57. package/dist/{promote-ZRNVPWTD.js → promote-IRBBEXGG.js} +2 -2
  58. package/dist/{push-bridge-VPTQNM43.js → push-bridge-325SXDGN.js} +2 -2
  59. package/dist/{query-HURONGKA.js → query-NAU7J34H.js} +2 -2
  60. package/dist/{registry-AYGFAKTC.js → registry-I5PXGCO6.js} +2 -2
  61. package/dist/{request-planner-ZZRSOBQZ.js → request-planner-CRG3OGGG.js} +2 -2
  62. package/dist/{review-candidates-KHH47PK7.js → review-candidates-HAP7P6SH.js} +2 -2
  63. package/dist/{routing-GUBKKWPT.js → routing-G33LLOTF.js} +2 -2
  64. package/dist/schedule-tool-IP7ZCQKI.js +2 -0
  65. package/dist/scheduler-QXLPYSNJ.js +2 -0
  66. package/dist/{seat-CVTTTE5V.js → seat-IJN7NETF.js} +2 -2
  67. package/dist/{select-OUTM6OBC.js → select-D7AZ2XZF.js} +2 -2
  68. package/dist/{set-enabled-2QKQRVUN.js → set-enabled-5YSDIQXU.js} +2 -2
  69. package/dist/{surface-usage-HCJTUS6Z.js → surface-usage-WSY4SHHL.js} +2 -2
  70. package/dist/{tool-XY7QGHLV.js → tool-GQIQWHWB.js} +2 -2
  71. package/dist/{tool-OFXHMLE5.js → tool-XADSW6NL.js} +2 -2
  72. package/dist/wiki-PPX3HYXW.js +2 -0
  73. package/dist/wiki-PPX3HYXW.js.map +1 -0
  74. package/package.json +1 -1
  75. package/dist/board-dashboard-CSS7XMIZ.js.map +0 -1
  76. package/dist/chunk-2WK5A3UV.js.map +0 -1
  77. package/dist/chunk-45GOH6F7.js.map +0 -1
  78. package/dist/chunk-4FU4BFCH.js.map +0 -1
  79. package/dist/chunk-CKQ2YDFP.js.map +0 -1
  80. package/dist/chunk-DMHQIACQ.js +0 -3
  81. package/dist/chunk-FJI5GRBH.js.map +0 -1
  82. package/dist/chunk-HYGMWCUU.js +0 -126
  83. package/dist/chunk-HYGMWCUU.js.map +0 -1
  84. package/dist/chunk-IZMXAXW3.js.map +0 -1
  85. package/dist/chunk-JIT5GPTX.js +0 -4
  86. package/dist/chunk-JIT5GPTX.js.map +0 -1
  87. package/dist/chunk-PMQ47IPT.js +0 -2
  88. package/dist/chunk-PMQ47IPT.js.map +0 -1
  89. package/dist/chunk-VEHTVYP6.js +0 -2
  90. package/dist/chunk-VEHTVYP6.js.map +0 -1
  91. package/dist/config-mutator-PRLY2TCE.js +0 -2
  92. package/dist/failure-candidates-PBPF45GN.js +0 -8
  93. package/dist/program-RHIJYCEJ.js +0 -703
  94. package/dist/program-RHIJYCEJ.js.map +0 -1
  95. package/dist/schedule-tool-VH77T3N3.js +0 -2
  96. package/dist/scheduler-SZ4YYXJE.js +0 -2
  97. package/dist/wiki-46GMWX34.js +0 -2
  98. /package/dist/{App-UQP7UQYV.js.map → App-XMSNIAU6.js.map} +0 -0
  99. /package/dist/{ChatApp-VGSP5O6N.js.map → ChatApp-BFYTIQF3.js.map} +0 -0
  100. /package/dist/{agent-MO27U4Y7.js.map → agent-E6W5VBYH.js.map} +0 -0
  101. /package/dist/{chunk-VRXJW6JJ.js.map → chunk-2G227TF3.js.map} +0 -0
  102. /package/dist/{chunk-HVZVFCJX.js.map → chunk-4PQREYBU.js.map} +0 -0
  103. /package/dist/{chunk-4ELAUGOP.js.map → chunk-5UFIHT66.js.map} +0 -0
  104. /package/dist/{chunk-CUZTLQH2.js.map → chunk-6PC4EZ4P.js.map} +0 -0
  105. /package/dist/{chunk-OJ7KM2UO.js.map → chunk-FSXWNVGL.js.map} +0 -0
  106. /package/dist/{chunk-746KHKT4.js.map → chunk-FTZCNID3.js.map} +0 -0
  107. /package/dist/{chunk-PFK3QO6S.js.map → chunk-GJKYOEDE.js.map} +0 -0
  108. /package/dist/{chunk-BQ2HJ7TS.js.map → chunk-HK7TU5NX.js.map} +0 -0
  109. /package/dist/{chunk-T2VDHVYW.js.map → chunk-IVCFXLAR.js.map} +0 -0
  110. /package/dist/{chunk-W7WNRPNQ.js.map → chunk-NDPU6AX2.js.map} +0 -0
  111. /package/dist/{chunk-MSP25HE5.js.map → chunk-PVQPXZHE.js.map} +0 -0
  112. /package/dist/{chunk-5PPMPCHG.js.map → chunk-RJBRYUKU.js.map} +0 -0
  113. /package/dist/{chunk-QLWGLRT5.js.map → chunk-TJ7IUHC7.js.map} +0 -0
  114. /package/dist/{chunk-J2YLOGNN.js.map → chunk-U46G24CD.js.map} +0 -0
  115. /package/dist/{chunk-45YETJY4.js.map → chunk-XGOBZCYC.js.map} +0 -0
  116. /package/dist/{client-5UMNDY7Z.js.map → client-TSYZXEH7.js.map} +0 -0
  117. /package/dist/{config-O44DOHFW.js.map → config-QAE3LNFQ.js.map} +0 -0
  118. /package/dist/{config-mutator-PRLY2TCE.js.map → config-mutator-WRQ7MFQL.js.map} +0 -0
  119. /package/dist/{doctor-NKPH74F7.js.map → doctor-PVLVKLRA.js.map} +0 -0
  120. /package/dist/{grants-BRAVOGBP.js.map → failure-candidates-JNGUVBDG.js.map} +0 -0
  121. /package/dist/{promote-ZRNVPWTD.js.map → grants-V2ZNLWSJ.js.map} +0 -0
  122. /package/dist/{push-bridge-VPTQNM43.js.map → promote-IRBBEXGG.js.map} +0 -0
  123. /package/dist/{query-HURONGKA.js.map → push-bridge-325SXDGN.js.map} +0 -0
  124. /package/dist/{registry-AYGFAKTC.js.map → query-NAU7J34H.js.map} +0 -0
  125. /package/dist/{routing-GUBKKWPT.js.map → registry-I5PXGCO6.js.map} +0 -0
  126. /package/dist/{request-planner-ZZRSOBQZ.js.map → request-planner-CRG3OGGG.js.map} +0 -0
  127. /package/dist/{review-candidates-KHH47PK7.js.map → review-candidates-HAP7P6SH.js.map} +0 -0
  128. /package/dist/{schedule-tool-VH77T3N3.js.map → routing-G33LLOTF.js.map} +0 -0
  129. /package/dist/{scheduler-SZ4YYXJE.js.map → schedule-tool-IP7ZCQKI.js.map} +0 -0
  130. /package/dist/{seat-CVTTTE5V.js.map → scheduler-QXLPYSNJ.js.map} +0 -0
  131. /package/dist/{surface-usage-HCJTUS6Z.js.map → seat-IJN7NETF.js.map} +0 -0
  132. /package/dist/{select-OUTM6OBC.js.map → select-D7AZ2XZF.js.map} +0 -0
  133. /package/dist/{set-enabled-2QKQRVUN.js.map → set-enabled-5YSDIQXU.js.map} +0 -0
  134. /package/dist/{wiki-46GMWX34.js.map → surface-usage-WSY4SHHL.js.map} +0 -0
  135. /package/dist/{tool-XY7QGHLV.js.map → tool-GQIQWHWB.js.map} +0 -0
  136. /package/dist/{tool-OFXHMLE5.js.map → tool-XADSW6NL.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -2107,6 +2107,11 @@ declare const cronJobSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2107
2107
  chatId: string;
2108
2108
  accountId?: string | undefined;
2109
2109
  }>>;
2110
+ /** Whether each successful run's answer is sent to `notify` (failures
2111
+ * are alerted there either way). Default on: a schedule with somewhere
2112
+ * to report reports there, including the chat an agent's schedule was
2113
+ * requested from (#738). `false` keeps `notify` for failure alerts only. */
2114
+ deliverResult: z.ZodOptional<z.ZodBoolean>;
2110
2115
  /** Secret that lets an external system fire this job now via
2111
2116
  * `POST /routines/<id>/fire`. Reference an env var (`"${MY_TOKEN}"`);
2112
2117
  * a job without one cannot be fired. See src/daemon/routine-fire.ts. */
@@ -2149,6 +2154,7 @@ declare const cronJobSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2149
2154
  } | undefined;
2150
2155
  maxOutputTokens?: number | undefined;
2151
2156
  autonomy?: "report" | "propose" | "act" | undefined;
2157
+ deliverResult?: boolean | undefined;
2152
2158
  fireToken?: string | undefined;
2153
2159
  createdBy?: string | undefined;
2154
2160
  approval?: {
@@ -2173,6 +2179,7 @@ declare const cronJobSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2173
2179
  maxOutputTokens?: number | undefined;
2174
2180
  autonomy?: "report" | "propose" | "act" | undefined;
2175
2181
  onError?: "notify" | "disable" | "log" | ("notify" | "disable" | "log")[] | undefined;
2182
+ deliverResult?: boolean | undefined;
2176
2183
  fireToken?: string | undefined;
2177
2184
  createdBy?: string | undefined;
2178
2185
  approval?: {
@@ -2197,6 +2204,7 @@ declare const cronJobSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2197
2204
  } | undefined;
2198
2205
  maxOutputTokens?: number | undefined;
2199
2206
  autonomy?: "report" | "propose" | "act" | undefined;
2207
+ deliverResult?: boolean | undefined;
2200
2208
  fireToken?: string | undefined;
2201
2209
  createdBy?: string | undefined;
2202
2210
  approval?: {
@@ -2221,6 +2229,7 @@ declare const cronJobSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2221
2229
  maxOutputTokens?: number | undefined;
2222
2230
  autonomy?: "report" | "propose" | "act" | undefined;
2223
2231
  onError?: "notify" | "disable" | "log" | ("notify" | "disable" | "log")[] | undefined;
2232
+ deliverResult?: boolean | undefined;
2224
2233
  fireToken?: string | undefined;
2225
2234
  createdBy?: string | undefined;
2226
2235
  approval?: {
@@ -2245,6 +2254,7 @@ declare const cronJobSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2245
2254
  } | undefined;
2246
2255
  maxOutputTokens?: number | undefined;
2247
2256
  autonomy?: "report" | "propose" | "act" | undefined;
2257
+ deliverResult?: boolean | undefined;
2248
2258
  fireToken?: string | undefined;
2249
2259
  createdBy?: string | undefined;
2250
2260
  approval?: {
@@ -2269,6 +2279,7 @@ declare const cronJobSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2269
2279
  maxOutputTokens?: number | undefined;
2270
2280
  autonomy?: "report" | "propose" | "act" | undefined;
2271
2281
  onError?: "notify" | "disable" | "log" | ("notify" | "disable" | "log")[] | undefined;
2282
+ deliverResult?: boolean | undefined;
2272
2283
  fireToken?: string | undefined;
2273
2284
  createdBy?: string | undefined;
2274
2285
  approval?: {
@@ -2918,6 +2929,7 @@ declare const daemonConfigSchema: z.ZodObject<{
2918
2929
  * - numeric user id ("1816212449") — matches sender (from.id)
2919
2930
  * - numeric chat id ("-1003861455814") — matches chat (chat.id)
2920
2931
  * - "@username" — matches sender username
2932
+ * - "*" — matches everyone (public bot)
2921
2933
  * A message is dispatched iff at least one entry matches. */
2922
2934
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2923
2935
  /** When false, the daemon keeps the bot token registered so outbound
@@ -2944,7 +2956,7 @@ declare const daemonConfigSchema: z.ZodObject<{
2944
2956
  /** Global sender allowlist applied to every account that doesn't set
2945
2957
  * its own `allowFrom`. When neither is configured, every incoming
2946
2958
  * message is dropped — closed by default. Same entry forms as the
2947
- * per-account list (user id, chat id, @username). */
2959
+ * per-account list (user id, chat id, @username, or "*" for everyone). */
2948
2960
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2949
2961
  }, "strip", z.ZodTypeAny, {
2950
2962
  group: "all" | "mention-required";
@@ -4034,6 +4046,11 @@ declare const daemonConfigSchema: z.ZodObject<{
4034
4046
  chatId: string;
4035
4047
  accountId?: string | undefined;
4036
4048
  }>>;
4049
+ /** Whether each successful run's answer is sent to `notify` (failures
4050
+ * are alerted there either way). Default on: a schedule with somewhere
4051
+ * to report reports there, including the chat an agent's schedule was
4052
+ * requested from (#738). `false` keeps `notify` for failure alerts only. */
4053
+ deliverResult: z.ZodOptional<z.ZodBoolean>;
4037
4054
  /** Secret that lets an external system fire this job now via
4038
4055
  * `POST /routines/<id>/fire`. Reference an env var (`"${MY_TOKEN}"`);
4039
4056
  * a job without one cannot be fired. See src/daemon/routine-fire.ts. */
@@ -4076,6 +4093,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4076
4093
  } | undefined;
4077
4094
  maxOutputTokens?: number | undefined;
4078
4095
  autonomy?: "report" | "propose" | "act" | undefined;
4096
+ deliverResult?: boolean | undefined;
4079
4097
  fireToken?: string | undefined;
4080
4098
  createdBy?: string | undefined;
4081
4099
  approval?: {
@@ -4100,6 +4118,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4100
4118
  maxOutputTokens?: number | undefined;
4101
4119
  autonomy?: "report" | "propose" | "act" | undefined;
4102
4120
  onError?: "notify" | "disable" | "log" | ("notify" | "disable" | "log")[] | undefined;
4121
+ deliverResult?: boolean | undefined;
4103
4122
  fireToken?: string | undefined;
4104
4123
  createdBy?: string | undefined;
4105
4124
  approval?: {
@@ -4124,6 +4143,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4124
4143
  } | undefined;
4125
4144
  maxOutputTokens?: number | undefined;
4126
4145
  autonomy?: "report" | "propose" | "act" | undefined;
4146
+ deliverResult?: boolean | undefined;
4127
4147
  fireToken?: string | undefined;
4128
4148
  createdBy?: string | undefined;
4129
4149
  approval?: {
@@ -4148,6 +4168,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4148
4168
  maxOutputTokens?: number | undefined;
4149
4169
  autonomy?: "report" | "propose" | "act" | undefined;
4150
4170
  onError?: "notify" | "disable" | "log" | ("notify" | "disable" | "log")[] | undefined;
4171
+ deliverResult?: boolean | undefined;
4151
4172
  fireToken?: string | undefined;
4152
4173
  createdBy?: string | undefined;
4153
4174
  approval?: {
@@ -4172,6 +4193,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4172
4193
  } | undefined;
4173
4194
  maxOutputTokens?: number | undefined;
4174
4195
  autonomy?: "report" | "propose" | "act" | undefined;
4196
+ deliverResult?: boolean | undefined;
4175
4197
  fireToken?: string | undefined;
4176
4198
  createdBy?: string | undefined;
4177
4199
  approval?: {
@@ -4196,6 +4218,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4196
4218
  maxOutputTokens?: number | undefined;
4197
4219
  autonomy?: "report" | "propose" | "act" | undefined;
4198
4220
  onError?: "notify" | "disable" | "log" | ("notify" | "disable" | "log")[] | undefined;
4221
+ deliverResult?: boolean | undefined;
4199
4222
  fireToken?: string | undefined;
4200
4223
  createdBy?: string | undefined;
4201
4224
  approval?: {
@@ -7488,6 +7511,7 @@ declare const daemonConfigSchema: z.ZodObject<{
7488
7511
  } | undefined;
7489
7512
  maxOutputTokens?: number | undefined;
7490
7513
  autonomy?: "report" | "propose" | "act" | undefined;
7514
+ deliverResult?: boolean | undefined;
7491
7515
  fireToken?: string | undefined;
7492
7516
  createdBy?: string | undefined;
7493
7517
  approval?: {
@@ -8391,6 +8415,7 @@ declare const daemonConfigSchema: z.ZodObject<{
8391
8415
  maxOutputTokens?: number | undefined;
8392
8416
  autonomy?: "report" | "propose" | "act" | undefined;
8393
8417
  onError?: "notify" | "disable" | "log" | ("notify" | "disable" | "log")[] | undefined;
8418
+ deliverResult?: boolean | undefined;
8394
8419
  fireToken?: string | undefined;
8395
8420
  createdBy?: string | undefined;
8396
8421
  approval?: {
@@ -9513,6 +9538,12 @@ declare class AgentXDaemon {
9513
9538
  * returns null and leaves its call site's existing behaviour alone. */
9514
9539
  private initDecisions;
9515
9540
  private startConfigWatcher;
9541
+ /**
9542
+ * Point a scheduler's failure alerts and (for `deliverResult` jobs)
9543
+ * successful answers at each job's `notify` destination. Shared by start
9544
+ * and hot reload so the two can't drift.
9545
+ */
9546
+ private wireCronCallbacks;
9516
9547
  /**
9517
9548
  * Re-read agentx.json, diff against the in-memory config, apply what we
9518
9549
  * can hot-reload (crons, notify-destination, business metadata), and warn
@@ -11192,13 +11223,35 @@ declare class WikiHub {
11192
11223
  getSharedStore(): WikiStore;
11193
11224
  listAgents(): string[];
11194
11225
  getAgentEntries(agentId: string): WikiEntry[];
11226
+ /**
11227
+ * Entries absorb has not dealt with yet: no article cites them and no
11228
+ * successful absorb run has read them. Without the second check an
11229
+ * entry absorb read and chose not to cite came back on every run, and
11230
+ * a backfill kept re-reading the head of the queue (#762).
11231
+ */
11195
11232
  getUnabsorbedEntries(agentId: string): WikiEntry[];
11233
+ /**
11234
+ * Record every entry handed to the model in a successful absorb run,
11235
+ * cited or not. Callers must not call this for a failed run, so those
11236
+ * entries are offered again.
11237
+ */
11238
+ markProcessed(agentId: string, entryIds: string[], citedIds: Iterable<string>): void;
11196
11239
  summary(): AgentWikiSummary[];
11240
+ /** Split an agent's entries into cited by an article, read but not cited, and pending. */
11241
+ private classifyEntries;
11242
+ /** agents/<id>/_absorbed.json — shared by every mode, like the raw entries. */
11243
+ private ledgerPath;
11244
+ private readLedger;
11197
11245
  }
11198
11246
  interface AgentWikiSummary {
11199
11247
  agentId: string;
11200
11248
  totalEntries: number;
11201
11249
  totalArticles: number;
11250
+ /** Entries an article cites. */
11251
+ cited: number;
11252
+ /** Entries a successful absorb run read and did not cite. */
11253
+ readNotCited: number;
11254
+ /** Entries absorb has not read yet. */
11202
11255
  unabsorbed: number;
11203
11256
  articles: Array<{
11204
11257
  title: string;
@@ -13715,7 +13768,8 @@ declare class TelegramAdapter implements ChannelAdapter {
13715
13768
  * caller treats undefined as "closed, drop everything". */
13716
13769
  private effectiveAllowFrom;
13717
13770
  /** Accept a message only when at least one allowlist entry matches the
13718
- * sender's user id, the chat id, or the sender's @username. */
13771
+ * sender's user id, the chat id, or the sender's @username. The entry
13772
+ * `"*"` matches everyone — an explicit opt-in for a public bot. */
13719
13773
  private isAllowed;
13720
13774
  onMessage(handler: (msg: IncomingMessage) => Promise<void>): void;
13721
13775
  start(): Promise<void>;
@@ -14098,6 +14152,9 @@ interface CronJobState {
14098
14152
  /** Routine autonomy level; unset = act (full agent permissions). */
14099
14153
  autonomy?: AutonomyLevel;
14100
14154
  onError: Array<"log" | "notify" | "disable">;
14155
+ /** Send each successful run's answer to the job's `notify` target.
14156
+ * True whenever the job has `notify`, unless `deliverResult: false`. */
14157
+ deliverResult?: boolean;
14101
14158
  lastRun?: Date;
14102
14159
  nextRun?: Date;
14103
14160
  lastSuccess?: Date;
@@ -14149,6 +14206,9 @@ type FireNowResult = {
14149
14206
  };
14150
14207
  /** Notification callback — injected by daemon to send alerts via channels */
14151
14208
  type CronNotifyCallback = (jobId: string, agent: string, error: string, consecutiveErrors: number) => Promise<void>;
14209
+ /** Result callback — injected by daemon to send a successful run's answer
14210
+ * to the job's `notify` target. Not called when `deliverResult` is false. */
14211
+ type CronDeliverCallback = (jobId: string, agent: string, text: string, runId: string) => Promise<void>;
14152
14212
  declare class CronScheduler {
14153
14213
  private jobs;
14154
14214
  /** Kept apart from `jobs`, which is served as-is by GET /crons. */
@@ -14160,6 +14220,7 @@ declare class CronScheduler {
14160
14220
  private lastRunFile;
14161
14221
  private running;
14162
14222
  private notifyCallback?;
14223
+ private deliverCallback?;
14163
14224
  private log;
14164
14225
  constructor(config: DaemonConfig, registry: AgentRegistry, hooks?: HookRegistry, log?: (...args: unknown[]) => void);
14165
14226
  /** Whether a job with this id exists. */
@@ -14179,6 +14240,11 @@ declare class CronScheduler {
14179
14240
  * Called when onError is "notify" or after multiple consecutive failures.
14180
14241
  */
14181
14242
  setNotifyCallback(cb: CronNotifyCallback): void;
14243
+ /**
14244
+ * Set the callback that sends a successful run's answer to the job's
14245
+ * `notify` target. Not called for jobs with `deliverResult: false`.
14246
+ */
14247
+ setDeliverCallback(cb: CronDeliverCallback): void;
14182
14248
  start(): Promise<void>;
14183
14249
  stop(): Promise<void>;
14184
14250
  /** Node stores a timer delay in a 32-bit signed int. Anything larger is
@@ -14231,6 +14297,7 @@ declare class CronScheduler {
14231
14297
  * Execute missed runs (catch-up). Runs sequentially to avoid overwhelming agents.
14232
14298
  */
14233
14299
  private executeMissedRuns;
14300
+ private deliverResult;
14234
14301
  private notifyFailure;
14235
14302
  private notifyDisabled;
14236
14303
  private saveLastRuns;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as St,b as kt,c as vt,d as xt,e as $t,f as Ct,g as Pt,h as bt,ia as Tt,ja as Mt}from"./chunk-IZMXAXW3.js";import"./chunk-2WK5A3UV.js";import"./chunk-GTJIKXDB.js";import"./chunk-CKQ2YDFP.js";import"./chunk-S2GAEH2F.js";import"./chunk-BGG3ZSMW.js";import"./chunk-ZVP6GB4G.js";import"./chunk-45YETJY4.js";import"./chunk-DMHQIACQ.js";import"./chunk-LQE73AZR.js";import"./chunk-2D3RYIDU.js";import"./chunk-QLWGLRT5.js";import"./chunk-JIT5GPTX.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-OJ7KM2UO.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-EMGB23H5.js";import"./chunk-JWDJMFU6.js";import"./chunk-GRMCAO3Q.js";import"./chunk-KZKDVIOE.js";import{ca as yt,m as lt,n as ct,o as dt,p as mt,q as pt}from"./chunk-MSP25HE5.js";import"./chunk-5PPMPCHG.js";import"./chunk-GLQLCBJS.js";import"./chunk-6W74CHNW.js";import{a as L}from"./chunk-UG2OF2EI.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-PFK3QO6S.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-Y4CYQV7G.js";import"./chunk-LLNPKE7H.js";import"./chunk-SHEUCITK.js";import"./chunk-VEHTVYP6.js";import"./chunk-GV7S5BAX.js";import"./chunk-SZDACK6O.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-HYGMWCUU.js";import"./chunk-HVZVFCJX.js";import"./chunk-VWTBHLMX.js";import"./chunk-PMQ47IPT.js";import{a as ht}from"./chunk-BQ2HJ7TS.js";import"./chunk-36AXN6ZB.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GSX4NK2N.js";import"./chunk-VRXJW6JJ.js";import"./chunk-MYVHVJWZ.js";import"./chunk-AV7T3SYT.js";import"./chunk-Y5MFVVTM.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-T2VDHVYW.js";import{f as gt,g as ft}from"./chunk-746KHKT4.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-W7WNRPNQ.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-2PJKGZWP.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{b as Fe,c as Le,d as A,e as De}from"./chunk-JHCI6XCJ.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{ha as tt,ja as st,ka as ot,ma as nt}from"./chunk-FJI5GRBH.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.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 St,b as kt,c as vt,d as xt,e as $t,f as Ct,g as Pt,h as bt,ia as Tt,ja as Mt}from"./chunk-V4PVGEWI.js";import"./chunk-5PR6DZYW.js";import"./chunk-GTJIKXDB.js";import"./chunk-ZDWE47LM.js";import"./chunk-S2GAEH2F.js";import"./chunk-BGG3ZSMW.js";import"./chunk-ZVP6GB4G.js";import"./chunk-XGOBZCYC.js";import"./chunk-WCXXXAHV.js";import"./chunk-LQE73AZR.js";import"./chunk-2D3RYIDU.js";import"./chunk-TJ7IUHC7.js";import"./chunk-BDJWN3PL.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-FSXWNVGL.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-EMGB23H5.js";import"./chunk-JWDJMFU6.js";import"./chunk-GRMCAO3Q.js";import"./chunk-KZKDVIOE.js";import{ca as yt,m as lt,n as ct,o as dt,p as mt,q as pt}from"./chunk-PVQPXZHE.js";import"./chunk-RJBRYUKU.js";import"./chunk-GLQLCBJS.js";import"./chunk-6W74CHNW.js";import{a as L}from"./chunk-UG2OF2EI.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-GJKYOEDE.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-Y4CYQV7G.js";import"./chunk-LLNPKE7H.js";import"./chunk-SHEUCITK.js";import"./chunk-IOYRRGK7.js";import"./chunk-GV7S5BAX.js";import"./chunk-SZDACK6O.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-B6OXEIOF.js";import"./chunk-4PQREYBU.js";import"./chunk-VWTBHLMX.js";import"./chunk-23SQSUBI.js";import{a as ht}from"./chunk-HK7TU5NX.js";import"./chunk-36AXN6ZB.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GSX4NK2N.js";import"./chunk-2G227TF3.js";import"./chunk-MYVHVJWZ.js";import"./chunk-AV7T3SYT.js";import"./chunk-Y5MFVVTM.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-IVCFXLAR.js";import{f as gt,g as ft}from"./chunk-FTZCNID3.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-NDPU6AX2.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-2PJKGZWP.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{b as Fe,c as Le,d as A,e as De}from"./chunk-JHCI6XCJ.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{ha as tt,ja as st,ka as ot,ma as nt}from"./chunk-IMLLHT7U.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.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-YFVSSYSL.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).