@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.
Files changed (100) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/cordis.patch.yml +3 -0
  4. package/lib/budget-store.d.ts +73 -0
  5. package/lib/budget-store.d.ts.map +1 -0
  6. package/lib/budget-store.js +345 -0
  7. package/lib/budget-store.js.map +1 -0
  8. package/lib/budget.d.ts +78 -0
  9. package/lib/budget.d.ts.map +1 -0
  10. package/lib/budget.js +344 -0
  11. package/lib/budget.js.map +1 -0
  12. package/lib/dependency.d.ts +11 -0
  13. package/lib/dependency.d.ts.map +1 -0
  14. package/lib/dependency.js +34 -0
  15. package/lib/dependency.js.map +1 -0
  16. package/lib/event-wait-store.d.ts +56 -0
  17. package/lib/event-wait-store.d.ts.map +1 -0
  18. package/lib/event-wait-store.js +189 -0
  19. package/lib/event-wait-store.js.map +1 -0
  20. package/lib/event-wait.d.ts +47 -0
  21. package/lib/event-wait.d.ts.map +1 -0
  22. package/lib/event-wait.js +372 -0
  23. package/lib/event-wait.js.map +1 -0
  24. package/lib/execution-store.d.ts +23 -0
  25. package/lib/execution-store.d.ts.map +1 -0
  26. package/lib/execution-store.js +207 -0
  27. package/lib/execution-store.js.map +1 -0
  28. package/lib/execution.d.ts +49 -0
  29. package/lib/execution.d.ts.map +1 -0
  30. package/lib/execution.js +438 -0
  31. package/lib/execution.js.map +1 -0
  32. package/lib/feedback.d.ts +63 -0
  33. package/lib/feedback.d.ts.map +1 -0
  34. package/lib/feedback.js +134 -0
  35. package/lib/feedback.js.map +1 -0
  36. package/lib/index.d.ts +27 -0
  37. package/lib/index.d.ts.map +1 -0
  38. package/lib/index.js +9 -0
  39. package/lib/index.js.map +1 -0
  40. package/lib/outcome-store.d.ts +47 -0
  41. package/lib/outcome-store.d.ts.map +1 -0
  42. package/lib/outcome-store.js +271 -0
  43. package/lib/outcome-store.js.map +1 -0
  44. package/lib/outcome.d.ts +77 -0
  45. package/lib/outcome.d.ts.map +1 -0
  46. package/lib/outcome.js +417 -0
  47. package/lib/outcome.js.map +1 -0
  48. package/lib/service.d.ts +363 -0
  49. package/lib/service.d.ts.map +1 -0
  50. package/lib/service.js +1839 -0
  51. package/lib/service.js.map +1 -0
  52. package/lib/store.d.ts +21 -0
  53. package/lib/store.d.ts.map +1 -0
  54. package/lib/store.js +577 -0
  55. package/lib/store.js.map +1 -0
  56. package/lib/strategy-feedback.d.ts +29 -0
  57. package/lib/strategy-feedback.d.ts.map +1 -0
  58. package/lib/strategy-feedback.js +53 -0
  59. package/lib/strategy-feedback.js.map +1 -0
  60. package/lib/strategy-identity.d.ts +11 -0
  61. package/lib/strategy-identity.d.ts.map +1 -0
  62. package/lib/strategy-identity.js +10 -0
  63. package/lib/strategy-identity.js.map +1 -0
  64. package/lib/strategy-store.d.ts +76 -0
  65. package/lib/strategy-store.d.ts.map +1 -0
  66. package/lib/strategy-store.js +277 -0
  67. package/lib/strategy-store.js.map +1 -0
  68. package/lib/strategy.d.ts +56 -0
  69. package/lib/strategy.d.ts.map +1 -0
  70. package/lib/strategy.js +478 -0
  71. package/lib/strategy.js.map +1 -0
  72. package/lib/tools.d.ts +4 -0
  73. package/lib/tools.d.ts.map +1 -0
  74. package/lib/tools.js +130 -0
  75. package/lib/tools.js.map +1 -0
  76. package/lib/types.d.ts +285 -0
  77. package/lib/types.d.ts.map +1 -0
  78. package/lib/types.js +10 -0
  79. package/lib/types.js.map +1 -0
  80. package/lib/verified-artifact.d.ts +72 -0
  81. package/lib/verified-artifact.d.ts.map +1 -0
  82. package/lib/verified-artifact.js +142 -0
  83. package/lib/verified-artifact.js.map +1 -0
  84. package/lib/verified-workflow.d.ts +120 -0
  85. package/lib/verified-workflow.d.ts.map +1 -0
  86. package/lib/verified-workflow.js +253 -0
  87. package/lib/verified-workflow.js.map +1 -0
  88. package/lib/version.d.ts +2 -0
  89. package/lib/version.d.ts.map +1 -0
  90. package/lib/version.js +2 -0
  91. package/lib/version.js.map +1 -0
  92. package/lib/wake-store.d.ts +38 -0
  93. package/lib/wake-store.d.ts.map +1 -0
  94. package/lib/wake-store.js +177 -0
  95. package/lib/wake-store.js.map +1 -0
  96. package/lib/wake.d.ts +45 -0
  97. package/lib/wake.d.ts.map +1 -0
  98. package/lib/wake.js +327 -0
  99. package/lib/wake.js.map +1 -0
  100. package/package.json +143 -0
@@ -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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"}