Compare commits
1 Commits
dean/batch
...
fd6ee4f182
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd6ee4f182 |
728
src/index.tsx
728
src/index.tsx
File diff suppressed because it is too large
Load Diff
@@ -78,7 +78,6 @@ fragment VideoCardFields on VideoGQL {
|
|||||||
replies {
|
replies {
|
||||||
id
|
id
|
||||||
message
|
message
|
||||||
replyToCommentId
|
|
||||||
user {
|
user {
|
||||||
...UserSocialsFields
|
...UserSocialsFields
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
# Legacy shot-sim operations still used by mobile master's
|
|
||||||
# LiveStreamPicker / RecordedShotPicker; remove when those are deleted.
|
|
||||||
|
|
||||||
query GetRecordedStreams($limit: Int! = 25) {
|
|
||||||
getFeedVideos(
|
|
||||||
limit: $limit
|
|
||||||
filters: { isStreamCompleted: true, excludeVideosWithNoShots: true }
|
|
||||||
includePrivate: MINE
|
|
||||||
feedInput: { allUsers: true }
|
|
||||||
) {
|
|
||||||
videos {
|
|
||||||
id
|
|
||||||
name
|
|
||||||
createdAt
|
|
||||||
screenshotUri
|
|
||||||
framesPerSecond
|
|
||||||
totalShots
|
|
||||||
owner {
|
|
||||||
id
|
|
||||||
username
|
|
||||||
profileImageUri
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,10 @@
|
|||||||
# Lightweight two-step picker data for Shot Lab's video-first source: the
|
# Lightweight two-step picker data for loading a recorded shot into Shot Lab.
|
||||||
# caller's recent videos (completed or still uploading), then that video's
|
query GetRecordedStreams($limit: Int! = 25) {
|
||||||
# shots. The stream fields hint at "actively updating" without gating.
|
|
||||||
query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
|
|
||||||
getFeedVideos(
|
getFeedVideos(
|
||||||
limit: $limit
|
limit: $limit
|
||||||
includeCallersVideos: false
|
filters: { isStreamCompleted: true, excludeVideosWithNoShots: true }
|
||||||
includePrivate: MINE
|
includePrivate: MINE
|
||||||
feedInput: { userId: $userId }
|
feedInput: { allUsers: true }
|
||||||
) {
|
) {
|
||||||
videos {
|
videos {
|
||||||
id
|
id
|
||||||
@@ -20,11 +18,6 @@ query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
|
|||||||
username
|
username
|
||||||
profileImageUri
|
profileImageUri
|
||||||
}
|
}
|
||||||
stream {
|
|
||||||
id
|
|
||||||
isCompleted
|
|
||||||
lastSegmentUploadedAt
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,11 +36,26 @@ query GetRecordedStreamShots($videoId: Int!, $limit: Int! = 200) {
|
|||||||
serializedShotPaths {
|
serializedShotPaths {
|
||||||
b64EncodedBuffer
|
b64EncodedBuffer
|
||||||
}
|
}
|
||||||
|
cueObjectFeatures {
|
||||||
|
cueObjectDistance
|
||||||
|
cueObjectAngle
|
||||||
|
cueBallSpeed
|
||||||
|
shotDirection
|
||||||
|
spinType
|
||||||
|
}
|
||||||
pocketingIntentionFeatures {
|
pocketingIntentionFeatures {
|
||||||
make
|
make
|
||||||
|
targetPocketDistance
|
||||||
|
targetPocketAngle
|
||||||
|
targetPocketAngleDirection
|
||||||
|
marginOfErrorInDegrees
|
||||||
|
intendedPocketType
|
||||||
|
difficulty
|
||||||
}
|
}
|
||||||
pocketingIntentionInfo {
|
pocketingIntentionInfo {
|
||||||
|
ballId
|
||||||
pocketId
|
pocketId
|
||||||
|
pathMetadataIndex
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,18 +20,6 @@ query GetSessionCoach($videoId: Int!) {
|
|||||||
candidates {
|
candidates {
|
||||||
...SessionCoachCandidateFields
|
...SessionCoachCandidateFields
|
||||||
}
|
}
|
||||||
agentGeneration {
|
|
||||||
...SessionCoachGenerationFields
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mutation RequestSessionCoachGeneration($videoId: Int!) {
|
|
||||||
requestSessionCoachGeneration(videoId: $videoId) {
|
|
||||||
state
|
|
||||||
agentGeneration {
|
|
||||||
...SessionCoachGenerationFields
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,39 +49,3 @@ fragment SessionCoachCandidateFields on SessionCoachCandidateGQL {
|
|||||||
rankReason
|
rankReason
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment SessionCoachGenerationFields on SessionCoachGenerationGQL {
|
|
||||||
id
|
|
||||||
state
|
|
||||||
createdAt
|
|
||||||
completedAt
|
|
||||||
decision {
|
|
||||||
selectedCandidateId
|
|
||||||
title
|
|
||||||
body
|
|
||||||
suggestedAction
|
|
||||||
drillId
|
|
||||||
drillReason
|
|
||||||
practiceAttemptCount
|
|
||||||
practiceTarget
|
|
||||||
}
|
|
||||||
diagnostics {
|
|
||||||
analysisVersion
|
|
||||||
promptVersion
|
|
||||||
providerKey
|
|
||||||
modelName
|
|
||||||
inputHash
|
|
||||||
attemptCount
|
|
||||||
maxAttempts
|
|
||||||
enqueueCount
|
|
||||||
latencyMs
|
|
||||||
inputTokens
|
|
||||||
cachedInputTokens
|
|
||||||
outputTokens
|
|
||||||
failureCode
|
|
||||||
updatedAt
|
|
||||||
startedAt
|
|
||||||
lastEnqueuedAt
|
|
||||||
abstentionReason
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ query GetVideoSocialDetailsById($videoId: Int!) {
|
|||||||
replies {
|
replies {
|
||||||
id
|
id
|
||||||
message
|
message
|
||||||
replyToCommentId
|
|
||||||
user {
|
user {
|
||||||
...UserSocialsFields
|
...UserSocialsFields
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,52 +48,6 @@ mutation GetUploadLink($videoId: Int!, $segmentIndex: Int!) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
stream {
|
stream {
|
||||||
id
|
|
||||||
uploadCompletionCursor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mutation GetUploadLinks($videoId: Int!, $segmentIndexes: [Int!]!) {
|
|
||||||
getUploadLinks(videoId: $videoId, segmentIndexes: $segmentIndexes) {
|
|
||||||
value {
|
|
||||||
... on UploadLinkBatch {
|
|
||||||
links {
|
|
||||||
segmentIndex
|
|
||||||
uploadUrl
|
|
||||||
headers {
|
|
||||||
key
|
|
||||||
value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
alreadyUploaded
|
|
||||||
}
|
|
||||||
... on GetUploadLinkErrors {
|
|
||||||
error {
|
|
||||||
... on MustHaveSetForUploadLinkErr {
|
|
||||||
resolution
|
|
||||||
framesPerSecond
|
|
||||||
}
|
|
||||||
... on ProcessingFailedErr {
|
|
||||||
processing {
|
|
||||||
status
|
|
||||||
errors {
|
|
||||||
message
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
... on StorageLimitExceededErr {
|
|
||||||
reason
|
|
||||||
tierName
|
|
||||||
retainedStorageUsedBytes
|
|
||||||
retainedStorageLimitBytes
|
|
||||||
remainingStorageBytes
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stream {
|
|
||||||
id
|
|
||||||
uploadCompletionCursor
|
uploadCompletionCursor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,7 +127,6 @@ fragment UploadStreamWithDetails on VideoGQL {
|
|||||||
name
|
name
|
||||||
startTime
|
startTime
|
||||||
stream {
|
stream {
|
||||||
id
|
|
||||||
isCompleted
|
isCompleted
|
||||||
lastIntendedSegmentBound
|
lastIntendedSegmentBound
|
||||||
uploadCompletionCursor
|
uploadCompletionCursor
|
||||||
|
|||||||
@@ -221,7 +221,6 @@ type CommentGQL {
|
|||||||
user: UserGQL!
|
user: UserGQL!
|
||||||
message: String!
|
message: String!
|
||||||
replies: [CommentGQL!]!
|
replies: [CommentGQL!]!
|
||||||
replyToCommentId: Int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type CountLeaderboardGQL {
|
type CountLeaderboardGQL {
|
||||||
@@ -526,24 +525,6 @@ type GetUploadLinkReturn {
|
|||||||
stream: UploadStreamGQL
|
stream: UploadStreamGQL
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetUploadLinksReturn {
|
|
||||||
value: UploadLinkBatchGetUploadLinkErrors!
|
|
||||||
stream: UploadStreamGQL
|
|
||||||
}
|
|
||||||
|
|
||||||
type SegmentUploadLink {
|
|
||||||
segmentIndex: Int!
|
|
||||||
uploadUrl: String!
|
|
||||||
headers: [Header]!
|
|
||||||
}
|
|
||||||
|
|
||||||
type UploadLinkBatch {
|
|
||||||
links: [SegmentUploadLink!]!
|
|
||||||
alreadyUploaded: [Int!]!
|
|
||||||
}
|
|
||||||
|
|
||||||
union UploadLinkBatchGetUploadLinkErrors = UploadLinkBatch | GetUploadLinkErrors
|
|
||||||
|
|
||||||
type HLSPlaylistGQL {
|
type HLSPlaylistGQL {
|
||||||
videoId: Int!
|
videoId: Int!
|
||||||
m3u8Text: String!
|
m3u8Text: String!
|
||||||
@@ -735,7 +716,6 @@ type Mutation {
|
|||||||
shotId: Int!
|
shotId: Int!
|
||||||
fieldsToEdit: EditableShotFieldInputGQL!
|
fieldsToEdit: EditableShotFieldInputGQL!
|
||||||
): EditShotReturn!
|
): EditShotReturn!
|
||||||
requestSessionCoachGeneration(videoId: Int!): SessionCoachGQL!
|
|
||||||
getProfileImageUploadLink(
|
getProfileImageUploadLink(
|
||||||
fileExt: String = ".png"
|
fileExt: String = ".png"
|
||||||
): GetProfileUploadLinkReturn!
|
): GetProfileUploadLinkReturn!
|
||||||
@@ -773,7 +753,6 @@ type Mutation {
|
|||||||
expectedDurationSeconds: Float = null
|
expectedDurationSeconds: Float = null
|
||||||
): CreateUploadStreamReturn!
|
): CreateUploadStreamReturn!
|
||||||
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
|
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
|
||||||
getUploadLinks(videoId: Int!, segmentIndexes: [Int!]!): GetUploadLinksReturn!
|
|
||||||
getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn!
|
getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn!
|
||||||
setSegmentDuration(
|
setSegmentDuration(
|
||||||
videoId: Int!
|
videoId: Int!
|
||||||
@@ -1341,17 +1320,6 @@ enum SessionCoachCandidateKindEnum {
|
|||||||
USAGE_PATTERN
|
USAGE_PATTERN
|
||||||
}
|
}
|
||||||
|
|
||||||
type SessionCoachDecisionGQL {
|
|
||||||
selectedCandidateId: ID
|
|
||||||
title: String
|
|
||||||
body: String
|
|
||||||
suggestedAction: String
|
|
||||||
drillId: String
|
|
||||||
drillReason: String
|
|
||||||
practiceAttemptCount: Int
|
|
||||||
practiceTarget: String
|
|
||||||
}
|
|
||||||
|
|
||||||
type SessionCoachEvidenceGQL {
|
type SessionCoachEvidenceGQL {
|
||||||
bucketKey: String!
|
bucketKey: String!
|
||||||
bucketLabel: String!
|
bucketLabel: String!
|
||||||
@@ -1384,43 +1352,6 @@ type SessionCoachGQL {
|
|||||||
makePercentage: Float
|
makePercentage: Float
|
||||||
primaryCandidate: SessionCoachCandidateGQL
|
primaryCandidate: SessionCoachCandidateGQL
|
||||||
candidates: [SessionCoachCandidateGQL!]!
|
candidates: [SessionCoachCandidateGQL!]!
|
||||||
agentGeneration: SessionCoachGenerationGQL
|
|
||||||
}
|
|
||||||
|
|
||||||
type SessionCoachGenerationDiagnosticsGQL {
|
|
||||||
analysisVersion: String!
|
|
||||||
promptVersion: String!
|
|
||||||
providerKey: String!
|
|
||||||
modelName: String!
|
|
||||||
inputHash: String!
|
|
||||||
attemptCount: Int!
|
|
||||||
maxAttempts: Int!
|
|
||||||
enqueueCount: Int!
|
|
||||||
latencyMs: Int
|
|
||||||
inputTokens: Int
|
|
||||||
cachedInputTokens: Int
|
|
||||||
outputTokens: Int
|
|
||||||
failureCode: String
|
|
||||||
updatedAt: DateTime!
|
|
||||||
startedAt: DateTime
|
|
||||||
lastEnqueuedAt: DateTime
|
|
||||||
abstentionReason: String
|
|
||||||
}
|
|
||||||
|
|
||||||
type SessionCoachGenerationGQL {
|
|
||||||
id: ID!
|
|
||||||
state: SessionCoachGenerationStateEnum!
|
|
||||||
createdAt: DateTime!
|
|
||||||
completedAt: DateTime
|
|
||||||
decision: SessionCoachDecisionGQL
|
|
||||||
diagnostics: SessionCoachGenerationDiagnosticsGQL
|
|
||||||
}
|
|
||||||
|
|
||||||
enum SessionCoachGenerationStateEnum {
|
|
||||||
QUEUED
|
|
||||||
RUNNING
|
|
||||||
READY
|
|
||||||
FAILED
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum SessionCoachIneligibilityReasonEnum {
|
enum SessionCoachIneligibilityReasonEnum {
|
||||||
@@ -1949,7 +1880,7 @@ type VideoGQL {
|
|||||||
startTime: DateTime
|
startTime: DateTime
|
||||||
endTime: DateTime
|
endTime: DateTime
|
||||||
elapsedTime: Float
|
elapsedTime: Float
|
||||||
framesPerSecond: Float
|
framesPerSecond: Float!
|
||||||
tableSize: Float!
|
tableSize: Float!
|
||||||
pocketSize: Float
|
pocketSize: Float
|
||||||
private: Boolean!
|
private: Boolean!
|
||||||
|
|||||||
Reference in New Issue
Block a user