ns-kiro-core 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks.d.ts +4 -0
- package/dist/blocks.js +4 -0
- package/dist/blocks.js.map +1 -1
- package/dist/cache-estimator.d.ts +11 -0
- package/dist/cache-estimator.js +61 -0
- package/dist/cache-estimator.js.map +1 -0
- package/dist/endpoints.d.ts +8 -0
- package/dist/endpoints.js +14 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +39 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-parser.d.ts +127 -26
- package/dist/event-parser.js +256 -48
- package/dist/event-parser.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/management.js +53 -3
- package/dist/management.js.map +1 -1
- package/dist/models.js +4 -1
- package/dist/models.js.map +1 -1
- package/dist/response-assembler.d.ts +29 -3
- package/dist/response-assembler.js +125 -37
- package/dist/response-assembler.js.map +1 -1
- package/dist/response-stream.d.ts +16 -1
- package/dist/response-stream.js +116 -17
- package/dist/response-stream.js.map +1 -1
- package/dist/stream.d.ts +7 -0
- package/dist/stream.js +249 -19
- package/dist/stream.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/usage-tracking.d.ts +34 -0
- package/dist/usage-tracking.js +88 -0
- package/dist/usage-tracking.js.map +1 -0
- package/package.json +4 -4
package/dist/event-parser.js
CHANGED
|
@@ -1,7 +1,81 @@
|
|
|
1
|
-
// ABOUTME: Kiro stream event type definitions and
|
|
2
|
-
// ABOUTME: Binary framing is handled by @smithy/core EventStreamMarshaller in stream.ts.
|
|
1
|
+
// ABOUTME: Kiro stream event type definitions and modeled-key-to-typed-event mapping.
|
|
2
|
+
// ABOUTME: Binary framing is handled by @smithy/core EventStreamMarshaller in response-stream.ts.
|
|
3
3
|
// Named `KiroWireEvent` to keep it distinct from `KiroStreamEvent`, which is what
|
|
4
4
|
// this package emits outward after parsing.
|
|
5
|
+
/**
|
|
6
|
+
* Members of the `ChatResponseStream` tagged union emitted by
|
|
7
|
+
* `generateAssistantResponse` on `runtime.{region}.kiro.dev`.
|
|
8
|
+
*
|
|
9
|
+
* Source of truth: the generated Smithy client for the same service
|
|
10
|
+
* (`@amzn/kiro-runtime-service-typescript-client`, `ChatResponseStream`).
|
|
11
|
+
* The frame's `:event-type` header carries one of these keys, so routing is a
|
|
12
|
+
* switch on the key rather than a guess based on which fields happen to be set.
|
|
13
|
+
*/
|
|
14
|
+
export const KIRO_EVENT_KEYS = [
|
|
15
|
+
"assistantResponseEvent",
|
|
16
|
+
"codeReferenceEvent",
|
|
17
|
+
"contextUsageEvent",
|
|
18
|
+
"documentCitationEvent",
|
|
19
|
+
"error",
|
|
20
|
+
"metadataEvent",
|
|
21
|
+
"meteringEvent",
|
|
22
|
+
"reasoningContentEvent",
|
|
23
|
+
"serviceUnavailableError",
|
|
24
|
+
"throttlingError",
|
|
25
|
+
"toolResultEvent",
|
|
26
|
+
"toolUseEvent",
|
|
27
|
+
"validationError",
|
|
28
|
+
];
|
|
29
|
+
const KIRO_EVENT_KEY_SET = new Set(KIRO_EVENT_KEYS);
|
|
30
|
+
export function isKiroEventKey(key) {
|
|
31
|
+
return KIRO_EVENT_KEY_SET.has(key);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The four error members of `ChatResponseStream` target `@error` shapes, so the
|
|
35
|
+
* service frames them as `:message-type: exception` with the union member name
|
|
36
|
+
* in `:exception-type` — not as ordinary `event` frames. Mapping the member to
|
|
37
|
+
* its exception class here keeps both framings on one table.
|
|
38
|
+
*/
|
|
39
|
+
export const KIRO_ERROR_MEMBERS = {
|
|
40
|
+
error: { kind: "internalServer", exception: "InternalServerException" },
|
|
41
|
+
throttlingError: { kind: "throttling", exception: "ThrottlingException" },
|
|
42
|
+
validationError: { kind: "validation", exception: "ValidationException" },
|
|
43
|
+
serviceUnavailableError: { kind: "serviceUnavailable", exception: "ServiceUnavailableException" },
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* The token the service puts in `:exception-type` is not guaranteed to be the
|
|
47
|
+
* union member name. The hand-written event-stream bridge in the generated
|
|
48
|
+
* client for THIS service (`sse-middleware.ts`, `buildStreamException`) accepts
|
|
49
|
+
* either form for every one of the four members — `throttlingError` OR
|
|
50
|
+
* `ThrottlingException` — and does so on both its exception-frame and its
|
|
51
|
+
* defensive event-frame path. That is the same service, so both tokens are
|
|
52
|
+
* observed vocabulary, not speculation.
|
|
53
|
+
*
|
|
54
|
+
* Keyed separately from `KIRO_EVENT_MEMBERS` because a class name is NOT a
|
|
55
|
+
* `ChatResponseStream` member: `KIRO_EVENT_KEYS` stays the union's enumeration
|
|
56
|
+
* and keeps guarding fixture encoding.
|
|
57
|
+
*/
|
|
58
|
+
const KIRO_ERROR_TOKENS = {
|
|
59
|
+
...KIRO_ERROR_MEMBERS,
|
|
60
|
+
InternalServerException: KIRO_ERROR_MEMBERS.error,
|
|
61
|
+
ThrottlingException: KIRO_ERROR_MEMBERS.throttlingError,
|
|
62
|
+
ValidationException: KIRO_ERROR_MEMBERS.validationError,
|
|
63
|
+
ServiceUnavailableException: KIRO_ERROR_MEMBERS.serviceUnavailableError,
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Look up an error member by a token the SERVICE chose.
|
|
67
|
+
*
|
|
68
|
+
* `KIRO_ERROR_TOKENS` is an ordinary object literal, so a bare index would
|
|
69
|
+
* also resolve inherited `Object.prototype` members: an `:exception-type` of
|
|
70
|
+
* `toString` or `constructor` returns a truthy value whose `kind` and
|
|
71
|
+
* `exception` are both undefined, silently discarding the member name this
|
|
72
|
+
* routing exists to preserve. Only own properties count as modeled members.
|
|
73
|
+
*/
|
|
74
|
+
export function lookupKiroErrorMember(key) {
|
|
75
|
+
return Object.hasOwn(KIRO_ERROR_TOKENS, key) ? KIRO_ERROR_TOKENS[key] : undefined;
|
|
76
|
+
}
|
|
77
|
+
const num = (v) => (typeof v === "number" ? v : undefined);
|
|
78
|
+
const str = (v) => (typeof v === "string" ? v : undefined);
|
|
5
79
|
/** Accept only a finite, non-negative count; anything else is treated as absent. */
|
|
6
80
|
function tokenCount(value) {
|
|
7
81
|
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
|
|
@@ -14,6 +88,10 @@ function firstTokenCount(source, keys) {
|
|
|
14
88
|
}
|
|
15
89
|
return undefined;
|
|
16
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Cache counters are read in every spelling the underlying services have been
|
|
93
|
+
* seen to use — Kiro itself has not been observed to report any of them.
|
|
94
|
+
*/
|
|
17
95
|
const CACHE_READ_KEYS = ["cacheReadInputTokens", "cache_read_input_tokens", "cacheReadTokens"];
|
|
18
96
|
const CACHE_WRITE_KEYS = [
|
|
19
97
|
"cacheWriteInputTokens",
|
|
@@ -21,36 +99,186 @@ const CACHE_WRITE_KEYS = [
|
|
|
21
99
|
"cacheCreationInputTokens",
|
|
22
100
|
"cacheWriteTokens",
|
|
23
101
|
];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
102
|
+
/** Serialize a toolUse `input` field, collapsing the empty-object placeholder to "". */
|
|
103
|
+
function toolInput(raw) {
|
|
104
|
+
if (typeof raw === "string")
|
|
105
|
+
return raw;
|
|
106
|
+
if (raw && typeof raw === "object" && Object.keys(raw).length > 0) {
|
|
107
|
+
return JSON.stringify(raw);
|
|
108
|
+
}
|
|
109
|
+
return "";
|
|
110
|
+
}
|
|
111
|
+
function parseToolUse(parsed) {
|
|
112
|
+
// Kiro splits one logical tool call across frames: the first carries
|
|
113
|
+
// name+toolUseId, continuations carry only `input`, the last only `stop`.
|
|
31
114
|
if (parsed.name && parsed.toolUseId) {
|
|
32
|
-
const input = typeof parsed.input === "string"
|
|
33
|
-
? parsed.input
|
|
34
|
-
: parsed.input &&
|
|
35
|
-
typeof parsed.input === "object" &&
|
|
36
|
-
Object.keys(parsed.input).length > 0
|
|
37
|
-
? JSON.stringify(parsed.input)
|
|
38
|
-
: "";
|
|
39
115
|
return {
|
|
40
116
|
type: "toolUse",
|
|
41
117
|
data: {
|
|
42
118
|
name: parsed.name,
|
|
43
119
|
toolUseId: parsed.toolUseId,
|
|
44
|
-
input,
|
|
120
|
+
input: toolInput(parsed.input),
|
|
45
121
|
stop: parsed.stop,
|
|
46
122
|
},
|
|
47
123
|
};
|
|
48
124
|
}
|
|
125
|
+
if (parsed.input !== undefined) {
|
|
126
|
+
return { type: "toolUseInput", data: { input: toolInput(parsed.input) } };
|
|
127
|
+
}
|
|
128
|
+
if (parsed.stop !== undefined)
|
|
129
|
+
return { type: "toolUseStop", data: { stop: parsed.stop } };
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
function parseMetadata(parsed) {
|
|
133
|
+
const tu = (parsed.tokenUsage ?? {});
|
|
134
|
+
const data = {
|
|
135
|
+
inputTokens: tokenCount(tu.uncachedInputTokens) ?? tokenCount(tu.inputTokens),
|
|
136
|
+
outputTokens: tokenCount(tu.outputTokens),
|
|
137
|
+
totalTokens: tokenCount(tu.totalTokens),
|
|
138
|
+
cacheReadInputTokens: firstTokenCount(tu, CACHE_READ_KEYS),
|
|
139
|
+
cacheWriteInputTokens: firstTokenCount(tu, CACHE_WRITE_KEYS),
|
|
140
|
+
contextUsagePercentage: num(tu.contextUsagePercentage),
|
|
141
|
+
normalizedTokenUsage: num(tu.normalizedTokenUsage),
|
|
142
|
+
rawStopReason: str(parsed.stopReason),
|
|
143
|
+
stopDetails: parsed.stopDetails && typeof parsed.stopDetails === "object"
|
|
144
|
+
? parsed.stopDetails
|
|
145
|
+
: undefined,
|
|
146
|
+
};
|
|
147
|
+
for (const k of Object.keys(data)) {
|
|
148
|
+
if (data[k] === undefined)
|
|
149
|
+
delete data[k];
|
|
150
|
+
}
|
|
151
|
+
return Object.keys(data).length > 0 ? { type: "usage", data } : null;
|
|
152
|
+
}
|
|
153
|
+
function parseError(parsed, kind, fallbackName) {
|
|
154
|
+
// Modeled exceptions carry {message, reason?, retryAfterMilliseconds?}; older
|
|
155
|
+
// free-form frames carry {error, message}. Accept both.
|
|
156
|
+
const rawError = parsed.error ?? parsed.Error;
|
|
157
|
+
const error = typeof rawError === "string"
|
|
158
|
+
? rawError
|
|
159
|
+
: rawError !== undefined
|
|
160
|
+
? JSON.stringify(rawError)
|
|
161
|
+
: (str(parsed.name) ?? fallbackName);
|
|
162
|
+
const message = (parsed.message ?? parsed.Message ?? parsed.reason);
|
|
163
|
+
const data = { error, kind };
|
|
164
|
+
if (typeof message === "string")
|
|
165
|
+
data.message = message;
|
|
166
|
+
const reason = str(parsed.reason);
|
|
167
|
+
if (reason !== undefined)
|
|
168
|
+
data.reason = reason;
|
|
169
|
+
const retryAfterMilliseconds = num(parsed.retryAfterMilliseconds);
|
|
170
|
+
if (retryAfterMilliseconds !== undefined)
|
|
171
|
+
data.retryAfterMilliseconds = retryAfterMilliseconds;
|
|
172
|
+
return { type: "error", data };
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Route a decoded stream frame by its modeled `:event-type` key.
|
|
176
|
+
*
|
|
177
|
+
* `key` is the `ChatResponseStream` union member name from the frame header.
|
|
178
|
+
* An unrecognized key falls back to {@link parseKiroEventByShape} so a member
|
|
179
|
+
* added server-side degrades instead of breaking the stream.
|
|
180
|
+
*
|
|
181
|
+
* Note: a frame whose `:event-type` is the literal `$unknown` never reaches
|
|
182
|
+
* here. The Smithy marshaller drops any event frame for which the deserializer
|
|
183
|
+
* returns a `$unknown` property, and the deserializer keys its result by the
|
|
184
|
+
* header value, so `$unknown` is discarded one layer up. The fallback below is
|
|
185
|
+
* therefore reached only by a real, unrecognized member name.
|
|
186
|
+
*/
|
|
187
|
+
export function parseKiroEvent(key, parsed) {
|
|
188
|
+
switch (key) {
|
|
189
|
+
case "assistantResponseEvent": {
|
|
190
|
+
const content = str(parsed.content);
|
|
191
|
+
return content !== undefined ? { type: "content", data: content } : null;
|
|
192
|
+
}
|
|
193
|
+
case "reasoningContentEvent": {
|
|
194
|
+
// ReasoningContentEvent = {text?, redactedContent?, signature?}
|
|
195
|
+
const text = str(parsed.text);
|
|
196
|
+
if (text !== undefined)
|
|
197
|
+
return { type: "thinkingText", data: text };
|
|
198
|
+
const signature = str(parsed.signature);
|
|
199
|
+
if (signature !== undefined)
|
|
200
|
+
return { type: "thinkingSignature", data: signature };
|
|
201
|
+
return { type: "ignored", data: { key } };
|
|
202
|
+
}
|
|
203
|
+
case "toolUseEvent":
|
|
204
|
+
return parseToolUse(parsed);
|
|
205
|
+
case "contextUsageEvent": {
|
|
206
|
+
const pct = num(parsed.contextUsagePercentage);
|
|
207
|
+
return pct !== undefined ? { type: "contextUsage", data: { contextUsagePercentage: pct } } : null;
|
|
208
|
+
}
|
|
209
|
+
case "metadataEvent":
|
|
210
|
+
return parseMetadata(parsed);
|
|
211
|
+
case "meteringEvent":
|
|
212
|
+
// MeteringEvent.usage is a NUMBER of credits — never token counts.
|
|
213
|
+
return {
|
|
214
|
+
type: "metering",
|
|
215
|
+
data: { credits: tokenCount(parsed.usage), unit: str(parsed.unit), unitPlural: str(parsed.unitPlural) },
|
|
216
|
+
};
|
|
217
|
+
// Reachable when a member that models an exception is delivered as an
|
|
218
|
+
// ordinary event frame. The real wire uses exception framing, handled by
|
|
219
|
+
// parseKiroExceptionFrame, but both routes must agree.
|
|
220
|
+
case "error":
|
|
221
|
+
case "throttlingError":
|
|
222
|
+
case "validationError":
|
|
223
|
+
case "serviceUnavailableError": {
|
|
224
|
+
// Literal case labels, so the own-property lookup always resolves.
|
|
225
|
+
const member = lookupKiroErrorMember(key);
|
|
226
|
+
return parseError(parsed, member.kind, member.exception);
|
|
227
|
+
}
|
|
228
|
+
// Known members with no consumer yet: explicitly ignored, not unparseable.
|
|
229
|
+
case "codeReferenceEvent":
|
|
230
|
+
case "documentCitationEvent":
|
|
231
|
+
case "toolResultEvent":
|
|
232
|
+
return { type: "ignored", data: { key } };
|
|
233
|
+
default: {
|
|
234
|
+
// An error member delivered under its exception CLASS name rather than its
|
|
235
|
+
// union member name (see KIRO_ERROR_TOKENS). Classify before shape
|
|
236
|
+
// sniffing: an exception payload is `{message, reason?}`, which the
|
|
237
|
+
// fallback ladder matches on nothing and drops — losing the class exactly
|
|
238
|
+
// the way the old field ladder did.
|
|
239
|
+
const member = lookupKiroErrorMember(key);
|
|
240
|
+
if (member)
|
|
241
|
+
return parseError(parsed, member.kind, member.exception);
|
|
242
|
+
return parseKiroEventByShape(parsed);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Route an `:message-type: exception` frame by its `:exception-type` token.
|
|
248
|
+
*
|
|
249
|
+
* The Smithy marshaller throws whatever the deserializer returns for that key,
|
|
250
|
+
* so this is the only place the modeled exception class, `reason`, and
|
|
251
|
+
* `retryAfterMilliseconds` are still structured. Accepts either token form the
|
|
252
|
+
* service uses (union member name or exception class name). Returns `null` for
|
|
253
|
+
* a token that is not one of the four modeled errors; the caller is responsible
|
|
254
|
+
* for still preserving that name (see `response-stream.ts`), because Smithy's
|
|
255
|
+
* own raw-body fallback only fires for a `$unknown` result this deserializer
|
|
256
|
+
* never produces.
|
|
257
|
+
*/
|
|
258
|
+
export function parseKiroExceptionFrame(key, parsed) {
|
|
259
|
+
const member = lookupKiroErrorMember(key);
|
|
260
|
+
if (!member)
|
|
261
|
+
return null;
|
|
262
|
+
const event = parseError(parsed, member.kind, member.exception);
|
|
263
|
+
return event.data;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Fail-open fallback for frames carrying an unrecognized `:event-type`.
|
|
267
|
+
*
|
|
268
|
+
* Order-dependent field sniffing. Only reachable when the frame's key is not a
|
|
269
|
+
* known `ChatResponseStream` member; modeled frames never reach here.
|
|
270
|
+
*/
|
|
271
|
+
export function parseKiroEventByShape(parsed) {
|
|
272
|
+
if (parsed.content !== undefined)
|
|
273
|
+
return { type: "content", data: parsed.content };
|
|
274
|
+
if (typeof parsed.text === "string")
|
|
275
|
+
return { type: "thinkingText", data: parsed.text };
|
|
276
|
+
if (typeof parsed.signature === "string")
|
|
277
|
+
return { type: "thinkingSignature", data: parsed.signature };
|
|
278
|
+
if (parsed.name && parsed.toolUseId)
|
|
279
|
+
return parseToolUse(parsed);
|
|
49
280
|
if (parsed.input !== undefined && !parsed.name) {
|
|
50
|
-
return {
|
|
51
|
-
type: "toolUseInput",
|
|
52
|
-
data: { input: typeof parsed.input === "string" ? parsed.input : JSON.stringify(parsed.input) },
|
|
53
|
-
};
|
|
281
|
+
return { type: "toolUseInput", data: { input: toolInput(parsed.input) } };
|
|
54
282
|
}
|
|
55
283
|
if (parsed.stop !== undefined && parsed.contextUsagePercentage === undefined)
|
|
56
284
|
return { type: "toolUseStop", data: { stop: parsed.stop } };
|
|
@@ -58,36 +286,16 @@ export function parseKiroEvent(parsed) {
|
|
|
58
286
|
return { type: "contextUsage", data: { contextUsagePercentage: parsed.contextUsagePercentage } };
|
|
59
287
|
if (parsed.followupPrompt !== undefined)
|
|
60
288
|
return { type: "followupPrompt", data: parsed.followupPrompt };
|
|
289
|
+
if (parsed.tokenUsage !== undefined || parsed.stopReason !== undefined || parsed.stopDetails !== undefined) {
|
|
290
|
+
return parseMetadata(parsed);
|
|
291
|
+
}
|
|
61
292
|
if (parsed.error !== undefined || parsed.Error !== undefined) {
|
|
62
|
-
|
|
63
|
-
const message = (parsed.message || parsed.Message || parsed.reason);
|
|
64
|
-
return { type: "error", data: { error: typeof error === "string" ? error : JSON.stringify(error), message } };
|
|
293
|
+
return parseError(parsed, "unknown", "unknown");
|
|
65
294
|
}
|
|
66
|
-
if (parsed.usage
|
|
67
|
-
// The billing form: `usage` is the amount itself, with the unit alongside it.
|
|
68
|
-
if (typeof parsed.usage === "number") {
|
|
69
|
-
const credits = tokenCount(parsed.usage);
|
|
70
|
-
if (credits === undefined)
|
|
71
|
-
return null;
|
|
72
|
-
return {
|
|
73
|
-
type: "usage",
|
|
74
|
-
data: {
|
|
75
|
-
credits,
|
|
76
|
-
...(typeof parsed.unit === "string" && parsed.unit ? { creditUnit: parsed.unit } : {}),
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
const u = parsed.usage;
|
|
81
|
-
const cacheReadTokens = firstTokenCount(u, CACHE_READ_KEYS);
|
|
82
|
-
const cacheWriteTokens = firstTokenCount(u, CACHE_WRITE_KEYS);
|
|
295
|
+
if (typeof parsed.usage === "number") {
|
|
83
296
|
return {
|
|
84
|
-
type: "
|
|
85
|
-
data: {
|
|
86
|
-
inputTokens: tokenCount(u.inputTokens),
|
|
87
|
-
outputTokens: tokenCount(u.outputTokens),
|
|
88
|
-
...(cacheReadTokens !== undefined ? { cacheReadTokens } : {}),
|
|
89
|
-
...(cacheWriteTokens !== undefined ? { cacheWriteTokens } : {}),
|
|
90
|
-
},
|
|
297
|
+
type: "metering",
|
|
298
|
+
data: { credits: tokenCount(parsed.usage), unit: str(parsed.unit), unitPlural: str(parsed.unitPlural) },
|
|
91
299
|
};
|
|
92
300
|
}
|
|
93
301
|
return null;
|
package/dist/event-parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-parser.js","sourceRoot":"","sources":["../src/event-parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"event-parser.js","sourceRoot":"","sources":["../src/event-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { KiroBlockBuffer } from "./blocks.js";
|
|
2
2
|
export { parseBracketToolCalls } from "./bracket-tool-parser.js";
|
|
3
|
+
export { applyCacheEstimate, resetCacheEstimatorForTests } from "./cache-estimator.js";
|
|
3
4
|
export { calculateKiroCost } from "./cost.js";
|
|
4
5
|
export { debugEnabled, debugLog, formatSafeError, redactSensitiveText } from "./debug.js";
|
|
5
6
|
export { buildKiroAdditionalModelRequestFields, clampKiroEffort, deriveKiroEffort, fallbackKiroEffort, getKiroEffortConfig, type KiroAdditionalModelRequestFields, type KiroEffortConfig, type KiroEffortField, mapEffortToKiroValue, } from "./effort.js";
|
|
6
|
-
export { getKiroEndpoints, getKiroRegionFromEndpoint, type KiroEndpoints, resolveApiRegion, } from "./endpoints.js";
|
|
7
|
-
export {
|
|
7
|
+
export { getKiroEndpoints, getKiroRegionFromEndpoint, getKiroRegionFromProfileArn, type KiroEndpoints, resolveApiRegion, } from "./endpoints.js";
|
|
8
|
+
export { extractKiroReasonCode, KiroApiError, type KiroProviderAttempts, parseRetryAfterMs, } from "./errors.js";
|
|
9
|
+
export { isKiroEventKey, KIRO_ERROR_MEMBERS, KIRO_EVENT_KEYS, type KiroErrorData, type KiroErrorKind, type KiroEventKey, type KiroWireEvent, type KiroWireUsage, lookupKiroErrorMember, parseKiroEvent, parseKiroEventByShape, parseKiroExceptionFrame, } from "./event-parser.js";
|
|
8
10
|
export { isKiroToolStructureRule, KIRO_TOOL_STRUCTURE_RULES, KIRO_VALIDATION_MESSAGES, type KiroRepairResult, type KiroToolStructureRule, type KiroValidationError, type KiroValidationResult, KiroValidationRule, kiroConversationEntries, repairKiroConversation, SYNTHETIC_FAILED_TOOL_RESULT_TEXT, validateKiroConversation, validateKiroToolStructure, } from "./history-validator.js";
|
|
9
11
|
export { parseInvokeToolCalls } from "./invoke-tool-parser.js";
|
|
10
12
|
export { getKiroCliCredentials, getKiroCliCredentialsAllowExpired, getKiroCliDbPath, getKiroCliModelRates, getKiroCliSocialToken, getKiroCliSocialTokenAllowExpired, type KiroModelRate, refreshViaKiroCli, saveKiroCliCredentials, } from "./kiro-cli.js";
|
|
@@ -24,3 +26,4 @@ export { abortableDelay, createResponseHeaderDeadline, logCapacityEvent, type Re
|
|
|
24
26
|
export { TRUNCATION_NOTICE, wasPreviousResponseTruncated } from "./truncation.js";
|
|
25
27
|
export * from "./types.js";
|
|
26
28
|
export { fetchKiroUsage, type KiroProviderUsage, type KiroProviderUsageBucket } from "./usage.js";
|
|
29
|
+
export { DEFAULT_ESTIMATED_CACHE_TIMEOUT_MS, DEFAULT_USD_PER_CREDIT, estimateKiroCreditCost, KIRO_USAGE_TRACKING_DISABLED, type KiroUsageTracking, resolveKiroUsageTracking, } from "./usage-tracking.js";
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Public surface of the host-neutral Kiro core.
|
|
2
2
|
export { KiroBlockBuffer } from "./blocks.js";
|
|
3
3
|
export { parseBracketToolCalls } from "./bracket-tool-parser.js";
|
|
4
|
+
export { applyCacheEstimate, resetCacheEstimatorForTests } from "./cache-estimator.js";
|
|
4
5
|
export { calculateKiroCost } from "./cost.js";
|
|
5
6
|
export { debugEnabled, debugLog, formatSafeError, redactSensitiveText } from "./debug.js";
|
|
6
7
|
export { buildKiroAdditionalModelRequestFields, clampKiroEffort, deriveKiroEffort, fallbackKiroEffort, getKiroEffortConfig, mapEffortToKiroValue, } from "./effort.js";
|
|
7
|
-
export { getKiroEndpoints, getKiroRegionFromEndpoint, resolveApiRegion, } from "./endpoints.js";
|
|
8
|
-
export {
|
|
8
|
+
export { getKiroEndpoints, getKiroRegionFromEndpoint, getKiroRegionFromProfileArn, resolveApiRegion, } from "./endpoints.js";
|
|
9
|
+
export { extractKiroReasonCode, KiroApiError, parseRetryAfterMs, } from "./errors.js";
|
|
10
|
+
export { isKiroEventKey, KIRO_ERROR_MEMBERS, KIRO_EVENT_KEYS, lookupKiroErrorMember, parseKiroEvent, parseKiroEventByShape, parseKiroExceptionFrame, } from "./event-parser.js";
|
|
9
11
|
export { isKiroToolStructureRule, KIRO_TOOL_STRUCTURE_RULES, KIRO_VALIDATION_MESSAGES, KiroValidationRule, kiroConversationEntries, repairKiroConversation, SYNTHETIC_FAILED_TOOL_RESULT_TEXT, validateKiroConversation, validateKiroToolStructure, } from "./history-validator.js";
|
|
10
12
|
export { parseInvokeToolCalls } from "./invoke-tool-parser.js";
|
|
11
13
|
export { getKiroCliCredentials, getKiroCliCredentialsAllowExpired, getKiroCliDbPath, getKiroCliModelRates, getKiroCliSocialToken, getKiroCliSocialTokenAllowExpired, refreshViaKiroCli, saveKiroCliCredentials, } from "./kiro-cli.js";
|
|
@@ -32,4 +34,5 @@ export { abortableDelay, createResponseHeaderDeadline, logCapacityEvent, } from
|
|
|
32
34
|
export { TRUNCATION_NOTICE, wasPreviousResponseTruncated } from "./truncation.js";
|
|
33
35
|
export * from "./types.js";
|
|
34
36
|
export { fetchKiroUsage } from "./usage.js";
|
|
37
|
+
export { DEFAULT_ESTIMATED_CACHE_TIMEOUT_MS, DEFAULT_USD_PER_CREDIT, estimateKiroCreditCost, KIRO_USAGE_TRACKING_DISABLED, resolveKiroUsageTracking, } from "./usage-tracking.js";
|
|
35
38
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EACL,qCAAqC,EACrC,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EAInB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/management.js
CHANGED
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
import { debugLog, redactSensitiveText } from "./debug.js";
|
|
5
5
|
import { getKiroEndpoints } from "./endpoints.js";
|
|
6
|
-
import { kiroAuthHeaders } from "./oauth.js";
|
|
6
|
+
import { isApiKey, kiroAuthHeaders, kiroUserAgent } from "./oauth.js";
|
|
7
7
|
import { kiroTokenTypeHeaders } from "./token-type.js";
|
|
8
8
|
const LIST_PROFILES_PATH = "List-Available-Profiles";
|
|
9
9
|
const LIST_MODELS_PATH = "List-Available-Models";
|
|
10
|
+
const GET_PROFILE_TARGET = "AmazonCodeWhispererService.GetProfile";
|
|
11
|
+
/**
|
|
12
|
+
* Region Kiro issues API keys against. `ListAvailableProfiles` answers 403
|
|
13
|
+
* "Unsupported token type" for a `ksk_` key in every region, so an API key's
|
|
14
|
+
* profile — and therefore its model catalog — is only reachable here.
|
|
15
|
+
*/
|
|
16
|
+
const API_KEY_REGION = "us-east-1";
|
|
10
17
|
const profileArnCache = new Map();
|
|
11
18
|
const pendingProfileRequests = new Map();
|
|
12
19
|
/**
|
|
@@ -83,6 +90,36 @@ function profileCacheKey(auth) {
|
|
|
83
90
|
const tokenHash = createHash("sha256").update(auth.accessToken).digest("base64url");
|
|
84
91
|
return `${auth.region}:${tokenHash}`;
|
|
85
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Resolve an API key's own profile through GetProfile, the same RPC the API-key
|
|
95
|
+
* login flow uses. This is the only profile-discovery call a `ksk_` key can
|
|
96
|
+
* make: the REST-style ListAvailableProfiles path rejects the key outright.
|
|
97
|
+
*/
|
|
98
|
+
async function getApiKeyProfileArn(accessToken) {
|
|
99
|
+
const operation = "GetProfile";
|
|
100
|
+
let response;
|
|
101
|
+
try {
|
|
102
|
+
response = await fetch(getKiroEndpoints(API_KEY_REGION).management, {
|
|
103
|
+
method: "POST",
|
|
104
|
+
headers: {
|
|
105
|
+
"Content-Type": "application/x-amz-json-1.0",
|
|
106
|
+
"X-Amz-Target": GET_PROFILE_TARGET,
|
|
107
|
+
...kiroAuthHeaders(accessToken),
|
|
108
|
+
...kiroUserAgent("codewhispererruntime", "F,C"),
|
|
109
|
+
},
|
|
110
|
+
body: "{}",
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
throw new Error(`Kiro management ${operation} request failed in ${API_KEY_REGION}`, { cause: error });
|
|
115
|
+
}
|
|
116
|
+
const parsed = await parseManagementResponse(response, operation, API_KEY_REGION);
|
|
117
|
+
const arn = parsed.profile?.arn;
|
|
118
|
+
if (!arn) {
|
|
119
|
+
throw new Error(`Kiro management ${operation} returned no profile in ${API_KEY_REGION}`);
|
|
120
|
+
}
|
|
121
|
+
return arn;
|
|
122
|
+
}
|
|
86
123
|
async function parseManagementResponse(response, operation, region) {
|
|
87
124
|
if (!response.ok) {
|
|
88
125
|
const statusText = response.statusText ? ` ${redactSensitiveText(response.statusText)}` : "";
|
|
@@ -127,6 +164,15 @@ export async function resolveKiroProfileArn(auth, providedArn) {
|
|
|
127
164
|
if (pending)
|
|
128
165
|
return pending;
|
|
129
166
|
const request = (async () => {
|
|
167
|
+
// A `ksk_` API key cannot use ListAvailableProfiles at all, so route it to
|
|
168
|
+
// GetProfile and pin the profile region to where API keys are issued.
|
|
169
|
+
if (isApiKey(auth.accessToken)) {
|
|
170
|
+
const arn = await getApiKeyProfileArn(auth.accessToken);
|
|
171
|
+
profileArnCache.set(key, arn);
|
|
172
|
+
profileRegionCache.set(key, API_KEY_REGION);
|
|
173
|
+
debugLog("profile.resolve", { source: "api-key", region: API_KEY_REGION, arn });
|
|
174
|
+
return arn;
|
|
175
|
+
}
|
|
130
176
|
// ListAvailableProfiles is regional to where the profile actually lives, not
|
|
131
177
|
// to the SSO-derived API region. Probe the primary region first, then the
|
|
132
178
|
// remaining canonical management regions, so a region-mismatched token still
|
|
@@ -192,8 +238,12 @@ export async function fetchKiroModelCatalog(auth, providedProfileArn) {
|
|
|
192
238
|
const profileArn = await resolveKiroProfileArn(auth, providedProfileArn);
|
|
193
239
|
// Route the models query to the region where the profile actually lives — it
|
|
194
240
|
// may differ from the SSO-derived region (#104), and ListAvailableModels is
|
|
195
|
-
// regional to the profile too, not to the login region.
|
|
196
|
-
|
|
241
|
+
// regional to the profile too, not to the login region. An API key's profile
|
|
242
|
+
// always lives in the key-issuing region, even when a pinned KIRO_PROFILE_ARN
|
|
243
|
+
// skipped discovery and left no cached region behind.
|
|
244
|
+
const region = isApiKey(auth.accessToken)
|
|
245
|
+
? API_KEY_REGION
|
|
246
|
+
: (profileRegionCache.get(profileCacheKey(auth)) ?? auth.region);
|
|
197
247
|
if (region !== auth.region) {
|
|
198
248
|
return listAvailableModels({ ...auth, region }, profileArn);
|
|
199
249
|
}
|
package/dist/management.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"management.js","sourceRoot":"","sources":["../src/management.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,kFAAkF;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"management.js","sourceRoot":"","sources":["../src/management.ts"],"names":[],"mappings":"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"}
|
package/dist/models.js
CHANGED
|
@@ -438,7 +438,10 @@ export function mapKiroCatalogModels(catalogModels, region, rates) {
|
|
|
438
438
|
return {
|
|
439
439
|
id,
|
|
440
440
|
kiroModelId,
|
|
441
|
-
|
|
441
|
+
// Humanize the wire id, not the local one: `toLocalModelId` rewrites
|
|
442
|
+
// `5.1` as `5-1`, and a display name derived from it loses the dot —
|
|
443
|
+
// "Claude Fable 5 1" instead of "Claude Fable 5.1".
|
|
444
|
+
name: catalogName ?? existing?.name ?? humanizeModelId(kiroModelId),
|
|
442
445
|
region,
|
|
443
446
|
// Deliberately schema-only: when a schema exists the resolver returns
|
|
444
447
|
// `deriveKiroEffort(schema)`, and when it does not the family-marker guess
|