@inventarch/agent-system 0.0.0-stage → 1.1.0
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/LANGUAGE.md +56 -0
- package/LICENSE +202 -0
- package/NOTICE +4 -0
- package/README.md +2 -2
- package/SPEC.md +3 -0
- package/dist/action.d.ts +12 -0
- package/dist/action.d.ts.map +1 -0
- package/dist/action.js +148 -0
- package/dist/action.js.map +1 -0
- package/dist/contracts.d.ts +38 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +169 -0
- package/dist/contracts.js.map +1 -0
- package/dist/engine.d.ts +47 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1134 -0
- package/dist/engine.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/native-selection.json +205 -0
- package/dist/native.ia.tgz +0 -0
- package/dist/system-package.json +253 -0
- package/dist/types.d.ts +251 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +65 -3
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { copy, digest } from '@inventarch/session-system';
|
|
2
|
+
import { check, validateShape } from './action.js';
|
|
3
|
+
export function boundedLimits(base, bounds, now) {
|
|
4
|
+
const result = { ...base };
|
|
5
|
+
for (const [key, value] of Object.entries(bounds ?? {})) {
|
|
6
|
+
check(Number.isSafeInteger(value) && value >= (key === 'durationMs' ? 1 : 0), 'IA-ENGINE-LIMIT-INVALID', 'Invalid compiled limit');
|
|
7
|
+
if (key === 'durationMs')
|
|
8
|
+
result.deadline = Math.min(result.deadline, now + value);
|
|
9
|
+
else {
|
|
10
|
+
check(Object.hasOwn(base, key) && key !== 'deadline', 'IA-ENGINE-LIMIT-INVALID', 'Unknown compiled limit');
|
|
11
|
+
result[key] = Math.min(result[key], value);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
export function narrowGrant(current, ceiling) {
|
|
17
|
+
const result = copy(current);
|
|
18
|
+
if (!ceiling)
|
|
19
|
+
return result;
|
|
20
|
+
for (const key of ['profiles', 'operations', 'effects', 'sources', 'models']) {
|
|
21
|
+
// All five fields are sets; the separate assignments preserve their literal element types.
|
|
22
|
+
const admitted = new Set(ceiling[key]);
|
|
23
|
+
result[key] = current[key].filter((value) => admitted.has(value));
|
|
24
|
+
}
|
|
25
|
+
for (const key of Object.keys(result.limits))
|
|
26
|
+
result.limits[key] = Math.min(result.limits[key], ceiling.limits[key]);
|
|
27
|
+
if (ceiling.destinations)
|
|
28
|
+
result.destinations = (current.destinations ?? []).filter((v) => ceiling.destinations.some((d) => digest(d) === digest(v)));
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
export function taskContract(profile, task, artifact) {
|
|
32
|
+
const inputs = profile.contract?.inputContracts ?? [];
|
|
33
|
+
check(inputs.every((c) => validateShape(c.schema, task)), 'IA-ENGINE-TASK-INVALID', 'Task does not satisfy every installed mandate/input contract');
|
|
34
|
+
check(profile.completion !== 'artifact' || (artifact && profile.operations.includes(artifact.operation)), 'IA-ENGINE-TASK-INVALID', 'Artifact tasks require an exact operation and destination');
|
|
35
|
+
return {
|
|
36
|
+
version: 1,
|
|
37
|
+
objective: copy(task),
|
|
38
|
+
inputs: copy(inputs),
|
|
39
|
+
outcomes: [...profile.outcomes],
|
|
40
|
+
completion: profile.completion,
|
|
41
|
+
evaluator: 'ia.completion.v1',
|
|
42
|
+
escalation: 'persist-required-wait',
|
|
43
|
+
artifact: artifact ? copy(artifact) : null,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function causes(state, run, actionId, modelAttemptId) {
|
|
47
|
+
return {
|
|
48
|
+
actionId,
|
|
49
|
+
modelAttemptId,
|
|
50
|
+
questions: Object.values(state.questions)
|
|
51
|
+
.filter((q) => q.runId === run.id && q.status === 'answered')
|
|
52
|
+
.map((q) => q.id),
|
|
53
|
+
proposals: Object.values(state.proposals)
|
|
54
|
+
.filter((p) => p.runId === run.id)
|
|
55
|
+
.map((p) => p.id),
|
|
56
|
+
decisions: Object.values(state.decisions)
|
|
57
|
+
.filter((d) => d.runId === run.id)
|
|
58
|
+
.map((d) => d.id),
|
|
59
|
+
receipts: state.receipts
|
|
60
|
+
.filter((r) => r.runId === run.id)
|
|
61
|
+
.slice(-32)
|
|
62
|
+
.map((r) => r.id),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function operationAllowed(operation, profile, grant) {
|
|
66
|
+
check(operation &&
|
|
67
|
+
profile.operations.includes(operation.id) &&
|
|
68
|
+
grant.operations.includes(operation.id) &&
|
|
69
|
+
operation.effects.every((e) => grant.effects.includes(e) && (!profile.contract || profile.contract.effects.includes(e))), 'IA-ENGINE-OPERATION-DENIED', 'Operation/binding/effect exceeds the effective authority');
|
|
70
|
+
}
|
|
71
|
+
function effectInput(input) {
|
|
72
|
+
check(input !== null &&
|
|
73
|
+
typeof input === 'object' &&
|
|
74
|
+
!Array.isArray(input) &&
|
|
75
|
+
Object.hasOwn(input, 'candidate') &&
|
|
76
|
+
Object.hasOwn(input, 'destination'), 'IA-ENGINE-REVIEW-INVALID', 'Governed effects require exact candidate and destination inputs');
|
|
77
|
+
return { candidate: input['candidate'], destination: input['destination'] };
|
|
78
|
+
}
|
|
79
|
+
export function offerReview(state, run, profile, grant, manifest, action, now) {
|
|
80
|
+
if (!action.review)
|
|
81
|
+
return undefined;
|
|
82
|
+
check(action.proposal !== undefined, 'IA-ENGINE-REVIEW-INVALID', 'Review requires a candidate');
|
|
83
|
+
const request = action.review, operation = manifest.operations[request.operation];
|
|
84
|
+
operationAllowed(operation, profile, grant);
|
|
85
|
+
check(validateShape(operation.input, request.input), 'IA-ENGINE-INPUT-INVALID', 'Reviewed input failed its installed contract');
|
|
86
|
+
const input = effectInput(request.input), effect = operation.effects.filter((e) => e !== 'read');
|
|
87
|
+
check(effect.length === 1 && digest(input.candidate) === digest(action.proposal), 'IA-ENGINE-REVIEW-INVALID', 'Review input must contain the offered candidate and one effect');
|
|
88
|
+
check(grant.destinations?.some((d) => digest(d) === digest(input.destination)), 'IA-ENGINE-AUTHORITY-DENIED', 'Destination is not granted');
|
|
89
|
+
const receipt = state.receipts.find((r) => r.id === request.validationReceipt && r.runId === run.id && r.error === null && r.effect === 'none');
|
|
90
|
+
const validation = receipt?.output;
|
|
91
|
+
check(receipt &&
|
|
92
|
+
manifest.operations[receipt.target]?.purpose === 'candidate-validation' &&
|
|
93
|
+
manifest.operations[receipt.target]?.effects.every((e) => e === 'read') &&
|
|
94
|
+
validation?.allowed === true &&
|
|
95
|
+
validation.candidateDigest === digest(action.proposal) &&
|
|
96
|
+
typeof validation.artifactDigest === 'string' &&
|
|
97
|
+
/^[a-f0-9]{64}$/.test(validation.artifactDigest), 'IA-ENGINE-CANDIDATE-UNVERIFIED', 'An exact successful candidate-validation receipt is required');
|
|
98
|
+
const expiry = Math.min(state.limits.deadline, run.limits?.deadline ?? Infinity, grant.expiresAt);
|
|
99
|
+
check(expiry > now, 'IA-ENGINE-REVIEW-INVALID', 'Review deadline expired');
|
|
100
|
+
const policy = profile.contract?.review;
|
|
101
|
+
check(!policy || policy.reviewer !== state.principal, 'IA-ENGINE-REVIEW-INVALID', 'The writer cannot approve its own changes');
|
|
102
|
+
return {
|
|
103
|
+
reviewer: policy?.reviewer ?? state.principal,
|
|
104
|
+
rule: policy?.rule ?? 'operator-exact-candidate-v1',
|
|
105
|
+
...(policy ? { authority: { mandate: policy.mandate, policyRevision: policy.policyRevision } } : {}),
|
|
106
|
+
expiresAt: expiry,
|
|
107
|
+
operation: operation.id,
|
|
108
|
+
bindingDigest: operation.digest,
|
|
109
|
+
inputDigest: digest(request.input),
|
|
110
|
+
candidateDigest: digest(action.proposal),
|
|
111
|
+
artifactDigest: validation.artifactDigest,
|
|
112
|
+
destination: copy(input.destination),
|
|
113
|
+
effect: effect[0],
|
|
114
|
+
validationReceipt: receipt.id,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export function admittedReview(state, run, operation, action, grant, now, preparing) {
|
|
118
|
+
if (operation.effects.every((e) => e === 'read')) {
|
|
119
|
+
check(!action.review, 'IA-ENGINE-REVIEW-INVALID', 'Read operations do not consume effect approvals');
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
const ref = action.review, proposal = ref && state.proposals[ref.proposalId], decision = ref && state.decisions[ref.decisionId], review = proposal?.review;
|
|
123
|
+
check(ref &&
|
|
124
|
+
proposal &&
|
|
125
|
+
review &&
|
|
126
|
+
decision &&
|
|
127
|
+
proposal.runId === run.id &&
|
|
128
|
+
proposal.status === 'accepted' &&
|
|
129
|
+
proposal.decisionId === decision.id &&
|
|
130
|
+
proposal.revision === ref.revision &&
|
|
131
|
+
proposal.digest === ref.digest &&
|
|
132
|
+
decision.proposalDigest === proposal.digest &&
|
|
133
|
+
decision.subject === proposal.id &&
|
|
134
|
+
decision.revision === proposal.revision &&
|
|
135
|
+
decision.choice === 'accepted' &&
|
|
136
|
+
decision.actor === review.reviewer &&
|
|
137
|
+
digest(decision.review) === digest(review), 'IA-ENGINE-REVIEW-INVALID', 'Exact authenticated review is unavailable or stale');
|
|
138
|
+
const input = effectInput(action.input);
|
|
139
|
+
check(review.expiresAt > now &&
|
|
140
|
+
review.operation === operation.id &&
|
|
141
|
+
review.bindingDigest === operation.digest &&
|
|
142
|
+
review.inputDigest === digest(action.input) &&
|
|
143
|
+
review.candidateDigest === digest(input.candidate) &&
|
|
144
|
+
digest(review.destination) === digest(input.destination) &&
|
|
145
|
+
operation.effects.filter((e) => e !== 'read').every((e) => e === review.effect), 'IA-ENGINE-REVIEW-INVALID', 'Candidate, input, binding, destination or effect changed after review');
|
|
146
|
+
check(grant.destinations?.some((d) => digest(d) === digest(review.destination)), 'IA-ENGINE-AUTHORITY-DENIED', 'Current grant no longer permits the destination');
|
|
147
|
+
check(!Object.values(state.attempts).some((a) => a.id !== preparing && a.review?.decisionId === decision.id && (a.effect !== 'none' || a.status !== 'observed')), 'IA-ENGINE-REVIEW-CONSUMED', 'Reviewed effect is already applied or unresolved');
|
|
148
|
+
return { ...copy(review), ...ref };
|
|
149
|
+
}
|
|
150
|
+
/** Installed evaluator: success requires the requested destination and the exact validated artifact. */
|
|
151
|
+
export function evaluateCompletion(state, run, profile, action) {
|
|
152
|
+
const contract = run.contract;
|
|
153
|
+
if (profile.completion === 'proposal')
|
|
154
|
+
check(action.proposal !== undefined, 'IA-ENGINE-COMPLETION-DENIED', 'Task requires an offered proposal');
|
|
155
|
+
if (profile.completion !== 'artifact')
|
|
156
|
+
return;
|
|
157
|
+
check(contract?.artifact && action.kind === 'deliverable' && action.artifacts?.length, 'IA-ENGINE-COMPLETION-DENIED', 'Task requires its contracted artifact');
|
|
158
|
+
for (const id of action.artifacts) {
|
|
159
|
+
const receipt = state.receipts.find((r) => r.id === id && r.runId === run.id && r.effect === 'applied' && r.error === null);
|
|
160
|
+
const output = receipt?.output;
|
|
161
|
+
check(receipt?.review &&
|
|
162
|
+
receipt.target === contract.artifact.operation &&
|
|
163
|
+
digest(receipt.review.destination) === digest(contract.artifact.destination) &&
|
|
164
|
+
output?.candidateDigest === receipt.review.candidateDigest &&
|
|
165
|
+
output.artifactDigest === receipt.review.artifactDigest &&
|
|
166
|
+
digest(output.destination ?? null) === digest(contract.artifact.destination), 'IA-ENGINE-COMPLETION-DENIED', 'Receipt does not prove the exact requested artifact and destination');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Json, Session } from '@inventarch/session-system';
|
|
2
|
+
import type { EngineHost, Manifest, ModelResponse, StartRequest } from './types.js';
|
|
3
|
+
export declare function manifestDigest(manifest: Omit<Manifest, 'digest'> | Manifest): string;
|
|
4
|
+
/** One shared scheduler; hosts provide single-attempt adapters and authenticated grants. */
|
|
5
|
+
export declare class Engine {
|
|
6
|
+
private readonly host;
|
|
7
|
+
readonly manifest: Manifest;
|
|
8
|
+
constructor(manifest: Manifest, host: EngineHost);
|
|
9
|
+
private now;
|
|
10
|
+
private attemptSignal;
|
|
11
|
+
private checks;
|
|
12
|
+
private dispatchBudget;
|
|
13
|
+
private grant;
|
|
14
|
+
private reviewAuthority;
|
|
15
|
+
private effectContext;
|
|
16
|
+
start(request: StartRequest): Promise<Session>;
|
|
17
|
+
advance(sessionId: string, principal: string, options?: {
|
|
18
|
+
maxActions?: number;
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}): Promise<Session>;
|
|
21
|
+
private limits;
|
|
22
|
+
private infer;
|
|
23
|
+
private act;
|
|
24
|
+
private recover;
|
|
25
|
+
private renewalGrant;
|
|
26
|
+
private renewalPlan;
|
|
27
|
+
/** Read-only current renewal offer. Its exact deadline is rechecked during admission. */
|
|
28
|
+
renewal(sessionId: string, principal: string, options?: {
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
deadline: number;
|
|
32
|
+
}>;
|
|
33
|
+
/** Extends time only; never resets accounting, changes executable bindings or dispatches work. */
|
|
34
|
+
renew(sessionId: string, principal: string, input: {
|
|
35
|
+
commandId: string;
|
|
36
|
+
expectedSequence: number;
|
|
37
|
+
deadline: number;
|
|
38
|
+
signal?: AbortSignal;
|
|
39
|
+
}): Promise<Session>;
|
|
40
|
+
/** Bounded repair/read retry, or an exact reviewed write after proven absence. */
|
|
41
|
+
retry(sessionId: string, principal: string, attemptId: string, commandId: string): Promise<Session>;
|
|
42
|
+
reply(sessionId: string, principal: string, questionId: string, revision: number, questionDigest: string, answer: Json, commandId: string): Promise<Session>;
|
|
43
|
+
review(sessionId: string, principal: string, proposalId: string, revision: number, proposalDigest: string, accept: boolean, rationale: string, commandId: string): Promise<Session>;
|
|
44
|
+
/** IDE host supplies one structured response to the exact persisted request; no API/model credential is needed. */
|
|
45
|
+
submitModel(sessionId: string, principal: string, attemptId: string, response: ModelResponse, commandId: string): Promise<Session>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,IAAI,EAOJ,OAAO,EAER,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EACV,UAAU,EAEV,QAAQ,EAGR,aAAa,EAIb,YAAY,EACb,MAAM,YAAY,CAAC;AA8CpB,wBAAgB,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAGpF;AACD,4FAA4F;AAC5F,qBAAa,MAAM;IAIf,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAE1B,QAAQ,EAAE,QAAQ,EACD,IAAI,EAAE,UAAU;IA6CnC,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,cAAc;YAeR,KAAK;YAqCL,eAAe;IAmD7B,OAAO,CAAC,aAAa;IAsGf,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IA0C9C,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAC1D,OAAO,CAAC,OAAO,CAAC;IAoMnB,OAAO,CAAC,MAAM;YA4DA,KAAK;YA0GL,GAAG;YA2SH,OAAO;YA2LP,YAAY;IAiC1B,OAAO,CAAC,WAAW;IAwFnB,yFAAyF;IACnF,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACrC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAMhC,kGAAkG;IAC5F,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC7F,OAAO,CAAC,OAAO,CAAC;IA2CnB,kFAAkF;IAC5E,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgEnG,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,IAAI,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAeb,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IA0CnB,mHAAmH;IAC7G,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;CAoDpB"}
|