openplanr 2.2641.1 → 2.2641.2

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 (245) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +1 -1
  3. package/dist/cli/commands/artifact.js +1 -1
  4. package/dist/cli/commands/artifact.js.map +1 -1
  5. package/dist/cli/commands/github.d.ts.map +1 -1
  6. package/dist/cli/commands/github.js +7 -10
  7. package/dist/cli/commands/github.js.map +1 -1
  8. package/dist/cli/commands/linear.js +1 -1
  9. package/dist/cli/commands/linear.js.map +1 -1
  10. package/dist/cli/commands/report.d.ts.map +1 -1
  11. package/dist/cli/commands/report.js +28 -32
  12. package/dist/cli/commands/report.js.map +1 -1
  13. package/dist/dashboard/.vite/manifest.json +1 -1
  14. package/dist/dashboard/assets/{index-DGyC7RDz.js → index-DI_TKz9J.js} +2 -2
  15. package/dist/dashboard/assets/{index-DGyC7RDz.js.map → index-DI_TKz9J.js.map} +1 -1
  16. package/dist/dashboard/dashboard-manifest.json +8 -8
  17. package/dist/dashboard/index.html +1 -1
  18. package/dist/models/schema.d.ts +0 -4
  19. package/dist/models/schema.d.ts.map +1 -1
  20. package/dist/models/schema.js +0 -2
  21. package/dist/models/schema.js.map +1 -1
  22. package/dist/models/types.d.ts +1 -4
  23. package/dist/models/types.d.ts.map +1 -1
  24. package/dist/services/credentials-service.js +1 -1
  25. package/dist/services/credentials-service.js.map +1 -1
  26. package/dist/services/distribution-service.d.ts +1 -4
  27. package/dist/services/distribution-service.d.ts.map +1 -1
  28. package/dist/services/distribution-service.js +1 -60
  29. package/dist/services/distribution-service.js.map +1 -1
  30. package/dist/services/github-service.d.ts +7 -4
  31. package/dist/services/github-service.d.ts.map +1 -1
  32. package/dist/services/github-service.js +16 -15
  33. package/dist/services/github-service.js.map +1 -1
  34. package/dist/services/linear-push-service.d.ts +3 -4
  35. package/dist/services/linear-push-service.d.ts.map +1 -1
  36. package/dist/services/linear-push-service.js +5 -6
  37. package/dist/services/linear-push-service.js.map +1 -1
  38. package/dist/services/spec-service.d.ts.map +1 -1
  39. package/dist/services/spec-service.js +34 -69
  40. package/dist/services/spec-service.js.map +1 -1
  41. package/dist/templates/rules/shared/capability-map.md.hbs +1 -1
  42. package/docs/CLI.md +10 -14
  43. package/lib/host-packages/adapter-registry.json +5 -5
  44. package/lib/host-packages/capability-map.json +8 -8
  45. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  46. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  47. package/lib/host-packages/claude/openplanr/.openplanr-content.json +80 -64
  48. package/lib/host-packages/claude/openplanr/README.md +8 -12
  49. package/lib/host-packages/claude/openplanr/agents/planr-backend.md +49 -55
  50. package/lib/host-packages/claude/openplanr/agents/planr-database.md +56 -92
  51. package/lib/host-packages/claude/openplanr/agents/planr-designer.md +35 -51
  52. package/lib/host-packages/claude/openplanr/agents/planr-devops.md +37 -51
  53. package/lib/host-packages/claude/openplanr/agents/planr-documentation.md +29 -52
  54. package/lib/host-packages/claude/openplanr/agents/planr-entity-scaffold.md +24 -23
  55. package/lib/host-packages/claude/openplanr/agents/planr-frontend.md +46 -58
  56. package/lib/host-packages/claude/openplanr/agents/planr-qa.md +4 -2
  57. package/lib/host-packages/claude/openplanr/agents/planr-specification.md +54 -51
  58. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/backend.md +21 -65
  59. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/designer.md +5 -6
  60. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/devops.md +2 -3
  61. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/doc-gen.md +3 -4
  62. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/frontend.md +19 -64
  63. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/specification.md +10 -12
  64. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/backend.md +19 -62
  65. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/designer.md +3 -4
  66. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/devops.md +2 -3
  67. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/doc-gen.md +2 -3
  68. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/frontend.md +16 -59
  69. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/specification.md +9 -11
  70. package/lib/host-packages/claude/openplanr/references/pipeline/stacks/database/mongodb.md +4 -4
  71. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +24 -9
  72. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +3 -3
  73. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  74. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +1 -1
  75. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +1 -1
  76. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +1 -1
  77. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +1 -1
  78. package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +2 -2
  79. package/lib/host-packages/claude/openplanr/skills/artifact/references/diagram-sharing.md +1 -1
  80. package/lib/host-packages/claude/openplanr/skills/ceo-review/SKILL.md +0 -1
  81. package/lib/host-packages/claude/openplanr/skills/ceo-review/references/operate-advisor-contract.md +25 -4
  82. package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +6 -2
  83. package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +6 -2
  84. package/lib/host-packages/claude/openplanr/skills/cmo-review/SKILL.md +0 -1
  85. package/lib/host-packages/claude/openplanr/skills/cmo-review/references/operate-advisor-contract.md +25 -4
  86. package/lib/host-packages/claude/openplanr/skills/coo-review/SKILL.md +0 -1
  87. package/lib/host-packages/claude/openplanr/skills/coo-review/references/operate-advisor-contract.md +25 -4
  88. package/lib/host-packages/claude/openplanr/skills/cpo-review/SKILL.md +0 -1
  89. package/lib/host-packages/claude/openplanr/skills/cpo-review/references/operate-advisor-contract.md +25 -4
  90. package/lib/host-packages/claude/openplanr/skills/cto-review/SKILL.md +0 -1
  91. package/lib/host-packages/claude/openplanr/skills/cto-review/references/operate-advisor-contract.md +25 -4
  92. package/lib/host-packages/claude/openplanr/skills/delegate/SKILL.md +7 -0
  93. package/lib/host-packages/claude/openplanr/skills/delegate/references/capsule-contract.md +16 -1
  94. package/lib/host-packages/claude/openplanr/skills/delegate/references/operator-guide.md +7 -5
  95. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/claude.mjs +11 -4
  96. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/native.mjs +1 -1
  97. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/backend-diagnostics.mjs +14 -48
  98. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/context.mjs +84 -22
  99. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/credentials.mjs +167 -0
  100. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/presentation.mjs +3 -2
  101. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-contract.mjs +5 -7
  102. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-preparation.mjs +2 -0
  103. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-record.mjs +2 -3
  104. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-sharing.md +1 -1
  105. package/lib/host-packages/claude/openplanr/skills/operate/SKILL.md +5 -3
  106. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +8 -2
  107. package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +5 -4
  108. package/lib/host-packages/claude/openplanr/skills/sprint/references/tracker-connections.md +70 -0
  109. package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +4 -3
  110. package/lib/host-packages/claude/openplanr/skills/status/references/tracker-connections.md +70 -0
  111. package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +11 -20
  112. package/lib/host-packages/claude/openplanr/skills/sync/references/tracker-connections.md +70 -0
  113. package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +2 -2
  114. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +52 -36
  115. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  116. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/diagram-sharing.md +1 -1
  117. package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +2 -2
  118. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/operate-advisor-contract.md +25 -4
  119. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review.mdc +6 -1
  120. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review.mdc +6 -1
  121. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/operate-advisor-contract.md +25 -4
  122. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/operate-advisor-contract.md +25 -4
  123. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/operate-advisor-contract.md +25 -4
  124. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/operate-advisor-contract.md +25 -4
  125. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/capsule-contract.md +16 -1
  126. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/operator-guide.md +7 -5
  127. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/claude.mjs +11 -4
  128. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/native.mjs +1 -1
  129. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/backend-diagnostics.mjs +14 -48
  130. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/context.mjs +84 -22
  131. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/credentials.mjs +167 -0
  132. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/presentation.mjs +3 -2
  133. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-contract.mjs +5 -7
  134. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-preparation.mjs +2 -0
  135. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-record.mjs +2 -3
  136. package/lib/host-packages/cursor/openplanr/rules/planr-delegate.mdc +7 -0
  137. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-sharing.md +1 -1
  138. package/lib/host-packages/cursor/openplanr/rules/planr-operate.mdc +5 -3
  139. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +8 -2
  140. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/tracker-connections.md +70 -0
  141. package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +5 -4
  142. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/tracker-connections.md +70 -0
  143. package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +4 -3
  144. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/tracker-connections.md +70 -0
  145. package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +2 -2
  146. package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +11 -20
  147. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +24 -9
  148. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +3 -3
  149. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  150. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +1 -1
  151. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +1 -1
  152. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +1 -1
  153. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +1 -1
  154. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  155. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  156. package/lib/host-packages/openai/openplanr/.openplanr-content.json +61 -45
  157. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +24 -9
  158. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +3 -3
  159. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  160. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +1 -1
  161. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +1 -1
  162. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +1 -1
  163. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +1 -1
  164. package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +2 -2
  165. package/lib/host-packages/openai/openplanr/skills/artifact/references/diagram-sharing.md +1 -1
  166. package/lib/host-packages/openai/openplanr/skills/ceo-review/SKILL.md +0 -1
  167. package/lib/host-packages/openai/openplanr/skills/ceo-review/references/operate-advisor-contract.md +25 -4
  168. package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +6 -2
  169. package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +6 -2
  170. package/lib/host-packages/openai/openplanr/skills/cmo-review/SKILL.md +0 -1
  171. package/lib/host-packages/openai/openplanr/skills/cmo-review/references/operate-advisor-contract.md +25 -4
  172. package/lib/host-packages/openai/openplanr/skills/coo-review/SKILL.md +0 -1
  173. package/lib/host-packages/openai/openplanr/skills/coo-review/references/operate-advisor-contract.md +25 -4
  174. package/lib/host-packages/openai/openplanr/skills/cpo-review/SKILL.md +0 -1
  175. package/lib/host-packages/openai/openplanr/skills/cpo-review/references/operate-advisor-contract.md +25 -4
  176. package/lib/host-packages/openai/openplanr/skills/cto-review/SKILL.md +0 -1
  177. package/lib/host-packages/openai/openplanr/skills/cto-review/references/operate-advisor-contract.md +25 -4
  178. package/lib/host-packages/openai/openplanr/skills/delegate/SKILL.md +7 -0
  179. package/lib/host-packages/openai/openplanr/skills/delegate/openplanr.skill.json +11 -0
  180. package/lib/host-packages/openai/openplanr/skills/delegate/references/capsule-contract.md +16 -1
  181. package/lib/host-packages/openai/openplanr/skills/delegate/references/operator-guide.md +7 -5
  182. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/claude.mjs +11 -4
  183. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/native.mjs +1 -1
  184. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/backend-diagnostics.mjs +14 -48
  185. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/context.mjs +84 -22
  186. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/credentials.mjs +167 -0
  187. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/presentation.mjs +3 -2
  188. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-contract.mjs +5 -7
  189. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-preparation.mjs +2 -0
  190. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-record.mjs +2 -3
  191. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-sharing.md +1 -1
  192. package/lib/host-packages/openai/openplanr/skills/operate/SKILL.md +5 -3
  193. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +8 -2
  194. package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +5 -4
  195. package/lib/host-packages/openai/openplanr/skills/sprint/openplanr.skill.json +11 -0
  196. package/lib/host-packages/openai/openplanr/skills/sprint/references/tracker-connections.md +70 -0
  197. package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +4 -3
  198. package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +11 -0
  199. package/lib/host-packages/openai/openplanr/skills/status/references/tracker-connections.md +70 -0
  200. package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +11 -20
  201. package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
  202. package/lib/host-packages/openai/openplanr/skills/sync/references/tracker-connections.md +70 -0
  203. package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +2 -2
  204. package/lib/integrations.mjs +2 -2
  205. package/package.json +2 -2
  206. package/dist/services/connectors/adapters/business-metrics.d.ts +0 -5
  207. package/dist/services/connectors/adapters/business-metrics.d.ts.map +0 -1
  208. package/dist/services/connectors/adapters/business-metrics.js +0 -41
  209. package/dist/services/connectors/adapters/business-metrics.js.map +0 -1
  210. package/dist/services/connectors/adapters/deployment-health.d.ts +0 -18
  211. package/dist/services/connectors/adapters/deployment-health.d.ts.map +0 -1
  212. package/dist/services/connectors/adapters/deployment-health.js +0 -67
  213. package/dist/services/connectors/adapters/deployment-health.js.map +0 -1
  214. package/dist/services/connectors/adapters/github.d.ts +0 -5
  215. package/dist/services/connectors/adapters/github.d.ts.map +0 -1
  216. package/dist/services/connectors/adapters/github.js +0 -31
  217. package/dist/services/connectors/adapters/github.js.map +0 -1
  218. package/dist/services/connectors/adapters/linear-jira.d.ts +0 -5
  219. package/dist/services/connectors/adapters/linear-jira.d.ts.map +0 -1
  220. package/dist/services/connectors/adapters/linear-jira.js +0 -26
  221. package/dist/services/connectors/adapters/linear-jira.js.map +0 -1
  222. package/dist/services/connectors/adapters/posthog.d.ts +0 -5
  223. package/dist/services/connectors/adapters/posthog.d.ts.map +0 -1
  224. package/dist/services/connectors/adapters/posthog.js +0 -31
  225. package/dist/services/connectors/adapters/posthog.js.map +0 -1
  226. package/dist/services/connectors/adapters/sentry.d.ts +0 -5
  227. package/dist/services/connectors/adapters/sentry.d.ts.map +0 -1
  228. package/dist/services/connectors/adapters/sentry.js +0 -31
  229. package/dist/services/connectors/adapters/sentry.js.map +0 -1
  230. package/dist/services/connectors/checkpoint-custody.d.ts +0 -45
  231. package/dist/services/connectors/checkpoint-custody.d.ts.map +0 -1
  232. package/dist/services/connectors/checkpoint-custody.js +0 -499
  233. package/dist/services/connectors/checkpoint-custody.js.map +0 -1
  234. package/dist/services/connectors/connector-registry.d.ts +0 -144
  235. package/dist/services/connectors/connector-registry.d.ts.map +0 -1
  236. package/dist/services/connectors/connector-registry.js +0 -423
  237. package/dist/services/connectors/connector-registry.js.map +0 -1
  238. package/dist/services/connectors/connector-runtime.d.ts +0 -208
  239. package/dist/services/connectors/connector-runtime.d.ts.map +0 -1
  240. package/dist/services/connectors/connector-runtime.js +0 -1305
  241. package/dist/services/connectors/connector-runtime.js.map +0 -1
  242. package/dist/services/connectors/credential-custody.d.ts +0 -96
  243. package/dist/services/connectors/credential-custody.d.ts.map +0 -1
  244. package/dist/services/connectors/credential-custody.js +0 -390
  245. package/dist/services/connectors/credential-custody.js.map +0 -1
@@ -21,6 +21,17 @@
21
21
  "chatgpt"
22
22
  ],
23
23
  "executable": false
24
+ },
25
+ {
26
+ "path": "references/tracker-connections.md",
27
+ "kind": "reference",
28
+ "hosts": [
29
+ "claude-code",
30
+ "codex",
31
+ "chatgpt",
32
+ "cursor"
33
+ ],
34
+ "executable": false
24
35
  }
25
36
  ]
26
37
  }
@@ -0,0 +1,70 @@
1
+ # GitHub and Linear connections
2
+
3
+ These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
+ connection the host already has; the planning files stay the source of truth.
5
+
6
+ ## Use the host's connection
7
+
8
+ - **Linear:** the host's Linear connection, whose tools read, create and update issues.
9
+ - **GitHub:** the host's GitHub connection, or the GitHub CLI when
10
+ `gh auth status --hostname github.com` succeeds.
11
+
12
+ Never ask the user for a token, read one from the environment or a file, or put one in a
13
+ command, URL or file.
14
+
15
+ ## When a connection is missing
16
+
17
+ Finish the local work first. Then report the remote step as not run and give the one
18
+ line for the current host:
19
+
20
+ | Host | Linear | GitHub |
21
+ | --- | --- | --- |
22
+ | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
+ | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
+ | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
+
26
+ Ask the user to try again once connected; never retry the remote step on your own.
27
+
28
+ ## Status mapping
29
+
30
+ | Local status | Linear workflow state | GitHub issue |
31
+ | --- | --- | --- |
32
+ | `planning`, `pending` | Unstarted (for example Todo) | open |
33
+ | `in-progress` | Started (for example In Progress) | open |
34
+ | `done` | Completed (for example Done) | closed |
35
+ | Backlog `open` | Backlog, else Unstarted | open |
36
+ | Backlog `closed` | Completed | closed |
37
+ | Backlog `promoted` | Leave as it is | Leave as it is |
38
+
39
+ When reading state back, write only a status the item's type allows. A backlog item takes
40
+ `open` or `closed` and keeps `promoted`.
41
+
42
+ - Linear Completed or Canceled sets `done`, or `closed` for a backlog item. Started sets
43
+ `in-progress`, and Triage, Backlog or Unstarted sets `planning` for features and stories
44
+ and `pending` for quick tasks; a backlog item takes `open` from any of these. Epics and
45
+ task files keep their status.
46
+ - A closed GitHub issue sets `done`, or `closed` for a backlog item. An open issue sets
47
+ `in-progress` for a `done` item and `open` for a `closed` backlog item; other statuses
48
+ stay as they are.
49
+
50
+ ## Links
51
+
52
+ A linked item records its tracker identity in frontmatter. Update a linked item through
53
+ that identity instead of creating another, and record the identity of everything you
54
+ create.
55
+
56
+ - **GitHub:** each item is one issue, recorded as `githubIssue`.
57
+ - **Linear:** use the shapes the OpenPlanr CLI uses, so its later pushes reuse what you
58
+ create:
59
+ - An epic is a Linear project (`linearProjectId`, `linearProjectIdentifier`,
60
+ `linearProjectUrl`). When its `linearMappingStrategy` is `milestone-of` or `label-on`,
61
+ it is a milestone in an existing project (`linearMilestoneId`) or a team label
62
+ (`linearLabelId`) instead, and every issue under it carries that milestone
63
+ (`linearProjectMilestoneId`) or label (`linearLabelIds`).
64
+ - A feature, quick task or backlog item is one issue (`linearIssueId`,
65
+ `linearIssueIdentifier`, `linearIssueUrl`). A story is a sub-issue of its feature's
66
+ issue (`linearParentIssueId`).
67
+ - All task files of one feature share one task-list issue: a sub-issue of the feature's
68
+ issue whose checklist merges every task file, recorded in each task file. Its state is
69
+ Completed when every task file is `done`, Unstarted when every one is `pending`, and
70
+ Started otherwise.
@@ -7,31 +7,22 @@ license: MIT
7
7
  # OpenPlanr Sync
8
8
 
9
9
  Reconcile local planning artifacts and, when requested, GitHub or Linear state.
10
- Reason about conflicts in this active session; deterministic mapping and GitHub
11
- transport may use a host connector or the packaged [sync helper](scripts/sync.mjs).
12
- Local and GitHub work never require the OpenPlanr CLI.
10
+ Reason about conflicts in this active session. Local and GitHub work never require
11
+ the OpenPlanr CLI.
13
12
 
14
- Resolution order:
13
+ Remote steps run through the host's own connections, as described in
14
+ [tracker connections](references/tracker-connections.md), which also holds the status
15
+ mapping and what to tell the user when a connection is missing:
15
16
 
16
- 1. use a host-native GitHub or Linear connector when available;
17
- 2. otherwise, for GitHub, use the packaged deterministic helper;
18
- 3. otherwise, for Linear, use the `openplanr linear` terminal utility when the user has
19
- installed it; `openplanr github` and `openplanr sync` are optional equivalents for the rest.
20
-
21
- Linear through the CLI:
22
-
23
- - the user runs `openplanr linear init` in a terminal once; it prompts for a personal
24
- access token, which the CLI stores;
25
- - audit with `openplanr linear sync --dry-run`, which reads Linear without writing;
26
- - before a real `openplanr linear sync`, ask how conflicts should resolve and pass
27
- `--on-conflict local` or `--on-conflict linear`; without a prompt it favors Linear;
28
- - `openplanr linear push <artifact-id>` creates or updates Linear issues; preview with
29
- `--dry-run`. Quick tasks and backlog items need `linear.standaloneProjectId` in the
30
- project config when no terminal prompt is available.
17
+ - GitHub: the host's GitHub connection, or, when the GitHub CLI is signed in, the
18
+ packaged [sync helper](scripts/sync.mjs), which creates and edits issues through `gh`;
19
+ close or reopen an issue with `gh issue close` or `gh issue reopen`. `openplanr github`
20
+ is an optional equivalent; `openplanr sync` only repairs local cross-references.
21
+ - Linear: the host's Linear connection.
31
22
 
32
23
  Audit is read-only by default. Apply local changes only when the request asks for
33
24
  reconciliation, and push remote changes only when the request asks for external
34
- synchronization. If credentials are unavailable, complete local reconciliation
25
+ synchronization. If a connection is unavailable, complete local reconciliation
35
26
  and report only the external step that could not run.
36
27
 
37
28
  ## Return
@@ -13,6 +13,17 @@
13
13
  ],
14
14
  "execution": "host-agent",
15
15
  "resources": [
16
+ {
17
+ "path": "references/tracker-connections.md",
18
+ "kind": "reference",
19
+ "hosts": [
20
+ "claude-code",
21
+ "codex",
22
+ "chatgpt",
23
+ "cursor"
24
+ ],
25
+ "executable": false
26
+ },
16
27
  {
17
28
  "path": "scripts/sync.mjs",
18
29
  "kind": "script",
@@ -0,0 +1,70 @@
1
+ # GitHub and Linear connections
2
+
3
+ These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
+ connection the host already has; the planning files stay the source of truth.
5
+
6
+ ## Use the host's connection
7
+
8
+ - **Linear:** the host's Linear connection, whose tools read, create and update issues.
9
+ - **GitHub:** the host's GitHub connection, or the GitHub CLI when
10
+ `gh auth status --hostname github.com` succeeds.
11
+
12
+ Never ask the user for a token, read one from the environment or a file, or put one in a
13
+ command, URL or file.
14
+
15
+ ## When a connection is missing
16
+
17
+ Finish the local work first. Then report the remote step as not run and give the one
18
+ line for the current host:
19
+
20
+ | Host | Linear | GitHub |
21
+ | --- | --- | --- |
22
+ | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
+ | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
+ | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
+
26
+ Ask the user to try again once connected; never retry the remote step on your own.
27
+
28
+ ## Status mapping
29
+
30
+ | Local status | Linear workflow state | GitHub issue |
31
+ | --- | --- | --- |
32
+ | `planning`, `pending` | Unstarted (for example Todo) | open |
33
+ | `in-progress` | Started (for example In Progress) | open |
34
+ | `done` | Completed (for example Done) | closed |
35
+ | Backlog `open` | Backlog, else Unstarted | open |
36
+ | Backlog `closed` | Completed | closed |
37
+ | Backlog `promoted` | Leave as it is | Leave as it is |
38
+
39
+ When reading state back, write only a status the item's type allows. A backlog item takes
40
+ `open` or `closed` and keeps `promoted`.
41
+
42
+ - Linear Completed or Canceled sets `done`, or `closed` for a backlog item. Started sets
43
+ `in-progress`, and Triage, Backlog or Unstarted sets `planning` for features and stories
44
+ and `pending` for quick tasks; a backlog item takes `open` from any of these. Epics and
45
+ task files keep their status.
46
+ - A closed GitHub issue sets `done`, or `closed` for a backlog item. An open issue sets
47
+ `in-progress` for a `done` item and `open` for a `closed` backlog item; other statuses
48
+ stay as they are.
49
+
50
+ ## Links
51
+
52
+ A linked item records its tracker identity in frontmatter. Update a linked item through
53
+ that identity instead of creating another, and record the identity of everything you
54
+ create.
55
+
56
+ - **GitHub:** each item is one issue, recorded as `githubIssue`.
57
+ - **Linear:** use the shapes the OpenPlanr CLI uses, so its later pushes reuse what you
58
+ create:
59
+ - An epic is a Linear project (`linearProjectId`, `linearProjectIdentifier`,
60
+ `linearProjectUrl`). When its `linearMappingStrategy` is `milestone-of` or `label-on`,
61
+ it is a milestone in an existing project (`linearMilestoneId`) or a team label
62
+ (`linearLabelId`) instead, and every issue under it carries that milestone
63
+ (`linearProjectMilestoneId`) or label (`linearLabelIds`).
64
+ - A feature, quick task or backlog item is one issue (`linearIssueId`,
65
+ `linearIssueIdentifier`, `linearIssueUrl`). A story is a sub-issue of its feature's
66
+ issue (`linearParentIssueId`).
67
+ - All task files of one feature share one task-list issue: a sub-issue of the feature's
68
+ issue whose checklist merges every task file, recorded in each task file. Its state is
69
+ Completed when every task file is `done`, Unstarted when every one is `pending`, and
70
+ Started otherwise.
@@ -5,7 +5,7 @@ import { access, readFile } from 'node:fs/promises';
5
5
  import { resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { promisify } from 'node:util';
8
- import { CLI_COMMAND, PLANNING_FOLDER } from './names.mjs';
8
+ import { PLANNING_FOLDER } from './names.mjs';
9
9
 
10
10
  const execFileAsync = promisify(execFile);
11
11
  const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
@@ -147,7 +147,7 @@ export async function runPortableSync(
147
147
  } else if (args.provider === 'linear') {
148
148
  throw new IntegrationError(
149
149
  'E_SYNC_USAGE',
150
- `Linear synchronization runs through a Linear connector or the ${CLI_COMMAND} CLI (${CLI_COMMAND} linear push, ${CLI_COMMAND} linear sync).`,
150
+ "Linear synchronization runs through the host's Linear connection.",
151
151
  );
152
152
  } else {
153
153
  throw new IntegrationError(
@@ -5,7 +5,7 @@ import { access, readFile } from 'node:fs/promises';
5
5
  import { resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { promisify } from 'node:util';
8
- import { CLI_COMMAND, PLANNING_FOLDER } from './names.mjs';
8
+ import { PLANNING_FOLDER } from './names.mjs';
9
9
 
10
10
  const execFileAsync = promisify(execFile);
11
11
  const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
@@ -147,7 +147,7 @@ export async function runPortableSync(
147
147
  } else if (args.provider === 'linear') {
148
148
  throw new IntegrationError(
149
149
  'E_SYNC_USAGE',
150
- `Linear synchronization runs through a Linear connector or the ${CLI_COMMAND} CLI (${CLI_COMMAND} linear push, ${CLI_COMMAND} linear sync).`,
150
+ "Linear synchronization runs through the host's Linear connection.",
151
151
  );
152
152
  } else {
153
153
  throw new IntegrationError(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openplanr",
3
- "version": "2.2641.1",
3
+ "version": "2.2641.2",
4
4
  "description": "Deterministic OpenPlanr utilities for planning storage, validation, rendering, setup, diagnostics, and GitHub/Linear synchronization",
5
5
  "type": "module",
6
6
  "main": "./dist/cli/index.js",
@@ -115,7 +115,7 @@
115
115
  "zod": "^4.3.6"
116
116
  },
117
117
  "optionalDependencies": {
118
- "planr-pipeline": "0.56.0"
118
+ "planr-pipeline": "0.57.0"
119
119
  },
120
120
  "devDependencies": {
121
121
  "@biomejs/biome": "^2.4.9",
@@ -1,5 +0,0 @@
1
- export declare const businessMetricsLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- //# sourceMappingURL=business-metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"business-metrics.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/business-metrics.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oCAAoC;;;EAsC/C,CAAC"}
@@ -1,41 +0,0 @@
1
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
2
- export const businessMetricsLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
3
- adapterId: 'openplanr-business-metrics-live-evidence',
4
- adapterVersion: '1.0.0',
5
- provider: { id: 'business-metrics', version: '1.0.0' },
6
- category: 'business-metrics',
7
- operations: [
8
- {
9
- operation: 'csv',
10
- collection: 'csvRecords',
11
- sourceContracts: [
12
- 'capacity-throughput',
13
- 'channel-economics',
14
- 'demand-market',
15
- 'finance-metrics',
16
- ],
17
- },
18
- {
19
- operation: 'http',
20
- collection: 'httpRecords',
21
- sourceContracts: ['objective-metrics', 'operations-customer-health'],
22
- },
23
- {
24
- operation: 'json',
25
- collection: 'jsonRecords',
26
- sourceContracts: [
27
- 'capacity-throughput',
28
- 'channel-economics',
29
- 'demand-market',
30
- 'finance-metrics',
31
- ],
32
- },
33
- ],
34
- supportedDomains: ['business'],
35
- scopes: ['metrics:read'],
36
- allowedMethods: ['GET'],
37
- transport: 'https-or-loopback',
38
- healthMaxAgeSeconds: 300,
39
- unavailableBehavior: 'typed-absence',
40
- });
41
- //# sourceMappingURL=business-metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"business-metrics.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/business-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,oCAAoC,GAAG,wBAAwB,CAAC;IAC3E,SAAS,EAAE,0CAA0C;IACrD,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE;IACtD,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE;QACV;YACE,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,YAAY;YACxB,eAAe,EAAE;gBACf,qBAAqB;gBACrB,mBAAmB;gBACnB,eAAe;gBACf,iBAAiB;aAClB;SACF;QACD;YACE,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;SACrE;QACD;YACE,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE;gBACf,qBAAqB;gBACrB,mBAAmB;gBACnB,eAAe;gBACf,iBAAiB;aAClB;SACF;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,cAAc,CAAC;IACxB,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC"}
@@ -1,18 +0,0 @@
1
- export declare const deploymentHealthLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- export type DeploymentCommandDescriptorV2 = Readonly<{
6
- kind: 'openplanr-deployment-command-descriptor';
7
- schemaVersion: '1.0.0';
8
- descriptorId: string;
9
- targetIdentityHash: `sha256:${string}`;
10
- operation: 'deploy' | 'rollback';
11
- commandDigest: `sha256:${string}`;
12
- effect: 'descriptor-only';
13
- previewOnly: true;
14
- descriptorHash: `sha256:${string}`;
15
- }>;
16
- /** Validates a non-authoritative command descriptor. It never executes or resolves command bytes. */
17
- export declare function assertDeploymentCommandDescriptorV2(value: unknown): DeploymentCommandDescriptorV2;
18
- //# sourceMappingURL=deployment-health.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deployment-health.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/deployment-health.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qCAAqC;;;EAuBhD,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACnD,IAAI,EAAE,yCAAyC,CAAC;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,UAAU,MAAM,EAAE,CAAC;IACvC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE,UAAU,MAAM,EAAE,CAAC;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,UAAU,MAAM,EAAE,CAAC;CACpC,CAAC,CAAC;AAKH,qGAAqG;AACrG,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAsCjG"}
@@ -1,67 +0,0 @@
1
- import { sha256CanonicalJson } from '../../canonical-json.js';
2
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
3
- export const deploymentHealthLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
4
- adapterId: 'openplanr-deployment-health-live-evidence',
5
- adapterVersion: '1.0.0',
6
- provider: { id: 'deployment-health', version: '1.0.0' },
7
- category: 'deployment',
8
- operations: [
9
- {
10
- operation: 'canary',
11
- collection: 'canary',
12
- sourceContracts: ['ci-test-evidence', 'operations-customer-health'],
13
- },
14
- {
15
- operation: 'health',
16
- collection: 'health',
17
- sourceContracts: ['ci-test-evidence', 'operations-customer-health'],
18
- },
19
- ],
20
- supportedDomains: ['business', 'software'],
21
- scopes: ['deployments:read', 'health:read'],
22
- allowedMethods: ['GET'],
23
- transport: 'https-or-loopback',
24
- healthMaxAgeSeconds: 120,
25
- unavailableBehavior: 'typed-absence',
26
- });
27
- const ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
28
- const HASH = /^sha256:[a-f0-9]{64}$/u;
29
- /** Validates a non-authoritative command descriptor. It never executes or resolves command bytes. */
30
- export function assertDeploymentCommandDescriptorV2(value) {
31
- if (value === null || typeof value !== 'object' || Array.isArray(value)) {
32
- throw new TypeError('Deployment descriptor must be one closed object.');
33
- }
34
- const input = value;
35
- const keys = Object.keys(input).sort();
36
- const expected = [
37
- 'commandDigest',
38
- 'descriptorHash',
39
- 'descriptorId',
40
- 'effect',
41
- 'kind',
42
- 'operation',
43
- 'previewOnly',
44
- 'schemaVersion',
45
- 'targetIdentityHash',
46
- ].sort();
47
- if (JSON.stringify(keys) !== JSON.stringify(expected)) {
48
- throw new TypeError('Deployment descriptor has missing or unsupported fields.');
49
- }
50
- if (input.kind !== 'openplanr-deployment-command-descriptor' ||
51
- input.schemaVersion !== '1.0.0' ||
52
- typeof input.descriptorId !== 'string' ||
53
- !ID.test(input.descriptorId) ||
54
- !HASH.test(String(input.targetIdentityHash)) ||
55
- !['deploy', 'rollback'].includes(String(input.operation)) ||
56
- !HASH.test(String(input.commandDigest)) ||
57
- input.effect !== 'descriptor-only' ||
58
- input.previewOnly !== true) {
59
- throw new TypeError('Deployment descriptor violates the descriptor-only contract.');
60
- }
61
- const { descriptorHash, ...body } = input;
62
- if (descriptorHash !== sha256CanonicalJson(body)) {
63
- throw new TypeError('Deployment descriptor digest does not match its exact bytes.');
64
- }
65
- return Object.freeze(structuredClone(input));
66
- }
67
- //# sourceMappingURL=deployment-health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deployment-health.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/deployment-health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,qCAAqC,GAAG,wBAAwB,CAAC;IAC5E,SAAS,EAAE,2CAA2C;IACtD,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE;IACvD,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE;QACV;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;SACpE;QACD;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;SACpE;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,MAAM,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC;IAC3C,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC;AAcH,MAAM,EAAE,GAAG,sCAAsC,CAAC;AAClD,MAAM,IAAI,GAAG,wBAAwB,CAAC;AAEtC,qGAAqG;AACrG,MAAM,UAAU,mCAAmC,CAAC,KAAc;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG;QACf,eAAe;QACf,gBAAgB;QAChB,cAAc;QACd,QAAQ;QACR,MAAM;QACN,WAAW;QACX,aAAa;QACb,eAAe;QACf,oBAAoB;KACrB,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;IAClF,CAAC;IACD,IACE,KAAK,CAAC,IAAI,KAAK,yCAAyC;QACxD,KAAK,CAAC,aAAa,KAAK,OAAO;QAC/B,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvC,KAAK,CAAC,MAAM,KAAK,iBAAiB;QAClC,KAAK,CAAC,WAAW,KAAK,IAAI,EAC1B,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC1C,IAAI,cAAc,KAAK,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAkC,CAAC;AAChF,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare const githubLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- //# sourceMappingURL=github.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/github.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;;;EA4BtC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
2
- export const githubLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
3
- adapterId: 'openplanr-github-live-evidence',
4
- adapterVersion: '1.0.0',
5
- provider: { id: 'github-delivery', version: '1.0.0' },
6
- category: 'delivery',
7
- operations: [
8
- {
9
- operation: 'checks',
10
- collection: 'checks',
11
- sourceContracts: ['ci-test-evidence'],
12
- },
13
- {
14
- operation: 'pull-requests',
15
- collection: 'pullRequests',
16
- sourceContracts: ['repository-architecture'],
17
- },
18
- {
19
- operation: 'workflow-runs',
20
- collection: 'workflowRuns',
21
- sourceContracts: ['ci-test-evidence'],
22
- },
23
- ],
24
- supportedDomains: ['software'],
25
- scopes: ['actions:read', 'checks:read', 'contents:read', 'pull-requests:read'],
26
- allowedMethods: ['GET'],
27
- transport: 'https-or-loopback',
28
- healthMaxAgeSeconds: 300,
29
- unavailableBehavior: 'typed-absence',
30
- });
31
- //# sourceMappingURL=github.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;IAClE,SAAS,EAAE,gCAAgC;IAC3C,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE;IACrD,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE;QACV;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,CAAC;SACtC;QACD;YACE,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,CAAC,yBAAyB,CAAC;SAC7C;QACD;YACE,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,CAAC,kBAAkB,CAAC;SACtC;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,CAAC;IAC9E,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare const linearJiraLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- //# sourceMappingURL=linear-jira.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linear-jira.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/linear-jira.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,+BAA+B;;;EAuB1C,CAAC"}
@@ -1,26 +0,0 @@
1
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
2
- export const linearJiraLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
3
- adapterId: 'openplanr-linear-jira-live-evidence',
4
- adapterVersion: '1.0.0',
5
- provider: { id: 'linear-jira-work', version: '1.0.0' },
6
- category: 'work',
7
- operations: [
8
- {
9
- operation: 'jira-issues',
10
- collection: 'jiraIssues',
11
- sourceContracts: ['planning-acceptance', 'prior-decisions'],
12
- },
13
- {
14
- operation: 'linear-issues',
15
- collection: 'linearIssues',
16
- sourceContracts: ['planning-acceptance', 'prior-decisions'],
17
- },
18
- ],
19
- supportedDomains: ['business', 'software'],
20
- scopes: ['issues:read', 'projects:read'],
21
- allowedMethods: ['GET'],
22
- transport: 'https-or-loopback',
23
- healthMaxAgeSeconds: 300,
24
- unavailableBehavior: 'typed-absence',
25
- });
26
- //# sourceMappingURL=linear-jira.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linear-jira.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/linear-jira.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;IACtE,SAAS,EAAE,qCAAqC;IAChD,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE;IACtD,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE;QACV;YACE,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,YAAY;YACxB,eAAe,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SAC5D;QACD;YACE,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;SAC5D;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,MAAM,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;IACxC,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare const posthogLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- //# sourceMappingURL=posthog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"posthog.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/posthog.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,4BAA4B;;;EA4BvC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
2
- export const posthogLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
3
- adapterId: 'openplanr-posthog-live-evidence',
4
- adapterVersion: '1.0.0',
5
- provider: { id: 'posthog-product', version: '1.0.0' },
6
- category: 'product',
7
- operations: [
8
- {
9
- operation: 'events',
10
- collection: 'events',
11
- sourceContracts: ['product-activation'],
12
- },
13
- {
14
- operation: 'funnels',
15
- collection: 'funnels',
16
- sourceContracts: ['product-activation'],
17
- },
18
- {
19
- operation: 'retention',
20
- collection: 'retention',
21
- sourceContracts: ['retention-discovery'],
22
- },
23
- ],
24
- supportedDomains: ['business', 'product'],
25
- scopes: ['events:read', 'insights:read'],
26
- allowedMethods: ['GET'],
27
- transport: 'https-or-loopback',
28
- healthMaxAgeSeconds: 300,
29
- unavailableBehavior: 'typed-absence',
30
- });
31
- //# sourceMappingURL=posthog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,4BAA4B,GAAG,wBAAwB,CAAC;IACnE,SAAS,EAAE,iCAAiC;IAC5C,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE;IACrD,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE;QACV;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,oBAAoB,CAAC;SACxC;QACD;YACE,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS;YACrB,eAAe,EAAE,CAAC,oBAAoB,CAAC;SACxC;QACD;YACE,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,WAAW;YACvB,eAAe,EAAE,CAAC,qBAAqB,CAAC;SACzC;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;IACxC,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare const sentryLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- //# sourceMappingURL=sentry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/sentry.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;;;EA4BtC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
2
- export const sentryLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
3
- adapterId: 'openplanr-sentry-live-evidence',
4
- adapterVersion: '1.0.0',
5
- provider: { id: 'sentry-error', version: '1.0.0' },
6
- category: 'error',
7
- operations: [
8
- {
9
- operation: 'errors',
10
- collection: 'errors',
11
- sourceContracts: ['incident-history', 'support-incidents'],
12
- },
13
- {
14
- operation: 'issues',
15
- collection: 'issues',
16
- sourceContracts: ['incident-history', 'support-incidents'],
17
- },
18
- {
19
- operation: 'releases',
20
- collection: 'releases',
21
- sourceContracts: ['incident-history', 'support-incidents'],
22
- },
23
- ],
24
- supportedDomains: ['software'],
25
- scopes: ['issues:read', 'org:read', 'project:read', 'releases:read'],
26
- allowedMethods: ['GET'],
27
- transport: 'https-or-loopback',
28
- healthMaxAgeSeconds: 300,
29
- unavailableBehavior: 'typed-absence',
30
- });
31
- //# sourceMappingURL=sentry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;IAClE,SAAS,EAAE,gCAAgC;IAC3C,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE;IAClD,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE;QACV;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;SAC3D;QACD;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;SAC3D;QACD;YACE,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,UAAU;YACtB,eAAe,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;SAC3D;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,CAAC;IACpE,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC"}