@stigmer/sdk 3.35.0 → 3.37.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 (348) hide show
  1. package/activity.d.ts.map +1 -1
  2. package/activity.js.map +1 -1
  3. package/artifact-routing.d.ts.map +1 -1
  4. package/artifact-routing.js.map +1 -1
  5. package/authorization-config.d.ts.map +1 -1
  6. package/authorization-config.js.map +1 -1
  7. package/billing.d.ts.map +1 -1
  8. package/billing.js.map +1 -1
  9. package/config.d.ts.map +1 -1
  10. package/config.js.map +1 -1
  11. package/cursor-accounts.d.ts.map +1 -1
  12. package/cursor-accounts.js.map +1 -1
  13. package/ensure-identity-account.d.ts.map +1 -1
  14. package/ensure-identity-account.js.map +1 -1
  15. package/errors.d.ts.map +1 -1
  16. package/errors.js.map +1 -1
  17. package/execution/approval-provenance.d.ts.map +1 -1
  18. package/execution/approval-provenance.js.map +1 -1
  19. package/execution/conversation-rules.d.ts.map +1 -1
  20. package/execution/conversation-rules.js.map +1 -1
  21. package/execution/execution-phases.d.ts.map +1 -1
  22. package/execution/execution-phases.js.map +1 -1
  23. package/execution/file-review-fold.d.ts.map +1 -1
  24. package/execution/file-review-fold.js.map +1 -1
  25. package/execution/to-display-file-change.d.ts.map +1 -1
  26. package/execution/to-display-file-change.js.map +1 -1
  27. package/execution/tool-view.d.ts.map +1 -1
  28. package/execution/tool-view.js.map +1 -1
  29. package/execution/transcript.d.ts.map +1 -1
  30. package/execution/transcript.js.map +1 -1
  31. package/gen/agent.d.ts.map +1 -1
  32. package/gen/agent.js.map +1 -1
  33. package/gen/agentchannel.d.ts.map +1 -1
  34. package/gen/agentchannel.js.map +1 -1
  35. package/gen/agentexecution.d.ts.map +1 -1
  36. package/gen/agentexecution.js.map +1 -1
  37. package/gen/agentinstance.d.ts.map +1 -1
  38. package/gen/agentinstance.js.map +1 -1
  39. package/gen/agentshare.d.ts.map +1 -1
  40. package/gen/agentshare.js.map +1 -1
  41. package/gen/apikey.d.ts.map +1 -1
  42. package/gen/apikey.js.map +1 -1
  43. package/gen/artifact.d.ts.map +1 -1
  44. package/gen/artifact.js.map +1 -1
  45. package/gen/authorization-config.d.ts.map +1 -1
  46. package/gen/authorization-config.js +2 -2
  47. package/gen/authorization-config.js.map +1 -1
  48. package/gen/bidi-stream.d.ts.map +1 -1
  49. package/gen/bidi-stream.js.map +1 -1
  50. package/gen/channelapp.d.ts.map +1 -1
  51. package/gen/channelapp.js.map +1 -1
  52. package/gen/client.d.ts.map +1 -1
  53. package/gen/client.js.map +1 -1
  54. package/gen/environment.d.ts.map +1 -1
  55. package/gen/environment.js.map +1 -1
  56. package/gen/errors.d.ts.map +1 -1
  57. package/gen/errors.js.map +1 -1
  58. package/gen/executioncontext.d.ts.map +1 -1
  59. package/gen/executioncontext.js.map +1 -1
  60. package/gen/iampolicy.d.ts.map +1 -1
  61. package/gen/iampolicy.js.map +1 -1
  62. package/gen/identityaccount.d.ts.map +1 -1
  63. package/gen/identityaccount.js.map +1 -1
  64. package/gen/identityprovider.d.ts.map +1 -1
  65. package/gen/identityprovider.js.map +1 -1
  66. package/gen/invitation.d.ts.map +1 -1
  67. package/gen/invitation.js.map +1 -1
  68. package/gen/license.d.ts.map +1 -1
  69. package/gen/license.js.map +1 -1
  70. package/gen/mcpserver.d.ts.map +1 -1
  71. package/gen/mcpserver.js.map +1 -1
  72. package/gen/memory.d.ts.map +1 -1
  73. package/gen/memory.js.map +1 -1
  74. package/gen/oauthapp.d.ts.map +1 -1
  75. package/gen/oauthapp.js.map +1 -1
  76. package/gen/organization.d.ts.map +1 -1
  77. package/gen/organization.js.map +1 -1
  78. package/gen/plan.d.ts.map +1 -1
  79. package/gen/plan.js.map +1 -1
  80. package/gen/platformclient.d.ts.map +1 -1
  81. package/gen/platformclient.js.map +1 -1
  82. package/gen/plugin.d.ts.map +1 -1
  83. package/gen/plugin.js.map +1 -1
  84. package/gen/proto-utils.d.ts.map +1 -1
  85. package/gen/proto-utils.js.map +1 -1
  86. package/gen/resource-availability.d.ts.map +1 -1
  87. package/gen/resource-availability.js.map +1 -1
  88. package/gen/schedule.d.ts.map +1 -1
  89. package/gen/schedule.js.map +1 -1
  90. package/gen/session.d.ts.map +1 -1
  91. package/gen/session.js.map +1 -1
  92. package/gen/skill.d.ts.map +1 -1
  93. package/gen/skill.js.map +1 -1
  94. package/gen/subscription.d.ts.map +1 -1
  95. package/gen/subscription.js.map +1 -1
  96. package/gen/team.d.ts.map +1 -1
  97. package/gen/team.js.map +1 -1
  98. package/gen/types.d.ts.map +1 -1
  99. package/gen/types.js.map +1 -1
  100. package/gen/workflow.d.ts.map +1 -1
  101. package/gen/workflow.js.map +1 -1
  102. package/gen/workflowexecution.d.ts.map +1 -1
  103. package/gen/workflowexecution.js.map +1 -1
  104. package/gen/workflowinstance.d.ts.map +1 -1
  105. package/gen/workflowinstance.js.map +1 -1
  106. package/github.d.ts.map +1 -1
  107. package/github.js.map +1 -1
  108. package/guest-auth.d.ts.map +1 -1
  109. package/guest-auth.js.map +1 -1
  110. package/iam-principal.d.ts +6 -0
  111. package/iam-principal.d.ts.map +1 -1
  112. package/iam-principal.js +19 -0
  113. package/iam-principal.js.map +1 -1
  114. package/iam-role.d.ts.map +1 -1
  115. package/iam-role.js.map +1 -1
  116. package/index.d.ts +1 -1
  117. package/index.d.ts.map +1 -1
  118. package/index.js +1 -1
  119. package/index.js.map +1 -1
  120. package/internal/interceptors.d.ts.map +1 -1
  121. package/internal/interceptors.js.map +1 -1
  122. package/manifest/client.d.ts.map +1 -1
  123. package/manifest/client.js.map +1 -1
  124. package/manifest/document.d.ts.map +1 -1
  125. package/manifest/document.js.map +1 -1
  126. package/manifest/index.d.ts.map +1 -1
  127. package/manifest/index.js.map +1 -1
  128. package/manifest/parse.d.ts.map +1 -1
  129. package/manifest/parse.js.map +1 -1
  130. package/manifest/redaction.d.ts.map +1 -1
  131. package/manifest/redaction.js.map +1 -1
  132. package/manifest/registry.d.ts.map +1 -1
  133. package/manifest/registry.js.map +1 -1
  134. package/manifest/serialize.d.ts.map +1 -1
  135. package/manifest/serialize.js.map +1 -1
  136. package/mcpserver-connect.d.ts.map +1 -1
  137. package/mcpserver-connect.js.map +1 -1
  138. package/node.d.ts.map +1 -1
  139. package/node.js.map +1 -1
  140. package/package.json +2 -2
  141. package/platform-client-auth.d.ts.map +1 -1
  142. package/platform-client-auth.js.map +1 -1
  143. package/platform.d.ts.map +1 -1
  144. package/platform.js.map +1 -1
  145. package/plugin.d.ts.map +1 -1
  146. package/plugin.js.map +1 -1
  147. package/provider-standing.d.ts.map +1 -1
  148. package/provider-standing.js.map +1 -1
  149. package/resource-availability.d.ts.map +1 -1
  150. package/resource-availability.js.map +1 -1
  151. package/runner-adapter.d.ts.map +1 -1
  152. package/runner-adapter.js.map +1 -1
  153. package/search.d.ts.map +1 -1
  154. package/search.js.map +1 -1
  155. package/session.d.ts.map +1 -1
  156. package/session.js.map +1 -1
  157. package/sharing.d.ts.map +1 -1
  158. package/sharing.js.map +1 -1
  159. package/skill.d.ts.map +1 -1
  160. package/skill.js.map +1 -1
  161. package/src/gen/authorization-config.ts +2 -2
  162. package/src/iam-principal.ts +24 -0
  163. package/src/index.ts +1 -0
  164. package/stigmer.d.ts.map +1 -1
  165. package/stigmer.js.map +1 -1
  166. package/transport.d.ts.map +1 -1
  167. package/transport.js.map +1 -1
  168. package/__tests__/billing.test.d.ts +0 -2
  169. package/__tests__/billing.test.d.ts.map +0 -1
  170. package/__tests__/billing.test.js +0 -120
  171. package/__tests__/billing.test.js.map +0 -1
  172. package/__tests__/config.test.d.ts +0 -2
  173. package/__tests__/config.test.d.ts.map +0 -1
  174. package/__tests__/config.test.js +0 -35
  175. package/__tests__/config.test.js.map +0 -1
  176. package/__tests__/ensure-identity-account.test.d.ts +0 -2
  177. package/__tests__/ensure-identity-account.test.d.ts.map +0 -1
  178. package/__tests__/ensure-identity-account.test.js +0 -108
  179. package/__tests__/ensure-identity-account.test.js.map +0 -1
  180. package/__tests__/errors.test.d.ts +0 -2
  181. package/__tests__/errors.test.d.ts.map +0 -1
  182. package/__tests__/errors.test.js +0 -228
  183. package/__tests__/errors.test.js.map +0 -1
  184. package/__tests__/gen/errors.test.d.ts +0 -2
  185. package/__tests__/gen/errors.test.d.ts.map +0 -1
  186. package/__tests__/gen/errors.test.js +0 -97
  187. package/__tests__/gen/errors.test.js.map +0 -1
  188. package/__tests__/gen/invitation-client.test.d.ts +0 -2
  189. package/__tests__/gen/invitation-client.test.d.ts.map +0 -1
  190. package/__tests__/gen/invitation-client.test.js +0 -106
  191. package/__tests__/gen/invitation-client.test.js.map +0 -1
  192. package/__tests__/gen/proto-utils.test.d.ts +0 -2
  193. package/__tests__/gen/proto-utils.test.d.ts.map +0 -1
  194. package/__tests__/gen/proto-utils.test.js +0 -85
  195. package/__tests__/gen/proto-utils.test.js.map +0 -1
  196. package/__tests__/gen/session-client.test.d.ts +0 -2
  197. package/__tests__/gen/session-client.test.d.ts.map +0 -1
  198. package/__tests__/gen/session-client.test.js +0 -152
  199. package/__tests__/gen/session-client.test.js.map +0 -1
  200. package/__tests__/guest-auth.test.d.ts +0 -2
  201. package/__tests__/guest-auth.test.d.ts.map +0 -1
  202. package/__tests__/guest-auth.test.js +0 -223
  203. package/__tests__/guest-auth.test.js.map +0 -1
  204. package/__tests__/iam-principal.test.d.ts +0 -2
  205. package/__tests__/iam-principal.test.d.ts.map +0 -1
  206. package/__tests__/iam-principal.test.js +0 -65
  207. package/__tests__/iam-principal.test.js.map +0 -1
  208. package/__tests__/manifest.test.d.ts +0 -2
  209. package/__tests__/manifest.test.d.ts.map +0 -1
  210. package/__tests__/manifest.test.js +0 -306
  211. package/__tests__/manifest.test.js.map +0 -1
  212. package/__tests__/mcpserver-connect.test.d.ts +0 -2
  213. package/__tests__/mcpserver-connect.test.d.ts.map +0 -1
  214. package/__tests__/mcpserver-connect.test.js +0 -146
  215. package/__tests__/mcpserver-connect.test.js.map +0 -1
  216. package/__tests__/node.test.d.ts +0 -2
  217. package/__tests__/node.test.d.ts.map +0 -1
  218. package/__tests__/node.test.js +0 -67
  219. package/__tests__/node.test.js.map +0 -1
  220. package/__tests__/platform-client-auth.test.d.ts +0 -2
  221. package/__tests__/platform-client-auth.test.d.ts.map +0 -1
  222. package/__tests__/platform-client-auth.test.js +0 -59
  223. package/__tests__/platform-client-auth.test.js.map +0 -1
  224. package/__tests__/platform.test.d.ts +0 -2
  225. package/__tests__/platform.test.d.ts.map +0 -1
  226. package/__tests__/platform.test.js +0 -52
  227. package/__tests__/platform.test.js.map +0 -1
  228. package/__tests__/plugin.test.d.ts +0 -2
  229. package/__tests__/plugin.test.d.ts.map +0 -1
  230. package/__tests__/plugin.test.js +0 -74
  231. package/__tests__/plugin.test.js.map +0 -1
  232. package/__tests__/resource-availability.test.d.ts +0 -2
  233. package/__tests__/resource-availability.test.d.ts.map +0 -1
  234. package/__tests__/resource-availability.test.js +0 -80
  235. package/__tests__/resource-availability.test.js.map +0 -1
  236. package/__tests__/runner-adapter.test.d.ts +0 -2
  237. package/__tests__/runner-adapter.test.d.ts.map +0 -1
  238. package/__tests__/runner-adapter.test.js +0 -88
  239. package/__tests__/runner-adapter.test.js.map +0 -1
  240. package/__tests__/session.test.d.ts +0 -6
  241. package/__tests__/session.test.d.ts.map +0 -1
  242. package/__tests__/session.test.js +0 -50
  243. package/__tests__/session.test.js.map +0 -1
  244. package/__tests__/sharing.test.d.ts +0 -2
  245. package/__tests__/sharing.test.d.ts.map +0 -1
  246. package/__tests__/sharing.test.js +0 -106
  247. package/__tests__/sharing.test.js.map +0 -1
  248. package/__tests__/skill.test.d.ts +0 -2
  249. package/__tests__/skill.test.d.ts.map +0 -1
  250. package/__tests__/skill.test.js +0 -117
  251. package/__tests__/skill.test.js.map +0 -1
  252. package/__tests__/stigmer.test.d.ts +0 -2
  253. package/__tests__/stigmer.test.d.ts.map +0 -1
  254. package/__tests__/stigmer.test.js +0 -127
  255. package/__tests__/stigmer.test.js.map +0 -1
  256. package/__tests__/update-input-roundtrip.test.d.ts +0 -2
  257. package/__tests__/update-input-roundtrip.test.d.ts.map +0 -1
  258. package/__tests__/update-input-roundtrip.test.js +0 -775
  259. package/__tests__/update-input-roundtrip.test.js.map +0 -1
  260. package/__tests__/update-input.test.d.ts +0 -2
  261. package/__tests__/update-input.test.d.ts.map +0 -1
  262. package/__tests__/update-input.test.js +0 -188
  263. package/__tests__/update-input.test.js.map +0 -1
  264. package/execution/__tests__/approval-provenance.test.d.ts +0 -2
  265. package/execution/__tests__/approval-provenance.test.d.ts.map +0 -1
  266. package/execution/__tests__/approval-provenance.test.js +0 -42
  267. package/execution/__tests__/approval-provenance.test.js.map +0 -1
  268. package/execution/__tests__/file-review-fold.corpus.test.d.ts +0 -2
  269. package/execution/__tests__/file-review-fold.corpus.test.d.ts.map +0 -1
  270. package/execution/__tests__/file-review-fold.corpus.test.js +0 -82
  271. package/execution/__tests__/file-review-fold.corpus.test.js.map +0 -1
  272. package/execution/__tests__/file-review-fold.test.d.ts +0 -2
  273. package/execution/__tests__/file-review-fold.test.d.ts.map +0 -1
  274. package/execution/__tests__/file-review-fold.test.js +0 -184
  275. package/execution/__tests__/file-review-fold.test.js.map +0 -1
  276. package/execution/__tests__/to-display-file-change.test.d.ts +0 -2
  277. package/execution/__tests__/to-display-file-change.test.d.ts.map +0 -1
  278. package/execution/__tests__/to-display-file-change.test.js +0 -81
  279. package/execution/__tests__/to-display-file-change.test.js.map +0 -1
  280. package/execution/__tests__/tool-view.file-changes.test.d.ts +0 -2
  281. package/execution/__tests__/tool-view.file-changes.test.d.ts.map +0 -1
  282. package/execution/__tests__/tool-view.file-changes.test.js +0 -86
  283. package/execution/__tests__/tool-view.file-changes.test.js.map +0 -1
  284. package/execution/__tests__/tool-view.fixtures.test.d.ts +0 -2
  285. package/execution/__tests__/tool-view.fixtures.test.d.ts.map +0 -1
  286. package/execution/__tests__/tool-view.fixtures.test.js +0 -152
  287. package/execution/__tests__/tool-view.fixtures.test.js.map +0 -1
  288. package/execution/__tests__/tool-view.output-ref.test.d.ts +0 -2
  289. package/execution/__tests__/tool-view.output-ref.test.d.ts.map +0 -1
  290. package/execution/__tests__/tool-view.output-ref.test.js +0 -64
  291. package/execution/__tests__/tool-view.output-ref.test.js.map +0 -1
  292. package/execution/__tests__/tool-view.read.test.d.ts +0 -2
  293. package/execution/__tests__/tool-view.read.test.d.ts.map +0 -1
  294. package/execution/__tests__/tool-view.read.test.js +0 -56
  295. package/execution/__tests__/tool-view.read.test.js.map +0 -1
  296. package/execution/__tests__/tool-view.search.test.d.ts +0 -2
  297. package/execution/__tests__/tool-view.search.test.d.ts.map +0 -1
  298. package/execution/__tests__/tool-view.search.test.js +0 -200
  299. package/execution/__tests__/tool-view.search.test.js.map +0 -1
  300. package/execution/__tests__/tool-view.shell.test.d.ts +0 -2
  301. package/execution/__tests__/tool-view.shell.test.d.ts.map +0 -1
  302. package/execution/__tests__/tool-view.shell.test.js +0 -104
  303. package/execution/__tests__/tool-view.shell.test.js.map +0 -1
  304. package/execution/__tests__/transcript.test.d.ts +0 -2
  305. package/execution/__tests__/transcript.test.d.ts.map +0 -1
  306. package/execution/__tests__/transcript.test.js +0 -591
  307. package/execution/__tests__/transcript.test.js.map +0 -1
  308. package/node.test.d.ts +0 -2
  309. package/node.test.d.ts.map +0 -1
  310. package/node.test.js +0 -35
  311. package/node.test.js.map +0 -1
  312. package/src/__tests__/billing.test.ts +0 -146
  313. package/src/__tests__/config.test.ts +0 -52
  314. package/src/__tests__/ensure-identity-account.test.ts +0 -146
  315. package/src/__tests__/errors.test.ts +0 -349
  316. package/src/__tests__/gen/errors.test.ts +0 -138
  317. package/src/__tests__/gen/invitation-client.test.ts +0 -132
  318. package/src/__tests__/gen/proto-utils.test.ts +0 -99
  319. package/src/__tests__/gen/session-client.test.ts +0 -208
  320. package/src/__tests__/guest-auth.test.ts +0 -287
  321. package/src/__tests__/iam-principal.test.ts +0 -82
  322. package/src/__tests__/manifest.test.ts +0 -362
  323. package/src/__tests__/mcpserver-connect.test.ts +0 -181
  324. package/src/__tests__/node.test.ts +0 -74
  325. package/src/__tests__/platform-client-auth.test.ts +0 -76
  326. package/src/__tests__/platform.test.ts +0 -74
  327. package/src/__tests__/plugin.test.ts +0 -92
  328. package/src/__tests__/resource-availability.test.ts +0 -118
  329. package/src/__tests__/runner-adapter.test.ts +0 -122
  330. package/src/__tests__/session.test.ts +0 -66
  331. package/src/__tests__/sharing.test.ts +0 -159
  332. package/src/__tests__/skill.test.ts +0 -150
  333. package/src/__tests__/stigmer.test.ts +0 -170
  334. package/src/__tests__/update-input-roundtrip.test.ts +0 -1007
  335. package/src/__tests__/update-input.test.ts +0 -250
  336. package/src/execution/__tests__/approval-provenance.test.ts +0 -60
  337. package/src/execution/__tests__/file-review-fold.corpus.test.ts +0 -127
  338. package/src/execution/__tests__/file-review-fold.test.ts +0 -281
  339. package/src/execution/__tests__/to-display-file-change.test.ts +0 -106
  340. package/src/execution/__tests__/tool-view.file-changes.test.ts +0 -100
  341. package/src/execution/__tests__/tool-view.fixtures.test.ts +0 -225
  342. package/src/execution/__tests__/tool-view.output-ref.test.ts +0 -76
  343. package/src/execution/__tests__/tool-view.read.test.ts +0 -71
  344. package/src/execution/__tests__/tool-view.search.test.ts +0 -264
  345. package/src/execution/__tests__/tool-view.shell.test.ts +0 -127
  346. package/src/execution/__tests__/transcript.golden.md +0 -100
  347. package/src/execution/__tests__/transcript.test.ts +0 -697
  348. package/src/node.test.ts +0 -38
@@ -1,120 +0,0 @@
1
- // Wire-shape tests for BillingClient: a router transport fakes the billing
2
- // services in-process, captures the outgoing request messages, and the tests
3
- // assert the SDK params mapped onto the right proto fields. This mirrors
4
- // sdk/java's BillingClientTest and sdk/go's billing_test.go — the reference
5
- // pattern for testing the handwritten (non-resource) clients.
6
- import { describe, expect, it } from "vitest";
7
- import { createRouterTransport } from "@connectrpc/connect";
8
- import { create } from "@bufbuild/protobuf";
9
- import { timestampDate } from "@bufbuild/protobuf/wkt";
10
- import { BillingCommandController } from "@stigmer/protos/ai/stigmer/billing/v1/command_pb";
11
- import { BillingQueryController } from "@stigmer/protos/ai/stigmer/billing/v1/query_pb";
12
- import { CreditLedgerResponseSchema, } from "@stigmer/protos/ai/stigmer/billing/v1/io_pb";
13
- import { CreditLedgerEntrySchema } from "@stigmer/protos/ai/stigmer/billing/v1/credit_pb";
14
- import { LedgerEntryType, LedgerView } from "@stigmer/protos/ai/stigmer/billing/v1/enum_pb";
15
- import { BillingClient } from "../billing.js";
16
- function fakeTransport(captured) {
17
- return createRouterTransport(({ service }) => {
18
- service(BillingCommandController, {
19
- adjustCredits: (req) => {
20
- captured.adjustCredits = req;
21
- return create(CreditLedgerEntrySchema, { amountMicros: req.amountMicros });
22
- },
23
- grantCredits: (req) => {
24
- captured.grantCredits = req;
25
- return create(CreditLedgerEntrySchema, { amountMicros: req.amountMicros });
26
- },
27
- });
28
- service(BillingQueryController, {
29
- getCreditLedger: (req) => {
30
- captured.getCreditLedger = req;
31
- return create(CreditLedgerResponseSchema, {});
32
- },
33
- });
34
- });
35
- }
36
- describe("BillingClient.adjustCredits", () => {
37
- it("maps params onto AdjustCreditsInput and returns the ledger entry", async () => {
38
- const captured = {};
39
- const client = new BillingClient(fakeTransport(captured));
40
- const entry = await client.adjustCredits({
41
- orgId: "acme",
42
- amountMicros: 25000000n,
43
- reason: "initial tenant funding",
44
- idempotencyKey: "fund-acme-001",
45
- });
46
- expect(entry.amountMicros).toBe(25000000n);
47
- expect(captured.adjustCredits?.orgId).toBe("acme");
48
- expect(captured.adjustCredits?.amountMicros).toBe(25000000n);
49
- expect(captured.adjustCredits?.reason).toBe("initial tenant funding");
50
- expect(captured.adjustCredits?.idempotencyKey).toBe("fund-acme-001");
51
- });
52
- });
53
- describe("BillingClient.grantCredits", () => {
54
- it("maps params including the expiry onto GrantCreditsInput", async () => {
55
- const captured = {};
56
- const client = new BillingClient(fakeTransport(captured));
57
- const expiresAt = new Date("2026-08-31T23:59:59Z");
58
- const entry = await client.grantCredits({
59
- orgId: "acme",
60
- amountMicros: 5000000n,
61
- expiresAt,
62
- reason: "monthly free allowance 2026-08",
63
- idempotencyKey: "allowance-acme-2026-08",
64
- });
65
- expect(entry.amountMicros).toBe(5000000n);
66
- const req = captured.grantCredits;
67
- expect(req?.orgId).toBe("acme");
68
- expect(req?.amountMicros).toBe(5000000n);
69
- expect(req?.expiresAt && timestampDate(req.expiresAt)).toEqual(expiresAt);
70
- expect(req?.reason).toBe("monthly free allowance 2026-08");
71
- expect(req?.idempotencyKey).toBe("allowance-acme-2026-08");
72
- });
73
- it("omits the expiry for a never-expiring grant", async () => {
74
- const captured = {};
75
- const client = new BillingClient(fakeTransport(captured));
76
- await client.grantCredits({
77
- orgId: "acme",
78
- amountMicros: 1000000n,
79
- reason: "welcome credit",
80
- idempotencyKey: "welcome-acme",
81
- });
82
- expect(captured.grantCredits?.expiresAt).toBeUndefined();
83
- });
84
- });
85
- describe("BillingClient.getCreditLedger", () => {
86
- it("maps all filters including the time range", async () => {
87
- const captured = {};
88
- const client = new BillingClient(fakeTransport(captured));
89
- const startTime = new Date("2026-08-01T00:00:00Z");
90
- const endTime = new Date("2026-08-13T00:00:00Z");
91
- await client.getCreditLedger({
92
- orgId: "acme",
93
- page: { num: 2, size: 50 },
94
- typeFilter: [LedgerEntryType.adjustment_credit],
95
- startTime,
96
- endTime,
97
- view: LedgerView.statement,
98
- });
99
- const req = captured.getCreditLedger;
100
- expect(req?.orgId).toBe("acme");
101
- expect(req?.page?.num).toBe(2);
102
- expect(req?.page?.size).toBe(50);
103
- expect(req?.typeFilter).toEqual([LedgerEntryType.adjustment_credit]);
104
- expect(req?.startTime && timestampDate(req.startTime)).toEqual(startTime);
105
- expect(req?.endTime && timestampDate(req.endTime)).toEqual(endTime);
106
- expect(req?.view).toBe(LedgerView.statement);
107
- });
108
- it("omits unset optional filters", async () => {
109
- const captured = {};
110
- const client = new BillingClient(fakeTransport(captured));
111
- await client.getCreditLedger({ orgId: "acme" });
112
- const req = captured.getCreditLedger;
113
- expect(req?.page).toBeUndefined();
114
- expect(req?.startTime).toBeUndefined();
115
- expect(req?.endTime).toBeUndefined();
116
- expect(req?.typeFilter).toEqual([]);
117
- expect(req?.view).toBe(LedgerView.unspecified);
118
- });
119
- });
120
- //# sourceMappingURL=billing.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"billing.test.js","sourceRoot":"","sources":["../../src/__tests__/billing.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":""}
@@ -1,35 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { validateConfig } from "../config";
3
- describe("validateConfig", () => {
4
- const validApiKeyConfig = {
5
- baseUrl: "https://api.stigmer.ai",
6
- apiKey: "sk_live_abc123",
7
- };
8
- const validTokenProviderConfig = {
9
- baseUrl: "https://api.stigmer.ai",
10
- getAccessToken: () => "token",
11
- };
12
- it("accepts a valid config with apiKey", () => {
13
- expect(() => validateConfig(validApiKeyConfig)).not.toThrow();
14
- });
15
- it("accepts a valid config with getAccessToken", () => {
16
- expect(() => validateConfig(validTokenProviderConfig)).not.toThrow();
17
- });
18
- it("rejects missing baseUrl", () => {
19
- expect(() => validateConfig({ baseUrl: "", apiKey: "key" })).toThrow("stigmer: baseUrl is required");
20
- });
21
- it("rejects missing both apiKey and getAccessToken", () => {
22
- expect(() => validateConfig({ baseUrl: "https://api.stigmer.ai" })).toThrow("stigmer: either apiKey or getAccessToken must be provided");
23
- });
24
- it("rejects empty apiKey without getAccessToken", () => {
25
- expect(() => validateConfig({ baseUrl: "https://api.stigmer.ai", apiKey: "" })).toThrow("stigmer: either apiKey or getAccessToken must be provided");
26
- });
27
- it("rejects providing both apiKey and getAccessToken", () => {
28
- expect(() => validateConfig({
29
- baseUrl: "https://api.stigmer.ai",
30
- apiKey: "sk_live_abc123",
31
- getAccessToken: () => "token",
32
- })).toThrow("stigmer: apiKey and getAccessToken are mutually exclusive — provide one, not both");
33
- });
34
- });
35
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAsB,MAAM,WAAW,CAAC;AAE/D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,iBAAiB,GAAkB;QACvC,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,gBAAgB;KACzB,CAAC;IAEF,MAAM,wBAAwB,GAAkB;QAC9C,OAAO,EAAE,wBAAwB;QACjC,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO;KAC9B,CAAC;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,GAAG,EAAE,CACV,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAC/C,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,EAAE,CACV,cAAc,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CACtD,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,GAAG,EAAE,CACV,cAAc,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,GAAG,EAAE,CACV,cAAc,CAAC;YACb,OAAO,EAAE,wBAAwB;YACjC,MAAM,EAAE,gBAAgB;YACxB,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO;SAC9B,CAAC,CACH,CAAC,OAAO,CACP,mFAAmF,CACpF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ensure-identity-account.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensure-identity-account.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ensure-identity-account.test.ts"],"names":[],"mappings":""}
@@ -1,108 +0,0 @@
1
- /**
2
- * Pins `ensureMyIdentityAccount` (`ensure-identity-account.ts`; 20260911.11
3
- * A3): the ONE first-sign-in flow every surface runs — the console's
4
- * `useIdentityAccountGate` delegates to it, the CLI's `auth whoami` and
5
- * `auth login` call it — so a platform builder embedding Stigmer gets the
6
- * same flow as a first-class import.
7
- *
8
- * 1. whoAmI answers → the account, `created: false`; nothing else is
9
- * called;
10
- * 2. whoAmI is NOT_FOUND → `onProvisioning` fires once (the hook's
11
- * "provisioning" state), provisionMyAccount runs, the created account
12
- * comes back with `created: true`;
13
- * 3. any other whoAmI error propagates untouched (UNAUTHENTICATED,
14
- * UNAVAILABLE, a network fault) — the caller's error UX owns it;
15
- * 4. a provisionMyAccount failure propagates untouched (UNAVAILABLE when
16
- * the issuer's userinfo is down is the documented arm).
17
- *
18
- * The doubles reject with `StigmerError`, the vocabulary the real
19
- * `IdentityAccountClient` speaks (every RPC failure passes through
20
- * `wrapError`), so `isNotFound` — the SDK's one classifier — is what the
21
- * helper is proven against (refinement 11, slice 4).
22
- */
23
- import { Code } from "@connectrpc/connect";
24
- import { create } from "@bufbuild/protobuf";
25
- import { IdentityAccountSchema, } from "@stigmer/protos/ai/stigmer/iam/identityaccount/v1/api_pb";
26
- import { describe, expect, it } from "vitest";
27
- import { ensureMyIdentityAccount, } from "../ensure-identity-account";
28
- import { StigmerError } from "../gen/errors";
29
- function clientWith(behaviour) {
30
- const calls = { whoAmI: 0, provisionMyAccount: 0 };
31
- const client = {
32
- identityAccount: {
33
- whoAmI: () => {
34
- calls.whoAmI += 1;
35
- return behaviour.whoAmI();
36
- },
37
- provisionMyAccount: () => {
38
- calls.provisionMyAccount += 1;
39
- return (behaviour.provisionMyAccount ??
40
- (() => Promise.reject(new Error("must not be called"))))();
41
- },
42
- },
43
- };
44
- return { client, calls };
45
- }
46
- const EXISTING = create(IdentityAccountSchema, {
47
- metadata: { id: "ida_existing" },
48
- spec: { idpId: "auth0|existing" },
49
- });
50
- const CREATED = create(IdentityAccountSchema, {
51
- metadata: { id: "ida_created" },
52
- spec: { idpId: "auth0|created" },
53
- });
54
- const NOT_FOUND = () => new StigmerError("not-found", "Identity account not found for the authenticated user", Code.NotFound);
55
- describe("ensureMyIdentityAccount", () => {
56
- it("answers the existing account without provisioning", async () => {
57
- const { client, calls } = clientWith({
58
- whoAmI: () => Promise.resolve(EXISTING),
59
- });
60
- const result = await ensureMyIdentityAccount(client);
61
- expect(result).toEqual({ account: EXISTING, created: false });
62
- expect(calls).toEqual({ whoAmI: 1, provisionMyAccount: 0 });
63
- });
64
- it("provisions on NOT_FOUND, telling the caller once that it is provisioning", async () => {
65
- const { client, calls } = clientWith({
66
- whoAmI: () => Promise.reject(NOT_FOUND()),
67
- provisionMyAccount: () => Promise.resolve(CREATED),
68
- });
69
- let provisioning = 0;
70
- const result = await ensureMyIdentityAccount(client, {
71
- onProvisioning: () => (provisioning += 1),
72
- });
73
- expect(result).toEqual({ account: CREATED, created: true });
74
- expect(provisioning).toBe(1);
75
- expect(calls).toEqual({ whoAmI: 1, provisionMyAccount: 1 });
76
- });
77
- it("does not fire onProvisioning when the account already exists", async () => {
78
- const { client } = clientWith({ whoAmI: () => Promise.resolve(EXISTING) });
79
- let provisioning = 0;
80
- await ensureMyIdentityAccount(client, {
81
- onProvisioning: () => (provisioning += 1),
82
- });
83
- expect(provisioning).toBe(0);
84
- });
85
- it("propagates any other whoAmI error untouched — only NOT_FOUND means 'provision me'", async () => {
86
- const unauthenticated = new StigmerError("unauthenticated", "authentication token missing", Code.Unauthenticated);
87
- const { client, calls } = clientWith({
88
- whoAmI: () => Promise.reject(unauthenticated),
89
- });
90
- await expect(ensureMyIdentityAccount(client)).rejects.toBe(unauthenticated);
91
- expect(calls.provisionMyAccount).toBe(0);
92
- // A value that is not a StigmerError at all (a lane double that does
93
- // not wrap, a transport fault) is also "any other error": propagated
94
- // as the same object, never classified as "provision me".
95
- const network = new TypeError("Load failed");
96
- const offline = clientWith({ whoAmI: () => Promise.reject(network) });
97
- await expect(ensureMyIdentityAccount(offline.client)).rejects.toBe(network);
98
- });
99
- it("propagates a provisioning failure untouched (the issuer's userinfo down is UNAVAILABLE)", async () => {
100
- const unavailable = new StigmerError("unavailable", "Failed to fetch user profile from identity provider: userinfo answered 503", Code.Unavailable);
101
- const { client } = clientWith({
102
- whoAmI: () => Promise.reject(NOT_FOUND()),
103
- provisionMyAccount: () => Promise.reject(unavailable),
104
- });
105
- await expect(ensureMyIdentityAccount(client)).rejects.toBe(unavailable);
106
- });
107
- });
108
- //# sourceMappingURL=ensure-identity-account.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensure-identity-account.test.js","sourceRoot":"","sources":["../../src/__tests__/ensure-identity-account.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=errors.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/errors.test.ts"],"names":[],"mappings":""}
@@ -1,228 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { ConnectError, Code } from "@connectrpc/connect";
3
- import { ErrorInfoSchema } from "@stigmer/protos/google/rpc/error_details_pb";
4
- import { StigmerError } from "../gen/errors";
5
- import { classifyError, isRetryableError, isTransientStreamError, getUserMessage, getErrorReason, annotateRpcError, getRpcMetadata, } from "../errors";
6
- /**
7
- * Guest launch-gate refusal contract (shared-agent abuse controls).
8
- *
9
- * The cloud backend resolves owner-customizable refusal copy server-side and
10
- * carries it in the gRPC status description; the SDK must surface that copy
11
- * VERBATIM through getUserMessage — no client-side mapping exists by design.
12
- * These tests pin the two halves of that contract:
13
- *
14
- * 1. RESOURCE_EXHAUSTED / FAILED_PRECONDITION descriptions pass through
15
- * getUserMessage untouched.
16
- * 2. The platform-default copy (mirrors GuestLimitReason in the cloud
17
- * backend) never collides with the sanitizer's rewrite patterns.
18
- */
19
- describe("guest launch-gate refusal copy passthrough", () => {
20
- // Mirrors GuestLimitReason default copy in the cloud stigmer-service.
21
- // If those strings change, update here — this guardrail exists to catch a
22
- // default that a sanitizer pattern would silently rewrite.
23
- const platformDefaultCopy = [
24
- "You\u2019re sending messages too quickly. Please wait a moment before sending another.",
25
- "This agent is currently unavailable. Please check back later.",
26
- "This conversation has ended. Please start a new conversation to continue.",
27
- "This agent can\u2019t be embedded on this site.",
28
- ];
29
- const refusalCodes = [
30
- ["ResourceExhausted (rate limit)", Code.ResourceExhausted],
31
- ["FailedPrecondition (fail-closed / bounds)", Code.FailedPrecondition],
32
- ["PermissionDenied (embed origin)", Code.PermissionDenied],
33
- ];
34
- it.each(refusalCodes)("surfaces a %s status description verbatim", (_label, code) => {
35
- for (const copy of platformDefaultCopy) {
36
- expect(getUserMessage(new ConnectError(copy, code))).toBe(copy);
37
- }
38
- });
39
- it("surfaces owner-customized copy verbatim", () => {
40
- const ownerCopy = "Whoa, slow down! Try again in a minute or two.";
41
- expect(getUserMessage(new ConnectError(ownerCopy, Code.ResourceExhausted))).toBe(ownerCopy);
42
- });
43
- it("classifies rate-limit refusals as retryable and bounds refusals as not", () => {
44
- expect(isRetryableError(new ConnectError("copy", Code.ResourceExhausted))).toBe(true);
45
- expect(isRetryableError(new ConnectError("copy", Code.FailedPrecondition))).toBe(false);
46
- });
47
- });
48
- describe("classifyError", () => {
49
- const stigmerMappings = [
50
- ["unauthenticated", "auth"],
51
- ["permission-denied", "permission"],
52
- ["not-found", "not-found"],
53
- ["invalid-argument", "validation"],
54
- ["already-exists", "validation"],
55
- ["failed-precondition", "validation"],
56
- ["resource-exhausted", "unavailable"],
57
- ["internal", "server"],
58
- ["unavailable", "unavailable"],
59
- ["cancelled", "cancelled"],
60
- ["unknown", "server"],
61
- ];
62
- it.each(stigmerMappings)("maps StigmerError code '%s' to category '%s'", (errorCode, expectedCategory) => {
63
- const result = classifyError(new StigmerError(errorCode, "test", Code.Unknown));
64
- expect(result).toBe(expectedCategory);
65
- });
66
- const connectMappings = [
67
- [Code.Unauthenticated, "auth"],
68
- [Code.PermissionDenied, "permission"],
69
- [Code.NotFound, "not-found"],
70
- [Code.InvalidArgument, "validation"],
71
- [Code.FailedPrecondition, "validation"],
72
- [Code.OutOfRange, "validation"],
73
- [Code.AlreadyExists, "validation"],
74
- [Code.Aborted, "validation"],
75
- [Code.Internal, "server"],
76
- [Code.Unknown, "server"],
77
- [Code.DataLoss, "server"],
78
- [Code.Unimplemented, "server"],
79
- [Code.Unavailable, "unavailable"],
80
- [Code.DeadlineExceeded, "unavailable"],
81
- [Code.ResourceExhausted, "unavailable"],
82
- [Code.Canceled, "cancelled"],
83
- ];
84
- it.each(connectMappings)("maps ConnectError code %i to category '%s'", (code, expectedCategory) => {
85
- const result = classifyError(new ConnectError("test", code));
86
- expect(result).toBe(expectedCategory);
87
- });
88
- it("returns 'unknown' for plain Error", () => {
89
- expect(classifyError(new Error("random"))).toBe("unknown");
90
- });
91
- it("returns 'unknown' for string", () => {
92
- expect(classifyError("just a string")).toBe("unknown");
93
- });
94
- it("returns 'unknown' for null", () => {
95
- expect(classifyError(null)).toBe("unknown");
96
- });
97
- });
98
- describe("isRetryableError", () => {
99
- it("returns true for 'server' category errors", () => {
100
- expect(isRetryableError(new StigmerError("internal", "boom", Code.Internal))).toBe(true);
101
- });
102
- it("returns true for 'unavailable' category errors", () => {
103
- expect(isRetryableError(new StigmerError("unavailable", "down", Code.Unavailable))).toBe(true);
104
- });
105
- it("returns false for 'auth' category errors", () => {
106
- expect(isRetryableError(new StigmerError("unauthenticated", "bad token", Code.Unauthenticated))).toBe(false);
107
- });
108
- it("returns false for 'not-found' category errors", () => {
109
- expect(isRetryableError(new StigmerError("not-found", "gone", Code.NotFound))).toBe(false);
110
- });
111
- it("returns false for plain Error", () => {
112
- expect(isRetryableError(new Error("oops"))).toBe(false);
113
- });
114
- });
115
- describe("isTransientStreamError", () => {
116
- it("is true for retryable category errors (server / unavailable)", () => {
117
- expect(isTransientStreamError(new StigmerError("unavailable", "down", Code.Unavailable))).toBe(true);
118
- expect(isTransientStreamError(new ConnectError("boom", Code.Internal))).toBe(true);
119
- });
120
- // The crux of #174: WebKit (Safari / WKWebView) phrases a failed fetch as a
121
- // bare `TypeError: Load failed`, which classifies as `unknown` (not
122
- // retryable) — yet it is exactly the transient drop we must auto-reconnect.
123
- it.each([
124
- "Load failed",
125
- "TypeError: Load failed",
126
- "Failed to fetch",
127
- "fetch failed",
128
- "read ECONNRESET",
129
- "connect ETIMEDOUT",
130
- ])("is true for transport noise %j (even as a bare TypeError)", (message) => {
131
- expect(isTransientStreamError(new TypeError(message))).toBe(true);
132
- });
133
- it.each([
134
- new StigmerError("not-found", "gone", Code.NotFound),
135
- new StigmerError("invalid-argument", "bad", Code.InvalidArgument),
136
- new StigmerError("unauthenticated", "no token", Code.Unauthenticated),
137
- new Error("some deterministic application error"),
138
- ])("is false for deterministic / unknown errors", (error) => {
139
- expect(isTransientStreamError(error)).toBe(false);
140
- });
141
- });
142
- describe("getUserMessage", () => {
143
- it("extracts message from StigmerError", () => {
144
- const err = new StigmerError("not-found", "Agent not found", Code.NotFound);
145
- expect(getUserMessage(err)).toBe("Agent not found");
146
- });
147
- it("extracts rawMessage from ConnectError", () => {
148
- const err = new ConnectError("Agent not found", Code.NotFound);
149
- expect(getUserMessage(err)).toBe("Agent not found");
150
- });
151
- it("extracts message from plain Error", () => {
152
- expect(getUserMessage(new Error("something"))).toBe("something");
153
- });
154
- it("extracts message from string", () => {
155
- expect(getUserMessage("a string error")).toBe("a string error");
156
- });
157
- it("sanitizes 'no healthy upstream' to readable message", () => {
158
- const err = new StigmerError("unavailable", "no healthy upstream", Code.Unavailable);
159
- expect(getUserMessage(err)).toBe("The server is temporarily unavailable.");
160
- });
161
- it("sanitizes 'ECONNREFUSED'", () => {
162
- expect(getUserMessage(new Error("connect ECONNREFUSED 127.0.0.1"))).toBe("Unable to connect to the server.");
163
- });
164
- it("sanitizes 'fetch failed'", () => {
165
- expect(getUserMessage(new Error("fetch failed"))).toBe("Unable to reach the server. Check your connection.");
166
- });
167
- it("sanitizes WebKit's 'Load failed' (Safari / WKWebView)", () => {
168
- expect(getUserMessage(new TypeError("Load failed"))).toBe("The connection to the server was lost.");
169
- });
170
- it("uses category fallback when message is empty", () => {
171
- const err = new StigmerError("not-found", "", Code.NotFound);
172
- expect(getUserMessage(err)).toBe("The requested resource was not found.");
173
- });
174
- it("uses custom fallback when provided and message is empty", () => {
175
- const err = new StigmerError("not-found", "", Code.NotFound);
176
- expect(getUserMessage(err, "Custom fallback")).toBe("Custom fallback");
177
- });
178
- it("uses 'unknown' category fallback for non-SDK errors without message", () => {
179
- expect(getUserMessage(42)).toBe("An unexpected error occurred.");
180
- });
181
- });
182
- describe("getErrorReason", () => {
183
- const errorInfoDetail = {
184
- desc: ErrorInfoSchema,
185
- value: {
186
- domain: "stigmer.ai",
187
- reason: "SLACK_WORKSPACE_ALREADY_CONNECTED",
188
- metadata: { team_name: "Acme HQ", channel_app_id: "" },
189
- },
190
- };
191
- it("extracts the reason from a ConnectError's ErrorInfo detail", () => {
192
- const error = new ConnectError("workspace taken", Code.FailedPrecondition, undefined, [errorInfoDetail]);
193
- expect(getErrorReason(error)).toEqual({
194
- reason: "SLACK_WORKSPACE_ALREADY_CONNECTED",
195
- domain: "stigmer.ai",
196
- metadata: { team_name: "Acme HQ", channel_app_id: "" },
197
- });
198
- });
199
- it("walks the cause chain of an SDK-wrapped StigmerError", () => {
200
- const connectError = new ConnectError("workspace taken", Code.FailedPrecondition, undefined, [errorInfoDetail]);
201
- const wrapped = new StigmerError("failed-precondition", connectError.rawMessage, Code.FailedPrecondition, { cause: connectError });
202
- expect(getErrorReason(wrapped)?.reason).toBe("SLACK_WORKSPACE_ALREADY_CONNECTED");
203
- });
204
- it("returns null for errors without an ErrorInfo detail", () => {
205
- expect(getErrorReason(new ConnectError("bare refusal", Code.FailedPrecondition))).toBeNull();
206
- expect(getErrorReason(new StigmerError("failed-precondition", "bare refusal", 9))).toBeNull();
207
- expect(getErrorReason(new Error("plain"))).toBeNull();
208
- expect(getErrorReason("not an error")).toBeNull();
209
- expect(getErrorReason(null)).toBeNull();
210
- });
211
- });
212
- describe("annotateRpcError / getRpcMetadata", () => {
213
- it("roundtrips metadata on an error object", () => {
214
- const err = new Error("test");
215
- const metadata = { method: "Get", path: "/api/agent" };
216
- annotateRpcError(err, metadata);
217
- expect(getRpcMetadata(err)).toEqual(metadata);
218
- });
219
- it("returns undefined for unannotated errors", () => {
220
- expect(getRpcMetadata(new Error("no metadata"))).toBeUndefined();
221
- });
222
- it("returns undefined for non-object errors", () => {
223
- expect(getRpcMetadata("string error")).toBeUndefined();
224
- expect(getRpcMetadata(null)).toBeUndefined();
225
- expect(getRpcMetadata(42)).toBeUndefined();
226
- });
227
- });
228
- //# sourceMappingURL=errors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/__tests__/errors.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=errors.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/gen/errors.test.ts"],"names":[],"mappings":""}