@namzu/sdk 38.0.0 → 38.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +80 -0
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +1 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/bridge/sse/mapper.d.ts.map +1 -1
- package/dist/bridge/sse/mapper.js +2 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +4 -0
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/plan/lifecycle.d.ts +1 -1
- package/dist/manager/plan/lifecycle.d.ts.map +1 -1
- package/dist/manager/plan/lifecycle.js +14 -12
- package/dist/manager/plan/lifecycle.js.map +1 -1
- package/dist/manager/resident/agenda.d.ts +125 -0
- package/dist/manager/resident/agenda.d.ts.map +1 -0
- package/dist/manager/resident/agenda.js +551 -0
- package/dist/manager/resident/agenda.js.map +1 -0
- package/dist/manager/resident/delivery-window.d.ts +22 -0
- package/dist/manager/resident/delivery-window.d.ts.map +1 -0
- package/dist/manager/resident/delivery-window.js +78 -0
- package/dist/manager/resident/delivery-window.js.map +1 -0
- package/dist/manager/resident/host.d.ts +78 -0
- package/dist/manager/resident/host.d.ts.map +1 -0
- package/dist/manager/resident/host.js +252 -0
- package/dist/manager/resident/host.js.map +1 -0
- package/dist/manager/resident/initiative.d.ts +111 -0
- package/dist/manager/resident/initiative.d.ts.map +1 -0
- package/dist/manager/resident/initiative.js +121 -0
- package/dist/manager/resident/initiative.js.map +1 -0
- package/dist/manager/resident/learning.d.ts +483 -0
- package/dist/manager/resident/learning.d.ts.map +1 -0
- package/dist/manager/resident/learning.js +263 -0
- package/dist/manager/resident/learning.js.map +1 -0
- package/dist/manager/resident/loop.d.ts +31 -0
- package/dist/manager/resident/loop.d.ts.map +1 -0
- package/dist/manager/resident/loop.js +69 -0
- package/dist/manager/resident/loop.js.map +1 -0
- package/dist/manager/resident/outbox.d.ts +180 -0
- package/dist/manager/resident/outbox.d.ts.map +1 -0
- package/dist/manager/resident/outbox.js +214 -0
- package/dist/manager/resident/outbox.js.map +1 -0
- package/dist/manager/resident/proposal.d.ts +91 -0
- package/dist/manager/resident/proposal.d.ts.map +1 -0
- package/dist/manager/resident/proposal.js +75 -0
- package/dist/manager/resident/proposal.js.map +1 -0
- package/dist/manager/resident/store.d.ts +149 -0
- package/dist/manager/resident/store.d.ts.map +1 -0
- package/dist/manager/resident/store.js +175 -0
- package/dist/manager/resident/store.js.map +1 -0
- package/dist/prompt/contributions.d.ts +5 -2
- package/dist/prompt/contributions.d.ts.map +1 -1
- package/dist/prompt/contributions.js.map +1 -1
- package/dist/prompt/index.d.ts +2 -0
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +1 -0
- package/dist/prompt/index.js.map +1 -1
- package/dist/prompt/resident-step.d.ts +29 -0
- package/dist/prompt/resident-step.d.ts.map +1 -0
- package/dist/prompt/resident-step.js +74 -0
- package/dist/prompt/resident-step.js.map +1 -0
- package/dist/provider/capabilities.d.ts +1 -1
- package/dist/provider/capabilities.d.ts.map +1 -1
- package/dist/provider/capabilities.js +4 -1
- package/dist/provider/capabilities.js.map +1 -1
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +2 -0
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/idle-timeout.d.ts.map +1 -1
- package/dist/provider/idle-timeout.js +5 -0
- package/dist/provider/idle-timeout.js.map +1 -1
- package/dist/provider/retry.d.ts.map +1 -1
- package/dist/provider/retry.js +5 -0
- package/dist/provider/retry.js.map +1 -1
- package/dist/public-runtime.d.ts +10 -1
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +10 -1
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +16 -2
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/tool/execute.d.ts +18 -0
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +43 -6
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/runtime/query/events.d.ts +6 -1
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +21 -12
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +1 -1
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
- package/dist/runtime/query/prompt-cache.js +21 -42
- package/dist/runtime/query/prompt-cache.js.map +1 -1
- package/dist/scheduler/local.d.ts.map +1 -1
- package/dist/scheduler/local.js +2 -0
- package/dist/scheduler/local.js.map +1 -1
- package/dist/testing.d.ts +1 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +1 -0
- package/dist/testing.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +3 -0
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/types/agent/reactive.d.ts +4 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/scheduler.d.ts +3 -0
- package/dist/types/agent/scheduler.d.ts.map +1 -1
- package/dist/types/agent/task.d.ts +3 -0
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/provider/interface.d.ts +2 -0
- package/dist/types/provider/interface.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +3 -0
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/sandbox/index.d.ts +36 -3
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js.map +1 -1
- package/package.json +1 -1
- package/src/agents/ReactiveAgent.ts +1 -0
- package/src/bridge/sse/mapper.ts +2 -0
- package/src/manager/agent/lifecycle.ts +4 -0
- package/src/manager/plan/lifecycle.ts +15 -13
- package/src/manager/resident/agenda.ts +853 -0
- package/src/manager/resident/delivery-window.ts +93 -0
- package/src/manager/resident/host.ts +356 -0
- package/src/manager/resident/initiative.ts +195 -0
- package/src/manager/resident/learning.ts +369 -0
- package/src/manager/resident/loop.ts +101 -0
- package/src/manager/resident/outbox.ts +307 -0
- package/src/manager/resident/proposal.ts +105 -0
- package/src/manager/resident/store.ts +229 -0
- package/src/prompt/contributions.ts +5 -2
- package/src/prompt/index.ts +2 -0
- package/src/prompt/resident-step.ts +96 -0
- package/src/provider/capabilities.ts +8 -3
- package/src/provider/fallback.ts +6 -0
- package/src/provider/idle-timeout.ts +6 -0
- package/src/provider/retry.ts +6 -0
- package/src/public-runtime.ts +14 -0
- package/src/public-types.ts +67 -0
- package/src/registry/index.ts +1 -1
- package/src/registry/tool/execute.ts +56 -9
- package/src/runtime/query/events.ts +24 -14
- package/src/runtime/query/index.ts +1 -2
- package/src/runtime/query/prompt-cache.ts +24 -47
- package/src/scheduler/local.ts +2 -0
- package/src/testing.ts +2 -0
- package/src/tools/coordinator/index.ts +3 -0
- package/src/types/agent/reactive.ts +2 -0
- package/src/types/agent/scheduler.ts +4 -0
- package/src/types/agent/task.ts +4 -0
- package/src/types/provider/interface.ts +3 -0
- package/src/types/run/events.ts +3 -0
- package/src/types/sandbox/index.ts +42 -4
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { ResidentConflictError } from './store.js';
|
|
4
|
+
const time = z.number().int().nonnegative().safe().max(8_640_000_000_000_000);
|
|
5
|
+
const label = z.string().trim().min(1).max(256);
|
|
6
|
+
export const residentMessageInputSchema = z.object({
|
|
7
|
+
id: z.string().uuid(),
|
|
8
|
+
pursuitId: z.string().uuid(),
|
|
9
|
+
destination: label,
|
|
10
|
+
body: z
|
|
11
|
+
.string()
|
|
12
|
+
.min(1)
|
|
13
|
+
.max(8_000)
|
|
14
|
+
.refine((value) => value.trim().length > 0),
|
|
15
|
+
notBefore: time,
|
|
16
|
+
});
|
|
17
|
+
export const residentOutboxMessageSchema = residentMessageInputSchema
|
|
18
|
+
.extend({
|
|
19
|
+
tenantId: z.string().uuid(),
|
|
20
|
+
agentKey: z.string().min(1).max(200),
|
|
21
|
+
sourceClaimId: z.string().uuid().nullable(),
|
|
22
|
+
revision: z.number().int().positive().safe(),
|
|
23
|
+
attempts: z.number().int().nonnegative().safe(),
|
|
24
|
+
phase: z.enum(['pending', 'sending', 'acknowledged', 'cancelled']),
|
|
25
|
+
claimId: z.string().uuid().nullable(),
|
|
26
|
+
nextAttemptAt: time.nullable(),
|
|
27
|
+
receiptId: label.nullable(),
|
|
28
|
+
acknowledgedAt: time.nullable(),
|
|
29
|
+
lastReason: z.string().trim().min(1).max(1_000).nullable(),
|
|
30
|
+
})
|
|
31
|
+
.superRefine((message, context) => {
|
|
32
|
+
if ((message.phase === 'sending') !== (message.claimId !== null) ||
|
|
33
|
+
(message.phase === 'pending') !== (message.nextAttemptAt !== null) ||
|
|
34
|
+
(message.phase === 'acknowledged') !== (message.receiptId !== null) ||
|
|
35
|
+
(message.phase === 'acknowledged') !== (message.acknowledgedAt !== null) ||
|
|
36
|
+
(message.nextAttemptAt !== null && message.nextAttemptAt < message.notBefore) ||
|
|
37
|
+
(message.phase !== 'pending' && message.attempts === 0))
|
|
38
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: 'Invalid outbox lifecycle.' });
|
|
39
|
+
});
|
|
40
|
+
export const residentDeliveryOutcomeSchema = z.discriminatedUnion('kind', [
|
|
41
|
+
z.object({ kind: z.literal('acknowledged'), receiptId: label }),
|
|
42
|
+
z.object({
|
|
43
|
+
kind: z.literal('not-accepted'),
|
|
44
|
+
retryAt: time.nullable(),
|
|
45
|
+
reason: z.string().trim().min(1).max(1_000),
|
|
46
|
+
}),
|
|
47
|
+
]);
|
|
48
|
+
/** Internal pure enqueue used in the same revision transaction as pursuit settlement. */
|
|
49
|
+
export function appendResidentMessage(state, input, sourceClaimId = null) {
|
|
50
|
+
const checked = residentMessageInputSchema.parse(input);
|
|
51
|
+
if (!state.pursuits.some((p) => p.id === checked.pursuitId))
|
|
52
|
+
throw new Error('Outbox message references an unknown pursuit.');
|
|
53
|
+
const messages = state.outbox ?? [];
|
|
54
|
+
const existing = messages.find((message) => message.id === checked.id);
|
|
55
|
+
if (existing) {
|
|
56
|
+
if (existing.pursuitId !== checked.pursuitId ||
|
|
57
|
+
existing.destination !== checked.destination ||
|
|
58
|
+
existing.body !== checked.body ||
|
|
59
|
+
existing.notBefore !== checked.notBefore ||
|
|
60
|
+
existing.sourceClaimId !== sourceClaimId)
|
|
61
|
+
throw new Error('Outbox message ID already names a different immutable intent.');
|
|
62
|
+
return messages;
|
|
63
|
+
}
|
|
64
|
+
if (messages.length >= 128)
|
|
65
|
+
throw new Error('Resident outbox capacity reached (128 intents).');
|
|
66
|
+
return [
|
|
67
|
+
...messages,
|
|
68
|
+
Object.freeze(residentOutboxMessageSchema.parse({
|
|
69
|
+
...checked,
|
|
70
|
+
tenantId: state.tenantId,
|
|
71
|
+
agentKey: state.agentKey,
|
|
72
|
+
sourceClaimId,
|
|
73
|
+
revision: 1,
|
|
74
|
+
attempts: 0,
|
|
75
|
+
phase: 'pending',
|
|
76
|
+
claimId: null,
|
|
77
|
+
nextAttemptAt: checked.notBefore,
|
|
78
|
+
receiptId: null,
|
|
79
|
+
acknowledgedAt: null,
|
|
80
|
+
lastReason: null,
|
|
81
|
+
})),
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
/** Internal exact-message transition; agenda storage owns exclusive admission. */
|
|
85
|
+
export function claimResidentOutboxMessage(message, now) {
|
|
86
|
+
time.parse(now);
|
|
87
|
+
if (message.phase !== 'pending' || message.nextAttemptAt === null || message.nextAttemptAt > now)
|
|
88
|
+
throw new ResidentConflictError();
|
|
89
|
+
return Object.freeze(residentOutboxMessageSchema.parse({
|
|
90
|
+
...message,
|
|
91
|
+
revision: message.revision + 1,
|
|
92
|
+
attempts: message.attempts + 1,
|
|
93
|
+
phase: 'sending',
|
|
94
|
+
claimId: randomUUID(),
|
|
95
|
+
nextAttemptAt: null,
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
/** Internal settlement; unknown failures deliberately have no transition. */
|
|
99
|
+
export function settleResidentOutboxMessage(message, outcome, now) {
|
|
100
|
+
time.parse(now);
|
|
101
|
+
const checked = residentDeliveryOutcomeSchema.parse(outcome);
|
|
102
|
+
if (message.phase !== 'sending' || message.claimId === null)
|
|
103
|
+
throw new ResidentConflictError();
|
|
104
|
+
if (checked.kind === 'not-accepted' && checked.retryAt !== null && checked.retryAt <= now)
|
|
105
|
+
throw new TypeError('A delivery retry must be scheduled in the future.');
|
|
106
|
+
return Object.freeze(residentOutboxMessageSchema.parse({
|
|
107
|
+
...message,
|
|
108
|
+
revision: message.revision + 1,
|
|
109
|
+
claimId: null,
|
|
110
|
+
...(checked.kind === 'acknowledged'
|
|
111
|
+
? { phase: 'acknowledged', receiptId: checked.receiptId, acknowledgedAt: now }
|
|
112
|
+
: {
|
|
113
|
+
phase: checked.retryAt === null ? 'cancelled' : 'pending',
|
|
114
|
+
nextAttemptAt: checked.retryAt,
|
|
115
|
+
lastReason: checked.reason,
|
|
116
|
+
}),
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
function admission(gate, message, now) {
|
|
120
|
+
const result = gate(message, now);
|
|
121
|
+
if (result.allow === true)
|
|
122
|
+
return result;
|
|
123
|
+
if (result.allow !== false ||
|
|
124
|
+
typeof result.reason !== 'string' ||
|
|
125
|
+
!result.reason.trim() ||
|
|
126
|
+
result.reason.trim().length > 1_000)
|
|
127
|
+
throw new TypeError('Invalid resident delivery gate result.');
|
|
128
|
+
if (result.nextCheckAt !== null) {
|
|
129
|
+
time.parse(result.nextCheckAt);
|
|
130
|
+
if (result.nextCheckAt <= now)
|
|
131
|
+
throw new TypeError('Delivery gate must defer into the future.');
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* @experimental Persist one send claim before calling a host-owned transport.
|
|
137
|
+
* Throws, malformed outcomes and cancellation keep the claim unresolved. Stop
|
|
138
|
+
* old executors and inspect effects before explicit settleMessage reconciliation.
|
|
139
|
+
*/
|
|
140
|
+
export async function deliverResidentMessage(store, transport, options) {
|
|
141
|
+
const { signal, gate } = options;
|
|
142
|
+
const clock = options.now ?? Date.now;
|
|
143
|
+
const now = () => time.parse(clock());
|
|
144
|
+
signal.throwIfAborted();
|
|
145
|
+
const state = await store.read();
|
|
146
|
+
signal.throwIfAborted();
|
|
147
|
+
if (!state)
|
|
148
|
+
throw new Error('Create the resident agenda before delivering messages.');
|
|
149
|
+
const idle = (reason, nextCheckAt = null) => ({ status: 'idle', reason, nextCheckAt });
|
|
150
|
+
if (state.paused)
|
|
151
|
+
return idle('paused');
|
|
152
|
+
const messages = state.outbox ?? [];
|
|
153
|
+
if (messages.some((message) => message.phase === 'sending'))
|
|
154
|
+
return idle('unresolved');
|
|
155
|
+
const pending = messages.filter((message) => message.phase === 'pending');
|
|
156
|
+
if (!pending.length)
|
|
157
|
+
return idle('empty');
|
|
158
|
+
let nextCheckAt = null;
|
|
159
|
+
let gated = false;
|
|
160
|
+
const at = now();
|
|
161
|
+
for (const message of pending.sort((a, b) => (a.nextAttemptAt ?? 0) - (b.nextAttemptAt ?? 0) || a.id.localeCompare(b.id))) {
|
|
162
|
+
if (message.nextAttemptAt !== null && message.nextAttemptAt > at) {
|
|
163
|
+
nextCheckAt = Math.min(nextCheckAt ?? Number.POSITIVE_INFINITY, message.nextAttemptAt);
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
const permission = admission(gate, message, at);
|
|
167
|
+
signal.throwIfAborted();
|
|
168
|
+
if (!permission.allow) {
|
|
169
|
+
gated = true;
|
|
170
|
+
if (permission.nextCheckAt !== null)
|
|
171
|
+
nextCheckAt = Math.min(nextCheckAt ?? Number.POSITIVE_INFINITY, permission.nextCheckAt);
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
let claimed;
|
|
175
|
+
try {
|
|
176
|
+
claimed = await store.claimMessage(state, message.id, now());
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (error instanceof ResidentConflictError)
|
|
180
|
+
return idle('contended');
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
signal.throwIfAborted();
|
|
184
|
+
const fresh = await store.read();
|
|
185
|
+
signal.throwIfAborted();
|
|
186
|
+
const current = fresh?.outbox?.find((item) => item.id === claimed.id);
|
|
187
|
+
if (!current || current.revision !== claimed.revision || current.claimId !== claimed.claimId)
|
|
188
|
+
return idle('contended');
|
|
189
|
+
// A pause or closing window during admission must not start the transport.
|
|
190
|
+
const checkedAt = now();
|
|
191
|
+
const permissionNow = fresh?.paused
|
|
192
|
+
? {
|
|
193
|
+
allow: false,
|
|
194
|
+
nextCheckAt: checkedAt + 1,
|
|
195
|
+
reason: 'Resident agenda paused before send.',
|
|
196
|
+
}
|
|
197
|
+
: admission(gate, claimed, checkedAt);
|
|
198
|
+
if (!permissionNow.allow) {
|
|
199
|
+
// Transport has not been entered: scheduling another check has no remote effect.
|
|
200
|
+
await store.settleMessage(claimed, {
|
|
201
|
+
kind: 'not-accepted',
|
|
202
|
+
retryAt: permissionNow.nextCheckAt ?? checkedAt + 1,
|
|
203
|
+
reason: permissionNow.reason,
|
|
204
|
+
}, checkedAt);
|
|
205
|
+
return idle(fresh?.paused ? 'paused' : 'window', permissionNow.nextCheckAt);
|
|
206
|
+
}
|
|
207
|
+
signal.throwIfAborted();
|
|
208
|
+
const outcome = await transport(claimed, signal);
|
|
209
|
+
signal.throwIfAborted();
|
|
210
|
+
return { status: 'settled', message: await store.settleMessage(claimed, outcome, now()) };
|
|
211
|
+
}
|
|
212
|
+
return idle(gated ? 'window' : 'not-due', nextCheckAt);
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=outbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../../src/manager/resident/outbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ResidentAgendaState } from './agenda.js';
|
|
3
|
+
export declare const residentProposalSchema: z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
parentId: z.ZodString;
|
|
6
|
+
parentRevision: z.ZodNumber;
|
|
7
|
+
domain: z.ZodEffects<z.ZodString, string, string>;
|
|
8
|
+
objective: z.ZodString;
|
|
9
|
+
reason: z.ZodString;
|
|
10
|
+
evidenceKey: z.ZodString;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
parentId: string;
|
|
13
|
+
id: string;
|
|
14
|
+
reason: string;
|
|
15
|
+
domain: string;
|
|
16
|
+
objective: string;
|
|
17
|
+
evidenceKey: string;
|
|
18
|
+
parentRevision: number;
|
|
19
|
+
}, {
|
|
20
|
+
parentId: string;
|
|
21
|
+
id: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
domain: string;
|
|
24
|
+
objective: string;
|
|
25
|
+
evidenceKey: string;
|
|
26
|
+
parentRevision: number;
|
|
27
|
+
}>;
|
|
28
|
+
export declare const residentProposalLimitsSchema: z.ZodObject<{
|
|
29
|
+
domains: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
|
|
30
|
+
maxChildrenPerParent: z.ZodNumber;
|
|
31
|
+
maxDepth: z.ZodNumber;
|
|
32
|
+
}, "strip", z.ZodTypeAny, {
|
|
33
|
+
maxDepth: number;
|
|
34
|
+
domains: string[];
|
|
35
|
+
maxChildrenPerParent: number;
|
|
36
|
+
}, {
|
|
37
|
+
maxDepth: number;
|
|
38
|
+
domains: string[];
|
|
39
|
+
maxChildrenPerParent: number;
|
|
40
|
+
}>;
|
|
41
|
+
/** @experimental An inert subgoal proposal; creating it grants no execution authority. */
|
|
42
|
+
export interface ResidentProposal {
|
|
43
|
+
readonly id: string;
|
|
44
|
+
readonly parentId: string;
|
|
45
|
+
readonly parentRevision: number;
|
|
46
|
+
readonly domain: string;
|
|
47
|
+
readonly objective: string;
|
|
48
|
+
readonly reason: string;
|
|
49
|
+
readonly evidenceKey: string;
|
|
50
|
+
}
|
|
51
|
+
/** @experimental Host-approved routing domains and finite subgoal admission bounds. */
|
|
52
|
+
export interface ResidentProposalLimits {
|
|
53
|
+
readonly domains: readonly string[];
|
|
54
|
+
readonly maxChildrenPerParent: number;
|
|
55
|
+
readonly maxDepth: number;
|
|
56
|
+
}
|
|
57
|
+
/** Persisted provenance shared with the agenda's schema validation. */
|
|
58
|
+
export declare const residentProposalOriginSchema: z.ZodObject<{
|
|
59
|
+
proposalId: z.ZodString;
|
|
60
|
+
parentId: z.ZodString;
|
|
61
|
+
parentRevision: z.ZodNumber;
|
|
62
|
+
domain: z.ZodEffects<z.ZodString, string, string>;
|
|
63
|
+
reason: z.ZodString;
|
|
64
|
+
evidenceKey: z.ZodString;
|
|
65
|
+
depth: z.ZodNumber;
|
|
66
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
|
+
parentId: string;
|
|
68
|
+
reason: string;
|
|
69
|
+
depth: number;
|
|
70
|
+
domain: string;
|
|
71
|
+
evidenceKey: string;
|
|
72
|
+
parentRevision: number;
|
|
73
|
+
proposalId: string;
|
|
74
|
+
}, {
|
|
75
|
+
parentId: string;
|
|
76
|
+
reason: string;
|
|
77
|
+
depth: number;
|
|
78
|
+
domain: string;
|
|
79
|
+
evidenceKey: string;
|
|
80
|
+
parentRevision: number;
|
|
81
|
+
proposalId: string;
|
|
82
|
+
}>;
|
|
83
|
+
/** @experimental Host-admitted ancestry and evidence for a resident subgoal. */
|
|
84
|
+
export type ResidentProposalOrigin = Readonly<z.infer<typeof residentProposalOriginSchema>>;
|
|
85
|
+
/**
|
|
86
|
+
* @experimental Pure validation against one agenda snapshot. The host must
|
|
87
|
+
* atomically bind this snapshot to admission. Domains are routing metadata;
|
|
88
|
+
* this does not prove an objective fits its domain or authorize any tools.
|
|
89
|
+
*/
|
|
90
|
+
export declare function validateResidentProposal(agenda: ResidentAgendaState, input: ResidentProposal, limits: ResidentProposalLimits): ResidentProposalOrigin;
|
|
91
|
+
//# sourceMappingURL=proposal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAYtD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EAQjC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;EAIvC,CAAA;AAEF,0FAA0F;AAC1F,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC5B;AAED,uFAAuF;AACvF,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,uEAAuE;AACvE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;EAQvC,CAAA;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAA;AAE3F;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,sBAAsB,GAC5B,sBAAsB,CAkCxB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const identifier = z.string().uuid();
|
|
3
|
+
const revision = z.number().int().positive().safe();
|
|
4
|
+
const domain = z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.max(120)
|
|
8
|
+
.refine((value) => value.trim().length > 0, 'A proposal domain must contain text.');
|
|
9
|
+
const reason = z.string().trim().min(1).max(1_000);
|
|
10
|
+
const evidenceKey = z.string().trim().min(1).max(256);
|
|
11
|
+
export const residentProposalSchema = z.object({
|
|
12
|
+
id: identifier,
|
|
13
|
+
parentId: identifier,
|
|
14
|
+
parentRevision: revision,
|
|
15
|
+
domain,
|
|
16
|
+
objective: z.string().trim().min(1).max(8_000),
|
|
17
|
+
reason,
|
|
18
|
+
evidenceKey,
|
|
19
|
+
});
|
|
20
|
+
export const residentProposalLimitsSchema = z.object({
|
|
21
|
+
domains: z.array(domain).min(1),
|
|
22
|
+
maxChildrenPerParent: z.number().int().min(1).max(8),
|
|
23
|
+
maxDepth: z.number().int().min(1).max(4),
|
|
24
|
+
});
|
|
25
|
+
/** Persisted provenance shared with the agenda's schema validation. */
|
|
26
|
+
export const residentProposalOriginSchema = z.object({
|
|
27
|
+
proposalId: identifier,
|
|
28
|
+
parentId: identifier,
|
|
29
|
+
parentRevision: revision,
|
|
30
|
+
domain,
|
|
31
|
+
reason,
|
|
32
|
+
evidenceKey,
|
|
33
|
+
depth: z.number().int().min(1).max(4),
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* @experimental Pure validation against one agenda snapshot. The host must
|
|
37
|
+
* atomically bind this snapshot to admission. Domains are routing metadata;
|
|
38
|
+
* this does not prove an objective fits its domain or authorize any tools.
|
|
39
|
+
*/
|
|
40
|
+
export function validateResidentProposal(agenda, input, limits) {
|
|
41
|
+
const proposal = residentProposalSchema.parse(input);
|
|
42
|
+
const policy = residentProposalLimitsSchema.parse(limits);
|
|
43
|
+
if (agenda.paused)
|
|
44
|
+
throw new Error('A paused agenda cannot admit resident proposals.');
|
|
45
|
+
if (agenda.pursuits.length >= 32)
|
|
46
|
+
throw new Error('Resident agenda pursuit bound reached.');
|
|
47
|
+
if (agenda.pursuits.some((pursuit) => pursuit.origin?.proposalId === proposal.id))
|
|
48
|
+
throw new Error('Resident proposal has already been admitted.');
|
|
49
|
+
const parent = agenda.pursuits.find((pursuit) => pursuit.id === proposal.parentId);
|
|
50
|
+
if (!parent)
|
|
51
|
+
throw new Error('Unknown resident proposal parent.');
|
|
52
|
+
if (parent.state.revision !== proposal.parentRevision)
|
|
53
|
+
throw new Error('Resident proposal parent revision is stale.');
|
|
54
|
+
if (parent.state.phase !== 'waiting' && parent.state.phase !== 'complete')
|
|
55
|
+
throw new Error('Resident proposal parent must be waiting or complete.');
|
|
56
|
+
if (!policy.domains.includes(proposal.domain))
|
|
57
|
+
throw new Error('Resident proposal domain is not host-approved.');
|
|
58
|
+
if (agenda.pursuits.filter((pursuit) => pursuit.origin?.parentId === parent.id).length +
|
|
59
|
+
(parent.retiredChildren ?? 0) >=
|
|
60
|
+
policy.maxChildrenPerParent)
|
|
61
|
+
throw new Error('Resident proposal parent child bound reached.');
|
|
62
|
+
const depth = (parent.origin?.depth ?? 0) + 1;
|
|
63
|
+
if (depth > policy.maxDepth)
|
|
64
|
+
throw new Error('Resident proposal depth bound reached.');
|
|
65
|
+
return Object.freeze(residentProposalOriginSchema.parse({
|
|
66
|
+
proposalId: proposal.id,
|
|
67
|
+
parentId: proposal.parentId,
|
|
68
|
+
parentRevision: proposal.parentRevision,
|
|
69
|
+
domain: proposal.domain,
|
|
70
|
+
reason: proposal.reason,
|
|
71
|
+
evidenceKey: proposal.evidenceKey,
|
|
72
|
+
depth,
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=proposal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal.js","sourceRoot":"","sources":["../../../src/manager/resident/proposal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { TenantId } from '../../types/ids/index.js';
|
|
3
|
+
export declare const residentDecisionSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
4
|
+
kind: z.ZodLiteral<"wait">;
|
|
5
|
+
summary: z.ZodString;
|
|
6
|
+
wakeAt: z.ZodNullable<z.ZodNumber>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
kind: "wait";
|
|
9
|
+
summary: string;
|
|
10
|
+
wakeAt: number | null;
|
|
11
|
+
}, {
|
|
12
|
+
kind: "wait";
|
|
13
|
+
summary: string;
|
|
14
|
+
wakeAt: number | null;
|
|
15
|
+
}>, z.ZodObject<{
|
|
16
|
+
kind: z.ZodLiteral<"complete">;
|
|
17
|
+
summary: z.ZodString;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
kind: "complete";
|
|
20
|
+
summary: string;
|
|
21
|
+
}, {
|
|
22
|
+
kind: "complete";
|
|
23
|
+
summary: string;
|
|
24
|
+
}>, z.ZodObject<{
|
|
25
|
+
kind: z.ZodLiteral<"blocked">;
|
|
26
|
+
summary: z.ZodString;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
kind: "blocked";
|
|
29
|
+
summary: string;
|
|
30
|
+
}, {
|
|
31
|
+
kind: "blocked";
|
|
32
|
+
summary: string;
|
|
33
|
+
}>]>;
|
|
34
|
+
/** @experimental One bounded step's durable disposition; silence is not completion. */
|
|
35
|
+
export type ResidentDecision = z.infer<typeof residentDecisionSchema>;
|
|
36
|
+
export declare const residentStateSchema: z.ZodEffects<z.ZodObject<{
|
|
37
|
+
tenantId: z.ZodString;
|
|
38
|
+
agentKey: z.ZodString;
|
|
39
|
+
pursuitId: z.ZodOptional<z.ZodString>;
|
|
40
|
+
identity: z.ZodString;
|
|
41
|
+
objective: z.ZodString;
|
|
42
|
+
revision: z.ZodNumber;
|
|
43
|
+
stepsAdmitted: z.ZodNumber;
|
|
44
|
+
phase: z.ZodEnum<["waiting", "running", "complete", "blocked"]>;
|
|
45
|
+
wakeAt: z.ZodNullable<z.ZodNumber>;
|
|
46
|
+
reason: z.ZodString;
|
|
47
|
+
summary: z.ZodNullable<z.ZodString>;
|
|
48
|
+
claimId: z.ZodNullable<z.ZodString>;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
summary: string | null;
|
|
51
|
+
identity: string;
|
|
52
|
+
reason: string;
|
|
53
|
+
revision: number;
|
|
54
|
+
tenantId: string;
|
|
55
|
+
objective: string;
|
|
56
|
+
phase: "running" | "complete" | "blocked" | "waiting";
|
|
57
|
+
wakeAt: number | null;
|
|
58
|
+
agentKey: string;
|
|
59
|
+
stepsAdmitted: number;
|
|
60
|
+
claimId: string | null;
|
|
61
|
+
pursuitId?: string | undefined;
|
|
62
|
+
}, {
|
|
63
|
+
summary: string | null;
|
|
64
|
+
identity: string;
|
|
65
|
+
reason: string;
|
|
66
|
+
revision: number;
|
|
67
|
+
tenantId: string;
|
|
68
|
+
objective: string;
|
|
69
|
+
phase: "running" | "complete" | "blocked" | "waiting";
|
|
70
|
+
wakeAt: number | null;
|
|
71
|
+
agentKey: string;
|
|
72
|
+
stepsAdmitted: number;
|
|
73
|
+
claimId: string | null;
|
|
74
|
+
pursuitId?: string | undefined;
|
|
75
|
+
}>, {
|
|
76
|
+
summary: string | null;
|
|
77
|
+
identity: string;
|
|
78
|
+
reason: string;
|
|
79
|
+
revision: number;
|
|
80
|
+
tenantId: string;
|
|
81
|
+
objective: string;
|
|
82
|
+
phase: "running" | "complete" | "blocked" | "waiting";
|
|
83
|
+
wakeAt: number | null;
|
|
84
|
+
agentKey: string;
|
|
85
|
+
stepsAdmitted: number;
|
|
86
|
+
claimId: string | null;
|
|
87
|
+
pursuitId?: string | undefined;
|
|
88
|
+
}, {
|
|
89
|
+
summary: string | null;
|
|
90
|
+
identity: string;
|
|
91
|
+
reason: string;
|
|
92
|
+
revision: number;
|
|
93
|
+
tenantId: string;
|
|
94
|
+
objective: string;
|
|
95
|
+
phase: "running" | "complete" | "blocked" | "waiting";
|
|
96
|
+
wakeAt: number | null;
|
|
97
|
+
agentKey: string;
|
|
98
|
+
stepsAdmitted: number;
|
|
99
|
+
claimId: string | null;
|
|
100
|
+
pursuitId?: string | undefined;
|
|
101
|
+
}>;
|
|
102
|
+
/** @experimental Persisted identity and one pursuit, independent of a conversation. */
|
|
103
|
+
export type ResidentState = Readonly<z.infer<typeof residentStateSchema>>;
|
|
104
|
+
/** Bounded addressing for local resident state. Stored scope is still validated. */
|
|
105
|
+
export declare function residentKeySegment(key: string): string;
|
|
106
|
+
/** @experimental Minimal atomic contract needed to execute an existing pursuit. */
|
|
107
|
+
export type ResidentExecutionStore = Pick<ResidentStore, 'read' | 'claim' | 'settle'>;
|
|
108
|
+
/** @experimental Backends must atomically compare revisions and publish admission before work. */
|
|
109
|
+
export interface ResidentStore {
|
|
110
|
+
read(): Promise<ResidentState | null>;
|
|
111
|
+
create(identity: string, objective: string): Promise<ResidentState>;
|
|
112
|
+
claim(expected: ResidentState, now: number): Promise<ResidentState>;
|
|
113
|
+
settle(expected: ResidentState, decision: ResidentDecision, now: number): Promise<ResidentState>;
|
|
114
|
+
wake(expected: ResidentState, reason: string, now: number): Promise<ResidentState>;
|
|
115
|
+
}
|
|
116
|
+
/** A competing owner advanced this resident's immutable revision. */
|
|
117
|
+
export declare class ResidentConflictError extends Error {
|
|
118
|
+
constructor();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* @experimental Local-filesystem state for one tenant/agent key and one pursuit.
|
|
122
|
+
* A running claim never expires automatically: a crashed step may have effects.
|
|
123
|
+
* Uses exclusive immutable revision publication, not a read/rename lock.
|
|
124
|
+
*/
|
|
125
|
+
export declare class DiskResidentStore implements ResidentStore {
|
|
126
|
+
private readonly records;
|
|
127
|
+
private readonly location;
|
|
128
|
+
private readonly tenantId;
|
|
129
|
+
private readonly agentKey;
|
|
130
|
+
constructor(root: string, scope: {
|
|
131
|
+
tenantId: TenantId;
|
|
132
|
+
agentKey: string;
|
|
133
|
+
});
|
|
134
|
+
private checked;
|
|
135
|
+
read(): Promise<ResidentState | null>;
|
|
136
|
+
create(identity: string, objective: string): Promise<ResidentState>;
|
|
137
|
+
private change;
|
|
138
|
+
/** Persist admission before invoking a model, tool or developer callback. */
|
|
139
|
+
claim(expected: ResidentState, now: number): Promise<ResidentState>;
|
|
140
|
+
/** Only the exact admitted revision may settle; late owners cannot overwrite recovery. */
|
|
141
|
+
settle(expected: ResidentState, decision: ResidentDecision, now: number): Promise<ResidentState>;
|
|
142
|
+
/** Host-supplied new evidence can wake a waiting pursuit; terminal work stays terminal. */
|
|
143
|
+
wake(expected: ResidentState, reason: string, now: number): Promise<ResidentState>;
|
|
144
|
+
}
|
|
145
|
+
/** Internal transitions shared by single-pursuit and whole-agent admission. */
|
|
146
|
+
export declare function claimResidentState(state: ResidentState, now: number): ResidentState;
|
|
147
|
+
export declare function settleResidentState(state: ResidentState, decision: ResidentDecision, now: number): ResidentState;
|
|
148
|
+
export declare function wakeResidentState(state: ResidentState, reason: string, now: number): ResidentState;
|
|
149
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/store.ts"],"names":[],"mappings":"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"}
|