@proletariat/cli 0.3.58 → 0.3.60

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 (212) hide show
  1. package/dist/commands/{spec → dashboard}/index.d.ts +4 -4
  2. package/dist/commands/dashboard/index.js +117 -0
  3. package/dist/commands/dashboard/index.js.map +1 -0
  4. package/dist/commands/execution/config.js +5 -4
  5. package/dist/commands/execution/config.js.map +1 -1
  6. package/dist/commands/execution/stop.js +4 -2
  7. package/dist/commands/execution/stop.js.map +1 -1
  8. package/dist/commands/execution/view.js +3 -0
  9. package/dist/commands/execution/view.js.map +1 -1
  10. package/dist/commands/init.d.ts +1 -0
  11. package/dist/commands/init.js +40 -3
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/mcp-server.js +1 -2
  14. package/dist/commands/mcp-server.js.map +1 -1
  15. package/dist/commands/{spec/link/index.d.ts → session/exec.d.ts} +5 -3
  16. package/dist/commands/session/exec.js +205 -0
  17. package/dist/commands/session/exec.js.map +1 -0
  18. package/dist/commands/session/index.js +12 -0
  19. package/dist/commands/session/index.js.map +1 -1
  20. package/dist/commands/{spec/delete.d.ts → session/inspect.d.ts} +3 -3
  21. package/dist/commands/session/inspect.js +316 -0
  22. package/dist/commands/session/inspect.js.map +1 -0
  23. package/dist/commands/session/peek.d.ts +15 -0
  24. package/dist/commands/session/peek.js +141 -8
  25. package/dist/commands/session/peek.js.map +1 -1
  26. package/dist/commands/session/poke.d.ts +4 -1
  27. package/dist/commands/session/poke.js +175 -20
  28. package/dist/commands/session/poke.js.map +1 -1
  29. package/dist/commands/{spec/link/depends.d.ts → session/restart.d.ts} +6 -4
  30. package/dist/commands/session/restart.js +320 -0
  31. package/dist/commands/session/restart.js.map +1 -0
  32. package/dist/commands/ticket/list.d.ts +10 -0
  33. package/dist/commands/ticket/list.js +126 -1
  34. package/dist/commands/ticket/list.js.map +1 -1
  35. package/dist/commands/tools/add.d.ts +20 -0
  36. package/dist/commands/tools/add.js +129 -0
  37. package/dist/commands/tools/add.js.map +1 -0
  38. package/dist/commands/tools/check.d.ts +10 -0
  39. package/dist/commands/tools/check.js +75 -0
  40. package/dist/commands/tools/check.js.map +1 -0
  41. package/dist/commands/tools/detect.d.ts +11 -0
  42. package/dist/commands/tools/detect.js +107 -0
  43. package/dist/commands/tools/detect.js.map +1 -0
  44. package/dist/commands/tools/index.d.ts +11 -0
  45. package/dist/commands/tools/index.js +87 -0
  46. package/dist/commands/tools/index.js.map +1 -0
  47. package/dist/commands/tools/remove.d.ts +13 -0
  48. package/dist/commands/tools/remove.js +55 -0
  49. package/dist/commands/tools/remove.js.map +1 -0
  50. package/dist/commands/{spec/view.d.ts → trello/configure.d.ts} +6 -6
  51. package/dist/commands/trello/configure.js +259 -0
  52. package/dist/commands/trello/configure.js.map +1 -0
  53. package/dist/commands/{spec/plan.d.ts → trello/import.d.ts} +3 -5
  54. package/dist/commands/trello/import.js +241 -0
  55. package/dist/commands/trello/import.js.map +1 -0
  56. package/dist/commands/{spec/ticket.d.ts → trello/sync.d.ts} +5 -6
  57. package/dist/commands/trello/sync.js +190 -0
  58. package/dist/commands/trello/sync.js.map +1 -0
  59. package/dist/commands/work/start.d.ts +1 -0
  60. package/dist/commands/work/start.js +17 -39
  61. package/dist/commands/work/start.js.map +1 -1
  62. package/dist/lib/dashboard/data.d.ts +64 -0
  63. package/dist/lib/dashboard/data.js +259 -0
  64. package/dist/lib/dashboard/data.js.map +1 -0
  65. package/dist/lib/dashboard/html.d.ts +7 -0
  66. package/dist/lib/dashboard/html.js +682 -0
  67. package/dist/lib/dashboard/html.js.map +1 -0
  68. package/dist/lib/dashboard/server.d.ts +20 -0
  69. package/dist/lib/dashboard/server.js +114 -0
  70. package/dist/lib/dashboard/server.js.map +1 -0
  71. package/dist/lib/events/events.d.ts +26 -2
  72. package/dist/lib/events/events.js +3 -2
  73. package/dist/lib/events/events.js.map +1 -1
  74. package/dist/lib/execution/config.d.ts +8 -0
  75. package/dist/lib/execution/config.js +83 -4
  76. package/dist/lib/execution/config.js.map +1 -1
  77. package/dist/lib/execution/runners.d.ts +36 -3
  78. package/dist/lib/execution/runners.js +216 -35
  79. package/dist/lib/execution/runners.js.map +1 -1
  80. package/dist/lib/execution/spawner.d.ts +2 -0
  81. package/dist/lib/execution/spawner.js +22 -31
  82. package/dist/lib/execution/spawner.js.map +1 -1
  83. package/dist/lib/execution/types.d.ts +26 -5
  84. package/dist/lib/execution/types.js +24 -0
  85. package/dist/lib/execution/types.js.map +1 -1
  86. package/dist/lib/external-issues/adapters.d.ts +17 -0
  87. package/dist/lib/external-issues/adapters.js +88 -0
  88. package/dist/lib/external-issues/adapters.js.map +1 -1
  89. package/dist/lib/external-issues/index.d.ts +1 -0
  90. package/dist/lib/external-issues/index.js +2 -0
  91. package/dist/lib/external-issues/index.js.map +1 -1
  92. package/dist/lib/external-issues/mapping-store.js +1 -1
  93. package/dist/lib/external-issues/outbound-sync.d.ts +79 -0
  94. package/dist/lib/external-issues/outbound-sync.js +296 -0
  95. package/dist/lib/external-issues/outbound-sync.js.map +1 -0
  96. package/dist/lib/external-issues/trello.d.ts +80 -0
  97. package/dist/lib/external-issues/trello.js +266 -0
  98. package/dist/lib/external-issues/trello.js.map +1 -0
  99. package/dist/lib/external-issues/types.d.ts +3 -3
  100. package/dist/lib/external-issues/types.js +1 -1
  101. package/dist/lib/external-issues/types.js.map +1 -1
  102. package/dist/lib/linear/client.d.ts +4 -3
  103. package/dist/lib/linear/client.js +185 -122
  104. package/dist/lib/linear/client.js.map +1 -1
  105. package/dist/lib/mcp/tools/cli-passthrough.js +77 -0
  106. package/dist/lib/mcp/tools/cli-passthrough.js.map +1 -1
  107. package/dist/lib/mcp/tools/index.d.ts +0 -1
  108. package/dist/lib/mcp/tools/index.js +0 -1
  109. package/dist/lib/mcp/tools/index.js.map +1 -1
  110. package/dist/lib/onboarding/detect-tools.d.ts +15 -0
  111. package/dist/lib/onboarding/detect-tools.js +44 -0
  112. package/dist/lib/onboarding/detect-tools.js.map +1 -0
  113. package/dist/lib/onboarding/index.d.ts +2 -0
  114. package/dist/lib/onboarding/index.js +3 -0
  115. package/dist/lib/onboarding/index.js.map +1 -0
  116. package/dist/lib/onboarding/wizard.d.ts +25 -0
  117. package/dist/lib/onboarding/wizard.js +156 -0
  118. package/dist/lib/onboarding/wizard.js.map +1 -0
  119. package/dist/lib/pmo/schema.d.ts +2 -1
  120. package/dist/lib/pmo/schema.js +3 -1
  121. package/dist/lib/pmo/schema.js.map +1 -1
  122. package/dist/lib/pmo/storage/tickets.d.ts +8 -0
  123. package/dist/lib/pmo/storage/tickets.js +56 -2
  124. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  125. package/dist/lib/pmo/sync-manager.js +3 -0
  126. package/dist/lib/pmo/sync-manager.js.map +1 -1
  127. package/dist/lib/runners/claude-code-runner.js +6 -0
  128. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  129. package/dist/lib/tool-registry/detect.d.ts +20 -0
  130. package/dist/lib/tool-registry/detect.js +95 -0
  131. package/dist/lib/tool-registry/detect.js.map +1 -0
  132. package/dist/lib/tool-registry/index.d.ts +10 -0
  133. package/dist/lib/tool-registry/index.js +13 -0
  134. package/dist/lib/tool-registry/index.js.map +1 -0
  135. package/dist/lib/tool-registry/policy.d.ts +32 -0
  136. package/dist/lib/tool-registry/policy.js +97 -0
  137. package/dist/lib/tool-registry/policy.js.map +1 -0
  138. package/dist/lib/tool-registry/registry.d.ts +42 -0
  139. package/dist/lib/tool-registry/registry.js +120 -0
  140. package/dist/lib/tool-registry/registry.js.map +1 -0
  141. package/dist/lib/tool-registry/spawn.d.ts +50 -0
  142. package/dist/lib/tool-registry/spawn.js +103 -0
  143. package/dist/lib/tool-registry/spawn.js.map +1 -0
  144. package/dist/lib/tool-registry/types.d.ts +56 -0
  145. package/dist/lib/tool-registry/types.js +109 -0
  146. package/dist/lib/tool-registry/types.js.map +1 -0
  147. package/dist/lib/trello/client.d.ts +23 -0
  148. package/dist/lib/trello/client.js +114 -0
  149. package/dist/lib/trello/client.js.map +1 -0
  150. package/dist/lib/trello/config.d.ts +55 -0
  151. package/dist/lib/trello/config.js +127 -0
  152. package/dist/lib/trello/config.js.map +1 -0
  153. package/dist/lib/trello/index.d.ts +5 -0
  154. package/dist/lib/trello/index.js +5 -0
  155. package/dist/lib/trello/index.js.map +1 -0
  156. package/dist/lib/trello/mapper.d.ts +13 -0
  157. package/dist/lib/trello/mapper.js +71 -0
  158. package/dist/lib/trello/mapper.js.map +1 -0
  159. package/dist/lib/trello/sync.d.ts +13 -0
  160. package/dist/lib/trello/sync.js +38 -0
  161. package/dist/lib/trello/sync.js.map +1 -0
  162. package/dist/lib/trello/types.d.ts +53 -0
  163. package/dist/lib/trello/types.js +2 -0
  164. package/dist/lib/trello/types.js.map +1 -0
  165. package/dist/lib/work-source/client.js +17 -0
  166. package/dist/lib/work-source/client.js.map +1 -1
  167. package/dist/lib/work-source/config.d.ts +1 -1
  168. package/dist/lib/work-source/config.js +23 -1
  169. package/dist/lib/work-source/config.js.map +1 -1
  170. package/dist/lib/work-source/index.d.ts +1 -0
  171. package/dist/lib/work-source/index.js +1 -0
  172. package/dist/lib/work-source/index.js.map +1 -1
  173. package/dist/lib/work-source/provider-sources.d.ts +113 -0
  174. package/dist/lib/work-source/provider-sources.js +227 -0
  175. package/dist/lib/work-source/provider-sources.js.map +1 -0
  176. package/oclif.manifest.json +4368 -4364
  177. package/package.json +6 -2
  178. package/dist/commands/spec/create.d.ts +0 -20
  179. package/dist/commands/spec/create.js +0 -171
  180. package/dist/commands/spec/create.js.map +0 -1
  181. package/dist/commands/spec/delete.js +0 -112
  182. package/dist/commands/spec/delete.js.map +0 -1
  183. package/dist/commands/spec/edit.d.ts +0 -23
  184. package/dist/commands/spec/edit.js +0 -262
  185. package/dist/commands/spec/edit.js.map +0 -1
  186. package/dist/commands/spec/index.js +0 -88
  187. package/dist/commands/spec/index.js.map +0 -1
  188. package/dist/commands/spec/link/depends.js +0 -87
  189. package/dist/commands/spec/link/depends.js.map +0 -1
  190. package/dist/commands/spec/link/index.js +0 -93
  191. package/dist/commands/spec/link/index.js.map +0 -1
  192. package/dist/commands/spec/link/remove.d.ts +0 -18
  193. package/dist/commands/spec/link/remove.js +0 -91
  194. package/dist/commands/spec/link/remove.js.map +0 -1
  195. package/dist/commands/spec/list.d.ts +0 -14
  196. package/dist/commands/spec/list.js +0 -101
  197. package/dist/commands/spec/list.js.map +0 -1
  198. package/dist/commands/spec/plan.js +0 -102
  199. package/dist/commands/spec/plan.js.map +0 -1
  200. package/dist/commands/spec/ticket.js +0 -144
  201. package/dist/commands/spec/ticket.js.map +0 -1
  202. package/dist/commands/spec/view.js +0 -202
  203. package/dist/commands/spec/view.js.map +0 -1
  204. package/dist/lib/mcp/tools/spec.d.ts +0 -6
  205. package/dist/lib/mcp/tools/spec.js +0 -197
  206. package/dist/lib/mcp/tools/spec.js.map +0 -1
  207. package/dist/lib/pmo/spec-parser.d.ts +0 -25
  208. package/dist/lib/pmo/spec-parser.js +0 -206
  209. package/dist/lib/pmo/spec-parser.js.map +0 -1
  210. package/dist/lib/pmo/spec-types.d.ts +0 -43
  211. package/dist/lib/pmo/spec-types.js +0 -8
  212. package/dist/lib/pmo/spec-types.js.map +0 -1
@@ -9,15 +9,15 @@
9
9
  * Supported external issue sources.
10
10
  *
11
11
  */
12
- export type IssueSource = 'linear' | 'jira' | 'asana' | 'shortcut';
12
+ export type IssueSource = 'linear' | 'jira' | 'asana' | 'shortcut' | 'trello';
13
13
  /**
14
14
  * All valid issue sources as a const array.
15
15
  */
16
- export declare const ISSUE_SOURCES: readonly ["linear", "jira", "asana", "shortcut"];
16
+ export declare const ISSUE_SOURCES: readonly ["linear", "jira", "asana", "shortcut", "trello"];
17
17
  /**
18
18
  * Providers supported by the external execution mapping store.
19
19
  */
20
- export type ExternalMappingProvider = 'linear' | 'jira' | 'shortcut' | 'asana' | 'monday' | 'pmo';
20
+ export type ExternalMappingProvider = 'linear' | 'jira' | 'shortcut' | 'asana' | 'trello' | 'monday' | 'pmo';
21
21
  /**
22
22
  * Canonical envelope for external issues/work items.
23
23
  *
@@ -8,7 +8,7 @@
8
8
  /**
9
9
  * All valid issue sources as a const array.
10
10
  */
11
- export const ISSUE_SOURCES = ['linear', 'jira', 'asana', 'shortcut'];
11
+ export const ISSUE_SOURCES = ['linear', 'jira', 'asana', 'shortcut', 'trello'];
12
12
  /**
13
13
  * Typed error for external issue operations.
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/external-issues/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAU,CAAA;AA+M7E;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAElC;IAEA;IACA;IAJT,YACS,IAA4B,EACnC,OAAe,EACR,MAAoB,EACpB,gBAAyC;QAEhD,KAAK,CAAC,OAAO,CAAC,CAAA;QALP,SAAI,GAAJ,IAAI,CAAwB;QAE5B,WAAM,GAAN,MAAM,CAAc;QACpB,qBAAgB,GAAhB,gBAAgB,CAAyB;QAGhD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAgBD;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAEhC;IAEA;IAHlB,YACkB,IAAmC,EACnD,OAAe,EACC,WAAqB;QAErC,KAAK,CAAC,OAAO,CAAC,CAAA;QAJE,SAAI,GAAJ,IAAI,CAA+B;QAEnC,gBAAW,GAAX,WAAW,CAAU;QAGrC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AAmED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAuB,EACvB,QAAwB;IAExB,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,MAAM;YACrB,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,WAAW,EAAE,QAAQ,CAAC,YAAY;YAClC,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,GAAG,EAAE,QAAQ,CAAC,GAAG;SAClB;QACD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,WAAW;QAChC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;KACrC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/external-issues/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAA;AA+MvF;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAElC;IAEA;IACA;IAJT,YACS,IAA4B,EACnC,OAAe,EACR,MAAoB,EACpB,gBAAyC;QAEhD,KAAK,CAAC,OAAO,CAAC,CAAA;QALP,SAAI,GAAJ,IAAI,CAAwB;QAE5B,WAAM,GAAN,MAAM,CAAc;QACpB,qBAAgB,GAAhB,gBAAgB,CAAyB;QAGhD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAgBD;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAEhC;IAEA;IAHlB,YACkB,IAAmC,EACnD,OAAe,EACC,WAAqB;QAErC,KAAK,CAAC,OAAO,CAAC,CAAA;QAJE,SAAI,GAAJ,IAAI,CAA+B;QAEnC,gBAAW,GAAX,WAAW,CAAU;QAGrC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AAmED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAuB,EACvB,QAAwB;IAExB,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,MAAM;YACrB,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,WAAW,EAAE,QAAQ,CAAC,YAAY;YAClC,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,GAAG,EAAE,QAAQ,CAAC,GAAG;SAClB;QACD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,WAAW;QAChC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;KACrC,CAAA;AACH,CAAC"}
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Linear API Client
3
3
  *
4
- * Thin wrapper around @linear/sdk providing typed access to
5
- * Linear issues, teams, states, and cycles for the PMO integration.
4
+ * Thin wrapper using direct GraphQL queries for Linear API access.
5
+ * Provides typed access to issues, teams, states, and cycles for the PMO integration.
6
6
  */
7
7
  import type { LinearIssue, LinearTeam, LinearWorkflowState, LinearCycle, LinearIssueFilter } from './types.js';
8
8
  export declare class LinearClient {
9
- private sdk;
9
+ private apiKey;
10
10
  constructor(apiKey: string);
11
+ private query;
11
12
  /**
12
13
  * Verify the API key is valid and return the authenticated user's organization.
13
14
  */
@@ -1,33 +1,64 @@
1
1
  /**
2
2
  * Linear API Client
3
3
  *
4
- * Thin wrapper around @linear/sdk providing typed access to
5
- * Linear issues, teams, states, and cycles for the PMO integration.
4
+ * Thin wrapper using direct GraphQL queries for Linear API access.
5
+ * Provides typed access to issues, teams, states, and cycles for the PMO integration.
6
6
  */
7
- import { LinearClient as SDKClient } from '@linear/sdk';
7
+ const LINEAR_API_URL = 'https://api.linear.app/graphql';
8
8
  export class LinearClient {
9
- sdk;
9
+ apiKey;
10
10
  constructor(apiKey) {
11
- this.sdk = new SDKClient({ apiKey });
11
+ this.apiKey = apiKey;
12
+ }
13
+ async query(gql, variables) {
14
+ const response = await fetch(LINEAR_API_URL, {
15
+ method: 'POST',
16
+ headers: {
17
+ 'Content-Type': 'application/json',
18
+ Authorization: this.apiKey,
19
+ },
20
+ body: JSON.stringify({ query: gql, variables }),
21
+ });
22
+ if (!response.ok) {
23
+ throw new Error(`Linear API request failed with status ${response.status}`);
24
+ }
25
+ const result = (await response.json());
26
+ if (result.errors && result.errors.length > 0) {
27
+ throw new Error(`Linear API error: ${result.errors[0].message}`);
28
+ }
29
+ if (!result.data) {
30
+ throw new Error('Linear API returned no data');
31
+ }
32
+ return result.data;
12
33
  }
13
34
  /**
14
35
  * Verify the API key is valid and return the authenticated user's organization.
15
36
  */
16
37
  async verify() {
17
- const viewer = await this.sdk.viewer;
18
- const org = await this.sdk.organization;
38
+ const data = await this.query(`
39
+ query {
40
+ viewer { name email }
41
+ organization { name }
42
+ }
43
+ `);
19
44
  return {
20
- organizationName: org.name,
21
- userName: viewer.name,
22
- email: viewer.email,
45
+ organizationName: data.organization.name,
46
+ userName: data.viewer.name,
47
+ email: data.viewer.email,
23
48
  };
24
49
  }
25
50
  /**
26
51
  * List all teams in the workspace.
27
52
  */
28
53
  async listTeams() {
29
- const teams = await this.sdk.teams();
30
- return teams.nodes.map((t) => ({
54
+ const data = await this.query(`
55
+ query {
56
+ teams {
57
+ nodes { id key name description }
58
+ }
59
+ }
60
+ `);
61
+ return data.teams.nodes.map((t) => ({
31
62
  id: t.id,
32
63
  key: t.key,
33
64
  name: t.name,
@@ -45,9 +76,16 @@ export class LinearClient {
45
76
  * List workflow states for a team.
46
77
  */
47
78
  async listStates(teamId) {
48
- const team = await this.sdk.team(teamId);
49
- const states = await team.states();
50
- return states.nodes.map((s) => ({
79
+ const data = await this.query(`
80
+ query TeamStates($teamId: String!) {
81
+ team(id: $teamId) {
82
+ states {
83
+ nodes { id name type color position }
84
+ }
85
+ }
86
+ }
87
+ `, { teamId });
88
+ return data.team.states.nodes.map((s) => ({
51
89
  id: s.id,
52
90
  name: s.name,
53
91
  type: s.type,
@@ -59,14 +97,21 @@ export class LinearClient {
59
97
  * List cycles for a team.
60
98
  */
61
99
  async listCycles(teamId) {
62
- const team = await this.sdk.team(teamId);
63
- const cycles = await team.cycles();
64
- return cycles.nodes.map((c) => ({
100
+ const data = await this.query(`
101
+ query TeamCycles($teamId: String!) {
102
+ team(id: $teamId) {
103
+ cycles {
104
+ nodes { id name number startsAt endsAt }
105
+ }
106
+ }
107
+ }
108
+ `, { teamId });
109
+ return data.team.cycles.nodes.map((c) => ({
65
110
  id: c.id,
66
111
  name: c.name ?? `Cycle ${c.number}`,
67
112
  number: c.number,
68
- startsAt: c.startsAt?.toISOString() ?? '',
69
- endsAt: c.endsAt?.toISOString() ?? '',
113
+ startsAt: c.startsAt ?? '',
114
+ endsAt: c.endsAt ?? '',
70
115
  }));
71
116
  }
72
117
  /**
@@ -87,8 +132,11 @@ export class LinearClient {
87
132
  queryFilter.state = { name: { eqIgnoreCase: filter.stateName } };
88
133
  }
89
134
  if (filter.assigneeMe) {
90
- const viewer = await this.sdk.viewer;
91
- queryFilter.assignee = { id: { eq: viewer.id } };
135
+ // Fetch viewer ID first
136
+ const viewerData = await this.query(`
137
+ query { viewer { id } }
138
+ `);
139
+ queryFilter.assignee = { id: { eq: viewerData.viewer.id } };
92
140
  }
93
141
  else if (filter.assigneeId) {
94
142
  queryFilter.assignee = { id: { eq: filter.assigneeId } };
@@ -102,156 +150,171 @@ export class LinearClient {
102
150
  if (filter.projectId) {
103
151
  queryFilter.project = { id: { eq: filter.projectId } };
104
152
  }
105
- const issues = await this.sdk.issues({
106
- filter: queryFilter,
107
- first: filter.limit ?? 50,
108
- });
109
- const results = [];
110
- for (const issue of issues.nodes) {
111
- // eslint-disable-next-line no-await-in-loop
112
- const state = await issue.state;
113
- // eslint-disable-next-line no-await-in-loop
114
- const team = await issue.team;
115
- // eslint-disable-next-line no-await-in-loop
116
- const assignee = await issue.assignee;
117
- // eslint-disable-next-line no-await-in-loop
118
- const labelsConn = await issue.labels();
119
- // eslint-disable-next-line no-await-in-loop
120
- const cycle = await issue.cycle;
121
- // eslint-disable-next-line no-await-in-loop
122
- const project = await issue.project;
123
- results.push({
124
- id: issue.id,
125
- identifier: issue.identifier,
126
- title: issue.title,
127
- description: issue.description ?? undefined,
128
- priority: issue.priority,
129
- state: state ? {
130
- id: state.id,
131
- name: state.name,
132
- type: state.type,
133
- } : { id: '', name: 'Unknown', type: 'backlog' },
134
- team: team ? {
135
- id: team.id,
136
- key: team.key,
137
- name: team.name,
138
- } : { id: '', key: '', name: 'Unknown' },
139
- assignee: assignee ? {
140
- id: assignee.id,
141
- name: assignee.name,
142
- email: assignee.email,
143
- } : undefined,
144
- labels: labelsConn.nodes.map((l) => ({
145
- id: l.id,
146
- name: l.name,
147
- color: l.color,
148
- })),
149
- cycle: cycle ? {
150
- id: cycle.id,
151
- name: cycle.name ?? `Cycle ${cycle.number}`,
152
- number: cycle.number,
153
- } : undefined,
154
- project: project ? {
155
- id: project.id,
156
- name: project.name,
157
- } : undefined,
158
- estimate: issue.estimate ?? undefined,
159
- dueDate: issue.dueDate ?? undefined,
160
- url: issue.url,
161
- createdAt: issue.createdAt.toISOString(),
162
- updatedAt: issue.updatedAt.toISOString(),
163
- });
153
+ const data = await this.query(`
154
+ query Issues($filter: IssueFilter, $first: Int!) {
155
+ issues(filter: $filter, first: $first) {
156
+ nodes {
157
+ id identifier title description priority estimate dueDate url createdAt updatedAt
158
+ state { id name type }
159
+ team { id key name }
160
+ assignee { id name email }
161
+ labels { nodes { id name color } }
162
+ cycle { id name number }
163
+ project { id name }
164
+ }
164
165
  }
165
- return results;
166
+ }
167
+ `, { filter: queryFilter, first: filter.limit ?? 50 });
168
+ return data.issues.nodes.map((issue) => ({
169
+ id: issue.id,
170
+ identifier: issue.identifier,
171
+ title: issue.title,
172
+ description: issue.description ?? undefined,
173
+ priority: issue.priority,
174
+ state: issue.state ? {
175
+ id: issue.state.id,
176
+ name: issue.state.name,
177
+ type: issue.state.type,
178
+ } : { id: '', name: 'Unknown', type: 'backlog' },
179
+ team: issue.team ? {
180
+ id: issue.team.id,
181
+ key: issue.team.key,
182
+ name: issue.team.name,
183
+ } : { id: '', key: '', name: 'Unknown' },
184
+ assignee: issue.assignee ? {
185
+ id: issue.assignee.id,
186
+ name: issue.assignee.name,
187
+ email: issue.assignee.email,
188
+ } : undefined,
189
+ labels: issue.labels.nodes.map((l) => ({
190
+ id: l.id,
191
+ name: l.name,
192
+ color: l.color,
193
+ })),
194
+ cycle: issue.cycle ? {
195
+ id: issue.cycle.id,
196
+ name: issue.cycle.name ?? `Cycle ${issue.cycle.number}`,
197
+ number: issue.cycle.number,
198
+ } : undefined,
199
+ project: issue.project ? {
200
+ id: issue.project.id,
201
+ name: issue.project.name,
202
+ } : undefined,
203
+ estimate: issue.estimate ?? undefined,
204
+ dueDate: issue.dueDate ?? undefined,
205
+ url: issue.url,
206
+ createdAt: issue.createdAt,
207
+ updatedAt: issue.updatedAt,
208
+ }));
166
209
  }
167
210
  /**
168
211
  * Fetch a single issue by its identifier (e.g., "ENG-123").
169
212
  */
170
213
  async getIssueByIdentifier(identifier) {
171
- // Parse team key from identifier
172
214
  const match = identifier.match(/^([A-Z]+)-(\d+)$/i);
173
215
  if (!match)
174
216
  return null;
175
217
  const [, teamKey, numberStr] = match;
176
- const issues = await this.sdk.issues({
218
+ const data = await this.query(`
219
+ query IssueByIdentifier($filter: IssueFilter!) {
220
+ issues(filter: $filter, first: 1) {
221
+ nodes {
222
+ id identifier title description priority estimate dueDate url createdAt updatedAt
223
+ state { id name type }
224
+ team { id key name }
225
+ assignee { id name email }
226
+ labels { nodes { id name color } }
227
+ cycle { id name number }
228
+ project { id name }
229
+ }
230
+ }
231
+ }
232
+ `, {
177
233
  filter: {
178
234
  team: { key: { eq: teamKey.toUpperCase() } },
179
235
  number: { eq: parseInt(numberStr, 10) },
180
236
  },
181
- first: 1,
182
237
  });
183
- if (issues.nodes.length === 0)
238
+ if (data.issues.nodes.length === 0)
184
239
  return null;
185
- const issue = issues.nodes[0];
186
- const state = await issue.state;
187
- const team = await issue.team;
188
- const assignee = await issue.assignee;
189
- const labelsConn = await issue.labels();
190
- const cycle = await issue.cycle;
191
- const project = await issue.project;
240
+ const issue = data.issues.nodes[0];
192
241
  return {
193
242
  id: issue.id,
194
243
  identifier: issue.identifier,
195
244
  title: issue.title,
196
245
  description: issue.description ?? undefined,
197
246
  priority: issue.priority,
198
- state: state ? {
199
- id: state.id,
200
- name: state.name,
201
- type: state.type,
247
+ state: issue.state ? {
248
+ id: issue.state.id,
249
+ name: issue.state.name,
250
+ type: issue.state.type,
202
251
  } : { id: '', name: 'Unknown', type: 'backlog' },
203
- team: team ? {
204
- id: team.id,
205
- key: team.key,
206
- name: team.name,
252
+ team: issue.team ? {
253
+ id: issue.team.id,
254
+ key: issue.team.key,
255
+ name: issue.team.name,
207
256
  } : { id: '', key: '', name: 'Unknown' },
208
- assignee: assignee ? {
209
- id: assignee.id,
210
- name: assignee.name,
211
- email: assignee.email,
257
+ assignee: issue.assignee ? {
258
+ id: issue.assignee.id,
259
+ name: issue.assignee.name,
260
+ email: issue.assignee.email,
212
261
  } : undefined,
213
- labels: labelsConn.nodes.map((l) => ({
262
+ labels: issue.labels.nodes.map((l) => ({
214
263
  id: l.id,
215
264
  name: l.name,
216
265
  color: l.color,
217
266
  })),
218
- cycle: cycle ? {
219
- id: cycle.id,
220
- name: cycle.name ?? `Cycle ${cycle.number}`,
221
- number: cycle.number,
267
+ cycle: issue.cycle ? {
268
+ id: issue.cycle.id,
269
+ name: issue.cycle.name ?? `Cycle ${issue.cycle.number}`,
270
+ number: issue.cycle.number,
222
271
  } : undefined,
223
- project: project ? {
224
- id: project.id,
225
- name: project.name,
272
+ project: issue.project ? {
273
+ id: issue.project.id,
274
+ name: issue.project.name,
226
275
  } : undefined,
227
276
  estimate: issue.estimate ?? undefined,
228
277
  dueDate: issue.dueDate ?? undefined,
229
278
  url: issue.url,
230
- createdAt: issue.createdAt.toISOString(),
231
- updatedAt: issue.updatedAt.toISOString(),
279
+ createdAt: issue.createdAt,
280
+ updatedAt: issue.updatedAt,
232
281
  };
233
282
  }
234
283
  /**
235
284
  * Update the state of an issue.
236
285
  */
237
286
  async updateIssueState(issueId, stateId) {
238
- await this.sdk.updateIssue(issueId, { stateId });
287
+ await this.query(`
288
+ mutation UpdateIssueState($issueId: String!, $stateId: String!) {
289
+ issueUpdate(id: $issueId, input: { stateId: $stateId }) {
290
+ success
291
+ }
292
+ }
293
+ `, { issueId, stateId });
239
294
  }
240
295
  /**
241
296
  * Add a comment to an issue.
242
297
  */
243
298
  async addComment(issueId, body) {
244
- await this.sdk.createComment({ issueId, body });
299
+ await this.query(`
300
+ mutation CreateComment($issueId: String!, $body: String!) {
301
+ commentCreate(input: { issueId: $issueId, body: $body }) {
302
+ success
303
+ }
304
+ }
305
+ `, { issueId, body });
245
306
  }
246
307
  /**
247
308
  * Attach a URL to an issue (e.g., a PR link).
248
309
  */
249
310
  async attachUrl(issueId, url, title) {
250
- await this.sdk.createAttachment({
251
- issueId,
252
- url,
253
- title,
254
- });
311
+ await this.query(`
312
+ mutation CreateAttachment($issueId: String!, $url: String!, $title: String!) {
313
+ attachmentCreate(input: { issueId: $issueId, url: $url, title: $title }) {
314
+ success
315
+ }
316
+ }
317
+ `, { issueId, url, title });
255
318
  }
256
319
  }
257
320
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/linear/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/linear/client.ts"],"names":[],"mappings":"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"}
@@ -340,6 +340,83 @@ export function registerUtilityTools(server, ctx) {
340
340
  return errorResponse(error);
341
341
  }
342
342
  });
343
+ strictTool(server, 'session_inspect', 'Comprehensive agent status inspection: git status, PR status, process liveness, recent output, and execution metadata in one call', {
344
+ target: z.string().describe('Agent name or ticket ID to inspect'),
345
+ lines: z.number().optional().describe('Number of output lines to include (default 100)'),
346
+ }, async (params) => {
347
+ try {
348
+ const linesFlag = params.lines ? `--lines ${params.lines}` : '';
349
+ const output = ctx.runCommand(`prlt session inspect ${params.target} ${linesFlag} --json`);
350
+ return textResponse(output);
351
+ }
352
+ catch (error) {
353
+ return errorResponse(error);
354
+ }
355
+ });
356
+ strictTool(server, 'session_exec', 'Execute a shell command in an agent\'s worktree/container context. Returns stdout/stderr as structured output.', {
357
+ target: z.string().describe('Agent name or ticket ID'),
358
+ command: z.string().describe('Shell command to execute in the agent\'s context'),
359
+ timeout: z.number().optional().describe('Command timeout in seconds (default 30)'),
360
+ }, async (params) => {
361
+ try {
362
+ const timeoutFlag = params.timeout ? `--timeout ${params.timeout}` : '';
363
+ const output = ctx.runCommand(`prlt session exec ${params.target} ${timeoutFlag} --json -- ${params.command}`);
364
+ return textResponse(output);
365
+ }
366
+ catch (error) {
367
+ return errorResponse(error);
368
+ }
369
+ });
370
+ strictTool(server, 'session_restart', 'Gracefully restart a stuck or completed agent session. Sends Ctrl-C, waits for clean exit, and re-launches Claude Code.', {
371
+ target: z.string().describe('Agent name or ticket ID to restart'),
372
+ fresh: z.boolean().optional().describe('Reset worktree to branch HEAD before restarting'),
373
+ resume: z.boolean().optional().describe('Continue from where the agent left off'),
374
+ timeout: z.number().optional().describe('Seconds to wait for clean exit (default 15)'),
375
+ }, async (params) => {
376
+ try {
377
+ const freshFlag = params.fresh ? '--fresh' : '';
378
+ const resumeFlag = params.resume ? '--resume' : '';
379
+ const timeoutFlag = params.timeout ? `--timeout ${params.timeout}` : '';
380
+ const output = ctx.runCommand(`prlt session restart ${params.target} ${freshFlag} ${resumeFlag} ${timeoutFlag} --json`);
381
+ return textResponse(output);
382
+ }
383
+ catch (error) {
384
+ return errorResponse(error);
385
+ }
386
+ });
387
+ strictTool(server, 'session_peek', 'View agent tmux pane content without attaching. Returns recent terminal output.', {
388
+ target: z.string().describe('Agent name, ticket ID, or execution ID'),
389
+ lines: z.number().optional().describe('Number of scrollback lines to capture (default 200)'),
390
+ full: z.boolean().optional().describe('Capture entire scrollback buffer'),
391
+ }, async (params) => {
392
+ try {
393
+ const linesFlag = params.lines ? `--lines ${params.lines}` : '';
394
+ const fullFlag = params.full ? '--full' : '';
395
+ const output = ctx.runCommand(`prlt session peek ${params.target} ${linesFlag} ${fullFlag} --json`);
396
+ return textResponse(output);
397
+ }
398
+ catch (error) {
399
+ return errorResponse(error);
400
+ }
401
+ });
402
+ strictTool(server, 'session_poke', 'Send a message to a running agent\'s Claude Code session', {
403
+ target: z.string().describe('Agent name or ticket ID'),
404
+ message: z.string().describe('Message to send to the agent'),
405
+ wait: z.boolean().optional().describe('Wait for response after sending'),
406
+ timeout: z.number().optional().describe('Timeout in seconds for wait mode (default 120)'),
407
+ }, async (params) => {
408
+ try {
409
+ const waitFlag = params.wait ? '--wait' : '';
410
+ const timeoutFlag = params.timeout ? `--timeout ${params.timeout}` : '';
411
+ // Escape the message for shell safety
412
+ const escapedMessage = params.message.replace(/"/g, '\\"');
413
+ const output = ctx.runCommand(`prlt session poke ${params.target} "${escapedMessage}" ${waitFlag} ${timeoutFlag} --json`);
414
+ return textResponse(output);
415
+ }
416
+ catch (error) {
417
+ return errorResponse(error);
418
+ }
419
+ });
343
420
  strictTool(server, 'config_show', 'Show configuration', {}, async () => {
344
421
  try {
345
422
  const output = ctx.runCommand('prlt config');