@burdenoff/microfe-technospam 2026.1031.7 → 2026.1101.1
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.
|
@@ -15303,6 +15303,21 @@ export type ContextMessageAttachmentInput = {
|
|
|
15303
15303
|
thumbnail?: InputMaybe<Scalars['String']['input']>;
|
|
15304
15304
|
width?: InputMaybe<Scalars['Int']['input']>;
|
|
15305
15305
|
};
|
|
15306
|
+
export type ContinuousOptimisationSettings = {
|
|
15307
|
+
__typename?: 'ContinuousOptimisationSettings';
|
|
15308
|
+
/** Optimisation is opt-in per workspace and off by default. */
|
|
15309
|
+
enabled: Scalars['Boolean']['output'];
|
|
15310
|
+
enabledAt?: Maybe<Scalars['DateTime']['output']>;
|
|
15311
|
+
enabledBy?: Maybe<Scalars['String']['output']>;
|
|
15312
|
+
/** True while the fluidgrids.continuous-optimisation flag is on for the workspace (named like runFailureTriageSettings.killSwitchOn). False means the kill switch has stopped optimisation: nothing scans and the suggestions are hidden. */
|
|
15313
|
+
killSwitchOn: Scalars['Boolean']['output'];
|
|
15314
|
+
lastDigestAt?: Maybe<Scalars['DateTime']['output']>;
|
|
15315
|
+
lastScanAt?: Maybe<Scalars['DateTime']['output']>;
|
|
15316
|
+
/** Counts from the last scan: workflowsScanned, created, updated, reopened, resolved, deferred, openSuggestions. */
|
|
15317
|
+
lastScanSummary?: Maybe<Scalars['JSON']['output']>;
|
|
15318
|
+
/** The nightly scan and the weekly digest system workflows, once seeded. */
|
|
15319
|
+
systemWorkflows: Array<SystemWorkflowInstallation>;
|
|
15320
|
+
};
|
|
15306
15321
|
export type ContributorStats = {
|
|
15307
15322
|
__typename?: 'ContributorStats';
|
|
15308
15323
|
itemsAdded: Scalars['Int']['output'];
|
|
@@ -56699,6 +56714,8 @@ export type Mutation = {
|
|
|
56699
56714
|
/** Disconnect a channel: further events from it are refused. Already captured events are kept. For an OAuth-backed channel the integration connection is revoked as well. */
|
|
56700
56715
|
disconnectTimeCampusCaptureChannel: TimeCampusCaptureChannel;
|
|
56701
56716
|
dismissHealthyBowlComplianceFlag: ComplianceFlag;
|
|
56717
|
+
/** Dismiss an open or snoozed suggestion with a reason (and an optional note of up to 500 characters). */
|
|
56718
|
+
dismissOptimisationSuggestion: OptimisationSuggestion;
|
|
56702
56719
|
dismissRecommendation: TimeCampusRecommendation;
|
|
56703
56720
|
/**
|
|
56704
56721
|
* Dismiss one of the caller's failure clusters. Later failures with the same
|
|
@@ -57006,6 +57023,11 @@ export type Mutation = {
|
|
|
57006
57023
|
failActivityAsync: Scalars['Boolean']['output'];
|
|
57007
57024
|
/** Fail, by its id, an activity that waits for an asynchronous completion. */
|
|
57008
57025
|
failActivityById: Scalars['Boolean']['output'];
|
|
57026
|
+
/**
|
|
57027
|
+
* Run one scan now (the nightly workflow runs the same scan). Returns skipped with reason
|
|
57028
|
+
* not_enabled when optimisation is off for the workspace.
|
|
57029
|
+
*/
|
|
57030
|
+
fgRunOptimisationScan: OptimisationScanResult;
|
|
57009
57031
|
/**
|
|
57010
57032
|
* Run one triage pass now (the hourly workflow runs the same pass). Returns
|
|
57011
57033
|
* skipped with reason not_enabled or flag_off when triage is off.
|
|
@@ -58544,6 +58566,13 @@ export type Mutation = {
|
|
|
58544
58566
|
propagateTagToChildren: Array<UniversalTagAssignment>;
|
|
58545
58567
|
/** Run an agronomic sweep and return the proposals it wrote. A second sweep over unchanged data updates the open proposal rather than adding another — otherwise the inbox becomes a pile of identical cards, which is how a farmer learns to ignore it. Returns BLOCKED rows too: a treatment the compliance rail refused is recorded so the farmer can see it was considered and why it was refused. Dropping it silently looks identical to the engine never having noticed. */
|
|
58546
58568
|
proposeHealthyBowlAgronomyDecisions: AgronomyDecisionSweepResult;
|
|
58569
|
+
/**
|
|
58570
|
+
* Apply a suggestion: build its change on the workflow's latest version as an OPTIMISE workflow
|
|
58571
|
+
* proposal owned by the caller, without a model call. Returns the suggestion with proposalId set;
|
|
58572
|
+
* preview the proposal with workflowProposal(id) and apply it with applyWorkflowProposal, which
|
|
58573
|
+
* creates a new DRAFT version. Nothing is applied by this call.
|
|
58574
|
+
*/
|
|
58575
|
+
proposeOptimisation: OptimisationSuggestion;
|
|
58547
58576
|
/**
|
|
58548
58577
|
* Propose a fix for a failed run against the version that ran. Returns
|
|
58549
58578
|
* PROCESSING; poll `workflowProposal(id)`.
|
|
@@ -59451,6 +59480,12 @@ export type Mutation = {
|
|
|
59451
59480
|
setBigConsoleExternalEmbedsEnabled: Workspace;
|
|
59452
59481
|
/** Set configuration */
|
|
59453
59482
|
setConfiguration: Configuration;
|
|
59483
|
+
/**
|
|
59484
|
+
* Turn continuous optimisation on or off for this workspace. On (needs the flag) seeds and
|
|
59485
|
+
* activates the nightly scan system workflow, running as the caller, and the weekly digest; off
|
|
59486
|
+
* deactivates the scan, and the digest unless failure triage still uses it. It only ever suggests.
|
|
59487
|
+
*/
|
|
59488
|
+
setContinuousOptimisationEnabled: ContinuousOptimisationSettings;
|
|
59454
59489
|
/** Ask for a skill on a job posting (required or nice-to-have, optional minimum proficiency). */
|
|
59455
59490
|
setCrewJobPostingSkill: CrewJobPostingSkill;
|
|
59456
59491
|
/** Assign (or clear, with rlsPolicyId: null) a dashboard's RLS policy. The policy must already exist in the same workspace as the dashboard. */
|
|
@@ -59591,6 +59626,8 @@ export type Mutation = {
|
|
|
59591
59626
|
signalWorkflowRun: WorkflowSignalResult;
|
|
59592
59627
|
/** Snooze a fired weather alert until an ISO timestamp. */
|
|
59593
59628
|
snoozeHealthyBowlWeatherAlert: WeatherAlertEvent;
|
|
59629
|
+
/** Snooze an open suggestion until a time within 90 days (30 days when until is left out). */
|
|
59630
|
+
snoozeOptimisationSuggestion: OptimisationSuggestion;
|
|
59594
59631
|
snoozeRecommendation: TimeCampusRecommendation;
|
|
59595
59632
|
/** Start a durable Fluidgrids turn. The handle is acceptance, not a completed answer. */
|
|
59596
59633
|
startAssistantTurn: AssistantTurnHandle;
|
|
@@ -60864,6 +60901,11 @@ export type Mutation = {
|
|
|
60864
60901
|
* INTERNAL: Requires actorType SERVICE
|
|
60865
60902
|
*/
|
|
60866
60903
|
workerRunFailureTriage: WorkerRunFailureTriageResponse;
|
|
60904
|
+
/**
|
|
60905
|
+
* The step of the seeded continuous-optimisation workflow (the internal:optimisation node).
|
|
60906
|
+
* INTERNAL: Requires actorType SERVICE
|
|
60907
|
+
*/
|
|
60908
|
+
workerRunOptimisation: WorkerRunOptimisationResponse;
|
|
60867
60909
|
/**
|
|
60868
60910
|
* Lease an activity attempt.
|
|
60869
60911
|
* INTERNAL: Requires actorType SERVICE
|
|
@@ -67159,6 +67201,12 @@ export type MutationDismissHealthyBowlComplianceFlagArgs = {
|
|
|
67159
67201
|
input: DismissComplianceFlagInput;
|
|
67160
67202
|
};
|
|
67161
67203
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
67204
|
+
export type MutationDismissOptimisationSuggestionArgs = {
|
|
67205
|
+
id: Scalars['ID']['input'];
|
|
67206
|
+
note?: InputMaybe<Scalars['String']['input']>;
|
|
67207
|
+
reason: OptimisationDismissReason;
|
|
67208
|
+
};
|
|
67209
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
67162
67210
|
export type MutationDismissRecommendationArgs = {
|
|
67163
67211
|
id: Scalars['ID']['input'];
|
|
67164
67212
|
reason?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -72103,6 +72151,10 @@ export type MutationProposeHealthyBowlAgronomyDecisionsArgs = {
|
|
|
72103
72151
|
input: ProposeAgronomyDecisionsInput;
|
|
72104
72152
|
};
|
|
72105
72153
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
72154
|
+
export type MutationProposeOptimisationArgs = {
|
|
72155
|
+
suggestionId: Scalars['ID']['input'];
|
|
72156
|
+
};
|
|
72157
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
72106
72158
|
export type MutationProposeRunFixArgs = {
|
|
72107
72159
|
input: ProposeRunFixInput;
|
|
72108
72160
|
};
|
|
@@ -74527,6 +74579,10 @@ export type MutationSetConfigurationArgs = {
|
|
|
74527
74579
|
value: Scalars['JSON']['input'];
|
|
74528
74580
|
};
|
|
74529
74581
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
74582
|
+
export type MutationSetContinuousOptimisationEnabledArgs = {
|
|
74583
|
+
enabled: Scalars['Boolean']['input'];
|
|
74584
|
+
};
|
|
74585
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
74530
74586
|
export type MutationSetCrewJobPostingSkillArgs = {
|
|
74531
74587
|
input: SetCrewJobPostingSkillInput;
|
|
74532
74588
|
};
|
|
@@ -74851,6 +74907,11 @@ export type MutationSnoozeHealthyBowlWeatherAlertArgs = {
|
|
|
74851
74907
|
until: Scalars['String']['input'];
|
|
74852
74908
|
};
|
|
74853
74909
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
74910
|
+
export type MutationSnoozeOptimisationSuggestionArgs = {
|
|
74911
|
+
id: Scalars['ID']['input'];
|
|
74912
|
+
until?: InputMaybe<Scalars['DateTime']['input']>;
|
|
74913
|
+
};
|
|
74914
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
74854
74915
|
export type MutationSnoozeRecommendationArgs = {
|
|
74855
74916
|
id: Scalars['ID']['input'];
|
|
74856
74917
|
until: Scalars['DateTime']['input'];
|
|
@@ -78367,6 +78428,10 @@ export type MutationWorkerRunFailureTriageArgs = {
|
|
|
78367
78428
|
input: WorkerRunFailureTriageInput;
|
|
78368
78429
|
};
|
|
78369
78430
|
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
78431
|
+
export type MutationWorkerRunOptimisationArgs = {
|
|
78432
|
+
input: WorkerRunOptimisationInput;
|
|
78433
|
+
};
|
|
78434
|
+
/** Base Mutation type with placeholder field. Extended by individual mutation files. */
|
|
78370
78435
|
export type MutationWorkerStartActivityArgs = {
|
|
78371
78436
|
activityId: Scalars['ID']['input'];
|
|
78372
78437
|
attempt: Scalars['Int']['input'];
|
|
@@ -79638,6 +79703,114 @@ export type OperationContext = {
|
|
|
79638
79703
|
/** Workspace ID for workspace-level scoping */
|
|
79639
79704
|
workspaceId?: Maybe<Scalars['ID']['output']>;
|
|
79640
79705
|
};
|
|
79706
|
+
/** Why a suggestion was dismissed. NOT_APPLICABLE lowers the ranking of the same kind in this workspace. */
|
|
79707
|
+
export declare enum OptimisationDismissReason {
|
|
79708
|
+
AcceptedCost = "ACCEPTED_COST",
|
|
79709
|
+
NotApplicable = "NOT_APPLICABLE",
|
|
79710
|
+
Other = "OTHER",
|
|
79711
|
+
WillFixLater = "WILL_FIX_LATER"
|
|
79712
|
+
}
|
|
79713
|
+
/** What a suggestion proposes. */
|
|
79714
|
+
export declare enum OptimisationKind {
|
|
79715
|
+
/** A node fails on temporary errors (TRANSIENT, DEPENDENCY, TIMEOUT) and never retries. */
|
|
79716
|
+
AddRetry = "ADD_RETRY",
|
|
79717
|
+
/** A cheaper model class scores as well on the workflow's evaluation set. Not detected yet. */
|
|
79718
|
+
CheaperModel = "CHEAPER_MODEL",
|
|
79719
|
+
/** Most of a model node's calls repeat an earlier input. Evidence only until model nodes can cache responses. */
|
|
79720
|
+
EnableCache = "ENABLE_CACHE",
|
|
79721
|
+
/** A production agent node has no guardrail policy. Not detected yet. */
|
|
79722
|
+
MissingGuardrail = "MISSING_GUARDRAIL",
|
|
79723
|
+
/** A node fails on its own configured timeout often enough that a longer one would let it finish. */
|
|
79724
|
+
RaiseTimeout = "RAISE_TIMEOUT",
|
|
79725
|
+
/** A node of the active version never ran across many completed production runs. */
|
|
79726
|
+
UnusedNode = "UNUSED_NODE"
|
|
79727
|
+
}
|
|
79728
|
+
export type OptimisationScanResult = {
|
|
79729
|
+
__typename?: 'OptimisationScanResult';
|
|
79730
|
+
created: Scalars['Int']['output'];
|
|
79731
|
+
/** New suggestions held back by the per-scan cap of 50; a later scan stores them. */
|
|
79732
|
+
deferred: Scalars['Int']['output'];
|
|
79733
|
+
openSuggestions: Scalars['Int']['output'];
|
|
79734
|
+
/** not_enabled or flag_off when skipped. */
|
|
79735
|
+
reason?: Maybe<Scalars['String']['output']>;
|
|
79736
|
+
reopened: Scalars['Int']['output'];
|
|
79737
|
+
resolved: Scalars['Int']['output'];
|
|
79738
|
+
skipped: Scalars['Boolean']['output'];
|
|
79739
|
+
updated: Scalars['Int']['output'];
|
|
79740
|
+
workflowsScanned: Scalars['Int']['output'];
|
|
79741
|
+
};
|
|
79742
|
+
/** One suggestion for one node of one workflow, shared by the workspace's members. */
|
|
79743
|
+
export type OptimisationSuggestion = {
|
|
79744
|
+
__typename?: 'OptimisationSuggestion';
|
|
79745
|
+
/** What was seen and what the change does, in one sentence. */
|
|
79746
|
+
advice: Scalars['String']['output'];
|
|
79747
|
+
/** Whether Apply can build a canvas proposal for this kind now. */
|
|
79748
|
+
applicable: Scalars['Boolean']['output'];
|
|
79749
|
+
appliedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
79750
|
+
appliedVersion?: Maybe<Scalars['String']['output']>;
|
|
79751
|
+
/** Why Apply is unavailable, when applicable is false. */
|
|
79752
|
+
applyBlockedReason?: Maybe<Scalars['String']['output']>;
|
|
79753
|
+
dismissNote?: Maybe<Scalars['String']['output']>;
|
|
79754
|
+
dismissReason?: Maybe<OptimisationDismissReason>;
|
|
79755
|
+
dismissedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
79756
|
+
/** Estimated saving over a month in micro-USD; null when the change saves no model spend or the calls were unpriced. */
|
|
79757
|
+
estimatedMonthlySavingMicroUsd?: Maybe<Scalars['Float']['output']>;
|
|
79758
|
+
/**
|
|
79759
|
+
* The numbers behind the suggestion over the window (windowDays): for example executions, timeouts,
|
|
79760
|
+
* timeoutRate, currentTimeoutMs, p95CompletedMs and suggestedTimeoutMs (RAISE_TIMEOUT);
|
|
79761
|
+
* transientFailures, failuresByType and proposedRetry (ADD_RETRY); completedRuns and removedNodeIds
|
|
79762
|
+
* (UNUSED_NODE); calls, distinctInputs, repeatShare and costMicroUsd (ENABLE_CACHE). Never run data.
|
|
79763
|
+
*/
|
|
79764
|
+
evidence: Scalars['JSON']['output'];
|
|
79765
|
+
firstSeenAt: Scalars['DateTime']['output'];
|
|
79766
|
+
id: Scalars['ID']['output'];
|
|
79767
|
+
/** Impact before this workspace's dismiss feedback: 1 point per cent saved a month, 5 per failed run avoided, 2 per node removed. */
|
|
79768
|
+
impact: Scalars['Float']['output'];
|
|
79769
|
+
kind: OptimisationKind;
|
|
79770
|
+
lastSeenAt: Scalars['DateTime']['output'];
|
|
79771
|
+
/** The node the suggestion is about (for UNUSED_NODE, the first node of the unused part). */
|
|
79772
|
+
nodeId: Scalars['String']['output'];
|
|
79773
|
+
nodeType?: Maybe<Scalars['String']['output']>;
|
|
79774
|
+
productId: Scalars['String']['output'];
|
|
79775
|
+
/** The latest OPTIMISE proposal made for it. Read it with workflowProposal(id); only the member who asked can. */
|
|
79776
|
+
proposalId?: Maybe<Scalars['ID']['output']>;
|
|
79777
|
+
proposedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
79778
|
+
resolvedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
79779
|
+
/** The newest runs behind the evidence, at most ten. */
|
|
79780
|
+
sampleRunIds: Array<Scalars['ID']['output']>;
|
|
79781
|
+
/** Ranking: impact lowered for kinds this workspace recently dismissed as not applicable. */
|
|
79782
|
+
score: Scalars['Float']['output'];
|
|
79783
|
+
snoozedUntil?: Maybe<Scalars['DateTime']['output']>;
|
|
79784
|
+
status: OptimisationSuggestionStatus;
|
|
79785
|
+
/** A short title for the kind. */
|
|
79786
|
+
title: Scalars['String']['output'];
|
|
79787
|
+
workflowKey: Scalars['String']['output'];
|
|
79788
|
+
workflowName?: Maybe<Scalars['String']['output']>;
|
|
79789
|
+
/** The ACTIVE version the evidence was read from. */
|
|
79790
|
+
workflowVersion: Scalars['String']['output'];
|
|
79791
|
+
};
|
|
79792
|
+
export type OptimisationSuggestionFilter = {
|
|
79793
|
+
kind?: InputMaybe<Array<OptimisationKind>>;
|
|
79794
|
+
/** Defaults to every status. */
|
|
79795
|
+
status?: InputMaybe<Array<OptimisationSuggestionStatus>>;
|
|
79796
|
+
workflowKey?: InputMaybe<Scalars['String']['input']>;
|
|
79797
|
+
};
|
|
79798
|
+
export type OptimisationSuggestionList = {
|
|
79799
|
+
__typename?: 'OptimisationSuggestionList';
|
|
79800
|
+
items: Array<OptimisationSuggestion>;
|
|
79801
|
+
total: Scalars['Int']['output'];
|
|
79802
|
+
};
|
|
79803
|
+
export declare enum OptimisationSuggestionStatus {
|
|
79804
|
+
/** Its proposal was applied as a new DRAFT version. */
|
|
79805
|
+
Applied = "APPLIED",
|
|
79806
|
+
/** Dismissed with a reason. A scan reopens it only when the evidence at least doubles. */
|
|
79807
|
+
Dismissed = "DISMISSED",
|
|
79808
|
+
Open = "OPEN",
|
|
79809
|
+
/** The last scan no longer saw the condition. */
|
|
79810
|
+
Resolved = "RESOLVED",
|
|
79811
|
+
/** Hidden until snoozedUntil. */
|
|
79812
|
+
Snoozed = "SNOOZED"
|
|
79813
|
+
}
|
|
79641
79814
|
export type Order = {
|
|
79642
79815
|
__typename?: 'Order';
|
|
79643
79816
|
/** Sales channel: CSA_SUBSCRIPTION | WHOLESALE | FARMERS_MARKET | DIRECT */
|
|
@@ -87841,6 +88014,16 @@ export type PswAgedReceivables = {
|
|
|
87841
88014
|
sixty: PswAgedReceivableBucket;
|
|
87842
88015
|
thirty: PswAgedReceivableBucket;
|
|
87843
88016
|
};
|
|
88017
|
+
/** One slice of a revenue distribution (practice area, client or engagement). id is null for the unassigned bucket (invoices with no engagement/practice area). */
|
|
88018
|
+
export type PswAnalyticsDistributionRow = {
|
|
88019
|
+
__typename?: 'PswAnalyticsDistributionRow';
|
|
88020
|
+
amount: Scalars['Float']['output'];
|
|
88021
|
+
id?: Maybe<Scalars['ID']['output']>;
|
|
88022
|
+
invoiceCount: Scalars['Int']['output'];
|
|
88023
|
+
label: Scalars['String']['output'];
|
|
88024
|
+
/** Share of totalInvoiced in the window, 0-100. */
|
|
88025
|
+
sharePct: Scalars['Float']['output'];
|
|
88026
|
+
};
|
|
87844
88027
|
export type PswClient = {
|
|
87845
88028
|
__typename?: 'PswClient';
|
|
87846
88029
|
address?: Maybe<Scalars['String']['output']>;
|
|
@@ -87912,6 +88095,14 @@ export declare enum PswClientType {
|
|
|
87912
88095
|
Individual = "INDIVIDUAL",
|
|
87913
88096
|
Organization = "ORGANIZATION"
|
|
87914
88097
|
}
|
|
88098
|
+
export type PswCollectionMonth = {
|
|
88099
|
+
__typename?: 'PswCollectionMonth';
|
|
88100
|
+
collected: Scalars['Float']['output'];
|
|
88101
|
+
collectionRate: Scalars['Float']['output'];
|
|
88102
|
+
invoiced: Scalars['Float']['output'];
|
|
88103
|
+
/** YYYY-MM */
|
|
88104
|
+
month: Scalars['String']['output'];
|
|
88105
|
+
};
|
|
87915
88106
|
export type PswComplianceCheck = {
|
|
87916
88107
|
__typename?: 'PswComplianceCheck';
|
|
87917
88108
|
createdAt: Scalars['DateTime']['output'];
|
|
@@ -88723,6 +88914,40 @@ export type PswPageInfo = {
|
|
|
88723
88914
|
cursor?: Maybe<Scalars['String']['output']>;
|
|
88724
88915
|
hasMore: Scalars['Boolean']['output'];
|
|
88725
88916
|
};
|
|
88917
|
+
export type PswPracticeAnalytics = {
|
|
88918
|
+
__typename?: 'PswPracticeAnalytics';
|
|
88919
|
+
activePractitioners: Scalars['Int']['output'];
|
|
88920
|
+
agedReceivables: PswAgedReceivables;
|
|
88921
|
+
billableHours: Scalars['Float']['output'];
|
|
88922
|
+
/** billableHours / totalHours, 0-100. */
|
|
88923
|
+
billableMixPct: Scalars['Float']['output'];
|
|
88924
|
+
/** activePractitioners x weeks in window x capacityHoursPerWeek. */
|
|
88925
|
+
capacityHours: Scalars['Float']['output'];
|
|
88926
|
+
capacityHoursPerWeek: Scalars['Float']['output'];
|
|
88927
|
+
collectionByMonth: Array<PswCollectionMonth>;
|
|
88928
|
+
/** totalCollected / totalInvoiced, 0-100. */
|
|
88929
|
+
collectionRate: Scalars['Float']['output'];
|
|
88930
|
+
/** Currency of every monetary figure; rows in other currencies are excluded (no FX conversion). */
|
|
88931
|
+
currency: Scalars['String']['output'];
|
|
88932
|
+
invoiceCount: Scalars['Int']['output'];
|
|
88933
|
+
months: Scalars['Int']['output'];
|
|
88934
|
+
nonBillableHours: Scalars['Float']['output'];
|
|
88935
|
+
outstandingInWindow: Scalars['Float']['output'];
|
|
88936
|
+
/** Top 10 clients by billed amount. */
|
|
88937
|
+
revenueByClient: Array<PswAnalyticsDistributionRow>;
|
|
88938
|
+
/** Top 10 engagements by billed amount. */
|
|
88939
|
+
revenueByEngagement: Array<PswAnalyticsDistributionRow>;
|
|
88940
|
+
revenueByPracticeArea: Array<PswAnalyticsDistributionRow>;
|
|
88941
|
+
timeToPayment: PswTimeToPayment;
|
|
88942
|
+
totalCollected: Scalars['Float']['output'];
|
|
88943
|
+
totalHours: Scalars['Float']['output'];
|
|
88944
|
+
/** Total of SENT, OVERDUE and PAID invoices issued in the window. */
|
|
88945
|
+
totalInvoiced: Scalars['Float']['output'];
|
|
88946
|
+
/** billableHours / capacityHours, 0-100. */
|
|
88947
|
+
utilizationRate: Scalars['Float']['output'];
|
|
88948
|
+
windowStart: Scalars['DateTime']['output'];
|
|
88949
|
+
workInProgress: PswWorkInProgress;
|
|
88950
|
+
};
|
|
88726
88951
|
export type PswPracticeArea = {
|
|
88727
88952
|
__typename?: 'PswPracticeArea';
|
|
88728
88953
|
code?: Maybe<Scalars['String']['output']>;
|
|
@@ -89035,6 +89260,13 @@ export declare enum PswTimeEntryStatus {
|
|
|
89035
89260
|
Rejected = "REJECTED",
|
|
89036
89261
|
Submitted = "SUBMITTED"
|
|
89037
89262
|
}
|
|
89263
|
+
export type PswTimeToPayment = {
|
|
89264
|
+
__typename?: 'PswTimeToPayment';
|
|
89265
|
+
/** Average days from sending (or issue) to payment; null when nothing was paid in the window. */
|
|
89266
|
+
averageDays?: Maybe<Scalars['Float']['output']>;
|
|
89267
|
+
medianDays?: Maybe<Scalars['Float']['output']>;
|
|
89268
|
+
paidInvoiceCount: Scalars['Int']['output'];
|
|
89269
|
+
};
|
|
89038
89270
|
export type PswTrustAccount = {
|
|
89039
89271
|
__typename?: 'PswTrustAccount';
|
|
89040
89272
|
accountNumberLast4?: Maybe<Scalars['String']['output']>;
|
|
@@ -89220,6 +89452,14 @@ export type PswUpdateTimeEntryInput = {
|
|
|
89220
89452
|
narrative?: InputMaybe<Scalars['String']['input']>;
|
|
89221
89453
|
rate?: InputMaybe<Scalars['Float']['input']>;
|
|
89222
89454
|
};
|
|
89455
|
+
/** Billable, unbilled, non-rejected time not yet attached to an invoice (current balance). */
|
|
89456
|
+
export type PswWorkInProgress = {
|
|
89457
|
+
__typename?: 'PswWorkInProgress';
|
|
89458
|
+
entryCount: Scalars['Int']['output'];
|
|
89459
|
+
hours: Scalars['Float']['output'];
|
|
89460
|
+
oldestEntryDate?: Maybe<Scalars['DateTime']['output']>;
|
|
89461
|
+
value: Scalars['Float']['output'];
|
|
89462
|
+
};
|
|
89223
89463
|
export type PswWriteOff = {
|
|
89224
89464
|
__typename?: 'PswWriteOff';
|
|
89225
89465
|
actorId: Scalars['ID']['output'];
|
|
@@ -90011,6 +90251,8 @@ export type Query = {
|
|
|
90011
90251
|
* its owner before saving it (BOFF-9726).
|
|
90012
90252
|
*/
|
|
90013
90253
|
connectionsNotUsableBy: Array<Scalars['ID']['output']>;
|
|
90254
|
+
/** Whether continuous optimisation is on for this workspace, and the system workflows it seeded. */
|
|
90255
|
+
continuousOptimisationSettings: ContinuousOptimisationSettings;
|
|
90014
90256
|
conversation?: Maybe<Conversation>;
|
|
90015
90257
|
conversationCapabilities: ConversationFeatures;
|
|
90016
90258
|
conversations: ConversationConnection;
|
|
@@ -92186,6 +92428,10 @@ export type Query = {
|
|
|
92186
92428
|
operationConfig?: Maybe<OperationConfig>;
|
|
92187
92429
|
/** Get list of operation configurations */
|
|
92188
92430
|
operationConfigs: OperationConfigsListResponse;
|
|
92431
|
+
/** One optimisation suggestion of this workspace. Any other id is NOT_FOUND. */
|
|
92432
|
+
optimisationSuggestion: OptimisationSuggestion;
|
|
92433
|
+
/** The workspace's optimisation suggestions, best first. */
|
|
92434
|
+
optimisationSuggestions: OptimisationSuggestionList;
|
|
92189
92435
|
/** Get total count of organizations (for analytics) */
|
|
92190
92436
|
organizationCount: Scalars['Int']['output'];
|
|
92191
92437
|
parser?: Maybe<Parser>;
|
|
@@ -92632,6 +92878,8 @@ export type Query = {
|
|
|
92632
92878
|
/** Signature requests awaiting THIS actor's signature — self-scoped (Type C): the ctx.actorId filter IS the access control. */
|
|
92633
92879
|
pswMyPendingSignatureRequests: PswSignatureSignerConnection;
|
|
92634
92880
|
pswObligationReminder?: Maybe<PswObligationReminder>;
|
|
92881
|
+
/** Practice KPIs for the current workspace: collection rate, utilization, revenue by practice area/client/engagement, time to payment, WIP and aged receivables. Monetary figures cover one currency (USD by default); months is clamped to 1-36 and capacityHoursPerWeek to 1-80. */
|
|
92882
|
+
pswPracticeAnalytics: PswPracticeAnalytics;
|
|
92635
92883
|
pswPracticeArea?: Maybe<PswPracticeArea>;
|
|
92636
92884
|
pswPractitioner?: Maybe<PswPractitioner>;
|
|
92637
92885
|
pswPractitionerCredential?: Maybe<PswPractitionerCredential>;
|
|
@@ -102233,6 +102481,16 @@ export type QueryOperationConfigsArgs = {
|
|
|
102233
102481
|
pagination?: InputMaybe<WorkflowPaginationInput>;
|
|
102234
102482
|
};
|
|
102235
102483
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
102484
|
+
export type QueryOptimisationSuggestionArgs = {
|
|
102485
|
+
id: Scalars['ID']['input'];
|
|
102486
|
+
};
|
|
102487
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
102488
|
+
export type QueryOptimisationSuggestionsArgs = {
|
|
102489
|
+
filter?: InputMaybe<OptimisationSuggestionFilter>;
|
|
102490
|
+
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
102491
|
+
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
102492
|
+
};
|
|
102493
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
102236
102494
|
export type QueryParserArgs = {
|
|
102237
102495
|
id: Scalars['ID']['input'];
|
|
102238
102496
|
};
|
|
@@ -103533,6 +103791,12 @@ export type QueryPswObligationReminderArgs = {
|
|
|
103533
103791
|
id: Scalars['ID']['input'];
|
|
103534
103792
|
};
|
|
103535
103793
|
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
103794
|
+
export type QueryPswPracticeAnalyticsArgs = {
|
|
103795
|
+
capacityHoursPerWeek?: InputMaybe<Scalars['Float']['input']>;
|
|
103796
|
+
currency?: InputMaybe<Scalars['String']['input']>;
|
|
103797
|
+
months?: InputMaybe<Scalars['Int']['input']>;
|
|
103798
|
+
};
|
|
103799
|
+
/** Base Query type with placeholder field. Extended by individual query files. */
|
|
103536
103800
|
export type QueryPswPracticeAreaArgs = {
|
|
103537
103801
|
id: Scalars['ID']['input'];
|
|
103538
103802
|
};
|
|
@@ -127950,6 +128214,12 @@ export type WorkerRunAiInvocationInput = {
|
|
|
127950
128214
|
/** "platform" for a platform-managed key, "byo" for the workspace's own provider key. */
|
|
127951
128215
|
credentialSource: Scalars['String']['input'];
|
|
127952
128216
|
finishedAt: Scalars['DateTime']['input'];
|
|
128217
|
+
/**
|
|
128218
|
+
* BOFF-9969: SHA-256 (64 lowercase hex) of the call's canonical model input, as defined in
|
|
128219
|
+
* wspace-workflow-svc src/modules/optimisation/core/input-fingerprint.ts. Never the input itself.
|
|
128220
|
+
* Equal fingerprints mark a repeated input (a response-cache candidate). Anything else is dropped.
|
|
128221
|
+
*/
|
|
128222
|
+
inputFingerprint?: InputMaybe<Scalars['String']['input']>;
|
|
127953
128223
|
/** Input tokens, including cached input. */
|
|
127954
128224
|
inputTokens?: InputMaybe<Scalars['Float']['input']>;
|
|
127955
128225
|
latencyMs?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -128028,6 +128298,22 @@ export type WorkerRunLogLineInput = {
|
|
|
128028
128298
|
timestamp: Scalars['DateTime']['input'];
|
|
128029
128299
|
truncated?: InputMaybe<Scalars['Boolean']['input']>;
|
|
128030
128300
|
};
|
|
128301
|
+
export type WorkerRunOptimisationInput = {
|
|
128302
|
+
nodeId: Scalars['String']['input'];
|
|
128303
|
+
/** scan */
|
|
128304
|
+
operation: Scalars['String']['input'];
|
|
128305
|
+
/** The system workflow run executing the node. */
|
|
128306
|
+
runId: Scalars['ID']['input'];
|
|
128307
|
+
workspaceId: Scalars['ID']['input'];
|
|
128308
|
+
};
|
|
128309
|
+
export type WorkerRunOptimisationResponse = {
|
|
128310
|
+
__typename?: 'WorkerRunOptimisationResponse';
|
|
128311
|
+
error?: Maybe<Scalars['String']['output']>;
|
|
128312
|
+
errorCode?: Maybe<Scalars['String']['output']>;
|
|
128313
|
+
/** The step's output for the node (JSON object). */
|
|
128314
|
+
output?: Maybe<Scalars['JSON']['output']>;
|
|
128315
|
+
success: Scalars['Boolean']['output'];
|
|
128316
|
+
};
|
|
128031
128317
|
export type WorkerRunStatusEntry = {
|
|
128032
128318
|
__typename?: 'WorkerRunStatusEntry';
|
|
128033
128319
|
/** How the run executes. The worker drops a graph job that reaches a DURABLE_FN run. */
|
|
@@ -129141,6 +129427,8 @@ export declare enum WorkflowProposalKind {
|
|
|
129141
129427
|
Author = "AUTHOR",
|
|
129142
129428
|
/** One more node after a chosen node */
|
|
129143
129429
|
NextNode = "NEXT_NODE",
|
|
129430
|
+
/** The change behind a continuous-optimisation suggestion, built without a model call (proposeOptimisation) */
|
|
129431
|
+
Optimise = "OPTIMISE",
|
|
129144
129432
|
/** A fix for a failed run */
|
|
129145
129433
|
Repair = "REPAIR"
|
|
129146
129434
|
}
|