@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.
- package/activity.d.ts.map +1 -1
- package/activity.js.map +1 -1
- package/artifact-routing.d.ts.map +1 -1
- package/artifact-routing.js.map +1 -1
- package/authorization-config.d.ts.map +1 -1
- package/authorization-config.js.map +1 -1
- package/billing.d.ts.map +1 -1
- package/billing.js.map +1 -1
- package/config.d.ts.map +1 -1
- package/config.js.map +1 -1
- package/cursor-accounts.d.ts.map +1 -1
- package/cursor-accounts.js.map +1 -1
- package/ensure-identity-account.d.ts.map +1 -1
- package/ensure-identity-account.js.map +1 -1
- package/errors.d.ts.map +1 -1
- package/errors.js.map +1 -1
- package/execution/approval-provenance.d.ts.map +1 -1
- package/execution/approval-provenance.js.map +1 -1
- package/execution/conversation-rules.d.ts.map +1 -1
- package/execution/conversation-rules.js.map +1 -1
- package/execution/execution-phases.d.ts.map +1 -1
- package/execution/execution-phases.js.map +1 -1
- package/execution/file-review-fold.d.ts.map +1 -1
- package/execution/file-review-fold.js.map +1 -1
- package/execution/to-display-file-change.d.ts.map +1 -1
- package/execution/to-display-file-change.js.map +1 -1
- package/execution/tool-view.d.ts.map +1 -1
- package/execution/tool-view.js.map +1 -1
- package/execution/transcript.d.ts.map +1 -1
- package/execution/transcript.js.map +1 -1
- package/gen/agent.d.ts.map +1 -1
- package/gen/agent.js.map +1 -1
- package/gen/agentchannel.d.ts.map +1 -1
- package/gen/agentchannel.js.map +1 -1
- package/gen/agentexecution.d.ts.map +1 -1
- package/gen/agentexecution.js.map +1 -1
- package/gen/agentinstance.d.ts.map +1 -1
- package/gen/agentinstance.js.map +1 -1
- package/gen/agentshare.d.ts.map +1 -1
- package/gen/agentshare.js.map +1 -1
- package/gen/apikey.d.ts.map +1 -1
- package/gen/apikey.js.map +1 -1
- package/gen/artifact.d.ts.map +1 -1
- package/gen/artifact.js.map +1 -1
- package/gen/authorization-config.d.ts.map +1 -1
- package/gen/authorization-config.js +2 -2
- package/gen/authorization-config.js.map +1 -1
- package/gen/bidi-stream.d.ts.map +1 -1
- package/gen/bidi-stream.js.map +1 -1
- package/gen/channelapp.d.ts.map +1 -1
- package/gen/channelapp.js.map +1 -1
- package/gen/client.d.ts.map +1 -1
- package/gen/client.js.map +1 -1
- package/gen/environment.d.ts.map +1 -1
- package/gen/environment.js.map +1 -1
- package/gen/errors.d.ts.map +1 -1
- package/gen/errors.js.map +1 -1
- package/gen/executioncontext.d.ts.map +1 -1
- package/gen/executioncontext.js.map +1 -1
- package/gen/iampolicy.d.ts.map +1 -1
- package/gen/iampolicy.js.map +1 -1
- package/gen/identityaccount.d.ts.map +1 -1
- package/gen/identityaccount.js.map +1 -1
- package/gen/identityprovider.d.ts.map +1 -1
- package/gen/identityprovider.js.map +1 -1
- package/gen/invitation.d.ts.map +1 -1
- package/gen/invitation.js.map +1 -1
- package/gen/license.d.ts.map +1 -1
- package/gen/license.js.map +1 -1
- package/gen/mcpserver.d.ts.map +1 -1
- package/gen/mcpserver.js.map +1 -1
- package/gen/memory.d.ts.map +1 -1
- package/gen/memory.js.map +1 -1
- package/gen/oauthapp.d.ts.map +1 -1
- package/gen/oauthapp.js.map +1 -1
- package/gen/organization.d.ts.map +1 -1
- package/gen/organization.js.map +1 -1
- package/gen/plan.d.ts.map +1 -1
- package/gen/plan.js.map +1 -1
- package/gen/platformclient.d.ts.map +1 -1
- package/gen/platformclient.js.map +1 -1
- package/gen/plugin.d.ts.map +1 -1
- package/gen/plugin.js.map +1 -1
- package/gen/proto-utils.d.ts.map +1 -1
- package/gen/proto-utils.js.map +1 -1
- package/gen/resource-availability.d.ts.map +1 -1
- package/gen/resource-availability.js.map +1 -1
- package/gen/schedule.d.ts.map +1 -1
- package/gen/schedule.js.map +1 -1
- package/gen/session.d.ts.map +1 -1
- package/gen/session.js.map +1 -1
- package/gen/skill.d.ts.map +1 -1
- package/gen/skill.js.map +1 -1
- package/gen/subscription.d.ts.map +1 -1
- package/gen/subscription.js.map +1 -1
- package/gen/team.d.ts.map +1 -1
- package/gen/team.js.map +1 -1
- package/gen/types.d.ts.map +1 -1
- package/gen/types.js.map +1 -1
- package/gen/workflow.d.ts.map +1 -1
- package/gen/workflow.js.map +1 -1
- package/gen/workflowexecution.d.ts.map +1 -1
- package/gen/workflowexecution.js.map +1 -1
- package/gen/workflowinstance.d.ts.map +1 -1
- package/gen/workflowinstance.js.map +1 -1
- package/github.d.ts.map +1 -1
- package/github.js.map +1 -1
- package/guest-auth.d.ts.map +1 -1
- package/guest-auth.js.map +1 -1
- package/iam-principal.d.ts.map +1 -1
- package/iam-principal.js.map +1 -1
- package/iam-role.d.ts.map +1 -1
- package/iam-role.js.map +1 -1
- package/index.d.ts.map +1 -1
- package/index.js.map +1 -1
- package/internal/interceptors.d.ts.map +1 -1
- package/internal/interceptors.js.map +1 -1
- package/manifest/client.d.ts.map +1 -1
- package/manifest/client.js.map +1 -1
- package/manifest/document.d.ts.map +1 -1
- package/manifest/document.js.map +1 -1
- package/manifest/index.d.ts.map +1 -1
- package/manifest/index.js.map +1 -1
- package/manifest/parse.d.ts.map +1 -1
- package/manifest/parse.js.map +1 -1
- package/manifest/redaction.d.ts.map +1 -1
- package/manifest/redaction.js.map +1 -1
- package/manifest/registry.d.ts.map +1 -1
- package/manifest/registry.js.map +1 -1
- package/manifest/serialize.d.ts.map +1 -1
- package/manifest/serialize.js.map +1 -1
- package/mcpserver-connect.d.ts.map +1 -1
- package/mcpserver-connect.js.map +1 -1
- package/node.d.ts.map +1 -1
- package/node.js.map +1 -1
- package/package.json +2 -2
- package/platform-client-auth.d.ts.map +1 -1
- package/platform-client-auth.js.map +1 -1
- package/platform.d.ts.map +1 -1
- package/platform.js.map +1 -1
- package/plugin.d.ts.map +1 -1
- package/plugin.js.map +1 -1
- package/provider-standing.d.ts.map +1 -1
- package/provider-standing.js.map +1 -1
- package/resource-availability.d.ts.map +1 -1
- package/resource-availability.js.map +1 -1
- package/runner-adapter.d.ts.map +1 -1
- package/runner-adapter.js.map +1 -1
- package/search.d.ts.map +1 -1
- package/search.js.map +1 -1
- package/session.d.ts.map +1 -1
- package/session.js.map +1 -1
- package/sharing.d.ts.map +1 -1
- package/sharing.js.map +1 -1
- package/skill.d.ts.map +1 -1
- package/skill.js.map +1 -1
- package/src/gen/authorization-config.ts +2 -2
- package/stigmer.d.ts.map +1 -1
- package/stigmer.js.map +1 -1
- package/transport.d.ts.map +1 -1
- package/transport.js.map +1 -1
- package/__tests__/billing.test.d.ts +0 -2
- package/__tests__/billing.test.d.ts.map +0 -1
- package/__tests__/billing.test.js +0 -120
- package/__tests__/billing.test.js.map +0 -1
- package/__tests__/config.test.d.ts +0 -2
- package/__tests__/config.test.d.ts.map +0 -1
- package/__tests__/config.test.js +0 -35
- package/__tests__/config.test.js.map +0 -1
- package/__tests__/ensure-identity-account.test.d.ts +0 -2
- package/__tests__/ensure-identity-account.test.d.ts.map +0 -1
- package/__tests__/ensure-identity-account.test.js +0 -108
- package/__tests__/ensure-identity-account.test.js.map +0 -1
- package/__tests__/errors.test.d.ts +0 -2
- package/__tests__/errors.test.d.ts.map +0 -1
- package/__tests__/errors.test.js +0 -228
- package/__tests__/errors.test.js.map +0 -1
- package/__tests__/gen/errors.test.d.ts +0 -2
- package/__tests__/gen/errors.test.d.ts.map +0 -1
- package/__tests__/gen/errors.test.js +0 -97
- package/__tests__/gen/errors.test.js.map +0 -1
- package/__tests__/gen/invitation-client.test.d.ts +0 -2
- package/__tests__/gen/invitation-client.test.d.ts.map +0 -1
- package/__tests__/gen/invitation-client.test.js +0 -106
- package/__tests__/gen/invitation-client.test.js.map +0 -1
- package/__tests__/gen/proto-utils.test.d.ts +0 -2
- package/__tests__/gen/proto-utils.test.d.ts.map +0 -1
- package/__tests__/gen/proto-utils.test.js +0 -85
- package/__tests__/gen/proto-utils.test.js.map +0 -1
- package/__tests__/gen/session-client.test.d.ts +0 -2
- package/__tests__/gen/session-client.test.d.ts.map +0 -1
- package/__tests__/gen/session-client.test.js +0 -152
- package/__tests__/gen/session-client.test.js.map +0 -1
- package/__tests__/guest-auth.test.d.ts +0 -2
- package/__tests__/guest-auth.test.d.ts.map +0 -1
- package/__tests__/guest-auth.test.js +0 -223
- package/__tests__/guest-auth.test.js.map +0 -1
- package/__tests__/iam-principal.test.d.ts +0 -2
- package/__tests__/iam-principal.test.d.ts.map +0 -1
- package/__tests__/iam-principal.test.js +0 -65
- package/__tests__/iam-principal.test.js.map +0 -1
- package/__tests__/manifest.test.d.ts +0 -2
- package/__tests__/manifest.test.d.ts.map +0 -1
- package/__tests__/manifest.test.js +0 -306
- package/__tests__/manifest.test.js.map +0 -1
- package/__tests__/mcpserver-connect.test.d.ts +0 -2
- package/__tests__/mcpserver-connect.test.d.ts.map +0 -1
- package/__tests__/mcpserver-connect.test.js +0 -146
- package/__tests__/mcpserver-connect.test.js.map +0 -1
- package/__tests__/node.test.d.ts +0 -2
- package/__tests__/node.test.d.ts.map +0 -1
- package/__tests__/node.test.js +0 -67
- package/__tests__/node.test.js.map +0 -1
- package/__tests__/platform-client-auth.test.d.ts +0 -2
- package/__tests__/platform-client-auth.test.d.ts.map +0 -1
- package/__tests__/platform-client-auth.test.js +0 -59
- package/__tests__/platform-client-auth.test.js.map +0 -1
- package/__tests__/platform.test.d.ts +0 -2
- package/__tests__/platform.test.d.ts.map +0 -1
- package/__tests__/platform.test.js +0 -52
- package/__tests__/platform.test.js.map +0 -1
- package/__tests__/plugin.test.d.ts +0 -2
- package/__tests__/plugin.test.d.ts.map +0 -1
- package/__tests__/plugin.test.js +0 -74
- package/__tests__/plugin.test.js.map +0 -1
- package/__tests__/resource-availability.test.d.ts +0 -2
- package/__tests__/resource-availability.test.d.ts.map +0 -1
- package/__tests__/resource-availability.test.js +0 -80
- package/__tests__/resource-availability.test.js.map +0 -1
- package/__tests__/runner-adapter.test.d.ts +0 -2
- package/__tests__/runner-adapter.test.d.ts.map +0 -1
- package/__tests__/runner-adapter.test.js +0 -88
- package/__tests__/runner-adapter.test.js.map +0 -1
- package/__tests__/session.test.d.ts +0 -6
- package/__tests__/session.test.d.ts.map +0 -1
- package/__tests__/session.test.js +0 -50
- package/__tests__/session.test.js.map +0 -1
- package/__tests__/sharing.test.d.ts +0 -2
- package/__tests__/sharing.test.d.ts.map +0 -1
- package/__tests__/sharing.test.js +0 -106
- package/__tests__/sharing.test.js.map +0 -1
- package/__tests__/skill.test.d.ts +0 -2
- package/__tests__/skill.test.d.ts.map +0 -1
- package/__tests__/skill.test.js +0 -117
- package/__tests__/skill.test.js.map +0 -1
- package/__tests__/stigmer.test.d.ts +0 -2
- package/__tests__/stigmer.test.d.ts.map +0 -1
- package/__tests__/stigmer.test.js +0 -127
- package/__tests__/stigmer.test.js.map +0 -1
- package/__tests__/update-input-roundtrip.test.d.ts +0 -2
- package/__tests__/update-input-roundtrip.test.d.ts.map +0 -1
- package/__tests__/update-input-roundtrip.test.js +0 -775
- package/__tests__/update-input-roundtrip.test.js.map +0 -1
- package/__tests__/update-input.test.d.ts +0 -2
- package/__tests__/update-input.test.d.ts.map +0 -1
- package/__tests__/update-input.test.js +0 -188
- package/__tests__/update-input.test.js.map +0 -1
- package/execution/__tests__/approval-provenance.test.d.ts +0 -2
- package/execution/__tests__/approval-provenance.test.d.ts.map +0 -1
- package/execution/__tests__/approval-provenance.test.js +0 -42
- package/execution/__tests__/approval-provenance.test.js.map +0 -1
- package/execution/__tests__/file-review-fold.corpus.test.d.ts +0 -2
- package/execution/__tests__/file-review-fold.corpus.test.d.ts.map +0 -1
- package/execution/__tests__/file-review-fold.corpus.test.js +0 -82
- package/execution/__tests__/file-review-fold.corpus.test.js.map +0 -1
- package/execution/__tests__/file-review-fold.test.d.ts +0 -2
- package/execution/__tests__/file-review-fold.test.d.ts.map +0 -1
- package/execution/__tests__/file-review-fold.test.js +0 -184
- package/execution/__tests__/file-review-fold.test.js.map +0 -1
- package/execution/__tests__/to-display-file-change.test.d.ts +0 -2
- package/execution/__tests__/to-display-file-change.test.d.ts.map +0 -1
- package/execution/__tests__/to-display-file-change.test.js +0 -81
- package/execution/__tests__/to-display-file-change.test.js.map +0 -1
- package/execution/__tests__/tool-view.file-changes.test.d.ts +0 -2
- package/execution/__tests__/tool-view.file-changes.test.d.ts.map +0 -1
- package/execution/__tests__/tool-view.file-changes.test.js +0 -86
- package/execution/__tests__/tool-view.file-changes.test.js.map +0 -1
- package/execution/__tests__/tool-view.fixtures.test.d.ts +0 -2
- package/execution/__tests__/tool-view.fixtures.test.d.ts.map +0 -1
- package/execution/__tests__/tool-view.fixtures.test.js +0 -152
- package/execution/__tests__/tool-view.fixtures.test.js.map +0 -1
- package/execution/__tests__/tool-view.output-ref.test.d.ts +0 -2
- package/execution/__tests__/tool-view.output-ref.test.d.ts.map +0 -1
- package/execution/__tests__/tool-view.output-ref.test.js +0 -64
- package/execution/__tests__/tool-view.output-ref.test.js.map +0 -1
- package/execution/__tests__/tool-view.read.test.d.ts +0 -2
- package/execution/__tests__/tool-view.read.test.d.ts.map +0 -1
- package/execution/__tests__/tool-view.read.test.js +0 -56
- package/execution/__tests__/tool-view.read.test.js.map +0 -1
- package/execution/__tests__/tool-view.search.test.d.ts +0 -2
- package/execution/__tests__/tool-view.search.test.d.ts.map +0 -1
- package/execution/__tests__/tool-view.search.test.js +0 -200
- package/execution/__tests__/tool-view.search.test.js.map +0 -1
- package/execution/__tests__/tool-view.shell.test.d.ts +0 -2
- package/execution/__tests__/tool-view.shell.test.d.ts.map +0 -1
- package/execution/__tests__/tool-view.shell.test.js +0 -104
- package/execution/__tests__/tool-view.shell.test.js.map +0 -1
- package/execution/__tests__/transcript.test.d.ts +0 -2
- package/execution/__tests__/transcript.test.d.ts.map +0 -1
- package/execution/__tests__/transcript.test.js +0 -591
- package/execution/__tests__/transcript.test.js.map +0 -1
- package/node.test.d.ts +0 -2
- package/node.test.d.ts.map +0 -1
- package/node.test.js +0 -35
- package/node.test.js.map +0 -1
- package/src/__tests__/billing.test.ts +0 -146
- package/src/__tests__/config.test.ts +0 -52
- package/src/__tests__/ensure-identity-account.test.ts +0 -146
- package/src/__tests__/errors.test.ts +0 -349
- package/src/__tests__/gen/errors.test.ts +0 -138
- package/src/__tests__/gen/invitation-client.test.ts +0 -132
- package/src/__tests__/gen/proto-utils.test.ts +0 -99
- package/src/__tests__/gen/session-client.test.ts +0 -208
- package/src/__tests__/guest-auth.test.ts +0 -287
- package/src/__tests__/iam-principal.test.ts +0 -82
- package/src/__tests__/manifest.test.ts +0 -362
- package/src/__tests__/mcpserver-connect.test.ts +0 -181
- package/src/__tests__/node.test.ts +0 -74
- package/src/__tests__/platform-client-auth.test.ts +0 -76
- package/src/__tests__/platform.test.ts +0 -74
- package/src/__tests__/plugin.test.ts +0 -92
- package/src/__tests__/resource-availability.test.ts +0 -118
- package/src/__tests__/runner-adapter.test.ts +0 -122
- package/src/__tests__/session.test.ts +0 -66
- package/src/__tests__/sharing.test.ts +0 -159
- package/src/__tests__/skill.test.ts +0 -150
- package/src/__tests__/stigmer.test.ts +0 -170
- package/src/__tests__/update-input-roundtrip.test.ts +0 -1007
- package/src/__tests__/update-input.test.ts +0 -250
- package/src/execution/__tests__/approval-provenance.test.ts +0 -60
- package/src/execution/__tests__/file-review-fold.corpus.test.ts +0 -127
- package/src/execution/__tests__/file-review-fold.test.ts +0 -281
- package/src/execution/__tests__/to-display-file-change.test.ts +0 -106
- package/src/execution/__tests__/tool-view.file-changes.test.ts +0 -100
- package/src/execution/__tests__/tool-view.fixtures.test.ts +0 -225
- package/src/execution/__tests__/tool-view.output-ref.test.ts +0 -76
- package/src/execution/__tests__/tool-view.read.test.ts +0 -71
- package/src/execution/__tests__/tool-view.search.test.ts +0 -264
- package/src/execution/__tests__/tool-view.shell.test.ts +0 -127
- package/src/execution/__tests__/transcript.golden.md +0 -100
- package/src/execution/__tests__/transcript.test.ts +0 -697
- 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 +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 +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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"}
|
package/__tests__/node.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/node.test.ts"],"names":[],"mappings":""}
|