@stigmer/sdk 3.35.0 → 3.36.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 (342) 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.map +1 -1
  111. package/iam-principal.js.map +1 -1
  112. package/iam-role.d.ts.map +1 -1
  113. package/iam-role.js.map +1 -1
  114. package/index.d.ts.map +1 -1
  115. package/index.js.map +1 -1
  116. package/internal/interceptors.d.ts.map +1 -1
  117. package/internal/interceptors.js.map +1 -1
  118. package/manifest/client.d.ts.map +1 -1
  119. package/manifest/client.js.map +1 -1
  120. package/manifest/document.d.ts.map +1 -1
  121. package/manifest/document.js.map +1 -1
  122. package/manifest/index.d.ts.map +1 -1
  123. package/manifest/index.js.map +1 -1
  124. package/manifest/parse.d.ts.map +1 -1
  125. package/manifest/parse.js.map +1 -1
  126. package/manifest/redaction.d.ts.map +1 -1
  127. package/manifest/redaction.js.map +1 -1
  128. package/manifest/registry.d.ts.map +1 -1
  129. package/manifest/registry.js.map +1 -1
  130. package/manifest/serialize.d.ts.map +1 -1
  131. package/manifest/serialize.js.map +1 -1
  132. package/mcpserver-connect.d.ts.map +1 -1
  133. package/mcpserver-connect.js.map +1 -1
  134. package/node.d.ts.map +1 -1
  135. package/node.js.map +1 -1
  136. package/package.json +2 -2
  137. package/platform-client-auth.d.ts.map +1 -1
  138. package/platform-client-auth.js.map +1 -1
  139. package/platform.d.ts.map +1 -1
  140. package/platform.js.map +1 -1
  141. package/plugin.d.ts.map +1 -1
  142. package/plugin.js.map +1 -1
  143. package/provider-standing.d.ts.map +1 -1
  144. package/provider-standing.js.map +1 -1
  145. package/resource-availability.d.ts.map +1 -1
  146. package/resource-availability.js.map +1 -1
  147. package/runner-adapter.d.ts.map +1 -1
  148. package/runner-adapter.js.map +1 -1
  149. package/search.d.ts.map +1 -1
  150. package/search.js.map +1 -1
  151. package/session.d.ts.map +1 -1
  152. package/session.js.map +1 -1
  153. package/sharing.d.ts.map +1 -1
  154. package/sharing.js.map +1 -1
  155. package/skill.d.ts.map +1 -1
  156. package/skill.js.map +1 -1
  157. package/src/gen/authorization-config.ts +2 -2
  158. package/stigmer.d.ts.map +1 -1
  159. package/stigmer.js.map +1 -1
  160. package/transport.d.ts.map +1 -1
  161. package/transport.js.map +1 -1
  162. package/__tests__/billing.test.d.ts +0 -2
  163. package/__tests__/billing.test.d.ts.map +0 -1
  164. package/__tests__/billing.test.js +0 -120
  165. package/__tests__/billing.test.js.map +0 -1
  166. package/__tests__/config.test.d.ts +0 -2
  167. package/__tests__/config.test.d.ts.map +0 -1
  168. package/__tests__/config.test.js +0 -35
  169. package/__tests__/config.test.js.map +0 -1
  170. package/__tests__/ensure-identity-account.test.d.ts +0 -2
  171. package/__tests__/ensure-identity-account.test.d.ts.map +0 -1
  172. package/__tests__/ensure-identity-account.test.js +0 -108
  173. package/__tests__/ensure-identity-account.test.js.map +0 -1
  174. package/__tests__/errors.test.d.ts +0 -2
  175. package/__tests__/errors.test.d.ts.map +0 -1
  176. package/__tests__/errors.test.js +0 -228
  177. package/__tests__/errors.test.js.map +0 -1
  178. package/__tests__/gen/errors.test.d.ts +0 -2
  179. package/__tests__/gen/errors.test.d.ts.map +0 -1
  180. package/__tests__/gen/errors.test.js +0 -97
  181. package/__tests__/gen/errors.test.js.map +0 -1
  182. package/__tests__/gen/invitation-client.test.d.ts +0 -2
  183. package/__tests__/gen/invitation-client.test.d.ts.map +0 -1
  184. package/__tests__/gen/invitation-client.test.js +0 -106
  185. package/__tests__/gen/invitation-client.test.js.map +0 -1
  186. package/__tests__/gen/proto-utils.test.d.ts +0 -2
  187. package/__tests__/gen/proto-utils.test.d.ts.map +0 -1
  188. package/__tests__/gen/proto-utils.test.js +0 -85
  189. package/__tests__/gen/proto-utils.test.js.map +0 -1
  190. package/__tests__/gen/session-client.test.d.ts +0 -2
  191. package/__tests__/gen/session-client.test.d.ts.map +0 -1
  192. package/__tests__/gen/session-client.test.js +0 -152
  193. package/__tests__/gen/session-client.test.js.map +0 -1
  194. package/__tests__/guest-auth.test.d.ts +0 -2
  195. package/__tests__/guest-auth.test.d.ts.map +0 -1
  196. package/__tests__/guest-auth.test.js +0 -223
  197. package/__tests__/guest-auth.test.js.map +0 -1
  198. package/__tests__/iam-principal.test.d.ts +0 -2
  199. package/__tests__/iam-principal.test.d.ts.map +0 -1
  200. package/__tests__/iam-principal.test.js +0 -65
  201. package/__tests__/iam-principal.test.js.map +0 -1
  202. package/__tests__/manifest.test.d.ts +0 -2
  203. package/__tests__/manifest.test.d.ts.map +0 -1
  204. package/__tests__/manifest.test.js +0 -306
  205. package/__tests__/manifest.test.js.map +0 -1
  206. package/__tests__/mcpserver-connect.test.d.ts +0 -2
  207. package/__tests__/mcpserver-connect.test.d.ts.map +0 -1
  208. package/__tests__/mcpserver-connect.test.js +0 -146
  209. package/__tests__/mcpserver-connect.test.js.map +0 -1
  210. package/__tests__/node.test.d.ts +0 -2
  211. package/__tests__/node.test.d.ts.map +0 -1
  212. package/__tests__/node.test.js +0 -67
  213. package/__tests__/node.test.js.map +0 -1
  214. package/__tests__/platform-client-auth.test.d.ts +0 -2
  215. package/__tests__/platform-client-auth.test.d.ts.map +0 -1
  216. package/__tests__/platform-client-auth.test.js +0 -59
  217. package/__tests__/platform-client-auth.test.js.map +0 -1
  218. package/__tests__/platform.test.d.ts +0 -2
  219. package/__tests__/platform.test.d.ts.map +0 -1
  220. package/__tests__/platform.test.js +0 -52
  221. package/__tests__/platform.test.js.map +0 -1
  222. package/__tests__/plugin.test.d.ts +0 -2
  223. package/__tests__/plugin.test.d.ts.map +0 -1
  224. package/__tests__/plugin.test.js +0 -74
  225. package/__tests__/plugin.test.js.map +0 -1
  226. package/__tests__/resource-availability.test.d.ts +0 -2
  227. package/__tests__/resource-availability.test.d.ts.map +0 -1
  228. package/__tests__/resource-availability.test.js +0 -80
  229. package/__tests__/resource-availability.test.js.map +0 -1
  230. package/__tests__/runner-adapter.test.d.ts +0 -2
  231. package/__tests__/runner-adapter.test.d.ts.map +0 -1
  232. package/__tests__/runner-adapter.test.js +0 -88
  233. package/__tests__/runner-adapter.test.js.map +0 -1
  234. package/__tests__/session.test.d.ts +0 -6
  235. package/__tests__/session.test.d.ts.map +0 -1
  236. package/__tests__/session.test.js +0 -50
  237. package/__tests__/session.test.js.map +0 -1
  238. package/__tests__/sharing.test.d.ts +0 -2
  239. package/__tests__/sharing.test.d.ts.map +0 -1
  240. package/__tests__/sharing.test.js +0 -106
  241. package/__tests__/sharing.test.js.map +0 -1
  242. package/__tests__/skill.test.d.ts +0 -2
  243. package/__tests__/skill.test.d.ts.map +0 -1
  244. package/__tests__/skill.test.js +0 -117
  245. package/__tests__/skill.test.js.map +0 -1
  246. package/__tests__/stigmer.test.d.ts +0 -2
  247. package/__tests__/stigmer.test.d.ts.map +0 -1
  248. package/__tests__/stigmer.test.js +0 -127
  249. package/__tests__/stigmer.test.js.map +0 -1
  250. package/__tests__/update-input-roundtrip.test.d.ts +0 -2
  251. package/__tests__/update-input-roundtrip.test.d.ts.map +0 -1
  252. package/__tests__/update-input-roundtrip.test.js +0 -775
  253. package/__tests__/update-input-roundtrip.test.js.map +0 -1
  254. package/__tests__/update-input.test.d.ts +0 -2
  255. package/__tests__/update-input.test.d.ts.map +0 -1
  256. package/__tests__/update-input.test.js +0 -188
  257. package/__tests__/update-input.test.js.map +0 -1
  258. package/execution/__tests__/approval-provenance.test.d.ts +0 -2
  259. package/execution/__tests__/approval-provenance.test.d.ts.map +0 -1
  260. package/execution/__tests__/approval-provenance.test.js +0 -42
  261. package/execution/__tests__/approval-provenance.test.js.map +0 -1
  262. package/execution/__tests__/file-review-fold.corpus.test.d.ts +0 -2
  263. package/execution/__tests__/file-review-fold.corpus.test.d.ts.map +0 -1
  264. package/execution/__tests__/file-review-fold.corpus.test.js +0 -82
  265. package/execution/__tests__/file-review-fold.corpus.test.js.map +0 -1
  266. package/execution/__tests__/file-review-fold.test.d.ts +0 -2
  267. package/execution/__tests__/file-review-fold.test.d.ts.map +0 -1
  268. package/execution/__tests__/file-review-fold.test.js +0 -184
  269. package/execution/__tests__/file-review-fold.test.js.map +0 -1
  270. package/execution/__tests__/to-display-file-change.test.d.ts +0 -2
  271. package/execution/__tests__/to-display-file-change.test.d.ts.map +0 -1
  272. package/execution/__tests__/to-display-file-change.test.js +0 -81
  273. package/execution/__tests__/to-display-file-change.test.js.map +0 -1
  274. package/execution/__tests__/tool-view.file-changes.test.d.ts +0 -2
  275. package/execution/__tests__/tool-view.file-changes.test.d.ts.map +0 -1
  276. package/execution/__tests__/tool-view.file-changes.test.js +0 -86
  277. package/execution/__tests__/tool-view.file-changes.test.js.map +0 -1
  278. package/execution/__tests__/tool-view.fixtures.test.d.ts +0 -2
  279. package/execution/__tests__/tool-view.fixtures.test.d.ts.map +0 -1
  280. package/execution/__tests__/tool-view.fixtures.test.js +0 -152
  281. package/execution/__tests__/tool-view.fixtures.test.js.map +0 -1
  282. package/execution/__tests__/tool-view.output-ref.test.d.ts +0 -2
  283. package/execution/__tests__/tool-view.output-ref.test.d.ts.map +0 -1
  284. package/execution/__tests__/tool-view.output-ref.test.js +0 -64
  285. package/execution/__tests__/tool-view.output-ref.test.js.map +0 -1
  286. package/execution/__tests__/tool-view.read.test.d.ts +0 -2
  287. package/execution/__tests__/tool-view.read.test.d.ts.map +0 -1
  288. package/execution/__tests__/tool-view.read.test.js +0 -56
  289. package/execution/__tests__/tool-view.read.test.js.map +0 -1
  290. package/execution/__tests__/tool-view.search.test.d.ts +0 -2
  291. package/execution/__tests__/tool-view.search.test.d.ts.map +0 -1
  292. package/execution/__tests__/tool-view.search.test.js +0 -200
  293. package/execution/__tests__/tool-view.search.test.js.map +0 -1
  294. package/execution/__tests__/tool-view.shell.test.d.ts +0 -2
  295. package/execution/__tests__/tool-view.shell.test.d.ts.map +0 -1
  296. package/execution/__tests__/tool-view.shell.test.js +0 -104
  297. package/execution/__tests__/tool-view.shell.test.js.map +0 -1
  298. package/execution/__tests__/transcript.test.d.ts +0 -2
  299. package/execution/__tests__/transcript.test.d.ts.map +0 -1
  300. package/execution/__tests__/transcript.test.js +0 -591
  301. package/execution/__tests__/transcript.test.js.map +0 -1
  302. package/node.test.d.ts +0 -2
  303. package/node.test.d.ts.map +0 -1
  304. package/node.test.js +0 -35
  305. package/node.test.js.map +0 -1
  306. package/src/__tests__/billing.test.ts +0 -146
  307. package/src/__tests__/config.test.ts +0 -52
  308. package/src/__tests__/ensure-identity-account.test.ts +0 -146
  309. package/src/__tests__/errors.test.ts +0 -349
  310. package/src/__tests__/gen/errors.test.ts +0 -138
  311. package/src/__tests__/gen/invitation-client.test.ts +0 -132
  312. package/src/__tests__/gen/proto-utils.test.ts +0 -99
  313. package/src/__tests__/gen/session-client.test.ts +0 -208
  314. package/src/__tests__/guest-auth.test.ts +0 -287
  315. package/src/__tests__/iam-principal.test.ts +0 -82
  316. package/src/__tests__/manifest.test.ts +0 -362
  317. package/src/__tests__/mcpserver-connect.test.ts +0 -181
  318. package/src/__tests__/node.test.ts +0 -74
  319. package/src/__tests__/platform-client-auth.test.ts +0 -76
  320. package/src/__tests__/platform.test.ts +0 -74
  321. package/src/__tests__/plugin.test.ts +0 -92
  322. package/src/__tests__/resource-availability.test.ts +0 -118
  323. package/src/__tests__/runner-adapter.test.ts +0 -122
  324. package/src/__tests__/session.test.ts +0 -66
  325. package/src/__tests__/sharing.test.ts +0 -159
  326. package/src/__tests__/skill.test.ts +0 -150
  327. package/src/__tests__/stigmer.test.ts +0 -170
  328. package/src/__tests__/update-input-roundtrip.test.ts +0 -1007
  329. package/src/__tests__/update-input.test.ts +0 -250
  330. package/src/execution/__tests__/approval-provenance.test.ts +0 -60
  331. package/src/execution/__tests__/file-review-fold.corpus.test.ts +0 -127
  332. package/src/execution/__tests__/file-review-fold.test.ts +0 -281
  333. package/src/execution/__tests__/to-display-file-change.test.ts +0 -106
  334. package/src/execution/__tests__/tool-view.file-changes.test.ts +0 -100
  335. package/src/execution/__tests__/tool-view.fixtures.test.ts +0 -225
  336. package/src/execution/__tests__/tool-view.output-ref.test.ts +0 -76
  337. package/src/execution/__tests__/tool-view.read.test.ts +0 -71
  338. package/src/execution/__tests__/tool-view.search.test.ts +0 -264
  339. package/src/execution/__tests__/tool-view.shell.test.ts +0 -127
  340. package/src/execution/__tests__/transcript.golden.md +0 -100
  341. package/src/execution/__tests__/transcript.test.ts +0 -697
  342. package/src/node.test.ts +0 -38
@@ -1 +0,0 @@
1
- {"version":3,"file":"iam-principal.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/iam-principal.test.ts"],"names":[],"mappings":""}
@@ -1,65 +0,0 @@
1
- /**
2
- * Pins the grantee vocabulary (`iam-principal.ts`) and the team half of the
3
- * authorization config (`authorization-config.ts`):
4
- *
5
- * - a team is always granted as `team:<id>#member` and a person always
6
- * unqualified, because the server's revoke matches the qualifier
7
- * exactly and a dropped `#member` revokes nothing while reporting
8
- * success;
9
- * - reading an access-list entry back is the inverse of building one,
10
- * and anything else (a structural principal, another team qualifier)
11
- * is refused rather than guessed at;
12
- * - a team may only ever be offered a subset of a person's roles, never
13
- * `owner`, and nothing on `organization` (the circular grant the
14
- * model's membership bound forbids).
15
- */
16
- import { describe, expect, it } from "vitest";
17
- import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
18
- import { IamRole } from "@stigmer/protos/ai/stigmer/iam/v1/enum_pb";
19
- import { getGrantableRoles, getTeamGrantableRoles, hasTeamGrantableRoles, isRoleTeamGrantable, } from "../authorization-config";
20
- import { TEAM_GRANTABLE_ROLES } from "../gen/authorization-config";
21
- import { granteeFromView, granteeRef, personGrantee, teamGrantee, } from "../iam-principal";
22
- describe("granteeRef — the one spelling of a grantee on the wire", () => {
23
- it("names a team as its members", () => {
24
- const ref = granteeRef(teamGrantee("tm_sre"));
25
- expect([ref.kind, ref.id, ref.relation]).toEqual(["team", "tm_sre", "member"]);
26
- });
27
- it("names a person with no relation qualifier", () => {
28
- const ref = granteeRef(personGrantee("ida_alice"));
29
- expect([ref.kind, ref.id, ref.relation]).toEqual(["identity_account", "ida_alice", ""]);
30
- });
31
- });
32
- describe("granteeFromView — reading an access-list entry back", () => {
33
- it("round-trips both grantees through their wire reference", () => {
34
- for (const grantee of [teamGrantee("tm_sre"), personGrantee("ida_alice")]) {
35
- expect(granteeFromView(granteeRef(grantee))).toEqual(grantee);
36
- }
37
- });
38
- it("refuses what it would misname: a team without its members qualifier, a qualified person, a structural principal, an empty id", () => {
39
- expect(granteeFromView({ kind: "team", id: "tm_sre", relation: "" })).toBeUndefined();
40
- expect(granteeFromView({ kind: "team", id: "tm_sre", relation: "maintainer" })).toBeUndefined();
41
- expect(granteeFromView({ kind: "identity_account", id: "ida_alice", relation: "member" })).toBeUndefined();
42
- expect(granteeFromView({ kind: "organization", id: "acme", relation: "" })).toBeUndefined();
43
- expect(granteeFromView({ kind: "identity_account", id: "", relation: "" })).toBeUndefined();
44
- });
45
- });
46
- describe("team grantable roles", () => {
47
- it("are, for every kind, a subset of the person's roles and never owner", () => {
48
- for (const [kind, teamRoles] of TEAM_GRANTABLE_ROLES) {
49
- const personRoles = getGrantableRoles(kind);
50
- for (const role of teamRoles) {
51
- expect(personRoles).toContain(role);
52
- expect(role).not.toBe(IamRole.owner);
53
- }
54
- }
55
- });
56
- it("list nothing on organization, so an organization is never shared with a team", () => {
57
- expect(hasTeamGrantableRoles(ApiResourceKind.organization)).toBe(false);
58
- expect(getTeamGrantableRoles(ApiResourceKind.organization)).toEqual([]);
59
- });
60
- it("answer per role on a kind a team may be shared", () => {
61
- expect(isRoleTeamGrantable(ApiResourceKind.agent, IamRole.viewer)).toBe(true);
62
- expect(isRoleTeamGrantable(ApiResourceKind.agent, IamRole.owner)).toBe(false);
63
- });
64
- });
65
- //# sourceMappingURL=iam-principal.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iam-principal.test.js","sourceRoot":"","sources":["../../src/__tests__/iam-principal.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=manifest.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/manifest.test.ts"],"names":[],"mappings":""}
@@ -1,306 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { clone, create, equals } from "@bufbuild/protobuf";
3
- import { AgentSchema } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
4
- import { EnvironmentSchema } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/api_pb";
5
- import { ScheduleSchema } from "@stigmer/protos/ai/stigmer/agentic/schedule/v1/api_pb";
6
- import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
7
- import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
8
- import { parse as parseYaml } from "yaml";
9
- import { parseManifest } from "../manifest/parse";
10
- import { serializeManifest } from "../manifest/serialize";
11
- import { manifestDocumentForResource } from "../manifest/document";
12
- import { manifestKinds, manifestHandlerForYamlKind } from "../manifest/registry";
13
- /**
14
- * Manifest engine contract tests.
15
- *
16
- * The engine's core promise is *round-trip fidelity against the generated
17
- * proto schemas*: any resource the server returns serializes to YAML that
18
- * parses back to the same proto (minus system-managed state), and any
19
- * repo-authored manifest (snake_case fields, `apiVersion` spelling) parses
20
- * to a proto the `apply` RPC accepts. Fixtures mirror the real manifests
21
- * in the whatsapp-doctor-assistant dogfooding repo.
22
- */
23
- // ---------------------------------------------------------------------------
24
- // Fixtures — shaped like the whatsapp-doctor-assistant repo manifests
25
- // ---------------------------------------------------------------------------
26
- const AGENT_YAML = `
27
- apiVersion: agentic.stigmer.ai/v1
28
- kind: Agent
29
- metadata:
30
- name: clinic-patient-assistant
31
- org: rakeshreddi098
32
- spec:
33
- description: Patient-facing WhatsApp assistant for the clinic.
34
- instructions: |
35
- You are the appointment assistant for the clinic.
36
- Short messages. One question at a time.
37
- `;
38
- const ENVIRONMENT_YAML = `
39
- apiVersion: agentic.stigmer.ai/v1
40
- kind: Environment
41
- metadata:
42
- name: clinic-patient-db
43
- org: rakeshreddi098
44
- spec:
45
- description: "Clinic records access for the patient assistant"
46
- data:
47
- POSTGRES_CONNECTION_URL:
48
- value: "postgresql://patient_role:secret@host:5432/postgres"
49
- is_secret: true
50
- description: "Supabase Postgres connection URL for patient_role"
51
- `;
52
- const AGENT_CHANNEL_YAML = `
53
- apiVersion: agentic.stigmer.ai/v1
54
- kind: AgentChannel
55
- metadata:
56
- name: clinic-patient-whatsapp
57
- org: rakeshreddi098
58
- spec:
59
- agent_ref:
60
- kind: agent
61
- org: rakeshreddi098
62
- slug: clinic-patient-assistant
63
- enabled: true
64
- whatsapp:
65
- phone_number_id: "1234567890"
66
- app_ref:
67
- kind: channel_app
68
- org: rakeshreddi098
69
- slug: hosipital
70
- environment_refs:
71
- - kind: environment
72
- org: rakeshreddi098
73
- slug: clinic-patient-db
74
- `;
75
- // ---------------------------------------------------------------------------
76
- // parseManifest
77
- // ---------------------------------------------------------------------------
78
- describe("parseManifest", () => {
79
- it("parses a snake_case Agent manifest into a full Agent proto", () => {
80
- const docs = parseManifest(AGENT_YAML);
81
- expect(docs).toHaveLength(1);
82
- const doc = docs[0];
83
- expect(doc.handler.yamlKind).toBe("Agent");
84
- expect(doc.name).toBe("clinic-patient-assistant");
85
- expect(doc.org).toBe("rakeshreddi098");
86
- const agent = doc.message;
87
- expect(agent.spec?.description).toBe("Patient-facing WhatsApp assistant for the clinic.");
88
- expect(agent.spec?.instructions).toContain("appointment assistant");
89
- });
90
- it("parses an AgentChannel manifest with enum-valued resource refs", () => {
91
- const docs = parseManifest(AGENT_CHANNEL_YAML);
92
- expect(docs).toHaveLength(1);
93
- expect(docs[0].handler.yamlKind).toBe("AgentChannel");
94
- expect(docs[0].slug).toBe("clinic-patient-whatsapp");
95
- });
96
- it("sorts multi-document manifests into dependency apply order", () => {
97
- // Authored channel-first; the Environment must still apply first.
98
- const docs = parseManifest(`${AGENT_CHANNEL_YAML}\n---\n${ENVIRONMENT_YAML}`);
99
- expect(docs.map((d) => d.handler.yamlKind)).toEqual([
100
- "Environment",
101
- "AgentChannel",
102
- ]);
103
- });
104
- it("injects the target org when the document omits it", () => {
105
- const yaml = AGENT_YAML.replace(" org: rakeshreddi098\n", "");
106
- const docs = parseManifest(yaml, { org: "acme" });
107
- expect(docs[0].org).toBe("acme");
108
- expect(docs[0].warning).toBeUndefined();
109
- });
110
- it("honors the document org and warns when it differs from the target", () => {
111
- const docs = parseManifest(AGENT_YAML, { org: "acme" });
112
- expect(docs[0].org).toBe("rakeshreddi098");
113
- expect(docs[0].warning).toContain('"rakeshreddi098"');
114
- expect(docs[0].warning).toContain('"acme"');
115
- });
116
- it("rejects unknown fields loudly (strict schema contract)", () => {
117
- const yaml = AGENT_YAML.replace("spec:", "spec:\n instrctions: typo");
118
- expect(() => parseManifest(yaml)).toThrow(/Invalid Agent/);
119
- });
120
- it("rejects a document without a kind", () => {
121
- expect(() => parseManifest("metadata:\n name: x\n")).toThrow(/'kind'/);
122
- });
123
- it("rejects unsupported kinds with the supported list", () => {
124
- expect(() => parseManifest("kind: Skill\nmetadata:\n name: x\n")).toThrow(/Unsupported resource kind "Skill".*Agent/s);
125
- });
126
- it("rejects empty input with actionable guidance", () => {
127
- expect(() => parseManifest(" \n")).toThrow(/empty/i);
128
- });
129
- it("rejects malformed YAML", () => {
130
- expect(() => parseManifest("kind: Agent\n bad indent: [")).toThrow(/Invalid YAML/);
131
- });
132
- });
133
- // ---------------------------------------------------------------------------
134
- // serializeManifest
135
- // ---------------------------------------------------------------------------
136
- describe("serializeManifest", () => {
137
- const agent = create(AgentSchema, {
138
- apiVersion: "agentic.stigmer.ai/v1",
139
- kind: "Agent",
140
- metadata: {
141
- id: "agt_01example",
142
- name: "clinic-patient-assistant",
143
- slug: "clinic-patient-assistant",
144
- org: "rakeshreddi098",
145
- version: { id: "ver_01", message: "server-managed" },
146
- },
147
- spec: {
148
- description: "Patient-facing WhatsApp assistant.",
149
- instructions: "Short messages.\nOne question at a time.\n",
150
- },
151
- status: { defaultInstanceId: "agi_01example" },
152
- });
153
- it("emits the canonical envelope: apiVersion spelling, no status", () => {
154
- const yaml = serializeManifest(agent);
155
- const doc = parseYaml(yaml);
156
- expect(Object.keys(doc)[0]).toBe("apiVersion");
157
- expect(doc.apiVersion).toBe("agentic.stigmer.ai/v1");
158
- expect(doc.kind).toBe("Agent");
159
- expect(doc.status).toBeUndefined();
160
- expect(yaml).not.toContain("api_version:");
161
- });
162
- it("keeps metadata.id but strips server-managed metadata.version", () => {
163
- const doc = parseYaml(serializeManifest(agent));
164
- expect(doc.metadata.id).toBe("agt_01example");
165
- expect(doc.metadata.version).toBeUndefined();
166
- });
167
- it("fills apiVersion and kind from the registry when the proto omits them", () => {
168
- const bare = create(AgentSchema, {
169
- metadata: { name: "x", org: "acme" },
170
- });
171
- const doc = parseYaml(serializeManifest(bare));
172
- expect(doc.apiVersion).toBe("agentic.stigmer.ai/v1");
173
- expect(doc.kind).toBe("Agent");
174
- });
175
- it("round-trips through parseManifest to an equal proto", () => {
176
- const docs = parseManifest(serializeManifest(agent));
177
- expect(docs).toHaveLength(1);
178
- // The round-tripped proto matches the original minus system-managed
179
- // state (status, metadata.version) — exactly what apply consumes.
180
- const expected = create(AgentSchema, {
181
- ...agent,
182
- status: undefined,
183
- metadata: { ...agent.metadata, version: undefined },
184
- });
185
- expect(equals(AgentSchema, docs[0].message, expected)).toBe(true);
186
- });
187
- it("round-trips Environment secret values byte-identically", () => {
188
- const env = create(EnvironmentSchema, {
189
- metadata: { name: "clinic-patient-db", org: "rakeshreddi098" },
190
- spec: {
191
- data: {
192
- POSTGRES_CONNECTION_URL: {
193
- value: "***REDACTED***",
194
- isSecret: true,
195
- description: "Supabase Postgres connection URL",
196
- },
197
- },
198
- },
199
- });
200
- const docs = parseManifest(serializeManifest(env));
201
- const roundTripped = docs[0].message;
202
- expect(roundTripped.spec?.data.POSTGRES_CONNECTION_URL?.value).toBe("***REDACTED***");
203
- expect(roundTripped.spec?.data.POSTGRES_CONNECTION_URL?.isSecret).toBe(true);
204
- });
205
- it("rejects messages of kinds outside the registry", () => {
206
- // ApiResourceMetadata is a real proto message but not a manifest kind.
207
- const notAResource = create(ApiResourceMetadataSchema, { name: "x" });
208
- expect(() => serializeManifest(notAResource)).toThrow(/not.*registry/i);
209
- });
210
- });
211
- // ---------------------------------------------------------------------------
212
- // manifestDocumentForResource
213
- // ---------------------------------------------------------------------------
214
- describe("manifestDocumentForResource", () => {
215
- // Shaped like a server-returned schedule: full metadata (including
216
- // fields the curated ScheduleInput cannot express, like tags) and a
217
- // populated status — the exact input of a lossless partial edit.
218
- const schedule = create(ScheduleSchema, {
219
- apiVersion: "agentic.stigmer.ai/v1",
220
- kind: "Schedule",
221
- metadata: {
222
- id: "sch_01example",
223
- name: "daily-fee-reminders",
224
- slug: "daily-fee-reminders",
225
- org: "isc",
226
- tags: ["billing"],
227
- labels: { team: "ops" },
228
- },
229
- spec: {
230
- cron: "0 9 * * *",
231
- timeZone: "Asia/Kolkata",
232
- enabled: true,
233
- target: {
234
- case: "agent",
235
- value: {
236
- agentRef: { kind: ApiResourceKind.agent, org: "isc", slug: "fee-reminder" },
237
- message: "Send today's fee reminders.",
238
- },
239
- },
240
- },
241
- status: { consecutiveFailures: 2, pausedReason: "" },
242
- });
243
- it("wraps a fetched proto untouched — the lossless edit contract", () => {
244
- const flipped = clone(ScheduleSchema, schedule);
245
- flipped.spec.enabled = false;
246
- const doc = manifestDocumentForResource(flipped);
247
- expect(doc.handler.yamlKind).toBe("Schedule");
248
- expect(doc.name).toBe("daily-fee-reminders");
249
- expect(doc.slug).toBe("daily-fee-reminders");
250
- expect(doc.org).toBe("isc");
251
- // Identity, not a copy: nothing is re-serialized or down-converted,
252
- // so every field survives (the ScheduleInput path would drop tags).
253
- expect(doc.message).toBe(flipped);
254
- const expected = clone(ScheduleSchema, schedule);
255
- expected.spec.enabled = false;
256
- expect(equals(ScheduleSchema, doc.message, expected)).toBe(true);
257
- });
258
- it("falls back to name when the proto has no slug", () => {
259
- const bare = create(AgentSchema, { metadata: { name: "x", org: "acme" } });
260
- const doc = manifestDocumentForResource(bare);
261
- expect(doc.slug).toBe("x");
262
- });
263
- it("rejects messages of kinds outside the registry", () => {
264
- const notAResource = create(ApiResourceMetadataSchema, { name: "x" });
265
- expect(() => manifestDocumentForResource(notAResource)).toThrow(/not.*registry/i);
266
- });
267
- it("rejects a resource without metadata.name", () => {
268
- const nameless = create(ScheduleSchema, { metadata: { org: "acme" } });
269
- expect(() => manifestDocumentForResource(nameless)).toThrow(/metadata\.name/);
270
- });
271
- });
272
- // ---------------------------------------------------------------------------
273
- // Registry invariants
274
- // ---------------------------------------------------------------------------
275
- describe("manifest registry", () => {
276
- it("every handler resolves by its own YAML kind", () => {
277
- for (const handler of manifestKinds()) {
278
- expect(manifestHandlerForYamlKind(handler.yamlKind)).toBe(handler);
279
- }
280
- });
281
- it("apply order is strictly increasing (no accidental ties)", () => {
282
- const orders = manifestKinds().map((h) => h.applyOrder);
283
- for (let i = 1; i < orders.length; i++) {
284
- expect(orders[i]).toBeGreaterThan(orders[i - 1]);
285
- }
286
- });
287
- it("covers the kinds the console flows depend on", () => {
288
- for (const kind of ["Agent", "McpServer", "Workflow", "Environment", "AgentChannel", "ChannelApp"]) {
289
- expect(manifestHandlerForYamlKind(kind), `missing handler for ${kind}`).toBeDefined();
290
- }
291
- });
292
- it("declares the updateVisibility binding on exactly the guarded-RPC kinds (oss#573)", () => {
293
- // Visibility changes go through the updateVisibility RPC only (plain
294
- // updates preserve stored visibility on both editions). The binding set
295
- // mirrors the kinds whose proto VisibilityConfig grants non-private
296
- // levels, minus Skill (push flow, not a manifest kind) — a kind added
297
- // here without the RPC fails at compile time, one dropped from here
298
- // silently strands manifest-declared visibility, which this pins.
299
- const withBinding = manifestKinds()
300
- .filter((h) => h.updateVisibility !== undefined)
301
- .map((h) => h.yamlKind)
302
- .sort();
303
- expect(withBinding).toEqual(["Agent", "AgentInstance", "Environment", "McpServer", "Workflow"]);
304
- });
305
- });
306
- //# sourceMappingURL=manifest.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.test.js","sourceRoot":"","sources":["../../src/__tests__/manifest.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mcpserver-connect.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcpserver-connect.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mcpserver-connect.test.ts"],"names":[],"mappings":""}
@@ -1,146 +0,0 @@
1
- // Pins the shared async-connect protocol (stigmer/stigmer#425): start + poll,
2
- // terminal-failure rehydration, the UNIMPLEMENTED blocking fallback, and the
3
- // still-running bound. Every SDK surface (CLI, React hooks, host apps) rides
4
- // this one implementation, so its contract is pinned here rather than
5
- // re-tested per consumer.
6
- import { describe, expect, it } from "vitest";
7
- import { create } from "@bufbuild/protobuf";
8
- import { Code, ConnectError } from "@connectrpc/connect";
9
- import { McpServerSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
10
- import { ConnectInputSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/io_pb";
11
- import { ConnectPhase } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/status_pb";
12
- import { StigmerError, wrapError } from "../gen/errors.js";
13
- import { connectAndWait, ConnectStillRunningError, } from "../mcpserver-connect.js";
14
- const INPUT = create(ConnectInputSchema, { mcpServerId: "mcp-1", org: "test-org" });
15
- function server(overrides) {
16
- return create(McpServerSchema, {
17
- metadata: { id: "mcp-1", name: "Test Server" },
18
- status: {
19
- ...(overrides?.toolName !== undefined
20
- ? { discoveredCapabilities: { tools: [{ name: overrides.toolName }] } }
21
- : {}),
22
- connectStatus: {
23
- phase: overrides?.phase ?? ConnectPhase.connecting,
24
- workflowId: "stigmer/mcp-server/connect/mcp-1",
25
- failureCode: overrides?.failureCode ?? "",
26
- failureMessage: overrides?.failureMessage ?? "",
27
- warning: overrides?.warning ?? "",
28
- },
29
- },
30
- });
31
- }
32
- function unimplemented() {
33
- return wrapError(new ConnectError("startConnect is not implemented", Code.Unimplemented));
34
- }
35
- const NEVER = () => new Promise(() => { });
36
- describe("connectAndWait", () => {
37
- it("resolves with the settled resource once connect_status reports success", async () => {
38
- const polled = [
39
- server({ phase: ConnectPhase.connecting }),
40
- server({ phase: ConnectPhase.succeeded, toolName: "search_code" }),
41
- ];
42
- const lane = {
43
- startConnect: async () => server(),
44
- connect: NEVER,
45
- get: async () => polled.shift() ?? server({ phase: ConnectPhase.succeeded }),
46
- };
47
- const settled = await connectAndWait(lane, INPUT, { pollIntervalMs: 1 });
48
- expect(settled.status?.connectStatus?.phase).toBe(ConnectPhase.succeeded);
49
- expect(settled.status?.discoveredCapabilities?.tools[0]?.name).toBe("search_code");
50
- });
51
- it("surfaces the CONNECTING snapshot (dead-runner warning) via onStarted", async () => {
52
- const lane = {
53
- startConnect: async () => server({ warning: "no runner appears to be polling the task queue" }),
54
- connect: NEVER,
55
- get: async () => server({ phase: ConnectPhase.succeeded }),
56
- };
57
- let warning = "";
58
- await connectAndWait(lane, INPUT, {
59
- pollIntervalMs: 1,
60
- onStarted: (started) => {
61
- warning = started.status?.connectStatus?.warning ?? "";
62
- },
63
- });
64
- expect(warning).toContain("no runner");
65
- });
66
- it("rehydrates a failed operation into the classification the blocking RPC would have thrown", async () => {
67
- const lane = {
68
- startConnect: async () => server(),
69
- connect: NEVER,
70
- get: async () => server({
71
- phase: ConnectPhase.failed,
72
- failureCode: "FailedPrecondition",
73
- failureMessage: "connect failed for MCP server 'Test Server': missing credentials",
74
- }),
75
- };
76
- const err = await connectAndWait(lane, INPUT, { pollIntervalMs: 1 }).catch((e) => e);
77
- expect(err).toBeInstanceOf(StigmerError);
78
- const stigmerErr = err;
79
- // Byte-parity with the blocking lane: same code mapping, same raw message.
80
- expect(stigmerErr.code).toBe("failed-precondition");
81
- expect(stigmerErr.message).toBe("connect failed for MCP server 'Test Server': missing credentials");
82
- });
83
- it("maps an unknown failure_code to the unknown classification instead of crashing", async () => {
84
- const lane = {
85
- startConnect: async () => server(),
86
- connect: NEVER,
87
- get: async () => server({
88
- phase: ConnectPhase.failed,
89
- failureCode: "SomeFutureCode",
90
- failureMessage: "boom",
91
- }),
92
- };
93
- const err = await connectAndWait(lane, INPUT, { pollIntervalMs: 1 }).catch((e) => e);
94
- expect(err.code).toBe("unknown");
95
- expect(err.message).toBe("boom");
96
- });
97
- it("falls back to the blocking connect when the backend answers UNIMPLEMENTED", async () => {
98
- let blockingCalled = false;
99
- const lane = {
100
- startConnect: async () => {
101
- throw unimplemented();
102
- },
103
- connect: async () => {
104
- blockingCalled = true;
105
- return server({ phase: ConnectPhase.succeeded, toolName: "search_code" });
106
- },
107
- get: NEVER,
108
- };
109
- const settled = await connectAndWait(lane, INPUT);
110
- expect(blockingCalled).toBe(true);
111
- expect(settled.status?.discoveredCapabilities?.tools[0]?.name).toBe("search_code");
112
- });
113
- it("propagates non-UNIMPLEMENTED start failures untouched", async () => {
114
- const startFailure = wrapError(new ConnectError("no such server", Code.NotFound));
115
- const lane = {
116
- startConnect: async () => {
117
- throw startFailure;
118
- },
119
- connect: NEVER,
120
- get: NEVER,
121
- };
122
- await expect(connectAndWait(lane, INPUT)).rejects.toBe(startFailure);
123
- });
124
- it("throws ConnectStillRunningError when the deadline elapses while CONNECTING", async () => {
125
- const lane = {
126
- startConnect: async () => server(),
127
- connect: NEVER,
128
- get: async () => server({ phase: ConnectPhase.connecting }),
129
- };
130
- const err = await connectAndWait(lane, INPUT, { pollIntervalMs: 1, deadlineMs: 20 }).catch((e) => e);
131
- expect(err).toBeInstanceOf(ConnectStillRunningError);
132
- expect(err.mcpServerId).toBe("mcp-1");
133
- });
134
- it("bounds the blocking fallback with the same still-running semantics (soft, non-cancelling)", async () => {
135
- const lane = {
136
- startConnect: async () => {
137
- throw unimplemented();
138
- },
139
- connect: NEVER,
140
- get: NEVER,
141
- };
142
- const err = await connectAndWait(lane, INPUT, { deadlineMs: 20 }).catch((e) => e);
143
- expect(err).toBeInstanceOf(ConnectStillRunningError);
144
- });
145
- });
146
- //# sourceMappingURL=mcpserver-connect.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcpserver-connect.test.js","sourceRoot":"","sources":["../../src/__tests__/mcpserver-connect.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=node.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/node.test.ts"],"names":[],"mappings":""}