@dsh-enhanced/assistant-goals 0.1.30
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 +274 -0
- package/cordis.patch.yml +3 -0
- package/lib/budget-store.d.ts +73 -0
- package/lib/budget-store.d.ts.map +1 -0
- package/lib/budget-store.js +345 -0
- package/lib/budget-store.js.map +1 -0
- package/lib/budget.d.ts +78 -0
- package/lib/budget.d.ts.map +1 -0
- package/lib/budget.js +344 -0
- package/lib/budget.js.map +1 -0
- package/lib/dependency.d.ts +11 -0
- package/lib/dependency.d.ts.map +1 -0
- package/lib/dependency.js +34 -0
- package/lib/dependency.js.map +1 -0
- package/lib/event-wait-store.d.ts +56 -0
- package/lib/event-wait-store.d.ts.map +1 -0
- package/lib/event-wait-store.js +189 -0
- package/lib/event-wait-store.js.map +1 -0
- package/lib/event-wait.d.ts +47 -0
- package/lib/event-wait.d.ts.map +1 -0
- package/lib/event-wait.js +372 -0
- package/lib/event-wait.js.map +1 -0
- package/lib/execution-store.d.ts +23 -0
- package/lib/execution-store.d.ts.map +1 -0
- package/lib/execution-store.js +207 -0
- package/lib/execution-store.js.map +1 -0
- package/lib/execution.d.ts +49 -0
- package/lib/execution.d.ts.map +1 -0
- package/lib/execution.js +438 -0
- package/lib/execution.js.map +1 -0
- package/lib/feedback.d.ts +63 -0
- package/lib/feedback.d.ts.map +1 -0
- package/lib/feedback.js +134 -0
- package/lib/feedback.js.map +1 -0
- package/lib/index.d.ts +27 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +9 -0
- package/lib/index.js.map +1 -0
- package/lib/outcome-store.d.ts +47 -0
- package/lib/outcome-store.d.ts.map +1 -0
- package/lib/outcome-store.js +271 -0
- package/lib/outcome-store.js.map +1 -0
- package/lib/outcome.d.ts +77 -0
- package/lib/outcome.d.ts.map +1 -0
- package/lib/outcome.js +417 -0
- package/lib/outcome.js.map +1 -0
- package/lib/service.d.ts +363 -0
- package/lib/service.d.ts.map +1 -0
- package/lib/service.js +1839 -0
- package/lib/service.js.map +1 -0
- package/lib/store.d.ts +21 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +577 -0
- package/lib/store.js.map +1 -0
- package/lib/strategy-feedback.d.ts +29 -0
- package/lib/strategy-feedback.d.ts.map +1 -0
- package/lib/strategy-feedback.js +53 -0
- package/lib/strategy-feedback.js.map +1 -0
- package/lib/strategy-identity.d.ts +11 -0
- package/lib/strategy-identity.d.ts.map +1 -0
- package/lib/strategy-identity.js +10 -0
- package/lib/strategy-identity.js.map +1 -0
- package/lib/strategy-store.d.ts +76 -0
- package/lib/strategy-store.d.ts.map +1 -0
- package/lib/strategy-store.js +277 -0
- package/lib/strategy-store.js.map +1 -0
- package/lib/strategy.d.ts +56 -0
- package/lib/strategy.d.ts.map +1 -0
- package/lib/strategy.js +478 -0
- package/lib/strategy.js.map +1 -0
- package/lib/tools.d.ts +4 -0
- package/lib/tools.d.ts.map +1 -0
- package/lib/tools.js +130 -0
- package/lib/tools.js.map +1 -0
- package/lib/types.d.ts +285 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +10 -0
- package/lib/types.js.map +1 -0
- package/lib/verified-artifact.d.ts +72 -0
- package/lib/verified-artifact.d.ts.map +1 -0
- package/lib/verified-artifact.js +142 -0
- package/lib/verified-artifact.js.map +1 -0
- package/lib/verified-workflow.d.ts +120 -0
- package/lib/verified-workflow.d.ts.map +1 -0
- package/lib/verified-workflow.js +253 -0
- package/lib/verified-workflow.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/wake-store.d.ts +38 -0
- package/lib/wake-store.d.ts.map +1 -0
- package/lib/wake-store.js +177 -0
- package/lib/wake-store.js.map +1 -0
- package/lib/wake.d.ts +45 -0
- package/lib/wake.d.ts.map +1 -0
- package/lib/wake.js +327 -0
- package/lib/wake.js.map +1 -0
- package/package.json +143 -0
package/lib/outcome.d.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
3
|
+
import type { TaskAcceptanceContract, AcceptanceCriterion } from '@dsh-enhanced/task-acceptance-contract';
|
|
4
|
+
import type { AcceptanceHandle, AcceptedExecution, TaskAcceptanceRegistration } from '@dsh-enhanced/assistant-verifier';
|
|
5
|
+
import type { GoalExecutionRun, GoalRecord, GoalScope } from './types.js';
|
|
6
|
+
import type { GoalOutcomeAssessment } from './outcome-store.js';
|
|
7
|
+
export interface GoalOutcomeView {
|
|
8
|
+
status: 'unverified' | 'pending' | 'achieved' | 'not-achieved' | 'unknown' | 'expired' | 'unavailable';
|
|
9
|
+
definitionVersion: number;
|
|
10
|
+
conditions?: {
|
|
11
|
+
contractId: string;
|
|
12
|
+
profileId: string;
|
|
13
|
+
profileVersion: number;
|
|
14
|
+
digest: string;
|
|
15
|
+
expiresAt: number;
|
|
16
|
+
criteria: readonly AcceptanceCriterion[];
|
|
17
|
+
};
|
|
18
|
+
assessmentId?: string;
|
|
19
|
+
criteria?: readonly {
|
|
20
|
+
id: string;
|
|
21
|
+
status: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
}[];
|
|
24
|
+
verifiedAt?: number;
|
|
25
|
+
nativeCompletion?: 'complete' | 'pending';
|
|
26
|
+
}
|
|
27
|
+
export interface VerifiedWakeOutcome {
|
|
28
|
+
readonly assessmentId: string;
|
|
29
|
+
readonly runId: string;
|
|
30
|
+
readonly objectiveStatus: 'achieved' | 'not-achieved';
|
|
31
|
+
}
|
|
32
|
+
/** Independent observations of one immutable whole-goal specification. */
|
|
33
|
+
export declare class GoalOutcomeRuntime {
|
|
34
|
+
#private;
|
|
35
|
+
private readonly ctx;
|
|
36
|
+
private readonly current;
|
|
37
|
+
private readonly runs;
|
|
38
|
+
private readonly stepMaxDurationMs;
|
|
39
|
+
private readonly assertDependencies;
|
|
40
|
+
constructor(ctx: Context, path: string, current: (agent: Agent) => GoalRecord, runs: (scope: GoalScope, goalId: string) => readonly GoalExecutionRun[], stepMaxDurationMs: number, assertDependencies: (record: GoalRecord) => void);
|
|
41
|
+
register(registration: TaskAcceptanceRegistration): () => void;
|
|
42
|
+
/** Configuration-only check before the owner bridge mutates a native goal. */
|
|
43
|
+
preflight(scope: GoalScope, objective: string, record?: GoalRecord): void;
|
|
44
|
+
/** Called only while the owner creates/edits the definition, before native work. */
|
|
45
|
+
bind(record: GoalRecord): void;
|
|
46
|
+
/** Enrol a real native run in an assessment before its dispatch. */
|
|
47
|
+
prepare(agent: Agent, run: GoalExecutionRun): void;
|
|
48
|
+
settled(agent: Agent, run: GoalExecutionRun, assertCurrent: () => void): Promise<void>;
|
|
49
|
+
/** Reconcile a durable achieved receipt before another model step, including after reload. */
|
|
50
|
+
reconcileCompletion(agent: Agent): boolean;
|
|
51
|
+
/** Resolve only the assessment produced by this wake's exact terminal round. */
|
|
52
|
+
verifiedWakeOutcome(record: GoalRecord, wake: Readonly<{
|
|
53
|
+
sessionId: string;
|
|
54
|
+
goalId: string;
|
|
55
|
+
revision: number;
|
|
56
|
+
roundsStarted: number;
|
|
57
|
+
maxGoalRounds: number;
|
|
58
|
+
}>): Readonly<VerifiedWakeOutcome> | undefined;
|
|
59
|
+
/** Read-only proof that this exact wake's final native completion follows its verified last round. */
|
|
60
|
+
verifiedWakeCompletion(record: GoalRecord, wake: Readonly<{
|
|
61
|
+
sessionId: string;
|
|
62
|
+
goalId: string;
|
|
63
|
+
revision: number;
|
|
64
|
+
roundsStarted: number;
|
|
65
|
+
maxGoalRounds: number;
|
|
66
|
+
}>): boolean;
|
|
67
|
+
inspect: (input: TaskAcceptanceContract) => Promise<AcceptedExecution | null>;
|
|
68
|
+
artifactSource: (input: TaskAcceptanceContract) => Promise<AcceptanceHandle | null>;
|
|
69
|
+
view(record: GoalRecord): GoalOutcomeView;
|
|
70
|
+
/** Durable Host evidence only. Returned entries are constrained to the current semantic definition. */
|
|
71
|
+
inspectAssessments(record: GoalRecord): readonly GoalOutcomeAssessment[];
|
|
72
|
+
health: () => {
|
|
73
|
+
enabled: boolean;
|
|
74
|
+
connected: boolean;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=outcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"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"}
|
package/lib/outcome.js
ADDED
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { acceptanceDigest, validateTaskAcceptanceContract, validateTaskVerificationReceipt } from '@dsh-enhanced/task-acceptance-contract';
|
|
2
|
+
import { GoalOutcomeStore } from './outcome-store.js';
|
|
3
|
+
const same = (a, b) => acceptanceDigest(a) === acceptanceDigest(b);
|
|
4
|
+
const handle = (contract) => ({ contractId: contract.id, contractDigest: contract.digest });
|
|
5
|
+
/** Independent observations of one immutable whole-goal specification. */
|
|
6
|
+
export class GoalOutcomeRuntime {
|
|
7
|
+
ctx;
|
|
8
|
+
current;
|
|
9
|
+
runs;
|
|
10
|
+
stepMaxDurationMs;
|
|
11
|
+
assertDependencies;
|
|
12
|
+
#store;
|
|
13
|
+
#registration;
|
|
14
|
+
#active = true;
|
|
15
|
+
#handles = new Map();
|
|
16
|
+
#fences = new Map();
|
|
17
|
+
#settling = new Set();
|
|
18
|
+
constructor(ctx, path, current, runs, stepMaxDurationMs, assertDependencies) {
|
|
19
|
+
this.ctx = ctx;
|
|
20
|
+
this.current = current;
|
|
21
|
+
this.runs = runs;
|
|
22
|
+
this.stepMaxDurationMs = stepMaxDurationMs;
|
|
23
|
+
this.assertDependencies = assertDependencies;
|
|
24
|
+
this.#store = new GoalOutcomeStore(path);
|
|
25
|
+
this.#store.recoverIncomplete();
|
|
26
|
+
ctx.on('assistant-verifier/receipt', notice => {
|
|
27
|
+
if (notice.taskKind !== 'goal-outcome' || this.#settling.has(notice.contractId))
|
|
28
|
+
return;
|
|
29
|
+
queueMicrotask(() => {
|
|
30
|
+
if (!this.#active || this.#settling.has(notice.contractId))
|
|
31
|
+
return;
|
|
32
|
+
try {
|
|
33
|
+
const fence = this.#fences.get(notice.contractId);
|
|
34
|
+
const assessment = this.#store.getByContract(notice.contractId);
|
|
35
|
+
if (!fence || assessment?.contract.digest !== notice.contractDigest)
|
|
36
|
+
return;
|
|
37
|
+
fence.check();
|
|
38
|
+
this.reconcileCompletion(fence.agent);
|
|
39
|
+
}
|
|
40
|
+
catch { /* A nudge grants no authority; changed or disposed runs stay unchanged. */ }
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
ctx.on('agent/disposed', ({ agent }) => {
|
|
44
|
+
if (!this.#active)
|
|
45
|
+
return;
|
|
46
|
+
for (const [runId, entry] of this.#handles) {
|
|
47
|
+
if (entry.agent !== agent)
|
|
48
|
+
continue;
|
|
49
|
+
const pending = this.#store.getByContract(entry.accepted.contractId);
|
|
50
|
+
if (pending?.dispatchedAt !== undefined && pending.execution === undefined) {
|
|
51
|
+
this.#store.finish(pending.contract.task.ref, { status: 'unknown', quiescent: false, completedAt: Date.now() });
|
|
52
|
+
}
|
|
53
|
+
this.#handles.delete(runId);
|
|
54
|
+
}
|
|
55
|
+
for (const [id, fence] of this.#fences)
|
|
56
|
+
if (fence.agent === agent)
|
|
57
|
+
this.#fences.delete(id);
|
|
58
|
+
});
|
|
59
|
+
ctx.effect(() => () => { this.#active = false; this.#registration = undefined; this.#handles.clear(); this.#fences.clear(); this.#store.recoverIncomplete(); this.#store.close(); }, 'assistant-goals.outcomes');
|
|
60
|
+
}
|
|
61
|
+
register(registration) {
|
|
62
|
+
if (!this.#active)
|
|
63
|
+
throw new Error('assistant-goals: whole-goal runtime inactive');
|
|
64
|
+
if (this.#registration !== undefined)
|
|
65
|
+
throw new Error('assistant-goals: whole-goal verifier already registered');
|
|
66
|
+
if (registration.prepareGoalAssessment === undefined)
|
|
67
|
+
throw new Error('assistant-goals: whole-goal verifier lacks assessment capability');
|
|
68
|
+
if (!this.ctx.get('assistantVerifier', false)?.ownsTaskAcceptanceRegistration(registration))
|
|
69
|
+
throw new Error('assistant-goals: whole-goal verifier registration is foreign');
|
|
70
|
+
this.#registration = registration;
|
|
71
|
+
return () => { if (this.#registration === registration) {
|
|
72
|
+
this.#registration = undefined;
|
|
73
|
+
this.#handles.clear();
|
|
74
|
+
this.#fences.clear();
|
|
75
|
+
this.#store.recoverIncomplete();
|
|
76
|
+
} };
|
|
77
|
+
}
|
|
78
|
+
#ready() {
|
|
79
|
+
if (!this.#active || this.#registration === undefined
|
|
80
|
+
|| !this.ctx.get('assistantVerifier', false)?.ownsTaskAcceptanceRegistration(this.#registration))
|
|
81
|
+
throw new Error('assistant-goals: whole-goal verifier unavailable');
|
|
82
|
+
return this.#registration;
|
|
83
|
+
}
|
|
84
|
+
#task(record, assessmentId) {
|
|
85
|
+
return { kind: 'goal-outcome', ref: assessmentId, goal: { id: record.id,
|
|
86
|
+
definitionVersion: record.definition.version, definitionDigest: record.definition.digest, assessmentId,
|
|
87
|
+
sessionId: record.native.sessionId, nativeGoalId: record.native.goalId } };
|
|
88
|
+
}
|
|
89
|
+
#input(record, assessmentId) {
|
|
90
|
+
return { scope: { workspace: record.scope.workspace, preset: record.scope.preset },
|
|
91
|
+
owner: { principalRecordId: record.scope.principalRecordId, principalVersion: record.scope.principalVersion },
|
|
92
|
+
objective: record.definition.objective, task: this.#task(record, assessmentId) };
|
|
93
|
+
}
|
|
94
|
+
/** Configuration-only check before the owner bridge mutates a native goal. */
|
|
95
|
+
preflight(scope, objective, record) {
|
|
96
|
+
this.#ready();
|
|
97
|
+
const verifier = this.ctx.get('assistantVerifier', false);
|
|
98
|
+
const selection = { scope: { workspace: scope.workspace, preset: scope.preset },
|
|
99
|
+
owner: { principalRecordId: scope.principalRecordId, principalVersion: scope.principalVersion }, objective };
|
|
100
|
+
const step = verifier.inspectAcceptanceProfile({ ...selection, taskKind: 'goal-step' });
|
|
101
|
+
const whole = verifier.inspectAcceptanceProfile({ ...selection, taskKind: 'goal-outcome' });
|
|
102
|
+
if (step === null)
|
|
103
|
+
throw new Error('assistant-goals: configure an exact goal-step acceptance profile before creating or editing this goal');
|
|
104
|
+
if (whole === null)
|
|
105
|
+
throw new Error('assistant-goals: configure an exact whole-goal success specification before creating or editing this goal');
|
|
106
|
+
const stepWindow = this.stepMaxDurationMs + step.profile.bounds.maxDurationMs;
|
|
107
|
+
// Step verification precedes whole-goal verification. This is a minimum
|
|
108
|
+
// configuration window, not a promise that queueing or later work will fit.
|
|
109
|
+
const wholeWindow = stepWindow + whole.profile.bounds.maxDurationMs;
|
|
110
|
+
if (step.profile.validityMs <= stepWindow || whole.profile.validityMs <= wholeWindow) {
|
|
111
|
+
throw new Error('assistant-goals: acceptance validity cannot cover the configured native round and verification');
|
|
112
|
+
}
|
|
113
|
+
if (record === undefined || objective !== record.definition.objective)
|
|
114
|
+
return;
|
|
115
|
+
const existing = this.#store.getDefinition(scope, record.id, record.definition.version);
|
|
116
|
+
if (existing === undefined)
|
|
117
|
+
return;
|
|
118
|
+
const template = existing.template;
|
|
119
|
+
if (!same(existing.definition, record.definition) || !same(record.scope, scope)
|
|
120
|
+
|| existing.sessionId !== record.native.sessionId || existing.nativeGoalId !== record.native.goalId) {
|
|
121
|
+
throw new Error('assistant-goals: whole-goal definition changed');
|
|
122
|
+
}
|
|
123
|
+
if (template.profile.id !== whole.profile.id || template.profile.version !== whole.profile.version
|
|
124
|
+
|| template.profile.digest !== whole.digest)
|
|
125
|
+
throw new Error('assistant-goals: configured whole-goal profile differs from the frozen success specification');
|
|
126
|
+
if (Date.now() + wholeWindow >= template.expiresAt) {
|
|
127
|
+
throw new Error('assistant-goals: frozen whole-goal deadline cannot cover another native round and verification');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** Called only while the owner creates/edits the definition, before native work. */
|
|
131
|
+
bind(record) {
|
|
132
|
+
const registration = this.#ready();
|
|
133
|
+
const existing = this.#store.getDefinition(record.scope, record.id, record.definition.version);
|
|
134
|
+
if (existing !== undefined) {
|
|
135
|
+
if (!same(existing.definition, record.definition) || existing.sessionId !== record.native.sessionId
|
|
136
|
+
|| existing.nativeGoalId !== record.native.goalId)
|
|
137
|
+
throw new Error('assistant-goals: whole-goal definition changed');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const assessmentId = `goal-assessment-${acceptanceDigest([record.scope, record.id, record.definition, 'initial'])}`;
|
|
141
|
+
const accepted = registration.prepare(this.#input(record, assessmentId));
|
|
142
|
+
const contract = accepted === null ? undefined : this.ctx.get('assistantVerifier', false)?.inspectAcceptedTask(accepted.contractId)?.contract;
|
|
143
|
+
if (accepted === null || contract === undefined || contract.digest !== accepted.contractDigest
|
|
144
|
+
|| contract.task.kind !== 'goal-outcome')
|
|
145
|
+
throw new Error('assistant-goals: no exact whole-goal success specification');
|
|
146
|
+
this.#store.bind({ scope: record.scope, goalId: record.id, definition: record.definition,
|
|
147
|
+
sessionId: record.native.sessionId, nativeGoalId: record.native.goalId, template: contract });
|
|
148
|
+
}
|
|
149
|
+
/** Enrol a real native run in an assessment before its dispatch. */
|
|
150
|
+
prepare(agent, run) {
|
|
151
|
+
const registration = this.#ready();
|
|
152
|
+
const record = this.current(agent);
|
|
153
|
+
const definition = this.#store.getDefinition(record.scope, record.id, record.definition.version);
|
|
154
|
+
if (definition === undefined || !same(definition.definition, record.definition))
|
|
155
|
+
throw new Error('assistant-goals: whole-goal conditions were not frozen by the owner');
|
|
156
|
+
const prior = this.#store.list(record.scope, record.id, 100).filter(item => item.definition.definition.version === record.definition.version);
|
|
157
|
+
const replay = this.#store.getByTriggerRun(record.scope, record.id, record.definition.version, run.intent.runId);
|
|
158
|
+
if (replay !== undefined)
|
|
159
|
+
throw new Error('assistant-goals: prior assessment requires reconciliation');
|
|
160
|
+
const assessmentId = prior.length === 0 ? definition.template.task.ref
|
|
161
|
+
: `goal-assessment-${acceptanceDigest([record.scope, record.id, record.definition, run.intent.runId])}`;
|
|
162
|
+
const accepted = registration.prepareGoalAssessment(this.#input(record, assessmentId), handle(definition.template));
|
|
163
|
+
const contract = this.ctx.get('assistantVerifier', false)?.inspectAcceptedTask(accepted.contractId)?.contract;
|
|
164
|
+
if (contract === undefined || contract.digest !== accepted.contractDigest)
|
|
165
|
+
throw new Error('assistant-goals: whole-goal acceptance readback failed');
|
|
166
|
+
if (run.intent.admission.expiresAt + contract.bounds.maxDurationMs >= contract.expiresAt)
|
|
167
|
+
throw new Error('assistant-goals: whole-goal deadline cannot cover the native round and verification');
|
|
168
|
+
this.#store.prepare(definition, contract, run.intent.runId);
|
|
169
|
+
this.#store.markDispatched(assessmentId, Date.now());
|
|
170
|
+
this.#handles.set(run.intent.runId, { accepted, agent });
|
|
171
|
+
}
|
|
172
|
+
async settled(agent, run, assertCurrent) {
|
|
173
|
+
const id = this.#handles.get(run.intent.runId)?.accepted.contractId;
|
|
174
|
+
if (id !== undefined)
|
|
175
|
+
this.#settling.add(id);
|
|
176
|
+
try {
|
|
177
|
+
await this.#settle(agent, run, assertCurrent);
|
|
178
|
+
}
|
|
179
|
+
finally {
|
|
180
|
+
if (id !== undefined)
|
|
181
|
+
this.#settling.delete(id);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
async #settle(agent, run, assertCurrent) {
|
|
185
|
+
if (!this.#active)
|
|
186
|
+
return;
|
|
187
|
+
const registration = this.#ready();
|
|
188
|
+
const accepted = this.#handles.get(run.intent.runId)?.accepted;
|
|
189
|
+
if (accepted === undefined)
|
|
190
|
+
return;
|
|
191
|
+
this.#handles.delete(run.intent.runId);
|
|
192
|
+
const assessment = this.#store.getByContract(accepted.contractId);
|
|
193
|
+
if (assessment === undefined)
|
|
194
|
+
throw new Error('assistant-goals: assessment intent missing');
|
|
195
|
+
const check = () => {
|
|
196
|
+
assertCurrent();
|
|
197
|
+
if (this.current(agent).native.roundsStarted !== run.intent.admission.round)
|
|
198
|
+
throw new Error('assistant-goals: whole-goal assessment round changed');
|
|
199
|
+
};
|
|
200
|
+
let valid = run.execution?.status === 'succeeded' && run.execution.quiescent;
|
|
201
|
+
try {
|
|
202
|
+
check();
|
|
203
|
+
const record = this.current(agent);
|
|
204
|
+
valid = valid && same(record.scope, assessment.definition.scope)
|
|
205
|
+
&& record.id === assessment.definition.goalId && same(record.definition, assessment.definition.definition)
|
|
206
|
+
&& record.native.sessionId === assessment.definition.sessionId && record.native.goalId === assessment.definition.nativeGoalId;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
valid = false;
|
|
210
|
+
}
|
|
211
|
+
this.#store.finish(assessment.contract.task.ref, { status: valid ? 'succeeded' : 'unknown', quiescent: valid, completedAt: Date.now() });
|
|
212
|
+
if (valid)
|
|
213
|
+
this.#fences.set(accepted.contractId, { agent, check });
|
|
214
|
+
await registration.completed(accepted);
|
|
215
|
+
if (this.#registration !== registration)
|
|
216
|
+
throw new Error('assistant-goals: assessment verifier changed');
|
|
217
|
+
await this.ctx.get('assistantVerifier', false).tick();
|
|
218
|
+
if (!valid)
|
|
219
|
+
return;
|
|
220
|
+
check();
|
|
221
|
+
if (this.#ready() !== registration)
|
|
222
|
+
throw new Error('assistant-goals: assessment verifier changed');
|
|
223
|
+
const record = this.current(agent);
|
|
224
|
+
const outcome = this.view(record);
|
|
225
|
+
if (outcome.status !== 'achieved' || outcome.assessmentId !== assessment.contract.task.ref)
|
|
226
|
+
return;
|
|
227
|
+
this.reconcileCompletion(agent);
|
|
228
|
+
}
|
|
229
|
+
/** Reconcile a durable achieved receipt before another model step, including after reload. */
|
|
230
|
+
reconcileCompletion(agent) {
|
|
231
|
+
this.#ready();
|
|
232
|
+
const record = this.current(agent);
|
|
233
|
+
const result = this.view(record);
|
|
234
|
+
if (result.status !== 'achieved' || result.assessmentId === undefined || record.native.phase === 'complete')
|
|
235
|
+
return false;
|
|
236
|
+
const assessment = this.#store.get(result.assessmentId);
|
|
237
|
+
const run = this.runs(record.scope, record.id).find(item => item.intent.runId === assessment?.triggerRunId);
|
|
238
|
+
if (run === undefined || assessment === undefined || run.execution?.status !== 'succeeded' || !run.execution.quiescent
|
|
239
|
+
|| !same(assessment.definition.definition, record.definition) || !same(run.intent.scope, record.scope)
|
|
240
|
+
|| run.intent.task.goal.definitionVersion !== record.definition.version || run.intent.task.goal.definitionDigest !== record.definition.digest
|
|
241
|
+
|| run.intent.task.goal.nativeGoalId !== record.native.goalId || run.intent.task.goal.sessionId !== record.native.sessionId
|
|
242
|
+
|| run.intent.admission.maxGoalRounds !== record.native.maxGoalRounds)
|
|
243
|
+
return false;
|
|
244
|
+
const exact = record.native.revision === run.intent.task.goal.nativeRevision && record.native.phase === 'active'
|
|
245
|
+
&& record.native.roundsStarted === run.intent.admission.round;
|
|
246
|
+
const exhausted = record.native.revision === run.intent.task.goal.nativeRevision + 1 && record.native.phase === 'blocked'
|
|
247
|
+
&& record.native.roundsStarted === run.intent.admission.maxGoalRounds;
|
|
248
|
+
// Pre-step runs before newly claimed goal messages are appended. A later
|
|
249
|
+
// admitted round requires its own assessment; revision alone cannot prove it.
|
|
250
|
+
if (!exact && !exhausted)
|
|
251
|
+
return false;
|
|
252
|
+
const goals = this.ctx.get('goals', false);
|
|
253
|
+
const native = goals?.get(agent);
|
|
254
|
+
if (goals === undefined || native === undefined || String(native.id) !== record.native.goalId || native.revision !== record.native.revision)
|
|
255
|
+
return false;
|
|
256
|
+
try {
|
|
257
|
+
const parent = this.current(agent);
|
|
258
|
+
if (parent.id !== record.id || !same(parent.scope, record.scope) || !same(parent.definition, record.definition)
|
|
259
|
+
|| !same(parent.native, record.native) || run.intent.dependencies === undefined
|
|
260
|
+
|| (parent.checkpoint.dependencies.length > 0 && parent.checkpoint.dependencyBindings === undefined)
|
|
261
|
+
|| !same(parent.checkpoint.dependencyBindings ?? [], run.intent.dependencies))
|
|
262
|
+
return false;
|
|
263
|
+
this.assertDependencies(parent);
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
goals.complete(agent, { id: native.id, revision: native.revision });
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
/** Resolve only the assessment produced by this wake's exact terminal round. */
|
|
272
|
+
verifiedWakeOutcome(record, wake) {
|
|
273
|
+
try {
|
|
274
|
+
const phase = record.native.phase;
|
|
275
|
+
const expectedOutcome = phase === 'complete' ? 'achieved' : phase === 'blocked' ? 'not-achieved' : undefined;
|
|
276
|
+
const directTerminal = record.native.revision === wake.revision + 2;
|
|
277
|
+
const verifiedAfterBlocked = phase === 'complete' && record.native.revision === wake.revision + 3;
|
|
278
|
+
if (expectedOutcome === undefined || record.native.sessionId !== wake.sessionId || record.native.goalId !== wake.goalId
|
|
279
|
+
|| record.native.maxGoalRounds !== wake.maxGoalRounds || record.native.roundsStarted <= wake.roundsStarted
|
|
280
|
+
|| record.native.roundsStarted > wake.maxGoalRounds || !directTerminal && !verifiedAfterBlocked
|
|
281
|
+
|| (phase === 'blocked' || verifiedAfterBlocked) && record.native.roundsStarted !== wake.maxGoalRounds
|
|
282
|
+
|| record.checkpoint.dependencies.length > 0 && record.checkpoint.dependencyBindings === undefined)
|
|
283
|
+
return undefined;
|
|
284
|
+
const runs = this.runs(record.scope, record.id).filter(item => item.execution?.status === 'succeeded' && item.execution.quiescent
|
|
285
|
+
&& item.dispatchedAt !== undefined && same(item.intent.scope, record.scope)
|
|
286
|
+
&& same(item.intent.dependencies ?? [], record.checkpoint.dependencyBindings ?? [])
|
|
287
|
+
&& item.intent.task.goal.id === record.id && item.intent.task.goal.definitionVersion === record.definition.version
|
|
288
|
+
&& item.intent.task.goal.definitionDigest === record.definition.digest && item.intent.task.goal.sessionId === wake.sessionId
|
|
289
|
+
&& item.intent.task.goal.nativeGoalId === wake.goalId && item.intent.task.goal.nativeRevision === wake.revision + 1
|
|
290
|
+
&& item.intent.admission.round === record.native.roundsStarted && item.intent.admission.maxGoalRounds === wake.maxGoalRounds);
|
|
291
|
+
if (runs.length !== 1)
|
|
292
|
+
return undefined;
|
|
293
|
+
const run = runs[0];
|
|
294
|
+
const assessment = this.#store.getByTriggerRun(record.scope, record.id, record.definition.version, run.intent.runId);
|
|
295
|
+
if (assessment === undefined || assessment.execution?.status !== 'succeeded' || !assessment.execution.quiescent
|
|
296
|
+
|| !same(assessment.definition.scope, record.scope) || assessment.definition.goalId !== record.id
|
|
297
|
+
|| !same(assessment.definition.definition, record.definition) || assessment.definition.sessionId !== wake.sessionId
|
|
298
|
+
|| assessment.definition.nativeGoalId !== wake.goalId || assessment.contract.task.kind !== 'goal-outcome'
|
|
299
|
+
|| assessment.contract.task.goal.id !== record.id || assessment.contract.task.goal.definitionVersion !== record.definition.version
|
|
300
|
+
|| assessment.contract.task.goal.definitionDigest !== record.definition.digest
|
|
301
|
+
|| assessment.contract.task.goal.sessionId !== wake.sessionId || assessment.contract.task.goal.nativeGoalId !== wake.goalId)
|
|
302
|
+
return undefined;
|
|
303
|
+
this.#ready();
|
|
304
|
+
const readback = this.ctx.get('assistantVerifier', false).inspectAcceptedTask(assessment.contract.id);
|
|
305
|
+
if (readback?.receipt === null || readback === null || !same(readback.contract, assessment.contract)
|
|
306
|
+
|| !same(readback.execution, { ...assessment.execution, executionRef: assessment.contract.task.ref }))
|
|
307
|
+
return undefined;
|
|
308
|
+
const receipt = validateTaskVerificationReceipt(assessment.contract, readback.receipt);
|
|
309
|
+
if (receipt.objectiveStatus !== expectedOutcome || receipt.completedAt > Date.now() || receipt.validUntil <= Date.now())
|
|
310
|
+
return undefined;
|
|
311
|
+
return Object.freeze({ assessmentId: assessment.contract.task.ref, runId: run.intent.runId, objectiveStatus: expectedOutcome });
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
return undefined;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/** Read-only proof that this exact wake's final native completion follows its verified last round. */
|
|
318
|
+
verifiedWakeCompletion(record, wake) {
|
|
319
|
+
const outcome = this.verifiedWakeOutcome(record, wake);
|
|
320
|
+
return outcome?.objectiveStatus === 'achieved' && record.native.phase === 'complete'
|
|
321
|
+
&& record.native.revision === wake.revision + 3;
|
|
322
|
+
}
|
|
323
|
+
inspect = async (input) => {
|
|
324
|
+
this.#ready();
|
|
325
|
+
const contract = validateTaskAcceptanceContract(input);
|
|
326
|
+
if (contract.task.kind !== 'goal-outcome')
|
|
327
|
+
throw new Error('assistant-goals: foreign whole-goal task');
|
|
328
|
+
const assessment = this.#store.getByContract(contract.id);
|
|
329
|
+
if (assessment === undefined || !same(assessment.contract, contract)
|
|
330
|
+
|| assessment.dispatchedAt === undefined || assessment.execution === undefined)
|
|
331
|
+
return null;
|
|
332
|
+
if (assessment.execution.quiescent) {
|
|
333
|
+
try {
|
|
334
|
+
const fence = this.#fences.get(contract.id);
|
|
335
|
+
if (fence === undefined)
|
|
336
|
+
throw new Error('live assessment fence unavailable');
|
|
337
|
+
fence.check();
|
|
338
|
+
if (this.#fences.get(contract.id) !== fence)
|
|
339
|
+
throw new Error('live assessment fence changed');
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
return Object.freeze({ ...handle(contract), dispatchedAt: assessment.dispatchedAt, completedAt: assessment.execution.completedAt, executionRef: contract.task.ref, status: 'unknown', quiescent: false });
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
const trigger = this.runs(assessment.definition.scope, assessment.definition.goalId)
|
|
346
|
+
.find(run => run.intent.runId === assessment.triggerRunId);
|
|
347
|
+
if (assessment.execution.quiescent && (trigger?.execution?.quiescent !== true
|
|
348
|
+
|| trigger.execution.status !== 'succeeded' || trigger.dispatchedAt === undefined
|
|
349
|
+
|| trigger.intent.task.goal.definitionVersion !== contract.task.goal.definitionVersion
|
|
350
|
+
|| trigger.intent.task.goal.definitionDigest !== contract.task.goal.definitionDigest)) {
|
|
351
|
+
throw new Error('assistant-goals: whole-goal assessment lacks actual settled work');
|
|
352
|
+
}
|
|
353
|
+
return Object.freeze({ ...assessment.execution, ...handle(contract), dispatchedAt: assessment.dispatchedAt, executionRef: contract.task.ref });
|
|
354
|
+
};
|
|
355
|
+
artifactSource = async (input) => {
|
|
356
|
+
const contract = validateTaskAcceptanceContract(input);
|
|
357
|
+
const proof = await this.inspect(contract);
|
|
358
|
+
if (proof?.status !== 'succeeded' || !proof.quiescent)
|
|
359
|
+
return null;
|
|
360
|
+
const assessment = this.#store.getByContract(contract.id);
|
|
361
|
+
const run = this.runs(assessment.definition.scope, assessment.definition.goalId).find(entry => entry.intent.runId === assessment.triggerRunId);
|
|
362
|
+
return run?.acceptance ?? null;
|
|
363
|
+
};
|
|
364
|
+
view(record) {
|
|
365
|
+
const base = { status: 'unverified', definitionVersion: record.definition.version };
|
|
366
|
+
if (!this.#active)
|
|
367
|
+
return { ...base, status: 'unavailable' };
|
|
368
|
+
const definition = this.#store.getDefinition(record.scope, record.id, record.definition.version);
|
|
369
|
+
if (definition === undefined || !same(definition.definition, record.definition))
|
|
370
|
+
return base;
|
|
371
|
+
const template = definition.template;
|
|
372
|
+
base.conditions = { contractId: template.id, profileId: template.profile.id, profileVersion: template.profile.version,
|
|
373
|
+
digest: acceptanceDigest(template.criteria), expiresAt: template.expiresAt, criteria: template.criteria };
|
|
374
|
+
if (Date.now() >= template.expiresAt)
|
|
375
|
+
return { ...base, status: 'expired' };
|
|
376
|
+
const latest = this.#store.list(record.scope, record.id, 100).find(item => item.definition.definition.version === record.definition.version);
|
|
377
|
+
if (latest === undefined)
|
|
378
|
+
return base;
|
|
379
|
+
base.assessmentId = latest.contract.task.ref;
|
|
380
|
+
if (latest.execution === undefined)
|
|
381
|
+
return { ...base, status: 'pending' };
|
|
382
|
+
if (!latest.execution.quiescent || latest.execution.status !== 'succeeded')
|
|
383
|
+
return { ...base, status: 'unknown' };
|
|
384
|
+
try {
|
|
385
|
+
this.#ready();
|
|
386
|
+
const readback = this.ctx.get('assistantVerifier', false).inspectAcceptedTask(latest.contract.id);
|
|
387
|
+
if (readback?.receipt === null || readback === null)
|
|
388
|
+
return { ...base, status: 'pending' };
|
|
389
|
+
const contract = validateTaskAcceptanceContract(readback.contract);
|
|
390
|
+
if (!same(contract, latest.contract))
|
|
391
|
+
throw new Error('assessment contract differs');
|
|
392
|
+
if (same(readback.execution, { status: 'unknown', quiescent: false, completedAt: latest.execution.completedAt, executionRef: contract.task.ref }))
|
|
393
|
+
return { ...base, status: 'unknown' };
|
|
394
|
+
if (!same(readback.execution, { ...latest.execution, executionRef: contract.task.ref }))
|
|
395
|
+
throw new Error('assessment readback differs');
|
|
396
|
+
const receipt = validateTaskVerificationReceipt(contract, readback.receipt);
|
|
397
|
+
if (receipt.validUntil <= Date.now() || receipt.completedAt > Date.now())
|
|
398
|
+
return { ...base, status: 'expired' };
|
|
399
|
+
return { ...base, status: receipt.objectiveStatus, verifiedAt: receipt.completedAt,
|
|
400
|
+
...(receipt.objectiveStatus === 'achieved' ? { nativeCompletion: record.native.phase === 'complete' ? 'complete' : 'pending' } : {}),
|
|
401
|
+
criteria: receipt.results.map(result => ({ id: result.criterionId, status: result.status, reason: result.reason.slice(0, 256) })) };
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
return { ...base, status: 'unavailable' };
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
/** Durable Host evidence only. Returned entries are constrained to the current semantic definition. */
|
|
408
|
+
inspectAssessments(record) {
|
|
409
|
+
if (!this.#active)
|
|
410
|
+
return Object.freeze([]);
|
|
411
|
+
return Object.freeze(this.#store.list(record.scope, record.id, 100).filter(item => same(item.definition.scope, record.scope) && item.definition.goalId === record.id
|
|
412
|
+
&& same(item.definition.definition, record.definition) && item.definition.sessionId === record.native.sessionId
|
|
413
|
+
&& item.definition.nativeGoalId === record.native.goalId).map(item => Object.freeze({ ...item })));
|
|
414
|
+
}
|
|
415
|
+
health = () => ({ enabled: true, connected: this.#registration !== undefined });
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=outcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome.js","sourceRoot":"","sources":["../src/outcome.ts"],"names":[],"mappings":"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"}
|