opencode-swarm 7.159.3 → 7.160.1

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 (107) hide show
  1. package/.opencode/skills/swarm-pr-review/SKILL.md +28 -29
  2. package/.opencode/skills/swarm-pr-review/references/prompt-templates.md +21 -5
  3. package/dist/background/delegation-health.d.ts +1 -1
  4. package/dist/background/pending-delegations.d.ts +46 -1
  5. package/dist/background/pr-review-contract.d.ts +245 -2
  6. package/dist/cli/{coder-settlement-50p7dsya.js → coder-settlement-678ccmnf.js} +11 -10
  7. package/dist/cli/{config-doctor-a7drgs33.js → config-doctor-fr8dfrt2.js} +3 -3
  8. package/dist/cli/{core-madqgdsc.js → core-4j1hbhey.js} +2 -2
  9. package/dist/cli/{curation-policy-ray8h55z.js → curation-policy-47przjwg.js} +6 -6
  10. package/dist/cli/{curator-3sz7refy.js → curator-85d97240.js} +33 -32
  11. package/dist/cli/curator-llm-factory-s9s4s0q3.js +67 -0
  12. package/dist/cli/{evidence-summary-service-cwyjkdsa.js → evidence-summary-service-9dyt2kzh.js} +15 -14
  13. package/dist/cli/{gate-evidence-95k5ap1z.js → gate-evidence-a6paafg8.js} +7 -7
  14. package/dist/cli/guardrail-explain-4a2xdtew.js +68 -0
  15. package/dist/cli/{guardrail-log-nerqk9qb.js → guardrail-log-27nkntrx.js} +9 -6
  16. package/dist/cli/{guardrail-reset-chbc0mep.js → guardrail-reset-xn7k3hn8.js} +33 -32
  17. package/dist/cli/{hive-promoter-4rtxhw7n.js → hive-promoter-k57j3kp6.js} +33 -32
  18. package/dist/cli/{index-515nwvdp.js → index-497a3hhj.js} +19 -10
  19. package/dist/cli/{index-h96xp4t0.js → index-61c3d769.js} +875 -37
  20. package/dist/cli/{index-ve0xj03m.js → index-7ezv5j23.js} +4 -4
  21. package/dist/cli/{index-0zerbq1v.js → index-7h2armwf.js} +23 -14
  22. package/dist/cli/{index-ebxmfr4j.js → index-7npz9n4s.js} +5 -4
  23. package/dist/cli/{index-m9m3emns.js → index-7v0ex0jt.js} +2 -2
  24. package/dist/cli/{index-ebz97mks.js → index-8c9qzpy7.js} +1 -0
  25. package/dist/cli/{index-5hfqc3h3.js → index-98jmggma.js} +24 -7
  26. package/dist/cli/{index-8fyebh3w.js → index-awjx0wgk.js} +1 -1
  27. package/dist/cli/{index-av3gnekk.js → index-b5adxpy6.js} +1 -1
  28. package/dist/cli/{index-t3wk7q51.js → index-bqxffayb.js} +1 -1
  29. package/dist/cli/{index-yt75r1er.js → index-c9zp4xwc.js} +13 -2
  30. package/dist/cli/{index-9qw4sbg1.js → index-dh5q6z7y.js} +7 -7
  31. package/dist/cli/{index-prknc0xn.js → index-dke4wzkn.js} +108 -44
  32. package/dist/cli/{index-nvz4mp5w.js → index-dq93ar40.js} +6 -6
  33. package/dist/cli/{index-zswy6xgb.js → index-drqvph47.js} +7 -7
  34. package/dist/cli/{index-sn6mtxxc.js → index-e1ygmd4q.js} +35 -34
  35. package/dist/cli/{index-6jp5yxye.js → index-f72612zc.js} +16 -2
  36. package/dist/cli/{index-y2d381ce.js → index-gjx53y3c.js} +1 -1
  37. package/dist/cli/{index-xs32znyz.js → index-j3ss86kf.js} +1 -1
  38. package/dist/cli/{index-p3ym3y8b.js → index-jszabr0r.js} +4 -4
  39. package/dist/cli/{index-wwpe4am7.js → index-m1cw9fsh.js} +8 -8
  40. package/dist/cli/{index-8zw60wya.js → index-m84z3aa8.js} +13 -4
  41. package/dist/cli/index-mmr96pwr.js +785 -0
  42. package/dist/cli/{index-gk6gpe7r.js → index-nk498mx6.js} +2 -2
  43. package/dist/cli/{index-2jzmg2km.js → index-nnzdayvk.js} +6 -6
  44. package/dist/cli/{index-fnxmg8sz.js → index-ny0g8fdg.js} +5 -5
  45. package/dist/cli/{index-40t6s98s.js → index-pkz91fwm.js} +3 -3
  46. package/dist/cli/{index-bxpqq9th.js → index-pqjcyj0p.js} +3 -3
  47. package/dist/cli/{index-nhhek8yw.js → index-prv20xq6.js} +1 -1
  48. package/dist/cli/{index-mqfs5f8a.js → index-qc53dfzh.js} +2 -2
  49. package/dist/cli/{index-xqjhbfbx.js → index-v8dsmee1.js} +4 -4
  50. package/dist/cli/{index-qxpfmryw.js → index-wccdm7jv.js} +5 -5
  51. package/dist/cli/{index-rq4jcw64.js → index-z0bxbb9g.js} +4 -4
  52. package/dist/cli/{index-txwx9p21.js → index-zdv914xa.js} +585 -471
  53. package/dist/cli/{index-2fq4a3vk.js → index-znf683sm.js} +1 -1
  54. package/dist/cli/{index-v3ybemb1.js → index-zpzvpybn.js} +2 -2
  55. package/dist/cli/index.js +33 -32
  56. package/dist/cli/{knowledge-escalator-f80n84ch.js → knowledge-escalator-3q2x34cg.js} +14 -13
  57. package/dist/cli/{knowledge-events-1d7v2krw.js → knowledge-events-5y34w84b.js} +12 -11
  58. package/dist/cli/{knowledge-link-vm4caewt.js → knowledge-link-xezm8hr3.js} +5 -5
  59. package/dist/cli/{knowledge-store-66yxeet7.js → knowledge-store-fqv89q5k.js} +6 -6
  60. package/dist/cli/{knowledge-validator-p0xcx7jx.js → knowledge-validator-fsdx14tk.js} +8 -8
  61. package/dist/cli/{model-preflight-w85ecyxh.js → model-preflight-yqqchzjn.js} +1 -1
  62. package/dist/cli/{pending-delegations-vad1z71d.js → pending-delegations-6ae7wy5q.js} +7 -3
  63. package/dist/cli/{pr-review-reentry-authorization-kn3nny7h.js → pr-review-reentry-authorization-986tk381.js} +35 -33
  64. package/dist/cli/{pr-subscriptions-482gzvt6.js → pr-subscriptions-asjevc5p.js} +5 -4
  65. package/dist/cli/{runner-sn7a6zd0.js → runner-wsdcy2d6.js} +6 -6
  66. package/dist/cli/{scan-cursor-2v7995nb.js → scan-cursor-shn926r6.js} +7 -7
  67. package/dist/cli/{schema-dy8fqycb.js → schema-98tdb9h0.js} +4 -2
  68. package/dist/cli/{scope-persistence-baty62vx.js → scope-persistence-cn34xnwr.js} +10 -9
  69. package/dist/cli/{skill-generator-nwrvtqbz.js → skill-generator-kck7087c.js} +16 -15
  70. package/dist/cli/{telemetry-3rh94wv3.js → telemetry-gpr9s3sm.js} +3 -1
  71. package/dist/cli/{worktree-collision-ownership-cy24p5mr.js → worktree-collision-ownership-6b3kshcv.js} +6 -5
  72. package/dist/cli/{worktree-isolation-8jbx0s8d.js → worktree-isolation-he01qhss.js} +33 -32
  73. package/dist/config/constants.d.ts +8 -0
  74. package/dist/config/context-window.d.ts +11 -4
  75. package/dist/config/evidence-schema.d.ts +9 -6
  76. package/dist/config/schema.d.ts +8 -0
  77. package/dist/context-map/telemetry.d.ts +1 -1
  78. package/dist/health/learning-health.d.ts +356 -0
  79. package/dist/hooks/context-budget.d.ts +10 -1
  80. package/dist/hooks/curator.d.ts +2 -0
  81. package/dist/hooks/final-context-accounting.d.ts +2 -0
  82. package/dist/hooks/model-limits.d.ts +56 -25
  83. package/dist/hooks/pr-workflow-gate.d.ts +25 -1
  84. package/dist/hooks/skill-usage-pending.d.ts +1 -1
  85. package/dist/index.js +623 -609
  86. package/dist/observability/catalog.d.ts +2 -2
  87. package/dist/observability/ids.d.ts +17 -0
  88. package/dist/prm/trajectory-store.d.ts +1 -1
  89. package/dist/services/diagnose-service.d.ts +7 -0
  90. package/dist/services/status-service.d.ts +18 -0
  91. package/dist/telemetry.d.ts +52 -1
  92. package/dist/tools/context-status.d.ts +15 -1
  93. package/dist/tools/dispatch-lanes.d.ts +27 -3
  94. package/dist/tools/index.d.ts +1 -0
  95. package/dist/tools/manifest.d.ts +1 -0
  96. package/dist/tools/repo-graph/ontology.d.ts +6 -0
  97. package/dist/tools/repo-graph/pack-query.d.ts +36 -0
  98. package/dist/tools/repo-graph/types.d.ts +198 -1
  99. package/dist/tools/repo-graph.d.ts +5 -3
  100. package/dist/tools/sast-baseline.d.ts +2 -0
  101. package/dist/tools/sast-scan.d.ts +2 -2
  102. package/dist/tools/submit-pr-review-result.d.ts +5 -0
  103. package/dist/tools/tool-metadata.d.ts +8 -0
  104. package/opencode-swarm.schema.json +4 -0
  105. package/package.json +1 -1
  106. package/dist/cli/curator-llm-factory-pyp5kmra.js +0 -66
  107. package/dist/cli/guardrail-explain-a13kbmrt.js +0 -67
@@ -24,6 +24,7 @@
24
24
  * This dual dispatch means agent lists are incomplete — they capture factory-dispatched
25
25
  * curators but omit hook-dispatched ones. This is by design for hook-internal operations.
26
26
  */
27
+ import { observeCuratorCompliance } from '../health/learning-health';
27
28
  import { checkRecommendations, recordEmittedRecommendations } from '../services/recommendation-ledger.js';
28
29
  import { listSkills, parseDraftFrontmatter, retireOrMarkStale, retireSkill } from '../services/skill-generator.js';
29
30
  import { getSkillVersion, reviseSkill } from '../services/skill-reviser.js';
@@ -51,6 +52,7 @@ export declare const _internals: {
51
52
  checkPhaseCompliance: typeof checkPhaseCompliance;
52
53
  normalizeAgentName: typeof normalizeAgentName;
53
54
  autoRetireSkills: typeof autoRetireSkills;
55
+ observeCuratorCompliance: typeof observeCuratorCompliance;
54
56
  /**
55
57
  * Retained deliberately (issue #2038 §7). The three curator decision sites
56
58
  * now read through `readSkillUsageEntriesWithCoverage` because a coverage
@@ -43,6 +43,8 @@ interface FinalAccountingOptions {
43
43
  /** Same seam createContextBudgetHandler uses: resolves the
44
44
  * configured target model for an agent name. */
45
45
  resolveAgentModelFn?: (agentName: string) => string | undefined;
46
+ /** Project directory (#2044): scopes the model-limit health observation. */
47
+ directory?: string;
46
48
  }
47
49
  /**
48
50
  * One-shot-per-band warning suppression (#2107 §3), backed by the
@@ -25,6 +25,8 @@
25
25
  * live derivation replaced. They exist so a first-turn `messages.transform`
26
26
  * consumer degrades to a plausible number instead of the flat 128 000 floor.
27
27
  */
28
+ import { type ContextWindowSource } from '../config/context-window';
29
+ import { observeModelLimitResolution } from '../health/learning-health';
28
30
  /**
29
31
  * Native model context limits (in tokens) when used on their native platform.
30
32
  *
@@ -85,21 +87,46 @@ export declare function extractModelInfo(messages: MessageWithParts[]): {
85
87
  * @returns the sessionID, or `undefined` when no message carries one.
86
88
  */
87
89
  export declare function extractSessionId(messages: MessageWithParts[] | undefined): string | undefined;
90
+ /**
91
+ * Coarse provenance class for a resolved model limit (issue #2044 item 1).
92
+ * Maps the fine-grained {@link ContextWindowSource} rung onto the five classes
93
+ * the issue names: `host` (the live `model.limit.context`), `override` (any
94
+ * user-authored `model_limits` entry), `provider_cap` / `native` (the two
95
+ * known-stale static tables), and `fallback` (the flat 128k default).
96
+ */
97
+ export type ModelLimitSource = 'host' | 'override' | 'provider_cap' | 'native' | 'fallback';
98
+ /** Provenance-bearing result of {@link resolveModelLimit} (issue #2044). */
99
+ export interface ModelLimitResolution {
100
+ /** The resolved context limit in tokens. */
101
+ limit: number;
102
+ /** Coarse provenance class — the issue's enum. */
103
+ source: ModelLimitSource;
104
+ /** Which fine-grained resolution rung produced the limit. */
105
+ resolution: ContextWindowSource;
106
+ }
107
+ export declare function classifyModelLimitSource(resolution: ContextWindowSource): ModelLimitSource;
88
108
  /**
89
109
  * Static-table lookup used as `fallbackLookup` for
90
- * {@link resolveContextWindow}. Preserves the historical precedence of
91
- * the two tables relative to each other (provider cap first, then a
92
- * longest-prefix native match), and is reachable only when no live
93
- * `model.limit.context` was available.
110
+ * {@link resolveContextWindow}. Preserves the historical precedence of the two
111
+ * tables relative to each other (provider cap first, then a longest-prefix
112
+ * native match), and says WHICH table matched so the resolution source can
113
+ * distinguish `static_provider_cap` from `static_native` (issue #2044).
114
+ * Reachable only when no live `model.limit.context` was available.
94
115
  */
95
- export declare function lookupStaticModelLimit(modelID?: string, providerID?: string): number | undefined;
116
+ export declare function lookupStaticModelLimit(modelID?: string, providerID?: string): {
117
+ tokens: number;
118
+ table: 'provider_cap' | 'native';
119
+ } | undefined;
96
120
  /**
97
- * Resolves the context limit for a given model/provider combination.
121
+ * Resolves the context limit for a given model/provider combination WITH
122
+ * provenance (issue #2044).
98
123
  *
99
124
  * Thin adapter over the single derivation in `src/config/context-window.ts` —
100
125
  * this function exists so the `experimental.chat.messages.transform` consumers
101
- * (`context-budget.ts`, `knowledge-injector.ts`, `tools/context-status.ts`)
102
- * keep their existing `(modelID, providerID, overrides)` call shape. All
126
+ * (`context-budget.ts`, `knowledge-injector.ts`, `tools/context-status.ts`,
127
+ * `final-context-accounting.ts`) keep their existing
128
+ * `(modelID, providerID, overrides)` call shape while receiving the typed
129
+ * `{ limit, source }` provenance the observability series requires. All
103
130
  * ordering logic lives in the shared resolver; see its module header.
104
131
  *
105
132
  * Resolution order (first usable value wins):
@@ -111,44 +138,48 @@ export declare function lookupStaticModelLimit(modelID?: string, providerID?: st
111
138
  * match (both known-stale; see the module header)
112
139
  * 6. `DEFAULT_MODEL_CONTEXT_TOKENS` (128000)
113
140
  *
114
- * Two ordering changes vs. the pre-#1619 implementation, both deliberate:
115
- * - `configOverrides.default` moved from below the static tables to above
116
- * them. An explicitly authored user value losing to a hardcoded table was a
117
- * defect; it is now consistent with the compound and model-only keys, which
118
- * already outranked the tables.
119
- * - The live `model.limit.context` was inserted above both tables, which is
120
- * the entire point of this change.
121
- *
122
- * Any value that is not a finite number ≥ 1000 is skipped rather than used, so
123
- * a malformed override or a catalog entry with `limit.context: 0` can never
124
- * produce a `NaN` / `Infinity` percentage.
141
+ * Any value that is not a finite number ≥ 1000 (untrusted rungs) / ≥ 1 (user
142
+ * rungs) is SKIPPED, never coerced; skipped user overrides are surfaced via a
143
+ * bounded `invalid_override_skipped` observation instead of silently
144
+ * disappearing (issue #2044 item 2).
125
145
  *
126
146
  * @param modelID - The model identifier (e.g., "claude-sonnet-4-6", "gpt-5")
127
147
  * @param providerID - The provider identifier (e.g., "github-copilot", "anthropic")
128
148
  * @param configOverrides - User configuration overrides (`context_budget.model_limits`)
129
149
  * @param liveContextLimit - The live `model.limit.context` recorded for this
130
150
  * session by the `system.transform` hook, when one has been seen
131
- * @returns The resolved context limit in tokens
151
+ * @returns The resolved limit with coarse source class and fine-grained rung
132
152
  *
133
153
  * @example
134
154
  * // Live value wins over the stale static tables
135
155
  * resolveModelLimit("claude-sonnet-4-6", "github-copilot", {}, 200000)
136
- * // Returns: 200000
156
+ * // Returns: { limit: 200000, source: 'host', resolution: 'live_model_limit' }
137
157
  *
138
158
  * @example
139
159
  * // Explicit user override beats the live value
140
160
  * resolveModelLimit("gpt-5", "github-copilot", { "github-copilot/gpt-5": 60000 }, 400000)
141
- * // Returns: 60000
161
+ * // Returns: { limit: 60000, source: 'override', resolution: 'user_provider_model' }
142
162
  *
143
163
  * @example
144
164
  * // No live value: falls back to the static table (prefix match)
145
165
  * resolveModelLimit("claude-sonnet-4-6-20260301", "anthropic", {})
146
- * // Returns: 200000
166
+ * // Returns: { limit: 200000, source: 'native', resolution: 'static_native' }
147
167
  *
148
168
  * @example
149
169
  * // Malformed live value is ignored, not divided by
150
170
  * resolveModelLimit(undefined, undefined, {}, 0)
151
- * // Returns: 128000
171
+ * // Returns: { limit: 128000, source: 'fallback', resolution: 'static_default' }
152
172
  */
153
- export declare function resolveModelLimit(modelID?: string, providerID?: string, configOverrides?: Record<string, number>, liveContextLimit?: unknown): number;
173
+ export declare function resolveModelLimit(modelID?: string, providerID?: string, configOverrides?: Record<string, number>, liveContextLimit?: unknown,
174
+ /** Project directory (threaded from the consumers) — scopes the #2044
175
+ * fallback-health observation to the owning project. */
176
+ directory?: string): ModelLimitResolution;
177
+ /**
178
+ * Bounded observation seam (invariant-7 DI): routes the model-limit fallback
179
+ * fact into the learning-health registry. Tests replace this to avoid touching
180
+ * global health state; production uses the real observer.
181
+ */
182
+ export declare const _internals: {
183
+ observeResolution: typeof observeModelLimitResolution;
184
+ };
154
185
  export {};
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  import { type CandidateSeverity, type FindingsSeverity, type RowFormatFamily } from '../background/candidate-contract.js';
4
4
  import { type LaneOutputArtifact } from '../background/lane-output-store.js';
5
5
  import { type BackgroundDelegationRecord, type BackgroundDelegationResult, type BackgroundDelegationWorkflowLaneFailureClass, type BackgroundDelegationWorkflowLaneRecovery, findByBatchId, sweepStaleDelegations } from '../background/pending-delegations.js';
6
- import { PR_REVIEW_BASE_DIMENSION_IDS, type PrReviewRiskImpact, type PrReviewRiskTag } from '../background/pr-review-contract.js';
6
+ import { PR_REVIEW_BASE_DIMENSION_IDS, type PrReviewLaneResultEnvelope, type PrReviewRiskImpact, type PrReviewRiskTag } from '../background/pr-review-contract.js';
7
7
  import { type PrReviewInlineTriggerRow } from '../background/pr-review-trigger-contract.js';
8
8
  import { type RevisionDigestResult, resolveCommitCountSince, resolveCommitCountSinceAsync, resolveCurrentGitHead, resolveCurrentGitHeadAsync, resolveCurrentLocalHeadRefAsync, resolveCurrentUpstreamPushTarget, resolveCurrentUpstreamPushTargetAsync, resolveCurrentUpstreamRemoteRef, resolveExactRemoteBranchHead, resolveExactRemoteBranchHeadAsync, resolveIsExactSingleChildCommit, resolveIsExactSingleChildCommitAsync, resolveIsWorkingTreeClean, resolveIsWorkingTreeCleanAsync, resolvePrReviewDiffStats, resolvePrReviewDiffStatsAsync, resolvePrWorkflowRevisionDigest, resolvePrWorkflowRevisionDigestDetailed, resolveRemoteRefsContainingHead, resolveRemoteRefsContainingHeadAsync, resolveRemoteUrlIdentity, resolveRemoteUrlIdentityAsync } from '../background/workspace-snapshot.js';
9
9
  import { type PrReviewResilienceConfig } from '../config/schema.js';
@@ -50,6 +50,9 @@ export interface PrReviewDiscoveryLaneValidationInput {
50
50
  prHeadSha: string;
51
51
  gitHead: string;
52
52
  revisionDigest: string;
53
+ workflowInstanceId?: string;
54
+ workflowRevision?: number;
55
+ baseSha?: string;
53
56
  reviewScope?: string;
54
57
  checkWorkflowLane?: boolean;
55
58
  };
@@ -666,6 +669,25 @@ export declare function activatePrWorkflow(directory: string, sessionID: string,
666
669
  prUrl?: string;
667
670
  }): Promise<PrWorkflowGateState>;
668
671
  export declare function readPrWorkflowGateState(directory: string, sessionID: string): Promise<PrWorkflowGateState | null>;
672
+ export type SubmitPrReviewResultOutcome = {
673
+ status: 'recorded' | 'duplicate';
674
+ receiptDigest: string;
675
+ } | {
676
+ status: 'rejected';
677
+ reason: string;
678
+ };
679
+ /**
680
+ * Publish one structured base/micro discovery result from the exact child
681
+ * session that owns the live delegation. Lock order is deliberately
682
+ * workflow-session -> delegation-evidence; clear/abort takes the same outer
683
+ * lock and terminalization takes the same inner lock.
684
+ */
685
+ export declare function submitPrReviewResult(directory: string, childSessionId: string, input: {
686
+ batchId: string;
687
+ laneId: string;
688
+ revisionDigest: string;
689
+ result: PrReviewLaneResultEnvelope;
690
+ }): Promise<SubmitPrReviewResultOutcome>;
669
691
  /**
670
692
  * Serialize a pre-bind checkout-preservation controller with every terminal
671
693
  * PR-workflow transition for the raw parent session. The caller's action may
@@ -1128,6 +1150,7 @@ export declare function assertPrFeedbackGatePhaseSettled(directory: string, sess
1128
1150
  export declare function assertPrFeedbackReadyToPublish(directory: string, sessionID: string): Promise<PrWorkflowGateState>;
1129
1151
  /** Build the evidence join for a freshly armed generation. */
1130
1152
  declare function buildPublicationEvidenceJoin(state: PrWorkflowGateState, currentDigest: string): PrFeedbackPublicationEvidenceJoin | null;
1153
+ declare function boundPublicationDiagnostic(text: string): string;
1131
1154
  /**
1132
1155
  * Snapshot of the publication container with bounded history trimming.
1133
1156
  * History keeps the last {@link MAX_PUBLICATION_HISTORY_GENERATIONS}
@@ -1379,6 +1402,7 @@ export declare const _test_exports: {
1379
1402
  parseCanonicalCandidateRows: typeof parseCanonicalCandidateRows;
1380
1403
  resolvePrReviewRowFamily: typeof resolvePrReviewRowFamily;
1381
1404
  pipeFieldsCapped: typeof pipeFieldsCapped;
1405
+ boundPublicationDiagnostic: typeof boundPublicationDiagnostic;
1382
1406
  indexVerdictRows: typeof indexVerdictRows;
1383
1407
  reviewerVerdictRowDigest: typeof reviewerVerdictRowDigest;
1384
1408
  workflowGateStateRelativePath: typeof workflowGateStateRelativePath;
@@ -389,4 +389,4 @@ export declare function buildSkillUsageHealthPayload(doc: SkillUsagePendingDocum
389
389
  export declare function emitSkillUsageHealth(doc: SkillUsagePendingDocument, trigger: SkillUsageHealthPayload['trigger'], gauges: {
390
390
  bytes: number;
391
391
  limitBytes: number;
392
- }): void;
392
+ }, directory?: string): void;