ns-kiro-core 0.2.3 → 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/stream.js CHANGED
@@ -1,8 +1,11 @@
1
1
  // ABOUTME: Core streaming integration for Kiro API requests and responses.
2
2
  // ABOUTME: Handles request building, retry logic, event parsing, and token counting.
3
- import { debugLog, formatSafeError, redactSensitiveText } from "./debug.js";
3
+ import { createHash } from "node:crypto";
4
+ import { applyCacheEstimate } from "./cache-estimator.js";
5
+ import { debugEnabled, debugLog, formatSafeError, redactSensitiveText } from "./debug.js";
4
6
  import { buildKiroAdditionalModelRequestFields, clampKiroEffort, getKiroEffortConfig } from "./effort.js";
5
- import { getKiroEndpoints } from "./endpoints.js";
7
+ import { getKiroEndpoints, getKiroRegionFromProfileArn } from "./endpoints.js";
8
+ import { extractKiroReasonCode, KiroApiError, parseRetryAfterMs } from "./errors.js";
6
9
  import { getKiroCliCredentials, getKiroCliCredentialsAllowExpired, refreshViaKiroCli } from "./kiro-cli.js";
7
10
  import { invalidateKiroProfileArn, KiroManagementHttpError, resetKiroProfileArnCache, resolveKiroProfileArn, } from "./management.js";
8
11
  import { isCacheStale, resolveKiroModel, updateKiroModelsCache } from "./models.js";
@@ -13,6 +16,116 @@ import { readKiroEventStream } from "./response-stream.js";
13
16
  import { capacityRetryConfig, exponentialBackoff, extractKiroReason, firstTokenTimeoutForModel, isCapacityError, isNonRetryableBodyError, isTooBigError, KIRO_REASON_CODES, MAX_RETRY_DELAY, resolveRequestRateRetryDelay, retryConfig, } from "./retry.js";
14
17
  import { kiroTokenTypeHeaders } from "./token-type.js";
15
18
  import { abortableDelay, createResponseHeaderDeadline, logCapacityEvent } from "./transport.js";
19
+ import { estimateKiroCreditCost, KIRO_USAGE_TRACKING_DISABLED } from "./usage-tracking.js";
20
+ /**
21
+ * Pluralise an observed-attempt count for a diagnostic. The count is what was
22
+ * actually seen, not the configured retry budget: the two diverge whenever a
23
+ * 403 refresh, a timeout or a mid-stream error already spent part of the shared
24
+ * budget, and a diagnostic that exists to explain a silent failure must not
25
+ * itself assert something that did not happen.
26
+ *
27
+ * Deliberately not worded as "consecutive": the degenerate attempts need not be
28
+ * adjacent. A 403 credential refresh or a mid-stream error can land between two
29
+ * of them and spend the same shared budget, so an unqualified count is the only
30
+ * claim the counter can actually support.
31
+ */
32
+ function describeAttempts(count) {
33
+ return count === 1 ? "1 attempt" : `${count} attempts`;
34
+ }
35
+ /**
36
+ * Cap for wire-derived echo text quoted into a persisted `errorMessage`. The
37
+ * echo pattern `/^\s*(continue|\.+)\s*$/i` admits an arbitrarily long run of
38
+ * dots, and this string is written into the stream's terminal diagnostic.
39
+ * Matches the 200-char cap used for raw tool input in the assembler's parse
40
+ * warning. Tool-name collections use their own whole-value policy in
41
+ * `describeDroppedToolNames`; they are never sliced into partial identities.
42
+ */
43
+ const DIAGNOSTIC_QUOTE_LIMIT = 200;
44
+ /**
45
+ * INVARIANT: no unbounded integer may be interpolated into a persisted
46
+ * `errorMessage`. Consumers classify that string by pattern-matching its text,
47
+ * and retryable-error predicates in the wild match bare `429|500|502|503|504`
48
+ * with NO word boundary. So a `(5000 chars total)` annotation makes a
49
+ * diagnostic that says "terminal, do not retry" read as a transient HTTP 500
50
+ * and get suppressed — precisely the silent failure these diagnostics exist to
51
+ * defeat, reintroduced by the diagnostic itself.
52
+ *
53
+ * Hence the truncation marker carries no length: the exact length goes to
54
+ * `console.warn`, which no classifier reads. The only integer these diagnostics
55
+ * interpolate is the observed-attempt count, bounded by `maxRetries + 1` = 4.
56
+ *
57
+ * Wire-derived tool names can carry the same trigger text, so they are encoded
58
+ * before entering this diagnostic. See `encodeToolNameForDiagnostic`.
59
+ */
60
+ function clampForDiagnostic(text) {
61
+ return text.length <= DIAGNOSTIC_QUOTE_LIMIT ? text : `${text.slice(0, DIAGNOSTIC_QUOTE_LIMIT)}… (truncated)`;
62
+ }
63
+ /**
64
+ * Encode untrusted bytes without letting their text change how a consumer
65
+ * classifies the surrounding error. Each byte is represented by two letters,
66
+ * A through P, for its high and low nibbles. That alphabet contains no digits
67
+ * and cannot spell any alternative in a retryable-error predicate.
68
+ */
69
+ function encodeBytesForDiagnostic(bytes) {
70
+ let encoded = "";
71
+ for (const byte of bytes) {
72
+ encoded += String.fromCharCode(65 + (byte >> 4), 65 + (byte & 0x0f));
73
+ }
74
+ return encoded;
75
+ }
76
+ /**
77
+ * Encode one tool-name identity reversibly from its UTF-16 code units. String
78
+ * names retain their exact value. A malformed non-string wire name is prefixed
79
+ * with its runtime type and JSON representation, so it stays distinguishable
80
+ * from a legitimate string with the same rendered text.
81
+ *
82
+ * Using `TextEncoder` here would replace an unpaired surrogate with U+FFFD,
83
+ * corrupting the only persisted identity of a dropped call; JSON permits that
84
+ * escaped shape and the event parser carries it through as a JavaScript string.
85
+ * Quoting any identity verbatim is unsafe: values such as `set_timeout` and
86
+ * `http500_probe` make a terminal diagnostic look transient to consumers.
87
+ */
88
+ function encodeToolNameForDiagnostic(name) {
89
+ const identity = typeof name === "string" ? name : `${typeof name}:${JSON.stringify(name)}`;
90
+ let encoded = "";
91
+ for (let i = 0; i < identity.length; i++) {
92
+ const codeUnit = identity.charCodeAt(i);
93
+ encoded += String.fromCharCode(65 + (codeUnit >> 12), 65 + ((codeUnit >> 8) & 0x0f), 65 + ((codeUnit >> 4) & 0x0f), 65 + (codeUnit & 0x0f));
94
+ }
95
+ return encoded;
96
+ }
97
+ /**
98
+ * Describe the complete dropped-name set without unbounded output or partial
99
+ * identities. A set that fits is reversible name by name. If the complete set
100
+ * would exceed the diagnostic limit, replace all names with one SHA-256
101
+ * fingerprint. The explicit marker means no valid-looking name prefix can be
102
+ * mistaken for the whole identity, while the fingerprint still lets two
103
+ * records be compared exactly.
104
+ */
105
+ function describeDroppedToolNames(names) {
106
+ const encoded = names.map((name) => `A-P:${encodeToolNameForDiagnostic(name)}`).join(", ");
107
+ if (encoded.length <= DIAGNOSTIC_QUOTE_LIMIT)
108
+ return encoded;
109
+ const digest = createHash("sha256").update(JSON.stringify(names)).digest();
110
+ return `A-P-DIGEST:${encodeBytesForDiagnostic(digest)} (tool identities fingerprinted)`;
111
+ }
112
+ /**
113
+ * What the turn's blocks look like, for the exhausted-empty-response
114
+ * diagnostic. "No text and no tool calls" does NOT imply empty content: a
115
+ * reasoning turn that emits only `thinkingText` and then ends is degenerate by
116
+ * that test while a thinking block still exists, and a `ThinkingTagParser`
117
+ * turn can leave a zero-length text block behind. Claiming `empty content`
118
+ * there would assert something not observed.
119
+ *
120
+ * Block TYPES only, never a count: a count is an unbounded integer, which the
121
+ * invariant above forbids.
122
+ */
123
+ function describeReturnedContent(kinds) {
124
+ const unique = [...new Set(kinds)].sort();
125
+ if (unique.length === 0)
126
+ return "returning empty content";
127
+ return `returning only ${unique.join(" and ")} content`;
128
+ }
16
129
  let skipProfileResolutionForTests = false;
17
130
  const TEST_PROFILE_ARN = "arn:aws:codewhisperer:us-east-1:000000000000:profile/test";
18
131
  /** Reset profile resolution state — exported for stream tests. */
@@ -37,7 +150,6 @@ export async function* streamKiro(request) {
37
150
  }
38
151
  let accessToken = initialAccessToken;
39
152
  const region = model.region ?? "us-east-1";
40
- const endpoint = new URL("generateAssistantResponse", getKiroEndpoints(region).runtime).toString();
41
153
  let managementAuth = { accessToken, region };
42
154
  const cliCreds = getKiroCliCredentials() ?? getKiroCliCredentialsAllowExpired();
43
155
  const cliProfileArn = cliCreds?.access === accessToken ? cliCreds.profileArn : undefined;
@@ -65,10 +177,17 @@ export async function* streamKiro(request) {
65
177
  freshCreds.profileArn ||
66
178
  (skipProfileResolutionForTests ? TEST_PROFILE_ARN : await resolveKiroProfileArn(managementAuth));
67
179
  }
180
+ // ListAvailableProfiles probes across regions (#104, #131), so an SSO login
181
+ // in one region can legitimately resolve a profile owned by another. The
182
+ // runtime host and the catalog have to follow the profile: sending a
183
+ // cross-region profile ARN to the runtime API fails the whole request with
184
+ // a generic `Improperly formed request.`.
185
+ let runtimeRegion = getKiroRegionFromProfileArn(profileArn) ?? region;
186
+ let endpoint = new URL("generateAssistantResponse", getKiroEndpoints(runtimeRegion).runtime).toString();
68
187
  // Refresh the catalog in the background when it has gone stale.
69
- if (!process.env.VITEST && isCacheStale(region)) {
70
- updateKiroModelsCache(accessToken, region, profileArn).catch((error) => {
71
- console.warn(`[kiro-core] Failed to refresh Kiro model catalog in ${region}: ${formatSafeError(error)}`);
188
+ if (!process.env.VITEST && isCacheStale(runtimeRegion)) {
189
+ updateKiroModelsCache(accessToken, runtimeRegion, profileArn).catch((error) => {
190
+ console.warn(`[kiro-core] Failed to refresh Kiro model catalog in ${runtimeRegion}: ${formatSafeError(error)}`);
72
191
  });
73
192
  }
74
193
  const kiroModelId = resolveKiroModel(model.id, model.kiroModelId);
@@ -117,8 +236,30 @@ export async function* streamKiro(request) {
117
236
  systemPrompt = `<thinking_mode>enabled</thinking_mode><max_thinking_length>${budget}</max_thinking_length>${systemPrompt ? `\n${systemPrompt}` : ""}`;
118
237
  }
119
238
  const assembler = new KiroResponseAssembler(model, thinkingEnabled);
239
+ const usageTracking = request.usageTracking ?? KIRO_USAGE_TRACKING_DISABLED;
120
240
  let retryCount = 0;
121
241
  const maxRetries = 3;
242
+ /** Degenerate attempts, counted BY SHAPE. Both are counted separately from
243
+ * `retryCount`, which is the shared retry budget also spent by 403 credential
244
+ * refreshes, idle/first-token timeouts and mid-stream errors — so
245
+ * `maxRetries + 1` is NOT the number of empty attempts, and reporting it as
246
+ * such overstates what was observed.
247
+ *
248
+ * Split rather than pooled because the two shapes are not interchangeable and
249
+ * the exhaustion diagnostic is worded from the LAST attempt's shape only. The
250
+ * model can echo on one attempt and return nothing on the next; a single
251
+ * pooled counter would then make "returned no text ... on 4 attempts" out of
252
+ * three empty attempts and one that did carry text, or claim four echoes from
253
+ * one. Each diagnostic reports its own shape's count and, when the other shape
254
+ * also occurred, names it separately. */
255
+ let emptyAttempts = 0;
256
+ let echoAttempts = 0;
257
+ // Cumulative provider-internal retry tallies reported on KiroApiError.
258
+ // `retryCount` cannot stand in for either: it is also consumed by stream
259
+ // errors, idle/first-token timeouts, and empty-response retries, and
260
+ // `capacityRetryCount` resets on every outer iteration.
261
+ let credentialRefreshTotal = 0;
262
+ let capacityRetryTotal = 0;
122
263
  const conversationId = request.sessionId ?? crypto.randomUUID();
123
264
  requestLoop: while (retryCount <= maxRetries) {
124
265
  if (signal?.aborted)
@@ -210,6 +351,7 @@ export async function* streamKiro(request) {
210
351
  // Retry transient capacity errors with longer backoff.
211
352
  if (isCapacityError(errText) && capacityRetryCount < capacityRetryConfig.maxRetries) {
212
353
  capacityRetryCount++;
354
+ capacityRetryTotal++;
213
355
  const delayMs = exponentialBackoff(capacityRetryCount - 1, capacityRetryConfig.baseDelayMs, 30_000);
214
356
  logCapacityEvent(`INSUFFICIENT_MODEL_CAPACITY — retrying in ${delayMs}ms (${capacityRetryCount}/${capacityRetryConfig.maxRetries})`);
215
357
  await abortableDelay(delayMs, signal);
@@ -237,6 +379,7 @@ export async function* streamKiro(request) {
237
379
  }
238
380
  if (response.status === 403 && !isCapacityError(errText) && retryCount < maxRetries) {
239
381
  retryCount++;
382
+ credentialRefreshTotal++;
240
383
  // Re-read the shared store first in case another process already
241
384
  // rotated the token. If it still contains the rejected token, force
242
385
  // kiro-cli to refresh before retrying runtime.
@@ -263,19 +406,35 @@ export async function* streamKiro(request) {
263
406
  freshCreds?.profileArn ||
264
407
  inheritedDesktopProfileArn ||
265
408
  (skipProfileResolutionForTests ? TEST_PROFILE_ARN : await resolveKiroProfileArn(managementAuth));
409
+ // A replacement credential can carry a profile in another region,
410
+ // so re-pin the runtime host before retrying.
411
+ runtimeRegion = getKiroRegionFromProfileArn(profileArn) ?? region;
412
+ endpoint = new URL("generateAssistantResponse", getKiroEndpoints(runtimeRegion).runtime).toString();
266
413
  await abortableDelay(exponentialBackoff(retryCount - 1, 500, MAX_RETRY_DELAY), signal);
267
414
  break; // break inner loop, continue outer loop
268
415
  }
269
416
  // Known quota/capacity body markers must not be re-read by a host's own
270
- // outer auto-retry as a generic retryable 429.
417
+ // outer auto-retry as a generic retryable 429. This covers both hard
418
+ // quota (MONTHLY_REQUEST_COUNT) and exhausted capacity retries
419
+ // (INSUFFICIENT_MODEL_CAPACITY).
420
+ //
421
+ // The three throws below carry identical `message` text to what this
422
+ // provider has always emitted — host adapters and downstream consumers
423
+ // string-match it. KiroApiError adds the classification as typed fields
424
+ // alongside that text; it never changes it.
425
+ const errorMeta = {
426
+ reasonCode: extractKiroReasonCode(errText),
427
+ retryAfterMs: parseRetryAfterMs(response.headers),
428
+ providerAttempts: { credentialRefresh: credentialRefreshTotal, capacity: capacityRetryTotal },
429
+ };
271
430
  if (isNonRetryableBodyError(errText) || isCapacityError(errText)) {
272
- throw new Error(`Kiro API error: ${errText || safeStatusText}`);
431
+ throw new KiroApiError(`Kiro API error: ${errText || safeStatusText}`, response.status, errorMeta.reasonCode, errorMeta.retryAfterMs, errorMeta.providerAttempts);
273
432
  }
274
433
  // Phrase overflow so a host's context-overflow detector recognizes it.
275
434
  if (isTooBigError(response.status, errText)) {
276
- throw new Error(`Kiro API error: context_length_exceeded (${response.status} ${errText})`);
435
+ throw new KiroApiError(`Kiro API error: context_length_exceeded (${response.status} ${errText})`, response.status, errorMeta.reasonCode, errorMeta.retryAfterMs, errorMeta.providerAttempts);
277
436
  }
278
- throw new Error(`Kiro API error: ${response.status} ${safeStatusText} ${errText}`);
437
+ throw new KiroApiError(`Kiro API error: ${response.status} ${safeStatusText} ${errText}`, response.status, errorMeta.reasonCode, errorMeta.retryAfterMs, errorMeta.providerAttempts);
279
438
  }
280
439
  break; // success, break inner loop
281
440
  }
@@ -291,6 +450,7 @@ export async function* streamKiro(request) {
291
450
  assembler.beginAttempt();
292
451
  const { frames, outcome } = readKiroEventStream(response.body, {
293
452
  firstTokenTimeoutMs: model.firstTokenTimeout ?? firstTokenTimeoutForModel(model.id),
453
+ signal,
294
454
  });
295
455
  for await (const frame of frames) {
296
456
  assembler.handle(frame);
@@ -301,6 +461,23 @@ export async function* streamKiro(request) {
301
461
  // Timed out or received an error mid-stream: retry with backoff.
302
462
  if (retryCount < maxRetries) {
303
463
  retryCount++;
464
+ if (outcome.errorData && debugEnabled()) {
465
+ debugLog("stream.error.typed", [outcome.errorData]);
466
+ }
467
+ // The assembler outlives the retry loop, so anything the aborted
468
+ // attempt already emitted survives into the next one. A typed error
469
+ // frame (throttling/validation/serviceUnavailable) can arrive after
470
+ // partial text, which would otherwise concatenate the abandoned prefix
471
+ // onto the retried response. The degenerate-response retry below
472
+ // discards for the same reason. The usage figures are cleared by
473
+ // `beginAttempt` at the next loop top.
474
+ //
475
+ // The event protocol has no retraction event, so deltas already pushed
476
+ // for the abandoned attempt cannot be withdrawn. The signals a
477
+ // consumer does get are the `reset` event and the fresh `start`
478
+ // emitted for the retried attempt.
479
+ assembler.discard();
480
+ yield* assembler.takeEvents();
304
481
  await abortableDelay(exponentialBackoff(retryCount - 1, 1000, MAX_RETRY_DELAY), signal);
305
482
  continue;
306
483
  }
@@ -320,7 +497,13 @@ export async function* streamKiro(request) {
320
497
  // When tool calls *were* present but all got dropped (empty/unparseable
321
498
  // input), don't retry — the API did respond, it just sent malformed tool
322
499
  // calls. Retrying would likely produce the same result.
323
- if (summary.isEmpty || summary.isEchoLoop) {
500
+ const degenerate = summary.isEmpty || summary.isEchoLoop;
501
+ if (summary.isEchoLoop)
502
+ echoAttempts++;
503
+ else if (degenerate)
504
+ emptyAttempts++;
505
+ let errorMessage;
506
+ if (degenerate) {
324
507
  // Retrying an echo loop means unsaying text already delivered, which only
325
508
  // a host that can discard emitted blocks may do. Elsewhere, go straight to
326
509
  // the terminal behaviour: strip the echo so the agent loop does not read
@@ -334,22 +517,69 @@ export async function* streamKiro(request) {
334
517
  await abortableDelay(exponentialBackoff(retryCount - 1, 1000, MAX_RETRY_DELAY), signal);
335
518
  continue;
336
519
  }
520
+ // Retries are spent (or the host cannot discard an echo) and the turn
521
+ // still carries nothing usable. The stopReason stays in the existing
522
+ // union — a new member would break every consumer — so the only channel
523
+ // that can say a turn failed while it still looks successful is the
524
+ // `errorMessage` carried on the terminal `done` event. Without it these
525
+ // turns are indistinguishable from an ordinary completion.
526
+ //
527
+ // Deliberately NOT worded as a transient/transport failure: this is
528
+ // terminal, so consumer retry classifiers must not match it and hand it
529
+ // another doomed attempt.
337
530
  if (summary.isEchoLoop) {
531
+ // Strip the echo text to prevent the agent loop from interpreting
532
+ // "Continue" as a continuation signal.
338
533
  assembler.stripEcho();
339
- console.warn(`[kiro-core] Echo loop — stripping "Continue" response`);
534
+ const alsoEmpty = emptyAttempts > 0 ? ` (plus ${describeAttempts(emptyAttempts)} with no text at all)` : "";
535
+ console.warn(`[kiro-core] Echo loop persisted across ${describeAttempts(echoAttempts)}${alsoEmpty} — stripping "Continue" response (${summary.responseText.length} chars)`);
536
+ errorMessage = `Kiro model echoed its own continuation prompt (${JSON.stringify(clampForDiagnostic(summary.responseText))}) on ${describeAttempts(echoAttempts)}${alsoEmpty} and emitted no tool calls; retry budget exhausted, text stripped, stopReason:"${summary.stopReason}"`;
340
537
  }
341
538
  else {
342
- // The stop reason is still decided below, and an empty turn that never
343
- // carried a contextUsage frame is reported as `length` rather than
344
- // `stop` — say so, instead of promising a normal stop this branch does
345
- // not actually guarantee.
346
- console.warn(`[kiro-core] Empty response after ${maxRetries} retries — giving up on this turn`);
539
+ const alsoEchoed = echoAttempts > 0 ? ` (plus ${describeAttempts(echoAttempts)} that echoed the continuation prompt)` : "";
540
+ console.warn(`[kiro-core] Empty response on ${describeAttempts(emptyAttempts)}${alsoEchoed}, retry budget exhausted — returning stopReason:"${summary.stopReason}" to avoid agent loop stall`);
541
+ errorMessage = `Kiro returned no text and no tool calls on ${describeAttempts(emptyAttempts)}${alsoEchoed}; retry budget exhausted, ${describeReturnedContent(assembler.contentKinds())} with stopReason:"${summary.stopReason}"`;
347
542
  }
348
543
  }
349
- const { stopReason, usage } = assembler.complete();
544
+ // A tool call the model DID make never reached the host: its arguments
545
+ // would not parse, so the assembler dropped it. Nothing else records this
546
+ // — `sawAnyToolCalls` is already true, which is exactly what suppresses the
547
+ // empty-response retry above and the text-dialect fallback — and the block
548
+ // stream simply lacks the call. Unlike the two exhaustion cases, this one
549
+ // is unrecoverable downstream: the call is gone before the events are
550
+ // persisted.
551
+ if (summary.droppedToolCalls.length > 0) {
552
+ const names = describeDroppedToolNames(summary.droppedToolCalls);
553
+ // The reversible names or whole-set fingerprint identify the drops, so
554
+ // the count is not printed: it is unbounded (a turn may carry any
555
+ // number of malformed calls) and unbounded or wire-controlled text
556
+ // here can collide with a consumer's retryable-error pattern.
557
+ const one = summary.droppedToolCalls.length === 1;
558
+ const dropDiagnostic = `Kiro sent ${one ? "a tool call" : "tool calls"} with unparseable arguments (${names}); ${one ? "it was" : "they were"} dropped and never reached the agent, stopReason:"${summary.stopReason}"`;
559
+ // Concatenation is defensive: today the two diagnostics are mutually
560
+ // exclusive, because any drop sets `sawAnyToolCalls` and `degenerate`
561
+ // requires `!sawAnyToolCalls`. Kept so that loosening either predicate
562
+ // appends rather than silently overwriting an exhaustion diagnostic.
563
+ errorMessage = errorMessage ? `${errorMessage}. ${dropDiagnostic}` : dropDiagnostic;
564
+ }
565
+ const { stopReason, usage, wireUsage, metering } = assembler.complete();
350
566
  yield* assembler.takeEvents();
567
+ if (!errorMessage) {
568
+ const estimatedRead = applyCacheEstimate(conversationId, usage, wireUsage, usageTracking);
569
+ if (estimatedRead > 0) {
570
+ debugLog("usage.estimate", {
571
+ conversationId,
572
+ estimatedRead,
573
+ input: usage.input,
574
+ cacheRead: usage.cacheRead,
575
+ });
576
+ }
577
+ const estimatedCost = estimateKiroCreditCost(usageTracking, metering);
578
+ if (estimatedCost !== undefined)
579
+ usage.cost.total = estimatedCost;
580
+ }
351
581
  yield { type: "usage", usage };
352
- yield { type: "done", stopReason };
582
+ yield { type: "done", stopReason, ...(errorMessage ? { errorMessage } : {}) };
353
583
  return;
354
584
  }
355
585
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -118,6 +118,11 @@ export interface KiroUsage {
118
118
  */
119
119
  credits?: number;
120
120
  creditUnit?: string;
121
+ /**
122
+ * Set when {@link cacheRead} is an estimate from repeated prompt input rather
123
+ * than a wire counter — a host may render it differently or not at all.
124
+ */
125
+ cacheEstimated?: boolean;
121
126
  cost: {
122
127
  input: number;
123
128
  output: number;
@@ -178,6 +183,14 @@ export type KiroStreamEvent = {
178
183
  } | {
179
184
  type: "done";
180
185
  stopReason: "stop" | "toolUse" | "length";
186
+ /**
187
+ * Terminal diagnostic for a turn that finished but produced less than the
188
+ * model sent — an exhausted empty/echo retry budget, or a tool call
189
+ * dropped for unparseable arguments. Worded as terminal on purpose so a
190
+ * consumer's retryable-error classifier cannot mistake it for a
191
+ * transient transport failure.
192
+ */
193
+ errorMessage?: string;
181
194
  };
182
195
  /**
183
196
  * An internal retry discarded everything emitted so far. Hosts able to drop
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Kiro's published add-on credit rate (https://kiro.dev/pricing/). Used as the
3
+ * conversion default so an enabled config needs no rate at all.
4
+ */
5
+ export declare const DEFAULT_USD_PER_CREDIT = 0.04;
6
+ /** Match the usual prompt-cache TTL and Anthropic's default cache lifetime. */
7
+ export declare const DEFAULT_ESTIMATED_CACHE_TIMEOUT_MS: number;
8
+ /** Resolved estimation policy. Both estimates are independently opt-in. */
9
+ export interface KiroUsageTracking {
10
+ estimateDollarValue: boolean;
11
+ usdPerCredit: number;
12
+ estimateCacheUsage: boolean;
13
+ estimatedCacheTimeout: number;
14
+ }
15
+ export declare const KIRO_USAGE_TRACKING_DISABLED: KiroUsageTracking;
16
+ /**
17
+ * Resolve an estimation policy from a plain settings record — the shape of
18
+ * upstream's `usageTracking` section, but supplied by the host rather than read
19
+ * from any particular settings file.
20
+ *
21
+ * Each estimate fails closed independently on malformed input.
22
+ */
23
+ export declare function resolveKiroUsageTracking(section: unknown): KiroUsageTracking;
24
+ /**
25
+ * Estimated USD-equivalent value of one turn's credits, or `undefined` when the
26
+ * record cannot be trusted.
27
+ *
28
+ * This is a conversion of Kiro's own credit count, NOT a billed amount: credits
29
+ * included in a subscription may carry no marginal charge at all.
30
+ */
31
+ export declare function estimateKiroCreditCost(tracking: KiroUsageTracking, metering: {
32
+ credits?: number;
33
+ unit?: string;
34
+ } | null | undefined): number | undefined;
@@ -0,0 +1,88 @@
1
+ // ABOUTME: Opt-in usage tracking config for Kiro dollar-value and cache-usage estimates.
2
+ // ABOUTME: Converts metering credits to USD and configures conservative cache-read estimation.
3
+ /**
4
+ * Kiro's published add-on credit rate (https://kiro.dev/pricing/). Used as the
5
+ * conversion default so an enabled config needs no rate at all.
6
+ */
7
+ export const DEFAULT_USD_PER_CREDIT = 0.04;
8
+ /** Match the usual prompt-cache TTL and Anthropic's default cache lifetime. */
9
+ export const DEFAULT_ESTIMATED_CACHE_TIMEOUT_MS = 5 * 60 * 1000;
10
+ export const KIRO_USAGE_TRACKING_DISABLED = Object.freeze({
11
+ estimateDollarValue: false,
12
+ usdPerCredit: DEFAULT_USD_PER_CREDIT,
13
+ estimateCacheUsage: false,
14
+ estimatedCacheTimeout: DEFAULT_ESTIMATED_CACHE_TIMEOUT_MS,
15
+ });
16
+ /** `MeteringEvent.unit` values that denote credits. The service has emitted both. */
17
+ const CREDIT_UNITS = new Set(["credit", "credits"]);
18
+ /**
19
+ * Resolve an estimation policy from a plain settings record — the shape of
20
+ * upstream's `usageTracking` section, but supplied by the host rather than read
21
+ * from any particular settings file.
22
+ *
23
+ * Each estimate fails closed independently on malformed input.
24
+ */
25
+ export function resolveKiroUsageTracking(section) {
26
+ const raw = asRecord(section);
27
+ if (!raw)
28
+ return { ...KIRO_USAGE_TRACKING_DISABLED };
29
+ const legacyEnabled = raw.enabled === true;
30
+ const estimateDollarValue = raw.estimateDollarValue === true || legacyEnabled;
31
+ const estimateCacheUsage = raw.estimateCacheUsage === true;
32
+ let usdPerCredit = DEFAULT_USD_PER_CREDIT;
33
+ let estimatedCacheTimeout = DEFAULT_ESTIMATED_CACHE_TIMEOUT_MS;
34
+ if (estimateDollarValue) {
35
+ const rate = resolveNonNegativeNumber(raw.usdPerCredit, DEFAULT_USD_PER_CREDIT);
36
+ if (rate === undefined) {
37
+ console.warn("[kiro-core] Ignoring usageTracking.estimateDollarValue: usdPerCredit must be a finite number >= 0.");
38
+ }
39
+ else {
40
+ usdPerCredit = rate;
41
+ }
42
+ }
43
+ let cacheEnabled = estimateCacheUsage;
44
+ if (estimateCacheUsage) {
45
+ const timeout = resolveNonNegativeNumber(raw.estimatedCacheTimeout, DEFAULT_ESTIMATED_CACHE_TIMEOUT_MS);
46
+ if (timeout === undefined) {
47
+ console.warn("[kiro-core] Ignoring usageTracking.estimateCacheUsage: estimatedCacheTimeout must be a finite number >= 0.");
48
+ cacheEnabled = false;
49
+ }
50
+ else {
51
+ estimatedCacheTimeout = timeout;
52
+ }
53
+ }
54
+ return {
55
+ estimateDollarValue: estimateDollarValue && resolveNonNegativeNumber(raw.usdPerCredit, DEFAULT_USD_PER_CREDIT) !== undefined,
56
+ usdPerCredit,
57
+ estimateCacheUsage: cacheEnabled,
58
+ estimatedCacheTimeout,
59
+ };
60
+ }
61
+ /**
62
+ * Estimated USD-equivalent value of one turn's credits, or `undefined` when the
63
+ * record cannot be trusted.
64
+ *
65
+ * This is a conversion of Kiro's own credit count, NOT a billed amount: credits
66
+ * included in a subscription may carry no marginal charge at all.
67
+ */
68
+ export function estimateKiroCreditCost(tracking, metering) {
69
+ if (!tracking.estimateDollarValue || !metering)
70
+ return undefined;
71
+ if (typeof metering.unit !== "string" || !CREDIT_UNITS.has(metering.unit.toLowerCase()))
72
+ return undefined;
73
+ const { credits } = metering;
74
+ if (typeof credits !== "number" || !Number.isFinite(credits) || credits < 0)
75
+ return undefined;
76
+ return credits * tracking.usdPerCredit;
77
+ }
78
+ function resolveNonNegativeNumber(value, defaultValue) {
79
+ if (value === undefined)
80
+ return defaultValue;
81
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0)
82
+ return undefined;
83
+ return value;
84
+ }
85
+ function asRecord(value) {
86
+ return value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
87
+ }
88
+ //# sourceMappingURL=usage-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-tracking.js","sourceRoot":"","sources":["../src/usage-tracking.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ns-kiro-core",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Shared Kiro (AWS CodeWhisperer/Q) protocol core — credentials, model catalog, streaming; a dependency, not for direct install",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",