mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
feat(voice): add reusable geometry actions
- turn named places and mapped landmarks into reusable bounded areas - count loaded records inside resolved, drawn and annotated geometry - find recent imagery for an area, the view or the pointer snapshot - keep osm place search behind an operator-configured overpass endpoint - preserve cancellation, ownership and follow-up memory across every action - cover geometry, provider lifecycle, cache isolation and voice routing
This commit is contained in:
1 parent
01979bba1e
commit
b234d7b427
84 files changed
+14262
-1681
No files matched your search
@@ -1,4 +1,8 @@
|
||||
import { HUD_LAYOUTS } from '../hudLayoutPolicy.js';
|
||||
import {
|
||||
AREA_CANDIDATE_ID_PATTERN,
|
||||
MAX_AREA_CANDIDATE_ID_LENGTH,
|
||||
} from './areaCandidateContract.js';
|
||||
|
||||
// Canonical action arguments. Descriptive wording is supplied separately.
|
||||
import {
|
||||
@@ -782,11 +786,28 @@ const schemas = [
|
||||
properties: {
|
||||
kind: {
|
||||
type: 'string',
|
||||
enum: ['view', 'region', 'radius', 'anywhere', 'pointer'],
|
||||
enum: [
|
||||
'view',
|
||||
'region',
|
||||
'radius',
|
||||
'anywhere',
|
||||
'pointer',
|
||||
'area',
|
||||
'drawn',
|
||||
'annotation',
|
||||
],
|
||||
},
|
||||
name: {
|
||||
type: 'string',
|
||||
},
|
||||
areaId: {
|
||||
type: 'string',
|
||||
maxLength: 120,
|
||||
},
|
||||
id: {
|
||||
type: 'string',
|
||||
maxLength: 60,
|
||||
},
|
||||
km: {
|
||||
type: 'number',
|
||||
},
|
||||
@@ -843,6 +864,75 @@ const schemas = [
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'resolve_area',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
additionalProperties: false,
|
||||
properties: {
|
||||
query: { type: 'string', minLength: 1, maxLength: 200 },
|
||||
level: {
|
||||
type: 'string',
|
||||
enum: [
|
||||
'country',
|
||||
'admin1',
|
||||
'admin2',
|
||||
'city',
|
||||
'district',
|
||||
'natural',
|
||||
'site',
|
||||
],
|
||||
},
|
||||
within: { type: 'string', maxLength: 120 },
|
||||
candidateId: {
|
||||
type: 'string',
|
||||
minLength: 1,
|
||||
maxLength: MAX_AREA_CANDIDATE_ID_LENGTH,
|
||||
pattern: AREA_CANDIDATE_ID_PATTERN,
|
||||
},
|
||||
draw: { type: 'boolean' },
|
||||
around: { type: 'boolean' },
|
||||
radiusM: { type: 'number', minimum: 50, maximum: 20000 },
|
||||
flyTo: { type: 'boolean' },
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'find_imagery',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
additionalProperties: false,
|
||||
properties: {
|
||||
areaId: { type: 'string', maxLength: 120 },
|
||||
area: { type: 'string', enum: ['view', 'pointer'] },
|
||||
dateRange: {
|
||||
type: 'object',
|
||||
additionalProperties: false,
|
||||
properties: {
|
||||
from: { type: 'string', maxLength: 30 },
|
||||
to: { type: 'string', maxLength: 30 },
|
||||
days: { type: 'number', minimum: 1, maximum: 30 },
|
||||
},
|
||||
},
|
||||
maxCloudPct: { type: 'number', minimum: 0, maximum: 100 },
|
||||
source: { type: 'string', enum: ['hls', 'viirs', 'any'] },
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'osm_query',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
additionalProperties: false,
|
||||
required: ['what'],
|
||||
properties: {
|
||||
what: { type: 'string', minLength: 1, maxLength: 80 },
|
||||
areaId: { type: 'string', maxLength: 120 },
|
||||
countOnly: { type: 'boolean' },
|
||||
limit: { type: 'number', minimum: 1, maximum: 1000 },
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'next_iss_pass',
|
||||
parameters: {
|
||||
|
||||
Reference in new issue
Block a user