Selected source · Public release
AgentLens
Review Kit.
A review lifecycle small enough to read and run. Proposals, human decisions, execution and evaluation each leave their own record.
TypeScript · Node.js 20+ · MIT · github.com/a1989524/agentlens-review-kit
Small enough to inspect
Follow a decision through.
Approved, executed, evaluated
- A proposal is recorded
An idea is pending review. Nothing has been approved or executed.
Inspect record
{ "kind": "review_proposal", "id": "proposal-approved", "at": "2026-09-18T09:00:00.000Z", "candidate_ref": "workflow:creative-review", "version": 1, "reason": "Try an explicit confirmation step before applying a suggested edit.", "status": "review_pending", "content_hash": "sha256:8a5600e85cbbf20e8eb9eff296d22b1b67745864b5a81317e28d8b31f01e4a08" } - A separate human decision
The reviewer permits a bounded trial, not a claim of success.
Inspect record
{ "kind": "review_decision", "id": "decision-approved", "at": "2026-09-18T09:01:00.000Z", "proposal_ref": "proposal-approved", "proposal_hash": "sha256:8a5600e85cbbf20e8eb9eff296d22b1b67745864b5a81317e28d8b31f01e4a08", "candidate_ref": "workflow:creative-review", "candidate_version": 1, "decided_by": "local_user", "status": "authorized_for_trial", "content_hash": "sha256:407589f684e2d6b36ab8902fd4f1ba374ee9ba302632138877515d2a4773c876" } - Execution has its own result
The execution receipt reports completion, without claiming product quality.
Inspect record
{ "kind": "execution_receipt", "id": "execution-approved", "at": "2026-09-18T09:02:00.000Z", "decision_ref": "decision-approved", "decision_hash": "sha256:407589f684e2d6b36ab8902fd4f1ba374ee9ba302632138877515d2a4773c876", "candidate_ref": "workflow:creative-review", "status": "executed", "change_ref": "change:synthetic-example", "content_hash": "sha256:82112bcb808f320146ebfbba53365228857e1dcaf6b122a9094198df63ca3398" } - Evaluate the evidence
All supplied example signals meet the confirmation rule.
Inspect record
{ "kind": "evaluation_result", "id": "evaluation-approved", "at": "2026-09-18T09:03:00.000Z", "execution_ref": "execution-approved", "execution_hash": "sha256:82112bcb808f320146ebfbba53365228857e1dcaf6b122a9094198df63ca3398", "candidate_ref": "workflow:creative-review", "status": "confirmed", "evidence_complete": true, "checks_passed": true, "regression_found": false, "content_hash": "sha256:3dca0e1c4d5a60b59cfd8957db0b9f7116de484cce6cc2dcc225ef7c87b99a2a" }
Rejected means no execution
- A proposal is recorded
An idea is pending review. Nothing has been approved or executed.
Inspect record
{ "kind": "review_proposal", "id": "proposal-rejected", "at": "2026-09-18T09:00:00.000Z", "candidate_ref": "workflow:creative-review", "version": 1, "reason": "Try an explicit confirmation step before applying a suggested edit.", "status": "review_pending", "content_hash": "sha256:54ff9008680878490a48a635b6e41faa28bd575e8310dae32475a79f8d7156a6" } - A separate human decision
The reviewer rejects this trial.
Inspect record
{ "kind": "review_decision", "id": "decision-rejected", "at": "2026-09-18T09:01:00.000Z", "proposal_ref": "proposal-rejected", "proposal_hash": "sha256:54ff9008680878490a48a635b6e41faa28bd575e8310dae32475a79f8d7156a6", "candidate_ref": "workflow:creative-review", "candidate_version": 1, "decided_by": "local_user", "status": "rejected", "content_hash": "sha256:233b373c1becf6683b02a2844cb66ec85996433758a6e3e8565b0715bd1498be" } - Execution is blocked
The module refuses to create an execution receipt from a rejected decision.
Inspect record
{ "kind": "blocked_attempt", "code": "TRIAL_NOT_AUTHORIZED" }
An execution can fail
- A proposal is recorded
An idea is pending review. Nothing has been approved or executed.
Inspect record
{ "kind": "review_proposal", "id": "proposal-failed", "at": "2026-09-18T09:00:00.000Z", "candidate_ref": "workflow:creative-review", "version": 1, "reason": "Try an explicit confirmation step before applying a suggested edit.", "status": "review_pending", "content_hash": "sha256:adfe434a3da6c2f4488c5d95bba4e257428dae647d493ba75cb0a392f8589652" } - A separate human decision
The reviewer permits a bounded trial, not a claim of success.
Inspect record
{ "kind": "review_decision", "id": "decision-failed", "at": "2026-09-18T09:01:00.000Z", "proposal_ref": "proposal-failed", "proposal_hash": "sha256:adfe434a3da6c2f4488c5d95bba4e257428dae647d493ba75cb0a392f8589652", "candidate_ref": "workflow:creative-review", "candidate_version": 1, "decided_by": "local_user", "status": "authorized_for_trial", "content_hash": "sha256:0c13d6cc93cb0c35efa0d5119863c1ebda2f60343018788473c5a33f7a581967" } - Execution has its own result
A failure remains a failure; the decision is not rewritten.
Inspect record
{ "kind": "execution_receipt", "id": "execution-failed", "at": "2026-09-18T09:02:00.000Z", "decision_ref": "decision-failed", "decision_hash": "sha256:0c13d6cc93cb0c35efa0d5119863c1ebda2f60343018788473c5a33f7a581967", "candidate_ref": "workflow:creative-review", "status": "execution_failed", "change_ref": "change:synthetic-example", "content_hash": "sha256:938dd4a03c4c16e257a65842ff16fb416fe7bb0acd00ee9be6f1e3ca8399d4d4" } - Evaluate the evidence
The evidence does not support confirmation. Keep the result inconclusive.
Inspect record
{ "kind": "evaluation_result", "id": "evaluation-failed", "at": "2026-09-18T09:03:00.000Z", "execution_ref": "execution-failed", "execution_hash": "sha256:938dd4a03c4c16e257a65842ff16fb416fe7bb0acd00ee9be6f1e3ca8399d4d4", "candidate_ref": "workflow:creative-review", "status": "inconclusive", "evidence_complete": false, "checks_passed": false, "regression_found": false, "content_hash": "sha256:aea45a6dc7e34ad691ee50c80ca498b0640115cf698cd92acaa0dacd1f246304" }
Done is not yet proven
- A proposal is recorded
An idea is pending review. Nothing has been approved or executed.
Inspect record
{ "kind": "review_proposal", "id": "proposal-uncertain", "at": "2026-09-18T09:00:00.000Z", "candidate_ref": "workflow:creative-review", "version": 1, "reason": "Try an explicit confirmation step before applying a suggested edit.", "status": "review_pending", "content_hash": "sha256:75498a88e2cbf7aaf63c75a94a7c851008af57bfd275df673b7716fb09f5d5f1" } - A separate human decision
The reviewer permits a bounded trial, not a claim of success.
Inspect record
{ "kind": "review_decision", "id": "decision-uncertain", "at": "2026-09-18T09:01:00.000Z", "proposal_ref": "proposal-uncertain", "proposal_hash": "sha256:75498a88e2cbf7aaf63c75a94a7c851008af57bfd275df673b7716fb09f5d5f1", "candidate_ref": "workflow:creative-review", "candidate_version": 1, "decided_by": "local_user", "status": "authorized_for_trial", "content_hash": "sha256:a8f062759c7be8a3528c0bffc04c193c094822440a1fd3ed7067eb5c70400476" } - Execution has its own result
The execution receipt reports completion, without claiming product quality.
Inspect record
{ "kind": "execution_receipt", "id": "execution-uncertain", "at": "2026-09-18T09:02:00.000Z", "decision_ref": "decision-uncertain", "decision_hash": "sha256:a8f062759c7be8a3528c0bffc04c193c094822440a1fd3ed7067eb5c70400476", "candidate_ref": "workflow:creative-review", "status": "executed", "change_ref": "change:synthetic-example", "content_hash": "sha256:6ef722d4e4726a926bf28b875dbaf78e79109ea0ca187813ec280a0a5c09bb78" } - Evaluate the evidence
The evidence does not support confirmation. Keep the result inconclusive.
Inspect record
{ "kind": "evaluation_result", "id": "evaluation-uncertain", "at": "2026-09-18T09:03:00.000Z", "execution_ref": "execution-uncertain", "execution_hash": "sha256:6ef722d4e4726a926bf28b875dbaf78e79109ea0ca187813ec280a0a5c09bb78", "candidate_ref": "workflow:creative-review", "status": "inconclusive", "evidence_complete": false, "checks_passed": false, "regression_found": false, "content_hash": "sha256:9b2f342354b9ff6922be283e176161e371e81726506eb5611ee443beecfee2e2" }
A boundary you can inspect
The kit adapts concepts from the larger local workbench into an independent implementation. It reads no private ledger and makes no model calls. It includes 14 of the 62 deterministic tests from the internal workbench. Its functions generate four replays: authorized and confirmed, rejected with execution blocked, execution failed, and execution completed with insufficient evidence.
Run it locally
Install Node.js 20 or newer, extract the source archive or clone the repo and open its directory. No runtime dependencies need installing.
node --test tests/*.test.mjs
node examples/run.mjs
node scripts/export-scenarios.mjs scenarios.jsonPublic interface
| Record | Responsibility |
|---|---|
| ReviewProposal | Identify the candidate and proposed reason |
| ReviewDecision | Authorize a trial, reject or defer |
| ExecutionReceipt | Record execution after authorization |
| EvaluationResult | Distinguish confirmation, regression and uncertainty |
Deliberate limits
A role field is not authentication, and a content hash is not a digital signature. The kit provides no persistence, concurrent transactions, replay prevention or real access control. Evaluation inputs are caller assertions, not automatically executed model evaluations. A reverted assessment does not roll back an external system.
These boundaries are described in the README, runtime checks and tests. The kit is published on GitHub, with an offline archive provided for local inspection.