agentix-cli 0.131.0 → 0.132.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 (135) hide show
  1. package/dist/{App-WZ3HAKES.js → App-VPYWOTTH.js} +2 -2
  2. package/dist/{ChatApp-K4HDJL2S.js → ChatApp-SNED4KJB.js} +2 -2
  3. package/dist/{absorb-eval-ER27DHHK.js → absorb-eval-WGO4JWTO.js} +2 -2
  4. package/dist/{agent-AQSVISXX.js → agent-HXQYYLWZ.js} +2 -2
  5. package/dist/{board-dashboard-3AI2Z2SP.js → board-dashboard-44JPXA7J.js} +143 -81
  6. package/dist/board-dashboard-44JPXA7J.js.map +1 -0
  7. package/dist/{builtin-W6KNX7RS.js → builtin-YD7MC572.js} +2 -2
  8. package/dist/{chunk-CL33CRH5.js → chunk-3K35L73A.js} +3 -3
  9. package/dist/chunk-3K35L73A.js.map +1 -0
  10. package/dist/{chunk-L4ALHWII.js → chunk-3WYLK3SX.js} +2 -2
  11. package/dist/{chunk-L4ZS4HGJ.js → chunk-62NXS7PT.js} +264 -256
  12. package/dist/chunk-62NXS7PT.js.map +1 -0
  13. package/dist/{chunk-IA7INHXY.js → chunk-724IBN5Y.js} +2 -2
  14. package/dist/{chunk-YVR6652A.js → chunk-74LPAKQY.js} +2 -2
  15. package/dist/chunk-7D3RJSN4.js +156 -0
  16. package/dist/chunk-7D3RJSN4.js.map +1 -0
  17. package/dist/{chunk-WKQQIYOE.js → chunk-A6QJ4VFT.js} +2 -2
  18. package/dist/{chunk-2YB2G2BP.js → chunk-CM74OUXW.js} +2 -2
  19. package/dist/{chunk-2SXF66O6.js → chunk-EQ33PFXP.js} +3 -3
  20. package/dist/chunk-HF5EF335.js +8 -0
  21. package/dist/chunk-HF5EF335.js.map +1 -0
  22. package/dist/{chunk-APZIH3AY.js → chunk-JNKATLF7.js} +2 -2
  23. package/dist/{chunk-7UPFZJIT.js → chunk-JRVJXAVC.js} +2 -2
  24. package/dist/{chunk-YQRWUF4Y.js → chunk-KDQI5S7F.js} +2 -2
  25. package/dist/{chunk-L2WVQREN.js → chunk-KKQPV6SO.js} +2 -2
  26. package/dist/{chunk-ERNBJLIQ.js → chunk-KQH4LPYC.js} +2 -2
  27. package/dist/{chunk-KRK7OOTK.js → chunk-MDGYSHO5.js} +2 -2
  28. package/dist/{chunk-6O6NW3ZG.js → chunk-QNKSRROH.js} +2 -2
  29. package/dist/{chunk-GLQLCBJS.js → chunk-QSKG754X.js} +6 -3
  30. package/dist/chunk-QSKG754X.js.map +1 -0
  31. package/dist/{chunk-YPCZ5TNK.js → chunk-RH3J4LCP.js} +3 -3
  32. package/dist/{chunk-KIYV4ZHG.js → chunk-RYGVTAP4.js} +2 -2
  33. package/dist/{chunk-CBFBGN7J.js → chunk-S2RRPTS3.js} +5 -5
  34. package/dist/chunk-S2RRPTS3.js.map +1 -0
  35. package/dist/{chunk-E2VDBT3T.js → chunk-UDMI4TYM.js} +2 -2
  36. package/dist/{chunk-AKOXTIJS.js → chunk-VCQVF44A.js} +2 -2
  37. package/dist/{chunk-YA6E47BR.js → chunk-WWNZL7XB.js} +2 -2
  38. package/dist/{chunk-B2Q3PTPS.js → chunk-XWVBLISN.js} +2 -2
  39. package/dist/{chunk-AD4QZZVN.js → chunk-YXFTUOZR.js} +2 -2
  40. package/dist/{chunk-MFIM5Y3J.js → chunk-Z7RJ3K3J.js} +2 -2
  41. package/dist/{chunk-CSWGYSC4.js → chunk-ZG4G6BFP.js} +2 -2
  42. package/dist/cli.js +1 -1
  43. package/dist/{client-YIR3ELVN.js → client-TXZF32NO.js} +2 -2
  44. package/dist/{config-4DOJYA2K.js → config-ZIXIH23X.js} +2 -2
  45. package/dist/{config-mutate-KDRHKQE4.js → config-mutate-KDBXIN7R.js} +2 -2
  46. package/dist/config-mutator-HKFGPJMG.js +2 -0
  47. package/dist/{contributions-MTKXXLIP.js → contributions-FBVULRR4.js} +2 -2
  48. package/dist/{doctor-FJ5RCG4J.js → doctor-NBWYG743.js} +2 -2
  49. package/dist/{failure-candidates-JNGUVBDG.js → failure-candidates-XZSZP4HT.js} +2 -2
  50. package/dist/{follow-up-tool-SVZDSUIU.js → follow-up-tool-E5XKSPKA.js} +2 -2
  51. package/dist/{hub-CF4VFSRT.js → hub-3QTJ7E3O.js} +2 -2
  52. package/dist/index.d.ts +93 -3
  53. package/dist/index.js +1 -1
  54. package/dist/{program-ZPNEAACQ.js → program-SA5O6IQ3.js} +221 -213
  55. package/dist/program-SA5O6IQ3.js.map +1 -0
  56. package/dist/{promote-G6BOY7K5.js → promote-4XHYWHLA.js} +2 -2
  57. package/dist/{query-H24BI3BI.js → query-ZGD32CE2.js} +2 -2
  58. package/dist/{query-settings-IJB3QMDW.js → query-settings-BSDXFS3V.js} +2 -2
  59. package/dist/{registry-TAUHYJCK.js → registry-LM35AE2P.js} +2 -2
  60. package/dist/{request-planner-V3R5J3V4.js → request-planner-4BAAOUBH.js} +2 -2
  61. package/dist/{review-candidates-TC7RJB4W.js → review-candidates-TM53WR7G.js} +2 -2
  62. package/dist/{routing-XQD74ERK.js → routing-QLS6UMLM.js} +2 -2
  63. package/dist/schedule-tool-TTCWBAQ4.js +2 -0
  64. package/dist/{scheduler-WOOXIOER.js → scheduler-PVXLF2VJ.js} +2 -2
  65. package/dist/{seat-B75JIAS3.js → seat-OUUN3F45.js} +2 -2
  66. package/dist/{select-I6BSBQXP.js → select-D7UUSODY.js} +2 -2
  67. package/dist/{set-enabled-THNVITGU.js → set-enabled-FDNS6KW6.js} +2 -2
  68. package/dist/{tool-LFWTZHB7.js → tool-J5FM3OPM.js} +2 -2
  69. package/dist/{tool-CEBIS6GK.js → tool-SCBQYDI3.js} +2 -2
  70. package/dist/wiki-IGRRQL6H.js +2 -0
  71. package/package.json +1 -1
  72. package/dist/board-dashboard-3AI2Z2SP.js.map +0 -1
  73. package/dist/chunk-76Z4VHDX.js +0 -8
  74. package/dist/chunk-76Z4VHDX.js.map +0 -1
  75. package/dist/chunk-CBFBGN7J.js.map +0 -1
  76. package/dist/chunk-CL33CRH5.js.map +0 -1
  77. package/dist/chunk-GLQLCBJS.js.map +0 -1
  78. package/dist/chunk-L4ZS4HGJ.js.map +0 -1
  79. package/dist/chunk-VSL2SSBH.js +0 -156
  80. package/dist/chunk-VSL2SSBH.js.map +0 -1
  81. package/dist/config-mutator-4PPBACWU.js +0 -2
  82. package/dist/program-ZPNEAACQ.js.map +0 -1
  83. package/dist/schedule-tool-U6KLY5MT.js +0 -2
  84. package/dist/wiki-3ATPAHC2.js +0 -2
  85. /package/dist/{App-WZ3HAKES.js.map → App-VPYWOTTH.js.map} +0 -0
  86. /package/dist/{ChatApp-K4HDJL2S.js.map → ChatApp-SNED4KJB.js.map} +0 -0
  87. /package/dist/{absorb-eval-ER27DHHK.js.map → absorb-eval-WGO4JWTO.js.map} +0 -0
  88. /package/dist/{agent-AQSVISXX.js.map → agent-HXQYYLWZ.js.map} +0 -0
  89. /package/dist/{builtin-W6KNX7RS.js.map → builtin-YD7MC572.js.map} +0 -0
  90. /package/dist/{chunk-L4ALHWII.js.map → chunk-3WYLK3SX.js.map} +0 -0
  91. /package/dist/{chunk-IA7INHXY.js.map → chunk-724IBN5Y.js.map} +0 -0
  92. /package/dist/{chunk-YVR6652A.js.map → chunk-74LPAKQY.js.map} +0 -0
  93. /package/dist/{chunk-WKQQIYOE.js.map → chunk-A6QJ4VFT.js.map} +0 -0
  94. /package/dist/{chunk-2YB2G2BP.js.map → chunk-CM74OUXW.js.map} +0 -0
  95. /package/dist/{chunk-2SXF66O6.js.map → chunk-EQ33PFXP.js.map} +0 -0
  96. /package/dist/{chunk-APZIH3AY.js.map → chunk-JNKATLF7.js.map} +0 -0
  97. /package/dist/{chunk-7UPFZJIT.js.map → chunk-JRVJXAVC.js.map} +0 -0
  98. /package/dist/{chunk-YQRWUF4Y.js.map → chunk-KDQI5S7F.js.map} +0 -0
  99. /package/dist/{chunk-L2WVQREN.js.map → chunk-KKQPV6SO.js.map} +0 -0
  100. /package/dist/{chunk-ERNBJLIQ.js.map → chunk-KQH4LPYC.js.map} +0 -0
  101. /package/dist/{chunk-KRK7OOTK.js.map → chunk-MDGYSHO5.js.map} +0 -0
  102. /package/dist/{chunk-6O6NW3ZG.js.map → chunk-QNKSRROH.js.map} +0 -0
  103. /package/dist/{chunk-YPCZ5TNK.js.map → chunk-RH3J4LCP.js.map} +0 -0
  104. /package/dist/{chunk-KIYV4ZHG.js.map → chunk-RYGVTAP4.js.map} +0 -0
  105. /package/dist/{chunk-E2VDBT3T.js.map → chunk-UDMI4TYM.js.map} +0 -0
  106. /package/dist/{chunk-AKOXTIJS.js.map → chunk-VCQVF44A.js.map} +0 -0
  107. /package/dist/{chunk-YA6E47BR.js.map → chunk-WWNZL7XB.js.map} +0 -0
  108. /package/dist/{chunk-B2Q3PTPS.js.map → chunk-XWVBLISN.js.map} +0 -0
  109. /package/dist/{chunk-AD4QZZVN.js.map → chunk-YXFTUOZR.js.map} +0 -0
  110. /package/dist/{chunk-MFIM5Y3J.js.map → chunk-Z7RJ3K3J.js.map} +0 -0
  111. /package/dist/{chunk-CSWGYSC4.js.map → chunk-ZG4G6BFP.js.map} +0 -0
  112. /package/dist/{client-YIR3ELVN.js.map → client-TXZF32NO.js.map} +0 -0
  113. /package/dist/{config-4DOJYA2K.js.map → config-ZIXIH23X.js.map} +0 -0
  114. /package/dist/{config-mutate-KDRHKQE4.js.map → config-mutate-KDBXIN7R.js.map} +0 -0
  115. /package/dist/{config-mutator-4PPBACWU.js.map → config-mutator-HKFGPJMG.js.map} +0 -0
  116. /package/dist/{contributions-MTKXXLIP.js.map → contributions-FBVULRR4.js.map} +0 -0
  117. /package/dist/{doctor-FJ5RCG4J.js.map → doctor-NBWYG743.js.map} +0 -0
  118. /package/dist/{failure-candidates-JNGUVBDG.js.map → failure-candidates-XZSZP4HT.js.map} +0 -0
  119. /package/dist/{follow-up-tool-SVZDSUIU.js.map → follow-up-tool-E5XKSPKA.js.map} +0 -0
  120. /package/dist/{hub-CF4VFSRT.js.map → hub-3QTJ7E3O.js.map} +0 -0
  121. /package/dist/{promote-G6BOY7K5.js.map → promote-4XHYWHLA.js.map} +0 -0
  122. /package/dist/{query-H24BI3BI.js.map → query-ZGD32CE2.js.map} +0 -0
  123. /package/dist/{query-settings-IJB3QMDW.js.map → query-settings-BSDXFS3V.js.map} +0 -0
  124. /package/dist/{registry-TAUHYJCK.js.map → registry-LM35AE2P.js.map} +0 -0
  125. /package/dist/{request-planner-V3R5J3V4.js.map → request-planner-4BAAOUBH.js.map} +0 -0
  126. /package/dist/{review-candidates-TC7RJB4W.js.map → review-candidates-TM53WR7G.js.map} +0 -0
  127. /package/dist/{routing-XQD74ERK.js.map → routing-QLS6UMLM.js.map} +0 -0
  128. /package/dist/{schedule-tool-U6KLY5MT.js.map → schedule-tool-TTCWBAQ4.js.map} +0 -0
  129. /package/dist/{scheduler-WOOXIOER.js.map → scheduler-PVXLF2VJ.js.map} +0 -0
  130. /package/dist/{seat-B75JIAS3.js.map → seat-OUUN3F45.js.map} +0 -0
  131. /package/dist/{select-I6BSBQXP.js.map → select-D7UUSODY.js.map} +0 -0
  132. /package/dist/{set-enabled-THNVITGU.js.map → set-enabled-FDNS6KW6.js.map} +0 -0
  133. /package/dist/{tool-LFWTZHB7.js.map → tool-J5FM3OPM.js.map} +0 -0
  134. /package/dist/{tool-CEBIS6GK.js.map → tool-SCBQYDI3.js.map} +0 -0
  135. /package/dist/{wiki-3ATPAHC2.js.map → wiki-IGRRQL6H.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -5526,6 +5526,34 @@ declare const daemonConfigSchema: z.ZodObject<{
5526
5526
  windowMinutes?: number | undefined;
5527
5527
  } | undefined;
5528
5528
  }>>;
5529
+ /** Stop and resume signals (agents/signals, #857): stop a running task
5530
+ * cleanly, keep the agent's resume plan, resume it later. The owner may
5531
+ * always signal; an agent may signal tasks it dispatched, or any task
5532
+ * when listed in allowAgents; a mesh peer only when listed in allowPeers. */
5533
+ signals: z.ZodDefault<z.ZodObject<{
5534
+ enabled: z.ZodDefault<z.ZodBoolean>;
5535
+ /** How long the stopped agent gets to write its resume plan. Past it,
5536
+ * the wind-down is stopped and a plan is built from the trace. */
5537
+ windDownSeconds: z.ZodDefault<z.ZodNumber>;
5538
+ /** Agents that may stop or resume any agent's task here ("*" for all). */
5539
+ allowAgents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
5540
+ /** Mesh peers (node names) whose stop and resume signals are accepted. */
5541
+ allowPeers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
5542
+ /** Loop brake: most signals one root id may carry in a day. */
5543
+ maxPerRoot: z.ZodDefault<z.ZodNumber>;
5544
+ }, "strip", z.ZodTypeAny, {
5545
+ enabled: boolean;
5546
+ windDownSeconds: number;
5547
+ allowAgents: string[];
5548
+ allowPeers: string[];
5549
+ maxPerRoot: number;
5550
+ }, {
5551
+ enabled?: boolean | undefined;
5552
+ windDownSeconds?: number | undefined;
5553
+ allowAgents?: string[] | undefined;
5554
+ allowPeers?: string[] | undefined;
5555
+ maxPerRoot?: number | undefined;
5556
+ }>>;
5529
5557
  /** Open requests (src/requests, #356): what a person asked an agent for
5530
5558
  * is recorded and followed until it is done, declined or dropped. Off
5531
5559
  * by default. */
@@ -8520,6 +8548,13 @@ declare const daemonConfigSchema: z.ZodObject<{
8520
8548
  };
8521
8549
  drainTimeoutSeconds?: number | undefined;
8522
8550
  };
8551
+ signals: {
8552
+ enabled: boolean;
8553
+ windDownSeconds: number;
8554
+ allowAgents: string[];
8555
+ allowPeers: string[];
8556
+ maxPerRoot: number;
8557
+ };
8523
8558
  people: {
8524
8559
  agents: string[];
8525
8560
  id: string;
@@ -9525,6 +9560,13 @@ declare const daemonConfigSchema: z.ZodObject<{
9525
9560
  } | undefined;
9526
9561
  drainTimeoutSeconds?: number | undefined;
9527
9562
  } | undefined;
9563
+ signals?: {
9564
+ enabled?: boolean | undefined;
9565
+ windDownSeconds?: number | undefined;
9566
+ allowAgents?: string[] | undefined;
9567
+ allowPeers?: string[] | undefined;
9568
+ maxPerRoot?: number | undefined;
9569
+ } | undefined;
9528
9570
  people?: {
9529
9571
  id: string;
9530
9572
  name: string;
@@ -10202,6 +10244,8 @@ interface AgentXEvents {
10202
10244
  /** A daemon shutdown stopped the run. Its trace stays in flight so the
10203
10245
  * next boot can resume it. */
10204
10246
  interrupted?: boolean;
10247
+ /** Ended by a stop signal (agents/signals, #857): status `stopped`. */
10248
+ stopped?: boolean;
10205
10249
  inputTokens?: number;
10206
10250
  outputTokens?: number;
10207
10251
  cacheReadTokens?: number;
@@ -10435,6 +10479,8 @@ declare class AgentXDaemon {
10435
10479
  private landscape;
10436
10480
  private heartbeat;
10437
10481
  private stopEventWaker?;
10482
+ /** Stop and resume signals (agents/signals, #857). */
10483
+ private signals;
10438
10484
  private business?;
10439
10485
  private httpServer?;
10440
10486
  private attachSweep?;
@@ -10525,6 +10571,12 @@ declare class AgentXDaemon {
10525
10571
  private bootTimes;
10526
10572
  /** Every start on record with who stopped the one before (boot-record.ts). */
10527
10573
  private bootLog;
10574
+ /** The resumers that re-enter a run where it came from: used by the boot
10575
+ * resume pass and by resume signals (agents/signals, #857). */
10576
+ private resumeCoordinatorInstance?;
10577
+ private resumeCoordinator;
10578
+ /** Stop a running task with a resume plan, and resume it later (#857). */
10579
+ private createSignalService;
10528
10580
  /** Resume, report or skip each run the last restart cut off. Never throws. */
10529
10581
  private resumeInterruptedRuns;
10530
10582
  /**
@@ -11024,7 +11076,9 @@ interface FriendlyError {
11024
11076
  /** Optional next step the user can take. */
11025
11077
  fix?: string;
11026
11078
  /** Machine-readable error category for routing / retries. */
11027
- kind: "out_of_credits" | "overage_disabled" | "usage_cap" | "auth" | "permission" | "rate_limit" | "overloaded" | "context_too_large" | "invalid_request" | "upstream_api" | "timeout" | "cancelled" | "interrupted" | "unknown";
11079
+ kind: "out_of_credits" | "overage_disabled" | "usage_cap" | "auth" | "permission" | "rate_limit" | "overloaded" | "context_too_large" | "invalid_request" | "upstream_api" | "timeout" | "cancelled" | "interrupted"
11080
+ /** Ended by a stop signal; its resume plan is saved (#857). */
11081
+ | "stopped" | "unknown";
11028
11082
  /** Whether this error is transient — a retry has a reasonable chance of succeeding. */
11029
11083
  retryable: boolean;
11030
11084
  /** Source error text retained for logs / debugging. */
@@ -11119,10 +11173,12 @@ interface IncomingMessage {
11119
11173
  runbookFiles?: string[];
11120
11174
  /** Set when this message re-runs one a restart cut off (agents/resume):
11121
11175
  * the note for the agent, the attempt number, and the run it continues. */
11176
+ /** `rootId`: a task resumed after a stop signal keeps its root (#857). */
11122
11177
  resume?: {
11123
11178
  note: string;
11124
11179
  attempt: number;
11125
11180
  resumedFrom: string;
11181
+ rootId?: string;
11126
11182
  };
11127
11183
  }
11128
11184
  interface OutgoingMessage {
@@ -13231,8 +13287,9 @@ interface TaskRecord {
13231
13287
  durationMs: number;
13232
13288
  ok: boolean;
13233
13289
  error?: string;
13234
- /** Set when a deadline ended the run: `timeout`, with the step it was in. */
13235
- status?: "timeout";
13290
+ /** Set when a deadline ended the run: `timeout`, with the step it was in;
13291
+ * `stopped` when a stop signal ended it (#857). */
13292
+ status?: "timeout" | "stopped";
13236
13293
  step?: string;
13237
13294
  /** Final agent text (one-shot, may be empty if streaming captured it). */
13238
13295
  responseText: string;
@@ -13311,6 +13368,10 @@ declare class AgentRegistry {
13311
13368
  private taskAborts;
13312
13369
  /** Runs a daemon shutdown stopped, with the reason each one reports. */
13313
13370
  private interruptedRuns;
13371
+ /** Runs a stop signal ended, with the reason each one reports (#857). */
13372
+ private stoppedRuns;
13373
+ /** Callers waiting for a run to let go of its slot (whenRunEnds). */
13374
+ private runEndWaiters;
13314
13375
  /** Claude cloud sessions this node launched (#622), by issue. Created on
13315
13376
  * first use so a fleet with the setting off never touches the file. */
13316
13377
  private cloudSessions?;
@@ -13585,6 +13646,34 @@ declare class AgentRegistry {
13585
13646
  channel: string;
13586
13647
  chatId: string;
13587
13648
  } | null;
13649
+ /**
13650
+ * Stop signal (#857). Aborts the run like an operator stop, but it ends
13651
+ * with status `stopped` and errorKind "stopped" instead of cancelled, so
13652
+ * nothing reports it as a failure. False when no live run matches.
13653
+ */
13654
+ stopRunningTask(taskId: string, reason: string): boolean;
13655
+ /** Resolves once the run `taskId` has let go of its slot (at once when it
13656
+ * is not running), or after `timeoutMs`. */
13657
+ whenRunEnds(taskId: string, timeoutMs: number): Promise<void>;
13658
+ /** A running task a stop signal can address: by its id, or the only run
13659
+ * of `agentId` on a chat. Null when none (or several) match. */
13660
+ signalTarget(by: {
13661
+ taskId?: string;
13662
+ agentId?: string;
13663
+ channel?: string;
13664
+ chatId?: string;
13665
+ }): {
13666
+ taskId: string;
13667
+ traceId?: string;
13668
+ agentId: string;
13669
+ channel: string;
13670
+ chatId: string;
13671
+ sender?: string;
13672
+ rootId?: string;
13673
+ originalMessage: string;
13674
+ origin: RunOrigin | null;
13675
+ workflowRunId?: string;
13676
+ } | null;
13588
13677
  /**
13589
13678
  * Daemon shutdown: stop every run still going once the drain limit is
13590
13679
  * spent. Each one ends as `interrupted` with `reason` rather than as a
@@ -14566,6 +14655,7 @@ interface Resumer {
14566
14655
  run: InterruptedRun;
14567
14656
  note: string;
14568
14657
  attempt: number;
14658
+ rootId?: string;
14569
14659
  }): Promise<void>;
14570
14660
  /** One line to the chat the run came from. */
14571
14661
  tell?(origin: RunOrigin, text: string): Promise<void>;
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,la as Tt,ma as Mt}from"./chunk-L4ZS4HGJ.js";import"./chunk-CL33CRH5.js";import"./chunk-GTJIKXDB.js";import"./chunk-E2VDBT3T.js";import"./chunk-S2GAEH2F.js";import"./chunk-7LN4VKDU.js";import"./chunk-IMLAPB7G.js";import"./chunk-ZVP6GB4G.js";import"./chunk-XGOBZCYC.js";import"./chunk-WCXXXAHV.js";import"./chunk-LQE73AZR.js";import"./chunk-2D3RYIDU.js";import"./chunk-MRIVENBY.js";import"./chunk-WEPON4FP.js";import"./chunk-AKLZ4YO2.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-L4ALHWII.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-VSL2SSBH.js";import"./chunk-YPCZ5TNK.js";import"./chunk-GLQLCBJS.js";import"./chunk-MEFPXHQJ.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-B2Q3PTPS.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-6O6NW3ZG.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-KRK7OOTK.js";import"./chunk-YQRWUF4Y.js";import"./chunk-3UOTLMXD.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-VWTBHLMX.js";import"./chunk-AKOXTIJS.js";import{a as ht}from"./chunk-YVR6652A.js";import"./chunk-JP5OAMWQ.js";import"./chunk-4VVHGR7H.js";import"./chunk-2SXF66O6.js";import"./chunk-2ZDV3DCT.js";import{f as gt,g as ft}from"./chunk-CSWGYSC4.js";import"./chunk-WPNRDEHW.js";import"./chunk-7VLLZQ3N.js";import"./chunk-BIJHMWXK.js";import"./chunk-36AXN6ZB.js";import"./chunk-ILEC3IAV.js";import"./chunk-ERNBJLIQ.js";import{j as it,k as rt,l as at}from"./chunk-IA7INHXY.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-MYVHVJWZ.js";import"./chunk-6TURWSMN.js";import"./chunk-AV7T3SYT.js";import"./chunk-Y5MFVVTM.js";import"./chunk-QD6IICK7.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{ma as tt,oa as st,pa as ot,wa as nt}from"./chunk-CBFBGN7J.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,la as Tt,ma as Mt}from"./chunk-62NXS7PT.js";import"./chunk-3K35L73A.js";import"./chunk-GTJIKXDB.js";import"./chunk-UDMI4TYM.js";import"./chunk-S2GAEH2F.js";import"./chunk-7LN4VKDU.js";import"./chunk-IMLAPB7G.js";import"./chunk-ZVP6GB4G.js";import"./chunk-XGOBZCYC.js";import"./chunk-WCXXXAHV.js";import"./chunk-LQE73AZR.js";import"./chunk-2D3RYIDU.js";import"./chunk-MRIVENBY.js";import"./chunk-WEPON4FP.js";import"./chunk-AKLZ4YO2.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-3WYLK3SX.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-7D3RJSN4.js";import"./chunk-RH3J4LCP.js";import"./chunk-QSKG754X.js";import"./chunk-MEFPXHQJ.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-XWVBLISN.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-QNKSRROH.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-MDGYSHO5.js";import"./chunk-KDQI5S7F.js";import"./chunk-3UOTLMXD.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-HF5EF335.js";import"./chunk-W4YR2RO2.js";import"./chunk-VWTBHLMX.js";import"./chunk-VCQVF44A.js";import{a as ht}from"./chunk-74LPAKQY.js";import"./chunk-JP5OAMWQ.js";import"./chunk-4VVHGR7H.js";import"./chunk-EQ33PFXP.js";import"./chunk-2ZDV3DCT.js";import{f as gt,g as ft}from"./chunk-ZG4G6BFP.js";import"./chunk-WPNRDEHW.js";import"./chunk-7VLLZQ3N.js";import"./chunk-BIJHMWXK.js";import"./chunk-36AXN6ZB.js";import"./chunk-ILEC3IAV.js";import"./chunk-KQH4LPYC.js";import{j as it,k as rt,l as at}from"./chunk-724IBN5Y.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-MYVHVJWZ.js";import"./chunk-6TURWSMN.js";import"./chunk-AV7T3SYT.js";import"./chunk-Y5MFVVTM.js";import"./chunk-QD6IICK7.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{ma as tt,oa as st,pa as ot,wa as nt}from"./chunk-S2RRPTS3.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).