@tiangong-ai/cli 0.0.51 → 0.0.56

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 (216) hide show
  1. package/AGENTS.md +22 -2
  2. package/README.md +171 -7
  3. package/dist/cli.js +10 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/data/builtins.d.ts +1 -0
  6. package/dist/data/builtins.js +40 -0
  7. package/dist/data/builtins.js.map +1 -0
  8. package/dist/data/catalog.d.ts +25 -0
  9. package/dist/data/catalog.js +305 -0
  10. package/dist/data/catalog.js.map +1 -0
  11. package/dist/data/commands.d.ts +9 -0
  12. package/dist/data/commands.js +307 -0
  13. package/dist/data/commands.js.map +1 -0
  14. package/dist/data/connectors/airnow-hourly-observations.d.ts +2 -0
  15. package/dist/data/connectors/airnow-hourly-observations.js +522 -0
  16. package/dist/data/connectors/airnow-hourly-observations.js.map +1 -0
  17. package/dist/data/connectors/airnow-hourly-observations.schemas.d.ts +299 -0
  18. package/dist/data/connectors/airnow-hourly-observations.schemas.js +188 -0
  19. package/dist/data/connectors/airnow-hourly-observations.schemas.js.map +1 -0
  20. package/dist/data/connectors/bluesky-public-posts.d.ts +2 -0
  21. package/dist/data/connectors/bluesky-public-posts.js +705 -0
  22. package/dist/data/connectors/bluesky-public-posts.js.map +1 -0
  23. package/dist/data/connectors/bluesky-public-posts.schemas.d.ts +733 -0
  24. package/dist/data/connectors/bluesky-public-posts.schemas.js +422 -0
  25. package/dist/data/connectors/bluesky-public-posts.schemas.js.map +1 -0
  26. package/dist/data/connectors/epa-eis-records.d.ts +2 -0
  27. package/dist/data/connectors/epa-eis-records.js +566 -0
  28. package/dist/data/connectors/epa-eis-records.js.map +1 -0
  29. package/dist/data/connectors/epa-eis-records.schemas.d.ts +199 -0
  30. package/dist/data/connectors/epa-eis-records.schemas.js +146 -0
  31. package/dist/data/connectors/epa-eis-records.schemas.js.map +1 -0
  32. package/dist/data/connectors/federal-register-documents.d.ts +2 -0
  33. package/dist/data/connectors/federal-register-documents.js +517 -0
  34. package/dist/data/connectors/federal-register-documents.js.map +1 -0
  35. package/dist/data/connectors/federal-register-documents.schemas.d.ts +357 -0
  36. package/dist/data/connectors/federal-register-documents.schemas.js +243 -0
  37. package/dist/data/connectors/federal-register-documents.schemas.js.map +1 -0
  38. package/dist/data/connectors/gdelt-doc-search.d.ts +2 -0
  39. package/dist/data/connectors/gdelt-doc-search.js +658 -0
  40. package/dist/data/connectors/gdelt-doc-search.js.map +1 -0
  41. package/dist/data/connectors/gdelt-doc-search.schemas.d.ts +446 -0
  42. package/dist/data/connectors/gdelt-doc-search.schemas.js +330 -0
  43. package/dist/data/connectors/gdelt-doc-search.schemas.js.map +1 -0
  44. package/dist/data/connectors/gdelt-file-feeds.d.ts +4 -0
  45. package/dist/data/connectors/gdelt-file-feeds.js +591 -0
  46. package/dist/data/connectors/gdelt-file-feeds.js.map +1 -0
  47. package/dist/data/connectors/gdelt-file-feeds.schemas.d.ts +40 -0
  48. package/dist/data/connectors/gdelt-file-feeds.schemas.js +256 -0
  49. package/dist/data/connectors/gdelt-file-feeds.schemas.js.map +1 -0
  50. package/dist/data/connectors/nasa-firms-fire.d.ts +2 -0
  51. package/dist/data/connectors/nasa-firms-fire.js +578 -0
  52. package/dist/data/connectors/nasa-firms-fire.js.map +1 -0
  53. package/dist/data/connectors/nasa-firms-fire.schemas.d.ts +369 -0
  54. package/dist/data/connectors/nasa-firms-fire.schemas.js +238 -0
  55. package/dist/data/connectors/nasa-firms-fire.schemas.js.map +1 -0
  56. package/dist/data/connectors/open-meteo-air-quality.d.ts +2 -0
  57. package/dist/data/connectors/open-meteo-air-quality.js +401 -0
  58. package/dist/data/connectors/open-meteo-air-quality.js.map +1 -0
  59. package/dist/data/connectors/open-meteo-air-quality.schemas.d.ts +335 -0
  60. package/dist/data/connectors/open-meteo-air-quality.schemas.js +225 -0
  61. package/dist/data/connectors/open-meteo-air-quality.schemas.js.map +1 -0
  62. package/dist/data/connectors/open-meteo-flood.d.ts +2 -0
  63. package/dist/data/connectors/open-meteo-flood.js +446 -0
  64. package/dist/data/connectors/open-meteo-flood.js.map +1 -0
  65. package/dist/data/connectors/open-meteo-flood.schemas.d.ts +388 -0
  66. package/dist/data/connectors/open-meteo-flood.schemas.js +227 -0
  67. package/dist/data/connectors/open-meteo-flood.schemas.js.map +1 -0
  68. package/dist/data/connectors/open-meteo-historical-weather.d.ts +2 -0
  69. package/dist/data/connectors/open-meteo-historical-weather.js +468 -0
  70. package/dist/data/connectors/open-meteo-historical-weather.js.map +1 -0
  71. package/dist/data/connectors/open-meteo-historical-weather.schemas.d.ts +420 -0
  72. package/dist/data/connectors/open-meteo-historical-weather.schemas.js +282 -0
  73. package/dist/data/connectors/open-meteo-historical-weather.schemas.js.map +1 -0
  74. package/dist/data/connectors/openaq-air-quality.d.ts +2 -0
  75. package/dist/data/connectors/openaq-air-quality.js +734 -0
  76. package/dist/data/connectors/openaq-air-quality.js.map +1 -0
  77. package/dist/data/connectors/openaq-air-quality.schemas.d.ts +1067 -0
  78. package/dist/data/connectors/openaq-air-quality.schemas.js +512 -0
  79. package/dist/data/connectors/openaq-air-quality.schemas.js.map +1 -0
  80. package/dist/data/connectors/regulations-gov-attachments.d.ts +2 -0
  81. package/dist/data/connectors/regulations-gov-attachments.js +486 -0
  82. package/dist/data/connectors/regulations-gov-attachments.js.map +1 -0
  83. package/dist/data/connectors/regulations-gov-attachments.schemas.d.ts +270 -0
  84. package/dist/data/connectors/regulations-gov-attachments.schemas.js +181 -0
  85. package/dist/data/connectors/regulations-gov-attachments.schemas.js.map +1 -0
  86. package/dist/data/connectors/regulations-gov-comments.d.ts +2 -0
  87. package/dist/data/connectors/regulations-gov-comments.js +718 -0
  88. package/dist/data/connectors/regulations-gov-comments.js.map +1 -0
  89. package/dist/data/connectors/regulations-gov-comments.schemas.d.ts +717 -0
  90. package/dist/data/connectors/regulations-gov-comments.schemas.js +389 -0
  91. package/dist/data/connectors/regulations-gov-comments.schemas.js.map +1 -0
  92. package/dist/data/connectors/usbr-project-records.d.ts +2 -0
  93. package/dist/data/connectors/usbr-project-records.js +467 -0
  94. package/dist/data/connectors/usbr-project-records.js.map +1 -0
  95. package/dist/data/connectors/usbr-project-records.schemas.d.ts +194 -0
  96. package/dist/data/connectors/usbr-project-records.schemas.js +137 -0
  97. package/dist/data/connectors/usbr-project-records.schemas.js.map +1 -0
  98. package/dist/data/connectors/usbr-rise.d.ts +2 -0
  99. package/dist/data/connectors/usbr-rise.js +625 -0
  100. package/dist/data/connectors/usbr-rise.js.map +1 -0
  101. package/dist/data/connectors/usbr-rise.schemas.d.ts +623 -0
  102. package/dist/data/connectors/usbr-rise.schemas.js +407 -0
  103. package/dist/data/connectors/usbr-rise.schemas.js.map +1 -0
  104. package/dist/data/connectors/usgs-water-instantaneous-values.d.ts +2 -0
  105. package/dist/data/connectors/usgs-water-instantaneous-values.js +521 -0
  106. package/dist/data/connectors/usgs-water-instantaneous-values.js.map +1 -0
  107. package/dist/data/connectors/usgs-water-instantaneous-values.schemas.d.ts +496 -0
  108. package/dist/data/connectors/usgs-water-instantaneous-values.schemas.js +309 -0
  109. package/dist/data/connectors/usgs-water-instantaneous-values.schemas.js.map +1 -0
  110. package/dist/data/connectors/youtube-public-content.d.ts +2 -0
  111. package/dist/data/connectors/youtube-public-content.js +974 -0
  112. package/dist/data/connectors/youtube-public-content.js.map +1 -0
  113. package/dist/data/connectors/youtube-public-content.schemas.d.ts +773 -0
  114. package/dist/data/connectors/youtube-public-content.schemas.js +567 -0
  115. package/dist/data/connectors/youtube-public-content.schemas.js.map +1 -0
  116. package/dist/data/contracts.d.ts +374 -0
  117. package/dist/data/contracts.js +10 -0
  118. package/dist/data/contracts.js.map +1 -0
  119. package/dist/data/runtime/artifacts.d.ts +6 -0
  120. package/dist/data/runtime/artifacts.js +103 -0
  121. package/dist/data/runtime/artifacts.js.map +1 -0
  122. package/dist/data/runtime/bounded-http.d.ts +10 -0
  123. package/dist/data/runtime/bounded-http.js +403 -0
  124. package/dist/data/runtime/bounded-http.js.map +1 -0
  125. package/dist/data/runtime/canonical-json.d.ts +3 -0
  126. package/dist/data/runtime/canonical-json.js +59 -0
  127. package/dist/data/runtime/canonical-json.js.map +1 -0
  128. package/dist/data/runtime/credentials.d.ts +14 -0
  129. package/dist/data/runtime/credentials.js +67 -0
  130. package/dist/data/runtime/credentials.js.map +1 -0
  131. package/dist/data/runtime/csv.d.ts +4 -0
  132. package/dist/data/runtime/csv.js +51 -0
  133. package/dist/data/runtime/csv.js.map +1 -0
  134. package/dist/data/runtime/errors.d.ts +22 -0
  135. package/dist/data/runtime/errors.js +101 -0
  136. package/dist/data/runtime/errors.js.map +1 -0
  137. package/dist/data/runtime/execute.d.ts +11 -0
  138. package/dist/data/runtime/execute.js +358 -0
  139. package/dist/data/runtime/execute.js.map +1 -0
  140. package/dist/data/runtime/receipts.d.ts +13 -0
  141. package/dist/data/runtime/receipts.js +38 -0
  142. package/dist/data/runtime/receipts.js.map +1 -0
  143. package/dist/data/schemas/catalog.v1.json +73 -0
  144. package/dist/data/schemas/core-receipt.v1.json +117 -0
  145. package/dist/data/schemas/describe.v1.json +24 -0
  146. package/dist/data/schemas/discovery.v1.json +130 -0
  147. package/dist/data/schemas/doctor.v1.json +40 -0
  148. package/dist/data/schemas/error.v1.json +48 -0
  149. package/dist/data/schemas/manifest.v1.json +174 -0
  150. package/dist/data/schemas/run-request.v1.json +37 -0
  151. package/dist/data/schemas/run-result.v1.json +77 -0
  152. package/dist/data/schemas.d.ts +27 -0
  153. package/dist/data/schemas.js +69 -0
  154. package/dist/data/schemas.js.map +1 -0
  155. package/dist/env.js.map +1 -1
  156. package/dist/errors.js.map +1 -1
  157. package/dist/http.js.map +1 -1
  158. package/dist/kb/config.js.map +1 -1
  159. package/dist/kb/pipeline-health.js.map +1 -1
  160. package/dist/research/orchestration.js +54 -7
  161. package/dist/research/orchestration.js.map +1 -1
  162. package/dist/research/workspace/acquisition.js.map +1 -1
  163. package/dist/research/workspace/audit-bundle.js +7 -2
  164. package/dist/research/workspace/audit-bundle.js.map +1 -1
  165. package/dist/research/workspace/broker.js.map +1 -1
  166. package/dist/research/workspace/constants.js.map +1 -1
  167. package/dist/research/workspace/credentials.d.ts +3 -0
  168. package/dist/research/workspace/credentials.js +20 -3
  169. package/dist/research/workspace/credentials.js.map +1 -1
  170. package/dist/research/workspace/data-evidence-adapter.d.ts +60 -0
  171. package/dist/research/workspace/data-evidence-adapter.js +314 -0
  172. package/dist/research/workspace/data-evidence-adapter.js.map +1 -0
  173. package/dist/research/workspace/discovery-status.js +10 -7
  174. package/dist/research/workspace/discovery-status.js.map +1 -1
  175. package/dist/research/workspace/discovery.js +12 -11
  176. package/dist/research/workspace/discovery.js.map +1 -1
  177. package/dist/research/workspace/evidence-ledger.d.ts +8 -1
  178. package/dist/research/workspace/evidence-ledger.js +46 -2
  179. package/dist/research/workspace/evidence-ledger.js.map +1 -1
  180. package/dist/research/workspace/evidence.d.ts +31 -0
  181. package/dist/research/workspace/evidence.js +77 -0
  182. package/dist/research/workspace/evidence.js.map +1 -1
  183. package/dist/research/workspace/executor.js.map +1 -1
  184. package/dist/research/workspace/external-skills.d.ts +49 -49
  185. package/dist/research/workspace/external-skills.js.map +1 -1
  186. package/dist/research/workspace/platform-capabilities.js.map +1 -1
  187. package/dist/research/workspace/preflight.d.ts +4 -4
  188. package/dist/research/workspace/preflight.js +33 -8
  189. package/dist/research/workspace/preflight.js.map +1 -1
  190. package/dist/research/workspace/projects.js.map +1 -1
  191. package/dist/research/workspace/publication.js.map +1 -1
  192. package/dist/research/workspace/research-policy-wizard.js.map +1 -1
  193. package/dist/research/workspace/research-policy.js.map +1 -1
  194. package/dist/research/workspace/runtime.d.ts +7 -0
  195. package/dist/research/workspace/runtime.js +77 -20
  196. package/dist/research/workspace/runtime.js.map +1 -1
  197. package/dist/research/workspace/sanitization.js.map +1 -1
  198. package/dist/research/workspace/schemas.js +1 -1
  199. package/dist/research/workspace/schemas.js.map +1 -1
  200. package/dist/research/workspace/scientific-design.js.map +1 -1
  201. package/dist/research/workspace/scientific-review.js.map +1 -1
  202. package/dist/research/workspace/setup-catalog.d.ts +9 -9
  203. package/dist/research/workspace/setup-catalog.js +2 -2
  204. package/dist/research/workspace/setup-catalog.js.map +1 -1
  205. package/dist/research/workspace/setup-declarative.js.map +1 -1
  206. package/dist/research/workspace/setup-instructions.d.ts +42 -0
  207. package/dist/research/workspace/setup-instructions.js +413 -0
  208. package/dist/research/workspace/setup-instructions.js.map +1 -0
  209. package/dist/research/workspace/setup-invocation.js.map +1 -1
  210. package/dist/research/workspace/setup-wizard.js +7 -0
  211. package/dist/research/workspace/setup-wizard.js.map +1 -1
  212. package/dist/research/workspace/setup.d.ts +18 -15
  213. package/dist/research/workspace/setup.js +71 -3
  214. package/dist/research/workspace/setup.js.map +1 -1
  215. package/dist/research/workspace/workspace.js.map +1 -1
  216. package/package.json +3 -3
@@ -0,0 +1,625 @@
1
+ import { DATA_MANIFEST_SCHEMA_VERSION } from "../contracts.js";
2
+ import { DataRuntimeError } from "../runtime/errors.js";
3
+ import { USBR_RISE_DISCOVER_ITEMS_INPUT_SCHEMA, USBR_RISE_DISCOVER_ITEMS_OUTPUT_SCHEMA, USBR_RISE_FETCH_RESULTS_INPUT_SCHEMA, USBR_RISE_FETCH_RESULTS_OUTPUT_SCHEMA, } from "./usbr-rise.schemas.js";
4
+ const CATALOG_PATH = "/rise/api/catalog-item";
5
+ const RESULT_PATH = "/rise/api/result";
6
+ const DEFAULT_PAGE_SIZE = 100;
7
+ const LIST_SEMANTICS = "Catalog candidates are returned in provider scan order after client-side filtering; this is not source ranking or evidence weighting.";
8
+ export const usbrRiseConnector = {
9
+ schemaVersion: DATA_MANIFEST_SCHEMA_VERSION,
10
+ capabilityId: "usbr.rise",
11
+ capabilityVersion: "1.0.0",
12
+ minimumCliVersion: "0.0.55",
13
+ provider: {
14
+ providerId: "usbr-rise",
15
+ name: "Bureau of Reclamation Research and Information Sharing Environment",
16
+ },
17
+ sourceCategory: "water-operations-time-series",
18
+ endpoints: [
19
+ {
20
+ endpointId: "usbr-rise-api",
21
+ baseUrl: "https://data.usbr.gov",
22
+ pathPrefixes: ["/rise/api/"],
23
+ allowedMethods: ["GET"],
24
+ allowedContentTypes: ["application/json", "application/ld+json"],
25
+ },
26
+ ],
27
+ license: {
28
+ name: "USBR RISE public data",
29
+ url: "https://data.usbr.gov/rise",
30
+ restrictions: [
31
+ "Catalog and result metadata remain subject to the source-specific disclaimer published with each RISE item.",
32
+ "A catalog candidate is not provider ranking, evidence weighting, or proof of record completeness.",
33
+ "Operational values require item metadata and domain context before interpretation.",
34
+ ],
35
+ },
36
+ credentials: [],
37
+ limits: {
38
+ timeoutMs: 60_000,
39
+ maxRequestBytes: 2_048,
40
+ maxResponseBytes: 20_000_000,
41
+ maxPages: 20,
42
+ maxRecords: 2_000,
43
+ maxRetries: 4,
44
+ maxRetryDelayMs: 120_000,
45
+ maxRedirects: 1,
46
+ },
47
+ diagnostics: { static: true, live: false },
48
+ freshness: {
49
+ kind: "provider-current",
50
+ description: "Catalog metadata and result rows reflect the public RISE API at request time and may be updated by the Bureau of Reclamation.",
51
+ },
52
+ limitations: [
53
+ "Catalog discovery scans provider pages and applies filters client-side; a page cap can omit later matching items.",
54
+ "Result retrieval requires explicit catalog item identifiers and is bounded by item, page, record, byte, and timeout limits.",
55
+ "Sparse or missing rows can reflect item selection, date filters, provider latency, page limits, or metadata availability.",
56
+ "The connector does not determine shortage severity, operating compliance, attribution, governance responsibility, or report readiness.",
57
+ ],
58
+ discovery: {
59
+ source: {
60
+ maintainedBy: "United States Bureau of Reclamation",
61
+ summary: "Public RISE catalog metadata and operational or water-environment time-series result rows.",
62
+ description: "The Research and Information Sharing Environment exposes catalog items describing USBR locations and parameters and result rows associated with explicit item identifiers.",
63
+ coverage: {
64
+ geographic: "Bureau of Reclamation projects, facilities, monitoring locations, and program datasets represented in RISE.",
65
+ temporal: "Item-specific temporal coverage published in catalog metadata and current result availability in the RISE API.",
66
+ granularity: "One catalog item or one item/location/parameter/timestamp result row.",
67
+ },
68
+ },
69
+ summary: "Discover USBR RISE item IDs and fetch bounded result rows for explicit items.",
70
+ description: "This capability separates client-filtered catalog discovery from explicit-item result retrieval so an Agent can ground item identifiers before requesting operational time series.",
71
+ provides: [
72
+ "Bounded catalog-page scanning with item, location, parameter, source, unit, temporal, landing-page, and spatial metadata.",
73
+ "Explicit item-ID result retrieval with optional location, parameter, timestamp, and ordering filters.",
74
+ "Optional item metadata enrichment plus item/page-level partial coverage and core execution receipts.",
75
+ ],
76
+ doesNotProvide: [
77
+ "Full-text project documents, USBR-wide website search, field definitions beyond provider metadata, or cross-source joins.",
78
+ "Shortage, drought, flood, compliance, causality, policy, or governance conclusions.",
79
+ "Evidence ranking, automatic selection of the correct item ID, or proof that a bounded catalog scan is exhaustive.",
80
+ ],
81
+ selectionHints: [
82
+ "Use discover-items when a place or parameter is known but an official RISE item ID has not been grounded.",
83
+ "Use fetch-results only with explicit item IDs supported by catalog discovery or another official record.",
84
+ "Increase the approved page limit or refine terms when discovery stops at a page cap; do not interpret zero candidates as real-world absence.",
85
+ "Retain item-level disclaimer, unit, timestep, transformation, and source-code context when interpreting result values.",
86
+ ],
87
+ typicalUseCases: [
88
+ "Discover candidate Lake Powell elevation, storage, inflow, or release item identifiers.",
89
+ "Retrieve a bounded time window of result rows for a known reservoir or dam operation item.",
90
+ ],
91
+ sourceDocumentation: [
92
+ {
93
+ title: "USBR RISE",
94
+ url: "https://data.usbr.gov/rise",
95
+ },
96
+ {
97
+ title: "USBR RISE API entry point",
98
+ url: "https://data.usbr.gov/rise/api",
99
+ },
100
+ ],
101
+ },
102
+ operations: [
103
+ {
104
+ operationId: "discover-items",
105
+ operationVersion: "1.0.0",
106
+ summary: "Scan bounded RISE catalog pages and return client-filtered candidate item IDs.",
107
+ description: "Retrieves catalog-item pages in provider order, normalizes public item metadata, applies all requested terms and filters client-side, and reports page or record truncation explicitly.",
108
+ inputSchema: USBR_RISE_DISCOVER_ITEMS_INPUT_SCHEMA,
109
+ outputSchema: USBR_RISE_DISCOVER_ITEMS_OUTPUT_SCHEMA,
110
+ execute: executeDiscoverItems,
111
+ },
112
+ {
113
+ operationId: "fetch-results",
114
+ operationVersion: "1.0.0",
115
+ summary: "Fetch bounded RISE result rows for explicit catalog item IDs.",
116
+ description: "Retrieves result pages for caller-supplied item IDs, optionally enriches rows with catalog metadata, and isolates later item or page failures without converting them into evidence absence.",
117
+ inputSchema: USBR_RISE_FETCH_RESULTS_INPUT_SCHEMA,
118
+ outputSchema: USBR_RISE_FETCH_RESULTS_OUTPUT_SCHEMA,
119
+ execute: executeFetchResults,
120
+ },
121
+ ],
122
+ };
123
+ async function executeDiscoverItems(context) {
124
+ const query = normalizeDiscoverInput(context.input);
125
+ const records = [];
126
+ const pages = [];
127
+ const observations = [];
128
+ const warnings = [];
129
+ let stopReason = "completed";
130
+ let failedPage = null;
131
+ let failure;
132
+ if (!hasDiscoveryFilter(query)) {
133
+ warnings.push("No catalog query or filter was supplied; candidates reflect bounded provider scan order only.");
134
+ }
135
+ for (let offset = 0; offset < context.limits.maxPages; offset += 1) {
136
+ const pageNumber = query.startPage + offset;
137
+ try {
138
+ const response = await context.http.request({
139
+ endpointId: "usbr-rise-api",
140
+ method: "GET",
141
+ path: CATALOG_PATH,
142
+ query: { itemsPerPage: query.pageSize, page: pageNumber },
143
+ });
144
+ const parsed = parseProviderPage(response.json(), `catalog page ${pageNumber}`);
145
+ observations.push({ ...response.observation, sourceId: `catalog-page:${pageNumber}` });
146
+ const normalized = parsed.members.map((member) => normalizeCatalogRecord(member, pageNumber));
147
+ const matching = normalized.filter((item) => catalogItemMatches(item, query));
148
+ const remaining = context.limits.maxRecords - records.length;
149
+ const selected = matching.slice(0, remaining);
150
+ records.push(...selected);
151
+ pages.push({
152
+ pageNumber,
153
+ providerTotalItems: parsed.totalItems,
154
+ providerMemberCount: parsed.members.length,
155
+ matchedRecordCount: selected.length,
156
+ });
157
+ if (matching.length > selected.length || records.length >= context.limits.maxRecords) {
158
+ stopReason = "max-records";
159
+ break;
160
+ }
161
+ if (!parsed.hasNext) {
162
+ stopReason = records.length === 0 && offset === 0 ? "no-results" : "completed";
163
+ break;
164
+ }
165
+ if (offset + 1 >= context.limits.maxPages) {
166
+ stopReason = "max-pages";
167
+ break;
168
+ }
169
+ }
170
+ catch (error) {
171
+ if (observations.length === 0)
172
+ throw normalizeProviderFailure(error);
173
+ failedPage = pageNumber;
174
+ failure = error;
175
+ stopReason = "partial";
176
+ break;
177
+ }
178
+ }
179
+ if (stopReason === "max-pages") {
180
+ warnings.push("Catalog scanning reached the page limit; zero or sparse candidates do not prove that matching RISE items are absent.");
181
+ }
182
+ const partial = failedPage !== null;
183
+ const errors = partial
184
+ ? [partialError("A later RISE catalog page could not be retrieved or validated.", failure)]
185
+ : [];
186
+ return {
187
+ status: partial ? "partial" : "success",
188
+ data: {
189
+ source: sourceDescriptor(CATALOG_PATH),
190
+ query,
191
+ candidateItemIds: records.map((record) => record.itemId),
192
+ records,
193
+ pages,
194
+ listSemantics: LIST_SEMANTICS,
195
+ stopReason,
196
+ },
197
+ summary: {
198
+ recordCount: records.length,
199
+ pageCount: pages.length,
200
+ chunkCount: 0,
201
+ truncated: stopReason === "max-pages" || stopReason === "max-records",
202
+ completeness: partial ? "partial" : "complete",
203
+ ...(failedPage === null
204
+ ? {}
205
+ : { missing: [{ kind: "page", identifiers: [String(failedPage)] }] }),
206
+ },
207
+ warnings,
208
+ errors,
209
+ observations,
210
+ };
211
+ }
212
+ async function executeFetchResults(context) {
213
+ const query = normalizeFetchInput(context.input);
214
+ const records = [];
215
+ const pages = [];
216
+ const itemMetadata = {};
217
+ const observations = [];
218
+ const warnings = [];
219
+ const missing = [];
220
+ let stopReason = "completed";
221
+ let partialFailure;
222
+ for (const itemId of query.itemIds) {
223
+ let metadata = emptyItemMetadata(itemId);
224
+ if (query.includeItemMetadata) {
225
+ try {
226
+ const response = await context.http.request({
227
+ endpointId: "usbr-rise-api",
228
+ method: "GET",
229
+ path: `${CATALOG_PATH}/${encodeURIComponent(itemId)}`,
230
+ });
231
+ metadata = normalizeItemMetadata(requireObject(response.json(), "catalog item"), itemId);
232
+ observations.push({ ...response.observation, sourceId: `item-metadata:${itemId}` });
233
+ }
234
+ catch (error) {
235
+ warnings.push(`Catalog metadata could not be retrieved for item ${itemId}; result rows retain available provider fields.`);
236
+ if (error instanceof DataRuntimeError && error.code === "credential-invalid")
237
+ throw error;
238
+ }
239
+ }
240
+ itemMetadata[itemId] = metadata;
241
+ for (let offset = 0; offset < context.limits.maxPages; offset += 1) {
242
+ const pageNumber = query.startPage + offset;
243
+ try {
244
+ const response = await context.http.request({
245
+ endpointId: "usbr-rise-api",
246
+ method: "GET",
247
+ path: RESULT_PATH,
248
+ query: buildResultQuery(query, itemId, pageNumber),
249
+ });
250
+ const parsed = parseProviderPage(response.json(), `result item ${itemId} page ${pageNumber}`);
251
+ observations.push({
252
+ ...response.observation,
253
+ sourceId: `result:${itemId}:page:${pageNumber}`,
254
+ });
255
+ const normalized = parsed.members.map((member) => normalizeResultRecord(member, metadata, pageNumber));
256
+ const remaining = context.limits.maxRecords - records.length;
257
+ const selected = normalized.slice(0, remaining);
258
+ records.push(...selected);
259
+ pages.push({
260
+ itemId,
261
+ pageNumber,
262
+ providerTotalItems: parsed.totalItems,
263
+ recordCount: selected.length,
264
+ });
265
+ if (normalized.length > selected.length || records.length >= context.limits.maxRecords) {
266
+ stopReason = "max-records";
267
+ break;
268
+ }
269
+ if (!parsed.hasNext)
270
+ break;
271
+ if (offset + 1 >= context.limits.maxPages) {
272
+ stopReason = "max-pages";
273
+ break;
274
+ }
275
+ }
276
+ catch (error) {
277
+ if (observations.length === 0)
278
+ throw normalizeProviderFailure(error);
279
+ missing.push(`item:${itemId}`);
280
+ partialFailure = error;
281
+ stopReason = "partial";
282
+ break;
283
+ }
284
+ }
285
+ if (stopReason === "max-records")
286
+ break;
287
+ }
288
+ if (stopReason === "completed" && records.length === 0)
289
+ stopReason = "no-results";
290
+ const partial = missing.length > 0;
291
+ const errors = partial
292
+ ? [partialError("One or more RISE item result ranges could not be retrieved.", partialFailure)]
293
+ : [];
294
+ return {
295
+ status: partial ? "partial" : "success",
296
+ data: {
297
+ source: sourceDescriptor(RESULT_PATH),
298
+ query,
299
+ itemMetadata,
300
+ records,
301
+ pages,
302
+ stopReason,
303
+ },
304
+ summary: {
305
+ recordCount: records.length,
306
+ pageCount: pages.length,
307
+ chunkCount: query.itemIds.length,
308
+ truncated: stopReason === "max-pages" || stopReason === "max-records",
309
+ completeness: partial ? "partial" : "complete",
310
+ ...(partial ? { missing: [{ kind: "range", identifiers: missing }] } : {}),
311
+ },
312
+ warnings,
313
+ errors,
314
+ observations,
315
+ };
316
+ }
317
+ function normalizeDiscoverInput(input) {
318
+ const queryTerms = (input.queryTerms ?? [])
319
+ .flatMap((value) => normalizeRequiredText(value, "queryTerms").replaceAll(",", " ").split(/\s+/u))
320
+ .filter(Boolean)
321
+ .map((value) => value.toLowerCase());
322
+ return {
323
+ queryTerms: [...new Set(queryTerms)],
324
+ itemTitleContains: optionalText(input.itemTitleContains, "itemTitleContains"),
325
+ locationNameContains: optionalText(input.locationNameContains, "locationNameContains"),
326
+ parameterNameContains: optionalText(input.parameterNameContains, "parameterNameContains"),
327
+ parameterId: optionalText(input.parameterId, "parameterId"),
328
+ locationId: optionalText(input.locationId, "locationId"),
329
+ sourceCode: optionalText(input.sourceCode, "sourceCode"),
330
+ startPage: input.startPage ?? 1,
331
+ pageSize: input.pageSize ?? DEFAULT_PAGE_SIZE,
332
+ };
333
+ }
334
+ function normalizeFetchInput(input) {
335
+ const itemIds = [
336
+ ...new Set((input.itemIds ?? []).map((item) => normalizeRequiredText(item, "itemIds"))),
337
+ ];
338
+ if (itemIds.length === 0) {
339
+ throw new DataRuntimeError("invalid-request", "At least one explicit RISE item ID is required.");
340
+ }
341
+ const afterUtc = optionalRfc3339(input.afterUtc, "afterUtc");
342
+ const beforeUtc = optionalRfc3339(input.beforeUtc, "beforeUtc");
343
+ if (afterUtc && beforeUtc && Date.parse(afterUtc) > Date.parse(beforeUtc)) {
344
+ throw new DataRuntimeError("invalid-request", "afterUtc must not follow beforeUtc.");
345
+ }
346
+ return {
347
+ itemIds,
348
+ locationId: optionalText(input.locationId, "locationId"),
349
+ parameterId: optionalText(input.parameterId, "parameterId"),
350
+ afterUtc,
351
+ beforeUtc,
352
+ orderDateTime: input.orderDateTime ?? "desc",
353
+ includeItemMetadata: input.includeItemMetadata ?? false,
354
+ startPage: input.startPage ?? 1,
355
+ pageSize: input.pageSize ?? DEFAULT_PAGE_SIZE,
356
+ };
357
+ }
358
+ function buildResultQuery(query, itemId, pageNumber) {
359
+ return {
360
+ itemId,
361
+ itemsPerPage: query.pageSize,
362
+ page: pageNumber,
363
+ ...(query.locationId === null ? {} : { locationId: query.locationId }),
364
+ ...(query.parameterId === null ? {} : { parameterId: query.parameterId }),
365
+ ...(query.afterUtc === null ? {} : { "dateTime[after]": query.afterUtc }),
366
+ ...(query.beforeUtc === null ? {} : { "dateTime[before]": query.beforeUtc }),
367
+ "order[dateTime]": query.orderDateTime,
368
+ };
369
+ }
370
+ function parseProviderPage(value, label) {
371
+ const payload = requireObject(value, label);
372
+ if (!Array.isArray(payload.member)) {
373
+ throw providerInvalid(`The RISE ${label} response does not contain a member array.`);
374
+ }
375
+ const members = payload.member.map((member, index) => requireObject(member, `${label} member ${index + 1}`));
376
+ const view = isObject(payload.view) ? payload.view : {};
377
+ return {
378
+ members,
379
+ totalItems: nonNegativeInteger(payload.totalItems),
380
+ hasNext: optionalString(view.next) !== null,
381
+ };
382
+ }
383
+ function normalizeCatalogRecord(payload, sourcePageNumber) {
384
+ const metadata = normalizeItemMetadata(payload);
385
+ return {
386
+ itemId: metadata.itemId,
387
+ itemApiPath: optionalString(payload["@id"]),
388
+ itemTitle: metadata.itemTitle,
389
+ itemDescription: metadata.itemDescription,
390
+ locationId: metadata.locationId,
391
+ locationName: metadata.locationName,
392
+ locationSourceCode: metadata.locationSourceCode,
393
+ parameterId: metadata.parameterId,
394
+ parameterName: metadata.parameterName,
395
+ parameterUnit: metadata.parameterUnit,
396
+ parameterGroup: metadata.parameterGroup,
397
+ parameterTimestep: metadata.parameterTimestep,
398
+ parameterTransformation: metadata.parameterTransformation,
399
+ sourceCode: metadata.sourceCode,
400
+ temporalStartDate: metadata.temporalStartDate,
401
+ temporalEndDate: metadata.temporalEndDate,
402
+ landingPage: metadata.landingPage,
403
+ spatial: metadata.spatial,
404
+ sourcePageNumber,
405
+ };
406
+ }
407
+ function normalizeItemMetadata(payload, fallbackItemId = "") {
408
+ const itemId = optionalString(payload.id) ?? fallbackItemId;
409
+ if (!itemId)
410
+ throw providerInvalid("A RISE catalog item is missing its item identifier.");
411
+ return {
412
+ itemId,
413
+ itemTitle: optionalString(payload.itemTitle) ?? optionalString(payload["dcat:title"]),
414
+ itemDescription: optionalString(payload.itemDescription) ?? optionalString(payload["dcat:description"]),
415
+ locationId: optionalString(payload.locationId),
416
+ locationName: optionalString(payload.locationName),
417
+ locationSourceCode: optionalString(payload.locationSourceCode),
418
+ parameterId: optionalString(payload.parameterId),
419
+ parameterName: optionalString(payload.parameterName),
420
+ parameterUnit: optionalString(payload.parameterUnit),
421
+ parameterGroup: optionalString(payload.parameterGroup),
422
+ parameterTimestep: optionalString(payload.parameterTimestep),
423
+ parameterTransformation: optionalString(payload.parameterTransformation),
424
+ sourceCode: optionalString(payload.sourceCode),
425
+ temporalStartDate: optionalString(payload.temporalStartDate),
426
+ temporalEndDate: optionalString(payload.temporalEndDate),
427
+ landingPage: optionalString(payload["dcat:landingPage"]),
428
+ providerDisclaimer: optionalString(payload.disclaimer),
429
+ spatial: normalizeSpatial(payload["dcat:spatial"]),
430
+ };
431
+ }
432
+ function normalizeResultRecord(payload, metadata, sourcePageNumber) {
433
+ const itemId = optionalString(payload.itemId) ?? metadata.itemId;
434
+ const locationId = optionalString(payload.locationId) ?? metadata.locationId;
435
+ const parameterId = optionalString(payload.parameterId) ?? metadata.parameterId;
436
+ const observedAtUtc = optionalString(payload.dateTime);
437
+ const value = resultValue(payload.result);
438
+ const coordinates = metadata.spatial?.coordinates ?? null;
439
+ const fallbackRecordId = [itemId, locationId, parameterId, observedAtUtc]
440
+ .filter((item) => item !== null)
441
+ .join(":");
442
+ return {
443
+ recordId: (optionalString(payload.id) ?? fallbackRecordId) || `${itemId}:page:${sourcePageNumber}`,
444
+ itemId,
445
+ locationId,
446
+ locationName: metadata.locationName,
447
+ parameterId,
448
+ parameterName: metadata.parameterName,
449
+ parameterUnit: metadata.parameterUnit,
450
+ parameterGroup: metadata.parameterGroup,
451
+ parameterTimestep: metadata.parameterTimestep,
452
+ parameterTransformation: metadata.parameterTransformation,
453
+ sourceCode: optionalString(payload.sourceCode) ?? metadata.sourceCode,
454
+ observedAtUtc,
455
+ value,
456
+ status: optionalString(payload.status),
457
+ lastUpdate: optionalString(payload.lastUpdate),
458
+ createDate: optionalString(payload.createDate),
459
+ updateDate: optionalString(payload.updateDate),
460
+ latitude: coordinates?.[1] ?? null,
461
+ longitude: coordinates?.[0] ?? null,
462
+ itemTitle: metadata.itemTitle,
463
+ itemDescription: metadata.itemDescription,
464
+ landingPage: metadata.landingPage,
465
+ providerDisclaimer: metadata.providerDisclaimer,
466
+ sourcePageNumber,
467
+ };
468
+ }
469
+ function emptyItemMetadata(itemId) {
470
+ return {
471
+ itemId,
472
+ itemTitle: null,
473
+ itemDescription: null,
474
+ locationId: null,
475
+ locationName: null,
476
+ locationSourceCode: null,
477
+ parameterId: null,
478
+ parameterName: null,
479
+ parameterUnit: null,
480
+ parameterGroup: null,
481
+ parameterTimestep: null,
482
+ parameterTransformation: null,
483
+ sourceCode: null,
484
+ temporalStartDate: null,
485
+ temporalEndDate: null,
486
+ landingPage: null,
487
+ providerDisclaimer: null,
488
+ spatial: null,
489
+ };
490
+ }
491
+ function catalogItemMatches(item, query) {
492
+ const searchable = [
493
+ item.itemId,
494
+ item.itemTitle,
495
+ item.itemDescription,
496
+ item.locationId,
497
+ item.locationName,
498
+ item.locationSourceCode,
499
+ item.parameterId,
500
+ item.parameterName,
501
+ item.parameterUnit,
502
+ item.parameterGroup,
503
+ item.sourceCode,
504
+ item.landingPage,
505
+ ]
506
+ .filter((value) => value !== null)
507
+ .join(" ")
508
+ .toLowerCase();
509
+ return (query.queryTerms.every((term) => searchable.includes(term)) &&
510
+ contains(item.itemTitle, query.itemTitleContains) &&
511
+ contains(item.locationName, query.locationNameContains) &&
512
+ contains(item.parameterName, query.parameterNameContains) &&
513
+ equals(item.parameterId, query.parameterId) &&
514
+ equals(item.locationId, query.locationId) &&
515
+ equals(item.sourceCode, query.sourceCode, true));
516
+ }
517
+ function hasDiscoveryFilter(query) {
518
+ return (query.queryTerms.length > 0 ||
519
+ query.itemTitleContains !== null ||
520
+ query.locationNameContains !== null ||
521
+ query.parameterNameContains !== null ||
522
+ query.parameterId !== null ||
523
+ query.locationId !== null ||
524
+ query.sourceCode !== null);
525
+ }
526
+ function contains(value, expected) {
527
+ return expected === null || (value ?? "").toLowerCase().includes(expected.toLowerCase());
528
+ }
529
+ function equals(value, expected, caseInsensitive = false) {
530
+ if (expected === null)
531
+ return true;
532
+ if (caseInsensitive)
533
+ return (value ?? "").toLowerCase() === expected.toLowerCase();
534
+ return value === expected;
535
+ }
536
+ function normalizeSpatial(value) {
537
+ if (!isObject(value) || value.type !== "Point" || !Array.isArray(value.coordinates))
538
+ return null;
539
+ const longitude = finiteNumber(value.coordinates[0]);
540
+ const latitude = finiteNumber(value.coordinates[1]);
541
+ return longitude === null || latitude === null
542
+ ? null
543
+ : { type: "Point", coordinates: [longitude, latitude] };
544
+ }
545
+ function sourceDescriptor(endpoint) {
546
+ return {
547
+ providerId: "usbr-rise",
548
+ endpoint,
549
+ interpretationBoundary: "RISE catalog and result rows do not determine shortage severity, compliance, attribution, or governance responsibility.",
550
+ };
551
+ }
552
+ function partialError(message, failure) {
553
+ return {
554
+ code: "partial-result",
555
+ message,
556
+ retryable: failure instanceof DataRuntimeError ? (failure.options.retryable ?? false) : false,
557
+ userActionRequired: false,
558
+ details: {
559
+ causeCode: failure instanceof DataRuntimeError ? failure.code : "provider-response-invalid",
560
+ },
561
+ };
562
+ }
563
+ function optionalText(value, field) {
564
+ if (value === undefined)
565
+ return null;
566
+ return normalizeRequiredText(value, field);
567
+ }
568
+ function normalizeRequiredText(value, field) {
569
+ const normalized = value.trim().replace(/\s+/gu, " ");
570
+ if (!normalized)
571
+ throw new DataRuntimeError("invalid-request", `${field} cannot be blank.`);
572
+ return normalized;
573
+ }
574
+ function optionalRfc3339(value, field) {
575
+ const normalized = optionalText(value, field);
576
+ if (normalized === null)
577
+ return null;
578
+ if (!/(?:Z|[+-]\d{2}:\d{2})$/u.test(normalized) || !Number.isFinite(Date.parse(normalized))) {
579
+ throw new DataRuntimeError("invalid-request", `${field} must be an RFC3339 timestamp with an explicit UTC offset.`);
580
+ }
581
+ return normalized;
582
+ }
583
+ function optionalString(value) {
584
+ if (typeof value === "string")
585
+ return value.trim() || null;
586
+ if (typeof value === "number" && Number.isFinite(value))
587
+ return String(value);
588
+ return null;
589
+ }
590
+ function nonNegativeInteger(value) {
591
+ const numberValue = typeof value === "number" ? value : typeof value === "string" ? Number(value) : Number.NaN;
592
+ return Number.isInteger(numberValue) && numberValue >= 0 ? numberValue : null;
593
+ }
594
+ function finiteNumber(value) {
595
+ if (typeof value === "number" && Number.isFinite(value))
596
+ return value;
597
+ if (typeof value === "string" && value.trim() && Number.isFinite(Number(value))) {
598
+ return Number(value);
599
+ }
600
+ return null;
601
+ }
602
+ function resultValue(value) {
603
+ if (value === null || typeof value === "string")
604
+ return value;
605
+ if (typeof value === "number" && Number.isFinite(value))
606
+ return value;
607
+ throw providerInvalid("A RISE result row contains a non-scalar result value.");
608
+ }
609
+ function requireObject(value, label) {
610
+ if (!isObject(value))
611
+ throw providerInvalid(`The RISE ${label} response must be an object.`);
612
+ return value;
613
+ }
614
+ function isObject(value) {
615
+ return value !== null && typeof value === "object" && !Array.isArray(value);
616
+ }
617
+ function normalizeProviderFailure(error) {
618
+ if (error instanceof DataRuntimeError)
619
+ return error;
620
+ return providerInvalid("The RISE response could not be retrieved, parsed, or validated.");
621
+ }
622
+ function providerInvalid(message) {
623
+ return new DataRuntimeError("provider-response-invalid", message);
624
+ }
625
+ //# sourceMappingURL=usbr-rise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usbr-rise.js","sourceRoot":"","sources":["../../../src/data/connectors/usbr-rise.ts"],"names":[],"mappings":"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"}