@rynfar/meridian 1.72.0 → 1.73.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 (114) hide show
  1. package/dist/cli-1jstkdj9.js +30 -0
  2. package/dist/{cli-9e5cxp89.js → cli-2h3w5n6g.js} +163 -65
  3. package/dist/cli-3zwfvexc.js +56 -0
  4. package/dist/{cli-hxxy0m1z.js → cli-82e2m44k.js} +2 -1
  5. package/dist/cli-8sw5wr9j.js +136 -0
  6. package/dist/{cli-khhjyk04.js → cli-chsp880k.js} +214 -21
  7. package/dist/cli-dh0a1bw4.js +619 -0
  8. package/dist/cli-eehk3052.js +57 -0
  9. package/dist/cli-grfp0s1j.js +330 -0
  10. package/dist/{cli-ab7zkp1a.js → cli-p5zbk952.js} +2027 -315
  11. package/dist/{cli-hj61zpt7.js → cli-p9ca4p13.js} +17 -2
  12. package/dist/cli-qpfky8wy.js +133 -0
  13. package/dist/cli.js +47 -12
  14. package/dist/cliDashboard-c0dvkj4y.js +325 -0
  15. package/dist/configDir.d.ts +30 -0
  16. package/dist/configDir.d.ts.map +1 -0
  17. package/dist/organizationName-90f0atkn.js +29 -0
  18. package/dist/{pluginPage-f5gdmbxc.js → pluginPage-3kxsrdpj.js} +1 -1
  19. package/dist/{profileCli-1eecbmgk.js → profileCli-1bfgc05h.js} +13 -3
  20. package/dist/{profilePage-mamej7kp.js → profilePage-etxqg3vn.js} +252 -60
  21. package/dist/profileRename-4a4km6g8.js +22 -0
  22. package/dist/{profiles-wch9h234.js → profiles-0mp32ek9.js} +16 -3
  23. package/dist/proxy/adapterInstances.d.ts +1 -1
  24. package/dist/proxy/adapterInstances.d.ts.map +1 -1
  25. package/dist/proxy/adapters/claudecode.d.ts.map +1 -1
  26. package/dist/proxy/adapters/droid.d.ts.map +1 -1
  27. package/dist/proxy/authDiscovery.d.ts +52 -0
  28. package/dist/proxy/authDiscovery.d.ts.map +1 -0
  29. package/dist/proxy/credentialsMode.d.ts +77 -0
  30. package/dist/proxy/credentialsMode.d.ts.map +1 -0
  31. package/dist/proxy/design.d.ts.map +1 -1
  32. package/dist/proxy/followActive.d.ts +262 -0
  33. package/dist/proxy/followActive.d.ts.map +1 -0
  34. package/dist/proxy/limitDetection.d.ts +110 -0
  35. package/dist/proxy/limitDetection.d.ts.map +1 -0
  36. package/dist/proxy/models.d.ts.map +1 -1
  37. package/dist/proxy/oauthPlan.d.ts +63 -0
  38. package/dist/proxy/oauthPlan.d.ts.map +1 -0
  39. package/dist/proxy/oauthUsage.d.ts +65 -2
  40. package/dist/proxy/oauthUsage.d.ts.map +1 -1
  41. package/dist/proxy/openai.d.ts +4 -2
  42. package/dist/proxy/openai.d.ts.map +1 -1
  43. package/dist/proxy/organizationName.d.ts +71 -0
  44. package/dist/proxy/organizationName.d.ts.map +1 -0
  45. package/dist/proxy/passthroughEarlyStop.d.ts +10 -0
  46. package/dist/proxy/passthroughEarlyStop.d.ts.map +1 -1
  47. package/dist/proxy/planAllowance.d.ts +75 -0
  48. package/dist/proxy/planAllowance.d.ts.map +1 -0
  49. package/dist/proxy/probes.d.ts +85 -0
  50. package/dist/proxy/probes.d.ts.map +1 -0
  51. package/dist/proxy/profileCli.d.ts +53 -1
  52. package/dist/proxy/profileCli.d.ts.map +1 -1
  53. package/dist/proxy/profileHealth.d.ts +127 -0
  54. package/dist/proxy/profileHealth.d.ts.map +1 -0
  55. package/dist/proxy/profileRename.d.ts +83 -0
  56. package/dist/proxy/profileRename.d.ts.map +1 -0
  57. package/dist/proxy/profiles.d.ts +72 -6
  58. package/dist/proxy/profiles.d.ts.map +1 -1
  59. package/dist/proxy/query.d.ts +7 -0
  60. package/dist/proxy/query.d.ts.map +1 -1
  61. package/dist/proxy/routing.d.ts +59 -1
  62. package/dist/proxy/routing.d.ts.map +1 -1
  63. package/dist/proxy/sdkFeatures.d.ts +1 -1
  64. package/dist/proxy/sdkFeatures.d.ts.map +1 -1
  65. package/dist/proxy/server.d.ts.map +1 -1
  66. package/dist/proxy/session/fingerprint.d.ts +5 -0
  67. package/dist/proxy/session/fingerprint.d.ts.map +1 -1
  68. package/dist/proxy/session/lineage.d.ts.map +1 -1
  69. package/dist/proxy/setup.d.ts.map +1 -1
  70. package/dist/proxy/supervision.d.ts +41 -0
  71. package/dist/proxy/supervision.d.ts.map +1 -0
  72. package/dist/proxy/tokenRefresh.d.ts +38 -4
  73. package/dist/proxy/tokenRefresh.d.ts.map +1 -1
  74. package/dist/server.js +11 -7
  75. package/dist/settings.d.ts +83 -0
  76. package/dist/settings.d.ts.map +1 -0
  77. package/dist/{setup-ndmjpy23.js → setup-7fr49z92.js} +1 -1
  78. package/dist/statusProbe-9x9q261e.js +151 -0
  79. package/dist/telemetry/dashboard.d.ts.map +1 -1
  80. package/dist/telemetry/index.d.ts +20 -2
  81. package/dist/telemetry/index.d.ts.map +1 -1
  82. package/dist/telemetry/landing.d.ts +1 -1
  83. package/dist/telemetry/landing.d.ts.map +1 -1
  84. package/dist/telemetry/logStore.d.ts +11 -0
  85. package/dist/telemetry/logStore.d.ts.map +1 -1
  86. package/dist/telemetry/pricingStore.d.ts +2 -2
  87. package/dist/telemetry/pricingStore.d.ts.map +1 -1
  88. package/dist/telemetry/profileBar.d.ts +2 -2
  89. package/dist/telemetry/profileBar.d.ts.map +1 -1
  90. package/dist/telemetry/profileFacts.d.ts +17 -0
  91. package/dist/telemetry/profileFacts.d.ts.map +1 -0
  92. package/dist/telemetry/profileOrder.d.ts +68 -0
  93. package/dist/telemetry/profileOrder.d.ts.map +1 -0
  94. package/dist/telemetry/profilePage.d.ts.map +1 -1
  95. package/dist/telemetry/profileSort.d.ts +35 -0
  96. package/dist/telemetry/profileSort.d.ts.map +1 -0
  97. package/dist/telemetry/profileSpent.d.ts +68 -0
  98. package/dist/telemetry/profileSpent.d.ts.map +1 -0
  99. package/dist/telemetry/routeChain.d.ts +32 -0
  100. package/dist/telemetry/routeChain.d.ts.map +1 -0
  101. package/dist/telemetry/routes.d.ts.map +1 -1
  102. package/dist/telemetry/settingsPage.d.ts +1 -1
  103. package/dist/telemetry/settingsPage.d.ts.map +1 -1
  104. package/dist/telemetry/sqlite.d.ts.map +1 -1
  105. package/dist/telemetry/store.d.ts +6 -1
  106. package/dist/telemetry/store.d.ts.map +1 -1
  107. package/dist/telemetry/types.d.ts +132 -2
  108. package/dist/telemetry/types.d.ts.map +1 -1
  109. package/dist/{tokenRefresh-kzz08kea.js → tokenRefresh-eg9h83wd.js} +6 -1
  110. package/package.json +1 -1
  111. package/dist/cli-5jxyma6z.js +0 -277
  112. package/dist/cli-vj9cv18n.js +0 -38
  113. package/dist/proxy/settings.d.ts +0 -30
  114. package/dist/proxy/settings.d.ts.map +0 -1
@@ -0,0 +1,127 @@
1
+ /**
2
+ * What we know, right now, about accounts that have just been refused.
3
+ *
4
+ * Two stores, both in-memory and both deliberately not persisted - this is
5
+ * observability and routing hygiene, not durable truth. After a restart the
6
+ * next refusal re-establishes everything.
7
+ *
8
+ * `SpentStore` holds the latest refusal per profile, so a UI can say "this
9
+ * account is refusing" alongside the cached percentages instead of replacing
10
+ * them. Measured on the live fleet: an account rendered `5h 67% / 7d 7%` while
11
+ * every request through it was being refused, because those percentages are a
12
+ * snapshot of the last successful read and a refusal never touched them.
13
+ *
14
+ * `FailoverEventLog` is a bounded, monotonically numbered event ring so an
15
+ * external supervisor (vibeterm's account switcher) can poll for refusals and
16
+ * failovers. It exists because `claudeLog("profile.failover", …)` went to the
17
+ * log and nowhere else, and because `/telemetry/requests` - the obvious place
18
+ * to look - is a 500-row ring with no cursor, so a poller cannot tell "nothing
19
+ * happened" from "it scrolled past between polls". The `since` cursor here is
20
+ * the fix for exactly that.
21
+ *
22
+ * Leaf module: no I/O, no imports from server.ts. Clocks are injectable so the
23
+ * tests do not depend on wall time.
24
+ */
25
+ import type { LimitDiagnosis } from "./limitDetection";
26
+ export interface SpentRecord {
27
+ profileId: string;
28
+ /** When the refusal was observed (epoch ms). */
29
+ at: number;
30
+ diagnosis: LimitDiagnosis;
31
+ /** When this account is expected to serve again, when known. */
32
+ until: number | null;
33
+ /** Truncated raw SDK message - the operator's evidence for the verdict. */
34
+ message: string;
35
+ }
36
+ /**
37
+ * Latest refusal per profile, dropped on read once it expires (the same
38
+ * read-time expiry `ProfileExhaustion` uses, so the two never disagree about
39
+ * whether an account is currently in trouble).
40
+ */
41
+ export declare class SpentStore {
42
+ private readonly now;
43
+ private readonly records;
44
+ constructor(now?: () => number);
45
+ /**
46
+ * Record a refusal. A later record always replaces an earlier one: unlike an
47
+ * exhaustion mark (where a longer cooldown must win), the newest refusal is
48
+ * by definition the best description of the account's current state.
49
+ */
50
+ record(profileId: string, diagnosis: LimitDiagnosis, message: string): SpentRecord;
51
+ get(profileId: string): SpentRecord | undefined;
52
+ /** Live records only - expired ones are dropped on read. */
53
+ snapshot(): SpentRecord[];
54
+ clear(): void;
55
+ }
56
+ /**
57
+ * `refused` - an account said no. Emitted in every routing mode, so an
58
+ * exhausted account is visible even when nothing failed over.
59
+ * `failover` - a request was re-issued on another account and succeeded,
60
+ * so the client never saw the refusal.
61
+ * `pool_exhausted` - every candidate refused; the client got the error.
62
+ */
63
+ export type FailoverEventKind = "refused" | "failover" | "pool_exhausted";
64
+ export interface FailoverEvent {
65
+ /** Monotonic, starts at 1, never reused. The `since` cursor. */
66
+ seq: number;
67
+ at: number;
68
+ kind: FailoverEventKind;
69
+ /** The account that refused. */
70
+ profile: string;
71
+ /** The account that served the request instead, for `failover`. */
72
+ servedBy: string | null;
73
+ reason: string;
74
+ /** Routing mode in effect when this happened. */
75
+ routing: string;
76
+ sessionKey: string | null;
77
+ /**
78
+ * True when this refusal happened on an internal re-proxy hop, meaning the
79
+ * client did not see it. A `refused` event with `internalHop: false` is one
80
+ * the connected agent actually received.
81
+ */
82
+ internalHop: boolean;
83
+ until: number | null;
84
+ limit: LimitDiagnosis | null;
85
+ }
86
+ export interface FailoverEventPage {
87
+ events: FailoverEvent[];
88
+ /**
89
+ * Cursor for the next poll. The seq of the LAST RETURNED event, or the
90
+ * requested `since` when nothing was returned - never the ring's newest seq,
91
+ * because a page truncated by `limit` would then skip the remainder.
92
+ */
93
+ nextSince: number;
94
+ oldestSeq: number;
95
+ latestSeq: number;
96
+ /**
97
+ * True when events between the requested `since` and the oldest retained one
98
+ * were evicted, so the caller knows it missed some rather than believing it
99
+ * has seen everything.
100
+ */
101
+ dropped: boolean;
102
+ capacity: number;
103
+ }
104
+ /**
105
+ * Bounded ring of refusal/failover events, oldest-first on read.
106
+ *
107
+ * Capacity is generous relative to the event rate (one per refusal, not one per
108
+ * request), so a consumer polling every few seconds cannot outrun it; `dropped`
109
+ * exists for the case where a consumer was away long enough that it did.
110
+ */
111
+ export declare class FailoverEventLog {
112
+ private readonly capacity;
113
+ private readonly now;
114
+ private readonly events;
115
+ private seq;
116
+ constructor(capacity?: number, now?: () => number);
117
+ append(event: Omit<FailoverEvent, "seq" | "at"> & {
118
+ at?: number;
119
+ }): FailoverEvent;
120
+ /**
121
+ * Events strictly after `since`, oldest-first. `since = 0` returns everything
122
+ * retained, which is what a consumer starting cold wants.
123
+ */
124
+ since(since: number, limit?: number): FailoverEventPage;
125
+ clear(): void;
126
+ }
127
+ //# sourceMappingURL=profileHealth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileHealth.d.ts","sourceRoot":"","sources":["../../src/proxy/profileHealth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,cAAc,CAAA;IACzB,gEAAgE;IAChE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAA;CAChB;AAWD;;;;GAIG;AACH,qBAAa,UAAU;IAGT,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;gBAE5B,GAAG,GAAE,MAAM,MAAiB;IAEzD;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW;IAiBlF,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAU/C,4DAA4D;IAC5D,QAAQ,IAAI,WAAW,EAAE;IASzB,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAEzE,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,iBAAiB,CAAA;IACvB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAKD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,GAAG,CAAI;gBAGI,QAAQ,GAAE,MAA+B,EACzC,GAAG,GAAE,MAAM,MAAiB;IAG/C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAOjF;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAA2B,GAAG,iBAAiB;IAkB3E,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Profile renaming.
3
+ *
4
+ * A rename has to move everything that names a profile: its entry in
5
+ * profiles.json and, when its credentials live under
6
+ * ~/.config/meridian/profiles/<id>, the credential directory itself. Renaming
7
+ * the entry alone would leave the profile pointing at a directory that is no
8
+ * longer its own — an account logged out by a cosmetic change — so both are
9
+ * planned together and applied as one step that either happens or does not.
10
+ *
11
+ * The old name survives as an ALIAS on the renamed profile. It is a redirect,
12
+ * not a second name: after `x` is renamed to `y`, `x-meridian-profile: x` is
13
+ * served by `y`, and the moment `x` is claimed again — by `profile add x`, or
14
+ * by renaming something else to `x` — the redirect is dropped.
15
+ *
16
+ * Chains are collapsed on write. Renaming x→y and later y→z leaves z holding
17
+ * both "x" and "y", so resolution is a single lookup and no alias can dangle
18
+ * at an intermediate name that no longer exists.
19
+ *
20
+ * This is a leaf module — no imports from server.ts or session/.
21
+ */
22
+ import type { ProfileConfig } from "./profiles";
23
+ export declare function isValidProfileId(id: string): boolean;
24
+ export declare function defaultProfilesDir(): string;
25
+ export declare function defaultProfilesConfigFile(): string;
26
+ export declare function loadProfileConfigFrom(file: string): ProfileConfig[];
27
+ export declare function saveProfileConfigTo(file: string, profiles: ProfileConfig[]): void;
28
+ /**
29
+ * Drop `name` from every profile's alias list — a real profile is claiming the
30
+ * name, so the redirect has to stop. Profiles with nothing to drop are
31
+ * returned as-is.
32
+ */
33
+ export declare function reclaimAlias(profiles: ProfileConfig[], name: string): ProfileConfig[];
34
+ export interface ProfileRenamePlan {
35
+ /** The complete profile list as it should be written to disk. */
36
+ profiles: ProfileConfig[];
37
+ /** Credential directory to move, when this profile keeps one under profilesDir. */
38
+ dirMove?: {
39
+ from: string;
40
+ to: string;
41
+ };
42
+ /** Aliases the renamed profile ends up carrying, chains already collapsed. */
43
+ aliases: string[];
44
+ }
45
+ export type ProfileRenameResult = {
46
+ ok: true;
47
+ plan: ProfileRenamePlan;
48
+ } | {
49
+ ok: false;
50
+ error: string;
51
+ hint?: string;
52
+ };
53
+ /**
54
+ * Pure: decide what a rename would change. Refuses rather than corrupting —
55
+ * an unknown source, an occupied target, or a name the charset rejects each
56
+ * come back as an error with nothing planned.
57
+ */
58
+ export declare function planProfileRename(profiles: ProfileConfig[], from: string, to: string, profilesDir: string): ProfileRenameResult;
59
+ export interface ApplyProfileRenameOptions {
60
+ /** Directory holding per-profile credential dirs. Defaults to the real one. */
61
+ profilesDir?: string;
62
+ /** profiles.json path. Defaults to the real one. */
63
+ configFile?: string;
64
+ }
65
+ export type ApplyProfileRenameResult = {
66
+ ok: true;
67
+ from: string;
68
+ to: string;
69
+ aliases: string[];
70
+ profiles: ProfileConfig[];
71
+ } | {
72
+ ok: false;
73
+ error: string;
74
+ hint?: string;
75
+ };
76
+ /**
77
+ * Apply a rename to disk: credentials first, then the profile list, then the
78
+ * active pointer. If the profile list cannot be written the credential move is
79
+ * undone, so the profile is never left naming a directory that moved out from
80
+ * under it.
81
+ */
82
+ export declare function applyProfileRename(from: string, to: string, options?: ApplyProfileRenameOptions): ApplyProfileRenameResult;
83
+ //# sourceMappingURL=profileRename.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileRename.d.ts","sourceRoot":"","sources":["../../src/proxy/profileRename.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAK/C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CASnE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CASrF;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,mFAAmF;IACnF,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,GAClB,mBAAmB,CA2CrB;AAED,MAAM,WAAW,yBAAyB;IACxC,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,GACpF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/C;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAwD1B"}
@@ -8,18 +8,37 @@
8
8
  *
9
9
  * Profile selection priority:
10
10
  * 1. x-meridian-profile request header (per-request override)
11
- * 2. Active profile (set via POST /profiles/active or UI)
11
+ * 2. Active profile (set via POST /profiles/active or UI, or taken from
12
+ * another instance under MERIDIAN_FOLLOW_ACTIVE — see followActive.ts)
12
13
  * 3. First configured profile (or implicit "default" if none configured)
13
14
  *
14
15
  * This is a leaf module — no imports from server.ts or session/.
15
16
  */
16
17
  import { type RoutingMode } from "./routing";
17
18
  /**
18
- * Load profiles from ~/.config/meridian/profiles.json.
19
+ * Pure: what to say when the configured profiles.json is absent — a message,
20
+ * or undefined when there is nothing worth saying.
21
+ *
22
+ * MERIDIAN_CONFIG_DIR used to move settings.json alone, so anyone who already
23
+ * set it kept getting their profile list from the default directory. Now that
24
+ * it moves the whole directory that list is gone from their instance, which
25
+ * reads as profiles lost rather than profiles left where they always were.
26
+ * Only relocation can produce that, hence the first condition: with the
27
+ * variable unset both paths are the same file and this stays silent.
28
+ */
29
+ export declare function profilesRelocationNotice(configuredFile: string, defaultFile: string, defaultFileExists: boolean): string | undefined;
30
+ /**
31
+ * Load profiles from profiles.json in the config directory.
19
32
  * Cached with a 5s TTL so new profiles are picked up without restart,
20
33
  * while avoiding synchronous disk I/O on every request.
21
34
  */
22
35
  export declare function loadProfilesFromDisk(): ProfileConfig[];
36
+ /**
37
+ * Drop the cached disk profiles so the next read hits the file. Called after
38
+ * a mutation this process performed (e.g. a rename via the UI), where waiting
39
+ * out the TTL would show the caller their own stale profile list.
40
+ */
41
+ export declare function invalidateDiskProfileCache(): void;
23
42
  export type ProfileType = "claude-max" | "api" | "oauth-token";
24
43
  export interface ProfileConfig {
25
44
  /** Unique profile identifier (e.g. "personal", "work") */
@@ -39,6 +58,13 @@ export interface ProfileConfig {
39
58
  baseUrl?: string;
40
59
  /** Long-lived OAuth token from `claude setup-token` (oauth-token profiles) */
41
60
  oauthToken?: string;
61
+ /**
62
+ * Former names left behind by `meridian profile rename`. Each is a redirect,
63
+ * not a second name: requests naming one are served by this profile until
64
+ * the name is claimed again. Chains are collapsed on write (see
65
+ * profileRename.ts), so every alias points straight at its current profile.
66
+ */
67
+ aliases?: string[];
42
68
  }
43
69
  export interface ResolvedProfile {
44
70
  id: string;
@@ -48,13 +74,30 @@ export interface ResolvedProfile {
48
74
  }
49
75
  /**
50
76
  * Set the active profile. All requests without an explicit x-meridian-profile
51
- * header will use this profile. Persisted to ~/.config/meridian/settings.json.
77
+ * header will use this profile. Persisted to settings.json in the config directory.
52
78
  */
53
79
  export declare function setActiveProfile(profileId: string): void;
54
80
  /**
55
- * Get the current active profile ID.
81
+ * Get the LOCAL active profile ID — this instance's own choice, ignoring
82
+ * follow mode. Callers that want the profile actually in effect want
83
+ * `resolveActiveProfileId` instead.
56
84
  */
57
85
  export declare function getActiveProfileId(): string | undefined;
86
+ /**
87
+ * The active profile actually in effect: the followed instance's choice under
88
+ * MERIDIAN_FOLLOW_ACTIVE, otherwise this instance's own.
89
+ *
90
+ * This is the ONE input follow mode replaces. Everything around it — the
91
+ * header override, sticky assignment, the config default, the first-profile
92
+ * fallback — is unchanged.
93
+ *
94
+ * @param availableIds profile IDs this instance actually has, so a followed
95
+ * value it cannot serve is rejected here rather than resolving to an
96
+ * unrelated account further down `resolveProfile`.
97
+ */
98
+ export declare function resolveActiveProfileId(availableIds: readonly string[]): string | undefined;
99
+ /** The active profile in effect, resolved against the effective profile list. */
100
+ export declare function getEffectiveActiveProfileId(configProfiles: ProfileConfig[] | undefined): string | undefined;
58
101
  /** Reset active profile — for testing only. */
59
102
  export declare function resetActiveProfile(): void;
60
103
  /**
@@ -66,9 +109,21 @@ export declare function resetActiveProfile(): void;
66
109
  export declare function restoreActiveProfile(configProfiles?: ProfileConfig[]): void;
67
110
  /** Enable disk auto-discovery of profiles. Called by the CLI when
68
111
  * no MERIDIAN_PROFILES env var is set, so the server picks up
69
- * profiles from ~/.config/meridian/profiles.json dynamically. */
112
+ * profiles from profiles.json in the config directory dynamically. */
70
113
  export declare function enableDiskProfileDiscovery(): void;
71
114
  export declare function getEffectiveProfiles(configProfiles: ProfileConfig[] | undefined): ProfileConfig[];
115
+ /**
116
+ * Where another instance on this machine could read this profile's credentials,
117
+ * or null when it could not.
118
+ *
119
+ * The test is that the resolved environment is a config directory and NOTHING
120
+ * else. That is what makes it derived rather than a second opinion about
121
+ * profile types: a profile whose credentials are an inline API key or OAuth
122
+ * token carries that secret in its env, fails the test, and is reported by id
123
+ * alone. A secret must never leave the process holding it, so there is no
124
+ * shape of this function that returns one.
125
+ */
126
+ export declare function shareableCredentialDir(resolved: ResolvedProfile): string | null;
72
127
  /** Check if any profiles are available from any source */
73
128
  export declare function hasProfiles(configProfiles: ProfileConfig[] | undefined): boolean;
74
129
  /** Options for the sticky-routing resolution step (#383). */
@@ -82,7 +137,11 @@ export interface ResolveProfileOptions {
82
137
  * Resolve a profile from the configuration.
83
138
  *
84
139
  * Priority: header > sticky assignment (routing="sticky" only) > active >
85
- * config default > first profile. The sticky step exists so multi-account
140
+ * config default > first profile. Whatever that yields is matched against
141
+ * profile ids first and rename aliases second, so a name a rename left behind
142
+ * keeps routing without ever shadowing a live profile.
143
+ *
144
+ * The sticky step exists so multi-account
86
145
  * setups can distribute sessions across profiles WITHOUT losing per-account
87
146
  * prompt caching — see routing.ts. With routingMode unset/"active" the
88
147
  * chain is exactly the pre-#383 behavior.
@@ -93,6 +152,12 @@ export interface ResolveProfileOptions {
93
152
  * @param options - Sticky-routing inputs (session key + mode)
94
153
  */
95
154
  export declare function resolveProfile(profiles: ProfileConfig[] | undefined, defaultProfile: string | undefined, requestedId?: string, options?: ResolveProfileOptions): ResolvedProfile;
155
+ /**
156
+ * Look a profile up by id, then by alias. Real profiles ALWAYS win: an alias
157
+ * is only a redirect left behind by a rename, and a stale one must never
158
+ * shadow a live account that has since taken the name.
159
+ */
160
+ export declare function findProfileByIdOrAlias(profiles: ProfileConfig[], id: string): ProfileConfig | undefined;
96
161
  /**
97
162
  * Get all configured profile IDs with their types.
98
163
  */
@@ -100,5 +165,6 @@ export declare function listProfiles(profiles: ProfileConfig[] | undefined, defa
100
165
  id: string;
101
166
  type: ProfileType;
102
167
  isActive: boolean;
168
+ aliases?: string[];
103
169
  }>;
104
170
  //# sourceMappingURL=profiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/proxy/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAS/D;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,EAAE,CAkBtD;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,KAAK,GAAG,aAAa,CAAA;AAE9D,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAA;IACV;;;;;OAKG;IACH,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAOD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAEvD;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAY3E;AAUD;;kEAEkE;AAClE,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,SAAS,GAAG,aAAa,EAAE,CAOjG;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,SAAS,GAAG,OAAO,CAEhF;AAED,6DAA6D;AAC7D,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qEAAqE;IACrE,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EACrC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,eAAe,CAyBjB;AAkCD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EACrC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAU7D"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/proxy/profiles.ts"],"names":[],"mappings":"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"}
@@ -201,5 +201,12 @@ export declare const GIT_STATUS_PROVENANCE_NOTE: string;
201
201
  /** Models must understand the client-history transport used by Meridian.
202
202
  * Keep this constant across turns so normal resumes retain their system cache. */
203
203
  export declare const REPLAY_PROVENANCE_NOTE: string;
204
+ /**
205
+ * Prompt-level counter-instruction to suppress writes to the CLI's proxy-host
206
+ * scratchpad directory in passthrough mode (#627, #1049).
207
+ * Avoids setting CLAUDE_CODE_SESSION_KIND=bg which causes CLI 2.1.274+ to
208
+ * register phantom job records under ~/.claude/jobs/ (#1049).
209
+ */
210
+ export declare const SCRATCHPAD_COUNTER_INSTRUCTION: string;
204
211
  export declare function buildQueryOptions(ctx: QueryContext, abortController?: AbortController): BuildQueryResult;
205
212
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/proxy/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/proxy/query.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,16 @@
21
21
  * exhaustion/assignment trackers below hold mutable in-memory state (by
22
22
  * design — see their own doc comments) but still perform no I/O.
23
23
  */
24
- export type RoutingMode = "active" | "sticky" | "priority";
24
+ import type { RouteKind } from "../telemetry/types";
25
+ export type RoutingMode = "active" | "sticky" | "priority" | "active+priority";
26
+ export declare const ACTIVE_PRIORITY: "active+priority";
27
+ /**
28
+ * Every selectable mode, in the order the settings UI offers them. Single
29
+ * source of truth: the mode list was previously written out again inside the
30
+ * settings route's validator and a third time in the page's `<select>`, so a
31
+ * new mode parsed correctly and still could not be selected.
32
+ */
33
+ export declare const ROUTING_MODES: readonly RoutingMode[];
25
34
  export type PriorityFailbackPolicy = "new-conversation" | "next-user-turn";
26
35
  export type PriorityAssignment = {
27
36
  readonly profileId: string;
@@ -37,10 +46,37 @@ export type PriorityPromotionInput = {
37
46
  * Parse a routing mode string (from settings or MERIDIAN_ROUTING).
38
47
  * Unknown values fall back to "active" — a typo must never change
39
48
  * routing behavior into something surprising.
49
+ *
50
+ * The three original branches stay exact-match, so every value that falls back
51
+ * to "active" today still does. Only the new mode accepts separator variants
52
+ * ("active-priority", "active_priority", "active priority"): its canonical
53
+ * spelling carries a `+`, which a query string decodes to a space, and being
54
+ * strict there would turn one plausible transport detail into silently routing
55
+ * all traffic to the active profile with no failover.
40
56
  */
41
57
  export declare function getRoutingMode(raw: string | undefined): RoutingMode;
58
+ export declare function isPoolRouting(mode: RoutingMode): boolean;
42
59
  export declare function getPriorityFailbackPolicy(raw: string | undefined): PriorityFailbackPolicy;
43
60
  export declare function shouldPromotePriorityAssignment(input: PriorityPromotionInput): boolean;
61
+ /**
62
+ * Classify how the serving profile was chosen, from values the caller already
63
+ * holds. Runs per request, so it may never do I/O or read settings of its own.
64
+ *
65
+ * Undefined when the routing mode isn't known (the outer catch records before
66
+ * routing resolves): the pin and the hop flag still prove
67
+ * `pinned`/`priority-hop`, but "active" would be a guess, and a guess on an
68
+ * attribution dashboard is worse than a blank.
69
+ */
70
+ export declare function classifyRouteKind(input: {
71
+ pinnedProfileHeader?: string | undefined;
72
+ /**
73
+ * One internal hop of a pool dispatch. A flag rather than a header because
74
+ * the failover re-enters the handler directly, so there is no second HTTP
75
+ * request for a header to travel on.
76
+ */
77
+ priorityHop?: boolean | undefined;
78
+ routingMode?: RoutingMode | undefined;
79
+ }): RouteKind | undefined;
44
80
  /**
45
81
  * Pick the sticky profile for a session: the profile with the highest
46
82
  * rendezvous score. Returns undefined when there is nothing to pick
@@ -76,6 +112,28 @@ export declare function choosePriorityProfile(order: readonly string[], isExhaus
76
112
  id: string;
77
113
  allExhausted: boolean;
78
114
  } | undefined;
115
+ /**
116
+ * Candidate order for `active+priority`: the active profile first, then the
117
+ * priority order behind it as fallbacks.
118
+ *
119
+ * The active profile OUTRANKS an existing session assignment, which is the one
120
+ * place this mode deliberately disagrees with `priority`. In `priority` the
121
+ * pool head moves on its own (a cooldown expires) and affinity protects a
122
+ * conversation from being dragged along - worth protecting, since a live
123
+ * request here showed a 441k-token cache read at a 99.8% hit rate, all of which
124
+ * is thrown away by a move. In `active+priority` the head only ever moves
125
+ * because a human or a supervisor moved it, and moving running conversations is
126
+ * precisely what they moved it FOR. Honouring the old assignment would mean
127
+ * switching the active profile changed nothing for any conversation already
128
+ * under way, which is every conversation that matters and leaves the mode
129
+ * indistinguishable from plain `priority`.
130
+ *
131
+ * Affinity still applies BELOW the active profile: while the active profile is
132
+ * refusing, a session returns to the same fallback it used last time rather
133
+ * than being re-picked each turn, so an outage costs one cold cache instead of
134
+ * one per turn.
135
+ */
136
+ export declare function chooseActivePriorityCandidates(activeId: string, order: readonly string[], isExhausted: (id: string) => boolean, assigned?: string): string[];
79
137
  export interface ExhaustionEntry {
80
138
  id: string;
81
139
  until: number;
@@ -1 +1 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/proxy/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;AAC1D,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG,gBAAgB,CAAA;AAE1E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,CAAA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAKnE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,sBAAsB,CAEzF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAMtF;AAaD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAYvG;AAED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,CAM/F,CAAA;AAOD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC1C;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAUxC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GACnC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAOnD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,GAAG;IADhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuD;gBAChD,GAAG,GAAE,MAAM,MAAiB;IAEzD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAMrD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAUhC,6DAA6D;IAC7D,QAAQ,IAAI,eAAe,EAAE;CAQ9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;gBAEnC,GAAG,EAAE,MAAM;IAExC,yDAAyD;IACzD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAQhD,wFAAwF;IACxF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IASjD,aAAa,CACX,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,KAAK,EAAE,kBAAkB,GACxB,OAAO;IAMV,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAA;AAqB1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAE9D;AAED,yFAAyF;AACzF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACnC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAQf"}
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/proxy/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,iBAAiB,CAAA;AAE9E,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAA;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAsD,CAAA;AAEtG,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG,gBAAgB,CAAA;AAE1E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAMnE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,sBAAsB,CAEzF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAMtF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CACtC,GAAG,SAAS,GAAG,SAAS,CAWxB;AAaD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAYvG;AAED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,CAM/F,CAAA;AAOD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC1C;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAUxC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GACnC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAOnD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EACpC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAaV;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,GAAG;IADhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuD;gBAChD,GAAG,GAAE,MAAM,MAAiB;IAEzD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAMrD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAUhC,6DAA6D;IAC7D,QAAQ,IAAI,eAAe,EAAE;CAQ9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;gBAEnC,GAAG,EAAE,MAAM;IAExC,yDAAyD;IACzD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAQhD,wFAAwF;IACxF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IASjD,aAAa,CACX,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,KAAK,EAAE,kBAAkB,GACxB,OAAO;IAMV,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAA;AAqB1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAE9D;AAED,yFAAyF;AACzF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACnC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAQf"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * SDK feature toggles — per-adapter configuration for Claude Code features.
3
3
  *
4
- * Persisted under MERIDIAN_CONFIG_DIR, defaulting to ~/.config/meridian.
4
+ * Persisted to sdk-features.json in the config directory (see configDir.ts).
5
5
  * Read at request time (no restart needed to pick up changes).
6
6
  */
7
7
  export interface AdapterFeatures {
@@ -1 +1 @@
1
- {"version":3,"file":"sdkFeatures.d.ts","sourceRoot":"","sources":["../../src/proxy/sdkFeatures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,gBAAgB,EAAE,OAAO,CAAA;IACzB,kFAAkF;IAClF,kBAAkB,EAAE,OAAO,CAAA;IAC3B,4DAA4D;IAC5D,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;IACpC,wDAAwD;IACxD,MAAM,EAAE,OAAO,CAAA;IACf,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAA;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;IAC7C,4CAA4C;IAC5C,mBAAmB,EAAE,OAAO,CAAA;IAC5B,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;;;;;OAMG;IACH,kBAAkB,EAAE,OAAO,CAAA;IAC3B,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAA;IACjB,uEAAuE;IACvE,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;AA8IpE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAU1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,SAAS,CAKhG;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAOtE;AAKD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAgC5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAInG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAI9D"}
1
+ {"version":3,"file":"sdkFeatures.d.ts","sourceRoot":"","sources":["../../src/proxy/sdkFeatures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,gBAAgB,EAAE,OAAO,CAAA;IACzB,kFAAkF;IAClF,kBAAkB,EAAE,OAAO,CAAA;IAC3B,4DAA4D;IAC5D,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;IACpC,wDAAwD;IACxD,MAAM,EAAE,OAAO,CAAA;IACf,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAA;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;IAC7C,4CAA4C;IAC5C,mBAAmB,EAAE,OAAO,CAAA;IAC5B,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;;;;;OAMG;IACH,kBAAkB,EAAE,OAAO,CAAA;IAC3B,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAA;IACjB,uEAAuE;IACvE,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;AA+IpE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAU1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,SAAS,CAKhG;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAOtE;AAKD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAgC5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAInG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAI9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/proxy/server.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAGvD,YAAY,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAA;AAKpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AA4EnG,OAAO,EACL,kBAAkB,EAElB,WAAW,EACX,oBAAoB,EAMpB,KAAK,aAAa,EAGnB,MAAM,mBAAmB,CAAA;AAI1B,OAAO,EAKL,iBAAiB,EACjB,mBAAmB,EAKpB,MAAM,iBAAiB,CAAA;AA0CxB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,CAAA;AA+Y7B,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAmoPhF;AAWD,wBAAgB,gCAAgC,IAAI,IAAI,CAavD;AAED,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8NhG"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/proxy/server.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAGvD,YAAY,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAA;AAKpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AA4FnG,OAAO,EACL,kBAAkB,EAElB,WAAW,EACX,oBAAoB,EAMpB,KAAK,aAAa,EAGnB,MAAM,mBAAmB,CAAA;AAI1B,OAAO,EAKL,iBAAiB,EACjB,mBAAmB,EAKpB,MAAM,iBAAiB,CAAA;AA0CxB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,CAAA;AAuZ7B,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CA+nQhF;AAWD,wBAAgB,gCAAgC,IAAI,IAAI,CAavD;AAED,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkPhG"}
@@ -23,6 +23,11 @@ export declare function extractClientCwd(body: any): string | undefined;
23
23
  * contains dynamic file trees/diagnostics that change every request).
24
24
  * This prevents cross-project collisions when different projects start
25
25
  * with the same first message.
26
+ * <system-reminder> blocks injected into user messages are stripped
27
+ * before hashing: they are per-machine environment noise, not conversation
28
+ * identity, and can otherwise dominate the hash window. When a client
29
+ * opens with a reminder-only message (Droid), the seed comes from the
30
+ * first user message that carries actual task text.
26
31
  */
27
32
  export declare function getConversationFingerprint(messages: Array<{
28
33
  role: string;
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAc9D;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAW7H;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,EAC/C,gBAAgB,CAAC,EAAE,MAAM,GACxB,MAAM,GAAG,IAAI,CAIf"}
1
+ {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAc9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CA6B7H;AAWD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,EAC/C,gBAAgB,CAAC,EAAE,MAAM,GACxB,MAAM,GAAG,IAAI,CAIf"}
@@ -1 +1 @@
1
- {"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/lineage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../../src/proxy/session/lineage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/proxy/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;aACnB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAI/C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM;CAIjD;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM;CAIjD;AAED,qBAAa,4BAA6B,SAAQ,KAAK;aAEnC,UAAU,EAAE,MAAM;aAClB,WAAW,EAAE,MAAM;gBADnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM;CAKtC;AA+BD,wBAAgB,sBAAsB,IAAI,MAAM,CAK/C;AASD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAA;AAE5C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,kBAAkB,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,8BAA8B,aAGzC,CAAA;AAeF,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAYrF;AAED,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;AAE3D;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,SAAS,MAAM,EAEI,EAC7B,KAAK,GAAE,YASN,GACA,iBAAiB,CAQnB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAE/F;AAgCD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAgB/F;AAaD,sDAAsD;AACtD,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC,GAAG,OAAO,CAKV;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,GAAG,MAAM,GAAG,SAAS,CAgBrB;AAMD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,GAAE,kBAAyB,GACpC,WAAW,CAiFb"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/proxy/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;aACnB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAI/C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM;CAIjD;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM;CAIjD;AAED,qBAAa,4BAA6B,SAAQ,KAAK;aAEnC,UAAU,EAAE,MAAM;aAClB,WAAW,EAAE,MAAM;gBADnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM;CAKtC;AA+BD,wBAAgB,sBAAsB,IAAI,MAAM,CAK/C;AASD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAA;AAE5C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,kBAAkB,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,8BAA8B,aAIzC,CAAA;AAeF,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAYrF;AAED,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;AAE3D;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,GAAE,SAAS,MAAM,EAEI,EAC7B,KAAK,GAAE,YASN,GACA,iBAAiB,CAQnB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAE/F;AAgCD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAgB/F;AAaD,sDAAsD;AACtD,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC,GAAG,OAAO,CAKV;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,GAAG,MAAM,GAAG,SAAS,CAgBrB;AAMD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,GAAE,kBAAyB,GACpC,WAAW,CAiFb"}