@proletariat/cli 0.3.96 → 0.3.97
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/dist/commands/gc.d.ts +1 -0
- package/dist/commands/gc.js +31 -1
- package/dist/commands/gc.js.map +1 -1
- package/dist/commands/linear/connect.d.ts +5 -0
- package/dist/commands/linear/connect.js +84 -0
- package/dist/commands/linear/connect.js.map +1 -1
- package/dist/commands/session/watch.d.ts +1 -0
- package/dist/commands/session/watch.js +46 -2
- package/dist/commands/session/watch.js.map +1 -1
- package/dist/commands/work/complete.d.ts +1 -0
- package/dist/commands/work/complete.js +27 -25
- package/dist/commands/work/complete.js.map +1 -1
- package/dist/commands/work/drop.d.ts +14 -0
- package/dist/commands/work/drop.js +215 -0
- package/dist/commands/work/drop.js.map +1 -0
- package/dist/commands/work/ready.d.ts +1 -0
- package/dist/commands/work/ready.js +26 -25
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/ship.d.ts +1 -0
- package/dist/commands/work/ship.js +33 -32
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/start.d.ts +2 -0
- package/dist/commands/work/start.js +160 -42
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/stop.d.ts +1 -0
- package/dist/commands/work/stop.js +40 -0
- package/dist/commands/work/stop.js.map +1 -1
- package/dist/lib/agents/commands.js +7 -5
- package/dist/lib/agents/commands.js.map +1 -1
- package/dist/lib/database/drizzle-schema.d.ts +17 -0
- package/dist/lib/database/drizzle-schema.js +1 -0
- package/dist/lib/database/drizzle-schema.js.map +1 -1
- package/dist/lib/database/migrations/0019_gc_artifact_cleanup.d.ts +9 -0
- package/dist/lib/database/migrations/0019_gc_artifact_cleanup.js +23 -0
- package/dist/lib/database/migrations/0019_gc_artifact_cleanup.js.map +1 -0
- package/dist/lib/database/migrations/0020_transition_map.d.ts +2 -0
- package/dist/lib/database/migrations/0020_transition_map.js +27 -0
- package/dist/lib/database/migrations/0020_transition_map.js.map +1 -0
- package/dist/lib/database/migrations/index.js +4 -0
- package/dist/lib/database/migrations/index.js.map +1 -1
- package/dist/lib/execution/config.d.ts +10 -0
- package/dist/lib/execution/config.js +24 -0
- package/dist/lib/execution/config.js.map +1 -1
- package/dist/lib/execution/preflight.d.ts +51 -0
- package/dist/lib/execution/preflight.js +278 -0
- package/dist/lib/execution/preflight.js.map +1 -0
- package/dist/lib/execution/runners/prompt-builder.d.ts +6 -0
- package/dist/lib/execution/runners/prompt-builder.js +38 -7
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +23 -0
- package/dist/lib/execution/session-utils.js +69 -0
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/execution/spawner.d.ts +11 -1
- package/dist/lib/execution/spawner.js +44 -16
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/ticket-refs.d.ts +71 -0
- package/dist/lib/execution/ticket-refs.js +125 -0
- package/dist/lib/execution/ticket-refs.js.map +1 -0
- package/dist/lib/execution/types.d.ts +7 -2
- package/dist/lib/execution/types.js +5 -3
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/gc/index.d.ts +59 -6
- package/dist/lib/gc/index.js +258 -13
- package/dist/lib/gc/index.js.map +1 -1
- package/dist/lib/prompt-json.d.ts +31 -0
- package/dist/lib/prompt-json.js.map +1 -1
- package/dist/lib/providers/auto-mapper.d.ts +45 -0
- package/dist/lib/providers/auto-mapper.js +115 -0
- package/dist/lib/providers/auto-mapper.js.map +1 -0
- package/dist/lib/providers/state-intents.d.ts +20 -0
- package/dist/lib/providers/state-intents.js +61 -7
- package/dist/lib/providers/state-intents.js.map +1 -1
- package/dist/lib/providers/state-resolution.d.ts +15 -11
- package/dist/lib/providers/state-resolution.js +54 -48
- package/dist/lib/providers/state-resolution.js.map +1 -1
- package/dist/lib/providers/transition-map.d.ts +59 -0
- package/dist/lib/providers/transition-map.js +113 -0
- package/dist/lib/providers/transition-map.js.map +1 -0
- package/dist/lib/session/index.d.ts +3 -1
- package/dist/lib/session/index.js +3 -1
- package/dist/lib/session/index.js.map +1 -1
- package/dist/lib/session/tmux-watchdog.d.ts +157 -0
- package/dist/lib/session/tmux-watchdog.js +424 -0
- package/dist/lib/session/tmux-watchdog.js.map +1 -0
- package/dist/lib/session/watcher.d.ts +22 -4
- package/dist/lib/session/watcher.js +66 -8
- package/dist/lib/session/watcher.js.map +1 -1
- package/dist/lib/work-lifecycle/transition.d.ts +73 -0
- package/dist/lib/work-lifecycle/transition.js +124 -0
- package/dist/lib/work-lifecycle/transition.js.map +1 -0
- package/oclif.manifest.json +438 -332
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/lib/session/watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GAEd,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/lib/session/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Work Transition Helper
|
|
3
|
+
*
|
|
4
|
+
* Shared logic for intent-based ticket transitions used by all work commands.
|
|
5
|
+
* Each work command specifies a transition intent, and this module resolves
|
|
6
|
+
* it to the correct provider state and moves the ticket.
|
|
7
|
+
*
|
|
8
|
+
* This replaces the old pattern of hardcoding column names via
|
|
9
|
+
* getWorkColumnSetting() + findColumnByName() in each command.
|
|
10
|
+
*
|
|
11
|
+
* Transition is best-effort: if no mapping exists, the operation still runs.
|
|
12
|
+
*/
|
|
13
|
+
import type Database from 'better-sqlite3';
|
|
14
|
+
/**
|
|
15
|
+
* Minimal ticket shape needed for intent-based transitions.
|
|
16
|
+
* Accepts both full Ticket objects and partial objects from batch spawn paths.
|
|
17
|
+
*/
|
|
18
|
+
export interface TransitionTicket {
|
|
19
|
+
id: string;
|
|
20
|
+
projectId?: string;
|
|
21
|
+
statusName?: string;
|
|
22
|
+
}
|
|
23
|
+
import type { ProviderStorage, TicketProvider } from '../providers/types.js';
|
|
24
|
+
import type { TransitionIntent } from '../providers/state-intents.js';
|
|
25
|
+
/**
|
|
26
|
+
* Result of attempting a ticket transition.
|
|
27
|
+
*/
|
|
28
|
+
export interface TransitionResult {
|
|
29
|
+
/** Whether the ticket was moved successfully */
|
|
30
|
+
moved: boolean;
|
|
31
|
+
/** The resolved target column name, if any */
|
|
32
|
+
targetColumn?: string;
|
|
33
|
+
/** The previous column name */
|
|
34
|
+
previousColumn?: string;
|
|
35
|
+
/** Human-readable explanation of what happened */
|
|
36
|
+
message?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve an intent to a target column name on the board.
|
|
40
|
+
*
|
|
41
|
+
* Resolution order:
|
|
42
|
+
* 1. pmo_transition_map — explicit user-confirmed mappings
|
|
43
|
+
* 2. Legacy column settings (column_in_progress, column_review, column_done)
|
|
44
|
+
* 3. Built-in default column names
|
|
45
|
+
*
|
|
46
|
+
* This only resolves the name — it does not move the ticket.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveIntentToColumn(db: Database.Database, intent: TransitionIntent, providerName: string, columnNames: string[]): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* Move a ticket based on a transition intent.
|
|
51
|
+
*
|
|
52
|
+
* This is the primary function work commands should call for transitions.
|
|
53
|
+
* It resolves the intent to a column name, moves the ticket in the local PMO,
|
|
54
|
+
* and optionally syncs to the external provider.
|
|
55
|
+
*
|
|
56
|
+
* @param opts.db - Database instance
|
|
57
|
+
* @param opts.storage - PMO storage instance
|
|
58
|
+
* @param opts.ticket - The ticket to move
|
|
59
|
+
* @param opts.intent - The transition intent
|
|
60
|
+
* @param opts.providerName - Provider name for transition map lookup
|
|
61
|
+
* @param opts.resolveProvider - Function to resolve the external ticket provider
|
|
62
|
+
* @param opts.log - Optional logging callback
|
|
63
|
+
* @returns TransitionResult
|
|
64
|
+
*/
|
|
65
|
+
export declare function moveTicketByIntent(opts: {
|
|
66
|
+
db: Database.Database;
|
|
67
|
+
storage: ProviderStorage;
|
|
68
|
+
ticket: TransitionTicket;
|
|
69
|
+
intent: TransitionIntent;
|
|
70
|
+
providerName: string;
|
|
71
|
+
resolveProvider?: (ticketId: string, projectId: string) => Promise<TicketProvider>;
|
|
72
|
+
log?: (msg: string) => void;
|
|
73
|
+
}): Promise<TransitionResult>;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Work Transition Helper
|
|
3
|
+
*
|
|
4
|
+
* Shared logic for intent-based ticket transitions used by all work commands.
|
|
5
|
+
* Each work command specifies a transition intent, and this module resolves
|
|
6
|
+
* it to the correct provider state and moves the ticket.
|
|
7
|
+
*
|
|
8
|
+
* This replaces the old pattern of hardcoding column names via
|
|
9
|
+
* getWorkColumnSetting() + findColumnByName() in each command.
|
|
10
|
+
*
|
|
11
|
+
* Transition is best-effort: if no mapping exists, the operation still runs.
|
|
12
|
+
*/
|
|
13
|
+
import { TransitionMapStore } from '../providers/transition-map.js';
|
|
14
|
+
import { getWorkColumnSetting, findColumnByName } from './settings.js';
|
|
15
|
+
/**
|
|
16
|
+
* Map from transition intents to the legacy WorkColumnType settings keys.
|
|
17
|
+
* Used as a fallback when no transition map exists.
|
|
18
|
+
*/
|
|
19
|
+
const INTENT_TO_COLUMN_TYPE = {
|
|
20
|
+
started: 'in_progress',
|
|
21
|
+
needs_review: 'review',
|
|
22
|
+
completed: 'done',
|
|
23
|
+
ready: 'planned',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Resolve an intent to a target column name on the board.
|
|
27
|
+
*
|
|
28
|
+
* Resolution order:
|
|
29
|
+
* 1. pmo_transition_map — explicit user-confirmed mappings
|
|
30
|
+
* 2. Legacy column settings (column_in_progress, column_review, column_done)
|
|
31
|
+
* 3. Built-in default column names
|
|
32
|
+
*
|
|
33
|
+
* This only resolves the name — it does not move the ticket.
|
|
34
|
+
*/
|
|
35
|
+
export function resolveIntentToColumn(db, intent, providerName, columnNames) {
|
|
36
|
+
// 1. Check pmo_transition_map
|
|
37
|
+
try {
|
|
38
|
+
const store = new TransitionMapStore(db);
|
|
39
|
+
const mappedName = store.resolveIntent(providerName, intent);
|
|
40
|
+
if (mappedName) {
|
|
41
|
+
const match = findColumnByName(columnNames, mappedName);
|
|
42
|
+
if (match)
|
|
43
|
+
return match;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Table may not exist yet — fall through
|
|
48
|
+
}
|
|
49
|
+
// 2. Fall back to legacy column settings
|
|
50
|
+
const columnType = INTENT_TO_COLUMN_TYPE[intent];
|
|
51
|
+
if (columnType) {
|
|
52
|
+
const settingName = getWorkColumnSetting(db, columnType);
|
|
53
|
+
const match = findColumnByName(columnNames, settingName);
|
|
54
|
+
if (match)
|
|
55
|
+
return match;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Move a ticket based on a transition intent.
|
|
61
|
+
*
|
|
62
|
+
* This is the primary function work commands should call for transitions.
|
|
63
|
+
* It resolves the intent to a column name, moves the ticket in the local PMO,
|
|
64
|
+
* and optionally syncs to the external provider.
|
|
65
|
+
*
|
|
66
|
+
* @param opts.db - Database instance
|
|
67
|
+
* @param opts.storage - PMO storage instance
|
|
68
|
+
* @param opts.ticket - The ticket to move
|
|
69
|
+
* @param opts.intent - The transition intent
|
|
70
|
+
* @param opts.providerName - Provider name for transition map lookup
|
|
71
|
+
* @param opts.resolveProvider - Function to resolve the external ticket provider
|
|
72
|
+
* @param opts.log - Optional logging callback
|
|
73
|
+
* @returns TransitionResult
|
|
74
|
+
*/
|
|
75
|
+
export async function moveTicketByIntent(opts) {
|
|
76
|
+
const { db, storage, ticket, intent, providerName, resolveProvider, log } = opts;
|
|
77
|
+
if (!ticket.projectId) {
|
|
78
|
+
return { moved: false, message: 'Ticket has no project' };
|
|
79
|
+
}
|
|
80
|
+
const board = await storage.getProjectBoard(ticket.projectId);
|
|
81
|
+
const columnNames = board ? board.columns.map(col => col.name) : [];
|
|
82
|
+
const targetColumn = resolveIntentToColumn(db, intent, providerName, columnNames);
|
|
83
|
+
if (!targetColumn) {
|
|
84
|
+
return { moved: false, message: `No column found for intent '${intent}'` };
|
|
85
|
+
}
|
|
86
|
+
const previousColumn = ticket.statusName;
|
|
87
|
+
// Skip if already in target state
|
|
88
|
+
if (previousColumn && previousColumn.toLowerCase() === targetColumn.toLowerCase()) {
|
|
89
|
+
return { moved: false, targetColumn, previousColumn, message: 'Already in target state' };
|
|
90
|
+
}
|
|
91
|
+
// Move in local PMO
|
|
92
|
+
try {
|
|
93
|
+
await storage.moveTicket(ticket.projectId, ticket.id, targetColumn);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
return {
|
|
97
|
+
moved: false,
|
|
98
|
+
targetColumn,
|
|
99
|
+
previousColumn,
|
|
100
|
+
message: `Failed to move: ${error instanceof Error ? error.message : String(error)}`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Sync to external provider
|
|
104
|
+
if (resolveProvider) {
|
|
105
|
+
try {
|
|
106
|
+
const provider = await resolveProvider(ticket.id, ticket.projectId);
|
|
107
|
+
if (provider.name !== 'pmo') {
|
|
108
|
+
const result = await provider.moveTicket(ticket.id, targetColumn);
|
|
109
|
+
if (result.success && log) {
|
|
110
|
+
log(`Synced to ${result.provider}: ${targetColumn}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Non-fatal — don't block work commands for provider sync failures
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
moved: true,
|
|
120
|
+
targetColumn,
|
|
121
|
+
previousColumn,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=transition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transition.js","sourceRoot":"","sources":["../../../src/lib/work-lifecycle/transition.ts"],"names":[],"mappings":"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"}
|