@honua/app-platform 0.0.20-alpha.0
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/LICENSE +201 -0
- package/README.md +11 -0
- package/app/index.d.ts +164 -0
- package/app/index.d.ts.map +1 -0
- package/app/index.js +424 -0
- package/app-controller/controller.d.ts +425 -0
- package/app-controller/controller.d.ts.map +1 -0
- package/app-controller/controller.js +1173 -0
- package/app-controller/index.d.ts +14 -0
- package/app-controller/index.d.ts.map +1 -0
- package/app-controller/index.js +12 -0
- package/app-workspace/index.d.ts +421 -0
- package/app-workspace/index.d.ts.map +1 -0
- package/app-workspace/index.js +722 -0
- package/collaboration/client.d.ts +40 -0
- package/collaboration/client.d.ts.map +1 -0
- package/collaboration/client.js +299 -0
- package/collaboration/errors.d.ts +15 -0
- package/collaboration/errors.d.ts.map +1 -0
- package/collaboration/errors.js +17 -0
- package/collaboration/fixture.d.ts +41 -0
- package/collaboration/fixture.d.ts.map +1 -0
- package/collaboration/fixture.js +362 -0
- package/collaboration/index.d.ts +18 -0
- package/collaboration/index.d.ts.map +1 -0
- package/collaboration/index.js +14 -0
- package/collaboration/types.d.ts +240 -0
- package/collaboration/types.d.ts.map +1 -0
- package/collaboration/types.js +1 -0
- package/contract/analytics-sources.d.ts +149 -0
- package/contract/analytics-sources.d.ts.map +1 -0
- package/contract/analytics-sources.js +235 -0
- package/contract/edit-session.d.ts +203 -0
- package/contract/edit-session.d.ts.map +1 -0
- package/contract/edit-session.js +760 -0
- package/contract/edit-sketch.d.ts +91 -0
- package/contract/edit-sketch.d.ts.map +1 -0
- package/contract/edit-sketch.js +281 -0
- package/contract/index.d.ts +63 -0
- package/contract/index.d.ts.map +1 -0
- package/contract/index.js +52 -0
- package/contract/jobs.d.ts +149 -0
- package/contract/jobs.d.ts.map +1 -0
- package/contract/jobs.js +40 -0
- package/contract/pmtiles.d.ts +162 -0
- package/contract/pmtiles.d.ts.map +1 -0
- package/contract/pmtiles.js +155 -0
- package/contract/source.d.ts +447 -0
- package/contract/source.d.ts.map +1 -0
- package/contract/source.js +3909 -0
- package/contract/spatial-aggregation.d.ts +336 -0
- package/contract/spatial-aggregation.d.ts.map +1 -0
- package/contract/spatial-aggregation.js +298 -0
- package/contract/temporal.d.ts +455 -0
- package/contract/temporal.d.ts.map +1 -0
- package/contract/temporal.js +146 -0
- package/contract/tiles.d.ts +370 -0
- package/contract/tiles.d.ts.map +1 -0
- package/contract/tiles.js +519 -0
- package/contract/types.d.ts +694 -0
- package/contract/types.d.ts.map +1 -0
- package/contract/types.js +183 -0
- package/contract/widget-source.d.ts +205 -0
- package/contract/widget-source.d.ts.map +1 -0
- package/contract/widget-source.js +1473 -0
- package/control-plane/client.d.ts +95 -0
- package/control-plane/client.d.ts.map +1 -0
- package/control-plane/client.js +374 -0
- package/control-plane/index.d.ts +18 -0
- package/control-plane/index.d.ts.map +1 -0
- package/control-plane/index.js +14 -0
- package/control-plane/types.d.ts +233 -0
- package/control-plane/types.d.ts.map +1 -0
- package/control-plane/types.js +7 -0
- package/controls/basemap-style-binding.d.ts +54 -0
- package/controls/basemap-style-binding.d.ts.map +1 -0
- package/controls/basemap-style-binding.js +199 -0
- package/controls/basemap-switcher.d.ts +95 -0
- package/controls/basemap-switcher.d.ts.map +1 -0
- package/controls/basemap-switcher.js +379 -0
- package/controls/element-utils.d.ts +48 -0
- package/controls/element-utils.d.ts.map +1 -0
- package/controls/element-utils.js +78 -0
- package/controls/index.d.ts +33 -0
- package/controls/index.d.ts.map +1 -0
- package/controls/index.js +30 -0
- package/controls/layer-list.d.ts +98 -0
- package/controls/layer-list.d.ts.map +1 -0
- package/controls/layer-list.js +375 -0
- package/controls/legend-derive.d.ts +53 -0
- package/controls/legend-derive.d.ts.map +1 -0
- package/controls/legend-derive.js +196 -0
- package/controls/legend.d.ts +104 -0
- package/controls/legend.d.ts.map +1 -0
- package/controls/legend.js +381 -0
- package/controls/swipe-control.d.ts +80 -0
- package/controls/swipe-control.d.ts.map +1 -0
- package/controls/swipe-control.js +368 -0
- package/controls/types.d.ts +227 -0
- package/controls/types.d.ts.map +1 -0
- package/controls/types.js +11 -0
- package/core/auth/client-credentials-provider.d.ts +51 -0
- package/core/auth/client-credentials-provider.d.ts.map +1 -0
- package/core/auth/client-credentials-provider.js +115 -0
- package/core/auth/credential-store.d.ts +52 -0
- package/core/auth/credential-store.d.ts.map +1 -0
- package/core/auth/credential-store.js +82 -0
- package/core/auth/index.d.ts +23 -0
- package/core/auth/index.d.ts.map +1 -0
- package/core/auth/index.js +20 -0
- package/core/auth/oauth2-provider.d.ts +114 -0
- package/core/auth/oauth2-provider.d.ts.map +1 -0
- package/core/auth/oauth2-provider.js +408 -0
- package/core/auth/pkce.d.ts +25 -0
- package/core/auth/pkce.d.ts.map +1 -0
- package/core/auth/pkce.js +46 -0
- package/core/auth/static-providers.d.ts +20 -0
- package/core/auth/static-providers.d.ts.map +1 -0
- package/core/auth/static-providers.js +26 -0
- package/core/auth/token-endpoint.d.ts +40 -0
- package/core/auth/token-endpoint.d.ts.map +1 -0
- package/core/auth/token-endpoint.js +133 -0
- package/core/auth/types.d.ts +144 -0
- package/core/auth/types.d.ts.map +1 -0
- package/core/auth/types.js +8 -0
- package/core/batch.d.ts +37 -0
- package/core/batch.d.ts.map +1 -0
- package/core/batch.js +79 -0
- package/core/cache-state.d.ts +79 -0
- package/core/cache-state.d.ts.map +1 -0
- package/core/cache-state.js +87 -0
- package/core/client.d.ts +607 -0
- package/core/client.d.ts.map +1 -0
- package/core/client.js +1716 -0
- package/core/compatibility.d.ts +18 -0
- package/core/compatibility.d.ts.map +1 -0
- package/core/compatibility.js +245 -0
- package/core/errors.d.ts +139 -0
- package/core/errors.d.ts.map +1 -0
- package/core/errors.js +176 -0
- package/core/esri-geojson.d.ts +66 -0
- package/core/esri-geojson.d.ts.map +1 -0
- package/core/esri-geojson.js +363 -0
- package/core/geoparquet-sql.d.ts +162 -0
- package/core/geoparquet-sql.d.ts.map +1 -0
- package/core/geoparquet-sql.js +333 -0
- package/core/geoservices.d.ts +34 -0
- package/core/geoservices.d.ts.map +1 -0
- package/core/geoservices.js +434 -0
- package/core/grpc-adapter.d.ts +23 -0
- package/core/grpc-adapter.d.ts.map +1 -0
- package/core/grpc-adapter.js +688 -0
- package/core/odata.d.ts +347 -0
- package/core/odata.d.ts.map +1 -0
- package/core/odata.js +913 -0
- package/core/ogc-conformance.d.ts +35 -0
- package/core/ogc-conformance.d.ts.map +1 -0
- package/core/ogc-conformance.js +134 -0
- package/core/ogc-endpoint-layout.d.ts +70 -0
- package/core/ogc-endpoint-layout.d.ts.map +1 -0
- package/core/ogc-endpoint-layout.js +173 -0
- package/core/ogc-features.d.ts +23 -0
- package/core/ogc-features.d.ts.map +1 -0
- package/core/ogc-features.js +129 -0
- package/core/ogc-maps.d.ts +49 -0
- package/core/ogc-maps.d.ts.map +1 -0
- package/core/ogc-maps.js +126 -0
- package/core/ogc-processes.d.ts +118 -0
- package/core/ogc-processes.d.ts.map +1 -0
- package/core/ogc-processes.js +423 -0
- package/core/ogc-records.d.ts +75 -0
- package/core/ogc-records.d.ts.map +1 -0
- package/core/ogc-records.js +251 -0
- package/core/ogc-tiles.d.ts +125 -0
- package/core/ogc-tiles.d.ts.map +1 -0
- package/core/ogc-tiles.js +183 -0
- package/core/path-utils.d.ts +69 -0
- package/core/path-utils.d.ts.map +1 -0
- package/core/path-utils.js +123 -0
- package/core/pbf-decoder.d.ts +39 -0
- package/core/pbf-decoder.d.ts.map +1 -0
- package/core/pbf-decoder.js +702 -0
- package/core/process-runner.d.ts +104 -0
- package/core/process-runner.d.ts.map +1 -0
- package/core/process-runner.js +315 -0
- package/core/protocol-transport.d.ts +76 -0
- package/core/protocol-transport.d.ts.map +1 -0
- package/core/protocol-transport.js +15 -0
- package/core/query-builder.d.ts +261 -0
- package/core/query-builder.d.ts.map +1 -0
- package/core/query-builder.js +538 -0
- package/core/request-pipeline.d.ts +88 -0
- package/core/request-pipeline.d.ts.map +1 -0
- package/core/request-pipeline.js +273 -0
- package/core/spatial-filter.d.ts +93 -0
- package/core/spatial-filter.d.ts.map +1 -0
- package/core/spatial-filter.js +153 -0
- package/core/stac-static.d.ts +51 -0
- package/core/stac-static.d.ts.map +1 -0
- package/core/stac-static.js +195 -0
- package/core/stac.d.ts +67 -0
- package/core/stac.d.ts.map +1 -0
- package/core/stac.js +259 -0
- package/core/surfaces.d.ts +540 -0
- package/core/surfaces.d.ts.map +1 -0
- package/core/surfaces.js +1964 -0
- package/core/terrain-elevation.d.ts +114 -0
- package/core/terrain-elevation.d.ts.map +1 -0
- package/core/terrain-elevation.js +150 -0
- package/core/types.d.ts +1404 -0
- package/core/types.d.ts.map +1 -0
- package/core/types.js +13 -0
- package/core/wfs-capabilities.d.ts +153 -0
- package/core/wfs-capabilities.d.ts.map +1 -0
- package/core/wfs-capabilities.js +490 -0
- package/core/wfs-filter.d.ts +118 -0
- package/core/wfs-filter.d.ts.map +1 -0
- package/core/wfs-filter.js +634 -0
- package/core/wfs.d.ts +232 -0
- package/core/wfs.d.ts.map +1 -0
- package/core/wfs.js +426 -0
- package/core/wire-shared.d.ts +32 -0
- package/core/wire-shared.d.ts.map +1 -0
- package/core/wire-shared.js +76 -0
- package/core/wms-axis.d.ts +36 -0
- package/core/wms-axis.d.ts.map +1 -0
- package/core/wms-axis.js +73 -0
- package/core/wms-capabilities.d.ts +110 -0
- package/core/wms-capabilities.d.ts.map +1 -0
- package/core/wms-capabilities.js +559 -0
- package/core/wms-types.d.ts +128 -0
- package/core/wms-types.d.ts.map +1 -0
- package/core/wms-types.js +32 -0
- package/core/wms.d.ts +144 -0
- package/core/wms.d.ts.map +1 -0
- package/core/wms.js +338 -0
- package/core/wmts-capabilities.d.ts +82 -0
- package/core/wmts-capabilities.d.ts.map +1 -0
- package/core/wmts-capabilities.js +402 -0
- package/core/wmts.d.ts +103 -0
- package/core/wmts.d.ts.map +1 -0
- package/core/wmts.js +332 -0
- package/core/xml-text.d.ts +20 -0
- package/core/xml-text.d.ts.map +1 -0
- package/core/xml-text.js +85 -0
- package/esri-compat/basemap-gallery.d.ts +38 -0
- package/esri-compat/basemap-gallery.d.ts.map +1 -0
- package/esri-compat/basemap-gallery.js +159 -0
- package/esri-compat/basemap-layer-list.d.ts +35 -0
- package/esri-compat/basemap-layer-list.d.ts.map +1 -0
- package/esri-compat/basemap-layer-list.js +139 -0
- package/esri-compat/basemap.d.ts +32 -0
- package/esri-compat/basemap.d.ts.map +1 -0
- package/esri-compat/basemap.js +84 -0
- package/esri-compat/bookmarks.d.ts +36 -0
- package/esri-compat/bookmarks.d.ts.map +1 -0
- package/esri-compat/bookmarks.js +108 -0
- package/esri-compat/class-breaks-renderer.d.ts +50 -0
- package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
- package/esri-compat/class-breaks-renderer.js +164 -0
- package/esri-compat/color.d.ts +22 -0
- package/esri-compat/color.d.ts.map +1 -0
- package/esri-compat/color.js +106 -0
- package/esri-compat/controls.d.ts +174 -0
- package/esri-compat/controls.d.ts.map +1 -0
- package/esri-compat/controls.js +479 -0
- package/esri-compat/coordinate-conversion.d.ts +41 -0
- package/esri-compat/coordinate-conversion.d.ts.map +1 -0
- package/esri-compat/coordinate-conversion.js +125 -0
- package/esri-compat/directions.d.ts +45 -0
- package/esri-compat/directions.d.ts.map +1 -0
- package/esri-compat/directions.js +123 -0
- package/esri-compat/editor.d.ts +47 -0
- package/esri-compat/editor.d.ts.map +1 -0
- package/esri-compat/editor.js +170 -0
- package/esri-compat/esri-config.d.ts +16 -0
- package/esri-compat/esri-config.d.ts.map +1 -0
- package/esri-compat/esri-config.js +23 -0
- package/esri-compat/esri-request.d.ts +17 -0
- package/esri-compat/esri-request.d.ts.map +1 -0
- package/esri-compat/esri-request.js +127 -0
- package/esri-compat/event-bus.d.ts +106 -0
- package/esri-compat/event-bus.d.ts.map +1 -0
- package/esri-compat/event-bus.js +90 -0
- package/esri-compat/expand.d.ts +36 -0
- package/esri-compat/expand.d.ts.map +1 -0
- package/esri-compat/expand.js +97 -0
- package/esri-compat/extent.d.ts +43 -0
- package/esri-compat/extent.d.ts.map +1 -0
- package/esri-compat/extent.js +140 -0
- package/esri-compat/feature-filter.d.ts +55 -0
- package/esri-compat/feature-filter.d.ts.map +1 -0
- package/esri-compat/feature-filter.js +109 -0
- package/esri-compat/feature-form.d.ts +64 -0
- package/esri-compat/feature-form.d.ts.map +1 -0
- package/esri-compat/feature-form.js +137 -0
- package/esri-compat/feature-layer.d.ts +173 -0
- package/esri-compat/feature-layer.d.ts.map +1 -0
- package/esri-compat/feature-layer.js +661 -0
- package/esri-compat/feature-set.d.ts +32 -0
- package/esri-compat/feature-set.d.ts.map +1 -0
- package/esri-compat/feature-set.js +80 -0
- package/esri-compat/feature-table.d.ts +141 -0
- package/esri-compat/feature-table.d.ts.map +1 -0
- package/esri-compat/feature-table.js +500 -0
- package/esri-compat/feature-templates.d.ts +41 -0
- package/esri-compat/feature-templates.d.ts.map +1 -0
- package/esri-compat/feature-templates.js +97 -0
- package/esri-compat/feature.d.ts +33 -0
- package/esri-compat/feature.d.ts.map +1 -0
- package/esri-compat/feature.js +83 -0
- package/esri-compat/geojson-layer.d.ts +86 -0
- package/esri-compat/geojson-layer.d.ts.map +1 -0
- package/esri-compat/geojson-layer.js +191 -0
- package/esri-compat/geometry-engine.d.ts +107 -0
- package/esri-compat/geometry-engine.d.ts.map +1 -0
- package/esri-compat/geometry-engine.js +266 -0
- package/esri-compat/graphic.d.ts +46 -0
- package/esri-compat/graphic.d.ts.map +1 -0
- package/esri-compat/graphic.js +103 -0
- package/esri-compat/graphics-layer.d.ts +49 -0
- package/esri-compat/graphics-layer.d.ts.map +1 -0
- package/esri-compat/graphics-layer.js +185 -0
- package/esri-compat/group-layer.d.ts +48 -0
- package/esri-compat/group-layer.d.ts.map +1 -0
- package/esri-compat/group-layer.js +212 -0
- package/esri-compat/identify.d.ts +71 -0
- package/esri-compat/identify.d.ts.map +1 -0
- package/esri-compat/identify.js +299 -0
- package/esri-compat/identity-manager.d.ts +74 -0
- package/esri-compat/identity-manager.d.ts.map +1 -0
- package/esri-compat/identity-manager.js +245 -0
- package/esri-compat/imagery-layer.d.ts +78 -0
- package/esri-compat/imagery-layer.d.ts.map +1 -0
- package/esri-compat/imagery-layer.js +167 -0
- package/esri-compat/label-class.d.ts +31 -0
- package/esri-compat/label-class.d.ts.map +1 -0
- package/esri-compat/label-class.js +102 -0
- package/esri-compat/layer-list.d.ts +77 -0
- package/esri-compat/layer-list.d.ts.map +1 -0
- package/esri-compat/layer-list.js +342 -0
- package/esri-compat/legend.d.ts +53 -0
- package/esri-compat/legend.d.ts.map +1 -0
- package/esri-compat/legend.js +254 -0
- package/esri-compat/map-image-layer.d.ts +162 -0
- package/esri-compat/map-image-layer.d.ts.map +1 -0
- package/esri-compat/map-image-layer.js +709 -0
- package/esri-compat/map-view.d.ts +323 -0
- package/esri-compat/map-view.d.ts.map +1 -0
- package/esri-compat/map-view.js +1175 -0
- package/esri-compat/map.d.ts +47 -0
- package/esri-compat/map.d.ts.map +1 -0
- package/esri-compat/map.js +209 -0
- package/esri-compat/measurement-2d.d.ts +61 -0
- package/esri-compat/measurement-2d.d.ts.map +1 -0
- package/esri-compat/measurement-2d.js +184 -0
- package/esri-compat/measurement.d.ts +45 -0
- package/esri-compat/measurement.d.ts.map +1 -0
- package/esri-compat/measurement.js +193 -0
- package/esri-compat/oauth-info.d.ts +50 -0
- package/esri-compat/oauth-info.d.ts.map +1 -0
- package/esri-compat/oauth-info.js +142 -0
- package/esri-compat/picture-marker-symbol.d.ts +35 -0
- package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
- package/esri-compat/picture-marker-symbol.js +126 -0
- package/esri-compat/point.d.ts +31 -0
- package/esri-compat/point.d.ts.map +1 -0
- package/esri-compat/point.js +102 -0
- package/esri-compat/polygon.d.ts +31 -0
- package/esri-compat/polygon.d.ts.map +1 -0
- package/esri-compat/polygon.js +107 -0
- package/esri-compat/polyline.d.ts +31 -0
- package/esri-compat/polyline.d.ts.map +1 -0
- package/esri-compat/polyline.js +107 -0
- package/esri-compat/popup-template.d.ts +55 -0
- package/esri-compat/popup-template.d.ts.map +1 -0
- package/esri-compat/popup-template.js +128 -0
- package/esri-compat/popup.d.ts +54 -0
- package/esri-compat/popup.d.ts.map +1 -0
- package/esri-compat/popup.js +312 -0
- package/esri-compat/print.d.ts +47 -0
- package/esri-compat/print.d.ts.map +1 -0
- package/esri-compat/print.js +105 -0
- package/esri-compat/query.d.ts +58 -0
- package/esri-compat/query.d.ts.map +1 -0
- package/esri-compat/query.js +128 -0
- package/esri-compat/reactive-utils.d.ts +24 -0
- package/esri-compat/reactive-utils.d.ts.map +1 -0
- package/esri-compat/reactive-utils.js +193 -0
- package/esri-compat/request.d.ts +41 -0
- package/esri-compat/request.d.ts.map +1 -0
- package/esri-compat/request.js +253 -0
- package/esri-compat/route-layer.d.ts +59 -0
- package/esri-compat/route-layer.d.ts.map +1 -0
- package/esri-compat/route-layer.js +223 -0
- package/esri-compat/route-task.d.ts +88 -0
- package/esri-compat/route-task.d.ts.map +1 -0
- package/esri-compat/route-task.js +225 -0
- package/esri-compat/scene-view.d.ts +41 -0
- package/esri-compat/scene-view.d.ts.map +1 -0
- package/esri-compat/scene-view.js +68 -0
- package/esri-compat/search.d.ts +112 -0
- package/esri-compat/search.d.ts.map +1 -0
- package/esri-compat/search.js +820 -0
- package/esri-compat/simple-fill-symbol.d.ts +27 -0
- package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
- package/esri-compat/simple-fill-symbol.js +85 -0
- package/esri-compat/simple-line-symbol.d.ts +27 -0
- package/esri-compat/simple-line-symbol.d.ts.map +1 -0
- package/esri-compat/simple-line-symbol.js +85 -0
- package/esri-compat/simple-marker-symbol.d.ts +29 -0
- package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
- package/esri-compat/simple-marker-symbol.js +92 -0
- package/esri-compat/simple-renderer.d.ts +29 -0
- package/esri-compat/simple-renderer.d.ts.map +1 -0
- package/esri-compat/simple-renderer.js +92 -0
- package/esri-compat/sketch.d.ts +64 -0
- package/esri-compat/sketch.d.ts.map +1 -0
- package/esri-compat/sketch.js +227 -0
- package/esri-compat/spatial-reference.d.ts +31 -0
- package/esri-compat/spatial-reference.d.ts.map +1 -0
- package/esri-compat/spatial-reference.js +102 -0
- package/esri-compat/swipe.d.ts +34 -0
- package/esri-compat/swipe.d.ts.map +1 -0
- package/esri-compat/swipe.js +93 -0
- package/esri-compat/table-list.d.ts +36 -0
- package/esri-compat/table-list.d.ts.map +1 -0
- package/esri-compat/table-list.js +126 -0
- package/esri-compat/text-symbol.d.ts +37 -0
- package/esri-compat/text-symbol.d.ts.map +1 -0
- package/esri-compat/text-symbol.js +123 -0
- package/esri-compat/tile-layer.d.ts +52 -0
- package/esri-compat/tile-layer.d.ts.map +1 -0
- package/esri-compat/tile-layer.js +168 -0
- package/esri-compat/time-slider.d.ts +70 -0
- package/esri-compat/time-slider.d.ts.map +1 -0
- package/esri-compat/time-slider.js +208 -0
- package/esri-compat/track.d.ts +51 -0
- package/esri-compat/track.d.ts.map +1 -0
- package/esri-compat/track.js +174 -0
- package/esri-compat/unique-value-renderer.d.ts +41 -0
- package/esri-compat/unique-value-renderer.d.ts.map +1 -0
- package/esri-compat/unique-value-renderer.js +127 -0
- package/esri-compat/url.d.ts +13 -0
- package/esri-compat/url.d.ts.map +1 -0
- package/esri-compat/url.js +68 -0
- package/esri-compat/vector-tile-layer.d.ts +47 -0
- package/esri-compat/vector-tile-layer.d.ts.map +1 -0
- package/esri-compat/vector-tile-layer.js +130 -0
- package/esri-compat/web-map.d.ts +14 -0
- package/esri-compat/web-map.d.ts.map +1 -0
- package/esri-compat/web-map.js +24 -0
- package/esri-compat/wfs-layer.d.ts +64 -0
- package/esri-compat/wfs-layer.d.ts.map +1 -0
- package/esri-compat/wfs-layer.js +145 -0
- package/esri-compat/wms-layer.d.ts +76 -0
- package/esri-compat/wms-layer.d.ts.map +1 -0
- package/esri-compat/wms-layer.js +157 -0
- package/exploration/context.d.ts +25 -0
- package/exploration/context.d.ts.map +1 -0
- package/exploration/context.js +396 -0
- package/exploration/index.d.ts +27 -0
- package/exploration/index.d.ts.map +1 -0
- package/exploration/index.js +24 -0
- package/exploration/presets.d.ts +27 -0
- package/exploration/presets.d.ts.map +1 -0
- package/exploration/presets.js +114 -0
- package/exploration/reducer.d.ts +23 -0
- package/exploration/reducer.d.ts.map +1 -0
- package/exploration/reducer.js +332 -0
- package/exploration/selection.d.ts +25 -0
- package/exploration/selection.d.ts.map +1 -0
- package/exploration/selection.js +34 -0
- package/exploration/selectors.d.ts +56 -0
- package/exploration/selectors.d.ts.map +1 -0
- package/exploration/selectors.js +110 -0
- package/exploration/types.d.ts +294 -0
- package/exploration/types.d.ts.map +1 -0
- package/exploration/types.js +33 -0
- package/expr/expression.d.ts +457 -0
- package/expr/expression.d.ts.map +1 -0
- package/expr/expression.js +663 -0
- package/expr/index.d.ts +32 -0
- package/expr/index.d.ts.map +1 -0
- package/expr/index.js +30 -0
- package/filter-registry/index.d.ts +145 -0
- package/filter-registry/index.d.ts.map +1 -0
- package/filter-registry/index.js +531 -0
- package/gen/honua/v1/feature_service_pb.d.ts +918 -0
- package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
- package/gen/honua/v1/feature_service_pb.js +375 -0
- package/generated-app/errors.d.ts +41 -0
- package/generated-app/errors.d.ts.map +1 -0
- package/generated-app/errors.js +41 -0
- package/generated-app/index.d.ts +17 -0
- package/generated-app/index.d.ts.map +1 -0
- package/generated-app/index.js +12 -0
- package/generated-app/manifest.d.ts +183 -0
- package/generated-app/manifest.d.ts.map +1 -0
- package/generated-app/manifest.js +14 -0
- package/generated-app/projection.d.ts +44 -0
- package/generated-app/projection.d.ts.map +1 -0
- package/generated-app/projection.js +234 -0
- package/generated-app/runtime.d.ts +215 -0
- package/generated-app/runtime.d.ts.map +1 -0
- package/generated-app/runtime.js +1196 -0
- package/geocoding/index.d.ts +106 -0
- package/geocoding/index.d.ts.map +1 -0
- package/geocoding/index.js +278 -0
- package/interactions/detail-model.d.ts +54 -0
- package/interactions/detail-model.d.ts.map +1 -0
- package/interactions/detail-model.js +105 -0
- package/interactions/exploration-bindings.d.ts +120 -0
- package/interactions/exploration-bindings.d.ts.map +1 -0
- package/interactions/exploration-bindings.js +218 -0
- package/interactions/feature-state.d.ts +144 -0
- package/interactions/feature-state.d.ts.map +1 -0
- package/interactions/feature-state.js +169 -0
- package/interactions/hit-test.d.ts +112 -0
- package/interactions/hit-test.d.ts.map +1 -0
- package/interactions/hit-test.js +291 -0
- package/interactions/index.d.ts +31 -0
- package/interactions/index.d.ts.map +1 -0
- package/interactions/index.js +24 -0
- package/interactions/share-state.d.ts +36 -0
- package/interactions/share-state.d.ts.map +1 -0
- package/interactions/share-state.js +123 -0
- package/map/feature-service-adapter.d.ts +138 -0
- package/map/feature-service-adapter.d.ts.map +1 -0
- package/map/feature-service-adapter.js +279 -0
- package/map/honua-map.d.ts +203 -0
- package/map/honua-map.d.ts.map +1 -0
- package/map/honua-map.js +347 -0
- package/map/index.d.ts +27 -0
- package/map/index.d.ts.map +1 -0
- package/map/index.js +22 -0
- package/map/maplibre-target.d.ts +103 -0
- package/map/maplibre-target.d.ts.map +1 -0
- package/map/maplibre-target.js +164 -0
- package/map/webmap-maplibre.d.ts +60 -0
- package/map/webmap-maplibre.d.ts.map +1 -0
- package/map/webmap-maplibre.js +212 -0
- package/operate/client.d.ts +94 -0
- package/operate/client.d.ts.map +1 -0
- package/operate/client.js +361 -0
- package/operate/index.d.ts +22 -0
- package/operate/index.d.ts.map +1 -0
- package/operate/index.js +19 -0
- package/operate/types.d.ts +397 -0
- package/operate/types.d.ts.map +1 -0
- package/operate/types.js +17 -0
- package/operator/client.d.ts +60 -0
- package/operator/client.d.ts.map +1 -0
- package/operator/client.js +20 -0
- package/operator/controllers/approval.d.ts +52 -0
- package/operator/controllers/approval.d.ts.map +1 -0
- package/operator/controllers/approval.js +123 -0
- package/operator/controllers/base.d.ts +27 -0
- package/operator/controllers/base.d.ts.map +1 -0
- package/operator/controllers/base.js +53 -0
- package/operator/controllers/builder-workspace.d.ts +55 -0
- package/operator/controllers/builder-workspace.d.ts.map +1 -0
- package/operator/controllers/builder-workspace.js +108 -0
- package/operator/controllers/chat.d.ts +61 -0
- package/operator/controllers/chat.d.ts.map +1 -0
- package/operator/controllers/chat.js +154 -0
- package/operator/controllers/clarification.d.ts +52 -0
- package/operator/controllers/clarification.d.ts.map +1 -0
- package/operator/controllers/clarification.js +121 -0
- package/operator/controllers/execution.d.ts +60 -0
- package/operator/controllers/execution.d.ts.map +1 -0
- package/operator/controllers/execution.js +286 -0
- package/operator/controllers/index.d.ts +23 -0
- package/operator/controllers/index.d.ts.map +1 -0
- package/operator/controllers/index.js +15 -0
- package/operator/controllers/map-workspace.d.ts +85 -0
- package/operator/controllers/map-workspace.d.ts.map +1 -0
- package/operator/controllers/map-workspace.js +296 -0
- package/operator/controllers/plan-review.d.ts +66 -0
- package/operator/controllers/plan-review.d.ts.map +1 -0
- package/operator/controllers/plan-review.js +124 -0
- package/operator/errors.d.ts +62 -0
- package/operator/errors.d.ts.map +1 -0
- package/operator/errors.js +75 -0
- package/operator/i18n/index.d.ts +10 -0
- package/operator/i18n/index.d.ts.map +1 -0
- package/operator/i18n/index.js +8 -0
- package/operator/i18n/messages.d.ts +19 -0
- package/operator/i18n/messages.d.ts.map +1 -0
- package/operator/i18n/messages.js +54 -0
- package/operator/index.d.ts +19 -0
- package/operator/index.d.ts.map +1 -0
- package/operator/index.js +15 -0
- package/operator/telemetry.d.ts +26 -0
- package/operator/telemetry.d.ts.map +1 -0
- package/operator/telemetry.js +9 -0
- package/operator/theming/index.d.ts +12 -0
- package/operator/theming/index.d.ts.map +1 -0
- package/operator/theming/index.js +9 -0
- package/operator/theming/provider.d.ts +27 -0
- package/operator/theming/provider.d.ts.map +1 -0
- package/operator/theming/provider.js +26 -0
- package/operator/theming/tokens.d.ts +28 -0
- package/operator/theming/tokens.d.ts.map +1 -0
- package/operator/theming/tokens.js +65 -0
- package/operator/workspace/events.d.ts +70 -0
- package/operator/workspace/events.d.ts.map +1 -0
- package/operator/workspace/events.js +9 -0
- package/operator/workspace/index.d.ts +12 -0
- package/operator/workspace/index.d.ts.map +1 -0
- package/operator/workspace/index.js +8 -0
- package/operator/workspace/types.d.ts +178 -0
- package/operator/workspace/types.d.ts.map +1 -0
- package/operator/workspace/types.js +47 -0
- package/operator/workspace/workspace.d.ts +58 -0
- package/operator/workspace/workspace.d.ts.map +1 -0
- package/operator/workspace/workspace.js +339 -0
- package/package.json +105 -0
- package/realtime/exploration.d.ts +16 -0
- package/realtime/exploration.d.ts.map +1 -0
- package/realtime/exploration.js +32 -0
- package/realtime/honua-server.d.ts +123 -0
- package/realtime/honua-server.d.ts.map +1 -0
- package/realtime/honua-server.js +188 -0
- package/realtime/index.d.ts +20 -0
- package/realtime/index.d.ts.map +1 -0
- package/realtime/index.js +14 -0
- package/realtime/projections.d.ts +30 -0
- package/realtime/projections.d.ts.map +1 -0
- package/realtime/projections.js +51 -0
- package/realtime/reducer.d.ts +14 -0
- package/realtime/reducer.d.ts.map +1 -0
- package/realtime/reducer.js +351 -0
- package/realtime/sse.d.ts +23 -0
- package/realtime/sse.d.ts.map +1 -0
- package/realtime/sse.js +143 -0
- package/realtime/store.d.ts +18 -0
- package/realtime/store.d.ts.map +1 -0
- package/realtime/store.js +63 -0
- package/realtime/types.d.ts +190 -0
- package/realtime/types.d.ts.map +1 -0
- package/realtime/types.js +10 -0
- package/replica-sync/client.d.ts +32 -0
- package/replica-sync/client.d.ts.map +1 -0
- package/replica-sync/client.js +52 -0
- package/replica-sync/errors.d.ts +22 -0
- package/replica-sync/errors.d.ts.map +1 -0
- package/replica-sync/errors.js +29 -0
- package/replica-sync/fixture.d.ts +40 -0
- package/replica-sync/fixture.d.ts.map +1 -0
- package/replica-sync/fixture.js +364 -0
- package/replica-sync/index.d.ts +22 -0
- package/replica-sync/index.d.ts.map +1 -0
- package/replica-sync/index.js +17 -0
- package/replica-sync/types.d.ts +270 -0
- package/replica-sync/types.d.ts.map +1 -0
- package/replica-sync/types.js +13 -0
- package/runtime/diff.d.ts +31 -0
- package/runtime/diff.d.ts.map +1 -0
- package/runtime/diff.js +143 -0
- package/runtime/errors.d.ts +40 -0
- package/runtime/errors.d.ts.map +1 -0
- package/runtime/errors.js +35 -0
- package/runtime/index.d.ts +59 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +40 -0
- package/runtime/legend.d.ts +23 -0
- package/runtime/legend.d.ts.map +1 -0
- package/runtime/legend.js +38 -0
- package/runtime/load-package.d.ts +125 -0
- package/runtime/load-package.d.ts.map +1 -0
- package/runtime/load-package.js +272 -0
- package/runtime/map-package-fetch.d.ts +107 -0
- package/runtime/map-package-fetch.d.ts.map +1 -0
- package/runtime/map-package-fetch.js +336 -0
- package/runtime/map-package-realtime.d.ts +169 -0
- package/runtime/map-package-realtime.d.ts.map +1 -0
- package/runtime/map-package-realtime.js +350 -0
- package/runtime/map-package-validation.d.ts +30 -0
- package/runtime/map-package-validation.d.ts.map +1 -0
- package/runtime/map-package-validation.js +257 -0
- package/runtime/map-package-watch.d.ts +78 -0
- package/runtime/map-package-watch.d.ts.map +1 -0
- package/runtime/map-package-watch.js +695 -0
- package/runtime/map-package.d.ts +167 -0
- package/runtime/map-package.d.ts.map +1 -0
- package/runtime/map-package.js +15 -0
- package/runtime/ogc-styles.d.ts +110 -0
- package/runtime/ogc-styles.d.ts.map +1 -0
- package/runtime/ogc-styles.js +195 -0
- package/runtime/pmtiles-protocol.d.ts +77 -0
- package/runtime/pmtiles-protocol.d.ts.map +1 -0
- package/runtime/pmtiles-protocol.js +120 -0
- package/runtime/popups.d.ts +62 -0
- package/runtime/popups.d.ts.map +1 -0
- package/runtime/popups.js +95 -0
- package/runtime/query-tiles.d.ts +217 -0
- package/runtime/query-tiles.d.ts.map +1 -0
- package/runtime/query-tiles.js +801 -0
- package/runtime/runtime.d.ts +243 -0
- package/runtime/runtime.d.ts.map +1 -0
- package/runtime/runtime.js +1147 -0
- package/runtime/source-bridge.d.ts +99 -0
- package/runtime/source-bridge.d.ts.map +1 -0
- package/runtime/source-bridge.js +428 -0
- package/runtime/style-compose.d.ts +46 -0
- package/runtime/style-compose.d.ts.map +1 -0
- package/runtime/style-compose.js +144 -0
- package/runtime/style-interactions.d.ts +141 -0
- package/runtime/style-interactions.d.ts.map +1 -0
- package/runtime/style-interactions.js +574 -0
- package/runtime/style-spec-validation.d.ts +23 -0
- package/runtime/style-spec-validation.d.ts.map +1 -0
- package/runtime/style-spec-validation.js +357 -0
- package/scene-workspace/analysis-widgets.d.ts +334 -0
- package/scene-workspace/analysis-widgets.d.ts.map +1 -0
- package/scene-workspace/analysis-widgets.js +424 -0
- package/scene-workspace/cesium-adapter.d.ts +438 -0
- package/scene-workspace/cesium-adapter.d.ts.map +1 -0
- package/scene-workspace/cesium-adapter.js +493 -0
- package/scene-workspace/index.d.ts +21 -0
- package/scene-workspace/index.d.ts.map +1 -0
- package/scene-workspace/index.js +14 -0
- package/scene-workspace/primitives.d.ts +162 -0
- package/scene-workspace/primitives.d.ts.map +1 -0
- package/scene-workspace/primitives.js +255 -0
- package/scene-workspace/scene-discovery.d.ts +196 -0
- package/scene-workspace/scene-discovery.d.ts.map +1 -0
- package/scene-workspace/scene-discovery.js +228 -0
- package/scene-workspace/scene-view.d.ts +209 -0
- package/scene-workspace/scene-view.d.ts.map +1 -0
- package/scene-workspace/scene-view.js +267 -0
- package/scene-workspace/types.d.ts +229 -0
- package/scene-workspace/types.d.ts.map +1 -0
- package/scene-workspace/types.js +23 -0
- package/scene-workspace/workspace.d.ts +13 -0
- package/scene-workspace/workspace.d.ts.map +1 -0
- package/scene-workspace/workspace.js +391 -0
- package/share/denial.d.ts +78 -0
- package/share/denial.d.ts.map +1 -0
- package/share/denial.js +61 -0
- package/share/embed-token.d.ts +71 -0
- package/share/embed-token.d.ts.map +1 -0
- package/share/embed-token.js +99 -0
- package/share/index.d.ts +35 -0
- package/share/index.d.ts.map +1 -0
- package/share/index.js +30 -0
- package/share/open-data.d.ts +114 -0
- package/share/open-data.d.ts.map +1 -0
- package/share/open-data.js +81 -0
- package/share/types.d.ts +163 -0
- package/share/types.d.ts.map +1 -0
- package/share/types.js +17 -0
- package/studio/capability-manifest.d.ts +285 -0
- package/studio/capability-manifest.d.ts.map +1 -0
- package/studio/capability-manifest.js +59 -0
- package/studio/chart-spec.d.ts +85 -0
- package/studio/chart-spec.d.ts.map +1 -0
- package/studio/chart-spec.js +106 -0
- package/studio/index.d.ts +34 -0
- package/studio/index.d.ts.map +1 -0
- package/studio/index.js +27 -0
- package/studio/provenance.d.ts +131 -0
- package/studio/provenance.d.ts.map +1 -0
- package/studio/provenance.js +39 -0
- package/studio/publish.d.ts +64 -0
- package/studio/publish.d.ts.map +1 -0
- package/studio/publish.js +13 -0
- package/studio/types.d.ts +278 -0
- package/studio/types.d.ts.map +1 -0
- package/studio/types.js +71 -0
- package/studio/validate.d.ts +45 -0
- package/studio/validate.d.ts.map +1 -0
- package/studio/validate.js +255 -0
- package/studio/validation.d.ts +112 -0
- package/studio/validation.d.ts.map +1 -0
- package/studio/validation.js +42 -0
- package/style/factory.d.ts +30 -0
- package/style/factory.d.ts.map +1 -0
- package/style/factory.js +61 -0
- package/style/index.d.ts +25 -0
- package/style/index.d.ts.map +1 -0
- package/style/index.js +24 -0
- package/style/specification.d.ts +203 -0
- package/style/specification.d.ts.map +1 -0
- package/style/specification.js +178 -0
- package/style/wms-wmts-resolvers.d.ts +38 -0
- package/style/wms-wmts-resolvers.d.ts.map +1 -0
- package/style/wms-wmts-resolvers.js +92 -0
- package/web-components/controller.d.ts +39 -0
- package/web-components/controller.d.ts.map +1 -0
- package/web-components/controller.js +640 -0
- package/web-components/elements.d.ts +210 -0
- package/web-components/elements.d.ts.map +1 -0
- package/web-components/elements.js +1651 -0
- package/web-components/index.d.ts +24 -0
- package/web-components/index.d.ts.map +1 -0
- package/web-components/index.js +22 -0
- package/web-components/maplibre-renderer.d.ts +22 -0
- package/web-components/maplibre-renderer.d.ts.map +1 -0
- package/web-components/maplibre-renderer.js +474 -0
- package/web-components/types.d.ts +397 -0
- package/web-components/types.d.ts.map +1 -0
- package/web-components/types.js +1 -0
- package/webmap/contract.d.ts +28 -0
- package/webmap/contract.d.ts.map +1 -0
- package/webmap/contract.js +130 -0
- package/webmap/convert-basemap.d.ts +17 -0
- package/webmap/convert-basemap.d.ts.map +1 -0
- package/webmap/convert-basemap.js +78 -0
- package/webmap/convert-extent.d.ts +17 -0
- package/webmap/convert-extent.d.ts.map +1 -0
- package/webmap/convert-extent.js +114 -0
- package/webmap/convert-label.d.ts +13 -0
- package/webmap/convert-label.d.ts.map +1 -0
- package/webmap/convert-label.js +125 -0
- package/webmap/convert-layer.d.ts +22 -0
- package/webmap/convert-layer.d.ts.map +1 -0
- package/webmap/convert-layer.js +181 -0
- package/webmap/convert-popup.d.ts +34 -0
- package/webmap/convert-popup.d.ts.map +1 -0
- package/webmap/convert-popup.js +68 -0
- package/webmap/convert-renderer.d.ts +17 -0
- package/webmap/convert-renderer.d.ts.map +1 -0
- package/webmap/convert-renderer.js +161 -0
- package/webmap/convert-symbol.d.ts +17 -0
- package/webmap/convert-symbol.d.ts.map +1 -0
- package/webmap/convert-symbol.js +122 -0
- package/webmap/index.d.ts +44 -0
- package/webmap/index.d.ts.map +1 -0
- package/webmap/index.js +33 -0
- package/webmap/parse.d.ts +25 -0
- package/webmap/parse.d.ts.map +1 -0
- package/webmap/parse.js +83 -0
- package/webmap/types.d.ts +264 -0
- package/webmap/types.d.ts.map +1 -0
- package/webmap/types.js +13 -0
- package/webmap/warnings.d.ts +30 -0
- package/webmap/warnings.d.ts.map +1 -0
- package/webmap/warnings.js +37 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ClarificationController` — typed form derived from
|
|
3
|
+
* `intent.clarifications[]`. Submission is a pass-through to
|
|
4
|
+
* `OperatorClient.operator.clarify` and yields a fresh intent revision.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { HonuaOperatorIntentError } from "../errors.js";
|
|
9
|
+
import { ListenerBag, withTelemetrySpan } from "./base.js";
|
|
10
|
+
export class ClarificationController {
|
|
11
|
+
#client;
|
|
12
|
+
#telemetry;
|
|
13
|
+
#bag = new ListenerBag();
|
|
14
|
+
#intent;
|
|
15
|
+
#answers = new Map();
|
|
16
|
+
#submitting = false;
|
|
17
|
+
// Bumped on every load() and submit(); an in-flight submit checks
|
|
18
|
+
// this on resolution so a slow clarify() response cannot revive a
|
|
19
|
+
// superseded intent after the host has already moved on to a newer
|
|
20
|
+
// one. Generation > captured generation ⇒ drop the result silently.
|
|
21
|
+
#generation = 0;
|
|
22
|
+
constructor(options) {
|
|
23
|
+
this.#client = options.client;
|
|
24
|
+
this.#telemetry = options.telemetry;
|
|
25
|
+
}
|
|
26
|
+
get state() {
|
|
27
|
+
return {
|
|
28
|
+
intent: this.#intent,
|
|
29
|
+
fields: this.#intent?.clarifications ?? [],
|
|
30
|
+
answers: new Map(this.#answers),
|
|
31
|
+
submitting: this.#submitting,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
on(listener) {
|
|
35
|
+
return this.#bag.on(listener);
|
|
36
|
+
}
|
|
37
|
+
load(intent) {
|
|
38
|
+
this.#generation += 1;
|
|
39
|
+
// Reset the submitting flag here too: a load() that supersedes a
|
|
40
|
+
// pending submit() leaves the in-flight call unable to clear it
|
|
41
|
+
// (its `finally` is generation-gated), so without this the
|
|
42
|
+
// observable `state.submitting` would stay true forever.
|
|
43
|
+
this.#submitting = false;
|
|
44
|
+
this.#intent = intent;
|
|
45
|
+
this.#answers.clear();
|
|
46
|
+
this.#bag.emit({ kind: "loaded", intent });
|
|
47
|
+
}
|
|
48
|
+
setAnswer(fieldId, value) {
|
|
49
|
+
if (!this.#intent) {
|
|
50
|
+
throw new HonuaOperatorIntentError("setAnswer called before clarification load");
|
|
51
|
+
}
|
|
52
|
+
const exists = this.#intent.clarifications?.some((field) => field.id === fieldId);
|
|
53
|
+
if (!exists) {
|
|
54
|
+
throw new HonuaOperatorIntentError(`unknown clarification field "${fieldId}"`, {
|
|
55
|
+
intentId: this.#intent.id,
|
|
56
|
+
detail: { fieldId },
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
this.#answers.set(fieldId, value);
|
|
60
|
+
this.#bag.emit({ kind: "answer-changed", fieldId, value });
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Submit the current answers and resolve with the revised intent.
|
|
64
|
+
* Missing required answers reject with `HonuaOperatorIntentError`
|
|
65
|
+
* before any network call so the controller never depends on the
|
|
66
|
+
* server for required-field validation.
|
|
67
|
+
*/
|
|
68
|
+
async submit(signal) {
|
|
69
|
+
if (!this.#intent) {
|
|
70
|
+
throw new HonuaOperatorIntentError("submit called before clarification load");
|
|
71
|
+
}
|
|
72
|
+
const intent = this.#intent;
|
|
73
|
+
const missing = [];
|
|
74
|
+
for (const field of intent.clarifications ?? []) {
|
|
75
|
+
if (field.required && !(this.#answers.get(field.id) ?? "").trim())
|
|
76
|
+
missing.push(field.id);
|
|
77
|
+
}
|
|
78
|
+
if (missing.length > 0) {
|
|
79
|
+
throw new HonuaOperatorIntentError("missing required clarification answers", {
|
|
80
|
+
intentId: intent.id,
|
|
81
|
+
detail: { missing },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const answers = [...this.#answers.entries()].map(([fieldId, value]) => ({
|
|
85
|
+
fieldId,
|
|
86
|
+
value,
|
|
87
|
+
}));
|
|
88
|
+
const gen = ++this.#generation;
|
|
89
|
+
this.#submitting = true;
|
|
90
|
+
try {
|
|
91
|
+
const revised = await withTelemetrySpan(this.#telemetry, "clarify", intent.id, () => this.#client.operator.clarify(intent.id, answers, signal), { fieldCount: answers.length });
|
|
92
|
+
if (gen !== this.#generation) {
|
|
93
|
+
// A newer load()/submit() superseded this submission while it
|
|
94
|
+
// was in flight. Drop the response without committing or
|
|
95
|
+
// emitting so the workspace cannot be driven back to a stale
|
|
96
|
+
// intent.
|
|
97
|
+
return revised;
|
|
98
|
+
}
|
|
99
|
+
this.#intent = revised;
|
|
100
|
+
this.#answers.clear();
|
|
101
|
+
this.#bag.emit({ kind: "submitted", intent: revised });
|
|
102
|
+
return revised;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const wrapped = error instanceof HonuaOperatorIntentError
|
|
106
|
+
? error
|
|
107
|
+
: new HonuaOperatorIntentError("clarification submit failed", {
|
|
108
|
+
intentId: intent.id,
|
|
109
|
+
cause: error,
|
|
110
|
+
});
|
|
111
|
+
if (gen === this.#generation) {
|
|
112
|
+
this.#bag.emit({ kind: "error", error: wrapped });
|
|
113
|
+
}
|
|
114
|
+
throw wrapped;
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
if (gen === this.#generation)
|
|
118
|
+
this.#submitting = false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ExecutionController` — thin adapter on `IJobRun<ExecutionResult>`.
|
|
3
|
+
* Subscribes to `watch()`, surfaces snapshot transitions on a controller
|
|
4
|
+
* event stream, and routes the terminal payload onto the workspace.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { type IJobRun, type JobProgress, type JobSnapshot } from "../../contract/index.js";
|
|
9
|
+
import { type OperatorClient } from "../client.js";
|
|
10
|
+
import { HonuaOperatorExecutionError } from "../errors.js";
|
|
11
|
+
import type { OperatorTelemetry } from "../telemetry.js";
|
|
12
|
+
import type { ExecutionResult, OperatorPlan } from "../workspace/types.js";
|
|
13
|
+
import { type Unsubscribe } from "./base.js";
|
|
14
|
+
export type ExecutionEvent = {
|
|
15
|
+
kind: "started";
|
|
16
|
+
executionId: string;
|
|
17
|
+
} | {
|
|
18
|
+
kind: "progress";
|
|
19
|
+
executionId: string;
|
|
20
|
+
progress: JobProgress;
|
|
21
|
+
} | {
|
|
22
|
+
kind: "successful";
|
|
23
|
+
executionId: string;
|
|
24
|
+
result: ExecutionResult;
|
|
25
|
+
} | {
|
|
26
|
+
kind: "failed";
|
|
27
|
+
executionId: string;
|
|
28
|
+
error: HonuaOperatorExecutionError;
|
|
29
|
+
} | {
|
|
30
|
+
kind: "dismissed";
|
|
31
|
+
executionId: string;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "error";
|
|
34
|
+
error: HonuaOperatorExecutionError;
|
|
35
|
+
};
|
|
36
|
+
export interface ExecutionControllerOptions {
|
|
37
|
+
client: OperatorClient;
|
|
38
|
+
telemetry?: OperatorTelemetry;
|
|
39
|
+
}
|
|
40
|
+
export declare class ExecutionController {
|
|
41
|
+
#private;
|
|
42
|
+
constructor(options: ExecutionControllerOptions);
|
|
43
|
+
get run(): IJobRun<ExecutionResult> | undefined;
|
|
44
|
+
get snapshot(): JobSnapshot<ExecutionResult> | undefined;
|
|
45
|
+
on(listener: (event: ExecutionEvent) => void): Unsubscribe;
|
|
46
|
+
/**
|
|
47
|
+
* Submit a plan and start watching the resulting job. Resolves with
|
|
48
|
+
* the live `IJobRun` once the watch subscription is active.
|
|
49
|
+
*
|
|
50
|
+
* Concurrent calls supersede each other: the second call disposes
|
|
51
|
+
* the first (which aborts its in-flight `submitPlan`); if the older
|
|
52
|
+
* `submitPlan` still resolves, the result is cancelled and the
|
|
53
|
+
* promise rejects so the older caller does not see a started event
|
|
54
|
+
* for a run that is no longer authoritative.
|
|
55
|
+
*/
|
|
56
|
+
start(plan: OperatorPlan, signal?: AbortSignal): Promise<IJobRun<ExecutionResult>>;
|
|
57
|
+
cancel(): Promise<void>;
|
|
58
|
+
dispose(): void;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../src/operator/controllers/execution.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiC,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAA0C,MAAM,cAAc,CAAC;AACnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAe,KAAK,WAAW,EAAqB,MAAM,WAAW,CAAC;AAE7E,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,2BAA2B,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,2BAA2B,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,qBAAa,mBAAmB;;gBAeX,OAAO,EAAE,0BAA0B;IAKtD,IAAW,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAErD;IAED,IAAW,QAAQ,IAAI,WAAW,CAAC,eAAe,CAAC,GAAG,SAAS,CAE9D;IAEM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,WAAW;IAIjE;;;;;;;;;OASG;IACU,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAoFlF,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C7B,OAAO,IAAI,IAAI;CAqEvB"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ExecutionController` — thin adapter on `IJobRun<ExecutionResult>`.
|
|
3
|
+
* Subscribes to `watch()`, surfaces snapshot transitions on a controller
|
|
4
|
+
* event stream, and routes the terminal payload onto the workspace.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { isJobTerminal, } from "../../contract/index.js";
|
|
9
|
+
import { OPERATOR_EXECUTION_OUTPUT_KEY } from "../client.js";
|
|
10
|
+
import { HonuaOperatorExecutionError } from "../errors.js";
|
|
11
|
+
import { ListenerBag, withTelemetrySpan } from "./base.js";
|
|
12
|
+
export class ExecutionController {
|
|
13
|
+
#client;
|
|
14
|
+
#telemetry;
|
|
15
|
+
#bag = new ListenerBag();
|
|
16
|
+
#activeRun;
|
|
17
|
+
#unsubscribe;
|
|
18
|
+
#activePlan;
|
|
19
|
+
#lastSnapshot;
|
|
20
|
+
// Per-start abort controller. dispose() aborts it so the in-flight
|
|
21
|
+
// submitPlan() can short-circuit; the start path also uses identity
|
|
22
|
+
// comparison (this.#startAbort === captured) to detect the case
|
|
23
|
+
// where submitPlan resolved despite the abort and a newer start
|
|
24
|
+
// already took ownership.
|
|
25
|
+
#startAbort;
|
|
26
|
+
constructor(options) {
|
|
27
|
+
this.#client = options.client;
|
|
28
|
+
this.#telemetry = options.telemetry;
|
|
29
|
+
}
|
|
30
|
+
get run() {
|
|
31
|
+
return this.#activeRun;
|
|
32
|
+
}
|
|
33
|
+
get snapshot() {
|
|
34
|
+
return this.#lastSnapshot;
|
|
35
|
+
}
|
|
36
|
+
on(listener) {
|
|
37
|
+
return this.#bag.on(listener);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Submit a plan and start watching the resulting job. Resolves with
|
|
41
|
+
* the live `IJobRun` once the watch subscription is active.
|
|
42
|
+
*
|
|
43
|
+
* Concurrent calls supersede each other: the second call disposes
|
|
44
|
+
* the first (which aborts its in-flight `submitPlan`); if the older
|
|
45
|
+
* `submitPlan` still resolves, the result is cancelled and the
|
|
46
|
+
* promise rejects so the older caller does not see a started event
|
|
47
|
+
* for a run that is no longer authoritative.
|
|
48
|
+
*/
|
|
49
|
+
async start(plan, signal) {
|
|
50
|
+
this.dispose();
|
|
51
|
+
const startAbort = new AbortController();
|
|
52
|
+
this.#startAbort = startAbort;
|
|
53
|
+
const linkedSignal = linkSignals(signal, startAbort);
|
|
54
|
+
let run;
|
|
55
|
+
try {
|
|
56
|
+
run = await withTelemetrySpan(this.#telemetry, "execution-start", plan.intentId, () => this.#client.operator.submitPlan(plan, linkedSignal), { planId: plan.id, planKind: plan.kind });
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const wrapped = wrapExecutionError(error, "plan submission failed", {
|
|
60
|
+
intentId: plan.intentId,
|
|
61
|
+
detail: { planId: plan.id, planKind: plan.kind },
|
|
62
|
+
});
|
|
63
|
+
// Suppress the error event when this start was superseded — the
|
|
64
|
+
// newer start owns the surface and a stale error would mislead
|
|
65
|
+
// observers about the current execution.
|
|
66
|
+
if (this.#startAbort === startAbort) {
|
|
67
|
+
this.#bag.emit({ kind: "error", error: wrapped });
|
|
68
|
+
}
|
|
69
|
+
throw wrapped;
|
|
70
|
+
}
|
|
71
|
+
if (this.#startAbort !== startAbort) {
|
|
72
|
+
// A newer start took ownership while we were awaiting submitPlan.
|
|
73
|
+
// Cancel this run silently and reject so the original caller is
|
|
74
|
+
// not handed a stale IJobRun.
|
|
75
|
+
void run.cancel().catch(() => { });
|
|
76
|
+
throw new HonuaOperatorExecutionError("execution superseded by a newer start", {
|
|
77
|
+
intentId: plan.intentId,
|
|
78
|
+
executionId: run.id,
|
|
79
|
+
failureKind: "Cancelled",
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
this.#activeRun = run;
|
|
83
|
+
this.#activePlan = plan;
|
|
84
|
+
this.#bag.emit({ kind: "started", executionId: run.id });
|
|
85
|
+
this.#unsubscribe = run.watch((snapshot) => {
|
|
86
|
+
// Stale-watch guard: an older watch subscription can fire after
|
|
87
|
+
// dispose() if the underlying adapter has already buffered the
|
|
88
|
+
// snapshot. `#activeRun !== run` means we are no longer the
|
|
89
|
+
// authoritative run; drop without emitting.
|
|
90
|
+
if (this.#activeRun !== run)
|
|
91
|
+
return;
|
|
92
|
+
// Double-emit guard: cancel() may have already synthesized a
|
|
93
|
+
// terminal snapshot for the same run. Detect via the prior
|
|
94
|
+
// #lastSnapshot's status before overwriting it.
|
|
95
|
+
const alreadyTerminal = this.#lastSnapshot !== undefined && isJobTerminal(this.#lastSnapshot.status);
|
|
96
|
+
this.#lastSnapshot = snapshot;
|
|
97
|
+
if (snapshot.progress) {
|
|
98
|
+
this.#bag.emit({ kind: "progress", executionId: run.id, progress: snapshot.progress });
|
|
99
|
+
}
|
|
100
|
+
if (!isJobTerminal(snapshot.status))
|
|
101
|
+
return;
|
|
102
|
+
if (alreadyTerminal)
|
|
103
|
+
return;
|
|
104
|
+
this.#emitTerminal(run.id, snapshot);
|
|
105
|
+
});
|
|
106
|
+
// The shared `IJobRun` contract permits passive `watch()` implementations
|
|
107
|
+
// (the OGC adapter only registers listeners; polling is driven by
|
|
108
|
+
// `results()`). Kick off the polling path so snapshots actually flow.
|
|
109
|
+
// `results()` rejects with `HonuaJobFailedError` on failed/dismissed
|
|
110
|
+
// terminals — those are already surfaced by the watcher above, so we
|
|
111
|
+
// suppress them when the watcher already observed a terminal snapshot.
|
|
112
|
+
// Any other rejection (poll-side network failure that prevents reaching
|
|
113
|
+
// a terminal state) routes through the error event surface.
|
|
114
|
+
void run.results().catch((error) => {
|
|
115
|
+
if (this.#activeRun !== run)
|
|
116
|
+
return;
|
|
117
|
+
if (this.#lastSnapshot && isJobTerminal(this.#lastSnapshot.status))
|
|
118
|
+
return;
|
|
119
|
+
const wrapped = wrapExecutionError(error, "execution polling failed", {
|
|
120
|
+
intentId: plan.intentId,
|
|
121
|
+
executionId: run.id,
|
|
122
|
+
});
|
|
123
|
+
this.#bag.emit({ kind: "error", error: wrapped });
|
|
124
|
+
});
|
|
125
|
+
return run;
|
|
126
|
+
}
|
|
127
|
+
async cancel() {
|
|
128
|
+
if (!this.#activeRun)
|
|
129
|
+
return;
|
|
130
|
+
const run = this.#activeRun;
|
|
131
|
+
let status;
|
|
132
|
+
try {
|
|
133
|
+
status = await run.cancel();
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (this.#activeRun !== run)
|
|
137
|
+
return;
|
|
138
|
+
const wrapped = wrapExecutionError(error, "execution cancel failed", {
|
|
139
|
+
intentId: this.#activePlan?.intentId,
|
|
140
|
+
executionId: run.id,
|
|
141
|
+
});
|
|
142
|
+
this.#bag.emit({ kind: "error", error: wrapped });
|
|
143
|
+
throw wrapped;
|
|
144
|
+
}
|
|
145
|
+
if (this.#activeRun !== run)
|
|
146
|
+
return;
|
|
147
|
+
if (!isJobTerminal(status))
|
|
148
|
+
return;
|
|
149
|
+
// The IJobRun contract does not require watch() to fire during
|
|
150
|
+
// cancellation, so a conforming adapter can dismiss the run
|
|
151
|
+
// without ever delivering a terminal snapshot. Synthesize one when
|
|
152
|
+
// the watcher has not already produced a terminal. The watcher's
|
|
153
|
+
// double-emit guard handles the converse race (watcher fires after
|
|
154
|
+
// we synthesize).
|
|
155
|
+
if (this.#lastSnapshot !== undefined && isJobTerminal(this.#lastSnapshot.status))
|
|
156
|
+
return;
|
|
157
|
+
let snapshot = { status };
|
|
158
|
+
if (status !== "dismissed") {
|
|
159
|
+
// The server may have raced cancel to a successful/failed
|
|
160
|
+
// terminal. poll() carries the authoritative payload; fall back
|
|
161
|
+
// to the bare status if poll fails so #emitTerminal still routes
|
|
162
|
+
// to a terminal event rather than silently dropping it.
|
|
163
|
+
try {
|
|
164
|
+
const polled = await run.poll();
|
|
165
|
+
if (this.#activeRun !== run)
|
|
166
|
+
return;
|
|
167
|
+
snapshot = polled;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// Best-effort poll; emit the bare status snapshot.
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (this.#lastSnapshot !== undefined && isJobTerminal(this.#lastSnapshot.status))
|
|
174
|
+
return;
|
|
175
|
+
this.#lastSnapshot = snapshot;
|
|
176
|
+
this.#emitTerminal(run.id, snapshot);
|
|
177
|
+
}
|
|
178
|
+
dispose() {
|
|
179
|
+
this.#startAbort?.abort();
|
|
180
|
+
this.#startAbort = undefined;
|
|
181
|
+
this.#unsubscribe?.();
|
|
182
|
+
this.#unsubscribe = undefined;
|
|
183
|
+
this.#activeRun = undefined;
|
|
184
|
+
this.#activePlan = undefined;
|
|
185
|
+
this.#lastSnapshot = undefined;
|
|
186
|
+
}
|
|
187
|
+
#emitTerminal(executionId, snapshot) {
|
|
188
|
+
const intentId = this.#activePlan?.intentId;
|
|
189
|
+
const startedAt = Date.now();
|
|
190
|
+
const detail = { executionId, status: snapshot.status };
|
|
191
|
+
if (snapshot.status === "successful") {
|
|
192
|
+
const result = snapshot.result?.outputs?.[OPERATOR_EXECUTION_OUTPUT_KEY];
|
|
193
|
+
if (!result) {
|
|
194
|
+
const error = new HonuaOperatorExecutionError("execution succeeded but no result was returned", {
|
|
195
|
+
intentId,
|
|
196
|
+
executionId,
|
|
197
|
+
failureKind: "OutputBindingFailed",
|
|
198
|
+
});
|
|
199
|
+
this.#bag.emit({ kind: "failed", executionId, error });
|
|
200
|
+
this.#telemetry?.error?.({
|
|
201
|
+
kind: "execution-terminal",
|
|
202
|
+
intentId,
|
|
203
|
+
startedAt,
|
|
204
|
+
finishedAt: startedAt,
|
|
205
|
+
durationMs: 0,
|
|
206
|
+
detail,
|
|
207
|
+
error,
|
|
208
|
+
});
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
this.#bag.emit({ kind: "successful", executionId, result });
|
|
212
|
+
this.#telemetry?.after?.({
|
|
213
|
+
kind: "execution-terminal",
|
|
214
|
+
intentId,
|
|
215
|
+
startedAt,
|
|
216
|
+
finishedAt: startedAt,
|
|
217
|
+
durationMs: 0,
|
|
218
|
+
detail: { ...detail, resultKind: result.kind },
|
|
219
|
+
});
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (snapshot.status === "dismissed") {
|
|
223
|
+
this.#bag.emit({ kind: "dismissed", executionId });
|
|
224
|
+
this.#telemetry?.after?.({
|
|
225
|
+
kind: "execution-terminal",
|
|
226
|
+
intentId,
|
|
227
|
+
startedAt,
|
|
228
|
+
finishedAt: startedAt,
|
|
229
|
+
durationMs: 0,
|
|
230
|
+
detail,
|
|
231
|
+
});
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
const wrapped = jobErrorToExecutionError(snapshot.error, executionId, intentId);
|
|
235
|
+
this.#bag.emit({ kind: "failed", executionId, error: wrapped });
|
|
236
|
+
this.#telemetry?.error?.({
|
|
237
|
+
kind: "execution-terminal",
|
|
238
|
+
intentId,
|
|
239
|
+
startedAt,
|
|
240
|
+
finishedAt: startedAt,
|
|
241
|
+
durationMs: 0,
|
|
242
|
+
detail,
|
|
243
|
+
error: wrapped,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
function jobErrorToExecutionError(jobError, executionId, intentId) {
|
|
248
|
+
if (!jobError) {
|
|
249
|
+
return new HonuaOperatorExecutionError("execution failed", {
|
|
250
|
+
intentId,
|
|
251
|
+
executionId,
|
|
252
|
+
failureKind: "ExecutionFailed",
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
const failureKind = jobError.code;
|
|
256
|
+
return new HonuaOperatorExecutionError(jobError.message, {
|
|
257
|
+
intentId,
|
|
258
|
+
executionId,
|
|
259
|
+
failureKind,
|
|
260
|
+
detail: jobError.details ? { details: jobError.details } : undefined,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
function wrapExecutionError(error, fallbackMessage, context) {
|
|
264
|
+
if (error instanceof HonuaOperatorExecutionError)
|
|
265
|
+
return error;
|
|
266
|
+
return new HonuaOperatorExecutionError(fallbackMessage, {
|
|
267
|
+
...context,
|
|
268
|
+
failureKind: "ExecutionFailed",
|
|
269
|
+
cause: error,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Returns an `AbortSignal` that fires when either the externally-supplied
|
|
274
|
+
* caller signal aborts or the per-start internal controller is aborted by
|
|
275
|
+
* `dispose()`. Lets `submitPlan` be cancelled by either source.
|
|
276
|
+
*/
|
|
277
|
+
function linkSignals(external, internal) {
|
|
278
|
+
if (!external)
|
|
279
|
+
return internal.signal;
|
|
280
|
+
if (external.aborted) {
|
|
281
|
+
internal.abort();
|
|
282
|
+
return internal.signal;
|
|
283
|
+
}
|
|
284
|
+
external.addEventListener("abort", () => internal.abort(), { once: true });
|
|
285
|
+
return internal.signal;
|
|
286
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@honua/sdk-js/operator/controllers` — framework-neutral controllers behind the
|
|
3
|
+
* operator-native component architecture.
|
|
4
|
+
*
|
|
5
|
+
* @experimental This entrypoint is not yet covered by the SDK's semver contract
|
|
6
|
+
* — the surface may change in any minor release prior to `1.0.0`.
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
export { ApprovalController } from "./approval.js";
|
|
10
|
+
export type { ApprovalControllerOptions, ApprovalEvent } from "./approval.js";
|
|
11
|
+
export { BuilderWorkspaceController } from "./builder-workspace.js";
|
|
12
|
+
export type { BuilderWorkspaceControllerOptions, BuilderWorkspaceEvent, PreviewHandle, } from "./builder-workspace.js";
|
|
13
|
+
export { ChatController } from "./chat.js";
|
|
14
|
+
export type { ChatControllerOptions, ChatEvent, DecorateTurn } from "./chat.js";
|
|
15
|
+
export { ClarificationController } from "./clarification.js";
|
|
16
|
+
export type { ClarificationControllerOptions, ClarificationEvent, ClarificationState, } from "./clarification.js";
|
|
17
|
+
export { ExecutionController } from "./execution.js";
|
|
18
|
+
export type { ExecutionControllerOptions, ExecutionEvent } from "./execution.js";
|
|
19
|
+
export { MapWorkspaceController } from "./map-workspace.js";
|
|
20
|
+
export type { MapFactory, MapFactoryResult, MapWorkspaceControllerOptions, MapWorkspaceEvent, } from "./map-workspace.js";
|
|
21
|
+
export { PlanReviewController } from "./plan-review.js";
|
|
22
|
+
export type { DecorateStep, PlanReviewControllerOptions, PlanReviewEvent, PlanRevisionRequest, } from "./plan-review.js";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/operator/controllers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,YAAY,EACV,iCAAiC,EACjC,qBAAqB,EACrB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,qBAAqB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EACV,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EACV,YAAY,EACZ,2BAA2B,EAC3B,eAAe,EACf,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@honua/sdk-js/operator/controllers` — framework-neutral controllers behind the
|
|
3
|
+
* operator-native component architecture.
|
|
4
|
+
*
|
|
5
|
+
* @experimental This entrypoint is not yet covered by the SDK's semver contract
|
|
6
|
+
* — the surface may change in any minor release prior to `1.0.0`.
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
export { ApprovalController } from "./approval.js";
|
|
10
|
+
export { BuilderWorkspaceController } from "./builder-workspace.js";
|
|
11
|
+
export { ChatController } from "./chat.js";
|
|
12
|
+
export { ClarificationController } from "./clarification.js";
|
|
13
|
+
export { ExecutionController } from "./execution.js";
|
|
14
|
+
export { MapWorkspaceController } from "./map-workspace.js";
|
|
15
|
+
export { PlanReviewController } from "./plan-review.js";
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `MapWorkspaceController` — orchestrates the `HonuaMapRuntime` and the
|
|
3
|
+
* `ExplorationContext` for a single result `MapPackage`. The controller
|
|
4
|
+
* owns no MapLibre source/style code of its own — every map mutation
|
|
5
|
+
* delegates to the runtime from `src/runtime/`.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { type ExplorationContext, type LinkedViewPresetName } from "../../exploration/index.js";
|
|
10
|
+
import { type HonuaMapPackage, type HonuaMapPackagePopupBinding, type HonuaMapRuntime, type LegendEntry, type LoadMapPackageOptions, type MaplibreMap, type SetViewStateInput } from "../../runtime/index.js";
|
|
11
|
+
import type { OperatorClient } from "../client.js";
|
|
12
|
+
import { HonuaOperatorMapError } from "../errors.js";
|
|
13
|
+
import type { OperatorTelemetry } from "../telemetry.js";
|
|
14
|
+
import { type Unsubscribe } from "./base.js";
|
|
15
|
+
export type MapWorkspaceEvent = {
|
|
16
|
+
kind: "package-loaded";
|
|
17
|
+
pkg: HonuaMapPackage;
|
|
18
|
+
} | {
|
|
19
|
+
kind: "package-refined";
|
|
20
|
+
pkg: HonuaMapPackage;
|
|
21
|
+
} | {
|
|
22
|
+
kind: "package-disposed";
|
|
23
|
+
} | {
|
|
24
|
+
kind: "error";
|
|
25
|
+
error: HonuaOperatorMapError;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Caller-supplied factory that builds the host MapLibre map and returns
|
|
29
|
+
* a teardown handle. The host owns the `MaplibreMap` lifecycle.
|
|
30
|
+
*/
|
|
31
|
+
export type MapFactory = () => MapFactoryResult | Promise<MapFactoryResult>;
|
|
32
|
+
export interface MapFactoryResult {
|
|
33
|
+
map: MaplibreMap;
|
|
34
|
+
dispose?: () => void;
|
|
35
|
+
}
|
|
36
|
+
export interface MapWorkspaceControllerOptions {
|
|
37
|
+
client: OperatorClient;
|
|
38
|
+
mapFactory: MapFactory;
|
|
39
|
+
/** Linked-view preset for the embedded `ExplorationContext`. Default `"mapDriven"`. */
|
|
40
|
+
explorationPreset?: LinkedViewPresetName;
|
|
41
|
+
telemetry?: OperatorTelemetry;
|
|
42
|
+
/**
|
|
43
|
+
* Pass-through options handed to `loadMapPackage`. The controller
|
|
44
|
+
* never instantiates a `HonuaClient` itself — the host wires the
|
|
45
|
+
* runtime client through this hook.
|
|
46
|
+
*/
|
|
47
|
+
loadOptions?: Omit<LoadMapPackageOptions, "telemetry">;
|
|
48
|
+
}
|
|
49
|
+
export declare class MapWorkspaceController {
|
|
50
|
+
#private;
|
|
51
|
+
constructor(options: MapWorkspaceControllerOptions);
|
|
52
|
+
get runtime(): HonuaMapRuntime | undefined;
|
|
53
|
+
get exploration(): ExplorationContext | undefined;
|
|
54
|
+
on(listener: (event: MapWorkspaceEvent) => void): Unsubscribe;
|
|
55
|
+
/**
|
|
56
|
+
* Bind the controller to an intent so that subsequent `refine()` calls
|
|
57
|
+
* have an intent id to attach to the server request. Idempotent.
|
|
58
|
+
*/
|
|
59
|
+
bindIntent(intentId: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Load a `MapPackage` into a fresh runtime + exploration context.
|
|
62
|
+
* Tears down any previously loaded package; safe to call repeatedly.
|
|
63
|
+
*
|
|
64
|
+
* Concurrent loads supersede each other via `#opGeneration`: an
|
|
65
|
+
* older load whose factory or `loadMapPackage` is still pending when
|
|
66
|
+
* a newer load arrives discards its locally-built runtime/context
|
|
67
|
+
* instead of overwriting the newer state.
|
|
68
|
+
*/
|
|
69
|
+
loadPackage(pkg: HonuaMapPackage): Promise<HonuaMapRuntime>;
|
|
70
|
+
/**
|
|
71
|
+
* Natural-language refinement. The server returns an updated
|
|
72
|
+
* `MapPackage`; the runtime's diff path applies it incrementally.
|
|
73
|
+
* Source-binding failures inside the runtime are forwarded via
|
|
74
|
+
* `runtime.reportSourceError(...)` rather than thrown.
|
|
75
|
+
*/
|
|
76
|
+
refine(prompt: string, signal?: AbortSignal): Promise<HonuaMapPackage>;
|
|
77
|
+
setLayerVisibility(layerId: string, visible: boolean): void;
|
|
78
|
+
bindPopup(layerId: string, binding?: HonuaMapPackagePopupBinding): {
|
|
79
|
+
remove(): void;
|
|
80
|
+
};
|
|
81
|
+
setViewState(view: SetViewStateInput): void;
|
|
82
|
+
getLegend(): LegendEntry[];
|
|
83
|
+
dispose(): void;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=map-workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-workspace.d.ts","sourceRoot":"","sources":["../../../../src/operator/controllers/map-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAG1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAe,KAAK,WAAW,EAAqB,MAAM,WAAW,CAAC;AAE7E,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;CACxD;AAID,qBAAa,sBAAsB;;gBAoBd,OAAO,EAAE,6BAA6B;IAQzD,IAAW,OAAO,IAAI,eAAe,GAAG,SAAS,CAEhD;IAED,IAAW,WAAW,IAAI,kBAAkB,GAAG,SAAS,CAEvD;IAEM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,WAAW;IAIpE;;;OAGG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC;;;;;;;;OAQG;IACU,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAgFxE;;;;;OAKG;IACU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAsD5E,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAI3D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE;IAIrF,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAI3C,SAAS,IAAI,WAAW,EAAE;IAI1B,OAAO,IAAI,IAAI;CAyEvB"}
|