@proletariat/cli 0.3.64 → 0.3.65

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 (36) hide show
  1. package/dist/commands/work/start.js +122 -99
  2. package/dist/commands/work/start.js.map +1 -1
  3. package/dist/lib/database/index.d.ts +1 -1
  4. package/dist/lib/database/index.js +9 -107
  5. package/dist/lib/database/index.js.map +1 -1
  6. package/dist/lib/database/migrations/0001_baseline.d.ts +9 -0
  7. package/dist/lib/database/migrations/0001_baseline.js +18 -0
  8. package/dist/lib/database/migrations/0001_baseline.js.map +1 -0
  9. package/dist/lib/database/migrations/index.d.ts +12 -0
  10. package/dist/lib/database/migrations/index.js +15 -0
  11. package/dist/lib/database/migrations/index.js.map +1 -0
  12. package/dist/lib/database/migrator.d.ts +27 -0
  13. package/dist/lib/database/migrator.js +42 -0
  14. package/dist/lib/database/migrator.js.map +1 -0
  15. package/dist/lib/database/workspace-schema.d.ts +7 -0
  16. package/dist/lib/database/workspace-schema.js +109 -0
  17. package/dist/lib/database/workspace-schema.js.map +1 -0
  18. package/dist/lib/events/events.d.ts +5 -0
  19. package/dist/lib/events/index.d.ts +1 -1
  20. package/dist/lib/events/index.js.map +1 -1
  21. package/dist/lib/external-issues/outbound-sync.d.ts +21 -16
  22. package/dist/lib/external-issues/outbound-sync.js +64 -49
  23. package/dist/lib/external-issues/outbound-sync.js.map +1 -1
  24. package/dist/lib/pmo/sync-manager.js +5 -1
  25. package/dist/lib/pmo/sync-manager.js.map +1 -1
  26. package/dist/lib/work-lifecycle/adapter.d.ts +34 -0
  27. package/dist/lib/work-lifecycle/adapter.js +103 -0
  28. package/dist/lib/work-lifecycle/adapter.js.map +1 -0
  29. package/dist/lib/work-lifecycle/events.d.ts +52 -0
  30. package/dist/lib/work-lifecycle/events.js +12 -0
  31. package/dist/lib/work-lifecycle/events.js.map +1 -0
  32. package/dist/lib/work-lifecycle/index.d.ts +9 -0
  33. package/dist/lib/work-lifecycle/index.js +9 -0
  34. package/dist/lib/work-lifecycle/index.js.map +1 -0
  35. package/oclif.manifest.json +2700 -2700
  36. package/package.json +1 -1
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * Outbound Sync Handler
3
3
  *
4
- * Listens for ticket state changes on the EventBus and pushes them
5
- * to external issue trackers (Linear, Shortcut, etc.) via their
4
+ * Listens for work-lifecycle domain events on the EventBus and pushes
5
+ * changes to external issue trackers (Linear, Shortcut, etc.) via their
6
6
  * respective adapters.
7
7
  *
8
- * The handler is provider-agnostic: it resolves which external provider
9
- * a ticket is mapped to, then dispatches to the correct sync implementation.
8
+ * Subscribes to work:* events (provider-agnostic), NOT ticket:* events.
9
+ * The work-lifecycle adapter layer translates provider-specific events
10
+ * into these domain events, keeping PMO as just another provider.
10
11
  */
11
12
  import { getEventBus } from '../events/event-bus.js';
12
13
  import { LinearClient } from '../linear/client.js';
@@ -15,9 +16,9 @@ import { LinearSync } from '../linear/sync.js';
15
16
  import { loadLinearConfig, isLinearConfigured } from '../linear/config.js';
16
17
  import { ExternalExecutionMappingStore } from './mapping-store.js';
17
18
  /**
18
- * OutboundSyncHandler subscribes to ticket events and pushes changes
19
- * to mapped external providers. It is fire-and-forget: sync failures
20
- * are logged but never block the caller.
19
+ * OutboundSyncHandler subscribes to work-lifecycle domain events and
20
+ * pushes changes to mapped external providers. It is fire-and-forget:
21
+ * sync failures are logged but never block the caller.
21
22
  */
22
23
  export class OutboundSyncHandler {
23
24
  unsubscribers = [];
@@ -28,15 +29,16 @@ export class OutboundSyncHandler {
28
29
  this.mappingStore = new ExternalExecutionMappingStore(db);
29
30
  }
30
31
  /**
31
- * Start listening for ticket events on the global EventBus.
32
+ * Start listening for work-lifecycle events on the global EventBus.
33
+ * Subscribes to work:* domain events, not provider-specific ticket:* events.
32
34
  * Call `stop()` to unsubscribe.
33
35
  */
34
36
  start() {
35
37
  const bus = getEventBus();
36
- this.unsubscribers.push(bus.on('ticket:status_changed', (event) => {
38
+ this.unsubscribers.push(bus.on('work:status_changed', (event) => {
37
39
  void this.handleStatusChanged(event);
38
40
  }));
39
- this.unsubscribers.push(bus.on('ticket:pr_linked', (event) => {
41
+ this.unsubscribers.push(bus.on('work:pr_created', (event) => {
40
42
  void this.handlePRLinked(event);
41
43
  }));
42
44
  }
@@ -50,19 +52,23 @@ export class OutboundSyncHandler {
50
52
  this.unsubscribers = [];
51
53
  }
52
54
  /**
53
- * Handle a ticket status change by syncing to all mapped external providers.
55
+ * Handle a work status change by syncing to all mapped external providers.
56
+ * Skips syncing back to the source provider to avoid loops.
54
57
  */
55
58
  async handleStatusChanged(event) {
56
59
  const results = [];
57
60
  // Try Linear sync (via Linear-specific mapping table)
58
- try {
59
- const linearResult = await this.syncStatusToLinear(event);
60
- if (linearResult) {
61
- results.push(linearResult);
61
+ // Skip if the event originated from Linear to avoid loops
62
+ if (event.source !== 'linear') {
63
+ try {
64
+ const linearResult = await this.syncStatusToLinear(event);
65
+ if (linearResult) {
66
+ results.push(linearResult);
67
+ }
68
+ }
69
+ catch {
70
+ // Sync errors are non-fatal
62
71
  }
63
- }
64
- catch {
65
- // Sync errors are non-fatal
66
72
  }
67
73
  // Try provider-agnostic sync via external_execution_map
68
74
  try {
@@ -75,19 +81,22 @@ export class OutboundSyncHandler {
75
81
  return results;
76
82
  }
77
83
  /**
78
- * Handle a PR link by syncing to all mapped external providers.
84
+ * Handle a PR creation by syncing to all mapped external providers.
85
+ * Skips syncing back to the source provider to avoid loops.
79
86
  */
80
87
  async handlePRLinked(event) {
81
88
  const results = [];
82
- // Try Linear sync
83
- try {
84
- const linearResult = await this.syncPRToLinear(event);
85
- if (linearResult) {
86
- results.push(linearResult);
89
+ // Try Linear sync (skip if event came from Linear)
90
+ if (event.source !== 'linear') {
91
+ try {
92
+ const linearResult = await this.syncPRToLinear(event);
93
+ if (linearResult) {
94
+ results.push(linearResult);
95
+ }
96
+ }
97
+ catch {
98
+ // Sync errors are non-fatal
87
99
  }
88
- }
89
- catch {
90
- // Sync errors are non-fatal
91
100
  }
92
101
  // Update provider-agnostic mapping with PR URL
93
102
  try {
@@ -102,7 +111,7 @@ export class OutboundSyncHandler {
102
111
  // Linear Sync
103
112
  // ===========================================================================
104
113
  /**
105
- * Sync a status change to Linear if the ticket has a Linear mapping.
114
+ * Sync a status change to Linear if the work item has a Linear mapping.
106
115
  */
107
116
  async syncStatusToLinear(event) {
108
117
  if (!isLinearConfigured(this.db))
@@ -111,15 +120,15 @@ export class OutboundSyncHandler {
111
120
  if (!config)
112
121
  return null;
113
122
  const mapper = new LinearMapper(this.db);
114
- const mapping = mapper.getByTicketId(event.ticketId);
123
+ const mapping = mapper.getByTicketId(event.workItemId);
115
124
  if (!mapping)
116
125
  return null;
117
126
  // Only sync outbound or bidirectional mappings
118
127
  if (mapping.syncDirection === 'inbound')
119
128
  return null;
120
- const category = event.newStatusCategory;
129
+ const category = event.newCategory;
121
130
  if (!category) {
122
- return { provider: 'linear', success: false, error: 'No status category on ticket' };
131
+ return { provider: 'linear', success: false, error: 'No status category on work item' };
123
132
  }
124
133
  try {
125
134
  const client = new LinearClient(config.apiKey);
@@ -135,10 +144,10 @@ export class OutboundSyncHandler {
135
144
  }
136
145
  await client.updateIssueState(mapping.linearIssueId, matchingState.id);
137
146
  // Post a comment about the status change
138
- if (event.newStatusName) {
139
- await client.addComment(mapping.linearIssueId, `Status updated to **${event.newStatusName}** (via prlt)`);
147
+ if (event.newStatus) {
148
+ await client.addComment(mapping.linearIssueId, `Status updated to **${event.newStatus}** (via prlt)`);
140
149
  }
141
- mapper.updateSyncTimestamp(event.ticketId);
150
+ mapper.updateSyncTimestamp(event.workItemId);
142
151
  return { provider: 'linear', success: true };
143
152
  }
144
153
  catch (err) {
@@ -150,7 +159,7 @@ export class OutboundSyncHandler {
150
159
  }
151
160
  }
152
161
  /**
153
- * Sync a PR link to Linear if the ticket has a Linear mapping.
162
+ * Sync a PR link to Linear if the work item has a Linear mapping.
154
163
  */
155
164
  async syncPRToLinear(event) {
156
165
  if (!isLinearConfigured(this.db))
@@ -159,7 +168,7 @@ export class OutboundSyncHandler {
159
168
  if (!config)
160
169
  return null;
161
170
  const mapper = new LinearMapper(this.db);
162
- const mapping = mapper.getByTicketId(event.ticketId);
171
+ const mapping = mapper.getByTicketId(event.workItemId);
163
172
  if (!mapping)
164
173
  return null;
165
174
  // Only sync outbound or bidirectional mappings
@@ -168,7 +177,7 @@ export class OutboundSyncHandler {
168
177
  try {
169
178
  const client = new LinearClient(config.apiKey);
170
179
  const sync = new LinearSync(client, mapper);
171
- const success = await sync.syncPRLink(event.ticketId, event.prUrl, event.prTitle ?? 'Pull Request');
180
+ const success = await sync.syncPRLink(event.workItemId, event.prUrl, event.prTitle ?? 'Pull Request');
172
181
  return { provider: 'linear', success };
173
182
  }
174
183
  catch (err) {
@@ -185,16 +194,19 @@ export class OutboundSyncHandler {
185
194
  /**
186
195
  * Sync status changes to providers tracked via the external_execution_map table.
187
196
  * Updates the state snapshot so that future inbound syncs can detect drift.
197
+ * Skips the source provider to avoid sync loops.
188
198
  */
189
199
  async syncStatusToMappedProviders(event) {
190
200
  const results = [];
191
- // Find all external mappings that reference this ticket via execution links
192
- // or via the latest_state_snapshot containing the ticketId
193
- const mappings = this.findMappingsForTicket(event.ticketId);
201
+ // Find all external mappings that reference this work item
202
+ const mappings = this.findMappingsForWorkItem(event.workItemId);
194
203
  for (const mapping of mappings) {
195
204
  // Skip Linear here (handled separately above with its full API integration)
196
205
  if (mapping.provider === 'linear')
197
206
  continue;
207
+ // Skip the source provider to avoid sync loops
208
+ if (mapping.provider === event.source)
209
+ continue;
198
210
  try {
199
211
  // Update the state snapshot to reflect the new status
200
212
  this.mappingStore.upsertMapping({
@@ -202,8 +214,8 @@ export class OutboundSyncHandler {
202
214
  externalId: mapping.externalId,
203
215
  latestStateSnapshot: {
204
216
  ...(mapping.latestStateSnapshot ?? {}),
205
- ticketStatus: event.newStatusName,
206
- ticketCategory: event.newStatusCategory,
217
+ ticketStatus: event.newStatus,
218
+ ticketCategory: event.newCategory,
207
219
  lastOutboundSync: new Date().toISOString(),
208
220
  },
209
221
  lastSyncedAt: new Date(),
@@ -221,11 +233,14 @@ export class OutboundSyncHandler {
221
233
  return results;
222
234
  }
223
235
  /**
224
- * Record a PR URL in all external mappings for a ticket.
236
+ * Record a PR URL in all external mappings for a work item.
225
237
  */
226
238
  recordPRInMappings(event) {
227
- const mappings = this.findMappingsForTicket(event.ticketId);
239
+ const mappings = this.findMappingsForWorkItem(event.workItemId);
228
240
  for (const mapping of mappings) {
241
+ // Skip the source provider to avoid sync loops
242
+ if (mapping.provider === event.source)
243
+ continue;
229
244
  try {
230
245
  this.mappingStore.upsertMapping({
231
246
  provider: mapping.provider,
@@ -240,16 +255,16 @@ export class OutboundSyncHandler {
240
255
  }
241
256
  }
242
257
  /**
243
- * Find external execution mappings associated with a ticket.
244
- * Checks the latest_state_snapshot for pmoTicketId references.
258
+ * Find external execution mappings associated with a work item.
259
+ * Checks the latest_state_snapshot for work item ID references.
245
260
  */
246
- findMappingsForTicket(ticketId) {
247
- // Query external_execution_map where latest_state_snapshot contains the ticketId
261
+ findMappingsForWorkItem(workItemId) {
262
+ // Query external_execution_map where latest_state_snapshot contains the work item ID
248
263
  const rows = this.db.prepare(`
249
264
  SELECT provider, external_id, latest_state_snapshot
250
265
  FROM pmo_external_execution_map
251
266
  WHERE latest_state_snapshot LIKE ?
252
- `).all(`%${ticketId}%`);
267
+ `).all(`%${workItemId}%`);
253
268
  return rows.map((row) => ({
254
269
  provider: row.provider,
255
270
  externalId: row.external_id,
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-sync.js","sourceRoot":"","sources":["../../../src/lib/external-issues/outbound-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbound-sync.js","sourceRoot":"","sources":["../../../src/lib/external-issues/outbound-sync.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import * as path from 'node:path';
22
22
  import * as crypto from 'node:crypto';
23
23
  import { SQLiteStorage } from './storage-sqlite.js';
24
24
  import { parseBoard } from './markdown.js';
25
+ import { initWorkLifecycleAdapter } from '../work-lifecycle/adapter.js';
25
26
  import { initOutboundSync } from '../external-issues/outbound-sync.js';
26
27
  /**
27
28
  * Get the board path for a project
@@ -216,7 +217,10 @@ export function getStorageWithAutoSync(pmoPath, _storageType, _logger) {
216
217
  }
217
218
  // Note: Storage no longer holds project context - projectId is passed explicitly to operations
218
219
  const storage = new SQLiteStorage(dbPath);
219
- // Initialize outbound sync hooks (idempotent safe to call on every storage creation)
220
+ // Initialize work-lifecycle adapter (translates ticket:* work:* events)
221
+ // Must be initialized before outbound sync so events flow: PMO → adapter → sync handler
222
+ initWorkLifecycleAdapter();
223
+ // Initialize outbound sync hooks (subscribes to work:* events)
220
224
  initOutboundSync(storage.getDatabase());
221
225
  return storage;
222
226
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../../src/lib/pmo/sync-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../../src/lib/pmo/sync-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Work Lifecycle Adapter
3
+ *
4
+ * Bridges provider-specific events to work-lifecycle domain events.
5
+ * PMO ticket events are translated into provider-agnostic work events,
6
+ * making PMO just another event source rather than the central hub.
7
+ *
8
+ * Additional adapters can be registered to translate events from
9
+ * other providers (GitHub, Linear inbound webhooks, etc.).
10
+ */
11
+ /**
12
+ * WorkLifecycleAdapter subscribes to provider-specific events and
13
+ * re-emits them as work-lifecycle domain events on the same EventBus.
14
+ */
15
+ export declare class WorkLifecycleAdapter {
16
+ private unsubscribers;
17
+ /**
18
+ * Start the PMO adapter — translates ticket:* events to work:* events.
19
+ */
20
+ startPMOAdapter(): void;
21
+ /**
22
+ * Stop all adapters and unsubscribe from events.
23
+ */
24
+ stop(): void;
25
+ }
26
+ /**
27
+ * Initialize the work-lifecycle adapter layer.
28
+ * Safe to call multiple times — subsequent calls are no-ops.
29
+ */
30
+ export declare function initWorkLifecycleAdapter(): WorkLifecycleAdapter;
31
+ /**
32
+ * Stop the work-lifecycle adapter (primarily for testing).
33
+ */
34
+ export declare function stopWorkLifecycleAdapter(): void;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Work Lifecycle Adapter
3
+ *
4
+ * Bridges provider-specific events to work-lifecycle domain events.
5
+ * PMO ticket events are translated into provider-agnostic work events,
6
+ * making PMO just another event source rather than the central hub.
7
+ *
8
+ * Additional adapters can be registered to translate events from
9
+ * other providers (GitHub, Linear inbound webhooks, etc.).
10
+ */
11
+ import { getEventBus } from '../events/event-bus.js';
12
+ /**
13
+ * WorkLifecycleAdapter subscribes to provider-specific events and
14
+ * re-emits them as work-lifecycle domain events on the same EventBus.
15
+ */
16
+ export class WorkLifecycleAdapter {
17
+ unsubscribers = [];
18
+ /**
19
+ * Start the PMO adapter — translates ticket:* events to work:* events.
20
+ */
21
+ startPMOAdapter() {
22
+ const bus = getEventBus();
23
+ this.unsubscribers.push(bus.on('ticket:status_changed', (event) => {
24
+ // Always emit the generic status change
25
+ bus.emit('work:status_changed', {
26
+ workItemId: event.ticketId,
27
+ source: 'pmo',
28
+ projectId: event.projectId,
29
+ previousStatus: event.previousStatusName ?? null,
30
+ previousCategory: event.previousStatusCategory ?? null,
31
+ newStatus: event.newStatusName ?? null,
32
+ newCategory: event.newStatusCategory ?? null,
33
+ timestamp: event.timestamp,
34
+ });
35
+ // Emit work:started when entering the 'started' category
36
+ if (event.newStatusCategory === 'started' &&
37
+ event.previousStatusCategory !== 'started') {
38
+ bus.emit('work:started', {
39
+ workItemId: event.ticketId,
40
+ source: 'pmo',
41
+ projectId: event.projectId,
42
+ status: event.newStatusName ?? null,
43
+ timestamp: event.timestamp,
44
+ });
45
+ }
46
+ // Emit work:completed when entering the 'completed' category
47
+ if (event.newStatusCategory === 'completed' &&
48
+ event.previousStatusCategory !== 'completed') {
49
+ bus.emit('work:completed', {
50
+ workItemId: event.ticketId,
51
+ source: 'pmo',
52
+ projectId: event.projectId,
53
+ status: event.newStatusName ?? null,
54
+ timestamp: event.timestamp,
55
+ });
56
+ }
57
+ }));
58
+ this.unsubscribers.push(bus.on('ticket:pr_linked', (event) => {
59
+ bus.emit('work:pr_created', {
60
+ workItemId: event.ticketId,
61
+ source: 'pmo',
62
+ projectId: event.projectId,
63
+ prUrl: event.prUrl,
64
+ prTitle: event.prTitle ?? null,
65
+ timestamp: event.timestamp,
66
+ });
67
+ }));
68
+ }
69
+ /**
70
+ * Stop all adapters and unsubscribe from events.
71
+ */
72
+ stop() {
73
+ for (const unsub of this.unsubscribers) {
74
+ unsub();
75
+ }
76
+ this.unsubscribers = [];
77
+ }
78
+ }
79
+ // =============================================================================
80
+ // Singleton
81
+ // =============================================================================
82
+ let _adapter;
83
+ /**
84
+ * Initialize the work-lifecycle adapter layer.
85
+ * Safe to call multiple times — subsequent calls are no-ops.
86
+ */
87
+ export function initWorkLifecycleAdapter() {
88
+ if (!_adapter) {
89
+ _adapter = new WorkLifecycleAdapter();
90
+ _adapter.startPMOAdapter();
91
+ }
92
+ return _adapter;
93
+ }
94
+ /**
95
+ * Stop the work-lifecycle adapter (primarily for testing).
96
+ */
97
+ export function stopWorkLifecycleAdapter() {
98
+ if (_adapter) {
99
+ _adapter.stop();
100
+ _adapter = undefined;
101
+ }
102
+ }
103
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/lib/work-lifecycle/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Work Lifecycle Event Definitions
3
+ *
4
+ * Provider-agnostic domain events for work item state changes.
5
+ * These events represent what happened in the work lifecycle,
6
+ * regardless of which system (PMO, Linear, GitHub, etc.) reported the change.
7
+ *
8
+ * The adapter layer translates provider-specific events into these
9
+ * domain events, decoupling consumers from any single provider.
10
+ */
11
+ import type { StateCategory } from '../pmo/types.js';
12
+ /**
13
+ * Sources that can emit work-lifecycle events.
14
+ * PMO is just another provider, not the central hub.
15
+ */
16
+ export type WorkEventSource = 'pmo' | 'linear' | 'github' | 'jira' | 'asana' | 'shortcut' | 'trello' | 'monday';
17
+ /** Emitted when work begins on a work item (status moved to 'started' category). */
18
+ export interface WorkStartedEvent {
19
+ workItemId: string;
20
+ source: WorkEventSource;
21
+ projectId?: string;
22
+ status: string | null;
23
+ timestamp: Date;
24
+ }
25
+ /** Emitted when a work item's status changes. */
26
+ export interface WorkStatusChangedEvent {
27
+ workItemId: string;
28
+ source: WorkEventSource;
29
+ projectId?: string;
30
+ previousStatus: string | null;
31
+ previousCategory: StateCategory | null;
32
+ newStatus: string | null;
33
+ newCategory: StateCategory | null;
34
+ timestamp: Date;
35
+ }
36
+ /** Emitted when a PR is created or linked for a work item. */
37
+ export interface WorkPRCreatedEvent {
38
+ workItemId: string;
39
+ source: WorkEventSource;
40
+ projectId?: string;
41
+ prUrl: string;
42
+ prTitle: string | null;
43
+ timestamp: Date;
44
+ }
45
+ /** Emitted when work on an item is completed (status moved to 'completed' category). */
46
+ export interface WorkCompletedEvent {
47
+ workItemId: string;
48
+ source: WorkEventSource;
49
+ projectId?: string;
50
+ status: string | null;
51
+ timestamp: Date;
52
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Work Lifecycle Event Definitions
3
+ *
4
+ * Provider-agnostic domain events for work item state changes.
5
+ * These events represent what happened in the work lifecycle,
6
+ * regardless of which system (PMO, Linear, GitHub, etc.) reported the change.
7
+ *
8
+ * The adapter layer translates provider-specific events into these
9
+ * domain events, decoupling consumers from any single provider.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/work-lifecycle/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Work Lifecycle module — public API.
3
+ *
4
+ * Provides provider-agnostic domain events for work item state changes.
5
+ * The adapter layer translates provider-specific events (PMO tickets,
6
+ * GitHub PRs, Linear issues, etc.) into these domain events.
7
+ */
8
+ export type { WorkEventSource, WorkStartedEvent, WorkStatusChangedEvent, WorkPRCreatedEvent, WorkCompletedEvent, } from './events.js';
9
+ export { WorkLifecycleAdapter, initWorkLifecycleAdapter, stopWorkLifecycleAdapter, } from './adapter.js';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Work Lifecycle module — public API.
3
+ *
4
+ * Provides provider-agnostic domain events for work item state changes.
5
+ * The adapter layer translates provider-specific events (PMO tickets,
6
+ * GitHub PRs, Linear issues, etc.) into these domain events.
7
+ */
8
+ export { WorkLifecycleAdapter, initWorkLifecycleAdapter, stopWorkLifecycleAdapter, } from './adapter.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/work-lifecycle/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,cAAc,CAAA"}