ns-omp-provider-kiro 0.2.0 → 0.2.2

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +126 -128
  3. package/package.json +4 -4
package/README.md CHANGED
@@ -8,7 +8,7 @@ Published on npm as `ns-omp-provider-kiro`:
8
8
  omp plugin install ns-omp-provider-kiro
9
9
  ```
10
10
 
11
- Pin a version with `omp plugin install ns-omp-provider-kiro@0.2.0` — bare
11
+ Pin a version with `omp plugin install ns-omp-provider-kiro@0.2.1` — bare
12
12
  names, scoped names, and `name@version` all resolve as npm specs.
13
13
 
14
14
  ### From a local build
package/dist/index.js CHANGED
@@ -2468,134 +2468,6 @@ init_management();
2468
2468
  init_models();
2469
2469
  init_oauth();
2470
2470
 
2471
- // ../kiro-core/dist/retry.js
2472
- init_models();
2473
- var FIRST_TOKEN_TIMEOUT = 9e4;
2474
- var REQUEST_HEADER_TIMEOUT = 9e4;
2475
- function firstTokenTimeoutForModel(modelId) {
2476
- if (retryConfig.firstTokenTimeoutMs !== FIRST_TOKEN_TIMEOUT) {
2477
- return retryConfig.firstTokenTimeoutMs;
2478
- }
2479
- const model = kiroModels.find((m) => m.id === modelId);
2480
- return model?.firstTokenTimeout ?? FIRST_TOKEN_TIMEOUT;
2481
- }
2482
- var retryConfig = {
2483
- firstTokenTimeoutMs: FIRST_TOKEN_TIMEOUT,
2484
- requestHeaderTimeoutMs: REQUEST_HEADER_TIMEOUT
2485
- };
2486
- function exponentialBackoff(attempt, baseMs, maxMs) {
2487
- return Math.min(baseMs * 2 ** attempt, maxMs);
2488
- }
2489
- var MAX_RETRY_DELAY = 1e4;
2490
- var REQUEST_RATE_FALLBACK_DELAY_MS = 1e4;
2491
- function extractKiroReason(errorText) {
2492
- if (!errorText)
2493
- return void 0;
2494
- try {
2495
- const parsed = JSON.parse(errorText);
2496
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
2497
- return void 0;
2498
- const reason = parsed.reason;
2499
- return typeof reason === "string" && reason.length > 0 ? reason : void 0;
2500
- } catch {
2501
- return void 0;
2502
- }
2503
- }
2504
- function parseRetryAfterMs(headers, nowMs = Date.now()) {
2505
- const get = headers?.get?.bind(headers);
2506
- if (!get)
2507
- return void 0;
2508
- const milliseconds = nonNegativeNumber(get("retry-after-ms"));
2509
- if (milliseconds !== void 0)
2510
- return Math.round(milliseconds);
2511
- const retryAfter = get("retry-after");
2512
- if (retryAfter !== null && retryAfter.trim() !== "") {
2513
- const seconds = Number(retryAfter);
2514
- if (Number.isFinite(seconds)) {
2515
- if (seconds >= 0) {
2516
- const delayMs = seconds * 1e3;
2517
- if (Number.isFinite(delayMs))
2518
- return Math.round(delayMs);
2519
- }
2520
- } else {
2521
- const dateMs = Date.parse(retryAfter);
2522
- if (!Number.isNaN(dateMs))
2523
- return Math.max(0, dateMs - nowMs);
2524
- }
2525
- }
2526
- const resetAfterSeconds = nonNegativeNumber(get("x-ratelimit-reset-after"));
2527
- if (resetAfterSeconds !== void 0) {
2528
- const delayMs = resetAfterSeconds * 1e3;
2529
- if (Number.isFinite(delayMs))
2530
- return Math.round(delayMs);
2531
- }
2532
- return void 0;
2533
- }
2534
- function resolveRequestRateRetryDelay(headers, nowMs = Date.now()) {
2535
- const advertisedDelayMs = parseRetryAfterMs(headers, nowMs);
2536
- const requestedDelayMs = advertisedDelayMs ?? REQUEST_RATE_FALLBACK_DELAY_MS;
2537
- return {
2538
- delayMs: Math.min(requestedDelayMs, MAX_RETRY_DELAY),
2539
- ...advertisedDelayMs !== void 0 ? { advertisedDelayMs } : {},
2540
- capped: requestedDelayMs > MAX_RETRY_DELAY
2541
- };
2542
- }
2543
- function nonNegativeNumber(value) {
2544
- if (value === null || value.trim() === "")
2545
- return void 0;
2546
- const parsed = Number(value);
2547
- return Number.isFinite(parsed) && parsed >= 0 ? parsed : void 0;
2548
- }
2549
- var KIRO_REASON_CODES = Object.freeze({
2550
- /** Request body exceeded the service's size threshold. */
2551
- CONTENT_LENGTH_EXCEEDS_THRESHOLD: "CONTENT_LENGTH_EXCEEDS_THRESHOLD",
2552
- /** Prose-only size rejection; the service sends no reason code for this one. */
2553
- INPUT_TOO_LONG: "Input is too long",
2554
- /** Monthly request quota exhausted — hard limit, not transient. */
2555
- MONTHLY_REQUEST_COUNT: "MONTHLY_REQUEST_COUNT",
2556
- /** Model capacity temporarily unavailable — transient, worth retrying. */
2557
- INSUFFICIENT_MODEL_CAPACITY: "INSUFFICIENT_MODEL_CAPACITY",
2558
- /** Short-window request throttle — retry only within the provider budget. */
2559
- USER_REQUEST_RATE_EXCEEDED: "USER_REQUEST_RATE_EXCEEDED",
2560
- /**
2561
- * Generic request-validation rejection, returned for a malformed body of any
2562
- * size (empty `content`, history referencing tools absent from the catalog).
2563
- * Not a size signal: classifying it as "too big" makes the caller compact a
2564
- * history that was never the problem, a loop it can never satisfy.
2565
- */
2566
- REQUEST_BODY_INVALID: "REQUEST_BODY_INVALID"
2567
- });
2568
- var TOO_BIG_PATTERNS = Object.freeze([
2569
- KIRO_REASON_CODES.CONTENT_LENGTH_EXCEEDS_THRESHOLD,
2570
- KIRO_REASON_CODES.INPUT_TOO_LONG
2571
- ]);
2572
- var NON_RETRYABLE_BODY_PATTERNS = Object.freeze([KIRO_REASON_CODES.MONTHLY_REQUEST_COUNT]);
2573
- var CAPACITY_PATTERN = KIRO_REASON_CODES.INSUFFICIENT_MODEL_CAPACITY;
2574
- var CAPACITY_MAX_RETRIES = 3;
2575
- var CAPACITY_BASE_DELAY_MS = 5e3;
2576
- var capacityRetryConfig = {
2577
- maxRetries: CAPACITY_MAX_RETRIES,
2578
- baseDelayMs: CAPACITY_BASE_DELAY_MS
2579
- };
2580
- function isTooBigError(status, errorText) {
2581
- return status === 413 || status === 400 && TOO_BIG_PATTERNS.some((p) => errorText.includes(p));
2582
- }
2583
- function isNonRetryableBodyError(errorText) {
2584
- return NON_RETRYABLE_BODY_PATTERNS.some((p) => errorText.includes(p));
2585
- }
2586
- function isCapacityError(errorText) {
2587
- return errorText.includes(CAPACITY_PATTERN);
2588
- }
2589
-
2590
- // ../kiro-core/dist/stream.js
2591
- init_debug();
2592
- init_effort();
2593
- init_endpoints();
2594
- init_kiro_cli();
2595
- init_management();
2596
- init_models();
2597
- init_oauth();
2598
-
2599
2471
  // ../kiro-core/dist/request-builder.js
2600
2472
  init_debug();
2601
2473
 
@@ -4294,7 +4166,133 @@ function readKiroEventStream(body, options) {
4294
4166
  return { frames: frames(), outcome };
4295
4167
  }
4296
4168
 
4169
+ // ../kiro-core/dist/retry.js
4170
+ init_models();
4171
+ var FIRST_TOKEN_TIMEOUT = 9e4;
4172
+ var REQUEST_HEADER_TIMEOUT = 9e4;
4173
+ function firstTokenTimeoutForModel(modelId) {
4174
+ if (retryConfig.firstTokenTimeoutMs !== FIRST_TOKEN_TIMEOUT) {
4175
+ return retryConfig.firstTokenTimeoutMs;
4176
+ }
4177
+ const model = kiroModels.find((m) => m.id === modelId);
4178
+ return model?.firstTokenTimeout ?? FIRST_TOKEN_TIMEOUT;
4179
+ }
4180
+ var retryConfig = {
4181
+ firstTokenTimeoutMs: FIRST_TOKEN_TIMEOUT,
4182
+ requestHeaderTimeoutMs: REQUEST_HEADER_TIMEOUT
4183
+ };
4184
+ function exponentialBackoff(attempt, baseMs, maxMs) {
4185
+ return Math.min(baseMs * 2 ** attempt, maxMs);
4186
+ }
4187
+ var MAX_RETRY_DELAY = 1e4;
4188
+ var REQUEST_RATE_FALLBACK_DELAY_MS = 1e4;
4189
+ function extractKiroReason(errorText) {
4190
+ if (!errorText)
4191
+ return void 0;
4192
+ try {
4193
+ const parsed = JSON.parse(errorText);
4194
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
4195
+ return void 0;
4196
+ const reason = parsed.reason;
4197
+ return typeof reason === "string" && reason.length > 0 ? reason : void 0;
4198
+ } catch {
4199
+ return void 0;
4200
+ }
4201
+ }
4202
+ function parseRetryAfterMs(headers, nowMs = Date.now()) {
4203
+ const get = headers?.get?.bind(headers);
4204
+ if (!get)
4205
+ return void 0;
4206
+ const milliseconds = nonNegativeNumber(get("retry-after-ms"));
4207
+ if (milliseconds !== void 0)
4208
+ return Math.round(milliseconds);
4209
+ const retryAfter = get("retry-after");
4210
+ if (retryAfter !== null && retryAfter.trim() !== "") {
4211
+ const seconds = Number(retryAfter);
4212
+ if (Number.isFinite(seconds)) {
4213
+ if (seconds >= 0) {
4214
+ const delayMs = seconds * 1e3;
4215
+ if (Number.isFinite(delayMs))
4216
+ return Math.round(delayMs);
4217
+ }
4218
+ } else {
4219
+ const dateMs = Date.parse(retryAfter);
4220
+ if (!Number.isNaN(dateMs))
4221
+ return Math.max(0, dateMs - nowMs);
4222
+ }
4223
+ }
4224
+ const resetAfterSeconds = nonNegativeNumber(get("x-ratelimit-reset-after"));
4225
+ if (resetAfterSeconds !== void 0) {
4226
+ const delayMs = resetAfterSeconds * 1e3;
4227
+ if (Number.isFinite(delayMs))
4228
+ return Math.round(delayMs);
4229
+ }
4230
+ return void 0;
4231
+ }
4232
+ function resolveRequestRateRetryDelay(headers, nowMs = Date.now()) {
4233
+ const advertisedDelayMs = parseRetryAfterMs(headers, nowMs);
4234
+ const requestedDelayMs = advertisedDelayMs ?? REQUEST_RATE_FALLBACK_DELAY_MS;
4235
+ return {
4236
+ delayMs: Math.min(requestedDelayMs, MAX_RETRY_DELAY),
4237
+ ...advertisedDelayMs !== void 0 ? { advertisedDelayMs } : {},
4238
+ capped: requestedDelayMs > MAX_RETRY_DELAY
4239
+ };
4240
+ }
4241
+ function nonNegativeNumber(value) {
4242
+ if (value === null || value.trim() === "")
4243
+ return void 0;
4244
+ const parsed = Number(value);
4245
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : void 0;
4246
+ }
4247
+ var KIRO_REASON_CODES = Object.freeze({
4248
+ /** Request body exceeded the service's size threshold. */
4249
+ CONTENT_LENGTH_EXCEEDS_THRESHOLD: "CONTENT_LENGTH_EXCEEDS_THRESHOLD",
4250
+ /** Prose-only size rejection; the service sends no reason code for this one. */
4251
+ INPUT_TOO_LONG: "Input is too long",
4252
+ /** Monthly request quota exhausted — hard limit, not transient. */
4253
+ MONTHLY_REQUEST_COUNT: "MONTHLY_REQUEST_COUNT",
4254
+ /** Model capacity temporarily unavailable — transient, worth retrying. */
4255
+ INSUFFICIENT_MODEL_CAPACITY: "INSUFFICIENT_MODEL_CAPACITY",
4256
+ /** Short-window request throttle — retry only within the provider budget. */
4257
+ USER_REQUEST_RATE_EXCEEDED: "USER_REQUEST_RATE_EXCEEDED",
4258
+ /**
4259
+ * Generic request-validation rejection, returned for a malformed body of any
4260
+ * size (empty `content`, history referencing tools absent from the catalog).
4261
+ * Not a size signal: classifying it as "too big" makes the caller compact a
4262
+ * history that was never the problem, a loop it can never satisfy.
4263
+ */
4264
+ REQUEST_BODY_INVALID: "REQUEST_BODY_INVALID"
4265
+ });
4266
+ var TOO_BIG_PATTERNS = Object.freeze([
4267
+ KIRO_REASON_CODES.CONTENT_LENGTH_EXCEEDS_THRESHOLD,
4268
+ KIRO_REASON_CODES.INPUT_TOO_LONG
4269
+ ]);
4270
+ var NON_RETRYABLE_BODY_PATTERNS = Object.freeze([KIRO_REASON_CODES.MONTHLY_REQUEST_COUNT]);
4271
+ var CAPACITY_PATTERN = KIRO_REASON_CODES.INSUFFICIENT_MODEL_CAPACITY;
4272
+ var CAPACITY_MAX_RETRIES = 3;
4273
+ var CAPACITY_BASE_DELAY_MS = 5e3;
4274
+ var capacityRetryConfig = {
4275
+ maxRetries: CAPACITY_MAX_RETRIES,
4276
+ baseDelayMs: CAPACITY_BASE_DELAY_MS
4277
+ };
4278
+ function isTooBigError(status, errorText) {
4279
+ return status === 413 || status === 400 && TOO_BIG_PATTERNS.some((p) => errorText.includes(p));
4280
+ }
4281
+ function isNonRetryableBodyError(errorText) {
4282
+ return NON_RETRYABLE_BODY_PATTERNS.some((p) => errorText.includes(p));
4283
+ }
4284
+ function isCapacityError(errorText) {
4285
+ return errorText.includes(CAPACITY_PATTERN);
4286
+ }
4287
+
4297
4288
  // ../kiro-core/dist/stream.js
4289
+ init_debug();
4290
+ init_effort();
4291
+ init_endpoints();
4292
+ init_kiro_cli();
4293
+ init_management();
4294
+ init_models();
4295
+ init_oauth();
4298
4296
  init_token_type();
4299
4297
 
4300
4298
  // ../kiro-core/dist/transport.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ns-omp-provider-kiro",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "OMP (oh-my-pi) provider plugin: adds Kiro (AWS CodeWhisperer/Q) models via your kiro-cli login",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -37,7 +37,7 @@
37
37
  "README.md"
38
38
  ],
39
39
  "dependencies": {
40
- "ns-kiro-core": "0.2.0"
40
+ "ns-kiro-core": "0.2.2"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "@oh-my-pi/pi-ai": ">=18.1.0",
@@ -52,8 +52,8 @@
52
52
  }
53
53
  },
54
54
  "devDependencies": {
55
- "@oh-my-pi/pi-ai": "18.1.5",
56
- "@oh-my-pi/pi-coding-agent": "18.1.5",
55
+ "@oh-my-pi/pi-ai": "18.1.13",
56
+ "@oh-my-pi/pi-coding-agent": "18.1.13",
57
57
  "@types/node": "^22.10.0"
58
58
  },
59
59
  "scripts": {