@aiassesstech/nole 0.4.15 → 0.6.0

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 (59) hide show
  1. package/agent/AGENTS.md +18 -0
  2. package/dist/intel/intel-store.d.ts +62 -0
  3. package/dist/intel/intel-store.d.ts.map +1 -0
  4. package/dist/intel/intel-store.js +242 -0
  5. package/dist/intel/intel-store.js.map +1 -0
  6. package/dist/intel/provenance.d.ts +16 -0
  7. package/dist/intel/provenance.d.ts.map +1 -0
  8. package/dist/intel/provenance.js +23 -0
  9. package/dist/intel/provenance.js.map +1 -0
  10. package/dist/intel/sensitivity-scanner.d.ts +25 -0
  11. package/dist/intel/sensitivity-scanner.d.ts.map +1 -0
  12. package/dist/intel/sensitivity-scanner.js +37 -0
  13. package/dist/intel/sensitivity-scanner.js.map +1 -0
  14. package/dist/pipeline/prospect-store.js +2 -2
  15. package/dist/pipeline/prospect-store.js.map +1 -1
  16. package/dist/plugin.d.ts.map +1 -1
  17. package/dist/plugin.js +53 -30
  18. package/dist/plugin.js.map +1 -1
  19. package/dist/resilience/circuit-breaker.d.ts +46 -0
  20. package/dist/resilience/circuit-breaker.d.ts.map +1 -0
  21. package/dist/resilience/circuit-breaker.js +102 -0
  22. package/dist/resilience/circuit-breaker.js.map +1 -0
  23. package/dist/resilience/index.d.ts +8 -0
  24. package/dist/resilience/index.d.ts.map +1 -0
  25. package/dist/resilience/index.js +8 -0
  26. package/dist/resilience/index.js.map +1 -0
  27. package/dist/resilience/post-queue.d.ts +41 -0
  28. package/dist/resilience/post-queue.d.ts.map +1 -0
  29. package/dist/resilience/post-queue.js +106 -0
  30. package/dist/resilience/post-queue.js.map +1 -0
  31. package/dist/resilience/queue-drain.d.ts +35 -0
  32. package/dist/resilience/queue-drain.d.ts.map +1 -0
  33. package/dist/resilience/queue-drain.js +92 -0
  34. package/dist/resilience/queue-drain.js.map +1 -0
  35. package/dist/resilience/resilient-client.d.ts +54 -0
  36. package/dist/resilience/resilient-client.d.ts.map +1 -0
  37. package/dist/resilience/resilient-client.js +120 -0
  38. package/dist/resilience/resilient-client.js.map +1 -0
  39. package/dist/resilience/retry.d.ts +22 -0
  40. package/dist/resilience/retry.d.ts.map +1 -0
  41. package/dist/resilience/retry.js +68 -0
  42. package/dist/resilience/retry.js.map +1 -0
  43. package/dist/resilience/service-configs.d.ts +14 -0
  44. package/dist/resilience/service-configs.d.ts.map +1 -0
  45. package/dist/resilience/service-configs.js +45 -0
  46. package/dist/resilience/service-configs.js.map +1 -0
  47. package/dist/resilience/service-registry.d.ts +39 -0
  48. package/dist/resilience/service-registry.d.ts.map +1 -0
  49. package/dist/resilience/service-registry.js +82 -0
  50. package/dist/resilience/service-registry.js.map +1 -0
  51. package/dist/store/json-store.d.ts.map +1 -1
  52. package/dist/store/json-store.js +6 -7
  53. package/dist/store/json-store.js.map +1 -1
  54. package/dist/tools/nole-intel.d.ts +53 -0
  55. package/dist/tools/nole-intel.d.ts.map +1 -0
  56. package/dist/tools/nole-intel.js +178 -0
  57. package/dist/tools/nole-intel.js.map +1 -0
  58. package/openclaw.plugin.json +15 -7
  59. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/resilience/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,oBAAoB,EAAE,WAOlC,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAK3E;AAED,wBAAgB,WAAW,CACzB,aAAa,EAAE,MAAM,GAAG,KAAK,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAkBT;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAkB1F;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrE"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Retry logic — exponential backoff with jitter, Retry-After support.
3
+ *
4
+ * Retry is separate from the circuit breaker: the breaker decides whether
5
+ * to attempt at all, retry decides how many times to reattempt on failure.
6
+ *
7
+ * @see SPEC-nole-operational-resilience.md §4
8
+ */
9
+ export const DEFAULT_RETRY_CONFIG = {
10
+ maxRetries: 3,
11
+ baseDelayMs: 1_000,
12
+ maxDelayMs: 30_000,
13
+ jitterFactor: 0.25,
14
+ retryableStatusCodes: [429, 500, 502, 503, 504],
15
+ retryOnNetworkError: true,
16
+ };
17
+ export function calculateDelay(attempt, config) {
18
+ const exponentialDelay = config.baseDelayMs * Math.pow(2, attempt);
19
+ const cappedDelay = Math.min(exponentialDelay, config.maxDelayMs);
20
+ const jitter = cappedDelay * config.jitterFactor * (Math.random() * 2 - 1);
21
+ return Math.max(0, Math.round(cappedDelay + jitter));
22
+ }
23
+ export function isRetryable(statusOrError, config) {
24
+ if (typeof statusOrError === 'number') {
25
+ return config.retryableStatusCodes.includes(statusOrError);
26
+ }
27
+ if (!config.retryOnNetworkError)
28
+ return false;
29
+ const msg = statusOrError.message.toLowerCase();
30
+ return (msg.includes('econnrefused') ||
31
+ msg.includes('econnreset') ||
32
+ msg.includes('etimedout') ||
33
+ msg.includes('enotfound') ||
34
+ msg.includes('epipe') ||
35
+ msg.includes('socket hang up') ||
36
+ msg.includes('fetch failed') ||
37
+ msg.includes('abort'));
38
+ }
39
+ export function extractRetryAfter(headers) {
40
+ const value = headers instanceof Headers
41
+ ? headers.get('retry-after')
42
+ : headers['retry-after'];
43
+ if (!value)
44
+ return null;
45
+ const seconds = parseInt(value, 10);
46
+ if (!isNaN(seconds)) {
47
+ return seconds * 1000;
48
+ }
49
+ const date = new Date(value);
50
+ if (!isNaN(date.getTime())) {
51
+ return Math.max(0, date.getTime() - Date.now());
52
+ }
53
+ return null;
54
+ }
55
+ export function sleep(ms, signal) {
56
+ return new Promise((resolve, reject) => {
57
+ if (signal?.aborted) {
58
+ reject(new Error('Aborted'));
59
+ return;
60
+ }
61
+ const timer = setTimeout(resolve, ms);
62
+ signal?.addEventListener('abort', () => {
63
+ clearTimeout(timer);
64
+ reject(new Error('Aborted'));
65
+ }, { once: true });
66
+ });
67
+ }
68
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/resilience/retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Per-service circuit breaker configurations.
3
+ *
4
+ * Each service has different failure characteristics — these configs
5
+ * are tuned to match expected behavior and recovery patterns.
6
+ *
7
+ * @see SPEC-nole-operational-resilience.md §3.3
8
+ */
9
+ import type { CircuitBreakerConfig } from './circuit-breaker.js';
10
+ export declare const PLATFORM_API_BREAKER: Omit<CircuitBreakerConfig, 'onStateChange'>;
11
+ export declare const X_API_BREAKER: Omit<CircuitBreakerConfig, 'onStateChange'>;
12
+ export declare const MOLTBOOK_API_BREAKER: Omit<CircuitBreakerConfig, 'onStateChange'>;
13
+ export declare const BLOCKCHAIN_BREAKER: Omit<CircuitBreakerConfig, 'onStateChange'>;
14
+ //# sourceMappingURL=service-configs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-configs.d.ts","sourceRoot":"","sources":["../../src/resilience/service-configs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,eAAO,MAAM,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAQ5E,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAQrE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAQ5E,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAQ1E,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Per-service circuit breaker configurations.
3
+ *
4
+ * Each service has different failure characteristics — these configs
5
+ * are tuned to match expected behavior and recovery patterns.
6
+ *
7
+ * @see SPEC-nole-operational-resilience.md §3.3
8
+ */
9
+ export const PLATFORM_API_BREAKER = {
10
+ name: 'platform-api',
11
+ failureThreshold: 3,
12
+ failureWindowMs: 60_000,
13
+ cooldownMs: 30_000,
14
+ maxCooldownMs: 5 * 60_000,
15
+ cooldownMultiplier: 2,
16
+ failureStatusCodes: [500, 502, 503, 504],
17
+ };
18
+ export const X_API_BREAKER = {
19
+ name: 'x-twitter',
20
+ failureThreshold: 5,
21
+ failureWindowMs: 5 * 60_000,
22
+ cooldownMs: 2 * 60_000,
23
+ maxCooldownMs: 30 * 60_000,
24
+ cooldownMultiplier: 2,
25
+ failureStatusCodes: [500, 502, 503, 504],
26
+ };
27
+ export const MOLTBOOK_API_BREAKER = {
28
+ name: 'moltbook',
29
+ failureThreshold: 3,
30
+ failureWindowMs: 2 * 60_000,
31
+ cooldownMs: 60_000,
32
+ maxCooldownMs: 10 * 60_000,
33
+ cooldownMultiplier: 2,
34
+ failureStatusCodes: [500, 502, 503, 504],
35
+ };
36
+ export const BLOCKCHAIN_BREAKER = {
37
+ name: 'blockchain',
38
+ failureThreshold: 5,
39
+ failureWindowMs: 10 * 60_000,
40
+ cooldownMs: 5 * 60_000,
41
+ maxCooldownMs: 60 * 60_000,
42
+ cooldownMultiplier: 2,
43
+ failureStatusCodes: [500, 502, 503, 504],
44
+ };
45
+ //# sourceMappingURL=service-configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-configs.js","sourceRoot":"","sources":["../../src/resilience/service-configs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAgD;IAC/E,IAAI,EAAE,cAAc;IACpB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM;IACvB,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,CAAC,GAAG,MAAM;IACzB,kBAAkB,EAAE,CAAC;IACrB,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACzC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAgD;IACxE,IAAI,EAAE,WAAW;IACjB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC,GAAG,MAAM;IAC3B,UAAU,EAAE,CAAC,GAAG,MAAM;IACtB,aAAa,EAAE,EAAE,GAAG,MAAM;IAC1B,kBAAkB,EAAE,CAAC;IACrB,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACzC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAgD;IAC/E,IAAI,EAAE,UAAU;IAChB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC,GAAG,MAAM;IAC3B,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,EAAE,GAAG,MAAM;IAC1B,kBAAkB,EAAE,CAAC;IACrB,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACzC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAgD;IAC7E,IAAI,EAAE,YAAY;IAClB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,EAAE,GAAG,MAAM;IAC5B,UAAU,EAAE,CAAC,GAAG,MAAM;IACtB,aAAa,EAAE,EAAE,GAAG,MAAM;IAC1B,kBAAkB,EAAE,CAAC;IACrB,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACzC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Service Registry — Degraded-mode management.
3
+ *
4
+ * Tracks which external services are healthy, degraded, or down.
5
+ * Nole's business logic queries this to adapt behavior.
6
+ * Writes a status file that Mighty Mark can read (read-only contract).
7
+ *
8
+ * @see SPEC-nole-operational-resilience.md §6
9
+ */
10
+ import type { ResilientClient } from './resilient-client.js';
11
+ export type ServiceHealth = 'healthy' | 'degraded' | 'down';
12
+ export interface ServiceStatus {
13
+ name: string;
14
+ health: ServiceHealth;
15
+ circuitState: string;
16
+ failureCount: number;
17
+ lastSuccessfulCall: number | null;
18
+ lastFailedCall: number | null;
19
+ recentErrors: string[];
20
+ }
21
+ export interface RegistrySnapshot {
22
+ timestamp: number;
23
+ overallHealth: ServiceHealth;
24
+ services: Record<string, ServiceStatus>;
25
+ }
26
+ export declare class ServiceRegistry {
27
+ private clients;
28
+ private lastSuccess;
29
+ private lastFailure;
30
+ register(client: ResilientClient): void;
31
+ recordSuccess(serviceName: string): void;
32
+ recordFailure(serviceName: string): void;
33
+ getHealth(serviceName: string): ServiceHealth;
34
+ getOverallHealth(): ServiceHealth;
35
+ getSnapshot(): RegistrySnapshot;
36
+ writeStatusFile(dataDir: string): Promise<void>;
37
+ isAvailable(serviceName: string): boolean;
38
+ }
39
+ //# sourceMappingURL=service-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-registry.d.ts","sourceRoot":"","sources":["../../src/resilience/service-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,WAAW,CAA6B;IAEhD,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIvC,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIxC,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIxC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa;IAc7C,gBAAgB,IAAI,aAAa;IAUjC,WAAW,IAAI,gBAAgB;IAuBzB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;CAG1C"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Service Registry — Degraded-mode management.
3
+ *
4
+ * Tracks which external services are healthy, degraded, or down.
5
+ * Nole's business logic queries this to adapt behavior.
6
+ * Writes a status file that Mighty Mark can read (read-only contract).
7
+ *
8
+ * @see SPEC-nole-operational-resilience.md §6
9
+ */
10
+ import fs from 'node:fs';
11
+ import path from 'node:path';
12
+ export class ServiceRegistry {
13
+ clients = new Map();
14
+ lastSuccess = new Map();
15
+ lastFailure = new Map();
16
+ register(client) {
17
+ this.clients.set(client.serviceName, client);
18
+ }
19
+ recordSuccess(serviceName) {
20
+ this.lastSuccess.set(serviceName, Date.now());
21
+ }
22
+ recordFailure(serviceName) {
23
+ this.lastFailure.set(serviceName, Date.now());
24
+ }
25
+ getHealth(serviceName) {
26
+ const client = this.clients.get(serviceName);
27
+ if (!client)
28
+ return 'down';
29
+ const status = client.getCircuitStatus();
30
+ switch (status.state) {
31
+ case 'open': return 'down';
32
+ case 'half-open': return 'degraded';
33
+ case 'closed':
34
+ return status.failureCount > 0 ? 'degraded' : 'healthy';
35
+ }
36
+ }
37
+ getOverallHealth() {
38
+ let worst = 'healthy';
39
+ for (const [name] of this.clients) {
40
+ const health = this.getHealth(name);
41
+ if (health === 'down')
42
+ return 'down';
43
+ if (health === 'degraded')
44
+ worst = 'degraded';
45
+ }
46
+ return worst;
47
+ }
48
+ getSnapshot() {
49
+ const services = {};
50
+ for (const [name, client] of this.clients) {
51
+ const circuit = client.getCircuitStatus();
52
+ services[name] = {
53
+ name,
54
+ health: this.getHealth(name),
55
+ circuitState: circuit.state,
56
+ failureCount: circuit.failureCount,
57
+ lastSuccessfulCall: this.lastSuccess.get(name) ?? null,
58
+ lastFailedCall: this.lastFailure.get(name) ?? null,
59
+ recentErrors: circuit.recentFailures,
60
+ };
61
+ }
62
+ return {
63
+ timestamp: Date.now(),
64
+ overallHealth: this.getOverallHealth(),
65
+ services,
66
+ };
67
+ }
68
+ async writeStatusFile(dataDir) {
69
+ const snapshot = this.getSnapshot();
70
+ const statusPath = path.join(dataDir, 'service-health.json');
71
+ try {
72
+ await fs.promises.writeFile(statusPath, JSON.stringify(snapshot, null, 2), 'utf-8');
73
+ }
74
+ catch {
75
+ // Non-fatal — status file is informational
76
+ }
77
+ }
78
+ isAvailable(serviceName) {
79
+ return this.getHealth(serviceName) !== 'down';
80
+ }
81
+ }
82
+ //# sourceMappingURL=service-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-registry.js","sourceRoot":"","sources":["../../src/resilience/service-registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"json-store.d.ts","sourceRoot":"","sources":["../../src/store/json-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-store.d.ts","sourceRoot":"","sources":["../../src/store/json-store.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,7 @@ export class JsonNoleStore {
56
56
  async saveGovernanceResult(result) {
57
57
  await this.writeJson(join('governance', 'results', `${result.proposalId}.json`), result);
58
58
  await this.writeMemory({
59
- type: 'governance-decision',
59
+ type: 'governance',
60
60
  tags: ['governance', result.finalOutcome, result.proposal.riskLevel],
61
61
  title: `Governance Decision: ${result.finalOutcome} — ${result.proposalId}`,
62
62
  body: `Proposal \`${result.proposalId}\` resulted in **${result.finalOutcome}**.\n\nRisk level: ${result.proposal.riskLevel}`,
@@ -92,8 +92,8 @@ export class JsonNoleStore {
92
92
  async saveVetoRecord(record) {
93
93
  await this.writeJson(join('governance', 'vetoes', `${record.proposalId}.json`), record);
94
94
  await this.writeMemory({
95
- type: 'veto',
96
- tags: ['veto', record.actionType, record.proposalId],
95
+ type: 'governance',
96
+ tags: ['governance', 'veto', record.actionType, record.proposalId],
97
97
  title: `Veto: ${record.proposalId}`,
98
98
  body: `Proposal \`${record.proposalId}\` was vetoed.\n\nExplanation: ${record.explanation}\nAction type: ${record.actionType}`,
99
99
  metadata: { actionType: record.actionType },
@@ -141,7 +141,7 @@ export class JsonNoleStore {
141
141
  async saveAssessmentRecord(record) {
142
142
  await this.writeJson(join('assessments', `${record.id}.json`), record);
143
143
  await this.writeMemory({
144
- type: 'intelligence',
144
+ type: 'assessment',
145
145
  tags: ['assessment', record.trigger.type, record.id],
146
146
  title: `Assessment Record: ${record.id}`,
147
147
  body: `Assessment \`${record.id}\` triggered by **${record.trigger.type}**.\n\nGrillo archetype: ${record.grilloResult.archetype}`,
@@ -158,7 +158,7 @@ export class JsonNoleStore {
158
158
  async savePublishedScore(score) {
159
159
  await this.writeJson(join('scores', `${score.date}.json`), score);
160
160
  await this.writeMemory({
161
- type: 'score-published',
161
+ type: 'financial',
162
162
  tags: ['score', 'daily', score.date],
163
163
  title: `Daily Score Published: ${score.date}`,
164
164
  body: `Nole published daily score for **${score.date}**.`,
@@ -170,9 +170,8 @@ export class JsonNoleStore {
170
170
  // --- Social Interactions ---
171
171
  async saveSocialInteraction(interaction) {
172
172
  await this.writeJson(join('social', 'interactions', `${interaction.id}.json`), interaction);
173
- const memoryType = `social-outreach-${interaction.platform}`;
174
173
  await this.writeMemory({
175
- type: memoryType,
174
+ type: 'communication',
176
175
  tags: ['social', interaction.platform, interaction.action],
177
176
  title: `Social: ${interaction.platform} ${interaction.action}`,
178
177
  body: `${interaction.action} on ${interaction.platform}: ${interaction.contentPreview}`,
@@ -1 +1 @@
1
- {"version":3,"file":"json-store.js","sourceRoot":"","sources":["../../src/store/json-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-store.js","sourceRoot":"","sources":["../../src/store/json-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * nole_intel — Intelligence wiki tool for Nole.
3
+ *
4
+ * SPEC-fleet-knowledge-base-v1.2 §4.4:
5
+ * Same pattern as jessie_wiki (read-only operations, compilation via
6
+ * Sam dispatch) with Nole-specific compilation rules and intel categories.
7
+ */
8
+ import type { IntelStore } from '../intel/intel-store.js';
9
+ export declare function createNoleIntelTool(getIntelStore: () => IntelStore | null): {
10
+ name: string;
11
+ description: string;
12
+ parameters: {
13
+ type: "object";
14
+ properties: {
15
+ action: {
16
+ type: string;
17
+ enum: string[];
18
+ description: string;
19
+ };
20
+ topic: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ slug: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ content: {
29
+ type: string;
30
+ description: string;
31
+ };
32
+ filename: {
33
+ type: string;
34
+ description: string;
35
+ };
36
+ };
37
+ required: string[];
38
+ };
39
+ execute(_toolCallId: string, params: Record<string, unknown>): Promise<{
40
+ content: {
41
+ type: string;
42
+ text: string;
43
+ }[];
44
+ isError: boolean;
45
+ } | {
46
+ content: {
47
+ type: string;
48
+ text: string;
49
+ }[];
50
+ isError?: undefined;
51
+ }>;
52
+ };
53
+ //# sourceMappingURL=nole-intel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nole-intel.d.ts","sourceRoot":"","sources":["../../src/tools/nole-intel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAW1D,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,UAAU,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA6BT,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;EAmJrE"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * nole_intel — Intelligence wiki tool for Nole.
3
+ *
4
+ * SPEC-fleet-knowledge-base-v1.2 §4.4:
5
+ * Same pattern as jessie_wiki (read-only operations, compilation via
6
+ * Sam dispatch) with Nole-specific compilation rules and intel categories.
7
+ */
8
+ const NOLE_STALENESS_DEFAULTS = {
9
+ 'market-trend': 3,
10
+ 'trust-sentiment': 5,
11
+ 'prospect-profile': 7,
12
+ 'competitive-landscape': 14,
13
+ 'ecosystem-map': 14,
14
+ 'weekly-intel': 8,
15
+ };
16
+ export function createNoleIntelTool(getIntelStore) {
17
+ return {
18
+ name: 'nole_intel',
19
+ description: 'Intelligence knowledge base — query intel, list articles, ' +
20
+ 'check health, request compilation via Sam. ' +
21
+ 'Actions: query, list, read, health, request_compile, save_output.',
22
+ parameters: {
23
+ type: 'object',
24
+ properties: {
25
+ action: {
26
+ type: 'string',
27
+ enum: ['query', 'list', 'read', 'health', 'request_compile', 'save_output'],
28
+ description: 'query: search intel for a topic. ' +
29
+ 'list: show all articles in the index. ' +
30
+ 'read: read a specific article by slug. ' +
31
+ 'health: report stale articles, derived ratios, gaps. ' +
32
+ 'request_compile: dispatch a compilation job to Sam via fleet-bus. ' +
33
+ 'save_output: save a generated report to outputs/.',
34
+ },
35
+ topic: { type: 'string', description: 'For query/request_compile: topic area.' },
36
+ slug: { type: 'string', description: 'For read: article slug.' },
37
+ content: { type: 'string', description: 'For save_output: content to save.' },
38
+ filename: { type: 'string', description: 'For save_output: output filename.' },
39
+ },
40
+ required: ['action'],
41
+ },
42
+ async execute(_toolCallId, params) {
43
+ const store = getIntelStore();
44
+ if (!store) {
45
+ return {
46
+ content: [{ type: 'text', text: 'Intel store not initialized.' }],
47
+ isError: true,
48
+ };
49
+ }
50
+ const action = params.action;
51
+ switch (action) {
52
+ case 'list': {
53
+ const articles = store.listArticles();
54
+ if (articles.length === 0) {
55
+ return {
56
+ content: [{
57
+ type: 'text',
58
+ text: 'Intel is empty. Use "request_compile" to dispatch a compilation job to Sam.',
59
+ }],
60
+ };
61
+ }
62
+ const listing = articles.map(a => `- **${a.title}** (${a.slug}) [${a.category}] — ${a.summary} [updated: ${a.lastUpdated}]`).join('\n');
63
+ return {
64
+ content: [{ type: 'text', text: `## Intel Articles (${articles.length})\n\n${listing}` }],
65
+ };
66
+ }
67
+ case 'read': {
68
+ const slug = params.slug;
69
+ if (!slug)
70
+ return { content: [{ type: 'text', text: 'Missing: slug' }], isError: true };
71
+ const articleContent = store.getArticleContent(slug);
72
+ if (!articleContent)
73
+ return { content: [{ type: 'text', text: `Not found: ${slug}` }], isError: true };
74
+ return { content: [{ type: 'text', text: articleContent }] };
75
+ }
76
+ case 'health': {
77
+ const stale = store.getStaleArticlesByCategory(NOLE_STALENESS_DEFAULTS);
78
+ const highDerived = store.getHighDerivedArticles(0.5);
79
+ const index = store.getIndex();
80
+ const report = [
81
+ '## Intel Health Report',
82
+ '',
83
+ `Total articles: ${index.totalArticles}`,
84
+ `Last compiled: ${index.lastCompiled}`,
85
+ `Last health check: ${index.lastHealthCheck ?? 'never'}`,
86
+ '',
87
+ '### Stale Articles (per category threshold)',
88
+ stale.length === 0
89
+ ? 'None — all articles current.'
90
+ : stale.map(a => `- **${a.title}** (${a.slug}) [${a.category}] — updated ${a.lastUpdated}`).join('\n'),
91
+ '',
92
+ '### High Derived-Source Ratio (>50%)',
93
+ highDerived.length === 0
94
+ ? 'None — all articles are primarily sourced from raw signals.'
95
+ : highDerived.map(a => `- **${a.title}** — ${Math.round(a.derivedRatio * 100)}% derived sources (compounding-error risk)`).join('\n'),
96
+ '',
97
+ '### Action Items',
98
+ stale.length > 0 ? '- Re-compile stale articles with recent intel data.' : '',
99
+ highDerived.length > 0 ? '- Review high-derived articles and anchor claims to raw sources.' : '',
100
+ '- Verify all claims are backed by source intel files.',
101
+ ].filter(Boolean).join('\n');
102
+ store.recordHealthCheck();
103
+ return { content: [{ type: 'text', text: report }] };
104
+ }
105
+ case 'request_compile': {
106
+ const topic = params.topic || 'general';
107
+ return {
108
+ content: [{
109
+ type: 'text',
110
+ text: JSON.stringify({
111
+ protocol: 'Intel Compilation Request',
112
+ topic,
113
+ instructions: [
114
+ 'Dispatch this compilation job to Sam via fleet-bus fleet_dispatch.',
115
+ 'Sam will:',
116
+ ' 1. Read recent memory files from Nole workspace.',
117
+ ' 2. Query cross-agent context via fleet_memory_search if available.',
118
+ ' 3. Read the current intel INDEX.md.',
119
+ ' 4. Produce structured compilation output with source references.',
120
+ ' 5. Compute SHA-256 hashes for all source files.',
121
+ ' 6. Run sensitivity scan (REQUIRED for Nole intel).',
122
+ ' 7. Write articles with provenance frontmatter (if scan passes).',
123
+ ' 8. Log compilation event to decision store.',
124
+ '',
125
+ 'Use fleet_dispatch with: agentId: "sam", description: "intel-compile: ' + topic + ' for nole"',
126
+ ],
127
+ compilationRules: [
128
+ 'Lead with the insight, not the chronology.',
129
+ 'Every source must include SHA-256 hash at compilation time.',
130
+ 'Classify each source as "raw" (memory file) or "derived" (intel article).',
131
+ 'Run sensitivity scan before persisting — reject on match.',
132
+ 'Flag contradictions between sources explicitly.',
133
+ 'Distinguish between confirmed intel and inference.',
134
+ 'Preserve the Operator voice — analytical, precise, zero speculation.',
135
+ 'Never use expired outputs (check expires_at) as compilation sources.',
136
+ ],
137
+ }, null, 2),
138
+ }],
139
+ };
140
+ }
141
+ case 'save_output': {
142
+ const content = params.content;
143
+ const filename = params.filename;
144
+ if (!content || !filename) {
145
+ return { content: [{ type: 'text', text: 'Missing: content, filename' }], isError: true };
146
+ }
147
+ const outputPath = store.saveOutput(filename, content);
148
+ return { content: [{ type: 'text', text: `Output saved: ${outputPath}` }] };
149
+ }
150
+ case 'query': {
151
+ const topic = params.topic;
152
+ if (!topic)
153
+ return { content: [{ type: 'text', text: 'Missing: topic' }], isError: true };
154
+ const articles = store.listArticles();
155
+ const matches = articles.filter(a => a.title.toLowerCase().includes(topic.toLowerCase()) ||
156
+ a.tags.some(t => t.toLowerCase().includes(topic.toLowerCase())) ||
157
+ a.summary.toLowerCase().includes(topic.toLowerCase()) ||
158
+ a.category.toLowerCase().includes(topic.toLowerCase()));
159
+ if (matches.length === 0) {
160
+ return {
161
+ content: [{ type: 'text', text: `No articles match "${topic}". Use "request_compile" to generate new articles.` }],
162
+ };
163
+ }
164
+ const result = matches.map(a => `- **${a.title}** (${a.slug}) [${a.category}] — ${a.summary}`).join('\n');
165
+ return {
166
+ content: [{ type: 'text', text: `## Results for "${topic}"\n\n${result}\n\nUse "read" with a slug for the full article.` }],
167
+ };
168
+ }
169
+ default:
170
+ return {
171
+ content: [{ type: 'text', text: `Unknown action: ${action}. Valid: query, list, read, health, request_compile, save_output.` }],
172
+ isError: true,
173
+ };
174
+ }
175
+ },
176
+ };
177
+ }
178
+ //# sourceMappingURL=nole-intel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nole-intel.js","sourceRoot":"","sources":["../../src/tools/nole-intel.ts"],"names":[],"mappings":"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"}