nexus-agents 2.80.0 → 2.80.2

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 (132) hide show
  1. package/dist/{child-mcp-config-SM5I7USN.js → child-mcp-config-UG4CH654.js} +3 -3
  2. package/dist/{chunk-EVZ7YR7H.js → chunk-2ZRTLW2G.js} +3 -3
  3. package/dist/{chunk-VS4KB3AX.js → chunk-376MBRLD.js} +8 -8
  4. package/dist/{chunk-6CJIKX6I.js → chunk-3QRO77LO.js} +44 -16
  5. package/dist/{chunk-6CJIKX6I.js.map → chunk-3QRO77LO.js.map} +1 -1
  6. package/dist/{chunk-YMT6H2HQ.js → chunk-4MHE5UVO.js} +10 -6
  7. package/dist/{chunk-YMT6H2HQ.js.map → chunk-4MHE5UVO.js.map} +1 -1
  8. package/dist/{chunk-ZU2Q3DWE.js → chunk-5FUVEIJC.js} +100 -7
  9. package/dist/chunk-5FUVEIJC.js.map +1 -0
  10. package/dist/{chunk-EKRMWVAH.js → chunk-5SBD55T7.js} +4 -4
  11. package/dist/{chunk-UGXR4PAY.js → chunk-7BSVRW2O.js} +5 -5
  12. package/dist/{chunk-CTSESEFA.js → chunk-BQ55PBN4.js} +2 -2
  13. package/dist/{chunk-SHVGZK4A.js → chunk-C3BOZZQC.js} +3 -3
  14. package/dist/{chunk-AYZ6P7CK.js → chunk-FBW6XKZJ.js} +2 -2
  15. package/dist/{chunk-J5XEJHIQ.js → chunk-FQKQUJBU.js} +3 -3
  16. package/dist/{chunk-JLWKHYIU.js → chunk-GHWTMPPL.js} +2 -2
  17. package/dist/{chunk-FJHZW7CR.js → chunk-H4XSKDI6.js} +2 -2
  18. package/dist/{chunk-BSIGP5XF.js → chunk-HDFUSBU3.js} +2 -2
  19. package/dist/{chunk-UVALD724.js → chunk-HQR27JGL.js} +2 -2
  20. package/dist/{chunk-FAJAWO42.js → chunk-HXXRFTKP.js} +3 -3
  21. package/dist/{chunk-YGKPWUJ6.js → chunk-HYNFZQU4.js} +2 -2
  22. package/dist/{chunk-JXDDSNEK.js → chunk-JECCDZ2S.js} +2 -2
  23. package/dist/{chunk-OO6MTUDS.js → chunk-KN7JWET4.js} +3 -3
  24. package/dist/{chunk-2DBPZQLO.js → chunk-LUVQUKW5.js} +2 -2
  25. package/dist/{chunk-QVHXEQFM.js → chunk-OO662XRQ.js} +3 -3
  26. package/dist/{chunk-UP2VWCW5.js → chunk-PR4QN5HX.js} +12 -7
  27. package/dist/{chunk-GNRANMQ3.js → chunk-RCNNN4E2.js} +947 -880
  28. package/dist/chunk-RCNNN4E2.js.map +1 -0
  29. package/dist/{chunk-HBKZ2DJK.js → chunk-RCWWUZHA.js} +2 -2
  30. package/dist/{chunk-SJUSQGKH.js → chunk-RFUBLOZQ.js} +7 -7
  31. package/dist/{chunk-RIUUFBX4.js → chunk-TE26NHNW.js} +2 -2
  32. package/dist/{chunk-Q2U6SFN2.js → chunk-TLE2YE6G.js} +2 -2
  33. package/dist/{chunk-4XGKCVJL.js → chunk-VQBVL3UD.js} +2 -2
  34. package/dist/{cli-circuit-breaker-JGX54DAD.js → cli-circuit-breaker-MAN2V7DA.js} +5 -5
  35. package/dist/cli.js +92 -83
  36. package/dist/cli.js.map +1 -1
  37. package/dist/{codebase-search-CZUA37RU.js → codebase-search-PIBRTGBE.js} +2 -2
  38. package/dist/{composite-router-UYFYSMBT.js → composite-router-YCIEYOZC.js} +3 -3
  39. package/dist/{consensus-vote-BZ6JSN67.js → consensus-vote-TGTGZSPS.js} +12 -12
  40. package/dist/{context-retriever-G23VVJ5S.js → context-retriever-FKJKKPAA.js} +6 -6
  41. package/dist/dist-APHOQ26Z.js +45959 -0
  42. package/dist/dist-APHOQ26Z.js.map +1 -0
  43. package/dist/{dist-NIXVXYIH.js → dist-OFXI4GYH.js} +2 -2
  44. package/dist/{doctor-deep-OF2LXZ6A.js → doctor-deep-2KT4LZA6.js} +4 -4
  45. package/dist/expert-bridge-6NA7MK7T.js +11 -0
  46. package/dist/{expert-config-HN7U7X2K.js → expert-config-OIIUMJFB.js} +2 -2
  47. package/dist/factory-IIPDY7QB.js +14 -0
  48. package/dist/{factory-I54TX7OY.js → factory-VXHVQXKR.js} +5 -5
  49. package/dist/index.d.ts +68 -5
  50. package/dist/index.js +50 -31
  51. package/dist/index.js.map +1 -1
  52. package/dist/{init-opencode-FE7HVWQL.js → init-opencode-26YCTSR4.js} +6 -6
  53. package/dist/issue-triage-NGWFHIKY.js +15 -0
  54. package/dist/{learning-persistence-TGOBRUUU.js → learning-persistence-Q63HZ2EB.js} +2 -2
  55. package/dist/{outcome-store-adapter-QRFJJIKB.js → outcome-store-adapter-D3UDQFNQ.js} +2 -2
  56. package/dist/{pr-reviewer-helpers-L4L324FQ.js → pr-reviewer-helpers-WYPUYQ2U.js} +2 -2
  57. package/dist/{registry-command-NZLX7ZFV.js → registry-command-AKJBYP5N.js} +3 -3
  58. package/dist/{repo-analyze-GBQT4LAK.js → repo-analyze-D2OY2QSR.js} +2 -2
  59. package/dist/{repo-security-plan-74GJWJSV.js → repo-security-plan-ZGJN6QRW.js} +4 -4
  60. package/dist/{research-helpers-synthesize-LFPEXRIV.js → research-helpers-synthesize-ZWBBFT2O.js} +4 -4
  61. package/dist/{routing-memory-Y2LSEQVS.js → routing-memory-Y5UBVQGM.js} +3 -3
  62. package/dist/{session-memory-RCNQJDJR.js → session-memory-OOBM2GQ7.js} +4 -4
  63. package/dist/{setup-command-ZPLPOJF2.js → setup-command-VJLR47CI.js} +11 -11
  64. package/dist/setup-config-F7NK2KVC.js +10 -0
  65. package/dist/{setup-custom-api-XTJ6YZM6.js → setup-custom-api-53SYDF4L.js} +5 -5
  66. package/dist/{shared-memory-AEO2HJLC.js → shared-memory-CM6T2MYE.js} +2 -2
  67. package/dist/{symbol-extractor-UEBANFSN.js → symbol-extractor-WYXPJH65.js} +2 -2
  68. package/dist/{tool-memory-COZK6SR7.js → tool-memory-RZ7NJCPV.js} +5 -5
  69. package/dist/{weather-report-O4XOYGPK.js → weather-report-VOSP7KKV.js} +3 -3
  70. package/package.json +16 -16
  71. package/dist/chunk-GNRANMQ3.js.map +0 -1
  72. package/dist/chunk-ZU2Q3DWE.js.map +0 -1
  73. package/dist/dist-RLMRWMYO.js +0 -49531
  74. package/dist/dist-RLMRWMYO.js.map +0 -1
  75. package/dist/expert-bridge-6ZLD2NWD.js +0 -11
  76. package/dist/factory-UHDCLEUE.js +0 -14
  77. package/dist/issue-triage-7NR5NQUY.js +0 -15
  78. package/dist/setup-config-F7VRWXY3.js +0 -10
  79. /package/dist/{child-mcp-config-SM5I7USN.js.map → child-mcp-config-UG4CH654.js.map} +0 -0
  80. /package/dist/{chunk-EVZ7YR7H.js.map → chunk-2ZRTLW2G.js.map} +0 -0
  81. /package/dist/{chunk-VS4KB3AX.js.map → chunk-376MBRLD.js.map} +0 -0
  82. /package/dist/{chunk-EKRMWVAH.js.map → chunk-5SBD55T7.js.map} +0 -0
  83. /package/dist/{chunk-UGXR4PAY.js.map → chunk-7BSVRW2O.js.map} +0 -0
  84. /package/dist/{chunk-CTSESEFA.js.map → chunk-BQ55PBN4.js.map} +0 -0
  85. /package/dist/{chunk-SHVGZK4A.js.map → chunk-C3BOZZQC.js.map} +0 -0
  86. /package/dist/{chunk-AYZ6P7CK.js.map → chunk-FBW6XKZJ.js.map} +0 -0
  87. /package/dist/{chunk-J5XEJHIQ.js.map → chunk-FQKQUJBU.js.map} +0 -0
  88. /package/dist/{chunk-JLWKHYIU.js.map → chunk-GHWTMPPL.js.map} +0 -0
  89. /package/dist/{chunk-FJHZW7CR.js.map → chunk-H4XSKDI6.js.map} +0 -0
  90. /package/dist/{chunk-BSIGP5XF.js.map → chunk-HDFUSBU3.js.map} +0 -0
  91. /package/dist/{chunk-UVALD724.js.map → chunk-HQR27JGL.js.map} +0 -0
  92. /package/dist/{chunk-FAJAWO42.js.map → chunk-HXXRFTKP.js.map} +0 -0
  93. /package/dist/{chunk-YGKPWUJ6.js.map → chunk-HYNFZQU4.js.map} +0 -0
  94. /package/dist/{chunk-JXDDSNEK.js.map → chunk-JECCDZ2S.js.map} +0 -0
  95. /package/dist/{chunk-OO6MTUDS.js.map → chunk-KN7JWET4.js.map} +0 -0
  96. /package/dist/{chunk-2DBPZQLO.js.map → chunk-LUVQUKW5.js.map} +0 -0
  97. /package/dist/{chunk-QVHXEQFM.js.map → chunk-OO662XRQ.js.map} +0 -0
  98. /package/dist/{chunk-UP2VWCW5.js.map → chunk-PR4QN5HX.js.map} +0 -0
  99. /package/dist/{chunk-HBKZ2DJK.js.map → chunk-RCWWUZHA.js.map} +0 -0
  100. /package/dist/{chunk-SJUSQGKH.js.map → chunk-RFUBLOZQ.js.map} +0 -0
  101. /package/dist/{chunk-RIUUFBX4.js.map → chunk-TE26NHNW.js.map} +0 -0
  102. /package/dist/{chunk-Q2U6SFN2.js.map → chunk-TLE2YE6G.js.map} +0 -0
  103. /package/dist/{chunk-4XGKCVJL.js.map → chunk-VQBVL3UD.js.map} +0 -0
  104. /package/dist/{cli-circuit-breaker-JGX54DAD.js.map → cli-circuit-breaker-MAN2V7DA.js.map} +0 -0
  105. /package/dist/{codebase-search-CZUA37RU.js.map → codebase-search-PIBRTGBE.js.map} +0 -0
  106. /package/dist/{composite-router-UYFYSMBT.js.map → composite-router-YCIEYOZC.js.map} +0 -0
  107. /package/dist/{consensus-vote-BZ6JSN67.js.map → consensus-vote-TGTGZSPS.js.map} +0 -0
  108. /package/dist/{context-retriever-G23VVJ5S.js.map → context-retriever-FKJKKPAA.js.map} +0 -0
  109. /package/dist/{dist-NIXVXYIH.js.map → dist-OFXI4GYH.js.map} +0 -0
  110. /package/dist/{doctor-deep-OF2LXZ6A.js.map → doctor-deep-2KT4LZA6.js.map} +0 -0
  111. /package/dist/{expert-bridge-6ZLD2NWD.js.map → expert-bridge-6NA7MK7T.js.map} +0 -0
  112. /package/dist/{expert-config-HN7U7X2K.js.map → expert-config-OIIUMJFB.js.map} +0 -0
  113. /package/dist/{factory-I54TX7OY.js.map → factory-IIPDY7QB.js.map} +0 -0
  114. /package/dist/{factory-UHDCLEUE.js.map → factory-VXHVQXKR.js.map} +0 -0
  115. /package/dist/{init-opencode-FE7HVWQL.js.map → init-opencode-26YCTSR4.js.map} +0 -0
  116. /package/dist/{issue-triage-7NR5NQUY.js.map → issue-triage-NGWFHIKY.js.map} +0 -0
  117. /package/dist/{learning-persistence-TGOBRUUU.js.map → learning-persistence-Q63HZ2EB.js.map} +0 -0
  118. /package/dist/{outcome-store-adapter-QRFJJIKB.js.map → outcome-store-adapter-D3UDQFNQ.js.map} +0 -0
  119. /package/dist/{pr-reviewer-helpers-L4L324FQ.js.map → pr-reviewer-helpers-WYPUYQ2U.js.map} +0 -0
  120. /package/dist/{registry-command-NZLX7ZFV.js.map → registry-command-AKJBYP5N.js.map} +0 -0
  121. /package/dist/{repo-analyze-GBQT4LAK.js.map → repo-analyze-D2OY2QSR.js.map} +0 -0
  122. /package/dist/{repo-security-plan-74GJWJSV.js.map → repo-security-plan-ZGJN6QRW.js.map} +0 -0
  123. /package/dist/{research-helpers-synthesize-LFPEXRIV.js.map → research-helpers-synthesize-ZWBBFT2O.js.map} +0 -0
  124. /package/dist/{routing-memory-Y2LSEQVS.js.map → routing-memory-Y5UBVQGM.js.map} +0 -0
  125. /package/dist/{session-memory-RCNQJDJR.js.map → session-memory-OOBM2GQ7.js.map} +0 -0
  126. /package/dist/{setup-command-ZPLPOJF2.js.map → setup-command-VJLR47CI.js.map} +0 -0
  127. /package/dist/{setup-config-F7VRWXY3.js.map → setup-config-F7NK2KVC.js.map} +0 -0
  128. /package/dist/{setup-custom-api-XTJ6YZM6.js.map → setup-custom-api-53SYDF4L.js.map} +0 -0
  129. /package/dist/{shared-memory-AEO2HJLC.js.map → shared-memory-CM6T2MYE.js.map} +0 -0
  130. /package/dist/{symbol-extractor-UEBANFSN.js.map → symbol-extractor-WYXPJH65.js.map} +0 -0
  131. /package/dist/{tool-memory-COZK6SR7.js.map → tool-memory-RZ7NJCPV.js.map} +0 -0
  132. /package/dist/{weather-report-O4XOYGPK.js.map → weather-report-VOSP7KKV.js.map} +0 -0
@@ -18,7 +18,7 @@ import {
18
18
  setMemoryRegistry,
19
19
  subscribeToMemoryEvents
20
20
  } from "./chunk-PQHVC4BD.js";
21
- import "./chunk-UP2VWCW5.js";
21
+ import "./chunk-PR4QN5HX.js";
22
22
  export {
23
23
  InMemoryBackend,
24
24
  MemoryRegistry,
@@ -39,4 +39,4 @@ export {
39
39
  setMemoryRegistry,
40
40
  subscribeToMemoryEvents
41
41
  };
42
- //# sourceMappingURL=dist-NIXVXYIH.js.map
42
+ //# sourceMappingURL=dist-OFXI4GYH.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  formatDeepDiagnostics,
3
3
  runDeepDiagnostics
4
- } from "./chunk-4XGKCVJL.js";
5
- import "./chunk-YMT6H2HQ.js";
4
+ } from "./chunk-VQBVL3UD.js";
5
+ import "./chunk-4MHE5UVO.js";
6
6
  import "./chunk-2JQXC3CK.js";
7
- import "./chunk-UP2VWCW5.js";
7
+ import "./chunk-PR4QN5HX.js";
8
8
  export {
9
9
  formatDeepDiagnostics,
10
10
  runDeepDiagnostics
11
11
  };
12
- //# sourceMappingURL=doctor-deep-OF2LXZ6A.js.map
12
+ //# sourceMappingURL=doctor-deep-2KT4LZA6.js.map
@@ -0,0 +1,11 @@
1
+ import {
2
+ executeExpert
3
+ } from "./chunk-376MBRLD.js";
4
+ import "./chunk-TLE2YE6G.js";
5
+ import "./chunk-4MHE5UVO.js";
6
+ import "./chunk-2JQXC3CK.js";
7
+ import "./chunk-PR4QN5HX.js";
8
+ export {
9
+ executeExpert
10
+ };
11
+ //# sourceMappingURL=expert-bridge-6NA7MK7T.js.map
@@ -8,7 +8,7 @@ import {
8
8
  safeValidateExpertConfig,
9
9
  validateExpertConfig
10
10
  } from "./chunk-ZM4O442V.js";
11
- import "./chunk-UP2VWCW5.js";
11
+ import "./chunk-PR4QN5HX.js";
12
12
  export {
13
13
  BUILT_IN_EXPERTS,
14
14
  BuiltInExpertTypeSchema,
@@ -19,4 +19,4 @@ export {
19
19
  safeValidateExpertConfig,
20
20
  validateExpertConfig
21
21
  };
22
- //# sourceMappingURL=expert-config-HN7U7X2K.js.map
22
+ //# sourceMappingURL=expert-config-OIIUMJFB.js.map
@@ -0,0 +1,14 @@
1
+ import {
2
+ createGitHubProvider,
3
+ createScmProvider
4
+ } from "./chunk-5SBD55T7.js";
5
+ import "./chunk-BQ55PBN4.js";
6
+ import "./chunk-HQR27JGL.js";
7
+ import "./chunk-4MHE5UVO.js";
8
+ import "./chunk-2JQXC3CK.js";
9
+ import "./chunk-PR4QN5HX.js";
10
+ export {
11
+ createGitHubProvider,
12
+ createScmProvider
13
+ };
14
+ //# sourceMappingURL=factory-IIPDY7QB.js.map
@@ -3,15 +3,15 @@ import {
3
3
  createCliAdapter,
4
4
  getAvailableClis,
5
5
  isCliAvailable
6
- } from "./chunk-ZU2Q3DWE.js";
7
- import "./chunk-JXDDSNEK.js";
8
- import "./chunk-YMT6H2HQ.js";
6
+ } from "./chunk-5FUVEIJC.js";
7
+ import "./chunk-JECCDZ2S.js";
8
+ import "./chunk-4MHE5UVO.js";
9
9
  import "./chunk-2JQXC3CK.js";
10
- import "./chunk-UP2VWCW5.js";
10
+ import "./chunk-PR4QN5HX.js";
11
11
  export {
12
12
  createAllAdapters,
13
13
  createCliAdapter,
14
14
  getAvailableClis,
15
15
  isCliAvailable
16
16
  };
17
- //# sourceMappingURL=factory-I54TX7OY.js.map
17
+ //# sourceMappingURL=factory-VXHVQXKR.js.map
package/dist/index.d.ts CHANGED
@@ -13978,6 +13978,14 @@ declare class AgenticAdapter implements IAgenticAdapter {
13978
13978
  * to record everything and let the next turn be the budget breaker).
13979
13979
  */
13980
13980
  private processToolCallsParallel;
13981
+ /**
13982
+ * Records one settled parallel-tool outcome into history. Mutates
13983
+ * `state.turns` / `toolResultBlocks` in place and returns `true` when
13984
+ * the outcome signals a tool error (the caller stops *after* draining
13985
+ * every outcome — #2864). Extracted from `processToolCallsParallel`
13986
+ * to keep that method's cyclomatic complexity under the gate.
13987
+ */
13988
+ private drainParallelOutcome;
13981
13989
  /**
13982
13990
  * Per-call wrapper used by parallel execution. Returns a captured
13983
13991
  * outcome (turn + result-block, OR turn + tool-error flag) without
@@ -21620,6 +21628,13 @@ interface ProposalState {
21620
21628
  timeoutId?: ReturnType<typeof setTimeout>;
21621
21629
  /** Number of incremental quorum expansions applied (Issue #1408). */
21622
21630
  expansionRounds?: number;
21631
+ /**
21632
+ * True while a quorum expansion is awaiting its callback for this
21633
+ * proposal. Concurrent `vote()` calls check this to avoid double-
21634
+ * expanding across the `await` gap (Issue #2861). Per-proposal so
21635
+ * independent proposals never block each other.
21636
+ */
21637
+ expansionInFlight?: boolean;
21623
21638
  }
21624
21639
  /**
21625
21640
  * Consensus metrics for monitoring.
@@ -24834,6 +24849,14 @@ declare abstract class BaseCliAdapter implements ICliAdapter {
24834
24849
  * Computes effective timeout for a task.
24835
24850
  */
24836
24851
  private computeTimeout;
24852
+ /**
24853
+ * Whether the shared outer retry loop ({@link executeCliRetryLoop}) is
24854
+ * allowed to retry this adapter's failures. The base adapter honors the
24855
+ * caller's `allowRetry`. Subprocess adapters override this to suppress
24856
+ * the outer loop when their own transient-retry layer is active, so the
24857
+ * two layers do not nest into multiplied spawns (#2824).
24858
+ */
24859
+ protected shouldOuterRetry(opts: Required<ExecutionOptions$1>): boolean;
24837
24860
  /**
24838
24861
  * Executes task with retry logic via shared retry loop.
24839
24862
  */
@@ -24984,6 +25007,16 @@ declare abstract class SubprocessCliAdapter extends BaseCliAdapter {
24984
25007
  protected abstract readonly parser: ICliResponseParser;
24985
25008
  /** Transient-error retry config. Override in subclass to enable. */
24986
25009
  protected readonly transientRetry: TransientRetryConfig;
25010
+ /**
25011
+ * The inner {@link retryTransient} layer is the single retry authority
25012
+ * for subprocess CLIs. When it is enabled (the default), the shared
25013
+ * outer retry loop must not also retry: nesting both meant up to 6
25014
+ * subprocess spawns and ~10-minute hangs on a persistent TIMEOUT, since
25015
+ * the inner layer's timeout extension compounds on every outer attempt
25016
+ * (#2824). The outer loop still runs once, so circuit-breaker failure
25017
+ * recording is unaffected.
25018
+ */
25019
+ protected shouldOuterRetry(opts: Required<ExecutionOptions$1>): boolean;
24987
25020
  /**
24988
25021
  * Gets CLI command and arguments for execution.
24989
25022
  * If stdin is provided, it will be written to the process stdin.
@@ -28401,6 +28434,15 @@ declare function createOrchestratorFactory(config?: OrchestratorFactoryConfig):
28401
28434
  *
28402
28435
  * Analyzes task characteristics and selects the optimal orchestration
28403
28436
  * pattern using a rule-based classification system.
28437
+ *
28438
+ * Scope of `recordOutcome` / `getMetrics` (#2824): the recorded
28439
+ * `PatternOutcome`s live in a buffer owned by this router instance.
28440
+ * `route()` is a deterministic, rule-based classifier — it does NOT
28441
+ * consume recorded outcomes, so there is no per-instance learning to
28442
+ * "lose", and nothing to aggregate across processes. The pair is an
28443
+ * observability surface only. If cross-process pattern metrics are
28444
+ * ever needed, add a dedicated consumer that writes to a shared
28445
+ * `OutcomeStore` rather than widening this router's responsibility.
28404
28446
  */
28405
28447
  declare function createWorkflowRouter(options?: {
28406
28448
  readonly logger?: ILogger | undefined;
@@ -28410,9 +28452,12 @@ declare function createWorkflowRouter(options?: {
28410
28452
  interface IWorkflowRouter {
28411
28453
  /** Routes a task to the optimal workflow pattern. */
28412
28454
  route(signals: TaskSignals, options?: WorkflowRouterOptions): RoutingDecision$1;
28413
- /** Records an execution outcome for performance tracking. */
28455
+ /**
28456
+ * Records an execution outcome into this router instance's buffer.
28457
+ * Observability only — `route()` never reads it back (#2824).
28458
+ */
28414
28459
  recordOutcome(outcome: PatternOutcome): void;
28415
- /** Gets aggregated metrics, optionally filtered by pattern. */
28460
+ /** Aggregates this instance's recorded outcomes, optionally filtered by pattern. */
28416
28461
  getMetrics(pattern?: WorkflowPattern): readonly PatternMetrics[];
28417
28462
  }
28418
28463
 
@@ -30828,7 +30873,7 @@ declare class EventBus implements IEventBus {
30828
30873
  /**
30829
30874
  * ArtifactStore — V2 Pipeline Artifact Storage (Issue #912, Phase 4-3)
30830
30875
  *
30831
- * In-memory artifact store with bounded capacity and LRU eviction.
30876
+ * In-memory artifact store with bounded capacity and FIFO eviction.
30832
30877
  * Tracks provenance chains for artifact traceability.
30833
30878
  *
30834
30879
  * @see docs/v2/08-observability-eventing.md
@@ -30873,8 +30918,15 @@ interface ArtifactStoreOptions {
30873
30918
  /**
30874
30919
  * In-memory artifact store with bounded capacity.
30875
30920
  *
30876
- * When the store exceeds maxArtifacts, the oldest artifacts
30877
- * are evicted (FIFO). Content size is validated on put().
30921
+ * When the store exceeds maxArtifacts, the oldest artifacts are evicted
30922
+ * (FIFO insertion order, never reordered on `get()`). Content size is
30923
+ * validated on put().
30924
+ *
30925
+ * This is a bounded in-memory working cache, NOT the durable audit
30926
+ * substrate (#2867): once `maxArtifacts` is reached, old artifacts and
30927
+ * their provenance are dropped. For tamper-evident, retained audit
30928
+ * history use the on-disk Merkle audit log via the `verify_audit_chain`
30929
+ * MCP tool.
30878
30930
  */
30879
30931
  declare class ArtifactStore implements IArtifactStore {
30880
30932
  private readonly artifacts;
@@ -30886,6 +30938,17 @@ declare class ArtifactStore implements IArtifactStore {
30886
30938
  put(artifact: Artifact): ArtifactRef;
30887
30939
  get(ref: ArtifactRef): Artifact | undefined;
30888
30940
  query(filter: ArtifactFilter): readonly ArtifactRef[];
30941
+ /**
30942
+ * Returns the full provenance chain for an artifact — the artifact
30943
+ * itself plus every ancestor transitively reachable via `inputRefs`
30944
+ * (#2867). Iterative DFS; the `visited` set makes it safe against
30945
+ * cycles and diamond/multi-parent DAGs (each artifact appears once).
30946
+ *
30947
+ * Entries are in reachability (start-node-first DFS) order, not
30948
+ * topological order. An ancestor that has been FIFO-evicted from the
30949
+ * store is silently skipped — the chain truncates there rather than
30950
+ * throwing. A missing root returns `[]`.
30951
+ */
30889
30952
  provenance(ref: ArtifactRef): readonly ProvenanceEntry[];
30890
30953
  private validateContentSize;
30891
30954
  private evictIfNeeded;
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createGitHubProvider,
3
3
  createScmProvider
4
- } from "./chunk-EKRMWVAH.js";
4
+ } from "./chunk-5SBD55T7.js";
5
5
  import {
6
6
  ALLOWED_COMMANDS,
7
7
  ARTIFACT_TYPES,
@@ -518,7 +518,7 @@ import {
518
518
  validateWorkflow,
519
519
  validateWorkflowDependencies,
520
520
  withLogging
521
- } from "./chunk-GNRANMQ3.js";
521
+ } from "./chunk-RCNNN4E2.js";
522
522
  import "./chunk-AP2FD37C.js";
523
523
  import {
524
524
  SharedMemoryStore
@@ -527,21 +527,21 @@ import {
527
527
  getTokenEnvVars,
528
528
  hasToken,
529
529
  resolveToken
530
- } from "./chunk-CTSESEFA.js";
530
+ } from "./chunk-BQ55PBN4.js";
531
531
  import "./chunk-X2M7OF27.js";
532
532
  import {
533
533
  OPENAI_MODELS,
534
534
  OPENAI_MODEL_ALIASES,
535
535
  OpenAIAdapter,
536
536
  createOpenAIAdapter
537
- } from "./chunk-FAJAWO42.js";
537
+ } from "./chunk-HXXRFTKP.js";
538
538
  import {
539
539
  CliCircuitBreakerIntegration,
540
540
  createCliCircuitBreakerIntegration
541
- } from "./chunk-J5XEJHIQ.js";
541
+ } from "./chunk-FQKQUJBU.js";
542
542
  import {
543
543
  executeExpert
544
- } from "./chunk-VS4KB3AX.js";
544
+ } from "./chunk-376MBRLD.js";
545
545
  import {
546
546
  AgentFindingSchema,
547
547
  AgentPerformanceSchema,
@@ -637,10 +637,10 @@ import {
637
637
  validateToolInput,
638
638
  withModelNotFoundFallback,
639
639
  wrapResilientWithFallback
640
- } from "./chunk-6CJIKX6I.js";
640
+ } from "./chunk-3QRO77LO.js";
641
641
  import {
642
642
  PROVIDER_ENV_KEYS
643
- } from "./chunk-JLWKHYIU.js";
643
+ } from "./chunk-GHWTMPPL.js";
644
644
  import {
645
645
  AdapterModelError,
646
646
  BaseAdapter,
@@ -664,8 +664,8 @@ import {
664
664
  transformStream,
665
665
  validateApiKeyPresence,
666
666
  withTimeout
667
- } from "./chunk-YGKPWUJ6.js";
668
- import "./chunk-FJHZW7CR.js";
667
+ } from "./chunk-HYNFZQU4.js";
668
+ import "./chunk-H4XSKDI6.js";
669
669
  import {
670
670
  AgentActionSchema,
671
671
  GitHubReviewer,
@@ -698,11 +698,11 @@ import {
698
698
  sanitizeInput,
699
699
  validateAgentAction,
700
700
  validateCorroboration
701
- } from "./chunk-QVHXEQFM.js";
701
+ } from "./chunk-OO662XRQ.js";
702
702
  import {
703
703
  GitHubProvider,
704
704
  ScmError
705
- } from "./chunk-UVALD724.js";
705
+ } from "./chunk-HQR27JGL.js";
706
706
  import {
707
707
  FALLBACK_SCANNER_DATA,
708
708
  buildPlanFromAnalysis,
@@ -710,7 +710,7 @@ import {
710
710
  generateSecurityPlan,
711
711
  getRegistryManifest,
712
712
  resolveScannerData
713
- } from "./chunk-RIUUFBX4.js";
713
+ } from "./chunk-TE26NHNW.js";
714
714
  import {
715
715
  analyzeGitHubRepo,
716
716
  analyzeRepo,
@@ -720,10 +720,10 @@ import "./chunk-BQ4YXGGQ.js";
720
720
  import {
721
721
  PersistentStrategyDistiller,
722
722
  RulesSnapshotSchema
723
- } from "./chunk-SHVGZK4A.js";
723
+ } from "./chunk-C3BOZZQC.js";
724
724
  import {
725
725
  MemoryError
726
- } from "./chunk-OO6MTUDS.js";
726
+ } from "./chunk-KN7JWET4.js";
727
727
  import {
728
728
  AppConfigSchema,
729
729
  ExpertConfigSchema,
@@ -742,7 +742,7 @@ import {
742
742
  getKnownNexusVarNames,
743
743
  startStdioServer,
744
744
  validateNexusEnv
745
- } from "./chunk-SJUSQGKH.js";
745
+ } from "./chunk-RFUBLOZQ.js";
746
746
  import {
747
747
  AvailabilityCache,
748
748
  filterAvailableModels,
@@ -751,15 +751,15 @@ import {
751
751
  getFallbackChain,
752
752
  resetAvailabilityCache,
753
753
  resolveFallback
754
- } from "./chunk-Q2U6SFN2.js";
754
+ } from "./chunk-TLE2YE6G.js";
755
755
  import {
756
756
  AvailableModelsCache,
757
757
  getDefaultAvailableModelsCache,
758
758
  setDefaultAvailableModelsCache
759
- } from "./chunk-HBKZ2DJK.js";
759
+ } from "./chunk-RCWWUZHA.js";
760
760
  import {
761
761
  DEFAULTS
762
- } from "./chunk-BSIGP5XF.js";
762
+ } from "./chunk-HDFUSBU3.js";
763
763
  import "./chunk-NUBSJGQZ.js";
764
764
  import "./chunk-633WH2ML.js";
765
765
  import {
@@ -790,8 +790,8 @@ import {
790
790
  isCliAvailable,
791
791
  isRetryableError,
792
792
  sleep
793
- } from "./chunk-ZU2Q3DWE.js";
794
- import "./chunk-JXDDSNEK.js";
793
+ } from "./chunk-5FUVEIJC.js";
794
+ import "./chunk-JECCDZ2S.js";
795
795
  import {
796
796
  BUILT_IN_EXPERTS,
797
797
  BuiltInExpertTypeSchema,
@@ -802,7 +802,7 @@ import {
802
802
  validateExpertConfig
803
803
  } from "./chunk-ZM4O442V.js";
804
804
  import "./chunk-PQHVC4BD.js";
805
- import "./chunk-AYZ6P7CK.js";
805
+ import "./chunk-FBW6XKZJ.js";
806
806
  import {
807
807
  AgentCapability,
808
808
  AgentError,
@@ -879,9 +879,9 @@ import {
879
879
  toError,
880
880
  unwrap,
881
881
  unwrapOr
882
- } from "./chunk-YMT6H2HQ.js";
882
+ } from "./chunk-4MHE5UVO.js";
883
883
  import "./chunk-2JQXC3CK.js";
884
- import "./chunk-UP2VWCW5.js";
884
+ import "./chunk-PR4QN5HX.js";
885
885
 
886
886
  // src/adapters/factory.ts
887
887
  import { z } from "zod";
@@ -5683,17 +5683,36 @@ var ArtifactStore = class {
5683
5683
  }
5684
5684
  return refs;
5685
5685
  }
5686
+ /**
5687
+ * Returns the full provenance chain for an artifact — the artifact
5688
+ * itself plus every ancestor transitively reachable via `inputRefs`
5689
+ * (#2867). Iterative DFS; the `visited` set makes it safe against
5690
+ * cycles and diamond/multi-parent DAGs (each artifact appears once).
5691
+ *
5692
+ * Entries are in reachability (start-node-first DFS) order, not
5693
+ * topological order. An ancestor that has been FIFO-evicted from the
5694
+ * store is silently skipped — the chain truncates there rather than
5695
+ * throwing. A missing root returns `[]`.
5696
+ */
5686
5697
  provenance(ref) {
5687
- const artifact = this.artifacts.get(ref.id);
5688
- if (artifact === void 0) return [];
5689
- return [
5690
- {
5698
+ const entries = [];
5699
+ const visited = /* @__PURE__ */ new Set();
5700
+ const stack = [ref.id];
5701
+ while (stack.length > 0) {
5702
+ const id = stack.pop();
5703
+ if (id === void 0 || visited.has(id)) continue;
5704
+ visited.add(id);
5705
+ const artifact = this.artifacts.get(id);
5706
+ if (artifact === void 0) continue;
5707
+ entries.push({
5691
5708
  artifactId: artifact.id,
5692
5709
  plugin: artifact.createdBy,
5693
5710
  timestamp: artifact.createdAt,
5694
5711
  inputArtifacts: artifact.inputRefs.map((r) => r.id)
5695
- }
5696
- ];
5712
+ });
5713
+ for (const r of artifact.inputRefs) stack.push(r.id);
5714
+ }
5715
+ return entries;
5697
5716
  }
5698
5717
  // ==========================================================================
5699
5718
  // Internal
@@ -5984,7 +6003,7 @@ function buildVotingInput(plan, config) {
5984
6003
  }
5985
6004
  async function executeSingleVote(plan, config, log) {
5986
6005
  try {
5987
- const { executeVoting } = await import("./consensus-vote-BZ6JSN67.js");
6006
+ const { executeVoting } = await import("./consensus-vote-TGTGZSPS.js");
5988
6007
  const input = buildVotingInput(plan, config);
5989
6008
  const result = await executeVoting(input, log);
5990
6009
  return parseVotingResult(result);