@stigmer/react 0.0.89 → 0.0.90
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/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +60 -2
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +87 -4
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +5 -3
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +59 -4
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -1
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +7 -7
- package/platform-client/CreatePlatformClientForm.d.ts +42 -0
- package/platform-client/CreatePlatformClientForm.d.ts.map +1 -0
- package/platform-client/CreatePlatformClientForm.js +148 -0
- package/platform-client/CreatePlatformClientForm.js.map +1 -0
- package/platform-client/PlatformClientDetailPanel.d.ts +51 -0
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -0
- package/platform-client/PlatformClientDetailPanel.js +247 -0
- package/platform-client/PlatformClientDetailPanel.js.map +1 -0
- package/platform-client/PlatformClientListPanel.d.ts +41 -0
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -0
- package/platform-client/PlatformClientListPanel.js +123 -0
- package/platform-client/PlatformClientListPanel.js.map +1 -0
- package/platform-client/PlatformClientSecretAlert.d.ts +39 -0
- package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -0
- package/platform-client/PlatformClientSecretAlert.js +74 -0
- package/platform-client/PlatformClientSecretAlert.js.map +1 -0
- package/platform-client/index.d.ts +11 -0
- package/platform-client/index.d.ts.map +1 -0
- package/platform-client/index.js +11 -0
- package/platform-client/index.js.map +1 -0
- package/platform-client/useCreatePlatformClient.d.ts +42 -0
- package/platform-client/useCreatePlatformClient.d.ts.map +1 -0
- package/platform-client/useCreatePlatformClient.js +49 -0
- package/platform-client/useCreatePlatformClient.js.map +1 -0
- package/platform-client/useDeletePlatformClient.d.ts +31 -0
- package/platform-client/useDeletePlatformClient.d.ts.map +1 -0
- package/platform-client/useDeletePlatformClient.js +42 -0
- package/platform-client/useDeletePlatformClient.js.map +1 -0
- package/platform-client/usePlatformClient.d.ts +37 -0
- package/platform-client/usePlatformClient.d.ts.map +1 -0
- package/platform-client/usePlatformClient.js +62 -0
- package/platform-client/usePlatformClient.js.map +1 -0
- package/platform-client/usePlatformClientList.d.ts +42 -0
- package/platform-client/usePlatformClientList.d.ts.map +1 -0
- package/platform-client/usePlatformClientList.js +71 -0
- package/platform-client/usePlatformClientList.js.map +1 -0
- package/platform-client/useRotatePlatformClientSecret.d.ts +35 -0
- package/platform-client/useRotatePlatformClientSecret.d.ts.map +1 -0
- package/platform-client/useRotatePlatformClientSecret.js +43 -0
- package/platform-client/useRotatePlatformClientSecret.js.map +1 -0
- package/platform-client/useUpdatePlatformClient.d.ts +39 -0
- package/platform-client/useUpdatePlatformClient.d.ts.map +1 -0
- package/platform-client/useUpdatePlatformClient.js +50 -0
- package/platform-client/useUpdatePlatformClient.js.map +1 -0
- package/src/identity-provider/CreateIdentityProviderForm.tsx +220 -0
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +288 -6
- package/src/identity-provider/IdentityProviderListPanel.tsx +9 -2
- package/src/identity-provider/IdentityProviderWizard.tsx +231 -25
- package/src/index.ts +26 -0
- package/src/platform-client/CreatePlatformClientForm.tsx +519 -0
- package/src/platform-client/PlatformClientDetailPanel.tsx +898 -0
- package/src/platform-client/PlatformClientListPanel.tsx +413 -0
- package/src/platform-client/PlatformClientSecretAlert.tsx +252 -0
- package/src/platform-client/index.ts +49 -0
- package/src/platform-client/useCreatePlatformClient.ts +77 -0
- package/src/platform-client/useDeletePlatformClient.ts +64 -0
- package/src/platform-client/usePlatformClient.ts +86 -0
- package/src/platform-client/usePlatformClientList.ts +96 -0
- package/src/platform-client/useRotatePlatformClientSecret.ts +68 -0
- package/src/platform-client/useUpdatePlatformClient.ts +70 -0
- package/src/test/index.ts +6 -0
- package/src/{demo → test}/samples.ts +1 -1
- package/styles.css +1 -1
- package/test/__tests__/samples.test.d.ts.map +1 -0
- package/{demo → test}/__tests__/samples.test.js.map +1 -1
- package/test/index.d.ts +2 -0
- package/test/index.d.ts.map +1 -0
- package/test/index.js +6 -0
- package/test/index.js.map +1 -0
- package/{demo → test}/samples.d.ts +1 -1
- package/{demo → test}/samples.d.ts.map +1 -1
- package/{demo → test}/samples.js +1 -1
- package/{demo → test}/samples.js.map +1 -1
- package/demo/__tests__/demo-client.test.d.ts +0 -2
- package/demo/__tests__/demo-client.test.d.ts.map +0 -1
- package/demo/__tests__/demo-client.test.js +0 -133
- package/demo/__tests__/demo-client.test.js.map +0 -1
- package/demo/__tests__/fixtures.test.d.ts +0 -2
- package/demo/__tests__/fixtures.test.d.ts.map +0 -1
- package/demo/__tests__/fixtures.test.js +0 -135
- package/demo/__tests__/fixtures.test.js.map +0 -1
- package/demo/__tests__/samples.test.d.ts.map +0 -1
- package/demo/client.d.ts +0 -29
- package/demo/client.d.ts.map +0 -1
- package/demo/client.js +0 -52
- package/demo/client.js.map +0 -1
- package/demo/fixtures.d.ts +0 -194
- package/demo/fixtures.d.ts.map +0 -1
- package/demo/fixtures.js +0 -267
- package/demo/fixtures.js.map +0 -1
- package/demo/index.d.ts +0 -6
- package/demo/index.d.ts.map +0 -1
- package/demo/index.js +0 -6
- package/demo/index.js.map +0 -1
- package/demo/transport.d.ts +0 -59
- package/demo/transport.d.ts.map +0 -1
- package/demo/transport.js +0 -75
- package/demo/transport.js.map +0 -1
- package/demo/types.d.ts +0 -62
- package/demo/types.d.ts.map +0 -1
- package/demo/types.js +0 -16
- package/demo/types.js.map +0 -1
- package/src/demo/__tests__/demo-client.test.tsx +0 -213
- package/src/demo/__tests__/fixtures.test.ts +0 -214
- package/src/demo/client.ts +0 -78
- package/src/demo/fixtures.ts +0 -409
- package/src/demo/index.ts +0 -12
- package/src/demo/transport.ts +0 -116
- package/src/demo/types.ts +0 -69
- /package/src/{demo → test}/__tests__/samples.test.ts +0 -0
- /package/{demo → test}/__tests__/samples.test.d.ts +0 -0
- /package/{demo → test}/__tests__/samples.test.js +0 -0
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { render, screen } from "@testing-library/react";
|
|
3
|
-
import { StigmerProvider } from "../../provider";
|
|
4
|
-
import { createDemoClient } from "../client";
|
|
5
|
-
import { DemoTransport } from "../transport";
|
|
6
|
-
import { rpcKey } from "../types";
|
|
7
|
-
|
|
8
|
-
describe("createDemoClient", () => {
|
|
9
|
-
it("returns a client accepted by StigmerProvider", () => {
|
|
10
|
-
const client = createDemoClient({ fixtures: new Map() });
|
|
11
|
-
|
|
12
|
-
render(
|
|
13
|
-
<StigmerProvider client={client}>
|
|
14
|
-
<div data-testid="child">rendered</div>
|
|
15
|
-
</StigmerProvider>,
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
expect(screen.getByTestId("child").textContent).toBe("rendered");
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it("provides all expected resource clients", () => {
|
|
22
|
-
const client = createDemoClient({ fixtures: new Map() });
|
|
23
|
-
|
|
24
|
-
expect(client.agent).toBeDefined();
|
|
25
|
-
expect(client.agentExecution).toBeDefined();
|
|
26
|
-
expect(client.agentInstance).toBeDefined();
|
|
27
|
-
expect(client.apiKey).toBeDefined();
|
|
28
|
-
expect(client.environment).toBeDefined();
|
|
29
|
-
expect(client.executionContext).toBeDefined();
|
|
30
|
-
expect(client.iamPolicy).toBeDefined();
|
|
31
|
-
expect(client.identityAccount).toBeDefined();
|
|
32
|
-
expect(client.identityProvider).toBeDefined();
|
|
33
|
-
expect(client.mcpServer).toBeDefined();
|
|
34
|
-
expect(client.organization).toBeDefined();
|
|
35
|
-
expect(client.project).toBeDefined();
|
|
36
|
-
expect(client.session).toBeDefined();
|
|
37
|
-
expect(client.skill).toBeDefined();
|
|
38
|
-
expect(client.workflow).toBeDefined();
|
|
39
|
-
expect(client.workflowExecution).toBeDefined();
|
|
40
|
-
expect(client.workflowInstance).toBeDefined();
|
|
41
|
-
expect(client.search).toBeDefined();
|
|
42
|
-
expect(client.github).toBeDefined();
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
describe("DemoTransport", () => {
|
|
47
|
-
it("calls unary fixture handler and returns its result", async () => {
|
|
48
|
-
const fixtureResponse = { id: "test-123", name: "mock-session" };
|
|
49
|
-
const fixtures = new Map([
|
|
50
|
-
[
|
|
51
|
-
"test.Service/get",
|
|
52
|
-
{ unary: () => fixtureResponse },
|
|
53
|
-
],
|
|
54
|
-
]);
|
|
55
|
-
|
|
56
|
-
const transport = new DemoTransport(fixtures);
|
|
57
|
-
const result = await transport.unary(
|
|
58
|
-
{ parent: { typeName: "test.Service" }, name: "get" },
|
|
59
|
-
undefined,
|
|
60
|
-
undefined,
|
|
61
|
-
undefined,
|
|
62
|
-
{ id: "test-123" },
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
expect(result.stream).toBe(false);
|
|
66
|
-
expect(result.message).toBe(fixtureResponse);
|
|
67
|
-
expect(result.header).toBeInstanceOf(Headers);
|
|
68
|
-
expect(result.trailer).toBeInstanceOf(Headers);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it("passes request to unary fixture handler", async () => {
|
|
72
|
-
const request = { value: "session-42" };
|
|
73
|
-
let receivedRequest: unknown;
|
|
74
|
-
|
|
75
|
-
const fixtures = new Map([
|
|
76
|
-
[
|
|
77
|
-
"test.Service/get",
|
|
78
|
-
{
|
|
79
|
-
unary: (req: unknown) => {
|
|
80
|
-
receivedRequest = req;
|
|
81
|
-
return {};
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
]);
|
|
86
|
-
|
|
87
|
-
const transport = new DemoTransport(fixtures);
|
|
88
|
-
await transport.unary(
|
|
89
|
-
{ parent: { typeName: "test.Service" }, name: "get" },
|
|
90
|
-
undefined,
|
|
91
|
-
undefined,
|
|
92
|
-
undefined,
|
|
93
|
-
request,
|
|
94
|
-
);
|
|
95
|
-
|
|
96
|
-
expect(receivedRequest).toBe(request);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it("calls stream fixture handler and yields results", async () => {
|
|
100
|
-
const items = [
|
|
101
|
-
{ id: "1", status: "running" },
|
|
102
|
-
{ id: "1", status: "completed" },
|
|
103
|
-
];
|
|
104
|
-
|
|
105
|
-
const fixtures = new Map([
|
|
106
|
-
[
|
|
107
|
-
"test.Service/subscribe",
|
|
108
|
-
{ stream: () => items },
|
|
109
|
-
],
|
|
110
|
-
]);
|
|
111
|
-
|
|
112
|
-
const transport = new DemoTransport(fixtures);
|
|
113
|
-
|
|
114
|
-
async function* singleMessage() {
|
|
115
|
-
yield { value: "exec-1" };
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const result = await transport.stream(
|
|
119
|
-
{ parent: { typeName: "test.Service" }, name: "subscribe" },
|
|
120
|
-
undefined,
|
|
121
|
-
undefined,
|
|
122
|
-
undefined,
|
|
123
|
-
singleMessage(),
|
|
124
|
-
);
|
|
125
|
-
|
|
126
|
-
expect(result.stream).toBe(true);
|
|
127
|
-
|
|
128
|
-
const collected: unknown[] = [];
|
|
129
|
-
for await (const msg of result.message) {
|
|
130
|
-
collected.push(msg);
|
|
131
|
-
}
|
|
132
|
-
expect(collected).toEqual(items);
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
it("throws descriptive error for missing unary fixture", async () => {
|
|
136
|
-
const transport = new DemoTransport(new Map());
|
|
137
|
-
|
|
138
|
-
await expect(
|
|
139
|
-
transport.unary(
|
|
140
|
-
{
|
|
141
|
-
parent: {
|
|
142
|
-
typeName:
|
|
143
|
-
"ai.stigmer.agentic.session.v1.SessionQueryController",
|
|
144
|
-
},
|
|
145
|
-
name: "get",
|
|
146
|
-
},
|
|
147
|
-
undefined,
|
|
148
|
-
undefined,
|
|
149
|
-
undefined,
|
|
150
|
-
{},
|
|
151
|
-
),
|
|
152
|
-
).rejects.toThrow("No demo fixture for SessionQueryController/get");
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it("throws descriptive error for missing stream fixture", async () => {
|
|
156
|
-
const transport = new DemoTransport(new Map());
|
|
157
|
-
|
|
158
|
-
async function* empty() {
|
|
159
|
-
yield {};
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
await expect(
|
|
163
|
-
transport.stream(
|
|
164
|
-
{
|
|
165
|
-
parent: {
|
|
166
|
-
typeName:
|
|
167
|
-
"ai.stigmer.agentic.agentexecution.v1.AgentExecutionQueryController",
|
|
168
|
-
},
|
|
169
|
-
name: "subscribe",
|
|
170
|
-
},
|
|
171
|
-
undefined,
|
|
172
|
-
undefined,
|
|
173
|
-
undefined,
|
|
174
|
-
empty(),
|
|
175
|
-
),
|
|
176
|
-
).rejects.toThrow(
|
|
177
|
-
"No demo fixture for AgentExecutionQueryController/subscribe",
|
|
178
|
-
);
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
it("includes the full fixture key in the error message", async () => {
|
|
182
|
-
const transport = new DemoTransport(new Map());
|
|
183
|
-
|
|
184
|
-
await expect(
|
|
185
|
-
transport.unary(
|
|
186
|
-
{
|
|
187
|
-
parent: {
|
|
188
|
-
typeName:
|
|
189
|
-
"ai.stigmer.agentic.session.v1.SessionQueryController",
|
|
190
|
-
},
|
|
191
|
-
name: "get",
|
|
192
|
-
},
|
|
193
|
-
undefined,
|
|
194
|
-
undefined,
|
|
195
|
-
undefined,
|
|
196
|
-
{},
|
|
197
|
-
),
|
|
198
|
-
).rejects.toThrow(
|
|
199
|
-
'key "ai.stigmer.agentic.session.v1.SessionQueryController/get"',
|
|
200
|
-
);
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
describe("rpcKey", () => {
|
|
205
|
-
it("constructs a fixture key from service descriptor and method name", () => {
|
|
206
|
-
const service = {
|
|
207
|
-
typeName: "ai.stigmer.agentic.session.v1.SessionQueryController",
|
|
208
|
-
};
|
|
209
|
-
expect(rpcKey(service, "get")).toBe(
|
|
210
|
-
"ai.stigmer.agentic.session.v1.SessionQueryController/get",
|
|
211
|
-
);
|
|
212
|
-
});
|
|
213
|
-
});
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
3
|
-
import { fixtures, buildScenario, type FixtureSpec } from "../fixtures";
|
|
4
|
-
import { rpcKey } from "../types";
|
|
5
|
-
|
|
6
|
-
describe("fixtures", () => {
|
|
7
|
-
describe("session", () => {
|
|
8
|
-
it("get returns correct key and unary entry", () => {
|
|
9
|
-
const handler = () => ({ id: "test" });
|
|
10
|
-
const spec = fixtures.session.get(handler);
|
|
11
|
-
|
|
12
|
-
expect(spec.key).toBe(
|
|
13
|
-
"ai.stigmer.agentic.session.v1.SessionQueryController/get",
|
|
14
|
-
);
|
|
15
|
-
expect(spec.entry.unary).toBe(handler);
|
|
16
|
-
expect(spec.entry.stream).toBeUndefined();
|
|
17
|
-
expect(spec.searchResourceKind).toBeUndefined();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("list returns correct key", () => {
|
|
21
|
-
const spec = fixtures.session.list(() => ({}));
|
|
22
|
-
expect(spec.key).toBe(
|
|
23
|
-
"ai.stigmer.agentic.session.v1.SessionQueryController/list",
|
|
24
|
-
);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("create returns correct key", () => {
|
|
28
|
-
const spec = fixtures.session.create(() => ({}));
|
|
29
|
-
expect(spec.key).toBe(
|
|
30
|
-
"ai.stigmer.agentic.session.v1.SessionCommandController/create",
|
|
31
|
-
);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it("update returns correct key", () => {
|
|
35
|
-
const spec = fixtures.session.update(() => ({}));
|
|
36
|
-
expect(spec.key).toBe(
|
|
37
|
-
"ai.stigmer.agentic.session.v1.SessionCommandController/update",
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
describe("agentExecution", () => {
|
|
43
|
-
it("subscribe returns a stream entry", () => {
|
|
44
|
-
const handler = () => [{ id: "1" }, { id: "2" }];
|
|
45
|
-
const spec = fixtures.agentExecution.subscribe(handler);
|
|
46
|
-
|
|
47
|
-
expect(spec.key).toBe(
|
|
48
|
-
"ai.stigmer.agentic.agentexecution.v1.AgentExecutionQueryController/subscribe",
|
|
49
|
-
);
|
|
50
|
-
expect(spec.entry.stream).toBe(handler);
|
|
51
|
-
expect(spec.entry.unary).toBeUndefined();
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it("listBySession returns correct key", () => {
|
|
55
|
-
const spec = fixtures.agentExecution.listBySession(() => ({}));
|
|
56
|
-
expect(spec.key).toBe(
|
|
57
|
-
"ai.stigmer.agentic.agentexecution.v1.AgentExecutionQueryController/listBySession",
|
|
58
|
-
);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it("create returns correct key", () => {
|
|
62
|
-
const spec = fixtures.agentExecution.create(() => ({}));
|
|
63
|
-
expect(spec.key).toBe(
|
|
64
|
-
"ai.stigmer.agentic.agentexecution.v1.AgentExecutionCommandController/create",
|
|
65
|
-
);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it("getArtifactContent returns correct key", () => {
|
|
69
|
-
const spec = fixtures.agentExecution.getArtifactContent(() => ({}));
|
|
70
|
-
expect(spec.key).toBe(
|
|
71
|
-
"ai.stigmer.agentic.agentexecution.v1.AgentExecutionQueryController/getArtifactContent",
|
|
72
|
-
);
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
describe("search-backed list helpers", () => {
|
|
77
|
-
const searchKey = "ai.stigmer.search.v1.SearchService/search";
|
|
78
|
-
|
|
79
|
-
it("agent.list sets searchResourceKind to agent", () => {
|
|
80
|
-
const spec = fixtures.agent.list(() => ({}));
|
|
81
|
-
expect(spec.key).toBe(searchKey);
|
|
82
|
-
expect(spec.searchResourceKind).toBe(ApiResourceKind.agent);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("skill.list sets searchResourceKind to skill", () => {
|
|
86
|
-
const spec = fixtures.skill.list(() => ({}));
|
|
87
|
-
expect(spec.key).toBe(searchKey);
|
|
88
|
-
expect(spec.searchResourceKind).toBe(ApiResourceKind.skill);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it("mcpServer.list sets searchResourceKind to mcp_server", () => {
|
|
92
|
-
const spec = fixtures.mcpServer.list(() => ({}));
|
|
93
|
-
expect(spec.key).toBe(searchKey);
|
|
94
|
-
expect(spec.searchResourceKind).toBe(ApiResourceKind.mcp_server);
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
describe("other domains", () => {
|
|
99
|
-
it("agent.getByReference returns correct key", () => {
|
|
100
|
-
const spec = fixtures.agent.getByReference(() => ({}));
|
|
101
|
-
expect(spec.key).toBe(
|
|
102
|
-
"ai.stigmer.agentic.agent.v1.AgentQueryController/getByReference",
|
|
103
|
-
);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
it("skill.getByReference returns correct key", () => {
|
|
107
|
-
const spec = fixtures.skill.getByReference(() => ({}));
|
|
108
|
-
expect(spec.key).toBe(
|
|
109
|
-
"ai.stigmer.agentic.skill.v1.SkillQueryController/getByReference",
|
|
110
|
-
);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it("environment.list returns correct key", () => {
|
|
114
|
-
const spec = fixtures.environment.list(() => ({}));
|
|
115
|
-
expect(spec.key).toBe(
|
|
116
|
-
"ai.stigmer.agentic.environment.v1.EnvironmentQueryController/list",
|
|
117
|
-
);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it("agentInstance.create returns correct key", () => {
|
|
121
|
-
const spec = fixtures.agentInstance.create(() => ({}));
|
|
122
|
-
expect(spec.key).toBe(
|
|
123
|
-
"ai.stigmer.agentic.agentinstance.v1.AgentInstanceCommandController/create",
|
|
124
|
-
);
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it("apiKey.findAll returns correct key", () => {
|
|
128
|
-
const spec = fixtures.apiKey.findAll(() => ({}));
|
|
129
|
-
expect(spec.key).toBe(
|
|
130
|
-
"ai.stigmer.iam.apikey.v1.ApiKeyQueryController/findAll",
|
|
131
|
-
);
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
it("github.getOAuthAuthorizeUrl returns correct key", () => {
|
|
135
|
-
const spec = fixtures.github.getOAuthAuthorizeUrl(() => ({}));
|
|
136
|
-
expect(spec.key).toBe(
|
|
137
|
-
"ai.stigmer.platform.github.v1.GitHubService/getOAuthAuthorizeUrl",
|
|
138
|
-
);
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it("organization.create returns correct key", () => {
|
|
142
|
-
const spec = fixtures.organization.create(() => ({}));
|
|
143
|
-
expect(spec.key).toBe(
|
|
144
|
-
"ai.stigmer.tenancy.organization.v1.OrganizationCommandController/create",
|
|
145
|
-
);
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
describe("buildScenario", () => {
|
|
151
|
-
it("creates a DemoScenario from direct fixture specs", () => {
|
|
152
|
-
const sessionData = { id: "ses-1" };
|
|
153
|
-
const scenario = buildScenario(
|
|
154
|
-
fixtures.session.get(() => sessionData),
|
|
155
|
-
);
|
|
156
|
-
|
|
157
|
-
expect(scenario.fixtures).toBeInstanceOf(Map);
|
|
158
|
-
const key = rpcKey(
|
|
159
|
-
{ typeName: "ai.stigmer.agentic.session.v1.SessionQueryController" },
|
|
160
|
-
"get",
|
|
161
|
-
);
|
|
162
|
-
const entry = scenario.fixtures.get(key);
|
|
163
|
-
expect(entry?.unary?.({})).toBe(sessionData);
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it("merges search-backed list fixtures into a dispatch handler", () => {
|
|
167
|
-
const agentData = { kind: "agent" };
|
|
168
|
-
const skillData = { kind: "skill" };
|
|
169
|
-
|
|
170
|
-
const scenario = buildScenario(
|
|
171
|
-
fixtures.agent.list(() => agentData),
|
|
172
|
-
fixtures.skill.list(() => skillData),
|
|
173
|
-
);
|
|
174
|
-
|
|
175
|
-
const searchKey = "ai.stigmer.search.v1.SearchService/search";
|
|
176
|
-
const entry = scenario.fixtures.get(searchKey);
|
|
177
|
-
expect(entry).toBeDefined();
|
|
178
|
-
|
|
179
|
-
expect(entry!.unary!({ kinds: [ApiResourceKind.agent] })).toBe(agentData);
|
|
180
|
-
expect(entry!.unary!({ kinds: [ApiResourceKind.skill] })).toBe(skillData);
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
it("throws for unregistered search resource kind", () => {
|
|
184
|
-
const scenario = buildScenario(
|
|
185
|
-
fixtures.agent.list(() => ({})),
|
|
186
|
-
);
|
|
187
|
-
|
|
188
|
-
const searchKey = "ai.stigmer.search.v1.SearchService/search";
|
|
189
|
-
const entry = scenario.fixtures.get(searchKey)!;
|
|
190
|
-
|
|
191
|
-
expect(() => entry.unary!({ kinds: [ApiResourceKind.skill] })).toThrow(
|
|
192
|
-
"No search fixture for resource kind skill",
|
|
193
|
-
);
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
it("combines direct and search specs", () => {
|
|
197
|
-
const scenario = buildScenario(
|
|
198
|
-
fixtures.session.get(() => ({ id: "ses-1" })),
|
|
199
|
-
fixtures.agent.list(() => ({ entries: [] })),
|
|
200
|
-
);
|
|
201
|
-
|
|
202
|
-
const sessionKey =
|
|
203
|
-
"ai.stigmer.agentic.session.v1.SessionQueryController/get";
|
|
204
|
-
const searchKey = "ai.stigmer.search.v1.SearchService/search";
|
|
205
|
-
|
|
206
|
-
expect(scenario.fixtures.has(sessionKey)).toBe(true);
|
|
207
|
-
expect(scenario.fixtures.has(searchKey)).toBe(true);
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
it("returns empty fixtures when called with no args", () => {
|
|
211
|
-
const scenario = buildScenario();
|
|
212
|
-
expect(scenario.fixtures.size).toBe(0);
|
|
213
|
-
});
|
|
214
|
-
});
|
package/src/demo/client.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { Transport } from "@connectrpc/connect";
|
|
2
|
-
import type { Stigmer } from "@stigmer/sdk";
|
|
3
|
-
import {
|
|
4
|
-
AgentClient,
|
|
5
|
-
AgentExecutionClient,
|
|
6
|
-
AgentInstanceClient,
|
|
7
|
-
ApiKeyClient,
|
|
8
|
-
EnvironmentClient,
|
|
9
|
-
ExecutionContextClient,
|
|
10
|
-
GitHubClient,
|
|
11
|
-
IamPolicyClient,
|
|
12
|
-
IdentityAccountClient,
|
|
13
|
-
IdentityProviderClient,
|
|
14
|
-
McpServerClient,
|
|
15
|
-
OrganizationClient,
|
|
16
|
-
ProjectClient,
|
|
17
|
-
SearchClient,
|
|
18
|
-
SessionClient,
|
|
19
|
-
SkillClient,
|
|
20
|
-
WorkflowClient,
|
|
21
|
-
WorkflowExecutionClient,
|
|
22
|
-
WorkflowInstanceClient,
|
|
23
|
-
} from "@stigmer/sdk";
|
|
24
|
-
import { DemoTransport } from "./transport";
|
|
25
|
-
import type { DemoScenario } from "./types";
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Create a `Stigmer`-compatible client backed by in-memory fixture data.
|
|
29
|
-
*
|
|
30
|
-
* The returned object is structurally identical to a real {@link Stigmer}
|
|
31
|
-
* instance — all 17 resource clients plus `search` and `github` — but
|
|
32
|
-
* every RPC resolves through a {@link DemoTransport} instead of a network
|
|
33
|
-
* connection. Pass it to `<StigmerProvider client={...}>` and all
|
|
34
|
-
* descendant hooks and components work without a live backend.
|
|
35
|
-
*
|
|
36
|
-
* RPCs that have no registered fixture throw a descriptive error
|
|
37
|
-
* identifying the missing key. Register fixtures in the
|
|
38
|
-
* {@link DemoScenario} to cover the RPCs your components need.
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```tsx
|
|
42
|
-
* import { StigmerProvider } from "@stigmer/react";
|
|
43
|
-
* import { createDemoClient } from "@stigmer/react/demo";
|
|
44
|
-
*
|
|
45
|
-
* const client = createDemoClient({ fixtures: myScenarioFixtures });
|
|
46
|
-
*
|
|
47
|
-
* <StigmerProvider client={client}>
|
|
48
|
-
* <App />
|
|
49
|
-
* </StigmerProvider>
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
export function createDemoClient(scenario: DemoScenario): Stigmer {
|
|
53
|
-
const transport = new DemoTransport(
|
|
54
|
-
scenario.fixtures,
|
|
55
|
-
) as unknown as Transport;
|
|
56
|
-
|
|
57
|
-
return {
|
|
58
|
-
agent: new AgentClient(transport),
|
|
59
|
-
agentExecution: new AgentExecutionClient(transport),
|
|
60
|
-
agentInstance: new AgentInstanceClient(transport),
|
|
61
|
-
apiKey: new ApiKeyClient(transport),
|
|
62
|
-
environment: new EnvironmentClient(transport),
|
|
63
|
-
executionContext: new ExecutionContextClient(transport),
|
|
64
|
-
iamPolicy: new IamPolicyClient(transport),
|
|
65
|
-
identityAccount: new IdentityAccountClient(transport),
|
|
66
|
-
identityProvider: new IdentityProviderClient(transport),
|
|
67
|
-
mcpServer: new McpServerClient(transport),
|
|
68
|
-
organization: new OrganizationClient(transport),
|
|
69
|
-
project: new ProjectClient(transport),
|
|
70
|
-
session: new SessionClient(transport),
|
|
71
|
-
skill: new SkillClient(transport),
|
|
72
|
-
workflow: new WorkflowClient(transport),
|
|
73
|
-
workflowExecution: new WorkflowExecutionClient(transport),
|
|
74
|
-
workflowInstance: new WorkflowInstanceClient(transport),
|
|
75
|
-
search: new SearchClient(transport),
|
|
76
|
-
github: new GitHubClient(transport),
|
|
77
|
-
} as Stigmer;
|
|
78
|
-
}
|