@stigmer/sdk 3.12.2 → 3.12.4
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/__tests__/billing.test.js +36 -0
- package/__tests__/billing.test.js.map +1 -1
- package/__tests__/skill.test.d.ts +2 -0
- package/__tests__/skill.test.d.ts.map +1 -0
- package/__tests__/skill.test.js +117 -0
- package/__tests__/skill.test.js.map +1 -0
- package/billing.d.ts +27 -0
- package/billing.d.ts.map +1 -1
- package/billing.js +26 -1
- package/billing.js.map +1 -1
- package/errors.d.ts +1 -1
- package/errors.d.ts.map +1 -1
- package/errors.js +1 -1
- package/errors.js.map +1 -1
- package/execution/__tests__/tool-view.fixtures.test.js +23 -4
- package/execution/__tests__/tool-view.fixtures.test.js.map +1 -1
- package/execution/tool-view.d.ts +32 -0
- package/execution/tool-view.d.ts.map +1 -1
- package/execution/tool-view.js +45 -0
- package/execution/tool-view.js.map +1 -1
- package/gen/client.d.ts +1 -1
- package/gen/client.d.ts.map +1 -1
- package/gen/client.js +1 -1
- package/gen/client.js.map +1 -1
- package/gen/errors.d.ts +7 -0
- package/gen/errors.d.ts.map +1 -1
- package/gen/errors.js +9 -0
- package/gen/errors.js.map +1 -1
- package/gen/skill.d.ts +3 -1
- package/gen/skill.d.ts.map +1 -1
- package/gen/skill.js +16 -0
- package/gen/skill.js.map +1 -1
- package/index.d.ts +4 -2
- package/index.d.ts.map +1 -1
- package/index.js +5 -2
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/provider-standing.d.ts +19 -0
- package/provider-standing.d.ts.map +1 -0
- package/provider-standing.js +31 -0
- package/provider-standing.js.map +1 -0
- package/skill.d.ts +51 -0
- package/skill.d.ts.map +1 -0
- package/skill.js +102 -0
- package/skill.js.map +1 -0
- package/src/__tests__/billing.test.ts +44 -0
- package/src/__tests__/skill.test.ts +150 -0
- package/src/billing.ts +44 -0
- package/src/errors.ts +1 -0
- package/src/execution/__tests__/tool-view.fixtures.test.ts +41 -4
- package/src/execution/tool-view.ts +52 -0
- package/src/gen/client.ts +1 -1
- package/src/gen/errors.ts +10 -0
- package/src/gen/skill.ts +13 -1
- package/src/index.ts +8 -0
- package/src/provider-standing.ts +37 -0
- package/src/skill.ts +125 -0
- package/src/stigmer.ts +12 -0
- package/stigmer.d.ts +10 -0
- package/stigmer.d.ts.map +1 -1
- package/stigmer.js +12 -0
- package/stigmer.js.map +1 -1
|
@@ -20,6 +20,10 @@ function fakeTransport(captured) {
|
|
|
20
20
|
captured.adjustCredits = req;
|
|
21
21
|
return create(CreditLedgerEntrySchema, { amountMicros: req.amountMicros });
|
|
22
22
|
},
|
|
23
|
+
grantCredits: (req) => {
|
|
24
|
+
captured.grantCredits = req;
|
|
25
|
+
return create(CreditLedgerEntrySchema, { amountMicros: req.amountMicros });
|
|
26
|
+
},
|
|
23
27
|
});
|
|
24
28
|
service(BillingQueryController, {
|
|
25
29
|
getCreditLedger: (req) => {
|
|
@@ -46,6 +50,38 @@ describe("BillingClient.adjustCredits", () => {
|
|
|
46
50
|
expect(captured.adjustCredits?.idempotencyKey).toBe("fund-acme-001");
|
|
47
51
|
});
|
|
48
52
|
});
|
|
53
|
+
describe("BillingClient.grantCredits", () => {
|
|
54
|
+
it("maps params including the expiry onto GrantCreditsInput", async () => {
|
|
55
|
+
const captured = {};
|
|
56
|
+
const client = new BillingClient(fakeTransport(captured));
|
|
57
|
+
const expiresAt = new Date("2026-08-31T23:59:59Z");
|
|
58
|
+
const entry = await client.grantCredits({
|
|
59
|
+
orgId: "acme",
|
|
60
|
+
amountMicros: 5000000n,
|
|
61
|
+
expiresAt,
|
|
62
|
+
reason: "monthly free allowance 2026-08",
|
|
63
|
+
idempotencyKey: "allowance-acme-2026-08",
|
|
64
|
+
});
|
|
65
|
+
expect(entry.amountMicros).toBe(5000000n);
|
|
66
|
+
const req = captured.grantCredits;
|
|
67
|
+
expect(req?.orgId).toBe("acme");
|
|
68
|
+
expect(req?.amountMicros).toBe(5000000n);
|
|
69
|
+
expect(req?.expiresAt && timestampDate(req.expiresAt)).toEqual(expiresAt);
|
|
70
|
+
expect(req?.reason).toBe("monthly free allowance 2026-08");
|
|
71
|
+
expect(req?.idempotencyKey).toBe("allowance-acme-2026-08");
|
|
72
|
+
});
|
|
73
|
+
it("omits the expiry for a never-expiring grant", async () => {
|
|
74
|
+
const captured = {};
|
|
75
|
+
const client = new BillingClient(fakeTransport(captured));
|
|
76
|
+
await client.grantCredits({
|
|
77
|
+
orgId: "acme",
|
|
78
|
+
amountMicros: 1000000n,
|
|
79
|
+
reason: "welcome credit",
|
|
80
|
+
idempotencyKey: "welcome-acme",
|
|
81
|
+
});
|
|
82
|
+
expect(captured.grantCredits?.expiresAt).toBeUndefined();
|
|
83
|
+
});
|
|
84
|
+
});
|
|
49
85
|
describe("BillingClient.getCreditLedger", () => {
|
|
50
86
|
it("maps all filters including the time range", async () => {
|
|
51
87
|
const captured = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.test.js","sourceRoot":"","sources":["../../src/__tests__/billing.test.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,8DAA8D;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAkB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EACL,0BAA0B,
|
|
1
|
+
{"version":3,"file":"billing.test.js","sourceRoot":"","sources":["../../src/__tests__/billing.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/skill.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// Wire-shape tests for RoutedSkillClient's size-routed push (stigmer#701).
|
|
2
|
+
// A router transport fakes the skill service in-process, so the routing is
|
|
3
|
+
// exercised through the REAL generated client and its error wrapping — the
|
|
4
|
+
// CLI's earlier copy of this logic keyed its fallback on `instanceof
|
|
5
|
+
// ConnectError`, which the SDK's wrapError made unreachable; these pins run
|
|
6
|
+
// the wrapped path. Mirrors sdk/go/skill_test.go's five routing pins.
|
|
7
|
+
import { describe, expect, it, vi } from "vitest";
|
|
8
|
+
import { Code, ConnectError, createRouterTransport } from "@connectrpc/connect";
|
|
9
|
+
import { create } from "@bufbuild/protobuf";
|
|
10
|
+
import { SkillCommandController } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/command_pb";
|
|
11
|
+
import { SkillSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
|
|
12
|
+
import { PushSkillRequestSchema, SkillArtifactUploadUrlSchema, } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
|
|
13
|
+
import { StigmerError } from "../gen/errors.js";
|
|
14
|
+
import { MAX_INLINE_ARTIFACT_BYTES, RoutedSkillClient } from "../skill.js";
|
|
15
|
+
const STAGING_URL = "http://stage.example/v1/skill-artifacts/uploads/sau_t";
|
|
16
|
+
/**
|
|
17
|
+
* In-process skill service. `withMint: false` leaves createArtifactUploadUrl
|
|
18
|
+
* unregistered, so the router answers Unimplemented — the exact wire shape
|
|
19
|
+
* of a pre-transfer-lane server.
|
|
20
|
+
*/
|
|
21
|
+
function fakeTransport(captured, opts = { withMint: true }) {
|
|
22
|
+
return createRouterTransport(({ service }) => {
|
|
23
|
+
service(SkillCommandController, {
|
|
24
|
+
push: (req) => {
|
|
25
|
+
captured.pushes.push(req);
|
|
26
|
+
return create(SkillSchema, {});
|
|
27
|
+
},
|
|
28
|
+
...(opts.withMint
|
|
29
|
+
? {
|
|
30
|
+
createArtifactUploadUrl: (req) => {
|
|
31
|
+
captured.mints++;
|
|
32
|
+
expect(req.sizeBytes).toBeGreaterThan(0n);
|
|
33
|
+
return create(SkillArtifactUploadUrlSchema, {
|
|
34
|
+
url: STAGING_URL,
|
|
35
|
+
artifactUploadRef: "sau_t",
|
|
36
|
+
ttlSeconds: 900,
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
: {}),
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function okFetch(record) {
|
|
45
|
+
return vi.fn(async (url, init) => {
|
|
46
|
+
record.putUrl = String(url);
|
|
47
|
+
record.putBytes = init.body instanceof Uint8Array ? init.body.byteLength : -1;
|
|
48
|
+
record.contentType = init.headers["content-type"];
|
|
49
|
+
return new Response(null, { status: 200 });
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
describe("RoutedSkillClient.push size routing", () => {
|
|
53
|
+
it("keeps small artifacts inline — no mint, bytes in the request", async () => {
|
|
54
|
+
const captured = { pushes: [], mints: 0 };
|
|
55
|
+
const client = new RoutedSkillClient(fakeTransport(captured));
|
|
56
|
+
await client.push(create(PushSkillRequestSchema, { org: "acme", artifact: new Uint8Array(1024) }));
|
|
57
|
+
expect(captured.mints).toBe(0);
|
|
58
|
+
expect(captured.pushes).toHaveLength(1);
|
|
59
|
+
expect(captured.pushes[0].artifact.length).toBe(1024);
|
|
60
|
+
});
|
|
61
|
+
it("stages large artifacts over HTTP and pushes by reference, preserving the envelope", async () => {
|
|
62
|
+
const captured = { pushes: [], mints: 0 };
|
|
63
|
+
const record = {};
|
|
64
|
+
const client = new RoutedSkillClient(fakeTransport(captured), okFetch(record));
|
|
65
|
+
const artifact = new Uint8Array(MAX_INLINE_ARTIFACT_BYTES + 1);
|
|
66
|
+
await client.push(create(PushSkillRequestSchema, { org: "acme", artifact, tag: "stable", message: "big" }));
|
|
67
|
+
expect(captured.mints).toBe(1);
|
|
68
|
+
expect(record.putUrl).toBe(STAGING_URL);
|
|
69
|
+
expect(record.putBytes).toBe(artifact.length);
|
|
70
|
+
expect(record.contentType).toBe("application/zip");
|
|
71
|
+
expect(captured.pushes).toHaveLength(1);
|
|
72
|
+
expect(captured.pushes[0].artifact.length).toBe(0);
|
|
73
|
+
expect(captured.pushes[0].artifactUploadRef).toBe("sau_t");
|
|
74
|
+
// The by-ref rewrite must not lose the rest of the request.
|
|
75
|
+
expect(captured.pushes[0].tag).toBe("stable");
|
|
76
|
+
expect(captured.pushes[0].message).toBe("big");
|
|
77
|
+
});
|
|
78
|
+
it("passes an explicit upload ref through untouched — the caller staged it", async () => {
|
|
79
|
+
const captured = { pushes: [], mints: 0 };
|
|
80
|
+
const client = new RoutedSkillClient(fakeTransport(captured));
|
|
81
|
+
await client.push(create(PushSkillRequestSchema, { org: "acme", artifactUploadRef: "sau_mine" }));
|
|
82
|
+
expect(captured.mints).toBe(0);
|
|
83
|
+
expect(captured.pushes).toHaveLength(1);
|
|
84
|
+
expect(captured.pushes[0].artifactUploadRef).toBe("sau_mine");
|
|
85
|
+
});
|
|
86
|
+
it("fails loud against servers that predate the transfer lane (wrapped Unimplemented)", async () => {
|
|
87
|
+
const captured = { pushes: [], mints: 0 };
|
|
88
|
+
const client = new RoutedSkillClient(fakeTransport(captured, { withMint: false }));
|
|
89
|
+
await expect(client.push(create(PushSkillRequestSchema, { org: "acme", artifact: new Uint8Array(MAX_INLINE_ARTIFACT_BYTES + 1) }))).rejects.toThrow(/upgrade stigmer-server/);
|
|
90
|
+
expect(captured.pushes).toHaveLength(0);
|
|
91
|
+
});
|
|
92
|
+
it("surfaces the staging rejection body and never proceeds to push", async () => {
|
|
93
|
+
const captured = { pushes: [], mints: 0 };
|
|
94
|
+
const rejectingFetch = (async () => new Response("staging slot expired", { status: 404 }));
|
|
95
|
+
const client = new RoutedSkillClient(fakeTransport(captured), rejectingFetch);
|
|
96
|
+
await expect(client.push(create(PushSkillRequestSchema, { org: "acme", artifact: new Uint8Array(MAX_INLINE_ARTIFACT_BYTES + 1) }))).rejects.toThrow(/HTTP 404: staging slot expired/);
|
|
97
|
+
expect(captured.pushes).toHaveLength(0);
|
|
98
|
+
});
|
|
99
|
+
it("propagates non-Unimplemented mint errors unmasked", async () => {
|
|
100
|
+
const captured = { pushes: [], mints: 0 };
|
|
101
|
+
const transport = createRouterTransport(({ service }) => {
|
|
102
|
+
service(SkillCommandController, {
|
|
103
|
+
push: (req) => {
|
|
104
|
+
captured.pushes.push(req);
|
|
105
|
+
return create(SkillSchema, {});
|
|
106
|
+
},
|
|
107
|
+
createArtifactUploadUrl: () => {
|
|
108
|
+
throw new ConnectError("artifact too large", Code.InvalidArgument);
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
const client = new RoutedSkillClient(transport);
|
|
113
|
+
await expect(client.push(create(PushSkillRequestSchema, { org: "acme", artifact: new Uint8Array(MAX_INLINE_ARTIFACT_BYTES + 1) }))).rejects.toSatisfy((err) => err instanceof StigmerError && err.code === "invalid-argument");
|
|
114
|
+
expect(captured.pushes).toHaveLength(0);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=skill.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.test.js","sourceRoot":"","sources":["../../src/__tests__/skill.test.ts"],"names":[],"mappings":"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"}
|
package/billing.d.ts
CHANGED
|
@@ -35,6 +35,21 @@ export interface AdjustCreditsParams {
|
|
|
35
35
|
/** Client-supplied deduplication key to prevent double-processing. */
|
|
36
36
|
readonly idempotencyKey: string;
|
|
37
37
|
}
|
|
38
|
+
/** Parameters for a promotional credit grant. */
|
|
39
|
+
export interface GrantCreditsParams {
|
|
40
|
+
readonly orgId: string;
|
|
41
|
+
/** Amount to grant. Must be positive; grants never remove credits. */
|
|
42
|
+
readonly amountMicros: bigint;
|
|
43
|
+
/**
|
|
44
|
+
* When the grant expires (use-it-or-lose-it). Omit for a grant that never
|
|
45
|
+
* expires. Precision is whole seconds; sub-second precision is discarded.
|
|
46
|
+
*/
|
|
47
|
+
readonly expiresAt?: Date;
|
|
48
|
+
/** Human-readable reason recorded on the ledger entry (audit trail). */
|
|
49
|
+
readonly reason: string;
|
|
50
|
+
/** Client-supplied deduplication key to prevent double-processing. */
|
|
51
|
+
readonly idempotencyKey: string;
|
|
52
|
+
}
|
|
38
53
|
/** Parameters for querying the credit ledger. */
|
|
39
54
|
export interface GetCreditLedgerParams {
|
|
40
55
|
readonly orgId: string;
|
|
@@ -138,6 +153,18 @@ export declare class BillingClient {
|
|
|
138
153
|
* Requires `can_manage_billing` on the org.
|
|
139
154
|
*/
|
|
140
155
|
adjustCredits(params: AdjustCreditsParams): Promise<CreditLedgerEntry>;
|
|
156
|
+
/**
|
|
157
|
+
* Grant promotional credits to an organization, optionally expiring
|
|
158
|
+
* (use-it-or-lose-it).
|
|
159
|
+
*
|
|
160
|
+
* The grant burns before adjustment and purchased credits. When
|
|
161
|
+
* `expiresAt` is set, any remainder unconsumed at that time is removed
|
|
162
|
+
* from the balance by the platform's grant-expiry sweep. Idempotent:
|
|
163
|
+
* replaying an applied idempotency key returns the original ledger entry,
|
|
164
|
+
* even after the expiry has passed. Requires `can_manage_billing` on
|
|
165
|
+
* the org.
|
|
166
|
+
*/
|
|
167
|
+
grantCredits(params: GrantCreditsParams): Promise<CreditLedgerEntry>;
|
|
141
168
|
/** Retrieve paginated credit ledger entries with optional filters. */
|
|
142
169
|
getCreditLedger(params: GetCreditLedgerParams): Promise<CreditLedgerResponse>;
|
|
143
170
|
/**
|
package/billing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIhF,OAAO,
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
|
package/billing.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createClient } from "@connectrpc/connect";
|
|
|
2
2
|
import { create } from "@bufbuild/protobuf";
|
|
3
3
|
import { BillingCommandController } from "@stigmer/protos/ai/stigmer/billing/v1/command_pb";
|
|
4
4
|
import { BillingQueryController } from "@stigmer/protos/ai/stigmer/billing/v1/query_pb";
|
|
5
|
-
import { GetOrCreateBillingAccountInputSchema, GetBillingAccountInputSchema, GetCreditBalanceInputSchema, AdjustCreditsInputSchema, GetCreditLedgerInputSchema, CreateCreditCheckoutSessionInputSchema, CreateBillingPortalSessionInputSchema, SetAutoRechargeConfigInputSchema, GetBillingUsageReportInputSchema, GetCustomerModelPricingInputSchema, GetModelPricingGovernanceInputSchema, DecideModelPricingOverrideInputSchema, UpsertModelPricingBaselineInputSchema, RetireModelPricingBaselineInputSchema, ListModelPricingBaselinesInputSchema, } from "@stigmer/protos/ai/stigmer/billing/v1/io_pb";
|
|
5
|
+
import { GetOrCreateBillingAccountInputSchema, GetBillingAccountInputSchema, GetCreditBalanceInputSchema, AdjustCreditsInputSchema, GrantCreditsInputSchema, GetCreditLedgerInputSchema, CreateCreditCheckoutSessionInputSchema, CreateBillingPortalSessionInputSchema, SetAutoRechargeConfigInputSchema, GetBillingUsageReportInputSchema, GetCustomerModelPricingInputSchema, GetModelPricingGovernanceInputSchema, DecideModelPricingOverrideInputSchema, UpsertModelPricingBaselineInputSchema, RetireModelPricingBaselineInputSchema, ListModelPricingBaselinesInputSchema, } from "@stigmer/protos/ai/stigmer/billing/v1/io_pb";
|
|
6
6
|
import { PageInfoSchema } from "@stigmer/protos/ai/stigmer/commons/rpc/pagination_pb";
|
|
7
7
|
import { timestampFromDate } from "@bufbuild/protobuf/wkt";
|
|
8
8
|
import { wrapError } from "./gen/errors.js";
|
|
@@ -75,6 +75,31 @@ export class BillingClient {
|
|
|
75
75
|
throw wrapError(e);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Grant promotional credits to an organization, optionally expiring
|
|
80
|
+
* (use-it-or-lose-it).
|
|
81
|
+
*
|
|
82
|
+
* The grant burns before adjustment and purchased credits. When
|
|
83
|
+
* `expiresAt` is set, any remainder unconsumed at that time is removed
|
|
84
|
+
* from the balance by the platform's grant-expiry sweep. Idempotent:
|
|
85
|
+
* replaying an applied idempotency key returns the original ledger entry,
|
|
86
|
+
* even after the expiry has passed. Requires `can_manage_billing` on
|
|
87
|
+
* the org.
|
|
88
|
+
*/
|
|
89
|
+
async grantCredits(params) {
|
|
90
|
+
try {
|
|
91
|
+
return await this.command.grantCredits(create(GrantCreditsInputSchema, {
|
|
92
|
+
orgId: params.orgId,
|
|
93
|
+
amountMicros: params.amountMicros,
|
|
94
|
+
reason: params.reason,
|
|
95
|
+
idempotencyKey: params.idempotencyKey,
|
|
96
|
+
...(params.expiresAt && { expiresAt: timestampFromDate(params.expiresAt) }),
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
throw wrapError(e);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
78
103
|
/** Retrieve paginated credit ledger entries with optional filters. */
|
|
79
104
|
async getCreditLedger(params) {
|
|
80
105
|
try {
|
package/billing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EACL,oCAAoC,EACpC,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,sCAAsC,EACtC,qCAAqC,EACrC,gCAAgC,EAChC,gCAAgC,EAChC,kCAAkC,EAClC,oCAAoC,EACpC,qCAAqC,EACrC,qCAAqC,EACrC,qCAAqC,EACrC,oCAAoC,GAQrC,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../src/billing.ts"],"names":[],"mappings":"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"}
|
package/errors.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConnectError } from "@connectrpc/connect";
|
|
2
|
-
export { StigmerError, type ErrorCode, wrapError, isNotFound, isUnauthenticated, isPermissionDenied, isRetryable, } from "./gen/errors.js";
|
|
2
|
+
export { StigmerError, type ErrorCode, wrapError, isNotFound, isUnauthenticated, isPermissionDenied, isRetryable, isUnimplemented, } from "./gen/errors.js";
|
|
3
3
|
/**
|
|
4
4
|
* Coarse-grained error categories derived from gRPC/Connect status codes.
|
|
5
5
|
* Each category maps to a distinct UX treatment:
|
package/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAQ,MAAM,qBAAqB,CAAC;AAKzD,OAAO,EACL,YAAY,EACZ,KAAK,SAAS,EACd,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAQ,MAAM,qBAAqB,CAAC;AAKzD,OAAO,EACL,YAAY,EACZ,KAAK,SAAS,EACd,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,GACb,WAAW,GACX,SAAS,CAAC;AAmCd;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAQ3D;AAOD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG9D;AAiED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAOxE;AA0CD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAejE;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,gBAAgB,GACzB,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAK3E"}
|
package/errors.js
CHANGED
|
@@ -2,7 +2,7 @@ import { ConnectError, Code } from "@connectrpc/connect";
|
|
|
2
2
|
import { ErrorInfoSchema } from "@stigmer/protos/google/rpc/error_details_pb";
|
|
3
3
|
import { StigmerError } from "./gen/errors.js";
|
|
4
4
|
// Re-export generated error types
|
|
5
|
-
export { StigmerError, wrapError, isNotFound, isUnauthenticated, isPermissionDenied, isRetryable, } from "./gen/errors.js";
|
|
5
|
+
export { StigmerError, wrapError, isNotFound, isUnauthenticated, isPermissionDenied, isRetryable, isUnimplemented, } from "./gen/errors.js";
|
|
6
6
|
const CONNECT_CODE_TO_CATEGORY = {
|
|
7
7
|
[Code.Unauthenticated]: "auth",
|
|
8
8
|
[Code.PermissionDenied]: "permission",
|
package/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AAE/D,kCAAkC;AAClC,OAAO,EACL,YAAY,EAEZ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Validates the tool-view layer against the shared cross-
|
|
2
|
-
// test/fixtures/tool-view/. The
|
|
3
|
-
//
|
|
1
|
+
// Validates the tool-view layer against the shared cross-surface contract in
|
|
2
|
+
// test/fixtures/tool-view/. The runner's middleware tests assert the same
|
|
3
|
+
// fixtures from the writer side, so producers and this reader cannot drift in
|
|
4
|
+
// classification, result interpretation, or intent extraction.
|
|
4
5
|
import { readFileSync } from "node:fs";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
import { dirname, resolve } from "node:path";
|
|
@@ -8,7 +9,7 @@ import { describe, it, expect } from "vitest";
|
|
|
8
9
|
import { create } from "@bufbuild/protobuf";
|
|
9
10
|
import { ToolCallSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
10
11
|
import { ToolCallStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
11
|
-
import { ToolKind, resolveToolKindByName, normalizeToolResult } from "../tool-view";
|
|
12
|
+
import { ToolKind, resolveToolKindByName, normalizeToolResult, extractShellIntent, SHELL_INTENT_ARG_FIELD, } from "../tool-view";
|
|
12
13
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
13
14
|
// sdk/typescript/src/execution/__tests__ -> repo root is five levels up.
|
|
14
15
|
const fixtureDir = resolve(here, "../../../../../test/fixtures/tool-view");
|
|
@@ -79,6 +80,24 @@ describe("result-view fixtures", () => {
|
|
|
79
80
|
});
|
|
80
81
|
}
|
|
81
82
|
});
|
|
83
|
+
describe("intent-title fixtures", () => {
|
|
84
|
+
const fixture = loadFixture("intent-title.json");
|
|
85
|
+
it("loads the fixture and agrees on the wire key", () => {
|
|
86
|
+
expect(fixture.cases.length).toBeGreaterThan(0);
|
|
87
|
+
expect(SHELL_INTENT_ARG_FIELD).toBe(fixture.argField);
|
|
88
|
+
});
|
|
89
|
+
for (const c of fixture.cases) {
|
|
90
|
+
it(`extracts ${c.name}${c.mcpServerSlug ? ` @${c.mcpServerSlug}` : ""} -> ${JSON.stringify(c.intent)}`, () => {
|
|
91
|
+
const toolCall = create(ToolCallSchema, {
|
|
92
|
+
id: c.name,
|
|
93
|
+
name: c.name,
|
|
94
|
+
mcpServerSlug: c.mcpServerSlug,
|
|
95
|
+
args: c.args,
|
|
96
|
+
});
|
|
97
|
+
expect(extractShellIntent(toolCall)).toBe(c.intent);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
});
|
|
82
101
|
describe("resolveToolKind wire field precedence", () => {
|
|
83
102
|
it("prefers the wire tool_kind over the name fallback", () => {
|
|
84
103
|
const toolCall = create(ToolCallSchema, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-view.fixtures.test.js","sourceRoot":"","sources":["../../../src/execution/__tests__/tool-view.fixtures.test.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"tool-view.fixtures.test.js","sourceRoot":"","sources":["../../../src/execution/__tests__/tool-view.fixtures.test.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,+DAA+D;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAmB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAC9F,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,yEAAyE;AACzE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;AAE3E,SAAS,WAAW,CAAI,IAAY;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAM,CAAC;AAC1E,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAE1B,qBAAqB,CAAC,CAAC;IAE1B,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAA0B,CAAC,CAAC;QAC1F,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE;YAC3F,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAqBpC,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAA0B,mBAAmB,CAAC,CAAC;IAE5E,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GACV,CAAC,CAAC,MAAM,KAAK,kBAAkB;gBAC7B,CAAC,CAAC,cAAc,CAAC,gBAAgB;gBACjC,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC;YAEzC,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE;gBACtC,EAAE,EAAE,CAAC,CAAC,IAAI;gBACV,IAAI,EAAE,CAAC,CAAC,QAAQ;gBAChB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;gBACpB,MAAM;gBACN,IAAI,EAAE,CAAC,CAAC,IAAkB;aAC3B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAExC,4DAA4D;YAC5D,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IAQrC,MAAM,OAAO,GAAG,WAAW,CACzB,mBAAmB,CACpB,CAAC;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9B,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;YAC3G,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE;gBACtC,EAAE,EAAE,CAAC,CAAC,IAAI;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,IAAI,EAAE,CAAC,CAAC,IAAkB;aAC3B,CAAC,CAAC;YACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE;YACtC,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,QAAQ,CAAC,KAAK;SACzB,CAAC,CAAC;QACH,2EAA2E;QAC3E,MAAM,IAAI,GAAG,mBAAmB,CAC9B,MAAM,CAAC,cAAc,EAAE;YACrB,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,QAAQ,CAAC,KAAK;YACxB,MAAM,EAAE,2BAA2B;YACnC,MAAM,EAAE,cAAc,CAAC,mBAAmB;SAC3C,CAAC,CACH,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,QAAQ,GAAG,mBAAmB,CAClC,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAC3G,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAAG,mBAAmB,CAClC,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,mBAAmB,EAAE,CAAC,CACzG,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/execution/tool-view.d.ts
CHANGED
|
@@ -91,6 +91,38 @@ export type ToolResultView = {
|
|
|
91
91
|
export declare function resolveToolKind(toolCall: Pick<ToolCall, "name" | "mcpServerSlug" | "toolKind">): ToolKind;
|
|
92
92
|
/** Name-based classification used as the legacy fallback for resolveToolKind. */
|
|
93
93
|
export declare function resolveToolKindByName(name: string, mcpServerSlug?: string): ToolKind;
|
|
94
|
+
/**
|
|
95
|
+
* The tool-call argument that carries a model-authored intent phrase for
|
|
96
|
+
* SHELL tools (stigmer#276) — a short human description of what the command
|
|
97
|
+
* does and why, rendered as the row title with the command as secondary text.
|
|
98
|
+
*
|
|
99
|
+
* Two writers populate it, converged on one wire key by design: the native
|
|
100
|
+
* harness's tool-intent middleware (`backend/services/runner/src/middleware/
|
|
101
|
+
* tool-intent.ts`, `INTENT_ARG`) extends the shell tool's bind-time schema
|
|
102
|
+
* with it, and the Cursor harness's built-in Shell tool carries it natively.
|
|
103
|
+
* The shared, machine-checked contract is
|
|
104
|
+
* `test/fixtures/tool-view/intent-title.json` — keep the writers and this
|
|
105
|
+
* reader in lockstep.
|
|
106
|
+
*/
|
|
107
|
+
export declare const SHELL_INTENT_ARG_FIELD = "description";
|
|
108
|
+
/**
|
|
109
|
+
* Args-level intent extraction: SHELL-kind-scoped on purpose, because
|
|
110
|
+
* `description` means other things on other tools (a task tool's description
|
|
111
|
+
* is the sub-agent subject, never a row title). Blank and non-string values
|
|
112
|
+
* degrade to null — callers fall back to their category label.
|
|
113
|
+
*
|
|
114
|
+
* The seam for surfaces that hold a pre-resolved kind and raw args instead of
|
|
115
|
+
* a full ToolCall: the CLI's headless snapshot projection and @stigmer/react's
|
|
116
|
+
* approval argsPreview path. Everything else should prefer
|
|
117
|
+
* {@link extractShellIntent}.
|
|
118
|
+
*/
|
|
119
|
+
export declare function shellIntentFromArgs(kind: ToolKind, args: Record<string, unknown> | undefined): string | null;
|
|
120
|
+
/**
|
|
121
|
+
* Extracts the model-authored intent phrase from a SHELL tool call, or null
|
|
122
|
+
* when absent (legacy executions, models that skipped the optional arg, and
|
|
123
|
+
* every non-shell kind). See {@link SHELL_INTENT_ARG_FIELD}.
|
|
124
|
+
*/
|
|
125
|
+
export declare function extractShellIntent(toolCall: Pick<ToolCall, "name" | "mcpServerSlug" | "toolKind" | "args">): string | null;
|
|
94
126
|
/**
|
|
95
127
|
* Normalizes a tool call into a typed ToolResultView for rendering.
|
|
96
128
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-view.d.ts","sourceRoot":"","sources":["../../src/execution/tool-view.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-view.d.ts","sourceRoot":"","sources":["../../src/execution/tool-view.ts"],"names":[],"mappings":"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"}
|
package/execution/tool-view.js
CHANGED
|
@@ -101,6 +101,51 @@ export function resolveToolKindByName(name, mcpServerSlug) {
|
|
|
101
101
|
}
|
|
102
102
|
return ToolKind.UNSPECIFIED;
|
|
103
103
|
}
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// Intent: extractShellIntent
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
/**
|
|
108
|
+
* The tool-call argument that carries a model-authored intent phrase for
|
|
109
|
+
* SHELL tools (stigmer#276) — a short human description of what the command
|
|
110
|
+
* does and why, rendered as the row title with the command as secondary text.
|
|
111
|
+
*
|
|
112
|
+
* Two writers populate it, converged on one wire key by design: the native
|
|
113
|
+
* harness's tool-intent middleware (`backend/services/runner/src/middleware/
|
|
114
|
+
* tool-intent.ts`, `INTENT_ARG`) extends the shell tool's bind-time schema
|
|
115
|
+
* with it, and the Cursor harness's built-in Shell tool carries it natively.
|
|
116
|
+
* The shared, machine-checked contract is
|
|
117
|
+
* `test/fixtures/tool-view/intent-title.json` — keep the writers and this
|
|
118
|
+
* reader in lockstep.
|
|
119
|
+
*/
|
|
120
|
+
export const SHELL_INTENT_ARG_FIELD = "description";
|
|
121
|
+
/**
|
|
122
|
+
* Args-level intent extraction: SHELL-kind-scoped on purpose, because
|
|
123
|
+
* `description` means other things on other tools (a task tool's description
|
|
124
|
+
* is the sub-agent subject, never a row title). Blank and non-string values
|
|
125
|
+
* degrade to null — callers fall back to their category label.
|
|
126
|
+
*
|
|
127
|
+
* The seam for surfaces that hold a pre-resolved kind and raw args instead of
|
|
128
|
+
* a full ToolCall: the CLI's headless snapshot projection and @stigmer/react's
|
|
129
|
+
* approval argsPreview path. Everything else should prefer
|
|
130
|
+
* {@link extractShellIntent}.
|
|
131
|
+
*/
|
|
132
|
+
export function shellIntentFromArgs(kind, args) {
|
|
133
|
+
if (kind !== ToolKind.SHELL || !args)
|
|
134
|
+
return null;
|
|
135
|
+
const value = args[SHELL_INTENT_ARG_FIELD];
|
|
136
|
+
if (typeof value !== "string")
|
|
137
|
+
return null;
|
|
138
|
+
const trimmed = value.trim();
|
|
139
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Extracts the model-authored intent phrase from a SHELL tool call, or null
|
|
143
|
+
* when absent (legacy executions, models that skipped the optional arg, and
|
|
144
|
+
* every non-shell kind). See {@link SHELL_INTENT_ARG_FIELD}.
|
|
145
|
+
*/
|
|
146
|
+
export function extractShellIntent(toolCall) {
|
|
147
|
+
return shellIntentFromArgs(resolveToolKind(toolCall), toolCall.args);
|
|
148
|
+
}
|
|
104
149
|
const PATH_FIELDS = ["path", "file_path", "file", "filename"];
|
|
105
150
|
const OLD_TEXT_FIELDS = ["old_string", "old_text", "oldText"];
|
|
106
151
|
const NEW_TEXT_FIELDS = ["new_string", "new_text", "newText", "replacement"];
|