@tiangong-ai/cli 0.0.31 → 0.0.33
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/AGENTS.md +2 -2
- package/README.md +140 -98
- package/dist/research/orchestration.js +519 -21
- package/dist/research/orchestration.js.map +1 -1
- package/dist/research/workspace/acquisition.d.ts +71 -0
- package/dist/research/workspace/acquisition.js +593 -0
- package/dist/research/workspace/acquisition.js.map +1 -0
- package/dist/research/workspace/artifacts.d.ts +43 -0
- package/dist/research/workspace/artifacts.js +544 -0
- package/dist/research/workspace/artifacts.js.map +1 -0
- package/dist/research/workspace/broker.d.ts +5 -0
- package/dist/research/workspace/broker.js +318 -43
- package/dist/research/workspace/broker.js.map +1 -1
- package/dist/research/workspace/companion-readiness.d.ts +11 -0
- package/dist/research/workspace/companion-readiness.js +75 -0
- package/dist/research/workspace/companion-readiness.js.map +1 -0
- package/dist/research/workspace/discovery-planning.d.ts +25 -0
- package/dist/research/workspace/discovery-planning.js +106 -0
- package/dist/research/workspace/discovery-planning.js.map +1 -0
- package/dist/research/workspace/discovery-status.d.ts +46 -0
- package/dist/research/workspace/discovery-status.js +183 -0
- package/dist/research/workspace/discovery-status.js.map +1 -0
- package/dist/research/workspace/discovery.d.ts +25 -0
- package/dist/research/workspace/discovery.js +268 -0
- package/dist/research/workspace/discovery.js.map +1 -0
- package/dist/research/workspace/downloads.d.ts +76 -0
- package/dist/research/workspace/downloads.js +274 -0
- package/dist/research/workspace/downloads.js.map +1 -0
- package/dist/research/workspace/evidence-ledger.d.ts +52 -0
- package/dist/research/workspace/evidence-ledger.js +487 -0
- package/dist/research/workspace/evidence-ledger.js.map +1 -0
- package/dist/research/workspace/evidence.d.ts +1 -0
- package/dist/research/workspace/evidence.js +2 -0
- package/dist/research/workspace/evidence.js.map +1 -1
- package/dist/research/workspace/input-plan.js +4 -0
- package/dist/research/workspace/input-plan.js.map +1 -1
- package/dist/research/workspace/native-activity.d.ts +65 -0
- package/dist/research/workspace/native-activity.js +153 -0
- package/dist/research/workspace/native-activity.js.map +1 -0
- package/dist/research/workspace/preflight.d.ts +18 -0
- package/dist/research/workspace/preflight.js +47 -20
- package/dist/research/workspace/preflight.js.map +1 -1
- package/dist/research/workspace/projects.d.ts +3 -1
- package/dist/research/workspace/projects.js +357 -5
- package/dist/research/workspace/projects.js.map +1 -1
- package/dist/research/workspace/runtime.d.ts +171 -3
- package/dist/research/workspace/runtime.js +1582 -77
- package/dist/research/workspace/runtime.js.map +1 -1
- package/dist/research/workspace/sanitization.js +28 -6
- package/dist/research/workspace/sanitization.js.map +1 -1
- package/dist/research/workspace/schemas.d.ts +3 -0
- package/dist/research/workspace/schemas.js +206 -33
- package/dist/research/workspace/schemas.js.map +1 -1
- package/dist/research/workspace/setup-catalog.js +2 -2
- package/dist/research/workspace/setup-wizard.js +45 -17
- package/dist/research/workspace/setup-wizard.js.map +1 -1
- package/dist/research/workspace/setup.d.ts +27 -5
- package/dist/research/workspace/setup.js +400 -85
- package/dist/research/workspace/setup.js.map +1 -1
- package/dist/research/workspace/types.d.ts +38 -3
- package/dist/research/workspace/workspace.d.ts +2 -0
- package/dist/research/workspace/workspace.js +128 -26
- package/dist/research/workspace/workspace.js.map +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -15,8 +15,8 @@ checkPaths:
|
|
|
15
15
|
- .docpact/config.yaml
|
|
16
16
|
- docs/agents/**
|
|
17
17
|
- src/**
|
|
18
|
-
lastReviewedAt: 2026-08-
|
|
19
|
-
lastReviewedCommit:
|
|
18
|
+
lastReviewedAt: 2026-08-11
|
|
19
|
+
lastReviewedCommit: 2ce7ad7cd36c1aeba577bc72e4095ed3a81debd6
|
|
20
20
|
---
|
|
21
21
|
|
|
22
22
|
# Tiangong AI CLI Contract
|
package/README.md
CHANGED
|
@@ -12,8 +12,8 @@ checkPaths:
|
|
|
12
12
|
- package.json
|
|
13
13
|
- bin/**
|
|
14
14
|
- src/**
|
|
15
|
-
lastReviewedAt: 2026-08-
|
|
16
|
-
lastReviewedCommit:
|
|
15
|
+
lastReviewedAt: 2026-08-10
|
|
16
|
+
lastReviewedCommit: bef62f8d48c42eaff14fa2bd7eba1be83a46a58b
|
|
17
17
|
---
|
|
18
18
|
|
|
19
19
|
# Tiangong AI CLI
|
|
@@ -314,7 +314,8 @@ can inspect `capability doctor`, `project preflight`, `project init`, and `run`
|
|
|
314
314
|
syntax safely from an empty or unrelated directory.
|
|
315
315
|
|
|
316
316
|
The requirements object declares `dimensions`, `sourceTypes`, optional
|
|
317
|
-
`requiredCapabilityIds
|
|
317
|
+
`requiredCapabilityIds`, `requiredCompanionIds`, and
|
|
318
|
+
`requiredDiscoveryScopes`, `minSources`,
|
|
318
319
|
`minFullTextSources`, `minDatedSources`, and optional inclusive
|
|
319
320
|
`publicationDateFrom` / `publicationDateTo` boundaries (`YYYY-MM-DD` or
|
|
320
321
|
`null`). Explicit capability/scope requirements are exact: wildcard web or SCI
|
|
@@ -331,18 +332,20 @@ full source. Symlinks, duplicate content, changed hashes, and context above
|
|
|
331
332
|
`maxInputContextTokens` are rejected.
|
|
332
333
|
|
|
333
334
|
The workspace stores its current protocol state under `.tiangong-research/`.
|
|
334
|
-
Each project follows
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
335
|
+
Each project follows the evidence-first sequence: broad discovery, strict
|
|
336
|
+
admission, acquisition audit, immutable evidence freeze, analysis, synthesis,
|
|
337
|
+
independent review, and mechanical closure. Discover, acquire, analyze, and
|
|
338
|
+
synthesize run in the current interactive Codex app/session or Claude Code
|
|
339
|
+
session. The CLI never launches a nested producer process. Independent review
|
|
340
|
+
runs through the other configured agent family's CLI, and execution is blocked
|
|
341
|
+
when the two roles use the same family.
|
|
342
|
+
|
|
343
|
+
Independent reviewer execution requires `/usr/bin/sandbox-exec` on macOS or
|
|
344
|
+
Bubblewrap (`bwrap`) on Linux. Windows can inspect and configure workspaces but
|
|
345
|
+
does not launch reviewer packages; smoke-test setup reports a non-blocking
|
|
346
|
+
warning there, while production readiness fails closed. The current native producer remains governed
|
|
347
|
+
by its host application's own permissions; the CLI supplies a hash-bound packet
|
|
348
|
+
and deterministic broker commands, not a second nested sandbox or agent.
|
|
346
349
|
|
|
347
350
|
Add immutable local evidence, verify the workspace, and execute ready work:
|
|
348
351
|
|
|
@@ -356,20 +359,55 @@ tiangong-ai research workspace doctor --workspace /absolute/path/to/workspace \
|
|
|
356
359
|
--agent-smoke --capability-smoke
|
|
357
360
|
tiangong-ai research run --workspace /absolute/path/to/workspace \
|
|
358
361
|
--project gpu-resource-impact --progress-jsonl
|
|
362
|
+
# When stopReason is native-stage-required, perform the returned stage here:
|
|
363
|
+
tiangong-ai research project stage prepare gpu-resource-impact \
|
|
364
|
+
--stage discover --host-agent codex \
|
|
365
|
+
--workspace /absolute/path/to/workspace --json
|
|
366
|
+
tiangong-ai research project stage submit gpu-resource-impact \
|
|
367
|
+
--session SESSION_ID --output /absolute/path/to/discover.json \
|
|
368
|
+
--confirm-model EXPECTED_MODEL \
|
|
369
|
+
--workspace /absolute/path/to/workspace --json
|
|
359
370
|
tiangong-ai research status --workspace /absolute/path/to/workspace --json
|
|
360
371
|
```
|
|
361
372
|
|
|
373
|
+
The discover packet derives a bounded multi-channel plan from reviewed evidence
|
|
374
|
+
requirements. Required channels run first; exact repeated requests reuse the
|
|
375
|
+
project cache without another provider call but still consume a bounded context
|
|
376
|
+
view; remaining views are spent only on explicit coverage,
|
|
377
|
+
counterevidence, date, applicability, or full-text gaps. Native Web/Browser
|
|
378
|
+
leads may be registered as supplemental candidates, but they cannot be admitted
|
|
379
|
+
until the same canonical URL/DOI has an immutable broker occurrence. Registered
|
|
380
|
+
inputs are formal candidates under their own content-hash identity.
|
|
381
|
+
The acquire packet audits every provisional source and registers only explicit
|
|
382
|
+
files—never a directory or “latest download.” PDF and Office artifacts are
|
|
383
|
+
structurally verified and content-addressed. A registered binary full file is
|
|
384
|
+
review-bound but is not counted as producer-readable full text unless an
|
|
385
|
+
admitted UTF-8 text/JSON/HTML/CSV/Markdown derivative exists. Such a derivative
|
|
386
|
+
names its registered parent and inherits that parent's canonical source URL;
|
|
387
|
+
it does not invent a second network-download binding, and a conflicting URL is
|
|
388
|
+
rejected.
|
|
389
|
+
|
|
390
|
+
Successful acquisition freezes an immutable evidence snapshot before analysis.
|
|
391
|
+
The reviewer and mechanical closure bind and recheck the snapshot chain,
|
|
392
|
+
ledger, receipts, selected artifacts, excerpts, analysis, and report. Refresh a
|
|
393
|
+
closed result with `research project addendum SOURCE --to TARGET`; the original
|
|
394
|
+
closure remains unchanged, the child snapshot records a mechanical delta, and
|
|
395
|
+
default status hides the superseded project (`research status --all` shows full
|
|
396
|
+
lineage).
|
|
397
|
+
|
|
362
398
|
Use `research run --project <id>` for an auditable project-scoped run: only
|
|
363
399
|
that project is checked, scheduled, summarized, and bound to the top-level
|
|
364
400
|
JSON/JSONL `projectId`, so historical blocked siblings do not alter its exit
|
|
365
401
|
status. Omit `--project` and use `--max-parallel` only for an intentional
|
|
366
402
|
workspace-wide run.
|
|
367
403
|
|
|
368
|
-
Inputs are admitted by SHA-256.
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
404
|
+
Inputs are admitted by SHA-256. Native producer preparation creates an
|
|
405
|
+
ephemeral, hash-bound packet directory but does not copy agent authentication
|
|
406
|
+
or start an agent. The independent reviewer runs with a dedicated capsule HOME
|
|
407
|
+
in an ephemeral platform sandbox. Only the minimal supported reviewer auth file
|
|
408
|
+
is copied into that HOME. A reviewer formatting repair reuses that capsule copy
|
|
409
|
+
only after its SHA-256 still matches the owner source; changed, symlinked, or
|
|
410
|
+
non-owner-only authentication stops execution instead of being overwritten. For Claude, an
|
|
373
411
|
owner-only user `settings.json` is never
|
|
374
412
|
copied; only the whitelisted API key/token and HTTPS base URL fields from its
|
|
375
413
|
`env` object are injected in memory. Permissions, hooks, additional directories,
|
|
@@ -377,75 +415,70 @@ and unrelated settings are not admitted. Codex project-root discovery is
|
|
|
377
415
|
terminated by a capsule-local marker/config override, so a parent workspace
|
|
378
416
|
`.codex/config.toml` is neither required nor made readable. The workspace
|
|
379
417
|
credential file and the rest of the host home are not admitted. Production
|
|
380
|
-
doctor is blocked until
|
|
381
|
-
|
|
382
|
-
smoke
|
|
383
|
-
output schema, and the
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
418
|
+
doctor is blocked until `--agent-smoke` actually starts the independent reviewer
|
|
419
|
+
inside this boundary. The native producer is verified as the current host and
|
|
420
|
+
is never smoke-tested as a child process. A successful smoke creates a 24-hour
|
|
421
|
+
attestation bound to workspace config, capability lock, output schema, and the
|
|
422
|
+
resolved reviewer binary/wrapper fingerprints. Production review stops before
|
|
423
|
+
invocation if the attestation expires or any bound value drifts. While that
|
|
424
|
+
attestation remains current, a plain `workspace doctor` revalidates its hashes
|
|
425
|
+
and the current reviewer runtime fingerprint before reuse. Passing the smoke
|
|
426
|
+
flags explicitly performs fresh checks instead; missing, expired, or drifted
|
|
427
|
+
attestations remain blocking and include the refresh action. Use the exact
|
|
428
|
+
`codex` / `claude` route by default. A custom reviewer wrapper must use an
|
|
391
429
|
absolute `binary` plus an absolute `wrapperTargetBinary`; the runtime injects
|
|
392
430
|
the resolved target path and independently hashes the target executable, route
|
|
393
431
|
launcher/wrapper, and internal adapter. A wrapper that performs an unpinned
|
|
394
432
|
PATH lookup is not a reproducible route.
|
|
395
433
|
|
|
396
|
-
The CLI owns the authoritative JSON Schemas for discovery,
|
|
397
|
-
synthesis, and review. Inspect one with
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
434
|
+
The CLI owns the authoritative JSON Schemas for discovery, acquisition,
|
|
435
|
+
analysis, synthesis, and review. Inspect one with
|
|
436
|
+
`research schema show <stage> --json`.
|
|
437
|
+
Native producer preparation returns the exact schema and prompt to the current
|
|
438
|
+
host; `stage submit` validates and atomically materializes its JSON. A rejected
|
|
439
|
+
native submission keeps the bound session for an explicit correction and never
|
|
440
|
+
launches a repair model. The independent reviewer receives its schema through
|
|
441
|
+
the reviewer CLI's structured-output option; a reviewer syntax/schema or
|
|
442
|
+
mechanical binding failure gets at most one separately budgeted formatting-only
|
|
443
|
+
repair with no research tools.
|
|
404
444
|
|
|
405
445
|
Total, per-package, output, repair, broker-response bytes, estimated broker
|
|
406
446
|
context tokens, context items, wall-time, output-count, output-size, and attempt
|
|
407
447
|
limits live in `.tiangong-research/config.json`.
|
|
408
|
-
New workspaces
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
flag, so its turn allowance is reservation guidance plus post-execution
|
|
443
|
-
accounting and rejection. Usage records separate input, cached-input, and output
|
|
444
|
-
tokens; `inputTokens` excludes
|
|
445
|
-
the separately reported cached portion. Configured pricing fills cost when the
|
|
446
|
-
provider does not report it. Run records and JSONL progress also preserve
|
|
447
|
-
sanitized event/item counts, provider turns, tool calls, reasoning tokens, and
|
|
448
|
-
bounded provider errors.
|
|
448
|
+
New production workspaces use generous but finite runaway ceilings: 20,000,000
|
|
449
|
+
total tokens and package ceilings of 12,000,000 for discovery, 2,000,000 for
|
|
450
|
+
acquisition, 1,500,000 each for analysis and synthesis, and 2,500,000 for
|
|
451
|
+
review. Primary output is bounded at 32,000 tokens and a separately invoked
|
|
452
|
+
repair at 16,000. The production broker hard ceiling is 256 bounded views with
|
|
453
|
+
32,000 context tokens per view; input context is bounded at 128,000 tokens.
|
|
454
|
+
These values are not a target spend. Coverage-derived working plans and early
|
|
455
|
+
stop control ordinary use, while the finite ceilings, three attempts per
|
|
456
|
+
package, and explicit confirmation above the cost threshold stop runaway work.
|
|
457
|
+
Smoke-test workspaces retain their smaller low-cost defaults.
|
|
458
|
+
Before project initialization and every executable package, the control plane
|
|
459
|
+
requires the complete token and conservative price reservation to fit. Native
|
|
460
|
+
producer stages reserve prompt, schema, admitted context, bounded broker
|
|
461
|
+
context, and output allowance, but the host app does not expose trusted
|
|
462
|
+
per-stage usage telemetry to this CLI. A successful native submit therefore
|
|
463
|
+
charges the full reviewed package reservation and records
|
|
464
|
+
`accountingMode=reserved-native-host`; submit still enforces the exact schema,
|
|
465
|
+
output bytes/tokens, provenance, coverage, hashes, and remaining project budget.
|
|
466
|
+
It does not claim a provider-side turn or output-token cap for the host app.
|
|
467
|
+
|
|
468
|
+
Independent review uses the pre-call reservation calculator and the reviewer's
|
|
469
|
+
provider-side structured-output/turn controls where available. Review admission
|
|
470
|
+
reserves three maximum-size generated artifacts plus one globally bounded
|
|
471
|
+
evidence-excerpt bundle, and formatting repair remains one separately budgeted,
|
|
472
|
+
tool-free JSON correction. Production workspaces enforce a finite 256-view
|
|
473
|
+
broker ceiling mechanically, while each project derives a much smaller working
|
|
474
|
+
budget from its reviewed coverage requirements and stops early when they are
|
|
475
|
+
supportable. Every successful native evidence fetch reports the remaining
|
|
476
|
+
working budget; excess calls are rejected before another provider request or
|
|
477
|
+
evidence promotion. Reviewer usage records separate input, cached-input, and
|
|
478
|
+
output tokens; configured pricing fills cost when the provider omits it. Run
|
|
479
|
+
records and JSONL progress preserve sanitized accounting mode, event/item
|
|
480
|
+
counts, provider turns, tool calls, reasoning tokens, and bounded provider
|
|
481
|
+
errors.
|
|
449
482
|
|
|
450
483
|
Every evidence source must resolve to an admitted input or a completed broker
|
|
451
484
|
receipt. Successful broker bodies are immutable content-addressed objects under
|
|
@@ -459,20 +492,23 @@ context, broker objects, and registered local input hashes before recording
|
|
|
459
492
|
their safe locators. Capsule deletion therefore does not delete the durable
|
|
460
493
|
review chain.
|
|
461
494
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
Analyze and synthesize
|
|
471
|
-
|
|
495
|
+
Native discovery preparation embeds the exact staged capability manifest and
|
|
496
|
+
each external Skill's top-level `SKILL.md`. The current host may fetch admitted
|
|
497
|
+
evidence only with `research project evidence fetch`, whose bounded request file
|
|
498
|
+
contains logical IDs but no credential values. The manifest includes the locked,
|
|
499
|
+
non-secret HTTPS endpoint rather than only its host, and each response returns
|
|
500
|
+
the exact bounded context plus a hash-bound receipt while retaining the raw
|
|
501
|
+
object in the permanent evidence store. Host web/search/database tools cannot
|
|
502
|
+
substitute for a required broker receipt.
|
|
503
|
+
Analyze and synthesize packets contain bounded, hash-verified prior-stage
|
|
504
|
+
artifacts and require no external evidence calls. Review is tool-free and uses the
|
|
472
505
|
reviewer's route-specific structured-output turn cap:
|
|
473
506
|
its prompt embeds the complete generated artifacts and a deterministic,
|
|
474
507
|
globally bounded set of excerpts distributed across registered local contexts
|
|
475
|
-
and broker receipts.
|
|
508
|
+
and broker receipts. Broker excerpts prioritize deterministic, sanitized
|
|
509
|
+
projections of the exact raw-response items selected by admitted evidence JSON
|
|
510
|
+
Pointers; uncited receipts retain metadata-only bindings, and unresolved
|
|
511
|
+
pointers receive a bounded-context fallback. The packet hash is schema-bound, but complete packet
|
|
476
512
|
metadata is not redundantly copied into model context. Full local files,
|
|
477
513
|
original per-receipt bounded contexts, raw broker objects, and the complete
|
|
478
514
|
packet remain hash-bound for durable human/mechanical audit; the model must not
|
|
@@ -547,21 +583,27 @@ tiangong-ai research capability credential set \
|
|
|
547
583
|
|
|
548
584
|
The broker injects declared credentials only for admitted HTTPS hosts. Agent
|
|
549
585
|
processes do not receive this variable. Keep the file owner-only (`chmod 600`)
|
|
550
|
-
and run
|
|
551
|
-
|
|
586
|
+
and run the production setup/workspace doctor before a run. Setup doctor reuses
|
|
587
|
+
one capability probe and never starts the paid reviewer smoke while a blocking
|
|
588
|
+
static or low-cost prerequisite is already failing.
|
|
552
589
|
Capability doctor retries only one 429 response with bounded `Retry-After`
|
|
553
590
|
backoff; deterministic 4xx, missing subscription, authentication, drift, and
|
|
554
591
|
content-type failures stop explicitly. It retains only a bounded sanitized
|
|
555
592
|
provider code/detail and safe request ID, with an actionable baseline-or-
|
|
556
|
-
subscription decision for `OPTION_NOT_IN_PLAN`.
|
|
557
|
-
|
|
593
|
+
subscription decision for `OPTION_NOT_IN_PLAN`. Required evidence/reviewer
|
|
594
|
+
failures make `researchReadiness=BLOCKED`. Optional preprocessing, acquisition,
|
|
595
|
+
and authoring checks have separate readiness fields; they block only a project
|
|
596
|
+
or operation that explicitly lists the exact component in
|
|
597
|
+
`requiredCompanionIds`.
|
|
558
598
|
Credential diagnostics distinguish standalone ambient absence,
|
|
559
599
|
broker-store absence, policy-rejected injection, and provider 401/403. Every
|
|
560
600
|
such diagnostic identifies the execution mode, credential scope, whether a
|
|
561
601
|
network request occurred, and a minimum action without returning credentials
|
|
562
|
-
or raw authentication responses. The optional Semantic Scholar
|
|
563
|
-
performs only one bounded 429 retry
|
|
564
|
-
|
|
602
|
+
or raw authentication responses. The optional Semantic Scholar resolver check
|
|
603
|
+
also performs only one bounded 429 retry. A second 429 leaves acquisition
|
|
604
|
+
`DEGRADED`, does not block unrelated research, and never triggers a standalone
|
|
605
|
+
fallback; the academic adapter can still use its unchanged Unpaywall → Semantic
|
|
606
|
+
Scholar OA → arXiv → explicit browser-handoff order.
|
|
565
607
|
The broker preserves a sanitized non-2xx excerpt, safe request ID, and
|
|
566
608
|
`Retry-After`. It performs at most one inline 429 retry when the declared or
|
|
567
609
|
default delay is at most five seconds; longer throttles return an actionable
|