Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 66 additions & 40 deletions demo-app-react/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1204,7 +1204,7 @@
<a href="#audit" onclick="closeMenu()"><span class="dd-num">04</span> Audit &amp; Evidence</a>
<a href="#gates" onclick="closeMenu()"><span class="dd-num">05</span> Custom Gates</a>
<a href="#risk" onclick="closeMenu()"><span class="dd-num">06</span> Risk Scoring</a>
<a href="#labs" onclick="closeMenu()"><span class="dd-num">07</span> Labs (11)</a>
<a href="#labs" onclick="closeMenu()"><span class="dd-num">07</span> Labs (10)</a>
<a href="#install" onclick="closeMenu()"><span class="dd-num">08</span> Install</a>
<a href="#workflow" onclick="closeMenu()"><span class="dd-num">09</span> Workflow v0.9.0 ↗</a>
<a href="https://nealsolves.github.io/aigc" class="demo-link" target="_blank" rel="noopener" onclick="closeMenu()"><span class="dd-num">↗</span> Open Demo →</a>
Expand Down Expand Up @@ -1271,7 +1271,7 @@ <h2 class="section-title" id="what-title">Why <span class="accent">AIGC</span></
<div class="stat-label">gate insertion points</div>
</div>
<div class="stat-item">
<div class="stat-num">11</div>
<div class="stat-num">10</div>
<div class="stat-label">interactive labs</div>
</div>
</div>
Expand Down Expand Up @@ -1592,8 +1592,7 @@ <h3 class="feature-card-title">warn_only</h3>
<p class="section-label">// 07 interactive labs</p>
<h2 class="section-title" id="labs-title">Try AIGC <span class="accent">in the browser</span></h2>
<p class="section-lead">
Eleven interactive labs walk you through every AIGC capability. No model API key required for the core labs.
<a href="https://nealsolves.github.io/aigc" class="demo-link" target="_blank" rel="noopener">Open the demo app →</a>
Ten interactive labs walk you through every AIGC capability. No model API key required for the core labs.
</p>

<div class="labs-grid">
Expand Down Expand Up @@ -1677,13 +1676,6 @@ <h2 class="section-title" id="labs-title">Try AIGC <span class="accent">in the b
<span class="lab-card-link" style="color:#ff8389">Open lab →</span>
</a>

<a href="#" class="lab-card demo-link" data-lab="11" target="_blank" rel="noopener" aria-label="Lab 11: Workflow Governance (v0.9.0 Beta)">
<div class="lab-card-bar" style="background:linear-gradient(90deg,#be95ff,#78a9ff)"></div>
<div class="lab-card-num">Lab 11 <span class="lab-beta">v0.9.0 β</span></div>
<div class="lab-card-title">Workflow Governance</div>
<p class="lab-card-body">Hands-on GovernanceSession: open a session, step through a multi-invocation workflow, trigger intentional failures, run <code>workflow doctor</code>, and inspect the workflow artifact.</p>
<span class="lab-card-link" style="color:#be95ff">Open lab →</span>
</a>
</div>
</div>
</section>
Expand All @@ -1710,31 +1702,31 @@ <h2 class="section-title" id="install-title">Get started in <span class="accent"
<div class="version-timeline">
<div class="version-item">
<div class="version-line">
<div class="version-dot" style="background:var(--ibm-blue-40)"></div>
<div class="version-dot" style="background:var(--ibm-gray-50)"></div>
<div class="version-connector"></div>
</div>
<div>
<div class="version-label">v0.3.3 · current stable</div>
<div class="version-desc">Split enforcement, audit schema v1.4, AuditLineage, ProvenanceGate, RiskHistory, policy composition with <code>extends</code>.</div>
<div class="version-label" style="color:var(--text-dim)">v0.2.x · legacy</div>
<div class="version-desc" style="color:var(--text-dim)">Original enforcement engine. Superseded by v0.3.3 audit schema and split enforcement.</div>
</div>
</div>
<div class="version-item">
<div class="version-line">
<div class="version-dot" style="background:var(--ibm-purple-40)"></div>
<div class="version-dot" style="background:var(--ibm-blue-40)"></div>
<div class="version-connector"></div>
</div>
<div>
<div class="version-label">v0.9.0 · beta on develop</div>
<div class="version-desc">GovernanceSession, workflow CLI (init / lint / doctor / trace / export), adapter layer for Bedrock, A2A, and OpenAI Agents. Renamed to AEGIS on release.</div>
<div class="version-label">v0.3.3 · current stable</div>
<div class="version-desc">Split enforcement, audit schema v1.4, AuditLineage, ProvenanceGate, RiskHistory, policy composition with <code>extends</code>.</div>
</div>
</div>
<div class="version-item">
<div class="version-line">
<div class="version-dot" style="background:var(--ibm-gray-50)"></div>
<div class="version-dot" style="background:var(--ibm-purple-40)"></div>
</div>
<div>
<div class="version-label" style="color:var(--text-dim)">v0.2.x · legacy</div>
<div class="version-desc" style="color:var(--text-dim)">Original enforcement engine. Superseded by v0.3.3 audit schema and split enforcement.</div>
<div class="version-label">v0.9.0 · AEGIS beta on develop</div>
<div class="version-desc">GovernanceSession, workflow CLI (init / lint / doctor / trace / export), adapter layer for Bedrock, A2A, and OpenAI Agents. Renamed to AEGIS on release.</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -1847,36 +1839,70 @@ <h3 style="font-family:var(--font-mono);font-weight:300;font-size:var(--heading-
</div>

<div class="code-block-with-header">
<div class="code-block-header"><span>v0.9.0 · GovernanceSession usage (preview)</span></div>
<div class="code-block-header">
<span>v0.9.0 · GovernanceSession usage (preview)</span>
<button class="copy-btn" onclick="copyCode(this)" data-code="from aigc import AIGC

governance = AIGC()

# open_session() is always instance-scoped
with governance.open_session(
policy_file='policies/review.yaml',
) as session:

# Phase A: pre-call authorization
pre = session.enforce_step_pre_call({
'policy_file': 'policies/review.yaml',
'input': {'prompt': prompt},
'output': {},
'context': {'caller_id': 'demo'},
'model_provider': 'anthropic',
'model_identifier': 'claude-sonnet-4-6',
'role': 'ai-assistant',
})

# You call the model
response = your_model_client.call(prompt)

# Phase B: post-call validation + audit
session.enforce_step_post_call(pre, {'result': response})

session.complete()

# Workflow artifact on session.workflow_artifact after __exit__
# Source: github.com/nealsolves/aigc/tree/develop">Copy</button>
</div>
<div class="code-block">
<pre><span class="kw">import</span> AIGC
<pre><span class="kw">from</span> aigc <span class="kw">import</span> AIGC

<span class="cm"># AIGC.open_session() (always instance-scoped)</span>
<span class="kw">with</span> AIGC.<span class="fn">open_session</span>(
manifest<span class="op">=</span><span class="str">"workflows/review.yaml"</span>,
context<span class="op">=</span>{<span class="str">"user_id"</span><span class="op">:</span> user_id},
governance <span class="op">=</span> AIGC()

<span class="cm"># open_session() is always instance-scoped</span>
<span class="kw">with</span> governance.<span class="fn">open_session</span>(
policy_file<span class="op">=</span><span class="str">"policies/review.yaml"</span>,
) <span class="kw">as</span> session:

<span class="cm"># Step 1: pre-call authorization</span>
pre <span class="op">=</span> session.<span class="fn">enforce_pre_call</span>({
<span class="str">"policy_file"</span><span class="op">:</span> <span class="str">"policies/review.yaml"</span>,
<span class="str">"input"</span><span class="op">:</span> {<span class="str">"document"</span><span class="op">:</span> doc},
<span class="str">"role"</span><span class="op">:</span> <span class="str">"reviewer"</span>,
<span class="cm"># Phase A: pre-call authorization</span>
pre <span class="op">=</span> session.<span class="fn">enforce_step_pre_call</span>({
<span class="str">"policy_file"</span><span class="op">:</span> <span class="str">"policies/review.yaml"</span>,
<span class="str">"input"</span><span class="op">:</span> {<span class="str">"prompt"</span><span class="op">:</span> prompt},
<span class="str">"output"</span><span class="op">:</span> {},
<span class="str">"context"</span><span class="op">:</span> {<span class="str">"caller_id"</span><span class="op">:</span> <span class="str">"demo"</span>},
<span class="str">"model_provider"</span><span class="op">:</span> <span class="str">"anthropic"</span>,
<span class="str">"model_identifier"</span><span class="op">:</span> <span class="str">"claude-3-5-sonnet"</span>,
<span class="str">"model_identifier"</span><span class="op">:</span> <span class="str">"claude-sonnet-4-6"</span>,
<span class="str">"role"</span><span class="op">:</span> <span class="str">"ai-assistant"</span>,
})

<span class="cm"># You call the model</span>
response <span class="op">=</span> your_model_client.<span class="fn">call</span>(doc)
response <span class="op">=</span> your_model_client.<span class="fn">call</span>(prompt)

<span class="cm"># Step 2: post-call validation + audit</span>
result <span class="op">=</span> pre.<span class="fn">complete</span>({
<span class="str">"output"</span><span class="op">:</span> {<span class="str">"response"</span><span class="op">:</span> response},
<span class="str">"context"</span><span class="op">:</span> {<span class="str">"latency_ms"</span><span class="op">:</span> <span class="num">312</span>},
})
<span class="cm"># Phase B: post-call validation + audit</span>
session.<span class="fn">enforce_step_post_call</span>(pre, {<span class="str">"result"</span><span class="op">:</span> response})

session.<span class="fn">complete</span>()

<span class="cm"># Workflow artifact produced on __exit__</span>
<span class="cm"># Source: github.com/nealsolves/aegis/tree/develop</span></pre>
<span class="cm"># Workflow artifact on session.workflow_artifact after __exit__</span>
<span class="cm"># Source: github.com/nealsolves/aigc/tree/develop</span></pre>
</div>
</div>
</div>
Expand Down
Loading