@dsh-enhanced/assistant-work-items 0.0.0-stage → 0.1.66
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 +21 -0
- package/README.md +685 -2
- package/cordis.patch.yml +11 -0
- package/lib/acceptance-binding.d.ts +86 -0
- package/lib/acceptance-binding.d.ts.map +1 -0
- package/lib/acceptance-binding.js +250 -0
- package/lib/acceptance-binding.js.map +1 -0
- package/lib/admission.d.ts +95 -0
- package/lib/admission.d.ts.map +1 -0
- package/lib/admission.js +642 -0
- package/lib/admission.js.map +1 -0
- package/lib/authority.d.ts +92 -0
- package/lib/authority.d.ts.map +1 -0
- package/lib/authority.js +205 -0
- package/lib/authority.js.map +1 -0
- package/lib/config.d.ts +365 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +672 -0
- package/lib/config.js.map +1 -0
- package/lib/continuation-contract.d.ts +126 -0
- package/lib/continuation-contract.d.ts.map +1 -0
- package/lib/continuation-contract.js +109 -0
- package/lib/continuation-contract.js.map +1 -0
- package/lib/continuation-record.d.ts +32 -0
- package/lib/continuation-record.d.ts.map +1 -0
- package/lib/continuation-record.js +57 -0
- package/lib/continuation-record.js.map +1 -0
- package/lib/continuation.d.ts +89 -0
- package/lib/continuation.d.ts.map +1 -0
- package/lib/continuation.js +607 -0
- package/lib/continuation.js.map +1 -0
- package/lib/diagnosis-contract.d.ts +95 -0
- package/lib/diagnosis-contract.d.ts.map +1 -0
- package/lib/diagnosis-contract.js +167 -0
- package/lib/diagnosis-contract.js.map +1 -0
- package/lib/diagnosis.d.ts +70 -0
- package/lib/diagnosis.d.ts.map +1 -0
- package/lib/diagnosis.js +466 -0
- package/lib/diagnosis.js.map +1 -0
- package/lib/dispatch.d.ts +100 -0
- package/lib/dispatch.d.ts.map +1 -0
- package/lib/dispatch.js +317 -0
- package/lib/dispatch.js.map +1 -0
- package/lib/engineering-context.d.ts +86 -0
- package/lib/engineering-context.d.ts.map +1 -0
- package/lib/engineering-context.js +263 -0
- package/lib/engineering-context.js.map +1 -0
- package/lib/evaluation.d.ts +125 -0
- package/lib/evaluation.d.ts.map +1 -0
- package/lib/evaluation.js +295 -0
- package/lib/evaluation.js.map +1 -0
- package/lib/event-follow.d.ts +93 -0
- package/lib/event-follow.d.ts.map +1 -0
- package/lib/event-follow.js +150 -0
- package/lib/event-follow.js.map +1 -0
- package/lib/feedback-targets.d.ts +91 -0
- package/lib/feedback-targets.d.ts.map +1 -0
- package/lib/feedback-targets.js +362 -0
- package/lib/feedback-targets.js.map +1 -0
- package/lib/index.d.ts +27 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +25 -0
- package/lib/index.js.map +1 -0
- package/lib/intake-admission.d.ts +49 -0
- package/lib/intake-admission.d.ts.map +1 -0
- package/lib/intake-admission.js +100 -0
- package/lib/intake-admission.js.map +1 -0
- package/lib/intake-evaluation-runtime.d.ts +74 -0
- package/lib/intake-evaluation-runtime.d.ts.map +1 -0
- package/lib/intake-evaluation-runtime.js +343 -0
- package/lib/intake-evaluation-runtime.js.map +1 -0
- package/lib/intake-evaluation.d.ts +180 -0
- package/lib/intake-evaluation.d.ts.map +1 -0
- package/lib/intake-evaluation.js +440 -0
- package/lib/intake-evaluation.js.map +1 -0
- package/lib/intake.d.ts +118 -0
- package/lib/intake.d.ts.map +1 -0
- package/lib/intake.js +137 -0
- package/lib/intake.js.map +1 -0
- package/lib/ledger.d.ts +86 -0
- package/lib/ledger.d.ts.map +1 -0
- package/lib/ledger.js +145 -0
- package/lib/ledger.js.map +1 -0
- package/lib/mandate.d.ts +45 -0
- package/lib/mandate.d.ts.map +1 -0
- package/lib/mandate.js +168 -0
- package/lib/mandate.js.map +1 -0
- package/lib/outcome.d.ts +137 -0
- package/lib/outcome.d.ts.map +1 -0
- package/lib/outcome.js +303 -0
- package/lib/outcome.js.map +1 -0
- package/lib/owner-access.d.ts +35 -0
- package/lib/owner-access.d.ts.map +1 -0
- package/lib/owner-access.js +152 -0
- package/lib/owner-access.js.map +1 -0
- package/lib/owner-continuation.d.ts +27 -0
- package/lib/owner-continuation.d.ts.map +1 -0
- package/lib/owner-continuation.js +131 -0
- package/lib/owner-continuation.js.map +1 -0
- package/lib/owner-recall.d.ts +85 -0
- package/lib/owner-recall.d.ts.map +1 -0
- package/lib/owner-recall.js +134 -0
- package/lib/owner-recall.js.map +1 -0
- package/lib/owner-replies.d.ts +44 -0
- package/lib/owner-replies.d.ts.map +1 -0
- package/lib/owner-replies.js +232 -0
- package/lib/owner-replies.js.map +1 -0
- package/lib/peers.d.ts +622 -0
- package/lib/peers.d.ts.map +1 -0
- package/lib/peers.js +10 -0
- package/lib/peers.js.map +1 -0
- package/lib/policy-notice.d.ts +31 -0
- package/lib/policy-notice.d.ts.map +1 -0
- package/lib/policy-notice.js +137 -0
- package/lib/policy-notice.js.map +1 -0
- package/lib/reply-contract.d.ts +67 -0
- package/lib/reply-contract.d.ts.map +1 -0
- package/lib/reply-contract.js +58 -0
- package/lib/reply-contract.js.map +1 -0
- package/lib/service.d.ts +625 -0
- package/lib/service.d.ts.map +1 -0
- package/lib/service.js +2388 -0
- package/lib/service.js.map +1 -0
- package/lib/settlement.d.ts +74 -0
- package/lib/settlement.d.ts.map +1 -0
- package/lib/settlement.js +233 -0
- package/lib/settlement.js.map +1 -0
- package/lib/signals.d.ts +176 -0
- package/lib/signals.d.ts.map +1 -0
- package/lib/signals.js +497 -0
- package/lib/signals.js.map +1 -0
- package/lib/store.d.ts +789 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +3266 -0
- package/lib/store.js.map +1 -0
- package/lib/tools.d.ts +7 -0
- package/lib/tools.d.ts.map +1 -0
- package/lib/tools.js +443 -0
- package/lib/tools.js.map +1 -0
- package/lib/types.d.ts +831 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +29 -0
- package/lib/types.js.map +1 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +2 -0
- package/lib/version.js.map +1 -0
- package/lib/workspace.d.ts +43 -0
- package/lib/workspace.d.ts.map +1 -0
- package/lib/workspace.js +137 -0
- package/lib/workspace.js.map +1 -0
- package/package.json +101 -3
package/lib/config.d.ts
ADDED
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import Schema from '@deepseek-ai/schemastery';
|
|
2
|
+
import type { WorkItemReportStatus, WorkItemScope } from './types.ts';
|
|
3
|
+
import type { WorkItemIntakeSourcePolicy } from './intake.ts';
|
|
4
|
+
/** Raw operator configuration. Every field is optional except the two paths. */
|
|
5
|
+
export interface Config {
|
|
6
|
+
enabled?: boolean;
|
|
7
|
+
mode?: 'observe' | 'active';
|
|
8
|
+
databasePath?: string;
|
|
9
|
+
workRoot?: string;
|
|
10
|
+
intakeSourceId?: string;
|
|
11
|
+
workerAutomationId?: string;
|
|
12
|
+
scope?: ScopeConfig;
|
|
13
|
+
admission?: AdmissionConfig;
|
|
14
|
+
limits?: LimitsConfig;
|
|
15
|
+
delivery?: DeliveryConfig;
|
|
16
|
+
sources?: SourcesConfig;
|
|
17
|
+
settlement?: SettlementConfig;
|
|
18
|
+
diagnosis?: DiagnosisConfig;
|
|
19
|
+
ownerRecall?: {
|
|
20
|
+
enabled?: boolean;
|
|
21
|
+
linkedAliases?: string[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Cross-channel report routing. `linkedFallback` lists Delivery `linked`
|
|
25
|
+
* principal ids, in order, that may receive a terminal report only when its
|
|
26
|
+
* origin binding is unavailable. Absent or empty keeps origin-only delivery.
|
|
27
|
+
* `prefer: 'recent'` (requires `linkedFallback`) sends to the listed alias the
|
|
28
|
+
* owner most recently messaged from; default `'origin'` keeps the origin.
|
|
29
|
+
*/
|
|
30
|
+
ownerReportRouting?: {
|
|
31
|
+
linkedFallback?: string[];
|
|
32
|
+
prefer?: 'origin' | 'recent';
|
|
33
|
+
};
|
|
34
|
+
ownerContinuation?: OwnerContinuationConfig;
|
|
35
|
+
ownerReplyContinuation?: boolean;
|
|
36
|
+
ownerReportFeedback?: boolean;
|
|
37
|
+
intakeLedger?: IntakeLedgerConfig;
|
|
38
|
+
/**
|
|
39
|
+
* WP21 slice 5: `autoSettle` reads bound items' verifier receipts on the
|
|
40
|
+
* existing scheduler wake, at most `maxPerTick` (1–10, default 5) per wake.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* WP21 slice 6: `bindWorkerRun` binds each dispatched item to the
|
|
44
|
+
* acceptance contract its worker run froze, on the same wake, at most
|
|
45
|
+
* `maxPerTick` (1–10, default 5) per wake.
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* WP21 slice 7: `verdictGate` lets a settled verdict move the item. A
|
|
49
|
+
* not-achieved or unknown objective, or a verifier `needs-attention`,
|
|
50
|
+
* turns an executed `ready` item into `blocked` (`acceptance-*` reason);
|
|
51
|
+
* an achieved one leaves it `ready`. Off: verdicts stay events only.
|
|
52
|
+
*
|
|
53
|
+
* WP21 slice 8: `holdReport` holds the owner's `ready` report of an
|
|
54
|
+
* acceptance-bound item until the verifier settles it: achieved sends it,
|
|
55
|
+
* anything else blocks the item and sends a blocked report instead, and
|
|
56
|
+
* `holdTimeoutMs` (default 30 min, max 24 h) sends it marked unverified.
|
|
57
|
+
* Needs `autoSettle` and `bindWorkerRun`; a held item is gated like
|
|
58
|
+
* `verdictGate` whether or not that flag is on.
|
|
59
|
+
*/
|
|
60
|
+
acceptance?: {
|
|
61
|
+
autoSettle?: {
|
|
62
|
+
enabled?: boolean;
|
|
63
|
+
maxPerTick?: number;
|
|
64
|
+
};
|
|
65
|
+
bindWorkerRun?: {
|
|
66
|
+
enabled?: boolean;
|
|
67
|
+
maxPerTick?: number;
|
|
68
|
+
};
|
|
69
|
+
verdictGate?: {
|
|
70
|
+
enabled?: boolean;
|
|
71
|
+
};
|
|
72
|
+
holdReport?: {
|
|
73
|
+
enabled?: boolean;
|
|
74
|
+
holdTimeoutMs?: number;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
follows?: FollowsConfig;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Followed-thread sources the plugin registers itself. Each source is off by
|
|
81
|
+
* default. `eventTriggers` lets a work item follow an Event Triggers
|
|
82
|
+
* subscription (`<triggerId>@<afterSequence>@<configDigest>`); it needs an
|
|
83
|
+
* enabled intake with an owner scope. `acceptHeadRef` (default off) also
|
|
84
|
+
* admits `<triggerId>@head`, pinned to the live high water at admission.
|
|
85
|
+
*/
|
|
86
|
+
export interface FollowsConfig {
|
|
87
|
+
eventTriggers?: {
|
|
88
|
+
enabled?: boolean;
|
|
89
|
+
acceptHeadRef?: boolean;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Deterministic intake ledger (WP20 slice 1). Off by default; when enabled the
|
|
94
|
+
* Host may record per-event metadata decisions. Each source opt-in admits
|
|
95
|
+
* unaddressed group messages or unsubscribed events as metadata-only rows.
|
|
96
|
+
*/
|
|
97
|
+
export interface IntakeLedgerConfig {
|
|
98
|
+
enabled?: boolean;
|
|
99
|
+
sources?: Record<string, {
|
|
100
|
+
unaddressedGroupMessages?: boolean;
|
|
101
|
+
unsubscribedEvents?: boolean;
|
|
102
|
+
}>;
|
|
103
|
+
/** WP20 stage 3: observe-only model evaluation of stored `inferred` rows. Off by default. */
|
|
104
|
+
evaluation?: IntakeEvaluationConfig;
|
|
105
|
+
}
|
|
106
|
+
export interface IntakeEvaluationConfig {
|
|
107
|
+
enabled?: boolean;
|
|
108
|
+
timeoutMs?: number;
|
|
109
|
+
maxConsecutiveFailures?: number;
|
|
110
|
+
maxPerRun?: number;
|
|
111
|
+
maxCallsPerHour?: number;
|
|
112
|
+
/** WP21: route accepting `inferred` evaluations into `admitDecision`. Off by default. */
|
|
113
|
+
admit?: IntakeAdmitConfig;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* `observe` records each would-admit decision and admits nothing; `auto`
|
|
117
|
+
* calls `admitDecision` and needs an active deployment whose
|
|
118
|
+
* `admission.allowedKinds` includes `kind`.
|
|
119
|
+
*/
|
|
120
|
+
export interface IntakeAdmitConfig {
|
|
121
|
+
enabled?: boolean;
|
|
122
|
+
mode?: 'observe' | 'auto';
|
|
123
|
+
kind?: string;
|
|
124
|
+
originBindingId?: string;
|
|
125
|
+
maxPerHour?: number;
|
|
126
|
+
}
|
|
127
|
+
/** A separately authorized Host worker; it never changes the diagnosis worker. */
|
|
128
|
+
export interface OwnerContinuationConfig extends DiagnosisConfig {
|
|
129
|
+
automationId?: string;
|
|
130
|
+
allowedTools?: string[];
|
|
131
|
+
}
|
|
132
|
+
export interface NormalizedOwnerContinuation extends NormalizedDiagnosis {
|
|
133
|
+
readonly automationId: string;
|
|
134
|
+
readonly allowedTools: readonly string[];
|
|
135
|
+
}
|
|
136
|
+
/** Independent finite diagnosis authority; enabled deployments must spell out every limit. */
|
|
137
|
+
export interface DiagnosisConfig {
|
|
138
|
+
enabled?: boolean;
|
|
139
|
+
budgetId?: string;
|
|
140
|
+
budgetAmount?: number;
|
|
141
|
+
maxModelCalls?: number;
|
|
142
|
+
maxToolCalls?: number;
|
|
143
|
+
maxOutputTokens?: number;
|
|
144
|
+
timeoutMs?: number;
|
|
145
|
+
expiresAt?: number;
|
|
146
|
+
}
|
|
147
|
+
export interface NormalizedDiagnosis {
|
|
148
|
+
readonly enabled: true;
|
|
149
|
+
readonly budgetId: string;
|
|
150
|
+
readonly budgetAmount: number;
|
|
151
|
+
readonly maxModelCalls: number;
|
|
152
|
+
readonly maxToolCalls: number;
|
|
153
|
+
readonly maxOutputTokens: number;
|
|
154
|
+
readonly timeoutMs: number;
|
|
155
|
+
readonly expiresAt: number;
|
|
156
|
+
}
|
|
157
|
+
export interface ScopeConfig {
|
|
158
|
+
workspace?: string;
|
|
159
|
+
preset?: string;
|
|
160
|
+
principalId?: string;
|
|
161
|
+
ownerRouteId?: string;
|
|
162
|
+
expiresAt?: number;
|
|
163
|
+
}
|
|
164
|
+
export interface AdmissionConfig {
|
|
165
|
+
allowedKinds?: string[];
|
|
166
|
+
maxOpenItems?: number;
|
|
167
|
+
maxAdmitsPerHour?: number;
|
|
168
|
+
dedupWindowMs?: number;
|
|
169
|
+
cooldownMs?: number;
|
|
170
|
+
maxBriefBytes?: number;
|
|
171
|
+
}
|
|
172
|
+
export interface LimitsConfig {
|
|
173
|
+
leaseMs?: number;
|
|
174
|
+
maxAttempts?: number;
|
|
175
|
+
maxReportsPerItem?: number;
|
|
176
|
+
maxReportBytes?: number;
|
|
177
|
+
waitingResumeMs?: number;
|
|
178
|
+
}
|
|
179
|
+
export interface DeliveryConfig {
|
|
180
|
+
notifyOn?: WorkItemReportStatus[];
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Bounded outcome settlement over the delivery evidence channel.
|
|
184
|
+
*
|
|
185
|
+
* Settlement is passive: it runs only when an unrelated call (a claim) already
|
|
186
|
+
* touches the ledger, never on a timer of its own, and it never admits, wakes or
|
|
187
|
+
* notifies. The window bounds how long an unverified outcome may stay pending.
|
|
188
|
+
*/
|
|
189
|
+
export interface SettlementConfig {
|
|
190
|
+
enabled?: boolean;
|
|
191
|
+
windowMs?: number;
|
|
192
|
+
sweepIntervalMs?: number;
|
|
193
|
+
maxSourcesPerSweep?: number;
|
|
194
|
+
maxPendingPerSweep?: number;
|
|
195
|
+
maxSettlementsPerSweep?: number;
|
|
196
|
+
}
|
|
197
|
+
/** Automatic signal sources mounted over optional peer services. */
|
|
198
|
+
export interface SourcesConfig {
|
|
199
|
+
foregroundFailures?: ForegroundFailureSourceConfig;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Owner foreground failures observed through `assistant-delivery`.
|
|
203
|
+
*
|
|
204
|
+
* Disabled by default like the rest of the plugin: an operator must opt in,
|
|
205
|
+
* name the admitted kind and bound both the per-sweep scan and write budget.
|
|
206
|
+
*/
|
|
207
|
+
export interface ForegroundFailureSourceConfig {
|
|
208
|
+
enabled?: boolean;
|
|
209
|
+
kind?: string;
|
|
210
|
+
includeTimedOut?: boolean;
|
|
211
|
+
maxCandidatesPerSweep?: number;
|
|
212
|
+
maxAdmitsPerSweep?: number;
|
|
213
|
+
sweepIntervalMs?: number;
|
|
214
|
+
}
|
|
215
|
+
/** Fully defaulted, validated configuration used by the service at runtime. */
|
|
216
|
+
export interface NormalizedConfig {
|
|
217
|
+
readonly enabled: boolean;
|
|
218
|
+
readonly mode: 'observe' | 'active';
|
|
219
|
+
readonly databasePath: string;
|
|
220
|
+
readonly workRoot: string;
|
|
221
|
+
readonly intakeSourceId: string;
|
|
222
|
+
readonly workerAutomationId: string | null;
|
|
223
|
+
readonly scope: WorkItemScope | null;
|
|
224
|
+
readonly admission: NormalizedAdmission;
|
|
225
|
+
readonly limits: NormalizedLimits;
|
|
226
|
+
readonly notifyOn: readonly WorkItemReportStatus[];
|
|
227
|
+
readonly sources: NormalizedSources;
|
|
228
|
+
readonly settlement: NormalizedSettlement;
|
|
229
|
+
readonly diagnosis?: NormalizedDiagnosis;
|
|
230
|
+
/**
|
|
231
|
+
* `linkedAliases` is the owner's explicit allowlist of Delivery `linked`
|
|
232
|
+
* principal ids that may read through the alias path. Absent means no alias
|
|
233
|
+
* is accepted, whatever Delivery or Policy would otherwise allow.
|
|
234
|
+
*/
|
|
235
|
+
readonly ownerRecall?: Readonly<{
|
|
236
|
+
enabled: true;
|
|
237
|
+
linkedAliases?: readonly string[];
|
|
238
|
+
}>;
|
|
239
|
+
/** Present only when the owner named at least one linked fallback channel. */
|
|
240
|
+
readonly ownerReportRouting?: Readonly<{
|
|
241
|
+
linkedFallback: readonly string[];
|
|
242
|
+
prefer?: 'recent';
|
|
243
|
+
}>;
|
|
244
|
+
readonly ownerContinuation?: NormalizedOwnerContinuation;
|
|
245
|
+
readonly ownerReplyContinuation?: true;
|
|
246
|
+
readonly ownerReportFeedback?: true;
|
|
247
|
+
/** Present only when the intake ledger is enabled. */
|
|
248
|
+
readonly intakeLedger?: NormalizedIntakeLedger;
|
|
249
|
+
/** Present only when `acceptance.autoSettle.enabled` is true. */
|
|
250
|
+
readonly acceptanceAutoSettle?: Readonly<{
|
|
251
|
+
maxPerTick: number;
|
|
252
|
+
}>;
|
|
253
|
+
/** Present only when `acceptance.bindWorkerRun.enabled` is true. */
|
|
254
|
+
readonly acceptanceBindWorkerRun?: Readonly<{
|
|
255
|
+
maxPerTick: number;
|
|
256
|
+
}>;
|
|
257
|
+
/** Present only when `acceptance.verdictGate.enabled` is true. */
|
|
258
|
+
readonly acceptanceVerdictGate?: true;
|
|
259
|
+
/** Present only when `acceptance.holdReport.enabled` is true. */
|
|
260
|
+
readonly acceptanceHoldReport?: Readonly<{
|
|
261
|
+
holdTimeoutMs: number;
|
|
262
|
+
}>;
|
|
263
|
+
/** Present only when at least one built-in followed-thread source is enabled. */
|
|
264
|
+
readonly follows?: NormalizedFollows;
|
|
265
|
+
}
|
|
266
|
+
export interface NormalizedFollows {
|
|
267
|
+
readonly eventTriggers: boolean;
|
|
268
|
+
/** Present only when `follows.eventTriggers.acceptHeadRef` is true. */
|
|
269
|
+
readonly eventTriggersAcceptHeadRef?: true;
|
|
270
|
+
}
|
|
271
|
+
export interface NormalizedIntakeLedger {
|
|
272
|
+
readonly enabled: true;
|
|
273
|
+
readonly sources: Readonly<Record<string, WorkItemIntakeSourcePolicy>>;
|
|
274
|
+
/** Present only when evaluation is enabled. */
|
|
275
|
+
readonly evaluation?: NormalizedIntakeEvaluation;
|
|
276
|
+
}
|
|
277
|
+
export interface NormalizedIntakeEvaluation {
|
|
278
|
+
readonly enabled: true;
|
|
279
|
+
readonly timeoutMs: number;
|
|
280
|
+
readonly maxConsecutiveFailures: number;
|
|
281
|
+
readonly maxPerRun: number;
|
|
282
|
+
readonly maxCallsPerHour: number;
|
|
283
|
+
/** Present only when admission of accepting evaluations is enabled. */
|
|
284
|
+
readonly admit?: NormalizedIntakeAdmit;
|
|
285
|
+
}
|
|
286
|
+
export interface NormalizedIntakeAdmit {
|
|
287
|
+
readonly enabled: true;
|
|
288
|
+
readonly mode: 'observe' | 'auto';
|
|
289
|
+
readonly kind: string;
|
|
290
|
+
readonly originBindingId: string;
|
|
291
|
+
/** Items admitted from intake per rolling hour; reported to `admitDecision` as the remaining budget. */
|
|
292
|
+
readonly maxPerHour: number;
|
|
293
|
+
}
|
|
294
|
+
export interface NormalizedForegroundFailureSource {
|
|
295
|
+
readonly enabled: boolean;
|
|
296
|
+
readonly kind: string;
|
|
297
|
+
readonly includeTimedOut: boolean;
|
|
298
|
+
readonly maxCandidatesPerSweep: number;
|
|
299
|
+
readonly maxAdmitsPerSweep: number;
|
|
300
|
+
readonly sweepIntervalMs: number;
|
|
301
|
+
}
|
|
302
|
+
export interface NormalizedSettlement {
|
|
303
|
+
readonly enabled: boolean;
|
|
304
|
+
readonly windowMs: number;
|
|
305
|
+
readonly sweepIntervalMs: number;
|
|
306
|
+
readonly maxSourcesPerSweep: number;
|
|
307
|
+
readonly maxPendingPerSweep: number;
|
|
308
|
+
readonly maxSettlementsPerSweep: number;
|
|
309
|
+
}
|
|
310
|
+
export interface NormalizedSources {
|
|
311
|
+
readonly foregroundFailures: NormalizedForegroundFailureSource;
|
|
312
|
+
}
|
|
313
|
+
export interface NormalizedAdmission {
|
|
314
|
+
readonly allowedKinds: readonly string[];
|
|
315
|
+
readonly maxOpenItems: number;
|
|
316
|
+
readonly maxAdmitsPerHour: number;
|
|
317
|
+
readonly dedupWindowMs: number;
|
|
318
|
+
readonly cooldownMs: number;
|
|
319
|
+
readonly maxBriefBytes: number;
|
|
320
|
+
}
|
|
321
|
+
export interface NormalizedLimits {
|
|
322
|
+
readonly leaseMs: number;
|
|
323
|
+
readonly maxAttempts: number;
|
|
324
|
+
readonly maxReportsPerItem: number;
|
|
325
|
+
readonly maxReportBytes: number;
|
|
326
|
+
/**
|
|
327
|
+
* Delay before a `waiting` item is handed to a fresh occurrence again.
|
|
328
|
+
*
|
|
329
|
+
* `waiting` is not terminal: the worker stopped without finishing, so the
|
|
330
|
+
* item stays claimable. Re-arming is delayed rather than immediate so a
|
|
331
|
+
* worker that reports `waiting` in a loop cannot spin up occurrences in the
|
|
332
|
+
* same second, and it is bounded by the item's attempt budget.
|
|
333
|
+
*/
|
|
334
|
+
readonly waitingResumeMs: number;
|
|
335
|
+
}
|
|
336
|
+
/** Synchronous Standard-Schema validator used by DSH before construction. */
|
|
337
|
+
export declare const ConfigSchema: Schema<Config>;
|
|
338
|
+
/** Byte length under UTF-8 without allocating a Buffer for short values. */
|
|
339
|
+
export declare function byteLength(value: string): number;
|
|
340
|
+
/** Normalize NFC, trim, reject empties and over-long text at a byte boundary. */
|
|
341
|
+
export declare function text(value: unknown, field: string, maxBytes: number): string;
|
|
342
|
+
/** Truncate to at most `maxBytes` UTF-8 bytes without splitting a code point. */
|
|
343
|
+
export declare function truncateUtf8(value: string, maxBytes: number): {
|
|
344
|
+
value: string;
|
|
345
|
+
truncated: boolean;
|
|
346
|
+
};
|
|
347
|
+
/** True when at least one automatic signal source is armed. */
|
|
348
|
+
export declare function anySourceEnabled(config: NormalizedConfig): boolean;
|
|
349
|
+
/**
|
|
350
|
+
* Validate and default operator configuration synchronously.
|
|
351
|
+
*
|
|
352
|
+
* Unknown fields anywhere fail closed, paths must be absolute, and an
|
|
353
|
+
* `enabled: true` + `mode: 'active'` deployment must name its worker
|
|
354
|
+
* automation, owner scope and at least one admitted kind. The default
|
|
355
|
+
* deployment is `enabled: false`, `mode: 'observe'`: it writes only local
|
|
356
|
+
* observation rows and never calls automations or delivery.
|
|
357
|
+
*/
|
|
358
|
+
export declare function normalizeConfig(raw: Config, now?: number): NormalizedConfig;
|
|
359
|
+
/** Maximum explicitly allowlisted linked aliases per owner scope. */
|
|
360
|
+
export declare const MAX_LINKED_ALIASES = 8;
|
|
361
|
+
/** True only when external admission and dispatch may happen. */
|
|
362
|
+
export declare function isActive(config: NormalizedConfig): boolean;
|
|
363
|
+
/** Prove the config exposes only known report statuses (used by tests). */
|
|
364
|
+
export declare function knownReportStatuses(): readonly WorkItemReportStatus[];
|
|
365
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|