This commit implements the missing Proof of Concepts (PoCs) required by the `agent-forum-v4` architecture blueprint as identified in `CONCEPTS.md`.
Updates include:
- `execution_flywheel_poc.ts`: Implemented mock version (Gen 1) using in-memory state and physical version (Gen 2) utilizing actual file I/O tracking to prove state management bounds.
- `tool_sandbox_poc.ts`: Implemented mock version (Gen 1) yielding simulated telemetry and physical version (Gen 2) utilizing real production-grade tool invocations (Semgrep via CLI and Tree-sitter via WASM module).
- `git_hooks_poc.ts`: Implemented mock version (Gen 1) intercepting simulated events and physical version (Gen 2) configuring a physical Git temp directory executing native `.git/hooks/pre-commit` hooks.
- `BOUNDARIES.md`: Documented explicit technical boundaries in both `poc-g1` and `poc-g2` to enforce strict isolation vs production file-system operation.
- Fixed Deno Linting constraints across `poc-g2/` scripts.
- `CONCEPTS.md`: Status flags updated to ✅.
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
68 lines
2.3 KiB
TypeScript
68 lines
2.3 KiB
TypeScript
/**
|
|
* Execution Flywheel PoC (Gen 2 - Production Tooling)
|
|
*
|
|
* This script proves the physical constraints of a 3-step feedback loop
|
|
* (Analyst -> Gatekeeper -> Reset) using actual file I/O to pass
|
|
* state between agents instead of purely in-memory objects.
|
|
*/
|
|
|
|
import { join, dirname, fromFileUrl } from "https://deno.land/std@0.224.0/path/mod.ts";
|
|
|
|
const currentDir = dirname(fromFileUrl(import.meta.url));
|
|
const STATE_FILE = join(currentDir, "flywheel_state.json");
|
|
|
|
async function writeState(state: any) {
|
|
await Deno.writeTextFile(STATE_FILE, JSON.stringify(state, null, 2));
|
|
}
|
|
|
|
async function readState(): Promise<any> {
|
|
const content = await Deno.readTextFile(STATE_FILE);
|
|
return JSON.parse(content);
|
|
}
|
|
|
|
async function runFlywheel() {
|
|
console.log("Starting Execution Flywheel (Gen 2 - File I/O)\n");
|
|
|
|
// Initial State
|
|
await writeState({ constraintLevel: "low", iteration: 0, status: "INIT" });
|
|
console.log(`[Flywheel] Initialized state file: ${STATE_FILE}`);
|
|
|
|
for (let i = 1; i <= 3; i++) {
|
|
console.log(`\n=== Iteration ${i} ===`);
|
|
|
|
// Step 1: Analyst reads telemetry (simulated) and writes new protocol to disk
|
|
console.log("[Analyst] Reading state from disk...");
|
|
const analystState = await readState();
|
|
|
|
console.log("[Analyst] Updating protocol constraints...");
|
|
const newConstraintLevel = i === 1 ? "medium" : i === 2 ? "high" : "strict";
|
|
analystState.constraintLevel = newConstraintLevel;
|
|
analystState.iteration = i;
|
|
analystState.status = "ANALYST_UPDATED";
|
|
|
|
await writeState(analystState);
|
|
console.log(`[Analyst] State written to disk with constraint: ${newConstraintLevel}`);
|
|
|
|
// Step 2: Gatekeeper reads constraints from disk
|
|
console.log("[Gatekeeper] Reading updated constraints from disk...");
|
|
const gatekeeperState = await readState();
|
|
|
|
console.log(`[Gatekeeper] Enforcing constraint level: ${gatekeeperState.constraintLevel}`);
|
|
gatekeeperState.status = "GATEKEEPER_APPROVED";
|
|
await writeState(gatekeeperState);
|
|
|
|
// Step 3: Cycle executes
|
|
console.log("[Coder] Generating code under physical disk constraints...");
|
|
console.log("Cycle complete.");
|
|
}
|
|
|
|
console.log("\n[Flywheel] Cleaning up state file...");
|
|
await Deno.remove(STATE_FILE);
|
|
|
|
console.log("Gen 2 Flywheel execution completed successfully.");
|
|
}
|
|
|
|
if (import.meta.main) {
|
|
runFlywheel().catch(console.error);
|
|
}
|