@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-targets.d.ts","sourceRoot":"","sources":["../src/feedback-targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { symbols } from '@deepseek-ai/cordis';
|
|
2
|
+
import { acceptanceCanonicalJson, acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
|
|
3
|
+
import { CONTINUATION_OWNER, continuationItemBasis, parseContinuationActivation } from './continuation-contract.js';
|
|
4
|
+
import { continuationDigest } from './continuation-record.js';
|
|
5
|
+
import { DIAGNOSIS_OWNER } from './diagnosis-contract.js';
|
|
6
|
+
import { isReplyContinuationPlan, parseStoredContinuationPlan } from './reply-contract.js';
|
|
7
|
+
import { OPEN_STATES, WorkItemError } from './types.js';
|
|
8
|
+
const HEX = /^[a-f0-9]{64}$/u;
|
|
9
|
+
function bounded(value, maximum) {
|
|
10
|
+
return typeof value === 'string' && value.length > 0 && value.trim() === value && Buffer.byteLength(value) <= maximum
|
|
11
|
+
&& !/\p{Cc}/u.test(value) && Buffer.from(value, 'utf8').toString('utf8') === value;
|
|
12
|
+
}
|
|
13
|
+
function positive(value) { return typeof value === 'number' && Number.isSafeInteger(value) && value > 0; }
|
|
14
|
+
function peerIdentity(peer) { return peer[symbols.original] ?? peer; }
|
|
15
|
+
/** Snapshot foreign metadata before the final local fence. Accessors, custom
|
|
16
|
+
* prototypes and cycles cannot execute late code while a proof is assembled. */
|
|
17
|
+
function inert(value) {
|
|
18
|
+
const ancestors = new Set();
|
|
19
|
+
const inspect = (current, depth) => {
|
|
20
|
+
if (current === null || typeof current === 'string' || typeof current === 'boolean' || typeof current === 'number' && Number.isFinite(current))
|
|
21
|
+
return;
|
|
22
|
+
if (!current || typeof current !== 'object' || depth > 12 || ancestors.has(current))
|
|
23
|
+
throw new Error('invalid peer data');
|
|
24
|
+
const array = Array.isArray(current), prototype = Object.getPrototypeOf(current);
|
|
25
|
+
if (prototype !== (array ? Array.prototype : Object.prototype) && prototype !== null)
|
|
26
|
+
throw new Error('invalid peer prototype');
|
|
27
|
+
const descriptors = Object.getOwnPropertyDescriptors(current), keys = Reflect.ownKeys(descriptors);
|
|
28
|
+
if (keys.length > 256)
|
|
29
|
+
throw new Error('peer data too large');
|
|
30
|
+
ancestors.add(current);
|
|
31
|
+
for (const key of keys) {
|
|
32
|
+
if (typeof key !== 'string')
|
|
33
|
+
throw new Error('peer data symbols invalid');
|
|
34
|
+
const descriptor = descriptors[key];
|
|
35
|
+
if (array && key === 'length')
|
|
36
|
+
continue;
|
|
37
|
+
if (!descriptor.enumerable || !Object.hasOwn(descriptor, 'value'))
|
|
38
|
+
throw new Error('peer accessors invalid');
|
|
39
|
+
inspect(descriptor.value, depth + 1);
|
|
40
|
+
}
|
|
41
|
+
ancestors.delete(current);
|
|
42
|
+
};
|
|
43
|
+
inspect(value, 0);
|
|
44
|
+
const text = acceptanceCanonicalJson(value);
|
|
45
|
+
if (Buffer.byteLength(text) > 65536)
|
|
46
|
+
throw new Error('peer metadata exceeds byte bound');
|
|
47
|
+
return JSON.parse(text);
|
|
48
|
+
}
|
|
49
|
+
function freeze(value) {
|
|
50
|
+
if (value && typeof value === 'object') {
|
|
51
|
+
for (const child of Object.values(value))
|
|
52
|
+
freeze(child);
|
|
53
|
+
Object.freeze(value);
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
function supplierOf(contract) {
|
|
58
|
+
if (!bounded(contract.provider, 4096) || !bounded(contract.model, 4096)
|
|
59
|
+
|| Object.hasOwn(contract, 'reasoningEffort') && !bounded(contract.reasoningEffort, 4096))
|
|
60
|
+
throw new Error('invalid frozen supplier');
|
|
61
|
+
return { provider: contract.provider, model: contract.model, ...(Object.hasOwn(contract, 'reasoningEffort') ? { reasoningEffort: contract.reasoningEffort } : {}) };
|
|
62
|
+
}
|
|
63
|
+
/** Preserve the existing typed-report identity, including v1/v2 plan digest,
|
|
64
|
+
* while excluding mutable outbox delivery bookkeeping. */
|
|
65
|
+
export function workItemReportDigest(item, report, text, planDigest) {
|
|
66
|
+
return acceptanceDigest({ itemId: item.id, revision: report.revision, status: report.status, summary: text, truncated: report.truncated,
|
|
67
|
+
artifactPaths: report.artifactPaths, deliveryKey: report.deliveryKey, recordedAt: report.recordedAt, planDigest });
|
|
68
|
+
}
|
|
69
|
+
function sealedReport(store, config, itemId, revision) {
|
|
70
|
+
const scope = config.scope, item = store.findItemById(itemId), found = store.feedbackReportByRevision(itemId, revision), last = store.lastReport(itemId);
|
|
71
|
+
if (!scope || !item || item.observed || OPEN_STATES.includes(item.state) || !found || !last || last.revision !== revision
|
|
72
|
+
|| !['ready', 'blocked', 'failed'].includes(found.status) || item.scope.workspace !== scope.workspace || item.scope.preset !== scope.preset
|
|
73
|
+
|| item.scope.ownerRouteId !== scope.ownerRouteId || item.scope.principalId !== scope.principalId || item.sourceId !== config.intakeSourceId
|
|
74
|
+
|| !bounded(item.id, 256) || !bounded(item.sourceId, 128) || !bounded(item.kind, 64) || !bounded(item.originBindingId, 256)
|
|
75
|
+
|| !bounded(scope.workspace, 4096) || !bounded(scope.preset, 128) || !bounded(scope.principalId, 256) || !bounded(scope.ownerRouteId, 256)
|
|
76
|
+
|| !bounded(item.owner.principalRecordId, 256) || !positive(item.owner.principalVersion) || !positive(found.recordedAt))
|
|
77
|
+
return undefined;
|
|
78
|
+
const record = store.getContinuation(item.id);
|
|
79
|
+
let planDigest, streamId, supplier, producer;
|
|
80
|
+
if (record) {
|
|
81
|
+
const plan = parseStoredContinuationPlan(record.planJson);
|
|
82
|
+
if (acceptanceCanonicalJson(plan.item) !== acceptanceCanonicalJson(continuationItemBasis(item))
|
|
83
|
+
|| plan.source.digest !== record.sourceDigest || plan.source.inputSha256 !== record.inputSha256 || plan.source.inputBytes !== record.inputBytes
|
|
84
|
+
|| plan.parent.itemId !== record.parentItemId || plan.parent.rootItemId !== record.rootItemId
|
|
85
|
+
|| plan.parent.reportRevision !== record.parentReportRevision || plan.parent.outcomeRevision !== record.parentOutcomeRevision)
|
|
86
|
+
return undefined;
|
|
87
|
+
const activation = parseContinuationActivation(plan.activation);
|
|
88
|
+
if (activation.stage !== 'established' || activation.ownerLineage.receiptVersion !== 2
|
|
89
|
+
|| activation.ownerLineage.authorityId !== item.scope.ownerRouteId || activation.ownerLineage.principalId !== item.scope.principalId
|
|
90
|
+
|| activation.ownerLineage.principalRecordId !== item.owner.principalRecordId || activation.ownerLineage.principalVersion !== item.owner.principalVersion
|
|
91
|
+
|| activation.ownerLineage.workspace !== item.scope.workspace || activation.ownerLineage.agentPreset !== item.scope.preset)
|
|
92
|
+
return undefined;
|
|
93
|
+
supplier = supplierOf(plan.contract);
|
|
94
|
+
if (acceptanceCanonicalJson(supplier) !== acceptanceCanonicalJson(plan.source.modelSelection))
|
|
95
|
+
return undefined;
|
|
96
|
+
planDigest = record.planDigest;
|
|
97
|
+
streamId = isReplyContinuationPlan(plan) ? plan.source.origin.reply.target.streamId : item.id;
|
|
98
|
+
producer = { owner: CONTINUATION_OWNER, automationId: item.workerAutomationId, definitionHash: activation.definitionHash, definitionVersion: activation.definitionVersion };
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
const plan = store.readDiagnosisPlan(item.id);
|
|
102
|
+
if (!plan || plan.worker.owner !== DIAGNOSIS_OWNER || plan.worker.automationId !== item.workerAutomationId
|
|
103
|
+
|| plan.source.owner.principalRecordId !== item.owner.principalRecordId || plan.source.owner.principalVersion !== item.owner.principalVersion
|
|
104
|
+
|| plan.source.binding.id !== item.originBindingId || plan.source.binding.version !== item.owner.bindingVersion || plan.source.binding.generation !== item.owner.generation)
|
|
105
|
+
return undefined;
|
|
106
|
+
supplier = supplierOf(plan.contract);
|
|
107
|
+
planDigest = continuationDigest(acceptanceCanonicalJson(plan));
|
|
108
|
+
streamId = item.id;
|
|
109
|
+
producer = { owner: DIAGNOSIS_OWNER, automationId: item.workerAutomationId, definitionHash: plan.worker.definitionHash, definitionVersion: plan.worker.definitionVersion };
|
|
110
|
+
}
|
|
111
|
+
if (!HEX.test(planDigest) || !HEX.test(producer.definitionHash) || !positive(producer.definitionVersion) || !bounded(producer.automationId, 256) || !bounded(streamId, 256))
|
|
112
|
+
return undefined;
|
|
113
|
+
const text = store.ownerRecallText(item.id, revision), brief = store.ownerRecallText(item.id);
|
|
114
|
+
if (Buffer.byteLength(text) > 65536 || Buffer.byteLength(brief) > 65536 || Buffer.from(text, 'utf8').toString('utf8') !== text || Buffer.from(brief, 'utf8').toString('utf8') !== brief)
|
|
115
|
+
return undefined;
|
|
116
|
+
const binding = store.diagnosisReportOccurrence(item.id, revision);
|
|
117
|
+
if (binding.status !== found.status || !bounded(binding.occurrenceId, 512))
|
|
118
|
+
return undefined;
|
|
119
|
+
const report = found, reportDigest = workItemReportDigest(item, report, text, planDigest);
|
|
120
|
+
const immutableReport = { itemId: item.id, revision: report.revision, status: report.status, text, truncated: report.truncated, artifactPaths: report.artifactPaths,
|
|
121
|
+
idempotencyKey: report.idempotencyKey, deliveryKey: report.deliveryKey, recordedAt: report.recordedAt };
|
|
122
|
+
const fingerprint = acceptanceDigest({ item, report: immutableReport, brief, planDigest, supplier, producer, occurrenceId: binding.occurrenceId });
|
|
123
|
+
return { item, report, text, brief, streamId, planDigest, supplier, producer, occurrenceId: binding.occurrenceId, reportDigest, fingerprint };
|
|
124
|
+
}
|
|
125
|
+
function selectorOf(value) {
|
|
126
|
+
if (!value || typeof value !== 'object' || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value)))
|
|
127
|
+
return undefined;
|
|
128
|
+
const fields = Object.getOwnPropertyDescriptors(value);
|
|
129
|
+
if (Reflect.ownKeys(fields).some(key => typeof key !== 'string' || !['itemId', 'reportRevision', 'reportDigest'].includes(key))
|
|
130
|
+
|| Object.keys(fields).length !== 3 || Object.values(fields).some(field => !field.enumerable || !Object.hasOwn(field, 'value')))
|
|
131
|
+
return undefined;
|
|
132
|
+
const itemId = fields.itemId?.value, reportRevision = fields.reportRevision?.value, reportDigest = fields.reportDigest?.value;
|
|
133
|
+
if (!bounded(itemId, 256) || !positive(reportRevision) || typeof reportDigest !== 'string' || !HEX.test(reportDigest))
|
|
134
|
+
return undefined;
|
|
135
|
+
return Object.freeze({ itemId, reportRevision, reportDigest });
|
|
136
|
+
}
|
|
137
|
+
/** Historical result reader. It never starts/reconciles an automation, checks
|
|
138
|
+
* a live execution grant, reserves budget, or turns testimony into success. */
|
|
139
|
+
export class WorkItemOwnerFeedbackTargets {
|
|
140
|
+
dependencies;
|
|
141
|
+
#closed = false;
|
|
142
|
+
#capabilities = new WeakMap();
|
|
143
|
+
#engineeringFrameOwner;
|
|
144
|
+
constructor(dependencies) {
|
|
145
|
+
this.dependencies = dependencies;
|
|
146
|
+
}
|
|
147
|
+
current() { return !this.#closed && this.dependencies.current(); }
|
|
148
|
+
/** Local-only metadata for an engineering callback already inside this
|
|
149
|
+
* reader's writer frame. It never mints authority outside that frame. */
|
|
150
|
+
engineeringFrameOwner() { return this.current() ? this.#engineeringFrameOwner : undefined; }
|
|
151
|
+
inspectReport(input, notification) {
|
|
152
|
+
try {
|
|
153
|
+
const { config } = this.dependencies, store = this.dependencies.store();
|
|
154
|
+
if (!config.ownerReportFeedback || !this.current() || !store || store.closed)
|
|
155
|
+
return undefined;
|
|
156
|
+
const snapshot = sealedReport(store, config, input.itemId, input.reportRevision);
|
|
157
|
+
if (!snapshot || snapshot.item.originBindingId !== input.bindingId || snapshot.report.deliveryKey !== input.idempotencyKey || input.format !== 'markdown'
|
|
158
|
+
|| notification(snapshot.item, { ...snapshot.report, summary: snapshot.text }).text !== input.text)
|
|
159
|
+
return undefined;
|
|
160
|
+
const again = sealedReport(store, config, input.itemId, input.reportRevision);
|
|
161
|
+
if (!again || again.fingerprint !== snapshot.fingerprint || !this.current() || store.closed)
|
|
162
|
+
return undefined;
|
|
163
|
+
return freeze({ protocol: 'assistant-delivery/work-item-report/v1', itemId: snapshot.item.id, reportRevision: snapshot.report.revision,
|
|
164
|
+
streamId: snapshot.streamId, reportDigest: snapshot.reportDigest, sourceId: snapshot.item.sourceId,
|
|
165
|
+
scope: { workspace: snapshot.item.scope.workspace, preset: snapshot.item.scope.preset },
|
|
166
|
+
owner: { principalRecordId: snapshot.item.owner.principalRecordId, principalVersion: snapshot.item.owner.principalVersion } });
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
read(selector) {
|
|
173
|
+
const { config } = this.dependencies, scope = config.scope, store = this.dependencies.store();
|
|
174
|
+
if (!config.ownerReportFeedback || !scope || !config.ownerContinuation || !this.current() || !store || store.closed)
|
|
175
|
+
return undefined;
|
|
176
|
+
const snapshot = sealedReport(store, config, selector.itemId, selector.reportRevision);
|
|
177
|
+
if (!snapshot || snapshot.reportDigest !== selector.reportDigest)
|
|
178
|
+
return undefined;
|
|
179
|
+
const delivery = this.dependencies.delivery(), automations = this.dependencies.automations();
|
|
180
|
+
if (!delivery || !automations?.inspectProductionOccurrence)
|
|
181
|
+
return undefined;
|
|
182
|
+
const deliveryIdentity = peerIdentity(delivery), automationsIdentity = peerIdentity(automations);
|
|
183
|
+
const readOwner = () => inert(delivery.validateOwnerRoute({ authorityId: scope.ownerRouteId, principalId: scope.principalId, workspace: scope.workspace, agentPreset: scope.preset }));
|
|
184
|
+
const validOwner = (owner) => owner.receiptVersion === 2 && owner.authorityId === scope.ownerRouteId && owner.principalId === scope.principalId
|
|
185
|
+
&& owner.workspace === scope.workspace && owner.agentPreset === scope.preset && bounded(owner.authorityHash, 256)
|
|
186
|
+
&& owner.principalRecordId === snapshot.item.owner.principalRecordId && owner.principalVersion === snapshot.item.owner.principalVersion
|
|
187
|
+
&& positive(owner.generation) && positive(owner.bindingVersion);
|
|
188
|
+
const owner = readOwner();
|
|
189
|
+
if (!validOwner(owner))
|
|
190
|
+
return undefined;
|
|
191
|
+
const observed = automations.inspectProductionOccurrence({ automationId: snapshot.producer.automationId, occurrenceId: snapshot.occurrenceId,
|
|
192
|
+
workspace: scope.workspace, agentPreset: scope.preset });
|
|
193
|
+
const production = observed === undefined ? undefined : inert(observed);
|
|
194
|
+
if (!production || production.protocol !== 'assistant-automations/production-occurrence/v1' || production.executionMode !== 'production'
|
|
195
|
+
|| production.automationId !== snapshot.producer.automationId || production.occurrenceId !== snapshot.occurrenceId || !bounded(production.runId, 512)
|
|
196
|
+
|| !bounded(production.taskId, 512) || !bounded(production.attemptId, 512)
|
|
197
|
+
|| !positive(production.completedAt) || production.quiescent !== true || production.budgetSettlementState !== 'finalized'
|
|
198
|
+
|| production.immutableContext.state !== 'verified' || production.immutableContext.owner !== snapshot.producer.owner
|
|
199
|
+
|| production.immutableContext.definitionHash !== snapshot.producer.definitionHash || production.immutableContext.definitionVersion !== snapshot.producer.definitionVersion
|
|
200
|
+
|| production.immutableContext.scope.workspace !== scope.workspace || production.immutableContext.scope.agentPreset !== scope.preset)
|
|
201
|
+
return undefined;
|
|
202
|
+
const statuses = { succeeded: 'succeeded', failed: 'failed', timed_out: 'timed-out', cancelled: 'cancelled' };
|
|
203
|
+
if (!Object.hasOwn(statuses, production.status))
|
|
204
|
+
return undefined;
|
|
205
|
+
const executionStatus = statuses[production.status];
|
|
206
|
+
const currentOwner = readOwner();
|
|
207
|
+
if (!validOwner(currentOwner) || acceptanceCanonicalJson(currentOwner) !== acceptanceCanonicalJson(owner))
|
|
208
|
+
return undefined;
|
|
209
|
+
const currentDelivery = this.dependencies.delivery(), currentAutomations = this.dependencies.automations();
|
|
210
|
+
if (!currentDelivery || !currentAutomations || peerIdentity(currentDelivery) !== deliveryIdentity || peerIdentity(currentAutomations) !== automationsIdentity)
|
|
211
|
+
return undefined;
|
|
212
|
+
// Everything below is local: the last peer callback cannot replace the
|
|
213
|
+
// report/plan, change its bytes, or dispose the current capability owner.
|
|
214
|
+
const final = sealedReport(store, config, selector.itemId, selector.reportRevision);
|
|
215
|
+
if (!final || final.fingerprint !== snapshot.fingerprint || !this.current() || store.closed)
|
|
216
|
+
return undefined;
|
|
217
|
+
const unsigned = { protocol: 'assistant-work-items/owner-report-feedback/v1', itemId: snapshot.item.id, reportRevision: snapshot.report.revision,
|
|
218
|
+
reportDigest: snapshot.reportDigest, sourceId: snapshot.item.sourceId, itemKind: snapshot.item.kind, scope: { workspace: scope.workspace, preset: scope.preset },
|
|
219
|
+
owner: { ownerRouteId: scope.ownerRouteId, principalId: scope.principalId, principalRecordId: owner.principalRecordId, principalVersion: owner.principalVersion },
|
|
220
|
+
originBindingId: snapshot.item.originBindingId, production: { automationId: production.automationId, occurrenceId: production.occurrenceId, runId: production.runId,
|
|
221
|
+
definitionHash: production.immutableContext.definitionHash, definitionVersion: production.immutableContext.definitionVersion,
|
|
222
|
+
executionStatus, completedAt: production.completedAt, quiescent: true, budgetSettlementState: 'finalized' }, supplier: snapshot.supplier,
|
|
223
|
+
planDigest: snapshot.planDigest, task: { brief: snapshot.brief, briefTruncated: snapshot.item.briefTruncated },
|
|
224
|
+
report: { status: snapshot.report.status, text: snapshot.text, truncated: snapshot.report.truncated, recordedAt: snapshot.report.recordedAt } };
|
|
225
|
+
const proof = { ...unsigned, proofDigest: acceptanceDigest(unsigned) };
|
|
226
|
+
return { proof: freeze(proof), fingerprint: snapshot.fingerprint, authorityHash: owner.authorityHash, deliveryIdentity, automationsIdentity };
|
|
227
|
+
}
|
|
228
|
+
issue(input) {
|
|
229
|
+
try {
|
|
230
|
+
const selector = selectorOf(input);
|
|
231
|
+
if (!selector)
|
|
232
|
+
return undefined;
|
|
233
|
+
const result = this.read(selector);
|
|
234
|
+
if (!result)
|
|
235
|
+
return undefined;
|
|
236
|
+
const capability = Object.freeze(Object.create(null));
|
|
237
|
+
this.#capabilities.set(capability, { selector, proofDigest: result.proof.proofDigest, fingerprint: result.fingerprint, authorityHash: result.authorityHash,
|
|
238
|
+
deliveryIdentity: result.deliveryIdentity, automationsIdentity: result.automationsIdentity });
|
|
239
|
+
return capability;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
resolve(capability) {
|
|
246
|
+
try {
|
|
247
|
+
if (!capability || typeof capability !== 'object' || !this.current())
|
|
248
|
+
return undefined;
|
|
249
|
+
const issued = this.#capabilities.get(capability);
|
|
250
|
+
if (!issued)
|
|
251
|
+
return undefined;
|
|
252
|
+
const result = this.read(issued.selector);
|
|
253
|
+
if (!result || result.proof.proofDigest !== issued.proofDigest || result.fingerprint !== issued.fingerprint || result.authorityHash !== issued.authorityHash
|
|
254
|
+
|| result.deliveryIdentity !== issued.deliveryIdentity || result.automationsIdentity !== issued.automationsIdentity)
|
|
255
|
+
return undefined;
|
|
256
|
+
return result.proof;
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/** A group is validated as one source frame, rather than trusting A's cached
|
|
263
|
+
* result after a later B producer callback. The last phase reads only this
|
|
264
|
+
* owned ledger, configuration and local service identities. */
|
|
265
|
+
withTargetsFence(capabilities, callback) {
|
|
266
|
+
if (!Array.isArray(capabilities) || typeof callback !== 'function')
|
|
267
|
+
throw new WorkItemError('invalid-input', 'feedback target fence arguments are invalid');
|
|
268
|
+
const descriptors = Object.getOwnPropertyDescriptors(capabilities);
|
|
269
|
+
const length = descriptors.length?.value;
|
|
270
|
+
if (!Number.isSafeInteger(length) || Number(length) < 0 || Number(length) > 1000
|
|
271
|
+
|| Reflect.ownKeys(descriptors).some(key => typeof key !== 'string' || key !== 'length' && !/^(?:0|[1-9][0-9]*)$/u.test(key))) {
|
|
272
|
+
throw new WorkItemError('invalid-input', 'feedback target fence requires at most 1000 dense capabilities');
|
|
273
|
+
}
|
|
274
|
+
const input = [];
|
|
275
|
+
for (let index = 0; index < Number(length); index++) {
|
|
276
|
+
const descriptor = descriptors[String(index)];
|
|
277
|
+
if (!descriptor || !descriptor.enumerable || !Object.hasOwn(descriptor, 'value'))
|
|
278
|
+
throw new WorkItemError('invalid-input', 'feedback target fence capabilities must be data values');
|
|
279
|
+
input.push(descriptor.value);
|
|
280
|
+
}
|
|
281
|
+
const config = this.dependencies.config, configurationDigest = acceptanceDigest(config), store = this.dependencies.store();
|
|
282
|
+
if (!this.current() || !config.ownerReportFeedback || !store || store.closed)
|
|
283
|
+
throw new WorkItemError('missing-dependency', 'feedback target source fence is unavailable');
|
|
284
|
+
return store.withFeedbackSourceFence(() => {
|
|
285
|
+
const ownership = this.#capabilities;
|
|
286
|
+
const entries = input.map(capability => {
|
|
287
|
+
if (!capability || typeof capability !== 'object')
|
|
288
|
+
return undefined;
|
|
289
|
+
const issued = ownership.get(capability);
|
|
290
|
+
return issued ? { capability, issued } : undefined;
|
|
291
|
+
});
|
|
292
|
+
const reads = new Map();
|
|
293
|
+
for (const entry of entries) {
|
|
294
|
+
if (!entry || reads.has(entry.capability))
|
|
295
|
+
continue;
|
|
296
|
+
try {
|
|
297
|
+
reads.set(entry.capability, this.read(entry.issued.selector));
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
reads.set(entry.capability, undefined);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// One final owner read belongs to the foreign-read phase. A later
|
|
304
|
+
// source's callback may have changed the shared route after A was read;
|
|
305
|
+
// never keep A's cached authority hash as the group authority.
|
|
306
|
+
const ownerDelivery = this.dependencies.delivery(), scope = config.scope;
|
|
307
|
+
const ownerDeliveryIdentity = ownerDelivery ? peerIdentity(ownerDelivery) : undefined;
|
|
308
|
+
let owner;
|
|
309
|
+
try {
|
|
310
|
+
if (ownerDelivery && scope)
|
|
311
|
+
owner = inert(ownerDelivery.validateOwnerRoute({ authorityId: scope.ownerRouteId,
|
|
312
|
+
principalId: scope.principalId, workspace: scope.workspace, agentPreset: scope.preset }));
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
owner = undefined;
|
|
316
|
+
}
|
|
317
|
+
// These dependency accessors are owned ctx-local lookups, not producer
|
|
318
|
+
// methods. Capture all identities before the final local source pass.
|
|
319
|
+
const currentConfig = this.dependencies.config, currentStore = this.dependencies.store();
|
|
320
|
+
const delivery = this.dependencies.delivery(), automations = this.dependencies.automations();
|
|
321
|
+
const deliveryIdentity = delivery ? peerIdentity(delivery) : undefined, automationsIdentity = automations ? peerIdentity(automations) : undefined;
|
|
322
|
+
const currentConfigurationDigest = acceptanceDigest(currentConfig), active = this.current();
|
|
323
|
+
if (!active || this.#capabilities !== ownership || currentStore !== store || store.closed || !delivery || !automations) {
|
|
324
|
+
throw new WorkItemError('missing-dependency', 'feedback target source owner or store is no longer current');
|
|
325
|
+
}
|
|
326
|
+
const configurationCurrent = currentConfig === config && currentConfigurationDigest === configurationDigest;
|
|
327
|
+
const proofs = entries.map(entry => {
|
|
328
|
+
if (!entry || !configurationCurrent || this.#capabilities.get(entry.capability) !== entry.issued)
|
|
329
|
+
return undefined;
|
|
330
|
+
const result = reads.get(entry.capability), issued = entry.issued;
|
|
331
|
+
if (!result || result.proof.proofDigest !== issued.proofDigest || result.fingerprint !== issued.fingerprint
|
|
332
|
+
|| result.authorityHash !== issued.authorityHash || result.deliveryIdentity !== issued.deliveryIdentity
|
|
333
|
+
|| result.automationsIdentity !== issued.automationsIdentity || deliveryIdentity !== issued.deliveryIdentity
|
|
334
|
+
|| automationsIdentity !== issued.automationsIdentity || ownerDeliveryIdentity !== deliveryIdentity
|
|
335
|
+
|| !owner || owner.receiptVersion !== 2 || owner.authorityHash !== issued.authorityHash
|
|
336
|
+
|| owner.authorityId !== result.proof.owner.ownerRouteId || owner.principalId !== result.proof.owner.principalId
|
|
337
|
+
|| owner.principalRecordId !== result.proof.owner.principalRecordId || owner.principalVersion !== result.proof.owner.principalVersion
|
|
338
|
+
|| owner.workspace !== result.proof.scope.workspace || owner.agentPreset !== result.proof.scope.preset)
|
|
339
|
+
return undefined;
|
|
340
|
+
try {
|
|
341
|
+
const final = sealedReport(store, config, issued.selector.itemId, issued.selector.reportRevision);
|
|
342
|
+
return final && final.fingerprint === issued.fingerprint && final.reportDigest === issued.selector.reportDigest ? result.proof : undefined;
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
return undefined;
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
// No producer, owner or lifecycle callback is invoked after this pass.
|
|
349
|
+
const previousOwner = this.#engineeringFrameOwner;
|
|
350
|
+
this.#engineeringFrameOwner = owner === undefined ? undefined : freeze(owner);
|
|
351
|
+
try {
|
|
352
|
+
return callback(Object.freeze(proofs));
|
|
353
|
+
}
|
|
354
|
+
finally {
|
|
355
|
+
this.#engineeringFrameOwner = this.#closed ? undefined : previousOwner;
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
available() { return this.current() && this.dependencies.config.ownerReportFeedback === true && this.dependencies.store()?.closed === false; }
|
|
360
|
+
close() { this.#closed = true; this.#capabilities = new WeakMap(); this.#engineeringFrameOwner = undefined; }
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=feedback-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-targets.js","sourceRoot":"","sources":["../src/feedback-targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAGlG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACnH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAG1F,OAAO,EAAE,WAAW,EAAE,aAAa,EAA6E,MAAM,YAAY,CAAA;AAoBlI,MAAM,GAAG,GAAC,iBAAiB,CAAA;AAC3B,SAAS,OAAO,CAAC,KAAa,EAAC,OAAc;IAC3C,OAAO,OAAO,KAAK,KAAG,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAG,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAE,OAAO;WACxG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAG,KAAK,CAAA;AACnF,CAAC;AACD,SAAS,QAAQ,CAAC,KAAa,IAAmB,OAAO,OAAO,KAAK,KAAG,QAAQ,IAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAE,KAAK,GAAC,CAAC,CAAA,CAAA,CAAC;AACvH,SAAS,YAAY,CAAC,IAAW,IAAW,OAAO,IAA+B,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAE,IAAI,CAAA,CAAA,CAAC;AAC3G;gFACgF;AAChF,SAAS,KAAK,CAAI,KAAO;IACvB,MAAM,SAAS,GAAC,IAAI,GAAG,EAAU,CAAA;IACjC,MAAM,OAAO,GAAC,CAAC,OAAe,EAAC,KAAY,EAAM,EAAE;QACjD,IAAG,OAAO,KAAG,IAAI,IAAE,OAAO,OAAO,KAAG,QAAQ,IAAE,OAAO,OAAO,KAAG,SAAS,IAAE,OAAO,OAAO,KAAG,QAAQ,IAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAC,OAAM;QACpI,IAAG,CAAC,OAAO,IAAE,OAAO,OAAO,KAAG,QAAQ,IAAE,KAAK,GAAC,EAAE,IAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC7G,MAAM,KAAK,GAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,SAAS,GAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC3E,IAAG,SAAS,KAAG,CAAC,KAAK,CAAA,CAAC,CAAA,KAAK,CAAC,SAAS,CAAA,CAAC,CAAA,MAAM,CAAC,SAAS,CAAC,IAAE,SAAS,KAAG,IAAI;YAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACnH,MAAM,WAAW,GAAC,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAC,IAAI,GAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAC7F,IAAG,IAAI,CAAC,MAAM,GAAC,GAAG;YAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACzD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACtB,KAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACtB,IAAG,OAAO,GAAG,KAAG,QAAQ;gBAAC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YACrE,MAAM,UAAU,GAAC,WAAW,CAAC,GAAG,CAAE,CAAA;YAClC,IAAG,KAAK,IAAE,GAAG,KAAG,QAAQ;gBAAC,SAAQ;YACjC,IAAG,CAAC,UAAU,CAAC,UAAU,IAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAC,OAAO,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;YACvG,OAAO,CAAC,UAAU,CAAC,KAAK,EAAC,KAAK,GAAC,CAAC,CAAC,CAAA;QACnC,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAA;IACD,OAAO,CAAC,KAAK,EAAC,CAAC,CAAC,CAAA;IAChB,MAAM,IAAI,GAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;IACzC,IAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAC,KAAK;QAAC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACpF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA;AAC9B,CAAC;AACD,SAAS,MAAM,CAAI,KAAO;IACxB,IAAG,KAAK,IAAE,OAAO,KAAK,KAAG,QAAQ,EAAE,CAAC;QAAA,KAAI,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAAA,CAAC;IAC/G,OAAO,KAAK,CAAA;AACd,CAAC;AACD,SAAS,UAAU,CAAC,QAA+D;IACjF,IAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAC,IAAI,CAAC,IAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAC,IAAI,CAAC;WAC7D,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAC,iBAAiB,CAAC,IAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAC,IAAI,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAClI,OAAM,EAAC,QAAQ,EAAC,QAAQ,CAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,CAAC,KAAK,EAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAC,iBAAiB,CAAC,CAAA,CAAC,CAAA,EAAC,eAAe,EAAC,QAAQ,CAAC,eAAgB,EAAC,CAAA,CAAC,CAAA,EAAE,CAAC,EAAC,CAAA;AACvJ,CAAC;AAQD;0DAC0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,IAAmB,EAAC,MAA2B,EAAC,IAAW,EAAC,UAAiB;IAChH,OAAO,gBAAgB,CAAC,EAAC,MAAM,EAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,EAAC,MAAM,CAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,CAAC,MAAM,EAAC,OAAO,EAAC,IAAI,EAAC,SAAS,EAAC,MAAM,CAAC,SAAS;QAC3H,aAAa,EAAC,MAAM,CAAC,aAAa,EAAC,WAAW,EAAC,MAAM,CAAC,WAAW,EAAC,UAAU,EAAC,MAAM,CAAC,UAAU,EAAC,UAAU,EAAC,CAAC,CAAA;AAC/G,CAAC;AACD,SAAS,YAAY,CAAC,KAAmB,EAAC,MAAuB,EAAC,MAAa,EAAC,QAAe;IAC7F,MAAM,KAAK,GAAC,MAAM,CAAC,KAAK,EAAC,IAAI,GAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAC,KAAK,GAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAC,QAAQ,CAAC,EAAC,IAAI,GAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5I,IAAG,CAAC,KAAK,IAAE,CAAC,IAAI,IAAE,IAAI,CAAC,QAAQ,IAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAE,CAAC,KAAK,IAAE,CAAC,IAAI,IAAE,IAAI,CAAC,QAAQ,KAAG,QAAQ;WACrG,CAAC,CAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAG,KAAK,CAAC,SAAS,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAG,KAAK,CAAC,MAAM;WAC9H,IAAI,CAAC,KAAK,CAAC,YAAY,KAAG,KAAK,CAAC,YAAY,IAAE,IAAI,CAAC,KAAK,CAAC,WAAW,KAAG,KAAK,CAAC,WAAW,IAAE,IAAI,CAAC,QAAQ,KAAG,MAAM,CAAC,cAAc;WAC/H,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAC,GAAG,CAAC,IAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAC,GAAG,CAAC,IAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAC,EAAE,CAAC,IAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAC,GAAG,CAAC;WAC9G,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAC,IAAI,CAAC,IAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAC,GAAG,CAAC,IAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAC,GAAG,CAAC,IAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAC,GAAG,CAAC;WAC7H,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAC,GAAG,CAAC,IAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;QAAC,OAAO,SAAS,CAAA;IACrI,MAAM,MAAM,GAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3C,IAAI,UAAiB,EAAC,QAAe,EAAC,QAAiB,EAAC,QAAiC,CAAA;IACzF,IAAG,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,GAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACvD,IAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAG,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;eACvF,IAAI,CAAC,MAAM,CAAC,MAAM,KAAG,MAAM,CAAC,YAAY,IAAE,IAAI,CAAC,MAAM,CAAC,WAAW,KAAG,MAAM,CAAC,WAAW,IAAE,IAAI,CAAC,MAAM,CAAC,UAAU,KAAG,MAAM,CAAC,UAAU;eAClI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAG,MAAM,CAAC,YAAY,IAAE,IAAI,CAAC,MAAM,CAAC,UAAU,KAAG,MAAM,CAAC,UAAU;eACpF,IAAI,CAAC,MAAM,CAAC,cAAc,KAAG,MAAM,CAAC,oBAAoB,IAAE,IAAI,CAAC,MAAM,CAAC,eAAe,KAAG,MAAM,CAAC,qBAAqB;YAAC,OAAO,SAAS,CAAA;QAC1I,MAAM,UAAU,GAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAG,UAAU,CAAC,KAAK,KAAG,aAAa,IAAE,UAAU,CAAC,YAAY,CAAC,cAAc,KAAG,CAAC;eAC1E,UAAU,CAAC,YAAY,CAAC,WAAW,KAAG,IAAI,CAAC,KAAK,CAAC,YAAY,IAAE,UAAU,CAAC,YAAY,CAAC,WAAW,KAAG,IAAI,CAAC,KAAK,CAAC,WAAW;eAC3H,UAAU,CAAC,YAAY,CAAC,iBAAiB,KAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAE,UAAU,CAAC,YAAY,CAAC,gBAAgB,KAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;eAChJ,UAAU,CAAC,YAAY,CAAC,SAAS,KAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAE,UAAU,CAAC,YAAY,CAAC,WAAW,KAAG,IAAI,CAAC,KAAK,CAAC,MAAM;YAAC,OAAO,SAAS,CAAA;QACvI,QAAQ,GAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAG,uBAAuB,CAAC,QAAQ,CAAC,KAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAAC,OAAO,SAAS,CAAA;QAC3G,UAAU,GAAC,MAAM,CAAC,UAAU,CAAC;QAAA,QAAQ,GAAC,uBAAuB,CAAC,IAAI,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAC,CAAA,IAAI,CAAC,EAAE,CAAA;QACpH,QAAQ,GAAC,EAAC,KAAK,EAAC,kBAAkB,EAAC,YAAY,EAAC,IAAI,CAAC,kBAAkB,EAAC,cAAc,EAAC,UAAU,CAAC,cAAc,EAAC,iBAAiB,EAAC,UAAU,CAAC,iBAAiB,EAAC,CAAA;IAClK,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC3C,IAAG,CAAC,IAAI,IAAE,IAAI,CAAC,MAAM,CAAC,KAAK,KAAG,eAAe,IAAE,IAAI,CAAC,MAAM,CAAC,YAAY,KAAG,IAAI,CAAC,kBAAkB;eAC5F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;eACpI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAG,IAAI,CAAC,eAAe,IAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,KAAG,IAAI,CAAC,KAAK,CAAC,cAAc,IAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAG,IAAI,CAAC,KAAK,CAAC,UAAU;YAAC,OAAO,SAAS,CAAA;QACpL,QAAQ,GAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAA,UAAU,GAAC,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAA,QAAQ,GAAC,IAAI,CAAC,EAAE,CAAA;QAChH,QAAQ,GAAC,EAAC,KAAK,EAAC,eAAe,EAAC,YAAY,EAAC,IAAI,CAAC,kBAAkB,EAAC,cAAc,EAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAC,iBAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAC,CAAA;IACjK,CAAC;IACD,IAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAC,GAAG,CAAC,IAAE,CAAC,OAAO,CAAC,QAAQ,EAAC,GAAG,CAAC;QAAC,OAAO,SAAS,CAAA;IACjL,MAAM,IAAI,GAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,KAAK,GAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvF,IAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAC,KAAK,IAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAC,KAAK,IAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAG,IAAI,IAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAG,KAAK;QAAC,OAAO,SAAS,CAAA;IACvL,MAAM,OAAO,GAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,CAAC,CAAA;IAC/D,IAAG,OAAO,CAAC,MAAM,KAAG,KAAK,CAAC,MAAM,IAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAC,GAAG,CAAC;QAAC,OAAO,SAAS,CAAA;IACrF,MAAM,MAAM,GAAC,KAA+B,EAAC,YAAY,GAAC,oBAAoB,CAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,CAAC,CAAA;IAC3G,MAAM,eAAe,GAAC,EAAC,MAAM,EAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,EAAC,MAAM,CAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,CAAC,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,MAAM,CAAC,SAAS,EAAC,aAAa,EAAC,MAAM,CAAC,aAAa;QACpJ,cAAc,EAAC,MAAM,CAAC,cAAc,EAAC,WAAW,EAAC,MAAM,CAAC,WAAW,EAAC,UAAU,EAAC,MAAM,CAAC,UAAU,EAAC,CAAA;IACnG,MAAM,WAAW,GAAC,gBAAgB,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,eAAe,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,QAAQ,EAAC,YAAY,EAAC,OAAO,CAAC,YAAY,EAAC,CAAC,CAAA;IACtI,OAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,QAAQ,EAAC,YAAY,EAAC,OAAO,CAAC,YAAY,EAAC,YAAY,EAAC,WAAW,EAAC,CAAA;AACjI,CAAC;AACD,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAG,CAAC,KAAK,IAAE,OAAO,KAAK,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO,SAAS,CAAA;IAC1I,MAAM,MAAM,GAAC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA;IACpD,IAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA,EAAE,CAAA,OAAO,GAAG,KAAG,QAAQ,IAAE,CAAC,CAAC,QAAQ,EAAC,gBAAgB,EAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;WACjH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAG,CAAC,IAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,CAAC,KAAK,CAAC,UAAU,IAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAC,OAAO,CAAC,CAAC;QAAC,OAAO,SAAS,CAAA;IACzI,MAAM,MAAM,GAAC,MAAM,CAAC,MAAM,EAAE,KAAgB,EAAC,cAAc,GAAC,MAAM,CAAC,cAAc,EAAE,KAAgB,EAAC,YAAY,GAAC,MAAM,CAAC,YAAY,EAAE,KAAgB,CAAA;IACtJ,IAAG,CAAC,OAAO,CAAC,MAAM,EAAC,GAAG,CAAC,IAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAE,OAAO,YAAY,KAAG,QAAQ,IAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QAAC,OAAO,SAAS,CAAA;IAC5H,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,cAAc,EAAC,YAAY,EAAC,CAAC,CAAA;AAC5D,CAAC;AAaD;+EAC+E;AAC/E,MAAM,OAAO,4BAA4B;IAIV;IAH7B,OAAO,GAAC,KAAK,CAAA;IACb,aAAa,GAAC,IAAI,OAAO,EAA2B,CAAA;IACpD,sBAAsB,CAA0C;IAChE,YAA6B,YAA+C;QAA/C,iBAAY,GAAZ,YAAY,CAAmC;IAAG,CAAC;IACxE,OAAO,KAAY,OAAM,CAAC,IAAI,CAAC,OAAO,IAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA,CAAA,CAAC;IAC5E;6EACyE;IACzE,qBAAqB,KAA8C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,CAAA,IAAI,CAAC,sBAAsB,CAAA,CAAC,CAAA,SAAS,CAAA,CAAA,CAAC;IAC/H,aAAa,CAAC,KAAuE,EAAC,YAAoF;QACxK,IAAI,CAAC;YACH,MAAM,EAAC,MAAM,EAAC,GAAC,IAAI,CAAC,YAAY,EAAC,KAAK,GAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;YAChE,IAAG,CAAC,MAAM,CAAC,mBAAmB,IAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAE,CAAC,KAAK,IAAE,KAAK,CAAC,MAAM;gBAAC,OAAO,SAAS,CAAA;YACtF,MAAM,QAAQ,GAAC,YAAY,CAAC,KAAK,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,EAAC,KAAK,CAAC,cAAc,CAAC,CAAA;YAC3E,IAAG,CAAC,QAAQ,IAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,KAAG,KAAK,CAAC,SAAS,IAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAG,KAAK,CAAC,cAAc,IAAE,KAAK,CAAC,MAAM,KAAG,UAAU;mBACvI,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAC,EAAC,GAAG,QAAQ,CAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,CAAC,IAAI,EAAC,CAAC,CAAC,IAAI,KAAG,KAAK,CAAC,IAAI;gBAAC,OAAO,SAAS,CAAA;YAC9G,MAAM,KAAK,GAAC,YAAY,CAAC,KAAK,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,EAAC,KAAK,CAAC,cAAc,CAAC,CAAA;YACxE,IAAG,CAAC,KAAK,IAAE,KAAK,CAAC,WAAW,KAAG,QAAQ,CAAC,WAAW,IAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAE,KAAK,CAAC,MAAM;gBAAC,OAAO,SAAS,CAAA;YACnG,OAAO,MAAM,CAAC,EAAC,QAAQ,EAAC,wCAAwC,EAAC,MAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAC,cAAc,EAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ;gBAC9H,QAAQ,EAAC,QAAQ,CAAC,QAAQ,EAAC,YAAY,EAAC,QAAQ,CAAC,YAAY,EAAC,QAAQ,EAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;gBAC7F,KAAK,EAAC,EAAC,SAAS,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAC,MAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAC;gBACjF,KAAK,EAAC,EAAC,iBAAiB,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAC,gBAAgB,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAC,EAAC,CAAC,CAAA;QAC3H,CAAC;QAAC,MAAK,CAAC;YAAA,OAAO,SAAS,CAAA;QAAA,CAAC;IAC3B,CAAC;IACO,IAAI,CAAC,QAAsC;QACjD,MAAM,EAAC,MAAM,EAAC,GAAC,IAAI,CAAC,YAAY,EAAC,KAAK,GAAC,MAAM,CAAC,KAAK,EAAC,KAAK,GAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QACnF,IAAG,CAAC,MAAM,CAAC,mBAAmB,IAAE,CAAC,KAAK,IAAE,CAAC,MAAM,CAAC,iBAAiB,IAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAE,CAAC,KAAK,IAAE,KAAK,CAAC,MAAM;YAAC,OAAO,SAAS,CAAA;QACzH,MAAM,QAAQ,GAAC,YAAY,CAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,CAAC,MAAM,EAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QACjF,IAAG,CAAC,QAAQ,IAAE,QAAQ,CAAC,YAAY,KAAG,QAAQ,CAAC,YAAY;YAAC,OAAO,SAAS,CAAA;QAC5E,MAAM,QAAQ,GAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAC,WAAW,GAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;QACvF,IAAG,CAAC,QAAQ,IAAE,CAAC,WAAW,EAAE,2BAA2B;YAAC,OAAO,SAAS,CAAA;QACxE,MAAM,gBAAgB,GAAC,YAAY,CAAC,QAAQ,CAAC,EAAC,mBAAmB,GAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAC3F,MAAM,SAAS,GAAC,GAAkC,EAAE,CAAA,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAC,WAAW,EAAC,KAAK,CAAC,YAAY,EAAC,WAAW,EAAC,KAAK,CAAC,WAAW,EAAC,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,WAAW,EAAC,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,CAAA;QACzM,MAAM,UAAU,GAAC,CAAC,KAA2B,EAAS,EAAE,CAAA,KAAK,CAAC,cAAc,KAAG,CAAC,IAAE,KAAK,CAAC,WAAW,KAAG,KAAK,CAAC,YAAY,IAAE,KAAK,CAAC,WAAW,KAAG,KAAK,CAAC,WAAW;eAC3J,KAAK,CAAC,SAAS,KAAG,KAAK,CAAC,SAAS,IAAE,KAAK,CAAC,WAAW,KAAG,KAAK,CAAC,MAAM,IAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAC,GAAG,CAAC;eACrG,KAAK,CAAC,iBAAiB,KAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAE,KAAK,CAAC,gBAAgB,KAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;eAC9H,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAC9D,MAAM,KAAK,GAAC,SAAS,EAAE,CAAA;QACvB,IAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YAAC,OAAO,SAAS,CAAA;QACtC,MAAM,QAAQ,GAAC,WAAW,CAAC,2BAA2B,CAAC,EAAC,YAAY,EAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAC,YAAY,EAAC,QAAQ,CAAC,YAAY;YACpI,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,WAAW,EAAC,KAAK,CAAC,MAAM,EAAC,CAAC,CAAA;QACtD,MAAM,UAAU,GAAC,QAAQ,KAAG,SAAS,CAAA,CAAC,CAAA,SAAS,CAAA,CAAC,CAAA,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC/D,IAAG,CAAC,UAAU,IAAE,UAAU,CAAC,QAAQ,KAAG,gDAAgD,IAAE,UAAU,CAAC,aAAa,KAAG,YAAY;eAC3H,UAAU,CAAC,YAAY,KAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,IAAE,UAAU,CAAC,YAAY,KAAG,QAAQ,CAAC,YAAY,IAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAC,GAAG,CAAC;eACzI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAC,GAAG,CAAC,IAAE,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAC,GAAG,CAAC;eACnE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,IAAE,UAAU,CAAC,SAAS,KAAG,IAAI,IAAE,UAAU,CAAC,qBAAqB,KAAG,WAAW;eAC9G,UAAU,CAAC,gBAAgB,CAAC,KAAK,KAAG,UAAU,IAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,KAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK;eAC3G,UAAU,CAAC,gBAAgB,CAAC,cAAc,KAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,IAAE,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,KAAG,QAAQ,CAAC,QAAQ,CAAC,iBAAiB;eAClK,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,KAAG,KAAK,CAAC,SAAS,IAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,KAAG,KAAK,CAAC,MAAM;YAAC,OAAO,SAAS,CAAA;QAChJ,MAAM,QAAQ,GAAC,EAAC,SAAS,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,EAAC,WAAW,EAAC,SAAS,EAAC,WAAW,EAAU,CAAA;QAC3G,IAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAC,UAAU,CAAC,MAAM,CAAC;YAAC,OAAO,SAAS,CAAA;QAC9D,MAAM,eAAe,GAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACjD,MAAM,YAAY,GAAC,SAAS,EAAE,CAAA;QAC9B,IAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAE,uBAAuB,CAAC,YAAY,CAAC,KAAG,uBAAuB,CAAC,KAAK,CAAC;YAAC,OAAO,SAAS,CAAA;QACrH,MAAM,eAAe,GAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAC,kBAAkB,GAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;QACrG,IAAG,CAAC,eAAe,IAAE,CAAC,kBAAkB,IAAE,YAAY,CAAC,eAAe,CAAC,KAAG,gBAAgB,IAAE,YAAY,CAAC,kBAAkB,CAAC,KAAG,mBAAmB;YAAC,OAAO,SAAS,CAAA;QACnK,uEAAuE;QACvE,0EAA0E;QAC1E,MAAM,KAAK,GAAC,YAAY,CAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,CAAC,MAAM,EAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC9E,IAAG,CAAC,KAAK,IAAE,KAAK,CAAC,WAAW,KAAG,QAAQ,CAAC,WAAW,IAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAE,KAAK,CAAC,MAAM;YAAC,OAAO,SAAS,CAAA;QACnG,MAAM,QAAQ,GAAC,EAAC,QAAQ,EAAC,+CAAwD,EAAC,MAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAC,cAAc,EAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ;YAC/I,YAAY,EAAC,QAAQ,CAAC,YAAY,EAAC,QAAQ,EAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC,KAAK,EAAC,EAAC,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,EAAC;YACpJ,KAAK,EAAC,EAAC,YAAY,EAAC,KAAK,CAAC,YAAY,EAAC,WAAW,EAAC,KAAK,CAAC,WAAW,EAAC,iBAAiB,EAAC,KAAK,CAAC,iBAAiB,EAAC,gBAAgB,EAAC,KAAK,CAAC,gBAAgB,EAAC;YACvJ,eAAe,EAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAC,UAAU,EAAC,EAAC,YAAY,EAAC,UAAU,CAAC,YAAY,EAAC,YAAY,EAAC,UAAU,CAAC,YAAY,EAAC,KAAK,EAAC,UAAU,CAAC,KAAK;gBACxJ,cAAc,EAAC,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAC,iBAAiB,EAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB;gBACzH,eAAe,EAAC,WAAW,EAAC,UAAU,CAAC,WAAW,EAAC,SAAS,EAAC,IAAa,EAAC,qBAAqB,EAAC,WAAoB,EAAC,EAAC,QAAQ,EAAC,QAAQ,CAAC,QAAQ;YACnJ,UAAU,EAAC,QAAQ,CAAC,UAAU,EAAC,IAAI,EAAC,EAAC,KAAK,EAAC,QAAQ,CAAC,KAAK,EAAC,cAAc,EAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAC;YACtG,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,CAAC,IAAI,EAAC,SAAS,EAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAC,UAAU,EAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAC,EAAC,CAAA;QACtI,MAAM,KAAK,GAAmC,EAAC,GAAG,QAAQ,EAAC,WAAW,EAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAC,CAAA;QAClG,OAAM,EAAC,KAAK,EAAC,MAAM,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,QAAQ,CAAC,WAAW,EAAC,aAAa,EAAC,KAAK,CAAC,aAAa,EAAC,gBAAgB,EAAC,mBAAmB,EAAC,CAAA;IACrI,CAAC;IACD,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAChC,IAAG,CAAC,QAAQ;gBAAC,OAAO,SAAS,CAAA;YAC7B,MAAM,MAAM,GAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAChC,IAAG,CAAC,MAAM;gBAAC,OAAO,SAAS,CAAA;YAC3B,MAAM,UAAU,GAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAW,CAAC,CAAA;YAC7D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAC,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAC,WAAW,EAAC,MAAM,CAAC,WAAW,EAAC,aAAa,EAAC,MAAM,CAAC,aAAa;gBAChJ,gBAAgB,EAAC,MAAM,CAAC,gBAAgB,EAAC,mBAAmB,EAAC,MAAM,CAAC,mBAAmB,EAAC,CAAC,CAAA;YAC3F,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,MAAK,CAAC;YAAA,OAAO,SAAS,CAAA;QAAA,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,UAAkB;QACxB,IAAI,CAAC;YACH,IAAG,CAAC,UAAU,IAAE,OAAO,UAAU,KAAG,QAAQ,IAAE,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAC,OAAO,SAAS,CAAA;YAC9E,MAAM,MAAM,GAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC/C,IAAG,CAAC,MAAM;gBAAC,OAAO,SAAS,CAAA;YAC3B,MAAM,MAAM,GAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAG,CAAC,MAAM,IAAE,MAAM,CAAC,KAAK,CAAC,WAAW,KAAG,MAAM,CAAC,WAAW,IAAE,MAAM,CAAC,WAAW,KAAG,MAAM,CAAC,WAAW,IAAE,MAAM,CAAC,aAAa,KAAG,MAAM,CAAC,aAAa;mBAC3I,MAAM,CAAC,gBAAgB,KAAG,MAAM,CAAC,gBAAgB,IAAE,MAAM,CAAC,mBAAmB,KAAG,MAAM,CAAC,mBAAmB;gBAAC,OAAO,SAAS,CAAA;YAC/H,OAAO,MAAM,CAAC,KAAK,CAAA;QACrB,CAAC;QAAC,MAAK,CAAC;YAAA,OAAO,SAAS,CAAA;QAAA,CAAC;IAC3B,CAAC;IACD;;mEAE+D;IAC/D,gBAAgB,CAAI,YAA+B,EAAC,QAAgF;QAClI,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAE,OAAO,QAAQ,KAAG,UAAU;YAAC,MAAM,IAAI,aAAa,CAAC,eAAe,EAAC,6CAA6C,CAAC,CAAA;QACpJ,MAAM,WAAW,GAAC,MAAM,CAAC,yBAAyB,CAAC,YAAY,CAAsD,CAAA;QACrH,MAAM,MAAM,GAAC,WAAW,CAAC,MAAM,EAAE,KAAgB,CAAA;QACjD,IAAG,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAE,MAAM,CAAC,MAAM,CAAC,GAAC,CAAC,IAAE,MAAM,CAAC,MAAM,CAAC,GAAC,IAAI;eACnE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA,EAAE,CAAA,OAAO,GAAG,KAAG,QAAQ,IAAE,GAAG,KAAG,QAAQ,IAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrH,MAAM,IAAI,aAAa,CAAC,eAAe,EAAC,gEAAgE,CAAC,CAAA;QAC3G,CAAC;QACD,MAAM,KAAK,GAAW,EAAE,CAAA;QACxB,KAAI,IAAI,KAAK,GAAC,CAAC,EAAC,KAAK,GAAC,MAAM,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3C,IAAG,CAAC,UAAU,IAAE,CAAC,UAAU,CAAC,UAAU,IAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAC,OAAO,CAAC;gBAAC,MAAM,IAAI,aAAa,CAAC,eAAe,EAAC,wDAAwD,CAAC,CAAA;YAC5K,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QACD,MAAM,MAAM,GAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAC,mBAAmB,GAAC,gBAAgB,CAAC,MAAM,CAAC,EAAC,KAAK,GAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QAClH,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAE,CAAC,MAAM,CAAC,mBAAmB,IAAE,CAAC,KAAK,IAAE,KAAK,CAAC,MAAM;YAAC,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAC,6CAA6C,CAAC,CAAA;QACjK,OAAO,KAAK,CAAC,uBAAuB,CAAC,GAAE,EAAE;YACvC,MAAM,SAAS,GAAC,IAAI,CAAC,aAAa,CAAA;YAClC,MAAM,OAAO,GAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAA,EAAE;gBAClC,IAAG,CAAC,UAAU,IAAE,OAAO,UAAU,KAAG,QAAQ;oBAAC,OAAO,SAAS,CAAA;gBAC7D,MAAM,MAAM,GAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBACtC,OAAO,MAAM,CAAA,CAAC,CAAA,EAAC,UAAU,EAAC,MAAM,EAAC,CAAA,CAAC,CAAA,SAAS,CAAA;YAC7C,CAAC,CAAC,CAAA;YACF,MAAM,KAAK,GAAC,IAAI,GAAG,EAAyC,CAAA;YAC5D,KAAI,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAG,CAAC,KAAK,IAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;oBAAC,SAAQ;gBAC/C,IAAI,CAAC;oBAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAC,SAAS,CAAC,CAAA;gBAAC,CAAC;YACtH,CAAC;YACD,kEAAkE;YAClE,wEAAwE;YACxE,+DAA+D;YAC/D,MAAM,aAAa,GAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAC,KAAK,GAAC,MAAM,CAAC,KAAK,CAAA;YACnE,MAAM,qBAAqB,GAAC,aAAa,CAAA,CAAC,CAAA,YAAY,CAAC,aAAa,CAAC,CAAA,CAAC,CAAA,SAAS,CAAA;YAC/E,IAAI,KAA+C,CAAA;YACnD,IAAI,CAAC;gBACH,IAAG,aAAa,IAAE,KAAK;oBAAC,KAAK,GAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAC,WAAW,EAAC,KAAK,CAAC,YAAY;wBAClG,WAAW,EAAC,KAAK,CAAC,WAAW,EAAC,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,WAAW,EAAC,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,CAAA;YACvF,CAAC;YAAC,MAAM,CAAC;gBAAA,KAAK,GAAC,SAAS,CAAA;YAAA,CAAC;YACzB,uEAAuE;YACvE,sEAAsE;YACtE,MAAM,aAAa,GAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAC,YAAY,GAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;YACnF,MAAM,QAAQ,GAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAC,WAAW,GAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;YACvF,MAAM,gBAAgB,GAAC,QAAQ,CAAA,CAAC,CAAA,YAAY,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAA,SAAS,EAAC,mBAAmB,GAAC,WAAW,CAAA,CAAC,CAAA,YAAY,CAAC,WAAW,CAAC,CAAA,CAAC,CAAA,SAAS,CAAA;YACpI,MAAM,0BAA0B,GAAC,gBAAgB,CAAC,aAAa,CAAC,EAAC,MAAM,GAAC,IAAI,CAAC,OAAO,EAAE,CAAA;YACtF,IAAG,CAAC,MAAM,IAAE,IAAI,CAAC,aAAa,KAAG,SAAS,IAAE,YAAY,KAAG,KAAK,IAAE,KAAK,CAAC,MAAM,IAAE,CAAC,QAAQ,IAAE,CAAC,WAAW,EAAE,CAAC;gBACxG,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAC,4DAA4D,CAAC,CAAA;YAC5G,CAAC;YACD,MAAM,oBAAoB,GAAC,aAAa,KAAG,MAAM,IAAE,0BAA0B,KAAG,mBAAmB,CAAA;YACnG,MAAM,MAAM,GAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAA,EAAE;gBAC9B,IAAG,CAAC,KAAK,IAAE,CAAC,oBAAoB,IAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,KAAG,KAAK,CAAC,MAAM;oBAAC,OAAO,SAAS,CAAA;gBAC1G,MAAM,MAAM,GAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC,MAAM,GAAC,KAAK,CAAC,MAAM,CAAA;gBAC5D,IAAG,CAAC,MAAM,IAAE,MAAM,CAAC,KAAK,CAAC,WAAW,KAAG,MAAM,CAAC,WAAW,IAAE,MAAM,CAAC,WAAW,KAAG,MAAM,CAAC,WAAW;uBAC9F,MAAM,CAAC,aAAa,KAAG,MAAM,CAAC,aAAa,IAAE,MAAM,CAAC,gBAAgB,KAAG,MAAM,CAAC,gBAAgB;uBAC9F,MAAM,CAAC,mBAAmB,KAAG,MAAM,CAAC,mBAAmB,IAAE,gBAAgB,KAAG,MAAM,CAAC,gBAAgB;uBACnG,mBAAmB,KAAG,MAAM,CAAC,mBAAmB,IAAE,qBAAqB,KAAG,gBAAgB;uBAC1F,CAAC,KAAK,IAAE,KAAK,CAAC,cAAc,KAAG,CAAC,IAAE,KAAK,CAAC,aAAa,KAAG,MAAM,CAAC,aAAa;uBAC5E,KAAK,CAAC,WAAW,KAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAE,KAAK,CAAC,WAAW,KAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW;uBACvG,KAAK,CAAC,iBAAiB,KAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAE,KAAK,CAAC,gBAAgB,KAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB;uBAC5H,KAAK,CAAC,SAAS,KAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAE,KAAK,CAAC,WAAW,KAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;oBAAC,OAAO,SAAS,CAAA;gBAClH,IAAI,CAAC;oBACH,MAAM,KAAK,GAAC,YAAY,CAAC,KAAK,EAAC,MAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;oBAC5F,OAAO,KAAK,IAAE,KAAK,CAAC,WAAW,KAAG,MAAM,CAAC,WAAW,IAAE,KAAK,CAAC,YAAY,KAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAA,CAAC,CAAA,MAAM,CAAC,KAAK,CAAA,CAAC,CAAA,SAAS,CAAA;gBAChI,CAAC;gBAAC,MAAM,CAAC;oBAAA,OAAO,SAAS,CAAA;gBAAA,CAAC;YAC5B,CAAC,CAAC,CAAA;YACF,uEAAuE;YACvE,MAAM,aAAa,GAAC,IAAI,CAAC,sBAAsB,CAAA;YAC/C,IAAI,CAAC,sBAAsB,GAAC,KAAK,KAAG,SAAS,CAAA,CAAC,CAAA,SAAS,CAAA,CAAC,CAAA,MAAM,CAAC,KAAK,CAAC,CAAA;YACrE,IAAI,CAAC;gBAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YAAA,CAAC;oBACpC,CAAC;gBAAA,IAAI,CAAC,sBAAsB,GAAC,IAAI,CAAC,OAAO,CAAA,CAAC,CAAA,SAAS,CAAA,CAAC,CAAA,aAAa,CAAA;YAAA,CAAC;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,SAAS,KAAY,OAAO,IAAI,CAAC,OAAO,EAAE,IAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,KAAG,IAAI,IAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,KAAG,KAAK,CAAA,CAAA,CAAC;IAC3I,KAAK,KAAS,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,CAAA,IAAI,CAAC,aAAa,GAAC,IAAI,OAAO,EAAE,CAAC,CAAA,IAAI,CAAC,sBAAsB,GAAC,SAAS,CAAA,CAAA,CAAC;CACxG"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Config } from './config.js';
|
|
3
|
+
import { AssistantWorkItemsService } from './service.js';
|
|
4
|
+
import { version } from './version.js';
|
|
5
|
+
export declare const name = "dsh-enhanced-assistant-work-items";
|
|
6
|
+
export { AssistantWorkItemsService, version };
|
|
7
|
+
export * from './authority.js';
|
|
8
|
+
export { decisionExternalId } from './mandate.js';
|
|
9
|
+
export * from './config.js';
|
|
10
|
+
export * from './evaluation.js';
|
|
11
|
+
export * from './intake.js';
|
|
12
|
+
export * from './intake-evaluation.js';
|
|
13
|
+
export * from './intake-evaluation-runtime.js';
|
|
14
|
+
export * from './intake-admission.js';
|
|
15
|
+
export type { OwnerWorkItemFeedbackProof, OwnerWorkItemFeedbackSelector } from './feedback-targets.js';
|
|
16
|
+
export * from './outcome.js';
|
|
17
|
+
export { normalizeFollowUp, normalizePolicyChange, MAX_POLICY_NOTICE_ITEMS } from './policy-notice.js';
|
|
18
|
+
export { POLICY_NOTICE_EVENT, FOLLOW_UP_OWNED_EVENT, FOLLOW_UP_PROCESSED_EVENT, FOLLOW_UP_RELEASED_EVENT, ACCEPTANCE_VERIFIED_EVENT, type WorkItemFollowUpCursor } from './store.js';
|
|
19
|
+
export { ACCEPTANCE_EXECUTOR, ACCEPTANCE_VERIFIER, acceptanceAuthorFor, acceptanceIsIndependent } from './acceptance-binding.js';
|
|
20
|
+
export * from './service.js';
|
|
21
|
+
export * from './settlement.js';
|
|
22
|
+
export * from './signals.js';
|
|
23
|
+
export * from './types.js';
|
|
24
|
+
export declare function apply(ctx: Context, config: Config): void;
|
|
25
|
+
export default AssistantWorkItemsService;
|
|
26
|
+
export type { EngineeringReportRef, EngineeringNode, WorkItemEngineeringMaterial } from './engineering-context.js';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,IAAI,sCAAsC,CAAA;AACvD,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAA;AAC7C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,YAAY,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAA;AACtG,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACtG,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACpL,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAChI,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAE1B,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,eAAe,yBAAyB,CAAA;AAExC,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AssistantWorkItemsService } from './service.js';
|
|
2
|
+
import { version } from './version.js';
|
|
3
|
+
export const name = 'dsh-enhanced-assistant-work-items';
|
|
4
|
+
export { AssistantWorkItemsService, version };
|
|
5
|
+
export * from './authority.js';
|
|
6
|
+
export { decisionExternalId } from './mandate.js';
|
|
7
|
+
export * from './config.js';
|
|
8
|
+
export * from './evaluation.js';
|
|
9
|
+
export * from './intake.js';
|
|
10
|
+
export * from './intake-evaluation.js';
|
|
11
|
+
export * from './intake-evaluation-runtime.js';
|
|
12
|
+
export * from './intake-admission.js';
|
|
13
|
+
export * from './outcome.js';
|
|
14
|
+
export { normalizeFollowUp, normalizePolicyChange, MAX_POLICY_NOTICE_ITEMS } from './policy-notice.js';
|
|
15
|
+
export { POLICY_NOTICE_EVENT, FOLLOW_UP_OWNED_EVENT, FOLLOW_UP_PROCESSED_EVENT, FOLLOW_UP_RELEASED_EVENT, ACCEPTANCE_VERIFIED_EVENT } from './store.js';
|
|
16
|
+
export { ACCEPTANCE_EXECUTOR, ACCEPTANCE_VERIFIER, acceptanceAuthorFor, acceptanceIsIndependent } from './acceptance-binding.js';
|
|
17
|
+
export * from './service.js';
|
|
18
|
+
export * from './settlement.js';
|
|
19
|
+
export * from './signals.js';
|
|
20
|
+
export * from './types.js';
|
|
21
|
+
export function apply(ctx, config) {
|
|
22
|
+
new AssistantWorkItemsService(ctx, config);
|
|
23
|
+
}
|
|
24
|
+
export default AssistantWorkItemsService;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,IAAI,GAAG,mCAAmC,CAAA;AACvD,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAA;AAC7C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AAErC,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACtG,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,yBAAyB,EAA+B,MAAM,YAAY,CAAA;AACpL,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAChI,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAE1B,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAc;IAChD,IAAI,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AAC5C,CAAC;AAED,eAAe,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { NormalizedIntakeAdmit } from './config.ts';
|
|
2
|
+
import type { WorkItemIntakeEvaluationRecord } from './intake-evaluation.ts';
|
|
3
|
+
import type { WorkItemStore } from './store.ts';
|
|
4
|
+
import type { WorkItemDecisionAdmitResult, WorkItemDecisionRefusal, WorkItemErrorCode, WorkItemExecuteDecision } from './types.ts';
|
|
5
|
+
/**
|
|
6
|
+
* WP21 slice 3: the first caller of `admitDecision`.
|
|
7
|
+
*
|
|
8
|
+
* Reads persisted WP20 evaluation rows (only `inferred` intake is evaluated)
|
|
9
|
+
* whose verdict would accept and that have no admission row yet. In `auto`
|
|
10
|
+
* mode each one becomes one execute decision under a deterministic id; in
|
|
11
|
+
* `observe` mode it is recorded as `would-admit` and nothing is admitted.
|
|
12
|
+
* Every outcome is one append-only row, so a replay or restart never decides
|
|
13
|
+
* the same evaluation twice and a refusal is final (no retry). Runs on the
|
|
14
|
+
* existing scheduler wake; it owns no loop or timer.
|
|
15
|
+
*/
|
|
16
|
+
export type WorkItemIntakeAdmissionOutcome = 'would-admit' | 'admitted' | 'replayed' | 'refused';
|
|
17
|
+
export interface WorkItemIntakeAdmissionRecord {
|
|
18
|
+
readonly source: string;
|
|
19
|
+
readonly sourceEventId: string;
|
|
20
|
+
readonly ruleId: string;
|
|
21
|
+
readonly policyVersion: string;
|
|
22
|
+
readonly mode: 'observe' | 'auto';
|
|
23
|
+
readonly outcome: WorkItemIntakeAdmissionOutcome;
|
|
24
|
+
/** Refusal value or admission error code; set only for `refused`. */
|
|
25
|
+
readonly reasonCode: WorkItemDecisionRefusal | WorkItemErrorCode | null;
|
|
26
|
+
readonly decisionId: string;
|
|
27
|
+
/** The one item the decision owns; set only for `admitted` and `replayed`. */
|
|
28
|
+
readonly itemId: string | null;
|
|
29
|
+
readonly recordedAt: number;
|
|
30
|
+
}
|
|
31
|
+
/** Stable decision id over the evaluated row, rule and Policy version; never the text. */
|
|
32
|
+
export declare function intakeDecisionIdFor(record: Pick<WorkItemIntakeEvaluationRecord, 'source' | 'sourceEventId' | 'ruleId' | 'policyVersion'>): string;
|
|
33
|
+
/** Metadata-only mandate: the brief names the rule and event, never the inbound text. */
|
|
34
|
+
export declare function intakeDecisionFor(record: WorkItemIntakeEvaluationRecord, config: NormalizedIntakeAdmit, budgetRemaining: number): WorkItemExecuteDecision;
|
|
35
|
+
export declare class WorkItemIntakeAdmissionBridge {
|
|
36
|
+
#private;
|
|
37
|
+
constructor(options: {
|
|
38
|
+
config: NormalizedIntakeAdmit;
|
|
39
|
+
maxPerRun: number;
|
|
40
|
+
store: () => WorkItemStore | undefined;
|
|
41
|
+
admit: (decision: WorkItemExecuteDecision) => WorkItemDecisionAdmitResult;
|
|
42
|
+
log: (message: string) => void;
|
|
43
|
+
now?: () => number;
|
|
44
|
+
});
|
|
45
|
+
/** One bounded pass over accepting evaluations without an admission row; never throws. */
|
|
46
|
+
run(): readonly WorkItemIntakeAdmissionRecord[];
|
|
47
|
+
lastError(): string | null;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=intake-admission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intake-admission.d.ts","sourceRoot":"","sources":["../src/intake-admission.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAGlI;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,8BAA8B,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;AAEhG,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAA;IAChD,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,uBAAuB,GAAG,iBAAiB,GAAG,IAAI,CAAA;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAOD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,8BAA8B,EAAE,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,eAAe,CAAC,GAAG,MAAM,CAEjJ;AAED,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,8BAA8B,EAAE,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,GAAG,uBAAuB,CAkBzJ;AAED,qBAAa,6BAA6B;;gBAS5B,OAAO,EAAE;QACnB,MAAM,EAAE,qBAAqB,CAAA;QAC7B,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,aAAa,GAAG,SAAS,CAAA;QACtC,KAAK,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,2BAA2B,CAAA;QACzE,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;KACnB;IASD,0FAA0F;IAC1F,GAAG,IAAI,SAAS,6BAA6B,EAAE;IAe/C,SAAS,IAAI,MAAM,GAAG,IAAI;CA6B3B"}
|