@tiangong-ai/cli 0.0.50 → 0.0.55
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 +22 -2
- package/README.md +200 -7
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/data/builtins.d.ts +1 -0
- package/dist/data/builtins.js +40 -0
- package/dist/data/builtins.js.map +1 -0
- package/dist/data/catalog.d.ts +25 -0
- package/dist/data/catalog.js +305 -0
- package/dist/data/catalog.js.map +1 -0
- package/dist/data/commands.d.ts +9 -0
- package/dist/data/commands.js +307 -0
- package/dist/data/commands.js.map +1 -0
- package/dist/data/connectors/airnow-hourly-observations.d.ts +2 -0
- package/dist/data/connectors/airnow-hourly-observations.js +522 -0
- package/dist/data/connectors/airnow-hourly-observations.js.map +1 -0
- package/dist/data/connectors/airnow-hourly-observations.schemas.d.ts +299 -0
- package/dist/data/connectors/airnow-hourly-observations.schemas.js +188 -0
- package/dist/data/connectors/airnow-hourly-observations.schemas.js.map +1 -0
- package/dist/data/connectors/bluesky-public-posts.d.ts +2 -0
- package/dist/data/connectors/bluesky-public-posts.js +705 -0
- package/dist/data/connectors/bluesky-public-posts.js.map +1 -0
- package/dist/data/connectors/bluesky-public-posts.schemas.d.ts +733 -0
- package/dist/data/connectors/bluesky-public-posts.schemas.js +422 -0
- package/dist/data/connectors/bluesky-public-posts.schemas.js.map +1 -0
- package/dist/data/connectors/epa-eis-records.d.ts +2 -0
- package/dist/data/connectors/epa-eis-records.js +566 -0
- package/dist/data/connectors/epa-eis-records.js.map +1 -0
- package/dist/data/connectors/epa-eis-records.schemas.d.ts +199 -0
- package/dist/data/connectors/epa-eis-records.schemas.js +146 -0
- package/dist/data/connectors/epa-eis-records.schemas.js.map +1 -0
- package/dist/data/connectors/federal-register-documents.d.ts +2 -0
- package/dist/data/connectors/federal-register-documents.js +517 -0
- package/dist/data/connectors/federal-register-documents.js.map +1 -0
- package/dist/data/connectors/federal-register-documents.schemas.d.ts +357 -0
- package/dist/data/connectors/federal-register-documents.schemas.js +243 -0
- package/dist/data/connectors/federal-register-documents.schemas.js.map +1 -0
- package/dist/data/connectors/gdelt-doc-search.d.ts +2 -0
- package/dist/data/connectors/gdelt-doc-search.js +658 -0
- package/dist/data/connectors/gdelt-doc-search.js.map +1 -0
- package/dist/data/connectors/gdelt-doc-search.schemas.d.ts +446 -0
- package/dist/data/connectors/gdelt-doc-search.schemas.js +330 -0
- package/dist/data/connectors/gdelt-doc-search.schemas.js.map +1 -0
- package/dist/data/connectors/gdelt-file-feeds.d.ts +4 -0
- package/dist/data/connectors/gdelt-file-feeds.js +591 -0
- package/dist/data/connectors/gdelt-file-feeds.js.map +1 -0
- package/dist/data/connectors/gdelt-file-feeds.schemas.d.ts +40 -0
- package/dist/data/connectors/gdelt-file-feeds.schemas.js +256 -0
- package/dist/data/connectors/gdelt-file-feeds.schemas.js.map +1 -0
- package/dist/data/connectors/nasa-firms-fire.d.ts +2 -0
- package/dist/data/connectors/nasa-firms-fire.js +578 -0
- package/dist/data/connectors/nasa-firms-fire.js.map +1 -0
- package/dist/data/connectors/nasa-firms-fire.schemas.d.ts +369 -0
- package/dist/data/connectors/nasa-firms-fire.schemas.js +238 -0
- package/dist/data/connectors/nasa-firms-fire.schemas.js.map +1 -0
- package/dist/data/connectors/open-meteo-air-quality.d.ts +2 -0
- package/dist/data/connectors/open-meteo-air-quality.js +401 -0
- package/dist/data/connectors/open-meteo-air-quality.js.map +1 -0
- package/dist/data/connectors/open-meteo-air-quality.schemas.d.ts +335 -0
- package/dist/data/connectors/open-meteo-air-quality.schemas.js +225 -0
- package/dist/data/connectors/open-meteo-air-quality.schemas.js.map +1 -0
- package/dist/data/connectors/open-meteo-flood.d.ts +2 -0
- package/dist/data/connectors/open-meteo-flood.js +446 -0
- package/dist/data/connectors/open-meteo-flood.js.map +1 -0
- package/dist/data/connectors/open-meteo-flood.schemas.d.ts +388 -0
- package/dist/data/connectors/open-meteo-flood.schemas.js +227 -0
- package/dist/data/connectors/open-meteo-flood.schemas.js.map +1 -0
- package/dist/data/connectors/open-meteo-historical-weather.d.ts +2 -0
- package/dist/data/connectors/open-meteo-historical-weather.js +468 -0
- package/dist/data/connectors/open-meteo-historical-weather.js.map +1 -0
- package/dist/data/connectors/open-meteo-historical-weather.schemas.d.ts +420 -0
- package/dist/data/connectors/open-meteo-historical-weather.schemas.js +282 -0
- package/dist/data/connectors/open-meteo-historical-weather.schemas.js.map +1 -0
- package/dist/data/connectors/openaq-air-quality.d.ts +2 -0
- package/dist/data/connectors/openaq-air-quality.js +734 -0
- package/dist/data/connectors/openaq-air-quality.js.map +1 -0
- package/dist/data/connectors/openaq-air-quality.schemas.d.ts +1067 -0
- package/dist/data/connectors/openaq-air-quality.schemas.js +512 -0
- package/dist/data/connectors/openaq-air-quality.schemas.js.map +1 -0
- package/dist/data/connectors/regulations-gov-attachments.d.ts +2 -0
- package/dist/data/connectors/regulations-gov-attachments.js +486 -0
- package/dist/data/connectors/regulations-gov-attachments.js.map +1 -0
- package/dist/data/connectors/regulations-gov-attachments.schemas.d.ts +270 -0
- package/dist/data/connectors/regulations-gov-attachments.schemas.js +181 -0
- package/dist/data/connectors/regulations-gov-attachments.schemas.js.map +1 -0
- package/dist/data/connectors/regulations-gov-comments.d.ts +2 -0
- package/dist/data/connectors/regulations-gov-comments.js +718 -0
- package/dist/data/connectors/regulations-gov-comments.js.map +1 -0
- package/dist/data/connectors/regulations-gov-comments.schemas.d.ts +717 -0
- package/dist/data/connectors/regulations-gov-comments.schemas.js +389 -0
- package/dist/data/connectors/regulations-gov-comments.schemas.js.map +1 -0
- package/dist/data/connectors/usbr-project-records.d.ts +2 -0
- package/dist/data/connectors/usbr-project-records.js +467 -0
- package/dist/data/connectors/usbr-project-records.js.map +1 -0
- package/dist/data/connectors/usbr-project-records.schemas.d.ts +194 -0
- package/dist/data/connectors/usbr-project-records.schemas.js +137 -0
- package/dist/data/connectors/usbr-project-records.schemas.js.map +1 -0
- package/dist/data/connectors/usbr-rise.d.ts +2 -0
- package/dist/data/connectors/usbr-rise.js +625 -0
- package/dist/data/connectors/usbr-rise.js.map +1 -0
- package/dist/data/connectors/usbr-rise.schemas.d.ts +623 -0
- package/dist/data/connectors/usbr-rise.schemas.js +407 -0
- package/dist/data/connectors/usbr-rise.schemas.js.map +1 -0
- package/dist/data/connectors/usgs-water-instantaneous-values.d.ts +2 -0
- package/dist/data/connectors/usgs-water-instantaneous-values.js +521 -0
- package/dist/data/connectors/usgs-water-instantaneous-values.js.map +1 -0
- package/dist/data/connectors/usgs-water-instantaneous-values.schemas.d.ts +496 -0
- package/dist/data/connectors/usgs-water-instantaneous-values.schemas.js +309 -0
- package/dist/data/connectors/usgs-water-instantaneous-values.schemas.js.map +1 -0
- package/dist/data/connectors/youtube-public-content.d.ts +2 -0
- package/dist/data/connectors/youtube-public-content.js +974 -0
- package/dist/data/connectors/youtube-public-content.js.map +1 -0
- package/dist/data/connectors/youtube-public-content.schemas.d.ts +773 -0
- package/dist/data/connectors/youtube-public-content.schemas.js +567 -0
- package/dist/data/connectors/youtube-public-content.schemas.js.map +1 -0
- package/dist/data/contracts.d.ts +374 -0
- package/dist/data/contracts.js +10 -0
- package/dist/data/contracts.js.map +1 -0
- package/dist/data/runtime/artifacts.d.ts +6 -0
- package/dist/data/runtime/artifacts.js +103 -0
- package/dist/data/runtime/artifacts.js.map +1 -0
- package/dist/data/runtime/bounded-http.d.ts +10 -0
- package/dist/data/runtime/bounded-http.js +403 -0
- package/dist/data/runtime/bounded-http.js.map +1 -0
- package/dist/data/runtime/canonical-json.d.ts +3 -0
- package/dist/data/runtime/canonical-json.js +59 -0
- package/dist/data/runtime/canonical-json.js.map +1 -0
- package/dist/data/runtime/credentials.d.ts +14 -0
- package/dist/data/runtime/credentials.js +67 -0
- package/dist/data/runtime/credentials.js.map +1 -0
- package/dist/data/runtime/csv.d.ts +4 -0
- package/dist/data/runtime/csv.js +51 -0
- package/dist/data/runtime/csv.js.map +1 -0
- package/dist/data/runtime/errors.d.ts +22 -0
- package/dist/data/runtime/errors.js +101 -0
- package/dist/data/runtime/errors.js.map +1 -0
- package/dist/data/runtime/execute.d.ts +11 -0
- package/dist/data/runtime/execute.js +358 -0
- package/dist/data/runtime/execute.js.map +1 -0
- package/dist/data/runtime/receipts.d.ts +13 -0
- package/dist/data/runtime/receipts.js +38 -0
- package/dist/data/runtime/receipts.js.map +1 -0
- package/dist/data/schemas/catalog.v1.json +73 -0
- package/dist/data/schemas/core-receipt.v1.json +117 -0
- package/dist/data/schemas/describe.v1.json +24 -0
- package/dist/data/schemas/discovery.v1.json +130 -0
- package/dist/data/schemas/doctor.v1.json +40 -0
- package/dist/data/schemas/error.v1.json +48 -0
- package/dist/data/schemas/manifest.v1.json +174 -0
- package/dist/data/schemas/run-request.v1.json +37 -0
- package/dist/data/schemas/run-result.v1.json +77 -0
- package/dist/data/schemas.d.ts +27 -0
- package/dist/data/schemas.js +69 -0
- package/dist/data/schemas.js.map +1 -0
- package/dist/env.js.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/http.js.map +1 -1
- package/dist/kb/config.js.map +1 -1
- package/dist/kb/pipeline-health.js.map +1 -1
- package/dist/research/orchestration.js +71 -11
- package/dist/research/orchestration.js.map +1 -1
- package/dist/research/workspace/acquisition.js +70 -5
- package/dist/research/workspace/acquisition.js.map +1 -1
- package/dist/research/workspace/audit-bundle.js +7 -2
- package/dist/research/workspace/audit-bundle.js.map +1 -1
- package/dist/research/workspace/broker.js.map +1 -1
- package/dist/research/workspace/constants.js.map +1 -1
- package/dist/research/workspace/credentials.d.ts +3 -0
- package/dist/research/workspace/credentials.js +20 -3
- package/dist/research/workspace/credentials.js.map +1 -1
- package/dist/research/workspace/data-evidence-adapter.d.ts +60 -0
- package/dist/research/workspace/data-evidence-adapter.js +314 -0
- package/dist/research/workspace/data-evidence-adapter.js.map +1 -0
- package/dist/research/workspace/discovery-status.js +10 -7
- package/dist/research/workspace/discovery-status.js.map +1 -1
- package/dist/research/workspace/discovery.js +12 -11
- package/dist/research/workspace/discovery.js.map +1 -1
- package/dist/research/workspace/evidence-ledger.d.ts +8 -1
- package/dist/research/workspace/evidence-ledger.js +46 -4
- package/dist/research/workspace/evidence-ledger.js.map +1 -1
- package/dist/research/workspace/evidence.d.ts +31 -0
- package/dist/research/workspace/evidence.js +77 -0
- package/dist/research/workspace/evidence.js.map +1 -1
- package/dist/research/workspace/executor.js.map +1 -1
- package/dist/research/workspace/external-skills.d.ts +49 -49
- package/dist/research/workspace/external-skills.js.map +1 -1
- package/dist/research/workspace/platform-capabilities.js.map +1 -1
- package/dist/research/workspace/preflight.d.ts +4 -4
- package/dist/research/workspace/preflight.js +33 -8
- package/dist/research/workspace/preflight.js.map +1 -1
- package/dist/research/workspace/projects.js +203 -76
- package/dist/research/workspace/projects.js.map +1 -1
- package/dist/research/workspace/publication.js.map +1 -1
- package/dist/research/workspace/research-policy-wizard.js.map +1 -1
- package/dist/research/workspace/research-policy.js.map +1 -1
- package/dist/research/workspace/runtime.d.ts +7 -0
- package/dist/research/workspace/runtime.js +82 -23
- package/dist/research/workspace/runtime.js.map +1 -1
- package/dist/research/workspace/sanitization.js.map +1 -1
- package/dist/research/workspace/schemas.js +1 -1
- package/dist/research/workspace/schemas.js.map +1 -1
- package/dist/research/workspace/scientific-design.js.map +1 -1
- package/dist/research/workspace/scientific-review.js.map +1 -1
- package/dist/research/workspace/setup-catalog.d.ts +9 -9
- package/dist/research/workspace/setup-catalog.js +2 -2
- package/dist/research/workspace/setup-catalog.js.map +1 -1
- package/dist/research/workspace/setup-declarative.js.map +1 -1
- package/dist/research/workspace/setup-instructions.d.ts +42 -0
- package/dist/research/workspace/setup-instructions.js +413 -0
- package/dist/research/workspace/setup-instructions.js.map +1 -0
- package/dist/research/workspace/setup-invocation.js.map +1 -1
- package/dist/research/workspace/setup-wizard.js +7 -0
- package/dist/research/workspace/setup-wizard.js.map +1 -1
- package/dist/research/workspace/setup.d.ts +18 -15
- package/dist/research/workspace/setup.js +68 -3
- package/dist/research/workspace/setup.js.map +1 -1
- package/dist/research/workspace/workspace.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
export declare const AIRNOW_HOURLY_INPUT_SCHEMA: {
|
|
2
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
3
|
+
readonly $id: "https://schemas.tiangong.ai/data/airnow/hourly-observations-input.v1.json";
|
|
4
|
+
readonly type: "object";
|
|
5
|
+
readonly additionalProperties: false;
|
|
6
|
+
readonly required: readonly ["startDateTimeUtc", "endDateTimeUtc", "boundingBox", "parameters"];
|
|
7
|
+
readonly properties: {
|
|
8
|
+
readonly startDateTimeUtc: {
|
|
9
|
+
readonly type: "string";
|
|
10
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:00:00Z$";
|
|
11
|
+
readonly description: "Inclusive first UTC hour to retrieve. Minutes and seconds must both be zero.";
|
|
12
|
+
readonly examples: readonly ["2026-03-22T00:00:00Z"];
|
|
13
|
+
};
|
|
14
|
+
readonly endDateTimeUtc: {
|
|
15
|
+
readonly type: "string";
|
|
16
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:00:00Z$";
|
|
17
|
+
readonly description: "Inclusive last UTC hour to retrieve. It must not precede startDateTimeUtc.";
|
|
18
|
+
readonly examples: readonly ["2026-03-22T06:00:00Z"];
|
|
19
|
+
};
|
|
20
|
+
readonly boundingBox: {
|
|
21
|
+
readonly type: "object";
|
|
22
|
+
readonly additionalProperties: false;
|
|
23
|
+
readonly required: readonly ["minLongitude", "minLatitude", "maxLongitude", "maxLatitude"];
|
|
24
|
+
readonly description: "Geographic filter in WGS84 decimal degrees; minimum coordinates must not exceed maximum coordinates.";
|
|
25
|
+
readonly examples: readonly [{
|
|
26
|
+
readonly minLongitude: -123.5;
|
|
27
|
+
readonly minLatitude: 37;
|
|
28
|
+
readonly maxLongitude: -121.5;
|
|
29
|
+
readonly maxLatitude: 38.8;
|
|
30
|
+
}];
|
|
31
|
+
readonly properties: {
|
|
32
|
+
readonly minLongitude: {
|
|
33
|
+
readonly type: "number";
|
|
34
|
+
readonly minimum: -180;
|
|
35
|
+
readonly maximum: 180;
|
|
36
|
+
readonly description: "Western longitude boundary in WGS84 decimal degrees.";
|
|
37
|
+
readonly examples: readonly [-123.5];
|
|
38
|
+
};
|
|
39
|
+
readonly minLatitude: {
|
|
40
|
+
readonly type: "number";
|
|
41
|
+
readonly minimum: -90;
|
|
42
|
+
readonly maximum: 90;
|
|
43
|
+
readonly description: "Southern latitude boundary in WGS84 decimal degrees.";
|
|
44
|
+
readonly examples: readonly [37];
|
|
45
|
+
};
|
|
46
|
+
readonly maxLongitude: {
|
|
47
|
+
readonly type: "number";
|
|
48
|
+
readonly minimum: -180;
|
|
49
|
+
readonly maximum: 180;
|
|
50
|
+
readonly description: "Eastern longitude boundary in WGS84 decimal degrees.";
|
|
51
|
+
readonly examples: readonly [-121.5];
|
|
52
|
+
};
|
|
53
|
+
readonly maxLatitude: {
|
|
54
|
+
readonly type: "number";
|
|
55
|
+
readonly minimum: -90;
|
|
56
|
+
readonly maximum: 90;
|
|
57
|
+
readonly description: "Northern latitude boundary in WGS84 decimal degrees.";
|
|
58
|
+
readonly examples: readonly [38.8];
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
readonly parameters: {
|
|
63
|
+
readonly type: "array";
|
|
64
|
+
readonly minItems: 1;
|
|
65
|
+
readonly maxItems: 6;
|
|
66
|
+
readonly uniqueItems: true;
|
|
67
|
+
readonly description: "Pollutant records to emit. PM25 means PM2.5 and OZONE is the AirNow file-product label.";
|
|
68
|
+
readonly examples: readonly [readonly ["PM25", "OZONE"]];
|
|
69
|
+
readonly items: {
|
|
70
|
+
readonly enum: readonly ["CO", "NO2", "OZONE", "PM10", "PM25", "SO2"];
|
|
71
|
+
readonly description: "One pollutant identifier supported by the HourlyAQObs product.";
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export declare const AIRNOW_HOURLY_OUTPUT_SCHEMA: {
|
|
77
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
78
|
+
readonly $id: "https://schemas.tiangong.ai/data/airnow/hourly-observations-output.v1.json";
|
|
79
|
+
readonly type: "object";
|
|
80
|
+
readonly additionalProperties: false;
|
|
81
|
+
readonly required: readonly ["source", "request", "files", "records"];
|
|
82
|
+
readonly properties: {
|
|
83
|
+
readonly source: {
|
|
84
|
+
readonly type: "object";
|
|
85
|
+
readonly additionalProperties: false;
|
|
86
|
+
readonly required: readonly ["providerId", "product", "preliminary", "regulatoryUse"];
|
|
87
|
+
readonly properties: {
|
|
88
|
+
readonly providerId: {
|
|
89
|
+
readonly const: "airnow";
|
|
90
|
+
};
|
|
91
|
+
readonly product: {
|
|
92
|
+
readonly const: "HourlyAQObs";
|
|
93
|
+
};
|
|
94
|
+
readonly preliminary: {
|
|
95
|
+
readonly const: true;
|
|
96
|
+
};
|
|
97
|
+
readonly regulatoryUse: {
|
|
98
|
+
readonly const: false;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
readonly request: {
|
|
103
|
+
readonly type: "object";
|
|
104
|
+
readonly additionalProperties: false;
|
|
105
|
+
readonly required: readonly ["startDateTimeUtc", "endDateTimeUtc", "boundingBox", "parameters", "hourCount"];
|
|
106
|
+
readonly properties: {
|
|
107
|
+
readonly startDateTimeUtc: {
|
|
108
|
+
readonly type: "string";
|
|
109
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:00:00Z$";
|
|
110
|
+
};
|
|
111
|
+
readonly endDateTimeUtc: {
|
|
112
|
+
readonly type: "string";
|
|
113
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:00:00Z$";
|
|
114
|
+
};
|
|
115
|
+
readonly boundingBox: {
|
|
116
|
+
readonly type: "object";
|
|
117
|
+
readonly additionalProperties: false;
|
|
118
|
+
readonly required: readonly ["minLongitude", "minLatitude", "maxLongitude", "maxLatitude"];
|
|
119
|
+
readonly description: "Geographic filter in WGS84 decimal degrees; minimum coordinates must not exceed maximum coordinates.";
|
|
120
|
+
readonly examples: readonly [{
|
|
121
|
+
readonly minLongitude: -123.5;
|
|
122
|
+
readonly minLatitude: 37;
|
|
123
|
+
readonly maxLongitude: -121.5;
|
|
124
|
+
readonly maxLatitude: 38.8;
|
|
125
|
+
}];
|
|
126
|
+
readonly properties: {
|
|
127
|
+
readonly minLongitude: {
|
|
128
|
+
readonly type: "number";
|
|
129
|
+
readonly minimum: -180;
|
|
130
|
+
readonly maximum: 180;
|
|
131
|
+
readonly description: "Western longitude boundary in WGS84 decimal degrees.";
|
|
132
|
+
readonly examples: readonly [-123.5];
|
|
133
|
+
};
|
|
134
|
+
readonly minLatitude: {
|
|
135
|
+
readonly type: "number";
|
|
136
|
+
readonly minimum: -90;
|
|
137
|
+
readonly maximum: 90;
|
|
138
|
+
readonly description: "Southern latitude boundary in WGS84 decimal degrees.";
|
|
139
|
+
readonly examples: readonly [37];
|
|
140
|
+
};
|
|
141
|
+
readonly maxLongitude: {
|
|
142
|
+
readonly type: "number";
|
|
143
|
+
readonly minimum: -180;
|
|
144
|
+
readonly maximum: 180;
|
|
145
|
+
readonly description: "Eastern longitude boundary in WGS84 decimal degrees.";
|
|
146
|
+
readonly examples: readonly [-121.5];
|
|
147
|
+
};
|
|
148
|
+
readonly maxLatitude: {
|
|
149
|
+
readonly type: "number";
|
|
150
|
+
readonly minimum: -90;
|
|
151
|
+
readonly maximum: 90;
|
|
152
|
+
readonly description: "Northern latitude boundary in WGS84 decimal degrees.";
|
|
153
|
+
readonly examples: readonly [38.8];
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
readonly parameters: {
|
|
158
|
+
readonly type: "array";
|
|
159
|
+
readonly minItems: 1;
|
|
160
|
+
readonly maxItems: 6;
|
|
161
|
+
readonly uniqueItems: true;
|
|
162
|
+
readonly description: "Pollutant records to emit. PM25 means PM2.5 and OZONE is the AirNow file-product label.";
|
|
163
|
+
readonly examples: readonly [readonly ["PM25", "OZONE"]];
|
|
164
|
+
readonly items: {
|
|
165
|
+
readonly enum: readonly ["CO", "NO2", "OZONE", "PM10", "PM25", "SO2"];
|
|
166
|
+
readonly description: "One pollutant identifier supported by the HourlyAQObs product.";
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
readonly hourCount: {
|
|
170
|
+
readonly type: "integer";
|
|
171
|
+
readonly minimum: 1;
|
|
172
|
+
readonly maximum: 168;
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
readonly files: {
|
|
177
|
+
readonly type: "array";
|
|
178
|
+
readonly minItems: 1;
|
|
179
|
+
readonly maxItems: 168;
|
|
180
|
+
readonly items: {
|
|
181
|
+
readonly type: "object";
|
|
182
|
+
readonly additionalProperties: false;
|
|
183
|
+
readonly required: readonly ["hourUtc", "sourceFile", "status", "responseBytes", "inputRows", "emittedRecords", "issues"];
|
|
184
|
+
readonly properties: {
|
|
185
|
+
readonly hourUtc: {
|
|
186
|
+
readonly type: "string";
|
|
187
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:00:00Z$";
|
|
188
|
+
};
|
|
189
|
+
readonly sourceFile: {
|
|
190
|
+
readonly type: "string";
|
|
191
|
+
readonly pattern: "^/airnow/\\d{4}/\\d{8}/HourlyAQObs_\\d{10}\\.dat$";
|
|
192
|
+
};
|
|
193
|
+
readonly status: {
|
|
194
|
+
readonly enum: readonly ["ok", "missing", "failed", "invalid"];
|
|
195
|
+
};
|
|
196
|
+
readonly responseBytes: {
|
|
197
|
+
readonly type: "integer";
|
|
198
|
+
readonly minimum: 0;
|
|
199
|
+
};
|
|
200
|
+
readonly inputRows: {
|
|
201
|
+
readonly type: "integer";
|
|
202
|
+
readonly minimum: 0;
|
|
203
|
+
};
|
|
204
|
+
readonly emittedRecords: {
|
|
205
|
+
readonly type: "integer";
|
|
206
|
+
readonly minimum: 0;
|
|
207
|
+
};
|
|
208
|
+
readonly issues: {
|
|
209
|
+
readonly type: "array";
|
|
210
|
+
readonly maxItems: 100;
|
|
211
|
+
readonly items: {
|
|
212
|
+
readonly type: "string";
|
|
213
|
+
readonly minLength: 1;
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
readonly errorCode: {
|
|
217
|
+
readonly type: "string";
|
|
218
|
+
readonly minLength: 1;
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
readonly records: {
|
|
224
|
+
readonly type: "array";
|
|
225
|
+
readonly items: {
|
|
226
|
+
readonly type: "object";
|
|
227
|
+
readonly additionalProperties: false;
|
|
228
|
+
readonly required: readonly ["aqsid", "siteName", "status", "epaRegion", "latitude", "longitude", "countryCode", "stateName", "observedAtUtc", "dataSource", "reportingAreas", "parameterName", "aqiValue", "aqiKind", "rawConcentration", "unit", "measured", "sourceFile"];
|
|
229
|
+
readonly properties: {
|
|
230
|
+
readonly aqsid: {
|
|
231
|
+
readonly type: "string";
|
|
232
|
+
readonly description: "AirNow site identifier when supplied by the source row; otherwise empty.";
|
|
233
|
+
};
|
|
234
|
+
readonly siteName: {
|
|
235
|
+
readonly type: "string";
|
|
236
|
+
};
|
|
237
|
+
readonly status: {
|
|
238
|
+
readonly type: "string";
|
|
239
|
+
};
|
|
240
|
+
readonly epaRegion: {
|
|
241
|
+
readonly type: "string";
|
|
242
|
+
};
|
|
243
|
+
readonly latitude: {
|
|
244
|
+
readonly type: "number";
|
|
245
|
+
readonly minimum: -90;
|
|
246
|
+
readonly maximum: 90;
|
|
247
|
+
};
|
|
248
|
+
readonly longitude: {
|
|
249
|
+
readonly type: "number";
|
|
250
|
+
readonly minimum: -180;
|
|
251
|
+
readonly maximum: 180;
|
|
252
|
+
};
|
|
253
|
+
readonly countryCode: {
|
|
254
|
+
readonly type: "string";
|
|
255
|
+
};
|
|
256
|
+
readonly stateName: {
|
|
257
|
+
readonly type: "string";
|
|
258
|
+
};
|
|
259
|
+
readonly observedAtUtc: {
|
|
260
|
+
readonly type: "string";
|
|
261
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:00:00Z$";
|
|
262
|
+
};
|
|
263
|
+
readonly dataSource: {
|
|
264
|
+
readonly type: "string";
|
|
265
|
+
};
|
|
266
|
+
readonly reportingAreas: {
|
|
267
|
+
readonly type: "array";
|
|
268
|
+
readonly items: {
|
|
269
|
+
readonly type: "string";
|
|
270
|
+
readonly minLength: 1;
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
readonly parameterName: {
|
|
274
|
+
readonly enum: readonly ["CO", "NO2", "OZONE", "PM10", "PM25", "SO2"];
|
|
275
|
+
};
|
|
276
|
+
readonly aqiValue: {
|
|
277
|
+
readonly type: readonly ["number", "null"];
|
|
278
|
+
};
|
|
279
|
+
readonly aqiKind: {
|
|
280
|
+
readonly enum: readonly ["nowcast-aqi", "hourly-aqi", null];
|
|
281
|
+
};
|
|
282
|
+
readonly rawConcentration: {
|
|
283
|
+
readonly type: readonly ["number", "null"];
|
|
284
|
+
};
|
|
285
|
+
readonly unit: {
|
|
286
|
+
readonly type: readonly ["string", "null"];
|
|
287
|
+
};
|
|
288
|
+
readonly measured: {
|
|
289
|
+
readonly type: readonly ["boolean", "null"];
|
|
290
|
+
};
|
|
291
|
+
readonly sourceFile: {
|
|
292
|
+
readonly type: "string";
|
|
293
|
+
readonly pattern: "^/airnow/\\d{4}/\\d{8}/HourlyAQObs_\\d{10}\\.dat$";
|
|
294
|
+
};
|
|
295
|
+
};
|
|
296
|
+
};
|
|
297
|
+
};
|
|
298
|
+
};
|
|
299
|
+
};
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
const UTC_HOUR_PATTERN = "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:00:00Z$";
|
|
2
|
+
const SOURCE_FILE_PATTERN = "^/airnow/\\d{4}/\\d{8}/HourlyAQObs_\\d{10}\\.dat$";
|
|
3
|
+
export const AIRNOW_HOURLY_INPUT_SCHEMA = {
|
|
4
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
5
|
+
$id: "https://schemas.tiangong.ai/data/airnow/hourly-observations-input.v1.json",
|
|
6
|
+
type: "object",
|
|
7
|
+
additionalProperties: false,
|
|
8
|
+
required: ["startDateTimeUtc", "endDateTimeUtc", "boundingBox", "parameters"],
|
|
9
|
+
properties: {
|
|
10
|
+
startDateTimeUtc: {
|
|
11
|
+
type: "string",
|
|
12
|
+
pattern: UTC_HOUR_PATTERN,
|
|
13
|
+
description: "Inclusive first UTC hour to retrieve. Minutes and seconds must both be zero.",
|
|
14
|
+
examples: ["2026-03-22T00:00:00Z"],
|
|
15
|
+
},
|
|
16
|
+
endDateTimeUtc: {
|
|
17
|
+
type: "string",
|
|
18
|
+
pattern: UTC_HOUR_PATTERN,
|
|
19
|
+
description: "Inclusive last UTC hour to retrieve. It must not precede startDateTimeUtc.",
|
|
20
|
+
examples: ["2026-03-22T06:00:00Z"],
|
|
21
|
+
},
|
|
22
|
+
boundingBox: {
|
|
23
|
+
type: "object",
|
|
24
|
+
additionalProperties: false,
|
|
25
|
+
required: ["minLongitude", "minLatitude", "maxLongitude", "maxLatitude"],
|
|
26
|
+
description: "Geographic filter in WGS84 decimal degrees; minimum coordinates must not exceed maximum coordinates.",
|
|
27
|
+
examples: [
|
|
28
|
+
{
|
|
29
|
+
minLongitude: -123.5,
|
|
30
|
+
minLatitude: 37,
|
|
31
|
+
maxLongitude: -121.5,
|
|
32
|
+
maxLatitude: 38.8,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
properties: {
|
|
36
|
+
minLongitude: {
|
|
37
|
+
type: "number",
|
|
38
|
+
minimum: -180,
|
|
39
|
+
maximum: 180,
|
|
40
|
+
description: "Western longitude boundary in WGS84 decimal degrees.",
|
|
41
|
+
examples: [-123.5],
|
|
42
|
+
},
|
|
43
|
+
minLatitude: {
|
|
44
|
+
type: "number",
|
|
45
|
+
minimum: -90,
|
|
46
|
+
maximum: 90,
|
|
47
|
+
description: "Southern latitude boundary in WGS84 decimal degrees.",
|
|
48
|
+
examples: [37],
|
|
49
|
+
},
|
|
50
|
+
maxLongitude: {
|
|
51
|
+
type: "number",
|
|
52
|
+
minimum: -180,
|
|
53
|
+
maximum: 180,
|
|
54
|
+
description: "Eastern longitude boundary in WGS84 decimal degrees.",
|
|
55
|
+
examples: [-121.5],
|
|
56
|
+
},
|
|
57
|
+
maxLatitude: {
|
|
58
|
+
type: "number",
|
|
59
|
+
minimum: -90,
|
|
60
|
+
maximum: 90,
|
|
61
|
+
description: "Northern latitude boundary in WGS84 decimal degrees.",
|
|
62
|
+
examples: [38.8],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
parameters: {
|
|
67
|
+
type: "array",
|
|
68
|
+
minItems: 1,
|
|
69
|
+
maxItems: 6,
|
|
70
|
+
uniqueItems: true,
|
|
71
|
+
description: "Pollutant records to emit. PM25 means PM2.5 and OZONE is the AirNow file-product label.",
|
|
72
|
+
examples: [["PM25", "OZONE"]],
|
|
73
|
+
items: {
|
|
74
|
+
enum: ["CO", "NO2", "OZONE", "PM10", "PM25", "SO2"],
|
|
75
|
+
description: "One pollutant identifier supported by the HourlyAQObs product.",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
const AIRNOW_RECORD_SCHEMA = {
|
|
81
|
+
type: "object",
|
|
82
|
+
additionalProperties: false,
|
|
83
|
+
required: [
|
|
84
|
+
"aqsid",
|
|
85
|
+
"siteName",
|
|
86
|
+
"status",
|
|
87
|
+
"epaRegion",
|
|
88
|
+
"latitude",
|
|
89
|
+
"longitude",
|
|
90
|
+
"countryCode",
|
|
91
|
+
"stateName",
|
|
92
|
+
"observedAtUtc",
|
|
93
|
+
"dataSource",
|
|
94
|
+
"reportingAreas",
|
|
95
|
+
"parameterName",
|
|
96
|
+
"aqiValue",
|
|
97
|
+
"aqiKind",
|
|
98
|
+
"rawConcentration",
|
|
99
|
+
"unit",
|
|
100
|
+
"measured",
|
|
101
|
+
"sourceFile",
|
|
102
|
+
],
|
|
103
|
+
properties: {
|
|
104
|
+
aqsid: {
|
|
105
|
+
type: "string",
|
|
106
|
+
description: "AirNow site identifier when supplied by the source row; otherwise empty.",
|
|
107
|
+
},
|
|
108
|
+
siteName: { type: "string" },
|
|
109
|
+
status: { type: "string" },
|
|
110
|
+
epaRegion: { type: "string" },
|
|
111
|
+
latitude: { type: "number", minimum: -90, maximum: 90 },
|
|
112
|
+
longitude: { type: "number", minimum: -180, maximum: 180 },
|
|
113
|
+
countryCode: { type: "string" },
|
|
114
|
+
stateName: { type: "string" },
|
|
115
|
+
observedAtUtc: { type: "string", pattern: UTC_HOUR_PATTERN },
|
|
116
|
+
dataSource: { type: "string" },
|
|
117
|
+
reportingAreas: { type: "array", items: { type: "string", minLength: 1 } },
|
|
118
|
+
parameterName: { enum: ["CO", "NO2", "OZONE", "PM10", "PM25", "SO2"] },
|
|
119
|
+
aqiValue: { type: ["number", "null"] },
|
|
120
|
+
aqiKind: { enum: ["nowcast-aqi", "hourly-aqi", null] },
|
|
121
|
+
rawConcentration: { type: ["number", "null"] },
|
|
122
|
+
unit: { type: ["string", "null"] },
|
|
123
|
+
measured: { type: ["boolean", "null"] },
|
|
124
|
+
sourceFile: { type: "string", pattern: SOURCE_FILE_PATTERN },
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
export const AIRNOW_HOURLY_OUTPUT_SCHEMA = {
|
|
128
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
129
|
+
$id: "https://schemas.tiangong.ai/data/airnow/hourly-observations-output.v1.json",
|
|
130
|
+
type: "object",
|
|
131
|
+
additionalProperties: false,
|
|
132
|
+
required: ["source", "request", "files", "records"],
|
|
133
|
+
properties: {
|
|
134
|
+
source: {
|
|
135
|
+
type: "object",
|
|
136
|
+
additionalProperties: false,
|
|
137
|
+
required: ["providerId", "product", "preliminary", "regulatoryUse"],
|
|
138
|
+
properties: {
|
|
139
|
+
providerId: { const: "airnow" },
|
|
140
|
+
product: { const: "HourlyAQObs" },
|
|
141
|
+
preliminary: { const: true },
|
|
142
|
+
regulatoryUse: { const: false },
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
request: {
|
|
146
|
+
type: "object",
|
|
147
|
+
additionalProperties: false,
|
|
148
|
+
required: ["startDateTimeUtc", "endDateTimeUtc", "boundingBox", "parameters", "hourCount"],
|
|
149
|
+
properties: {
|
|
150
|
+
startDateTimeUtc: { type: "string", pattern: UTC_HOUR_PATTERN },
|
|
151
|
+
endDateTimeUtc: { type: "string", pattern: UTC_HOUR_PATTERN },
|
|
152
|
+
boundingBox: AIRNOW_HOURLY_INPUT_SCHEMA.properties.boundingBox,
|
|
153
|
+
parameters: AIRNOW_HOURLY_INPUT_SCHEMA.properties.parameters,
|
|
154
|
+
hourCount: { type: "integer", minimum: 1, maximum: 168 },
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
files: {
|
|
158
|
+
type: "array",
|
|
159
|
+
minItems: 1,
|
|
160
|
+
maxItems: 168,
|
|
161
|
+
items: {
|
|
162
|
+
type: "object",
|
|
163
|
+
additionalProperties: false,
|
|
164
|
+
required: [
|
|
165
|
+
"hourUtc",
|
|
166
|
+
"sourceFile",
|
|
167
|
+
"status",
|
|
168
|
+
"responseBytes",
|
|
169
|
+
"inputRows",
|
|
170
|
+
"emittedRecords",
|
|
171
|
+
"issues",
|
|
172
|
+
],
|
|
173
|
+
properties: {
|
|
174
|
+
hourUtc: { type: "string", pattern: UTC_HOUR_PATTERN },
|
|
175
|
+
sourceFile: { type: "string", pattern: SOURCE_FILE_PATTERN },
|
|
176
|
+
status: { enum: ["ok", "missing", "failed", "invalid"] },
|
|
177
|
+
responseBytes: { type: "integer", minimum: 0 },
|
|
178
|
+
inputRows: { type: "integer", minimum: 0 },
|
|
179
|
+
emittedRecords: { type: "integer", minimum: 0 },
|
|
180
|
+
issues: { type: "array", maxItems: 100, items: { type: "string", minLength: 1 } },
|
|
181
|
+
errorCode: { type: "string", minLength: 1 },
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
records: { type: "array", items: AIRNOW_RECORD_SCHEMA },
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=airnow-hourly-observations.schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"airnow-hourly-observations.schemas.js","sourceRoot":"","sources":["../../../src/data/connectors/airnow-hourly-observations.schemas.ts"],"names":[],"mappings":"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"}
|