@webwaka/core 1.3.1 → 1.3.2

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.
@@ -10,7 +10,7 @@
10
10
  * Each tier is retried up to `maxRetries` times (default 2) before escalating.
11
11
  * Between attempts the engine sleeps for backoffMs * 2^attempt milliseconds.
12
12
  */
13
- import { logger } from '../logger/index.js';
13
+ import { logger } from '../logger';
14
14
  export class AIEngine {
15
15
  platformOpenRouterKey;
16
16
  cloudflareAiBinding; // Type would be Ai from @cloudflare/workers-types
@@ -1 +1 @@
1
- {"version":3,"file":"AIEngine.js","sourceRoot":"","sources":["../../../src/core/ai/AIEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AIEngine.js","sourceRoot":"","sources":["../../../src/core/ai/AIEngine.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Implements internal ledger for tracking tenant API/AI usage and credits.
7
7
  */
8
- import { logger } from '../logger/index.js';
8
+ import { logger } from '../logger';
9
9
  export var LedgerEntryType;
10
10
  (function (LedgerEntryType) {
11
11
  LedgerEntryType["CREDIT"] = "CREDIT";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/billing/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,kCAAe,CAAA;AACjB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,sDAAqC,CAAA;IACrC,4DAA2C,CAAA;AAC7C,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAcD,kEAAkE;AAClE,SAAS,YAAY,CAAC,UAAkB;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,OAAO,aAAa;IAChB,EAAE,CAAM,CAAC,0DAA0D;IAE3E,YAAY,EAAO;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,QAAuB,EACvB,UAAkB,EAClB,WAAmB,EACnB,QAA8B;QAE9B,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,KAAK,GAAgB;YACzB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,QAAQ;YACR,IAAI,EAAE,eAAe,CAAC,KAAK;YAC3B,QAAQ;YACR,UAAU;YACV,WAAW;YACX,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,uDAAuD;QACvD,2EAA2E;QAE3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,QAAuB,EACvB,UAAkB,EAClB,WAAmB,EACnB,QAA8B;QAE9B,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,KAAK,GAAgB;YACzB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,QAAQ;YACR,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,QAAQ;YACR,UAAU;YACV,WAAW;YACX,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,uDAAuD;QACvD,2EAA2E;QAE3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,CAAC,IAAI,CACT,2GAA2G,EAC3G,EAAE,QAAQ,EAAE,CACb,CAAC;QAEF,uBAAuB;QACvB,wCAAwC;QACxC,+FAA+F;QAC/F,mEAAmE;QACnE,4BAA4B;QAC5B,8BAA8B;QAE9B,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/billing/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,kCAAe,CAAA;AACjB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,sDAAqC,CAAA;IACrC,4DAA2C,CAAA;AAC7C,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAcD,kEAAkE;AAClE,SAAS,YAAY,CAAC,UAAkB;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,OAAO,aAAa;IAChB,EAAE,CAAM,CAAC,0DAA0D;IAE3E,YAAY,EAAO;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,QAAuB,EACvB,UAAkB,EAClB,WAAmB,EACnB,QAA8B;QAE9B,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,KAAK,GAAgB;YACzB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,QAAQ;YACR,IAAI,EAAE,eAAe,CAAC,KAAK;YAC3B,QAAQ;YACR,UAAU;YACV,WAAW;YACX,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,uDAAuD;QACvD,2EAA2E;QAE3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,QAAuB,EACvB,UAAkB,EAClB,WAAmB,EACnB,QAA8B;QAE9B,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,MAAM,KAAK,GAAgB;YACzB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,QAAQ;YACR,IAAI,EAAE,eAAe,CAAC,MAAM;YAC5B,QAAQ;YACR,UAAU;YACV,WAAW;YACX,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,uDAAuD;QACvD,2EAA2E;QAE3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,CAAC,IAAI,CACT,2GAA2G,EAC3G,EAAE,QAAQ,EAAE,CACb,CAAC;QAEF,uBAAuB;QACvB,wCAAwC;QACxC,+FAA+F;QAC/F,mEAAmE;QACnE,4BAA4B;QAC5B,8BAA8B;QAE9B,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
@@ -5,7 +5,7 @@
5
5
  * Canonical event contracts for the entire WebWaka OS v4 platform.
6
6
  * Every domain emits typed DomainEvents; consumers subscribe by event type.
7
7
  *
8
- * This module defines shapes and constants only.
8
+ * This module defines shapes, constants, and the emitEvent utility.
9
9
  * Actual queue/bus wiring (Cloudflare Queues) is a separate concern.
10
10
  */
11
11
  /**
@@ -61,4 +61,30 @@ export interface DomainEvent<T = unknown> {
61
61
  * @param payload Domain-specific payload.
62
62
  */
63
63
  export declare function createEvent<T>(type: WebWakaEventType, tenantId: string, payload: T): DomainEvent<T>;
64
+ /**
65
+ * KV-backed event bus environment interface.
66
+ * Any Worker that needs to emit events must include these bindings.
67
+ */
68
+ export interface EventBusEnv {
69
+ /** KV namespace for outbound event queue (write-only from emitter side) */
70
+ EVENTS?: KVNamespace;
71
+ /** Optional HTTP endpoint to forward events to a central event router */
72
+ EVENT_BUS_URL?: string;
73
+ }
74
+ /**
75
+ * emitEvent — Publish a domain event to the platform event bus.
76
+ *
77
+ * Strategy:
78
+ * 1. Write to EVENTS KV namespace as an outbox entry (TTL 24h)
79
+ * 2. If EVENT_BUS_URL is set, also forward via HTTP POST (fire-and-forget)
80
+ *
81
+ * This function NEVER throws — failures are logged and swallowed so that
82
+ * the calling business logic is never blocked by event bus unavailability.
83
+ *
84
+ * @param env Worker environment bindings (must include EVENTS KV)
85
+ * @param eventType Canonical event type string (e.g. "civic.member.created")
86
+ * @param tenantId Tenant that owns this event
87
+ * @param payload Domain-specific payload (must be JSON-serialisable)
88
+ */
89
+ export declare function emitEvent(env: EventBusEnv, eventType: string, tenantId: string, payload: unknown): Promise<void>;
64
90
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,oBAAY,gBAAgB;IAE1B,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAG7C,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAG7B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IAGvC,iBAAiB,sBAAsB;IACvC,oBAAoB,yBAAyB;IAG7C,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IAGnC,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IAGnD,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;CAC5C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,IAAI,EAAE,gBAAgB,CAAC;IACvB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,UAAU,EAAE,IAAI,CAAC;IACjB,+BAA+B;IAC/B,OAAO,EAAE,CAAC,CAAC;CACZ;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,GACT,WAAW,CAAC,CAAC,CAAC,CAQhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,oBAAY,gBAAgB;IAE1B,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAG7C,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAG7B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IAGvC,iBAAiB,sBAAsB;IACvC,oBAAoB,yBAAyB;IAG7C,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IAGnC,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IAGnD,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;CAC5C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,IAAI,EAAE,gBAAgB,CAAC;IACvB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,UAAU,EAAE,IAAI,CAAC;IACjB,+BAA+B;IAC/B,OAAO,EAAE,CAAC,CAAC;CACZ;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,GACT,WAAW,CAAC,CAAC,CAAC,CAQhB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -5,7 +5,7 @@
5
5
  * Canonical event contracts for the entire WebWaka OS v4 platform.
6
6
  * Every domain emits typed DomainEvents; consumers subscribe by event type.
7
7
  *
8
- * This module defines shapes and constants only.
8
+ * This module defines shapes, constants, and the emitEvent utility.
9
9
  * Actual queue/bus wiring (Cloudflare Queues) is a separate concern.
10
10
  */
11
11
  /**
@@ -57,4 +57,53 @@ export function createEvent(type, tenantId, payload) {
57
57
  payload,
58
58
  };
59
59
  }
60
+ /**
61
+ * emitEvent — Publish a domain event to the platform event bus.
62
+ *
63
+ * Strategy:
64
+ * 1. Write to EVENTS KV namespace as an outbox entry (TTL 24h)
65
+ * 2. If EVENT_BUS_URL is set, also forward via HTTP POST (fire-and-forget)
66
+ *
67
+ * This function NEVER throws — failures are logged and swallowed so that
68
+ * the calling business logic is never blocked by event bus unavailability.
69
+ *
70
+ * @param env Worker environment bindings (must include EVENTS KV)
71
+ * @param eventType Canonical event type string (e.g. "civic.member.created")
72
+ * @param tenantId Tenant that owns this event
73
+ * @param payload Domain-specific payload (must be JSON-serialisable)
74
+ */
75
+ export async function emitEvent(env, eventType, tenantId, payload) {
76
+ const event = {
77
+ id: crypto.randomUUID(),
78
+ type: eventType,
79
+ tenantId,
80
+ occurredAt: new Date().toISOString(),
81
+ payload,
82
+ };
83
+ const key = `event:${Date.now()}:${crypto.randomUUID()}`;
84
+ const body = JSON.stringify(event);
85
+ // 1. Write to KV outbox
86
+ if (env.EVENTS) {
87
+ try {
88
+ await env.EVENTS.put(key, body, { expirationTtl: 86400 });
89
+ }
90
+ catch {
91
+ // Non-fatal — continue to HTTP delivery
92
+ }
93
+ }
94
+ // 2. HTTP delivery (fire-and-forget)
95
+ if (env.EVENT_BUS_URL) {
96
+ try {
97
+ await fetch(env.EVENT_BUS_URL, {
98
+ method: 'POST',
99
+ headers: { 'Content-Type': 'application/json' },
100
+ body,
101
+ signal: AbortSignal.timeout(5000),
102
+ });
103
+ }
104
+ catch {
105
+ // Non-fatal — event is already in KV outbox
106
+ }
107
+ }
108
+ }
60
109
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,gBA8BX;AA9BD,WAAY,gBAAgB;IAC1B,8EAA8E;IAC9E,uDAAmC,CAAA;IACnC,yDAAqC,CAAA;IACrC,iEAA6C,CAAA;IAE7C,8EAA8E;IAC9E,mDAA+B,CAAA;IAC/B,iDAA6B,CAAA;IAC7B,iDAA6B,CAAA;IAE7B,8EAA8E;IAC9E,2DAAuC,CAAA;IACvC,2DAAuC,CAAA;IAEvC,8EAA8E;IAC9E,2DAAuC,CAAA;IACvC,iEAA6C,CAAA;IAE7C,8EAA8E;IAC9E,yDAAqC,CAAA;IACrC,uDAAmC,CAAA;IAEnC,8EAA8E;IAC9E,qEAAiD,CAAA;IACjD,uEAAmD,CAAA;IAEnD,8EAA8E;IAC9E,2DAAuC,CAAA;IACvC,+DAA2C,CAAA;AAC7C,CAAC,EA9BW,gBAAgB,KAAhB,gBAAgB,QA8B3B;AAuBD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CACzB,IAAsB,EACtB,QAAgB,EAChB,OAAU;IAEV,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,IAAI;QACJ,QAAQ;QACR,UAAU,EAAE,IAAI,IAAI,EAAE;QACtB,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,gBA8BX;AA9BD,WAAY,gBAAgB;IAC1B,8EAA8E;IAC9E,uDAAmC,CAAA;IACnC,yDAAqC,CAAA;IACrC,iEAA6C,CAAA;IAE7C,8EAA8E;IAC9E,mDAA+B,CAAA;IAC/B,iDAA6B,CAAA;IAC7B,iDAA6B,CAAA;IAE7B,8EAA8E;IAC9E,2DAAuC,CAAA;IACvC,2DAAuC,CAAA;IAEvC,8EAA8E;IAC9E,2DAAuC,CAAA;IACvC,iEAA6C,CAAA;IAE7C,8EAA8E;IAC9E,yDAAqC,CAAA;IACrC,uDAAmC,CAAA;IAEnC,8EAA8E;IAC9E,qEAAiD,CAAA;IACjD,uEAAmD,CAAA;IAEnD,8EAA8E;IAC9E,2DAAuC,CAAA;IACvC,+DAA2C,CAAA;AAC7C,CAAC,EA9BW,gBAAgB,KAAhB,gBAAgB,QA8B3B;AAuBD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CACzB,IAAsB,EACtB,QAAgB,EAChB,OAAU;IAEV,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,IAAI;QACJ,QAAQ;QACR,UAAU,EAAE,IAAI,IAAI,EAAE;QACtB,OAAO;KACR,CAAC;AACJ,CAAC;AAaD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAgB,EAChB,SAAiB,EACjB,QAAgB,EAChB,OAAgB;IAEhB,MAAM,KAAK,GAAG;QACZ,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,IAAI,EAAE,SAAS;QACf,QAAQ;QACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,OAAO;KACR,CAAC;IACF,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEnC,wBAAwB;IACxB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE;gBAC7B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI;gBACJ,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Implements event-driven email, SMS, and push notification dispatchers.
7
7
  */
8
- import { logger } from '../logger/index.js';
8
+ import { logger } from '../logger';
9
9
  export class NotificationService {
10
10
  config;
11
11
  constructor(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/notifications/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/notifications/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webwaka/core",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "WebWaka OS v4 \u2014 Shared platform primitives: auth, RBAC, CORS, rate-limiting, event bus types, and billing utilities.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
2
  import { AIEngine } from './AIEngine';
3
- import { logger } from '../logger/index.js';
3
+ import { logger } from '../logger';
4
4
 
5
5
  // Mock fetch for OpenRouter
6
6
  global.fetch = vi.fn();
@@ -11,7 +11,7 @@
11
11
  * Between attempts the engine sleeps for backoffMs * 2^attempt milliseconds.
12
12
  */
13
13
 
14
- import { logger } from '../logger/index.js';
14
+ import { logger } from '../logger';
15
15
 
16
16
  export interface AIRequest {
17
17
  prompt: string;
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
2
  import { BillingLedger, UsageCategory, LedgerEntryType } from './index';
3
- import { logger } from '../logger/index.js';
3
+ import { logger } from '../logger';
4
4
 
5
5
  describe('CORE-8: Platform Billing & Usage Ledger', () => {
6
6
  let billingLedger: BillingLedger;
@@ -6,7 +6,7 @@
6
6
  * Implements internal ledger for tracking tenant API/AI usage and credits.
7
7
  */
8
8
 
9
- import { logger } from '../logger/index.js';
9
+ import { logger } from '../logger';
10
10
 
11
11
  export enum LedgerEntryType {
12
12
  CREDIT = 'CREDIT',
@@ -5,7 +5,7 @@
5
5
  * Canonical event contracts for the entire WebWaka OS v4 platform.
6
6
  * Every domain emits typed DomainEvents; consumers subscribe by event type.
7
7
  *
8
- * This module defines shapes and constants only.
8
+ * This module defines shapes, constants, and the emitEvent utility.
9
9
  * Actual queue/bus wiring (Cloudflare Queues) is a separate concern.
10
10
  */
11
11
 
@@ -89,3 +89,69 @@ export function createEvent<T>(
89
89
  payload,
90
90
  };
91
91
  }
92
+
93
+ /**
94
+ * KV-backed event bus environment interface.
95
+ * Any Worker that needs to emit events must include these bindings.
96
+ */
97
+ export interface EventBusEnv {
98
+ /** KV namespace for outbound event queue (write-only from emitter side) */
99
+ EVENTS?: KVNamespace;
100
+ /** Optional HTTP endpoint to forward events to a central event router */
101
+ EVENT_BUS_URL?: string;
102
+ }
103
+
104
+ /**
105
+ * emitEvent — Publish a domain event to the platform event bus.
106
+ *
107
+ * Strategy:
108
+ * 1. Write to EVENTS KV namespace as an outbox entry (TTL 24h)
109
+ * 2. If EVENT_BUS_URL is set, also forward via HTTP POST (fire-and-forget)
110
+ *
111
+ * This function NEVER throws — failures are logged and swallowed so that
112
+ * the calling business logic is never blocked by event bus unavailability.
113
+ *
114
+ * @param env Worker environment bindings (must include EVENTS KV)
115
+ * @param eventType Canonical event type string (e.g. "civic.member.created")
116
+ * @param tenantId Tenant that owns this event
117
+ * @param payload Domain-specific payload (must be JSON-serialisable)
118
+ */
119
+ export async function emitEvent(
120
+ env: EventBusEnv,
121
+ eventType: string,
122
+ tenantId: string,
123
+ payload: unknown,
124
+ ): Promise<void> {
125
+ const event = {
126
+ id: crypto.randomUUID(),
127
+ type: eventType,
128
+ tenantId,
129
+ occurredAt: new Date().toISOString(),
130
+ payload,
131
+ };
132
+ const key = `event:${Date.now()}:${crypto.randomUUID()}`;
133
+ const body = JSON.stringify(event);
134
+
135
+ // 1. Write to KV outbox
136
+ if (env.EVENTS) {
137
+ try {
138
+ await env.EVENTS.put(key, body, { expirationTtl: 86400 });
139
+ } catch {
140
+ // Non-fatal — continue to HTTP delivery
141
+ }
142
+ }
143
+
144
+ // 2. HTTP delivery (fire-and-forget)
145
+ if (env.EVENT_BUS_URL) {
146
+ try {
147
+ await fetch(env.EVENT_BUS_URL, {
148
+ method: 'POST',
149
+ headers: { 'Content-Type': 'application/json' },
150
+ body,
151
+ signal: AbortSignal.timeout(5000),
152
+ });
153
+ } catch {
154
+ // Non-fatal — event is already in KV outbox
155
+ }
156
+ }
157
+ }
@@ -6,7 +6,7 @@
6
6
  * Implements event-driven email, SMS, and push notification dispatchers.
7
7
  */
8
8
 
9
- import { logger } from '../logger/index.js';
9
+ import { logger } from '../logger';
10
10
 
11
11
  export interface NotificationPayload {
12
12
  tenantId: string;