ns-kiro-core 0.1.3 → 0.2.1

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/cost.d.ts CHANGED
@@ -1,3 +1,8 @@
1
1
  import type { KiroCost, KiroUsage } from "./types.js";
2
- /** Fill in {@link KiroUsage.cost} from the model's per-million rates. */
2
+ /**
3
+ * Fill in {@link KiroUsage.cost} from the model's per-million rates.
4
+ *
5
+ * Cache tokens are billed only when Kiro reported them; an unreported count
6
+ * contributes nothing rather than being charged at the input rate.
7
+ */
3
8
  export declare function calculateKiroCost(cost: KiroCost, usage: KiroUsage): KiroUsage["cost"];
package/dist/cost.js CHANGED
@@ -1,10 +1,17 @@
1
1
  // ABOUTME: Cost attribution over the neutral model descriptor.
2
2
  // ABOUTME: Each host ships its own calculator; the core repeats it so the seam stays one-way.
3
3
  const PER_MILLION = 1_000_000;
4
- /** Fill in {@link KiroUsage.cost} from the model's per-million rates. */
4
+ /**
5
+ * Fill in {@link KiroUsage.cost} from the model's per-million rates.
6
+ *
7
+ * Cache tokens are billed only when Kiro reported them; an unreported count
8
+ * contributes nothing rather than being charged at the input rate.
9
+ */
5
10
  export function calculateKiroCost(cost, usage) {
6
11
  const input = (usage.input * cost.input) / PER_MILLION;
7
12
  const output = (usage.output * cost.output) / PER_MILLION;
8
- return { input, output, cacheRead: 0, cacheWrite: 0, total: input + output };
13
+ const cacheRead = ((usage.cacheRead ?? 0) * cost.cacheRead) / PER_MILLION;
14
+ const cacheWrite = ((usage.cacheWrite ?? 0) * cost.cacheWrite) / PER_MILLION;
15
+ return { input, output, cacheRead, cacheWrite, total: input + output + cacheRead + cacheWrite };
9
16
  }
10
17
  //# sourceMappingURL=cost.js.map
package/dist/cost.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8FAA8F;AAI9F,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,IAAc,EAAE,KAAgB;IAChE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8FAA8F;AAI9F,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAc,EAAE,KAAgB;IAChE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;IAC1E,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,EAAE,CAAC;AAClG,CAAC"}
package/dist/effort.js CHANGED
@@ -1,9 +1,17 @@
1
1
  // Structured reasoning-effort handling for Kiro runtime requests.
2
2
  import { KIRO_EFFORT_ORDER } from "./types.js";
3
- const GPT_EFFORT_VALUES = ["low", "medium", "high", "xhigh"];
3
+ const GPT_EFFORT_VALUES = ["low", "medium", "high", "xhigh", "max"];
4
4
  const CLAUDE_EXTENDED_EFFORT_VALUES = ["low", "medium", "high", "xhigh", "max"];
5
5
  const CLAUDE_MAX_EFFORT_VALUES = ["low", "medium", "high", "max"];
6
+ /**
7
+ * Kiro has served GPT models under two naming schemes — `openai-gpt-5.6` and
8
+ * the bare `gpt-5.6-<variant>` family — so match the segment rather than a
9
+ * single prefix. A prefix test on `openai-gpt` alone silently stopped matching
10
+ * when the catalog moved to the bare spelling.
11
+ */
12
+ const GPT_MODEL_PATTERN = /(^|-)gpt-/;
6
13
  const CLAUDE_EXTENDED_EFFORT_MODELS = new Set([
14
+ "claude-opus-5",
7
15
  "claude-opus-4.8",
8
16
  "claude-opus-4.7",
9
17
  "claude-sonnet-5",
@@ -41,7 +49,7 @@ export function deriveKiroEffort(schema) {
41
49
  /** Known-model compatibility used only before catalog schema metadata is available. */
42
50
  export function fallbackKiroEffort(kiroModelId) {
43
51
  const normalizedId = kiroModelId.toLowerCase().replace(/(\d)-(\d)/g, "$1.$2");
44
- if (normalizedId.startsWith("openai-gpt")) {
52
+ if (GPT_MODEL_PATTERN.test(normalizedId)) {
45
53
  return { field: "reasoning", values: GPT_EFFORT_VALUES, summarizedThinking: false };
46
54
  }
47
55
  if (CLAUDE_EXTENDED_EFFORT_MODELS.has(normalizedId)) {
@@ -1 +1 @@
1
- {"version":3,"file":"effort.js","sourceRoot":"","sources":["../src/effort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"effort.js","sourceRoot":"","sources":["../src/effort.ts"],"names":[],"mappings":"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"}
@@ -35,10 +35,7 @@ export type KiroWireEvent = {
35
35
  data: string;
36
36
  } | {
37
37
  type: "usage";
38
- data: {
39
- inputTokens?: number;
40
- outputTokens?: number;
41
- };
38
+ data: KiroWireUsage;
42
39
  } | {
43
40
  type: "error";
44
41
  data: {
@@ -46,4 +43,31 @@ export type KiroWireEvent = {
46
43
  message?: string;
47
44
  };
48
45
  };
46
+ /**
47
+ * What a `usage` frame reports.
48
+ *
49
+ * Observed 2026-09-06 against `claude-sonnet-5` in us-east-1: Kiro does not
50
+ * send token counts at all. The frame is a billing record —
51
+ * `{unit: "credit", unitPlural: "credits", usage: 0.0659}` — so `usage` is a
52
+ * NUMBER, not an object, and reading `inputTokens` off it silently yields
53
+ * nothing. Token counts are still parsed because the object form is what the
54
+ * underlying services emit and Kiro may yet expose it.
55
+ *
56
+ * Kiro does cache prompts server-side (a repeated prefix billed 0.0350 against
57
+ * 0.0659 for a fresh one, and a changed prefix went straight back to 0.0659),
58
+ * but it reports no cache token counts and its request schema
59
+ * (`additionalProperties: false`) offers no way to ask for caching. The cache
60
+ * fields below are therefore read defensively, in the spellings the upstream
61
+ * services use, and stay `undefined` when absent rather than becoming `0`.
62
+ */
63
+ export interface KiroWireUsage {
64
+ inputTokens?: number;
65
+ outputTokens?: number;
66
+ cacheReadTokens?: number;
67
+ cacheWriteTokens?: number;
68
+ /** Billed amount for the turn — the only usage figure Kiro actually reports. */
69
+ credits?: number;
70
+ /** Unit the amount is denominated in, e.g. `"credit"`. */
71
+ creditUnit?: string;
72
+ }
49
73
  export declare function parseKiroEvent(parsed: Record<string, unknown>): KiroWireEvent | null;
@@ -2,6 +2,25 @@
2
2
  // ABOUTME: Binary framing is handled by @smithy/core EventStreamMarshaller in stream.ts.
3
3
  // Named `KiroWireEvent` to keep it distinct from `KiroStreamEvent`, which is what
4
4
  // this package emits outward after parsing.
5
+ /** Accept only a finite, non-negative count; anything else is treated as absent. */
6
+ function tokenCount(value) {
7
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
8
+ }
9
+ function firstTokenCount(source, keys) {
10
+ for (const key of keys) {
11
+ const count = tokenCount(source[key]);
12
+ if (count !== undefined)
13
+ return count;
14
+ }
15
+ return undefined;
16
+ }
17
+ const CACHE_READ_KEYS = ["cacheReadInputTokens", "cache_read_input_tokens", "cacheReadTokens"];
18
+ const CACHE_WRITE_KEYS = [
19
+ "cacheWriteInputTokens",
20
+ "cache_creation_input_tokens",
21
+ "cacheCreationInputTokens",
22
+ "cacheWriteTokens",
23
+ ];
5
24
  export function parseKiroEvent(parsed) {
6
25
  if (parsed.content !== undefined)
7
26
  return { type: "content", data: parsed.content };
@@ -45,10 +64,30 @@ export function parseKiroEvent(parsed) {
45
64
  return { type: "error", data: { error: typeof error === "string" ? error : JSON.stringify(error), message } };
46
65
  }
47
66
  if (parsed.usage !== undefined) {
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
+ }
48
80
  const u = parsed.usage;
81
+ const cacheReadTokens = firstTokenCount(u, CACHE_READ_KEYS);
82
+ const cacheWriteTokens = firstTokenCount(u, CACHE_WRITE_KEYS);
49
83
  return {
50
84
  type: "usage",
51
- data: { inputTokens: u.inputTokens, outputTokens: u.outputTokens },
85
+ data: {
86
+ inputTokens: tokenCount(u.inputTokens),
87
+ outputTokens: tokenCount(u.outputTokens),
88
+ ...(cacheReadTokens !== undefined ? { cacheReadTokens } : {}),
89
+ ...(cacheWriteTokens !== undefined ? { cacheWriteTokens } : {}),
90
+ },
52
91
  };
53
92
  }
54
93
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"event-parser.js","sourceRoot":"","sources":["../src/event-parser.ts"],"names":[],"mappings":"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"}
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
@@ -4,19 +4,23 @@ export { calculateKiroCost } from "./cost.js";
4
4
  export { debugEnabled, debugLog, formatSafeError, redactSensitiveText } from "./debug.js";
5
5
  export { buildKiroAdditionalModelRequestFields, clampKiroEffort, deriveKiroEffort, fallbackKiroEffort, getKiroEffortConfig, type KiroAdditionalModelRequestFields, type KiroEffortConfig, type KiroEffortField, mapEffortToKiroValue, } from "./effort.js";
6
6
  export { getKiroEndpoints, getKiroRegionFromEndpoint, type KiroEndpoints, resolveApiRegion, } from "./endpoints.js";
7
- export { type KiroWireEvent, parseKiroEvent } from "./event-parser.js";
7
+ export { type KiroWireEvent, type KiroWireUsage, parseKiroEvent } from "./event-parser.js";
8
8
  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
9
  export { parseInvokeToolCalls } from "./invoke-tool-parser.js";
10
- export { getKiroCliCredentials, getKiroCliCredentialsAllowExpired, getKiroCliDbPath, getKiroCliSocialToken, getKiroCliSocialTokenAllowExpired, refreshViaKiroCli, saveKiroCliCredentials, } from "./kiro-cli.js";
10
+ export { getKiroCliCredentials, getKiroCliCredentialsAllowExpired, getKiroCliDbPath, getKiroCliModelRates, getKiroCliSocialToken, getKiroCliSocialTokenAllowExpired, type KiroModelRate, refreshViaKiroCli, saveKiroCliCredentials, } from "./kiro-cli.js";
11
11
  export { getKiroIdeCredentials, getKiroIdeCredentialsAllowExpired } from "./kiro-ide.js";
12
12
  export { fetchKiroModelCatalog, type KiroCatalogModel, type KiroManagementAuth, KiroManagementHttpError, resolveKiroProfileArn, } from "./management.js";
13
13
  export { applyEffortLadder, getCachedModels, isCacheStale, KIRO_MANAGEMENT_CACHE_PATH, KIRO_MODEL_IDS, type KiroModel, kiroModels, loadCachedModelIds, mapKiroCatalogModels, resolveKiroModel, updateKiroModelsCache, } from "./models.js";
14
14
  export { isApiKey, isExpired, type KiroAuthMethod, type KiroCredentials, kiroAuthHeaders, loginKiroWithApiKey, refreshKiroToken, resolveKiroCredentials, } from "./oauth.js";
15
+ export { type BuildKiroRequestParams, type BuiltKiroRequest, buildKiroRequest, type KiroRequest, } from "./request-builder.js";
16
+ export { type KiroAttemptSummary, type KiroCompletedResponse, KiroResponseAssembler, } from "./response-assembler.js";
17
+ export { IDLE_TIMEOUT, type KiroEventStreamOptions, type KiroEventStreamOutcome, type KiroEventStreamReader, type KiroWireEventFrame, readKiroEventStream, } from "./response-stream.js";
15
18
  export { CAPACITY_PATTERN, isCapacityError, isNonRetryableBodyError, isTooBigError, KIRO_REASON_CODES, type KiroReasonCode, NON_RETRYABLE_BODY_PATTERNS, TOO_BIG_PATTERNS, } from "./retry.js";
16
19
  export { type KiroStreamRequest, resetProfileArnCache, streamKiro } from "./stream.js";
17
20
  export { ThinkingTagParser } from "./thinking-parser.js";
18
21
  export { countTokens } from "./tokenizer.js";
19
22
  export { buildHistory, EMPTY_CONTENT_PLACEHOLDER, type KiroHistoryEntry, type KiroImage, type KiroToolResult, type KiroToolSpec, type KiroToolUse, type KiroUserInputMessage, normalizeMessages, relocateDisplacedToolResults, sanitizeSurrogates, toKiroToolUseId, } from "./transform.js";
23
+ export { abortableDelay, createResponseHeaderDeadline, logCapacityEvent, type ResponseHeaderDeadline, } from "./transport.js";
20
24
  export { TRUNCATION_NOTICE, wasPreviousResponseTruncated } from "./truncation.js";
21
25
  export * from "./types.js";
22
26
  export { fetchKiroUsage, type KiroProviderUsage, type KiroProviderUsageBucket } from "./usage.js";
package/dist/index.js CHANGED
@@ -8,11 +8,17 @@ export { getKiroEndpoints, getKiroRegionFromEndpoint, resolveApiRegion, } from "
8
8
  export { parseKiroEvent } from "./event-parser.js";
9
9
  export { isKiroToolStructureRule, KIRO_TOOL_STRUCTURE_RULES, KIRO_VALIDATION_MESSAGES, KiroValidationRule, kiroConversationEntries, repairKiroConversation, SYNTHETIC_FAILED_TOOL_RESULT_TEXT, validateKiroConversation, validateKiroToolStructure, } from "./history-validator.js";
10
10
  export { parseInvokeToolCalls } from "./invoke-tool-parser.js";
11
- export { getKiroCliCredentials, getKiroCliCredentialsAllowExpired, getKiroCliDbPath, getKiroCliSocialToken, getKiroCliSocialTokenAllowExpired, refreshViaKiroCli, saveKiroCliCredentials, } from "./kiro-cli.js";
11
+ export { getKiroCliCredentials, getKiroCliCredentialsAllowExpired, getKiroCliDbPath, getKiroCliModelRates, getKiroCliSocialToken, getKiroCliSocialTokenAllowExpired, refreshViaKiroCli, saveKiroCliCredentials, } from "./kiro-cli.js";
12
12
  export { getKiroIdeCredentials, getKiroIdeCredentialsAllowExpired } from "./kiro-ide.js";
13
13
  export { fetchKiroModelCatalog, KiroManagementHttpError, resolveKiroProfileArn, } from "./management.js";
14
14
  export { applyEffortLadder, getCachedModels, isCacheStale, KIRO_MANAGEMENT_CACHE_PATH, KIRO_MODEL_IDS, kiroModels, loadCachedModelIds, mapKiroCatalogModels, resolveKiroModel, updateKiroModelsCache, } from "./models.js";
15
15
  export { isApiKey, isExpired, kiroAuthHeaders, loginKiroWithApiKey, refreshKiroToken, resolveKiroCredentials, } from "./oauth.js";
16
+ // The stages `streamKiro` runs in order. Exported so a caller can drive one on
17
+ // its own — building a request without sending it, or assembling blocks from
18
+ // events it sourced elsewhere — which is what splitting them apart was for.
19
+ export { buildKiroRequest, } from "./request-builder.js";
20
+ export { KiroResponseAssembler, } from "./response-assembler.js";
21
+ export { IDLE_TIMEOUT, readKiroEventStream, } from "./response-stream.js";
16
22
  // Kiro's own error vocabulary and the predicates this core classifies it with.
17
23
  // Published so consumers can interpret a reason code without an error instance
18
24
  // in hand (a persisted log line, say) instead of hardcoding copies of the
@@ -22,6 +28,7 @@ export { resetProfileArnCache, streamKiro } from "./stream.js";
22
28
  export { ThinkingTagParser } from "./thinking-parser.js";
23
29
  export { countTokens } from "./tokenizer.js";
24
30
  export { buildHistory, EMPTY_CONTENT_PLACEHOLDER, normalizeMessages, relocateDisplacedToolResults, sanitizeSurrogates, toKiroToolUseId, } from "./transform.js";
31
+ export { abortableDelay, createResponseHeaderDeadline, logCapacityEvent, } from "./transport.js";
25
32
  export { TRUNCATION_NOTICE, wasPreviousResponseTruncated } from "./truncation.js";
26
33
  export * from "./types.js";
27
34
  export { fetchKiroUsage } from "./usage.js";
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,EAEzB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EAKxB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,iCAAiC,EACjC,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,gBAAgB,EAChB,qBAAqB,EACrB,iCAAiC,EACjC,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EACL,qBAAqB,EAGrB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,0BAA0B,EAC1B,cAAc,EAEd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,QAAQ,EACR,SAAS,EAGT,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,sDAAsD;AACtD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EAEjB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAA0B,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,yBAAyB,EAOzB,iBAAiB,EACjB,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAClF,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAwD,MAAM,YAAY,CAAC"}
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,EAEzB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA0C,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EAKxB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,iCAAiC,EACjC,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iCAAiC,EAEjC,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EACL,qBAAqB,EAGrB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,0BAA0B,EAC1B,cAAc,EAEd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,QAAQ,EACR,SAAS,EAGT,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,OAAO,EAGL,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EAKZ,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,sDAAsD;AACtD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EAEjB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAA0B,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,yBAAyB,EAOzB,iBAAiB,EACjB,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAClF,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAwD,MAAM,YAAY,CAAC"}
@@ -21,6 +21,23 @@ export declare function getKiroCliSocialToken(): KiroCredentials | undefined;
21
21
  */
22
22
  export declare function getKiroCliSocialTokenAllowExpired(): KiroCredentials | undefined;
23
23
  export declare function saveKiroCliCredentials(creds: KiroCredentials): void;
24
+ /** Relative billing weight for one model, as kiro-cli reports it. */
25
+ export interface KiroModelRate {
26
+ /** Multiplier applied to the billed amount; 1.0 is the baseline. */
27
+ multiplier: number;
28
+ /** Unit the multiplier applies to, e.g. `"Credit"`. */
29
+ unit?: string;
30
+ }
31
+ /**
32
+ * Read per-model billing weights from `kiro-cli chat --list-models`.
33
+ *
34
+ * The management catalog does not carry them, and Kiro publishes no per-token
35
+ * prices, so this is the only source for how much one model costs relative to
36
+ * another. Returns undefined when kiro-cli is absent or its output is not the
37
+ * shape expected — the catalog is still usable without rates, so this must
38
+ * never be fatal.
39
+ */
40
+ export declare function getKiroCliModelRates(): Map<string, KiroModelRate> | undefined;
24
41
  /**
25
42
  * Ask kiro-cli to refresh its own tokens via `kiro-cli debug refresh-auth-token`,
26
43
  * then re-read the SQLite DB for fresh credentials.
package/dist/kiro-cli.js CHANGED
@@ -5,7 +5,7 @@ import { existsSync } from "node:fs";
5
5
  import { createRequire } from "node:module";
6
6
  import { homedir, platform } from "node:os";
7
7
  import { join } from "node:path";
8
- import { formatSafeError } from "./debug.js";
8
+ import { debugLog, formatSafeError } from "./debug.js";
9
9
  const require = createRequire(import.meta.url);
10
10
  /** kiro-cli's secret-store key for an enterprise external IdP (OIDC) session. */
11
11
  const EXTERNAL_IDP_TOKEN_KEY = "kirocli:external-idp:token";
@@ -285,6 +285,52 @@ export function saveKiroCliCredentials(creds) {
285
285
  catch { }
286
286
  }
287
287
  }
288
+ /**
289
+ * Read per-model billing weights from `kiro-cli chat --list-models`.
290
+ *
291
+ * The management catalog does not carry them, and Kiro publishes no per-token
292
+ * prices, so this is the only source for how much one model costs relative to
293
+ * another. Returns undefined when kiro-cli is absent or its output is not the
294
+ * shape expected — the catalog is still usable without rates, so this must
295
+ * never be fatal.
296
+ */
297
+ export function getKiroCliModelRates() {
298
+ let raw;
299
+ try {
300
+ raw = execFileSync("kiro-cli", ["chat", "--list-models", "--format", "json"], {
301
+ encoding: "utf-8",
302
+ timeout: 10_000,
303
+ stdio: ["pipe", "pipe", "pipe"],
304
+ });
305
+ }
306
+ catch (error) {
307
+ debugLog("models.rates", { source: "kiro-cli", error: formatSafeError(error) });
308
+ return undefined;
309
+ }
310
+ try {
311
+ const parsed = JSON.parse(raw);
312
+ if (!Array.isArray(parsed.models))
313
+ return undefined;
314
+ const rates = new Map();
315
+ for (const model of parsed.models) {
316
+ const id = model?.model_id;
317
+ const multiplier = model?.rate_multiplier;
318
+ if (typeof id !== "string" || !id)
319
+ continue;
320
+ if (typeof multiplier !== "number" || !Number.isFinite(multiplier) || multiplier <= 0)
321
+ continue;
322
+ rates.set(id, {
323
+ multiplier,
324
+ ...(typeof model.rate_unit === "string" && model.rate_unit ? { unit: model.rate_unit } : {}),
325
+ });
326
+ }
327
+ return rates.size > 0 ? rates : undefined;
328
+ }
329
+ catch (error) {
330
+ debugLog("models.rates", { source: "kiro-cli", error: formatSafeError(error) });
331
+ return undefined;
332
+ }
333
+ }
288
334
  /**
289
335
  * Ask kiro-cli to refresh its own tokens via `kiro-cli debug refresh-auth-token`,
290
336
  * then re-read the SQLite DB for fresh credentials.
@@ -1 +1 @@
1
- {"version":3,"file":"kiro-cli.js","sourceRoot":"","sources":["../src/kiro-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kiro-cli.js","sourceRoot":"","sources":["../src/kiro-cli.ts"],"names":[],"mappings":"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"}
package/dist/models.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type KiroEffortConfig } from "./effort.js";
2
+ import { type KiroModelRate } from "./kiro-cli.js";
2
3
  import { type KiroCatalogModel } from "./management.js";
3
4
  import { type KiroEffort, type KiroModelSpec } from "./types.js";
4
5
  export { resolveApiRegion } from "./endpoints.js";
@@ -48,8 +49,15 @@ export declare function applyEffortLadder(config: KiroEffortConfig | undefined):
48
49
  efforts?: readonly KiroEffort[];
49
50
  supportsSummarizedThinking?: boolean;
50
51
  };
51
- /** Map an authenticated management catalog into models without discarding fresh metadata for bootstrap IDs. */
52
- export declare function mapKiroCatalogModels(catalogModels: KiroCatalogModel[], region: string): KiroModel[];
52
+ /**
53
+ * Map an authenticated management catalog into models without discarding fresh
54
+ * metadata for bootstrap IDs.
55
+ *
56
+ * `rates` is passed in rather than read here so this stays a pure projection:
57
+ * its only source shells out to kiro-cli, which a caller may not want on this
58
+ * path at all.
59
+ */
60
+ export declare function mapKiroCatalogModels(catalogModels: KiroCatalogModel[], region: string, rates?: Map<string, KiroModelRate>): KiroModel[];
53
61
  export declare function loadCachedModelIds(): void;
54
62
  /** Return the authenticated regional catalog, or the static list only as a pre-discovery bootstrap. */
55
63
  export declare function getCachedModels(region: string): KiroModel[];
package/dist/models.js CHANGED
@@ -4,6 +4,7 @@ import { existsSync, readFileSync, renameSync, rmSync, writeFileSync } from "nod
4
4
  import { homedir } from "node:os";
5
5
  import { join } from "node:path";
6
6
  import { getKiroEffortConfig } from "./effort.js";
7
+ import { getKiroCliModelRates } from "./kiro-cli.js";
7
8
  import { fetchKiroModelCatalog } from "./management.js";
8
9
  import { KIRO_EFFORT_ORDER } from "./types.js";
9
10
  export { resolveApiRegion } from "./endpoints.js";
@@ -24,6 +25,17 @@ const REASONING_FAMILY_MARKERS = ["opus", "sonnet", "fable", "coder", "deepseek"
24
25
  /** Non-Claude models whose Kiro runtime vision support has been verified end to end. */
25
26
  const VERIFIED_IMAGE_MODEL_IDS = new Set(["gpt-5.6-luna"]);
26
27
  const bootstrapKiroModels = [
28
+ {
29
+ id: "claude-opus-5",
30
+ kiroModelId: "claude-opus-5",
31
+ name: "Claude Opus 5",
32
+ reasoning: true,
33
+ input: ["text", "image"],
34
+ cost: ZERO_COST,
35
+ contextWindow: 1000000,
36
+ maxTokens: 128000,
37
+ firstTokenTimeout: 180_000,
38
+ },
27
39
  {
28
40
  id: "claude-opus-4-8",
29
41
  kiroModelId: "claude-opus-4.8",
@@ -56,6 +68,16 @@ const bootstrapKiroModels = [
56
68
  contextWindow: 1000000,
57
69
  maxTokens: 32768,
58
70
  },
71
+ {
72
+ id: "claude-opus-4-5",
73
+ kiroModelId: "claude-opus-4.5",
74
+ name: "Claude Opus 4.5",
75
+ reasoning: true,
76
+ input: ["text", "image"],
77
+ cost: ZERO_COST,
78
+ contextWindow: 200000,
79
+ maxTokens: 64000,
80
+ },
59
81
  {
60
82
  id: "claude-sonnet-5",
61
83
  kiroModelId: "claude-sonnet-5",
@@ -116,6 +138,36 @@ const bootstrapKiroModels = [
116
138
  contextWindow: 1000000,
117
139
  maxTokens: 65536,
118
140
  },
141
+ {
142
+ id: "gpt-5-6-luna",
143
+ kiroModelId: "gpt-5.6-luna",
144
+ name: "GPT-5.6 Luna",
145
+ reasoning: true,
146
+ input: ["text", "image"],
147
+ cost: ZERO_COST,
148
+ contextWindow: 272000,
149
+ maxTokens: 128000,
150
+ },
151
+ {
152
+ id: "gpt-5-6-sol",
153
+ kiroModelId: "gpt-5.6-sol",
154
+ name: "GPT-5.6 Sol",
155
+ reasoning: true,
156
+ input: ["text"],
157
+ cost: ZERO_COST,
158
+ contextWindow: 272000,
159
+ maxTokens: 128000,
160
+ },
161
+ {
162
+ id: "gpt-5-6-terra",
163
+ kiroModelId: "gpt-5.6-terra",
164
+ name: "GPT-5.6 Terra",
165
+ reasoning: true,
166
+ input: ["text"],
167
+ cost: ZERO_COST,
168
+ contextWindow: 272000,
169
+ maxTokens: 128000,
170
+ },
119
171
  {
120
172
  id: "deepseek-3-2",
121
173
  kiroModelId: "deepseek-3.2",
@@ -233,7 +285,9 @@ function isCachedKiroModel(value) {
233
285
  (value.effortMap === undefined || isEffortMap(value.effortMap)) &&
234
286
  (schema === undefined || isRecord(schema)) &&
235
287
  (tokenLimits === undefined || isRecord(tokenLimits)) &&
236
- (value.firstTokenTimeout === undefined || isPositiveNumber(value.firstTokenTimeout)));
288
+ (value.firstTokenTimeout === undefined || isPositiveNumber(value.firstTokenTimeout)) &&
289
+ (value.rateMultiplier === undefined || isPositiveNumber(value.rateMultiplier)) &&
290
+ (value.rateUnit === undefined || typeof value.rateUnit === "string"));
237
291
  }
238
292
  function parseManagementCache(raw) {
239
293
  let value;
@@ -347,8 +401,15 @@ function validateCatalogMetadata(model) {
347
401
  }
348
402
  return { schema, tokenLimits };
349
403
  }
350
- /** Map an authenticated management catalog into models without discarding fresh metadata for bootstrap IDs. */
351
- export function mapKiroCatalogModels(catalogModels, region) {
404
+ /**
405
+ * Map an authenticated management catalog into models without discarding fresh
406
+ * metadata for bootstrap IDs.
407
+ *
408
+ * `rates` is passed in rather than read here so this stays a pure projection:
409
+ * its only source shells out to kiro-cli, which a caller may not want on this
410
+ * path at all.
411
+ */
412
+ export function mapKiroCatalogModels(catalogModels, region, rates) {
352
413
  if (catalogModels.length === 0) {
353
414
  throw new Error(`Kiro management catalog returned no models in ${region}`);
354
415
  }
@@ -364,6 +425,7 @@ export function mapKiroCatalogModels(catalogModels, region) {
364
425
  }
365
426
  seenIds.add(id);
366
427
  const existing = kiroModels.find((model) => model.id === id);
428
+ const rate = rates?.get(kiroModelId);
367
429
  const { schema, tokenLimits } = validateCatalogMetadata(catalogModel);
368
430
  // Two-tier resolution, same as the request path: an authoritative schema
369
431
  // wins, and a known-model guess fills in only when the catalog carried no
@@ -387,6 +449,7 @@ export function mapKiroCatalogModels(catalogModels, region) {
387
449
  input: existing ? [...existing.input] : hasVerifiedImageInput(kiroModelId) ? ["text", "image"] : ["text"],
388
450
  ...(id.startsWith("claude-") ? { recoverTextToolCalls: false } : {}),
389
451
  cost: ZERO_COST,
452
+ ...(rate ? { rateMultiplier: rate.multiplier, ...(rate.unit ? { rateUnit: rate.unit } : {}) } : {}),
390
453
  contextWindow: tokenLimits?.maxInputTokens ?? DEFAULT_CONTEXT_WINDOW,
391
454
  maxTokens: tokenLimits?.maxOutputTokens ?? DEFAULT_MAX_TOKENS,
392
455
  ...(existing?.firstTokenTimeout ? { firstTokenTimeout: existing.firstTokenTimeout } : {}),
@@ -429,7 +492,10 @@ export function isCacheStale(region) {
429
492
  }
430
493
  export async function updateKiroModelsCache(accessToken, region, profileArn) {
431
494
  const response = await fetchKiroModelCatalog({ accessToken, region }, profileArn);
432
- const models = mapKiroCatalogModels(response.models, region);
495
+ // Billing weights come from kiro-cli, the only source that publishes them.
496
+ // Absent when it is not installed, which leaves the catalog rate-less rather
497
+ // than failing the refresh.
498
+ const models = mapKiroCatalogModels(response.models, region, getKiroCliModelRates());
433
499
  const cache = readManagementCache() ?? {
434
500
  version: KIRO_MANAGEMENT_CACHE_VERSION,
435
501
  source: KIRO_MANAGEMENT_CACHE_SOURCE,