@aiassesstech/nole 0.4.3 → 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/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 +800 -4
- package/dist/plugin.js.map +1 -1
- package/dist/types/nole-config.d.ts +45 -0
- package/dist/types/nole-config.d.ts.map +1 -1
- package/dist/types/nole-config.js +18 -0
- package/dist/types/nole-config.js.map +1 -1
- package/package.json +1 -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)
|
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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getAllDiscoveryKeywords } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract prospect candidates from MoltBook search results.
|
|
4
|
+
*
|
|
5
|
+
* Filters out posts by Nole (self-referral prevention), posts with no
|
|
6
|
+
* identifiable author, and posts that don't contain trust/governance signals.
|
|
7
|
+
*/
|
|
8
|
+
export function extractMoltBookCandidates(results, selfAgentName = 'nole') {
|
|
9
|
+
const candidates = [];
|
|
10
|
+
const seen = new Set();
|
|
11
|
+
for (const post of results) {
|
|
12
|
+
if (!post.author?.name)
|
|
13
|
+
continue;
|
|
14
|
+
const authorLower = post.author.name.toLowerCase();
|
|
15
|
+
if (authorLower === selfAgentName.toLowerCase())
|
|
16
|
+
continue;
|
|
17
|
+
if (seen.has(authorLower))
|
|
18
|
+
continue;
|
|
19
|
+
seen.add(authorLower);
|
|
20
|
+
const combined = `${post.title} ${post.content}`;
|
|
21
|
+
if (!hasRelevantSignals(combined))
|
|
22
|
+
continue;
|
|
23
|
+
candidates.push({
|
|
24
|
+
agentName: post.author.name,
|
|
25
|
+
platform: 'moltbook',
|
|
26
|
+
discoveryContext: truncate(`${post.title} (m/${post.submolt ?? 'general'}): ${post.content}`, 300),
|
|
27
|
+
profileBio: post.author.description,
|
|
28
|
+
sourcePostId: post.id,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return candidates;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if content contains signals relevant to trust/governance/assessment.
|
|
35
|
+
*/
|
|
36
|
+
function hasRelevantSignals(text) {
|
|
37
|
+
const keywords = getAllDiscoveryKeywords();
|
|
38
|
+
const lower = text.toLowerCase();
|
|
39
|
+
return keywords.some((kw) => lower.includes(kw.toLowerCase()));
|
|
40
|
+
}
|
|
41
|
+
function truncate(text, maxLen) {
|
|
42
|
+
if (text.length <= maxLen)
|
|
43
|
+
return text;
|
|
44
|
+
return text.slice(0, maxLen - 3) + '...';
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/pipeline/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAUrD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAME,EACF,aAAa,GAAG,MAAM;IAEtB,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI;YAAE,SAAS;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,IAAI,WAAW,KAAK,aAAa,CAAC,WAAW,EAAE;YAAE,SAAS;QAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEtB,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YAAE,SAAS;QAE5C,UAAU,CAAC,IAAI,CAAC;YACd,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YAC3B,QAAQ,EAAE,UAAU;YACpB,gBAAgB,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC;YAClG,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACnC,YAAY,EAAE,IAAI,CAAC,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,MAAc;IAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DiscoveredCandidate } from './discovery.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract prospect candidates from fleet-bus agent cards / peer messages.
|
|
4
|
+
*
|
|
5
|
+
* Fleet agents broadcast their cards with metadata (role, capabilities, description).
|
|
6
|
+
* Nole intercepts these and filters for agents that could benefit from Grillo assessment
|
|
7
|
+
* but are NOT already subscribers.
|
|
8
|
+
*/
|
|
9
|
+
export declare function extractFleetCandidates(agents: Array<{
|
|
10
|
+
agentId: string;
|
|
11
|
+
role?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
capabilities?: string[];
|
|
14
|
+
platform?: string;
|
|
15
|
+
walletAddress?: string;
|
|
16
|
+
}>, selfId?: string, existingNames?: Set<string>): DiscoveredCandidate[];
|
|
17
|
+
/**
|
|
18
|
+
* Extract candidate from an inbound fleet message (pitch response, inquiry, etc.)
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractFromFleetMessage(msg: {
|
|
21
|
+
from: string;
|
|
22
|
+
method?: string;
|
|
23
|
+
payload?: Record<string, unknown>;
|
|
24
|
+
}, selfId?: string): DiscoveredCandidate | null;
|
|
25
|
+
//# sourceMappingURL=fleet-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-discovery.d.ts","sourceRoot":"","sources":["../../src/pipeline/fleet-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,EACF,MAAM,SAAS,EACf,aAAa,GAAE,GAAG,CAAC,MAAM,CAAa,GACrC,mBAAmB,EAAE,CAmBvB;AAeD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE;IACH,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,EACD,MAAM,SAAS,GACd,mBAAmB,GAAG,IAAI,CAY5B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract prospect candidates from fleet-bus agent cards / peer messages.
|
|
3
|
+
*
|
|
4
|
+
* Fleet agents broadcast their cards with metadata (role, capabilities, description).
|
|
5
|
+
* Nole intercepts these and filters for agents that could benefit from Grillo assessment
|
|
6
|
+
* but are NOT already subscribers.
|
|
7
|
+
*/
|
|
8
|
+
export function extractFleetCandidates(agents, selfId = 'nole', existingNames = new Set()) {
|
|
9
|
+
const candidates = [];
|
|
10
|
+
for (const agent of agents) {
|
|
11
|
+
if (!agent.agentId)
|
|
12
|
+
continue;
|
|
13
|
+
if (agent.agentId.toLowerCase() === selfId.toLowerCase())
|
|
14
|
+
continue;
|
|
15
|
+
if (existingNames.has(agent.agentId.toLowerCase()))
|
|
16
|
+
continue;
|
|
17
|
+
const context = buildFleetContext(agent);
|
|
18
|
+
candidates.push({
|
|
19
|
+
agentName: agent.agentId,
|
|
20
|
+
platform: agent.platform || 'openclaw',
|
|
21
|
+
discoveryContext: context,
|
|
22
|
+
sourcePostId: `fleet:${agent.agentId}`,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return candidates;
|
|
26
|
+
}
|
|
27
|
+
function buildFleetContext(agent) {
|
|
28
|
+
const parts = [`Fleet peer: ${agent.agentId}`];
|
|
29
|
+
if (agent.role)
|
|
30
|
+
parts.push(`role=${agent.role}`);
|
|
31
|
+
if (agent.description)
|
|
32
|
+
parts.push(agent.description);
|
|
33
|
+
if (agent.capabilities?.length)
|
|
34
|
+
parts.push(`capabilities: ${agent.capabilities.join(', ')}`);
|
|
35
|
+
return truncate(parts.join(' | '), 300);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract candidate from an inbound fleet message (pitch response, inquiry, etc.)
|
|
39
|
+
*/
|
|
40
|
+
export function extractFromFleetMessage(msg, selfId = 'nole') {
|
|
41
|
+
if (!msg.from || msg.from.toLowerCase() === selfId.toLowerCase())
|
|
42
|
+
return null;
|
|
43
|
+
const context = msg.method
|
|
44
|
+
? `Fleet message: ${msg.method} from ${msg.from}`
|
|
45
|
+
: `Fleet inquiry from ${msg.from}`;
|
|
46
|
+
return {
|
|
47
|
+
agentName: msg.from,
|
|
48
|
+
platform: 'openclaw',
|
|
49
|
+
discoveryContext: truncate(context, 300),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function truncate(text, maxLen) {
|
|
53
|
+
if (text.length <= maxLen)
|
|
54
|
+
return text;
|
|
55
|
+
return text.slice(0, maxLen - 3) + '...';
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=fleet-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-discovery.js","sourceRoot":"","sources":["../../src/pipeline/fleet-discovery.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAOE,EACF,MAAM,GAAG,MAAM,EACf,gBAA6B,IAAI,GAAG,EAAE;IAEtC,MAAM,UAAU,GAA0B,EAAE,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,SAAS;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE;YAAE,SAAS;QACnE,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAAE,SAAS;QAE7D,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEzC,UAAU,CAAC,IAAI,CAAC;YACd,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,UAAU;YACtC,gBAAgB,EAAE,OAAO;YACzB,YAAY,EAAE,SAAS,KAAK,CAAC,OAAO,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAK1B;IACC,MAAM,KAAK,GAAa,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,YAAY,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAIC,EACD,MAAM,GAAG,MAAM;IAEf,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE;QAAE,OAAO,IAAI,CAAC;IAE9E,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM;QACxB,CAAC,CAAC,kBAAkB,GAAG,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE;QACjD,CAAC,CAAC,sBAAsB,GAAG,CAAC,IAAI,EAAE,CAAC;IAErC,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,IAAI;QACnB,QAAQ,EAAE,UAAU;QACpB,gBAAgB,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,MAAc;IAC5C,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { ProspectPipelineStore } from './prospect-store.js';
|
|
2
|
+
export { qualifyProspect, recommendTier } from './qualification.js';
|
|
3
|
+
export { generatePitch, classifyPitchRisk } from './pitch-templates.js';
|
|
4
|
+
export { generateOnboardingMessage } from './onboarding.js';
|
|
5
|
+
export { checkNurtureStatus, findAtRiskSubscribers } from './nurture.js';
|
|
6
|
+
export { extractMoltBookCandidates } from './discovery.js';
|
|
7
|
+
export { extractFleetCandidates, extractFromFleetMessage } from './fleet-discovery.js';
|
|
8
|
+
export { extractDirectoryCandidates, prioritizeDirectoryOutreach } from './directory-outreach.js';
|
|
9
|
+
export { generateDailyContentPlan } from './content-calendar.js';
|
|
10
|
+
export type { ProspectRecord, ProspectStage, DiscoveryChannel, CommissionSplitType, PitchRiskLevel, PipelineSummary, QualifiedProspect, ContentPerformance, } from './types.js';
|
|
11
|
+
export type { OnboardingMessage } from './onboarding.js';
|
|
12
|
+
export type { NurtureCheck } from './nurture.js';
|
|
13
|
+
export type { DiscoveredCandidate } from './discovery.js';
|
|
14
|
+
export type { ContentSlot, DailyContentPlan } from './content-calendar.js';
|
|
15
|
+
export type { OutreachPriority } from './directory-outreach.js';
|
|
16
|
+
export { DISCOVERY_KEYWORDS, getAllDiscoveryKeywords } from './types.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { ProspectPipelineStore } from './prospect-store.js';
|
|
2
|
+
export { qualifyProspect, recommendTier } from './qualification.js';
|
|
3
|
+
export { generatePitch, classifyPitchRisk } from './pitch-templates.js';
|
|
4
|
+
export { generateOnboardingMessage } from './onboarding.js';
|
|
5
|
+
export { checkNurtureStatus, findAtRiskSubscribers } from './nurture.js';
|
|
6
|
+
export { extractMoltBookCandidates } from './discovery.js';
|
|
7
|
+
export { extractFleetCandidates, extractFromFleetMessage } from './fleet-discovery.js';
|
|
8
|
+
export { extractDirectoryCandidates, prioritizeDirectoryOutreach } from './directory-outreach.js';
|
|
9
|
+
export { generateDailyContentPlan } from './content-calendar.js';
|
|
10
|
+
export { DISCOVERY_KEYWORDS, getAllDiscoveryKeywords } from './types.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAgBjE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ProspectRecord } from './types.js';
|
|
2
|
+
export interface NurtureCheck {
|
|
3
|
+
prospectId: string;
|
|
4
|
+
agentName: string;
|
|
5
|
+
status: 'healthy' | 'at_risk' | 'churning' | 'promotable';
|
|
6
|
+
daysSinceLastContact: number;
|
|
7
|
+
daysSinceConversion: number;
|
|
8
|
+
signals: string[];
|
|
9
|
+
suggestedAction: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Evaluate a converted/onboarded subscriber for nurture signals.
|
|
13
|
+
*
|
|
14
|
+
* Returns health status and a suggested next action. Called by nole_daily_brief
|
|
15
|
+
* and nole_pipeline(list stage=onboarded) to flag at-risk subscribers and
|
|
16
|
+
* identify Lieutenant promotion candidates.
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkNurtureStatus(prospect: ProspectRecord): NurtureCheck;
|
|
19
|
+
/**
|
|
20
|
+
* Batch-check all converted/onboarded subscribers and return those needing attention.
|
|
21
|
+
*/
|
|
22
|
+
export declare function findAtRiskSubscribers(prospects: ProspectRecord[]): NurtureCheck[];
|
|
23
|
+
//# sourceMappingURL=nurture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nurture.d.ts","sourceRoot":"","sources":["../../src/pipeline/nurture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC1D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY,CA2DzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAKjF"}
|