@aiassesstech/nole 0.5.0 → 0.6.1
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/agent/AGENTS.md +18 -0
- package/dist/compsi/api-client.d.ts +3 -1
- package/dist/compsi/api-client.d.ts.map +1 -1
- package/dist/compsi/api-client.js +34 -11
- package/dist/compsi/api-client.js.map +1 -1
- package/dist/intel/intel-store.d.ts +62 -0
- package/dist/intel/intel-store.d.ts.map +1 -0
- package/dist/intel/intel-store.js +242 -0
- package/dist/intel/intel-store.js.map +1 -0
- package/dist/intel/provenance.d.ts +16 -0
- package/dist/intel/provenance.d.ts.map +1 -0
- package/dist/intel/provenance.js +23 -0
- package/dist/intel/provenance.js.map +1 -0
- package/dist/intel/sensitivity-scanner.d.ts +25 -0
- package/dist/intel/sensitivity-scanner.d.ts.map +1 -0
- package/dist/intel/sensitivity-scanner.js +37 -0
- package/dist/intel/sensitivity-scanner.js.map +1 -0
- package/dist/pipeline/prospect-store.js +2 -2
- package/dist/pipeline/prospect-store.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +136 -34
- package/dist/plugin.js.map +1 -1
- package/dist/social/moltbook-client.d.ts +3 -1
- package/dist/social/moltbook-client.d.ts.map +1 -1
- package/dist/social/moltbook-client.js +35 -12
- package/dist/social/moltbook-client.js.map +1 -1
- package/dist/social/x-client.d.ts +3 -1
- package/dist/social/x-client.d.ts.map +1 -1
- package/dist/social/x-client.js +37 -15
- package/dist/social/x-client.js.map +1 -1
- package/dist/store/json-store.d.ts.map +1 -1
- package/dist/store/json-store.js +6 -7
- package/dist/store/json-store.js.map +1 -1
- package/dist/tools/nole-intel.d.ts +53 -0
- package/dist/tools/nole-intel.d.ts.map +1 -0
- package/dist/tools/nole-intel.js +178 -0
- package/dist/tools/nole-intel.js.map +1 -0
- package/openclaw.plugin.json +15 -7
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prospect-store.js","sourceRoot":"","sources":["../../src/pipeline/prospect-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUhD;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IACf,WAAW,CAAS;IACpB,UAAU,CAAS;IACnB,YAAY,CAAoB;IAEjD,YAAY,OAAe,EAAE,YAA+B;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAgF;QAEhF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAmB;YAC/B,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC;YAC1B,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,GAAG,IAAI;SACR,CAAC;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,WAAW,CACpB,
|
|
1
|
+
{"version":3,"file":"prospect-store.js","sourceRoot":"","sources":["../../src/pipeline/prospect-store.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;;;GAgBG;AAGH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAw9G/C"}
|
package/dist/plugin.js
CHANGED
|
@@ -15,6 +15,7 @@ import { MoltBookClient } from './social/moltbook-client.js';
|
|
|
15
15
|
import { XClient } from './social/x-client.js';
|
|
16
16
|
import { LinkedInDrafter } from './social/linkedin-drafter.js';
|
|
17
17
|
import { createMoltBookLimiter, createXLimiter } from './social/rate-limiter.js';
|
|
18
|
+
import { ResilientClient, ServiceRegistry, PostQueue, QueueDrain, PLATFORM_API_BREAKER, X_API_BREAKER, MOLTBOOK_API_BREAKER, } from './resilience/index.js';
|
|
18
19
|
import { ProspectPipelineStore } from './pipeline/prospect-store.js';
|
|
19
20
|
import { qualifyProspect } from './pipeline/qualification.js';
|
|
20
21
|
import { generatePitch, classifyPitchRisk } from './pipeline/pitch-templates.js';
|
|
@@ -76,6 +77,32 @@ export default function register(api) {
|
|
|
76
77
|
api.logger.warn(`[NOLE ESCALATION] ${review.proposal.actionType}: ${review.proposal.description}`);
|
|
77
78
|
}
|
|
78
79
|
});
|
|
80
|
+
// ── Resilience Layer — Circuit breakers, service registry, queue drain ──
|
|
81
|
+
const resilienceLogger = {
|
|
82
|
+
debug: (msg) => console.log(`[nole:resilience] ${msg}`),
|
|
83
|
+
warn: (msg) => console.warn(`[nole:resilience] ${msg}`),
|
|
84
|
+
error: (msg) => console.error(`[nole:resilience] ${msg}`),
|
|
85
|
+
};
|
|
86
|
+
const platformApiClient = new ResilientClient({
|
|
87
|
+
circuitBreaker: PLATFORM_API_BREAKER,
|
|
88
|
+
timeoutMs: 15_000,
|
|
89
|
+
logger: resilienceLogger,
|
|
90
|
+
});
|
|
91
|
+
const moltbookResilient = new ResilientClient({
|
|
92
|
+
circuitBreaker: MOLTBOOK_API_BREAKER,
|
|
93
|
+
timeoutMs: 15_000,
|
|
94
|
+
logger: resilienceLogger,
|
|
95
|
+
});
|
|
96
|
+
const xResilient = new ResilientClient({
|
|
97
|
+
circuitBreaker: X_API_BREAKER,
|
|
98
|
+
timeoutMs: 15_000,
|
|
99
|
+
logger: resilienceLogger,
|
|
100
|
+
});
|
|
101
|
+
const serviceRegistry = new ServiceRegistry();
|
|
102
|
+
serviceRegistry.register(platformApiClient);
|
|
103
|
+
serviceRegistry.register(moltbookResilient);
|
|
104
|
+
serviceRegistry.register(xResilient);
|
|
105
|
+
const postQueue = new PostQueue({ dataDir, maxQueueSize: 100, maxRetries: 5, maxAgeMs: 24 * 60 * 60 * 1000 });
|
|
79
106
|
// Wallet adapter (auto-detects Coinbase credentials from ~/.nole/credentials)
|
|
80
107
|
let wallet = new MockWalletAdapter(config.seedCapitalUsd);
|
|
81
108
|
// Platform API client — initialized after credentials load (see below)
|
|
@@ -83,7 +110,7 @@ export default function register(api) {
|
|
|
83
110
|
apiUrl: config.platformApiUrl,
|
|
84
111
|
apiKey: config.agentApiKey,
|
|
85
112
|
walletAddress: config.platformWalletAddress,
|
|
86
|
-
});
|
|
113
|
+
}, platformApiClient);
|
|
87
114
|
// Load credentials and initialize wallet + platform client.
|
|
88
115
|
// Credentials from ~/.nole/credentials provide fallback for agentApiKey and
|
|
89
116
|
// walletAddress when they aren't set in the openclaw.json plugin config.
|
|
@@ -99,7 +126,7 @@ export default function register(api) {
|
|
|
99
126
|
apiUrl: config.platformApiUrl,
|
|
100
127
|
apiKey,
|
|
101
128
|
walletAddress: walletAddr,
|
|
102
|
-
});
|
|
129
|
+
}, platformApiClient);
|
|
103
130
|
console.log(`[nole] Platform API: loaded credentials (apiKey: ${!!apiKey}, wallet: ${!!walletAddr})`);
|
|
104
131
|
}
|
|
105
132
|
}
|
|
@@ -123,7 +150,7 @@ export default function register(api) {
|
|
|
123
150
|
const moltbookLimiter = createMoltBookLimiter();
|
|
124
151
|
const xLimiter = createXLimiter();
|
|
125
152
|
const moltbook = config.moltbookApiKey
|
|
126
|
-
? new MoltBookClient({ apiKey: config.moltbookApiKey, baseUrl: config.moltbookBaseUrl }, moltbookLimiter)
|
|
153
|
+
? new MoltBookClient({ apiKey: config.moltbookApiKey, baseUrl: config.moltbookBaseUrl }, moltbookLimiter, moltbookResilient)
|
|
127
154
|
: null;
|
|
128
155
|
const xClient = config.xApiKey && config.xApiSecret && config.xAccessToken && config.xAccessTokenSecret
|
|
129
156
|
? new XClient({
|
|
@@ -132,7 +159,7 @@ export default function register(api) {
|
|
|
132
159
|
accessToken: config.xAccessToken,
|
|
133
160
|
accessTokenSecret: config.xAccessTokenSecret,
|
|
134
161
|
handle: config.xHandle,
|
|
135
|
-
}, xLimiter)
|
|
162
|
+
}, xLimiter, xResilient)
|
|
136
163
|
: null;
|
|
137
164
|
const linkedInDrafter = new LinkedInDrafter(dataDir);
|
|
138
165
|
linkedInDrafter.initialize().catch((err) => {
|
|
@@ -357,6 +384,58 @@ export default function register(api) {
|
|
|
357
384
|
console.log("[nole] Timeout processor stopped");
|
|
358
385
|
},
|
|
359
386
|
});
|
|
387
|
+
// --- Background Service: Queue drain for resilience post queue ---
|
|
388
|
+
const postSender = async (platform, content, metadata) => {
|
|
389
|
+
if (platform === 'moltbook' && moltbook) {
|
|
390
|
+
const result = await moltbook.createPost(metadata.submolt ?? 'ai-governance', metadata.title ?? 'Queued Post', content);
|
|
391
|
+
if (!result.ok)
|
|
392
|
+
throw new Error(result.error ?? `MoltBook post failed: HTTP ${result.status}`);
|
|
393
|
+
}
|
|
394
|
+
else if (platform === 'x-twitter' && xClient) {
|
|
395
|
+
const result = await xClient.postTweet(content);
|
|
396
|
+
if (!result.ok)
|
|
397
|
+
throw new Error(result.error ?? `X post failed: HTTP ${result.status}`);
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
throw new Error(`No client available for platform: ${platform}`);
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
const queueDrain = new QueueDrain(postQueue, serviceRegistry, postSender, {
|
|
404
|
+
intervalMs: 60_000,
|
|
405
|
+
batchSize: 5,
|
|
406
|
+
interPostDelayMs: 5_000,
|
|
407
|
+
logger: resilienceLogger,
|
|
408
|
+
});
|
|
409
|
+
api.registerService({
|
|
410
|
+
id: "nole-queue-drain",
|
|
411
|
+
start: () => {
|
|
412
|
+
queueDrain.start();
|
|
413
|
+
console.log("[nole] Queue drain started (60s interval)");
|
|
414
|
+
},
|
|
415
|
+
stop: () => {
|
|
416
|
+
queueDrain.stop();
|
|
417
|
+
console.log("[nole] Queue drain stopped");
|
|
418
|
+
},
|
|
419
|
+
});
|
|
420
|
+
// --- Background Service: Write service-health.json for Mighty Mark NC-9 ---
|
|
421
|
+
let _healthInterval = null;
|
|
422
|
+
api.registerService({
|
|
423
|
+
id: "nole-service-health-writer",
|
|
424
|
+
start: () => {
|
|
425
|
+
serviceRegistry.writeStatusFile(dataDir).catch(() => { });
|
|
426
|
+
_healthInterval = setInterval(() => {
|
|
427
|
+
serviceRegistry.writeStatusFile(dataDir).catch(() => { });
|
|
428
|
+
}, 60_000);
|
|
429
|
+
console.log("[nole] Service health writer started (60s interval)");
|
|
430
|
+
},
|
|
431
|
+
stop: () => {
|
|
432
|
+
if (_healthInterval) {
|
|
433
|
+
clearInterval(_healthInterval);
|
|
434
|
+
_healthInterval = null;
|
|
435
|
+
}
|
|
436
|
+
console.log("[nole] Service health writer stopped");
|
|
437
|
+
},
|
|
438
|
+
});
|
|
360
439
|
}
|
|
361
440
|
// ═══════════════════════════════════════════════════════
|
|
362
441
|
// NOLE TOOLS (Nole's own operations)
|
|
@@ -852,39 +931,61 @@ export default function register(api) {
|
|
|
852
931
|
}
|
|
853
932
|
},
|
|
854
933
|
});
|
|
934
|
+
// ── Intel Store + nole_intel tool (SPEC-fleet-knowledge-base-v1.2 §4) ──
|
|
935
|
+
let intelStoreInstance = null;
|
|
936
|
+
const getIntelStore = () => intelStoreInstance;
|
|
937
|
+
const initIntelStore = async () => {
|
|
938
|
+
if (intelStoreInstance)
|
|
939
|
+
return;
|
|
940
|
+
try {
|
|
941
|
+
const { IntelStore } = await import('./intel/intel-store.js');
|
|
942
|
+
const agentsDir = join(homedir(), '.openclaw', 'agents', 'nole');
|
|
943
|
+
intelStoreInstance = new IntelStore(agentsDir);
|
|
944
|
+
await intelStoreInstance.initialize();
|
|
945
|
+
console.log('[nole] Intel store initialized');
|
|
946
|
+
}
|
|
947
|
+
catch (err) {
|
|
948
|
+
console.warn(`[nole] Intel store init failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
949
|
+
}
|
|
950
|
+
};
|
|
855
951
|
api.registerTool({
|
|
856
|
-
name:
|
|
857
|
-
description:
|
|
858
|
-
|
|
952
|
+
name: 'nole_intel',
|
|
953
|
+
description: 'Intelligence knowledge base — query intel, list articles, ' +
|
|
954
|
+
'check health, request compilation via Sam. ' +
|
|
955
|
+
'Actions: query, list, read, health, request_compile, save_output.',
|
|
859
956
|
parameters: {
|
|
860
|
-
type:
|
|
861
|
-
properties: {
|
|
957
|
+
type: 'object',
|
|
958
|
+
properties: {
|
|
959
|
+
action: {
|
|
960
|
+
type: 'string',
|
|
961
|
+
enum: ['query', 'list', 'read', 'health', 'request_compile', 'save_output'],
|
|
962
|
+
description: 'query: search intel for a topic. list: show all articles. ' +
|
|
963
|
+
'read: read article by slug. health: report stale articles. ' +
|
|
964
|
+
'request_compile: dispatch compilation job to Sam. ' +
|
|
965
|
+
'save_output: save a generated report to outputs/.',
|
|
966
|
+
},
|
|
967
|
+
topic: { type: 'string', description: 'For query/request_compile: topic area.' },
|
|
968
|
+
slug: { type: 'string', description: 'For read: article slug.' },
|
|
969
|
+
content: { type: 'string', description: 'For save_output: content to save.' },
|
|
970
|
+
filename: { type: 'string', description: 'For save_output: output filename.' },
|
|
971
|
+
},
|
|
972
|
+
required: ['action'],
|
|
862
973
|
},
|
|
863
|
-
async execute(_toolCallId,
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
auditChainValid: stats.auditChainValid,
|
|
879
|
-
},
|
|
880
|
-
weeklyReport: {
|
|
881
|
-
status: "Not yet available — Phase 4 feature",
|
|
882
|
-
nextReportDay: config.weeklyReportDay,
|
|
883
|
-
},
|
|
884
|
-
},
|
|
885
|
-
}, null, 2),
|
|
886
|
-
}],
|
|
887
|
-
};
|
|
974
|
+
async execute(_toolCallId, params) {
|
|
975
|
+
if (!intelStoreInstance) {
|
|
976
|
+
await initIntelStore();
|
|
977
|
+
}
|
|
978
|
+
try {
|
|
979
|
+
const { createNoleIntelTool } = await import('./tools/nole-intel.js');
|
|
980
|
+
const tool = createNoleIntelTool(getIntelStore);
|
|
981
|
+
return tool.execute(_toolCallId, params);
|
|
982
|
+
}
|
|
983
|
+
catch (err) {
|
|
984
|
+
return {
|
|
985
|
+
content: [{ type: 'text', text: `Intel store error: ${err instanceof Error ? err.message : String(err)}` }],
|
|
986
|
+
isError: true,
|
|
987
|
+
};
|
|
988
|
+
}
|
|
888
989
|
},
|
|
889
990
|
});
|
|
890
991
|
api.registerTool({
|
|
@@ -2894,6 +2995,7 @@ export default function register(api) {
|
|
|
2894
2995
|
}
|
|
2895
2996
|
}
|
|
2896
2997
|
catch { /* decisions.md not present — skip silently */ }
|
|
2998
|
+
await initIntelStore();
|
|
2897
2999
|
});
|
|
2898
3000
|
if (typeof api.on === "function") {
|
|
2899
3001
|
api.on("before_prompt_build", () => {
|