@stigmer/cli 3.10.0 → 3.11.1-dev.20260812192248
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/commands/connect.d.ts.map +1 -1
- package/commands/connect.js +9 -1
- package/commands/connect.js.map +1 -1
- package/commands/usage.js +7 -4
- package/commands/usage.js.map +1 -1
- package/package.json +5 -5
- package/resources/connect/connect.d.ts +9 -0
- package/resources/connect/connect.d.ts.map +1 -1
- package/resources/connect/connect.js +30 -2
- package/resources/connect/connect.js.map +1 -1
- package/resources/list.d.ts +7 -1
- package/resources/list.d.ts.map +1 -1
- package/resources/list.js +35 -15
- package/resources/list.js.map +1 -1
- package/resources/run/attachments.d.ts.map +1 -1
- package/resources/run/attachments.js +33 -5
- package/resources/run/attachments.js.map +1 -1
- package/resources/usage.d.ts +1 -1
- package/resources/usage.d.ts.map +1 -1
- package/resources/usage.js +2 -2
- package/resources/usage.js.map +1 -1
- package/resources/validate.d.ts +1 -0
- package/resources/validate.d.ts.map +1 -1
- package/resources/validate.js +5 -1
- package/resources/validate.js.map +1 -1
- package/src/commands/connect.ts +13 -1
- package/src/commands/usage.ts +7 -4
- package/src/registry/registry.test.ts +7 -0
- package/src/resources/connect/connect.integration.test.ts +45 -1
- package/src/resources/connect/connect.ts +48 -2
- package/src/resources/list.ts +55 -17
- package/src/resources/read-verbs.integration.test.ts +35 -2
- package/src/resources/run/attachments.test.ts +22 -0
- package/src/resources/run/attachments.ts +44 -5
- package/src/resources/usage.ts +2 -1
- package/src/resources/validate.ts +5 -1
package/resources/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/resources/usage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/resources/usage.ts"],"names":[],"mappings":"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"}
|
package/resources/validate.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type DescMessage, type JsonValue } from "@bufbuild/protobuf";
|
|
2
2
|
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
3
|
+
export declare const VALIDATE_SCHEMAS: ReadonlyMap<ApiResourceKind, DescMessage>;
|
|
3
4
|
export declare function schemaForValidate(kind: ApiResourceKind): DescMessage | undefined;
|
|
4
5
|
/** Structurally validate a parsed YAML document against its proto schema. */
|
|
5
6
|
export declare function validateDocument(schema: DescMessage, document: JsonValue): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/resources/validate.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,WAAW,EAAY,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKhF,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/resources/validate.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,WAAW,EAAY,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKhF,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AAOtH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,eAAe,EAAE,WAAW,CAMrE,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS,CAEhF;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAI/E"}
|
package/resources/validate.js
CHANGED
|
@@ -11,7 +11,11 @@ import { McpServerSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1
|
|
|
11
11
|
import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
|
|
12
12
|
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
13
13
|
import { ProjectSchema } from "@stigmer/protos/ai/stigmer/tenancy/project/v1/api_pb";
|
|
14
|
-
|
|
14
|
+
// Exported for the verb/dispatch conformance suite (registry/registry.test.ts),
|
|
15
|
+
// which holds this map and the matrix's Verb.Validate promises to strict
|
|
16
|
+
// bidirectional equality — the stigmer/stigmer#353 drift class. Command code
|
|
17
|
+
// resolves schemas through `schemaForValidate`, never this map directly.
|
|
18
|
+
export const VALIDATE_SCHEMAS = new Map([
|
|
15
19
|
[ApiResourceKind.agent, AgentSchema],
|
|
16
20
|
[ApiResourceKind.workflow, WorkflowSchema],
|
|
17
21
|
[ApiResourceKind.mcp_server, McpServerSchema],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/resources/validate.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,qDAAqD;AAErD,OAAO,EAAoB,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,oDAAoD,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,MAAM,gBAAgB,GAA8C,IAAI,GAAG,CAA+B;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/resources/validate.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,qDAAqD;AAErD,OAAO,EAAoB,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,oDAAoD,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,qFAAqF,CAAC;AACtH,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,gFAAgF;AAChF,yEAAyE;AACzE,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAA8C,IAAI,GAAG,CAA+B;IAC/G,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;IACpC,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1C,CAAC,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7C,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC;IACxC,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC;CAC7C,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,MAAmB,EAAE,QAAmB;IACvE,6EAA6E;IAC7E,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC"}
|
package/src/commands/connect.ts
CHANGED
|
@@ -26,7 +26,12 @@ export function registerConnect(program: Command): void {
|
|
|
26
26
|
connect
|
|
27
27
|
.command("mcp-server <slug-or-id>")
|
|
28
28
|
.description("connect to an MCP server and discover its tools")
|
|
29
|
-
.option(
|
|
29
|
+
.option(
|
|
30
|
+
"--timeout <seconds>",
|
|
31
|
+
"bound the wait for connection and discovery (always bounds --dry-run; " +
|
|
32
|
+
"bounds the server-side connect only when set explicitly)",
|
|
33
|
+
String(DEFAULT_TIMEOUT_SECONDS),
|
|
34
|
+
)
|
|
30
35
|
.option("--dry-run", "discover and display results without pushing to the backend")
|
|
31
36
|
.option(
|
|
32
37
|
"--env <KEY=VALUE>",
|
|
@@ -39,6 +44,12 @@ export function registerConnect(program: Command): void {
|
|
|
39
44
|
|
|
40
45
|
async function runConnect(reference: string, options: ConnectFlags, command: Command): Promise<void> {
|
|
41
46
|
const timeoutMs = parseTimeout(options.timeout);
|
|
47
|
+
// The 30s default exists for --dry-run's local discovery. A real connect
|
|
48
|
+
// legitimately takes minutes (server-side sandbox boot + discovery + tool
|
|
49
|
+
// classification), so bounding it by the DEFAULT would fail healthy
|
|
50
|
+
// connects — the wait is bounded only when the user set --timeout
|
|
51
|
+
// explicitly (issue #239: the flag used to be silently ignored here).
|
|
52
|
+
const timeoutIsExplicit = command.getOptionValueSource("timeout") === "cli";
|
|
42
53
|
const [{ connectBackend }, { connectMcpServer }, { renderConnectResult }] = await Promise.all([
|
|
43
54
|
import("../backend.js"),
|
|
44
55
|
import("../resources/connect/connect.js"),
|
|
@@ -67,6 +78,7 @@ async function runConnect(reference: string, options: ConnectFlags, command: Com
|
|
|
67
78
|
reference,
|
|
68
79
|
org,
|
|
69
80
|
timeoutMs,
|
|
81
|
+
pushTimeoutMs: timeoutIsExplicit ? timeoutMs : undefined,
|
|
70
82
|
dryRun: options.dryRun === true,
|
|
71
83
|
envOverrides: options.env,
|
|
72
84
|
backendType: client.config.backend.type,
|
package/src/commands/usage.ts
CHANGED
|
@@ -24,11 +24,11 @@ export function registerUsage(program: Command): void {
|
|
|
24
24
|
|
|
25
25
|
usage
|
|
26
26
|
.command("agent <agent-id>")
|
|
27
|
-
.description("view the aggregated usage report for an agent")
|
|
27
|
+
.description("view the aggregated usage report for an agent within your organization")
|
|
28
28
|
.option("--from <date>", "start date (ISO 8601, e.g. 2026-03-01)")
|
|
29
29
|
.option("--to <date>", "end date (ISO 8601, e.g. 2026-03-13)")
|
|
30
30
|
.option("-o, --output <format>", "output format: table, json, or yaml")
|
|
31
|
-
.action((agentId: string, options: UsageFlags) => runAgentUsage(agentId, options));
|
|
31
|
+
.action((agentId: string, options: UsageFlags, command: Command) => runAgentUsage(agentId, options, command));
|
|
32
32
|
|
|
33
33
|
usage
|
|
34
34
|
.command("org")
|
|
@@ -48,13 +48,16 @@ async function runSessionUsage(sessionId: string, options: UsageFlags): Promise<
|
|
|
48
48
|
process.stdout.write(usage.renderSessionUsage(report, readFormat(options)));
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
async function runAgentUsage(agentId: string, options: UsageFlags): Promise<void> {
|
|
51
|
+
async function runAgentUsage(agentId: string, options: UsageFlags, command: Command): Promise<void> {
|
|
52
52
|
const [{ connectBackend }, usage] = await Promise.all([import("../backend.js"), import("../resources/usage.js")]);
|
|
53
53
|
const client = connectBackend();
|
|
54
54
|
ensureAuthenticated(client.config);
|
|
55
|
+
// The report is org-scoped (usage of the agent within one org), so the org
|
|
56
|
+
// resolves exactly as `usage org` does: global --org flag or config default.
|
|
57
|
+
const org = resolveOrganization(client.config, globalOrg(command));
|
|
55
58
|
|
|
56
59
|
const range = { from: options.from ?? "", to: options.to ?? "" };
|
|
57
|
-
const report = await usage.getAgentUsageReport(client.stigmer, agentId, range);
|
|
60
|
+
const report = await usage.getAgentUsageReport(client.stigmer, agentId, org, range);
|
|
58
61
|
process.stdout.write(usage.renderAgentUsage(report, range, readFormat(options)));
|
|
59
62
|
}
|
|
60
63
|
|
|
@@ -4,6 +4,7 @@ import { APPLY_HANDLERS } from "../resources/apply/handlers.js";
|
|
|
4
4
|
import { DELETE_HANDLERS } from "../resources/delete.js";
|
|
5
5
|
import { GET_BINDINGS } from "../resources/get-bindings.js";
|
|
6
6
|
import { LIST_HANDLERS, SEARCH_KINDS } from "../resources/list.js";
|
|
7
|
+
import { VALIDATE_SCHEMAS } from "../resources/validate.js";
|
|
7
8
|
import { defaultRegistry } from "./registry.js";
|
|
8
9
|
import { Verb } from "./verbs.js";
|
|
9
10
|
|
|
@@ -167,6 +168,12 @@ describe("registry — verb/dispatch conformance", () => {
|
|
|
167
168
|
wired: new Set([...LIST_HANDLERS.keys(), ...SEARCH_KINDS]),
|
|
168
169
|
specialCases: new Map(),
|
|
169
170
|
},
|
|
171
|
+
{
|
|
172
|
+
label: "validate",
|
|
173
|
+
verb: Verb.Validate,
|
|
174
|
+
wired: new Set(VALIDATE_SCHEMAS.keys()),
|
|
175
|
+
specialCases: new Map(),
|
|
176
|
+
},
|
|
170
177
|
{
|
|
171
178
|
label: "delete",
|
|
172
179
|
verb: Verb.Delete,
|
|
@@ -34,12 +34,17 @@ const openSessions = new Set<ServerHttp2Session>();
|
|
|
34
34
|
|
|
35
35
|
let connectCalls: ConnectInput[] = [];
|
|
36
36
|
let grantConnected = false;
|
|
37
|
+
// Delay before the mock Connect RPC answers; lets the --timeout tests
|
|
38
|
+
// simulate a long-running server-side connect. The timer is unref'd so a
|
|
39
|
+
// still-pending delayed response can never hold the test process open.
|
|
40
|
+
let connectDelayMs = 0;
|
|
37
41
|
// The server returned by getByReference; mutated per test for auth scenarios.
|
|
38
42
|
let servedSpec: ReturnType<typeof create<typeof McpServerSchema>>;
|
|
39
43
|
|
|
40
44
|
beforeEach(() => {
|
|
41
45
|
connectCalls = [];
|
|
42
46
|
grantConnected = false;
|
|
47
|
+
connectDelayMs = 0;
|
|
43
48
|
servedSpec = create(McpServerSchema, {
|
|
44
49
|
metadata: { id: "mcp_1", name: "github", slug: "github", org: "acme" },
|
|
45
50
|
spec: {
|
|
@@ -72,8 +77,11 @@ beforeAll(async () => {
|
|
|
72
77
|
// Mirror the backend's protovalidate rule (org min_len=1): reject an empty
|
|
73
78
|
// org so a regression that drops org fails loudly here instead of silently
|
|
74
79
|
// passing (the mock adapter does not run protovalidate on its own).
|
|
75
|
-
connect: (req) => {
|
|
80
|
+
connect: async (req) => {
|
|
76
81
|
if (req.org === "") throw new ConnectError("org – value length must be at least 1 characters", Code.InvalidArgument);
|
|
82
|
+
if (connectDelayMs > 0) {
|
|
83
|
+
await new Promise((resolve) => setTimeout(resolve, connectDelayMs).unref());
|
|
84
|
+
}
|
|
77
85
|
connectCalls.push(req);
|
|
78
86
|
return updatedServer;
|
|
79
87
|
},
|
|
@@ -120,6 +128,42 @@ describe("connect push path", () => {
|
|
|
120
128
|
});
|
|
121
129
|
});
|
|
122
130
|
|
|
131
|
+
describe("--timeout bounds the server-side connect (issue #239)", () => {
|
|
132
|
+
it("stops waiting with actionable guidance when pushTimeoutMs elapses", async () => {
|
|
133
|
+
connectDelayMs = 5_000;
|
|
134
|
+
await expect(
|
|
135
|
+
connectMcpServer(client, {
|
|
136
|
+
reference: "github",
|
|
137
|
+
org: "acme",
|
|
138
|
+
timeoutMs: 30_000,
|
|
139
|
+
pushTimeoutMs: 150,
|
|
140
|
+
dryRun: false,
|
|
141
|
+
envOverrides: ["GITHUB_TOKEN=ghp-x"],
|
|
142
|
+
backendType: "cloud",
|
|
143
|
+
interactive: false,
|
|
144
|
+
}),
|
|
145
|
+
).rejects.toThrow(/Stopped waiting for the connect of MCP server 'github' after 0\.15s/);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("does not bound the wait when pushTimeoutMs is unset (default --timeout)", async () => {
|
|
149
|
+
// The flag's 30s default is sized for --dry-run local discovery; a real
|
|
150
|
+
// connect legitimately outlives it, so only an explicit --timeout bounds
|
|
151
|
+
// the push. 200ms of server delay stands in for "longer than the bound
|
|
152
|
+
// would have been".
|
|
153
|
+
connectDelayMs = 200;
|
|
154
|
+
const result = await connectMcpServer(client, {
|
|
155
|
+
reference: "github",
|
|
156
|
+
org: "acme",
|
|
157
|
+
timeoutMs: 100,
|
|
158
|
+
dryRun: false,
|
|
159
|
+
envOverrides: ["GITHUB_TOKEN=ghp-x"],
|
|
160
|
+
backendType: "cloud",
|
|
161
|
+
interactive: false,
|
|
162
|
+
});
|
|
163
|
+
expect(result.updated?.metadata?.id).toBe("mcp_1");
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
|
|
123
167
|
describe("OAuth guidance gate", () => {
|
|
124
168
|
beforeEach(() => {
|
|
125
169
|
servedSpec.spec!.auth = create(McpServerAuthSchema, { targetEnvVar: "GITHUB_TOKEN" });
|
|
@@ -16,7 +16,7 @@ import type { DiscoveredCapabilities } from "@stigmer/protos/ai/stigmer/agentic/
|
|
|
16
16
|
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
17
17
|
import type { Stigmer } from "@stigmer/sdk";
|
|
18
18
|
import type { BackendType } from "../../config/config.js";
|
|
19
|
-
import { UsageError } from "../../errors/index.js";
|
|
19
|
+
import { CliExitError, ExitCode, UsageError } from "../../errors/index.js";
|
|
20
20
|
import { defaultRegistry } from "../../registry/index.js";
|
|
21
21
|
import { PlaceholderResolutionError } from "../mcp/placeholder-resolver.js";
|
|
22
22
|
import { buildRuntimeEnv } from "../mcp/runtime-env.js";
|
|
@@ -27,6 +27,15 @@ export interface ConnectOptions {
|
|
|
27
27
|
readonly reference: string;
|
|
28
28
|
readonly org: string;
|
|
29
29
|
readonly timeoutMs: number;
|
|
30
|
+
/**
|
|
31
|
+
* Bound the wait on the server-side connect RPC. Unset by default: a real
|
|
32
|
+
* connect legitimately takes minutes (sandbox boot + discovery + tool
|
|
33
|
+
* classification), so only an EXPLICIT --timeout bounds it — the flag's
|
|
34
|
+
* 30s default is sized for --dry-run's local discovery and would fail
|
|
35
|
+
* healthy connects. The bound is soft (the CLI stops waiting; the backend
|
|
36
|
+
* finishes the connect on its own).
|
|
37
|
+
*/
|
|
38
|
+
readonly pushTimeoutMs?: number;
|
|
30
39
|
readonly dryRun: boolean;
|
|
31
40
|
readonly envOverrides: readonly string[];
|
|
32
41
|
/** Backend type, for resolving the OAuth web-console URL. */
|
|
@@ -66,16 +75,53 @@ export async function connectMcpServer(client: Stigmer, opts: ConnectOptions): P
|
|
|
66
75
|
|
|
67
76
|
await ensureOAuthSatisfied(client, server, opts);
|
|
68
77
|
|
|
69
|
-
const
|
|
78
|
+
const push = client.mcpServer.connect(
|
|
70
79
|
create(ConnectInputSchema, {
|
|
71
80
|
mcpServerId: server.metadata?.id ?? "",
|
|
72
81
|
org: opts.org,
|
|
73
82
|
runtimeEnv: buildRuntimeEnv(server, opts.envOverrides),
|
|
74
83
|
}),
|
|
75
84
|
);
|
|
85
|
+
const updated = opts.pushTimeoutMs === undefined
|
|
86
|
+
? await push
|
|
87
|
+
: await boundedPush(push, opts.pushTimeoutMs, server);
|
|
76
88
|
return { server, capabilities: updated.status?.discoveredCapabilities, updated };
|
|
77
89
|
}
|
|
78
90
|
|
|
91
|
+
// Soft timeout on the server-side connect (the client/client.ts idiom): races
|
|
92
|
+
// the RPC against a timer without cancelling it — the backend's connect
|
|
93
|
+
// workflow keeps running and persists its result on its own, so the message
|
|
94
|
+
// says exactly that instead of implying the connect failed.
|
|
95
|
+
async function boundedPush<T>(push: Promise<T>, timeoutMs: number, server: McpServer): Promise<T> {
|
|
96
|
+
const slug = server.metadata?.slug ?? server.metadata?.id ?? "the server";
|
|
97
|
+
let timer: NodeJS.Timeout | undefined;
|
|
98
|
+
const timeout = new Promise<never>((_, reject) => {
|
|
99
|
+
timer = setTimeout(
|
|
100
|
+
() =>
|
|
101
|
+
reject(
|
|
102
|
+
new CliExitError(
|
|
103
|
+
`Stopped waiting for the connect of MCP server '${slug}' after ${timeoutMs / 1000}s (--timeout)`,
|
|
104
|
+
ExitCode.Connection,
|
|
105
|
+
[
|
|
106
|
+
"The server-side connect is still running and will persist its result if it succeeds.",
|
|
107
|
+
`Check the outcome with: stigmer get mcp-server ${slug}`,
|
|
108
|
+
"Re-run without --timeout to wait for completion.",
|
|
109
|
+
],
|
|
110
|
+
),
|
|
111
|
+
),
|
|
112
|
+
timeoutMs,
|
|
113
|
+
);
|
|
114
|
+
});
|
|
115
|
+
// The losing push may settle after the CLI has started exiting; swallow its
|
|
116
|
+
// late rejection so it cannot surface as an unhandled-rejection crash.
|
|
117
|
+
void push.catch(() => {});
|
|
118
|
+
try {
|
|
119
|
+
return await Promise.race([push, timeout]);
|
|
120
|
+
} finally {
|
|
121
|
+
if (timer !== undefined) clearTimeout(timer);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
79
125
|
// Resolve a reference (id, org/slug, or bare slug) to an McpServer. Mirrors Go's
|
|
80
126
|
// GetFromBackend.
|
|
81
127
|
async function resolveMcpServer(client: Stigmer, reference: string, org: string): Promise<McpServer> {
|
package/src/resources/list.ts
CHANGED
|
@@ -7,8 +7,14 @@
|
|
|
7
7
|
// registered in LIST_HANDLERS — the same map-dispatch shape as the get,
|
|
8
8
|
// delete, and apply registries, so the conformance test in
|
|
9
9
|
// registry/registry.test.ts can hold all four to the verb matrix.
|
|
10
|
+
//
|
|
11
|
+
// Handlers FETCH, the dispatcher RENDERS: every handler returns entries plus
|
|
12
|
+
// its schema/table pair, and listResources alone applies --limit and renders.
|
|
13
|
+
// That split is deliberate (stigmer/stigmer#312): when handlers owned
|
|
14
|
+
// rendering, honoring --limit was per-handler discipline, and the two
|
|
15
|
+
// unpaginated branches (organization, api_key) shipped silently ignoring it.
|
|
10
16
|
|
|
11
|
-
import { create } from "@bufbuild/protobuf";
|
|
17
|
+
import { create, type DescMessage, type Message } from "@bufbuild/protobuf";
|
|
12
18
|
import { AgentChannelSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
13
19
|
import { ListAgentChannelsRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/io_pb";
|
|
14
20
|
import { AgentInstanceSchema } from "@stigmer/protos/ai/stigmer/agentic/agentinstance/v1/api_pb";
|
|
@@ -43,7 +49,19 @@ export const SEARCH_KINDS: ReadonlySet<ApiResourceKind> = new Set<ApiResourceKin
|
|
|
43
49
|
ApiResourceKind.environment,
|
|
44
50
|
]);
|
|
45
51
|
|
|
46
|
-
|
|
52
|
+
// One fetched page of a listing: what to render (entries + schema) and how
|
|
53
|
+
// (table). Rendering and --limit truncation happen centrally in
|
|
54
|
+
// listResources — a handler cannot opt out of either.
|
|
55
|
+
interface ListPage {
|
|
56
|
+
readonly schema: DescMessage;
|
|
57
|
+
readonly entries: readonly Message[];
|
|
58
|
+
readonly table: TableShape;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Where the RPC paginates, the handler still forwards `limit` as the page
|
|
62
|
+
// size so the server does the bounding; the dispatcher's slice is then a
|
|
63
|
+
// no-op. Where it doesn't, the slice IS the bound.
|
|
64
|
+
type ListFn = (client: Stigmer, org: string, limit: number) => Promise<ListPage>;
|
|
47
65
|
|
|
48
66
|
// Dedicated-RPC list handlers for the non-search-indexed kinds. Every kind
|
|
49
67
|
// declaring List in the verb matrix must appear here or in SEARCH_KINDS —
|
|
@@ -51,49 +69,53 @@ type ListFn = (client: Stigmer, org: string, limit: number, format: OutputFormat
|
|
|
51
69
|
export const LIST_HANDLERS: ReadonlyMap<ApiResourceKind, ListFn> = new Map<ApiResourceKind, ListFn>([
|
|
52
70
|
[
|
|
53
71
|
ApiResourceKind.organization,
|
|
54
|
-
async (client
|
|
72
|
+
async (client) => {
|
|
73
|
+
// findMyOrganizations is caller-scoped and unpaginated (Empty request;
|
|
74
|
+
// a caller's org set is small by nature). The paginated `find` RPC is
|
|
75
|
+
// platform-admin-only — the wrong surface for `list organization`.
|
|
55
76
|
const result = await client.organization.findMyOrganizations();
|
|
56
|
-
return
|
|
77
|
+
return { schema: OrganizationSchema, entries: result.entries, table: ORG_TABLE };
|
|
57
78
|
},
|
|
58
79
|
],
|
|
59
80
|
[
|
|
60
81
|
ApiResourceKind.api_key,
|
|
61
|
-
async (client
|
|
82
|
+
async (client) => {
|
|
83
|
+
// findAll is caller-scoped and unpaginated (Empty request).
|
|
62
84
|
const result = await client.apiKey.findAll();
|
|
63
|
-
return
|
|
85
|
+
return { schema: ApiKeySchema, entries: result.entries, table: APIKEY_TABLE };
|
|
64
86
|
},
|
|
65
87
|
],
|
|
66
88
|
[
|
|
67
89
|
ApiResourceKind.agent_instance,
|
|
68
|
-
async (client, org, limit
|
|
90
|
+
async (client, org, limit) => {
|
|
69
91
|
const result = await client.agentInstance.list(
|
|
70
92
|
create(ListAgentInstancesRequestSchema, { org, pageInfo: create(PageInfoSchema, { num: 1, size: limit }) }),
|
|
71
93
|
);
|
|
72
|
-
return
|
|
94
|
+
return { schema: AgentInstanceSchema, entries: result.items, table: INSTANCE_TABLE };
|
|
73
95
|
},
|
|
74
96
|
],
|
|
75
97
|
[
|
|
76
98
|
ApiResourceKind.agent_channel,
|
|
77
|
-
async (client, org, limit
|
|
99
|
+
async (client, org, limit) => {
|
|
78
100
|
const result = await client.agentChannel.list(
|
|
79
101
|
create(ListAgentChannelsRequestSchema, { org, pageInfo: create(PageInfoSchema, { num: 1, size: limit }) }),
|
|
80
102
|
);
|
|
81
|
-
return
|
|
103
|
+
return { schema: AgentChannelSchema, entries: result.items, table: AGENT_CHANNEL_TABLE };
|
|
82
104
|
},
|
|
83
105
|
],
|
|
84
106
|
[
|
|
85
107
|
ApiResourceKind.channel_app,
|
|
86
|
-
async (client, org
|
|
108
|
+
async (client, org) => {
|
|
87
109
|
// listByOrg has no pagination on its contract (the per-org set is small
|
|
88
|
-
// by design); the
|
|
110
|
+
// by design); the dispatcher's slice bounds the output.
|
|
89
111
|
// `channelapp` (not `channelApp`) is a recorded SDK codegen naming quirk.
|
|
90
112
|
const result = await client.channelapp.listByOrg(create(ListChannelAppsByOrgInputSchema, { org }));
|
|
91
|
-
return
|
|
113
|
+
return { schema: ChannelAppSchema, entries: result.entries, table: CHANNEL_APP_TABLE };
|
|
92
114
|
},
|
|
93
115
|
],
|
|
94
116
|
[
|
|
95
117
|
ApiResourceKind.schedule,
|
|
96
|
-
async (client, org, limit
|
|
118
|
+
async (client, org, limit) => {
|
|
97
119
|
// ListSchedulesRequest requires an org (min_len 1), but an unset cloud
|
|
98
120
|
// context resolves to "" — refuse with actionable copy instead of
|
|
99
121
|
// relaying the server's raw validation error.
|
|
@@ -105,7 +127,7 @@ export const LIST_HANDLERS: ReadonlyMap<ApiResourceKind, ListFn> = new Map<ApiRe
|
|
|
105
127
|
const result = await client.schedule.list(
|
|
106
128
|
create(ListSchedulesRequestSchema, { org, pageInfo: create(PageInfoSchema, { num: 1, size: limit }) }),
|
|
107
129
|
);
|
|
108
|
-
return
|
|
130
|
+
return { schema: ScheduleSchema, entries: result.items, table: SCHEDULE_TABLE };
|
|
109
131
|
},
|
|
110
132
|
],
|
|
111
133
|
]);
|
|
@@ -117,15 +139,31 @@ export async function listResources(
|
|
|
117
139
|
limit: number,
|
|
118
140
|
format: OutputFormat,
|
|
119
141
|
): Promise<string> {
|
|
142
|
+
const page = await fetchListPage(client, kind, org, limit);
|
|
143
|
+
// The single point where --limit binds the output. For paginated RPCs the
|
|
144
|
+
// handler already asked the server for at most `limit` entries and this is
|
|
145
|
+
// a no-op; for unpaginated RPCs it is the truncation itself. Slicing here
|
|
146
|
+
// rather than per-handler is what keeps the flag honest for every kind —
|
|
147
|
+
// organization and api_key shipped ignoring it when handlers owned this
|
|
148
|
+
// (stigmer/stigmer#312).
|
|
149
|
+
return renderCollection(page.schema, page.entries.slice(0, limit), format, page.table);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async function fetchListPage(
|
|
153
|
+
client: Stigmer,
|
|
154
|
+
kind: ApiResourceKind,
|
|
155
|
+
org: string,
|
|
156
|
+
limit: number,
|
|
157
|
+
): Promise<ListPage> {
|
|
120
158
|
const dedicated = LIST_HANDLERS.get(kind);
|
|
121
159
|
if (dedicated !== undefined) {
|
|
122
|
-
return dedicated(client, org, limit
|
|
160
|
+
return dedicated(client, org, limit);
|
|
123
161
|
}
|
|
124
162
|
if (!SEARCH_KINDS.has(kind)) {
|
|
125
163
|
throw new UsageError("list is not implemented for this resource type");
|
|
126
164
|
}
|
|
127
165
|
const result = await client.search.query({ kinds: [kind], org, page: { num: 1, size: limit } });
|
|
128
|
-
return
|
|
166
|
+
return { schema: SearchResultSchema, entries: result.entries, table: SEARCH_TABLE };
|
|
129
167
|
}
|
|
130
168
|
|
|
131
169
|
// Shared with `search` — both render SearchService results identically.
|
|
@@ -67,6 +67,23 @@ const knownApiKey = create(ApiKeySchema, {
|
|
|
67
67
|
spec: { fingerprint: "abcd", neverExpires: true },
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
+
// Second org/API-key entries so the list tests can pin the
|
|
71
|
+
// dispatcher-applied --limit slice — both RPCs are unpaginated (Empty
|
|
72
|
+
// request), the exact shape that shipped ignoring the flag when handlers
|
|
73
|
+
// owned rendering (stigmer/stigmer#312).
|
|
74
|
+
const secondOrg = create(OrganizationSchema, {
|
|
75
|
+
apiVersion: "tenancy.stigmer.ai/v1",
|
|
76
|
+
kind: "Organization",
|
|
77
|
+
metadata: { name: "Beta Clinic", slug: "beta-clinic", org: "beta-clinic", id: "beta-clinic" },
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const secondApiKey = create(ApiKeySchema, {
|
|
81
|
+
apiVersion: "iam.stigmer.ai/v1",
|
|
82
|
+
kind: "ApiKey",
|
|
83
|
+
metadata: { name: "local-dev", org: "acme", id: "key_2" },
|
|
84
|
+
spec: { fingerprint: "ef01", neverExpires: true },
|
|
85
|
+
});
|
|
86
|
+
|
|
70
87
|
const knownSearchResult = create(SearchResultSchema, {
|
|
71
88
|
kind: ApiResourceKind.agent,
|
|
72
89
|
id: "agt_1",
|
|
@@ -223,10 +240,10 @@ beforeAll(async () => {
|
|
|
223
240
|
},
|
|
224
241
|
});
|
|
225
242
|
router.service(OrganizationQueryController, {
|
|
226
|
-
findMyOrganizations: () => ({ entries: [knownOrg] }),
|
|
243
|
+
findMyOrganizations: () => ({ entries: [knownOrg, secondOrg] }),
|
|
227
244
|
});
|
|
228
245
|
router.service(ApiKeyQueryController, {
|
|
229
|
-
findAll: () => ({ entries: [knownApiKey] }),
|
|
246
|
+
findAll: () => ({ entries: [knownApiKey, secondApiKey] }),
|
|
230
247
|
});
|
|
231
248
|
router.service(EnvironmentQueryController, {
|
|
232
249
|
get: (req) => {
|
|
@@ -441,11 +458,27 @@ describe("list integration", () => {
|
|
|
441
458
|
|
|
442
459
|
it("lists organizations via findMyOrganizations as JSON", async () => {
|
|
443
460
|
const out = await listResources(client, ApiResourceKind.organization, "acme", 50, "json");
|
|
461
|
+
expect(JSON.parse(out)).toEqual([
|
|
462
|
+
toJson(OrganizationSchema, knownOrg, { useProtoFieldName: true }),
|
|
463
|
+
toJson(OrganizationSchema, secondOrg, { useProtoFieldName: true }),
|
|
464
|
+
]);
|
|
465
|
+
});
|
|
466
|
+
|
|
467
|
+
it("applies --limit to organizations (findMyOrganizations has no pagination)", async () => {
|
|
468
|
+
const out = await listResources(client, ApiResourceKind.organization, "acme", 1, "json");
|
|
444
469
|
expect(JSON.parse(out)).toEqual([toJson(OrganizationSchema, knownOrg, { useProtoFieldName: true })]);
|
|
445
470
|
});
|
|
446
471
|
|
|
447
472
|
it("lists API keys via findAll as JSON", async () => {
|
|
448
473
|
const out = await listResources(client, ApiResourceKind.api_key, "acme", 50, "json");
|
|
474
|
+
expect(JSON.parse(out)).toEqual([
|
|
475
|
+
toJson(ApiKeySchema, knownApiKey, { useProtoFieldName: true }),
|
|
476
|
+
toJson(ApiKeySchema, secondApiKey, { useProtoFieldName: true }),
|
|
477
|
+
]);
|
|
478
|
+
});
|
|
479
|
+
|
|
480
|
+
it("applies --limit to API keys (findAll has no pagination)", async () => {
|
|
481
|
+
const out = await listResources(client, ApiResourceKind.api_key, "acme", 1, "json");
|
|
449
482
|
expect(JSON.parse(out)).toEqual([toJson(ApiKeySchema, knownApiKey, { useProtoFieldName: true })]);
|
|
450
483
|
});
|
|
451
484
|
|
|
@@ -110,4 +110,26 @@ describe("directory zipping", () => {
|
|
|
110
110
|
writeFileSync(join(empty, ".hidden"), "x"); // only hidden -> nothing attachable
|
|
111
111
|
await expect(processAttachments(uploader, [empty], [])).rejects.toThrow(/no attachable files/);
|
|
112
112
|
});
|
|
113
|
+
|
|
114
|
+
it("uniquifies duplicate directory basenames so mount paths never contradict (issue #364)", async () => {
|
|
115
|
+
// Two dirs named `data` from different parents would otherwise derive the
|
|
116
|
+
// SAME explicit mount path, which the runner rejects as a contradiction.
|
|
117
|
+
const dirA = join(dir, "a", "data");
|
|
118
|
+
const dirB = join(dir, "b", "data");
|
|
119
|
+
mkdirSync(dirA, { recursive: true });
|
|
120
|
+
mkdirSync(dirB, { recursive: true });
|
|
121
|
+
writeFileSync(join(dirA, "one.txt"), "1");
|
|
122
|
+
writeFileSync(join(dirB, "two.txt"), "2");
|
|
123
|
+
|
|
124
|
+
const progress: string[] = [];
|
|
125
|
+
const result = await processAttachments(uploader, [dirA, dirB], [], (l) => progress.push(l));
|
|
126
|
+
|
|
127
|
+
expect(result.attachments).toHaveLength(2);
|
|
128
|
+
expect(result.attachments[0].filename).toBe("data.zip");
|
|
129
|
+
expect(result.attachments[0].mountPath).toBe("inputs/data/");
|
|
130
|
+
expect(result.attachments[1].filename).toBe("data-2.zip");
|
|
131
|
+
expect(result.attachments[1].mountPath).toBe("inputs/data-2/");
|
|
132
|
+
// The rename is disclosed to the user on the progress sink.
|
|
133
|
+
expect(progress.some((l) => l.includes("'data/'") && l.includes("'data-2/'"))).toBe(true);
|
|
134
|
+
});
|
|
113
135
|
});
|