@proletariat/cli 0.3.90 → 0.3.91

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 (259) hide show
  1. package/dist/commands/agent/auth.js +2 -2
  2. package/dist/commands/agent/auth.js.map +1 -1
  3. package/dist/commands/agent/shell.js +3 -3
  4. package/dist/commands/agent/shell.js.map +1 -1
  5. package/dist/commands/branch/create.js +2 -2
  6. package/dist/commands/branch/create.js.map +1 -1
  7. package/dist/commands/claude/index.js +3 -3
  8. package/dist/commands/claude/index.js.map +1 -1
  9. package/dist/commands/claude/open.js +2 -2
  10. package/dist/commands/claude/open.js.map +1 -1
  11. package/dist/commands/config/index.js +2 -2
  12. package/dist/commands/config/index.js.map +1 -1
  13. package/dist/commands/db/repair.js +4 -4
  14. package/dist/commands/db/repair.js.map +1 -1
  15. package/dist/commands/docker/clean.js +2 -2
  16. package/dist/commands/docker/clean.js.map +1 -1
  17. package/dist/commands/docker/index.js +2 -2
  18. package/dist/commands/docker/index.js.map +1 -1
  19. package/dist/commands/docker/list.js +2 -2
  20. package/dist/commands/docker/list.js.map +1 -1
  21. package/dist/commands/docker/logs.js +2 -2
  22. package/dist/commands/docker/logs.js.map +1 -1
  23. package/dist/commands/docker/restart.js +2 -2
  24. package/dist/commands/docker/restart.js.map +1 -1
  25. package/dist/commands/docker/shell.js +2 -2
  26. package/dist/commands/docker/shell.js.map +1 -1
  27. package/dist/commands/docker/start.js +2 -2
  28. package/dist/commands/docker/start.js.map +1 -1
  29. package/dist/commands/docker/stop.js +2 -2
  30. package/dist/commands/docker/stop.js.map +1 -1
  31. package/dist/commands/docker/sync.js +2 -2
  32. package/dist/commands/docker/sync.js.map +1 -1
  33. package/dist/commands/execution/config.js.map +1 -1
  34. package/dist/commands/execution/list.js +2 -2
  35. package/dist/commands/execution/list.js.map +1 -1
  36. package/dist/commands/execution/logs.js +2 -2
  37. package/dist/commands/execution/logs.js.map +1 -1
  38. package/dist/commands/execution/stop.js +2 -2
  39. package/dist/commands/execution/stop.js.map +1 -1
  40. package/dist/commands/execution/view.js +2 -2
  41. package/dist/commands/execution/view.js.map +1 -1
  42. package/dist/commands/linear/connect.js.map +1 -1
  43. package/dist/commands/mcp-server.js +2 -2
  44. package/dist/commands/mcp-server.js.map +1 -1
  45. package/dist/commands/orchestrator/attach.js +2 -2
  46. package/dist/commands/orchestrator/attach.js.map +1 -1
  47. package/dist/commands/orchestrator/start.js +3 -3
  48. package/dist/commands/orchestrator/start.js.map +1 -1
  49. package/dist/commands/orchestrator/stop.js +2 -2
  50. package/dist/commands/orchestrator/stop.js.map +1 -1
  51. package/dist/commands/qa/index.js +3 -3
  52. package/dist/commands/qa/index.js.map +1 -1
  53. package/dist/commands/session/attach.js +3 -3
  54. package/dist/commands/session/attach.js.map +1 -1
  55. package/dist/commands/session/cleanup.js +2 -2
  56. package/dist/commands/session/cleanup.js.map +1 -1
  57. package/dist/commands/session/exec.js +2 -2
  58. package/dist/commands/session/exec.js.map +1 -1
  59. package/dist/commands/session/health.js +2 -2
  60. package/dist/commands/session/health.js.map +1 -1
  61. package/dist/commands/session/inspect.js +2 -2
  62. package/dist/commands/session/inspect.js.map +1 -1
  63. package/dist/commands/session/list.js +2 -2
  64. package/dist/commands/session/list.js.map +1 -1
  65. package/dist/commands/session/peek.js +3 -3
  66. package/dist/commands/session/peek.js.map +1 -1
  67. package/dist/commands/session/poke.js +2 -2
  68. package/dist/commands/session/poke.js.map +1 -1
  69. package/dist/commands/session/prune.js +2 -2
  70. package/dist/commands/session/prune.js.map +1 -1
  71. package/dist/commands/session/report.js +2 -2
  72. package/dist/commands/session/report.js.map +1 -1
  73. package/dist/commands/session/restart.js +2 -2
  74. package/dist/commands/session/restart.js.map +1 -1
  75. package/dist/commands/shortcut/connect.js.map +1 -1
  76. package/dist/commands/trello/configure.js.map +1 -1
  77. package/dist/commands/work/complete.js +2 -2
  78. package/dist/commands/work/complete.js.map +1 -1
  79. package/dist/commands/work/hooks/add.js +2 -2
  80. package/dist/commands/work/hooks/add.js.map +1 -1
  81. package/dist/commands/work/hooks/list.js +2 -2
  82. package/dist/commands/work/hooks/list.js.map +1 -1
  83. package/dist/commands/work/hooks/remove.js +2 -2
  84. package/dist/commands/work/hooks/remove.js.map +1 -1
  85. package/dist/commands/work/hooks/toggle.js +2 -2
  86. package/dist/commands/work/hooks/toggle.js.map +1 -1
  87. package/dist/commands/work/index.js +4 -0
  88. package/dist/commands/work/index.js.map +1 -1
  89. package/dist/commands/work/ready.js +2 -2
  90. package/dist/commands/work/ready.js.map +1 -1
  91. package/dist/commands/work/ship.d.ts +43 -0
  92. package/dist/commands/work/ship.js +587 -0
  93. package/dist/commands/work/ship.js.map +1 -0
  94. package/dist/commands/work/spawn.js +2 -2
  95. package/dist/commands/work/spawn.js.map +1 -1
  96. package/dist/commands/work/start.d.ts +1 -0
  97. package/dist/commands/work/start.js +13 -3
  98. package/dist/commands/work/start.js.map +1 -1
  99. package/dist/commands/work/stop.js +2 -2
  100. package/dist/commands/work/stop.js.map +1 -1
  101. package/dist/commands/work/watch.js +2 -2
  102. package/dist/commands/work/watch.js.map +1 -1
  103. package/dist/hooks/init.js +6 -15
  104. package/dist/hooks/init.js.map +1 -1
  105. package/dist/lib/asana/config.d.ts +8 -8
  106. package/dist/lib/asana/config.js.map +1 -1
  107. package/dist/lib/asana/mapper.d.ts +2 -2
  108. package/dist/lib/asana/mapper.js.map +1 -1
  109. package/dist/lib/database/agents.js +4 -2
  110. package/dist/lib/database/agents.js.map +1 -1
  111. package/dist/lib/database/db-safety.d.ts +4 -4
  112. package/dist/lib/database/db-safety.js +6 -6
  113. package/dist/lib/database/db-safety.js.map +1 -1
  114. package/dist/lib/database/driver.d.ts +19 -21
  115. package/dist/lib/database/driver.js +20 -21
  116. package/dist/lib/database/driver.js.map +1 -1
  117. package/dist/lib/database/drizzle.d.ts +9 -9
  118. package/dist/lib/database/drizzle.js +9 -17
  119. package/dist/lib/database/drizzle.js.map +1 -1
  120. package/dist/lib/database/migrations/0001_baseline.js.map +1 -1
  121. package/dist/lib/database/migrations/0002_work_hooks.js.map +1 -1
  122. package/dist/lib/database/migrations/0003_actions_redesign.js.map +1 -1
  123. package/dist/lib/database/migrations/0004_workflow_rules.js.map +1 -1
  124. package/dist/lib/database/migrations/0005_provider_status_mapping.js.map +1 -1
  125. package/dist/lib/database/migrations/0006_drop_theme_names_used.js.map +1 -1
  126. package/dist/lib/database/migrations/0007_add_worktree_columns.js.map +1 -1
  127. package/dist/lib/database/migrations/0008_add_agent_mount_mode.js.map +1 -1
  128. package/dist/lib/database/migrations/0009_create_media_items.js.map +1 -1
  129. package/dist/lib/database/migrations/0010_add_ticket_position.js.map +1 -1
  130. package/dist/lib/database/migrations/0011_add_review_gate.js.map +1 -1
  131. package/dist/lib/database/migrations/0012_add_action_network_allowlist.js.map +1 -1
  132. package/dist/lib/database/migrator.d.ts +3 -3
  133. package/dist/lib/database/migrator.js.map +1 -1
  134. package/dist/lib/database/pmo-bootstrap.d.ts +2 -2
  135. package/dist/lib/database/pmo-bootstrap.js +4 -26
  136. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  137. package/dist/lib/database/repositories.js +1 -1
  138. package/dist/lib/database/repositories.js.map +1 -1
  139. package/dist/lib/database/settings-store.d.ts +3 -3
  140. package/dist/lib/database/settings-store.js +2 -2
  141. package/dist/lib/database/settings-store.js.map +1 -1
  142. package/dist/lib/database/sqlite.d.ts +155 -0
  143. package/dist/lib/database/sqlite.js +358 -0
  144. package/dist/lib/database/sqlite.js.map +1 -0
  145. package/dist/lib/database/themes.js +3 -3
  146. package/dist/lib/database/themes.js.map +1 -1
  147. package/dist/lib/database/workspace.d.ts +4 -4
  148. package/dist/lib/database/workspace.js +4 -25
  149. package/dist/lib/database/workspace.js.map +1 -1
  150. package/dist/lib/execution/config.d.ts +33 -33
  151. package/dist/lib/execution/config.js.map +1 -1
  152. package/dist/lib/execution/context.d.ts +20 -0
  153. package/dist/lib/execution/context.js +88 -0
  154. package/dist/lib/execution/context.js.map +1 -1
  155. package/dist/lib/execution/devcontainer.d.ts +7 -1
  156. package/dist/lib/execution/devcontainer.js +52 -38
  157. package/dist/lib/execution/devcontainer.js.map +1 -1
  158. package/dist/lib/execution/runners/devcontainer.js +11 -0
  159. package/dist/lib/execution/runners/devcontainer.js.map +1 -1
  160. package/dist/lib/execution/runners/docker-management.js +1 -1
  161. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  162. package/dist/lib/execution/runners/orchestrator.js +6 -3
  163. package/dist/lib/execution/runners/orchestrator.js.map +1 -1
  164. package/dist/lib/execution/runners/prompt-builder.js +31 -0
  165. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  166. package/dist/lib/execution/runners/shared.d.ts +2 -2
  167. package/dist/lib/execution/runners/shared.js +2 -2
  168. package/dist/lib/execution/runners/shared.js.map +1 -1
  169. package/dist/lib/execution/spawner.d.ts +3 -3
  170. package/dist/lib/execution/spawner.js.map +1 -1
  171. package/dist/lib/execution/storage.d.ts +3 -3
  172. package/dist/lib/execution/storage.js.map +1 -1
  173. package/dist/lib/execution/types.d.ts +23 -0
  174. package/dist/lib/execution/types.js.map +1 -1
  175. package/dist/lib/external-issues/mapping-store.d.ts +2 -2
  176. package/dist/lib/external-issues/mapping-store.js.map +1 -1
  177. package/dist/lib/external-issues/outbound-sync.d.ts +3 -3
  178. package/dist/lib/external-issues/outbound-sync.js.map +1 -1
  179. package/dist/lib/jira/config.d.ts +5 -5
  180. package/dist/lib/jira/config.js.map +1 -1
  181. package/dist/lib/linear/config.d.ts +8 -8
  182. package/dist/lib/linear/config.js.map +1 -1
  183. package/dist/lib/linear/mapper.d.ts +2 -2
  184. package/dist/lib/linear/mapper.js.map +1 -1
  185. package/dist/lib/mcp/types.d.ts +2 -2
  186. package/dist/lib/monday/config.d.ts +9 -9
  187. package/dist/lib/monday/config.js.map +1 -1
  188. package/dist/lib/monday/mapper.d.ts +2 -2
  189. package/dist/lib/monday/mapper.js.map +1 -1
  190. package/dist/lib/pmo/diet.d.ts +3 -3
  191. package/dist/lib/pmo/diet.js.map +1 -1
  192. package/dist/lib/pmo/find-pmo.js +1 -5
  193. package/dist/lib/pmo/find-pmo.js.map +1 -1
  194. package/dist/lib/pmo/index.js +6 -7
  195. package/dist/lib/pmo/index.js.map +1 -1
  196. package/dist/lib/pmo/storage/base.d.ts +15 -15
  197. package/dist/lib/pmo/storage/base.js.map +1 -1
  198. package/dist/lib/pmo/storage/dependencies.js.map +1 -1
  199. package/dist/lib/pmo/storage/helpers.js.map +1 -1
  200. package/dist/lib/pmo/storage/index.d.ts +8 -2
  201. package/dist/lib/pmo/storage/index.js +10 -2
  202. package/dist/lib/pmo/storage/index.js.map +1 -1
  203. package/dist/lib/pmo/storage/projects.js.map +1 -1
  204. package/dist/lib/pmo/storage/roadmaps.js +4 -4
  205. package/dist/lib/pmo/storage/roadmaps.js.map +1 -1
  206. package/dist/lib/pmo/storage/specs.js.map +1 -1
  207. package/dist/lib/pmo/storage/statuses.js +1 -1
  208. package/dist/lib/pmo/storage/statuses.js.map +1 -1
  209. package/dist/lib/pmo/storage/tickets.js +1 -1
  210. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  211. package/dist/lib/pmo/storage/types.d.ts +2 -2
  212. package/dist/lib/pmo/storage/views.js.map +1 -1
  213. package/dist/lib/providers/index.d.ts +2 -0
  214. package/dist/lib/providers/index.js +2 -0
  215. package/dist/lib/providers/index.js.map +1 -1
  216. package/dist/lib/providers/linear-provider.d.ts +2 -2
  217. package/dist/lib/providers/linear-provider.js.map +1 -1
  218. package/dist/lib/providers/resolver.d.ts +3 -3
  219. package/dist/lib/providers/resolver.js.map +1 -1
  220. package/dist/lib/providers/state-intents.d.ts +44 -0
  221. package/dist/lib/providers/state-intents.js +101 -0
  222. package/dist/lib/providers/state-intents.js.map +1 -0
  223. package/dist/lib/providers/state-resolution.d.ts +137 -0
  224. package/dist/lib/providers/state-resolution.js +302 -0
  225. package/dist/lib/providers/state-resolution.js.map +1 -0
  226. package/dist/lib/providers/status-mapping.d.ts +2 -2
  227. package/dist/lib/providers/status-mapping.js.map +1 -1
  228. package/dist/lib/providers/trigger-config.d.ts +4 -4
  229. package/dist/lib/providers/trigger-config.js.map +1 -1
  230. package/dist/lib/providers/types.d.ts +2 -1
  231. package/dist/lib/registry/index.js +4 -11
  232. package/dist/lib/registry/index.js.map +1 -1
  233. package/dist/lib/shortcut/config.d.ts +8 -8
  234. package/dist/lib/shortcut/config.js.map +1 -1
  235. package/dist/lib/trello/config.d.ts +10 -10
  236. package/dist/lib/trello/config.js.map +1 -1
  237. package/dist/lib/trello/mapper.d.ts +2 -2
  238. package/dist/lib/trello/mapper.js.map +1 -1
  239. package/dist/lib/work-lifecycle/action-chaining.d.ts +3 -3
  240. package/dist/lib/work-lifecycle/action-chaining.js.map +1 -1
  241. package/dist/lib/work-lifecycle/hooks/manager.d.ts +3 -3
  242. package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
  243. package/dist/lib/work-lifecycle/hooks/storage.d.ts +3 -3
  244. package/dist/lib/work-lifecycle/hooks/storage.js.map +1 -1
  245. package/dist/lib/work-lifecycle/post-execution.d.ts +2 -2
  246. package/dist/lib/work-lifecycle/post-execution.js +47 -28
  247. package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
  248. package/dist/lib/work-lifecycle/rule-evaluator.d.ts +3 -3
  249. package/dist/lib/work-lifecycle/rule-evaluator.js.map +1 -1
  250. package/dist/lib/work-source/config.d.ts +6 -6
  251. package/dist/lib/work-source/config.js.map +1 -1
  252. package/dist/lib/work-source/provider-sources.d.ts +12 -12
  253. package/dist/lib/work-source/provider-sources.js.map +1 -1
  254. package/oclif.manifest.json +2202 -2088
  255. package/package.json +3 -4
  256. package/bin/validate-better-sqlite3.cjs +0 -129
  257. package/dist/lib/database/native-validation.d.ts +0 -40
  258. package/dist/lib/database/native-validation.js +0 -123
  259. package/dist/lib/database/native-validation.js.map +0 -1
@@ -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 { SqliteDatabase } from '../database/sqlite.js';
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: SqliteDatabase, 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: SqliteDatabase, intent: string, stateName: string): void;
86
+ /**
87
+ * Remove a state-map config override for an intent.
88
+ */
89
+ export declare function deleteStateMapConfig(db: SqliteDatabase, intent: string): void;
90
+ /**
91
+ * List all state-map config overrides.
92
+ */
93
+ export declare function listStateMapConfigs(db: SqliteDatabase): 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?: SqliteDatabase;
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?: SqliteDatabase | 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?: SqliteDatabase, currentState?: string): Promise<StateResolutionResult>;
@@ -0,0 +1,302 @@
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 { SettingsStore } from '../database/settings-store.js';
19
+ import { matchIntentByAliases, getDefaultIntent } from './state-intents.js';
20
+ /**
21
+ * Config key prefix for state-map overrides.
22
+ * e.g., `state-map.review` → "Awaiting Client Feedback"
23
+ */
24
+ const STATE_MAP_PREFIX = 'state-map.';
25
+ // ---------------------------------------------------------------------------
26
+ // LLM Resolution
27
+ // ---------------------------------------------------------------------------
28
+ /**
29
+ * Use the LLM to resolve which available state best matches a semantic intent.
30
+ *
31
+ * Sends the list of available states and the intent to the Anthropic API.
32
+ * Returns the matching state ID, or null if no match.
33
+ *
34
+ * Requires ANTHROPIC_API_KEY to be set.
35
+ */
36
+ export async function llmResolveState(states, intent) {
37
+ const apiKey = process.env.ANTHROPIC_API_KEY;
38
+ if (!apiKey) {
39
+ return null;
40
+ }
41
+ const stateList = states.map(s => `- "${s.name}" (id: ${s.id})`).join('\n');
42
+ const prompt = `You are a state resolution assistant. Given a list of available workflow states from a project management tool and a semantic intent, pick the state that best matches the intent.
43
+
44
+ Available states:
45
+ ${stateList}
46
+
47
+ Semantic intent: "${intent}"
48
+ ${getDefaultIntent(intent) ? `Intent description: ${getDefaultIntent(intent).description}` : ''}
49
+
50
+ Respond with ONLY the exact state ID that best matches this intent. If no state matches, respond with "NONE".`;
51
+ try {
52
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
53
+ method: 'POST',
54
+ headers: {
55
+ 'Content-Type': 'application/json',
56
+ 'x-api-key': apiKey,
57
+ 'anthropic-version': '2023-06-01',
58
+ },
59
+ body: JSON.stringify({
60
+ model: 'claude-haiku-4-5-20251001',
61
+ max_tokens: 100,
62
+ messages: [
63
+ {
64
+ role: 'user',
65
+ content: prompt,
66
+ },
67
+ ],
68
+ }),
69
+ });
70
+ if (!response.ok) {
71
+ return null;
72
+ }
73
+ const data = (await response.json());
74
+ const text = data.content?.[0]?.text?.trim();
75
+ if (!text || text === 'NONE') {
76
+ return null;
77
+ }
78
+ // The LLM should return a state ID — find the matching state
79
+ const match = states.find(s => s.id === text);
80
+ if (match)
81
+ return match;
82
+ // Fallback: LLM might have returned a state name instead of ID
83
+ const nameMatch = states.find(s => s.name.toLowerCase() === text.toLowerCase());
84
+ if (nameMatch)
85
+ return nameMatch;
86
+ return null;
87
+ }
88
+ catch {
89
+ // LLM call failed — non-fatal, fall through to skip
90
+ return null;
91
+ }
92
+ }
93
+ // ---------------------------------------------------------------------------
94
+ // Config Resolution
95
+ // ---------------------------------------------------------------------------
96
+ /**
97
+ * Check user config for a state-map override for the given intent.
98
+ * Config stores state NAMES, not IDs.
99
+ *
100
+ * @param db - Database instance for settings lookup
101
+ * @param intent - Semantic intent name (e.g., 'review')
102
+ * @returns The configured state name, or null if not set
103
+ */
104
+ export function getStateMapConfig(db, intent) {
105
+ try {
106
+ const settings = new SettingsStore(db);
107
+ return settings.get(`${STATE_MAP_PREFIX}${intent}`);
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ }
113
+ /**
114
+ * Set a state-map config override for an intent.
115
+ *
116
+ * @param db - Database instance
117
+ * @param intent - Semantic intent name
118
+ * @param stateName - The state name to map to
119
+ */
120
+ export function setStateMapConfig(db, intent, stateName) {
121
+ const settings = new SettingsStore(db);
122
+ settings.set(`${STATE_MAP_PREFIX}${intent}`, stateName);
123
+ }
124
+ /**
125
+ * Remove a state-map config override for an intent.
126
+ */
127
+ export function deleteStateMapConfig(db, intent) {
128
+ const settings = new SettingsStore(db);
129
+ settings.delete(`${STATE_MAP_PREFIX}${intent}`);
130
+ }
131
+ /**
132
+ * List all state-map config overrides.
133
+ */
134
+ export function listStateMapConfigs(db) {
135
+ try {
136
+ const settings = new SettingsStore(db);
137
+ const entries = settings.getByPrefix(STATE_MAP_PREFIX);
138
+ return entries.map(e => ({
139
+ intent: e.key.slice(STATE_MAP_PREFIX.length),
140
+ stateName: e.value,
141
+ }));
142
+ }
143
+ catch {
144
+ return [];
145
+ }
146
+ }
147
+ // ---------------------------------------------------------------------------
148
+ // State Fetching — Provider Adapters
149
+ // ---------------------------------------------------------------------------
150
+ /**
151
+ * Create a PMProvider adapter from the existing TicketProvider + ProviderStorage.
152
+ *
153
+ * Fetches fresh states from the project's board via storage, and delegates
154
+ * moveTicket to the TicketProvider (which routes to Linear/Jira/PMO).
155
+ */
156
+ export function createPMProviderAdapter(provider, storage, projectId) {
157
+ return {
158
+ async fetchStates(_ticketId) {
159
+ const board = await storage.getProjectBoard(projectId);
160
+ if (!board)
161
+ return [];
162
+ return board.columns.map((col, idx) => ({
163
+ id: col.name, // For PMO, the state ID is the column name
164
+ name: col.name,
165
+ }));
166
+ },
167
+ async moveTicket(ticketId, stateId) {
168
+ const result = await provider.moveTicket(ticketId, stateId);
169
+ return { success: result.success, error: result.error };
170
+ },
171
+ };
172
+ }
173
+ /**
174
+ * Move a ticket to a state matching a semantic intent.
175
+ *
176
+ * Resolution order:
177
+ * 1. Fetch fresh states from the provider (never cache)
178
+ * 2. Check user config for `state-map.{intent}` override → exact match
179
+ * 3. Match against built-in semantic intent aliases
180
+ * 4. LLM fallback — ask Claude which state matches the intent
181
+ * 5. No match → skip, return warning
182
+ *
183
+ * @param pmProvider - The PM provider to fetch states from and move tickets in
184
+ * @param ticketId - The ticket to move
185
+ * @param intent - The semantic intent (e.g., 'review', 'active', 'done', 'blocked')
186
+ * @param dbOrOptions - Database instance or options object
187
+ * @returns Resolution result with success/failure and metadata
188
+ */
189
+ export async function move(pmProvider, ticketId, intent, dbOrOptions) {
190
+ // Normalize arguments: support both `move(p, id, intent, db)` and `move(p, id, intent, { db, currentState })`
191
+ let db;
192
+ let currentState;
193
+ if (dbOrOptions && typeof dbOrOptions === 'object' && 'prepare' in dbOrOptions) {
194
+ // It's a Database instance (has .prepare method)
195
+ db = dbOrOptions;
196
+ }
197
+ else if (dbOrOptions && typeof dbOrOptions === 'object') {
198
+ const opts = dbOrOptions;
199
+ db = opts.db;
200
+ currentState = opts.currentState;
201
+ }
202
+ // 1. Always fetch fresh states
203
+ let states;
204
+ try {
205
+ states = await pmProvider.fetchStates(ticketId);
206
+ }
207
+ catch (error) {
208
+ return {
209
+ success: false,
210
+ error: `Failed to fetch states: ${error instanceof Error ? error.message : String(error)}`,
211
+ };
212
+ }
213
+ if (states.length === 0) {
214
+ return {
215
+ success: false,
216
+ error: 'No states available from provider',
217
+ };
218
+ }
219
+ // Helper: check if ticket is already in the resolved state (case-insensitive)
220
+ const isAlreadyInState = (stateName) => {
221
+ if (!currentState)
222
+ return false;
223
+ return currentState.toLowerCase() === stateName.toLowerCase();
224
+ };
225
+ // 2. Check user config override
226
+ if (db) {
227
+ const configOverride = getStateMapConfig(db, intent);
228
+ if (configOverride) {
229
+ const match = states.find(s => s.name.toLowerCase() === configOverride.toLowerCase());
230
+ if (match) {
231
+ if (isAlreadyInState(match.name)) {
232
+ return { success: false, resolvedVia: 'config', stateName: match.name, stateId: match.id };
233
+ }
234
+ const result = await pmProvider.moveTicket(ticketId, match.id);
235
+ return {
236
+ success: result.success,
237
+ resolvedVia: 'config',
238
+ stateName: match.name,
239
+ stateId: match.id,
240
+ error: result.error,
241
+ };
242
+ }
243
+ // Config is set but no matching state — fall through to alias/LLM
244
+ }
245
+ }
246
+ // 3. Match against built-in semantic intent aliases
247
+ const intentDef = getDefaultIntent(intent);
248
+ if (intentDef) {
249
+ const aliasMatch = matchIntentByAliases(states, intentDef);
250
+ if (aliasMatch) {
251
+ if (isAlreadyInState(aliasMatch.name)) {
252
+ return { success: false, resolvedVia: 'alias', stateName: aliasMatch.name, stateId: aliasMatch.id };
253
+ }
254
+ const result = await pmProvider.moveTicket(ticketId, aliasMatch.id);
255
+ return {
256
+ success: result.success,
257
+ resolvedVia: 'alias',
258
+ stateName: aliasMatch.name,
259
+ stateId: aliasMatch.id,
260
+ error: result.error,
261
+ };
262
+ }
263
+ }
264
+ // 4. LLM fallback
265
+ const llmMatch = await llmResolveState(states, intent);
266
+ if (llmMatch) {
267
+ if (isAlreadyInState(llmMatch.name)) {
268
+ return { success: false, resolvedVia: 'llm', stateName: llmMatch.name, stateId: llmMatch.id };
269
+ }
270
+ const result = await pmProvider.moveTicket(ticketId, llmMatch.id);
271
+ return {
272
+ success: result.success,
273
+ resolvedVia: 'llm',
274
+ stateName: llmMatch.name,
275
+ stateId: llmMatch.id,
276
+ error: result.error,
277
+ };
278
+ }
279
+ // 5. No match — skip
280
+ const warning = `No state match for intent '${intent}', skipping move`;
281
+ console.warn(warning);
282
+ return {
283
+ success: false,
284
+ resolvedVia: 'skipped',
285
+ warning,
286
+ };
287
+ }
288
+ // ---------------------------------------------------------------------------
289
+ // Convenience: moveWithProvider()
290
+ // ---------------------------------------------------------------------------
291
+ /**
292
+ * High-level convenience function that wraps move() with the existing
293
+ * TicketProvider + ProviderStorage infrastructure.
294
+ *
295
+ * Use this from commands and lifecycle hooks that already have a resolved
296
+ * TicketProvider and ProviderStorage.
297
+ */
298
+ export async function moveWithProvider(provider, storage, projectId, ticketId, intent, db, currentState) {
299
+ const pmProvider = createPMProviderAdapter(provider, storage, projectId);
300
+ return move(pmProvider, ticketId, intent, { db, currentState });
301
+ }
302
+ //# sourceMappingURL=state-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-resolution.js","sourceRoot":"","sources":["../../../src/lib/providers/state-resolution.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * 1. Exact name match
16
16
  * 2. Category-based matching (e.g., 'started' category)
17
17
  */
18
- import type Database from 'better-sqlite3';
18
+ import type { SqliteDatabase } from '../database/sqlite.js';
19
19
  import type { StateCategory } from '../pmo/types.js';
20
20
  export interface StatusMapping {
21
21
  provider: string;
@@ -29,7 +29,7 @@ export interface StatusMapping {
29
29
  */
30
30
  export declare class ProviderStatusMappingStore {
31
31
  private db;
32
- constructor(db: Database.Database);
32
+ constructor(db: SqliteDatabase);
33
33
  /**
34
34
  * Get the canonical status for a provider-specific status.
35
35
  * Returns null if no mapping is configured.
@@ -1 +1 @@
1
- {"version":3,"file":"status-mapping.js","sourceRoot":"","sources":["../../../src/lib/providers/status-mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-mapping.js","sourceRoot":"","sources":["../../../src/lib/providers/status-mapping.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@
22
22
  * trigger_event: 'pr_merged', target_status: 'Done'
23
23
  * → When a PR is merged, move the ticket to "Done"
24
24
  */
25
- import type Database from 'better-sqlite3';
25
+ import type { SqliteDatabase } from '../database/sqlite.js';
26
26
  /**
27
27
  * Valid trigger event names that can be configured.
28
28
  */
@@ -42,7 +42,7 @@ export interface TriggerConfig {
42
42
  */
43
43
  export declare class ProviderTriggerStore {
44
44
  private db;
45
- constructor(db: Database.Database);
45
+ constructor(db: SqliteDatabase);
46
46
  /**
47
47
  * Get all triggers for a specific event, optionally filtered by provider and project.
48
48
  */
@@ -72,7 +72,7 @@ export declare class TriggerHandler {
72
72
  private unsubscribers;
73
73
  private store;
74
74
  private moveTicket;
75
- constructor(db: Database.Database, moveTicket: (ticketId: string, projectId: string, targetStatus: string) => Promise<void>);
75
+ constructor(db: SqliteDatabase, moveTicket: (ticketId: string, projectId: string, targetStatus: string) => Promise<void>);
76
76
  /**
77
77
  * Start listening for work-lifecycle events and applying triggers.
78
78
  */
@@ -91,7 +91,7 @@ export declare class TriggerHandler {
91
91
  * Initialize the trigger handler.
92
92
  * Safe to call multiple times — subsequent calls are no-ops.
93
93
  */
94
- export declare function initTriggerHandler(db: Database.Database, moveTicket: (ticketId: string, projectId: string, targetStatus: string) => Promise<void>): TriggerHandler;
94
+ export declare function initTriggerHandler(db: SqliteDatabase, moveTicket: (ticketId: string, projectId: string, targetStatus: string) => Promise<void>): TriggerHandler;
95
95
  /**
96
96
  * Stop the trigger handler (primarily for testing).
97
97
  */
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-config.js","sourceRoot":"","sources":["../../../src/lib/providers/trigger-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trigger-config.js","sourceRoot":"","sources":["../../../src/lib/providers/trigger-config.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  * The local PMO is just the default provider for users without integrations,
9
9
  * not a cache layer.
10
10
  */
11
+ import type { SqliteDatabase } from '../database/sqlite.js';
11
12
  import type { StateCategory, Ticket, TicketFilter, CreateTicketInput } from '../pmo/types.js';
12
13
  /**
13
14
  * Supported provider names for ticket operations.
@@ -132,5 +133,5 @@ export interface ProviderStorage {
132
133
  deleteTicket: (id: string) => Promise<void>;
133
134
  listTickets: (projectId: string | undefined, filter?: TicketFilter) => Promise<Ticket[]>;
134
135
  createTicket: (projectId: string, input: CreateTicketInput) => Promise<Ticket>;
135
- getDatabase: () => import('better-sqlite3').Database;
136
+ getDatabase: () => SqliteDatabase;
136
137
  }
@@ -9,7 +9,6 @@ import { openDriver } from '../database/driver.js';
9
9
  import * as fs from 'node:fs';
10
10
  import * as path from 'node:path';
11
11
  import * as os from 'node:os';
12
- import { throwIfNativeBindingError } from '../database/native-validation.js';
13
12
  // =============================================================================
14
13
  // Schema
15
14
  // =============================================================================
@@ -58,16 +57,10 @@ export function openMachineRegistry() {
58
57
  if (!fs.existsSync(dir)) {
59
58
  fs.mkdirSync(dir, { recursive: true });
60
59
  }
61
- try {
62
- const driver = openDriver(dbPath, { foreignKeys: false, busyTimeout: 3000 });
63
- driver.pragma('journal_mode = WAL');
64
- driver.exec(REGISTRY_SCHEMA);
65
- return driver;
66
- }
67
- catch (error) {
68
- throwIfNativeBindingError(error, 'machine agent registry');
69
- throw error;
70
- }
60
+ const driver = openDriver(dbPath, { foreignKeys: false, busyTimeout: 3000 });
61
+ driver.pragma('journal_mode = WAL');
62
+ driver.exec(REGISTRY_SCHEMA);
63
+ return driver;
71
64
  }
72
65
  // =============================================================================
73
66
  // Write Operations
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/registry/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/registry/index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Stores Shortcut credentials and preferences in the workspace_settings table.
5
5
  */
6
- import type Database from 'better-sqlite3';
6
+ import type { SqliteDatabase } from '../database/sqlite.js';
7
7
  export interface ShortcutConfig {
8
8
  apiToken: string;
9
9
  workspaceSlug?: string;
@@ -11,28 +11,28 @@ export interface ShortcutConfig {
11
11
  /**
12
12
  * Check if Shortcut is configured.
13
13
  */
14
- export declare function isShortcutConfigured(db: Database.Database): boolean;
14
+ export declare function isShortcutConfigured(db: SqliteDatabase): boolean;
15
15
  /**
16
16
  * Load Shortcut configuration from the database + environment.
17
17
  */
18
- export declare function loadShortcutConfig(db: Database.Database): ShortcutConfig | null;
18
+ export declare function loadShortcutConfig(db: SqliteDatabase): ShortcutConfig | null;
19
19
  /**
20
20
  * Save Shortcut configuration to the database.
21
21
  */
22
- export declare function saveShortcutConfig(db: Database.Database, config: ShortcutConfig): void;
22
+ export declare function saveShortcutConfig(db: SqliteDatabase, config: ShortcutConfig): void;
23
23
  /**
24
24
  * Save the Shortcut API token.
25
25
  */
26
- export declare function saveShortcutApiToken(db: Database.Database, apiToken: string): void;
26
+ export declare function saveShortcutApiToken(db: SqliteDatabase, apiToken: string): void;
27
27
  /**
28
28
  * Save the Shortcut workspace slug.
29
29
  */
30
- export declare function saveShortcutWorkspaceSlug(db: Database.Database, slug: string): void;
30
+ export declare function saveShortcutWorkspaceSlug(db: SqliteDatabase, slug: string): void;
31
31
  /**
32
32
  * Clear all Shortcut configuration from the database.
33
33
  */
34
- export declare function clearShortcutConfig(db: Database.Database): void;
34
+ export declare function clearShortcutConfig(db: SqliteDatabase): void;
35
35
  /**
36
36
  * Get the stored Shortcut API token.
37
37
  */
38
- export declare function getShortcutApiToken(db: Database.Database): string | null;
38
+ export declare function getShortcutApiToken(db: SqliteDatabase): string | null;