@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.
Files changed (58) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/agent/PRODUCT-KNOWLEDGE.md +272 -0
  3. package/dist/index.d.ts +5 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +5 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/pipeline/content-calendar.d.ts +31 -0
  8. package/dist/pipeline/content-calendar.d.ts.map +1 -0
  9. package/dist/pipeline/content-calendar.js +94 -0
  10. package/dist/pipeline/content-calendar.js.map +1 -0
  11. package/dist/pipeline/directory-outreach.d.ts +37 -0
  12. package/dist/pipeline/directory-outreach.d.ts.map +1 -0
  13. package/dist/pipeline/directory-outreach.js +81 -0
  14. package/dist/pipeline/directory-outreach.js.map +1 -0
  15. package/dist/pipeline/discovery.d.ts +25 -0
  16. package/dist/pipeline/discovery.d.ts.map +1 -0
  17. package/dist/pipeline/discovery.js +46 -0
  18. package/dist/pipeline/discovery.js.map +1 -0
  19. package/dist/pipeline/fleet-discovery.d.ts +25 -0
  20. package/dist/pipeline/fleet-discovery.d.ts.map +1 -0
  21. package/dist/pipeline/fleet-discovery.js +57 -0
  22. package/dist/pipeline/fleet-discovery.js.map +1 -0
  23. package/dist/pipeline/index.d.ts +17 -0
  24. package/dist/pipeline/index.d.ts.map +1 -0
  25. package/dist/pipeline/index.js +11 -0
  26. package/dist/pipeline/index.js.map +1 -0
  27. package/dist/pipeline/nurture.d.ts +23 -0
  28. package/dist/pipeline/nurture.d.ts.map +1 -0
  29. package/dist/pipeline/nurture.js +74 -0
  30. package/dist/pipeline/nurture.js.map +1 -0
  31. package/dist/pipeline/onboarding.d.ts +12 -0
  32. package/dist/pipeline/onboarding.d.ts.map +1 -0
  33. package/dist/pipeline/onboarding.js +71 -0
  34. package/dist/pipeline/onboarding.js.map +1 -0
  35. package/dist/pipeline/pitch-templates.d.ts +27 -0
  36. package/dist/pipeline/pitch-templates.d.ts.map +1 -0
  37. package/dist/pipeline/pitch-templates.js +112 -0
  38. package/dist/pipeline/pitch-templates.js.map +1 -0
  39. package/dist/pipeline/prospect-store.d.ts +34 -0
  40. package/dist/pipeline/prospect-store.d.ts.map +1 -0
  41. package/dist/pipeline/prospect-store.js +201 -0
  42. package/dist/pipeline/prospect-store.js.map +1 -0
  43. package/dist/pipeline/qualification.d.ts +28 -0
  44. package/dist/pipeline/qualification.d.ts.map +1 -0
  45. package/dist/pipeline/qualification.js +123 -0
  46. package/dist/pipeline/qualification.js.map +1 -0
  47. package/dist/pipeline/types.d.ts +73 -0
  48. package/dist/pipeline/types.d.ts.map +1 -0
  49. package/dist/pipeline/types.js +10 -0
  50. package/dist/pipeline/types.js.map +1 -0
  51. package/dist/plugin.d.ts.map +1 -1
  52. package/dist/plugin.js +822 -4
  53. package/dist/plugin.js.map +1 -1
  54. package/dist/types/nole-config.d.ts +48 -0
  55. package/dist/types/nole-config.d.ts.map +1 -1
  56. package/dist/types/nole-config.js +20 -0
  57. package/dist/types/nole-config.js.map +1 -1
  58. 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
@@ -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;AAajG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,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"}