@lerianstudio/matcher-mcp 5.0.0-beta.64 → 5.0.0-beta.66

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 (177) hide show
  1. package/dist/auth/request-token.js +11 -69
  2. package/dist/auth/request-token.js.map +1 -1
  3. package/dist/config.js +5 -20
  4. package/dist/config.js.map +1 -1
  5. package/dist/copilot/agent.js +5 -9
  6. package/dist/copilot/agent.js.map +1 -1
  7. package/dist/copilot/provider-anthropic.js +2 -16
  8. package/dist/copilot/provider-anthropic.js.map +1 -1
  9. package/dist/copilot/provider-openrouter.js +5 -18
  10. package/dist/copilot/provider-openrouter.js.map +1 -1
  11. package/dist/copilot/provider-shared.js +11 -0
  12. package/dist/copilot/provider-shared.js.map +1 -1
  13. package/dist/copilot/speech-provider.js +84 -0
  14. package/dist/copilot/speech-provider.js.map +1 -0
  15. package/dist/copilot/sse.js +5 -0
  16. package/dist/copilot/sse.js.map +1 -1
  17. package/dist/copilot/test_helpers.js +50 -0
  18. package/dist/copilot/test_helpers.js.map +1 -0
  19. package/dist/copilot/tools.js +14 -65
  20. package/dist/copilot/tools.js.map +1 -1
  21. package/dist/copilot/transcribe-handler.js +8 -93
  22. package/dist/copilot/transcribe-handler.js.map +1 -1
  23. package/dist/copilot/turn-request.js +76 -0
  24. package/dist/copilot/turn-request.js.map +1 -0
  25. package/dist/copilot/turns-handler.js +11 -102
  26. package/dist/copilot/turns-handler.js.map +1 -1
  27. package/dist/observability/otel.js +7 -29
  28. package/dist/observability/otel.js.map +1 -1
  29. package/dist/server.js +12 -81
  30. package/dist/server.js.map +1 -1
  31. package/dist/spec/enum-policy.js +9 -41
  32. package/dist/spec/enum-policy.js.map +1 -1
  33. package/dist/spec/schema-parity.js +4 -18
  34. package/dist/spec/schema-parity.js.map +1 -1
  35. package/dist/tools/context/list.js +7 -34
  36. package/dist/tools/context/list.js.map +1 -1
  37. package/dist/tools/context/shared.js +3 -29
  38. package/dist/tools/context/shared.js.map +1 -1
  39. package/dist/tools/context/update.js +2 -3
  40. package/dist/tools/context/update.js.map +1 -1
  41. package/dist/tools/dashboard/aggregates.js +2 -8
  42. package/dist/tools/dashboard/aggregates.js.map +1 -1
  43. package/dist/tools/dashboard/cash-impact.js +2 -8
  44. package/dist/tools/dashboard/cash-impact.js.map +1 -1
  45. package/dist/tools/dashboard/match-rate.js +2 -8
  46. package/dist/tools/dashboard/match-rate.js.map +1 -1
  47. package/dist/tools/dashboard/metrics.js +2 -8
  48. package/dist/tools/dashboard/metrics.js.map +1 -1
  49. package/dist/tools/dashboard/shared.js +5 -26
  50. package/dist/tools/dashboard/shared.js.map +1 -1
  51. package/dist/tools/dashboard/sla.js +2 -8
  52. package/dist/tools/dashboard/sla.js.map +1 -1
  53. package/dist/tools/dashboard/source-breakdown.js +2 -8
  54. package/dist/tools/dashboard/source-breakdown.js.map +1 -1
  55. package/dist/tools/dashboard/volume.js +2 -8
  56. package/dist/tools/dashboard/volume.js.map +1 -1
  57. package/dist/tools/dispute/close.js +2 -3
  58. package/dist/tools/dispute/close.js.map +1 -1
  59. package/dist/tools/dispute/list.js +16 -46
  60. package/dist/tools/dispute/list.js.map +1 -1
  61. package/dist/tools/dispute/shared.js +3 -29
  62. package/dist/tools/dispute/shared.js.map +1 -1
  63. package/dist/tools/dispute/submit-evidence.js +2 -3
  64. package/dist/tools/dispute/submit-evidence.js.map +1 -1
  65. package/dist/tools/exception/adjust-entry.js +2 -3
  66. package/dist/tools/exception/adjust-entry.js.map +1 -1
  67. package/dist/tools/exception/history.js +6 -23
  68. package/dist/tools/exception/history.js.map +1 -1
  69. package/dist/tools/exception/list.js +9 -53
  70. package/dist/tools/exception/list.js.map +1 -1
  71. package/dist/tools/exception/shared.js +3 -29
  72. package/dist/tools/exception/shared.js.map +1 -1
  73. package/dist/tools/fee-rule/create.js +2 -3
  74. package/dist/tools/fee-rule/create.js.map +1 -1
  75. package/dist/tools/fee-rule/list.js +7 -28
  76. package/dist/tools/fee-rule/list.js.map +1 -1
  77. package/dist/tools/fee-rule/shared.js +3 -29
  78. package/dist/tools/fee-rule/shared.js.map +1 -1
  79. package/dist/tools/fee-rule/update.js +2 -3
  80. package/dist/tools/fee-rule/update.js.map +1 -1
  81. package/dist/tools/fee-schedule/list.js +6 -23
  82. package/dist/tools/fee-schedule/list.js.map +1 -1
  83. package/dist/tools/fee-schedule/shared.js +3 -29
  84. package/dist/tools/fee-schedule/shared.js.map +1 -1
  85. package/dist/tools/fee-schedule/simulate.js +2 -3
  86. package/dist/tools/fee-schedule/simulate.js.map +1 -1
  87. package/dist/tools/fee-schedule/update.js +2 -3
  88. package/dist/tools/fee-schedule/update.js.map +1 -1
  89. package/dist/tools/field-map/get.js +2 -5
  90. package/dist/tools/field-map/get.js.map +1 -1
  91. package/dist/tools/field-map/list.js +7 -28
  92. package/dist/tools/field-map/list.js.map +1 -1
  93. package/dist/tools/field-map/shared.js +3 -29
  94. package/dist/tools/field-map/shared.js.map +1 -1
  95. package/dist/tools/generic/invoke.js +4 -26
  96. package/dist/tools/generic/invoke.js.map +1 -1
  97. package/dist/tools/ingestion/job-errors-list.js +2 -5
  98. package/dist/tools/ingestion/job-errors-list.js.map +1 -1
  99. package/dist/tools/ingestion/job-get.js +2 -5
  100. package/dist/tools/ingestion/job-get.js.map +1 -1
  101. package/dist/tools/ingestion/job-transactions-list.js +8 -39
  102. package/dist/tools/ingestion/job-transactions-list.js.map +1 -1
  103. package/dist/tools/ingestion/jobs-list.js +7 -34
  104. package/dist/tools/ingestion/jobs-list.js.map +1 -1
  105. package/dist/tools/ingestion/shared.js +3 -29
  106. package/dist/tools/ingestion/shared.js.map +1 -1
  107. package/dist/tools/ingestion/transaction-ignore.js +2 -5
  108. package/dist/tools/ingestion/transaction-ignore.js.map +1 -1
  109. package/dist/tools/ingestion/transactions-search.js +7 -43
  110. package/dist/tools/ingestion/transactions-search.js.map +1 -1
  111. package/dist/tools/input-fields.js +36 -0
  112. package/dist/tools/input-fields.js.map +1 -0
  113. package/dist/tools/match-rule/delete.js +2 -4
  114. package/dist/tools/match-rule/delete.js.map +1 -1
  115. package/dist/tools/match-rule/get.js +2 -4
  116. package/dist/tools/match-rule/get.js.map +1 -1
  117. package/dist/tools/match-rule/list.js +7 -31
  118. package/dist/tools/match-rule/list.js.map +1 -1
  119. package/dist/tools/match-rule/shared.js +3 -29
  120. package/dist/tools/match-rule/shared.js.map +1 -1
  121. package/dist/tools/match-rule/update.js +4 -8
  122. package/dist/tools/match-rule/update.js.map +1 -1
  123. package/dist/tools/matching/groups.js +3 -12
  124. package/dist/tools/matching/groups.js.map +1 -1
  125. package/dist/tools/matching/list.js +7 -31
  126. package/dist/tools/matching/list.js.map +1 -1
  127. package/dist/tools/matching/shared.js +3 -31
  128. package/dist/tools/matching/shared.js.map +1 -1
  129. package/dist/tools/query-handler.js +8 -0
  130. package/dist/tools/query-handler.js.map +1 -0
  131. package/dist/tools/report/count-exceptions.js +2 -8
  132. package/dist/tools/report/count-exceptions.js.map +1 -1
  133. package/dist/tools/report/count-matched.js +2 -8
  134. package/dist/tools/report/count-matched.js.map +1 -1
  135. package/dist/tools/report/count-transactions.js +2 -8
  136. package/dist/tools/report/count-transactions.js.map +1 -1
  137. package/dist/tools/report/count-unmatched.js +2 -8
  138. package/dist/tools/report/count-unmatched.js.map +1 -1
  139. package/dist/tools/report/export-exceptions.js +2 -8
  140. package/dist/tools/report/export-exceptions.js.map +1 -1
  141. package/dist/tools/report/export-matched.js +2 -8
  142. package/dist/tools/report/export-matched.js.map +1 -1
  143. package/dist/tools/report/export-summary.js +2 -8
  144. package/dist/tools/report/export-summary.js.map +1 -1
  145. package/dist/tools/report/export-unmatched.js +2 -8
  146. package/dist/tools/report/export-unmatched.js.map +1 -1
  147. package/dist/tools/report/export-variance.js +2 -8
  148. package/dist/tools/report/export-variance.js.map +1 -1
  149. package/dist/tools/report/matched.js +2 -8
  150. package/dist/tools/report/matched.js.map +1 -1
  151. package/dist/tools/report/shared.js +9 -55
  152. package/dist/tools/report/shared.js.map +1 -1
  153. package/dist/tools/report/summary.js +2 -8
  154. package/dist/tools/report/summary.js.map +1 -1
  155. package/dist/tools/report/unmatched.js +2 -8
  156. package/dist/tools/report/unmatched.js.map +1 -1
  157. package/dist/tools/report/variance.js +2 -8
  158. package/dist/tools/report/variance.js.map +1 -1
  159. package/dist/tools/request-fields.js +17 -0
  160. package/dist/tools/request-fields.js.map +1 -0
  161. package/dist/tools/shared-dispatch.js +38 -0
  162. package/dist/tools/shared-dispatch.js.map +1 -0
  163. package/dist/tools/source/archive.js +2 -5
  164. package/dist/tools/source/archive.js.map +1 -1
  165. package/dist/tools/source/create.js +2 -3
  166. package/dist/tools/source/create.js.map +1 -1
  167. package/dist/tools/source/get.js +2 -5
  168. package/dist/tools/source/get.js.map +1 -1
  169. package/dist/tools/source/list.js +7 -31
  170. package/dist/tools/source/list.js.map +1 -1
  171. package/dist/tools/source/restore.js +2 -5
  172. package/dist/tools/source/restore.js.map +1 -1
  173. package/dist/tools/source/shared.js +3 -29
  174. package/dist/tools/source/shared.js.map +1 -1
  175. package/dist/tools/source/update.js +4 -9
  176. package/dist/tools/source/update.js.map +1 -1
  177. package/package.json +1 -1
@@ -1,45 +1,16 @@
1
- // Request-scoped bearer-token relay — the security spine.
2
- //
3
- // Every tool that touches matcher data must use the *inbound caller's* bearer
4
- // token, resolved per request, and fail closed when it is absent. This module
5
- // owns that contract:
6
- //
7
- // - `runWithBearerToken(token, fn)` seeds an AsyncLocalStorage store at the
8
- // HTTP boundary (transport/http.ts) so handlers can recover the token even
9
- // when the SDK does not thread request headers through `extra`.
10
- // - `getRequestBearerToken(extra?)` returns the current caller's token,
11
- // preferring the SDK-native `extra.requestInfo.headers.authorization` when
12
- // present and falling back to the ALS store seeded at the boundary.
13
- // - `requireMatcherClient(extra?)` is the single chokepoint tools call: it
14
- // reads the token, throws `UnauthenticatedError` when it is missing / empty
15
- // / not a Bearer credential, and otherwise builds a per-request
16
- // `MatcherClient` from it.
17
- //
18
- // Security invariants (asserted by tests):
19
- // - The token is NEVER logged and NEVER placed in an error message.
20
- // - The tenant id MAY be decoded from the relayed JWT (getRequestTenantId),
21
- // but ONLY unverified and KEY-ONLY: used solely to SCOPE config, limits, and
22
- // telemetry to an organization, NEVER as an authorization input. Matcher
23
- // still owns enforcement via the verbatim relayed token, so the tenant
24
- // third rail stays intact (the decode is not trusted for authz). The token
25
- // and its decoded claims are never logged.
1
+ // Request-scoped caller-token relay; data tools fail closed without credentials.
2
+ // SDK request headers take precedence over the transport's AsyncLocalStorage.
3
+ // Never log tokens or claims. Unverified tenant claims scope config, limits and
4
+ // telemetry only; Matcher authorizes using the verbatim relayed bearer token.
26
5
  import { AsyncLocalStorage } from 'node:async_hooks';
27
6
  import { loadConfig } from '../config.js';
28
7
  import { createMatcherClient } from '../matcher/client.js';
29
8
  const authStorage = new AsyncLocalStorage();
30
- /**
31
- * Operator-facing remediation text shown when the caller did not relay a usable
32
- * bearer token. It deliberately contains no token material and no internal
33
- * detail — just what the operator must do to fix their connection.
34
- */
9
+ /** Credential remediation without token material or internal details. */
35
10
  export const UNAUTHENTICATED_REMEDIATION = 'No matcher credential was provided. Configure your MCP client to send an ' +
36
11
  '`Authorization: Bearer <your-matcher-jwt>` header on each request, then ' +
37
12
  'retry. This server holds no credentials of its own and relays yours verbatim.';
38
- /**
39
- * Thrown when a tool requires the caller's matcher credential but none was
40
- * relayed (missing, empty, or not a Bearer credential). Carries only the
41
- * operator remediation text — never any token material.
42
- */
13
+ /** Missing or unusable caller credential; contains remediation, never the token. */
43
14
  export class UnauthenticatedError extends Error {
44
15
  constructor(message = UNAUTHENTICATED_REMEDIATION) {
45
16
  super(message);
@@ -84,17 +55,7 @@ function parseBearer(authorization) {
84
55
  const token = match[1]?.trim();
85
56
  return token && token.length > 0 ? token : undefined;
86
57
  }
87
- /**
88
- * Resolve the current caller's bearer token, request-scoped.
89
- *
90
- * Resolution order:
91
- * 1. SDK-native `extra.requestInfo.headers.authorization`, when the handler
92
- * was given an `extra` carrying request headers.
93
- * 2. The ALS store seeded by `runWithBearerToken` at the HTTP boundary.
94
- *
95
- * Returns `undefined` when no usable Bearer credential is present (missing,
96
- * empty, or non-Bearer scheme) — callers fail closed on that.
97
- */
58
+ /** Prefer a usable SDK bearer, then transport ALS; absent credentials fail closed. */
98
59
  export function getRequestBearerToken(extra) {
99
60
  const fromExtra = parseBearer(authorizationFromExtra(extra));
100
61
  if (fromExtra) {
@@ -103,20 +64,9 @@ export function getRequestBearerToken(extra) {
103
64
  return parseBearer(authStorage.getStore()?.authorization);
104
65
  }
105
66
  /**
106
- * Decode the tenant id from the relayed JWT, request-scoped. UNVERIFIED and
107
- * KEY-ONLY: the value SCOPES config / rate limits / telemetry to an
108
- * organization — it is NEVER an authorization input. Matcher owns enforcement
109
- * via the verbatim relayed token, so the tenant third rail stays intact even
110
- * though this reads the claim.
111
- *
112
- * Reads the same request-scoped bearer `getRequestBearerToken` resolves, splits
113
- * the JWT, base64url-decodes the payload segment (Node stdlib `Buffer` — NO JWT
114
- * library), and reads the tenant claim. Matches the Go/lib-auth extraction order
115
- * (`claimString(claims, "tenant_id", "tenantId")`): prefers `tenant_id`, then
116
- * `tenantId`. Returns `undefined` on ANY malformed/absent token or a
117
- * missing/non-string/empty claim, and NEVER throws — a decode failure fails open
118
- * to the global-config path rather than breaking the turn. The token and its
119
- * claims are never logged.
67
+ * Unverified tenant key for config, limits and telemetry — NEVER authorization.
68
+ * Prefers tenant_id to tenantId. Malformed/absent claims yield undefined and
69
+ * select global config; neither the token nor its claims may enter logs.
120
70
  */
121
71
  export function getRequestTenantId(extra) {
122
72
  const token = getRequestBearerToken(extra);
@@ -146,15 +96,7 @@ export function getRequestTenantId(extra) {
146
96
  return undefined;
147
97
  }
148
98
  }
149
- /**
150
- * The single chokepoint every matcher-touching tool calls. Reads the caller's
151
- * request-scoped token and, when present, returns a `MatcherClient` bound to it.
152
- * Fails closed with `UnauthenticatedError` when the token is absent / empty /
153
- * not a Bearer credential.
154
- *
155
- * `config` is injectable for tests; production callers pass nothing and get the
156
- * process config.
157
- */
99
+ /** Build a caller-bound client or fail closed; config is injectable for tests. */
158
100
  export function requireMatcherClient(extra, config = loadConfig()) {
159
101
  const token = getRequestBearerToken(extra);
160
102
  if (!token) {
@@ -1 +1 @@
1
- {"version":3,"file":"request-token.js","sourceRoot":"","sources":["../../src/auth/request-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-token.js","sourceRoot":"","sources":["../../src/auth/request-token.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,10 +1,4 @@
1
- // Bootstrap configuration for the Matcher MCP server.
2
- //
3
- // Values are read from the environment once and frozen into a typed object.
4
- // Defaults are chosen to avoid collisions with matcher dev (matcher runs on
5
- // 4018; this server defaults to 4019). The matcher base URL is surfaced here
6
- // so the HTTP client (task 1.3.1) and the generic invoke / curated tools
7
- // consume a single source of truth instead of reading process.env directly.
1
+ // Environment configuration is loaded once and frozen for all relay consumers.
8
2
  import { loadTenantConfig } from './copilot/tenant-config.js';
9
3
  const DEFAULT_PORT = 4019;
10
4
  const DEFAULT_MATCHER_API_URL = 'http://localhost:4018';
@@ -33,9 +27,7 @@ function parsePort(raw, fallback) {
33
27
  return value;
34
28
  }
35
29
  /**
36
- * Parse a positive timeout (ms) from a raw env string, falling back to the
37
- * default when unset. An explicitly-set but invalid value is a misconfiguration
38
- * and throws, rather than silently degrading to the default (fail-loud at boot).
30
+ * Default an unset timeout; reject explicit invalid millisecond values at boot.
39
31
  */
40
32
  function parseTimeoutMs(raw, fallback) {
41
33
  if (raw === undefined || raw === '') {
@@ -48,9 +40,7 @@ function parseTimeoutMs(raw, fallback) {
48
40
  return value;
49
41
  }
50
42
  /**
51
- * Parse a positive byte count from a raw env string, falling back to the default
52
- * when unset. An explicitly-set but invalid value is a misconfiguration and
53
- * throws, rather than silently degrading to the default (fail-loud at boot).
43
+ * Default an unset body limit; reject explicit invalid byte counts at boot.
54
44
  */
55
45
  function parseMaxBodyBytes(raw, fallback) {
56
46
  if (raw === undefined || raw === '') {
@@ -82,10 +72,7 @@ function parseBool(raw, fallback, key) {
82
72
  throw new Error(`invalid ${key}: ${raw} (expected one of true, false, 1, 0)`);
83
73
  }
84
74
  /**
85
- * Parse the copilot provider from a raw env string, falling back to the default
86
- * when unset. Trimmed + case-insensitive. An explicitly-set but unrecognized
87
- * value is a misconfiguration and throws, rather than silently coercing to a
88
- * default (fail-loud at boot), mirroring parseBool.
75
+ * Default an unset provider; trim and case-fold explicit names, rejecting unknowns.
89
76
  */
90
77
  function parseCopilotProvider(raw, fallback) {
91
78
  if (raw === undefined || raw === '') {
@@ -113,9 +100,7 @@ function parseMaxToolIterations(raw, fallback) {
113
100
  return value;
114
101
  }
115
102
  /**
116
- * Parse a positive integer from a raw env string, falling back to the default
117
- * when unset. An explicitly-set non-positive or non-integer value is a
118
- * misconfiguration and throws (fail-loud at boot), mirroring parseMaxBodyBytes.
103
+ * Default an unset integer; reject explicit non-positive or fractional values.
119
104
  */
120
105
  function parsePositiveInt(raw, fallback, key) {
121
106
  if (raw === undefined || raw === '') {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAE5E,OAAO,EAAE,gBAAgB,EAA+B,MAAM,4BAA4B,CAAA;AAqK1F,MAAM,YAAY,GAAG,IAAI,CAAA;AACzB,MAAM,uBAAuB,GAAG,uBAAuB,CAAA;AACvD,MAAM,kBAAkB,GAAG,MAAM,CAAA;AACjC,MAAM,sBAAsB,GAAG,SAAS,CAAA,CAAC,QAAQ;AACjD,MAAM,yBAAyB,GAAG,aAAa,CAAA;AAC/C,MAAM,wBAAwB,GAAG,WAAW,CAAA;AAC5C,MAAM,mCAAmC,GAAG,CAAC,CAAA;AAC7C,MAAM,+BAA+B,GAAG,OAAO,CAAA;AAC/C,MAAM,kCAAkC,GAAG,EAAE,CAAA;AAC7C,MAAM,gCAAgC,GAAG,EAAE,CAAA;AAC3C,MAAM,mCAAmC,GAAG,WAAW,CAAA;AAEvD;;;;GAIG;AACH,SAAS,SAAS,CAAC,GAAuB,EAAE,QAAgB;IAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,qBAAqB,GAAG,oCAAoC,CAC7D,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAuB,EAAE,QAAgB;IAC/D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,+BAA+B,GAAG,gDAAgD,CACnF,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,GAAuB,EAAE,QAAgB;IAClE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,2BAA2B,GAAG,yCAAyC,CACxE,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,GAAuB,EAAE,QAAiB,EAAE,GAAW;IACxE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3C,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAChD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACjD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,IAAI,KAAK,CACb,WAAW,GAAG,KAAK,GAAG,sCAAsC,CAC7D,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAC3B,GAAuB,EACvB,QAAoC;IAEpC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3C,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAC9D,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,6BAA6B,GAAG,0CAA0C,CAC3E,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,GAAuB,EAAE,QAAgB;IACvE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,wCAAwC,GAAG,iCAAiC,CAC7E,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,GAAuB,EAAE,QAAgB,EAAE,GAAW;IAC9E,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,GAAG,gCAAgC,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,GAAuB;IAClD,MAAM,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,CAAA;IACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,0CAA0C,KAAK,mCAAmC,CACnF,CAAA;IACH,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,0CAA0C,KAAK,mCAAmC,CACnF,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,uBAAuB,CAAA;IAC5E,MAAM,mBAAmB,GAAG,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,aAAa,CAAA;IAC/E,MAAM,YAAY,GAAG,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAA;IAC5D,MAAM,eAAe,GACnB,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,yBAAyB,CAAA;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC3C,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAChD,mBAAmB,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5D,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;QACrE,YAAY,EAAE,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,sBAAsB,CAAC;QAC3E,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,CAAC;QAC3E,wBAAwB,EAAE,YAAY,IAAI,SAAS;QACnD,eAAe;QACf,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,SAAS;QAC3D,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,SAAS;QAC7D,eAAe,EAAE,oBAAoB,CACnC,GAAG,CAAC,gBAAgB,EACpB,wBAAwB,CACzB;QACD,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS;QACpD,wBAAwB,EAAE,sBAAsB,CAC9C,GAAG,CAAC,2BAA2B,EAC/B,mCAAmC,CACpC;QACD,oBAAoB,EAAE,gBAAgB,CACpC,GAAG,CAAC,uBAAuB,EAC3B,+BAA+B,EAC/B,yBAAyB,CAC1B;QACD,sBAAsB,EAAE,gBAAgB,CACtC,GAAG,CAAC,0BAA0B,EAC9B,kCAAkC,EAClC,4BAA4B,CAC7B;QACD,qBAAqB,EAAE,gBAAgB,CACrC,GAAG,CAAC,wBAAwB,EAC5B,gCAAgC,EAChC,0BAA0B,CAC3B;QACD,2BAA2B,EAAE,mBAAmB,CAAC,GAAG,CAAC,6BAA6B,CAAC;QACnF,yBAAyB,EACvB,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,IAAI,mCAAmC;QAChF,yBAAyB,EAAE,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,IAAI,SAAS;QAChF,mBAAmB,EAAE,gBAAgB,CAAC,GAAG,CAAC;KAC3C,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  // module — the request-scoped executor resolves it from the ALS store.
15
15
  import { instrumentCopilotTool, instrumentCopilotTurn, instrumentProviderStream, recordCopilotTokens, } from '../observability/otel.js';
16
16
  import { InvokeError, Invoker } from '../tools/generic/invoke.js';
17
+ import { finishWithError } from './sse.js';
17
18
  import { executeReadTool, WRITE_ALLOWLIST } from './tools.js';
18
19
  /**
19
20
  * Sum a round's input+output tokens, failing open: `undefined` usage (a provider
@@ -66,8 +67,7 @@ function emitProposal(call, index, sink) {
66
67
  // is latent; but a future one would execute WITHOUT it (a silently wrong
67
68
  // write). Refuse loudly instead of minting a lossy proposal.
68
69
  if (request.query !== undefined && Object.keys(request.query).length > 0) {
69
- sink.error('proposal_invalid', 'write proposals cannot carry query parameters');
70
- sink.done('end');
70
+ finishWithError(sink, 'proposal_invalid', 'write proposals cannot carry query parameters');
71
71
  return 'end';
72
72
  }
73
73
  const op = index.operations.get(call.name);
@@ -91,8 +91,7 @@ function emitProposal(call, index, sink) {
91
91
  }
92
92
  catch (err) {
93
93
  const detail = err instanceof InvokeError ? err.message : 'failed to prepare the proposal';
94
- sink.error('proposal_invalid', detail);
95
- sink.done('end');
94
+ finishWithError(sink, 'proposal_invalid', detail);
96
95
  return 'end';
97
96
  }
98
97
  }
@@ -145,9 +144,7 @@ export async function runAgentTurn(opts) {
145
144
  // renders as an error, mirroring the iteration-cap path.
146
145
  if (maxTurnTokens !== undefined && totalTokens >= maxTurnTokens) {
147
146
  setStop('token_limit');
148
- sink.error('turn_token_limit', `reached the per-turn token limit (${maxTurnTokens})`);
149
- sink.done('end');
150
- return;
147
+ return finishWithError(sink, 'turn_token_limit', `reached the per-turn token limit (${maxTurnTokens})`);
151
148
  }
152
149
  // ponytail: sequential tool exec; parallelize only if a turn routinely
153
150
  // fans out many reads. Matcher reads are cheap, so ordering keeps the SSE
@@ -174,8 +171,7 @@ export async function runAgentTurn(opts) {
174
171
  }
175
172
  // Ran `maxIterations` tool rounds and the model still wants more: hard stop.
176
173
  setStop('iteration_limit');
177
- sink.error('tool_iteration_limit', `reached the tool-call limit (${maxIterations})`);
178
- sink.done('end');
174
+ finishWithError(sink, 'tool_iteration_limit', `reached the tool-call limit (${maxIterations})`);
179
175
  });
180
176
  }
181
177
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/copilot/agent.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,yEAAyE;AACzE,0EAA0E;AAC1E,uCAAuC;AACvC,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AAEvE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAUjE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA+B7D;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAA2B;IAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,OAAO,KAAK,GAAG,MAAM,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,YAAY,CACnB,IAAiB,EACjB,KAAqB,EACrB,IAAa;IAEb,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAgD,CAAA;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAoD,CAAA;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;IAC5B,IAAI,CAAC;QACH,yEAAyE;QACzE,mEAAmE;QACnE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YAC1C,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,CAAA;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,yEAAyE;QACzE,6DAA6D;QAC7D,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAA;YAC/E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAChB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,OAAO,GACX,EAAE,KAAK,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC,OAAO;YACZ,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;QACtC,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,KAAK,IAAI;YACrB,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAChC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YAC1B,CAAC,CAAE,OAAO,CAAC,IAAgC;YAC3C,CAAC,CAAC,EAAE,CAAA;QACR,IAAI,CAAC,QAAQ,CAAC;YACZ,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM;YACN,OAAO;SACR,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACrB,OAAO,UAAU,CAAA;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GACV,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAA;QAC7E,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAyB;IAC1D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;IAC9E,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAA;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,eAAe,CAAA;IAEvD,MAAM,qBAAqB,CACzB;QACE,QAAQ,EAAE,YAAY;QACtB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,aAAa;KACd,EACD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI,WAAwC,CAAA;QAC5C,IAAI,WAAW,GAAG,CAAC,CAAA;QAEnB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;YAClE,uEAAuE;YACvE,8EAA8E;YAC9E,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpB,OAAO,CAAC,SAAS,CAAC,CAAA;gBAClB,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC3C,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EACrE,GAAG,EAAE,CACH,QAAQ,CAAC,UAAU,CACjB;gBACE,MAAM;gBACN,QAAQ;gBACR,KAAK;gBACL,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD,EACD,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC7C,CACJ,CAAA;YAED,wEAAwE;YACxE,0EAA0E;YAC1E,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/C,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAExC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC1B,wEAAwE;gBACxE,gDAAgD;gBAChD,OAAO,CAAC,KAAK,CAAC,CAAA;gBACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAChB,OAAM;YACR,CAAC;YAED,yEAAyE;YACzE,wEAAwE;YACxE,sEAAsE;YACtE,yDAAyD;YACzD,IAAI,aAAa,KAAK,SAAS,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;gBAChE,OAAO,CAAC,aAAa,CAAC,CAAA;gBACtB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,qCAAqC,aAAa,GAAG,CAAC,CAAA;gBACrF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAChB,OAAM;YACR,CAAC;YAED,uEAAuE;YACvE,0EAA0E;YAC1E,uCAAuC;YACvC,MAAM,OAAO,GAAoB,EAAE,CAAA;YACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,iEAAiE;gBACjE,mEAAmE;gBACnE,oBAAoB;gBACpB,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;oBACxC,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAC/B,mEAAmE;gBACnE,kEAAkE;gBAClE,MAAM,CAAC,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;gBAChF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,2EAA2E;YAC3E,yEAAyE;YACzE,WAAW,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAA;QACpD,CAAC;QAED,6EAA6E;QAC7E,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,gCAAgC,aAAa,GAAG,CAAC,CAAA;QACpF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAClB,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/copilot/agent.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  // call — nothing persists across turns.
6
6
  import Anthropic from '@anthropic-ai/sdk';
7
7
  import { CopilotUnconfiguredError } from './provider-factory.js';
8
- import { parseToolInput } from './provider-shared.js';
8
+ import { buildTurnResult } from './provider-shared.js';
9
9
  // Max tokens the Messages API requires per request. A fixed ceiling is fine for
10
10
  // grounded read-only answers.
11
11
  // ponytail: fixed cap; make configurable if turns start truncating.
@@ -123,21 +123,7 @@ export function createAnthropicProvider(config, streamFn) {
123
123
  cacheCreationTokens,
124
124
  cacheReadTokens,
125
125
  });
126
- if (toolBlocks.size === 0) {
127
- // ponytail: turn-end is inferred from the absence of tool_use blocks —
128
- // we do NOT inspect stop_reason, so a max_tokens-truncated text answer
129
- // renders as a clean end. Acceptable: 4096 tokens is ample for grounded
130
- // config answers, and a truncated WRITE fails safe (partial tool JSON →
131
- // parseToolInput → {} → assemble rejects → proposal_invalid). Upgrade
132
- // path: capture stop_reason into the done label if operators hit it.
133
- return { stop: 'end', ...(usage !== undefined ? { usage } : {}) };
134
- }
135
- const calls = [...toolBlocks.values()].map((block) => ({
136
- id: block.id,
137
- name: block.name,
138
- input: parseToolInput(block.json),
139
- }));
140
- return { stop: 'tool_use', calls, ...(usage !== undefined ? { usage } : {}) };
126
+ return buildTurnResult([...toolBlocks.values()], usage);
141
127
  },
142
128
  };
143
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider-anthropic.js","sourceRoot":"","sources":["../../src/copilot/provider-anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-anthropic.js","sourceRoot":"","sources":["../../src/copilot/provider-anthropic.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  // back into the LLMProvider seam. Stateless per call.
7
7
  import OpenAI from 'openai';
8
8
  import { CopilotModelRequiredError, CopilotUnconfiguredError } from './provider-factory.js';
9
- import { parseToolInput } from './provider-shared.js';
9
+ import { buildTurnResult } from './provider-shared.js';
10
10
  const OPENROUTER_BASE_URL = 'https://openrouter.ai/api/v1';
11
11
  // The seam's LLMToolResult carries only { id, content }. OpenAI requires each
12
12
  // role:'tool' message to answer an assistant message carrying a tool_call with
@@ -63,7 +63,7 @@ export function createOpenRouterProvider(config, streamFn) {
63
63
  handlers.onTextDelta(delta.content);
64
64
  }
65
65
  for (const fragment of delta.tool_calls ?? []) {
66
- const call = toolCalls.get(fragment.index) ?? { id: '', name: '', args: '' };
66
+ const call = toolCalls.get(fragment.index) ?? { id: '', name: '', json: '' };
67
67
  if (fragment.id !== undefined) {
68
68
  call.id = fragment.id;
69
69
  }
@@ -71,28 +71,15 @@ export function createOpenRouterProvider(config, streamFn) {
71
71
  call.name = fragment.function.name;
72
72
  }
73
73
  if (fragment.function?.arguments !== undefined) {
74
- call.args += fragment.function.arguments;
74
+ call.json += fragment.function.arguments;
75
75
  }
76
76
  toolCalls.set(fragment.index, call);
77
77
  }
78
78
  }
79
- if (toolCalls.size === 0) {
80
- // ponytail: turn-end is inferred from the absence of tool calls — we do
81
- // NOT inspect finish_reason, so a length-truncated text answer renders as
82
- // a clean end. Acceptable: 4096 tokens is ample for grounded config
83
- // answers, and a truncated WRITE fails safe (partial tool JSON →
84
- // parseToolInput → {} → assemble rejects → proposal_invalid). Upgrade
85
- // path: capture finish_reason into the done label if operators hit it.
86
- return { stop: 'end', ...(usage !== undefined ? { usage } : {}) };
87
- }
88
79
  const calls = [...toolCalls.entries()]
89
80
  .sort(([a], [b]) => a - b)
90
- .map(([, call]) => ({
91
- id: call.id,
92
- name: call.name,
93
- input: parseToolInput(call.args),
94
- }));
95
- return { stop: 'tool_use', calls, ...(usage !== undefined ? { usage } : {}) };
81
+ .map(([, call]) => call);
82
+ return buildTurnResult(calls, usage);
96
83
  },
97
84
  };
98
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider-openrouter.js","sourceRoot":"","sources":["../../src/copilot/provider-openrouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-openrouter.js","sourceRoot":"","sources":["../../src/copilot/provider-openrouter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,15 @@
1
1
  // Helpers shared by the Anthropic and OpenRouter LLMProvider adapters.
2
+ /** Normalize completed calls; each adapter owns ordering and usage accounting.
3
+ * Stop is inferred from calls, not provider finish reasons: truncated text still
4
+ * ends cleanly, while malformed tool JSON becomes {} for downstream validation.
5
+ */
6
+ export function buildTurnResult(blocks, usage) {
7
+ const metering = usage !== undefined ? { usage } : {};
8
+ if (blocks.length === 0)
9
+ return { stop: 'end', ...metering };
10
+ const calls = blocks.map(({ id, name, json }) => ({ id, name, input: parseToolInput(json) }));
11
+ return { stop: 'tool_use', calls, ...metering };
12
+ }
2
13
  /**
3
14
  * Parse accumulated tool-call argument JSON into an input object. A blank or
4
15
  * unparseable value resolves to `{}` so a malformed stream never crashes the
@@ -1 +1 @@
1
- {"version":3,"file":"provider-shared.js","sourceRoot":"","sources":["../../src/copilot/provider-shared.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,OAAO,MAAiC,CAAA;QAC1C,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"provider-shared.js","sourceRoot":"","sources":["../../src/copilot/provider-shared.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAIvE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAoD,EACpD,KAA2B;IAE3B,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7F,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,OAAO,MAAiC,CAAA;QAC1C,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,84 @@
1
+ /** Thrown by the default transcriber when the endpoint answers badly. Carries a
2
+ * status only — never any part of the request or the response body. */
3
+ export class TranscriptionProviderError extends Error {
4
+ status;
5
+ constructor(status) {
6
+ super(status === undefined
7
+ ? 'the transcription endpoint could not be reached'
8
+ : `the transcription endpoint answered ${status}`);
9
+ this.name = 'TranscriptionProviderError';
10
+ this.status = status;
11
+ }
12
+ }
13
+ /** Raised when no transcription capability is configured on this deployment. */
14
+ export class SpeechUnconfiguredError extends Error {
15
+ constructor() {
16
+ super('no transcription capability is configured on this server');
17
+ this.name = 'SpeechUnconfiguredError';
18
+ }
19
+ }
20
+ /** Describe the capability for the console's pre-flight probe. */
21
+ export function describeSpeechCapability(config) {
22
+ return {
23
+ available: config.speechTranscriptionEndpoint !== undefined,
24
+ region: config.speechTranscriptionRegion,
25
+ };
26
+ }
27
+ /**
28
+ * The default transcriber: POST the raw bytes to the configured in-region
29
+ * endpoint with the region and locale as query parameters, and read back
30
+ * `{ "text": "…" }`. Deliberately generic — no vendor SDK, no vendor name. A
31
+ * concrete adapter replaces this behind the same seam once a provider is chosen.
32
+ */
33
+ export function createHttpTranscriber(config) {
34
+ const endpoint = config.speechTranscriptionEndpoint;
35
+ if (endpoint === undefined) {
36
+ throw new SpeechUnconfiguredError();
37
+ }
38
+ return {
39
+ async transcribe(audio, request) {
40
+ const url = new URL(endpoint);
41
+ url.searchParams.set('region', request.region);
42
+ if (request.locale !== undefined) {
43
+ url.searchParams.set('locale', request.locale);
44
+ }
45
+ const headers = { 'Content-Type': request.contentType };
46
+ if (config.speechTranscriptionApiKey !== undefined) {
47
+ headers.Authorization = `Bearer ${config.speechTranscriptionApiKey}`;
48
+ }
49
+ let response;
50
+ try {
51
+ // Bounded like every other outbound call this server makes: a hung
52
+ // provider must not pin the request — and the audio buffer with it —
53
+ // open indefinitely. The abort surfaces as the same generic provider
54
+ // error, so no transport detail reaches the caller.
55
+ response = await fetch(url, {
56
+ method: 'POST',
57
+ headers,
58
+ body: audio,
59
+ signal: AbortSignal.timeout(config.timeoutMs),
60
+ // The configured endpoint is validated HTTPS-only, but a redirect is a
61
+ // second destination that validation never saw: a 307/308 would forward
62
+ // the recording — and the bearer key — wherever the provider points.
63
+ // Refuse redirects outright; the failure surfaces as the same generic
64
+ // provider error every other transport fault maps to.
65
+ redirect: 'error',
66
+ });
67
+ }
68
+ catch {
69
+ // The transport error is swallowed on purpose: an undici/agent error can
70
+ // carry the request (headers, body) in its cause chain.
71
+ throw new TranscriptionProviderError();
72
+ }
73
+ if (!response.ok) {
74
+ throw new TranscriptionProviderError(response.status);
75
+ }
76
+ const payload = (await response.json());
77
+ if (typeof payload.text !== 'string') {
78
+ throw new TranscriptionProviderError(response.status);
79
+ }
80
+ return payload.text;
81
+ },
82
+ };
83
+ }
84
+ //# sourceMappingURL=speech-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speech-provider.js","sourceRoot":"","sources":["../../src/copilot/speech-provider.ts"],"names":[],"mappings":"AAyBA;uEACuE;AACvE,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,MAAM,CAAoB;IAEnC,YAAY,MAAe;QACzB,KAAK,CACH,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,iDAAiD;YACnD,CAAC,CAAC,uCAAuC,MAAM,EAAE,CACpD,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD;QACE,KAAK,CAAC,0DAA0D,CAAC,CAAA;QACjE,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;IACvC,CAAC;CACF;AAQD,kEAAkE;AAClE,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,2BAA2B,KAAK,SAAS;QAC3D,MAAM,EAAE,MAAM,CAAC,yBAAyB;KACzC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,2BAA2B,CAAA;IACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,uBAAuB,EAAE,CAAA;IACrC,CAAC;IACD,OAAO;QACL,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO;YAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAChD,CAAC;YACD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,CAAA;YAC/E,IAAI,MAAM,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;gBACnD,OAAO,CAAC,aAAa,GAAG,UAAU,MAAM,CAAC,yBAAyB,EAAE,CAAA;YACtE,CAAC;YACD,IAAI,QAAkB,CAAA;YACtB,IAAI,CAAC;gBACH,mEAAmE;gBACnE,qEAAqE;gBACrE,qEAAqE;gBACrE,oDAAoD;gBACpD,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC1B,MAAM,EAAE,MAAM;oBACd,OAAO;oBACP,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC7C,uEAAuE;oBACvE,wEAAwE;oBACxE,qEAAqE;oBACrE,sEAAsE;oBACtE,sDAAsD;oBACtD,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;gBACzE,wDAAwD;gBACxD,MAAM,IAAI,0BAA0B,EAAE,CAAA;YACxC,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACvD,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAA;YAC7D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,IAAI,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACvD,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAA;QACrB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -66,4 +66,9 @@ export function createSseSink(res) {
66
66
  isClosed: () => closed,
67
67
  };
68
68
  }
69
+ /** End a failed turn without changing the sink's recoverable-error contract. */
70
+ export function finishWithError(sink, code, detail) {
71
+ sink.error(code, detail);
72
+ sink.done('end');
73
+ }
69
74
  //# sourceMappingURL=sse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/copilot/sse.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,UAAU;AAIV,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAA;AAmClC;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAmB;IAC/C,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,IAAa,EAAQ,EAAE;QAClD,IAAI,MAAM;YAAE,OAAM;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAA;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,cAAc,EAAE,mBAAmB;gBACnC,eAAe,EAAE,UAAU;gBAC3B,UAAU,EAAE,YAAY;aACzB,CAAC,CAAA;QACJ,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjE,CAAC,CAAA;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,IAAI,MAAM,IAAI,CAAC,OAAO;YAAE,OAAM;QAC9B,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACzB,CAAC,EAAE,YAAY,CAAC,CAAA;IAChB,2DAA2D;IAC3D,SAAS,CAAC,KAAK,EAAE,EAAE,CAAA;IAEnB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,MAAM;YAAE,OAAM;QAClB,MAAM,GAAG,IAAI,CAAA;QACb,aAAa,CAAC,SAAS,CAAC,CAAA;QACxB,GAAG,CAAC,GAAG,EAAE,CAAA;IACX,CAAC,CAAA;IAED,4DAA4D;IAC5D,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAEtB,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QAChD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACxD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACtB,KAAK,EAAE,CAAA;QACT,CAAC;QACD,KAAK;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;KACvB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/copilot/sse.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,UAAU;AAIV,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAA;AAmClC;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAmB;IAC/C,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,IAAa,EAAQ,EAAE;QAClD,IAAI,MAAM;YAAE,OAAM;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAA;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,cAAc,EAAE,mBAAmB;gBACnC,eAAe,EAAE,UAAU;gBAC3B,UAAU,EAAE,YAAY;aACzB,CAAC,CAAA;QACJ,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjE,CAAC,CAAA;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,IAAI,MAAM,IAAI,CAAC,OAAO;YAAE,OAAM;QAC9B,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACzB,CAAC,EAAE,YAAY,CAAC,CAAA;IAChB,2DAA2D;IAC3D,SAAS,CAAC,KAAK,EAAE,EAAE,CAAA;IAEnB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,MAAM;YAAE,OAAM;QAClB,MAAM,GAAG,IAAI,CAAA;QACb,aAAa,CAAC,SAAS,CAAC,CAAA;QACxB,GAAG,CAAC,GAAG,EAAE,CAAA;IACX,CAAC,CAAA;IAED,4DAA4D;IAC5D,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAEtB,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QAChD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACxD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACtB,KAAK,EAAE,CAAA;QACT,CAAC;QACD,KAAK;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;KACvB,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,IAAa,EAAE,IAAY,EAAE,MAAc;IACzE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAClB,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { EventEmitter } from 'node:events';
2
+ /** Allow unrelated boundary tests to pass the tenant quota gate. */
3
+ export const allowAll = { check: () => ({ allowed: true, retryAfterSeconds: 0 }) };
4
+ /** Successful auth probe with no network or credential. */
5
+ export const okProbeClient = {
6
+ async request() {
7
+ return { items: [], hasMore: false };
8
+ },
9
+ };
10
+ export function mockRequest(body, headers) {
11
+ return {
12
+ headers,
13
+ async *[Symbol.asyncIterator]() {
14
+ if (body.length > 0)
15
+ yield typeof body === 'string' ? Buffer.from(body, 'utf8') : body;
16
+ },
17
+ };
18
+ }
19
+ /** Captures JSON and SSE responses; closing remains explicitly test-controlled. */
20
+ export class MockRes extends EventEmitter {
21
+ status = 0;
22
+ headers = {};
23
+ writes = [];
24
+ ended = false;
25
+ headersSent = false;
26
+ writeHead(status, headers) {
27
+ this.status = status;
28
+ if (headers !== undefined)
29
+ this.headers = headers;
30
+ this.headersSent = true;
31
+ return this;
32
+ }
33
+ write(chunk) {
34
+ this.writes.push(chunk);
35
+ return true;
36
+ }
37
+ end(chunk) {
38
+ if (chunk !== undefined)
39
+ this.writes.push(chunk);
40
+ this.ended = true;
41
+ return this;
42
+ }
43
+ get body() {
44
+ return this.writes.join('');
45
+ }
46
+ json() {
47
+ return JSON.parse(this.body);
48
+ }
49
+ }
50
+ //# sourceMappingURL=test_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_helpers.js","sourceRoot":"","sources":["../../src/copilot/test_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C,oEAAoE;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AAElF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,KAAK,CAAC,OAAO;QACX,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAO,CAAA;IAC3C,CAAC;CACF,CAAA;AAED,MAAM,UAAU,WAAW,CAAC,IAAqB,EAAE,OAA+B;IAChF,OAAO;QACL,OAAO;QACP,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACxF,CAAC;KAC4B,CAAA;AACjC,CAAC;AAED,mFAAmF;AACnF,MAAM,OAAO,OAAQ,SAAQ,YAAY;IACvC,MAAM,GAAG,CAAC,CAAA;IACV,OAAO,GAA2B,EAAE,CAAA;IACpC,MAAM,GAAa,EAAE,CAAA;IACrB,KAAK,GAAG,KAAK,CAAA;IACb,WAAW,GAAG,KAAK,CAAA;IAEnB,SAAS,CAAC,MAAc,EAAE,OAAgC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,KAAc;QAChB,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAA4B,CAAA;IACzD,CAAC;CACF"}