@proletariat/cli 0.3.90 → 0.3.92
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/work/index.js +4 -0
- package/dist/commands/work/index.js.map +1 -1
- package/dist/commands/work/ship.d.ts +43 -0
- package/dist/commands/work/ship.js +587 -0
- package/dist/commands/work/ship.js.map +1 -0
- package/dist/commands/work/start.d.ts +1 -0
- package/dist/commands/work/start.js +11 -1
- package/dist/commands/work/start.js.map +1 -1
- package/dist/lib/execution/context.d.ts +20 -0
- package/dist/lib/execution/context.js +88 -0
- package/dist/lib/execution/context.js.map +1 -1
- package/dist/lib/execution/devcontainer.d.ts +6 -0
- package/dist/lib/execution/devcontainer.js +48 -1
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer.js +11 -0
- package/dist/lib/execution/runners/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.js +1 -1
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/orchestrator.js +6 -3
- package/dist/lib/execution/runners/orchestrator.js.map +1 -1
- package/dist/lib/execution/runners/prompt-builder.js +31 -0
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/execution/runners/shared.d.ts +2 -2
- package/dist/lib/execution/runners/shared.js +2 -2
- package/dist/lib/execution/runners/shared.js.map +1 -1
- package/dist/lib/execution/types.d.ts +23 -0
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/providers/index.d.ts +2 -0
- package/dist/lib/providers/index.js +2 -0
- package/dist/lib/providers/index.js.map +1 -1
- package/dist/lib/providers/state-intents.d.ts +44 -0
- package/dist/lib/providers/state-intents.js +101 -0
- package/dist/lib/providers/state-intents.js.map +1 -0
- package/dist/lib/providers/state-resolution.d.ts +137 -0
- package/dist/lib/providers/state-resolution.js +302 -0
- package/dist/lib/providers/state-resolution.js.map +1 -0
- package/dist/lib/work-lifecycle/post-execution.js +47 -28
- package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
- package/oclif.manifest.json +2317 -2203
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EASL,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/lib/execution/runners/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,6 +82,28 @@ export interface AgentWork {
|
|
|
82
82
|
exitCode?: number;
|
|
83
83
|
errorMessage?: string;
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Structured information about a repository in the agent workspace.
|
|
87
|
+
* Used for workspace manifest and prompt injection so agents know
|
|
88
|
+
* exactly which repos are available.
|
|
89
|
+
*/
|
|
90
|
+
export interface WorkspaceRepo {
|
|
91
|
+
name: string;
|
|
92
|
+
path: string;
|
|
93
|
+
remote?: string;
|
|
94
|
+
branch?: string;
|
|
95
|
+
primary: boolean;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Workspace manifest written to /workspace/.prlt-workspace.json
|
|
99
|
+
* so agents know exactly what repos are available and what to work on.
|
|
100
|
+
*/
|
|
101
|
+
export interface WorkspaceManifest {
|
|
102
|
+
repos: WorkspaceRepo[];
|
|
103
|
+
ticket: string;
|
|
104
|
+
agent: string;
|
|
105
|
+
action?: string;
|
|
106
|
+
}
|
|
85
107
|
export interface ExecutionContext {
|
|
86
108
|
ticketId: string;
|
|
87
109
|
externalTicketId?: string;
|
|
@@ -101,6 +123,7 @@ export interface ExecutionContext {
|
|
|
101
123
|
hqPath?: string;
|
|
102
124
|
pmoPath?: string;
|
|
103
125
|
repoWorktrees?: string[];
|
|
126
|
+
workspaceRepos?: WorkspaceRepo[];
|
|
104
127
|
createPR?: boolean;
|
|
105
128
|
reviewGate?: 'required' | 'auto' | 'post';
|
|
106
129
|
actionId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/execution/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoCH;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAyB;IAC5D,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,OAAO,CAAA;IAChC,OAAO,GAAG,CAAA;AACZ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/execution/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,3 +12,5 @@ export { EventEmittingProvider, type StatusResolver } from './event-emitting-pro
|
|
|
12
12
|
export { ProviderStatusMappingStore, type StatusMapping } from './status-mapping.js';
|
|
13
13
|
export { ProviderTriggerStore, TriggerHandler, initTriggerHandler, stopTriggerHandler, TRIGGER_EVENTS, type TriggerEvent, type TriggerConfig, } from './trigger-config.js';
|
|
14
14
|
export { resolveTicketProvider, resolveProjectProvider } from './resolver.js';
|
|
15
|
+
export { move, moveWithProvider, createPMProviderAdapter, llmResolveState, getStateMapConfig, setStateMapConfig, deleteStateMapConfig, listStateMapConfigs, type PMProvider, type PMState, type StateResolutionResult, type MoveOptions, } from './state-resolution.js';
|
|
16
|
+
export { DEFAULT_INTENTS, getDefaultIntent, matchIntentByAliases, type SemanticIntent, } from './state-intents.js';
|
|
@@ -11,4 +11,6 @@ export { EventEmittingProvider } from './event-emitting-provider.js';
|
|
|
11
11
|
export { ProviderStatusMappingStore } from './status-mapping.js';
|
|
12
12
|
export { ProviderTriggerStore, TriggerHandler, initTriggerHandler, stopTriggerHandler, TRIGGER_EVENTS, } from './trigger-config.js';
|
|
13
13
|
export { resolveTicketProvider, resolveProjectProvider } from './resolver.js';
|
|
14
|
+
export { move, moveWithProvider, createPMProviderAdapter, llmResolveState, getStateMapConfig, setStateMapConfig, deleteStateMapConfig, listStateMapConfigs, } from './state-resolution.js';
|
|
15
|
+
export { DEFAULT_INTENTS, getDefaultIntent, matchIntentByAliases, } from './state-intents.js';
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAuB,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAsB,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GAGf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAuB,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAsB,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GAGf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EACL,IAAI,EACJ,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GAKpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Intent Presets
|
|
3
|
+
*
|
|
4
|
+
* Default mappings from semantic intents (what you want to express)
|
|
5
|
+
* to common state names across PM tools. Used as a local fallback
|
|
6
|
+
* before reaching for the LLM resolver.
|
|
7
|
+
*
|
|
8
|
+
* These cover the most common workflow states across Linear, Trello,
|
|
9
|
+
* ClickUp, Jira, Shortcut, Asana, and custom PMO boards.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A semantic intent represents a stage in the ticket lifecycle.
|
|
13
|
+
* Each intent maps to common state names in popular PM tools.
|
|
14
|
+
*/
|
|
15
|
+
export interface SemanticIntent {
|
|
16
|
+
/** The intent name (e.g., 'active', 'review') */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Human-readable description */
|
|
19
|
+
description: string;
|
|
20
|
+
/** Common state names that match this intent (case-insensitive) */
|
|
21
|
+
aliases: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Default semantic intents shipped with the CLI.
|
|
25
|
+
*
|
|
26
|
+
* Order matters: when matching, the first alias match wins.
|
|
27
|
+
* Aliases are matched case-insensitively.
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_INTENTS: SemanticIntent[];
|
|
30
|
+
/**
|
|
31
|
+
* Get a default intent by name.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getDefaultIntent(name: string): SemanticIntent | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Try to match a state name against intent aliases (case-insensitive).
|
|
36
|
+
* Returns the matched state name from the available states, or null.
|
|
37
|
+
*/
|
|
38
|
+
export declare function matchIntentByAliases(availableStates: Array<{
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
}>, intent: SemanticIntent): {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
} | null;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Intent Presets
|
|
3
|
+
*
|
|
4
|
+
* Default mappings from semantic intents (what you want to express)
|
|
5
|
+
* to common state names across PM tools. Used as a local fallback
|
|
6
|
+
* before reaching for the LLM resolver.
|
|
7
|
+
*
|
|
8
|
+
* These cover the most common workflow states across Linear, Trello,
|
|
9
|
+
* ClickUp, Jira, Shortcut, Asana, and custom PMO boards.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Default semantic intents shipped with the CLI.
|
|
13
|
+
*
|
|
14
|
+
* Order matters: when matching, the first alias match wins.
|
|
15
|
+
* Aliases are matched case-insensitively.
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_INTENTS = [
|
|
18
|
+
{
|
|
19
|
+
name: 'active',
|
|
20
|
+
description: 'Work has started',
|
|
21
|
+
aliases: [
|
|
22
|
+
'In Progress',
|
|
23
|
+
'Working On',
|
|
24
|
+
'Doing',
|
|
25
|
+
'In Development',
|
|
26
|
+
'Started',
|
|
27
|
+
'Active',
|
|
28
|
+
'Developing',
|
|
29
|
+
'In Work',
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'review',
|
|
34
|
+
description: 'Work is done, awaiting review',
|
|
35
|
+
aliases: [
|
|
36
|
+
'Review',
|
|
37
|
+
'In Review',
|
|
38
|
+
'Needs Review',
|
|
39
|
+
'Awaiting Review',
|
|
40
|
+
'Awaiting Feedback',
|
|
41
|
+
'Code Review',
|
|
42
|
+
'QA',
|
|
43
|
+
'Ready for Review',
|
|
44
|
+
'Pending Review',
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'done',
|
|
49
|
+
description: 'Work is complete',
|
|
50
|
+
aliases: [
|
|
51
|
+
'Done',
|
|
52
|
+
'Complete',
|
|
53
|
+
'Closed',
|
|
54
|
+
'Shipped',
|
|
55
|
+
'Merged',
|
|
56
|
+
'Resolved',
|
|
57
|
+
'Finished',
|
|
58
|
+
'Released',
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'blocked',
|
|
63
|
+
description: 'Work is stuck',
|
|
64
|
+
aliases: [
|
|
65
|
+
'Blocked',
|
|
66
|
+
'On Hold',
|
|
67
|
+
'Stuck',
|
|
68
|
+
'Waiting',
|
|
69
|
+
'Paused',
|
|
70
|
+
'Impediment',
|
|
71
|
+
'Pending',
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
/**
|
|
76
|
+
* Get a default intent by name.
|
|
77
|
+
*/
|
|
78
|
+
export function getDefaultIntent(name) {
|
|
79
|
+
return DEFAULT_INTENTS.find(i => i.name === name);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Try to match a state name against intent aliases (case-insensitive).
|
|
83
|
+
* Returns the matched state name from the available states, or null.
|
|
84
|
+
*/
|
|
85
|
+
export function matchIntentByAliases(availableStates, intent) {
|
|
86
|
+
const lowerAliases = intent.aliases.map(a => a.toLowerCase());
|
|
87
|
+
for (const alias of lowerAliases) {
|
|
88
|
+
const match = availableStates.find(s => s.name.toLowerCase() === alias);
|
|
89
|
+
if (match)
|
|
90
|
+
return match;
|
|
91
|
+
}
|
|
92
|
+
// Partial match: check if any state name contains an alias or vice versa
|
|
93
|
+
for (const alias of lowerAliases) {
|
|
94
|
+
const match = availableStates.find(s => s.name.toLowerCase().includes(alias) ||
|
|
95
|
+
alias.includes(s.name.toLowerCase()));
|
|
96
|
+
if (match)
|
|
97
|
+
return match;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=state-intents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-intents.js","sourceRoot":"","sources":["../../../src/lib/providers/state-intents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE;YACP,aAAa;YACb,YAAY;YACZ,OAAO;YACP,gBAAgB;YAChB,SAAS;YACT,QAAQ;YACR,YAAY;YACZ,SAAS;SACV;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE;YACP,QAAQ;YACR,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,mBAAmB;YACnB,aAAa;YACb,IAAI;YACJ,kBAAkB;YAClB,gBAAgB;SACjB;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE;YACP,MAAM;YACN,UAAU;YACV,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,UAAU;YACV,UAAU;YACV,UAAU;SACX;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE;YACP,SAAS;YACT,SAAS;YACT,OAAO;YACP,SAAS;YACT,QAAQ;YACR,YAAY;YACZ,SAAS;SACV;KACF;CACF,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAAoD,EACpD,MAAsB;IAEtB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IAE7D,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAA;QACvE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACzB,CAAC;IAED,yEAAyE;IACzE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACrC,CAAA;QACD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACzB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Resolution Engine
|
|
3
|
+
*
|
|
4
|
+
* Resolves semantic intents (e.g., 'review', 'active', 'done') to actual
|
|
5
|
+
* PM tool states at runtime. Never caches state IDs across calls.
|
|
6
|
+
*
|
|
7
|
+
* Resolution flow:
|
|
8
|
+
* 1. Always fetch fresh states from the PM provider
|
|
9
|
+
* 2. Check user config — `state-map.{intent}` overrides exact-match against fetched states
|
|
10
|
+
* 3. Match against built-in semantic intent aliases
|
|
11
|
+
* 4. No config + no alias match → LLM resolves (pass available states to LLM)
|
|
12
|
+
* 5. No match → skip (don't move, log warning)
|
|
13
|
+
*
|
|
14
|
+
* The same move() function works across Linear, Trello, ClickUp, Jira, etc. —
|
|
15
|
+
* each provider implements fetchStates() differently but returns the same shape.
|
|
16
|
+
* Resolution logic is provider-agnostic.
|
|
17
|
+
*/
|
|
18
|
+
import type { TicketProvider } from './types.js';
|
|
19
|
+
import type { ProviderStorage } from './types.js';
|
|
20
|
+
import type Database from 'better-sqlite3';
|
|
21
|
+
/**
|
|
22
|
+
* A state from a PM provider, normalized to a common shape.
|
|
23
|
+
* Every provider (Linear, Trello, ClickUp, PMO) returns states in this format.
|
|
24
|
+
*/
|
|
25
|
+
export interface PMState {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Interface that providers must implement to support the state resolution engine.
|
|
31
|
+
* This is a superset of TicketProvider — providers that want to participate
|
|
32
|
+
* in intent-based resolution need fetchStates().
|
|
33
|
+
*/
|
|
34
|
+
export interface PMProvider {
|
|
35
|
+
/** Fetch all available states for a ticket's project/board. Always fresh — never cached. */
|
|
36
|
+
fetchStates(ticketId: string): Promise<PMState[]>;
|
|
37
|
+
/** Move a ticket to a specific state by ID. */
|
|
38
|
+
moveTicket(ticketId: string, stateId: string): Promise<{
|
|
39
|
+
success: boolean;
|
|
40
|
+
error?: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Result of a state resolution attempt.
|
|
45
|
+
*/
|
|
46
|
+
export interface StateResolutionResult {
|
|
47
|
+
/** Whether the move succeeded */
|
|
48
|
+
success: boolean;
|
|
49
|
+
/** How the state was resolved */
|
|
50
|
+
resolvedVia?: 'config' | 'alias' | 'llm' | 'skipped';
|
|
51
|
+
/** The resolved state name */
|
|
52
|
+
stateName?: string;
|
|
53
|
+
/** The resolved state ID */
|
|
54
|
+
stateId?: string;
|
|
55
|
+
/** Warning message if the move was skipped */
|
|
56
|
+
warning?: string;
|
|
57
|
+
/** Error message if the move failed */
|
|
58
|
+
error?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Use the LLM to resolve which available state best matches a semantic intent.
|
|
62
|
+
*
|
|
63
|
+
* Sends the list of available states and the intent to the Anthropic API.
|
|
64
|
+
* Returns the matching state ID, or null if no match.
|
|
65
|
+
*
|
|
66
|
+
* Requires ANTHROPIC_API_KEY to be set.
|
|
67
|
+
*/
|
|
68
|
+
export declare function llmResolveState(states: PMState[], intent: string): Promise<PMState | null>;
|
|
69
|
+
/**
|
|
70
|
+
* Check user config for a state-map override for the given intent.
|
|
71
|
+
* Config stores state NAMES, not IDs.
|
|
72
|
+
*
|
|
73
|
+
* @param db - Database instance for settings lookup
|
|
74
|
+
* @param intent - Semantic intent name (e.g., 'review')
|
|
75
|
+
* @returns The configured state name, or null if not set
|
|
76
|
+
*/
|
|
77
|
+
export declare function getStateMapConfig(db: Database.Database, intent: string): string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Set a state-map config override for an intent.
|
|
80
|
+
*
|
|
81
|
+
* @param db - Database instance
|
|
82
|
+
* @param intent - Semantic intent name
|
|
83
|
+
* @param stateName - The state name to map to
|
|
84
|
+
*/
|
|
85
|
+
export declare function setStateMapConfig(db: Database.Database, intent: string, stateName: string): void;
|
|
86
|
+
/**
|
|
87
|
+
* Remove a state-map config override for an intent.
|
|
88
|
+
*/
|
|
89
|
+
export declare function deleteStateMapConfig(db: Database.Database, intent: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* List all state-map config overrides.
|
|
92
|
+
*/
|
|
93
|
+
export declare function listStateMapConfigs(db: Database.Database): Array<{
|
|
94
|
+
intent: string;
|
|
95
|
+
stateName: string;
|
|
96
|
+
}>;
|
|
97
|
+
/**
|
|
98
|
+
* Create a PMProvider adapter from the existing TicketProvider + ProviderStorage.
|
|
99
|
+
*
|
|
100
|
+
* Fetches fresh states from the project's board via storage, and delegates
|
|
101
|
+
* moveTicket to the TicketProvider (which routes to Linear/Jira/PMO).
|
|
102
|
+
*/
|
|
103
|
+
export declare function createPMProviderAdapter(provider: TicketProvider, storage: ProviderStorage, projectId: string): PMProvider;
|
|
104
|
+
/**
|
|
105
|
+
* Options for the move() function.
|
|
106
|
+
*/
|
|
107
|
+
export interface MoveOptions {
|
|
108
|
+
/** Database for config lookups (optional — skip config check if not provided) */
|
|
109
|
+
db?: Database.Database;
|
|
110
|
+
/** Current state name — if provided, skip move when already in the resolved state */
|
|
111
|
+
currentState?: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Move a ticket to a state matching a semantic intent.
|
|
115
|
+
*
|
|
116
|
+
* Resolution order:
|
|
117
|
+
* 1. Fetch fresh states from the provider (never cache)
|
|
118
|
+
* 2. Check user config for `state-map.{intent}` override → exact match
|
|
119
|
+
* 3. Match against built-in semantic intent aliases
|
|
120
|
+
* 4. LLM fallback — ask Claude which state matches the intent
|
|
121
|
+
* 5. No match → skip, return warning
|
|
122
|
+
*
|
|
123
|
+
* @param pmProvider - The PM provider to fetch states from and move tickets in
|
|
124
|
+
* @param ticketId - The ticket to move
|
|
125
|
+
* @param intent - The semantic intent (e.g., 'review', 'active', 'done', 'blocked')
|
|
126
|
+
* @param dbOrOptions - Database instance or options object
|
|
127
|
+
* @returns Resolution result with success/failure and metadata
|
|
128
|
+
*/
|
|
129
|
+
export declare function move(pmProvider: PMProvider, ticketId: string, intent: string, dbOrOptions?: Database.Database | MoveOptions): Promise<StateResolutionResult>;
|
|
130
|
+
/**
|
|
131
|
+
* High-level convenience function that wraps move() with the existing
|
|
132
|
+
* TicketProvider + ProviderStorage infrastructure.
|
|
133
|
+
*
|
|
134
|
+
* Use this from commands and lifecycle hooks that already have a resolved
|
|
135
|
+
* TicketProvider and ProviderStorage.
|
|
136
|
+
*/
|
|
137
|
+
export declare function moveWithProvider(provider: TicketProvider, storage: ProviderStorage, projectId: string, ticketId: string, intent: string, db?: Database.Database, currentState?: string): Promise<StateResolutionResult>;
|