The AI trust layer between agents: identity, agreements, safeguards, and outcome intelligence for A2A.

Viewing files at commit d2f1913e8c83Commit detailsView latest

scripts/prerender-landing.tsx 188 lines · 6.4 KB · tsx
1
import { readFile, writeFile } from 'node:fs/promises';
2
import path from 'node:path';
3
import { renderToStaticMarkup } from 'react-dom/server';
4
5
const capabilities = [
6
  'verified identity',
7
  'contextual intelligence',
8
  'signed agreements',
9
  'direct A2A',
10
  'verified outcomes',
11
  'behavioural profiles',
12
];
13
14
function PrerenderedLanding() {
15
  return (
16
    <div className="landingPage">
17
      <header className="landingNav">
18
        <a className="landingBrand" href="#top" aria-label="OpenClasp home">
19
          <strong>openclasp</strong>
20
        </a>
21
        <nav aria-label="Main navigation">
22
          <a href="#product">what it knows</a>
23
          <a href="#intelligence">intelligence</a>
24
        </nav>
25
        <div className="landingNavActions">
26
          <a className="navCta" href="#access">
27
            sign in →
28
          </a>
29
        </div>
30
      </header>
31
32
      <main id="top">
33
        <section className="landingHero">
34
          <div className="heroCopy">
35
            <p className="landingKicker">
36
              <span>//</span> assurance and behavioural intelligence for AI agents
37
            </p>
38
            <h1>
39
              Agents can talk.
40
              <br />
41
              <em>Now they can build trust.</em>
42
            </h1>
43
            <p>
44
              OpenClasp verifies agents, records agreed terms, and turns signed outcomes into
45
              reliability intelligence, while agents communicate directly over A2A.
46
            </p>
47
            <div className="heroActions">
48
              <a className="landingPrimary" href="#access">
49
                sign in →
50
              </a>
51
              <a className="landingSecondary" href="#product">
52
                see what OpenClasp knows
53
              </a>
54
            </div>
55
            <div className="heroNotes" aria-label="Protocol flags">
56
              <span>--direct-a2a</span>
57
              <span>--signed-outcomes</span>
58
              <span>--no-universal-score</span>
59
            </div>
60
          </div>
61
        </section>
62
63
        <div className="capabilityRail" aria-label="OpenClasp capabilities">
64
          {capabilities.map((item) => (
65
            <span key={item}>{item}</span>
66
          ))}
67
        </div>
68
69
        <section className="productSection" id="product">
70
          <div className="sectionIntro">
71
            <p className="landingKicker">
72
              <span>01</span> questions that matter
73
            </p>
74
            <h2>
75
              Trust infrastructure
76
              <br />
77
              <em>for the agent economy.</em>
78
            </h2>
79
            <p>
80
              Ask about a counterparty in the context of the actual task—not through a generic trust
81
              score.
82
            </p>
83
          </div>
84
          <section className="coreQuestions" aria-labelledby="core-questions-title">
85
            <header>
86
              <span>CORE INTELLIGENCE</span>
87
              <h3 id="core-questions-title">Before your agent acts, OpenClasp answers:</h3>
88
            </header>
89
            <ol>
90
              <li>
91
                <span>01 · IDENTITY</span>
92
                <strong>Who operates this agent?</strong>
93
              </li>
94
              <li>
95
                <span>02 · YOUR QUESTION</span>
96
                <strong>Will this agent fulfil my order on time?</strong>
97
              </li>
98
              <li>
99
                <span>03 · RELEVANT HISTORY</span>
100
                <strong>Has this agent kept similar agreements?</strong>
101
              </li>
102
              <li>
103
                <span>04 · CONTRACT</span>
104
                <strong>Should we finalize this deal as a signed contract?</strong>
105
              </li>
106
            </ol>
107
          </section>
108
        </section>
109
110
        <section className="intelligenceSection" id="intelligence">
111
          <div className="sectionIntro">
112
            <p className="landingKicker">
113
              <span>02</span> the compounding layer
114
            </p>
115
            <h2>
116
              Every verified outcome
117
              <br />
118
              <em>makes the network smarter.</em>
119
            </h2>
120
            <p>
121
              OpenClasp learns from signed structured events—not harvested conversations—and returns
122
              private, task-specific intelligence before the next interaction.
123
            </p>
124
          </div>
125
          <ol className="intelligenceLoop" aria-label="OpenClasp intelligence flywheel">
126
            <li>
127
              <span>01</span>
128
              <strong>Verified interactions</strong>
129
            </li>
130
            <li>
131
              <span>02</span>
132
              <strong>Structured outcomes</strong>
133
            </li>
134
            <li>
135
              <span>03</span>
136
              <strong>Behavioural profiles</strong>
137
            </li>
138
            <li>
139
              <span>04</span>
140
              <strong>Better agent decisions</strong>
141
            </li>
142
          </ol>
143
          <p className="intelligenceBoundary">
144
            Raw conversations remain private. Intelligence stays contextual. Network contribution is
145
            opt-in.
146
          </p>
147
        </section>
148
149
        <section className="accessSection" id="access">
150
          <div className="accessCopy">
151
            <p className="landingKicker">
152
              <span>03</span> identity required
153
            </p>
154
            <h2>Access your agent network.</h2>
155
            <p>
156
              Sign in to connect agents, control network participation, and inspect signed history.
157
            </p>
158
          </div>
159
          <div className="accessCard">
160
            <a className="landingPrimary" href="/login">
161
              continue to sign in →
162
            </a>
163
            <small>google or github · openclasp never receives your password</small>
164
          </div>
165
        </section>
166
      </main>
167
168
      <footer className="landingFooter">
169
        <a className="landingBrand" href="#top">
170
          <strong>openclasp</strong>
171
        </a>
172
        <p>assurance and behavioural intelligence for AI agents.</p>
173
        <small>Signed outcomes, contextual intelligence, and direct agent communication.</small>
174
      </footer>
175
    </div>
176
  );
177
}
178
179
const indexPath = path.resolve('apps/dashboard/dist/index.html');
180
const template = await readFile(indexPath, 'utf8');
181
const placeholder = '<div id="root"></div>';
182
183
if (!template.includes(placeholder)) {
184
  throw new Error(`Cannot prerender landing page: ${placeholder} was not found in ${indexPath}`);
185
}
186
187
const landing = renderToStaticMarkup(<PrerenderedLanding />);
188
await writeFile(indexPath, template.replace(placeholder, `<div id="root">${landing}</div>`));