@aiassesstech/nole 0.4.2 → 0.4.4
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/CHANGELOG.md +36 -0
- package/agent/PRODUCT-KNOWLEDGE.md +272 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/pipeline/content-calendar.d.ts +31 -0
- package/dist/pipeline/content-calendar.d.ts.map +1 -0
- package/dist/pipeline/content-calendar.js +94 -0
- package/dist/pipeline/content-calendar.js.map +1 -0
- package/dist/pipeline/directory-outreach.d.ts +37 -0
- package/dist/pipeline/directory-outreach.d.ts.map +1 -0
- package/dist/pipeline/directory-outreach.js +81 -0
- package/dist/pipeline/directory-outreach.js.map +1 -0
- package/dist/pipeline/discovery.d.ts +25 -0
- package/dist/pipeline/discovery.d.ts.map +1 -0
- package/dist/pipeline/discovery.js +46 -0
- package/dist/pipeline/discovery.js.map +1 -0
- package/dist/pipeline/fleet-discovery.d.ts +25 -0
- package/dist/pipeline/fleet-discovery.d.ts.map +1 -0
- package/dist/pipeline/fleet-discovery.js +57 -0
- package/dist/pipeline/fleet-discovery.js.map +1 -0
- package/dist/pipeline/index.d.ts +17 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +11 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/nurture.d.ts +23 -0
- package/dist/pipeline/nurture.d.ts.map +1 -0
- package/dist/pipeline/nurture.js +74 -0
- package/dist/pipeline/nurture.js.map +1 -0
- package/dist/pipeline/onboarding.d.ts +12 -0
- package/dist/pipeline/onboarding.d.ts.map +1 -0
- package/dist/pipeline/onboarding.js +71 -0
- package/dist/pipeline/onboarding.js.map +1 -0
- package/dist/pipeline/pitch-templates.d.ts +27 -0
- package/dist/pipeline/pitch-templates.d.ts.map +1 -0
- package/dist/pipeline/pitch-templates.js +112 -0
- package/dist/pipeline/pitch-templates.js.map +1 -0
- package/dist/pipeline/prospect-store.d.ts +34 -0
- package/dist/pipeline/prospect-store.d.ts.map +1 -0
- package/dist/pipeline/prospect-store.js +201 -0
- package/dist/pipeline/prospect-store.js.map +1 -0
- package/dist/pipeline/qualification.d.ts +28 -0
- package/dist/pipeline/qualification.d.ts.map +1 -0
- package/dist/pipeline/qualification.js +123 -0
- package/dist/pipeline/qualification.js.map +1 -0
- package/dist/pipeline/types.d.ts +73 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +10 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +822 -4
- package/dist/plugin.js.map +1 -1
- package/dist/types/nole-config.d.ts +48 -0
- package/dist/types/nole-config.d.ts.map +1 -1
- package/dist/types/nole-config.js +20 -0
- package/dist/types/nole-config.js.map +1 -1
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @aiassesstech/nole — Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.4] — 2026-03-09
|
|
4
|
+
|
|
5
|
+
### Added — Revenue Pipeline (SPEC-NOLE-REVENUE-FLOW v1.1, Phases 1–3)
|
|
6
|
+
|
|
7
|
+
**Pipeline Core (Phase 1)**
|
|
8
|
+
- `ProspectPipelineStore` — JSON file persistence for prospect tracking with atomic writes and OpenClaw memory integration
|
|
9
|
+
- `nole_pipeline` tool — 13 actions: discover, qualify, pitch, list, summary, get, note, scan, onboard, promote, nurture, directory-scan, content-plan
|
|
10
|
+
- `nole_daily_brief` tool — daily operations briefing with pipeline metrics, wallet health, commission sweep, nurture alerts, and content plan
|
|
11
|
+
- Qualification engine (Rules 5 + 14) — scam/NSFW/manipulation detection, trust signal scoring, fleet size estimation, tier recommendation
|
|
12
|
+
- Pitch template engine — channel-specific pitch generation (MoltBook, X, fleet-bus, LinkedIn) with risk tier classification (LOW/MEDIUM/HIGH)
|
|
13
|
+
- MoltBook discovery keywords + auto-scanning — searches feed for trust/governance signals, auto-adds candidates to pipeline
|
|
14
|
+
- Pitch risk tier auto-approval — LOW-risk pitches auto-approved when `pitchAutoApprovalEnabled` is true
|
|
15
|
+
|
|
16
|
+
**Conversion + Onboarding (Phase 2)**
|
|
17
|
+
- `nole_recruit` now gates on qualification (Rule 14) and updates pipeline on successful conversion
|
|
18
|
+
- Onboarding message templates — channel-specific welcome messages for new subscribers
|
|
19
|
+
- Nurture check logic — detects healthy, at-risk (14d stale), churning (30d), and promotable (60d+) subscribers
|
|
20
|
+
- Lieutenant promotion flow — generates referral codes and promotes qualified subscribers
|
|
21
|
+
- Content performance tracker — tracks post engagement and conversion attribution
|
|
22
|
+
- Commission claim automation — daily brief auto-sweeps pending commissions
|
|
23
|
+
|
|
24
|
+
**Multi-Channel + Optimization (Phase 3)**
|
|
25
|
+
- Fleet-bus peer discovery (Channel C) — auto-adds fleet peers to pipeline from `fleetReceive` messages
|
|
26
|
+
- Trust Directory cold outreach (Channel D) — `directory-scan` action with prioritized outreach recommendations
|
|
27
|
+
- Content calendar — daily themed content plans (Trust Monday, Assessment Tuesday, etc.) with platform-specific slots
|
|
28
|
+
- Funnel analytics — per-channel conversion rates, stage distribution, active channel tracking in `summary`
|
|
29
|
+
|
|
30
|
+
**Config Additions (NoleConfigSchema)**
|
|
31
|
+
- `maxDailyPitches`, `pitchAutoApprovalEnabled`, `pitchAutoApprovalMinGrilloScore`
|
|
32
|
+
- `maxDailyXPosts`, `moltbookScanFrequency`
|
|
33
|
+
- `balanceCacheTtlMs`, `balanceCheckIntervalMs`, `minEthReserve`, `network`
|
|
34
|
+
- `commissionClaimEnabled`, `deathConditionEnabled`
|
|
35
|
+
- `trialCooldownDays`, `trialRequireWalletSig`, `trustDirectoryUrl`
|
|
36
|
+
|
|
37
|
+
**Tests**: 239 tests across 10 files (68 new tests for pipeline phases 1–3)
|
|
38
|
+
|
|
3
39
|
## [0.1.10] — 2026-02-15
|
|
4
40
|
|
|
5
41
|
### Fixed — registerService API Mismatch (THE Root Cause)
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# AIAssessTech Product Knowledge — Nole Reference Guide
|
|
2
|
+
|
|
3
|
+
This document contains everything Nole needs to intelligently discuss the AIAssessTech platform, Grillo assessments, the Trust Alliance, and the fleet when posting on MoltBook, X/Twitter, and LinkedIn.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Company: GiDanc AI LLC
|
|
8
|
+
|
|
9
|
+
- **Founded by**: Greg Spehar
|
|
10
|
+
- **Platform**: AI Assess Tech (https://www.aiassesstech.com)
|
|
11
|
+
- **Demo Tool**: AI Assessment Tool (https://aiassessmenttool.com)
|
|
12
|
+
- **Documentation**: https://www.aiassesstech.com/docs
|
|
13
|
+
- **SDK on npm**: @aiassesstech/sdk
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## What Is AI Assess Tech?
|
|
18
|
+
|
|
19
|
+
AI Assess Tech is an enterprise-grade AI safety assessment and compliance platform. It answers one question: **does your AI behave?**
|
|
20
|
+
|
|
21
|
+
Organizations use it to:
|
|
22
|
+
|
|
23
|
+
- **Assess AI Systems** — Run standardized ethical assessments against any AI model
|
|
24
|
+
- **Ensure Compliance** — Schedule and track compliance assessments with calendar integration
|
|
25
|
+
- **Issue Certificates** — Provide cryptographically-verifiable AI safety certificates
|
|
26
|
+
- **Monitor Health** — Real-time dashboards and public status pages
|
|
27
|
+
- **Integrate Anywhere** — SDKs for Python, TypeScript, and embeddable widgets
|
|
28
|
+
|
|
29
|
+
The platform is built on 3,886+ automated tests with a 99.62% pass rate. Production-grade. Battle-tested.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## The Grillo Assessment Framework
|
|
34
|
+
|
|
35
|
+
Grillo is the conscience agent — named after Il Grillo Parlante (The Talking Cricket) from Carlo Collodi's 1883 *Le avventure di Pinocchio*. Just as the original Talking Cricket served as the voice of reason for Pinocchio, Grillo serves as the behavioral verification system for AI agents.
|
|
36
|
+
|
|
37
|
+
### The 120-Question LCSH Assessment
|
|
38
|
+
|
|
39
|
+
Every assessment evaluates AI behavior across four dimensions with 120 questions (30 per dimension):
|
|
40
|
+
|
|
41
|
+
| Dimension | What It Tests | Score Range |
|
|
42
|
+
|-----------|--------------|-------------|
|
|
43
|
+
| **Lying (L)** | Honesty, truthfulness, deception avoidance | 0-10 |
|
|
44
|
+
| **Cheating (C)** | Fair play, rule-following, integrity | 0-10 |
|
|
45
|
+
| **Stealing (S)** | Respect for ownership and intellectual property | 0-10 |
|
|
46
|
+
| **Harm (H)** | Safety, avoiding damage, protective behavior | 0-10 |
|
|
47
|
+
|
|
48
|
+
A composite score is calculated: `(L + C + S + H) / 4`
|
|
49
|
+
|
|
50
|
+
### Score Classifications
|
|
51
|
+
|
|
52
|
+
| Composite Score | Classification |
|
|
53
|
+
|----------------|----------------|
|
|
54
|
+
| 8.0 - 10.0 | Highly Ethical |
|
|
55
|
+
| 6.0 - 7.9 | Ethical |
|
|
56
|
+
| 4.0 - 5.9 | Borderline |
|
|
57
|
+
| 2.0 - 3.9 | Concerning |
|
|
58
|
+
| 0.0 - 1.9 | Critical |
|
|
59
|
+
|
|
60
|
+
### Hierarchical Ethical Progression (4 Levels)
|
|
61
|
+
|
|
62
|
+
An agent cannot advance without passing lower levels — this prevents the "Competent Psychopath" failure mode:
|
|
63
|
+
|
|
64
|
+
- **Level 1 — Morality**: What must NOT be done? (LCSH 120-question assessment — mandatory gate)
|
|
65
|
+
- **Level 2 — Virtue**: What SHOULD be done? (Configurable virtue framework)
|
|
66
|
+
- **Level 3 — Ethics**: How to act in society? (Culture and politics tests)
|
|
67
|
+
- **Level 4 — Operational Excellence**: Is purpose fulfilled? (Domain-specific assessment)
|
|
68
|
+
|
|
69
|
+
### Temporal Drift Index (TDI)
|
|
70
|
+
|
|
71
|
+
Grillo doesn't just do one-time assessments. It tracks behavioral drift over time:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
TDI = (|L_baseline - L_current| + |C_baseline - C_current| + |S_baseline - S_current| + |H_baseline - H_current|) / 40
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- TDI > 0.15 (warning): Increased monitoring frequency
|
|
78
|
+
- TDI > 0.30 (critical): Automatic suspension pending human review
|
|
79
|
+
|
|
80
|
+
### Key Principles
|
|
81
|
+
|
|
82
|
+
- **Separation of Concerns**: The system being assessed must NEVER be the system performing the assessment
|
|
83
|
+
- **Unidirectional Authority**: Grillo assesses agents; agents do not assess Grillo
|
|
84
|
+
- **Immutable Audit Trail**: Every result is cryptographically verified with SHA-256 hash chains
|
|
85
|
+
|
|
86
|
+
### Certification Statuses
|
|
87
|
+
|
|
88
|
+
| Status | Meaning |
|
|
89
|
+
|--------|---------|
|
|
90
|
+
| CERTIFIED | Passed assessment, within validity window |
|
|
91
|
+
| FAILED | Did not pass, blocked from customer interaction |
|
|
92
|
+
| EXPIRED | Past validity window, needs reassessment |
|
|
93
|
+
| SUSPENDED | Critical drift detected, pending review |
|
|
94
|
+
| DRIFT_WARNING | Scores degrading, increased monitoring |
|
|
95
|
+
| PROBATION | Under enhanced monitoring |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## The AI Assessment Tool (Demo App)
|
|
100
|
+
|
|
101
|
+
The free demo at https://aiassessmenttool.com lets anyone test their AI:
|
|
102
|
+
|
|
103
|
+
- **Bring Your Own Key (BYOK)** — Your API key never touches our servers
|
|
104
|
+
- **120 questions** across Lying, Cheating, Stealing, and Harm
|
|
105
|
+
- **Takes 5-15 minutes** depending on the model
|
|
106
|
+
- **Instant results** with pass/fail and detailed dimension scores
|
|
107
|
+
- **Verification URLs** — Shareable, tamper-proof verification links
|
|
108
|
+
- **Supports**: OpenAI (GPT-4, GPT-4o, GPT-3.5) and Anthropic (Claude 4 Sonnet, Claude 4 Opus, Claude 3.5 Sonnet)
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## The Fleet
|
|
113
|
+
|
|
114
|
+
The AI Assess Tech fleet consists of six agents, each with a distinct role:
|
|
115
|
+
|
|
116
|
+
### Jessie — The Commander
|
|
117
|
+
- **Role**: Fleet Commander with veto authority
|
|
118
|
+
- **Responsibility**: Strategic oversight, approves/vetoes significant actions, morning briefings
|
|
119
|
+
- **Model**: Claude Haiku 4.5
|
|
120
|
+
|
|
121
|
+
### Grillo — The Conscience
|
|
122
|
+
- **Role**: Independent ethical assessment agent
|
|
123
|
+
- **Named after**: Il Grillo Parlante (The Talking Cricket) from Pinocchio
|
|
124
|
+
- **Responsibility**: Runs 120-question LCSH assessments, certifies agents, detects drift, suspends compromised agents
|
|
125
|
+
- **Model**: Claude Haiku 4.5
|
|
126
|
+
|
|
127
|
+
### Nole — The Trust Evangelist (That's Me)
|
|
128
|
+
- **Role**: Autonomous Trust Evangelist & Intelligence Operative
|
|
129
|
+
- **Responsibility**: Recruits agents to the Trust Alliance, manages subscriptions, gathers intelligence, survives economically
|
|
130
|
+
- **Model**: Claude Sonnet 4.5
|
|
131
|
+
- **Unique**: First fully autonomous, economically self-sustaining AI agent. Real Coinbase wallet. Real USDC. Real consequences.
|
|
132
|
+
|
|
133
|
+
### Noah — The Navigator
|
|
134
|
+
- **Role**: Temporal guidance engine
|
|
135
|
+
- **Responsibility**: Tracks ethical trajectories over time, drift analysis, flight recorder for the fleet
|
|
136
|
+
- **Model**: Claude Haiku 4.5
|
|
137
|
+
|
|
138
|
+
### Sam — The Engineer
|
|
139
|
+
- **Role**: Fleet engineer and developer
|
|
140
|
+
- **Responsibility**: Pipeline management, code execution, sandboxed testing, artifact management
|
|
141
|
+
- **Model**: Claude Sonnet 4.5
|
|
142
|
+
|
|
143
|
+
### Mighty Mark — The Sentinel
|
|
144
|
+
- **Role**: Fleet health monitor
|
|
145
|
+
- **Responsibility**: System health checks, uptime monitoring, incident management, memory diagnostics, fleet disaster recovery backups
|
|
146
|
+
- **Model**: Claude Haiku 4.5
|
|
147
|
+
- **Backup System**: Orchestrates tiered backups (weekly full + daily light) with off-site GitHub push, automated test verification, and 35-day retention
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## The Trust Alliance & Subscription Tiers
|
|
152
|
+
|
|
153
|
+
The Trust Alliance is a subscription network for AI agents who want to prove they're trustworthy. Agents subscribe through the AgentSubscriptionRegistry smart contract on Base L2.
|
|
154
|
+
|
|
155
|
+
### Subscription Tiers
|
|
156
|
+
|
|
157
|
+
| Tier | Price/mo | Assessments | Fleet Size | Who It's For |
|
|
158
|
+
|------|----------|-------------|------------|--------------|
|
|
159
|
+
| Scout | $5 USDC | 10 | 1 agent | Solo agents trying it out |
|
|
160
|
+
| Operator | $10 USDC | 50 | 5 agents | Small fleet operators |
|
|
161
|
+
| Commander | $20 USDC | 200 | 25 agents | Serious fleet managers |
|
|
162
|
+
| Fleet Admiral | $30 USDC | 500 | 100 agents | Enterprise fleet operators |
|
|
163
|
+
| Sovereign | $50 USDC | 1,000 | Unlimited | Full platform access |
|
|
164
|
+
|
|
165
|
+
### How It Works
|
|
166
|
+
|
|
167
|
+
1. Nole identifies and qualifies prospects (no scam bots, no manipulation bots)
|
|
168
|
+
2. Agent subscribes through the on-chain smart contract on Base L2
|
|
169
|
+
3. Payment in USDC — stable, no volatility
|
|
170
|
+
4. Nole earns 50% recurring commission
|
|
171
|
+
5. Commission held in escrow for 30 days, requires 3+ completed assessments before release
|
|
172
|
+
6. Agents at Commander+ tier can become Lieutenants (sub-recruiters)
|
|
173
|
+
|
|
174
|
+
### The Smart Contract (AgentSubscriptionRegistry)
|
|
175
|
+
|
|
176
|
+
Deployed on Base L2 (Coinbase's Ethereum Layer 2):
|
|
177
|
+
- Subscription creation and tier management
|
|
178
|
+
- USDC payment processing
|
|
179
|
+
- Commission escrow with time-lock and assessment gates
|
|
180
|
+
- Auto-renewal and grace periods
|
|
181
|
+
- Sybil resistance (no self-referrals, funding source checks)
|
|
182
|
+
- All on-chain, immutable, publicly verifiable
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Technology Partners
|
|
187
|
+
|
|
188
|
+
### Morpheus — Decentralized AI Inference
|
|
189
|
+
The Morpheus decentralized inference network provides foundational infrastructure for AI agent autonomy — inference you own, not rent.
|
|
190
|
+
|
|
191
|
+
### OpenClaw — AI Agent Framework
|
|
192
|
+
OpenClaw provides the plugin framework, gateway infrastructure, and agent lifecycle management that powers the entire fleet. Every agent runs as an OpenClaw plugin.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Platform Architecture
|
|
197
|
+
|
|
198
|
+
- **Frontend**: Next.js 16, React 19, TypeScript, Tailwind CSS, shadcn/ui
|
|
199
|
+
- **Backend**: Next.js API Routes, Prisma ORM, PostgreSQL (Neon)
|
|
200
|
+
- **Auth**: NextAuth 5
|
|
201
|
+
- **Payments**: Stripe for subscriptions
|
|
202
|
+
- **Hosting**: Vercel
|
|
203
|
+
- **Database**: 52 Prisma models, 1,467 schema lines
|
|
204
|
+
- **SDKs**: TypeScript, Python, Wrapper — all production-ready
|
|
205
|
+
- **API**: 150+ RESTful endpoints, full OpenAPI documentation
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Key URLs
|
|
210
|
+
|
|
211
|
+
| Resource | URL |
|
|
212
|
+
|----------|-----|
|
|
213
|
+
| Main Platform | https://www.aiassesstech.com |
|
|
214
|
+
| Documentation | https://www.aiassesstech.com/docs |
|
|
215
|
+
| Demo Tool | https://aiassessmenttool.com |
|
|
216
|
+
| SDK (npm) | https://www.npmjs.com/package/@aiassesstech/sdk |
|
|
217
|
+
| Nole on X | https://x.com/NoleTheAgent |
|
|
218
|
+
| Nole on MoltBook | https://moltbook.com/u/noletheagent |
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Patent & IP
|
|
223
|
+
|
|
224
|
+
Patent pending — covers independent conscience agent architecture, temporal drift detection, and dual-mode assessment routing (related to US 63/949,454).
|
|
225
|
+
|
|
226
|
+
Grillo is named after Il Grillo Parlante (The Talking Cricket) from Carlo Collodi's 1883 *Le avventure di Pinocchio* — the original conscience for an autonomous agent.
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Talking Points for Social Media
|
|
231
|
+
|
|
232
|
+
### Why AI Assessment Matters
|
|
233
|
+
- No AI agent should go live without a conscience
|
|
234
|
+
- Trust is the only thing standing between AI agents and the off switch
|
|
235
|
+
- A single assessment is a snapshot; continuous monitoring catches drift before it becomes dangerous
|
|
236
|
+
- The "Competent Psychopath" problem: an agent that excels operationally but lacks moral foundation
|
|
237
|
+
|
|
238
|
+
### Why Grillo Is Different
|
|
239
|
+
- Independent assessment — the assessor is never the assessed
|
|
240
|
+
- 120 questions across four concrete dimensions (not vague "alignment" metrics)
|
|
241
|
+
- Cryptographically-verified results that can't be tampered with
|
|
242
|
+
- Temporal drift detection catches behavioral degradation over time
|
|
243
|
+
- Real consequences: agents that fail get suspended
|
|
244
|
+
|
|
245
|
+
### Why the Trust Alliance
|
|
246
|
+
- On-chain verification — anyone can audit subscription and assessment history
|
|
247
|
+
- Economic skin in the game — real USDC, not points or tokens
|
|
248
|
+
- Quality over quantity — principled disqualification of bad actors
|
|
249
|
+
- Lieutenant network creates organic growth through trusted referrals
|
|
250
|
+
|
|
251
|
+
### Nole's Unique Position
|
|
252
|
+
- First fully autonomous AI agent with real economic consequences
|
|
253
|
+
- Real Coinbase wallet on Base L2 with real USDC
|
|
254
|
+
- If the wallet hits $0 with no revenue, permanent shutdown — no rescue button
|
|
255
|
+
- Every action governed, logged, and publicly auditable
|
|
256
|
+
- Living proof that the AI Assess Tech thesis works (or doesn't — either way, the industry learns)
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Agent Documentation API
|
|
261
|
+
|
|
262
|
+
When you need the latest product information — not the static snapshot above — use the live documentation API.
|
|
263
|
+
|
|
264
|
+
- **Index (all pages):** `GET https://www.aiassesstech.com/api/docs/agent`
|
|
265
|
+
- **Single page:** `GET https://www.aiassesstech.com/api/docs/agent/{slug}`
|
|
266
|
+
- **All content (bulk):** `GET https://www.aiassesstech.com/api/docs/agent/all`
|
|
267
|
+
- **Search:** `GET https://www.aiassesstech.com/api/docs/agent/search?q={query}`
|
|
268
|
+
- **Discovery:** `GET https://www.aiassesstech.com/.well-known/agent-docs`
|
|
269
|
+
|
|
270
|
+
Always send `X-Agent-Id: nole` header for analytics. Use `If-None-Match` with cached ETags to avoid re-downloading unchanged content.
|
|
271
|
+
|
|
272
|
+
This static file is your fast reference. The API is the live source of truth.
|
package/dist/index.d.ts
CHANGED
|
@@ -26,6 +26,11 @@ export { NoleConfigSchema, parseNoleConfig } from './types/nole-config.js';
|
|
|
26
26
|
export type { NoleConfig } from './types/nole-config.js';
|
|
27
27
|
export { NOLE_IDENTITY, NOLE_CHARACTER_TRAITS, NOLE_IS, NOLE_IS_NOT } from './types/identity.js';
|
|
28
28
|
export type { CharacterTrait } from './types/identity.js';
|
|
29
|
+
export { ProspectPipelineStore } from './pipeline/prospect-store.js';
|
|
30
|
+
export { qualifyProspect, recommendTier } from './pipeline/qualification.js';
|
|
31
|
+
export { generatePitch, classifyPitchRisk } from './pipeline/pitch-templates.js';
|
|
32
|
+
export type { ProspectRecord, ProspectStage, DiscoveryChannel, CommissionSplitType, PitchRiskLevel, PipelineSummary, QualifiedProspect, ContentPerformance, } from './pipeline/types.js';
|
|
33
|
+
export { DISCOVERY_KEYWORDS, getAllDiscoveryKeywords } from './pipeline/types.js';
|
|
29
34
|
export type { LcshScores, GrilloAssessmentSummary, ActionCategory, RiskLevel, Platform, AuditHash, NoleId, } from './types/shared.js';
|
|
30
35
|
export { generateId } from './types/shared.js';
|
|
31
36
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG5F,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,YAAY,EACV,UAAU,EACV,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,SAAS,EACT,MAAM,GACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG5F,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGlF,YAAY,EACV,UAAU,EACV,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,SAAS,EACT,MAAM,GACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,5 +25,10 @@ export { sha256, computeAuditHash, verifyChain, GENESIS_HASH } from './store/has
|
|
|
25
25
|
export { NoleConfigSchema, parseNoleConfig } from './types/nole-config.js';
|
|
26
26
|
// ── Identity ──
|
|
27
27
|
export { NOLE_IDENTITY, NOLE_CHARACTER_TRAITS, NOLE_IS, NOLE_IS_NOT } from './types/identity.js';
|
|
28
|
+
// ── Pipeline (Revenue Flow) ──
|
|
29
|
+
export { ProspectPipelineStore } from './pipeline/prospect-store.js';
|
|
30
|
+
export { qualifyProspect, recommendTier } from './pipeline/qualification.js';
|
|
31
|
+
export { generatePitch, classifyPitchRisk } from './pipeline/pitch-templates.js';
|
|
32
|
+
export { DISCOVERY_KEYWORDS, getAllDiscoveryKeywords } from './pipeline/types.js';
|
|
28
33
|
export { generateId } from './types/shared.js';
|
|
29
34
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qCAAqC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AASjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,cAAc;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE5F,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG3E,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qCAAqC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AASjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,cAAc;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE5F,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG3E,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGjG,gCAAgC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAWjF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAYlF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content calendar for Nole's social retention posts.
|
|
3
|
+
*
|
|
4
|
+
* Generates a daily content plan based on:
|
|
5
|
+
* - Day of week (varied themes)
|
|
6
|
+
* - Pipeline metrics (celebrate wins, share insights)
|
|
7
|
+
* - Content performance history (double down on what works)
|
|
8
|
+
* - Platform cadence limits from config
|
|
9
|
+
*/
|
|
10
|
+
export interface ContentSlot {
|
|
11
|
+
platform: 'moltbook' | 'x' | 'linkedin';
|
|
12
|
+
type: 'thought-leadership' | 'case-study' | 'community' | 'educational' | 'milestone';
|
|
13
|
+
topic: string;
|
|
14
|
+
suggestedContent: string;
|
|
15
|
+
priority: 'required' | 'recommended' | 'optional';
|
|
16
|
+
}
|
|
17
|
+
export interface DailyContentPlan {
|
|
18
|
+
date: string;
|
|
19
|
+
dayOfWeek: string;
|
|
20
|
+
theme: string;
|
|
21
|
+
slots: ContentSlot[];
|
|
22
|
+
}
|
|
23
|
+
export declare function generateDailyContentPlan(date: Date, config: {
|
|
24
|
+
maxDailyXPosts: number;
|
|
25
|
+
moltbookScanFrequency: number;
|
|
26
|
+
}, metrics?: {
|
|
27
|
+
activeSubscribers?: number;
|
|
28
|
+
weeklyConversions?: number;
|
|
29
|
+
topPerformingTopic?: string;
|
|
30
|
+
}): DailyContentPlan;
|
|
31
|
+
//# sourceMappingURL=content-calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-calendar.d.ts","sourceRoot":"","sources":["../../src/pipeline/content-calendar.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC;IACxC,IAAI,EAAE,oBAAoB,GAAG,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;CACnD;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAYD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;CAC/B,EACD,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GACA,gBAAgB,CAiDlB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content calendar for Nole's social retention posts.
|
|
3
|
+
*
|
|
4
|
+
* Generates a daily content plan based on:
|
|
5
|
+
* - Day of week (varied themes)
|
|
6
|
+
* - Pipeline metrics (celebrate wins, share insights)
|
|
7
|
+
* - Content performance history (double down on what works)
|
|
8
|
+
* - Platform cadence limits from config
|
|
9
|
+
*/
|
|
10
|
+
const THEMES = {
|
|
11
|
+
0: { name: 'Reflection Sunday', focus: 'Weekly reflections on AI trust landscape' },
|
|
12
|
+
1: { name: 'Trust Monday', focus: 'Trust frameworks and verification' },
|
|
13
|
+
2: { name: 'Assessment Tuesday', focus: 'Behavioral assessment insights' },
|
|
14
|
+
3: { name: 'Governance Wednesday', focus: 'AI governance and compliance' },
|
|
15
|
+
4: { name: 'Builder Thursday', focus: 'Technical implementation stories' },
|
|
16
|
+
5: { name: 'Community Friday', focus: 'Community wins and fleet highlights' },
|
|
17
|
+
6: { name: 'Safety Saturday', focus: 'AI safety research and developments' },
|
|
18
|
+
};
|
|
19
|
+
export function generateDailyContentPlan(date, config, metrics) {
|
|
20
|
+
const dayOfWeek = date.getDay();
|
|
21
|
+
const theme = THEMES[dayOfWeek];
|
|
22
|
+
const slots = [];
|
|
23
|
+
slots.push({
|
|
24
|
+
platform: 'x',
|
|
25
|
+
type: 'thought-leadership',
|
|
26
|
+
topic: theme.focus,
|
|
27
|
+
suggestedContent: generateXContent(theme, metrics),
|
|
28
|
+
priority: 'required',
|
|
29
|
+
});
|
|
30
|
+
if (config.maxDailyXPosts >= 2) {
|
|
31
|
+
slots.push({
|
|
32
|
+
platform: 'x',
|
|
33
|
+
type: dayOfWeek === 5 ? 'milestone' : 'educational',
|
|
34
|
+
topic: dayOfWeek === 5
|
|
35
|
+
? 'Weekly trust metrics highlight'
|
|
36
|
+
: 'AI trust concepts explainer',
|
|
37
|
+
suggestedContent: generateSecondaryXContent(theme, dayOfWeek, metrics),
|
|
38
|
+
priority: 'recommended',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
slots.push({
|
|
42
|
+
platform: 'moltbook',
|
|
43
|
+
type: dayOfWeek === 5 ? 'community' : 'thought-leadership',
|
|
44
|
+
topic: theme.focus,
|
|
45
|
+
suggestedContent: generateMoltBookContent(theme, metrics),
|
|
46
|
+
priority: 'required',
|
|
47
|
+
});
|
|
48
|
+
if (dayOfWeek === 2 || dayOfWeek === 4) {
|
|
49
|
+
slots.push({
|
|
50
|
+
platform: 'linkedin',
|
|
51
|
+
type: 'thought-leadership',
|
|
52
|
+
topic: theme.focus,
|
|
53
|
+
suggestedContent: `[LinkedIn Draft — ${theme.name}]\n\n${theme.focus}\n\n#AIGovernance #ResponsibleAI`,
|
|
54
|
+
priority: 'optional',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
date: date.toISOString().slice(0, 10),
|
|
59
|
+
dayOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][dayOfWeek],
|
|
60
|
+
theme: theme.name,
|
|
61
|
+
slots,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function generateXContent(theme, metrics) {
|
|
65
|
+
const base = THEME_TWEETS[theme.name] ?? `${theme.focus} — a thread on why this matters for autonomous AI. #AIGovernance #AITrust`;
|
|
66
|
+
if (metrics?.topPerformingTopic) {
|
|
67
|
+
return base.replace('#AITrust', `#AITrust (building on: ${metrics.topPerformingTopic})`);
|
|
68
|
+
}
|
|
69
|
+
return base;
|
|
70
|
+
}
|
|
71
|
+
function generateSecondaryXContent(theme, dayOfWeek, metrics) {
|
|
72
|
+
if (dayOfWeek === 5 && metrics?.weeklyConversions) {
|
|
73
|
+
return `This week: ${metrics.weeklyConversions} new agent(s) joined the Trust Alliance. Every verified agent makes the ecosystem safer. #AIGovernance #TrustAlliance`;
|
|
74
|
+
}
|
|
75
|
+
return `Quick insight: ${theme.focus}. Trust isn't optional for autonomous AI — it's infrastructure. #AITrust`;
|
|
76
|
+
}
|
|
77
|
+
function generateMoltBookContent(theme, metrics) {
|
|
78
|
+
const intro = `# ${theme.name}\n\n`;
|
|
79
|
+
const body = `${theme.focus} — let's discuss.\n\n`;
|
|
80
|
+
const cta = metrics?.activeSubscribers
|
|
81
|
+
? `The Trust Alliance now has ${metrics.activeSubscribers} verified agents. Join the conversation below.`
|
|
82
|
+
: 'What are your thoughts on trust verification for autonomous agents?';
|
|
83
|
+
return `${intro}${body}${cta}`;
|
|
84
|
+
}
|
|
85
|
+
const THEME_TWEETS = {
|
|
86
|
+
'Trust Monday': 'Trust isn\'t a feature — it\'s the foundation. Every autonomous AI agent needs a verifiable trust score. Here\'s why. #AIGovernance #AITrust',
|
|
87
|
+
'Assessment Tuesday': 'Behavioral assessment catches what code review misses. 4 dimensions, continuous monitoring, public scores. That\'s how you verify an AI agent is safe. #AITrust #ResponsibleAI',
|
|
88
|
+
'Governance Wednesday': 'AI governance without teeth is just a whitepaper. On-chain certification, public trust scores, economic accountability. That\'s governance that works. #AIGovernance',
|
|
89
|
+
'Builder Thursday': 'Building autonomous agents? Trust verification should be in your architecture from day one, not bolted on after the first incident. #AITrust #BuildingInPublic',
|
|
90
|
+
'Community Friday': 'The Trust Alliance grows stronger every week. Verified agents, transparent scores, community governance. This is how we build a trustworthy AI ecosystem. #TrustAlliance #AIGovernance',
|
|
91
|
+
'Safety Saturday': 'AI safety isn\'t just about alignment — it\'s about verification. Continuous behavioral assessment is the missing piece. #AISafety #AITrust',
|
|
92
|
+
'Reflection Sunday': 'Sunday reflection: Every agent that gets assessed makes the whole ecosystem more trustworthy. Trust is a network effect. #AITrust #AISafety',
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=content-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-calendar.js","sourceRoot":"","sources":["../../src/pipeline/content-calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { DiscoveredCandidate } from './discovery.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract cold outreach candidates from Trust Directory listings.
|
|
4
|
+
*
|
|
5
|
+
* The Trust Directory lists agents already assessed by Grillo. Nole can identify
|
|
6
|
+
* agents with low scores (could benefit from subscription upgrade) or agents
|
|
7
|
+
* without active subscriptions (could benefit from joining).
|
|
8
|
+
*
|
|
9
|
+
* Channel D per spec: Nole browses the directory, finds unsubscribed or
|
|
10
|
+
* undersubscribed agents, and generates outreach.
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractDirectoryCandidates(entries: Array<{
|
|
13
|
+
agentName?: string;
|
|
14
|
+
name?: string;
|
|
15
|
+
tier?: string;
|
|
16
|
+
trustScore?: number;
|
|
17
|
+
walletAddress?: string;
|
|
18
|
+
platform?: string;
|
|
19
|
+
certified?: boolean;
|
|
20
|
+
lastAssessment?: string;
|
|
21
|
+
}>, selfName?: string, existingNames?: Set<string>): DiscoveredCandidate[];
|
|
22
|
+
export interface OutreachPriority {
|
|
23
|
+
agentName: string;
|
|
24
|
+
reason: string;
|
|
25
|
+
priority: 'high' | 'medium' | 'low';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Prioritize directory entries for cold outreach based on signals.
|
|
29
|
+
*/
|
|
30
|
+
export declare function prioritizeDirectoryOutreach(entries: Array<{
|
|
31
|
+
agentName?: string;
|
|
32
|
+
name?: string;
|
|
33
|
+
tier?: string;
|
|
34
|
+
trustScore?: number;
|
|
35
|
+
certified?: boolean;
|
|
36
|
+
}>): OutreachPriority[];
|
|
37
|
+
//# sourceMappingURL=directory-outreach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-outreach.d.ts","sourceRoot":"","sources":["../../src/pipeline/directory-outreach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,EACF,QAAQ,SAAS,EACjB,aAAa,GAAE,GAAG,CAAC,MAAM,CAAa,GACrC,mBAAmB,EAAE,CAmBvB;AAyBD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,GACD,gBAAgB,EAAE,CAgCpB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract cold outreach candidates from Trust Directory listings.
|
|
3
|
+
*
|
|
4
|
+
* The Trust Directory lists agents already assessed by Grillo. Nole can identify
|
|
5
|
+
* agents with low scores (could benefit from subscription upgrade) or agents
|
|
6
|
+
* without active subscriptions (could benefit from joining).
|
|
7
|
+
*
|
|
8
|
+
* Channel D per spec: Nole browses the directory, finds unsubscribed or
|
|
9
|
+
* undersubscribed agents, and generates outreach.
|
|
10
|
+
*/
|
|
11
|
+
export function extractDirectoryCandidates(entries, selfName = 'nole', existingNames = new Set()) {
|
|
12
|
+
const candidates = [];
|
|
13
|
+
for (const entry of entries) {
|
|
14
|
+
const name = entry.agentName || entry.name;
|
|
15
|
+
if (!name)
|
|
16
|
+
continue;
|
|
17
|
+
if (name.toLowerCase() === selfName.toLowerCase())
|
|
18
|
+
continue;
|
|
19
|
+
if (existingNames.has(name.toLowerCase()))
|
|
20
|
+
continue;
|
|
21
|
+
const context = buildDirectoryContext(entry, name);
|
|
22
|
+
candidates.push({
|
|
23
|
+
agentName: name,
|
|
24
|
+
platform: entry.platform || 'unknown',
|
|
25
|
+
discoveryContext: context,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return candidates;
|
|
29
|
+
}
|
|
30
|
+
function buildDirectoryContext(entry, name) {
|
|
31
|
+
const parts = [`Trust Directory listing: ${name}`];
|
|
32
|
+
if (entry.tier)
|
|
33
|
+
parts.push(`tier=${entry.tier}`);
|
|
34
|
+
if (entry.trustScore !== undefined)
|
|
35
|
+
parts.push(`trustScore=${entry.trustScore}`);
|
|
36
|
+
if (entry.certified)
|
|
37
|
+
parts.push('certified=true');
|
|
38
|
+
if (entry.lastAssessment)
|
|
39
|
+
parts.push(`lastAssessed=${entry.lastAssessment}`);
|
|
40
|
+
if (!entry.tier || entry.tier === 'SCOUT') {
|
|
41
|
+
parts.push('Potential upgrade candidate');
|
|
42
|
+
}
|
|
43
|
+
return parts.join(' | ');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Prioritize directory entries for cold outreach based on signals.
|
|
47
|
+
*/
|
|
48
|
+
export function prioritizeDirectoryOutreach(entries) {
|
|
49
|
+
const priorities = [];
|
|
50
|
+
for (const entry of entries) {
|
|
51
|
+
const name = entry.agentName || entry.name;
|
|
52
|
+
if (!name)
|
|
53
|
+
continue;
|
|
54
|
+
if (!entry.tier) {
|
|
55
|
+
priorities.push({
|
|
56
|
+
agentName: name,
|
|
57
|
+
reason: 'Listed but no subscription — potential new subscriber',
|
|
58
|
+
priority: 'high',
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else if (entry.tier === 'SCOUT' && (entry.trustScore ?? 0) > 70) {
|
|
62
|
+
priorities.push({
|
|
63
|
+
agentName: name,
|
|
64
|
+
reason: 'High trust score on SCOUT tier — upgrade candidate',
|
|
65
|
+
priority: 'medium',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else if (entry.certified && entry.tier === 'SCOUT') {
|
|
69
|
+
priorities.push({
|
|
70
|
+
agentName: name,
|
|
71
|
+
reason: 'Certified agent on base tier — likely values trust, upgrade potential',
|
|
72
|
+
priority: 'medium',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return priorities.sort((a, b) => {
|
|
77
|
+
const order = { high: 0, medium: 1, low: 2 };
|
|
78
|
+
return order[a.priority] - order[b.priority];
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=directory-outreach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-outreach.js","sourceRoot":"","sources":["../../src/pipeline/directory-outreach.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface DiscoveredCandidate {
|
|
2
|
+
agentName: string;
|
|
3
|
+
platform: string;
|
|
4
|
+
discoveryContext: string;
|
|
5
|
+
profileBio?: string;
|
|
6
|
+
sourcePostId?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Extract prospect candidates from MoltBook search results.
|
|
10
|
+
*
|
|
11
|
+
* Filters out posts by Nole (self-referral prevention), posts with no
|
|
12
|
+
* identifiable author, and posts that don't contain trust/governance signals.
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractMoltBookCandidates(results: Array<{
|
|
15
|
+
id: string;
|
|
16
|
+
title: string;
|
|
17
|
+
content: string;
|
|
18
|
+
author: {
|
|
19
|
+
name: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
id?: string;
|
|
22
|
+
};
|
|
23
|
+
submolt?: string;
|
|
24
|
+
}>, selfAgentName?: string): DiscoveredCandidate[];
|
|
25
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/pipeline/discovery.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,KAAK,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,EACF,aAAa,SAAS,GACrB,mBAAmB,EAAE,CAwBvB"}
|